(57)【要約】      （修正有）【課題】移動体コンピューティング装置とアクセサリとの間で通信するための種々の通信技術を提供する。【解決手段】移動体コンピューティング装置に一般的なアクセサリプロトコルは、ある通信に対して使用可能である。移動体コンピューティング装置上で実行されているアプリケーションは、アプリケーション通信プロトコルを使用してアクセサリと通信できる。いくつかの実施形態において、アプリケーション通信プロトコルは、アクセサリ通信プロトコルと異なってもよい。他の実施形態において、アプリケーションプロトコルはアプリケーション及びアクセサリによってのみ認識されてもよい。いくつかの実施形態において、アプリケーションプロトコルに準拠するメッセージは、メッセージをアクセサリ通信プロトコルに準拠するメッセージ内にパッケージ化することによりアプリケーションとアクセサリとの間で通信される。【選択図】図２
2010233217.tif 000002
【特許請求の範囲】
【請求項１】
アクセサリ装置と、移動体コンピューティング装置上で実行されているアプリケーションとの間で通信するための、前記アクセサリ装置において動作する方法であって、
アクセサリ通信プロトコルを使用して、少なくとも１つのアプリケーション通信プロトコルを指定する情報を前記移動体コンピューティング装置と通信する工程と、
前記アクセサリ通信プロトコルを使用して、前記移動体コンピューティング装置上で実行されているアプリケーションと通信する工程と
を備える方法。
【請求項２】
前記アクセサリ通信プロトコルを使用して、前記移動体コンピューティング装置において実行されているオペレーティングシステムと通信する工程を更に備えることを特徴とする請求項１記載の方法。
【請求項３】
前記移動体コンピューティング装置上で実行されているアプリケーションと通信する工程は、アクセサリ通信プロトコルパケット内のアプリケーション通信プロトコルパケットをトンネルする工程を含むことを特徴とする請求項１記載の方法。
【請求項４】
前記移動体コンピューティング装置上で実行されている前記アプリケーションからアプリケーション通信プロトコルコマンドを受信する工程と、
該受信に応答して前記アクセサリ装置の状態を変更する工程と
を更に備えることを特徴とする請求項１記載の方法。
【請求項５】
前記移動体コンピューティング装置上で実行されている前記アプリケーションからのコマンドに応答して、前記移動体コンピューティング装置上で実行されている前記アプリケーションにデータを送信する工程を更に備え、
前記データは前記アプリケーション通信プロトコルを使用して送信され、前記コマンドは前記アクセサリ通信プロトコルを使用して受信される
ことを特徴とする請求項１記載の方法。
【請求項６】
少なくとも１つのアプリケーション通信プロトコルを指定する前記情報は、逆ドメイン名規則に従って提供されることを特徴とする請求項１記載の方法。
【請求項７】
前記アクセサリ通信プロトコルを使用して、前記アクセサリにより前記移動体コンピューティング装置の機能を制御する工程を更に備えることを特徴とする請求項１記載の方法。
【請求項８】
筺体と、
少なくとも部分的に前記筺体内に配設され、移動体コンピューティング装置とコマンド及びデータを交換するように構成され、少なくとも１つのポートを有する通信インタフェースと、
前記筺体内に配設され、前記通信インタフェースと通信可能に結合される制御ロジックであって、
アクセサリ通信プロトコルを使用して、前記通信インタフェースを介して前記移動体コンピューティング装置上で実行されているオペレーティングシステムと通信し、
アクセサリ通信プロトコルを使用して、前記通信インタフェースを介して前記移動体コンピューティング装置上で実行されているアプリケーションと通信するように構成された制御ロジックと
を備えることを特徴とするアクセサリ装置。
【請求項９】
前記制御ロジックは、前記アクセサリ通信プロトコルを使用して、前記アプリケーション通信プロトコルを指定する情報を通信するように構成されていることを特徴とする請求項８記載のアクセサリ装置。
【請求項１０】
前記制御ロジックは、前記アクセサリ通信プロトコル以外の標準通信プロトコルを使用して、前記アプリケーション通信プロトコルを指定する情報を通信するように構成されていることを特徴とする請求項８記載のアクセサリ装置。
【請求項１１】
前記アプリケーション通信プロトコルを指定する情報は、逆ドメイン名規則を使用して前記移動体コンピューティング装置と通信されることを特徴とする請求項９記載のアクセサリ装置。
【請求項１２】
前記通信インタフェースは、無線通信インタフェースを含むことを特徴とする請求項９記載のアクセサリ装置。
【請求項１３】
アクセサリ装置と、移動体コンピューティング装置上で実行されているアプリケーションとの間で通信するための、前記アクセサリ装置において動作する方法であって、
アクセサリ通信プロトコルを使用して、アプリケーションプロトコル文字列、前記アプリケーションプロトコル文字列に対応するアプリケーションプロトコル・インデックス、好適なアプリケーション情報又はアクセサリ通信プロトコル情報のうち少なくとも１つを含むアクセサリ情報を前記移動体コンピューティング装置と通信する工程と、
セッション識別子、アプリケーションプロトコル識別子又は接続開始コマンドのうちの少なくとも１つを移動体コンピューティング装置から受信する工程と、
前記移動体コンピューティング装置と通信される前記アプリケーションプロトコル文字列と関連付けられるプロトコルであるアプリケーション通信プロトコルを使用して、前記移動体コンピューティング装置上で実行されている前記アプリケーションとその後に通信する工程と
を備えることを特徴とする方法。
【請求項１４】
前記好適なアプリケーション情報は、前記移動体コンピューティング装置と通信される前記アプリケーションプロトコル文字列と関連付けられたアプリケーション通信プロトコルを使用した通信をサポートする、アプリケーションを指定することを特徴とする請求項１３記載の方法。
【請求項１５】
前記通信する工程は、前記アクセサリにより前記移動体コンピューティング装置の機能を制御する工程を含むことを特徴とする請求項１３記載の方法。
【請求項１６】
前記アプリケーションプロトコル文字列は逆ドメイン名規則に従うことを特徴とする請求項１３記載の方法。
【請求項１７】
筺体と、
少なくとも部分的に前記筺体内に配設され、移動体コンピューティング装置と通信可能に結合するように構成された通信インタフェースと、
アクセサリハードウェアと、
前記筺体内に配設され、前記通信インタフェース及び前記アクセサリ専用ハードウェアと通信可能に結合された制御ロジックであって、
アクセサリ通信プロトコルを使用して、前記通信インタフェースを介して移動体コンピューティング装置とアプリケーション通信プロトコル情報を通信し、
前記通信インタフェースを介して前記移動体コンピューティング装置上で実行されているアプリケーションとの通信セッションであって、前記アクセサリと前記移動体コンピューティング装置上で実行されている前記アプリケーションとの間の通信に前記アプリケーション通信プロトコルを使用する、通信セッションを確立し、
前記アクセサリ通信プロトコルを使用して、前記移動体コンピューティング装置上で実行されている前記アプリケーションからデータを受信し、
前記移動体コンピューティング装置上で実行されている前記アプリケーションから受信した前記データに応答して、前記アクセサリハードウェアの動作を制御するように構成された制御ロジックと
を備えることを特徴とするアクセサリ装置。
【請求項１８】
前記通信インタフェースは、無線通信インタフェースを含むことを特徴とする請求項１７記載のアクセサリ装置。
【請求項１９】
前記制御ロジックは、前記アクセサリハードウェアからハードウェアデータを受信し、前記アプリケーション通信プロトコルを使用して前記移動体コンピューティング装置上で実行されている前記アプリケーションに前記ハードウェアデータを送信する、ように更に構成されていることを特徴とする請求項１７記載のアクセサリ装置。
【請求項２０】
前記アクセサリハードウェアはセンサを含み、前記ハードウェアデータは前記センサを使用して収集されるデータを含むことを特徴とする請求項１９記載のアクセサリ装置。
【請求項２１】
前記アクセサリハードウェアは電気的装置に対するハードウェアインタフェースを含み、前記ハードウェアデータは前記ハードウェアインタフェースを介して前記電気的装置から受信されるデータを含む、ことを特徴とする請求項１９記載のアクセサリ装置。
【請求項２２】
前記アクセサリハードウェアは、電気的装置に対するハードウェアインタフェースを含み、前記移動体コンピューティング装置上で実行されている前記アプリケーションからの前記データは、前記ハードウェアインタフェースを使用して前記電気的装置を制御するためのデータを含むことを特徴とする請求項１７記載のアクセサリ装置。
【請求項２３】
前記アクセサリハードウェアはディスプレイを含み、前記移動体コンピューティング装置上で実行されている前記アプリケーションからの前記データは表示可能情報を含むことを特徴とする請求項１７記載のアクセサリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、アクセサリと移動体コンピューティング装置との間の通信に関し、特に、そのような通信を行なうためにアクセサリ及び／又はアプリケーション専用プロトコルを使用することに関する。
【背景技術】
【０００２】
移動体コンピューティング装置は広く普及している。多くの企業がiPhone（登録商標）、iPod Touch（登録商標）、種々のBlackBerry（登録商標）装置及びGoogleのAndroid（登録商標）プラットフォームと互換性のあるスマートフォン等の移動体コンピューティング装置を作成しているが、それらはほんの一例である。多くの場合、移動体コンピューティング装置は、ウェブブラウザ、ワードプロセッサ、電子メールアプリケーション、地図、電話サービス、ゲーム、オーディオアプリケーション、ビデオアプリケーション等を含む。更にアクセサリも、移動体コンピューティング装置と共に使用するために作成されている。そのようなアクセサリは、１つ以上のコネクタ及び／又はポートを使用して移動体コンピューティング装置と通信できる。そのようなアクセサリは、移動体コンピューティング装置の機能を制御するために使用されるか、あるいはユーザ及び／又は環境と対話するために移動体コンピューティング装置により使用される。
【発明の概要】
【０００３】
種々の実施形態によると、アクセサリは、アクセサリ専用通信プロトコル及び／又はアプリケーション専用通信プロトコルを使用して移動体コンピューティング装置上で実行されているアプリケーションと通信してもよい。例えばアクセサリが移動体コンピューティング装置と結合する場合、アクセサリは移動体コンピューティング装置により規定されるアクセサリプロトコルを使用して初期化、識別及び／又は認証手順を実行してもよい。アクセサリは、アクセサリと通信するために移動体コンピューティング装置上で実行されているアプリケーションにより使用されてもよい１つ以上のアプリケーションプロトコルを示す情報を更に通信してもよい。いくつかの実施形態において、アプリケーションプロトコルはアクセサリプロトコルと異なってもよいが、他の実施形態においては、アプリケーションプロトコルはアクセサリプロトコルと同一であってもよい。いくつかの実施形態において、アプリケーションプロトコルパケットは、アクセサリプロトコルパケットの部分内にネストされる。
【０００４】
本明細書で開示される種々の実施形態は、アクセサリとアプリケーションとの間の通信セッションを作成する方法を説明する。いくつかの実施形態は、アクセサリがアプリケーションプロトコルを使用して通信セッションを開くために移動体コンピューティング装置に適切な情報を提供する方法を説明する。他の実施形態は、例えばアプリケーションプロトコルを選択し、通信ストリームを開き、好適なアプリケーションをダウンロードし、アクセサリと通信し、アプリケーションプロトコルパケットをアクセサリプロトコルパケット内にネストするための移動体コンピューティング装置における種々の方式を説明する。いくつかの実施形態において、移動体コンピューティング装置上で実行されているアプリケーションマネージャは、アクセサリとアプリケーションとの間の通信を抽出するために使用される。
【０００５】
添付の図面と共に以下の詳細な説明を参照することにより、本明細書で開示される実施形態の性質及び利点が最もよく理解されるだろう。
【図面の簡単な説明】
【０００６】
【図１Ａ】本発明のいくつかの実施形態に係るアクセサリ装置と結合される移動体コンピューティング装置を示す図である。
【図１Ｂ】本発明のいくつかの実施形態に係る移動体コンピューティング装置と無線結合されるアクセサリ装置を示す図である。
【図２】一実施形態に係るアクセサリと結合される移動体コンピューティング装置を示すブロック図である。
【図３】本発明のいくつかの実施形態に係る移動体コンピューティング装置内の種々のモジュール及び処理を示すブロック図である。
【図４】本発明のいくつかの実施形態に係るアプリケーションとアクセサリとの間の通信を更に示す簡略化された図である。
【図５Ａ】、
【図５Ｂ】、
【図５Ｃ】本発明のいくつかの実施形態に従ってアクセサリ通信プロトコルコマンド内にアプリケーションプロトコルメッセージをパッケージ化する一例を示す図である。
【図６】本発明のいくつかの実施形態に従って図４の実施形態のアクセサリ通信プロトコルのコマンドに対するパスを示す図である。
【図７】本発明のいくつかの実施形態に従ってアクセサリ及び互換性のあるアプリケーションを識別する処理を示すフローチャートである。
【図８】本発明のいくつかの実施形態に従って互換性のあるアプリケーション及びアクセサリを関連付けるために使用可能な接続プロトコルリスト及びサポートプロトコルテーブルを示す図である。
【図９】本発明のいくつかの実施形態に従ってアクセサリに対する互換性のあるアプリケーションの位置を特定するために使用可能なクエリを定式化する技術を示す図である。
【図１０】本発明のいくつかの実施形態に従ってアクセサリとの通信を開始するためにアプリケーションにより実行される処理を示すフローチャートである。
【図１１】本発明のいくつかの実施形態に従って２つの異なるアクセサリと同時に対話する移動体コンピューティング装置上のアプリケーションを示す図である。
【図１２】本発明のいくつかの実施形態に従って２つの異なるアクセサリと同時に対話する移動体コンピューティング装置上の２つのアプリケーションを示す図である。
【図１３】本発明のいくつかの実施形態に従って同一のアクセサリと同時に対話する移動体コンピューティング装置上の２つのアプリケーションを示す図である。
【図１４】本発明のいくつかの実施形態に従って移動体コンピューティング装置のアプリケーションとアプリケーションマネージャとハードウェアトランスポート層との間のデータフローを示す図である。
【図１５】本発明のいくつかの実施形態に従って移動体コンピューティング装置においてアプリケーションマネージャにより実行される処理を示すフローチャートである。
【図１６】本発明のいくつかの実施形態に従って移動体コンピューティング装置においてアプリケーションマネージャにより実行される処理を示す別のフローチャートである。
【図１７】本発明のいくつかの実施形態に従ってアクセサリとの通信を開くために移動体コンピューティング装置と結合されるアクセサリにより実行される処理を示すフローチャートである。
【図１８】本発明のいくつかの実施形態に従ってアクセサリとの通信を開くために移動体コンピューティング装置においてアプリケーションにより実行される処理を示すフローチャートである。
【発明を実施するための形態】
【０００７】
本明細書で開示される本発明の種々の実施形態は、アクセサリ装置と移動体コンピューティング装置との間の通信の種々の態様に関する。いくつかの実施形態において、アクセサリはアクセサリ通信プロトコルを使用して移動体コンピューティング装置と通信できる。アクセサリ通信プロトコルは、通信コマンド、トランスポートリンク、認証ルーチン、識別処理、lingo、パケット構造、データタイプ、あるいはアクセサリ装置と移動体コンピューティング装置との間で通信するために使用される任意の他の適切なコマンド又はデータを指定できる。
【０００８】
移動体コンピューティング装置上で実行されているアプリケーションは、アプリケーション通信プロトコルを使用してアクセサリと通信できる。いくつかの実施形態において、アプリケーション通信プロトコルは、アプリケーションとアクセサリとの間で通信するために通信コマンド、パケット構造、データタイプ、lingo、メッセージ形式等を指定できる。いくつかの実施形態において、アプリケーション通信プロトコルにより指定される通信コマンド、パケット構造、データタイプ、lingo、メッセージ形式のうちの少なくとも一部は、アクセサリ通信プロトコルにより指定されるものと異なってもよい。他の実施形態において、アプリケーション通信プロトコルにより指定される通信コマンド、パケット構造、データタイプ、lingo、メッセージ形式のうちの少なくとも一部は、アクセサリ通信プロトコルにより指定されるものと同一であってもよい。
【０００９】
いくつかの実施形態において、アプリケーションプロトコルは、アクセサリ通信プロトコルにより指定されるトランスポートリンクを使用できる。アプリケーション通信プロトコルは、例えばアプリケーション及び／又はアクセサリの開発者により開発される。いくつかの実施形態において、アプリケーション通信プロトコルは、アプリケーション及び／又はアクセサリ専用コマンド、データ構造等を含むことができる。更に、「アプリケーション通信プロトコル」及び「アプリケーションプロトコル」という用語は、同義で使用される。「アクセサリ通信プロトコル」、「アクセサリプロトコル」、「一般的な通信プロトコル」及び「一般的なプロトコル」という用語も同義で使用される。
【００１０】
図１Ａは、アクセサリ装置１１３に結合される移動体コンピューティング装置１０２を示す。ケーブル１１１は、移動体コンピューティング装置１０２をアクセサリ装置１１３に結合するために使用される。ケーブル１１１は、移動体コンピューティング装置１０２と接続するためのコネクタ１０８及びアクセサリ装置１１３と接続するためのコネクタ１１０を含むことができる。図１Ｂは、移動体コンピューティング装置１０２と無線結合されるアクセサリ装置１１３を示す。
【００１１】
図１Ａ及び図１Ｂに示す移動体コンピューティング装置は、限定されず、任意の種類の移動演算及び／又は通信装置であってもよい。例えば、iPod TouchO、iPhoneO、Android互換装置及び／又はBlackberry装置が使用される。更に移動体コンピューティング装置１０２は、メディアプレーヤ機能、ネットワーク化、ウェブブラウジング、電子メール、ワードプロセシング、データ記憶、アプリケーション実行、並びに／あるいは任意の他の演算又は通信機能を提供できる。
【００１２】
アクセサリ１１３は、例えば外部スピーカシステム、外部ビデオ装置、マルチメディア装置、消費者電子装置、テスト機器、家電製品（例えば、冷蔵庫又は食器洗い機）、運動器具、セキュリティシステム、ホーム又はオフィス自動化システム、カメラ、ユーザ入力装置（例えば、キーボード、マウス、ゲームコントローラ）、測定装置、医療装置（例えば、グルコースモニタ又はインスリンモニタ）、ＰＯＳ装置、自動車、自動車のアクセサリ（例えば、カーステレオシステム又はカーナビゲーションシステム）、ラジオ（例えば、ＦＭ、ＡＭ及び／又は衛星）、飛行機、バス、電車又は他の大量輸送車における娯楽コンソール等の移動体コンピューティング装置１０２と通信できる任意の装置であってもよい。移動体コンピューティング装置と共に使用される任意の種類の装置がアクセサリ装置として使用可能である。
【００１３】
図２は、一実施形態に従ってアクセサリ２０２（例えば、図１Ａ又は図１Ｂのアクセサリ１１３を実現する）と結合される移動体コンピューティング装置２００（例えば、図１Ａ又は図１Ｂの移動体コンピューティング装置１０２を実現する）を示すブロック図である。移動体コンピューティング装置２００は、プロセッサ２３０、記憶装置２２５、ユーザインタフェース（ＵＩ）２３５、ネットワークインタフェース２３６及びアクセサリ入出力（Ｉ／Ｏ）インタフェース２０５を含むことができる。
【００１４】
１つ以上の集積回路（例えば、従来のマイクロプロセッサ又はマイクロコントローラを含む）として実現されるプロセッサ２３０は、移動体コンピューティング装置２００の動作を制御できる。例えばユーザインタフェース２３５により提供されるユーザ入力信号に応答して、プロセッサ２０６は、記憶装置２２５に格納されてもよいメディア資産の選択及び再生、ネットワークインタフェース２３６を使用してデータを送出及び／又は検索するための種々のネットワーク（例えば、移動電話網、インターネット又はローカルエリアネットワーク等）へのアクセス、並びに記憶装置２２５に常駐する種々のアプリケーションプログラム（Ａｐｐｓ）２２６の実行等の種々のタスクを実行できる。更にプロセッサ２３０は、アクセサリＩ／Ｏインタフェース２０５を介してアクセサリとの通信を管理できる。
【００１５】
ユーザインタフェース２３５は、サポート電子機器（例えば、デジタル／アナログ又はアナログ／デジタル変換器、あるいは信号プロセッサ等）と共に、タッチパッド、タッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、キーパッド、マイク等の入力制御、並びに表示画面、表示灯、スピーカ、ヘッドフォンジャック等の出力装置を含むことができる。ユーザは、ユーザインタフェース２３５の種々の入力制御を動作させて移動体コンピューティング装置２００の機能性を呼び出すことができ、また、ユーザインタフェース２３５を介して移動体コンピューティング装置２００からの出力を視聴できる。
【００１６】
記憶装置２２５は、例えばディスク、フラッシュメモリ又は任意の他の不揮発性記憶媒体を使用して実現されてもよい。記憶装置２２５は、プロセッサ２３０により実行可能であるアプリケーションプログラム２２６、システムプログラム及び他のプログラムコード（明示的には図示しない）、並びに以下に説明するように種々のアクセサリとの通信を管理する際に使用されるプロトコルテーブル２２７等の種々のデータを格納できる。いくつかの実施形態において、記憶装置２２５は、メディア資産（例えば、資産名、アーティスト、タイトル、ジャンル等）及びプレイリスト（順次又は無作為な順序で再生される資産のリスト）等を記述するメタデータと共に、移動通信装置２００により再生されるオーディオ、ビデオ又は静止画等のメディア資産を更に格納できる。記憶装置２２５は、ユーザの連絡先（名前、住所、電話番号等）、スケジュールされた約束及びイベント、注釈、並びに／あるいは他の個人情報に関する情報等の任意の他の種類の情報を更に格納できる。
【００１７】
アプリケーションプログラム（以下において、「アプリケーション」又は「ａｐｐｓ」とも呼ばれる）２２６は、プロセッサ２３０により実行可能な任意のプログラムを含むことができる。いくつかの実施形態において、特定のアプリケーションは製造業者により移動体コンピューティング装置２００にインストールされ、その一方で、他のアプリケーションはユーザによりインストールされる。アプリケーションプログラムの例は、テレビゲームプログラム、個人情報管理プログラム、メディア資産の再生及び／又はメディア資産データベースのナビゲーションを行なうプログラム、並びに発呼及び／着呼するために電話インタフェースを制御するプログラム等を含むことができる。特定のアプリケーションプログラム２２６は、アクセサリ２０２との通信及び／又はアクセサリ２０２の制御を行なってもよく、特定のアプリケーションプログラム２２６は、アクセサリ２０２からの制御信号又は他の入力に応答してもよい。例を以下に説明する。
【００１８】
ネットワークインタフェース２３６は、１つ以上の通信網に対するインタフェースを提供できる。例えばネットワークインタフェース２３６は、移動電話網等の移動通信網を介して通信するために高周波（ＲＦ）トランシーバ及び適切な構成要素を内蔵できる。更に又はその代わりに、ネットワークインタフェース２３６は、インターネット（例えば、ＷｉＦｉトランシーバ又は３Ｇトランシーバ等）、パーソナルエリアネットワーク（例えば、Ｂｌｕｅｔｏｏｔｈネットワーク）又は任意の他のネットワークへの無線接続を内蔵できる。更に他の実施形態において、有線ネットワーク接続（例えば、イーサネット（登録商標））が提供されてもよい。いくつかの実施形態において、同一のハードウェアは、複数のネットワークへの接続をサポートするために使用される。従って、ネットワークインタフェース２３６は、アナログ／デジタル及び／又はデジタル／アナログ回路網、ベースバンド処理構成要素（例えば、コーデック及びチャネル推定器等）、変調器、復調器、発振器、増幅器、送信機、受信機、トランシーバ、並びに内部及び／又は外部アンテナ等を含むことができる。いくつかの実施形態において、ネットワーク接続性と関連するいくつかの動作の全体又は一部はプロセッサ２３０上で実行されるプログラム（例えば、符号化、復号化及び／又はデジタルドメインの他の処理）として実現されるか、あるいは専用デジタル信号プロセッサが提供される。
【００１９】
アクセサリＩ／Ｏインタフェース２０５は、移動体コンピューティング装置２００とアクセサリ２０２との間の種々の信号を搬送するように構成される複数の信号パスを含むことができる。一実施形態において、アクセサリＩ／Ｏインタフェース２０５は、Apple Inc.により製造及び販売されるiPodO及びiPhoneO製品で使用されるコネクタに対応する３０ピンコネクタを含む。他のコネクタも使用可能である。あるいは又はそれに加えて、アクセサリＩ／Ｏインタフェース２０５は無線インタフェース（例えば、Ｂｌｕｅｔｏｏｔｈ等）を含むことができる。
【００２０】
いくつかの実施形態において、更に移動体コンピューティング装置２００は、移動体コンピューティング装置（例えば、iTunesO又はMicrosoftのアプリケーションストア）に媒体及び／又はアプリケーションを提供できる資産管理プログラムを実行するホストコンピュータ（不図示）と通信するためにアクセサリＩ／Ｏインタフェース２０５を使用できる。資産管理プログラムにより、ユーザは移動体コンピューティング装置にメディア資産及び／又はアプリケーションを追加でき且つ／又は移動体コンピューティング装置２００からメディア資産を除去できる。ユーザは、移動体コンピューティング装置２００上のメディア資産と関連付けられるメタデータを更新できる。いくつかの実施形態において、更にユーザは、プレイリスト及び／又はアプリケーション、並びに他の文書を作成及び更新するために資産管理プログラムと対話できる。一実施形態において、ホストコンピュータは、メディア資産及び／又はアプリケーションのマスタデータベースを維持し、例えばインターネットを介して他のデータベース（関連するメタデータ及びプレイリストを含む）にアクセスでき、資産管理プログラムは、移動体コンピューティング装置２００がホストコンピュータに接続する度に、マスタデータベースを移動体コンピューティング装置２００の記憶装置２２５上に維持されるデータベースと自動的に同期させる。他の実施形態において、移動体コンピューティング装置２００は、ネットワークインタフェース２３６を使用して、ホストコンピュータと通信し且つ／又は種々の他のサーバと直接通信し、アプリケーション、メディア資産及び／又は他のデータを取得できる。
【００２１】
アクセサリ２０２は、コントローラ２６０、ユーザインタフェース２５５、移動体コンピューティング装置Ｉ／Ｏインタフェース２５０、メモリ２６５及びアクセサリ専用ハードウェア２７５を含むことができる。
【００２２】
移動体コンピューティング装置Ｉ／Ｏインタフェース２５０は、アクセサリ２０２と移動体コンピューティング装置２００との間で種々の信号を搬送するように構成される複数の信号パスを含むことができる。一実施形態において、移動体コンピューティング装置Ｉ／Ｏインタフェース２５０は、Apple Inc.により製造及び販売されるiPodO及びiPhoneO製品で使用される３０ピンコネクタと接続するように構成されるコネクタを含むことができる。他のコネクタも使用可能である。例えば、移動体コンピューティング装置Ｉ／Ｏインタフェース２５０は標準的なＵＳＢ又はＦｉｒｅＷｉｒｅコネクタ等を含むことができる。あるいは又はそれに加えて、移動体コンピューティング装置Ｉ／Ｏインタフェース２５０は無線インタフェース（例えば、Ｂｌｕｅｔｏｏｔｈ等）を含むことができる。
【００２３】
コントローラ２６０は、例えばデジタルオーディオ復号化、アナログ又はデジタルオーディオ及び／又はビデオ処理、ユーザ入力の処理、並びにアクセサリ機能性の制御等の種々の機能を実行するためのプログラムコードを実行するマイクロプロセッサ又はマイクロコントローラを含むことができる。更にコントローラ２６０は、移動体コンピューティング装置Ｉ／Ｏインタフェース２５０を介して移動体コンピューティング装置との通信を管理できる。
【００２４】
ユーザインタフェース２５５は、サポート電子機器（例えば、デジタル／アナログ又はアナログ／デジタル変換器、あるいは信号プロセッサ等）と共に、タッチパッド、タッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、キーパッド、マイク、プローブ等の入力制御、並びにビデオ画面、表示灯、スピーカ又はヘッドフォンジャック等の出力装置を含むことができる。ユーザは、ユーザインタフェース２５５の種々の入力制御を動作させてアクセサリ２０２の機能性を呼び出すことができ、また、ユーザインタフェース２５５を介してアクセサリ２０２からの出力を閲覧し且つ／又は聞くことができる。更にいくつかの実施形態において、ユーザはアクセサリユーザインタフェース２５５を介して移動体コンピューティング装置２００（又は移動体コンピューティング装置２００上で実行されているアプリケーション）を動作させられる。
【００２５】
メモリ２６５は、コントローラ２６０に対するプログラムコード及び／又はデータを格納できる任意の種類のメモリ、ディスク又は他の記憶媒体を使用して実現される。例えばメモリ２６５は、コントローラ２６０がアクセサリ専用ハードウェア２７５及び／又はユーザインタフェース２５５と対話するように命令できるアクセサリ専用ソフトウェア２８０を格納できる。いくつかの実施形態において、アクセサリ２０２は移動体コンピューティング装置２００から情報（例えば、ユーザ入力、メタデータ及び／又はアプリケーションデータ）を受信でき、更にそのような情報はメモリ２６５に格納される。
【００２６】
アクセサリ専用ハードウェア２７５は、アクセサリ２０２の所望の機能性を有効にするのに必要な任意のハードウェアを表すことができる。例えばアクセサリ専用ハードウェア２７５は、任意の種類のセンサ又はメータ等の１つ以上のデータ収集装置を含むことができる。ある実施形態において、アクセサリ専用ハードウェア２７５は、電気特性（抵抗又は電圧差等）を表すデータを生成する電気メータ、光及び／又は光のパターンを検出する光センサ、動きセンサ、温度センサ、湿度センサ、圧力センサ及び選択された化学物質（例えば、一酸化炭素等の潜在的有毒ガス）が存在することに応答する化学センサ等を含むことができる。アクセサリ専用ハードウェア２７５は、グルコースメータ、呼吸メータ、心拍数及び／又は心機能モニタ、あるいは血圧モニタ等の１つ以上の医療装置を更に含むことができる。
【００２７】
いくつかの実施形態において、データ収集装置を含むアクセサリ専用ハードウェア２７５は、物理データに対応するか又は物理データを表す１つ以上の電気信号（例えば、電圧、抵抗及び／又は電流）を提供できる。種々の形態のアナログ信号及び／又はデジタル信号が使用されてもよい。アクセサリ専用ハードウェア２７５は、コントローラ２６０に信号を送出する前にその信号を処理する信号処理構成要素を更に含むことができる。いくつかの実施形態において、アクセサリ専用ハードウェア２７５はコントローラ２６０に電気信号を直接送出でき、コントローラ２６０はその信号を処理できる。例えばアクセサリ専用ハードウェア２７５が熱電対を使用して実現される温度計を含む場合、熱電対からの抵抗データは、アクセサリ専用ハードウェア２７５により又はコントローラ２６０により、あるいはそれらの双方により温度データに変換される。更にアクセサリ専用ハードウェア２７５により収集されるデータを表す信号は、例えば以下に説明するようにアプリケーションプロトコルを使用して移動体コンピューティング装置２００上で実行されているアプリケーションに送出される（コントローラ２６０により処理されるかされないかに関わらず）。従って、移動体コンピューティング装置２００上で実行されているアプリケーションは、アクセサリ専用ハードウェア２７５を使用して収集されるデータを更に処理できる。
【００２８】
いくつかの実施形態において、アクセサリ専用ハードウェア２７５は、１つ以上のコンピュータ制御可能装置を含むことができる。コンピュータ制御可能装置の例には、モータ、アクチュエータ、照明、カメラ、弁、スピーカ、表示画面、プリンタ及び／又はコントローラ２６０により制御可能な任意の他の機器が含まれる。いくつかの実施形態において、移動体コンピューティング装置２００上で実行されているアプリケーションは、アクセサリ２０２に制御信号を送出でき、コントローラ２６０は、制御信号に応答してアクセサリ専用ハードウェア２７５を動作させられる。
【００２９】
いくつかの実施形態において、アクセサリ専用ハードウェア２７５はユーザインタフェース２５５の構成要素を含むことができる。従って、移動体コンピューティング装置２００上で実行されているアプリケーションは、アクセサリ２０２からユーザ入力を受信でき、アクセサリ２０２を介してユーザに出力を提供でき且つ／あるいは実行可能な任意の動作アクセサリ２０２を制御できるか、アクセサリ２０２と対話できるか又はアクセサリ２０２に応答できる。
【００３０】
いくつかの実施形態において、アクセサリ専用ハードウェア２７５は、ネットワーク及び／又は通信インタフェースを含むことができる。例えばアクセサリ専用ハードウェア２７５は、ＲＦ受信機（例えば、ＦＭ、ＡＭ、衛星ラジオ及び／又は他の帯域に対する）及び／又はＲＦ送信機（例えば、個人向けの狭域送信機）を含むことができる。他の実施形態において、アクセサリ専用ハードウェア２７５は、Ｂｌｕｅｔｏｏｔｈトランシーバ又は他の狭域無線通信インタフェース等のパーソナルエリアネットワークに対する通信インタフェースを含むことができる。更に他の実施形態において、アクセサリ専用ハードウェア２７５は、電話インタフェース、ＧＳＭ、ＣＤＭＡ、並びに／あるいは他の音声及び／又はデータネットワークインタフェースを含むことができる。
【００３１】
従って、アクセサリ専用ハードウェア２７５は、移動演算及び／又は通信装置との相互運用性が望ましい任意のハードウェアコンポーネントを含むことができる。
【００３２】
本明細書で説明されるシステム構成及び構成要素が例示であり、変形及び変更が可能であることは理解されるだろう。移動体コンピューティング装置及び／又はアクセサリは、特に本明細書で説明されない他の機能を有してもよい。アクセサリ２０２及び移動体コンピューティング装置２００が特定のブロックを参照して本明細書において説明されるが、ブロックは説明の便宜上規定され、構成要素の特定の物理構成を示すことを意図しないことが理解される。更にブロックは、物理的に別個の構成要素に対応する必要はない。
【００３３】
移動体コンピューティング装置２００のアクセサリＩ／Ｏインタフェース２０５及びアクセサリ２０２の移動体コンピューティング装置Ｉ／Ｏインタフェース２５０により、移動体コンピューティング装置２００はアクセサリ２０２に接続可能になり且つその後アクセサリ２０２から切断可能になる。本明細書で使用されるように、移動体コンピューティング装置２００及びアクセサリ２０２は、アクセサリＩ／Ｏインタフェース２０５と移動体コンピューティング装置Ｉ／Ｏインタフェース２５０との間の通信チャネルが開かれる度に「接続」され、通信チャネルが閉じられる度に「切断」される。接続は、物理的接続（例えば、移動体コンピューティング装置２００及びアクセサリ２０２のそれぞれの接続するコネクタの間）により、ケーブル等の間接的な接続により、あるいは無線通信チャネルを確立することにより達成される。同様に切断は、物理的切断により、ケーブルを切断することにより、アクセサリ２０２又は移動体コンピューティング装置２００の電源を切ることにより、あるいは無線通信チャネルを閉じることにより達成される。従って、「ＵＳＢ」（Universal Serial Bus）、ＦｉｒｅＷｉｒｅ（ＩＥＥＥ１３９４規格）又は汎用非同期送受信機（「ＵＡＲＴ」）等の有線チャネル、あるいはＢｌｕｅｔｏｏｔｈ（ＢｌｕｅｔｏｏｔｈＳＩＧにより開発され且つ商標ＢｌｕｅｔｏｏｔｈOの下で使用が許可される狭域無線通信規格）、ＷｉＦｉ（任意のＩＥＥＥ８０２．１１規格群に準拠する）、無線パーソナルエリアネットワーク又は赤外線等の無線チャネルを含む種々の通信チャネルが使用されてもよい。いくつかの実施形態において、通信は有線チャネル及び無線チャネルの双方を使用して行なわれる。いくつかの実施形態において、移動体コンピューティング装置とアクセサリとの間に複数の通信チャネルが同時に開かれるか、あるいは移動体コンピューティング装置は、各々が異なる通信チャネルを使用する複数のアクセサリに同時に接続される。
【００３４】
特定の通信チャネルに関係なく、移動体コンピューティング装置２００及びアクセサリ２０２が互いに接続されている限り、それらの装置はアクセサリ通信プロトコルにより指定されるようにコマンド及びデータを交換することにより通信できる。アクセサリ通信プロトコルは、移動体コンピューティング装置２００とアクセサリ２０２との間でメッセージを送出するための形式を規定できる。例えばアクセサリ通信プロトコルは、各メッセージがヘッダ、ペイロード及び／又はテールを含むパケットで送出されることを指定してもよい。ヘッダは、開始標識、パケットの長さ及び受信者により処理されるコマンド等の基本情報を提供でき、ペイロードは、コマンドと関連付けられる任意のデータを提供する。関連するデータの量はコマンド毎に異なり、いくつかのコマンドは可変長ペイロードを提供してもよい。パケットは、例えば従来技術において周知のような誤り検出符号又は誤り訂正符号、並びに／あるいは所望の他の情報を提供してもよいテールを更に含む。種々の実施形態において、アクセサリ通信プロトコルは、受信者により行なわれる動作を指示し、タスクの完了、状態の変化又は誤りの発生を信号で伝送し、且つ／又は関連データの性質を識別するための特定のコマンドを規定できる。いくつかの実施形態において、任意の特定のコマンドが一方向にのみ有効になるように、コマンドが規定されてもよい。
【００３５】
アクセサリ通信プロトコルは、装置間で信号を送信するのに有用な１つ以上の物理的トランスポートリンクを更に指定できる。例えばトランスポートリンクは、ＵＳＢリンク、ＵＡＲＴリンク、ＦｉｒｅＷｉｒｅリンク、Ｂｌｕｅｔｏｏｔｈリンク、ＷｉＦｉリンク、パラレルリンク、シリアルリンク等であってもよい。このレベルで、アクセサリ通信プロトコルは、例えば開始バイト、同期バイト、終了バイト及び／又は他の補助信号を指定できる。いくつかの実施形態において、アクセサリ通信プロトコルは複数の別のトランスポートリンクを提供できる。従って、単一の移動体コンピューティング装置は、有線リンク及び／又は無線リンクを含む種々の物理リンクを介する通信をサポートできる。
【００３６】
アクセサリ通信プロトコルは、多くの「lingo」を規定できる。一般に「lingo」は、種々のアクセサリによりサポートされる（又はサポートされない）関連するコマンドのグループを示す。一実施形態において、コマンドは、コマンドが属するlingoを識別する第１のバイト及びlingo内の特定のコマンドを識別する第２のバイトにより一意に識別される。他のコマンド構造が使用されてもよい。全てのアクセサリ又はアクセサリが接続される全ての移動体コンピューティング装置は、アクセサリ通信プロトコル内で規定される全てのlingo又は特定のlingoの全てのコマンドをサポートする必要はない（例えば、種々の装置は所定のlingoの種々のバージョンを使用してもよい）。
【００３７】
いくつかの実施形態において、互いに相互運用されるように設計される全てのアクセサリ２０２及び全ての移動体コンピューティング装置２００は、少なくともそのような装置の全てに共通のコマンドを含む「一般的な」lingoをサポートする。一般的なlingoは、移動体コンピューティング装置及びアクセサリが互いに対して自身を識別できるようにし且つ少なくとも各装置がサポートする他のlingo（存在する場合）のうちのいずれか及び各装置が接続されている間に使用しようとする他方の装置の機能を含む各機能のうちのいずれかに関する情報を提供できるようにするコマンドを含むことができる。
【００３８】
一般的なlingoは、移動体コンピューティング装置がアクセサリの意図される一致及び機能を検証するために使用できる認証コマンドを更に含むことができ（あるいは、その逆も成り立つ）、アクセサリ（又は移動体コンピューティング装置）は、認証が失敗した場合に特定のコマンド又はlingoを呼び出すことを阻止されてもよい。例えば移動体コンピューティング装置２００内の認証マネージャ（不図示）は、アクセサリ２０２内の認証コントローラ（不図示）と通信でき、例えば公開鍵暗号法及び移動体コンピューティング装置２００の認証マネージャ内に維持されるデジタル証明書の蓄積に基づいて認証手順を実行する。
【００３９】
アクセサリ通信プロトコルの一般的なlingo又は別のlingoは、移動体コンピューティング装置２００上で実行されているアプリケーション２２６とアクセサリ２０２との間の任意の情報の交換を可能にする「トンネル」コマンドを更に含むことができる。例えば、TunnelToAccコマンドは、移動体コンピューティング装置２００からアクセサリ２０２に送出可能であるとして規定される。このコマンドのペイロードは、任意のデータ、制御信号又は移動体コンピューティング装置２００上で実行されているアプリケーション２２６が生成でき且つアクセサリ２０２に送出できる他の情報であってもよい。同様に、TunnelToHostコマンドは、アクセサリ２０２から移動体コンピューティング装置２００に送出可能であるとして規定される。このコマンドのペイロードは、任意のデータ、制御信号又はアクセサリ２０２が生成でき且つ移動体コンピューティング装置２００上で実行されているアプリケーション２２６に送出できる他の情報であってもよい。これらのトンネルコマンドは、アクセサリ通信プロトコルがペイロードの内容に関して曖昧であるように規定される。特定のアプリケーションがデータ、制御信号又は他の情報を処理できるアクセサリにのみそれらのデータ、制御信号又は他の情報を送出する（且つその逆が成り立つ）ように通信を管理する技術の例について以下に説明する。
【００４０】
いくつかの実施形態において、アクセサリは、アプリケーション通信プロトコルを使用して移動体コンピューティング装置において１つ以上のアプリケーションと関連付けられるＡＰＩと通信できる。例えばそのような通信は、上述の「トンネル」コマンドを使用できる。いくつかの実施形態において、アクセサリは、アクセサリ通信プロトコルを使用して１つ以上のアプリケーションと関連付けられるＡＰＩと通信できる。他の実施形態において、アクセサリは、アクセサリ通信プロトコル及び／又はアプリケーション通信プロトコルのいずれか又は双方を使用して移動体コンピューティング装置のオペレーティングシステムと更に通信できる。従って、本明細書で開示される実施形態は、アプリケーション通信プロトコル及び／又はアクセサリ通信プロトコルのいずれか又は双方を使用するアクセサリから移動体コンピューティング装置におけるアプリケーション、ＡＰＩ及び／又はオペレーティングシステムへの通信を容易にするために使用される。
【００４１】
移動体コンピューティング装置及びアクセサリにサポートされるアクセサリ通信プロトコルは、アクセサリが呼び出される移動体コンピューティング装置の機能を指示するコマンドを送出することを可能にする単純なリモートlingo、アクセサリにおいて移動体コンピューティング装置のユーザインタフェースの全て又は一部を複製することに関連付けられるコマンド及びデータを通信するために使用される（これにより、より高度なリモート制御をサポートする）リモートユーザインタフェースlingo、ユーザが移動体コンピューティング装置を動作することによりチューナアクセサリを制御することを可能にするチューナlingo及びアクセサリが移動体コンピューティング装置上にデータを格納することを可能にする格納lingo等の種々の他のlingoを含むことができる。任意のlingo又はlingoの組合せ又は他のコマンド又はコマンドのグループが本明細書で説明される実施形態と関連して使用可能である。
【００４２】
本明細書で説明されるアクセサリ通信プロトコルが例示であり、変形及び変更が可能であることは理解されるだろう。本明細書で説明される特定のコマンドは、他のコマンド又はコマンドの組合せ、あるいは他の種類のメッセージ及び形式で置換可能である。更に、本明細書で説明される全てのコマンド及び動作が任意の特定の移動通信装置又はアクセサリによりサポートされる必要はない。
【００４３】
上述したように、移動体コンピューティング装置２００上で実行されているアプリケーション２２６及びアクセサリ２０２は任意のデータ、制御信号及び／又は他の情報（本明細書においては、「メッセージ」とも呼ばれる）を交換できる。これらのメッセージは、広範な種々の状況に関連することができる。例えば、ユーザ入力事象、検出された外的状況、受信データ、あるいは移動体コンピューティング装置２００で起こる可能性のある任意の他の事象又は状況に関連するメッセージは、アクセサリ２０２に通信される。逆に、ユーザ入力事象、検出された外的状況、受信データ、あるいはアクセサリ２０２で起こる可能性のある任意の他の事象又は状況に関連するメッセージは、移動体コンピューティング装置２００に通信される。
【００４４】
例えばいくつかの実施形態において、移動体コンピューティング装置２００は、例えばタッチスクリーン事象、ボタン押下、スクロールホイール事象等のユーザインタフェース２５５を介するユーザからの入力事象を処理できる。移動体コンピューティング装置２００は、移動体コンピューティング装置２００上で実行されているアプリケーション、アクセサリ２０２又はその双方に入力事象を表すデータを提供できる。アクセサリ２０２は、例えばアクセサリ専用ハードウェア２７５を制御し且つ／又はコントローラ２６０で処理するためにそのようなデータを入力として解釈できる。例えばタッチスクリーンデータは、アプリケーション、アクセサリ２０２又はその双方により使用するために移動体コンピューティング装置２００により収集される。いくつかの実施形態において、タッチスクリーンデータは、スワイプ、ピンチ、ドラッグ及び他のジェスチャ等の動き及び／又はタップを表すデータを含むことができる。いくつかの実施形態において、タッチスクリーンデータは、生データ形式（例えば、指の動きに対応する圧力が検出される場所を表す一連の座標）で送出される。他の実施形態において、タッチスクリーンデータは、アクセサリに送出される前にジェスチャ事象（例えば、タップ、スワイプ又はある点から別の点へのドラッグ、ピンチ）等の処理データに変換される。いくつかの実施形態において、生キーボードデータはアクセサリに送出され且つ／又は処理されたキーボードデータはアクセサリに送出される。いくつかの実施形態において、いくつかの種類又は全ての種類のユーザ入力データは、例えば以下に説明するようにアプリケーション及びアプリケーションプロトコルを使用してアクセサリ２０２に通信される。他の実施形態において、いくつかの種類又は全ての種類のユーザ入力データは、アクセサリ通信プロトコルが特定の種類のユーザ入力データの送出をサポートする範囲に関わらず、アクセサリ通信プロトコルを使用して通信される。
【００４５】
更に移動体コンピューティング装置２００は、ユーザ入力以外の情報をアクセサリ２０２に送出できる。例えばいくつかの実施形態において、移動体コンピューティング装置２００は、ユーザ入力装置に加えて種々のセンサ及び／又はデータ収集装置を含むことができる。例としては、加速度計、ジャイロスコープ、コンパス、位置判定装置（例えば、全地球測位システム受信機又は電話三角測量システム）、光センサ、赤外線センサ、カメラ又はネットワークインタフェース（例えば、電話、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ）等が含まれる。移動体コンピューティング装置２００は、例えばアクセサリ２０２からの特定の要求に応答して任意又は全てのこのデータをアクセサリ２０２に提供できる。いくつかの実施形態において、このデータの一部又は全ては、例えば以下に説明するようにアプリケーション及びアプリケーションプロトコルを使用してアクセサリ２０２に通信される。他の実施形態において、このデータの一部又は全ては、アクセサリ通信プロトコルが特定の種類の情報の送信をサポートする範囲に関わらずアクセサリ通信プロトコルを使用して通信される。
【００４６】
別の例において、アクセサリ２０２は、移動体コンピューティング装置２００から入力事象を受信できる。そのような事象は、移動体コンピューティング装置２００で検出されるユーザ入力及び／又は他のデータに対応する。そのデータは、上述の任意のデータタイプを含むがそれらに限定されない。いくつかの実施形態において、そのような入力事象は、アクセサリ専用ハードウェア２７５を制御するためにアクセサリ２０２においてコントローラ２６０により処理される。例えば移動体コンピューティング装置２００におけるタッチスクリーン又は他のユーザ入力事象は、アクセサリ専用ハードウェア２７５の電源を投入し、ハードウェア２７５の状態を変更し、ハードウェア２７５からデータを受信し、ハードウェア２７５にデータを提供し、ハードウェア２７５の電源を切り且つ／又はハードウェア２７５に対する設定を設定するためにアクセサリ２０２に送出される。例えばタッチスクリーンデータは、生データ形式で又は解釈された事象（例えば、押下、スワイプ、ピンチ）として送出される。いくつかの実施形態において、アクセサリ専用ソフトウェア２８０は、生タッチスクリーンデータを受信及び／又は解釈する命令を含むことができる。いくつかの実施形態において、アクセサリ専用ソフトウェア２８０は、生タッチスクリーンデータをアクセサリ専用ハードウェア２７５に対するコマンド及び／又は制御に変換する命令を含むことができる。別の実施形態において、タッチスクリーンデータは、移動体コンピューティング装置２００上で実行されているアプリケーションに生データ形式で提供される。移動体コンピューティング装置２００は、データを解釈し、対応するコマンド及び／又は情報をアクセサリ２０２に送出できる。
【００４７】
更に、アクセサリ２０２において移動体コンピューティング装置２００から受信される入力事象は、コントローラ２６０がアクセサリ専用ソフトウェア２８０を実行することにより処理される。いくつかの実施形態において、アクセサリ専用ソフトウェア２８０は、移動体コンピューティング装置２００から受信される入力事象に応答してアクセサリ専用ハードウェア２７５と対話できる。
【００４８】
更にいくつかの実施形態において、アクセサリ専用ハードウェア２７５は、アクセサリ２０２との接続を介して移動体コンピューティング装置２００により制御される。例えば移動体コンピューティング装置２００上で実行されているアプリケーションは、プロセッサ２３０により実行された時にアクセサリ２０２においてアクセサリ専用ハードウェア２７５を制御でき、ハードウェア２７５とインタフェースでき、ハードウェア２７５と相互運用でき且つ／又はハードウェア２７５から信号を受信できるプログラムコードを含むことができる。いくつかの実施形態において、移動体コンピューティング装置２００上で実行されているアプリケーションは、アクセサリ２０２のコントローラ２６０上で実行されている制御プログラムとメッセージを交換でき、それによりアクセサリ専用ハードウェア２７５と通信し且つ／又はハードウェア２７５の動作を制御するようにコントローラ２６０に命令する。そのようなメッセージは、例えば以下に説明するようにアプリケーションプロトコルを使用して交換される。
【００４９】
いくつかの実施形態において、アクセサリ専用ハードウェア２７５は入力データをコントローラ２６０に提供できる。例えばアクセサリ専用ハードウェア２７５は、コントローラ２６０に送出され且つ／又はメモリ２６５に格納されるデータ（又はデータを表す電子信号；これらの用語は同義で使用される）に物理特性を変換できる測定センサを含むことができる。コントローラ２６０はそのデータを処理できる（例えば、校正補正の適用、雑音低減及び／又は他のデータ処理動作）。処理データは、アクセサリ２０２から移動体コンピューティング装置２００に送出される。移動体コンピューティング装置２００において、アプリケーションは、データを更に処理でき且つ／又はそのデータをユーザインタフェースを介してユーザに提供できる。更にアプリケーションは、データに応答して任意の数の機能を実行できる。
【００５０】
いくつかの実施形態において、アクセサリ及びアプリケーションは、任意の所望のメッセージを交換できる。ここで、「メッセージ」という用語は、一般に任意の種類の制御信号、事象、データ、状態又は構成情報、あるいは送信者が入手可能な任意の他の種類の情報を示す。メッセージの交換を容易にするために、アクセサリ及びアプリケーションは、相互に合意済みのアプリケーションプロトコルを使用できる。アプリケーションプロトコルは、交換可能なメッセージの多くの受け入れ可能な形式を指定できる。特定のアプリケーションプロトコルに準拠する装置又はプログラムは、アプリケーションプロトコルの多くの受け入れ可能な形式に従って送出するメッセージを構造化でき、アプリケーションプロトコルの多くの受け入れ可能な形式に従って受信するメッセージを解釈できる。例えば、バイナリデジタル通信の場合、アプリケーションプロトコルは、メッセージを含むビットが受信者により解釈される方法を指定できる。従って、アクセサリ通信プロトコルのように、アプリケーションプロトコルは、１人の参加者により送出された特定のメッセージが受信者により正確に解釈されるように、パケット構造、コマンド、lingo、ペイロード形式、並びに／あるいは解釈の他の形式、データ構造、セマンティック又は規則を指定できる。実際には、いくつかの実施形態において、アクセサリ通信プロトコルの部分は、特定のアクセサリ及び／又はアプリケーションに対する全て又は一部のアプリケーションプロトコルとして直接採用される。
【００５１】
本明細書で説明する特定の実施形態において、アクセサリプロトコルメッセージは、例えば上述のようなトンネルコマンドを使用してメッセージをアクセサリ通信プロトコルに準拠するパケット内にカプセル化することにより、ラップすることにより又はパッケージ化することにより装置間で送出される。従って、アクセサリ通信プロトコルにより指定されるトランスポートリンクが使用され、アプリケーションプロトコルは物理的トランスポートリンクを指定する必要がない。
【００５２】
種々の異なるアプリケーションプロトコルを使用する無制限の範囲のアクセサリ及びアプリケーションは、特定の移動体コンピューティング装置（又は移動体コンピューティング装置群）と共に使用するために作成されることが考慮される。いくつかの実施形態において、移動体コンピューティング装置２００は、接続された各アクセサリにより使用されるアプリケーションプロトコル及び実行し且つ／又はインストールされる各アプリケーションにより使用されるアプリケーションプロトコルを追跡することを含むアプリケーションプロトコル管理機能（例えば、アプリケーションマネージャを使用して）により構成される。例えば、移動体コンピューティング装置２００は、特定のアクセサリと共に使用される適切なアプリケーションの識別及び／又は特定のアプリーションが適切なアクセサリを利用可能であるかの識別を容易にするためのシステムサービスを提供できる。これらのサービスは、移動体コンピューティング装置２００のシステムサービスが任意のアプリケーションプロトコルに従って実現又は通信することを必要とせずに提供される。
【００５３】
図３は、本発明の一実施形態に係る移動体コンピューティング装置２００内の種々のモジュール及び処理を示すブロック図である。図示する種々のモジュールは、図２のプロセッサ２３０上で実行されているプログラム、移動体コンピューティング装置２００内の他のプロセッサ上で実行されているプログラム、特定用途向け集積回路又は他の実現例に対応可能である。いくつかの実施形態において、シングルチップ内の複数のプロセッサチップ又は複数のプロセッサコアは、本明細書で説明する種々のモジュール及び処理を実現するために使用される。プロセッサの一部又は全ては、ソフトウェア及び／又はファームウェアプログラムを実行するプログラマブル汎用プロセッサであってもよく、他のプロセッサは、デジタル信号プロセッサ、組込みの機能性を有する状態遷移機械又はそれらの任意の組合せであってもよい。
【００５４】
ポート３０５〜３０７は、それぞれアクセサリ３００〜３０２に通信チャネルを提供する。ポート３０５〜３０７の各々は、特定の通信チャネルをサポートする物理ポート及び／又は論理ポートであってもよい。例えばポート３０５は、ＵＳＢ又はＵＡＲＴ等の有線チャネルと関連付けられた物理ポートであってもよく、適切な制御ソフトウェアと共にハードウェア素子（例えば、ＵＳＢ互換ドライバ回路及び／又はピン）を組み込むことができる。ポート３０６は、Ｂｌｕｅｔｏｏｔｈ等の無線チャネルと関連付けられる論理ポート（例えば、仮想シリアルポート）であってもよい。いくつかの実施形態において、各ポート３０５〜３０７は、そのポートと関連付けられる特定の物理トランスポート又はチャネルに適用されるようなアクセサリ通信プロトコルに準拠するメッセージを送出及び受信できる。３つのポートが図示されるが、移動体コンピューティング装置は、任意の組合せで任意の数の物理ポート及び／又は論理ポートをサポートするように設計可能であることが理解される。更に以下に説明するように、いくつかの実施形態において、単一のアクセサリは複数のポートに接続可能である。
【００５５】
例えばプロセッサ２３０により実行されるファームウェア又はソフトウェアモジュールであってもよいプロトコルマネージャ３０４は、ポート３０５〜３０７から移動体コンピューティング装置−プロトコルメッセージ（コマンドとも呼ばれる）を受信でき、メッセージを解釈する処理を開始できる。いくつかの実施形態において、プロトコルマネージャ３０４又はプロトコルマネージャ３０４と関連付けられる関連するプロトコルデーモン（不図示）は、ポート３０５〜３０７を作成又は規定でき、それらのポートをコネクタピン及びドライバ回路、無線トランシーバ等の適切な通信ハードウェアに接続できる。一実施形態において、プロトコルマネージャ３０４（又はその関連するプロトコルデーモン）は、種々のポートで受信されるインバウンド移動体コンピューティング装置−プロトコルメッセージを抽出でき、抽出したメッセージを移動体コンピューティング装置２００内のサポート層３１５又は他の構成要素に出力する。図３の高レベルな処理スタックは、特定のトランスポートリンクに依存しなくてもよい。
【００５６】
別の実施形態において、プロトコルマネージャ３０４は、サポート層３１５から接続アクセサリ（例えば、アクセサリ３００〜３０２のうちの任意のアクセサリ）用のアウトバウンド情報（例えば、メッセージを作成したアプリケーション４０４によりアプリケーションプロトコルに従って構造化されたメッセージ）を受信でき、アウトバウンドメッセージを移動体コンピューティング装置−プロトコルパケットにパッケージ化でき、且つ所望のアクセサリに接続されるポート３０５〜３０７の１つにパケットを出力できる。
【００５７】
いくつかの実施形態において、プロトコルマネージャ３０４（又は関連するプロトコルデーモン）は、ポートの開閉をサポート及び／又は制御できる。例えば仮想ポートの場合、プロトコルマネージャ３０４は、スタートアップ時に仮想ポートの集合を作成でき、接続が要求されるとポートを開くことができ且つ／又は終了されるとポートを閉じることができる。
【００５８】
プロトコルマネージャ３０４は、特定のアプリケーションプロトコルを特定のポートと関連付ける動的ポートマップ３２５を維持できる。例えばアクセサリ３００等のアクセサリがポート３０５等の特定のポートにおいて移動体コンピューティング装置２００に対する接続を確立する場合、アクセサリ３００は、例えばポート３０５を介してプロトコル名の文字列を提供することによりプロトコルマネージャ３０４に対してサポートするアプリケーションプロトコル（例えば、アクセサリ３００の場合はＡＰ３）を識別できる。プロトコルマネージャ３０４は、アプリケーションプロトコル名とポートとの間の関連をポートマップ３２５に格納できる。その後アクセサリが切断された場合、その関連はポートマップ３２５から除去される。従って、ポートマップ３２５は、アプリケーションが現在利用可能であるアプリケーションプロトコルのリストを提供できる。以下に説明するように、互換性のあるアクセサリが接続される場合、そのようなリストは、アクセサリとアプリケーションとの間の通信のルーティング、並びに互換性のあるアプリケーションの通知を容易にする。
【００５９】
ソフトウェアサポート層３１５は、移動体コンピューティング装置２００上で実行されるアプリケーション３２０〜３２２とプロトコルマネージャ３０４（及びオプションとして他の低レベル装置機能）との間を仲介する役割を果たす。例えばソフトウェアサポート層３１５は、アプリケーションが装置の機能性を呼び出す際に介するアプリケーションプログラムインタフェース（ＡＰＩ）を提供できる。ソフトウェアサポート層３１５は、追加のレベルの装置独立性をアプリケーション３２０〜３２２に提供できる。しかし、図３に示す全ての層が必要とされるわけではないことが当業者には理解される。例えばいくつかの実施形態において、プロトコルマネージャ３０４はアプリケーション３２０〜３２２と直接通信できる。
【００６０】
図示する実施形態において、サポート層３１５はアクセサリ情報ルックアップテーブル３３０を提供できる。一実施形態において、アクセサリ情報テーブル３３０は、アクセサリの種類、アクセサリ識別子及び／又はアクセサリによりサポートされる１つ以上のアプリケーションプロトコルの名前等の各接続アクセサリに関する情報を含むことができる。アクセサリが接続し且つ切断すると、アクセサリ情報テーブル３３０は、プロトコルマネージャ３０４により提供される情報に応答してポピュレート及び更新される。
【００６１】
アプリケーション３２０〜３２２は、同時に又は順次にアプリケーションを実行でき、例えばプロセッサ２３０により実行可能なプログラムコードとして実現される。種々のアプリケーション３２０〜３２２は、移動体コンピューティング装置２００及び／又は接続アクセサリ３００〜３０２との種々の形態のユーザ対話を提供できる。例えばアプリケーションは、接続された測定プローブアクセサリにユーザインタフェースを提供できる。アプリケーションは、ユーザ入力に応答して、測定データの記録を開始し且つ測定データの記録を停止することを測定プローブに命令できる。アプリケーションは、測定データをユーザに提示できる。アプリケーションは、データを種々の形式に変換でき且つ／又はある期間にわたる測定値のレコードの閲覧及びデータに対する分析動作の実行（例えば、平均化、傾向分析又は図形的分析等）等の更なるユーザ対話を提供できる。
【００６２】
実行するアプリケーション（例えば、アプリケーション３２０〜３２２のうちの任意のアプリケーション）は、互換性のあるアクセサリ（すなわち、アプリケーションにより使用されるアプリケーションプロトコルをサポートするアクセサリ）が接続されるかを判定するために随時アクセサリ情報テーブル３３０をクエリできる。互換性のあるアクセサリが接続される場合、アプリケーションはアプリケーションプロトコルを使用してアクセサリと通信できる。例えば以下に説明するように、アプリケーションはアクセサリとの通信セッションを開始できる。
【００６３】
本明細書で説明するモジュールが例示であり、変形及び変更が可能であることは理解されるだろう。移動体コンピューティング装置２００は、任意の種類のアプリケーションをサポートでき、アプリケーションは、ユーザ又は別の処理の制御下で開始されるか又は終了される。サポート層３１５及びプロトコルマネージャ３０４等の特定のモジュールは、ソフトウェア及び／又はファームウェアで実現され、装置の電源投入時に自動的に開始され且つ電源が切られた時又は種々の異常状態が検出された時にのみ終了するように構成される。アプリケーション３２０〜３２２は、ユーザ入力又は他の入力に応答して開始及び終了してもよい。いくつかの実施形態において、アプリケーションは、例えば以下に説明するように対応するアクセサリが接続された時に自動的に開始されてもよい。種々のモジュール又は処理は、未使用の時にはリソースの消費を最小限にするために非活動状態に入ってもよい。更に、本明細書で図示する層及びモジュールの全てが必須ではない。例えばいくつかの実施形態においては、アプリケーションはサポート層３１５を回避してプロトコルマネージャと直接通信してもよい。他の実施形態においては、図３で別個のものとして示されるモジュール又は層は組み合わされてもよく、あるいは移動体コンピューティング装置２００の種々のシステムサービス（例えば、オーディオ及び／又はビデオ再生及びネットワーク接続等）と関連付けられるプロトコルデーモン及び／又はモジュール等の追加のモジュール又は層が提供されてもよい。
【００６４】
アクセサリは、図３と類似するモジュール、層及び他の構成要素、あるいはそれらの任意の変形又は変更を実現できることが更に理解される。アクセサリがアクセサリ通信プロトコルに従って移動体コンピューティング装置と情報を交換できる限り、内部実現例は要求に応じて変更可能である。
【００６５】
図３に示すように、いくつかの実施形態における移動体コンピューティング装置２００は、同時に実行する複数のアプリケーション３２０〜３２２及び／又は複数のアクセサリ３０５〜３０７への同時接続を維持できる。アプリケーション及び／又はアクセサリは、種々の（及び潜在的に互換性がない）アプリケーションプロトコルをサポートでき、各アプリケーションプロトコルは、全ての他のアプリケーションプロトコルと区別できるように名前（例えば、固有の文字列）を割り当てられる。例えば図３の実施形態において、アプリケーション３２０及びアクセサリ３０１はアプリケーションプロトコルＡＰ１をサポートし、アプリケーション３２１及びアクセサリ３０２はアプリケーションプロトコルＡＰ２をサポートし、アプリケーション３２２及びアクセサリ３００はアプリケーションプロトコルＡＰ３をサポートする。
【００６６】
第三者がアプリケーション及び／又はアクセサリを独自に開発できることが考慮される。２つのアクセサリ（又はアプリケーション）が同一のアクセサリプロトコル名を実際には互換性のないアプリケーションプロトコルと関連付ける場合、例えば双方のアクセサリが同一の移動体コンピューティング装置に同時に接続しようとすると、名前の衝突が起こる。そのような衝突を回避するために、アプリケーションプロトコル名に対して名前空間集中管理を提供するのが望ましいだろう。いくつかの実施形態において、中央名前空間管理者（例えば、移動体コンピューティング装置の製造業者）は、開発者からの要求があるとアプリケーションプロトコルに名前を割り当てることができる。別の実施形態において、中央名前空間管理者は、準拠する場合には名前の衝突を防止できる命名規則を単純に規定でき、アクセサリ及び／又はアプリケーションの開発者は、その規則に準拠することにより衝突を回避できる。
【００６７】
一実施形態において、アプリケーションプロトコル名前空間を管理するために逆ドメイン名規則が採用される。従来のドメイン名は、左から右に、下位ドメインから最上位ドメインを提供する。例えばドメイン名「help.example.com」において、「com」という用語は最上位ドメインであり、「example」という用語は下位ドメインであり、「help」という用語は最下位ドメインである。別の例として、ドメイン名「mac.apple.com」は、左から右に最下位ドメイン「mac」、中間ドメイン「apple」及び最上位ドメイン「com」を指定する。一方、逆ドメイン名は「com.apple.mac」を提供する。
【００６８】
逆ドメイン名規則は、特定の企業により使用されるアプリケーションプロトコルを指定するために使用される。すなわち、逆ドメイン名「com.company1.accessory1」は、「accessory1」プロトコルが企業（又は他の開発者）「company1」と関連付けられることを指定する。従って、一般に企業は、逆ドメイン名規則を使用してプロトコルを実現できる。ここで、逆ドメイン名の第１の部分は企業（「com.company1」）を参照し、企業（又は他の開発者）のインターネットドメイン名と関連付けられる。逆ドメイン名の第２の部分（「accessory1」）は、特定のプロトコルを指定する。アクセサリ及び／又はアプリケーションの異なる開発者が異なるインターネットドメイン名と関連付けられるため、逆ドメイン名規則により、開発者はインターネットドメイン名を逆にしたものに基づいてプロトコルを命名することによりアプリケーション及び／又はプロトコル及び／又はアクセサリを他のものと区別できる。この規則により、開発者は他の開発者の命名規則を考慮せずにプロトコルを独自に命名できる。更に、同一の名前を使用することにより２人の開発者間で衝突が起きた場合、対応するインターネットドメイン名を所有する開発者を単純にチェックすることにより、特定の逆ドメイン名に対する権利を有する開発者を判定すべきである。
【００６９】
いくつかの実施形態において、逆ドメイン名は、ある種の装置の全ての装置に特有のグローバル識別子を含むように追記される。例えば全てのシリアルパススルー型装置は、逆ドメイン名に追記される識別子を含むことができる。例えばそのような逆ドメイン名は、形式「com.company1.accessory1.serialpass」又は「serialpass.com.company1.accessory1」を有してもよい。そのような規則により、種々の企業はシリアルパススルー装置を製造でき、移動体コンピューティング装置は、製造業者が異なるにも関わらずそのような装置を認識できる。この逆ドメイン名規則は、アプリケーションプロトコルが識別される方法の一例にすぎない。任意の種類の規則が使用可能である。
【００７０】
従って、アクセサリが移動体コンピューティング装置と接続される場合、アクセサリは、逆ドメイン名規則を使用してサポートされる各プロトコルに割り当てられた名前を供給することによりサポートされるアプリケーションプロトコルのリストを移動体コンピューティング装置に提供できる。アクセサリは、単一のアプリケーションプロトコル又は複数のアプリケーションプロトコルをサポートできる。図３の移動体コンピューティング装置２００は、受信した情報に基づいてポートマップ３２５、アクセサリ情報テーブル３３０及び／又は他のルックアップテーブルにアクセサリの種類、アクセサリ識別子、アプリケーションプロトコル名及び／又は通信ポート識別子等の情報をポピュレートできる。以下に説明するように、アプリケーション３２０〜３２２は、それらのルックアップテーブルを使用して、互換性のあるアクセサリが利用可能であるかを判定でき、サポート層３１５及び／又はプロトコルマネージャ３０４は、アプリケーションプロトコルを理解する必要なく、ルックアップテーブルを使用して通信をルーティングできる。
【００７１】
例えば移動体コンピューティング装置２００は、温度計と無線接続され、更にケーブルを使用してカメラと接続される。（例えば、図３において、アクセサリ３０２が温度計であり、ポートＺが無線ポートであってもよく、その一方で、アクセサリ３００はカメラであり、ポートＸは有線ポートであってもよい。）接続時、温度計は逆ドメイン名「com.temprus.thermometer1」を送出することによりサポートされるアプリケーションプロトコルを識別できる。この逆ドメイン名は、アクセサリ通信プロトコルを使用して移動体コンピューティング装置に送出される。移動体コンピューティング装置において、この逆ドメイン名は、ルックアップテーブル（例えば、ポートマップ３２５及び／又はアクセサリ情報テーブル３３０）にアプリケーションプロトコル名として格納される。いくつかの実施形態において、逆ドメイン名は、温度計及び／又は温度計にアクセス可能な無線ポートに対するアクセサリ識別子と共に格納される。同様に、接続時、カメラはここでもアクセサリ通信プロトコルを使用して逆ドメイン名「com.camerasrus.camera1」を送出することによりサポートされるアプリケーションプロトコルを識別できる。この逆ドメイン名は、例えばカメラ及び／又はカメラにアクセス可能なポートに対するアクセサリ識別子と共にルックアップテーブル（例えば、ポートマップ３２５及び／又はアクセサリ情報テーブル３３０）に格納される。
【００７２】
移動体コンピューティング装置２００は、温度を読み取るためにアプリケーションプロトコル「com.temprus.thermometer1」を使用して温度計と通信する温度アプリケーション（例えば、アプリケーション３２１）を実行できる。実行中、温度アプリケーションはルックアップテーブルにアクセスでき、例えばプロトコル名「com.temprus.thermometer1」を探索することにより互換性のあるアプリケーションプロトコルが存在するかを確認する。温度アプリケーションが「com.temprus.thermometer1」を見つけた場合、アプリケーションはマッチングするものを有し、com.temprus.thermometer1アプリケーションプロトコルを使用して温度計との通信を開始できる。通信は、例えばアクセサリ通信プロトコルのトンネルコマンドを使用することにより、関連するポートを介してルーティングされる。アプリケーションプロトコルは、アクセサリ通信プロトコルで指定されるものとは異なるコマンド、パケット情報、データ等を指定できる。更にアプリケーション及び／又はアクセサリを提供する企業（例えば、TempRUs）は、アプリケーションとアクセサリとの間の通信のために任意の通信プロトコルを実現できる。
【００７３】
図４は、本発明のいくつかの実施形態に係るアプリケーションとアクセサリとの間の通信を更に示す簡略化された図である。移動体コンピューティング装置４００はアクセサリ４０２に接続可能であり、それにより、移動体コンピューティング装置４００上で実行されているアプリケーション４０４は、アプリケーションプロトコルを使用してアクセサリ４０２と通信できる。
【００７４】
図４に示す実施形態において、アプリケーション４０４は、アクセサリ４０２が互換性のあるアクセサリであることを既に判定し、サポート層４０８に対して適切な関数呼出しを呼び出すことによりセッション４０６を作成した。セッション４０６は、例えばサポート層４０８に対するＡＰＩ呼出しを使用してアプリケーション４０４により作成されたソフトウェアオブジェクトであってもよい。セッション４０６は、そのセッションを作成したアプリケーション４０４、並びにセッションを作成する時にアプリケーション４０４により指定される特定のアクセサリ及び／又はアプリケーションプロトコルと関連付けられる。セッション４０６は、特にコンテンツがアプリケーション４０４から受信される入力ストリーム及びコンテンツがアプリケーション４０４に出力される出力ストリームを提供できる。（セッションの作成については以下に説明する。）
アプリケーションプロトコルを使用してメッセージ（例えば、制御信号及び／又は他の情報）をアクセサリ４０２に通信するために、アプリケーション４０４は、メッセージを生成し且つセッション４０６の出力ストリームにそのメッセージをデータとして書き込む。本実施形態において、アプリケーション４０４は、アプリケーションプロトコルに従ってメッセージをフォーマットする役割を単独で果たす。移動体コンピューティング装置４００上の他の中間処理は、出力ストリームに書き込まれるデータを変更しない。
【００７５】
セッション４０６は、データが出力ストリームに存在することを検出し、対応する送出（ＳＮＤ）命令をプロトコルマネージャ４１０に送出する。ＳＮＤ命令は、アクセサリ及びセッション４０６と関連付けられるアクセサリプロトコル識別子を提供し、出力ストリームからのデータを表す「バンドル」を提供する。いくつかの実施形態において、バンドルは全てのメッセージデータに対応する。しかし、バンドルは、メッセージの長さ及びアクセサリ通信プロトコルによりパケット長に課される制約に依存してメッセージデータの一部のみに対応してもよい。逆に、いくつかの実施形態において、単一のバンドルが複数のアプリケーションプロトコルメッセージを含んでもよい。
【００７６】
プロトコルマネージャ４１０は、バンドルを送信するためのポートを選択するために、ポートマップ４１２と共にセッション４０６により提供されるアクセサリ及びアクセサリプロトコル識別子を使用できる。更にプロトコルマネージャ４１０は、上述したように例えばTunnelToAccコマンドであるアクセサリ通信プロトコルのコマンド内にバンドルをパッケージ化できる。アクセサリ通信プロトコルコマンドは、送信するためのポート４１４に送出される。（図４ではポートが１つのみ示されるが、移動体コンピューティング装置４００は複数のポートを有することができることは理解される。）
図５Ａ〜図５Ｃは、本発明のいくつかの実施形態に従ってアクセサリ通信プロトコルコマンド内にアプリケーションプロトコルメッセージをパッケージ化（ラップ）する一例を示す。図５Ａは、アクセサリプロトコルパケット５００の一例を示す。図示するように、パケット５００は、ヘッダ５０２及びペイロード５０４を含む。例えばアクセサリ通信プロトコルは、ヘッダのサイズ及びヘッダ５０２内に提供される情報を要求できる。いくつかの実施形態において、ヘッダ５０２は、ペイロードに含まれる内容及び／又はペイロードのデータにより行なわれることを示すことができるコマンド又はバイトコードを含むことができる。例えば図示する実施形態において、ヘッダ５０２はTunnelToAccコマンドに対するコマンドコードを含む。ヘッダ５０２は、ペイロード５０４のサイズを指定する情報等の他の情報を更に含むことができる。いくつかの実施形態において、オプションのテール５０６は、パケット５００の最後に含まれてもよい。そのテールには、誤りを検出又は訂正するのに使用可能な情報（例えば、チェックサム）及び／又は要求に応じて他の情報が含まれる。アクセサリ通信プロトコルにおいて、種々のパケットタイプが使用可能であることが、当業者には理解されるだろう。
【００７７】
図５Ｂは、アプリケーションプロトコルパケット５１０の一例を示す。この例において、アプリケーションプロトコルパケット５１０は、ヘッダ５１２（App.Header）、ペイロード５１４（App.Payload）及びテール５１６を含む。アプリケーションプロトコルパケットにおいて、種々の他のパケットタイプ、スタイル、構成、ペイロード、情報領域等が使用可能である。実際には、アプリケーション及び／又はアクセサリは、制約なしでアプリケーション開発者により設計、開発及び／又は作成されるような任意のタイプ、サイズ、構成等のアプリケーションプロトコルパケットを使用できる。いくつかの実施形態において、一部又は全てのアプリケーションプロトコルパケットは、アクセサリ通信プロトコルパケットにモデル化されてもよい（又はアクセサリ通信プロトコルパケットの内容により区別不可能であってもよい）。いくつかの実施形態において、アプリケーションプロトコルパケットはヘッダを含んでも含まなくてもよい。いくつかの実施形態において、アプリケーションプロトコルパケットはテールを含んでも含まなくてもよい。いくつかの実施形態において、アプリケーションプロトコルパケットは固定サイズ又は可変サイズのペイロード５１４を含むことができる。いくつかの実施形態において、コマンド、データ及び／又は他のメッセージ要素は、ペイロード及び／又はヘッダ内に提供される。コマンド及び／又はデータ及び／又は他のメッセージ要素の特定の特徴は、アプリケーションプロトコルにより指定される。更にアプリケーションプロトコルは、メッセージに対してパケット構造を使用することを全く要求されない。アクセサリプロトコルメッセージは、受信者により正確に解釈可能である任意の形式及び／又は構造を有することができる。
【００７８】
図５Ｃは、アクセサリプロトコルパケット５２０のペイロード５０４内にパッケージ化（又はラップ）されるアプリケーションプロトコルパケット５１０の一例を示す。図示するように、パケット５２０は、アクセサリプロトコルパケットヘッダ５０２を含み、アプリケーションプロトコルパケット５１０がそれに後続する。いくつかの実施形態において、ヘッダ５０２は、ペイロードがアプリケーションプロトコルパケットであることを示すコマンド又はバイトコードを含むことができる。この例において、アプリケーションプロトコルパケットは、アプリケーションプロトコルパケットヘッダ５１２、アプリケーションプロトコルパケットペイロード５１４及びアプリケーションプロトコルパケットテール５１６を含む。アプリケーションプロトコルパケット５１０は、アクセサリプロトコルパケット５２０のペイロード５０４を完全に埋めても埋めなくてもよい。更に一般的には、TunnelToAccコマンドに対するアクセサリプロトコルパケットは、アクセサリに出力することを意図する任意のデータバンドルを含むことができ、単一のアクセサリプロトコルパケットを搬送することに限定されない。
【００７９】
図４に戻ると、アクセサリ４０２は、例えばポート４２２において、アクセサリプロトコルTunnelToAccコマンドパケットを受信する。ポート４２２は、例えばアクセサリ４０２のコントローラ又は他のプロセッサ上で実行されているソフトウェア処理であってもよいプロトコルインタプリタ４２４にTunnelToAccコマンドパケットをルーティングできる。プロトコルインタプリタ４２４は、TunnelToAccコマンドを読み出し、そのコマンドに含まれるバンドルを抽出し、アクセサリ４０２のコントローラ又は他のプロセッサ上で実行されている別の処理４２６にバンドルを転送できる。処理４２６は、アプリケーションプロトコルに準拠する受信情報を処理できる任意の処理を含むことができる。例えば処理４２６は、受信情報から命令を抽出し且つアクセサリ専用ハードウェア（例えば、図２のアクセサリ専用ハードウェア２７５）に対して対応する制御信号を生成する処理を含むことができる。
【００８０】
アクセサリ４０２から移動体コンピューティング装置４００への通信もサポートされる。例えば処理４２６は、アプリケーションプロトコルでメッセージに対応するデータバンドルを生成でき、そのバンドルが移動体コンピューティング装置４００に送出されるようにプロトコルインタプリタ４２４に提供できる。プロトコルインタプリタ４２４は、アクセサリ通信プロトコルのTunnelToHostコマンド内にバンドルをパッケージ化でき（例えば、図５Ａ〜図５Ｃに示す例と同様に）、移動体コンピューティング装置４００に送出するためにポート４２２にコマンドを送出できる。
【００８１】
移動体コンピューティング装置４００において、ポート４１４は、TunnelToHostコマンドパケットを受信し、それをプロトコルマネージャ４１０に転送する。プロトコルマネージャ４１０は、TunnelToHostコマンドを認識し、それに応答してバンドルを抽出し且つバンドルと関連付けられるアクセサリ及びアプリケーションプロトコルのＩＤと共にそのバンドルをサポート層４０８に転送する。いくつかの実施形態において、プロトコルマネージャ４１０は、TunnelToHostコマンドを出力したポートに基づいてそれらの識別子を判定できる。従って、TunnelToHostコマンドは、アクセサリ又はアプリケーションプロトコルのＩＤを提供する必要はない。
【００８２】
サポート層４０８は、アクセサリ及びアクセサリプロトコル識別子を使用して、バンドルをセッション４０６の入力ストリームに誘導する。アプリケーション４０４は、セッション４０６の入力ストリームから入力データを読み出し、アプリケーションプロトコルに従ってデータを解釈し、それに応じて応答できる。
【００８３】
従って、例えば、アプリケーション４０４は温度計アプリケーションであってもよく、アクセサリ４０２は温度計を含むことができる。アプリケーション４０４は、適切なアプリケーションプロトコル（例えば、「com.temprus.thermometer1」という名前のプロトコル）を使用してアクセサリ４０２から温度測定を要求できる。例えばアプリケーションプロトコルは、アクセサリから温度データを要求するためにアプリケーションにより送出されるGet_Tempコマンドを指定できる。アプリケーション４０４は、例えばGet_Tempコマンド及びコマンドと関連付けられる任意の基本設定又は変数を含むアプリケーションプロトコルパケットを作成できる（例えば、温度データを華氏で返すか摂氏で返すかに関わらず）。アプリケーション４０４は、アプリケーションプロトコルにより規定されるような適切なヘッダ及び／又はテールを含むパケットを作成できる。アプリケーション４０４は、アプリケーションプロトコルメッセージであるこのパケットをセッション４０６の出力ストリームに渡すことができる。セッション４０６は、プロトコルマネージャ４１０にアクセサリプロトコル−トンネルコマンドを送出するように指示し、アプリケーションプロトコルが「com.temprus.thermometer1」であることを指定する。プロトコルマネージャ４１０は、アクセサリ通信プロトコルのTunnelToAccコマンドパケット内にGet_Tempコマンドをパッケージ化でき、またアプリケーションプロトコル名をルックアップし、このアプリケーションプロトコルがポート４１４と関連付けられることを判定できる。プロトコルマネージャ４１０は、アクセサリ４０２に出力するためにTunnelToAccコマンドパケットをポート４１４にルーティングできる。
【００８４】
アクセサリ４０２は、ポート４２２においてTunnelToAccコマンドを受信できる。プロトコルインタプリタ４２４はGet_Tempコマンドパケットを抽出し、それを処理４２６に出力でき、この例において、処理４２６は温度センサを制御し且つ温度センサからデータを受信する処理であってもよい。従って、処理４２６は、アプリケーション４０４に返される温度データを取得できる。処理４２６は、データを送出するために、例えばアプリケーションプロトコルに準拠するSend_Tempコマンドパケットを生成できる。このパケットは、要求される温度データを含むことができる（例えば、Get_Tempコマンドで指定される温度目盛を使用する）。処理４２６は、プロトコルインタプリタ４２４にSend_Tempコマンドパケットをバンドルとして提供でき、移動体コンピューティング装置４００に送出されるべきであることが示される。プロトコルインタプリタ４２４は、アクセサリ通信プロトコルのTunnelToHostコマンド内にSend_Tempコマンドパケットをパッケージ化でき、ポート４２２は、移動体コンピューティング装置４００のポート４１４にTunnelToHostコマンドを通信できる。ポート４１４は、入力TunnelToHostコマンドをプロトコルマネージャ４１０に出力でき、プロトコルマネージャ４１０は、バンドル（この場合、Send_Tempコマンドパケット）を抽出し且つポートマップ４１２から判定されるようにバンドルが「com.temprus.thermometer1」と関連付けられるという情報と共にそのバンドルをサポート層４０８に提供できる。サポート層４０８は、セッション４０６に、特にセッション４０６の入力ストリームにバンドルを誘導できる。アプリケーション４０４は、入力ストリームからバンドルを読み出し、アプリケーションプロトコルに準拠するSend_Tempコマンドパケットとしてそのバンドルを認識し、温度データを抽出できる。
【００８５】
いくつかの実施形態において、アクセサリは、アプリケーションプロトコル及びアクセサリ通信プロトコルのコマンドの双方を使用してアクセサリと通信できる。図６は、図４の実施形態におけるアクセサリ通信プロトコルのコマンドに対するパスを示す。アプリケーション４０４は、セッション４０６を介してアプリケーションプロトコルメッセージを送出することに加えて、サポート層４０６に対する適切なＡＰＩ呼出しを行なうことによりアクセサリ−プロトコルコマンドを呼び出せる。サポート層４０６は、ポート４１４を介してアクセサリ４０２にアクセサリ−プロトコルコマンド（本明細書において、「mobile computing deviceProtCmdOut」で表される）を送出するようにプロトコルマネージャ４１０に命令できる。同様に、アクセサリ４０２から受信されるアクセサリ−プロトコルコマンド（本明細書において、「mobile computing deviceProtCmdIn」で表される）は、プロトコルマネージャ４１０により受信及び処理され、プロトコルマネージャはコマンドをサポート層４０６に通信できる。その結果、サポート層４０６はそれに従ってアプリケーション４０４に対して動作可能である。
【００８６】
いくつかの実施形態において、アプリケーションプロトコルは、アクセサリ通信プロトコルにより指定されるlingo及び／又はコマンドを組み込むことができる。例えばアクセサリ通信プロトコルは、ユーザが移動体コンピューティング装置を介して高周波チューナアクセサリを制御することを可能にするチューナlingoであるRFTunerを規定できる。例えば、RFTuner lingoは、受信機をＯＮ及びＯＦＦにするコマンド、局を変更するコマンド等を含むことができる。いくつかの実施形態において、ラジオチューナアプリケーションは、移動体コンピューティング装置において実行可能であり、移動体コンピューティング装置上で実行されているラジオチューナアプリケーション及びラジオチューナアクセサリは、ラジオチューナアクセサリがラジオチューナアプリケーションと通信することを可能にするラジオチューナアプリケーションプロトコルをサポートできる。RFTuner lingoの一部又は全てのコマンドは、ラジオチューナアプリケーションプロトコルと共に使用され、ラジオチューナアプリケーションプロトコルは、他のコマンド（例えば、ユーザが好む事前設定された局のリストを制御するコマンド）も含むことができる。従って、ラジオチューナアプリケーションは、例えば局を変更するためにラジオチューナアクセサリと通信するのにラジオチューナアプリケーションプロトコルの一部としてRFTuner lingoを使用でき、他の動作に対してラジオチューナアプリケーションプロトコルの他のコマンドを更に使用できる。移動体コンピューティング装置は、アプリケーションに依存しないラジオチューナアクセサリと通信するためにアクセサリ通信プロトコルの一部としてRFTuner lingoを使用できる。従って、ラジオチューナアクセサリは、２つのプロトコルのいずれかの単一のlingoを使用して移動体コンピューティング装置にコマンド及び／又はメッセージを送出できる。
【００８７】
別の例として、RFTuner lingoは、ラジオチューナアクセサリの周波数をコマンドに含まれる周波数に同調させるために移動体コンピューティング装置（例えば、移動体コンピューティング装置上で実行されているアプリケーション）から送出されるRFSetFreqコマンドを含むことができる。ラジオチューナアプリケーションは、アプリケーションプロトコルにより規定されるような適切なヘッダ及び／又はテールを含むパケットを作成でき、RFSetFreqコマンド及び要求された周波数をパケットペイロードに含むことができる。パケットは、例えば上述したようなTunnelToAccコマンドであるアクセサリ通信プロトコルのコマンドによりパケットをアクセサリプロトコルパケットにバンドルできるプロトコルマネージャに送出される。アクセサリプロトコルパケットは、アクセサリに送出される。別の例として、RFSetFreqコマンドは、ラジオチューナアクセサリなしで且つトンネルされずに使用される。移動体コンピューティング装置は、RFSetFreqコマンド及び関連する周波数を使用するアクセサリ通信プロトコルを使用してパケットをスタンドアロンパケットとしてアクセサリに送出できる。
【００８８】
更に別の例として、アクセサリは、アプリケーションプロトコル及び／又はアクセサリ通信プロトコルのいずれかを使用して移動体コンピューティング装置と通信するためにRFTuner lingoを使用できる。例えばアクセサリは、移動体コンピューティング装置において特定のアプリケーションと通信する時、TunnelToHostコマンドを使用してRFTunerコマンドを移動体コンピューティング装置にトンネルできる。別の例として、アクセサリは、移動体コンピューティング装置にトンネルせずにRFTunerコマンドを送出できる。
【００８９】
別の実施形態において、スピーカドック等のアクセサリは、移動体コンピューティング装置上でのメディア再生のリモート制御を提供してもよい。リモート制御機能は、アクセサリ通信プロトコルのコマンドを使用して実現される。例えばアクセサリ通信プロトコルは、アクセサリがユーザにより呼び出される特定の機能（例えば、再生、一時停止、次のトラック、前のトラック等）を識別するために送出できるButtonStatusコマンドを含むことができる。移動体コンピューティング装置は、ButtonStatusコマンドを処理し且つそれに従って応答できる格納されたメディアに対する再生エンジンを有することができる。移動体コンピューティング装置上で実行されているアプリケーションは、例えばインターネットデータストリームから他のメディアソースの再生を提供できる。ユーザが格納されたメディアの再生を制御するのと同様にユーザがアクセサリを動作させることによりストリーミングコンテンツの再生をリモート制御できるのが望ましいだろう。従って、ストリームされたコンテンツの再生を制御するためのコマンド又は他の制御信号を含む「ストリーミング制御」アプリケーションプロトコルが規定される。ユーザは、格納又はストリームされたメディアコンテンツの再生を制御するのと全く同様にアクセサリを動作させることができる。格納されたコンテンツが再生されている場合、アクセサリはアクセサリ通信プロトコル（例えば、ButtonStatusコマンド）を使用して再生エンジンにリモート制御情報を通信できる。ストリームされたコンテンツが再生されている場合、アクセサリは、ストリーミング制御アプリケーションプロトコルを使用してアプリケーションにリモート制御情報を通信できる。一実施形態において、アクセサリ通信プロトコルのButtonStatusコマンドは、ストリーミング制御アプリケーションプロトコルに組み込まれる。
【００９０】
更に別の実施形態において、アクセサリは、移動体コンピューティング装置に場所情報を送出してもよい。場所情報は、アクセサリ及び／又は移動体コンピューティング装置の場所を表す任意の情報を含むことができ、全地球測位システム（ＧＰＳ）受信機を使用したり且つ／又は近傍の移動電話網アクセスポイントに関する情報に基づいて場所を三角測量するなど、種々の方法で判定される。アクセサリ通信プロトコルは、移動体コンピューティング装置に場所情報を送信するためにアクセサリにより使用可能である「場所」lingoを提供してもよい。しかし、アプリケーションは、場所lingoに提供されていない場所情報を使用してもよい。そのような情報は、アクセサリ専用プロトコルを使用してアクセサリによりアプリケーションに送信される。従って、場所情報が使用される方法に依存して、同一のアクセサリは、アクセサリ通信プロトコルの場所lingoか又はアクセサリ専用プロトコルを使用して移動体コンピューティング装置に場所情報を送信できる。
【００９１】
本明細書で説明する通信パスが例示であり、変形及び変更が可能であることは理解されるだろう。例えばパスは、アクセサリ側及び／又は移動体コンピューティング装置側に更に多くの層又は更に少ない層を含んでもよい。いくつかの実施形態において、パケットをトンネルする各移動体コンピューティング装置は１つのアクセサリプロトコルメッセージを含むが、これは必須ではない。例えば受信者（状況に応じてアクセサリ又はアプリケーション）が受信した複数のデータバンドルからメッセージを再構成できると仮定すると、単一のアクセサリプロトコルメッセージは、パケットをトンネルする複数の移動体コンピューティング装置を使用して送出されてもよい。同様に、受信者がバンドルを複数のメッセージに構文解析できると仮定すると、パケットをトンネルする単一の移動体コンピューティング装置は複数のアクセサリプロトコルメッセージを含んでもよい。
【００９２】
図４の説明において、アプリケーション４０４が互換性のあるアクセサリ４０２とのセッション４０６を既に確立していることが仮定された。次に、アプリケーションが互換性のあるアクセサリを識別し（又はその逆が可能であり）且つセッションを確立することを可能にする技術の例を説明する。
【００９３】
図７は、本発明の一実施形態に従ってアクセサリ及び互換性のあるアプリケーションを識別する処理７００を示すフローチャートである。処理７００は、ブロック７０２で開始できる。ブロック７０４において、移動体コンピューティング装置は、アクセサリが接続されているかを判定できる。例えば移動体コンピューティング装置は、例えば図１Ａに示すようにアクセサリがコネクタと物理的に結合されているか又は例えば図１Ｂに示すようにアクセサリが移動体コンピューティング装置と無線結合されているかを検出できる。上述したように、アクセサリは、移動体コンピューティング装置とアクセサリとの間の有線又は無線通信チャネルが開かれている時は常に接続されていると考えられ、ブロック７０４は、そのようなチャネルが開いていることを検出することを含む。移動体コンピューティング装置上で実行されているアプリケーションマネージャは、移動体コンピューティング装置とアクセサリとの間の通信チャネルが開いているかを判定するためにハードウェア接続又は通信モジュールを監視できる。
【００９４】
ブロック７０６において、移動体コンピューティング装置は、アクセサリからアプリケーションプロトコル情報を受信できる。いくつかの実施形態において、この情報は、アクセサリ通信プロトコルにより規定されるパケットを使用して通信される。他の実施形態において、アプリケーションプロトコル情報は、アクセサリ及び移動体コンピューティング装置のいずれか又は双方により理解される任意の方法で通信される。例えばアプリケーションプロトコル情報は、ＵＳＢプロトコル、Ｂｌｕｅｔｏｏｔｈプロトコル又はＷｉＦｉプロトコル等の任意の業界標準の通信プロトコルを使用して通信される。例えばアクセサリ通信プロトコルは、アクセサリが自身に関する情報及び自身の機能に関する情報を提供するために移動体コンピューティング装置に送出できる１つ以上のコマンド及び関連するデータ形式を指定できる。いくつかの実施形態において、これらのコマンドは、アクセサリ通信プロトコルの一般的なlingoの一部であってもよい。アクセサリにより提供される情報は、アクセサリによりサポートされるアプリケーション通信プロトコルの名前のテキスト文字列を含むことができる。名前は、例えば上述したような逆ドメイン名規則又は任意の他の所望の命名規則を使用して指定される。アクセサリは、他の識別情報を更に送出できる。例えばアクセサリは、アクセサリの種類、製造業者、型名、シリアル番号、ハードウェア、ソフトウェア及び／又はファームウェアバージョン等を識別する情報を送出できる。アクセサリは、使用できるか又は使用することを意図する移動体コンピューティング装置の機能を示す情報を更に送出できる。例えばアクセサリは、使用してもよいアクセサリ通信プロトコルのlingo、オーディオ及び／又はビデオ信号を移動体コンピューティング装置から受信するのか又は移動体コンピューティング装置に提供するのか、並びに移動体コンピューティング装置の好適な初期動作状態（例えば、オーディオ及び／又はビデオ信号交換が最初に有効にされるべきか又は無効にされるべきか、オーディオ及び／ビデオ信号伝送に対する好適な形式）等を指定できる。
【００９５】
他の実施形態において、アプリケーションプロトコルは、アプリケーションストアを参照することにより指定されるか又はインターネットを介してサーバから指定される。例えばアクセサリが移動体コンピューティング装置に結合される場合、移動体コンピューティング装置は、アプリケーションストアから及び／又はインターネットを介してサーバからアプリケーションプロトコル情報を要求できる。一実施形態において、移動体コンピューティング装置は、アクセサリ製造業者、型名及び／又はシリアル番号等のアクセサリ識別情報をアプリケーションストア又は他のサーバに送出でき、それに応答してアプリケーションプロトコル情報を受信できる。例えば、アクセサリから送出されたアプリケーションプロトコル情報は、アプリケーションプロトコル名、種々のアプリケーションプロトコルコマンド、メッセージ及び／又はパケット仕様を指定するファイル、アプリケーションプロトコルと互換性のあるアプリケーションの一覧、アプリケーション又はアプリケーション更新データがダウンロードされるネットワークの場所の指示等を含むことができる。アプリケーションプロトコル情報は、メタデータ形式で送出される。いくつかの実施形態において、種々のバージョンのアプリケーションプロトコルがアプリケーションストア又はインターネットを介して利用可能にされる。例えば種々のバージョンのアプリケーションプロトコルは、種々のレベルの機能性を可能にでき、種々の価格で移動体コンピューティング装置と共に使用するために提供される。例えば「ライト」バージョン、フリーバージョン、フルバージョン、デモバージョン等が利用可能にされる。例えばフルバージョンが移動体コンピューティング装置及び／又はアクセサリにより使用可能なコマンドの集合を規定できる一方、ライトバージョンはフルバージョンにより規定されるコマンドの部分集合を規定する。
【００９６】
いくつかの実施形態において、アプリケーションプロトコルは、移動体コンピューティング装置に通信される時に列挙される。アクセサリは、インデックス番号又は各アプリケーションに関連するある種の指示によりサポートされる各アプリケーションプロトコルを識別できる。例えばアクセサリは、インデックス１がアプリケーションプロトコル１であり、インデックス２がアプリケーションプロトコル２であり、インデックス３がアプリケーションプロトコル３であることを示すメッセージを送出できる。各アプリケーションプロトコルは、例えば逆ドメイン名規則を使用するなど、任意の種類の指示を使用して示される。その後、それらのプロトコルはそれらのインデックス番号を使用して参照される。そのような列挙法は、本開示において説明される実施形態で使用される。
【００９７】
ブロック７０８において、移動体コンピューティング装置は、アクセサリ通信プロトコルに従って認証手順を使用してアクセサリを認証できる。これらの手順は、例えば移動体コンピューティング装置に格納される公開鍵証明書及び種々のアクセサリにより保持される秘密鍵に基づく認証技術、並びに／あるいは他の技術を含むことができる。いくつかの実施形態において、移動体コンピューティング装置は、接続及び識別時に全てのアクセサリを認証できる（例えば、ブロック７０６の後）。他の実施形態において、移動体コンピューティング装置は、ブロック７０６において識別の前又は識別中に全てのアクセサリを認証できる。更に他の実施形態において、認証は処理中に後で行なわれるか又は全く行なわれない。例えばいくつかの実施形態において、移動体コンピューティング装置は、アクセサリ通信プロトコルと関連付けられる特定の機能及び／又は動作が認証されたアクセサリによってのみアクセスされることを許可する。そのような「アクセスが制限される」機能は、アクセサリプロトコルコマンドの通信に関連する機能を含むことができる（例えば、上述のトンネルコマンドはアクセスが制限されるコマンドであってもよい）。移動体コンピューティング装置は、アクセスが制限された機能をアクセサリが使用しようとするまでアクセサリを認証するのを待つことができるか、あるいは移動体コンピューティング装置は、アクセスが制限された機能をアクセサリが使用しようとするか又は使用しようとする可能性があることを示す情報を受信した後であればいつでもアクセサリを認証できる。
【００９８】
ブロック７１０において、移動体コンピューティング装置は、ブロック７０６で供給されたアプリケーションプロトコル情報を使用して「接続」アプリケーションプロトコルリストを作成及び／又は更新できる。例えば図３を参照すると、ポートマップ３２５及び／又はアクセサリ情報テーブル３３０は、新しく接続されたアクセサリ及びそのアプリケーションプロトコルをポートと関連付けるように更新される。ブロック７０６で提供された任意のアクセサリ識別情報は、移動体コンピューティング装置により接続アプリケーションプロトコルリストに格納される。接続プロトコルリストの一例をテーブル８２０として図８に示す。テーブル８２０は、アクセサリが接続されるポートと関連して、現在接続されているアクセサリが識別した各アプリケーションプロトコルを一覧表示する。（従って、テーブル８２０は図３のポートマップ３２５の一例であってもよい。）テーブル８２０の形式及び情報コンテンツは、要求に応じて変更可能であることが理解される。
【００９９】
図７に戻ると、ブロック７１２において、移動体コンピューティング装置は、アクセサリと関連付けられるアプリケーションプロトコルを使用する任意のアプリケーションが利用可能であるか（そのようなアプリケーションは、本明細書において「互換性のある」アプリケーションとも呼ばれる）を判定できる。例えば移動体コンピューティング装置は、サポートされるアプリケーションプロトコルのテーブルを格納でき、各プロトコルは、そのプロトコルをサポートする１つのアプリケーション（又は複数のアプリケーション）と関連付けられる。サポートアプリケーションプロトコルテーブルの一例をテーブル８１０として図８に示す。テーブル８１０は、アプリケーションプロトコル名のリストを含み、各アプリケーションプロトコル名は１つ以上のアプリケーションの識別子と関連付けられる。いくつかの実施形態において、テーブル８１０は、アプリケーション識別子を返すためにアプリケーションプロトコルの名前を使用してアクセス可能であるルックアップテーブルとして実現可能である。更にテーブル８１０は、特定のアプリケーションと関連付けられるアプリケーションプロトコルのリストを返すためにアプリケーション識別子を使用してアクセス可能である。
【０１００】
いくつかの実施形態において、テーブル８１０は、現在実行しているアプリケーションと関連するアプリケーションプロトコルのみを含む。例えばアプリケーションが開始すると、アプリケーションが要求し且つ／又は使用できるアプリケーションプロトコルのリストを移動体コンピューティング装置のシステム処理（例えば、図３のサポート層３１５）に提供できる。移動体コンピューティング装置のシステム処理は、それに応じてテーブル８１０を更新できる。他の実施形態において、テーブル８１０は、移動体コンピューティング装置にインストールされる全てのアプリケーションに対して維持される永続的なテーブルであってもよい。例えばアプリケーションをインストール（又は更新）することは、移動体コンピューティング装置のシステム処理（例えば、サポート層３１５）にアプリケーションが要求し且つ／又は使用できる任意のアプリケーションプロトコルを通知することを含むことができる。移動体コンピューティング装置は、それに応じてテーブル８１０を更新できる。
【０１０１】
いくつかの実施形態において、アクセサリが移動体コンピューティング装置と結合される場合、アクセサリは、例えばアクセサリ通信プロトコルと関連付けられるアクセサリＩＤ lingoを使用してＩＤ情報を送出することにより自身を識別できる。ＩＤ情報は、例えばテーブル８１０を参照することにより適切なアプリケーション通信プロトコルを選択するために移動体コンピューティング装置により使用可能である。いくつかの実施形態において、移動体コンピューティング装置は、インターネットを介してサーバ及び／又はアプリケーションストアにアクセサリ識別情報を送出し、アクセサリと互換性のあるアプリケーション通信プロトコルを識別できる。いくつかの実施形態において、アプリケーションストア及び／又はサーバは、アクセサリと互換性のあるアプリケーションプロトコルを詳細に示すファイルを送出できる。いくつかの実施形態において、アクセサリは、移動体コンピューティング装置にアプリケーションプロトコル情報を送出しなくてもよく、アクセサリは、適切なアプリケーション通信プロトコルを選択するために移動体コンピューティング装置により使用されるアクセサリＩＤ情報を送出できる。
【０１０２】
図７のブロック７１２に戻ると、サポートアプリケーションプロトコルテーブル（例えば、図８のテーブル８１０）が提供される実施形態において、移動体コンピューティング装置は、新しく接続されたアクセサリのプロトコル名を使用してサポートプロトコルテーブルにアクセスすることにより、互換性のあるアプリケーションが利用可能であるかを判定できる。例えば図８に示すように、新しく接続されたアクセサリがアプリケーションプロトコル識別子としてprotocolString{c}を提供した場合、処理７００のブロック７１２は、サポートプロトコルテーブル８１０においてprotocolString{c}をルックアップすることを含むことができ、それにより、アプリケーション「Ａｐｐ８」がこのアプリケーションプロトコルと関連付けられることを判定する。この場合、ブロック７１２の結果、アプリケーションが利用可能であることが判定される。図８に更に示すように、新しく接続されたアクセサリがアプリケーションプロトコルとしてprotocolString{x}を提供した場合、テーブル８１０においてマッチングするものは見つけられず、処理７００のブロック７１２の結果、互換性のあるアプリケーションが利用可能でないことが判定される。
【０１０３】
互換性のあるアプリケーションが利用可能でない場合、処理７００は、ブロック７１４において互換性のあるアプリケーションの位置を特定し且つ取得することを容易にできる。例えば移動体コンピューティング装置は、アプリケーションを購入及び／又はダウンロードするためにアプリケーションストア（例えば、Apple Inc.により提供されるiTunesOストア）又は他のリソースにユーザを誘導できる。種々の援助が提供される。例えばいくつかの実施形態において、ブロック７０６で移動体コンピューティング装置に提供されたアクセサリ情報は、アクセサリと共に使用するための好適なアプリケーションの識別子を含むことができる。この識別子は、ＵＲＬ（ユニフォームリソースロケータ、例えばワールドワイドウェブページアドレス）又は特定のアプリケーションストアにおける好適なプリケーションの固有の製品識別子等であってもよい。移動体コンピューティング装置は、この情報を使用して好適なアプリケーションの位置を特定でき、アプリケーションを購入及び／又はダウンロードするようにユーザに指示できる。
【０１０４】
他の実施形態において、移動体コンピューティング装置は、例えばアプリケーションストア内で互換性のあるアプリケーションを探索するために、他のアクセサリ識別情報を含むアプリケーションプロトコル情報又は他のアクセサリ識別情報を含まないアプリケーションプロトコル情報を使用できる。例えば図９に示すように、移動体コンピューティング装置は、１つ以上の接続されたアプリケーションプロトコル及び／又はアクセサリにより提供される好適なアプリケーションの識別子（appCode８３０として表される）を使用してクエリ８２５を定式化できる。移動体コンピューティング装置は、アプリケーションストア又は別の宛先における探索と関連するＵＲＬ８４０にクエリ８２５を送出できる。図示する例において、クエリは、好適なアプリケーションのappCode８３０と共に全ての接続アプリケーションプロトコル（論理「和（ＯＲ）」オペランドにより結合される）のリストを含む。複数のアプリケーションがクエリとマッチングした場合、好適なアプリケーション８３０は、好適なプリケーション（これは、マッチングするもののリスト上にある）を強調表示するためにアプリケーションストアにより使用される。従って、接続プロトコルリスト８２０の１つ以上のアプリケーションプロトコルをサポートする複数のアプリケーションが一覧表示されてもよいが、好適なアプリケーション８３０はデフォルトアプリケーションであってもよく、例えば結果リストの最上部になるように一覧表示され且つ／又は要求に応じてそのアプリケーションを識別する記号、単語又はロゴにより印がつけられてもよい。いくつかの実施形態において、２つ以上のバージョンの好適なアプリケーションに格付けが提供されてもよく、その結果、ユーザが層状のリストを提示されてもよい。例えば、好適なアプリケーションのプロバージョン、標準バージョン及び／又はフリーバージョン全てが提供可能である。
【０１０５】
クエリに応答して、アプリケーションストアは、１つ以上の互換性のあるアプリケーションのリストを返すことができ、移動体コンピューティング装置は、ダウンロードする互換性のあるアプリケーションを選択するようにユーザに指示できる。いくつかの実施形態において、アプリケーションは、ダウンロードされるとすぐにインストール可能である。他の実施形態において、ユーザは、アプリケーションをダウンロード及びその後インストールするように別個に指示されてもよい。更に他の実施形態において、ユーザは、アプリケーションを購入するように要求されてもよい。いくつかの実施形態において、クレジットを使用してアプリケーションストアを介して及び／又は先に開設された口座を介して購入される。
【０１０６】
更に他の実施形態において、互換性のあるアプリケーションは、アクセサリ自体に事前に格納されてもよく、アクセサリ通信プロトコルは、アクセサリが互換性のあるアプリケーションを格納していることを示すことを可能にするコマンドを含むことができる。そのような指示に応答して、移動体コンピューティング装置は、アクセサリから互換性のあるアプリケーションをアップロードし且つそれをインストールできる。（いくつかの実施形態において、移動体コンピューティング装置は、アクセサリにより提供されるアプリケーションをアップロード及び／又はインストールする前に承認するようにユーザに指示してもよい。）
図７に戻ると、ブロック７１６において、互換性のあるアプリケーションが現在利用可能であり且つインストールされるかが判定される。（例えば、互換性のあるアプリケーションの位置が特定されていない可能性があるか、あるいはユーザはアプリケーションを購入もダウンロードもしないことを選択した可能性がある。）上記判定が否定である場合、処理７００はブロック７１８で終了する。
【０１０７】
ブロック７１６で互換性のあるアプリケーションが利用可能である（先にインストールされているか又はブロック７１４を介してインストールされたばかりである）場合、ブロック７２０において、移動体コンピューティング装置は、互換性のあるアプリケーションが既に実行しているかを判定できる。実行していない場合、アプリケーションはブロック７２２で開始される。ブロック７２２は、実現例に依存して、アプリケーションが開始されるべきであると確定するようにユーザに指示することを含むことができる。
【０１０８】
ブロック７２４において、アプリケーションはアクセサリと通信できる。いくつかの実施形態において、ブロック７２４は、例えば上述したように、セッションを作成すること、並びにセッションを介してアプリケーションプロトコルコマンドを送出及び／又は受信することを含むことができる。ブロック７２４は、アクセサリ通信プロトコルを使用してコマンド及び他の情報を送出及び／又は受信することを更に含むことができる。従って、同一のアプリケーション及びアクセサリは、アクセサリ通信プロトコルによりサポートされる機能を使用でき、また、アクセサリ通信プロトコルによりサポートされる機能と重複してもしなくてもよいアプリケーションプロトコルを使用して他の情報、制御信号、データ等を交換できる。例えばアクセサリが移動体コンピューティング装置から切断され且つ／又はアプリケーションが終了するまで、通信は無期限に持続可能である。この時点で、処理７００は終了する（ブロック７１８）。
【０１０９】
処理７００は、移動体コンピューティング装置において、ハードウェア、ソフトウェア及び／又はファームウェアを使用して実現可能である。例えばシステム処理及び／又はアプリケーションは実行し、上述の動作を実行するように移動体コンピューティング装置の機能性を制御してもよい。
【０１１０】
いくつかの実施形態において、移動体コンピューティング装置は、アクセサリが切断した後でも移動体コンピューティング装置に接続されていたアクセサリによりサポートされる全ての又は多くのアプリケーションプロトコルの永続リストを維持できる。移動体コンピューティング装置がアプリケーションストアと通信する場合、移動体コンピューティング装置は、アプリケーションストアに永続リスト上のプロトコルの一部又は全てを（例えば、アプリケーションストアを管理するサーバに対する探索クエリとして）提供でき、アプリケーションストアは、ユーザが興味のある可能性があるアプリケーションをリストに基づいて提案できる。例えばアプリケーションストアは、同一のアプリケーションプロトコルを使用する他のアプリケーションを識別できる。永続リストが各アプリケーションプロトコルと関連する特定のアクセサリを識別する情報を更に含む場合、アプリケーションストアにより提供される情報は、識別されたアプリケーションと互換性があるものとして特定のアクセサリを識別できる。これは、ユーザが購入及び／又はダウンロードするアプリケーションを選択するのを支援できる。
【０１１１】
図１０は、本発明の一実施形態に従ってアクセサリとの通信を開始するためにアプリケーションにより実行される処理１０００を示すフローチャートである。処理１０００は、例えばアプリケーションが移動体コンピューティング装置において開始される時に開始する（ブロック１００２）。例えば、ユーザはアプリケーションを手動で開始できるか、あるいはアプリケーションはアクセサリの接続に応答して移動体コンピューティング装置により自動的に開始される（例えば、図７を参照して上述したように）。
【０１１２】
ブロック１００４において、アプリケーションは、互換性のあるアクセサリが接続されるかを判定するためにチェックする。（本明細書において使用されるように、アクセサリがアプリケーションにより要求され且つ／又は利用可能であるアプリケーションプロトコルをサポートする場合、アクセサリは特定のアプリケーションと「互換性がある」。）例えば移動体コンピューティング装置が図８のテーブル８２０等の接続アクセサリテーブルを維持する実施形態において、アプリケーションは、所望のアプリケーションプロトコルの名前を使用してテーブルをクエリし、互換性のあるアクセサリが接続されるかを判定できる。このクエリは、例えばサポート層（例えば、図３のサポート層３１５）と通信するためにＡＰＩ機能呼出しを呼び出すことを含むことができる。
【０１１３】
ブロック１００６で互換性のあるアクセサリが接続されていない場合、アプリケーションは、ブロック１００８においてある特定の期間待機し、再試行できる。例えばタイムアウト期間が経過した場合、処理１０００はブロック１０２０で終了する。いくつかの実施形態において、ブロック１００８において待機中、アプリケーションは、互換性のあるアクセサリに接続するようにユーザに指示するメッセージをユーザに対して生成できる。いくつかの実施形態において、アプリケーションは、移動体コンピューティング装置システムサービスに登録され、繰り返しチェックするのではなく、互換性のあるアクセサリが利用可能になった時に通知を要求する。更に他の実施形態において、アプリケーションは、互換性のあるアクセサリが接続されていない場合に終了可能であり、互換性のあるアクセサリが接続されていない限り又はアプリケーションが縮小された機能性で実行可能でない限りアプリケーションが実行しないことをユーザに通知できる。
【０１１４】
互換性のあるアクセサリがブロック１０１０で検出される場合、アプリケーションはそのアクセサリとのセッションを開始できる。例えばアクセサリは、サポート層４０８（図４を参照）又はアプリケーションマネージャ（図１４を参照）のＡＰＩ呼出しを呼び出し、特定のアクセサリ及びアプリケーションプロトコルと関連付けられるセッション（例えば、図４のセッション４０６）を作成できる。図１０においてブロック１０１２により表されるセッションは、無期限に継続可能である。上述したように、セッション中、アプリケーションはセッションと関連付けられるアプリケーションプロトコルを使用してメッセージ（例えば、制御信号、データ、状態及び／又は他の情報）を送出及び／又は受信でき、更にアプリケーションは、所望の機能性がアクセサリ通信プロトコル内でサポートされるように、アクセサリ通信プロトコルを使用してメッセージを送出及び／又は受信できる。
【０１１５】
セッションは最終的に終了する。例えばブロック１０１４において、アプリケーションは、セッションが終了されるべきである（例えば、アプリケーションの終了又はアクセサリがそれ以上使用されないという指示等のユーザ命令に応答して）と判定でき、そのような判定に応答してブロック１０１６においてセッションを終了できる。別の例として、ブロック１０１８において、アプリケーションは、アクセサリが切断されたことを通知される。この結果、ブロック１０１６においてセッションが終了する。ブロック１０１６のセッションの終了は、例えばセッションオブジェクトを破棄するか又は閉じ且つ関連するリソースを解放するためにＡＰＩ呼出しを呼び出すことを含むことができる。例えばアクセサリ及びアプリケーションプロトコルの所定の組合せに対して１度に１つのセッションのみが許可される実施形態において、セッションの終了は、アクセサリ及びそのプロトコルが例えば異なるアプリケーションにより別のセッションにおいて自由に使用できることを示す信号を移動体コンピューティング装置に伝送できる。いくつかの実施形態において、セッションを終了した結果、アクセサリが切断される（例えば、移動体コンピューティング装置はポートを閉じることができる）。他の実施形態において、セッションが終了した後、アクセサリは接続されたままである。更に他の実施形態において、アプリケーションは、セッションが終了した時にアクセサリを切断するかに関して移動体コンピューティング装置システムサービスに命令できる。
【０１１６】
セッションが終了すると、処理１０００は終了可能である。いくつかの実施形態において、セッション終了処理後にアプリケーションがまだ実行している場合、１０００はブロック１００４に戻り、互換性のあるアクセサリを探し、新しいセッションを開始する。
【０１１７】
本明細書において説明されるアクセサリ通信プロトコルが例示であり、変形及び変更が可能であることは理解されるだろう。順次動作として説明された動作は同時に実行されてもよく、動作の順序は変更されてもよく、且つ／あるいは動作が追加されてもよく、省略されてもよく又は組み合わされてもよい。
【０１１８】
いくつかの実施形態において、移動体コンピューティング装置は、複数のアクセサリに対する同時接続及び／又は複数のアプリケーションの同時実行をサポートできる。従って、単一のアプリケーションは複数のアクセサリと同時に対話可能であるか、あるいは単一のアクセサリは複数のアプリケーションと同時に対話可能である。
【０１１９】
例えば図１１は、本発明のいくつかの実施形態に従ってアクセサリＡ１１０６及びアクセサリＢ１１０８と同時に対話する移動体コンピューティング装置１１０２上のアプリケーション１１００を示す。アクセサリＡ１１０６及びアクセサリＢ１１０８は、異なる種類のアクセサリであってもよく、あるいは同様の又は同一のアクセサリであってもよい。この例において、各アクセサリは、異なるポートに接続される。従って、アクセサリＡ１１０６はポート１１１０に接続され、アクセサリＢ１１０６はポート１１１２に接続される。アプリケーション１１００は、２つのセッション１１１４、１１１６を作成した。セッション１１１２がアクセサリ１１０４と関連付けられ且つアプリケーションプロトコルＡ１を使用する一方で、セッション１１１４はアクセサリＡ１１０６と関連付けられ且つアプリケーションプロトコルＢ１を使用する。セッション１１１２及び１１１４は、互いに依存しない。いずれのセッションも、他方のセッションに影響を及ぼさずに開始、使用及び／又は終了される。いくつかの実施形態において、セッションはプロトコル専用であってもよい。ポート１１１０は、アクセサリ通信プロトコルを使用して、移動体コンピューティング装置１１０２とアクセサリ１１０６との間を通過するようにプロトコルＡ１に準拠するメッセージに対する「トンネル」を提供でき、ポート１１１２は、（同一の）アクセサリ通信プロトコルを使用して、移動体コンピューティング装置１１０２とアクセサリ１１０８との間を通過するようにプロトコルＢ１に準拠するメッセージに対する別個のトンネルを提供できる。アプリケーションプロトコルＡ１及びＢ１は、要望に応じて異なるプロトコルであってもよく又は同一のプロトコルであってもよいことが理解される。更に、２つのアクセサリ及び２つのセッションが示されるが、十分なハードウェア及び／又はソフトウェアリソース（例えば、ポート及び／又はセッション）が移動体コンピューティング装置上で利用可能であるという条件の下でのみ、任意の数のアクセサリ及びセッションが本明細書で説明する方法で特定のアプリケーションに接続可能である。
【０１２０】
図１２は、本発明のいくつかの実施形態に従って移動体コンピューティング装置１２０４上で実行し且つアクセサリＡ１２０６及びアクセサリＢ１２０８と同時に対話する２つのアプリケーション、アプリケーション１ １２００及びアプリケーション２ １２０２を示す。アクセサリＡ１２０６及びアクセサリＢ１２０８は、異なる種類のアクセサリであってもよく、あるいは同様の又は同一のアクセサリであってもよい。この例において、各アクセサリは、異なるポートに接続される。従って、アクセサリＡ１２０６はポート１２１０に接続され、アクセサリＢ１２０８はポート１２１２に接続される。アプリケーション１ １２００は、アクセサリＡ１２０６及びアプリケーションプロトコルＡ１と関連付けられるセッション１２１４を作成し、アプリケーション２ １２０２は、アクセサリＢ１２０８及びアプリケーションプロトコルＢ１と関連付けられるセッション１２１６を作成した。セッション１２１２及び１２１４は互いに依存しない。いずれのセッションも、他方のセッションに影響を及ぼさずに開始、使用及び／又は終了される。ポート１２１０は、アクセサリ通信プロトコルを使用して、移動体コンピューティング装置１２０４とアクセサリ１２０６との間を通過するようにアプリケーションプロトコルＡ１に準拠するメッセージに対するトンネルを提供でき、ポート１２１２は、（同一の）アクセサリ通信プロトコルを使用して、移動体コンピューティング装置１２０４とアクセサリ１２０８との間を通過するようにアプリケーションプロトコルＢ１に準拠するメッセージに対する別個のトンネルを提供できる。図１１と同様に、アプリケーションプロトコルＡ１及びＢ１は、要望に応じて異なるプロトコルであってもよく又は同一のプロトコルであってもよいことが理解される。更に、２つのアクセサリ、２つのアプリケーション及び２つのセッションが示されるが、十分なハードウェア及び／又はソフトウェアリソース（例えば、ポート及び／又はセッション）が移動体コンピューティング装置上で利用可能であるという条件の下でのみ、任意の数のアクセサリ、セッション及び／又はアプリケーションが本明細書で説明する方法で同時にサポート可能である。
【０１２１】
図１３は、本発明のいくつかの実施形態に従って移動体コンピューティング装置１３０４上で実行し且つアクセサリ１３０６と同時に対話する２つのアプリケーション、アプリケーション１ １３００及びアプリケーション２ １３０２を示す。この例において、アクセサリ１３０６は２つの異なるアプリケーションプロトコル（Ａ１及びＡ２）をサポートする。プロトコルＡ１及びＡ２は、名前のみが異なってもよく、あるいは潜在的に互換性のない２つの別個のプロトコルであってもよい。アクセサリ１３０６は、プロトコルＡ１と関連付けられるポート１３１０で移動体コンピューティング装置１３０４に接続され、プロトコルＡ２と関連付けられるポート１３１２で移動体コンピューティング装置１３０４に更に接続される。アプリケーション１ １３００は、アクセサリ１３０６及びアプリケーションプロトコルＡ１と関連付けられるセッション１３１４を作成したため、ポート１３１０を介してアクセサリ１３０６と通信できる。同様に、アプリケーション２ １３０２は、アクセサリ１３０６及びアプリケーションプロトコルＡ２と関連付けられるセッション１３１６を作成したため、ポート１３１２を介してアクセサリ１３０６と通信できる。セッション１３１２及び１３１４は互いに依存しない。いずれのセッションも、他方のセッションに影響を及ぼさずに開始、使用及び／又は終了される。ポート１３１０は、アクセサリ通信プロトコルを使用して、移動体コンピューティング装置１３０４とアクセサリ１３０６との間を通過するようにアプリケーションプロトコルＡ１に準拠するメッセージに対するトンネルを提供でき、ポート１３１２は、（同一の）アクセサリ通信プロトコルを使用して、移動体コンピューティング装置１３０４とアクセサリ１３０６との間を通過するようにアプリケーションプロトコルＡ２に準拠するメッセージに対する別個のトンネルを提供できる。２つのアプリケーション及び２つのセッションが示されるが、十分なハードウェア及び／又はソフトウェアリソース（例えば、ポート及び／又はセッション）が移動体コンピューティング装置上で利用可能であるという条件の下でのみ、任意の数のアクセサリ、セッション及び／又はアプリケーションが本明細書で説明する方法で同一のアクセサリに同時に接続可能である。
【０１２２】
図１１〜図１３のシステム構成が例示であり、変形及び変更が可能であることは理解されるだろう。例えば、任意の数のアプリケーション及び任意の数のアクセサリが任意の数のセッション及びポートを使用して接続可能である。上述したように、セッションは物理的接続（例えば、ポート等）の詳細からアプリケーションを隠すソフトウェアエンティティであってもよい。従って、アプリケーションは、通信するために、互換性のあるアクセサリが接続されるポートを認識する必要はない。また、通信パスは他の中間層（例えば、上述したようなプロトコルマネージャ及び／又はプロトコルデーモン層）を更に含むことができる。
【０１２３】
アプリケーションマネージャは、アプリケーションと通信ポートとの間の通信接続を抽出し、アプリケーションプログラムに対して透過的な通信プロトコルの詳細を示すために使用される。いくつかの実施形態において、通信接続が抽出された場合、アプリケーションプログラムは、通信しているアクセサリの任意の詳細を認識せずに、出力ストリームにデータを書き込み且つ入力ストリームからデータを読み出すことによりアクセサリと通信できる。これは、アプリケーションマネージャを使用して行なわれる。
【０１２４】
いくつかの実施形態において、アプリケーションマネージャは、図４に示すサポート層４０８又はプロトコルマネージャ４１０の部分を含むことができるか、あるいはサポート層４０８又はプロトコルマネージャ４１０により実現される。図１４は、そのような抽象概念の一例を示す。図１４は、本発明のいくつかの実施形態に従って移動体コンピューティング装置のアプリケーション層１４０２とアプリケーションマネージャ１４０４とハードウェアトランスポート層１４０６との間のデータフローを示す。アプリケーション層１４０２は、移動体コンピューティング装置で実行する任意の種類の処理であってもよい。ハードウェアトランスポート層１４０２は、移動体コンピューティング装置とアクセサリとの間の任意の種類のハードウェアインタフェース又はソフトウェアインタフェースを含むことができる。
【０１２５】
アプリケーションマネージャ１４０４は、ハードウェアトランスポート層１４０６を介し且つアプリケーション層１４０２を介してアクセサリ間の通信インタフェースを提供できる。それにより、アプリケーション１４０２が通信しているアクセサリの詳細又はアクセサリが結合されるポートの詳細を認識しないように、通信は抽出される。アプリケーションマネージャ１４０４は、移動体コンピューティング装置のオペレーティングシステムの一部であるバックグラウンド処理であってもよく又は移動体コンピューティング装置で実行する別のバックグラウンド処理であってもよい。アプリケーションマネージャ１４０４は、アクセサリと通信するために使用されるアプリケーションに入力ストリーム及び出力ストリームを提供できる。
【０１２６】
いくつかの実施形態において、アプリケーションマネージャ１４０４は、移動体コンピューティング装置と結合される接続アクセサリを管理でき、ハードウェアトランスポート層１４０６を介してアクセスされる。アプリケーションマネージャ１４０４は、移動体コンピューティング装置上で実行されているか又はインストールされるアプリケーションのアクセサリ通信機能を更に管理できる。双方の場合において、アプリケーションマネージャ１４０４はアクセサリ及び／又はアプリケーションと関連付けられるアプリケーションプロトコル情報を格納できる。図１５〜図１８は、アプリケーションマネージャを使用してセッションを確立し且つアプリケーションとアクセサリとの間の通信を提供するために実現される種々の処理を示す。
【０１２７】
図１５は、本発明のいくつかの実施形態に従ってセッションを確立及び管理するために移動体コンピューティング装置においてアプリケーションマネージャにより実行される処理１５００を示すフローチャートである。処理１５００はブロック１５０２で開始する。ブロック１５０４において、アプリケーションマネージャは、アクセサリが移動体コンピューティング装置と接続されているか（すなわち、通信しているか）を判定するために通信ポートを監視する。いくつかの実施形態において、アプリケーションマネージャは、アクセサリが移動体コンピューティング装置と結合されるかを判定するために物理コネクタのハードウェア状態を監視できる。いくつかの実施形態において、アプリケーションマネージャは、ＷｉＦｉ又はＢｌｕｅｔｏｏｔｈモジュールから無線接続が確立されたことを示す指示を受信できる。ポートの種類に関係なく、アプリケーションマネージャは、通信チャネルがアクセサリに対して確立されたかを判定できる。ブロック１５０６において、処理１５００は、アクセサリが移動体コンピューティング装置と結合されるかを監視し続ける。
【０１２８】
ブロック１５０６で判定されたように、通信チャネルが確立されると、処理１５００はブロック１５０８において認証処理を実行できる。認証は、アクセサリプロトコルを使用して移動体コンピューティング装置とアクセサリとの間で種々のメッセージを送出することにより進む。アクセサリが認証され、移動体コンピューティング装置と通信する許可が与えられると、アクセサリ機能情報はブロック１５１０において受信される。機能情報は、アクセサリと互換性のある１つ以上のアプリケーションプロトコルを示す情報を含むことができる。アプリケーションプロトコルは、例えば上述したような逆ドメイン名規則又はアプリケーションプロトコルを示す任意の他の規則を使用して示される。ブロック１５１２において、一部又は全ての情報は、移動体コンピューティング装置においてメモリに格納される。特に、アプリケーションプロトコルは、アクセサリが結合される通信ポートとアプリケーションプロトコルとを関連付けるルックアップテーブル（例えば、図８の接続アプリケーションプロトコルテーブル８２０）に格納される。
【０１２９】
ブロック１５１４において、アプリケーションマネージャは、アクセサリによりサポートされるアプリケーションプロトコルを使用するアクセサリと移動体コンピューティング装置又は移動体コンピューティング装置上で実行されているアプリケーションとの間の通信を可能にするかを判定できる。いくつかの実施形態において、通信は、アプリケーション（又は他の処理）がアクセサリによりサポートされるアプリケーションプロトコルをサポートする移動体コンピューティング装置上で実行している場合に許可されてもよい。例えばアプリケーションマネージャは、移動体コンピューティング装置上で実行されているアプリケーションによりサポートされるアプリケーションプロトコルをルックアップテーブルに格納されるアプリケーションプロトコルと比較できる。アクセサリとアプリケーションとの間の通信は、アプリケーションプロトコルを使用して行なわれる。いくつかの実施形態において、アプリケーションプロトコルメッセージは、トンネルされるか又はアクセサリプロトコルメッセージ内に埋め込まれる（例えば、アクセサリプロトコルメッセージ内にアプリケーションプロトコルメッセージをラップすることにより）。ブロック１５１６においてアクセサリが移動体コンピューティング装置から分離されない限り且つ／又はブロック１５１８においてアプリケーションの実行が終了されない限り、通信は継続可能である。あるいは、いくつかの実施形態において、ルックアップテーブルに格納されるアプリケーションプロトコルはブロック１５２０で除去され、処理１５００はブロック１５２２で終了可能である。
【０１３０】
図１６は、本発明のいくつかの実施形態に従って移動体コンピューティング装置上で実行されているアプリケーションとアクセサリとの間の通信を調整するために移動体コンピューティング装置においてアプリケーションマネージャにより実行される処理を示す別のフローチャートである。処理１６００は、ブロック１６０５で開始できる。ブロック１６１０において、アプリケーションマネージャは、移動体コンピューティング装置上で実行されているアプリケーションからアクセサリ情報の要求を受信できる。ブロック１６１５でアクセサリが接続されていない場合、メッセージはそのことを示すためにアプリケーションに送出され、処理１６００はブロック１６１０に戻り、アクセサリがＭＣＤと結合されるまで待機できるか、あるいはいくつかの実施形態において処理１６００は終了してもよい。アクセサリが移動体コンピューティング装置と接続される場合、ブロック１６２０において、アプリケーションマネージャは、移動体コンピューティング装置と結合される全てのアクセサリによりサポートされる任意のアプリケーションプロトコルの指示を含むアクセサリ情報をアプリケーションに提供できる。アプリケーションマネージャは、例えば逆ドメイン名規則を使用してアクセサリによりサポートされるアプリケーションプロトコルをメタデータとして含む任意の又は全てのアプリケーションプロトコル情報を送出できる。各アプリケーションプロトコルは、アプリケーションプロトコル識別子と関連付けられる。
【０１３１】
いくつかの実施形態において、アプリケーションは、アクセサリ情報を要求するのではなく、アプリケーションプロトコルデータをアプリケーションマネージャに送出できる。アプリケーションマネージャは、存在する場合にはアプリケーションから送出されるアプリケーションプロトコルデータと互換性のあるルックアップテーブル（例えば、接続アプリケーションプロトコルテーブル８２０）からアプリケーションプロトコルを選択できる。
【０１３２】
ブロック１６２５において、アプリケーションは、例えばアプリケーションプロトコル識別子を使用して、アプリケーションプロトコルに対する通信セッションを開くことができ、アプリケーションマネージャに対してプロトコルを示すことができる。これを行なうことにより、アプリケーションはアクセサリ又はポートに関して何も指定せずに要求できる。通信セッションを開くことに応答して、アプリケーションマネージャは、ブロック１６３０においてセッションと関連付けられる出力ストリーム及び入力ストリームをアプリケーションに提供できる。いくつかの実施形態において、通信セッションは、特定のアクセサリと関連付けられる特定のプロトコルに対して開かれる。従って、複数のセッションが１つ以上のアクセサリとの通信のための複数のプロトコルを使用して作成される。
【０１３３】
ブロック１６３５において、アプリケーションマネージャは、通信セッションと関連付けられるアプリケーションプロトコルを使用してアプリケーションからアプリケーションプロトコルメッセージを受信できる。アプリケーションプロトコルメッセージは、ブロック１６３０で提供された出力ストリームを使用してアプリケーションマネージャにおいて受信される。ブロック１６４０において、アプリケーションマネージャは、アクセサリプロトコルラッパーによりアプリケーションプロトコルメッセージをラップできる。いくつかの実施形態において、このラップは、アプリケーションプロトコルメッセージをアクセサリプロトコルメッセージ（例えば、図５Ａ、図５Ｂ及び図５Ｃに示す）内に埋め込むことを含むことができる。いくつかの実施形態において、このラップは、アクセサリプロトコルを使用してアプリケーションプロトコルメッセージをトンネルできる。ブロック１６４５において、ラップされたアプリケーションプロトコルメッセージはアクセサリに送出される。その後、処理１６００はブロック１６５０に進む。ブロック１６３５に戻ると、アプリケーションマネージャがブロック１６３５でアプリケーションプロトコルメッセージを受信していない場合、処理１６００はブロック１６５０に進める。
【０１３４】
ブロック１６５０において、アプリケーションマネージャは、アクセサリからアクセサリプロトコルメッセージを受信できる。アクセサリプロトコルメッセージは、アクセサリプロトコルメッセージ内にラップされるアプリケーションプロトコルメッセージを含むことができる。ブロック１６５５において、アクセサリプロトコルラッパーは、アプリケーションプロトコルメッセージから取り除かれる。ブロック１６６０において、アプリケーションプロトコルメッセージはアプリケーションに送出される。
【０１３５】
アクセサリが移動体コンピューティング装置から切断される（１６７０）か又はアプリケーションが移動体コンピューティング装置において実行するのを中止した（１６６５）場合、処理１６００はブロック１６７５で終了する。あるいは、処理はブロック１６３５に戻る。
【０１３６】
移動体コンピューティング装置と結合されるアクセサリにおいて実行される処理を図１７に示す。アクセサリが移動体コンピューティング装置と接続されると、処理１７００はブロック１７０２で開始できる。ブロック１７０４において、アクセサリは、移動体コンピューティング装置にメッセージを送出して、アクセサリによりサポートされるアプリケーションプロトコルを示すことができる。このメッセージは、図１５のブロック１５１０に関して説明されたアクセサリ機能の一部であってもよい。このメッセージは、アクセサリプロトコルに従って送出される。アクセサリは、逆ドメイン名規則を使用してアプリケーションプロトコルを示せる（例えば、上述したように）。通信セッションがアプリケーションマネージャにより確立された場合、ブロック１７０６において、移動体コンピューティング装置はアクセサリプロトコルを使用してメッセージをアクセサリに送出でき、通信セッションが作成されたことを示す。このメッセージ又は次のメッセージは、ブロック１７０８において示されるようにセッションを作成するために使用されるアプリケーションプロトコルを示せる。いくつかの実施形態において、ブロック１７０８において、セッションＩＤは、アプリケーションプロトコルの代わりに又はそれに加えて通信される。ブロック１７１０において、確認応答メッセージは、ブロック１７１２でアプリケーションプロトコルを使用して移動体コンピューティング装置と通信する前にアクセサリプロトコルを使用してアクセサリから移動体コンピューティング装置に送出される。処理１７００はブロック１７１４で終了する。例えばアプリケーションがユーザ又はオペレーティングシステムにより閉じられた時、アプリケーション又はオペレーティングシステムがセッションを閉じた時、並びに／あるいはアクセサリが切断された時、処理１７００は終了する。
【０１３７】
図１８は、本発明のいくつかの実施形態に従ってアクセサリとの通信を開くために移動体コンピューティング装置においてアプリケーションにより実行される処理１８００を示すフローチャートである。処理１８００は、ブロック１８０５で開始する。ブロック１８１０において、アプリケーションは、アプリケーションマネージャから接続アクセサリに関する情報を要求できる。アプリケーションマネージャは、アプリケーションにアクセサリ情報を送出することにより応答でき、ブロック１８１５において、その応答はアプリケーションにより受信される。アクセサリ情報を含むアプリケーションマネージャからの応答は、ブロック１８１５において受信される。アクセサリ情報は、移動体コンピューティング装置と結合されるアクセサリ、アクセサリと互換性のあるアプリケーションプロトコル及び／又はアプリケーションプロトコルと関連付けられる識別子を示す情報を含むことができる。いくつかの実施形態において、アクセサリマネージャは、接続アプリケーションプロトコルの一覧又はテーブルの位置が特定される記憶場所にアプリケーションを誘導できる。
【０１３８】
ブロック１８２０において、アプリケーション（又は移動体コンピューティング装置）は、接続されたアクセサリと互換性のある任意のアプリケーションプロトコル又は単一のアプリケーションプロトコルがアプリケーションと互換性のあるアプリケーションプロトコルとマッチングするかを判定できる。マッチングするものが見つけられる場合、処理１８００はブロック１８３５に進む。マッチングするものがない場合、ブロック１８２５において、アクセサリと関連付けられるアプリケーションプロトコルと互換性のあるアプリケーションは、インターネット上で（例えば、オンラインアプリケーションストアにおいて）又は移動体コンピューティング装置上で探索される。いくつかの実施形態において、アクセサリ情報は、アクセサリと共に使用するのに好適なアプリケーションを示す情報を含むことができる。いくつかの実施形態において、ブロック１８３０において、アプリケーションは移動体コンピューティング装置でダウンロードされ且つ実行され、処理１８００はブロック１８３５に進む。いくつかの実施形態において、アプリケーションアドオン又はパッチは、アクセサリとも互換性のあるアプリケーションプロトコルとの互換性を提供するネットワーク位置（例えば、オンラインアプリケーションストア）からダウンロードされる。新しいアプリケーションがダウンロードされず且つ互換性のあるアプリケーションが見つけられない場合、処理１８００はブロック１８６５で終了する。
【０１３９】
いくつかの実施形態において、ブロック１８２０において、互換性のあるアプリケーションが見つけられないか又は移動体コンピューティング装置において利用可能でない場合、３つのオプションのうちの１つが実行される。第１に、ユーザは、互換性のあるアプリケーションを探索し且つ／又はネットワーク位置又はアプリケーションストアからダウンロードしたいかを入力要求される。処理は、ユーザの選択に従って進むことができる。第２に、移動体コンピューティング装置は、ユーザに入力要求せずに互換性のあるアプリケーションを探索し且つ／又はダウンロードできる。第３に、移動体コンピューティング装置は互換性のあるアプリケーションに対してユーザに入力を要求しなくてもよく、且つ互換性のあるアプリケーションを探索しなくてもよい。いくつかの実施形態において、アクセサリは、上記３つのオプションのうち移動体コンピューティング装置が従うべきオプションを示すメッセージを送出できる。このメッセージは、ブロック１８１０又はブロック１８１５において又はその前に送出可能である。他の実施形態において、移動体コンピューティング装置におけるシステム設定はユーザにより設定され、上記オプションのうち全てのアクセサリが従うべきオプションを示す。
【０１４０】
ブロック１８３５において、アプリケーションは、互換性のあるアプリケーションプロトコルに結び付けられる通信セッションを開くことができる。セッションが作成されると、アプリケーションマネージャは、ブロック１８４０においてアプリケーションに入力ストリーム及び出力ストリームを提供できる。ブロック１８４５において、アプリケーションは、アプリケーションプロトコルに従ってフォーマットされたデータを出力ストリームに書き込み且つ入力ストリームからアプリケーションプロトコルデータを読み出すことによりアクセサリと通信できる。
【０１４１】
ブロック１８５０において判定されるようにアクセサリが移動体コンピューティング装置と結合され、ブロック１８５５においてセッションを終了しない限り、アプリケーションは、アプリケーションマネージャにより提供される入力ストリーム／出力ストリームを使用してアクセサリと通信できる。あるいは、セッションはブロック１８６０で終了され、処理１８００はブロック１８５５で終了する。
【０１４２】
本発明のいくつかの実施形態において、アクセサリが移動体コンピューティング装置と接続する場合、アクセサリは、好適なアプリケーションを指定するメタデータを含むアクセサリ情報を送出できる。例えばこの情報は、識別段階、認証段階又は機能段階の間に送出される。いくつかの実施形態において、好適なアプリケーションがアプリケーションにおいて実行しておらず、移動体コンピューティング装置においてメモリに格納される場合、アプリケーションは自動的に開始される。いくつかの実施形態において、移動体コンピューティング装置は、ユーザが好適なアプリケーションを開始したいかをユーザに問い合わせる通知をユーザに提供でき、ユーザが肯定応答した場合にアプリケーションを開始できる。
【０１４３】
本発明のいくつかの実施形態において、任意の好適なアプリケーション（すなわち、アクセサリが好むアプリケーション）が移動体コンピューティング装置にロードされる場合、移動体コンピューティング装置は、ユーザインタフェースのホームスクリーン上に好適なアプリケーションの１つ又は各々に関連するアイコンを強調表示できる。ユーザは、アクセサリと共に使用する互換性のあるアプリケーションの位置を更に容易に特定できる。例えばアプリケーションアイコンを強調表示する時、移動体コンピューティング装置は、例えばアイコンの色又は陰影を変更でき、アイコンを小刻みに動かすか又は振動させることができ、アイコンを拡大でき、アイコンの形状を変更でき、アイコンのピクチャを変更できる。アイコンの任意の態様が変更可能である。
【０１４４】
本発明の他の実施形態において、好適なアプリケーションが移動体コンピューティング装置上に格納もロードもされていない場合、移動体コンピューティング装置は、好適なアプリケーションをダウンロードするためのアプリケーションストア等のネットワーク位置に誘導される。いくつかの実施形態において、メタデータが保存され、好適なアプリケーションは後でネットワーク位置からダウンロードされる。例えば、ユーザが、好適なアプリケーションがダウンロードされる指定されたネットワーク位置にウェブブラウザ又はアプリケーションストアを誘導する場合、アプリケーションはダウンロードされる。別の例として、ユーザが好適なアプリケーションをダウンロードするために適切なレベルの無線接続性を有する場合、アプリケーションはダウンロードされる。いくつかの実施形態において、移動体コンピューティング装置がホストコンピュータと結合される場合、好適なアプリケーションはロードされる。
【０１４５】
更にいくつかの実施形態において、アクセサリから移動体コンピューティング装置に送出されるメタデータは、好適なアプリケーションが移動体コンピューティング装置にロードされるアプリケーションとマッチングしない場合の挙動の仕方を指定する指示を更に含むことができる。この指示は、コマンド又はメッセージの一部であってもよい。例えばアクセサリは、好適なアプリケーションが移動体コンピューティング装置においてアプリケーションとマッチングする必要があること及び好適なアプリケーションがアクセサリと対話するためにダウンロードされる必要があることを指定できる。別の例として、アクセサリは好適なアプリケーションを指定できるが、互換性のあるアプリケーションプロトコルにより任意のアプリケーションと相互運用される。この場合、移動体コンピューティング装置は好適なアプリケーションをダウンロードできるが必須ではない。更に場合によっては、移動体コンピューティング装置は、好適なアプリケーションをダウンロードするか又は互換性のあるアプリケーションを使用するかに関してユーザからのフィードバックを要求できる。更に別の例として、アクセサリは、移動体コンピューティング装置がアプリケーションを探索しないか、あるいはネットワーク位置又はアプリケーションストアからアプリケーションをダウンロードしないことを指定できる。更に状況によっては、アクセサリは、ユーザがアプリケーションをダウンロードするかを問われることがないように指定できる。この例において、アクセサリは、移動体コンピューティング装置においてアプリケーションと対話せずに動作可能である。
【０１４６】
本発明の更に別の実施形態において、アクセサリは移動体コンピューティング装置と結合され、第１のアプリケーションは移動体コンピューティング装置において実行可能である。第１のアプリケーションは、アクセサリと互換性があってもなくてもよいアプリケーションプロトコルと関連付けられ、アプリケーションはアクセサリと通信していても通信していなくてもよい。アクセサリは、移動体コンピューティング装置にコマンドを送出でき、実行する第２のアプリケーションを指定する。これは、ユーザとの対話に応答して、例えばユーザがアクセサリにおいてボタンを押下することにより開始される。移動体コンピューティング装置は、コマンドの受信に応答して第２のアプリケーションを実行できる。いくつかの実施形態において、第１のアプリケーションは、第２のアプリケーションと同時に実行可能である。いくつかの実施形態において、第１のアプリケーションは閉じられ、第２のアプリケーションはロードされる。いくつかの実施形態において、コマンドはシリアル番号及び／名前によりアプリケーションを指示できる。いくつかの実施形態において、コマンドは、アプリケーションがダウンロードされ且つ実行されるネットワーク位置を更に指定できる。更にいくつかの実施形態において、アクセサリは、アプリケーションが移動体コンピューティング装置において実行していない場合又はオペレーティングシステムが移動体コンピューティング装置において実行している場合に第２のアプリケーションが実行することを要求できる。
【０１４７】
本発明は、特定の実施形態に関して説明されたが、多くの変形が可能であることが当業者には認識されるだろう。例えば本明細書で説明される特定の実施形態において、ポートは任意の所定の時間において最大１つのアプリケーションプロトコルと関連付けられる。他の実施形態において、種々のアプリケーションプロトコルを使用する通信は同一ポートにおいて多重化され、且つ／又は同一のアプリケーションプロトコルを使用する種々のアプリケーションとの通信は同一ポートにおいて多重化される。そのような実施形態において、アクセサリプロトコルメッセージを（いずれかの方向に）トンネルするために使用される移動体コンピューティング装置−プロトコルコマンドは、アクセサリプロトコルメッセージの適切な処理を容易にするためにセッション及び／又はアプリケーションプロトコル識別子を含むことができる。そのような一実施形態において、アプリケーションが特定のアクセサリ及びアプリケーションプロトコルと関連付けられるセッションを確立する場合、そのセッションの識別子は、アクセサリ通信プロトコルのコマンドを使用してアクセサリに提供される。そのセッションと関連付けられる次の移動体コンピューティング装置−プロトコルパケット（例えば、トンネルコマンドパケット）は、セッション識別子を含むことができる。従って、複数のセッションが同時に進行中である場合でも且つ複数のセッションに関連する通信が同一ポートにおいて多重化される場合でも、アクセサリは特定のセッションにより送出又は受信してもよい任意のアクセサリプロトコルメッセージを関連付けられる。複数のセッションに対する通信が単一ポートにおいて多重化される場合でも、アクセサリは、複数のセッションに対して別個の状態情報を維持できる。
【０１４８】
アプリケーションとアクセサリとの間の通信に対するアプリケーション通信プロトコルの使用方法の一例を提供する本発明の実施形態を説明した。多くの場合、移動体コンピューティング装置は、アプリケーション通信プロトコルに関して曖昧である。いくつかの実施形態は、アクセサリ及び／又はアプリケーションがアプリケーション通信プロトコルを指定する情報を通信する方式を説明する。アクセサリ及び／又はアプリケーションが使用するアプリケーションプロトコルを認識するために、種々の他の技術が使用可能である。例えば移動体コンピューティング装置は、全ての周知のアプリケーションプロトコルを含むテーブルを含むことができる。アクセサリ及び／又はアプリケーションは、テーブルエントリを指し示すことによりアプリケーションプロトコルを指定できる。別の例として、アプリケーションは、任意の数の通信プロトコルを使用してアクセサリからアプリケーションプロトコル情報を要求できる。別の例として、アプリケーションは、アプリケーションによりサポートされる任意のプロトコルをアクセサリに対して指定でき、アクセサリは使用するアプリケーションプロトコルを選択できる。更に別の例として、ビットマスクが使用可能であり、種々のアプリケーションプロトコルを表すために所定の異なるビットマスクが使用可能である。アプリケーションプロトコルを識別する種々の他の手段も使用可能である。
【０１４９】
種々の他の実施形態を更に開示する。例えば、アクセサリ装置と移動体コンピューティング装置上で実行されているアプリケーションとの間で通信する方法が開示される。その方法は、アクセサリ装置において動作する。方法は、アクセサリ通信プロトコルを使用して移動装置に対して少なくとも１つのアプリケーション通信プロトコルを指定する情報を通信すること及び／又はアクセサリ通信プロトコルを使用して移動装置上で実行されているアプリケーションと通信することを含むことができる。いくつかの実施形態において、方法は、アクセサリ通信プロトコルを使用して移動体コンピューティング装置上で実行されているオペレーティングシステムと通信することを更に含むことができる。
【０１５０】
いくつかの実施形態において、アプリケーション通信プロトコルパケットは、アクセサリ通信プロトコルパケット内をトンネルされる。いくつかの実施形態において、方法は、移動通信装置上で実行されているアプリケーションからアプリケーション通信プロトコルコマンドを受信することと、それに応答してアクセサリの状態を変更することとを更に含むことができる。いくつかの実施形態において、方法は、移動体コンピューティング装置上で実行されているアプリケーションからのコマンドに応答して移動体コンピューティング装置上で実行されているアプリケーションにデータを送出することを更に含むことができる。ここで、データはアプリケーション通信プロトコルを使用して送出され、コマンドはアクセサリ通信プロトコルを使用して受信される。いくつかの実施形態において、少なくとも１つのアプリケーション通信プロトコルを指定する情報は逆ドメイン名規則で提供される。いくつかの実施形態において、方法は、アクセサリ通信プロトコルを使用するアクセサリにより移動体コンピューティング装置の機能性を制御することを更に含むことができる。
【０１５１】
筺体、少なくとも部分的に筺体内に配設され且つ移動体コンピューティング装置とコマンド及びデータを交換するように構成され且つ少なくとも１つのポートを有する通信インタフェース、並びに／あるいは筺体内に配設され且つ通信インタフェースと通信可能に結合される制御ロジックを含むことができるアクセサリ装置が開示される。制御ロジックは、アクセサリ通信プロトコルを使用して通信インタフェースを介して移動体コンピューティング装置上で実行されているオペレーティングシステムと通信するように構成される。制御ロジックは、アクセサリ通信プロトコルを使用して通信インタフェースを介して移動体コンピューティング装置上で実行されているアプリケーションと通信するように構成される。
【０１５２】
いくつかの実施形態において、制御ロジックは、アクセサリ通信プロトコルを使用してアプリケーション通信プロトコルを指定する情報を通信するように更に構成される。いくつかの実施形態において、制御ロジックは、アクセサリ通信プロトコル以外の標準通信プロトコルを使用してアプリケーション通信プロトコルを指定する情報を通信するように更に構成される。いくつかの実施形態において、アプリケーション通信プロトコル情報は、逆ドメイン名規則を使用して移動体コンピューティング装置に通信される。いくつかの実施形態において、通信インタフェースは無線通信インタフェースを含むことができる。
【０１５３】
アクセサリ装置と移動体コンピューティング装置上で実行されているアプリケーションとの間で通信する方法。方法は、アクセサリ装置において動作する。方法は、アクセサリ通信プロトコルを使用して移動体コンピューティング装置にアクセサリ情報を通信すること、セッション識別子、アプリケーションプロトコル識別子又は接続開始コマンドのうちの少なくとも１つを移動体コンピューティング装置から受信すること、並びに／あるいはその後アプリケーション通信プロトコルを使用して移動体コンピューティング装置で実行するアプリケーションと通信することを含むことができる。いくつかの実施形態において、アプリケーション通信プロトコルは、移動体コンピューティング装置に通信されるアプリケーションプロトコル文字列と関連付けられるプロトコルであってもよい。いくつかの実施形態において、アクセサリ情報は、アプリケーションプロトコル文字列、アプリケーションプロトコル文字列に対応するアプリケーションプロトコルインデックス、好適なアプリケーション情報又はアクセサリ通信プロトコル情報のうちの少なくとも１つを含むことができる。いくつかの実施形態において、好適なアプリケーション情報は、移動体コンピューティング装置に通信されるアプリケーションプロトコル文字列と関連付けられるアプリケーション通信プロトコルを使用して通信をサポートするアプリケーションを指定する。いくつかの実施形態において、通信することは、アクセサリにより移動体コンピューティング装置の機能性を制御することを含むことができる。いくつかの実施形態において、アプリケーション通信プロトコル文字列は逆ドメイン名規則に従ってもよい。
【０１５４】
別のアクセサリ装置が開示される。アクセサリは、筺体、少なくとも部分的に筺体内に配設され且つ／又は移動体コンピューティング装置と通信可能に結合するように構成される通信インタフェース、アクセサリハードウェア、並びに／あるいは筺体内に配設され且つ通信インタフェース及びアクセサリ専用ハードウェアと通信可能に結合される制御ロジックを含むことができる。制御ロジックは、アクセサリ通信プロトコルを使用して通信インタフェースを介して移動体コンピューティング装置にアプリケーション通信プロトコル情報を通信するように構成される。制御ロジックは、通信インタフェースを介して移動体コンピューティング装置上で実行されているアプリケーションとの通信セッションを確立するように構成される。ここで、通信セッションはアプリケーション通信プロトコルを使用し、アクセサリと移動体コンピューティング装置上で実行されているアプリケーションとの間で通信する。制御ロジックは、アクセサリ通信プロトコルを使用して移動体コンピューティング装置上で実行されているアプリケーションからデータを受信するように構成される。制御ロジックは、移動体コンピューティング装置上で実行されているアプリケーションから受信されるデータに応答して、アクセサリハードウェアの動作を制御するように構成される。
【０１５５】
いくつかの実施形態において、通信インタフェースは、無線通信インタフェースを含むことができる。いくつかの実施形態において、制御ロジックは、アプリケーション通信プロトコルを使用してアクセサリハードウェアからハードウェアデータを受信し且つ／又は移動体コンピューティング装置上で実行されているアプリケーションにハードウェアデータを送出するように更に構成される。いくつかの実施形態において、アクセサリハードウェアは含むことができ、ハードウェアデータはセンサを使用して収集されたデータを含むことができる。いくつかの実施形態において、アクセサリハードウェアは電気的装置とのハードウェアインタフェースを含むことができ、ハードウェアデータはハードウェアインタフェースを介して電気的装置から受信されるデータを含むことができる。いくつかの実施形態において、アクセサリハードウェアは電気的装置とのハードウェアインタフェースを含むことができ、移動体コンピューティング装置上で実行されているアプリケーションからのデータはハードウェアインタフェースを使用して電気的装置を制御するためのデータを含む。いくつかの実施形態において、アクセサリハードウェアはディスプレイを含むことができ、移動体コンピューティング装置上で実行されているアプリケーションからのデータは表示可能な情報を含むことができる。
【０１５６】
アクセサリ装置と移動装置上で実行されているアプリケーションとの間で通信する別の方法が開示される。この方法は、移動装置上で動作可能である。方法は、アクセサリ通信プロトコルを使用してアクセサリ装置を識別すること、アクセサリ通信プロトコルを使用してアプリケーション通信プロトコルを指定するアクセサリ装置から情報を受信すること、移動体コンピューティング装置においてアプリケーションを実行すること及び／又はアプリケーション通信プロトコルを使用してアプリケーションからアクセサリ装置と通信することを含むことができる。いくつかの実施形態において、方法は、アプリケーションプロトコルが移動体コンピューティング装置においてプロトコルテーブルに一覧表示されるかを判定することを更に含むことができる。プロトコルテーブルは、移動体コンピューティング装置においてアプリケーションによりサポートされるプロトコルを含むことができる。
【０１５７】
いくつかの実施形態において、方法は、プロトコルテーブルがアプリケーションプロトコルを含まない場合にアプリケーションプロトコルをサポートするアプリケーションをダウンロードすることを更に含むことができる。いくつかの実施形態において、アプリケーション通信プロトコルを指定するアクセサリ装置からの情報は、逆ドメイン名規則を使用して１つのアプリケーション通信プロトコルを指定する。いくつかの実施形態において、アプリケーション通信プロトコルを指定するアクセサリ装置からの情報は、アプリケーション通信プロトコルと関連付けられる識別子を更に含むことができる。いくつかの実施形態において、アプリケーション通信プロトコルを使用してアクセサリ装置と通信することは、アプリケーション通信プロトコルパケットをアクセサリ通信プロトコルパケットにカプセル化することを更に含むことができる。いくつかの実施形態において、アプリケーション通信プロトコルは、アクセサリ通信プロトコル内に含まれるコマンドを含むことができる。
【０１５８】
筺体、少なくとも部分的に筺体内に配設され且つ／又はアクセサリとコマンド及びデータを交換するように構成され且つ少なくとも１つのポートを有する通信インタフェース、筺体内に配設されるメモリ、並びに／あるいは筺体内に配設され且つ／又はメモリ及び通信インタフェースと通信可能に結合される制御ロジックを含むことができる移動体コンピューティング装置が更に開示される。制御ロジックは、アクセサリ通信プロトコルを使用して通信インタフェースを介してアクセサリからアプリケーション通信プロトコルを指定する指示を受信するように構成される。制御ロジックは、メモリに格納されるアプリケーションを実行するように構成される。制御ロジックは、アプリケーション通信プロトコルを使用してアクセサリとアプリケーションとの間の通信を確立するように構成される。いくつかの実施形態において、少なくとも１つのポートは有線ポートであってもよく又は無線ポートであってもよい。いくつかの実施形態において、制御ロジックは、アプリケーションにより指定されたアプリケーション通信プロトコルがメモリに格納されたアプリケーション通信プロトコルと関連付けられるかを判定するように更に構成される。いくつかの実施形態において、制御ロジックは、アクセサリ通信プロトコルを使用してアプリケーション通信プロトコルデータをアクセサリにトンネルするように更に構成される。いくつかの実施形態において、制御ロジックは、アプリケーション通信プロトコルパケットをアクセサリ通信プロトコルパケットとカプセル化し且つアクセサリ通信プロトコルパケットをポートに提供するように更に構成される。
【０１５９】
筺体、少なくとも部分的に筺体内に配設され且つ／又はアクセサリとコマンド及びデータを交換するように構成される通信インタフェース、筺体内に配設されるメモリ、並びに／あるいは筺体内に配設され且つ／又はメモリ及び通信インタフェースと通信可能に結合される制御ロジックを含むことができる別の移動体コンピューティング装置が開示される。制御ロジックは、通信インタフェースを介してアクセサリ装置からアプリケーション通信プロトコル情報を受信するように構成される。アプリケーション通信プロトコル情報は、アクセサリによりサポートされるアプリケーション通信プロトコルのＩＤを含むことができ、且つ／又はアプリケーション通信プロトコル情報は、アクセサリ通信プロトコルを使用してアクセサリから受信される。制御ロジックは、アクセサリ通信プロトコルパケット内にアプリケーション通信プロトコルパケットをカプセル化することによりカプセル化パケットを作成するように構成される。制御ロジックは、通信インタフェースを介してアクセサリにカプセル化パケットを送出するように構成される。いくつかの実施形態において、通信インタフェースは無線通信インタフェースであってもよい。いくつかの実施形態において、移動体コンピューティング装置は、メモリに格納されたプロトコルテーブルを含むことができる。プロトコルテーブルは、移動体コンピューティング装置にインストールされたアプリケーションによりサポートされるアプリケーションプロトコルの一覧を含むことができる。
【０１６０】
移動体コンピューティング装置のプロセッサにより実行された場合にプロセッサに方法を実行させるプログラム命令を含むことができるコンピュータ可読媒体が開示される。この方法は、アクセサリ通信プロトコルを使用してアクセサリ装置からアプリケーション通信プロトコル情報を受信すること、アプリケーション通信プロトコルを使用してアクセサリからデータを受信すること及び／又はアクセサリから受信されたデータを操作することを含むことができる。いくつかの実施形態において、方法は、移動体コンピューティング装置のディスプレイにおいて操作したデータの少なくとも一部分を表示することを更に含むことができる。いくつかの実施形態において、方法は、アプリケーション通信プロトコルを使用してアクセサリにコマンドを送出することによりアクセサリの機能性を制御することを更に含むことができる。
【０１６１】
アクセサリ装置と移動装置にインストールされたアプリケーションとの間に通信セッションを確立する別の方法が提供される。方法は、移動装置上で動作可能であり、サポートされるアプリケーションプロトコルのリストを収集されたアプリケーションプロトコルのリストと比較すること、サポートアプリケーションプロトコルリストのアプリケーションプロトコルと収集アプリケーションプロトコルリストのアプリケーションプロトコルとの間でマッチングするものが見つけられた場合にマッチングしたアプリケーションプロトコルを指定する情報をアクセサリに通信すること、並びに／あるいはサポートアプリケーションプロトコルリストのアプリケーションプロトコルと収集アプリケーションプロトコルリストのアプリケーションプロトコルとの間でマッチングするものが見つけられなかった場合に収集アプリケーションプロトコルリスト内の少なくとも１つのアプリケーションプロトコルと関連付けられるアプリケーションがダウンロード可能であるアプリケーションストアに移動装置のユーザを誘導することを含むことができる。いくつかの実施形態において、サポートされるアプリケーションプロトコルのリストは、アプリケーションによりサポートされる１つ以上の通信プロトコルを含むことができ、且つ／又は収集されたアプリケーションプロトコルのリストは移動体コンピューティング装置と結合される１つ以上のアクセサリから受信される１つ以上の通信プロトコルを含むことができる。いくつかの実施形態において、サポートアプリケーションプロトコルリストのアプリケーションプロトコルと収集アプリケーションプロトコルリストのアプリケーションプロトコルとの間でマッチングするものが見つけられた場合、アクセサリとの通信セッションを要求する。いくつかの実施形態において、マッチングしたアプリケーションプロトコルを指定する通信情報はセッション識別子を含むことができる。いくつかの実施形態において、サポートアプリケーションプロトコルリストのアプリケーションプロトコルと収集アプリケーションプロトコルリストのアプリケーションプロトコルとの間でマッチングするものが見つけられた場合、マッチングしたアプリケーションプロトコルを使用してアクセサリと通信する。いくつかの実施形態において、アプリケーションストアは、インターネットを使用するアプリケーションストアであってもよい。
【０１６２】
移動体コンピューティング装置のプロセッサにより実行された場合にプロセッサに方法を実行させるプログラム命令を含むコンピュータ可読媒体が提供される。方法は、サポートプロトコルリストのサポートされるアプリケーションプロトコル識別子が収集プロトコルリストのアプリケーションプロトコル識別子とマッチングするかを判定すること、並びに／あるいはサポートされるアプリケーションプロトコルと収集されたアプリケーションプロトコルのリストのアプリケーションプロトコルとの間でマッチングするものを見つけることに応答してサブ方法を実行することを含むことができる。サブ方法は、移動体コンピューティング装置と移動体コンピューティング装置に結合されるアクセサリとの間の通信セッションを開始すること、サポートされるアプリケーションプロトコルを指定する情報をアクセサリに通信すること及び／又はサポートされるアプリケーションプロトコルを使用して移動体コンピューティング装置からアクセサリと通信することを含む。いくつかの実施形態において、収集プロトコルリストは、アクセサリと互換性のあるアプリケーションプロトコルを表す１つ以上の通信プロトコル識別子を含むことができ、且つ／又はサポートプロトコルリストは、移動体コンピューティング装置にインストールされたアプリケーションと互換性のあるアプリケーションプロトコルを表す１つ以上の通信プロトコル識別子を含むことができる。いくつかの実施形態において、サポートされるアプリケーションプロトコルは、アクセサリ通信プロトコルと異なってもよい。いくつかの実施形態において、更にプログラム命令は、サポートされるアプリケーションプロトコルと収集されたアプリケーションプロトコルのリストのアプリケーションプロトコルとの間でマッチングするものを見つけられないことに応答して収集プロトコルリストのアプリケーションプロトコルとマッチングするプロトコルをサポートするアプリケーションをプロセッサにダウンロードさせることができる。
【０１６３】
移動体コンピューティング装置において動作し且つアクセサリ装置からアプリケーションプロトコル識別子を受信すること、並びに／あるいは受信したアプリケーションプロトコル識別子が移動体コンピューティング装置においてメモリに格納されるプロトコルテーブル内に一覧表示されるアプリケーションプロトコル識別子にマッチングするかを判定し、その後アプリケーション通信プロトコルを使用してアクセサリと通信することを含むことができる別の方法が提供される。ここで、受信したアプリケーションプロトコル識別子は、逆ドメイン名形式のデータ文字列を含むことができ、アプリケーション通信プロトコルと関連付けられる。いくつかの実施形態において、プロトコルテーブルは、移動体コンピューティング装置において実行可能なアプリケーションと関連付けられる１つ以上のアプリケーションプロトコル識別子を含むことができる。いくつかの実施形態において、方法は、受信したアプリケーションプロトコル識別子がプロトコルテーブルのアプリケーションプロトコル識別子とマッチングする場合にプロトコルテーブルのアプリケーションプロトコル識別子と関連付けられるアプリケーションを実行することを更に含むことができる。いくつかの実施形態において、方法は、受信したアプリケーションプロトコル識別子とマッチングする関連するアプリケーションプロトコル識別子を有するアプリケーションをダウンロードすることを更に含むことができる。
【０１６４】
筺体、少なくとも部分的に筺体内に配設され且つ／又はアクセサリとコマンド及びデータを交換するように構成される通信インタフェース、筺体内に配設され且つサポートアプリケーションプロトコルリストを維持するように構成されるメモリ、並びに／あるいは筺体内に配設され且つ／又はメモリ及び通信インタフェースと通信可能に結合される制御ロジックを含む移動体コンピューティング装置が更に開示される。いくつかの実施形態において、制御ロジックは、アクセサリによりサポートされるアプリケーション通信プロトコルを識別する情報を通信インタフェースを介してアクセサリから受信するように構成される。いくつかの実施形態において、制御ロジックは、アクセサリによりサポートされるアプリケーション通信プロトコルがサポートされるアプリケーションプロトコルのリストで識別されるプロトコルと一致するかを判定するように構成される。サポートされるアプリケーションプロトコルのリストは、移動装置にインストールされたアプリケーションによりサポートされる１つ以上のプロトコルを含むことができる。いくつかの実施形態において、制御ロジックは、アクセサリによりサポートされるアプリケーションプロトコルとサポートされるアプリケーションプロトコルのリストで識別されるプロトコルとの間で相関性が判定される場合に移動体コンピューティング装置を使用してマッチングしたアプリケーションプロトコルを指定する情報をアクセサリに通信するように構成される。いくつかの実施形態において、制御ロジックはマッチングしたアプリケーションプロトコルを使用してアクセサリと通信するように構成される。
【０１６５】
移動体コンピューティング装置プロトコルを使用してアクセサリからアプリケーションプロトコル情報を受信することを含むことができる別の方法が更に提供される。アプリケーションプロトコル情報は、アクセサリと互換性のある少なくとも１つのアプリケーションプロトコルを識別する。方法は、アプリケーションプロトコルがサポートプロトコルリスト内に一覧表示されるプロトコルとマッチングするかを判定することを更に含むことができる。サポートプロトコルリストは、少なくとも移動装置にインストールされたアプリケーションによりサポートされる１つ以上の通信プロトコルを含むことができ、且つ／又はサポートプロトコルリスト内に一覧表示される各プロトコルは、アプリケーションと関連付けられる。アプリケーションプロトコルがサポートプロトコルリスト中のプロトコルとマッチングする場合、方法は、サポートリスト中のマッチングしたプロトコルと関連付けられるアプリケーションを実行することを更に含むことができる。いくつかの実施形態において、アプリケーションプロトコルがサポートプロトコルリスト中のプロトコルとマッチングしない場合、サポートプロトコルリスト中のプロトコルと関連付けられるアプリケーションをインターネットからダウンロードする。
【０１６６】
移動体コンピューティング装置においてアクセサリからアプリケーションプロトコルのＩＤを含むことができる情報を受信すること、移動体コンピューティング装置においてメモリに格納され且つアプリケーションと関連付けられる少なくとも１つのアプリケーションプロトコルを含むことができるサポートプロトコルテーブルに一覧表示されるプロトコルとアプリケーションプロトコルとを比較すること、並びに／あるいはアプリケーションプロトコルがサポートプロトコルテーブルに一覧表示されるプロトコルとマッチングする場合に移動体コンピューティング装置においてアプリケーションプロトコルと関連付けられるアプリケーションを実行することを含むことができる別の方法が提供される。いくつかの実施形態において、情報はアプリケーションプロトコルをサポートする好適なアプリケーションのＩＤを含むことができ、且つ／又はアプリケーションプロトコルがサポートプロトコルテーブルに一覧表示されるプロトコルとマッチングしない場合に好適なアプリケーションをダウンロードする。いくつかの実施形態において、アプリケーションプロトコルを識別する情報は、逆ドメイン名形式を使用してアプリケーションプロトコルを識別する。いくつかの実施形態において、方法はアプリケーションプロトコルを使用してアクセサリと通信することを更に含むことができる。いくつかの実施形態において、アプリケーションプロトコルを識別する情報は、移動体コンピューティング装置プロトコルに従ってフォーマットされる。
【０１６７】
筺体、少なくとも部分的に筺体内に配設され且つ／又はアクセサリとコマンド及びデータを交換するように構成される通信インタフェース、筺体内に配設され且つアプリケーションと互換性のあるプロトコルを一覧表示するサポートアプリケーションプロトコルリストを含むメモリであり、サポートアプリケーションプロトコルが移動体コンピューティング装置にインストールされたアプリケーションによりサポートされるアプリケーションプロトコルを含むことができるメモリ、並びに／あるいは筺体内に配設され且つ／又はメモリ及び通信インタフェースと通信可能に結合される制御ロジックを含む移動体コンピューティング装置が提供される。制御ロジックは、アクセサリによりサポートされるアプリケーションプロトコルを識別するアクセサリからメッセージを受信し、アプリケーションプロトコルがサポートアプリケーションプロトコルリスト内に格納されるサポートされるアプリケーションプロトコルとマッチングするかを判定し、且つ／又はマッチングするものが見つけられた場合にアプリケーションプロトコルとマッチングしたサポートされるアクセサリと関連付けられるアプリケーションを実行するように構成される。いくつかの実施形態において、アクセサリから受信されるメッセージは、アプリケーションプロトコルをサポートするアプリケーションが見つけられるインターネットアドレスを識別する。いくつかの実施形態において、方法はインターネットアドレスからアプリケーションをダウンロードすることを更に含むことができる。いくつかの実施形態において、方法は移動体コンピューティング装置においてアプリケーションをインストールすること及びアプリケーションを実行することを更に含むことができる。
【０１６８】
筺体、少なくとも部分的に筺体内に配設され且つ／又はアクセサリとコマンド及びデータを交換するように構成され且つ第１の通信ポート及び第２の通信ポートを有する通信インタフェース、筺体内に配設されるメモリ、並びに／あるいは筺体内に配設され且つメモリ及び通信インタフェースと通信可能に結合される制御ロジックを含む移動通信装置が開示される。制御ロジックは、第１のアプリケーション通信プロトコルを使用して第１の通信ポートを介して第１のアクセサリと通信し且つ／又は第２のアプリケーション通信プロトコルを使用して第２の通信ポートを介して第２のアクセサリと通信するように構成される。いくつかの実施形態において、第１の通信ポート又は第２の通信ポートの少なくとも一方は無線通信ポートを含むことができる。いくつかの実施形態において、第１のアプリケーション通信プロトコル及び第２のアプリケーション通信プロトコルは異なる。いくつかの実施形態において、制御ロジックは、アクセサリ通信プロトコルを使用して第１の通信ポートを介して第１のアクセサリと通信し且つ第２のアクセサリ通信ポートを介して第２のアクセサリと通信するように更に構成される。いくつかの実施形態において、制御ロジックは、第１のポートを介して第１のアクセサリと通信するために第１の通信セッションを確立するように更に構成される。いくつかの実施形態において、制御ロジックは、第１のポートを介して第２のアクセサリと通信するために第２の通信セッションを確立するように更に構成される。いくつかの実施形態において、通信インタフェースは第３の通信ポートを含むことができ、制御ロジックは第３のアプリケーション通信プロトコルを使用して第３の通信ポートを介して第３のアクセサリと通信するように更に構成される。
【０１６９】
移動体コンピューティング装置のプロセッサにより実行された時にプロセッサに方法を実行させるプログラム命令を含むコンピュータ可読媒体。この方法は、第１のアクセサリと通信するために第１の通信セッションを要求すること、第１の通信セッションのセッション識別子を受信すること、第１のアプリケーションプロトコルを使用して第１の通信セッションを介して第１のアクセサリと通信すること、第２のアクセサリと通信するために第２の通信セッションを要求すること、第２の通信セッションのセッション識別子を受信すること、並びに／あるいは第２のアプリケーションプロトコルを使用して第２の通信セッションを介して第２のアクセサリと通信することを含むことができる。いくつかの実施形態において、第１のアプリケーションプロトコル及び第２のアプリケーションプロトコルは異なる。いくつかの実施形態において、第１のアプリケーションプロトコル及び第２のアプリケーションプロトコルは同一である。いくつかの実施形態において、プログラム命令は、第１のアクセサリが移動体コンピューティング装置と通信可能に結合されるのか又は第２のアクセサリが移動体コンピューティング装置と通信可能に結合されるのかの判定をプロセッサに更に行なわせる。
【０１７０】
筺体、少なくとも部分的に筺体内に配設され且つ／又は第１のアクセサリ及び第２のアクセサリとコマンド及びデータを交換するように構成され且つ第１の通信ポート及び第２の通信ポートを有する通信インタフェース、筺体内に配設されるメモリ、並びに／あるいは筺体内に配設され且つ／又はメモリ及び通信インタフェースと通信可能に結合される制御ロジックを含む移動通信装置。制御ロジックは、制御ロジックにより実行する第１のアプリケーションと第１の通信ポートとの間に第１の通信セッションを確立し、第１のアプリケーションプロトコルを使用して第１の通信セッションを介して第１のアクセサリと通信し、制御ロジックにより実行する第２のアプリケーションと第２の通信ポートとの間に第２の通信セッションを確立し、且つ／又は第２のアプリケーションプロトコルを使用して第２の通信セッションを介して第２のアクセサリと通信するように構成される。いくつかの実施形態において、制御ロジックは、アクセサリ通信プロトコルを使用して第１のアプリケーション通信プロトコルメッセージに対するトンネルを提供するように更に構成される。いくつかの実施形態において、アクセサリ通信プロトコルは第１のアプリケーション通信プロトコルと異なってもよい。いくつかの実施形態において、制御ロジックは、アクセサリ通信プロトコルを使用して第２のアプリケーション通信プロトコルメッセージに対するトンネルを提供するように更に構成される。いくつかの実施形態において、アクセサリ通信プロトコルは第２のアプリケーション通信プロトコルと異なってもよい。
【０１７１】
移動体コンピューティング装置において実行する別の方法が提供される。方法は、アクセサリが通信ポートにおいて移動体コンピューティング装置と通信可能に結合されるという指示を受信すること、アクセサリがアクセサリプロトコル及びアプリケーションプロトコルの双方を使用する移動体コンピューティング装置との通信をサポートすることを判定すること、通信ポートを介する移動体コンピューティング装置上で実行されているアプリケーションと通信プロトコルを介するアクセサリとの通信セッションを確立すること、並びに／あるいは通信セッションを使用してアプリケーションプロトコルメッセージであるメッセージをアプリケーションからアクセサリに送出することを含むことができる。いくつかの実施形態において、アクセサリプロトコル及びアプリケーションプロトコルは異なる。いくつかの実施形態において、方法は、アクセサリがアプリケーションプロトコルをサポートするという指示をアクセサリから受信することを含むことができる。いくつかの実施形態において、方法は、アプリケーションプロトコルメッセージをアクセサリプロトコルメッセージ内にカプセル化することを更に含むことができる。
【０１７２】
移動体コンピューティング装置上で実行されているアプリケーションと移動体コンピューティング装置と通信しているアクセサリとの間に通信セッションを確立する方法が提供される。方法は、移動体コンピューティング装置において実行可能であり、アクセサリに関連する情報に対する要求をアプリケーションから受信すること、アクセサリと互換性のある少なくとも１つのアプリケーション通信プロトコルの識別子を含むことができるアクセサリ情報をアプリケーションに提供すること、アプリケーション通信プロトコルを使用して通信するためのアクセサリとアプリケーションとの間の通信セッションに対する要求を受信すること、アプリケーション通信プロトコルに従ってフォーマットされるメッセージをアプリケーションから受信すること、アクセサリ通信プロトコルラッパーによりメッセージをラップすること、並びに／あるいはアプリケーション通信プロトコルとは異なるアクセサリ通信プロトコルに従って通信されるメッセージをアクセサリに通信することを含むことができる。いくつかの実施形態において、アクセサリ通信プロトコルラッパーはトンネルコマンドを含むことができる。いくつかの実施形態において、少なくとも１つのアプリケーション通信プロトコルの識別子は逆ドメイン名フォーマットで提供される識別子を含むことができる。いくつかの実施形態において、方法は、アクセサリ通信プロトコルに従ってフォーマットされるメッセージをアクセサリから受信すること、アクセサリ通信プロトコルラッパーをメッセージから取り除くこと、並びに／あるいはアプリケーション通信プロトコルに従って通信されるメッセージをアプリケーションに送出することを更に含むことができる。いくつかの実施形態において、方法は、アクセサリ接続性に対する通信インタフェースを監視すること、並びに／あるいはアクセサリが通信インタフェースと通信可能に結合される場合にアクセサリ機能を含み且つアクセサリと互換性のある少なくとも１つのアプリケーション通信プロトコルの識別子を含むことができる機能メッセージを受信することを更に含むことができる。いくつかの実施形態において、機能メッセージはアクセサリ通信プロトコルに従ってフォーマットされる。
【０１７３】
移動体コンピューティング装置は、筺体、少なくとも部分的に筺体内に配設され且つ／又はアクセサリ通信プロトコルを使用してアクセサリとコマンド及びデータを交換するように構成される通信インタフェース、筺体内に配設されるメモリ、並びに／あるいは筺体内に配設され且つ／又はメモリ及び通信インタフェースと通信可能に結合され且つバックグラウンド処理であるアクセサリマネージャ及びアプリケーションを実行するように構成される制御ロジックを含むことができる。アクセサリマネージャとして実行する制御ロジックは、通信インタフェースと結合されるアクセサリに対する通信インタフェースを監視し、アクセサリが通信インタフェースと結合された場合にアクセサリ通信プロトコルを使用してアクセサリから互換性のあるアプリケーションプロトコルを含むアクセサリ機能情報を受信し、アクセサリ通信プロトコルラッパーによりラップされるアプリケーション通信プロトコルフォーマットメッセージをアクセサリから受信し、アクセサリ通信プロトコルラッパーをメッセージから除去し、且つ／又はアプリケーションにメッセージを通信するように構成される。いくつかの実施形態において、アクセサリ機能は、アクセサリ通信プロトコルを使用して受信される。いくつかの実施形態において、アクセサリマネージャとして実行する制御ロジックは、データが入力データストリームから読み出されるように入力データストリームを確立するように更に構成される。いくつかの実施形態において、アクセサリマネージャとして実行する制御ロジックは、入力データストリームを使用して、アクセサリから受信されたメッセージをアプリケーションに通信する。いくつかの実施形態において、アクセサリマネージャとして実行する制御ロジックは、アプリケーションからアプリケーション通信プロトコルフォーマットメッセージを受信し、アクセサリ通信プロトコルラッパーによりアクセサリ通信プロトコルメッセージをラップし且つ／又はアクセサリにメッセージを通信するように更に構成される。いくつかの実施形態において、アクセサリマネージャとして実行する制御ロジックは、データがアプリケーションにより出力データストリームに書き込まれ且つアクセサリに送出されるように出力データストリームを確立するように更に構成される。いくつかの実施形態において、アクセサリマネージャとして実行する制御ロジックは出力データストリームから受信されたメッセージをアクセサリに通信する。
【０１７４】
別の方法が提供される。この方法は、アクセサリがアクセサリインタフェースと通信可能に結合されているという指示に対して移動体コンピューティング装置のアクセサリインタフェースを監視すること、アクセサリがアクセサリインタフェースと通信可能に結合される場合にアクセサリ通信プロトコルを使用して受信可能であり且つ／又はアクセサリと互換性のある１つ以上のアプリケーション通信プロトコルを示す情報を含むことができる機能情報をアクセサリから受信すること、移動体コンピューティング装置上で実行されているアプリケーションに対して入力データストリームを確立すること（ここで、アクセサリ通信プロトコルラッパーにおいてラップされるアクセサリから受信されたアプリケーションメッセージは、アクセサリ通信プロトコルラッパーから取り除かれ且つ入力データストリームを使用してアプリケーションに書き込まれる）、並びに／あるいはアプリケーションに対して出力データストリームを確立すること（ここで、アプリケーションからの出力データストリームに書き込まれたアプリケーションメッセージは、アクセサリ通信プロトコルラッパーにラップされ且つアクセサリインタフェースを介してアクセサリに送出される）を含むことができる。いくつかの実施形態において、アクセサリインタフェースは無線通信インタフェースを含むことができる。いくつかの実施形態において、１つ以上のアプリケーション通信プロトコルを示す情報は、逆ドメイン名フォーマットを使用して提供される。
【０１７５】
移動体コンピューティング装置上で実行する方法が更に提供される。方法は、アプリケーションプロトコルを使用して移動体コンピューティング装置上で実行されているアプリケーションから移動体コンピューティング装置と外部アクセサリとの間の通信セッションに対する要求を受信すること、アプリケーションプロトコルがアクセサリによりサポートされるかを判定すること、アプリケーションプロトコルがアクセサリによりサポートされる場合にアプリケーションプロトコルを使用してアクセサリと通信するために入力ストリーム及び出力ストリームをアプリケーションに提供すること、アプリケーションプロトコルに従ってフォーマットされるメッセージを出力ストリームを介してアプリケーションから受信すること、メッセージをアクセサリプロトコルメッセージ内にラップすること、並びに／あるいはメッセージをアクセサリに送出することを含むことができる。
【０１７６】
いくつかの実施形態において、判定することは、ルックアップテーブルにおいてアプリケーションプロトコルをルックアップすることを更に含むことができる。いくつかの実施形態において、方法は、アクセサリプロトコルメッセージ内にラップされるアプリケーションプロトコルメッセージであるメッセージをアクセサリから受信すること、アプリケーションプロトコルメッセージからアクセサリプロトコルラッパーをアンラップすること、並びに／あるいはアプリケーションプロトコルメッセージをアプリケーションの入力ストリームに書き込むことを含むことができる。
【０１７７】
移動体コンピューティング装置上で実行する別の方法が提供される。方法は、第１の通信プロトコルを使用する第１のアプリケーションと第１のアクセサリとの間の通信を提供する第１のアプリケーションと第１のアクセサリとの間の第１の通信セッションを開くこと、第１のアプリケーションから第１のメッセージを受信すること、アクセサリプロトコルラッパー内にラップされるアクセサリに第１のメッセージを送出すること、第２の通信プロトコルを使用して第１のアプリケーションと第１のアクセサリとの間の通信を提供する第２のアプリケーションと第１のアクセサリとの間の第２の通信セッションを開くこと、並びに／あるいは第２のアプリケーションから第２のメッセージを受信し且つアクセサリプロトコルラッパー内にラップされるアクセサリに第２のメッセージを送出することを含む。尚、第１のアプリケーションプロトコル及び第２のアプリケーションプロトコルは異なる。
【０１７８】
移動体コンピューティング装置のプロセッサにより実行された場合にプロセッサに方法を実行させるプログラム命令を含むコンピュータ可読媒体が提供される。方法は、移動体コンピューティング装置において実行するバックグラウンド処理であってもよく且つ移動体コンピューティング装置上で実行されているアプリケーションと移動体コンピューティング装置と通信可能に結合されるアクセサリとの間に通信接続性を提供するアクセサリマネージャからアクセサリ情報を要求すること、アクセサリが移動体コンピューティング装置と通信可能に結合される場合にアクセサリと互換性のある少なくとも１つのアプリケーション通信プロトコルを指定する１つ以上のプロトコル識別子及び１つのアクセサリ識別子をアクセサリマネージャから受信すること、アプリケーションが少なくとも１つのアプリケーションプロトコルと互換性があるかを判定すること、アプリケーションが互換性がある場合にアプリケーション通信プロトコルを使用してアクセサリマネージャを介してアクセサリと通信するためのセッションを開くこと、並びに／あるいはアプリケーション通信プロトコルを使用してアクセサリと通信することを含むことができる。いくつかの実施形態において、プロトコル識別子は逆ドメイン名規則を使用してフォーマットされる。いくつかの実施形態において、アクセサリと通信することは、アクセサリマネージャから出力ストリームを受信すること及び／又はアプリケーション通信プロトコルに従って入力ストリームにデータを書き込むことを含むことができる。いくつかの実施形態において、アクセサリと通信することは、アクセサリマネージャから入力ストリームを受信すること及び／又はアプリケーション通信プロトコルに従ってフォーマットされたデータを入力ストリームから受信することを含むことができる。
【０１７９】
アプリケーションがアプリケーションマネージャを使用してアクセサリとの通信を確立する方法。方法は、アクセサリと互換性のあるアプリケーションプロトコルを指定するアプリケーションマネージャから指示を受信すること、アプリケーションプロトコルを使用してアクセサリと通信するためにアプリケーションマネージャから入力ストリーム及び出力ストリームを受信すること、並びに／あるいはその後アクセサリに対するアプリケーションプロトコルメッセージを出力ストリームに書き込むことを含むことができる。いくつかの実施形態において、方法はアプリケーションによりサポートされるアプリケーションプロトコルの指示を含むことができるアプリケーションプロトコル情報をアプリケーションマネージャに送出することを含むことができる。いくつかの実施形態において、アクセサリと互換性のあるアプリケーションプロトコルは、アプリケーションにより送出されるアプリケーションプロトコル情報により示されるアプリケーションプロトコルであってもよい。いくつかの実施形態において、アプリケーションプロトコル情報により示されるアプリケーションプロトコルは、逆ドメイン名規則を使用してアプリケーションプロトコルを示す。
【０１８０】
移動体コンピューティング装置上で実行されているアプリケーションにより実行される方法が開示される。方法は、移動体コンピューティング装置と通信可能に結合されるアクセサリによりサポートされる１つ以上のアプリケーションプロトコルを示す情報を含むことができるアクセサリ情報をアプリケーションマネージャから要求すること、アクセサリによりサポートされるアプリケーションプロトコルがアプリケーションによりサポートされるアプリケーションプロトコルとマッチングするかを判定すること、アプリケーションプロトコルがマッチングした場合にアプリケーションプロトコルを使用してアクセサリと通信するために入力ストリーム及び出力ストリームを要求すること、入力ストリーム及び出力ストリームを受信すること、並びに／あるいはその後アクセサリに対するアプリケーションプロトコルメッセージを出力ストリームに書き込むことを含む。いくつかの実施形態において、方法は入力ストリームを使用してアクセサリからアプリケーションプロトコルメッセージを読み出すことを含むことができる。いくつかの実施形態において、アクセサリ情報は逆ドメイン名規則を使用してアプリケーションプロトコルを示す。いくつかの実施形態において、アクセサリ情報はテーブルに格納され、アクセサリ情報はアクセサリ情報と関連付けられるメタデータの記憶場所に対するポインタとなる。
【０１８１】
移動体コンピューティング装置上で実行されているアプリケーションにより実行される方法が提供される。方法は、移動体コンピューティング装置と結合されるアクセサリによりサポートされるアプリケーションプロトコルを示す情報を含むテーブルにアクセスすること、アプリケーションによりサポートされるアプリケーションプロトコルがテーブルのアプリケーションプロトコルとマッチングするかを判定すること、アプリケーションプロトコルがマッチングする場合にマッチングしたアプリケーションを使用してアクセサリと通信するための通信セッションを開くこと、入力ストリーム及び出力ストリームを受信すること、並びに／あるいはその後アクセサリに対するアプリケーションプロトコルメッセージを出力ストリームに書き込むことを含む。いくつかの実施形態において、テーブルはアクセサリと関連付けられる複数のアプリケーションプロトコルを含むことができ、且つ／又はアプリケーションは、アプリケーションによりサポートされるアプリケーションプロトコルがテーブルの任意のアプリケーションプロトコルとマッチングするかを判定する。いくつかの実施形態において、方法は入力ストリームを使用してアクセサリからアプリケーションプロトコルメッセージを読み出すことを更に含むことができる。いくつかの実施形態において、アクセサリ情報は、逆ドメイン名規則を使用してフォーマットされるアプリケーションプロトコルを示す。
【０１８２】
本明細書において、回路、論理モジュール、プロセッサ及び／又は他の構成要素については種々の動作を実行するように「構成される」ものとして説明できる。実現例に依存して、そのような構成が特定の構成要素の設計、セットアップ、相互接続及び／又はプログラミングを通して達成されること、並びに実現例に依存して、構成された構成要素が異なる動作を行なうように再構成可能であっても再構成可能でなくてもよいことは、当業者には理解されるだろう。例えばプログラマブルプロセッサは、適切な実行可能コードを提供することにより構成される。専用論理回路は、論理ゲート及び他の回路素子を適切に接続することにより構成される。
【０１８３】
上述の実施形態は、特定のハードウェア及びソフトウェアコンポーネントを参照したが、ハードウェア及び／又はソフトウェアコンポーネントの種々の組合せが使用されてもよいこと、並びにハードウェアで実現されるものとして説明した特定の動作がソフトウェアで実現されてもよいこと又はその逆も可能であることが当業者には理解されるだろう。
【０１８４】
本発明の種々の機能を組み込むコンピュータプログラムは、種々のコンピュータ可読記憶媒体上で符号化される。適切な媒体には、磁気ディスク、磁気テープ、コンパクトディスク（ＣＤ）又はＤＶＤ（デジタル汎用ディスク）等の光記憶媒体及びフラッシュメモリ等が含まれる。プログラムコードにより符号化されるコンピュータ可読記憶媒体は、互換性のある装置とパッケージ化されるか又は他の装置とは別個に提供される。更にプログラムコードは、符号化され且つ有線光学式及び／又はインターネットを含む種々のプロトコルに準拠する無線ネットワークを介して送信され、それにより例えばインターネットダウンロードを介する配信を可能にする。
【０１８５】
例及び／又は詳細が単一の実施形態に関連して本開示において説明されるが、そのような例又は詳細は、本明細書で説明される任意の実施形態と関連して使用可能である。
【０１８６】
従って、本発明が特定の実施形態に関して説明されたが、本発明は、以下の特許請求の範囲の範囲内の全ての変形及び等価物を範囲に含むことを意図する。
【図１Ａ】
2010233217.tif 000003
【図１Ｂ】
2010233217.tif 000004
【図２】
2010233217.tif 000005
【図３】
2010233217.tif 000006
【図４】
2010233217.tif 000007
【図５Ａ】
2010233217.tif 000008
【図５Ｂ】
2010233217.tif 000009
【図５Ｃ】
2010233217.tif 000010
【図６】
2010233217.tif 000011
【図７】
2010233217.tif 000012
【図８】
2010233217.tif 000013
【図９】
2010233217.tif 000014
【図１０】
2010233217.tif 000015
【図１１】
2010233217.tif 000016
【図１２】
2010233217.tif 000017
【図１３】
2010233217.tif 000018
【図１４】
2010233217.tif 000019
【図１５】
2010233217.tif 000020
【図１６】
2010233217.tif 000021
【図１７】
2010233217.tif 000022
【図１８】
2010233217.tif 000023
【外国語明細書】
2010233217000001.pdf