(57)【特許請求の範囲】
【請求項１】
車両において、ネットワーク化された携帯機器を使用するためのシステムであって、
前記車両が：
車内のコンピュータと、
携帯機器クライアントと、
複数の車両用構成要素とを含み、
前記携帯機器が：
携帯機器のプロキシと、
１つ以上のアプリケーション及びデータとを含み、
前記携帯機器クライアントと前記携帯機器プロキシが通信して、前記１つ以上のアプリケーション及びデータの、前記車内コンピュータへの動的な転送、及び前記携帯機器における前記１つ以上のアプリケーションの実行を可能にし、前記車内コンピュータが実行時において前記複数の車両用構成要素を使用し、
前記携帯機器のクライアントが、前記携帯機器と関連するアプリケーションのバージョンを識別するための情報を含むリストを前記携帯機器プロキシに送信し、
前記携帯機器プロキシが、前記バージョンを識別するための情報に基づいて、当該携帯機器のアプリケーションのアップデートを行うか否かを決定
するシステム。
【請求項２】
前記携帯機器クライアントが前記携帯機器のプロキシを認証し、前記携帯機器のプロキシが前記携帯機器クライアントを認証する、請求項１に記載のシステム。
【請求項３】
前記携帯機器クライアントが、前記車両の前記複数の車両用構成要素の情報を前記携帯機器のプロキシに伝える、請求項１に記載のシステム。
【請求項４】
前記携帯機器クライアントが、前記車両でキャッシュメモリに記憶された複数のアプリケーションについての情報を前記携帯機器のプロキシに伝える、請求項１に記載のシステム。
【請求項５】
前記携帯機器のプロキシが、複数のアプリケーションを前記車両に転送するために決定する、請求項１に記載のシステム。
【請求項６】
前記携帯機器のプロキシが、前記車両に転送されるべき複数のアプリケーションを動的に構成する、請求項１に記載のシステム。
【請求項７】
前記携帯機器クライアントと前記携帯機器のプロキシとが、ブルートゥース接続、インターネット・プロトコル（ＩＰ）接続、及びセキュア接続のうちの少なくとも１つを用いて通信する、請求項１に記載のシステム。
【請求項８】
前記携帯機器クライアントと前記携帯機器のプロキシとが、通信の暗号化、完全性保護、及びその他の安全性保護用に、動的に暗号鍵を作り出すために通信し、又は通信の暗号化、完全性保護、及びその他の安全性保護用に、現行の暗号鍵を使用するために通信する、請求項１に記載のシステム。
【請求項９】
前記携帯機器クライアントが、前記携帯機器のプロキシの切断を検出し、前記携帯機器のプロキシが、前記携帯機器クライアントの切断を検出する、請求項１に記載のシステム。
【請求項１０】
前記携帯機器クライアントと前記携帯機器のプロキシとが、前記車両が始動していないか、始動中か、又は既に始動している間に通信する、請求項１に記載のシステム。
【請求項１１】
前記複数の車両用構成要素が、ビルトインユーザーインターフェース機構付きの又は無しの、１つ以上のダッシュボード・ディスプレイと、スピーカーと、音声入出力システムとを含む、請求項１に記載のシステム。
【請求項１２】
１つの携帯機器クライアントが同時に複数の携帯機器のプロキシと通信する、請求項１に記載のシステム。
【請求項１３】
車両において、ネットワーク化された携帯機器を使用するための方法であって、以下のステップ：
前記車両の携帯機器クライアントと前記携帯機器上の携帯機器プロキシとの間で通信するステップと、
前記携帯機器から１つ以上のアプリケーション及びデータを、動的に前記車両へ転送するステップと、
実行時に前記車両の複数の車両用構成要素を用いて、前記携帯機器上及び前記車両で１つ以上のアプリケーションを実行するステップと、
前記携帯機器クライアントと前記携帯機器プロキシが通信する間に、前記携帯機器のクライアントによって、前記携帯機器と関連し、前記車両内にあるアプリケーションのバージョンを識別するための情報を含むリストを前記携帯機器プロキシに送信するステップと、
前記携帯機器プロキシによって、前記バージョンを識別するための情報に基づいて、当該携帯機器のアプリケーションのアップデートを行うか否かを決定するステップと
を含む方法。
【請求項１４】
前記携帯機器のプロキシによって前記携帯機器クライアントを認証し、前記携帯機器クライアントによって前記携帯機器のプロキシを認証することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記通信するステップが、前記複数の車両用構成要素を前記車両から前記携帯機器のプロキシに送信することをさらに含む、請求項１３に記載の方法。
【請求項１６】
前記通信するステップが、前記車両でキャッシュメモリに記憶された複数のアプリケーションについての情報を、前記携帯機器のプロキシに送信することをさらに含む、請求項１３に記載の方法。
【請求項１７】
前記車両に転送するための複数のアプリケーションを決定するステップをさらに含む、請求項１３に記載の方法。
【請求項１８】
前記車両に転送されるべき複数のアプリケーションを動的に構成するステップをさらに含む、請求項１３に記載の方法。
【請求項１９】
前記通信するステップが、ブルートゥース接続、インターネット・プロトコル（ＩＰ）接続、及びセキュア接続のうちの少なくとも１つを用いて実行される、請求項１３に記載の方法。
【請求項２０】
前記通信するステップが：
通信の暗号化、完全性保護、及びその他の安全性保護用に、動的に暗号鍵を作り出すことと、
通信の暗号化、完全性保護、及びその他の安全性保護用に、現行の暗号鍵を使用することと
のうちの１つをさらに含む、請求項１３に記載の方法。
【請求項２１】
前記携帯機器クライアントによって、前記携帯機器のプロキシの切断を検出することと、
前記携帯機器のプロキシによって、前記携帯機器クライアントの切断を検出することとをさらに含む、請求項１３に記載の方法。
【請求項２２】
前記通信するステップが、前記車両が始動していないか、始動中か、又は既に始動している間に発生する、請求項１３に記載の方法。
【請求項２３】
前記複数の車両用構成要素が、ビルトインユーザーインターフェース機構付きの又は無しの、１つ以上のダッシュボード・ディスプレイと、スピーカーと、音声入出力システムとを含む、請求項１３に記載の方法。
【請求項２４】
１つの携帯機器クライアントが同時に複数の携帯機器のプロキシと通信する、請求項１３に記載の方法。
【請求項２５】
ネットワーク化された携帯機器を車両において使うためのコンピュータ上で作動する、コンピュータで読取り可能なプログラムであって、前記プログラムが前記コンピュータに次のステップ：
前記車両の携帯機器クライアントと前記携帯機器上の携帯機器プロキシとの間で通信するステップと、
前記携帯機器から１つ以上のアプリケーション及びデータを、動的に前記車両へ転送するステップと、
実行時に前記車両の複数の車両用構成要素を用いて、前記携帯機器上及び前記車両で１つ以上のアプリケーションを実行するステップと
前記携帯機器クライアントと前記携帯機器プロキシが通信する間に、前記携帯機器のクライアントによって、前記携帯機器と関連し、前記車両内にあるアプリケーションのバージョンを識別するための情報を含むリストを前記携帯機器プロキシに送信するステップと、
前記携帯機器プロキシによって、前記バージョンを識別するための情報に基づいて、当該携帯機器のアプリケーションのアップデートを行うか否かを決定するステップと
を実施させる命令を含む、プログラム。
【請求項２６】
前記携帯機器のプロキシによって前記携帯機器クライアントを認証し、前記携帯機器クライアントによって前記携帯機器のプロキシを認証することをさらに含む、請求項２５に記載のプログラム。
【請求項２７】
前記通信するステップが、前記複数の車両用構成要素を前記車両から前記携帯機器のプロキシに送信することをさらに含む、請求項２５に記載のプログラム。
【請求項２８】
前記通信するステップが、前記車両でキャッシュメモリに記憶された複数のアプリケーションについての情報を、前記携帯機器のプロキシに送信することをさらに含む、請求項２５に記載のプログラム。
【請求項２９】
前記車両に転送するために複数のアプリケーションを決定するステップをさらに含む、請求項２５に記載のプログラム。
【請求項３０】
前記車両に転送されるべき複数のアプリケーションを動的に構成するステップをさらに含む、請求項２５に記載のプログラム。
【請求項３１】
前記通信するステップが、ブルートゥース接続、インターネット・プロトコル（ＩＰ）接続、及びセキュア接続のうちの少なくとも１つを用いて実行される、請求項２５に記載のプログラム。
【請求項３２】
前記通信するステップが：
通信の暗号化、完全性保護、及びその他の安全性保護用に、動的に暗号鍵を作り出すことと、
通信の暗号化、完全性保護、及びその他の安全性保護用に、現行の暗号鍵を使用することと
のうちの１つをさらに含む、請求項２５に記載のプログラム。
【請求項３３】
前記携帯機器クライアントによって、前記携帯機器のプロキシの切断を検出することと、
前記携帯機器のプロキシによって、前記携帯機器クライアントの切断を検出することとをさらに含む、請求項２５に記載のプログラム。
【請求項３４】
前記通信するステップが、前記車両が始動していないか、始動中か、又は既に始動している間に発生する、請求項２５に記載のプログラム。
【請求項３５】
前記複数の車両用構成要素が、ビルトインユーザーインターフェース機構付きの又は無しの、１つ以上のダッシュボード・ディスプレイと、スピーカーと、音声入出力システムとを含む、請求項２５に記載のプログラム。
【請求項３６】
１つの携帯機器クライアントが同時に複数の携帯機器のプロキシと通信する、請求項２５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本発明は、その全ての内容及び開示が、参照することによりあたかも本明細書に完全に記述される如く本明細書に包含される、２００８年８月１１日に出願された米国仮特許出願第６１／１８８，５６４号の利益を主張する。
【０００２】
発明の分野
本発明は全般的に無線ネットワークに関する。
【背景技術】
【０００３】
発明の背景
車内における、例えば携帯電話、携帯ｍｐ３プレーヤー、個人用デジタル補助機器等の移動式の携帯ネットワーク機器の使用は、過去数年間にわたり劇的に増加して来ている。しかしながら、そのような機器を自動車内で使用することは困難であり、危険でさえある。自分の機器と対話し、制御するために、現在ユーザーは殆ど選択肢を持たず、自動車内での新たなユーザーインターフェース（ＵＩ）システムを学ぶか、又は機器上のディスプレイ及び制御キーの利用に頼る必要があり、それは多くの場合、自動車内で使用するには小さすぎて扱いにくく、深刻な安全上の問題を提示する。
【０００４】
車内のネットワーク・コンピューティングの領域において、Ford Syncは音声命令の使用を可能にしている。幾つかの自動車において、ユーザーは一定の携帯ＭＰ３プレ−ヤーのメディア再生を制御するために、自動車の音声制御を利用できる。例えば、Ford Syncにおいては、アプリケーション・プログラムが直接的に携帯機器上で実行するか、車両のアプリケーション・プログラムによって使用されるためにアプリケーション・データが車両に転送される。それゆえ、ユーザーは自動車に特有のＵＩ機構を学習する必要がある。
【０００５】
全般的なネットワーク・コンピューティングの領域において、Sun’s JINIとUPnPの双方は、所与のコンピュータ環境において、各種構成要素の機能の動的な発見を可能にしている。同じように、この特徴はコンピュータ環境には以前から知られていない新しい機器が、別の機器の能力を用いることを可能にし、その能力を別の機器に利用できるようにする。JINIとUPnPにおいて、アプリケーション・インターフェース及び／又はドライバー・ソフトウェアは、ホスト・ネットワークから該ネットワークにつながる新しい機器に移され、該機器はホスト・ネットワークのサービスを利用するため、受信したソフトウェアを作動させる。JINIとUPnPの双方において、ユーザーは不便で危険な車両用構成要素のサービスを利用するため、携帯機器のＵＩ制御を依然として採用しなくてはならない。
【０００６】
結果として、自動車において、ネットワーク化された携帯機器を途切れなく、直感的に使用するために、車両の運転手及び乗員をより良くサポートする必要性が高まっている。
【発明の概要】
【課題を解決するための手段】
【０００７】
発明の概要
実行時における（at runtime）動的性能の発見及びアプリケーション・プログラムの転送を通じて、携帯機器のアプリケーション・サービスが車両上で作動することを可能にする新たな方法が提示されている。現在、車内のダッシュボードの画面、スピーカー、及び他の構成要素は、車内アプリケーションだけをサポートするために設計されている。一般的に、車両は固定された（又は静的な）アプリケーション・サービスと静的なＵＩ制御のセットを提供する閉じたシステムだと見なされる。本発明は、実行時においてアプリケーション・ソフトウェア・コードを携帯機器から車両へ動的に移すことにより、多種多様な第三者のアプリケーションがそのディスプレイ及び他の機器を必要に応じて使用できるように、車両のシステムを「広げる」新たな方法を提供する。従って、本発明のシステム及び方法において、携帯機器のアプリケーション・ソフトウェアは車上で作動させるために、機器から車両へと転送される。
【０００８】
車両において、ネットワーク化された携帯機器を使用するための、本発明によるシステム及び方法が提示されている。車両は、技術的にＯＢＥ（車載装置＝Vehicle On-board Equipment）として一般に知られる車内コンピュータ、携帯機器クライアント、及び複数の車両用構成要素（vehicle components）を有し、そして携帯機器は、携帯機器クライアントと携帯機器のプロキシとが通信するように、該携帯機器のプロキシ及び１つ以上のアプリケーションを持ち、１つ以上のアプリケーションのＯＢＥへの動的な転送と、実行時に複数の車両用構成要素を使用して、携帯機器及びＯＢＥにおける１つ以上のアプリケーションの実行とを可能にする。携帯機器クライアントは携帯機器のプロキシを認証し、携帯機器のプロキシは携帯機器クライアントを認証する。認証はデジタル証明書を用いて行われ得る。携帯機器クライアントは、車両の車両用構成要素の情報を携帯機器のプロキシに伝える。携帯機器クライアントと携帯機器のプロキシとは、ブルートゥース（Bluetooth）を通じて、インターネット・プロトコル（ＩＰ）を用いて通信可能である。車両用構成要素は、ユーザーインターフェース（ＩＵ）機構付きの又は無しの、ダッシュボードにあるディスプレイと、スピーカーと、音声入出力システムとを含み得る。
【０００９】
図面の簡単な説明
本発明は、制限されない本発明の例示的実施形態のための、書き留められた図面を参照することにより、以下の詳細記述においてさらに説明され、そこで同様の参照番号は各図面にわたって同様の部品を表わす。しかしながら、本発明は示されている詳細な配置や手段に制限されないことを理解されたい。
【図面の簡単な説明】
【００１０】
【図１】本発明によるシステムの構造上の概観である。
【図２】本発明の実施形態における車載装置の略図である。
【図３】本発明の実施形態における携帯機器の略図である。
【図４】車両の機能を転送するためのフローチャートである。
【図５】アプリケーション・プログラムを転送するためのフローチャートである。
【発明を実施するための形態】
【００１１】
詳細な説明
本発明のシステム及び方法は、ネットワーク化された携帯機器を車両と連動させることを可能にし、車上におけるそのようなシステムを動的に発見し、要求に応じてアプリケーション・コードを携帯機器から車両に移す目的で、機器のユーザーが車両の音声、ディスプレイ、ユーザーインターフェース（ＵＩ）及び他のシステムと協調し、それを制御することを可能にする。
【００１２】
図１は本発明の構造上の概観を示す。図１において、車両は車載装置（ＯＢＥ）１０と呼ばれる車内のシステムを装備する。本発明の全ての実用的な目的に対して、ＯＢＥ１０は車内での使用のために特定して構築されたコンピュータシステムである。ＯＢＥ１０は、車両のアプリケーション向けのグラフィックディスプレイ領域と車両の乗員から入力を得るためのタッチスクリーン機能とを提供する、車両ダッシュボード・ディスプレイシステム１２から構成され得る。それは又、ユーザーが車両のアプリケーションと交流するために音声命令を発することを可能にする、音声入出力（ＩＯ）システム１４を提供し得る。それは又、例えばステアリングホイール上あるいは車両の他の領域にあるソフトキー、ボタンや、運転手が車両のダッシュボード・ディスプレイ１２に関して注意を集中させる場所（where the driver is focusing with respect to the vehicle dashboard display 12）をたどるマウス、キーボード、及び／又は光学機器のような、１つ以上の別のＵＩシステム１６を含み得る。
【００１３】
図１のＯＢＥ１０が単一の機器として示されている一方で、その機能及びインターフェースは複数の物理的装置上で分散したやり方で実装され得る。汎用コンピュータの如く、ＯＢＥ１０は、Linux（リナックス）のようなオペレーティングシステム１８を作動させる。オペレーティングシステム１８は、車両のアプリケーション用、及び、ドライバーと呼ばれる特殊なソフトウェア用の、ランタイム環境を提供する。かかる特殊なソフトウェアは、車両の入出力（ＩＯ）、音声、及びその他のシステムと相互作用するように、車両のアプリケーションが使用可能である。オペレーティングシステム、ドライバー、アプリケーションの概念、及びドライバーの使用は、本発明の分野において良く理解されている。
【００１４】
図１に示すように、携帯機器クライアント（Mobile Device Client） (ＭＤＣ)２０と呼ばれる、専用ソフトウェアがＯＢＥ１０にインストールされ、動作する。その名が示唆するようにＭＤＣ２０は、車両のＯＢＥ１０と携帯機器２４を緊密に統合するために、携帯機器のプロキシ（Mobile Device Proxy）（ＭＤＰ）２２と呼ばれる本発明のサーバー側のソフトウェアと共に動作する、クライアント側のアプリケーションである。ＭＤＣ２０は、車両のダッシュボード・ディスプレイ１２、音声入出力（Ｉ／Ｏ）１４、及び他のシステム１６についてＭＤＰ２２に知らせ、ユーザーの携帯機器２４からの１つ以上のアプリケーションを移して実行するために作動する。１つの実施形態において、ＭＤＣ２０は車両が製作されるときに、車両のＯＢＥ１０に前もってインストールされる。しかしながら、車両の製作及び購入の後の顧客要請に応じて、車両のサービスステーションが、例えばＵＳＢインターフェースを介して、ＯＢＥ１０にＭＤＣ２０をインストールすることを含め、他の方法もまた実現可能である。
【００１５】
図１に示すように、ＯＢＥ１０はネットワーク接続２６を介して、ユーザーの携帯機器２４と通信可能である。具体的に、ＯＢＥ１０は、ブルートゥース接続を介して、携帯機器２４と通信でき、ＯＢＥ１０上のＭＤＣ２０は、ブルートゥースを通じてＴＣＰ／ＩＰ接続を用いて、携帯機器２４上のＭＤＰ２２と通信する。ブルートゥースを通じたＴＣＰ／ＩＰを用いるアプリケーションの実装は、この発明の分野において良く理解されている。他の無線技術もまた、ＯＢＥ１０と携帯機器２４とを相互接続するために使用され得る。ＵＤＰのような、ＴＣＰの域を超えた別のトランスポート層プロトコルもまた、ＭＤＰ２２とＭＤＣ２０が相互に通信するために使用され得る。
【００１６】
図１において、ユーザーの携帯機器２４は、オペレーティングシステム（ＯＳ）２８、記憶装置３０、及び多数の無線通信機能３２から構成される。上記で議論したように携帯機器２４は、車両の機能の動的な発見、及び携帯機器２４から車両のＯＢＥ１０への、アプリケーション・コードの動的転送により、車両のＯＢＥ１０上で携帯機器２４からのアプリケーションを作動させるための、ＯＢＥ１０上でＭＤＣ２０と共に動作する、携帯機器のプロキシサーバー（Mobile Device Proxy） （ＭＤＰ）２２と呼ばれる専用アプリケーションを作動させる。
【００１７】
車両システムの情報を携帯機器２４に伝え、アプリケーション・コードを携帯機器２４から車両へそこで実行するように移すための、専用アプリケーション、すなわちＭＤＣ２０及びＭＤＰ２２をそれぞれ使用する本発明の方法は、車両の環境におけるモバイル・コンピューティングの分野では独特である。有利なことに、本発明において、携帯機器２４上の全てのアプリケーションは（アプリケーションが要する、必要なデバイスドライバーを車両が提供すると仮定すると）車上で作動するように利用可能であり、一方で先行技術のアプローチにおいては、ユーザーは車両によって提供されるアプリケーションだけに限定される。例えば、別のアプローチにおいては、ユーザーが例えばＡＰＰ‐Ａのアプリケーションを携帯機器２４上に持つが、しかし車両がＡＰＰ‐Ａのデータを処理可能な、機能的に類似のアプリケーションを持たず、及び／又はＡＰＰ‐Ａ用の適切なドライバーを提供しない場合、ユーザーは車上でＡＰＰ‐Ａを使用できない。しかしながら、本発明は実行可能なアプリケーション・コード及び／又はＡＰＰ‐Ａのデータを携帯機器２４から車両に移し、該コードをデータと共にそこで実行することにより、ユーザーがそのような車両においてＡＰＰ‐Ａを用いることを可能にする。この例において、ＡＰＰ‐Ａは携帯機器のメーカーにより提供されることに注意されたい。従って、車両で作動するとき、ＡＰＰ‐Ａはそれが携帯機器２４上で作動する時と類似の外観と雰囲気を提供でき、それはユーザーが車両でＡＰＰ‐Ａを使用するための学習曲線を劇的に低減し得る。
【００１８】
図２は、本発明の実施形態においてＯＢＥ１０に実装されたＭＤＣ２０を示す。図２において、ＯＢＥ１０はＯＳＧｉフレームワークと呼ばれるアプリケーション・ランタイム環境を提供する。ＯＳＧｉフレームワークは、ＯＳＧｉバンドルと呼ばれるＪａｖａアプリケーションの、特定のタイプのライフサイクルを実行し、管理する業界標準技術である。ＯＳＧｉフレームワークとバンドルは、ＯＢＥ用の様々な車両用アプリケーションを実装するために、ＶＩＩコンソーシアム（Vehicle Infrastructure Integration Consortium）（IntelliDriveとも呼ばれる）によって使用されている。ＯＳＧｉフレームワークとバンドルの概念は、本発明の分野において実務を行う人々には良く理解されている。
【００１９】
図２に示すように、ＭＤＣ２０は、ＯＳＧｉバンドルとして、本発明の好適な実施形態において実装される。このように、ＭＤＣ２０は、その機能を実現するために、ＯＳＧｉフレームワーク上の別のＯＳＧｉバンドルによりエクスポートされた（Ｊａｖａ）アプリケーション・パッケージ及びサービスの発見を含む、ＯＳＧｉフレームワークにより提供されるデフォルトシステム・サービスを活用できる。例えば、全てのＯＳＧｉフレームワーク上で利用可能な標準サービスの１つは、デバイス・アクセス・サービス（Device Access service）であり、それは別のアプリケーションが、ＯＳＧｉフレームワーク上で利用可能なデバイス及び対応するドライバーをプログラムで発見し、当該アプリケーションの作動において、発見されたデバイスを使用するためにそれらをバインドすることを可能にする。従ってＭＤＣ２０は、実行時において車両で利用可能なデバイス及びドライバーを把握するために、ＯＳＧｉのデバイス・アクセス・サービスを使用できる。同様に、ＭＤＣ２０は、ＯＳＧｉフレームワーク上の別のバンドルによりエクスポートされたサービス及びアプリケーション・パッケージを把握するために、全てのＯＳＧｉフレームワークにおける別の標準サービスである、ＯＳＧｉサービス・レジストリー（Service Registry）も使用できる。
【００２０】
ＯＳＧｉバンドルとして、ＭＤＣ２０は又、ＯＳＧｉバンドル・コンテキスト（BundleContext）及びバンドル・オブジェクト（Bundle objects）のアプリケーション・プログラミング・インターフェース（ＡＰＩ）を用いて、実行時において他のバンドルを動的にインストールし、始動させ、停止させる能力を有する。具体的には、以下に記述されてように、ＭＤＰ２２からのアプリケーション・バンドルを受信すると、ＭＤＣ２０は最初に、車両のＯＢＥ１０のファイルシステム内に、受信したバンドルを記憶する。受信したバンドルを車両にインストールするため、ＭＤＣ２０は次に、車両のＯＳＧｉフレームワークによって提供される、バンドル・コンテキスト・オブジェクト（BundleContext object）のinstallBundle()メソッドを用いる。それは、ファイルシステム上の、受信したバンドルの位置へのＵＲＬをinstallBundle()に渡す。引き続いて、それは新たにインストールされたバンドルを始動させるため、installBundle()によって返されたバンドル・オブジェクトに対して、start()メソッドを呼び出す。同様に、ＭＤＣ２０はそれぞれ、受信したバンドルの作動を停止させるために、また該バンドルのソフトウェアをアップデートするために、そして、該バンドルをアンインストールするために、同じバンドル・オブジェクトのstop()、update()、及びuninstall()メソッドを使用できる。
【００２１】
図３において、ＭＤＰ２２は、携帯機器２４のオペレーティングシステム（ＯＳ）２８において作動する、アプリケーションとして示されている。（Ｊａｖａにおける）ＯＳＧｉバンドルであるＭＤＣ２０と異なり、ＭＤＰ２２は携帯機器２４のＯＳ２８において作動するために、専用に実装されたネイティブアプリケーションである。図３に示すように、ＭＤＰ２２は、ＯＳＧｉバンドルの集合を管理し、該ＯＳＧｉバンドルは、車両のＯＢＥ１０に送られることができ、そこで実行し得る。各ＯＳＧｉバンドルに対して、ＭＤＰ２２は、ＯＳＧｉバンドルが他のアプリケーションに対して持ち得る、依存関係を把握する。１つの実施形態において、依存関係はＯＳＧｉがその作動において使用する（Ｊａｖａにおける）パッケージの名称を含む。それはまた、各々の依存したパッケージに関するバージョン情報を含み得る。ＭＤＰ２２は、携帯機器２４上の記憶装置３０内に記憶された所与のＯＳＧｉバンドルが、車両のＯＢＥ１０において作動可能かどうかを決定するために、依存関係の情報を用いる。
【００２２】
図２及び図３の実施形態において、ＭＤＣ２０及びＭＤＰ２２は携帯機器２４上のＭＤＰ２２と通信するため、ブルートゥース３４を通じＴＣＰ／ＩＰを使用する。具体的にＭＤＣ２０は、ＭＤＰ２２がＭＤＣ２０のメッセージをリッスンする既知のポート番号に“Ｈｅｌｌｏ”（ハロー）メッセージを周期的に同報送信する。ＭＤＣ２０からメッセージを受信すると、ＭＤＰ２２は、ＭＤＣ２０がＭＤＰ２２のメッセージをリッスンする別の既知のポート番号に、ＭＤＰ２２自身の“Ｈｅｌｌｏ”メッセージを送信することにより応答する。ＭＤＰ２２からＭＤＣ２０への、この応答メッセージは、ＭＤＰ２２がＭＤＣの同報送信メッセージのＩＰヘッダーから検索したＩＰアドレスに宛てられる。応答メッセージは又、ＭＤＰ２２がＭＤＣ２０との更なる通信をリッスンするポート番号と、ＭＤＰの携帯機器２４を一意に識別する識別子とを含む。ＵＤＰは、ＭＤＣ２０からＭＤＰ２２への同報送信メッセージ、及びＭＤＰ２２からＭＤＣ２０への応答メッセージの双方に対して用いられ得る。代わりに、ＴＣＰ又は他の適切な通信技術が、これらのメッセージをＭＤＣ２０とＭＤＰ２２との間で通信するために用いられ得る
【００２３】
図２及び図３は、非対称の暗号鍵及びそれらのデジタル証明書３６を有する、ＭＤＣ２０及びＭＤＰ２２の双方を示す。それらは、本開示において記述されているように、ＭＤＣ２０とＭＤＰ２２との間で相互認証を行い、通信を確保するために使用される。デジタル証明書３６をインストールし、配布し、更新し、取り消すための機構は、本発明の分野において良く理解されている。本発明の１つの実施形態において、ＭＤＣ２０は、その“Ｈｅｌｌｏ”同報送信メッセージにデジタル署名し、それにより、ＭＤＰ２２が、受信した“Ｈｅｌｌｏ”メッセージの署名を検証し、ＭＤＣ２０を認証することを可能にする。同様に、ＭＤＰ２２は、その“Ｈｅｌｌｏ”応答メッセージにデジタル署名し、それにより、ＭＤＣ２０が、受信した“Ｈｅｌｌｏ”応答メッセージの署名を検証し、ＭＤＰ２２を認証することを可能にする。デジタル署名を用いてメッセージに署名し、該署名を検証するためのアルゴリズムは、本発明の分野において良く知られている。作成、交換のために使用されるデータ、又は対称な暗号法による暗号化の使用及び、アプリケーション・コードとデータの転送の完全性保護（integrity protection）もまた、ＭＤＣ２０とＭＤＰ２２がＴＬＳ、ＤＴＬＳ、又は共有する鍵の管理プロトコルを作動させるために、ＭＤＣ２０とＭＤＰ２２との間で通信され得る。ＴＬＳ及びＤＴＬＳは、安全なセッションを確立しデータを転送するための、業界標準の通信プロトコルであり、本発明の分野において良く理解されている。
【００２４】
本発明のシステムの動作がここで説明される。ＭＤＣ２０は、車両のＯＳＧｉバンドルによりエクスポートされたアプリケーション・パッケージに関して、車両の機能のリストの送信、及び携帯機器２４のＭＤＰ２２からのＯＳＧｉバンドルの受信と作動を実行する。一旦ＭＤＣ２０がＭＤＰ２２を検出すると、上述のように、ＭＤＣ２０は検出されたＭＤＰ２２が正規であるかどうかを決定するように試み、すなわちＭＤＣ２０はＭＤＰ２２に関して認証を行う。１つの実施形態において、ＭＤＰ２２はＭＤＣ２０に対するその“Ｈｅｌｌｏ”応答メッセージにデジタル署名でき、ＭＤＣ２０は次に、始める前に該署名を検証する。
【００２５】
ＭＤＣ２０がＭＤＰ２２を正常に認証した場合、ＭＤＣ２０は、車両のＯＢＥ１０上のＯＳＧｉバンドルによりエクスポートされたアプリケーション・パッケージ及びサービスのような、車両の機能リストをＭＤＰ２２に送信する。該リストは、“ＣＡＰ”と呼ばれるメッセージ内に包含される。該メッセージは、ＭＤＣ２０が、ＭＤＰの“Ｈｅｌｌｏ”応答メッセージのＩＰヘッダーから検索するＩＰアドレス、及び、同じ“Ｈｅｌｌｏ”応答メッセージ内に含まれるポート番号宛てに送られる。“ＣＡＰ”メッセージは又、ＭＤＣ２０がＯＳＧｉバンドルの潜在的なファイル転送をＭＤＰ２２からリッスンするポート番号と、ＯＳＧｉバンドルが記憶されるべきＯＢＥ１０のファイルシステム上の位置情報とを含む。
【００２６】
ファイル転送プロトコル、例えばＦＴＰ又はセキュアＦＴＰは、任意のＯＳＧｉバンドルファイルを携帯機器２４から車両に転送するために使われることができ、そこでＭＤＣ２０はＦＴＰサーバーの役割を果たし、ＭＤＰ２２はＦＴＰクライアントの役割を果たす。トランスポート層セキュリティ（Transport Layer Security）を用いるSecure Shell（ＳＳＨ）、ＨＴＴＰ、又はＨＴＴＰＳを通じた良く知られているファイル転送を含む、他のアプローチもまた実現可能である。ＵＤＰ転送もまたデータグラム・トランスポート層セキュリティ（Datagram Transport Layer Security）を用いてサポートされ得る。
【００２７】
“ＣＡＰ”メッセージを送信した後、ＭＤＣ２０はＭＤＰ２２から、それが“ＣＡＰ”メッセージを受信したという、確認応答メッセージを受信するのを待つ。確認応答が待ち時間の（設定可能な）期間内に受信された場合、ＭＤＣ２０は“ＣＡＰ”メッセージ内に含まれるポート番号において、ＭＤＰ２２からのＦＴＰ接続要求をリッスンすることを開始する。そうでなければ、ＭＤＣ２０は再度“ＣＡＰ”メッセージを送信し、確認応答を待つ。ＭＤＣ２０が（設定可能な）再試行回数の後に依然として確認応答を受けていない場合、ＭＤＣ２０は現在の携帯機器２４が車両から切断されることを待ち始め、そのプロセスは以下に記述されている。
【００２８】
ＭＤＣ２０が、（設定可能な）待ち時間の期間内にＭＤＰ２２からのＦＴＰでの接続要求を受けたとき、ＭＤＣ２０は、携帯機器２４からアプリケーション・プログラム（すなわち、ＯＳＧｉバンドル）を受信するため、ＭＤＰ２２と共にＦＴＰプロトコルの実行を開始する。ＯＳＧｉバンドルの正常な転送に引き続き、ＭＤＣ２０はそれらを車両のＯＢＥ１０のファイルシステム上に記憶し、そして車両のＯＳＧｉフレームワーク上にそれらをインストールし、始動させる。ＦＴＰ転送が失敗した場合、ＭＤＣ２０は、ＭＤＰ２２からのＦＴＰ接続要求を待ち、そしてＦＴＰプロトコルを実行するプロセスを再試行する。ＦＴＰ転送が（設定可能な）再試行回数の後に依然として失敗する場合、ＭＤＣ２０は現在の携帯機器２４を車両から切断することを待ち始める。
【００２９】
ＭＤＣ２０が、ＭＤＰ２２からのＦＴＰ接続要求を待つための、（設定可能な）再試行回数の後に、ＯＳＧｉバンドルを何ら受信しないことが生じ得る。そのような場合、ＭＤＣ２０は、現在の携帯機器２４が車両上で作動させるアプリケーションを何ら持たないと推定し、携帯機器２４が車両から切断されるのを待つ。ＭＤＰ２２はまた、利用可能なアプリケーションが存在しないことを示すメッセージをＭＤＣ２０に送信することができる。
【００３０】
ＭＤＣ２０は、“Ｓｔｉｌｌ  Ｔｈｅｒｅ”メッセージを、“Ｈｅｌｌｏメッセージ”の同報送信に使用された同じポート番号に周期的に送信することにより、携帯機器２４の切断を検出する。ＭＤＰ２２が、（設定可能な）再試行回数についての（設定可能な）期間内に、対応する“Ｓｔｉｌｌ  Ｔｈｅｒｅ”メッセージに応答しない場合、ＭＤＣ２０は携帯機器２４が車両から切断されたものと決定する。そのような場合、ＭＤＣ２０は、携帯機器２４から受信したあらゆる作動中のＯＳＧｉバンドルを停止させ、新たなＭＤＰを待つことに戻る。
【００３１】
図４は、ＭＤＣ２０が、車両機能のリストの送信と、携帯機器２４のＭＤＰ２２からのＯＳＧｉバンドルの受信及び処理を実行する、アルゴリズムのフローチャートである。ステップＳ１において、ＭＤＣ２０はＭＤＰ２２が検出されたかどうかを決定する。ＭＤＰ２２が何ら検出されない場合（Ｓ１＝ＮＯ）、ＭＤＣ２０はステップＳ１を繰り返し、ＭＤＰ２２を検出することを試み続ける。
【００３２】
ＭＤＰ２２が検出された場合（Ｓ１＝ＹＥＳ）、ステップ２においてＭＤＰ２２は上記で議論したように認証される。ＭＤＰが真正又は正当でない場合（Ｓ３＝ＮＯ）、処理はステップＳ１に戻る。
【００３３】
ＭＤＰ２２が正当である場合（Ｓ３＝ＹＥＳ）、ステップ４においてＭＤＣ２０は車両機能情報をこの正当なＭＤＰ２２に送信する。ＭＤＣ２０はステップＳ５において、ＭＤＰ２２からアプリケーション・プログラムを受信するのを待つ。ステップＳ６において、ＭＤＣ２０は“ＣＡＰ”メッセージの確認応答をチェックする。メッセージが確認応答された場合（Ｓ６＝ＹＥＳ）、ＭＤＣ２０はステップＳ７において、ＭＤＰ２２からアプリケーション・プログラムを受信し、作動させる。プログラムが（Ｓ７において）作動した場合、又は確認応答が受信されない場合（Ｓ６＝ＮＯ）、ＭＤＣ２０はステップＳ８においてＭＤＰ２２が切断されているかどうかを決定する。ＭＤＰ２２が切断されている場合（Ｓ８＝ＹＥＳ）、ＭＤＰ２２からのプログラムはＳ９において停止される。ＭＤＰが切断されていない場合（Ｓ８＝ＮＯ）、ＭＤＣ２０はステップＳ８において、ＭＤＰ２２が切断されているかどうかをチェックし続ける。
【００３４】
アプリケーションを車両のＭＤＣ２０に転送するために実行する、携帯機器２４上のＭＤＰ２２の作動は、次の通りである。“Ｈｅｌｌｏ”メッセージをＭＤＣ２０から受信すると、ＭＤＰ２２はＭＤＣ２０を認証するために、メッセージ上の署名を検証する。正常な場合、ＭＤＰ２２は前述のように、その“Ｈｅｌｌｏ”応答メッセージを送信する。
【００３５】
それに続いて、ＭＤＰ２２はＭＤＣ２０からの“ＣＡＰ”メッセージを待つ。該メッセージが（設定可能な）再試行回数後の（設定可能な）待機期間中に受信されない場合、ＭＤＰ２２は“Ｈｅｌｌｏ”メッセージを待ち、処理するために戻る。そうでなければ、ＭＤＰ２２は“ＣＡＰ”メッセージの受信に関する確認応答を送信し、受信した“ＣＡＰ”メッセージからのアプリケーション・パッケージ及びサービスのリストを検索し、該当する場合、車両で利用できるアプリケーション・パッケージ及びサービスの情報において実行できるＯＳＧｉバンドルを識別するように試みる。
【００３６】
車両で作動可能なアプリケーション用のＯＳＧｉバンドルが存在する場合、ＭＤＰ２２は該バンドルをＭＤＣ２０に送信するための準備をする。そのような準備は、携帯機器２４上での、アプリケーションの幾つかの関連する構成要素を構成すること及び作動することを含む。例えば、テキスト通信用のアプリケーションが携帯機器２４上に存在し得る。そのＯＳＧｉバンドルは、所与の受信側に対するテキスト・メッセージをユーザーが言葉で指示することを可能にする車両の音声認識システムを使うように設計された、ソフトウェア構成要素と、車両のダッシュボードのディスプレイ上に構成されている、テキスト・メッセージを表示するためのグラフィカル・ユーザー・インフェース（ＧＵＩ）要素とから成る。ユーザーが“Ｓｅｎｄ  Ｍｅｓｓａｇｅ”（「メッセージ送信」）と言うとき、さらにテキスト通信バンドルの別の構成要素が、作成されたメッセージ及び受信側の情報を携帯機器２４へ、例えばブルートゥース接続３４を通じてＩＰで送り、それは次に、携帯機器２４のメッセージ送信機構を用いてメッセージを受信側に送信する。
【００３７】
このタイプのアプリケーションは、構成要素が車両において実行するのと同時に、幾つかのアプリケーション構成要素が携帯機器２４で作動することを必要とする。記述されたテキスト通信アプリケーションの上記例において、幾つかのアプリケーション構成要素は、作成されたメッセージを車両から受信する携帯機器２４上で作動し、該メッセージを受信者に送らなければならない。このタイプのアプリケーションをサポートするためＭＤＰ２２は、各ＯＳＧｉバンドルに関して、対応するアプリケーション構成要素、及び、それらのためのあらゆる構成及び初期化データを識別する、環境設定ファイルを保持する。或るＯＳＧｉバンドルが車両で実行可能な場合、ＭＤＰ２２は、最初に携帯機器２４で対応するアプリケーション構成要素を構成して作動させ、次にＯＳＧｉバンドルをＭＤＣ２０へ転送する。
【００３８】
一旦全てのＯＳＧｉバンドルがＭＤＣ２０に転送されると、ＭＤＰ２２は携帯機器２４が車両から切断されるまで待つ。それはＭＤＣ２０からの“Ｓｔｉｌｌ  Ｔｈｅｒｅ”メッセージをリッスンし、応答することにより行われる。切断されると、ＭＤＰ２２は、車両に転送されたＯＳＧｉバンドルをサポートして作動している、全てのアプリケーション構成要素を停止させ、ＭＤＣ２０からの“Ｈｅｌｌｏ”メッセージの待機状態に戻る。
【００３９】
図５は、携帯機器２４のＭＤＰ２２が車両のＭＤＣ２０へアプリケーションを転送するために作動するアルゴリズムのフローチャートである。ステップＳ１０において、ＭＤＰ２２は、ＭＤＣ２０が検出されているかどうか、すなわち“Ｈｅｌｌｏ”メッセージが受信されたかどうかを決定する。ＭＤＣ２０が検出されない場合（Ｓ１０＝ＮＯ）、ＭＤＰ２２はステップＳ１０を繰り返し、メッセージをリッスンし続ける。
【００４０】
ＭＤＣ２０が検出された場合（Ｓ１０＝ＹＥＳ）、それはステップＳ１１において上述の手順を用いて認証される。検出されたＭＤＣ２０が正当である場合（Ｓ１２＝ＹＥＳ）、ＭＤＰ２２はステップＳ１３において車両機能情報をＭＤＣ２０から受信するのを待つ。ＭＤＣ２０が正当でない場合（Ｓ１２＝ＮＯ）、ＭＤＰ２２はステップＳ１０に戻り、別の“Ｈｅｌｌｏ”メッセージを検出するためにリッスンする。
【００４１】
ステップＳ１４において、ＭＤＰ２２は車両機能上方がＭＤＣ２０から受信されたかどうかを決定する。車両機能情報が受信されていない場合（Ｓ１４＝ＮＯ）、処理はステップＳ１０に戻り、ＭＤＰ２２は別の“Ｈｅｌｌｏ”メッセージをリッスンする。
【００４２】
車両機能情報が受信された場合（Ｓ１４＝ＹＥＳ）、ＭＤＰ２２はステップＳ１５において、何れかのアプリケーション・プログラムがこれらの車両の機能に適合するかどうかを決定する。適合しない場合、処理はステップＳ１０に戻り、ＭＤＰ２２は別の“Ｈｅｌｌｏ”メッセージをリッスンする。
【００４３】
車両の機能に適合する１つ以上のアプリケーション・プログラムが存在する場合（Ｓ１５＝ＹＥＳ）、次にステップＳ１６において、ＭＤＰ２２は、ＭＤＣ２０に送信されるアプリケーション・プログラムに対応する、任意のアプリケーション・プログラムを作動させる。ステップＳ１７において、ＭＤＰ２２は車両の機能に適合する任意のアプリケーション・プログラムをＭＤＣ２０に送信する。
【００４４】
ステップＳ１８において、ＭＤＰ２２はＭＤＣ２０が切断されているかどうかを決定する。ＭＤＣ２０が切断されていない場合（Ｓ１８＝ＮＯ）、ＭＤＰ２２はステップＳ１８を繰り返すことにより、ＭＤＣ２０が切断されているかどうかを引き続きチェックする。ＭＤＰ２２が、ＭＤＣ２０が切断されていると決定する場合（Ｓ１８＝ＹＥＳ）、ＭＤＣ２０内のアプリケーション・プログラムに対応する、ＭＤＰ２２内のアプリケーション・プログラムはステップＳ１９で停止される。
【００４５】
記述された方法に対する幾つかの拡張が可能である。例えば、ＭＤＣ２０とＭＤＰ２２との間の通信は、前に述べたようにＴＬＳ又はＤＴＬＳのような、業界標準の安全なトランスポート・プロトコルを採用することにより、確保され得る。さらに、ＭＤＣ２０は同時に複数の携帯機器２４と通信可能である。これは各携帯機器２４のＩＰアドレス、及びＭＤＰ２２からの“Ｈｅｌｌｏ”応答メッセージ内の関連する識別子の情報を把握することにより実現可能である。
【００４６】
最初の遭遇後に、より速いＭＤＰ２２とＭＤＣ２０の相互作用及び、車両と携帯機器との間のアプリケーションのダウンロードを容易にするため、ＭＤＣ２０はＯＢＥ１０上にアプリケーションのキャッシュメモリを確保し得る。ＯＳＧｉフレームワークは、例えば車両の複数使用の間に始動することなくＪａｖａアプリケーションが該フレームワーク内に存在することを可能にする。運転手が次に車両内に入るときのように、ＭＤＰ２２とＭＤＣ２０との間で次の相互作用が行われる間に、ＭＤＣ２０は“Ｈｅｌｌｏ”応答メッセージの中で、既にＯＢＥ１０内にある携帯機器２４と関連する利用可能なアプリケーションのリストをＭＤＰ２２に送信する。ＭＤＣ２０は、携帯機器２４を識別し、それにアプリケーションを関連付けるために、ＭＤＰのデジタル証明書３６を使用できる。
【００４７】
ＭＤＰ２２に送られた利用可能なアプリケーションのリストはまた、アプリケーションのバージョンを識別するための情報を含み得る。携帯機器２４が作動させたいアプリケーションが既にＯＢＥ１０にインストールされているが、作動していない場合、ＭＤＰ２２はどのアプリケーションをＭＤＣ２０が始動させるべきかを識別することだけを要し、不必要なダウンロードを避ける。それは、前述のように携帯機器２４上で任意の対応するアプリケーション構成要素を作動させた後に、開始すべきアプリケーションのリストを識別する“ＳＴＡＲＴ”メッセージをＭＤＣ２０に送信することにより行われ得る。“ＳＴＡＲＴ”メッセージの受信は、ＭＤＣ２０がＭＤＰ２２からのＦＴＰ接続要求を待つことを取り消すであろう。
【００４８】
ＭＤＣのアプリケーションが該アプリケーションのバージョンに基づいて期限切れであると、ＭＤＰ２２が決定する場合、ＭＤＰ２２はＦＴＰを介して接続し、アプリケーションのバンドルのＯＳＧｉアップデートを実施するための命令を伴う新しいアプリケーションを転送するであろう。上記の相互作用において及び前述のように、各アプリケーションは署名され、その署名によってＭＤＣ２０は真正性（authenticity）を確立し、ダウンロード過程の間にアプリケーションの何らかの変更が生じたかどうかを決定する。
【００４９】
さらに、ＭＤＣ２０とＭＤＰ２２との間の説明された相互作用は、車両が始動していないか、始動中か、又は既に始動しているかに拘わらず、携帯機器２４が車両の無線範囲内にあれば何時でも発生し得る。本発明の好適な実施形態において、車両は無線キー装置を有し、ＭＤＣ２０は無線キー装置を持つユーザーを車両が正しく認証した後でのみＭＤＰをリッスンすることを開始し、そして応答する。これは、ＯＳＧｉフレームワーク上の別のアプリケーションに対して車両のロック及びロック解除の状態を発行する、同じＯＳＧｉフレームワーク上のサービスを車両が提供し、そしてＭＤＣ２０が該サービスに同意する（subscribe）場合に達成されることができる。
【００５０】
本開示の様々な態様が、コンピュータ又は機械が使用可能な、あるいは読み取り可能な媒体の中に組み込まれたプログラム、ソフトウェア、又はコンピュータの命令として具体化され得るが、それらはコンピュータ、プロセッサ、及び／又は機械において実行されるとき、コンピュータ又は機械に該方法のステップを実施させる。本開示に記述されている様々な機能性及び方法を実施するために、機械により実行可能な命令のプログラムを明白に具体化する、機械によって読取り可能なプログラム記憶装置もまた提供される。
【００５１】
本開示のシステム及び方法は、汎用コンピュータ又は専用のコンピュータシステム上で実装され、作動し得る。コンピュータシステムは既知のシステム、又は知られるであろうシステムの任意のタイプであってもよく、一般にプロセッサ、メモリ素子、記憶装置、入出力装置、内部バス、及び／又は通信ハードウェア及びソフトウェアと連動した別のコンピュータシステムと通信するための、通信インターフェース等を含み得る。
【００５２】
本発明において使用され得る「コンピュータシステム」及び「コンピュータ・ネットワーク」は、固定型及び／又は携帯型のコンピュータ・ハードウェア、ソフトウェア、周辺機器、及び記憶装置の、様々な組合せを含み得る。コンピュータシステムは、ネットワーク化された、又はさもなければ協力し合って実行するために接続された、複数の個々の構成要素を含み得るか、又は１つ以上の独立型の構成要素を含み得る。本出願のコンピュータシステムのハードウェア及びソフトウェア構成要素は、デスクトップ、ラップトップ、及びサーバーのような固定型機器及び携帯機器を含み得るか、又はその中に含まれ得る。モジュールは装置の構成要素、ソフトウェア、プログラム、あるいはソフトウェア、ハードウェア、ファームウェア、電子回路等として具体化され得る幾つかの「機能性」を実装するシステムであり得る。
【００５３】
上述の実施形態は説明に役立つ実例であり、本発明はこれら特定の実施形態に限られると解釈されるべきではない。従って、様々な変更及び修正が、添付の請求項において定義されるような本発明の精神又は範囲から逸脱することなく、当業者によってもたらされ得る。
【図１】
0005653354.tif 000002
【図２】
0005653354.tif 000003
【図３】
0005653354.tif 000004
【図４】
0005653354.tif 000005
【図５】
0005653354.tif 000006