(58)【調査した分野】(Int.Cl.,DB名)
前記コントロールチャンネルを介したデータ送信には、前記第1プロトコルの他のコマンドも含まれ、前記1つ又は複数の一般コマンドは、前記第1プロトコルの他のコマンドと混合されてもよい請求項1に記載の装置。
前記第1プロトコルは、MHL(Mobile High−Definition Link)であり、前記第3プロトコルは、HDMI(High−Definition Multimedia Interface)(登録商標)である請求項14に記載の装置。
第1の装置において、第1プロトコルの第1データセットを転送するステップであって、コネクタを介して、前記第1プロトコルのためのデータチャンネルを通じてデータの送信又は受信を行うことを含むステップと、
前記第1の装置において、第2プロトコルの第2データセットを転送するステップであって、前記コネクタを介して、前記第1プロトコルのためのコントロールチャンネルを通じてデータの送信又は受信を行うことを含み、前記第2プロトコルのデータを前記第1プロトコルのための前記コントロールチャンネルを通じて送信するのに先立ち、前記第2プロトコルのデータを最適化するステップと、
拡張ディスカバリを通じて、前記第1の装置に、前記第2プロトコルの使用能力を与えるステップと、
を備え、
前記第1データセット及び前記第2データセットは、少なくとも部分的に、同時転送され、
前記第2データセットは、前記第1プロトコルの1つ又は複数の一般コマンドを使用して転送され、
前記拡張ディスカバリには、パケット構造及びサービス性能の機能に関する情報の交換を含む、
方法。
割込メッセージを通じて各データバーストを調整するステップと、複数の割込メッセージを統合し、前記統合した割込メッセージを単一のメッセージとして送出するステップとをさらに備える請求項21に記載の方法。
前記コントロールチャンネルを介して前記第1プロトコルの他のコマンドを転送するステップをさらに備え、前記1つ又は複数の一般コマンドは、前記第1プロトコルの他のコマンドと混合されてもよい請求項17に記載の方法。
【発明を実施するための形態】
【0008】
本発明の実施形態は、データトンネルを用いるインタフェースを介した複数のプロトコルデータ要素の送信全般に係る。
【0010】
「モバイルデバイス」は、電話(スマートフォン等)、ラップトップコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、モバイルインターネットデバイス(MID)、又はその他の電子モバイルデバイスを意味する。
【0011】
「処理要素」は、データ処理を行うあらゆる電子部品、モジュール、又はその他のユニットであって、汎用プロセッサ又は専用プロセッサ、Central Processing Unit(CPU)、内蔵プロセッサ、又はビデオプロセッサを含むが、これに限定されるものでない。処理要素は、データ処理に加えてその他の機能を提供する電子部品、モジュール、又はその他のユニットであってもよい。
【0012】
コネクタ又はその他の物理インタフェースを介して異なるプロトコルのデータを転送するインタフェースがある。例えば、MHL仕様によると、オーディオ/ビデオ(A/V)データ(MHLデータ)の中継に5ピンコネクタの使用を許容しており、MHLにコネクタが使用されない場合、この接続はUSB(Universal Serial Bus)データのサポートに使用されてもよい。しかしながら、MHL仕様によると、5ピンコネクタでのA/Vデータ及びUSBデータの同時搬送はサポートしていない。さらにMHL仕様は、特定のコマンドを使用したMHL CBUS(Control Bus)を通じた一般データの転送プロセスを規定しており、このコマンドはWRITE_BURSTコマンド及びSET_INTコマンドである。MHLによるデータ転送の定義は一般的なものであり、特定の使用例に限定されるものでない。本明細書全般において、MHL及びUSBを一例として説明するが、本実施形態はこれら特定のプロトコルに限定されるものでない。本明細書中の使用において、一般コマンドとは、特定の送信データ形式に限定されないコマンドであり、従って複数の異なる種別のデータ転送に使用されてもよい。
【0013】
いくつかの実施形態に係る装置、システム、及び方法によると、データチャンネルの使用を通じて少なくとも部分的に、複数の異なるプロトコルを使用したデータの同時搬送を行うために、インタフェースを使用することができる。特定の実装における装置、システム、又は方法によると、第1プロトコルデータ(A/V MHLデータ等)及び特定の第2プロトコルデータ(USB等)の同時サポートを行うため、MHL一般WRITE_BURSTコマンド及びSET_INコマンドを適用し、第2プロトコルデータは特定のデータ要素に限定されてもよい。例えば、第2プロトコルデータは、MHL接続を通じた、ゲームコントロールデータ、カーソルデータ(マウスデータ、タッチパッドデータ、又はタッチスクリーンデータ等)、キーボードデータ等の低速USBヒューマンインタフェースデバイス(HID)データであってもよい。しかしながら本実施形態は、プロトコルデータを特定のデータ要素に制限する動作に限定されるものでない。いくつかの実施形態において、モバイルデバイス及びリモートデータコネクタ間にデータトンネル又はブリッジを生成することにより、複数のプロトコルの機能が有効化される。このデータトンネルはMedia Data Tunnel(MDT)と称される。いくつかの実施形態において、リモートデータコネクタは、MHL対応ディスプレイ又はMHLドングルへのHDMI(High−Definition Multimedia Interface)(登録商標)内に物理的に配置され、ローカルデータコネクタは、モバイルデバイス内に配置されてもよい。
【0014】
いくつかの実施形態における装置は、MHL仕様等、プロトコルの下に動作を拡張するメディアデータトンネルに加え、モバイルデバイスを、MHL対応ディスプレイ内又はHDMI−MHLドングル内のいかなる低速データコネクタにトンネルしてもよい。一例によると、メディアデータトンネルを通じて端末アクセスのためのシリアル通信が行われてもよい。
【0015】
いくつかの実施形態における装置、システム、又は方法は、MHL WRITE_BURST等の一般書込コマンドを保証する実装ガイドを提供し、十分な帯域幅を提供し、HID及び同等の低速アプリケーションに適切な低遅延を提供する。WRITE_BURST等のコマンドを利用して、データ送信速度より遅い速度でデータを中継してもよい。しかしながらこの性能は、HID及び同等のアプリケーションにとって十分でないこともある。いくつかの実施形態において、メディアデータトンネルは、HID及びその他のアプリケーションに十分な性能を発揮するためにWRITE_BURST制限を低減し、実際の使用例において十分な性能を提供するために利用される。
【0016】
いくつかの実施形態における装置、システム、または方法は、MHL等のプロトコルを多目的バスとすることができる。設計により、MHLは、モバイル環境におけるオーディオ/ビデオ(A/V)をサポートすることを目的とする。いくつかの実施形態における装置、システム、又は方法は、ヒューマンインプット及び周辺機器によるデータ転送もサポートすべく、機能を拡張する。いくつかの実施形態によると、MHLにMHLデータ及び低速USBデータを同時に搬送させることにより、機能を拡張する。しかしながら実施形態は、特定のプロトコルに限定されるものでない。例えば、追加的なデータ転送をサポートするのに一般的機構が用いられるため、第1プロトコルのデータはいかなる低速バスからのデータと組み合わせられてもよい。
【0017】
MHL仕様は、実装要件及びタイムアウトを通じて他のプロトコルのデータトンネリングを制限する。この仕様によると、GRT_WRTメッセージの受信に10ミリ秒のタイムアウトを課す。MHLデバイスは、許容されたタイムアウト期間の大部分を消費する場合、MHLのWRITE_BURTコマンドを使用したトンネリングを100イベント/秒未満まで抑える。MHL仕様はまた、同様に帯域幅を低減するWRITE_BURSTコマンドのための3段階調製プロセスも規定している。メディアデータトンネルは、WRITE_BURSTによってサポートされた帯域幅を向上しつつ、MHL仕様に合うディスカバリ及び調整のための追加ガイドラインを通じて、MHL仕様における制限に対する相互運用可能なソリューションを示している。
【0018】
同一のコネクタを通じて、USB及びMHL等、第1プロトコル及び第2プロトコルの双方について、そのすべての特徴を提供するのは不可能又は実際的でないこともある。MHL仕様は、USBデータをサポートするいかなる手段も明示していない。いくつかの実施形態における装置、システム、または方法は、各プロトコルが通常ポートの全帯域幅又はその多くを使用する場合、複数種のプロトコルデータの送信を可能とする。例えば、MHLではA/V又はUSB周辺機器のための単一の5ピンコネクタの使用を許諾するが、ポートの機能は、随時、互いに排他的にA/Vサービス及びUSBサービスの提供に限定される。MHLではA/Vポート及びUSBポートを単一の5ピンコネクタに結合しているが、従来のポートは、USB仕様及びMHL仕様が各々、互いに独立した目的のために同一の差動対の全帯域幅を割り当てるため、MHLサービス及びUSBサービスを同時に提供することができず、並列して使用されると、MHL及びUSBが衝突してしまう。
【0019】
いくつかの実施形態において、コネクタは、例えばPCに対するUSB対応リンクをサポートする帯域幅が不足していたとしても、A/V周辺機器及び低速USB周辺機器に対して同時にサービスを提供してもよい。いくつかの実施形態において、USB周辺機器データ等の第2プロトコル周辺機器データは、第1プロトコルに準拠したコマンドを用いて、第1プロトコル制御バスを備えたコントロールチャンネルを通じて送信されてもよい。一例によると、MHLに準拠したコマンドを使用することにより、USBデータがCBUS上のMHLデータと連動しないように保証する。さらにCBUS上のUSBデータを符号化することにより、MHL仕様に準じて、A/Vデータの搬送を行うために差動対を残しておく。単一配線のコントロールバスは通常、1つの差動対に有効な帯域幅の一部を提供するため、装置またはシステムは低速USBデータ等の低速データに限定されることもあり、メディアデータトンネルはモバイル装置及びコンピュータ間のUSB対応リンクをサポートするのに十分な速度を有さないこともある。
【0020】
従来のデバイスによると、モバイルデバイス上の5ピンUSBポートは、主に、デバイスをPCにリンクさせるサービスを提供し、A/Vサービスを提供することは求められない。例えば、MHL仕様は、USBデータ及びA/Vサービスの同時提供を行うよう規定されていない。MHLは代わりに、WRITE_BURSTコマンド及びSET_INTコマンドを備えており、これらは通常のデータ使用のためにMHL仕様に規定されている。これらのコマンドは、例えば、ファームウェアのアップグレードを提供するため、又は、小さな専有データのチャンクを低頻度で中継するために使用されてもよい。
【0021】
しかしながら、スマートフォンは、新たなモバイル操作の出現で、デスクトップディスプレイを駆動しながら、同時にゲームコントローラー、カーソル(マウス、タッチパッド、又はタッチスクリーン)、又はキーボード入力を受信することができるモバイルコンピュータとして考えられている。いくつかの実施形態において、モバイルデバイスは、このような動作のために、独立したコネクタ及びケーブルを通じて並行してA/Vサービス及びUSBサービスを提供するために使用されている。
【0022】
いくつかの実施形態において、メディアデータトンネルは、MHL送信機及びMHL受信機間の多目的バスとしてのMHLの使用を許容するMHL WRITE_BURSTコマンド及びSET_INTコマンド等のコマンドのアプリケーションを備える。いくつかの実施形態において、メディアデータトンネルは、MHLのリンクコントロールバスリンク層及びトランスレーション層を利用した2層トンネルを提供する。メディアデータトンネルは、これらの層の使用を通じて、リンク層及びトランスレーション層におけるMHLのフローコントロールを利用している。同様に、メディアデータトンネルは、リンク層及びトランスレーション層におけるMHLエラー検出を利用してもよい。いくつかの実施形態において、メディアデータトンネルの実装により、MHLの特徴を選択的に拡張してもよい。いくつかの実施形態において、フローコントロール、エラー検出、及び追加再試行の実装は、トンネルされたバスに期待される性能又は特徴によって決まる。いくつかの実施形態において、MHLプロトコルで最適化データが転送されるのに先立ち、USBデータが最適化される。本明細書中での使用において、最適化データとは、最適化プロセス又は適合プロセスの施されたデータをいい、これらのデータが最適なデータ形式又はソリューションであることを意味するものではない。
【0023】
図1は、データトンネルを用いるコネクタを介した、複数のプロトコルデータ要素のデータトンネリング送信を提供する装置及びシステムの一実施形態を示している。同図において、ソースデバイス110(モバイルデバイス又はその他の装置等)は、シンクデバイス160(テレビジョン又はその他のビデオシステム、コンピュータ、ゲーム機、MHLドングル、又はその他の装置)に連結されている。ソースデバイス110及びシンクデバイス160は、ケーブル150を介して連結されてもよい。ケーブル150には、データ送信用の一方向差動対を備えたデータチャンネルと、双方向(単一線)コントロールバス(CBUS)を備えたコントロールチャンネルとを有するMHL互換性ケーブルが含まれてもよい。1つ又は複数のヒューマンインタフェースデバイスがシンクデバイス160に連結される。
【0024】
ソースデバイス110は、MHLと互換性のあるUSBレセプタクル等、ケーブル150の接続を行うコネクタ140を備えてもよい。シンクデバイスは、ケーブルの接続を行うコネクタ190を備えてもよく、このコネクタは代わりにUSBコネクタであってもよく、ディスプレイのSOC又は通常ドングルと称される変換要素(MHL−HDMIドングル)が連結される他のレセプタクル(HDMIレセプタクル等)であってもよい。
【0025】
いくつかの実施形態において、ソースデバイス110及びシンクデバイス160の双方には、電気回路等、第2プロトコルのための要素が備えられ、第2プロトコルはUSBであってもよい。同図において、ソースデバイス110には第2プロトコル要素120が備えられ、これがUSBホストとして動作してもよい。またシンクデバイス160には第2プロトコル要素170が備えられ、これがUSBデバイスとして動作してもよい。
【0026】
いくつかの実施形態において、ソースデバイス110及びシンクデバイス160は、第1プロトコルで転送されるデータとともに、第2プロトコルのデータを少なくとも一部、同時に(同じタイミングで、又は、重複した期間内に)転送するためにメディアデータトンネルを利用し、第1プロトコルでの転送に先立って第2プロトコルのデータに最適化又は適合化を行う。いくつかの実施形態において、メディアデータトンネルには、USBデータ等、双方向データの転送にケーブル150のコントロールバスを使用することが含まれる。いくつかの実施形態において、第1プロトコルの識別フィールドは、コントロールバスを介した受信装置の識別に、データの最適量又は最小量を利用する。例えば、第1プロトコルの識別フィールドは、2バイトのデータと同一のサイズを有する。
【0027】
いくつかの実施形態において、シンクデバイス160及びソースデバイス110は、第2プロトコルのデータ転送に第1プロトコルのコントロールバスコマンドを使用する。この第2プロトコルのデータは、第2プロトコルのフルデータセットのサブセットであってもよい。例えば、第2プロトコルのデータサブセットには、ヒューマンインタフェースデバイスデータが含まれてもよい。同図において、1つ又は複数のヒューマンインタフェースデバイス155がシンクデバイス160に連結されてもよい。1つ又は複数のインタフェースデバイス155には、キーボード、マウス、タッチパッド又はタッチスクリーン、ゲームコントローラ、又はユーザの意思が入力できるその他のデバイスが含まれてもよい。ヒューマンインタフェースデバイスのためのサポートが、ソースデバイス110のためのヒューマンインタフェースサポート130及びシンクデバイス160のためのヒューマンインタフェースサポート180として示されている。
【0028】
いくつかの実施形態において、第2プロトコルの1つ又は複数のメッセージが、第1プロトコルの単一データ送信バーストで送信されてもよい。いくつかの実施形態において、各データバーストは、割込メッセージを通じて調整される。いくつかの実施形態において、割込メッセージの一部が統合され、単一のメッセージとして転送される。
【0029】
いくつかの実施形態において、メディアデータトンネルには、第1プロトコルの特定の一般コマンドを介した第2プロトコルのデータ送信が含まれ、この一般コマンドにはMHLの一般コマンドが含まれてもよい。同図において、ソースデバイス110及びシンクデバイス160は、ソースデバイスの一般コマンドサポート125及びシンクデバイスの一般コマンドサポート175として示された一般コマンドサポートを含むものとして描かれており、これらのサポートには、コマンドWRITE_BURST及びSET_INTのサポートを含むMHLのためのサポートが含まれてもよい。
【0030】
いくつかの実施形態において、シンクデバイス160は、例えば、キーボードのキーストローク、ゲームコントローラの入力又は動き、若しくはカーソル(マウス、タッチパッド、又はタッチスクリーン)の動きを記述したデータ等、ヒューマンインタフェースデバイスからのHIDコマンドデータを受信してもよい。いくつかの実施形態において、シンクデバイス160及びソースデバイス110は、HIDデータ等の送信のために1つ又は複数の一般コマンドを利用してもよく、このようなデータの送信は、ソースデバイス110及びシンクデバイス160間のケーブル150によって提供される双方向コントロールバスを利用して達成されてもよい。USBは双方向であり、デバイスがUSBミクロABレセプタクル等のレセプタクルを使用する場合、USBポートはUSBホスト又はUSBデバイスのように振舞ってもよい。同図において、メディアデータトンネルの目的のため、ソースデバイス110は、主にWRITE_BURST受信機として振る舞い、A/Vソースデバイスは、ヒューマンインタフェースデバイスと連結されて、主にHIDデータ送信のためのWRITE_BURST送信機として振舞ってもよい。しかしながら実施形態はこれに限定されるものでなく、デバイスの役割は反対であってもよい。
【0031】
図2は、メディアデータトンネルを使用せず、MHL WRITE_BURSTコマンド等のコマンドを使用したデータの送信方法の一実施形態を示している。同図において、モバイルデバイスとの連結を行うクレードル等の要求デバイス200は、モバイルフォン等の応答装置205と連結されている。いくつかの実施形態において、新たなHIDイベントが発生すると、要求デバイス200は、モバイルフォン等の応答デバイス205のスクラッチパッドレジスタに書込許可を要求する(210)ため、REQ_WRTビットセットで中継SET_INTコマンドを提供する(212)。応答デバイス205は、REQ_QRTビットを検出し(214)、GRT_WRTビットを含んだSET_INTコマンドで、要求デバイスに対して書込要求への許可を与える(216)。要求デバイス200は、GRT_WRTビットを検出する(218)。受容ビットが設定されている場合(220)、要求デバイス200により、WRITE_BURSTコマンドの開始(222)及びDCSR_CHGビットによるSET_INTコマンドの書込(224)を行う。応答デバイス205は、DSCR_CHG=1を検出し(226)、そのローカルスクラッチパッドレジスタの読取動作を行う(228)。
【0032】
図3は、MHL WRITE_BURSTコマンド等のメディアデータトンネルを使用した、データの送信方法の一実施形態を示している。同図においても、モバイルデバイスとの接続を行うクレードル等の要求デバイス300は、モバイルフォン等の応答装置305と連結されている。いくつかの実施形態において、システムの準備が整っている場合、要求デバイス305はDSCR_CHGとREQ_WRTのビットセットでSET_INTコマンドを書き込む(310)。応答デバイス305は、REQT_WRITビットを検出し(315)、GRT_WRTビットによりSET_INTコマンドで応答する(320)。要求デバイス300は、GRT_WRTビットを検出する(325)。受容ビットが設定されている場合(330)、送信機は、受信機のスクラッチパッドレジスタへのアクセスを実現し、新たなHIDイベントを待機してもよい(335)。新たなHIDイベントが発生すると(335)、WRITE_BURSTコマンドを開始し(340)、要求デバイス300による書込動作を行い(345)、DSCR_WRT REQ_WRTの書込に戻る(310)。いくつかの実施形態において、応答デバイスはWRITE_BURSTを検出し(350)、スクラッチパッドを読み取る(355)。いくつかの実施形態において、応答装置は、そのローカルスクラッチパッドからデータを検索するのに先立ち、DSCR_CHG及びREQ_WRTビットセットを有する次のSET_INTコマンドを待機する。
【0033】
いくつかの実施形態において、CBUSデータトンネルの各端部では、データ処理以外にもMHL送信機又はMHL受信機のモニタリング及び制御を行う処理要素は、メディアデータトンネルエンコーダ及びデコーダの論理を実装している。動作中、MHL送信機又はMHL受信機には、マイクロコントローラ又はシステムオンチップ(SoC)等の処理要素によってサービスが提供される。処理要素によって実行されたドライバは、サービス論理を管理する。MHL仕様によると、MHL送信機は、電話機、タブレット、又はその他のモバイルデバイス等のソース装置又はソースシステム内に存在してもよい。MHL受信機は、ドッキングステーション、モニター、又はテレビディスプレイ等のシンク装置又はシンクシステム内に存在してもよい。MHL受信機はまた、MHL−HDMIドングル内に存在してもよい。いくつかの実施形態において、MHL送信機ドライバ又はMHL受信機ドライバは、以下に述べるブリッジプロセスの一部等、メディアデータトンネルの符号化サポート及び復号化サポートを提供するため、直接拡張されるか、又は、追加のソフトウェア層を通じて拡張される。
【0034】
ステージ1:トンネルのディスカバリ及び構築。動作中、第1ステージにおいて、MHL送信機及びMHL受信機は、MHL仕様ディスカバリを通じてトンネルリンクを構築する。MHL送信機及びMHL受信機は、MHL仕様ディスカバリシーケンスのMHLデータ交換ステージに準じて、CBUSデータトンネルを構築する。送信機及び受信機は、データ交換の一部として、デバイス機能レジスタを交換する。この交換は、各サイドが、WRITE_STATコマンドの送信を通じてアサートされたDCAP_RDYビットの中継を行うことによって開始される。この交換は、各サイドが、任意且つ独立的にSET_INTコマンドを用いてDCAP_CHGを送信することで後続する。これに対して、WRITE_STAT及びSET_INTの受信装置は、READ_DEVCAPコマンドのシーケンスを使用してSET_INT送信者の機能を検索する。各サイドは、受信データから、そのMHLピアのSP_SUPPORT、SCRATCHPAD_SIZE及びADOPTER_IDを識別する。いくつかの実施形態において、SP_SUPPORTは、メディアデータトンネル参加機器に、そのピアのWRITE_BURSTサポート能力を知らせるものである。SCRATCHPAD_SIZEは、メディアデータトンネル参加機器に、そのピアにおけるバッファリングサポートを査定させるものである。ADOPTER_IDは、後続のすべてのWRITE_BURSTコマンドのためのMDTパケットヘッダとして、MDT参加機器によってキャッシュに格納され、再使用されるものである。
【0035】
いくつかの実施形態において、メディアデータトンネルは、パケット構造及びサービス性能に関するメディアデータトンネルの機能についての情報交換を含むべく、ディスカバリを拡張する。メディアデータトンネルを通じたペイロード交換の開始に先立ち、メディアデータトンネルの送信機は、未来のWRITE_BURSTパケットにおいて使用されるヘッダデータ又は完全なパケット構造を識別する。いくつかの実施形態において、送信機の条件を受け入れ、標準WRITE_BURST機構を用いることであらゆる制約を中継することは、メディアデータトンネルの受信機に課せられた義務である。あるいは、受信装置は、送信機をタイムアウトさせることにより、提示されたパケット構造を拒否してもよい。さらに、メディアデータトンネルの送信装置は、メディアデータトンネルの受信装置の制約に応じて、メディアデータトンネル送信に移るか、メディアデータトンネル受信装置の制限に基づき、メディアデータトンネル受信装置を不適格である見做し、ユーザーにエラーメッセージを返してもよい。
【0036】
いくつかの実施形態において、拡張ディスカバリにおいて使用されるWRITE_BURSTコマンドは、メディアデータトンネル符号化の一部として、以下に述べる要素を伴うことなく、MHL仕様を遵守する。
【0037】
いくつかの実施形態において、決定論的性能を必要とするあらゆるメディアデータトンネルの実装に対して、メディアデータトンネルの受信装置は、拡張ディスカバリにおいてその性能に係る制約を中継する。MHLのWRITE_BURST機構の性能は決定論的であるものの、特定の要件においては非現実的である。MHL仕様では、WRITE_BURST受信装置がREQ_WRTの受信から10ミリ秒以内にGRT_WRTを中継することが必要である。この仕様はまた、パケットが先行のパケットから100ミリ秒以内に送信されることも要求する。同時に、2つのタイムアウトは、16バイトのWRITE_BURSTを終了させるのに2秒を見込んでいる。これらの制約によって最悪の場合の性能を提示し、MHLのWRITE_BURSTを決定論的にする一方で、許容された遅延によって多くのアプリケーションの下でのデータレートを低減し、メディアデータトンネルのディスカバリにおけるさらなる資格条件を課す。
【0038】
以下に述べるHIDカーソル、ゲームコントローラ、mdt_burst_tパケット構造を使用したキーボードイベントデータの中継に用いられる実装において、送信機は、選択されたデータ形式を受信機に知らせる。いくつかの実施形態において、MHL仕様ではDCAP_RDY又はDCAP_CHGのタイムリーな中継は要求されないため、メディアデータトンネル参加機器はすべて、タイムリーなディスカバリのため、PATH_ENの送信から10秒以内にWRITE_STATEコマンドを使用してDCAP_RDYを中継する。さらに、メディアデータトンネル参加機器は、PATH_ENの送信から少なくとも20秒、もしくは、MHL仕様によって求められるより短い間隔以内に、そのピアからデバイス機能レジスタ情報を検索する。この交換後、HIDデータの送信に先立って、メディアデータトンネルの送信機は、「MDTREQxy_FULL」の13バイトペイロードでWRITE_BURSTを送信する。この文字列のx要素及びy要素が「01」の2バイトASCIIアレイに等しい場合、この文字列はトークンを表している。このトークンにより、メディアデータトンネルの受信機に、WRITE_BURSTデータが以下に述べるmdt_burst_01_t構造に準拠する旨を知らせる。
【0039】
メディアデータトンネルの受信装置が、「MDTREQxy_FULL」で識別されるパケットを受信するよう準備されている場合、受信装置は「MDTACK_abcd」を含むWRITE_BURSTで応答する。「MDTACK_」の文字は、トークンとして機能する。このトークンは、HIDデータの受信準備が整っていることを示す。「abcd」の文字は、プレースホルダーとして機能する。このプレースホルダーには、16進法の4ニブルを表すASCIIの文字が含まれる。これら4つの文字は、受信装置がイベントを受信し、REQ_WRTに応答し、DSCR_CHG割込を取扱い、そのスクラッチパッドを読み出すのに必要な、マイクロ秒で表される最長時間を反映している。しかしながら、受信装置が「MDTREQxy_FULL」で識別されるパケットにサービス提供できない場合、受信装置は、メディアデータトンネルの送信機へのWRITE_BURST送信を、メディアデータトンネル送信機が3回試行を行うのに要する最短時間より長い数ミリ秒である40ミリ秒間避けることにより、送信装置をタイムアウトさせる。
【0040】
いくつかの実施形態において、メディアデータトンネルの受信機は、HIDアプリケーションのため、例えば10ms等の期間、受信したWRITE_BURSTを取扱うことが要求される。少なくとも、USB対応HIDデバイスは、USB仕様の低速基準に準拠している。この基準によると、2つのイベントレポート間の最短間隔は、10ミリ秒以上である。メディアデータトンネルがUSB低速、HID装置の最速のものに遅れを取らないために、メディアデータトンネルの受信装置は、「MDTACK_2710」又は「MDTACK_abcd」で「MDTREQxy_FULL」に応答する。ここでabcdは、0〜0×2710(10,000マイクロ秒)の間の16進値を反映したASCII文字の組み合わせである。メディアデータトンネルの送信機が期待されるペイロードを有するWRITE_BURSTを受信しない場合、ユーザに知らせ、同等のメディアデータトンネルサービスを求める未来の要求を拒絶する。
【0041】
図4A及び4Bは、メディアデータトンネルを用いた通信のためのメッセージ構成の一実施形態を示している。同図において、C構文で設けられたソフトウェアは、カーソルイベント、ゲームコントローライベント、及びキーボードイベントを含むHIDイベントのパケット構造を示している。
【0042】
図5A、5B、5C、5D、5E、5F、及び5Gは、メディアデータトンネルを備えた装置又はシステムの実施形態と併せて用いられるデータパケットを示している。同図において、表は、メディアデータトンネルデータのパケットのレジスタ形式図を提供している。いくつかの実施形態において、データパケットには、キーボード、マウス、ゲームコントローラ、及びその他のカーソル駆動装置のMDTイベントが含まれてもよい。
【0043】
図5A〜
図5Gにおいて、以下の形式が示されている。
【0044】
図5Aは、MDT_BURSTパケットのための形式である(505)。
【0045】
図5Bは、末尾の連続した0を切り詰めたキーボードのためのMDT_EVENTの形式を示す(510)。
【0046】
図5Cは、3を超える数のキーコードを有するか、又は、第2イベントでWRITE_BURST内にパッケージ化されたキーボードのためのMDT_EVENTの形式を示す(515)。
【0047】
図5Dは、ブートプロトコルに準拠するか、又は、4ビットHIDイベントをサポートして相対座標を使用するマウスのためのMDT_EVENTの形式を示す(520)。
【0048】
図5Eは、ベンダー特定機能を要求するか、第2イベントでWRITE_BURST内にパッケージ化されたマウスのためのMDT_EVENTの形式を示す(555)。
【0049】
図5Fは、ゲームコントローラのためのMDT_EVENTの形式を示す(560)。
【0050】
図5Gは、相対座標及びマルチタッチをサポートする他のカーソル駆動装置のためのMDT_EVENTの形式を示す(565)。
【0051】
いくつかの実施形態において、メディアデータトンネルの送信機はまた、その未来のWRITE_BURSTが単一カーソル駆動デバイスからのイベントのみ又はキーボードのイベントのみに限定されることを信号送信するため、「MDTREQxy_FULL」の代わりに、「MDTREQxy_CURSOR」又は「MDTREQxy_KEYS」を送信してもよい。メディアデータトンネルの送信機がWRITE_BURSTにおいて「MDTREQxy_CURSOR」を送信する場合、メディアデータトンネルの受信装置は、mdt_cursor_event_t構造に限定されたmdt_eventコンテンツを有するWRITE_BURSTペイロードを予期してもよい。メディアデータトンネルの送信機がWRITE_BURSTにおいて「MDTREQxy_KEYS」を送信する場合、メディアデータトンネルの受信装置は、mdt_keyboard_event_t構造に限定されたmdt_eventコンテンツを有するWRITE_BURSTペイロードを予期してもよい。
【0052】
いくつかの実施形態において、MDT送信機は、ゲームコントローラをサポートするために、「MDTREQxy_FULL」を送信しなければならない。共通ゲームコントローラは、種々の物理インタフェース、すなわち、指向性パッド、2つのアナログスティック、及び4つ以上のボタンからなる。このような物理入力及びMDTイベント間のマッピングはコントローラ固有のものであることが多いが、コントローラは共通して、マウスイベント及びキーボードイベントに対してゲームコントローラをマッピングすることにより、ユーザ入力を中継する。指向性パッドは、イベントがキーボードから入力されたかのように、上下左右キーとMDTキーボードイベントを生成するものである。
【0053】
ゲームコントローラの実装において、0に設定されたisMouseNotを有するカーソルイベントはアナログスティックからデータを搬送し、一方でmdt_event_header_t内のisPortBは右スティックと左スティックを区別するのに使用される。最後に、ボタンはカーソルイベント及びキー内でボタンフィールドに符号化されるが、各ボタン切替に対して単一の機構を使用してのみ送信される。さらにすべてのボタン切替は、USB HUT1.12及びLinux(登録商標)のinput.h.毎のキー切替にマップされてもよい。具体的には、Linux(登録商標)のinput.hにより、0×100がBTN_0イベントを中継し、0×109がBTN_9イベントを中継するように、0×100〜0×109までの範囲内のキーコードを有する10のボタンを提供する。同時に、最初の3つのボタンは、0に設定されたisPortBで送信されるカーソルイベント内の3ビットにマップし、次の3つのボタンは、1に設定されたisPortBで送信されるカーソルイベント内の3ビットにマップする。いくつかの実施形態において、送信機及び受信機における同時マッピングにより、ボタンイベントを指向性パッド又はアナログスティックからのイベントと対にする柔軟性を送信機に与え、受信機がイベントを適切に復号化するように保証し、システムの平均イベント遅延を短縮するようにしてもよい。
【0054】
UIシステムは通常、物理HIDデバイス間を区別せず、特定種別のすべてのイベントを同一キューに統合するため、メディアデータトンネルは、デバイスデータがゲームコントローラパケットの構造を用いて中継されない限り、HIDデバイス識別を保証しない。単一の周辺機器が同一のisPortBフィールド値に割り当てられた複数の論理マウスインタフェースを含む場合、メディアデータトンネルの受信機は、すべてのイベントを、isPortBフィールドで識別されたソースに帰すると判断する。アプリケーションがソースの区別を必要とする場合、提示された物理周辺機器内の各論理マウスデバイスは、isKeyboard=0、isNotMouse=1、isGAME=1、及びデバイスIDフィールド内のIDを識別する固有のインタフェースを有するゲームコントローラパケット構造を使用して、HIDイベントを送信する必要がある。キーボード型デバイスと、ID情報の中継を必要とするかもしれないその他の予期しない周辺機器とに対して、メディアデータトンネルは、定義拡大のため、逆(RSVD)フィールドを提供する。メディアデータトンネルを通じてHIDデータの送信を行う、本明細書に記載のディスカバリ機構は、HIDデータに限定されるものでない。この機構は、RS232、RS485及びその他の低帯域幅データのメディアデータトンネルを通じた交換を予期するのに使用されてもよい。一例として、メディアデータトンネルがRS232データを搬送する場合、最初のディスカバリフェーズは、リンク接続特性、すなわち通信速度、開始ビットの使用、データビット数、パリティビットの使用、及び停止ビット数を識別するのに使用されてもよい。
【0055】
ステージ2:データの符号化及び復号化。いくつかの実施形態において、メディアデータトンネルのピアは、メディアデータトンネルを介した送信のために、データを符号化及び復号化する。メディアデータトンネルの送信機は、データをスクラッチパッドに書き込むのに先立って符号化する。エンコーダは、任意のチェックサム拡張子を付与し、ヘッダプレフィックスを付与し、データを14バイトパケットに分割する。受信側では、メディアデータトンネルの受信装置が、データをスクラッチパッドから読み出した後に復号化する。
【0056】
MHL仕様では、リンク層及びトランスレーション層における基本エラー検出で、WRITE_BURSTコマンドを使用した送信を、WRITE_BURSTコマンド毎に16データバイトに制限する。最大限16データバイトとは別に、各WRITE_BURSTコマンドは、MHL仕様により、受信装置のADOPTER_IDで開始される最小2データバイトを含むことが要求される。しかしながら、WRITE_BURSTの実際の長さは、コマンドに符号化されることなく、またこのデータバイトで搬送されることはない。MHL仕様によると、受信装置は、最終データバイトに続くEOF(End Of File)コントロールパケットを受信するまで、WRITE_BURSTを受信している間、バイトカウンタをインクリメントする。受信装置は、WRITE_BURSTコマンドパケット及びOffsetデータパケットを受信後、そのカウンタを開始する。カウンタは、一旦開始すると、WRITE_BURSTデータバイトを搬送する各MHLデータパケットを追跡する。CBUSを渡って送信されたすべてのパケットは、パケットの種別を問わず、2ヘッダビットと、1コントロールビットと、1パリティビットで、基本リンク層エラー検出を提供する。パケットが予期しないパリティデータ、コントロールデータ、又はヘッダデータで受信された場合、パケット受信装置は、そのMHLリンク層論理の一部としてNACKで応答する。MHL仕様はまた、WRITE_BURSTコマンドのためのトランスレーション層におけるエラー検出も提供している。受信装置は、そのトランスレーション層の検証、すなわち、OffsetデータパケットにおけるOffset値の査定、受信したデータバイトのカウント、及び2バイトのADOPTER_IDの検査の結果を中継するため、ACKコントロールパケット又はABORTコントロールパケットでWRITE_BURSTに応答してもよい。
【0057】
いくつかの実施形態において、MHL仕様が基本エラー検出を提供するため、メディアデータトンネル固有のエラー検出は、1バイトのチェックサム拡張子を使用することによって任意に選択されてもよい。高度のエラー検出又はエラー補正が要求されるアプリケーションの場合、エンコーダは、WRITE_BURSTデータバイトを通じて適切なバイトのチェックサムを計算してもよい。いくつかの実施形態において、チェックサムアルゴリズムは、パリティ、モジュラーサム、CRC(cyclic redundancy check)、又はメディアデータトンネルエンコーダ及びメディアデータトンネルデコーダの一部として、トンネルの両側で使用される他のいかなるアルゴリズムであってもよい。いくつかの実施形態において、任意のチェックサムを通じて得られたエラー処理は、アプリケーション固有のものであってもよい。例えば、エラー処理は、チェックサム、事前規定された確認ロジックによって有効とされる再試行機構、又はさらなる消費を伴うことなく誤りデータを単に外すことによって許容される補正からなってもよい。実装に関わらず、メディアデータトンネルの送信機は、メディアデータトンネルディスカバリの間、パケットチェックサム拡張子と、チェックサムの方法とを含んだものを伝達する。
【0058】
いくつかの実施形態において、メディアデータトンネルを通じてHIDデータを送信する特別な実装には、チェックサムは使用されない。ユーザ入力のHIDリポートがストリームとして見做されてもよい。稀なエラーの場合、ユーザは容易に入力を変更することができる。マウスレポートがメディアデータトンネルの受信機に到達しない場合、ユーザは、意図する情報を中継するためにマウスをさらに移動させる傾向にある。同様に、ユーザは、システムに認識されないキー押下を繰り返すか、又は、まず前回のエントリを消去した後、補正を送信することによって誤認されたキー押下を補正する傾向にある。
【0059】
いくつかの実装において、メディアデータリンクのエンコーダは、強制的に2バイトからなるヘッダ等のヘッダを付与することが要求される。MHL仕様では、WRITE_BURSTにおいてOffsetデータパケットに続く最初の2バイトが受信装置のADOPTER_IDを伝達することが要求される。ADOPTER_IDはMHL,LLC.(MHLコンソーシアムの実施、MHL仕様の採用、ライセンス供与、及び促進の責を負う組織)により割り当てられるため、WRITE_BURSTの最初の2バイトで可変の値を使用することはできない。MHLの要件に見合うようにするため、送信装置は、前述のとおり、MHLディスカバリの間にADOPTER_IDを検索し、続いてスクラッチパッドの最初の2バイトを初期化するためにこの値を使用する。
【0060】
いくつかの実施形態において、メディアデータトンネルの送信装置は、遅延を短縮するために、一連のWRITE_BURSTのために、スクラッチパッドのADOPTER_IDバイトのセットを一度のみ設定する。続く送信において、スクラッチパッドが到来したWRITE_BURSTによって上書きされていなければ、メディアデータトンネルの送信装置がスクラッチパッドに書き込むバイト数は、2バイト少なくなる。
【0061】
最初の2バイトに続いて、デコーダが同一のヘッダ定義を備えている場合に限り、ヘッダがメディアデータトンネル実装にユニークな方法で選択的に拡張されてもよい。MHL採用者がファームウェアのアップグレード等、他の目的でメディアデータトンネルのためにWRITE_BURSTコマンドを使用しようとする場合、ヘッダには、WRITE_BURSTをメディアデータトンネルと関連づける追加のビットが含まれてもよい。
【0062】
前述のとおり、mdt_burst_tを使用してHIDマウスイベントデータ及びキーボードイベントデータを中継するために使用される実装において、ヘッダは、mdt_event_header_tの4ビット構造である。いくつかの実施形態において、HIDと、その他の規定されていないメディアデータトンネルアプリケーションとのためにWRITE_BURSTの多重を許容する際、ヘッダの最上位ビット(MSb)はHIDの使用を示している。MSbに続く3ビットが、ペイロードにおけるデータを特定する。isPortBビットは、イベントの物理的発生源を識別し、mdt_event_header_tは、ユニークなポートによって識別された2HIDデバイスまでをサポートする。isKeyboardビットは、mdt_eventユニオンのコンテンツを識別する。isKeyboardが「1」である場合、mdt_eventユニオンは、mdt_keyboard_event_tを表す。しかしながらisKeboardが「0」である場合、mdt_eventユニオンは、mdt_mouse_event_tを表す。isNotLastビットは、マルチタッチアプリケーションや、より高いイベントレートでのサポートを命じるその他のアプリケーションのために、単一のWRITE_BURST内において複数のHIDイベントの多重化を許容する。isNotLastが0に設定された場合、このビットは、トランスレーション又は最適化を通じて適合させられた、遅延最適化キーボードパケット構造及び遅延最適化マウスパケット構造も識別する。isNotLastが1に設定された場合、受信機は、WRITE_BURST内の第2イベントの存在に関し、スクラッチパッドのオフセットの9バイトを調べるであろう。送信機が2つのイベントを単一のWRITE_BURST内に統合することを意図しないものの、その主要イベントのために適合化パケットを使用する代わりに7バイトのフルペイロードを要求する場合、送信機は、MDT受信機が確実にスクラッチパッドバイト9〜16を無視するように、スクラッチパッドのオフセット9〜0においてMSbを設定する。
【0063】
MHL仕様では、WRITE_BURSTコマンドを使用した送信が16データバイトに制限されるが、強制的ADOPTER_IDにより、許容されるペイロードが低減される。送信機におけるあらゆるWRITE_BURSTのためのエンコーダは、送信するデータを、14データバイト以下のペイロードに分割する。
【0064】
いくつかの実施形態において、メディアデータトンネルの送信機におけるエンコーダは、ADOPTER_IDのオーバーヘッドに加え、メディアデータトンネルのヘッダを構成するよう要求される。追加のヘッダビット又はヘッダバイトにより、可能なWRITE_BURSTペイロードのサイズをさらに低減する。複数のWRITE_BURSTを使用して伝達されたパケットをサポートすることは可能であるが、低データレートにより、メディアデータトンネルの実装におけるこの特徴の意義をなくしてしまう。
【0065】
メディアデータトンネルを通じたHID送信のため、4ビットのヘッダが各パケットの第1ニブルを多重定義する。前述の構造に示したとおり、4ビットヘッダを許容するため、マウスイベント及びキーボードイベントが変更される。
【0066】
いくつかの実施形態において、メディアデータトンネルを通じたHID送信に加え、次のパケット構造が使用されてもよい。一例として、_implementation_specificユニオンは、拡張ヘッダ及びデータからなるデータ、チェックサムバイトを有するデータ、拡張ヘッダ及びチェックサムを有するデータのために、WRITE_BURSTにおける残りのデータバイトすべての14データバイトを使用する。拡張ヘッダにより、メディアデータトンネル実装のさらなる柔軟性を許容する。
図6は、メディアデータトンネルの実装における拡張ヘッダのパケット構造の一実施形態を示している。同図は、拡張ヘッダの3例を示している。
【0067】
_exheader_with_cdbは、isHID mdt_event_header_tのように、準備の整ったメディアデータトンネルとしてWRITE_BURSTの目的を識別するフィールド備えた拡張ヘッダを示している。
【0068】
_exheader_with_cdb_chksmは、チェックサムの選択的使用を許容するものである。
【0069】
_exheader_with_cdb_chksm_lenは、4ビット長のフィールドを使用するWRITE_BURSTにおいてパッケージ化されたバイト数も伝達するために、前述のexheader_with_cdb_chksmを拡張したヘッダ拡張子を示している。
【0070】
いくつかの実施形態において、メディアデータトンネルは、送信前のデータをバッファリングし、消費前の受信データを保持するに際し、MHL仕様のスクラッチパッドレジスタに依存している。MHL仕様は、シンク、ソース、又はドングル内において、任意のスクラッチパッドを規定している。スクラッチパッドは、16個以上で1セットの1バイトレジスタである。これらのレジスタは、0×40のオフセットでアクセス可能である。本セットの最初の2バイトは、デバイスのADOPTER_IDを含むことが要求される。送信に先立ち、MHL送信機又はMHL受信機のユーザは、スクラッチパッドにデータを書き込む。データを受信する場合、MHL送信機又はMHL受信機は、後にユーザがデータを検索できるように、データをこの領域に宛てる。
【0071】
いくつかの実施形態において、スクラッチパッドのアクセスに関して、メディアデータトンネルは、データ転送を促進するために追加のガイダンスを提供するものの、MHL仕様に依存する。いくつかの実施形態において、MHL送信機又はMHL受信機が、送信されるスクラッチパッドのバイト数をユーザが特定することを要求する場合、メディアデータトンネルの送信機は、この数が変わるときに限り、送信されるスクラッチパッドのバイト数を示すようにしてもよい。メディアデータトンネルのセッションが7バイト構造を有する複数のWRITE_BURSTからなる場合、メディアデータトンネルの送信機は、遅延をさらに短縮するために、バースト長を一度のみ設定しなければならない。初期化の間、パケット長が分かる前に、メディアデータトンネルの送信機は、長さを、最小の場合のペイロード構造の合計バイト数に設定しなければならない。つまりmdt_burst_01_tに関して、この値は、後述のとおり、2バイトのADOPTER_IDと、0に切り詰められた4バイトのmdt_mouse_evemt_t又は4バイトのmdt_keyboard_event_tを許容するべく、6となるであろう。
【0072】
一方、いくつかの実施形態において、メディアデータトンネルの受信装置は送信機を特定するために、スクラッチパッドの最初の2バイトを読み取らない。メディアデータトンネルは、拡張ディスカバリの間、ハンドシェイクを要求し、各パケットにはisHID識別ビットがそのヘッダ内に含まれているため、ADOPTER_IDを使用した後続の特定は冗長であり、避けられてもよい。遅延をさらに短縮するために、メディアデータトンネルの受信装置は、受信したWRITE_BURSTデータのヘッダにアクセスするための、最小の場合のペイロード構造の合計バイト数を検索する。WRITE_BURSTのコンテンツが第1のアクセスの長さを超過する旨をヘッダが示している場合、メディアデータトンネルの受信装置は、個別の第2の試行においてスクラッチパッドから残りのバイトを読み取ってもよい。
【0073】
いくつかの実施形態において、HIDデータの中継に使用されるメディアデータトンネルの実装に関して、メディアデータトンネルの送信機は、メディアデータトンネルの受信装置に対してmdt_burst_01_tのインスタンスを中継する。拡張ディスカバリに引き続き、第1のHIDイベントに先立って、メディアデータトンネルの送信機は、送信されるスクラッチパッドのバイト数を6に設定するが、この構造はマウスイベントを中継する場合に最小のサイズとなる。この第1送信に先立ち、メディアデータトンネルの送信機は、スクラッチパッドの最初の2バイトをメディアデータトンネル受信装置用のADOPTER_IDに設定する。メディアデータトンネルの送信機は、送信対象のHIDイベントデータを一旦保持すると、送信されるスクラッチパッドのバイト数を更新してスクラッチパッドのバイト[2:15]にイベントデータを投入する必要性について検討する。
【0074】
受信側において、メディアデータトンネルの受信機は、そのスクラッチパッドのバイト0及び1を無視する。メディアデータトンネルの受信装置は、代わりに、mdt_burst_01_t内に少なくとも4バイトのマウスイベントを受信するという前提の下で、スクラッチパッドのバイト[2:5]を読み取ることにより、イベントを消費する。読み取ったisKeyboardビットフィールドが1にアサートされた場合、メディアデータトンネルの送信機は、7バイトのキーボードパケットの残りの3バイトを検索するために、スクラッチパッドのバイト[6:8]へアクセスすべく、2回目の読取を実施する。メディアデータトンネルの送信機もまた、isCoordinateWordLengthがmdt_mouse_event_t内に設定された場合、2回目の読取を実施する。isCoordinateWordLengthが設定されている2番目のケースについて、受信装置は、WRITE_BURSTの送信機が絶対座標マッピングにおいて可能なワード長の座標を送信しているため、スクラッチパッドデータの検索時に7バイト読取に切り替える。
【0075】
いくつかの実施形態において、エンコーダは、データの量及び位置の制御に加え、mdt_mouse_event_t及びmdt_keyboard_event_tのインスタンスを生成することにより、メディアデータトンネル送信のためのHIDコンテンツを最適化する。これらの構造は、HIDデバイスによって作成されたデータペイロードと合致するように、ヒューマンインタフェースデバイスのためのデバイスクラス規定(DCDHID)仕様バージョン1.11に準拠していてもよい。メディアデータトンネルのための最適化又は適合化として、mdt_mouse_event_tは、HID仕様ビットからメディアデータトンネルHIDヘッダまでのバイト0において、ビット4〜7を再割当する。また、バイト3は、既存の事実上の標準マウスドライバの実装に基づいてスクロールホイールを搬送するものとする。さらに、より低遅延の送信とのトレードオフとして高解像度ディスプレイ上の絶対座標追跡をサポートするために、isCoordinateWordLengthが設定されている場合、mdt_mouse_event_tはワード長座標を提供する。
【0076】
いくつかの実施形態において、キーボードイベントもまた最適化される。メディアデータトンネルのための最適化又は適合化として、mdt_keyboard_event_tは、RIGHT CTRLビット、RIGHT SHIFTビット、RIGHT ALTビット、&RIGHT GUIビットからメディアデータトンネルのHIDヘッダビットまでのDCDHIDにおいて規定されたキーボードHIDイベントのバイト0に、ビット4〜7を再割当する。これらのビットを落とすのに先立ち、メディアデータトンネルの送信機のメディアデータトンネルエンコーダがバイト0のビット4〜7及びビット0〜3の間にOR動作を実施する。このOR動作は、さもなければバイト0に記憶されていたLEFTキー及びRIGHTキーの双方のアサートを実施するために、LEFT CTRLビット、LEFT SHIFTビット、LEFT ALTビット、&LEFT GUIビットを使用するであろう。さらに、mdt_keyboard_eventは、DCDHID仕様によって規定されたブートプロトコル1パケットのOEM使用を対象としたバイト1を落とす。メディアデータトンネルの送信機内のエンコーダは、mdt_keyboard_eventに8バイト長を強要するためにこのバイトをそのままの位置に残す代わりに、7バイトのmdt_keyboard_eventを初期化するに際し、反転プレースホルダーを落とすため、バイト[2:7]を1バイト分シフトさせる。メディアデータトンネルの送信機内のエンコーダは、さらなる最適化として、ブートプロトコル1の共用に基づき、mdt_keyboard_eventの最上位バイトによって保持された一連の0のうち1つを除くすべての0を落としてもよい。
【0077】
キーボード入力レポートの多くについて、キーボード更新は、単一のキーにおける変化を反映させる。この変化は、ブートプロトコル1レポートのバイト2と、mdt_keyboard_eventのバイト1において獲得される。このような場合、キーボードは、0でこのイベントの残りのバイトを埋める。エンコーダは、遅延を短縮するために、末尾3つの0を落とし得る。キーボードのLED状態の管理は、メディアデータトンネルの受信機から行われることを期待するより、むしろメディアデータトンネルの送信機がこの動作を行う。ヒューマンインタフェースデバイス(HID)のためのデバイスクラス規定仕様1.11によると、キーボードのLED状態は、キーボードよりもむしろホストによって維持されなければならず、キーボードのホストにLEDステータスの管理を行わせると述べている。HIDのためのメディアデータトンネルの実装において、この機能をメディアデータトンネルの受信機をサポートするホスト内に実装することは可能であるが、LED制御をメディアデータトンネルの送信機に残すことにより、双方向WRITE_BURSTの必要性を低減する。MHL送信機内のメディアデータトンネル受信機は、メディアデータトンネルの送信機においてLED制御を行うことにより、いかなる場合もメディアデータトンネルの送信機である必要はなくなり、拡張ディスカバリの間、WRITE_BURST送信をサポートするだけでよい。このようなHIDデータに関し、
図7は、標準HID構造との比較において、 一実施形態に係るメディアデータトンネルエンコーダのペイロード構造を示している。
【0078】
ステージ3:データ中継。いくつかの実施形態において、MHL送信機及び送信機は、メディアデータトンネルの送信機からメディアデータトンネルの受信機へとデータを中継するために、MHL仕様のWRITE_BURSTコマンド及びSET_INTコマンドを実装するよう指示される。前述のスクラッチパッドに加え、メディアデータトンネルは、MHL送信機とMHL受信機との間でデータを中継するに際し、MHL仕様割込レジスタ、WRITE_BURSTコマンド、及びSET_INTコマンドに依存している。MHL仕様によると、MHL送信機及びMHL受信機は、2つの1バイト割込レジスタを提供する。割込レジスタは、オフセット0×20にある。これらのレジスタにより、ユーザは、SET_INTコマンドを使用した送信に対する割込を特定することができる。
【0079】
いくつかの実施形態において、ユーザとMHL送信機又はMHL受信機の状態機械との間のスクラッチパッドアクセスの衝突を避けるため、MHL仕様では、割込レジスタ及び調整プロセスを提供する。調整プロセスでは、SET_INTコマンドを使用したスクラッチパッドアクセスの管理方法を提供する。この仕様によると、ユーザは、ローカルスクラッチパッドにデータを書き込むのに先立ち、WRITE_BURST送信が未処理でないことを確かめるためにチェックを行う。WRITE_BURST送信機が、WRITE_BURSTコマンドを送信したのにも関わらず、SET_INTコマンドを用いてDSCR_CHG割込まで送信しなければならない場合、WRITE_BURST送信は未処理である。この仕様はまた、スクラッチパッドアクセスにWRITE_BURSTの受信が認められていた場合、ユーザはスクラッチパッドへの書込みを行わないことを示している。WRITE_BURST受信装置がSET_INTコマンドを使用してGRT_WRT割込を送信したものの、応答としてSET_INTコマンドを介してDSCR_CHG割込を未受信である場合、受信は未解決の状態である。またMHL仕様によると、ユーザは、WRITE_BURSTコマンドの送信準備中である場合、又は、先のWRITE_BURSTコマンドの受信を依然として処理中である場合、SET_INTコマンドを用いたGRT_WRTの送信を通じたWRITE_BURSTの受信を許容しない。
【0080】
いくつかの実施形態において、メディアデータトンネルは、必要な性能にHIDや、これよりやや要求の多いアプリエーションをサポートさせる一方で、MHL仕様に全面的に準拠して実装されるものである。メディアデータトンネルの送信機及び受信装置は、MHLに全面的に準拠して、MHL仕様に規定されるようにスクラッチパッド及び割込レジスタにアクセスする。同様に、メディアデータトンネルの送信装置及び受信機は、SET_INTコマンド及びWRITE_BURSTコマンドを使用し、MHL使用に準拠してデータの中継を行う。
【0081】
いくつかの実施形態において、メディアデータトンネルは、追加のメディアデータトンネル仕様ガイダンスを伴う、WRITE_BURSTコマンドのためのMHL仕様調整シーケンスに依存している。送信機は、WRITE_BURSTデータの中継が必要となるのに先立ち、REQ_WRT及びDSCR_CHGを有する単一のSET_INTを送信する。この事前要求により、送信機から2つの方法で負荷を低減する。第1に、WRITE_BURST送信機は、データ送信が必要な場合、REQ_WRTの送信時間の影響を受けない。REQ_WRTは、事前に送られている。第2に、REQ_WRT要求に対するGRT_WRT応答を待機する必要はない。このトランザクションはMHL仕様により、10ミリ秒程度となることもある。実際には、SET_INTの事前送信により、WRITE_BURSTコマンド内でメディアデータトンネル情報を中継するのに要する時間から、WRITE_BURST調整に消費する時間を分離する。またメディアデータトンネルの送信機は、これらの割込を独立的に、且つ、WRITE_BURSTトランザクションの異なるステージで送信する代わりに、単一のSET_INTを使用してDSCR_CHG割込及びREQ_WRT割込を中継してもよい。単一のSET_INTメッセージ内へのDSCR_CHG及びREQ_WRTのペア化により、WRITE_BURSTを使用したデータ中継に要する時間をさらに短縮してもよい。
【0082】
いくつかの実施形態において、メディアデータトンネルの受信装置は、REQ_WRT割込及びDSCR_CHG割込を組み合わせた事前送信を担うことにより、未受信の保留中WRITE_BURSTを途中停止する機会を得る。MHL仕様ではWRITE_BURSTの受信者にWRITE_BURSTを受信しない方法を提供しないものの、この仕様は、受信装置によるACK又はABORTの返信を命じることにより、SET_INTコマンドが随時処理されることを黙示的に保証している。メディアデータトンネルの受信装置は、この黙示的な保証を使用し、保留中のWRITE_BURSTを途中停止する必要がある場合には、SET_INTコマンドを使用してREQ_WRT割込を送信する。MHLへの準拠を維持するには、メディアデータトンネルの送信機は、ACKでこのSET_INTコマンドに応答し、受容される場合には、SET_INTコマンドを使用して別個にDSCR_CHG割込を送信する。メディアデータトンネルの送信機がDSCR_CHGの送信に失敗した場合、メディアデータトンネルの受信装置は、10ミリ秒毎にREQ_WRTを繰り返してもよく、WRITE_BURSTの受信装置がREQ_WRTに対するGRT_WRT応答を待機するために、タイムアウトがMHLによって特定される。WRITE_BURSTの受信装置がWRITE_BURSTの受信中、停止を中継する必要がある場合、受信装置は、ACTでWRITE_BURSTに応答し、続いてREQ_WRTを伝達するためにSET_INTを送信する。
【0083】
いくつかの実施形態において、メディアデータトンネルのHID実装に関して、WRITE_BURST及びSET_INTを使用したデータ転送は、メディアデータトンネル規定に準拠する。有力なシーケンスは、拡張ディスカバリを反映する。このディスカバリ内において、メディアデータトンネルの送信機は、MDTREQ01_FULLトークンを送信し、応答としてMDTACK_2000を受信する。この交換により、メディアデータトンネルの送信機及び受信機間で合意が成立する。またこの交換により、メディアデータトンネルの送信機は、メディアデータトンネルを通じたHIDサービスについてメディアデータトンネルの受信機を認定することができる。いくつかの実施形態において、拡張ディスカバリのためのコマンドは、表1に示すとおりである。
【表1】
【0084】
いくつかの実施形態において、メディアデータトンネルの送信機は、拡張ディスカバリに引き続き、スクラッチパッドにADPOTER_IDを設定する。例示のため、メディアデータトンネルの受信装置のADOPTER_IDを0×0000とする。次に、メディアデータトンネルの送信機は、マウスイベントのインスタンスとして最小の場合のmdt_burst_tパケット構造をサポートするために、バースト長を6に設定する。その後、HIDイベントは、関連の割込とSET_INTコマンドの送信とともに、別個のWRITE_BURSTコマンドとして送信されてもよい。各イベントが同一のパケット構造を有しているため、バースト長は再度設定されることはない。いくつかの実施形態において、MDT送信装置のHIDイベント送信は、以下の表2に示すとおりであってもよい。
【表2】
【0085】
ステージ4及び5:データ復号化及びデータ消費。いくつかの実施形態において、メディアデータトンネル送信は、メディアデータトンネルの受信機が、受信したデータを符号化して消費することにより、完結される。復号化の定義は、ステージ2に提供した。消費はアプリケーションに依存するものであり、以下の定義が最適であり、一例として述べる。
【0086】
図8は、一実施形態に係るメディアデータトンネルの層を示している。図示の積層は、HIDイベントの受信を目的とするMHL送信機の実現可能な実装を、Linux(登録商標)システム又はAndroidシステム内のUSBドライバ層と比較している。いくつかの実施形態において、
図8の要素は、モバイルデバイス内のMHL送信機のためのソフトウェア実装を示している。メディアデータトンネル実装のMDT HID層、HID/MDTドライバ層、Sil9234ドライバ層、及びSMBUS層又はI2Cドライバ層は、USBドライバ層、USB HID層、USB Core層、OHCI/EHCI層に直接位置している。WRITE_BURSTを担うMHL送信機要素は、HUBサポート及びデバイスディスカバリを担うUSB CORE層に比して非常に薄い。同様に、HID/MDTデコーダも極めて薄い層である。しかしながら、メディアデータトンネルのHIDドライバは、主な違いとしてエントリポイントを備えているUSBドライバに互換性がある。USBドライバは、USBパケットからペイロードを受信するためにUSBスタックに登録する一方、メディアデータトンネルのHIDドライバは、HID/MDTデコーダによって直接呼び出すことができ、ペイロードを受信する際、グローバルバッファに依存することができる。この差異にも関わらず、USBドライバ及びメディアデータトンネルのHIDドライバは双方ともに、イベントをユーザスペースまで中継するため、input_report型機能を使用してHID EVENT GENERATORを呼び出す。この実装におけるデコーダによって提供されるトランスレーションにより、標準HIDイベント消費者は、イベントがUSBデバイスから到来するかのようにイベントをメディアデータトンネルから受信することができるようになる。
【0087】
メディアデータトンネルは、MHLによって提供される値及び特徴を拡張する手段を提供する。
図9は、HDMI対応ビデオディスプレイ及びHDMI対応ソースデバイス間の接続を示している。同図において、HDMIシンク910(テレビジョン又はその他のビデオディスプレイ等)は、HDMIインタフェース接続950を介してビデオソース960に連結されている。
図9に示すとおり、HMIシンク910は、HDMI受信機912を備えており、これは処理要素920(CPU、マイクロプロセッサ、又はSoC等)に連結されてもよい。ビデオソース960は、処理要素965に連結されたHDMI送信機962を備えている。
【0088】
この状況において、データバスは、個別に動作する。A/V以外の周辺機機器のデータを中継するため、ビデオソース910は、データバス955を介してUSB要素915に連結されてもよい。ここでUSB要素は、パーソナルコンピュータ(USBホストとして振舞う)又はデータ周辺機器(USBデバイスとして振舞う)であってもよい。したがって、ソースデバイス960は、第1プロトコル(HDMI)のデータ送信と、第2プロトコル(USB)のデータ送信とを双方ともに備えており、このような送信では、2つのプロトコルの帯域幅の取扱いに、別個のデータチャンネル950及び955を利用する。
【0089】
HDMIとは異なり、MHL仕様は、複数のプロトコル間の物理コネクタを共有するアプリケーションを対象としているが、これらのプロトコルは、同時というよりむしろ、互いに対して排他的にサポートされる。
図10は、HDMI/MHLドングル及びMHL対応ビデオソースデバイス間の接続を示している。
図10及び11は、互いに排他的に送信されるHIDデータ及びMHLデータ間で、モバイルデバイスの5ピンコネクタを共有する実装を示している。
図10において、HDMI形式1005とMHL形式との間でデータを変換するMHLドングル1010が、MHL/USBインタフェース接続1050を介して、ビデオソース1060に連結されている。ビデオソース1060には、モバイルデバイスが含まれてもよい。
図10に示すとおり、MHLドングル1010は、CPU、マイクロプロセッサ、SoC等の処理要素1020を備えてもよい。ビデオソース1060は、処理要素1065に連結されたMHL送信機1062を備える。
【0090】
ビデオソースは、5ピンコネクタ1070と、MHL及びUSBのインタフェース1050のためのスイッチ1072を備える。スイッチは、MHLデータのためのコネクタからMHL受信機1062への経路と、USBデータのためのコネクタからUSBリンク1055を介してビデオソースの処理要素1065までの経路とを提供する。MHL USBは、USBデータの転送を行うため、個別のデータ周辺機器1015に接続されてもよい。したがって、この場合、ソースデバイス1060は、単一の5ピンコネクタを利用した第1プロトコル(MHL)のデータ送信と第2プロトコル(USB)のデータ送信との双方を含むが、このようなコネクタは、MHL及びUSBの双方がインタフェースの全帯域幅を利用するため、一度に転送できるのはこのようなプロトコルのうちの1つのみとなる。2つのプロトコル間の排他性は、MHL受信機がMHLドングル又はMHLシンクである場合、MHL仕様に適用する。
図11は、MHL対応ビデオシンクデバイス及びMHL対応ビデオソースデバイス間の接続を示している。同図において、MHL対応ビデオシンク1110は、MHL/USBインタフェース接続1150を介してビデオソース1160に連結される。ビデオソース1160には、モバイルデバイスが含まれてもよい。
図11に示すとおり、MHLシンク1110は、MHL送信機1112と、処理要素1120とを備えてもよい。ビデオソース1160は、処理要素1165に連結されたMHL送信機1162を備えてもよい。
【0091】
図11において、ビデオソース1160は、5ピンコネクタ1170と、MHL及びUSBのインタフェース1150のためのスイッチ1172とを備える。スイッチは、MHL受信機1162までのMHLデータの経路と、USBリンク1155を介してビデオソースの処理要素1165までのUSBデータの経路とを提供する。MHL USBは、USBデータの転送を行うため、データ周辺機器1115と接続されてもよい。
図10と同様に、この場合、ソースデバイス1160は、単一の5ピンコネクタを使用する第1プロトコル(MHL)のデータ送信及び第2プロトコル(USB)のデータ送信との双方を含むが、このようなコネクタは、MHLとUSBとの双方がインタフェースの全帯域幅を利用するため、一度に転送できるのはこのようなプロトコルのうちの1つのみとなる。
【0092】
メディアデータトンネルによってMHLを強化し、A/Vデータ送信及び周辺機器データ送信を同時に行うためのデータトンネリングを行わせる。
図12は、HDMI/MHLドングル及びMHL対応ビデオソースデバイス間の接続の一実施形態を示している。
図10及び
図11とは対照的に、
図12及び
図13は、2つのピア間でHIDデータ及びMHLデータを同時に交換するメディアデータトンネル対応システムを示している。
図12において、HDMI形式1205とMHL形式との間のデータ変換を行うMHLドングル1210が、MHLインタフェース接続1250を介してビデオソース1260に連結されている。ここでビデオソース1260には、モバイルデバイスが含まれてもよい。
図12に示すとおり、MHLドングル1210は、処理要素1220を備えてもよい。ビデオソース1260は、処理要素1265に連結されたMHL送信機1262を備える。
【0093】
いくつかの実施形態において、MHLドングル1210及びビデオソース1260間のインタフェース1250は、データトンネル1252を備え、このデータトンネルは上述のとおり、メディアデータトンネルであってもよい。いくつかの実施形態において、データトンネル1252は、第1プロトコル(MHL)の一般コマンドを介して、第2プロトコル(USB)のデータを送信するのに利用されてもよい。図示のとおり、MHLドングル1210の処理要素1220は、データバス1255を介して、USBデータ転送用のデータ周辺機器1207に連結されもよい。したがって、この実装においてビデオソース1260はUSBホスト要素として動作してもよく、いくつかの実施形態において、USBデータは、データトンネル1252を介して、このようなUSBホストと、データ周辺機器1207等のUSBデバイス要素との間で転送されることで、MHLデータとUSBデータとの同時転送を可能とする。
【0094】
MHL受信機がMHLドングル又はMHLシンクである場合、メディアデータトンネルの恩恵が同等に得られる。
図13は、MHL対応ビデオシンクデバイス及びMHL対応ビデオソースデバイス間の接続を示している。同図において、MHL対応ビデオシンクデバイス1310は、MHLインタフェース接続1350を介してビデオソース1360に連結されている。ビデオソース1360には、モバイルデバイスが含まれてもよい。
図13に示すとおり、MHLシンク1310は、処理要素1320を備えてもよい。ビデオソース1360は、処理要素1365に連結されたMHL送信機1362を備える。
【0095】
いくつかの実施形態において、MHLシンクデバイス1310及びビデオソース1360間のインタフェース1350は、データトンネル1352を備え、このデータトンネルは上述のとおり、メディアデータトンネルであってもよい。いくつかの実施形態において、データトンネル1352は、第1プロトコル(MHL)の一般コマンドを介して、第2プロトコル(USB)データの送信を行うために利用されてもよい。図示のとおり、MHLシンクデバイス1310の処理要素1320は、データバス1355を介してUSBデータ転送用のデータ周辺機器1307に連結されてもよい。したがって、いくつかの実施形態において、ビデオソース1360は、USBホスト要素として動作してもよく、USBデータは、データトンネル1352を介して、このようなUSBホストと、データ周辺機器1307等のUSBデバイス要素との間で転送されることにより、MHLデータとUSBデータとの同時転送を可能とする。
【0096】
メディアデータトンネルにより、MHL対応モバイルデバイスに、演算の使用例においてより高度にサービスを提供させる。メディアデータトンネル対応MHLがない場合、モバイルデバイスは、データ周辺機器のホストとなってもよいが、通常、A/Vデータの送信に別のポートを必要とする。
図14は、マウス等のデータ周辺機器を備えたモバイルデバイスのUSBリンクを示している。同図において、ビデオソース1410は、CPU(Central Processing Unit)、マイクロプロセッサ、又はSoC(System on Chip)として示された処理要素1415を備える。ここで処理要素は、データバス1455を介して、マウス1420等のデータ周辺機器に連結される。いくつかの実施形態において、データ周辺機器1420の動作には、データ周辺機器のサポート及びオーディオ/ビデオデータ転送のサポートを同時に可能にする一般コマンドの使用が含まれてもよい。
【0097】
メディアデータトンネルを備えたMHL対応モバイルデバイスは、単一のコネクタを介して、ディスプレイ及びデータ周辺機器に同時に接続されてもよい。
図15は、ヒューマンインタフェースデバイスを備えたモバイルデバイスのリンクの一実施形態を示している。
図15は、データ周辺機器(USBマウス及びUSBキーボード)の具体例と、データバス(USB)の具体例とを提供している。同図において、HDMI形式1505とMHL形式との間でデータを変換するMHLドングル1510が、MHLインタフェース接続1550を介して、ビデオソース1560に連結されており、ここでビデオソース1560には、モバイルデバイスが含まれてもよい。
図15に示すとおり、MHLドングルは、処理要素1520を備えてもよい。ビデオソース1560は、処理要素1565に連結されたMHL送信機1562を備える。
【0098】
いくつかの実施形態において、MHLドングル1510とビデオソース1560との間のインタフェース1550は、データトンネル1552を備え、このデータトンネルは上述のとおりメディアデータトンネルであってもよく、このデータトンネル1552は、第1プロトコル(MHL)の一般コマンドを介して、第2プロトコル(USB)のデータの送信を可能とする。図示のとおり、ドングル1510の処理要素1520は、1つ又は複数のUSB接続1557を介して、USB HIDデータ転送用の1つ又は複数のヒューマンインタフェースデバイスに連結されてもよい。同図において、ヒューマンインタフェースデバイスは、マウス1522とキーボード1524である。そこで本実装において、ビデオソース1560は、USBホスト要素として動作してもよく、MHLドングルはUSBデバイスとして動作してもよい。いくつかの実施形態において、ビューマンインタフェースデバイスによって生成されたUSBデータは、データトンネル1552を介してこのようなUSBホスト及びUSBデバイス要素間を転送されるため、MHLデータ及びUSB HIDデータの同時送信を可能にする。
【0099】
メディアデータトンネルは、モバイルデバイスのユーザに多大な利益をもたらすものの、この技術は低帯域幅のデータ周辺機器にのみサービスを提供してもよい。
図16は、ヒューマンインタフェースデバイスを備えたモバイルデバイスのリンクの一実施形態を示している。特定の実装において、高速周辺機器は、既存の帯域幅にかかる制約のため、モバイルデバイスに直接接続されることが要求されることもある。しかしながら、実施形態は、この構成に限定されるものでない。同図において、HDMI形式1605とMHL形式との間でデータを変換するMHLドングル1610は、MHLインタフェース接続1650を介してビデオソース1660に連結されており、ここでビデオソース1560にはモバイルデバイスが含まれてもよい。
図16に示すとおり、MHLドングル1610は、処理要素1620を備えてもよい。ビデオソース1660は、処理要素1565に連結されたMHL送信機1662を備える。いくつかの実施形態において、ビデオソース1660はさらに、高速周辺機器又はパーソナルコンピュータ1680へのリンクへのUSB接続1655を備えてもよい。
【0100】
いくつかの実施形態において、MHLドングル1610とビデオソース1660との間のインタフェース1650は、データトンネル1652を備え、このデータトンネルは上述のとおりメディアデータトンネルであってもよく、このデータトンネル1652は、第1プロトコル(MHL)の一般コマンドを介して、第2プロトコル(USB)データの送信を可能にする。図示のとおり、ドングル1610の処理要素1620は、1つ又は複数のUSB接続1657を介して、USB HIDデータ転送用の1つ又は複数のヒューマンインタフェースデバイスに連結されてもよい。同図において、ヒューマンインタフェースデバイスは、マウス1622及びキーボード1624である。そこで本実装において、ビデオソース1660は、USBホスト要素として動作してもよく、MHLドングルはUSBデバイスとして動作してもよい。いくつかの実施形態において、ヒューマンインタフェースデバイスによって生成されるUSBデータは、データトンネル1652を介して、このようなUSBホスト及びUSBデバイス要素間を転送されることにより、MHLデータ及びUSB HIDデータの同時転送を可能とする。いくつかの実施形態において、ビデオソース1660もまた、USB接続を介して、高速周辺機器又はパーソナルコンピュータ1680へ接続される。したがって、いくつかの実施形態において、MHLデータ及び低速USBデータは、第2インタフェースを介して転送される高速USBデータと同時に、第1インタフェースを介して転送されてもよい。
【0101】
図17は、特定データの送信用データトンネルを備えた一実施形態又はシステムを示している。この装置又はシステム(ここでは装置と総称する)は、 第2プロトコルのデータを第1プロトコルの一般コマンドを使用して転送させるデータトンネルを備えてもよい。一例において、第1プロトコルはMHLであり、第2プロトコルはUSBである。しかしながら、実施形態は、特定のプロトコルに何ら限定されるものでない。同図において、本説明と密接な関係のない、標準的且つ周知の構成要素は省略してある。いくつかの実施形態において、装置1700は、ビデオソースデバイス、ビデオシンクデバイス、又はデータプロトコルを変換するドングル、又は複数のプロトコルでデータを転送するその他のデバイスを備えてもよい。
【0102】
いくつかの実施形態において、装置1700は、相互接続又はクロスバー1705、又はデータ送信を行うその他の通信手段を備える。装置1700は、情報処理のために相互接続1705に連結された、1つ又は複数のプロセッサ等の処理手段又はその他の処理要素1710を備えてもよい。プロセッサ1710は、1つ又は複数の物理プロセッサと、1つ又は複数の論理プロセッサとを備えてもよい。相互接続1705は、図面を単純化するために単一の相互接続として描いたが、複数の異なる相互接続又はバスを表してもよく、このような相互接続への要素の接続は変化してもよい。
図17に示す相互接続1705は、いずれか1つ又は複数の個別の物理バス、ポイント間接続、若しくはこれらが適切なブリッジ、アダプタ、又はコントローラで連結されたものを示す抽象概念である。
【0103】
いくつかの実施形態において、装置1700はさらに、情報やプロセッサ1710によって実行される指示を記憶するメインメモリ1715として、ランダムアクセスメモリ(RAM)、若しくはその他の動的記憶デバイス又は要素を備える。RAMメモリには、メモリのコンテンツをリフレッシュすることが必要な動的ランダムアクセスメモリ(DRAM)と、コンテンツのリフレッシュは必要ないものの、コストが高い静的ランダムアクセスメモリ(SRAM)とが含まれる。いくつかの実施形態において、メインメモリには、装置1700のユーザにより、ネットワークブラジングアクティビティにおいて使用されるブラウザアプリケーションを含む、アプリケーションのアクティブストレージが含まれてもよい。DRAMメモリには、クロック信号から制御信号までを含む、同期型動的ランダムアクセスメモリ(SDRAM)と、拡張データアウト型動的ランダムアクセスメモリ(EDO DRAM)が含まれてもよい。いくつかの実施形態において、装置のメモリには、特定のレジスタ、又はその他の専用メモリが含まれてもよい。
【0104】
装置1700は、ハードディスクドライブ又はソリッドステートドライブを含むデータストレージ1720を備えてもよい。装置1700はまた、プロセッサ1710のための静的情報及び指示を記憶するため、Read Only Memory(ROM)1725又はその他の静的記憶デバイスを備えてもよい。装置1700は、例えばフラッシュメモリ等、特定の要素を記憶するための1つ又は複数の不揮発性メモリ要素1730を備えてもよい。
【0105】
装置1700はまた、相互接続1705を介して、出力ディスプレイ1740に連結されてもよい。いくつかの実施形態において、ディスプレイ1740には、ユーザに情報やコンテンツを表示するための液晶ディスプレイ(LCD)又はその他の表示技術が含まれてもよい。ディスプレイ1740が、少なくともインプットデバイスの一部として使用されるタッチクリーンを備えるような環境も考えられる。またディスプレイ1740がオーディオ情報を提供するスピーカー等のオーディオデバイスであるか、又は、オーディオデバイスを備えてもよい環境も考えられる。
【0106】
1つ又は複数の送信機又は受信機1745もまた、相互接続1705に連結されてもよい。いくつかの実施形態において、受信機又は送信機1745は、複数のプロトコルのデータをデータトンネル1770を有するデータリンクを介して他の装置又はシステム1775に送信するため、コネクタ1750に連結されてもよく、ここでデータリンクは例えば、
図1に示すケーブル150であってもよい。装置1700はさらに、電波信号を介してデータを受信するため、1つ又は複数の全方向性又は双方向性のアンテナ1755を備えてもよい。
【0107】
装置1700はまた、電源デバイス又は装置1760を備えてもよく、これは、電源供給、バッテリ、太陽電池、燃料電池、若しくは電力を提供又は生成するその他のシステム又はデバイスを備えてもよい。電源デバイス又はシステム1760によって提供される電力は、装置1700の要素の必要に応じて分配されてもよい。
【0108】
図18は、メディアデータトンネルを用いた通信プロセスの一実施形態を説明するためのタイミング図である。同図において、USB接続を介したHID1810及びUSBホスト1830間の通信、及びMHL接続1850を介した、クレードル要素との関連で説明したMHL受信機1840及びMHL送信機1860間の通信が提供される。図示のとおり、WRITE_BURSTコマンド1800を利用した通信、及び、メディアデータトンネル1805を備えたWRITE_BURSTコマンドを利用した通信が示されている。図示のとおり、メディアデータトンネルは、動作中のオーバーヘッドを低減してもよく、データ受信の遅延を短縮してもよい。
【0109】
以上、説明の目的で、本発明の完全な理解を図るため、数多くの特定の詳細を記した。しかしながら、本発明はこれら特定の詳細のいくつかを備えることがなくても実施されるということは、当業者にとって明らかであろう。他の例において、既知の構造及び装置がブロック図の形式で示されている。図示の構成要素間には中間構造があってもよい。本明細書において説明又は図示した構成要素は、図示又は説明しなかった追加的な入力又は出力を有してもよい。図示の要素又は構成要素はまた、異なる配置又は順序で配置されてもよく、それにはあらゆるフィールドの順序入替え又はフィールドサイズの変更が含まれる。
【0110】
本発明には、種々のプロセスが含まれてもよい。本発明のプロセスは、ハードウェア要素で実施されてもよく、指示によってプログラムされた汎用プロセッサ、特殊目的プロセッサ、又はロジック回路にこれらプロセスを実施させるのに用いられるコンピューター読取可能な指示によって具現化されてもよい。あるいは、これらのプロセスは、ハードウェア及びソフトウェアの組み合わせによって実施されてもよい。
【0111】
本発明の種々の実施形態は、部分的に、コンピュータプログラムの指示を記憶したコンピュータ読取可能な媒体を備えてもよく、コンピュータ(又はその他の電子機器)を、本発明の実施形態に係るプロセスを実施させるようプログラムするために用いられるコンピュータプログラム製品として提供されてもよい。コンピュータ読取可能な媒体として、フロッピー(登録商標)ディスケット、光ディスク、コンパクトディスクリードオンリーメモリ(CD−ROM)、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能で、且つ、プログラム可能なリードオンリーメモリ(EPROM)、電気的に削除可能で、且つ、プログラム可能なリードオンリーメモリ(EEPROM)、磁気カード又は光カード、フラッシュメモリ、又は電子指示を記憶するのに好適なその他の種別の媒体/コンピュータ読取可能な媒体が挙げられるが、これに限定されるものでない。さらに本発明はまた、コンピュータプログラム製品としてダウンロードされてもよく、このプログラムは遠隔地のコンピュータからリクエストを送ったコンピュータへと転送されてもよい。
【0112】
多くの方法を最も基本的な形式で説明したが、本発明の基本的な範囲から逸脱することなく、これらの方法に対してプロセスを加えたり削除したりしてもよく、また上述のメッセージのいずれかに対して情報を加えたり差し引くこともできる。さらに多くの変更及び適応が可能であることは、当業者にとって明らかであろう。本発明を限定する目的でなく、それを説明する目的で特定の実施形態を説明した。
【0113】
要素「A」が要素「B」と連結されていると表現した場合、要素Aは要素Bに直接連結されていてもよく、また例えば要素Cを介して間接的に連結されていてもよい。明細書又は請求書中で構成要素、特徴、構造、処理、又は特性Aが、構成要素、特徴、構造、処理、又は特徴Bを「促す」と述べた場合、「A」は少なくとも「B」の部分的要因であり、「B」の促進を補助する少なくとも1つの他の構成要素、特徴、構造、処理、又は特性も存在してもよい。明細書中で構成要素、特徴、構造、処理、又は特性が含まれ「てもよい」「ることがある」又は「うる」と記した場合、これら特定の構成要素、特徴、構造、処理、又は特性が含まれなくてもよい。明細書又は請求書中で数に言及しない場合、説明の要素が1つのみ存在することを意味するものでない。
【0114】
実施形態は、本発明を実装したもの、すなわち例である。明細書中の「実施形態」「一実施形態」「いくつかの実施形態」あるいは「他の実施形態」といった表現は、これらの実施形態に関連して説明した特定の特徴、構造、又は特性が少なくともいくつかの実施形態に含まれるものであり、必ずしもすべての実施形態に含まれる必要がないことを意味する。「実施形態」「一実施形態」又は「いくつかの実施形態」の種々の外観が、必ずしもすべて同一の実施形態について言及しているものである必要はない。本発明の一例としての実施形態に係る以上の説明において、種々の特徴は、開示を簡潔にし、種々の発明的側面のうちの1つ又は複数の側面の理解を助けるために、単一の実施形態、図面、又は説明にまとめられている場合がある。
【0115】
いくつかの実施形態において、装置は、データ送信又はデータ受信を行う送信機又は受信機と、装置のデータを取扱う処理要素と、データ転送を行い、データチャンネルとの接続及びコントロールチャンネルとの接続を行うコネクタとを備える。前記処理要素は、前記コントロールチャンネルにおける第1プロトコルのデータの転送を行うものであり、前記コントロールチャンネルを介した前記データの転送には、第2プロトコルのデータの転送を行うための、第1プロトコルの1つ又は複数の一般コマンドの使用が含まれ、前記第2プロトコルのデータは、前記第2プロトコルのデータが前記第1プロトコルを通じて送信されるのに先立って最適化され、前記データチャンネルにおけるデータ転送及び前記コントロールチャンネルにおけるデータ転送は、少なくとも部分的に同時に行われる。
【0116】
いくつかの実施形態において、前記装置の前記データチャンネルは、1つ又は複数のデータ送信線を備える。いくつかの実施形態において、 前記コントロールチャンネルは、コントロールバスを備える。
【0117】
いくつかの実施形態において、前記コントロールチャンネルを介したデータ送信には、前記第1プロトコルの他のコマンドも含まれ、前記1つ又は複数の一般コマンドは、前記第1プロトコルの他のコマンドと混合されてもよい。いくつかの実施形態において、前記第2プロトコルの使用は、パケット構造及びサービス性能に関する機能のディスカバリを含む拡張ディスカバリを通じて権限が与えられる。
【0118】
いくつかの実施形態において、前記第2プロトコルの1つ又は複数のメッセージは、第1プロトコルの単一のデータバーストにおいて送信可能である。いくつかの実施形態において、各データバーストは、割込メッセージを通じて調整され、複数の割込メッセージが統合されて単一のメッセージとして送出される。
【0119】
いくつかの実施形態において、前記コントロールチャンネルを通じた前記第1プロトコルの識別フィールドは、2バイト以下のサイズを有する。
【0120】
いくつかの実施形態において、前記第2プロトコルのデータは、少なくとも部分的に、HIDからの入力からなる。
【0121】
いくつかの実施形態において、前記第2プロトコルの使用は、割込コマンドの送信を含む拡張中断プロセスを通じて終了される。いくつかの実施形態において、前記割込は、MHLプロトコルに準拠したSET−INTコマンドである。
【0122】
いくつかの実施形態において、前記装置は、ビデオデータソース又はビデオデータシンクである。いくつかの実施形態において、前記第1プロトコルは、MHLである。いくつかの実施形態において、前記第2プロトコルは、USBである。
【0123】
いくつかの実施形態において、前記装置は、前記第1プロトコルのデータ及び第3プロトコルのデータ間の変換を行うモジュールを備える。いくつかの実施形態において、前記第1プロトコルは、MHLであり、前記第3プロトコルは、HDMIである。いくつかの実施形態において、前記第2プロトコルは、USBである。
【0124】
いくつかの実施形態において、方法は、第1の装置において、第1プロトコルの第1データセットを第2装置から転送するか、又は、第2装置へ転送するステップであって、コネクタを介して、前記第1プロトコルのためのデータチャンネルを通じてデータの送信又は受信を行うことを含むステップと、第1の装置において、第2プロトコルの第2データセット第2装置から転送するか、又は第2装置へ転送するステップであって、前記第2プロトコルのデータを前記コントロールチャンネルを通じて送信するのに先立ち、前記第2プロトコルのデータを最適化するステップとを備える。前記第2データセットを転送するステップには、コネクタを介して、前記第1プロトコルのためのコントロールチャンネルを通じてデータの送信又は受信を行うことを含む。前記第1データセット及び前記第2データセットは、少なくとも部分的に、同時転送され、前記第2データセットは、前記第1プロトコルの1つ又は複数の一般コマンドを使用して転送される。
【0125】
いくつかの実施形態において、前記方法の前記1つ又は複数の一般コマンドには、一般書込コマンドが含まれる。いくつかの実施形態において、前記データチャンネルは、1つ又は複数のデータ送信線を備え、前記第1プロトコルのデータは、前記1つ又は複数のデータ送信線を介して送信される。いくつかの実施形態において、前記コントロールチャンネルは、コントロールバスを備える。
【0126】
いくつかの実施形態において、前記方法は、拡張ディスカバリを通じて前記第2プロトコルの使用権限を与えるステップをさらに備え、前記拡張ディスカバリには、パケット構造及びサービス性能の機能に関する情報の交換を含む。
【0127】
いくつかの実施形態において、前記方法は、第1プロトコルのデータ送信の単一のデータバーストにおいて、前記第2プロトコルの1つ又は複数のメッセージを送信するステップをさらに備える。
【0128】
いくつかの実施形態において、前記方法は、割込メッセージを通じて各データバーストを調整するステップと、複数の割込メッセージを統合し、前記統合した割込メッセージを単一のメッセージとして送出するステップとをさらに備える。
【0129】
いくつかの実施形態において、前記コントロールチャンネルを通じた前記第1プロトコルの識別フィールドは、2バイト以下のサイズを有する。
【0130】
いくつかの実施形態において、前記方法は、前記コントロールチャンネルを介して前記第1プロトコルの他のコマンドを転送するステップをさらに備え、前記1つ又は複数の一般コマンドは、前記第1プロトコルの他のコマンドと混合されてもよい。いくつかの実施形態において、前記第2データセットは、少なくとも部分的に、HIDからの入力からなる。
【0131】
いくつかの実施形態において、前記方法は、割込コマンドの送信を含む拡張中断プロセスを通じて、前記第2プロトコルの使用を終了するステップをさらに備える。
【0132】
いくつかの実施形態において、前記方法において、前記第1プロトコルは、MHLである。いくつかの実施形態において、前記第2プロトコルは、USBである。いくつかの実施形態において、前記1つ又は複数の一般コマンドには、MHL WRITE_BURSTが含まれる。いくつかの実施形態において、前記1つ又は複数の一般コマンドは、複数の個別の一般イベントを伝達する単一のSET_INTメッセージによって有効化される。
【0133】
いくつかの実施形態において、プロセッサにより実行されると、前記プロセッサに動作を実施させる指示シーケンスのデータを記憶したコンピュータ読取可能な非一時的記憶媒体であって、前記動作は、第1の装置において、第1プロトコルの第1データセットを第2装置から転送するか、又は、前記第2装置へ転送するステップであって、コネクタを介して、前記第1プロトコルのためのデータチャンネルを通じてデータの送信又は受信を行うことを含むステップと、第1の装置において、第2プロトコルの第2データセットを前記第2装置から転送するか、又は前記第2装置へ転送するステップとを備える。前記第2データセットの転送には、コネクタを介して、前記第1プロトコルのためのコントロールチャンネルを通じてデータの送信又は受信を行うステップと、前記第2プロトコルのデータを前記第1プロトコルのための前記コントロールチャンネルを通じて送信するのに先立ち、前記第2プロトコルのデータを最適化するステップとを含む。前記第1データセット及び前記第2データセットは、少なくとも部分的に、同時転送され、前記第2データセットは、前記第1プロトコルの1つ又は複数の一般コマンドを使用して転送される。
【0134】
いくつかの実施形態において、前記1つ又は複数の一般コマンドには、一般書込コマンドが含まれる。いくつかの実施形態において、前記データチャンネルは、1つ又は複数のデータ送信線を備え、前記第1プロトコルのデータは、前記1つ又は複数のデータ送信線を介して送信される。いくつかの実施形態において、前記コントロールチャンネルは、コントロールバスを備え、前記第2プロトコルのデータは、前記コントロールバスを介して転送される。
【0135】
いくつかの実施形態において、前記媒体は、拡張ディスカバリを通じて前記第2プロトコルの使用権限を与える指示をさらに備え、前記拡張ディスカバリには、パケット構造及びサービス性能の機能に関する情報の交換を含む。
【0136】
いくつかの実施形態において、前記媒体は、第1プロトコルのデータ送信の単一のデータバーストにおいて、前記第2プロトコルの1つ又は複数のメッセージを送信する指示を備える。いくつかの実施形態において、前記媒体は、割込みメッセージを通じて各データバーストを調整し、複数の割込メッセージを統合し、前記統合した割込メッセージを単一のメッセージとして送出する指示をさらに備える。
【0137】
いくつかの実施形態において、前記コントロールチャンネルを通じた前記第1プロトコルの識別フィールドは、2バイト以下のサイズを有する。
【0138】
いくつかの実施形態において、前記媒体は、前記コントロールチャンネルを介して前記第1プロトコルの他のコマンドを転送する指示をさらに備え、前記1つ又は複数の一般コマンドは、前記第1プロトコルの他のコマンドと混合されてもよい。いくつかの実施形態において、前記第2データセットは、少なくとも部分的に、HIDからの入力からなる。
【0139】
いくつかの実施形態において、前記媒体は、割込コマンドの送信を含む拡張中断プロセスを通じて、前記第2プロトコルの使用を終了する指示をさらに備える。いくつかの実施形態において、前記第1プロトコルは、MHLである。いくつかの実施形態において、前記第2プロトコルは、USBである。いくつかの実施形態において、前記1つ又は複数の一般コマンドには、MHL WRITE_BURSTが含まれる。