(57)【要約】モジュラソフトウェアアプリケーション（１４０）またはハードウェア機器ドライバ（１３０）を動的にインストールするシステムおよび方法が提供される。無線通信機器（２０）は、要求されたソフトウェアまたはハードウェアモジュール（１４０、１３０）を識別する更新モジュールサーバ（６０）に要求を送信する。更新モジュールサーバ（６０）は、要求されたモジュールおよびソフトウェアまたはハードウェアモジュール自身をインストールするために、命令セットに応答する。受信すると、機器（２０）は、要求されたモジュールをインストールするために、命令セットを実行する。これは、要求されたモジュール（１４０、１３０）に適応するために、持続性ストレージ（２４０）内のデータに対して任意の必要な調整または削除を行うことによってである。その後、無線通信機器（２０）は、インストールおよび構成を完了するために、再構成または再起動される。
2008500794.tif 000002
【特許請求の範囲】
【請求項１】
配置された無線通信機器（２０、３０）にデータコンポーネント（２４０）を動的にインストールする方法であって、
該データコンポーネントをインストールする要求を受信するステップであって、該要求は該要求されたデータコンポーネントに対する一意的な識別子を備える、ステップと、
該一意的な識別子と、リモートサーバによって実行可能な少なくとも１つのサーバ命令に対応する少なくとも１つのサーバ操作コードとを備えるサーバクエリを編集するステップであって、該少なくとも１つのサーバ操作コードは、該配置された無線通信機器のサーバオペコードライブラリ内に収納される、ステップと、
無線通信ネットワーク（５０）を介して、該サーバクエリを該リモートサーバ（６０）に送信するステップと、
該無線通信ネットワーク（５０）を介して、該リモートサーバ（６０）から、該データコンポーネント（２４０）を備える応答を受信するステップと
を包含する、方法。
【請求項２】
前記データコンポーネントは、ソフトウェアモジュールである、請求項１に記載の方法。
【請求項３】
前記一意的な識別子は、前記配置された無線通信機器から削除されるべき既存のソフトウェアモジュールに対応する、請求項２に記載の方法。
【請求項４】
前記消去されるべき既存のソフトウェアモジュールを識別するステップと、
前記ソフトウェアモジュール用にストレージのスペースを自由に使えるようにするために、該消去されるべき識別された既存のソフトウェアモジュールを、前記配置された無線通信機器から消去するステップと
をさらに包含する、請求項３に記載の方法。
【請求項５】
前記要求は、キャリアネットワークから受信される、請求項２に記載の方法。
【請求項６】
前記リモートサーバから応答を受信するステップは、
対応するデータペイロードを有するハンドセットの命令セットを受信するステップと、
該データペイロードを抽出するステップであって、該データペイロードは、前記ソフトウェアモジュールを備える、ステップと、
該ハンドセットの命令セットに対応する実行可能な命令セットを取得するステップと、
該ソフトウェアモジュールをインストールするために該実行可能な命令セットを実行するステップと
をさらに包含する、請求項２に記載の方法。
【請求項７】
前記実行可能な命令セットを実行するステップは、前記無線通信機器上で動作するランタイムエンジン内で実行される、請求項６に記載の方法。
【請求項８】
請求項１に記載の方法であって、
前記データコンポーネントは、前記新たなハードウェアコンポーネントおよびインストール命令用の実行可能な機器ドライバであり、該方法は、
前記無線通信機器内の新たなハードウェアコンポーネントの存在を検出するステップであって、該新たなハードウェアコンポーネントは以前の機器ハードウェアドライバを有する以前のハードウェアコンポーネントを置換する、ステップと、
該新たなハードウェアコンポーネントに対するプロファイル情報を取得するために、該新たなハードウェアコンポーネントをクエリするステップと
をさらに包含し、
前記一意的な識別子は、該プロファイル情報の少なくとも一部を備える、方法。
【請求項９】
前記実行可能な機器ドライバをインストールするステップと、
前記新たなハードウェアコンポーネントを構成するステップと
をさらに包含する、請求項８に記載の方法。
【請求項１０】
前記データコンポーネントを受信するステップは、
操作コードのシーケンスと、対応するデータペイロードとを有するハンドセットの命令セットを受信するステップと、
該対応するデータペイロードを抽出するステップであって、該対応するデータペイロードは、前記実行可能な機器ドライバを備える、ステップと、
該操作コードのシーケンスを、前記インストール命令を備える実行可能な命令セットに翻訳するステップと、
前記無線通信機器上で動作するランタイムエンジンを利用する該実行可能な機器ドライバをインストールするために、該実行可能な命令セットを実行するステップと
をさらに包含する、請求項８に記載の方法。
【請求項１１】
前記以前の機器ドライバのサイズが、前記実行可能な機器ドライバのサイズより大きいことを決定するステップと、
持続性ストレージから揮発性ストレージに該以前の機器ドライバをコピーするステップと、
該以前の機器ドライバを該持続性ストレージから削除するステップと、
該以前の機器ドライバによって以前に占有されていた持続性ストレージ内のロケーションの少なくとも一部の中に、前記新たなハードウェアコンポーネント用に該実行可能な機器ドライバを格納するステップと
をさらに包含する、請求項８に記載の方法。
【請求項１２】
請求項１に記載の方法であって、
前記データコンポーネントは、外部機器用の外部機器インターフェースであり、該方法は、
該外部機器からの接続を検出するステップと、
該外部機器をクエリするステップと、
該クエリに応答してプロファイル情報を受信するステップと
をさらに包含し、
前記一意的な識別子は、該プロファイル情報の少なくとも一部を備える、方法。
【請求項１３】
無線通信機器であって、
該無線通信機器によって実行可能な命令を備えるデータストレージ領域（２４０）と、
新たなデータコンポーネントをインストールする要求を受信するように構成され、該新たなデータコンポーネントに対する一意的な識別子を決定するように構成されたモジュラソフトウェアインターフェース（２００）、モジュラハードウェア検出器（２０２）および外部機器検出器（２０４）のうちの少なくとも１つと、
該データストレージ領域内に収納され、リモートサーバ（６０）によって実行可能な命令に対応する操作コードを備えるサーバオペコードライブラリ（２１０）と、
該データストレージ領域（２４０）内に収納され、該無線通信機器（２０、３０）によって実行可能な命令に対応する操作コードを備えるハンドセットのオペコードライブラリ（２２０）と、
サーバのオペコードセットを編集および送信し、ハンドセットのオペコードセットを受信および処理するように構成されたランタイムエンジン（２３０）と
を備え、
該モジュラソフトウェアインターフェース（２００）、モジュラハードウェア検出器（２０２）および外部機器検出器（２０４）のうちの少なくとも１つは、
該新たなデータコンポーネントをインストールする要求を受信し、該新たなデータコンポーネントに対する一意的な識別子を決定し、該ソフトウェアモジュールを要求するサーバのオペコードセットを編集する該ランタイムエンジンに該一意的な識別子を提供し、
該サーバのオペコードセットは、該一意的な識別子を備えるデータペイロードを有する、無線通信機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に無線通信の分野に関する。より特定的には、無線通信機器におけるオペレーティングシステムの取替え可能なソフトウェアアプリケーション、ハードウェアドライバ、通信インターフェース、およびコンポーネントに関する。
【背景技術】
【０００２】
従来の無線通信機器は、典型的には、一度配置（すなわち、顧客に売却）されると、孤立した計算プラットフォームになる。顧客は、通常は、オペレーティングシステム、あるいは、電話帳のような任意の内蔵ソフトウェアアプリケーションを更新するために、無線通信機器（本明細書にて、「無線機器」、「ハンドセット」および「モバイル機器」とも称する）をサービスステーションに持参しなくてはならない。
【０００３】
さらに、顧客が、無線通信機器のハードウェアコンポーネントを取り替えたいと欲する場合、無線通信機器をサービスステーションに持参しなくてはならない。一般的に、ハードウェアの取替えは、無線機器が壊れないときで、保証期間中に行う場合、途方もなく高い費用が掛かる。それでも、保証期間中の無線機器が、ハードウェアコンポーネントを取り替えてもらうとき、新たなコンポーネントは、その取り替えられるコンポーネントの稼働中のバージョンに過ぎない。こうして、顧客が無線通信機器を購入するとき、顧客は、無線通信機器の寿命に対して、無線機器の物理的構成で制約される。
【０００４】
従来の無線通信機器の更なる弱点は、デジタルカメラなどのような新たな外部機器は、そのハンドセットのメーカによって提供された特定の独自の機器に限られていることである。このように、無線通信機器を強化する外部機器における顧客の選択肢は、厳しく制限される。それゆえ、必要とされているのは、上述のような従来システムにおいて見られるこれら大きな問題を克服するシステムと方法である。
【発明の開示】
【課題を解決するための手段】
【０００５】
従来の無線通信機器は、計算プラットフォームから孤立される。無線通信機器は、一度配置されたら、その機器上のソフトウェアを更新するためには、ハンドセットをサービスステーションに持参しなくてはならない。そこで、ソフトウェア一式は、更新され得、ハンドセットは再構成され得る。これは、オペレーティングシステムの更新が、住所録のような組み込みまたは内蔵アプリケーションである場合、とくに当てはまる。さらに、配置されたハンドセット上のソフトウェア一式は、静的で融通が利かないので、ユーザが自分のニーズに合った様々なアプリケーションをカスタム化することができない。
【０００６】
無線通信機器のユーザが、物理的な機器内に組み込まれた技術の進歩から恩恵を受けるためには、新たな機器を購入しなければならない。改良型ディスプレイを有する新たなモデルがメーカから販売されたとき、ユーザにはそのハンドセットを更新する方法はない。さらに、ハードウェアコンポーネントが故障または破損した場合、ハンドセット全体を取り替えることが必要になるか、あるいは、場合によっては、それを修繕するメーカに返送され得る。不幸にも、この修繕は、グレードアップに寄与せず、新たなコンポーネントも使用されない。メーカは、コンポーネントを同じコンポーネントで稼働中のバージョンのものと取り替えなければならない。
【０００７】
第一の実施形態は、モジュラソフトウェアアプリケーションおよびオペレーティングシステムコンポーネントの動的インストールのシステムおよび方法を提供する。ハンドセットが、新たなソフトウェアモジュールをインストールするように命令されたとき、ハンドセットは、インストールされるべき新たなアプリケーションまたはソフトウェアモジュールを識別する更新モジュールサーバに、要求を送信する。更新モジュールサーバは、ソフトウェアモジュールおよびソフトウェアモジュール自身をインストールするために、命令セットに応答する。受信すると、ハンドセットは、ソフトウェアモジュールをインストールし、ハンドセット上の持続性ストレージ内のアプリケーションまたはモジュールに任意の必要な削除を行う。最終的に、ハンドセットは、インストールおよび構成を完了するために、再構成または再起動され得る。
【０００８】
第二の実施形態は、無線通信機器上で取替え可能なモジュラハードウェアコンポーネントに対するシステムおよび方法を提供する。ハンドセットコンポーネントが旧式であるとき、あるいは、新しくかつ改善されたコンポーネントが利用可能なとき、新たなコンポーネントは、古いコンポーネントと交換され得る。ハードウェアコンポーネントが交換された後に、ハンドセットがパワーアップしたとき、ハンドセットは、新たなコンポーネントが存在することを認識する。新たなコンポーネントを認識すると、ハンドセットは、そのコンポーネント特性に関する情報を取得するために、そのコンポーネントをクエリする。この情報が一度取得されると、ハンドセットは、そのハンドセットがその新たなコンポーネントの改善された機能性を利用できる最適機器ドライバを求めて、無線通信ネットワークにわたる更新サーバをクエリする。さらに、ハンドセットは、その新たなコンポーネントの改善された機能性をまた活用する新たなソフトウェアアプリケーションを求めて、更新サーバをクエリし得る。更新サーバは、機器ドライバおよび機器ドライバ自身をインストールするための命令セットに応答する。受信すると、ハンドセットは機器ドライバをインストールし、インストールおよび構成を完了すると、再構成または再起動する。
【０００９】
別の実施形態は、外部機器との通信を容易にする無線機器上の通信インターフェースの動的更新を提供する。外部機器からの接続を検出すると、直接物理リンクまたは、直接無線リンク、あるいは、リモート無線リンクのいずれかによって、無線通信機器は、外部機器に関する概要情報を取得する。外部機器に対する通信インターフェースが、無線通信機器内に、まだ存在していない場合、無線機器は、外部機器の概要情報の一部をリモートインターフェースサーバに送信し、適切なインターフェースを要求する。インターフェースを受信すると、無線通信機器は、インターフェースをインストールし、次いで、外部機器との通信確立に進む。
【００１０】
本発明の詳細は、その構造と動作との双方に関して、以下の添付図面を検討することで、その一部を収集され得る。添付図面において、同じ参照番号は、同じパーツを示す。
【発明を実施するための最良の形態】
【００１１】
本明細書に開示されるのは、ソフトウェアモジュールとソフトウェアアプリケーションとを動的に更新するため、および、無線接続を介した無線通信機器上での機器ドライバを更新するためのシステムおよび方法である。例えば、本明細書で開示される方法およびシステムは、更新サーバから新たなソフトウェアまたはドライバモジュールを要求し、無線通信データパッケージ内の新たなモジュールを受信することの可能な無線通信機器を可能とする。データパッケージを受信すると、無線機器は、要求されたモジュールをインストールし、必要に応じて、持続性ストレージ内に新たなモジュール用のスペースを作るために、他のモジュールを消去する。必要な場合、無線機器は、また、新たなモジュールを使用するために無線機器を再構成し、また、機器の再起動を開始し得る。
【００１２】
本明細書に開示される別の実施形態は、外部機器を動的に認識し、それら外部機器とインターフェースする無線通信機器および方法を提供する。例えば、本明細書に開示されるような一つの方法は、有線または無線通信リンクを介して、外部機器の存在を認識する無線通信機器を可能とする。認識すると、無線通信機器は、外部機器に関する概要プロファイル情報を取得するために、外部機器をクエリする。次いで、無線通信機器は、無線通信ネットワークにわたって、サーバをクエリし、両機器間の通信を容易にするインターフェースを含む応答を受信する。
【００１３】
この記述を読むと、様々な代替的な実施形態および代替的なアプリケーションにおいて本発明をインプリメントする方法が、当業者には明らかになる。しかしながら、本発明の様々な実施形態が、本明細書に記載されるが、これら実施形態は、例として挙げられているに過ぎず、限定するためのものではないことは、理解されるべきである。このように、この様々な代替的実施形態の詳細な記述は、添付の請求項で述べる本発明の範囲および幅を制限するものと、解釈されるべきではない。
【００１４】
図１は、無線通信ネットワーク１０の例を示すハイレベルなブロック図である。この図示された実施形態において、無線通信ネットワーク１０は、複数の基地局４０および４２を介してネットワーク５０と通信するように結合された複数の無線通信機器２０および３０を備える。追加の無線通信機器および基地局も、また、無線通信ネットワーク１０の一部として使用され得る。無線通信ネットワーク１０は、また、データストレージ領域７０に結合される更新モジュールサーバ６０を備える。無線通信機器２０および３０は、基地局４０および４２と、ネットワーク５０とを介して、更新モジュールサーバ６０と、通信するように結合される。
【００１５】
無線通信機器２０は、無線通信ネットワーク１０と通信する能力を有する任意の種類の機器であり得て、ソフトウェアモジュールを実行し得、および／または、置換されるモジュラハードウェアコンポーネントを有し得る。無線通信機器２０は、また、持続性ストレージ領域を有することが好ましい。例えば、無線通信機器２０は、携帯電話、個人用デジタル端末（「ＰＤＡ」）、ラップトップコンピュータ、腕時計、または、無線通信用に構成された任意の他の機器であり得る。無線通信機器は、また、「ハンドセット」、「モバイル電話」または「モバイル機器」としても、本明細書では、称され得る。
【００１６】
図示された実施形態において、外部機器２２とハンドセット２０との間の接続は、直接物理接触２４である。外部機器３２とハンドセット３０との間で、直接無線リンク３４またはリモート無線リンク３６のような無線リンクを介して、外部機器は、また、ハンドセットとも結合され得る。一実施形態において、直接物理接続２４は、ハンドセット２０と外部機器２２との間のハードワイヤによる物理接続（例えば、シリアルケーブルまたは有線ネットワーク接続）であり得る。代替的に、直接無線接続３４は、ローカルネットワークプロトコル、または、ブルートゥース、あるいは、赤外線を使用し得る。外部機器３２は、また、基地局４２のような基地局を介して機器とリンクするリモート無線接続３６を介してハンドセット３０にも接続され得る。追加として、外部機器３２は、また、インターネットまたはネットワーク５０のようなネットワークを介して機器をリンクするリモート無線接続３６を介して、ハンドセット３０にも接続され得る。
【００１７】
基地局４０は、複数の無線通信機器と無線通信するように構成され、その無線通信をネットワーク５０にわたって移動する有線通信に変換するトランシーバ（図示せず）を含む。ネットワーク５０は、基地局４０および４２のような基地局間のハンドオフに対するインフラを提供する無線キャリアによって動作するプライベートネットワークであることが好ましい。追加として、ネットワーク５０は、様々なアプリケーション、サービス、および、更新モジュールサーバ６０のような他のコンピュータベースのサーバ間の通信リンクを提供することが好ましい。
【００１８】
ネットワーク５０は、他のネットワーク（図示せず）との接続を繋ぐ役割を果たし得る。幾つか例を挙げると、総合サービスデジタル通信網（「ＩＳＤＮ」）、公衆交換電話網（「ＰＳＴＮ」）、公衆陸上移動網（「ＰＬＭＮ」）、パケット交換公衆データ網サービス（「ＰＳＰＤＮ」）およびインターネットのようなネットワークである。
【００１９】
更新モジュールサーバ６０は、単一のコンピュータとしてインプリメントされ得るし、あるいは、モバイル機器に動的命令セットと、ソフトウェアおよびハードウェアモジュールとを提供し、モバイル機器から受信された動的命令セットを実行するように論理上構成された複数のサーバとしてインプリメントされ得る。図示された実施形態において、更新モジュールサーバ６０は、データストレージ領域７０と結合される。このデータストレージ領域７０は、複数の実行可能なインターフェースと、サーバ操作コードセットおよびハンドセット操作コードと、サーバ操作コードに対応する実行可能な命令とを収納する。更新モジュールサーバ６０をインプリメントし得る汎用のコンピュータの特徴は、図１１を参照して、後に記載される。更新モジュールサーバ６０の一つの機能は、ハンドセット２０、３０からの要求を受信し、そのハンドセットに、実行可能なソフトウェアモジュール、取り替えられたハンドセットハードウェア用の機器ドライバ、または、外部機器との通信用の実行可能なインターフェースを提供することによって、これらの要求に応答することである。
【００２０】
図２は、無線通信機器２０上の持続性ストレージ２４０内のデータの表示例を示すブロック図である。このように機能することを可能とする無線通信機器２０、３０の一般的な特徴は、図１０を参照して、後に記載される。図示された実施形態において、オペレーティングシステム１００は、持続性ストレージ２４０内に常駐する。オペレーティングシステム１００は、その機器が機能するようにできる基本的実行可能な１つまたは複数のプログラムを備えることが好ましい。オペレーティングシステム１００に加えて、アプリケーションデータ１１０およびユーザインターフェース１２０は、持続性ストレージ２４０内に存在する。アプリケーションデータ１１０は、アプリケーションが機能するために必要とするユーザおよびアプリケーション情報、あるいは、アプリケーションがそのサービスを提供するために使用するユーザおよびアプリケーション情報を備えることが好ましい。
【００２１】
ユーザインターフェース１２０は、実行可能なユーザインターフェースアプリケーションと、そのアプリケーションによって使用されるユーザインターフェースデータとの双方を備え得る。代替的な実施形態において、ユーザインターフェースアプリケーション部分は、オペレーティングシステムの一部として含まれ得、ユーザインターフェース１２０は、補助的なユーザデータまたはカスタムデータ、あるいは、ユーザインターフェースアプリケーションまたはユーザによって使用可能な他のデータを含み得る。持続性ストレージ領域２４０は、追加的に、機器ドライバ１３０、機器ドライバ１３２から、機器ドライバｎに至るような１つ以上の機器ドライバを備える。これら機器ドライバは、ハンドセットと他の機器との間の通信、あるいは、場合によってはコアハンドセットと内蔵機器との間の通信を容易にする実行可能なアプリケーションであることが好ましい。内蔵機器には、ディスプレイ、キーパッド、スピーカ、マイクまたはイヤホンのようなものがあるが、これらはほんの数例に過ぎない。
【００２２】
追加的に、持続性ストレージ２４０の一部として示されているのは、アプリケーション１４０、１４２、１４４、１４６からアプリケーションｎに至るような一連のソフトウェアアプリケーションまたはモジュールである。図示のように、多数のアプリケーションが、持続性ストレージ２４０の一部として常駐する。持続性ストレージ２４０内に格納され得るアプリケーションの数に対する唯一の制限は、ストレージ２４０の物理的限界である。
【００２３】
図３ａは、例示的な無線通信機器２０のデータ２４０の要素を示すブロック図である。この図示された実施形態において、データ２４０は、ソフトウェアインターフェース２００、ソフトウェアライセンスマネージャ２０５およびランタイムエンジン２３０を備える多数のアプリケーション２４２を有する。図２に示されるようにアプリケーションデータ１１０内に含まれ得る他のデータ要素２４４は、サーバ操作コード（「オペコード」）ライブラリ２１０、ハンドセットオペコードライブラリ２２０、および、ランタイム命令２６０を備える。
【００２４】
モジュラソフトウェアインターフェース２００は、ユーザの要求を受信し、新たなソフトウェアモジュールおよびアプリケーションをインストールするように構成されることが好ましい。追加的に、モジュラソフトウェアインターフェース２００は、ネットワーク起動のソフトウェアモジュールダウンロードおよびソフトウェアアプリケーションダウンロードを受信するように構成されることが好ましい。モジュラソフトウェアインターフェース２００は、ユーザ起動のダウンロード用に、ユーザからコマンドを受けるのに適応可能なユーザインターフェースモジュールを備え得る。追加的に、モジュラソフトウェアインターフェース２００は、ネットワーク起動のダウンロード用に、ネットワークサーバから通信を受信するのに適応可能な通信モジュールを備え得る。
【００２５】
一実施形態において、モジュラソフトウェアインターフェース２００は、特定のソフトウェアモジュールをダウンロードするために、ユーザからコマンドを受信する。モジュラソフトウェアインターフェース２００は、ネットワークサーバからダウンロードされるべきソフトウェアモジュールに対する要求を生成するために、ランタイムエンジン２３０と通信するように構成されることが好ましい。代替的な実施形態において、モジュラソフトウェアインターフェース２００は、ネットワークサーバから生成されたコマンドを受信する。モジュラソフトウェアインターフェース２００は、そのコマンドを解析し解釈して、どのソフトウェアモジュールをハンドセットがダウンロードおよびインストールすることをネットワークサーバが要求しているのかを決定するように構成されることが好ましい。ネットワークからの要求を検証すると、次いで、モジュラソフトウェアインターフェース２００は、そのダウンロードを成し遂げるために、ランタイムエンジン２３０との通信へと進む。
【００２６】
追加的に、モジュラソフトウェアインターフェース２００は、ソフトウェアモジュールがインストールされる持続性ストレージ２４０内で利用可能なスペースを決定するように構成され得る。例えば、新たなソフトウェアモジュールをインストールする要求を受信すると、モジュラソフトウェアインターフェース２００は、ハンドセット上で利用可能なディスクスペース（または、他の持続性ストレージのスペース）の量を決定する。一実施形態において、利用可能なストレージのスペースを決定するために、モジュラソフトウェアインターフェース２００は、図２を参照して上記で議論したように、ハンドセットのオペレーティングシステム１００をクエリし得る。十分なスペースを利用可能な場合、モジュラソフトウェアインターフェース２００は、上述のように、ランタイムエンジン２３０との通信へと進み得る。
【００２７】
要求されたソフトウェアモジュールをインストールするスペースが、持続性ストレージに十分にない場合、モジュラソフトウェアインターフェース２００は、削除され得る持続性ストレージ内のソフトウェアモジュールまたは他のデータを識別するために、ユーザまたはネットワーク５０を（要求がどこから生成しているかに依存して）クエリする。代替的に、モジュラソフトウェアインターフェース２００は、例えば、オペレーティングシステムをクエリすることによって、あるいは、要求されたソフトウェアモジュールの古いバージョンを識別することによって、どのデータが削除され得るべきかを決定し得る。
【００２８】
追加的に、モジュラソフトウェアインターフェース２００は、新たなソフトウェアモジュールに対する十分な利用可能性を提供するために、持続性ストレージ２４０内の識別されたソフトウェアモジュールまたは他のデータの削除をオペレーティングシステム１００に命令するように構成されることが好ましい。持続性ストレージに利用可能なスペースがなく、既に持続性ストレージ内で占有されているデータまたはソフトウェアモジュールを削除しても全くスペースが得られない場合、モジュラソフトウェアインターフェース２００は、要求されたソフトウェアモジュールをインストールするのに利用可能なスペースがないことを、ユーザまたはネットワークに知らせ得る。
【００２９】
図３Ａを続けると、ハンドセットオペコードライブラリ２２０は、図１に示す更新モジュールサーバ６０によって実行するようにハンドセットが命令され得る各機能または実行可能なコードセグメントを示す操作コードの世界（ｕｎｉｖｅｒｓｅ）を含むことが好ましい。有利なことに、ハンドセットオペコードライブラリ２２０は、実際の実行可能なマシンコード機能またはコードセグメントに対するプレースホルダ（ｐｌａｃｅ  ｈｏｌｄｅｒ）として機能する操作コードを含む。このように、ハンドセットオペコードライブラリ２２０は、ハンドセット２０、３０によって実行され得る各機能全てに対応する全ての利用可能な操作コードのリストを含むことが好ましい。
【００３０】
同様に、サーバオペコードライブラリ２１０は、各サーバ側機能または実行可能なコードセグメントを示す操作コードの世界を含むことが好ましい。有利なことに、サーバオペコードライブラリ２１０は、現在の実行可能なマシンコード機能またはコードセグメントに対する操作コードだけを含み得る。この機能またはセグメントは、無線通信機器２０には、常駐しない。このように、サーバオペコードライブラリ２２０は、ハンドセット２０、３０の代理とする更新モジュールサーバ６０によって実行され得る利用可能なサーバ機能それぞれに対する全ての操作コードのリストを含む。好ましい実施形態において、利用可能なサーバ機能の数は、利用可能なハンドセット機能の数を十分に超過し得る。なぜなら、更新モジュールサーバ６０は、例えば、携帯電話やＰＤＡのようなモバイル機器上に、典型的に見つかる最小限のリソースによって困ることはないからである。
【００３１】
ランタイムエンジン２３０は、動的命令セットを処理するように構成されることが好ましい。動的命令セットの一例は、ソフトウェアモジュールをインストールする命令のセットである。他の動的命令セットの例は、新たなハードウェアコンポーネント用の機器ドライバをインストールする命令のセットである。動的命令セットの処理は、実行可能な命令セット中のオペコードの翻訳およびこれら命令セットの実行を含む。例えば、ハンドセットのオペコードセットは、データペイロードと一緒に、更新モジュールサーバ６０から受信され得る。オペコードは、次いで、ハンドセットに対する実行可能な命令に翻訳される。動的命令セットの処理は、また、更新モジュールサーバ６０に配送するオペコードおよび対応するデータペイロードの編集（ｃｏｍｐｉｌｅ）も含む。好ましくは、ランタイムエンジン２３０は、その機器が必要なときのみ稼動し、ハンドセット２０、３０上のシステムリソース（例えば、メモリ、ＣＰＵサイクルなど）の最小量を消費するように、必要に基づくようにして、無線通信機器２０、３０によって起動され得る。
【００３２】
図１２を参照すると、ブロック図は、無線通信機器６２０およびモジュラハードウェアコンポーネントの例を示す。図示された実施形態において、ハンドセット６２０は、画面６８０とキーパッド６８２を含む複数のハードウェアモジュールを備える。追加のハードウェアモジュールも、また、典型的には、ハンドセット６２０のようなハンドセット内に含まれ得、例えば、ラジオチップセットを含み得る。ハードウェアモジュールは、ハンドセット内の電気通信を可能にするハンドセット６２０のコンポーネントである。キャスティング（ｃａｓｔｉｎｇ）のような通信能力のない不活発なコンポーネントは、ハードウェアモジュールであるとは考えない。
【００３３】
図示された実施形態において、表示画面６８０は、新たな表示画面６９０と相互に交換可能である。例えば、画面６８０は、白黒表示に限定され得るが、画面６９０はカラー表示可能であり得る。同様に、キーパッド６８２は、新たなキーパッド６９２と相互に交換可能である。例えば、キーパッド６９２は、キーを光らせる能力を有するが、キーパッド６８２は、この能力を有し得ない。
【００３４】
図３Ｂは、他の無線通信機器２０の例のデータ２４０の要素を示すブロック図である。図示された実施形態において、データ２４０は、モジュラハードウェア検出器２０２およびランタイムエンジン２３０を備える多数のアプリケーション２４２を有する。図３Ａに示されるようなアプリケーションデータ１１０に含まれ得る他のデータ要素２４４は、サーバ操作コード（「オペコード」）ライブラリ２１０、ハンドセットオペコードライブラリ２２０、および、ランタイム命令２６０を備える。
【００３５】
モジュラハードウェア検出器２０２は、新たなハードウェアモジュールが、以前のハードウェアモジュールと交換されたときを決定するように構成されることが好ましい。一実施形態において、モジュラハードウェア検出器２０２は、新たなハードウェアモジュールの存在を検出してパワーアップすると、機能する。代替的に、モジュラハードウェア検出器２０２は、パワーオンモードの間に動作し得る。それは、「ホット」であった任意の新たなハードウェアが、ハンドセット２０がオンである間に、交換（ｓｗａｐ）された、あるいは、交換されなくとも置換（ｒｅｐｌａｃｅ）されたことを検出するためである。モジュラハードウェア検出器２０２は、検出機能を実行するために、電気機械コンポーネントとソフトウェアコンポーネントとの組み合わせとしてインプリメントされ得、新たに検出されたハードウェアモジュールのランタイムエンジンを知らせるために、ランタイムエンジン２３０と通信中であることが好ましい。
【００３６】
追加的に、モジュラハードウェア検出器２０２は、新たな機器ドライバがインストールされるべき持続性ストレージ２４０内で利用可能なスペースを決定するように構成され得る。例えば、新たなハードウェアモジュールを検出すると、モジュラハードウェア検出器２０２は、現在の機器ドライバ（例えば、図２に示す機器ドライバＮ）に対して使用されるストレージのスペース量、および、新たな機器ドライバに必要とされるストレージのスペース量を決定することが好ましい。一実施形態において、現在の機器ドライバに対して使用されるストレージのスペースを決定するために、モジュラハードウェア検出器２００は、オペレーティングシステム１００をクエリし得る。追加的に、新たな機器ドライバに必要とされるストレージのスペース量を決定するために、モジュラハードウェア検出器２０２は、図１に示すような更新サーバ６０を、その情報を取得するためのランタイムエンジン２３０を介して、クエリし得る。
【００３７】
現在の機器ドライバおよび新たな機器ドライバが、同じサイズである場合、あるいは、新たな機器ドライバに要するストレージのスペースが、現在の機器ドライバに要するストレージのスペースよりも小さい場合、新たな機器ドライバは、現在の機器ドライバが位置される持続性ストレージ内で同じ場所にインストールされ得る。新たな機器ドライバに要するストレージのスペースが、現在の機器ドライバに要するストレージのスペースよりも大きい場合、モジュラハードウェア検出器２０２は、モジュラハードウェア検出器２００によって機器ドライバストレージに対して、新たに割り当てられる持続性ストレージ領域２４０の他の部分に、新たな機器ドライバをインストールできることが好ましい。あるいは、モジュラハードウェア検出器２０２はまた、新たな機器ドライバのためのスペースを作るために削除することができる持続性ストレージ内のデータを識別するために、ユーザにクエリする。
【００３８】
モジュラハードウェア検出器２０２は、新たな機器ドライバが成功裏にインストールされた後、現在の機器ドライバを削除するように、オペレーティングシステム１００を命令するように構成されることが好ましい。現在の機器は、新たな機器ドライバに対するインストール処理中に、持続性または揮発性ストレージ内にバックアップされることが好ましい。
【００３９】
ここで、図１７Ａを参照すると、無線通信機器８０と外部機器８２との間の直接物理接続８４の例を示すブロック図が示される。直接物理接続８４は、外部機器８２とハンドセット８０との双方に接続する標準ケーブルまたは専用（ｐｒｏｐｒｉｅｔａｒｙ）ケーブルを介して行われ得る。代替的に、直接物理接続８４は、ハンドセット８０と外部機器との結合によって、実際のケーブルが使用されずに、結果として結合された機器が統合ユニットとなるようにすることで達成され得る。
【００４０】
図１７Ｂは、無線通信機器８６と外部機器８８との間の直接無線接続８５の例を示すブロック図である。直接無線接続８５は、ブルートゥース、赤外線、あるいは、無線通信の８０２．１１規格または８０２．１５規格のファミリのような様々な無線リンクを介して行われ得る。
【００４１】
図１７Ｃは、無線通信機器９０と外部機器９８との間のリモート無線接続の例を示すブロック図である。リモート無線接続は、外部機器９８と基地局９４との間のリンク９６と、また、ハンドセット９０と基地局９４との間のリンク９２とを備え得る。また、隙間ネットワークおよび基地局（図示せず）もあり得る。リモート無線接続は、従来の無線通信プロトコル、または、無線通信の８０２．１１規格または８０２．１５規格のファミリのようなリモート無線ネットワーク化プロトコルを用いて確立され得る。
【００４２】
図３Ｃは、例示的な無線通信機器２０、３０のデータ２４０のコンポーネントを示すブロック図である。図示された実施形態において、データ２４０は、外部機器検出器２０４およびランタイムエンジン２３０を備える多数のアプリケーション２４２を有する。図２に示されるようなアプリケーションデータ１１０内に含まれ得る他のデータ要素２４４は、サーバ操作コード（「オペコード」）ライブラリ２１０、ハンドセットオペコードライブラリ２２０、および、ランタイム命令２６０を備える。
【００４３】
外部機器検出器２０４は、外部機器がハンドセット２０、３０に物理的に接続されたとき、あるいは、外部機器が無線リンクを介してハンドセット２０、３０に接続を試みているときを決定するように構成されることが好ましい。追加的に、外部機器検出器２０４は、外部機器が、接続がなされ得るほどハンドセットの近くにあるかどうかを決定するために、パイロット信号または同報通信無線信号を検出可能であることが好ましい。外部機器検出器２０４は、検出機能を実行するために、電気機械コンポーネントとソフトウェアコンポーネントとの組み合わせとして、インプリメントされ得る。
【００４４】
図３Ａ、図３Ｂおよび図３Ｃは、モジュラソフトウェアインターフェース２００、モジュラハードウェア検出器２０２、および、外部機器検出器２０４を３つの別々の例として示すが、インターフェース２００、ハードウェア検出器２０２、および、外部機器検出器は、任意の組み合わせで、通信機器２０の持続性ストレージ領域２４０内に常駐し得ることは、理解されるべきである。
【００４５】
図３Ｄは、操作コードライブラリと、対応するランタイム命令セット２６０との例を示すブロック図である。ハンドセットオペコードライブラリ２２０およびランタイム命令セット２６０は、ハンドセット２０、３０のデータストレージ領域２４０内に収納されることが好ましい。一実施形態において、ランタイム命令セット２６０内で実行可能な命令は、ハンドセットのオペコードライブラリ２２０に含まれるオペコードと、一対一の関係で対応する。代替的に、ハンドセットオペコードライブラリ２２０内の単一のオペコードは、ランタイム命令２６０内の多数の実行可能な命令のシーケンスに対応し得る。
【００４６】
図３Ｅは、ランタイム命令２６０のセットの例を示すブロック図である。図示された実施形態において、任意の数の実行可能な命令が、命令１から命令ｎまでのランタイム命令２６０の中に含まれ得る。最適には、多数の機能が、ランタイム命令２６０の中で利用可能であり、それでも、ハンドセット２０、３０で、ほとんどリソース（例えば、持続メモリ）を消費しない。
【００４７】
図４は、ユーザ起動ソフトウェアモジュールダウンロードに対するプロセスの例を示す流れ図である。まず、ステップ３００で、ハンドセットは、ユーザからのアプリケーション要求を受信する。要求は、例えば、モジュラソフトウェアインターフェース２００によって、受信され得る。次いで、ステップ３０２で、ランタイムエンジンが起動される。一度ランタイムエンジンが稼動すると、エンジンは、ステップ３０４に示すように、取られる必要のあるアクションに従って、サーバのオペコードセットを編集し得る。この場合、編集されるべきサーバのオペコードセットは、要求されたソフトウェアアプリケーションまたはモジュールをダウンロードするためであることが好ましい。サーバのオペコードセットは、無線機器上で稼動するバックグラウンドプロセスから取得され得る。代替的に、サーバのオペコードセットは、ユーザの指揮下にある無線機器上で稼働中のプロセスから取得され得る。サーバのオペコードセットが編集された結果、前述したように、サーバは、要求されたソフトウェアモジュールに応答する。
【００４８】
例えば、無線機器は、電話帳アプリケーションに拡張モジュールをダウンロードするようにとの命令をユーザから受信する。それは、以前の１００の連絡先よりも、むしろ合計５００の連絡先が維持管理され得るようにする。ユーザは、ダウンロードされるべき新たなソフトウェアモジュールの名前または識別を提供する。次いで、ハンドセットが連絡先の総数を増加し得るように、ハンドセットに適切なソフトウェアモジュールを提供するために、モジュラソフトウェアサーバを命令するサーバオペコードセットは編集される。このような場合、その結果は、ステップ３０４で示すように、ランタイムエンジンによって生成されたサーバのオペコードセットである。
【００４９】
一度サーバオペコードセットが生成されたら、ランタイムエンジンは、サーバのオペコードセットとともに配信されるデータペイロードロード内の名前または識別情報を含む。例えば、ランタイムエンジンは、持続性メモリまたは揮発性メモリからアプリケーションまたはソフトウェアモジュールを取り出し得るか、あるいは、例えばモジュラソフトウェアインターフェース２００を介して、必要なデータを戻す命令を実行し得る。一度データが取得されたら、ランタイムエンジン２３０は、次いで、ステップ３０６に示すように、サーバのオペコードセット内に、データを挿入する。これを達成する一つの単純な方法は、単一のデータパケット内のサーバのオペコードセットにデータペイロードを添付することである。
【００５０】
一度データペイロードがサーバのオペコードセットと組み合わされたら、ステップ３０８に示すように、ランタイムエンジンは、対応するデータペイロードとともに、サーバオペコードセットをサーバに送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ３１０に示すように、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして、終了され得る。
【００５１】
図５は、無線通信機器上の常駐ソフトウェアモジュールを起動するプロセスの例を示す流れ図である。図５に示すプロセスは、オペコードセットを使用して、または、何らかの他の無線データ通信手段を使用して、実行され得る。最初に、ステップ３２０で、ハンドセットは、ネットワークライセンスサーバからライセンスを要求する。図３Ａに示すソフトウェアライセンスマネージャ２０５は、このステップを起動することが好ましい。ネットワークライセンスサーバは、更新モジュールサーバ６０と同じサーバであり得るか、あるいは、異なる別個のサーバであり得る。一度要求が送信されたら、ハンドセット２０、３０は、次いで、ステップ３２２に示すように、ネットワークライセンスサーバから支払い要件を受信する。それに応答して、ハンドセットは、ステップ３２４に示すように、ネットワークライセンスサーバに支払い明細を提供する。
【００５２】
一実施形態において、ハンドセットは、支払い明細を自動的に提供するように構成され得る。代替的に、ハンドセットは、ユーザからこの情報を要求するように構成され得る。それは、ユーザが、要求されたライセンスに対し支払いする意思があることを保証するためである。支払い明細を送信した後に、ステップ３２６で、ライセンスサーバが支払い明細を受信したことの確認通知をハンドセットは受信する。一実施形態において、この確認通知は、支払いが処理されたことの確認としても機能し得る。
【００５３】
一度確認通知が受信されたら、ステップ３２８で、ハンドセットは、次いで、ライセンスサーバからライセンスまたは起動キーを受信する。起動キーは、ハンドセット上でアプリケーションを使用許可するように構成されることが好ましい。一度キーが受信されたら、次いで、ステップ３３０に示すように、アプリケーションは起動され得る。
【００５４】
図６は、ネットワーク起動のソフトウェアモジュールダウンロードに対するプロセスの例を示す流れ図である。最初に、ステップ３３６で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線通信リンク（例えば、無線通信ネットワークとのリンク）を介して、受信され得る。オペコードは、無線で送信されるデータの量を最小化するために、最適化されることが好ましい。追加として、データペイロードは、ハンドセットによって受信されるオペコードセットとともに含まれ得る。図示された実施形態において、ハンドセットのオペコードセットは、ネットワーク更新モジュールサーバ６０から受信される。
【００５５】
ステップ３３８で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。代替的に、ハンドセットは、最初に、ハンドセットのオペコードセットを送信するネットワークサーバを認証（ａｕｔｈｅｎｔｉｃａｔｅ）し得る。ステップ３４０に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ３４２で、データペイロードを抽出する。データペイロードが存在しない場合、このステップは省略され得るが、しかしながら、ネットワーク更新モジュールサーバ６０は、最初の送信で実行可能なソフトウェアアプリケーションを含み得る。代替的に、ハンドセットのオペコードセットは、ハンドセットに命令して、サーバからソフトウェアモジュールを要求し得る。データペイロードが存在する場合、その結果得られたデータは、後に使用するために、揮発性メモリの利用可能な部分に格納され得る。
【００５６】
次いで、ステップ３４４で、ランタイムエンジンは、ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令を取得する。これらの命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。
【００５７】
一度ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ステップ３４６に示すように、ランタイムエンジンは、その命令を実行する。命令が実行されるとき、操作（またはインストール）されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、あるいは、追加的に、操作されるべき任意の必要なデータは、実行された命令の結果として、取得され得る。
【００５８】
例えば、データペイロードは、ネットワークがハンドセットをインストールするために要求したソフトウェアアプリケーションを備え得る。追加的に、ハンドセットのオペコードセット内の１つ以上のオペコードは、ハンドセット上の持続性メモリ内のデータペイロードを格納する１つ以上の実行可能な命令に対応することが好ましい。本例において、一度ソフトウェアモジュールを備えるデータペイロードが持続性メモリの中に格納されると、ハンドセットは、その後、ユーザによって、あるいは、代替的に、リモートネットワークコマンドによって、そのアプリケーションが使用されることを許可し得る。代替的に、データペイロードは、旧式のソフトウェアアプリケーションまたはモジュール、あるいは、新たなソフトウェアモジュール用のスペースを作るために削除用に選択されたものを含む持続性メモリの一部に置換され得る。このように、ハンドセットのオペコードセットおよびデータペイロードは、ハンドセット用に新たなソフトウェアモジュールをインストールするために、無線機器上で動作する。追加のオペコードおよび命令も、必要に応じて、新たなモジュールまたはアプリケーションが一度インストールされたら、これを構成するために使用され得る。
【００５９】
一度命令セットがランタイムエンジンによってその全てを実行されると、ランタイムエンジンは終了され得、次いで、ステップ３４８に示すように、アプリケーションが実行され得る。特定の例示的な例によって、ネットワーク起動のダウンロードが使用され得る方法を説明する。ハンドセットが、行方不明になった車両または盗難された車両の中にある場合、ハンドセットは、ネットワークによってコンタクトされ得、ＧＰＳモジュールをダウンロードするように命令され得る（ハンドセットがＧＰＳ対応ハードウェアを有すると仮定する）。一度ＧＰＳモジュールがダウンロードされ、インストールされると、ＧＰＳモジュールは、ネットワークに位置情報を報告し始め得る。次いで、そのネットワークは、車両の追跡を円滑にするために、車両の所有者または当局に提供され得る。有利なことに、ハンドセットの近くにいる人からの知見がなくとも、これは全て達成され得る。
【００６０】
図７は、無線通信機器上にソフトウェアモジュールをインストールするためのプロセスの例を示す流れ図である。まず、ステップ３５０で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線通信リンク（例えば、無線通信ネットワークとのリンク）を介して受信され得る。オペコードは、無線で送信されるデータ量を最小化するために、最適化されることが好ましい。追加的に、データペイロードは、ハンドセットによって受信されたオペコードセットに含まれ得る。図示された実施形態において、ハンドセットのオペコードセットは、ネットワークソフトウェアモジュールサーバから受信される。
【００６１】
ステップ３５２で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。代替的に、ハンドセットは、まず、ハンドセットのオペコードセットを送信するネットワークサーバを認証する。ステップ３５４に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ３５６で、データペイロードを抽出する。データのペイロードが存在しない場合、このステップは、このステップは、省略され得る。しかしながら、ネットワークソフトウェアモジュールサーバは、その最初の送信において、実行可能なソフトウェアアプリケーションを含み得る。代替的に、ハンドセットのオペコードセットは、サーバからのソフトウェアモジュールを要求するように、ハンドセットに命令し得る。データペイロードが存在する場合、その結果のデータは、後の使用のために、揮発性メモリの利用可能な部分に格納され得る。
【００６２】
次いで、ステップ３５８で、ランタイムエンジンは、ハンドセットのオペコードセット内にあるオペコードに対応する実行可能な命令を取得する。このような命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。一度ハンドセットオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ランタイムエンジンは、ステップ３６０に示すように、命令を実行する。命令が実行されるとき、操作（またはインストール）されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、または、追加的に、操作されるべき任意の必要なデータは、実行される命令の結果として、取得され得る。一度命令セットがランタイムエンジンによってその全てを実行されると、ステップ３６２で、ランタイムエンジンは終了され得、次いで、ステップ３６４に示すように、アプリケーションは、使用に関して利用可能である。
【００６３】
図８は、無線通信機器上のソフトウェアモジュールを終了するためのプロセスの例を示す流れ図である。最初に、ステップ３７０で、ハンドセットは、満了通知を受信する。満了通知は、無線通信ネットワークを介して受信され得、そのネットワークを介してハンドセットと通信するように結合されたライセンスサーバ（ｌｉｃｅｎｓｉｎｇ  ｓｅｒｖｅｒ）から生成する。一実施形態において、満了通知は、ソフトウェアモジュールに対する試用期間とリンクされ得るか、あるいは、モジュールに対する年間ライセンス料とリンクされ得る。
【００６４】
一度満了通知がハンドセットによって受信されると、ステップ３７２で、そのハンドセットは、自らが自動的にライセンスを更新するように、あるいは、モジュールに対する最初の支払いを行うように、命令されたかどうかを判断する。ハンドセットは、自らが許可されていない、あるいは、自動更新または支払いを命令されていないと判断した場合、次いで、ステップ３７４で、ハンドセットは、ソフトウェアモジュールに対する満了通知をユーザに通知する。
【００６５】
その通知は、ハンドセットのディスプレイ上にメッセージを表示することによって、あるいは、後で再度見たとき用に、ハンドセット上のメモリ内に格納されているテキストメッセージを生成することによって、なされ得る。通知は、ディスプレイ上のメッセージまたは点滅光のように、視覚的でもあり得るし、あるいは、また、事前に録音されたメッセージまたはトーンのように聴覚的でもあり得る。代替的に、点滅光または聴覚的音声トーン（あるいは、ハンドセットの振動）は、メッセージがユーザに利用可能であることを示し得るし、また、そのメッセージが満了通知の詳細を提供し得る。追加的に、ハンドセットは、ネットワーク（または、そのプロセスを起動し得るネットワーク）にメッセージを送信し得る。それは、満了通知をユーザに知らせるユーザの音声メールボックス内に、事前に録音された音声メッセージが残されるようにするようにである。当業者によって、理解されるように、様々な他の通知方法も、また使用され得る。
【００６６】
一度ユーザが満了通知を知らされると、ステップ３７６で、ハンドセットは、ユーザから命令を受信する。この命令は、ステップ３７８で、そのライセンスが更新されるべきかどうか（あるいは、最初の支払いがなされるべきかどうか）を判断するために、ハンドセットによって検討される。ユーザからの命令が、更新（または、支払い）しないことの場合、ステップ３８０で、ハンドセットは、ソフトウェアモジュールをの動作を停止する。一実施形態において、ハンドセットは、停止期間前のライセンス期間または評価期間の最後まで、待機し得る。追加的に、ステップ３７８で判断されたように、何ら命令がユーザから受信されないとき、命令なきことは、否定的な応答として解釈され得、ソフトウェアモジュールは、ステップ３８０で動作停止され得る。
【００６７】
ステップ３７８で、ハンドセットがユーザからの命令が、更新または支払いと判断された場合、ハンドセットは、ステップ３８２に示すように、ネットワークまたはライセンスサーバに更新命令（あるいは、初期の支払い命令）を送信する。追加的に、ステップ３７２で、ハンドセットが、自動更新または支払いを許可されたと判断された場合、ステップ３８２で、ハンドセットは、また、適切な命令を送信する。更新命令の受信側（例えば、ライセンスサーバ）で、支払いは、クレジットカードへの課金によって、あるいは、ハンドセットサービスに対する顧客への請求書に一行項目を追加することによって、なされ得る。
【００６８】
支払いまたは更新に対する命令に応答して、ステップ３８４に示すように、ハンドセットは、ライセンスまたはキーを受信し得る。そのライセンスまたはキーは、ソフトウェアに動作の継続またはさらなる機能の許可の命令をするように使用され得る。ステップ３８６で、ユーザがその後、新たなライセンス期間に対して、ソフトウェアモジュールまたはアプリケーションを使用し得るように、ライセンスまたはキーを用いてアプリケーションが起動される。
【００６９】
図９は、無線通信機器上のソフトウェアモジュールの使用に対する支払いをするプロセスの例を示す流れ図である。最初に、ステップ３９０で、アプリケーションは、そのアプリケーション自身に対する、あるいは、ハンドセット上の他のアプリケーションに対する使用データを収集し得る。このデータは、ハンドセット上の持続性メモリ内に格納され得ることが好ましい。次いで、ステップ３９２で、ランタイムエンジンが起動される。一度ランタイムエンジンが稼動すると、ステップ３９４で示すように、エンジンは、サーバオペコードのセットを編集し得る。サーバのオペコードセットが編集されると、その結果、サーバは、対応するデータペイロードに含まれる使用データを処理することが好ましい。このデータペイロードは、ステップ３９６で、オペコードセット内に挿入される（あるいは、オペコードセットに添付される）。
【００７０】
一度データペイロードがサーバのオペコードセットと組み合わされると、ステップ３９８に示すように、ランタイムエンジンは、対応するデータペイロードとともに、サーバのオペコードセットを、サーバに送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ３９９に示すように、ハンドセットは、サーバから請求明細を受信することが好ましい。請求明細は、サーバのオペコードセットで提供された使用データと関連することが好ましい。最後に、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして終了され得る。
【００７１】
図１３は、新たなハードウェアコンポーネントから概要情報を取得するプロセスの例を示す流れ図である。最初に、ステップ７００で、ハンドセットは、パワーアップする。パワーアップすると、ハンドセットは、様々なハードウェアコンポーネントを調査することが好ましい。例えば、その状態を決定するために、各コンポーネントと通信することによって、この調査をする。代替的に、ハンドセットが、既に動作可能である場合、ハンドセットは、自らの主導によって（例えば、事前に予定されたイベントにより）、あるいは、外部の命令（例えば、ネットワークまたはユーザから受信された）によって、同じ調査プロセスを起動し得る。これは、様々なハードウェアコンポーネントの状態を決定するためである。
【００７２】
次いで、ステップ７０２で、ハンドセットは、新たなハードウェアコンポーネントを検出する。新たなコンポーネントは、新たな機能コンポーネントである必要はないが、以前のハードウェアモジュール（例えば、新たな表示画面）の取り替えであり得る。新たなハードウェアコンポーネントを検出すると、ハンドセットは、次いで、ステップ７０４で、コンポーネントの種類が何であるか（例えば、画面、キーパッド、ラジオチップセットなど）を判断する。ハンドセットは、次いで、ステップ７０６で、新たなコンポーネントに関する情報を取得するために、新たなコンポーネントをクエリする。この新たなコンポーネント情報は、ステップ７０８で、ハンドセットによって受信され、好ましくは、持続性メモリまたは揮発性メモリに格納される。一実施形態において、新たなハードウェアモジュール情報は、新たなハードウェアモジュールを一意的に識別するための識別子を含む。
【００７３】
図１４は、リモートサーバから新たなハードウェアコンポーネント用の機器ドライバを要求するプロセスの例を示す流れ図である。最初に、ステップ７２０で、ランタイムエンジンが起動される。一度ランタイムエンジンが稼動すると、ステップ７２２に示すように、エンジンは、サーバのオペコードセットを編集し得る。サーバのオペコードセットは、無線機器２０、３０上で稼動中のバックグラウンドプロセスから取得され得る。代替的に、サーバのオペコードセットは、ユーザの指揮下にある無線機器上を稼動するプロセスから取得され得る。サーバのオペコードセットが編集されると、その結果、サーバは、実行可能な機器ドライバに応答して、ハンドセットが新たなハードウェアモジュールと通信でき、その機能を十分に利用できるようになることが好ましい。
【００７４】
例えば、無線機器は、新たなハードウェアモジュールがインストールされたことを検出する。新たなハードウェアモジュールは、クエリされ、概要プロファイル情報が取得される。サーバのオペコードセットは、サーバに命令するよう編集される。それは、ハンドセットが新たなハードウェアモジュールと通信し得るように、サーバが、ハンドセットに、新たなハードウェアモジュール用に実行可能な機器ドライバを提供するようにという命令である。このような場合、ステップ７２２に示すように、その結果は、ランタイムエンジンによって生成されたサーバのオペコードセットである。
【００７５】
一度サーバオペコードセットが生成されると、ランタイムエンジンは、サーバのオペコードセットに対応するデータペイロード内の新たなハードウェアモジュールに対する情報を含む。例えば、ランタイムエンジンは、持続性メモリまたは揮発性メモリからハードウェアモジュール情報を取り出し得るか、あるいは、必要とされるデータを返す命令を実行し得る。一度データが取得されると、ステップ７２４に示すように、ランタイムエンジンは、次いで、新たなハードウェアモジュール情報を、サーバオペコードセット内に挿入する。これを実行する一つの簡単な方法は、単一のデータパケット内のサーバのオペコードセットにデータペイロードを添付することである。
【００７６】
一度データペイロードがサーバのオペコードセットと組み合わされると、ステップ７２６に示すように、ランタイムエンジンは、サーバに、対応するデータペイロードとともに、サーバオペコードセットを送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ７２８に示すように、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして終了され得る。
【００７７】
図１５は、無線通信機器上の新たなハードウェアコンポーネント用の機器ドライバをインストールするプロセスの例を示す流れ図である。最初に、ステップ７３０で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線通信リンク（例えば、無線通信ネットワークを用いたリンク）を介して受信され得る。オペコードは、無線で送信されたデータの量を最小化するために、最適化されることが好ましい。追加的に、データペイロードは、ハンドセットによって受信されるオペコードのセットとともに含まれ得る。
【００７８】
ステップ７３２で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。ステップ７３４に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ７３６で、データペイロードを抽出する。データペイロードは、後の使用のために、揮発性メモリで利用可能な部分に格納されることが好ましい。次いで、ランタイムエンジンは、ステップ７３８に示すように、ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令を取得する。これら命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。
【００７９】
一度ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ステップ７４０に示すように、ランタイムエンジンは、命令を実行する。命令が実行されているとき、操作されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、あるいは、追加的に、操作されるべき任意の必要なデータは、実行された命令の結果として、取得され得る。命令セットを実行した結果、新たなハードウェアモジュール用の機器ドライバが、ハンドセット上にインストールされることが好ましい。
【００８０】
例えば、データペイロードは、ハンドセットが新たなハードウェアモジュールと通信するのに必要とされる機器ドライバを備える。追加的に、ハンドセットのオペコードセット内の１つ以上のオペコードは、ハンドセット上の持続性メモリ内のデータペイロードを格納するための１つ以上の実行可能な命令に対応することが好ましい。本例において、一度機器ドライバを備えるデータペイロードが持続性メモリ内に格納されると、ハンドセットは、その後、機器ドライバを使用して、新たなハードウェアモジュールと通信し得る。この機器ドライバは、新たなハードウェアモジュールの機能性の利点をフルに活かすように構成されることが、好ましい。
【００８１】
代替的に、データペイロードは、置換されたハードウェアコンポーネント用の旧式機器ドライバを含む持続性メモリの一部を置換し得る。このように、新たなハードウェアモジュール用の新たな機器ドライバをインストールするために、ハンドセットのオペコードセットおよびデータペイロードは、無線機器上で動作する。追加のオペコードおよび命令は、新たな機器ドライバが一度インストールされると、新たな機器ドライバまたはハンドセットの他の局面を構成するためにも使用され得る。
【００８２】
一度ランタイムエンジンによって命令セットはその全てを実行されると、ステップ７４２に示すように、ランタイムエンジンは、終了され得る。有利なことに、ランタイムエンジンは、自身が必要なときのみ稼動するように、起動および終了され得る。このため、無線機器上のシステムリソースをセーブする。例えば、揮発性メモリのスペース、ＣＰＵサイクルおよび電池寿命などをセーブし得る。一度新たなハードウェアモジュール用の機器ドライバがインストールされ、使用するために構成されると、ステップ７４６に示すように、ハンドセットは、通常の動作の際に、新たなハードウェアモジュールを使用し始め得る。
【００８３】
図１６は、無線通信機器上の新たなハードウェアコンポーネントを構成するプロセスの例を示す流れ図である。最初に、ステップ７５０で、セットアップ要求を新たなハードウェアモジュールに送信するために、ハンドセットは、新たな機器ドライバを使用する。次いで、ステップ７５２で、ハンドセットは、新たなハードウェアモジュールから応答を受信する。一実施形態において、応答は、ハードウェアモジュールに関する、より包括的なプロファイル情報を備え得る。その情報は、機器の動作を細かくチューニングするために、機器ドライバによって解釈され得る。例えば、その応答は、ハードウェアコンポーネントまたはその通信能力に関する追加情報（例えば、そのインターフェースバージョンまたは他の情報）を、機器ドライバに提供し得る。それは、機器ドライバと新たなハードウェアモジュールとの間の通信をより効率的に行うためである。
【００８４】
代替的に、応答は、ステップ７５４で判断されるように、新たなハードウェアモジュールと通信しようとする試みが不成功であるという命令であり得る。セットアップ要求が、セットアップが不成功であったことを示す応答を受信した場合、ハンドセットは、ステップ７５０に戻り、別のセットアップ要求を送信する。一実施形態において、正しくフォーマットされた要求が、新たなハードウェアコンポーネントに提供されるまで、ハンドセットは、所定の数（例えば、Ｎ個）のセットアップ要求を繰り返し得る。例えば、様々なセットアップは、インターフェースの異なるバージョン、または、機器ドライバ用の異なる通信モードに適合し得る。
【００８５】
反復プロセスの間、ずっと機能するために、機器ドライバと新たなハードウェアモジュールに対する同期化問題があり得る。それゆえ、成功という応答を受信する特定のセットアップ要求は、機器ドライバに、新たなハードウェアモジュールにインストールされたファームウェアのバージョンに関する重要な情報、新たなハードウェアモジュールの能力、および、新たなハードウェアモジュールに関する他の情報を、有利なように提供し得る。一度、ステップ７５４で判断されたように、成功という応答を新たなハードウェアモジュールから受信すると、ステップ７５６に示すように、ハンドセットは、通常の動作の際に、新たなハードウェアモジュールの使用へと進む。成功という応答が受信されなかった場合、Ｎ個のセットアップ要求が受信され、古い機器ドライバが回復され得る。有利なことに、下位互換性のある機器は、古い機器ドライバを介して新たな機能性または改善された機能性は利用可能でないこともあるが、古い機器ドライバで動作する。
【００８６】
外部機器から概要情報を取得するプロセスの例を示す流れ図が、本発明の別の実施形態に対し、図１８に示される。最初に、ステップ８００で、ハンドセットは、外部機器からの接続を検出する。接続は、有線リンクまたは無線リンクによって検出され得る。接続を検出すると、ステップ８０２に示すように、ハンドセットは、その接続がユーザによって開始されたかどうかを判断する。例えば、新たな機器が接続されているハンドセットを命令するために、ユーザは、一連のキーを押し得るか、あるいは、音声コマンドを発し得る。一実施形態において、接続がユーザによって起動されたら、概要機器情報がユーザから直接ハンドセットに提供される。このような実施形態において、次いで、ステップ８０４で、ハンドセットは、概要機器情報を格納する。
【００８７】
代替的に、検出がユーザによって起動されなかった場合、次いで、ステップ８０６に示すように、ハンドセットは、外部機器を求めてクエリを策定する。クエリは、有利なように、標準プロトコルに準じ得るか、あるいは、専用プロトコルであり得る。一度クエリが策定されると、ステップ８０８で、ハンドセットは、外部機器にクエリを送信する。ステップ８１０で、ハンドセットは、有効な応答が外部機器から受信されたかどうかを判断する。全く応答のない場合、または、応答が無効な場合、ハンドセットは、ステップ８０６に戻り得、クエリを再策定し、外部機器の再度のクエリへと進む。有利なことに、ハンドセットは、有効な応答を受信するまで、様々な既知のクエリフォーマットおよびプロトコルを繰り返し得る。一度有効な応答が受信されると、好ましくは、外部機器に関する概要プロファイル情報を含む応答が受信されると、ステップ３０４に示すように、ハンドセットは、概要プロファイル情報を格納する。
【００８８】
図１９は、リモートサーバからインターフェースソフトウェアを要求するプロセスの例を示す流れ図である。最初に、ステップ８２０で、ランタイムエンジンが起動する。一度ランタイムエンジンが稼動すると、エンジンは、ステップ８２２に示すように、サーバのオペコードセットを編集し得る。サーバのオペコードセットは、無線機器上で稼動するバックグラウンドプロセスから取得され得る。代替的に、サーバのオペコードセットは、ユーザの指揮下にある無線機器上を稼動するプロセスから取得され得る。サーバオペコードのセットが編集されると、その結果、サーバは、ハンドセットに接続された特定の外部機器に対する実行可能なインターフェースに応答することが好ましい。
【００８９】
例えば、無線機器は、外部機器からの接続を検出する。外部機器は、クエリされ、概要プロファイル情報が取得される。サーバのオペコードセットは、サーバがハンドセットに、外部機器に対する実行可能なインターフェースを提供する命令を編集させる。これは、ハンドセットが外部機器と通信し得るようにするためである。このような場合、その結果は、ステップ８２２に示すように、ランタイムエンジンによって生成されたサーバのオペコードセットである。
【００９０】
一度サーバのオペコードセットが生成されたら、ランタイムエンジンは、サーバのオペコードセットに対応するデータペイロード内において、外部機器に対する概要情報を含む。例えば、ランタイムエンジンは、概要プロファイルデータを持続性メモリまたは揮発性メモリから取り出し得るか、あるいは、必要とされるデータを戻す命令を実行し得る。一度データが取得されたら、ランタイムエンジンは、ステップ８２４に示すように、次いで、サーバのオペコードセット内にデータを挿入する。これを達成する一つの単純な方法は、単一のデータパケット内のサーバのオペコードセットにデータペイロードを添付することである。
【００９１】
一度データペイロードがサーバのオペコードセットと組み合わされたら、ステップ８２６に示すように、ランタイムエンジンは、対応するデータペイロードとともに、サーバオペコードセットをサーバに送信する。サーバのオペコードセットおよびデータペイロードが送信された後、ステップ８２８に示すように、ランタイムエンジンは、無線機器上のリソースを自由に使えるようにして、終了され得る。
【００９２】
図２０は、無線通信機器上のインターフェースソフトウェアをインストールするプロセスの例を示す流れ図である。最初に、ステップ８３０で、無線機器は、ハンドセットのオペコードセットを受信する。ハンドセットのオペコードセットは、無線機器通信リンク（例えば、無線通信ネットワークを有するリンク）を介して、受信され得る。オペコードは、無線で送信されるデータ量を最小化するために、最適化されることが好ましい。追加的に、データペイロードは、ハンドセットによって受信されるオペコードセットとともに含まれ得る。
【００９３】
ステップ８３２で、無線機器は、ハンドセットのオペコードセットを処理するために、そのランタイムエンジンを起動する。ステップ８３４に示すように、ランタイムエンジンは、ハンドセットのオペコードセットを解析し、次いで、ステップ８３６で、データペイロードを抽出する。データペイロードが存在しない場合、このステップは省略され得る。データペイロードが存在する場合、その結果得られたデータは、後の使用のために、揮発性メモリで利用可能な部分に格納され得る。次いで、ランタイムエンジンは、ステップ８３８に示すように、ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令を取得する。これら命令は、ハンドセットのデータストレージ領域上の持続性ストレージ内に格納されたリモートランタイム命令セットから取得され得る。
【００９４】
一度ハンドセットのオペコードセット内のオペコードに対応する実行可能な命令が取得されると、ステップ８４０に示すように、ランタイムエンジンは、命令を実行する。命令が実行されているとき、操作されるべき任意の必要なデータは、データペイロードが格納される揮発性メモリから取得され得る。代替的に、あるいは、追加的に、操作されるべき任意の必要なデータは、実行された命令の結果として、取得され得る。
【００９５】
例えば、データペイロードは、外部機器と通信するために、ハンドセットによって必要とされるインターフェースを備え得る。追加的に、ハンドセットのオペコードセット内の１つ以上のオペコードは、ハンドセット上の持続性メモリ内のデータペイロードを格納するための１つ以上の実行可能な命令に対応することが好ましい。本例において、一度インターフェースを備えるデータペイロードが持続性メモリ内に格納されると、ハンドセットは、その後、実行可能なインターフェースを使用して、機器と通信し得る。代替的に、データペイロードは、特定の外部機器に対する旧式のインターフェースを含む持続性メモリの一部と置換し得る。こうして、ハンドセットのオペコードセットおよびデータペイロードは、外部機器に対する新たなインターフェースをインストールするように、無線機器上で動作する。必要に応じて、追加のオペコードおよび命令も、また、新たなインターフェースが一度インストールされたら、それを構成するように使用され得る。
【００９６】
一度命令のセットがランタイムエンジンによってその全体を実行されると、ステップ８４２に示すように、ランタイムエンジンは終了され得る。有利なことに、ランタイムエンジンは、必要なときのみ稼動するように、起動および終了され得る。これによって、無線機器上のシステムリソースをセーブする。例えば、揮発性メモリのスペースおよびＣＰＵサイクルをセーブし得る。一度外部機器に対するインターフェースがインストールされ、使用するために構成されると、ステップ８４６に示すように、ハンドセットは、外部機器と通信を開始し得る。
【００９７】
図２１は、外部機器を初期化するプロセスの例を示す流れ図である。最初に、ステップ８５０で、ハンドセットは、セットアップ要求を外部機器に送信するために、新たなインターフェースを使用する。次に、ステップ８５２で、ハンドセットは、外部機器からの応答を受信する。一実施形態において、応答は、機器に関する、さらに包括的なプロファイル情報を備え得る。例えば、その応答は、機器間の通信をより効率的にするインターフェースバージョンまたは他の情報のような通信インターフェースに関連する追加情報をハンドセットに提供し得る。
【００９８】
代替的に、応答は、ステップ８５４で判断されたような外部機器を初期化する試みが不成功であったことを示すものであり得る。セットアップ要求が、セットアップの不成功を示す応答を受信すると、ハンドセットは、ステップ８５０に戻り、他のセットアップ要求を送信する。一実施形態において、ハンドセットは、正しくフォーマットされた要求が外部機器に提供されるまで、様々なセットアップ要求を介して、繰り返し得る。例えば、様々なセットアップ要求は、インターフェースの異なるバージョンに適応し得る。従って、成功という応答を受信する特定のセットアップ要求は、外部機器上にインストールされるファームウェアのバージョンに関する重要な情報、外部機器の能力、および、外部機器に関する他の情報をハンドセットに有利なように提供し得る。ステップ８５４で判断されたように、一度成功という応答を外部機器から受信すると、ステップ８５６に示すように、ハンドセットは、外部機器との情報交換に進み得る。
【００９９】
図１０は、本明細書に記載された様々な実施形態と関連して使用され得る例示的な無線通信機器４５０を示すブロック図である。例えば、無線通信機器４５０は、ハンドセットまたはＰＤＡネットワーク機器と一緒に、あるいは、無線メッシュネットワーク内のセンサノードの一部として使用され得る。しかしながら、当業者には明らかなように、他の無線通信機器および／またはアーキテクチャも、また使用され得る。
【０１００】
図の実施形態において、無線通信機器４５０は、アンテナ４５２、マルチプレクサ４５４、低ノイズアンプ（「ＬＮＡ」）４５６、パワーアンプ（「ＰＡ」）４５８、変調回路４６０、ベースバンドプロセッサ４６２、スピーカ４６４、マイク４６６、中央演算処理装置（「ＣＰＵ」）４６８、データストレージ領域４７０、および、ハードウェアインターフェース４７２を備える。無線通信機器４５０において、無線周波数（「ＲＦ」）信号は、アンテナ４５２によって、送信され、受信される。マルチプレクサ４５４は、スイッチとして機能し、送信信号経路と受信信号経路との間のアンテナ４５２を結合する。受信経路において、受信ＲＦ信号は、マルチプレクサ４５４からＬＮＡ４５６に結合される。ＬＮＡ４５６は、受信ＲＦ信号を増幅し、増幅信号を変調回路４６０の復調部分に結合する。
【０１０１】
典型的に、変調回路４６０は、１つの集積回路（「ＩＣ」）内で、復調器および変調器を結合する。復調器および変調器は、個別のコンポーネントでもあり得る。復調器は、ＲＦキャリア信号を取り除き、ベースバンド受信信号を残す。このベースバンド受信信号は、復調器の出力からベースバンドプロセッサ４６２に送信される。
【０１０２】
ベースバンド受信音声信号が、音声情報を含む場合、ベースバンドプロセッサ４６２は、信号を復号化し、それをアナログ信号に変換する。次いで、信号は、増幅され、スピーカ４６４に送信される。ベースバンドプロセッサ４６２は、アナログ音声信号をマイク４６６から受信する。これらアナログ音声信号は、デジタル信号に変換され、ベースバンド信号プロセッサ４６２によって、符号化される。バースバンドプロセッサ４６２は、また、デジタル信号を送信用に符号化し、ベースバンド送信音声信号を生成する。このベースバンド送信音声信号は、変調回路４６０の変調部分にルーティングされる。変調器は、ベースバンド送信音声信号をＲＦキャリア信号と混合し、ＲＦ送信信号を生成する。このＲＦ送信信号は、パワーアンプ４５８にルーティングされる。パワーアンプ４５８は、ＲＦ送信信号を増幅し、それをマルチプレクサ４５４にルーティングする。このマルチプレクサ４５４で、この信号は、アンテナ４５２による送信のため、アンテナポートに切り替えられる。
【０１０３】
ベースバンドプロセッサ４６２は、中央演算処理装置４６８とも、また通信できるように結合される。中央演算処理装置４６８は、データストレージ領域４７０へのアクセスを有する。中央演算処理装置４６８は、命令を実行するように構成されることが好ましい（すなわち、コンピュータプログラムまたはソフトウェア）。この命令は、データストレージ領域４７０内に格納され得る。コンピュータプログラムは、ベースバンドプロセッサ４６２からも、また受信され得、データストレージ領域４７０内に格納され得るか、受信すると実行され得る。実行されると、このようなコンピュータプログラムは、無線通信機器４５０が前述したような本発明の様々な機能を行うことを可能にする。
【０１０４】
本記述において、「コンピュータ読み出し可能媒体」とは、中央演算処理装置４６８による実行のために、無線通信機器４５０に実行可能な命令（例えば、ソフトウェアおよびコンピュータプログラム）を提供するために使用される任意の媒体を示すために、使用される。このような媒体の例には、データストレージ領域４７０、マイク４６６（ベースバンドプロセッサ４６２を介する）、アンテナ４５２（これもまたベースバンドプロセッサ４６２を介する）、および、ハードウェアインターフェース４７２を含む。これらコンピュータ読み出し可能媒体は、実行可能なコード、プログラミング命令、および、ソフトウェアを無線通信機器４５０に提供する手段である。実行可能なコード、プログラミング命令、および、ソフトウェアは、これらが中央演算処理装置４６８によって実行されたとき、好適には中央処理装置４６８に、本明細書に前述した発明の特徴および機能を実行することが好ましい。
【０１０５】
中央演算処理装置は、ハードウェアインターフェースによって新たな機器が検出されたとき、ハードウェアインターフェース４７２からの通知を受信するように構成されることが好ましい。ハードウェアインターフェース４７２は、ＣＰＵ４６８と通信し、新たな機器と相互作用するソフトウェアを制御するコンビネーション電気機械検出器であり得る。
【０１０６】
図１１は、本明細書に記載された様々な実施形態と関連して使用され得る例示的なコンピュータシステム５５０を示すブロック図である。例えば、コンピュータシステム５５０は、サーバオペコードセットを処理し、ハンドセットオペコードセットを作成および送信するように構成されたリモートサーバと一緒に使用され得る。しかしながら、当業者には明らかなように、他のコンピュータシステムおよび／またはアーキテクチャも使用され得る。
【０１０７】
コンピュータシステム５５０は、プロセッサ５５２のような１つ以上のプロセッサを含むことが好ましい。追加のプロセッサとしては、入出力を管理する補助プロセッサ、浮動小数点演算操作を実行する補助プロセッサ、信号処理アルゴリズムの高速実行に適したアーキテクチャを有する特殊目的のマイクロプロセッサ（例えば、デジタル信号プロセッサ）、メインの処理システムに従属するスレーブプロセッサ（例えば、バックエンドプロセッサ）、二元または多元プロセッサシステム用の追加マイクロプロセッサまたはコントローラ、あるいは、共通プロセッサのようなプロセッサが提供され得る。このような補助プロセッサは、ディスクリートプロセッサであり得るか、あるいは、プロセッサ５５２に統合され得る。
【０１０８】
プロセッサ５５２は、通信バス５５４に接続されることが好ましい。通信バス５５４は、コンピュータシステム５５０のストレージと他の周辺コンポーネントとの間の情報移動を容易にするデータチャネルを含み得る。通信バス５５４は、さらに、プロセッサ５５２（データバス、アドレスバス、および制御バス（図示せず）を含む）と通信するために使用される信号セットを提供し得る。通信バス５５４は、標準であるか否かを問わず、任意のバスアーキテクチャを備え得る。例えば、業界標準アーキテクチャ（「ＩＳＡ」）、拡張業界標準アーキテクチャ（「ＥＩＳＡ」）、マイクロチャネルアーキテクチャ（「ＭＣＡ」）、周辺コンポーネント相互接続（「ＰＣＩ」）ローカルバス、あるいは、電気電子技術者協会（「ＩＥＥＥ」）によって普及した規格（ＩＥＥＥ４８８汎用インターフェースバス（「ＧＰＩＢ」）やＩＥＥＥ６９６／Ｓ−１００などを含む）に準じるバスアーキテクチャである。
【０１０９】
コンピュータシステム５５０は、主メモリ５５６を含むことが好ましく、また、二次メモリ５５８も含み得る。主メモリ５５６は、プロセッサ５５２上で実行するプログラム用の命令およびデータのストレージを提供する。主メモリ５５６は、典型的には、ダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）および／またはスタティックランダムアクセスメモリ（「ＳＲＡＭ」）のような半導体ベースのメモリである。他の半導体ベースのメモリのタイプは、例えば、シンクロナスダイナミックランダムアクセスメモリ（「ＳＤＲＡＭ」）、ランバスダイナミックランダムアクセスメモリ（「ＲＤＲＡＭ」）、強誘電体ランダムアクセスメモリ（「ＦＲＡＭ」）などで、読み出し専用メモリ（「ＲＯＭ」）も含む。
【０１１０】
二次メモリ５５８は、オプションとして、ハードディスクドライブ５６０および／または取り外し可能なストレージドライブ５６２（例えば、フロッピディスクドライブ、磁気テープドライブ、コンパクトディスク（「ＣＤ」）、デジタル汎用ディスク（「ＤＶＤ」）など）を含み得る。取り外し可能なストレージドライブ５６２は、周知の方法で、取り外し可能なストレージ媒体５６４から読み出し、および／または、その媒体５６４に書き込む。取り外し可能なストレージ媒体５６４は、例えば、フロッピディスク、磁気テープ、ＣＤ、ＤＶＤなどであり得る。
【０１１１】
取り外し可能なストレージ媒体５６４は、その媒体上にコンピュータ実行可能なコード（すなわち、ソフトウェア）および／またはデータを格納したコンピュータ読み出し可能な媒体であることが好ましい。取り外し可能なストレージ媒体５６４上に格納されたコンピュータソフトウェアまたはデータは、電気通信信号５７８として、コンピュータシステム５５０の中に読み出される。
【０１１２】
代替的な実施形態において、二次メモリ５５８は、コンピュータプログラムを可能にする他の同様な手段、あるいは、コンピュータシステム５５０の中にロードされるべき他のデータまたは命令を含み得る。このような手段には、例えば、外部ストレージ媒体５７２およびインターフェース５７０を含み得る。外部ストレージ媒体５７２の例には、外部ハードディスクドライブまたは外部光学ドライブ、あるいは、外部磁気光学ドライブを含み得る。
【０１１３】
二次メモリ５５８の他の例には、プログラマブル読み出し専用メモリ（「ＰＲＯＭ」）、消去可能プログラマブル読み出し専用メモリ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブル読み出し専用メモリ（「ＥＥＰＲＯＭ」）、あるいは、フラッシュメモリ（ＥＥＰＲＭに類似したブロック適応型メモリ）のような半導体ベースのメモリを含み得る。また、取り外し可能なストレージユニット５７２およびインターフェース５７０も含まれ、これらによって、ソフトウェアおよびデータが、取り外し可能なストレージユニット５７２からコンピュータシステム５５０へ移動されることが可能になる。
【０１１４】
コンピュータシステム５５０は、また、通信インターフェース５７４も含み得る。通信インターフェース５７４によって、ソフトウェアおよびデータが、コンピュータシステム５５０と外部機器（例えば、プリンタ）、ネットワークまたは情報源との間を移動可能となる。例えば、コンピュータソフトウェアまたは実行可能なコードは、ネットワークサーバから、通信インターフェース５７４を介して、コンピュータシステム５５０に移動され得る。通信インターフェース５７４の例としては、ほんの数例を挙げると、モデム、ネットワークインターフェースカード（「ＮＩＣ」）、通信ポート、ＰＣＭＣＩＡスロットおよびカード、赤外線インターフェース、ならびに、ＩＥＥＥ  １３９４ファイヤワイヤである。
【０１１５】
通信インターフェース５７４は、業界で普及したプロトコル基準をインプリメントすることが好ましい。例えば、イーサネット（登録商標）ＩＥＥＥ８０２規格、ファイバチャネル、デジタル加入者回線（「ＤＳＬ」）、非対称型デジタル加入者回線（「ＡＤＳＬ」）、フレームリレー、非同期転送モード（「ＡＴＭ」）、デジタル総合サービス網（「ＩＳＤＮ」）、パーソナル通信サービス（「ＰＣＳ」）、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、シリアル回線インターネットプロトコル／ポイントツーポイントプロトコル（「ＳＬＩＰ／ＰＰＰ」）などであるが、カスタム化されたプロトコルまたは標準化されていないプロトコルも、またインプリメントされ得る。
【０１１６】
通信インターフェース５７４を介するソフトウェアおよびデータは、一般的に、電気通信信号５７８の形式である。これら信号５７８は、通信チャネル５７６を介する通信インターフェース５７４に提供されることが好ましい。通信チャネル５７６は、信号５７８を運び、様々な通信手段を用いて、インプリメントされ得る。この様々な通信手段は、ほんの幾つか例を挙げると、ワイヤまたはケーブル、光ファイバ、従来の電話線、携帯電話リンク、無線周波数（ＲＦ）リンク、あるいは、赤外線リンクなどである。
【０１１７】
コンピュータで実行可能なコード（すなわち、コンピュータプログラムまたはソフトウェア）は、主メモリ５５６および／または二次メモリ５５８内に格納される。コンピュータプログラムは、また、通信インターフェース５７４を介しても受信され得、主メモリ５５６および／または二次メモリ５５８内に格納され得る。このようなコンピュータプログラムは、実行されたとき、コンピュータシステム５５０が、上述したような本発明の様々な機能を実行することを可能にする。
【０１１８】
本記述において、「コンピュータ読み出し可能媒体」という用語は、コンピュータシステム５５０にコンピュータ実行可能コード（例えば、ソフトウェアおよびコンピュータプログラム）を提供するために使用される任意の媒体について言及するために使用される。この媒体の例には、主メモリ５５６、二次メモリ５５８（ハードディスクドライブ５６０、取り外し可能ストレージ媒体５６４、および、外部ストレージ媒体５７２を含む）、および、通信インターフェース５７４と通信できるように結合された任意の周辺機器（ネットワーク情報サーバまたは他のネットワーク機器を含む）を含む。これらのコンピュータ読み出し可能媒体は、コンピュータシステム５５０に、実行可能なコード、プログラミング命令およびソフトウェアを提供する手段である。
【０１１９】
ソフトウェアを使用してインプリメントされる実施形態において、ソフトウェアは、取り外し可能ストレージドライブ５６２、インターフェース５７０または通信インターフェース５７４によって、コンピュータ読み出し可能媒体上に格納され得、コンピュータシステム５５０内にロードされ得る。このような実施形態において、ソフトウェアは、電気通信信号５７８の形式で、コンピュータシステム５５０の中にロードされる。ソフトウェアは、プロセッサ５５２によって実行されたとき、その結果として、プロセッサ５５２が、本明細書で上述された発明の特徴および機能を実行することが好ましい。
【０１２０】
様々な実施形態は、例えば、特定用途向け集積回路（「ＡＳＩＣ」）あるいはフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）のようなコンポーネントを用いて、主としてハードウェアの中でも、またインプリメントされ得る。本明細書で上述した機能を実行可能なハードウェア状態機械のインプリメンテーションは、当業者には、これもまた明らかである。また、様々な実施形態は、ハードウェアとソフトウェアとの双方の組み合わせを用いても、インプリメントされ得る。
【０１２１】
本明細書で詳細に図示され、記載された無線通信機器用の特定のモジュラソフトウェアコンポーネントは、本発明の上述の目的を十分に達成可能であるが、本明細書に示された記載および図示は、現時点における本発明の好ましい実施形態を示し、それゆえ、本発明によって幅広く期待される主題の代表でもあることは、理解されるべきである。本発明の範囲は、当業者によって明白となり得る他の実施形態を十分に含むこと、および、それゆえ、本発明の範囲は、添付の請求項以外では何ら制限されないことも、さらに理解されるべきである。
【図面の簡単な説明】
【０１２２】
【図１】図１は、無線通信ネットワークの例を示すハイレベルなブロック図である。
【図２】図２は、無線通信機器上の持続性ストレージ内データの表示例を示すブロック図である。
【図３】図３Ａは、モジュラソフトウェアインターフェースコンポーネント用のデータストレージ領域のコンポーネントを示すブロック図である。図３Ｂは、モジュラハードウェア検出器コンポーネント用のデータストレージ領域のコンポーネントを示すブロック図である。図３Ｃは、モジュラ外部機器検出器コンポーネント用のデータストレージ領域のコンポーネントを示すブロック図である。図３Ｄは、操作コードライブラリ、および、それに対応するランタイム命令セットの例を示すブロック図である。図３Ｅは、ランタイム命令セットの例を示すブロック図である。
【図４】図４は、ユーザ起動ソフトウェアモジュールダウンロードに対するプロセスの例を示す流れ図である。
【図５】図５は、無線通信機器上に常駐するソフトウェアモジュールを起動するプロセスの例を示す流れ図である。
【図６】図６は、ネットワーク起動ソフトウェアモジュールダウンロードに対するプロセスの例を示す流れ図である。
【図７】図７は、無線通信機器上にソフトウェアモジュールをインストールするプロセスの例を示す流れ図である。
【図８】図８は、無線通信機器上のソフトウェアモジュールを終了するプロセスの例を示す流れ図である。
【図９】図９は、無線通信機器上のソフトウェアモジュールの使用に対する支払いをするプロセスの例を示す流れ図である。
【図１０】図１０は、本明細書に記載された様々な実施形態と関連して使用され得る例示的な無線通信機器を示すブロック図である。
【図１１】図１１は、本明細書に記載された様々な実施形態と関連して使用され得る例示的なコンピュータシステムを示すブロック図である。
【図１２】図１２は、例示的な無線通信機器およびハードウェアコンポーネントを示すブロック図である。
【図１３】図１３は、無線通信機器上の新たなハードウェアコンポーネントから概要情報を取得するプロセスの例を示す流れ図である。
【図１４】図１４は、リモートサーバから新たなハードウェアコンポーネント用の機器ドライバを要求するプロセスの例を示す流れ図である。
【図１５】図１５は、無線通信機器上の新たなハードウェアコンポーネント用の機器ドライバをインストールするプロセスの例を示す流れ図である。
【図１６】図１６は、無線通信機器上の新たなハードウェアコンポーネントを構成するプロセスの例を示す流れ図である。
【図１７】図１７Ａは、無線通信機器と外部機器との間の直接物理接続の例を示すブロック図である。図１７Ｂは、無線通信機器と外部機器との間の直接無線接続の例を示すブロック図である。図１７Ｃは、無線通信機器と外部機器との間のリモート無線接続の例を示すブロック図である。
【図１８】図１８は、外部機器から概要情報を取得するプロセスの例を示す流れ図である。
【図１９】図１９は、リモートサーバからインターフェースソフトウェアを要求するプロセスの例を示す流れ図である。
【図２０】図２０は、インターフェースソフトウェアをインストールするプロセスの例を示す流れ図である。
【図２１】図２１は、外部機器を初期化するプロセスの例を示す流れ図である。
【図１】
2008500794.tif 000003
【図２】
2008500794.tif 000004
【図３】
2008500794.tif 000005
【図４】
2008500794.tif 000006
【図５】
2008500794.tif 000007
【図６】
2008500794.tif 000008
【図７】
2008500794.tif 000009
【図８】
2008500794.tif 000010
【図９】
2008500794.tif 000011
【図１０】
2008500794.tif 000012
【図１１】
2008500794.tif 000013
【図１２】
2008500794.tif 000014
【図１３】
2008500794.tif 000015
【図１４】
2008500794.tif 000016
【図１５】
2008500794.tif 000017
【図１６】
2008500794.tif 000018
【図１７】
2008500794.tif 000019
【図１８】
2008500794.tif 000020
【図１９】
2008500794.tif 000021
【図２０】
2008500794.tif 000022
【図２１】
2008500794.tif 000023
【国際調査報告】
2008500794.tif 000024
2008500794.tif 000025
2008500794.tif 000026