本明細書に開示されるのは、ソフトウェアモジュールとソフトウェアアプリケーションとを動的に更新するため、および、無線接続を介した無線通信機器上での機器ドライバを更新するためのシステムおよび方法である。例えば、本明細書で開示される方法およびシステムは、更新サーバから新たなソフトウェアまたはドライバモジュールを要求し、無線通信データパッケージ内の新たなモジュールを受信することの可能な無線通信機器を可能とする。データパッケージを受信すると、無線機器は、要求されたモジュールをインストールし、必要に応じて、持続性ストレージ内に新たなモジュール用のスペースを作るために、他のモジュールを消去する。必要な場合、無線機器は、また、新たなモジュールを使用するために無線機器を再構成し、また、機器の再起動を開始し得る。
本明細書に開示される別の実施形態は、外部機器を動的に認識し、それら外部機器とインターフェースする無線通信機器および方法を提供する。例えば、本明細書に開示されるような一つの方法は、有線または無線通信リンクを介して、外部機器の存在を認識する無線通信機器を可能とする。認識すると、無線通信機器は、外部機器に関する概要プロファイル情報を取得するために、外部機器をクエリする。次いで、無線通信機器は、無線通信ネットワークにわたって、サーバをクエリし、両機器間の通信を容易にするインターフェースを含む応答を受信する。
この記述を読むと、様々な代替的な実施形態および代替的なアプリケーションにおいて本発明をインプリメントする方法が、当業者には明らかになる。しかしながら、本発明の様々な実施形態が、本明細書に記載されるが、これら実施形態は、例として挙げられているに過ぎず、限定するためのものではないことは、理解されるべきである。このように、この様々な代替的実施形態の詳細な記述は、添付の請求項で述べる本発明の範囲および幅を制限するものと、解釈されるべきではない。
図1は、無線通信ネットワーク10の例を示すハイレベルなブロック図である。この図示された実施形態において、無線通信ネットワーク10は、複数の基地局40および42を介してネットワーク50と通信するように結合された複数の無線通信機器20および30を備える。追加の無線通信機器および基地局も、また、無線通信ネットワーク10の一部として使用され得る。無線通信ネットワーク10は、また、データストレージ領域70に結合される更新モジュールサーバ60を備える。無線通信機器20および30は、基地局40および42と、ネットワーク50とを介して、更新モジュールサーバ60と、通信するように結合される。
無線通信機器20は、無線通信ネットワーク10と通信する能力を有する任意の種類の機器であり得て、ソフトウェアモジュールを実行し得、および/または、置換されるモジュラハードウェアコンポーネントを有し得る。無線通信機器20は、また、持続性ストレージ領域を有することが好ましい。例えば、無線通信機器20は、携帯電話、個人用デジタル端末(「PDA」)、ラップトップコンピュータ、腕時計、または、無線通信用に構成された任意の他の機器であり得る。無線通信機器は、また、「ハンドセット」、「モバイル電話」または「モバイル機器」としても、本明細書では、称され得る。
図示された実施形態において、外部機器22とハンドセット20との間の接続は、直接物理接触24である。外部機器32とハンドセット30との間で、直接無線リンク34またはリモート無線リンク36のような無線リンクを介して、外部機器は、また、ハンドセットとも結合され得る。一実施形態において、直接物理接続24は、ハンドセット20と外部機器22との間のハードワイヤによる物理接続(例えば、シリアルケーブルまたは有線ネットワーク接続)であり得る。代替的に、直接無線接続34は、ローカルネットワークプロトコル、または、ブルートゥース、あるいは、赤外線を使用し得る。外部機器32は、また、基地局42のような基地局を介して機器とリンクするリモート無線接続36を介してハンドセット30にも接続され得る。追加として、外部機器32は、また、インターネットまたはネットワーク50のようなネットワークを介して機器をリンクするリモート無線接続36を介して、ハンドセット30にも接続され得る。
基地局40は、複数の無線通信機器と無線通信するように構成され、その無線通信をネットワーク50にわたって移動する有線通信に変換するトランシーバ(図示せず)を含む。ネットワーク50は、基地局40および42のような基地局間のハンドオフに対するインフラを提供する無線キャリアによって動作するプライベートネットワークであることが好ましい。追加として、ネットワーク50は、様々なアプリケーション、サービス、および、更新モジュールサーバ60のような他のコンピュータベースのサーバ間の通信リンクを提供することが好ましい。
ネットワーク50は、他のネットワーク(図示せず)との接続を繋ぐ役割を果たし得る。幾つか例を挙げると、総合サービスデジタル通信網(「ISDN」)、公衆交換電話網(「PSTN」)、公衆陸上移動網(「PLMN」)、パケット交換公衆データ網サービス(「PSPDN」)およびインターネットのようなネットワークである。
更新モジュールサーバ60は、単一のコンピュータとしてインプリメントされ得るし、あるいは、モバイル機器に動的命令セットと、ソフトウェアおよびハードウェアモジュールとを提供し、モバイル機器から受信された動的命令セットを実行するように論理上構成された複数のサーバとしてインプリメントされ得る。図示された実施形態において、更新モジュールサーバ60は、データストレージ領域70と結合される。このデータストレージ領域70は、複数の実行可能なインターフェースと、サーバ操作コードセットおよびハンドセット操作コードと、サーバ操作コードに対応する実行可能な命令とを収納する。更新モジュールサーバ60をインプリメントし得る汎用のコンピュータの特徴は、図11を参照して、後に記載される。更新モジュールサーバ60の一つの機能は、ハンドセット20、30からの要求を受信し、そのハンドセットに、実行可能なソフトウェアモジュール、取り替えられたハンドセットハードウェア用の機器ドライバ、または、外部機器との通信用の実行可能なインターフェースを提供することによって、これらの要求に応答することである。
図2は、無線通信機器20上の持続性ストレージ240内のデータの表示例を示すブロック図である。このように機能することを可能とする無線通信機器20、30の一般的な特徴は、図10を参照して、後に記載される。図示された実施形態において、オペレーティングシステム100は、持続性ストレージ240内に常駐する。オペレーティングシステム100は、その機器が機能するようにできる基本的実行可能な1つまたは複数のプログラムを備えることが好ましい。オペレーティングシステム100に加えて、アプリケーションデータ110およびユーザインターフェース120は、持続性ストレージ240内に存在する。アプリケーションデータ110は、アプリケーションが機能するために必要とするユーザおよびアプリケーション情報、あるいは、アプリケーションがそのサービスを提供するために使用するユーザおよびアプリケーション情報を備えることが好ましい。
ユーザインターフェース120は、実行可能なユーザインターフェースアプリケーションと、そのアプリケーションによって使用されるユーザインターフェースデータとの双方を備え得る。代替的な実施形態において、ユーザインターフェースアプリケーション部分は、オペレーティングシステムの一部として含まれ得、ユーザインターフェース120は、補助的なユーザデータまたはカスタムデータ、あるいは、ユーザインターフェースアプリケーションまたはユーザによって使用可能な他のデータを含み得る。持続性ストレージ領域240は、追加的に、機器ドライバ130、機器ドライバ132から、機器ドライバnに至るような1つ以上の機器ドライバを備える。これら機器ドライバは、ハンドセットと他の機器との間の通信、あるいは、場合によってはコアハンドセットと内蔵機器との間の通信を容易にする実行可能なアプリケーションであることが好ましい。内蔵機器には、ディスプレイ、キーパッド、スピーカ、マイクまたはイヤホンのようなものがあるが、これらはほんの数例に過ぎない。
追加的に、持続性ストレージ240の一部として示されているのは、アプリケーション140、142、144、146からアプリケーションnに至るような一連のソフトウェアアプリケーションまたはモジュールである。図示のように、多数のアプリケーションが、持続性ストレージ240の一部として常駐する。持続性ストレージ240内に格納され得るアプリケーションの数に対する唯一の制限は、ストレージ240の物理的限界である。
図3aは、例示的な無線通信機器20のデータ240の要素を示すブロック図である。この図示された実施形態において、データ240は、ソフトウェアインターフェース200、ソフトウェアライセンスマネージャ205およびランタイムエンジン230を備える多数のアプリケーション242を有する。図2に示されるようにアプリケーションデータ110内に含まれ得る他のデータ要素244は、サーバ操作コード(「オペコード」)ライブラリ210、ハンドセットオペコードライブラリ220、および、ランタイム命令260を備える。
モジュラソフトウェアインターフェース200は、ユーザの要求を受信し、新たなソフトウェアモジュールおよびアプリケーションをインストールするように構成されることが好ましい。追加的に、モジュラソフトウェアインターフェース200は、ネットワーク起動のソフトウェアモジュールダウンロードおよびソフトウェアアプリケーションダウンロードを受信するように構成されることが好ましい。モジュラソフトウェアインターフェース200は、ユーザ起動のダウンロード用に、ユーザからコマンドを受けるのに適応可能なユーザインターフェースモジュールを備え得る。追加的に、モジュラソフトウェアインターフェース200は、ネットワーク起動のダウンロード用に、ネットワークサーバから通信を受信するのに適応可能な通信モジュールを備え得る。
一実施形態において、モジュラソフトウェアインターフェース200は、特定のソフトウェアモジュールをダウンロードするために、ユーザからコマンドを受信する。モジュラソフトウェアインターフェース200は、ネットワークサーバからダウンロードされるべきソフトウェアモジュールに対する要求を生成するために、ランタイムエンジン230と通信するように構成されることが好ましい。代替的な実施形態において、モジュラソフトウェアインターフェース200は、ネットワークサーバから生成されたコマンドを受信する。モジュラソフトウェアインターフェース200は、そのコマンドを解析し解釈して、どのソフトウェアモジュールをハンドセットがダウンロードおよびインストールすることをネットワークサーバが要求しているのかを決定するように構成されることが好ましい。ネットワークからの要求を検証すると、次いで、モジュラソフトウェアインターフェース200は、そのダウンロードを成し遂げるために、ランタイムエンジン230との通信へと進む。
追加的に、モジュラソフトウェアインターフェース200は、ソフトウェアモジュールがインストールされる持続性ストレージ240内で利用可能なスペースを決定するように構成され得る。例えば、新たなソフトウェアモジュールをインストールする要求を受信すると、モジュラソフトウェアインターフェース200は、ハンドセット上で利用可能なディスクスペース(または、他の持続性ストレージのスペース)の量を決定する。一実施形態において、利用可能なストレージのスペースを決定するために、モジュラソフトウェアインターフェース200は、図2を参照して上記で議論したように、ハンドセットのオペレーティングシステム100をクエリし得る。十分なスペースを利用可能な場合、モジュラソフトウェアインターフェース200は、上述のように、ランタイムエンジン230との通信へと進み得る。
要求されたソフトウェアモジュールをインストールするスペースが、持続性ストレージに十分にない場合、モジュラソフトウェアインターフェース200は、削除され得る持続性ストレージ内のソフトウェアモジュールまたは他のデータを識別するために、ユーザまたはネットワーク50を(要求がどこから生成しているかに依存して)クエリする。代替的に、モジュラソフトウェアインターフェース200は、例えば、オペレーティングシステムをクエリすることによって、あるいは、要求されたソフトウェアモジュールの古いバージョンを識別することによって、どのデータが削除され得るべきかを決定し得る。
追加的に、モジュラソフトウェアインターフェース200は、新たなソフトウェアモジュールに対する十分な利用可能性を提供するために、持続性ストレージ240内の識別されたソフトウェアモジュールまたは他のデータの削除をオペレーティングシステム100に命令するように構成されることが好ましい。持続性ストレージに利用可能なスペースがなく、既に持続性ストレージ内で占有されているデータまたはソフトウェアモジュールを削除しても全くスペースが得られない場合、モジュラソフトウェアインターフェース200は、要求されたソフトウェアモジュールをインストールするのに利用可能なスペースがないことを、ユーザまたはネットワークに知らせ得る。
図3Aを続けると、ハンドセットオペコードライブラリ220は、図1に示す更新モジュールサーバ60によって実行するようにハンドセットが命令され得る各機能または実行可能なコードセグメントを示す操作コードの世界(universe)を含むことが好ましい。有利なことに、ハンドセットオペコードライブラリ220は、実際の実行可能なマシンコード機能またはコードセグメントに対するプレースホルダ(place holder)として機能する操作コードを含む。このように、ハンドセットオペコードライブラリ220は、ハンドセット20、30によって実行され得る各機能全てに対応する全ての利用可能な操作コードのリストを含むことが好ましい。
同様に、サーバオペコードライブラリ210は、各サーバ側機能または実行可能なコードセグメントを示す操作コードの世界を含むことが好ましい。有利なことに、サーバオペコードライブラリ210は、現在の実行可能なマシンコード機能またはコードセグメントに対する操作コードだけを含み得る。この機能またはセグメントは、無線通信機器20には、常駐しない。このように、サーバオペコードライブラリ220は、ハンドセット20、30の代理とする更新モジュールサーバ60によって実行され得る利用可能なサーバ機能それぞれに対する全ての操作コードのリストを含む。好ましい実施形態において、利用可能なサーバ機能の数は、利用可能なハンドセット機能の数を十分に超過し得る。なぜなら、更新モジュールサーバ60は、例えば、携帯電話やPDAのようなモバイル機器上に、典型的に見つかる最小限のリソースによって困ることはないからである。
ランタイムエンジン230は、動的命令セットを処理するように構成されることが好ましい。動的命令セットの一例は、ソフトウェアモジュールをインストールする命令のセットである。他の動的命令セットの例は、新たなハードウェアコンポーネント用の機器ドライバをインストールする命令のセットである。動的命令セットの処理は、実行可能な命令セット中のオペコードの翻訳およびこれら命令セットの実行を含む。例えば、ハンドセットのオペコードセットは、データペイロードと一緒に、更新モジュールサーバ60から受信され得る。オペコードは、次いで、ハンドセットに対する実行可能な命令に翻訳される。動的命令セットの処理は、また、更新モジュールサーバ60に配送するオペコードおよび対応するデータペイロードの編集(compile)も含む。好ましくは、ランタイムエンジン230は、その機器が必要なときのみ稼動し、ハンドセット20、30上のシステムリソース(例えば、メモリ、CPUサイクルなど)の最小量を消費するように、必要に基づくようにして、無線通信機器20、30によって起動され得る。
図12を参照すると、ブロック図は、無線通信機器620およびモジュラハードウェアコンポーネントの例を示す。図示された実施形態において、ハンドセット620は、画面680とキーパッド682を含む複数のハードウェアモジュールを備える。追加のハードウェアモジュールも、また、典型的には、ハンドセット620のようなハンドセット内に含まれ得、例えば、ラジオチップセットを含み得る。ハードウェアモジュールは、ハンドセット内の電気通信を可能にするハンドセット620のコンポーネントである。キャスティング(casting)のような通信能力のない不活発なコンポーネントは、ハードウェアモジュールであるとは考えない。
図示された実施形態において、表示画面680は、新たな表示画面690と相互に交換可能である。例えば、画面680は、白黒表示に限定され得るが、画面690はカラー表示可能であり得る。同様に、キーパッド682は、新たなキーパッド692と相互に交換可能である。例えば、キーパッド692は、キーを光らせる能力を有するが、キーパッド682は、この能力を有し得ない。
図3Bは、他の無線通信機器20の例のデータ240の要素を示すブロック図である。図示された実施形態において、データ240は、モジュラハードウェア検出器202およびランタイムエンジン230を備える多数のアプリケーション242を有する。図3Aに示されるようなアプリケーションデータ110に含まれ得る他のデータ要素244は、サーバ操作コード(「オペコード」)ライブラリ210、ハンドセットオペコードライブラリ220、および、ランタイム命令260を備える。
モジュラハードウェア検出器202は、新たなハードウェアモジュールが、以前のハードウェアモジュールと交換されたときを決定するように構成されることが好ましい。一実施形態において、モジュラハードウェア検出器202は、新たなハードウェアモジュールの存在を検出してパワーアップすると、機能する。代替的に、モジュラハードウェア検出器202は、パワーオンモードの間に動作し得る。それは、「ホット」であった任意の新たなハードウェアが、ハンドセット20がオンである間に、交換(swap)された、あるいは、交換されなくとも置換(replace)されたことを検出するためである。モジュラハードウェア検出器202は、検出機能を実行するために、電気機械コンポーネントとソフトウェアコンポーネントとの組み合わせとしてインプリメントされ得、新たに検出されたハードウェアモジュールのランタイムエンジンを知らせるために、ランタイムエンジン230と通信中であることが好ましい。
追加的に、モジュラハードウェア検出器202は、新たな機器ドライバがインストールされるべき持続性ストレージ240内で利用可能なスペースを決定するように構成され得る。例えば、新たなハードウェアモジュールを検出すると、モジュラハードウェア検出器202は、現在の機器ドライバ(例えば、図2に示す機器ドライバN)に対して使用されるストレージのスペース量、および、新たな機器ドライバに必要とされるストレージのスペース量を決定することが好ましい。一実施形態において、現在の機器ドライバに対して使用されるストレージのスペースを決定するために、モジュラハードウェア検出器200は、オペレーティングシステム100をクエリし得る。追加的に、新たな機器ドライバに必要とされるストレージのスペース量を決定するために、モジュラハードウェア検出器202は、図1に示すような更新サーバ60を、その情報を取得するためのランタイムエンジン230を介して、クエリし得る。
現在の機器ドライバおよび新たな機器ドライバが、同じサイズである場合、あるいは、新たな機器ドライバに要するストレージのスペースが、現在の機器ドライバに要するストレージのスペースよりも小さい場合、新たな機器ドライバは、現在の機器ドライバが位置される持続性ストレージ内で同じ場所にインストールされ得る。新たな機器ドライバに要するストレージのスペースが、現在の機器ドライバに要するストレージのスペースよりも大きい場合、モジュラハードウェア検出器202は、モジュラハードウェア検出器200によって機器ドライバストレージに対して、新たに割り当てられる持続性ストレージ領域240の他の部分に、新たな機器ドライバをインストールできることが好ましい。あるいは、モジュラハードウェア検出器202はまた、新たな機器ドライバのためのスペースを作るために削除することができる持続性ストレージ内のデータを識別するために、ユーザにクエリする。
モジュラハードウェア検出器202は、新たな機器ドライバが成功裏にインストールされた後、現在の機器ドライバを削除するように、オペレーティングシステム100を命令するように構成されることが好ましい。現在の機器は、新たな機器ドライバに対するインストール処理中に、持続性または揮発性ストレージ内にバックアップされることが好ましい。
ここで、図17Aを参照すると、無線通信機器80と外部機器82との間の直接物理接続84の例を示すブロック図が示される。直接物理接続84は、外部機器82とハンドセット80との双方に接続する標準ケーブルまたは専用(proprietary)ケーブルを介して行われ得る。代替的に、直接物理接続84は、ハンドセット80と外部機器との結合によって、実際のケーブルが使用されずに、結果として結合された機器が統合ユニットとなるようにすることで達成され得る。
図17Bは、無線通信機器86と外部機器88との間の直接無線接続85の例を示すブロック図である。直接無線接続85は、ブルートゥース、赤外線、あるいは、無線通信の802.11規格または802.15規格のファミリのような様々な無線リンクを介して行われ得る。
図17Cは、無線通信機器90と外部機器98との間のリモート無線接続の例を示すブロック図である。リモート無線接続は、外部機器98と基地局94との間のリンク96と、また、ハンドセット90と基地局94との間のリンク92とを備え得る。また、隙間ネットワークおよび基地局(図示せず)もあり得る。リモート無線接続は、従来の無線通信プロトコル、または、無線通信の802.11規格または802.15規格のファミリのようなリモート無線ネットワーク化プロトコルを用いて確立され得る。
図3Cは、例示的な無線通信機器20、30のデータ240のコンポーネントを示すブロック図である。図示された実施形態において、データ240は、外部機器検出器204およびランタイムエンジン230を備える多数のアプリケーション242を有する。図2に示されるようなアプリケーションデータ110内に含まれ得る他のデータ要素244は、サーバ操作コード(「オペコード」)ライブラリ210、ハンドセットオペコードライブラリ220、および、ランタイム命令260を備える。
外部機器検出器204は、外部機器がハンドセット20、30に物理的に接続されたとき、あるいは、外部機器が無線リンクを介してハンドセット20、30に接続を試みているときを決定するように構成されることが好ましい。追加的に、外部機器検出器204は、外部機器が、接続がなされ得るほどハンドセットの近くにあるかどうかを決定するために、パイロット信号または同報通信無線信号を検出可能であることが好ましい。外部機器検出器204は、検出機能を実行するために、電気機械コンポーネントとソフトウェアコンポーネントとの組み合わせとして、インプリメントされ得る。
図3A、図3Bおよび図3Cは、モジュラソフトウェアインターフェース200、モジュラハードウェア検出器202、および、外部機器検出器204を3つの別々の例として示すが、インターフェース200、ハードウェア検出器202、および、外部機器検出器は、任意の組み合わせで、通信機器20の持続性ストレージ領域240内に常駐し得ることは、理解されるべきである。
図3Dは、操作コードライブラリと、対応するランタイム命令セット260との例を示すブロック図である。ハンドセットオペコードライブラリ220およびランタイム命令セット260は、ハンドセット20、30のデータストレージ領域240内に収納されることが好ましい。一実施形態において、ランタイム命令セット260内で実行可能な命令は、ハンドセットのオペコードライブラリ220に含まれるオペコードと、一対一の関係で対応する。代替的に、ハンドセットオペコードライブラリ220内の単一のオペコードは、ランタイム命令260内の多数の実行可能な命令のシーケンスに対応し得る。
図3Eは、ランタイム命令260のセットの例を示すブロック図である。図示された実施形態において、任意の数の実行可能な命令が、命令1から命令nまでのランタイム命令260の中に含まれ得る。最適には、多数の機能が、ランタイム命令260の中で利用可能であり、それでも、ハンドセット20、30で、ほとんどリソース(例えば、持続メモリ)を消費しない。
図4は、ユーザ起動ソフトウェアモジュールダウンロードに対するプロセスの例を示す流れ図である。まず、ステップ300で、ハンドセットは、ユーザからのアプリケーション要求を受信する。要求は、例えば、モジュラソフトウェアインターフェース200によって、受信され得る。次いで、ステップ302で、ランタイムエンジンが起動される。一度ランタイムエンジンが稼動すると、エンジンは、ステップ304に示すように、取られる必要のあるアクションに従って、サーバのオペコードセットを編集し得る。この場合、編集されるべきサーバのオペコードセットは、要求されたソフトウェアアプリケーションまたはモジュールをダウンロードするためであることが好ましい。サーバのオペコードセットは、無線機器上で稼動するバックグラウンドプロセスから取得され得る。代替的に、サーバのオペコードセットは、ユーザの指揮下にある無線機器上で稼働中のプロセスから取得され得る。サーバのオペコードセットが編集された結果、前述したように、サーバは、要求されたソフトウェアモジュールに応答する。
例えば、無線機器は、電話帳アプリケーションに拡張モジュールをダウンロードするようにとの命令をユーザから受信する。それは、以前の100の連絡先よりも、むしろ合計500の連絡先が維持管理され得るようにする。ユーザは、ダウンロードされるべき新たなソフトウェアモジュールの名前または識別を提供する。次いで、ハンドセットが連絡先の総数を増加し得るように、ハンドセットに適切なソフトウェアモジュールを提供するために、モジュラソフトウェアサーバを命令するサーバオペコードセットは編集される。このような場合、その結果は、ステップ304で示すように、ランタイムエンジンによって生成されたサーバのオペコードセットである。
一度サーバオペコードセットが生成されたら、ランタイムエンジンは、サーバのオペコードセットとともに配信されるデータペイロードロード内の名前または識別情報を含む。例えば、ランタイムエンジンは、持続性メモリまたは揮発性メモリからアプリケーションまたはソフトウェアモジュールを取り出し得るか、あるいは、例えばモジュラソフトウェアインターフェース200を介して、必要なデータを戻す命令を実行し得る。一度データが取得されたら、ランタイムエンジン230は、次いで、ステップ306に示すように、サーバのオペコードセット内に、データを挿入する。これを達成する一つの単純な方法は、単一のデータパケット内のサーバのオペコードセットにデータペイロードを添付することである。
一度データペイロードがサーバのオペコードセットと組み合わされたら、ステップ308に示すように、ランタイムエンジンは、対応するデータペイロードとともに、サーバオペコードセットをサーバに送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ310に示すように、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして、終了され得る。
図5は、無線通信機器上の常駐ソフトウェアモジュールを起動するプロセスの例を示す流れ図である。図5に示すプロセスは、オペコードセットを使用して、または、何らかの他の無線データ通信手段を使用して、実行され得る。最初に、ステップ320で、ハンドセットは、ネットワークライセンスサーバからライセンスを要求する。図3Aに示すソフトウェアライセンスマネージャ205は、このステップを起動することが好ましい。ネットワークライセンスサーバは、更新モジュールサーバ60と同じサーバであり得るか、あるいは、異なる別個のサーバであり得る。一度要求が送信されたら、ハンドセット20、30は、次いで、ステップ322に示すように、ネットワークライセンスサーバから支払い要件を受信する。それに応答して、ハンドセットは、ステップ324に示すように、ネットワークライセンスサーバに支払い明細を提供する。
一実施形態において、ハンドセットは、支払い明細を自動的に提供するように構成され得る。代替的に、ハンドセットは、ユーザからこの情報を要求するように構成され得る。それは、ユーザが、要求されたライセンスに対し支払いする意思があることを保証するためである。支払い明細を送信した後に、ステップ326で、ライセンスサーバが支払い明細を受信したことの確認通知をハンドセットは受信する。一実施形態において、この確認通知は、支払いが処理されたことの確認としても機能し得る。
一度確認通知が受信されたら、ステップ328で、ハンドセットは、次いで、ライセンスサーバからライセンスまたは起動キーを受信する。起動キーは、ハンドセット上でアプリケーションを使用許可するように構成されることが好ましい。一度キーが受信されたら、次いで、ステップ330に示すように、アプリケーションは起動され得る。
図6は、ネットワーク起動のソフトウェアモジュールダウンロードに対するプロセスの例を示す流れ図である。最初に、ステップ336で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線通信リンク(例えば、無線通信ネットワークとのリンク)を介して、受信され得る。オペコードは、無線で送信されるデータの量を最小化するために、最適化されることが好ましい。追加として、データペイロードは、ハンドセットによって受信されるオペコードセットとともに含まれ得る。図示された実施形態において、ハンドセットのオペコードセットは、ネットワーク更新モジュールサーバ60から受信される。
ステップ338で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。代替的に、ハンドセットは、最初に、ハンドセットのオペコードセットを送信するネットワークサーバを認証(authenticate)し得る。ステップ340に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ342で、データペイロードを抽出する。データペイロードが存在しない場合、このステップは省略され得るが、しかしながら、ネットワーク更新モジュールサーバ60は、最初の送信で実行可能なソフトウェアアプリケーションを含み得る。代替的に、ハンドセットのオペコードセットは、ハンドセットに命令して、サーバからソフトウェアモジュールを要求し得る。データペイロードが存在する場合、その結果得られたデータは、後に使用するために、揮発性メモリの利用可能な部分に格納され得る。
次いで、ステップ344で、ランタイムエンジンは、ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令を取得する。これらの命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。
一度ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ステップ346に示すように、ランタイムエンジンは、その命令を実行する。命令が実行されるとき、操作(またはインストール)されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、あるいは、追加的に、操作されるべき任意の必要なデータは、実行された命令の結果として、取得され得る。
例えば、データペイロードは、ネットワークがハンドセットをインストールするために要求したソフトウェアアプリケーションを備え得る。追加的に、ハンドセットのオペコードセット内の1つ以上のオペコードは、ハンドセット上の持続性メモリ内のデータペイロードを格納する1つ以上の実行可能な命令に対応することが好ましい。本例において、一度ソフトウェアモジュールを備えるデータペイロードが持続性メモリの中に格納されると、ハンドセットは、その後、ユーザによって、あるいは、代替的に、リモートネットワークコマンドによって、そのアプリケーションが使用されることを許可し得る。代替的に、データペイロードは、旧式のソフトウェアアプリケーションまたはモジュール、あるいは、新たなソフトウェアモジュール用のスペースを作るために削除用に選択されたものを含む持続性メモリの一部に置換され得る。このように、ハンドセットのオペコードセットおよびデータペイロードは、ハンドセット用に新たなソフトウェアモジュールをインストールするために、無線機器上で動作する。追加のオペコードおよび命令も、必要に応じて、新たなモジュールまたはアプリケーションが一度インストールされたら、これを構成するために使用され得る。
一度命令セットがランタイムエンジンによってその全てを実行されると、ランタイムエンジンは終了され得、次いで、ステップ348に示すように、アプリケーションが実行され得る。特定の例示的な例によって、ネットワーク起動のダウンロードが使用され得る方法を説明する。ハンドセットが、行方不明になった車両または盗難された車両の中にある場合、ハンドセットは、ネットワークによってコンタクトされ得、GPSモジュールをダウンロードするように命令され得る(ハンドセットがGPS対応ハードウェアを有すると仮定する)。一度GPSモジュールがダウンロードされ、インストールされると、GPSモジュールは、ネットワークに位置情報を報告し始め得る。次いで、そのネットワークは、車両の追跡を円滑にするために、車両の所有者または当局に提供され得る。有利なことに、ハンドセットの近くにいる人からの知見がなくとも、これは全て達成され得る。
図7は、無線通信機器上にソフトウェアモジュールをインストールするためのプロセスの例を示す流れ図である。まず、ステップ350で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線通信リンク(例えば、無線通信ネットワークとのリンク)を介して受信され得る。オペコードは、無線で送信されるデータ量を最小化するために、最適化されることが好ましい。追加的に、データペイロードは、ハンドセットによって受信されたオペコードセットに含まれ得る。図示された実施形態において、ハンドセットのオペコードセットは、ネットワークソフトウェアモジュールサーバから受信される。
ステップ352で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。代替的に、ハンドセットは、まず、ハンドセットのオペコードセットを送信するネットワークサーバを認証する。ステップ354に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ356で、データペイロードを抽出する。データのペイロードが存在しない場合、このステップは、このステップは、省略され得る。しかしながら、ネットワークソフトウェアモジュールサーバは、その最初の送信において、実行可能なソフトウェアアプリケーションを含み得る。代替的に、ハンドセットのオペコードセットは、サーバからのソフトウェアモジュールを要求するように、ハンドセットに命令し得る。データペイロードが存在する場合、その結果のデータは、後の使用のために、揮発性メモリの利用可能な部分に格納され得る。
次いで、ステップ358で、ランタイムエンジンは、ハンドセットのオペコードセット内にあるオペコードに対応する実行可能な命令を取得する。このような命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。一度ハンドセットオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ランタイムエンジンは、ステップ360に示すように、命令を実行する。命令が実行されるとき、操作(またはインストール)されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、または、追加的に、操作されるべき任意の必要なデータは、実行される命令の結果として、取得され得る。一度命令セットがランタイムエンジンによってその全てを実行されると、ステップ362で、ランタイムエンジンは終了され得、次いで、ステップ364に示すように、アプリケーションは、使用に関して利用可能である。
図8は、無線通信機器上のソフトウェアモジュールを終了するためのプロセスの例を示す流れ図である。最初に、ステップ370で、ハンドセットは、満了通知を受信する。満了通知は、無線通信ネットワークを介して受信され得、そのネットワークを介してハンドセットと通信するように結合されたライセンスサーバ(licensing server)から生成する。一実施形態において、満了通知は、ソフトウェアモジュールに対する試用期間とリンクされ得るか、あるいは、モジュールに対する年間ライセンス料とリンクされ得る。
一度満了通知がハンドセットによって受信されると、ステップ372で、そのハンドセットは、自らが自動的にライセンスを更新するように、あるいは、モジュールに対する最初の支払いを行うように、命令されたかどうかを判断する。ハンドセットは、自らが許可されていない、あるいは、自動更新または支払いを命令されていないと判断した場合、次いで、ステップ374で、ハンドセットは、ソフトウェアモジュールに対する満了通知をユーザに通知する。
その通知は、ハンドセットのディスプレイ上にメッセージを表示することによって、あるいは、後で再度見たとき用に、ハンドセット上のメモリ内に格納されているテキストメッセージを生成することによって、なされ得る。通知は、ディスプレイ上のメッセージまたは点滅光のように、視覚的でもあり得るし、あるいは、また、事前に録音されたメッセージまたはトーンのように聴覚的でもあり得る。代替的に、点滅光または聴覚的音声トーン(あるいは、ハンドセットの振動)は、メッセージがユーザに利用可能であることを示し得るし、また、そのメッセージが満了通知の詳細を提供し得る。追加的に、ハンドセットは、ネットワーク(または、そのプロセスを起動し得るネットワーク)にメッセージを送信し得る。それは、満了通知をユーザに知らせるユーザの音声メールボックス内に、事前に録音された音声メッセージが残されるようにするようにである。当業者によって、理解されるように、様々な他の通知方法も、また使用され得る。
一度ユーザが満了通知を知らされると、ステップ376で、ハンドセットは、ユーザから命令を受信する。この命令は、ステップ378で、そのライセンスが更新されるべきかどうか(あるいは、最初の支払いがなされるべきかどうか)を判断するために、ハンドセットによって検討される。ユーザからの命令が、更新(または、支払い)しないことの場合、ステップ380で、ハンドセットは、ソフトウェアモジュールをの動作を停止する。一実施形態において、ハンドセットは、停止期間前のライセンス期間または評価期間の最後まで、待機し得る。追加的に、ステップ378で判断されたように、何ら命令がユーザから受信されないとき、命令なきことは、否定的な応答として解釈され得、ソフトウェアモジュールは、ステップ380で動作停止され得る。
ステップ378で、ハンドセットがユーザからの命令が、更新または支払いと判断された場合、ハンドセットは、ステップ382に示すように、ネットワークまたはライセンスサーバに更新命令(あるいは、初期の支払い命令)を送信する。追加的に、ステップ372で、ハンドセットが、自動更新または支払いを許可されたと判断された場合、ステップ382で、ハンドセットは、また、適切な命令を送信する。更新命令の受信側(例えば、ライセンスサーバ)で、支払いは、クレジットカードへの課金によって、あるいは、ハンドセットサービスに対する顧客への請求書に一行項目を追加することによって、なされ得る。
支払いまたは更新に対する命令に応答して、ステップ384に示すように、ハンドセットは、ライセンスまたはキーを受信し得る。そのライセンスまたはキーは、ソフトウェアに動作の継続またはさらなる機能の許可の命令をするように使用され得る。ステップ386で、ユーザがその後、新たなライセンス期間に対して、ソフトウェアモジュールまたはアプリケーションを使用し得るように、ライセンスまたはキーを用いてアプリケーションが起動される。
図9は、無線通信機器上のソフトウェアモジュールの使用に対する支払いをするプロセスの例を示す流れ図である。最初に、ステップ390で、アプリケーションは、そのアプリケーション自身に対する、あるいは、ハンドセット上の他のアプリケーションに対する使用データを収集し得る。このデータは、ハンドセット上の持続性メモリ内に格納され得ることが好ましい。次いで、ステップ392で、ランタイムエンジンが起動される。一度ランタイムエンジンが稼動すると、ステップ394で示すように、エンジンは、サーバオペコードのセットを編集し得る。サーバのオペコードセットが編集されると、その結果、サーバは、対応するデータペイロードに含まれる使用データを処理することが好ましい。このデータペイロードは、ステップ396で、オペコードセット内に挿入される(あるいは、オペコードセットに添付される)。
一度データペイロードがサーバのオペコードセットと組み合わされると、ステップ398に示すように、ランタイムエンジンは、対応するデータペイロードとともに、サーバのオペコードセットを、サーバに送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ399に示すように、ハンドセットは、サーバから請求明細を受信することが好ましい。請求明細は、サーバのオペコードセットで提供された使用データと関連することが好ましい。最後に、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして終了され得る。
図13は、新たなハードウェアコンポーネントから概要情報を取得するプロセスの例を示す流れ図である。最初に、ステップ700で、ハンドセットは、パワーアップする。パワーアップすると、ハンドセットは、様々なハードウェアコンポーネントを調査することが好ましい。例えば、その状態を決定するために、各コンポーネントと通信することによって、この調査をする。代替的に、ハンドセットが、既に動作可能である場合、ハンドセットは、自らの主導によって(例えば、事前に予定されたイベントにより)、あるいは、外部の命令(例えば、ネットワークまたはユーザから受信された)によって、同じ調査プロセスを起動し得る。これは、様々なハードウェアコンポーネントの状態を決定するためである。
次いで、ステップ702で、ハンドセットは、新たなハードウェアコンポーネントを検出する。新たなコンポーネントは、新たな機能コンポーネントである必要はないが、以前のハードウェアモジュール(例えば、新たな表示画面)の取り替えであり得る。新たなハードウェアコンポーネントを検出すると、ハンドセットは、次いで、ステップ704で、コンポーネントの種類が何であるか(例えば、画面、キーパッド、ラジオチップセットなど)を判断する。ハンドセットは、次いで、ステップ706で、新たなコンポーネントに関する情報を取得するために、新たなコンポーネントをクエリする。この新たなコンポーネント情報は、ステップ708で、ハンドセットによって受信され、好ましくは、持続性メモリまたは揮発性メモリに格納される。一実施形態において、新たなハードウェアモジュール情報は、新たなハードウェアモジュールを一意的に識別するための識別子を含む。
図14は、リモートサーバから新たなハードウェアコンポーネント用の機器ドライバを要求するプロセスの例を示す流れ図である。最初に、ステップ720で、ランタイムエンジンが起動される。一度ランタイムエンジンが稼動すると、ステップ722に示すように、エンジンは、サーバのオペコードセットを編集し得る。サーバのオペコードセットは、無線機器20、30上で稼動中のバックグラウンドプロセスから取得され得る。代替的に、サーバのオペコードセットは、ユーザの指揮下にある無線機器上を稼動するプロセスから取得され得る。サーバのオペコードセットが編集されると、その結果、サーバは、実行可能な機器ドライバに応答して、ハンドセットが新たなハードウェアモジュールと通信でき、その機能を十分に利用できるようになることが好ましい。
例えば、無線機器は、新たなハードウェアモジュールがインストールされたことを検出する。新たなハードウェアモジュールは、クエリされ、概要プロファイル情報が取得される。サーバのオペコードセットは、サーバに命令するよう編集される。それは、ハンドセットが新たなハードウェアモジュールと通信し得るように、サーバが、ハンドセットに、新たなハードウェアモジュール用に実行可能な機器ドライバを提供するようにという命令である。このような場合、ステップ722に示すように、その結果は、ランタイムエンジンによって生成されたサーバのオペコードセットである。
一度サーバオペコードセットが生成されると、ランタイムエンジンは、サーバのオペコードセットに対応するデータペイロード内の新たなハードウェアモジュールに対する情報を含む。例えば、ランタイムエンジンは、持続性メモリまたは揮発性メモリからハードウェアモジュール情報を取り出し得るか、あるいは、必要とされるデータを返す命令を実行し得る。一度データが取得されると、ステップ724に示すように、ランタイムエンジンは、次いで、新たなハードウェアモジュール情報を、サーバオペコードセット内に挿入する。これを実行する一つの簡単な方法は、単一のデータパケット内のサーバのオペコードセットにデータペイロードを添付することである。
一度データペイロードがサーバのオペコードセットと組み合わされると、ステップ726に示すように、ランタイムエンジンは、サーバに、対応するデータペイロードとともに、サーバオペコードセットを送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ728に示すように、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして終了され得る。
図15は、無線通信機器上の新たなハードウェアコンポーネント用の機器ドライバをインストールするプロセスの例を示す流れ図である。最初に、ステップ730で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線通信リンク(例えば、無線通信ネットワークを用いたリンク)を介して受信され得る。オペコードは、無線で送信されたデータの量を最小化するために、最適化されることが好ましい。追加的に、データペイロードは、ハンドセットによって受信されるオペコードのセットとともに含まれ得る。
ステップ732で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。ステップ734に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ736で、データペイロードを抽出する。データペイロードは、後の使用のために、揮発性メモリで利用可能な部分に格納されることが好ましい。次いで、ランタイムエンジンは、ステップ738に示すように、ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令を取得する。これら命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。
一度ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ステップ740に示すように、ランタイムエンジンは、命令を実行する。命令が実行されているとき、操作されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、あるいは、追加的に、操作されるべき任意の必要なデータは、実行された命令の結果として、取得され得る。命令セットを実行した結果、新たなハードウェアモジュール用の機器ドライバが、ハンドセット上にインストールされることが好ましい。
例えば、データペイロードは、ハンドセットが新たなハードウェアモジュールと通信するのに必要とされる機器ドライバを備える。追加的に、ハンドセットのオペコードセット内の1つ以上のオペコードは、ハンドセット上の持続性メモリ内のデータペイロードを格納するための1つ以上の実行可能な命令に対応することが好ましい。本例において、一度機器ドライバを備えるデータペイロードが持続性メモリ内に格納されると、ハンドセットは、その後、機器ドライバを使用して、新たなハードウェアモジュールと通信し得る。この機器ドライバは、新たなハードウェアモジュールの機能性の利点をフルに活かすように構成されることが、好ましい。
代替的に、データペイロードは、置換されたハードウェアコンポーネント用の旧式機器ドライバを含む持続性メモリの一部を置換し得る。このように、新たなハードウェアモジュール用の新たな機器ドライバをインストールするために、ハンドセットのオペコードセットおよびデータペイロードは、無線機器上で動作する。追加のオペコードおよび命令は、新たな機器ドライバが一度インストールされると、新たな機器ドライバまたはハンドセットの他の局面を構成するためにも使用され得る。
一度ランタイムエンジンによって命令セットはその全てを実行されると、ステップ742に示すように、ランタイムエンジンは、終了され得る。有利なことに、ランタイムエンジンは、自身が必要なときのみ稼動するように、起動および終了され得る。このため、無線機器上のシステムリソースをセーブする。例えば、揮発性メモリのスペース、CPUサイクルおよび電池寿命などをセーブし得る。一度新たなハードウェアモジュール用の機器ドライバがインストールされ、使用するために構成されると、ステップ746に示すように、ハンドセットは、通常の動作の際に、新たなハードウェアモジュールを使用し始め得る。
図16は、無線通信機器上の新たなハードウェアコンポーネントを構成するプロセスの例を示す流れ図である。最初に、ステップ750で、セットアップ要求を新たなハードウェアモジュールに送信するために、ハンドセットは、新たな機器ドライバを使用する。次いで、ステップ752で、ハンドセットは、新たなハードウェアモジュールから応答を受信する。一実施形態において、応答は、ハードウェアモジュールに関する、より包括的なプロファイル情報を備え得る。その情報は、機器の動作を細かくチューニングするために、機器ドライバによって解釈され得る。例えば、その応答は、ハードウェアコンポーネントまたはその通信能力に関する追加情報(例えば、そのインターフェースバージョンまたは他の情報)を、機器ドライバに提供し得る。それは、機器ドライバと新たなハードウェアモジュールとの間の通信をより効率的に行うためである。
代替的に、応答は、ステップ754で判断されるように、新たなハードウェアモジュールと通信しようとする試みが不成功であるという命令であり得る。セットアップ要求が、セットアップが不成功であったことを示す応答を受信した場合、ハンドセットは、ステップ750に戻り、別のセットアップ要求を送信する。一実施形態において、正しくフォーマットされた要求が、新たなハードウェアコンポーネントに提供されるまで、ハンドセットは、所定の数(例えば、N個)のセットアップ要求を繰り返し得る。例えば、様々なセットアップは、インターフェースの異なるバージョン、または、機器ドライバ用の異なる通信モードに適合し得る。
反復プロセスの間、ずっと機能するために、機器ドライバと新たなハードウェアモジュールに対する同期化問題があり得る。それゆえ、成功という応答を受信する特定のセットアップ要求は、機器ドライバに、新たなハードウェアモジュールにインストールされたファームウェアのバージョンに関する重要な情報、新たなハードウェアモジュールの能力、および、新たなハードウェアモジュールに関する他の情報を、有利なように提供し得る。一度、ステップ754で判断されたように、成功という応答を新たなハードウェアモジュールから受信すると、ステップ756に示すように、ハンドセットは、通常の動作の際に、新たなハードウェアモジュールの使用へと進む。成功という応答が受信されなかった場合、N個のセットアップ要求が受信され、古い機器ドライバが回復され得る。有利なことに、下位互換性のある機器は、古い機器ドライバを介して新たな機能性または改善された機能性は利用可能でないこともあるが、古い機器ドライバで動作する。
外部機器から概要情報を取得するプロセスの例を示す流れ図が、本発明の別の実施形態に対し、図18に示される。最初に、ステップ800で、ハンドセットは、外部機器からの接続を検出する。接続は、有線リンクまたは無線リンクによって検出され得る。接続を検出すると、ステップ802に示すように、ハンドセットは、その接続がユーザによって開始されたかどうかを判断する。例えば、新たな機器が接続されているハンドセットを命令するために、ユーザは、一連のキーを押し得るか、あるいは、音声コマンドを発し得る。一実施形態において、接続がユーザによって起動されたら、概要機器情報がユーザから直接ハンドセットに提供される。このような実施形態において、次いで、ステップ804で、ハンドセットは、概要機器情報を格納する。
代替的に、検出がユーザによって起動されなかった場合、次いで、ステップ806に示すように、ハンドセットは、外部機器を求めてクエリを策定する。クエリは、有利なように、標準プロトコルに準じ得るか、あるいは、専用プロトコルであり得る。一度クエリが策定されると、ステップ808で、ハンドセットは、外部機器にクエリを送信する。ステップ810で、ハンドセットは、有効な応答が外部機器から受信されたかどうかを判断する。全く応答のない場合、または、応答が無効な場合、ハンドセットは、ステップ806に戻り得、クエリを再策定し、外部機器の再度のクエリへと進む。有利なことに、ハンドセットは、有効な応答を受信するまで、様々な既知のクエリフォーマットおよびプロトコルを繰り返し得る。一度有効な応答が受信されると、好ましくは、外部機器に関する概要プロファイル情報を含む応答が受信されると、ステップ304に示すように、ハンドセットは、概要プロファイル情報を格納する。
図19は、リモートサーバからインターフェースソフトウェアを要求するプロセスの例を示す流れ図である。最初に、ステップ820で、ランタイムエンジンが起動する。一度ランタイムエンジンが稼動すると、エンジンは、ステップ822に示すように、サーバのオペコードセットを編集し得る。サーバのオペコードセットは、無線機器上で稼動するバックグラウンドプロセスから取得され得る。代替的に、サーバのオペコードセットは、ユーザの指揮下にある無線機器上を稼動するプロセスから取得され得る。サーバオペコードのセットが編集されると、その結果、サーバは、ハンドセットに接続された特定の外部機器に対する実行可能なインターフェースに応答することが好ましい。
例えば、無線機器は、外部機器からの接続を検出する。外部機器は、クエリされ、概要プロファイル情報が取得される。サーバのオペコードセットは、サーバがハンドセットに、外部機器に対する実行可能なインターフェースを提供する命令を編集させる。これは、ハンドセットが外部機器と通信し得るようにするためである。このような場合、その結果は、ステップ822に示すように、ランタイムエンジンによって生成されたサーバのオペコードセットである。
一度サーバのオペコードセットが生成されたら、ランタイムエンジンは、サーバのオペコードセットに対応するデータペイロード内において、外部機器に対する概要情報を含む。例えば、ランタイムエンジンは、概要プロファイルデータを持続性メモリまたは揮発性メモリから取り出し得るか、あるいは、必要とされるデータを戻す命令を実行し得る。一度データが取得されたら、ランタイムエンジンは、ステップ824に示すように、次いで、サーバのオペコードセット内にデータを挿入する。これを達成する一つの単純な方法は、単一のデータパケット内のサーバのオペコードセットにデータペイロードを添付することである。
一度データペイロードがサーバのオペコードセットと組み合わされたら、ステップ826に示すように、ランタイムエンジンは、対応するデータペイロードとともに、サーバオペコードセットをサーバに送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ828に示すように、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして、終了され得る。
図20は、無線通信機器上のインターフェースソフトウェアをインストールするプロセスの例を示す流れ図である。最初に、ステップ830で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線機器通信リンク(例えば、無線通信ネットワークを有するリンク)を介して、受信され得る。オペコードは、無線で送信されるデータ量を最小化するために、最適化されることが好ましい。追加的に、データペイロードは、ハンドセットによって受信されるオペコードセットとともに含まれ得る。
ステップ832で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。ステップ834に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ836で、データペイロードを抽出する。データペイロードが存在しない場合、このステップは省略され得る。データペイロードが存在する場合、その結果得られたデータは、後の使用のために、揮発性メモリで利用可能な部分に格納され得る。次いで、ランタイムエンジンは、ステップ838に示すように、ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令を取得する。これら命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。
一度ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ステップ840に示すように、ランタイムエンジンは、命令を実行する。命令が実行されているとき、操作されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、あるいは、追加的に、操作されるべき任意の必要なデータは、実行された命令の結果として、取得され得る。
例えば、データペイロードは、外部機器と通信するために、ハンドセットによって必要とされるインターフェースを備え得る。追加的に、ハンドセットのオペコードセット内の1つ以上のオペコードは、ハンドセット上の持続性メモリ内のデータペイロードを格納するための1つ以上の実行可能な命令に対応することが好ましい。本例において、一度インターフェースを備えるデータペイロードが持続性メモリ内に格納されると、ハンドセットは、その後、実行可能なインターフェースを使用して、機器と通信し得る。代替的に、データペイロードは、特定の外部機器に対する旧式のインターフェースを含む持続性メモリの一部と置換し得る。こうして、ハンドセットのオペコードセットおよびデータペイロードは、外部機器に対する新たなインターフェースをインストールするように、無線機器上で動作する。必要に応じて、追加のオペコードおよび命令も、また、新たなインターフェースが一度インストールされたら、それを構成するように使用され得る。
一度命令のセットがランタイムエンジンによってその全体を実行されると、ステップ842に示すように、ランタイムエンジンは終了され得る。有利なことに、ランタイムエンジンは、必要なときのみ稼動するように、起動および終了され得る。これによって、無線機器上のシステムリソースをセーブする。例えば、揮発性メモリのスペースおよびCPUサイクルをセーブし得る。一度外部機器に対するインターフェースがインストールされ、使用するために構成されると、ステップ846に示すように、ハンドセットは、外部機器と通信を開始し得る。
図21は、外部機器を初期化するプロセスの例を示す流れ図である。最初に、ステップ850で、ハンドセットは、セットアップ要求を外部機器に送信するために、新たなインターフェースを使用する。次に、ステップ852で、ハンドセットは、外部機器からの応答を受信する。一実施形態において、応答は、機器に関する、さらに包括的なプロファイル情報を備え得る。例えば、その応答は、機器間の通信をより効率的にするインターフェースバージョンまたは他の情報のような通信インターフェースに関連する追加情報をハンドセットに提供し得る。
代替的に、応答は、ステップ854で判断されたような外部機器を初期化する試みが不成功であったことを示すものであり得る。セットアップ要求が、セットアップの不成功を示す応答を受信すると、ハンドセットは、ステップ850に戻り、他のセットアップ要求を送信する。一実施形態において、ハンドセットは、正しくフォーマットされた要求が外部機器に提供されるまで、様々なセットアップ要求を介して、繰り返し得る。例えば、様々なセットアップ要求は、インターフェースの異なるバージョンに適応し得る。従って、成功という応答を受信する特定のセットアップ要求は、外部機器上にインストールされるファームウェアのバージョンに関する重要な情報、外部機器の能力、および、外部機器に関する他の情報をハンドセットに有利なように提供し得る。ステップ854で判断されたように、一度成功という応答を外部機器から受信すると、ステップ856に示すように、ハンドセットは、外部機器との情報交換に進み得る。
図10は、本明細書に記載された様々な実施形態と関連して使用され得る例示的な無線通信機器450を示すブロック図である。例えば、無線通信機器450は、ハンドセットまたはPDAネットワーク機器と一緒に、あるいは、無線メッシュネットワーク内のセンサノードの一部として使用され得る。しかしながら、当業者には明らかなように、他の無線通信機器および/またはアーキテクチャも、また使用され得る。
図の実施形態において、無線通信機器450は、アンテナ452、マルチプレクサ454、低ノイズアンプ(「LNA」)456、パワーアンプ(「PA」)458、変調回路460、ベースバンドプロセッサ462、スピーカ464、マイク466、中央演算処理装置(「CPU」)468、データストレージ領域470、および、ハードウェアインターフェース472を備える。無線通信機器450において、無線周波数(「RF」)信号は、アンテナ452によって、送信され、受信される。マルチプレクサ454は、スイッチとして機能し、送信信号経路と受信信号経路との間のアンテナ452を結合する。受信経路において、受信RF信号は、マルチプレクサ454からLNA456に結合される。LNA456は、受信RF信号を増幅し、増幅信号を変調回路460の復調部分に結合する。
典型的に、変調回路460は、1つの集積回路(「IC」)内で、復調器および変調器を結合する。復調器および変調器は、個別のコンポーネントでもあり得る。復調器は、RFキャリア信号を取り除き、ベースバンド受信信号を残す。このベースバンド受信信号は、復調器の出力からベースバンドプロセッサ462に送信される。
ベースバンド受信音声信号が、音声情報を含む場合、ベースバンドプロセッサ462は、信号を復号化し、それをアナログ信号に変換する。次いで、信号は、増幅され、スピーカ464に送信される。ベースバンドプロセッサ462は、アナログ音声信号をマイク466から受信する。これらアナログ音声信号は、デジタル信号に変換され、ベースバンド信号プロセッサ462によって、符号化される。バースバンドプロセッサ462は、また、デジタル信号を送信用に符号化し、ベースバンド送信音声信号を生成する。このベースバンド送信音声信号は、変調回路460の変調部分にルーティングされる。変調器は、ベースバンド送信音声信号をRFキャリア信号と混合し、RF送信信号を生成する。このRF送信信号は、パワーアンプ458にルーティングされる。パワーアンプ458は、RF送信信号を増幅し、それをマルチプレクサ454にルーティングする。このマルチプレクサ454で、この信号は、アンテナ452による送信のため、アンテナポートに切り替えられる。
ベースバンドプロセッサ462は、中央演算処理装置468とも、また通信できるように結合される。中央演算処理装置468は、データストレージ領域470へのアクセスを有する。中央演算処理装置468は、命令を実行するように構成されることが好ましい(すなわち、コンピュータプログラムまたはソフトウェア)。この命令は、データストレージ領域470内に格納され得る。コンピュータプログラムは、ベースバンドプロセッサ462からも、また受信され得、データストレージ領域470内に格納され得るか、受信すると実行され得る。実行されると、このようなコンピュータプログラムは、無線通信機器450が前述したような本発明の様々な機能を行うことを可能にする。
本記述において、「コンピュータ読み出し可能媒体」とは、中央演算処理装置468による実行のために、無線通信機器450に実行可能な命令(例えば、ソフトウェアおよびコンピュータプログラム)を提供するために使用される任意の媒体を示すために、使用される。このような媒体の例には、データストレージ領域470、マイク466(ベースバンドプロセッサ462を介する)、アンテナ452(これもまたベースバンドプロセッサ462を介する)、および、ハードウェアインターフェース472を含む。これらコンピュータ読み出し可能媒体は、実行可能なコード、プログラミング命令、および、ソフトウェアを無線通信機器450に提供する手段である。実行可能なコード、プログラミング命令、および、ソフトウェアは、これらが中央演算処理装置468によって実行されたとき、好適には中央処理装置468に、本明細書に前述した発明の特徴および機能を実行することが好ましい。
中央演算処理装置は、ハードウェアインターフェースによって新たな機器が検出されたとき、ハードウェアインターフェース472からの通知を受信するように構成されることが好ましい。ハードウェアインターフェース472は、CPU468と通信し、新たな機器と相互作用するソフトウェアを制御するコンビネーション電気機械検出器であり得る。
図11は、本明細書に記載された様々な実施形態と関連して使用され得る例示的なコンピュータシステム550を示すブロック図である。例えば、コンピュータシステム550は、サーバオペコードセットを処理し、ハンドセットオペコードセットを作成および送信するように構成されたリモートサーバと一緒に使用され得る。しかしながら、当業者には明らかなように、他のコンピュータシステムおよび/またはアーキテクチャも使用され得る。
コンピュータシステム550は、プロセッサ552のような1つ以上のプロセッサを含むことが好ましい。追加のプロセッサとしては、入出力を管理する補助プロセッサ、浮動小数点演算操作を実行する補助プロセッサ、信号処理アルゴリズムの高速実行に適したアーキテクチャを有する特殊目的のマイクロプロセッサ(例えば、デジタル信号プロセッサ)、メインの処理システムに従属するスレーブプロセッサ(例えば、バックエンドプロセッサ)、二元または多元プロセッサシステム用の追加マイクロプロセッサまたはコントローラ、あるいは、共通プロセッサのようなプロセッサが提供され得る。このような補助プロセッサは、ディスクリートプロセッサであり得るか、あるいは、プロセッサ552に統合され得る。
プロセッサ552は、通信バス554に接続されることが好ましい。通信バス554は、コンピュータシステム550のストレージと他の周辺コンポーネントとの間の情報移動を容易にするデータチャネルを含み得る。通信バス554は、さらに、プロセッサ552(データバス、アドレスバス、および制御バス(図示せず)を含む)と通信するために使用される信号セットを提供し得る。通信バス554は、標準であるか否かを問わず、任意のバスアーキテクチャを備え得る。例えば、業界標準アーキテクチャ(「ISA」)、拡張業界標準アーキテクチャ(「EISA」)、マイクロチャネルアーキテクチャ(「MCA」)、周辺コンポーネント相互接続(「PCI」)ローカルバス、あるいは、電気電子技術者協会(「IEEE」)によって普及した規格(IEEE488汎用インターフェースバス(「GPIB」)やIEEE696/S−100などを含む)に準じるバスアーキテクチャである。
コンピュータシステム550は、主メモリ556を含むことが好ましく、また、二次メモリ558も含み得る。主メモリ556は、プロセッサ552上で実行するプログラム用の命令およびデータのストレージを提供する。主メモリ556は、典型的には、ダイナミックランダムアクセスメモリ(「DRAM」)および/またはスタティックランダムアクセスメモリ(「SRAM」)のような半導体ベースのメモリである。他の半導体ベースのメモリのタイプは、例えば、シンクロナスダイナミックランダムアクセスメモリ(「SDRAM」)、ランバスダイナミックランダムアクセスメモリ(「RDRAM」)、強誘電体ランダムアクセスメモリ(「FRAM」)などで、読み出し専用メモリ(「ROM」)も含む。
二次メモリ558は、オプションとして、ハードディスクドライブ560および/または取り外し可能なストレージドライブ562(例えば、フロッピディスクドライブ、磁気テープドライブ、コンパクトディスク(「CD」)、デジタル汎用ディスク(「DVD」)など)を含み得る。取り外し可能なストレージドライブ562は、周知の方法で、取り外し可能なストレージ媒体564から読み出し、および/または、その媒体564に書き込む。取り外し可能なストレージ媒体564は、例えば、フロッピディスク、磁気テープ、CD、DVDなどであり得る。
取り外し可能なストレージ媒体564は、その媒体上にコンピュータ実行可能なコード(すなわち、ソフトウェア)および/またはデータを格納したコンピュータ読み出し可能な媒体であることが好ましい。取り外し可能なストレージ媒体564上に格納されたコンピュータソフトウェアまたはデータは、電気通信信号578として、コンピュータシステム550の中に読み出される。
代替的な実施形態において、二次メモリ558は、コンピュータプログラムを可能にする他の同様な手段、あるいは、コンピュータシステム550の中にロードされるべき他のデータまたは命令を含み得る。このような手段には、例えば、外部ストレージ媒体572およびインターフェース570を含み得る。外部ストレージ媒体572の例には、外部ハードディスクドライブまたは外部光学ドライブ、あるいは、外部磁気光学ドライブを含み得る。
二次メモリ558の他の例には、プログラマブル読み出し専用メモリ(「PROM」)、消去可能プログラマブル読み出し専用メモリ(「EPROM」)、電気的消去可能プログラマブル読み出し専用メモリ(「EEPROM」)、あるいは、フラッシュメモリ(EEPRMに類似したブロック適応型メモリ)のような半導体ベースのメモリを含み得る。また、取り外し可能なストレージユニット572およびインターフェース570も含まれ、これらによって、ソフトウェアおよびデータが、取り外し可能なストレージユニット572からコンピュータシステム550へ移動されることが可能になる。
コンピュータシステム550は、また、通信インターフェース574も含み得る。通信インターフェース574によって、ソフトウェアおよびデータが、コンピュータシステム550と外部機器(例えば、プリンタ)、ネットワークまたは情報源との間を移動可能となる。例えば、コンピュータソフトウェアまたは実行可能なコードは、ネットワークサーバから、通信インターフェース574を介して、コンピュータシステム550に移動され得る。通信インターフェース574の例としては、ほんの数例を挙げると、モデム、ネットワークインターフェースカード(「NIC」)、通信ポート、PCMCIAスロットおよびカード、赤外線インターフェース、ならびに、IEEE 1394ファイヤワイヤである。
通信インターフェース574は、業界で普及したプロトコル基準をインプリメントすることが好ましい。例えば、イーサネット(登録商標)IEEE802規格、ファイバチャネル、デジタル加入者回線(「DSL」)、非対称型デジタル加入者回線(「ADSL」)、フレームリレー、非同期転送モード(「ATM」)、デジタル総合サービス網(「ISDN」)、パーソナル通信サービス(「PCS」)、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、シリアル回線インターネットプロトコル/ポイントツーポイントプロトコル(「SLIP/PPP」)などであるが、カスタム化されたプロトコルまたは標準化されていないプロトコルも、またインプリメントされ得る。
通信インターフェース574を介するソフトウェアおよびデータは、一般的に、電気通信信号578の形式である。これら信号578は、通信チャネル576を介する通信インターフェース574に提供されることが好ましい。通信チャネル576は、信号578を運び、様々な通信手段を用いて、インプリメントされ得る。この様々な通信手段は、ほんの幾つか例を挙げると、ワイヤまたはケーブル、光ファイバ、従来の電話線、携帯電話リンク、無線周波数(RF)リンク、あるいは、赤外線リンクなどである。
コンピュータで実行可能なコード(すなわち、コンピュータプログラムまたはソフトウェア)は、主メモリ556および/または二次メモリ558内に格納される。コンピュータプログラムは、また、通信インターフェース574を介しても受信され得、主メモリ556および/または二次メモリ558内に格納され得る。このようなコンピュータプログラムは、実行されたとき、コンピュータシステム550が、上述したような本発明の様々な機能を実行することを可能にする。
本記述において、「コンピュータ読み出し可能媒体」という用語は、コンピュータシステム550にコンピュータ実行可能コード(例えば、ソフトウェアおよびコンピュータプログラム)を提供するために使用される任意の媒体について言及するために使用される。この媒体の例には、主メモリ556、二次メモリ558(ハードディスクドライブ560、取り外し可能ストレージ媒体564、および、外部ストレージ媒体572を含む)、および、通信インターフェース574と通信できるように結合された任意の周辺機器(ネットワーク情報サーバまたは他のネットワーク機器を含む)を含む。これらのコンピュータ読み出し可能媒体は、コンピュータシステム550に、実行可能なコード、プログラミング命令およびソフトウェアを提供する手段である。
ソフトウェアを使用してインプリメントされる実施形態において、ソフトウェアは、取り外し可能ストレージドライブ562、インターフェース570または通信インターフェース574によって、コンピュータ読み出し可能媒体上に格納され得、コンピュータシステム550内にロードされ得る。このような実施形態において、ソフトウェアは、電気通信信号578の形式で、コンピュータシステム550の中にロードされる。ソフトウェアは、プロセッサ552によって実行されたとき、その結果として、プロセッサ552が、本明細書で上述された発明の特徴および機能を実行することが好ましい。
様々な実施形態は、例えば、特定用途向け集積回路(「ASIC」)あるいはフィールドプログラマブルゲートアレイ(「FPGA」)のようなコンポーネントを用いて、主としてハードウェアの中でも、またインプリメントされ得る。本明細書で上述した機能を実行可能なハードウェア状態機械のインプリメンテーションは、当業者には、これもまた明らかである。また、様々な実施形態は、ハードウェアとソフトウェアとの双方の組み合わせを用いても、インプリメントされ得る。
本明細書で詳細に図示され、記載された無線通信機器用の特定のモジュラソフトウェアコンポーネントは、本発明の上述の目的を十分に達成可能であるが、本明細書に示された記載および図示は、現時点における本発明の好ましい実施形態を示し、それゆえ、本発明によって幅広く期待される主題の代表でもあることは、理解されるべきである。本発明の範囲は、当業者によって明白となり得る他の実施形態を十分に含むこと、および、それゆえ、本発明の範囲は、添付の請求項以外では何ら制限されないことも、さらに理解されるべきである。