JP2010537588A - プラットホームに依存しない通信プロトコル - Google Patents

プラットホームに依存しない通信プロトコル Download PDF

Info

Publication number
JP2010537588A
JP2010537588A JP2010522102A JP2010522102A JP2010537588A JP 2010537588 A JP2010537588 A JP 2010537588A JP 2010522102 A JP2010522102 A JP 2010522102A JP 2010522102 A JP2010522102 A JP 2010522102A JP 2010537588 A JP2010537588 A JP 2010537588A
Authority
JP
Japan
Prior art keywords
bytes
sequence
byte
providing
report
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010522102A
Other languages
English (en)
Inventor
ザ サード,ポール ウィリアム カルナン
ヴォセラー,マイケル
ウィラー,ロレイン
Original Assignee
ジーモート,エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ジーモート,エルエルシー filed Critical ジーモート,エルエルシー
Publication of JP2010537588A publication Critical patent/JP2010537588A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Security & Cryptography (AREA)
  • Position Input By Displaying (AREA)
  • Information Transfer Systems (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Communication Control (AREA)

Abstract

特に、通信プロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間で、プラットホームに依存しない双方向通信を実現するための技術を開示する。通信を実現することは、モバイルコントローラデバイスからホストデバイスにバイトの列を供給することを含む。バイトの列は、モバイルコントローラデバイスの1つ以上のデータパケットを記述する。ホストデバイスがネイティブデバイスドライバを有することが検出された場合、ネイティブデバイスドライバを用いて、供給されたバイトの列を解析する。一方、ホストデバイスがネイティブデバイスドライバを含んでいないことが検出された場合、供給されたバイトの列を解析するためのデバイスドライバを提供する。
【選択図】 図1

Description

関連出願への相互参照
本出願は、2007年8月24日に出願された、米国特許出願第11/844,999号の優先権を主張し、この出願の内容は、引用によって本願に援用される。
技術分野
本発明は、通信プロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間でプラットホームに依存しない双方向通信を実現する技術に関する。
携帯電話機等のモバイル機器は、単に音声通話機能を提供するだけの通信機器ではなくなっている。モバイル機器は、テキストメッセージング、アドレス帳、カレンダ、他の生産性アプリケーション、マッピングアプリケーション、ゲームアプリケーション及び他の多くのアプリケーションを含む様々なアプリケーションを実行するために用いることができる演算プラットホームとして構成することができる。
ブルートゥース2.0規格では、マウス、キーボード、ワイヤレスヘッドセット、及び自動車用のハンドフリーキット等の限られた数のデバイスが携帯電話機と通信できるように設計される様々な「プロファイル」を指定できる。これらのプロファイルは、通常、携帯電話機のファームウェア内に実装され、例えば、ヒューマンインタフェースデバイス(Human Interface Device:「HID」)プロファイルをサポートする携帯電話機には、ファームウェア内にHIDプロトコルが埋め込まれている。更に、ブルートゥース2.0プロファイルを利用するためには、携帯電話機と、携帯電話機と通信することが望まれる出力デバイス、入力デバイス又は入出力デバイスとの両方が、ファームウェア又はソフトウェアによってサポートされた同じプロファイルを有する必要がある。
本明細書が開示するモバイルコントローラデバイス及びホストデバイスとの間で、プラットホームに依存しない通信を実現するヒューマンインタフェース及び入力システムと技術の実装は、以下の特徴の様々な組合せを含むことができる。
一側面においては、通信プロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間にプラットホームに依存しない双方向通信を提供するステップは、モバイルコントローラデバイスからホストデバイスにバイトの列を供給するステップを含む。提供されるバイトの列は、モバイルコントローラデバイスの1つ以上のデータパケットを記述する。ホストデバイスがネイティブデバイスドライバ(native device driver)を有することが検出された場合、ネイティブデバイスドライバを用いて、供給されたバイトの列を解析する。一方、ホストデバイスがネイティブデバイスドライバを含んでいないことが検出された場合、供給されたバイトの列を解析するためのデバイスドライバを提供する。
実装は、オプションとして、以下の特徴の1つ以上を含んでいてもよい。デバイスドライバを提供するステップは、供給されたバイトの列に基づいて、カスタマイズされたヒューマンインタフェースデバイスドライバ(customized human interface device driver)を提供するステップを含んでいてもよい。また、プラットホームに依存しない双方向通信を提供するために、Java(登録商標)プラットホームと互換性がある双方向通信を提供してもよい。バイトの列を供給するために、バイトの列からの固定数のバイトを用いて、ネイティブヒューマンインタフェースデバイスデスクリプタ(native human interface device descriptor)がサポートしていない1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成してもよい。更に、1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成するステップは、ジョイスティック、リニアポテンショメータ、トラックボール、エンコーダ、フォースセンシティブレジスタ、歪みゲージ、一連のデジタルスイッチ、加速度計、ジャイロ、慣性センサ及び電磁センサからなるグループから選択される少なくとも1つをサポートする1つ以上のデバイス固有のデスクリプタを生成するステップを含んでいてもよい。また、プラットホームに依存しない双方向通信を提供するステップは、Java(登録商標)プラットホームドライバがアクセスできる少なくとも2つの通信チャンネルを提供するステップを含んでいてもよい。バイトの列を供給するステップは、モバイルコントローラデバイスのためにカスタマイズされたバイトの可変シーケンスを供給するステップを含んでいてもよい。バイトの可変シーケンスを供給するステップは、バイトのシーケンス内の各バイトを、モバイルコントローラデバイス上の1つ以上の入力要素にマッピングするステップと、入力要素の状態に基づいて、各バイトに割り当てられている値を変更するステップとを有していてもよい。
他の側面として、本発明に開示する技術は、コンピュータが読取可能な媒体上で実現され、データ処理装置に動作を実行させるコンピュータプログラム製品として実現することもできる。例えば、コンピュータプログラム製品は、通信プロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間でプラットホームに依存しない双方向通信を提供するように設計される。プラットホームに依存しない双方向通信の提供は、モバイルコントローラデバイスの1つ以上のデータパケットを記述するバイトの列を、モバイルコントローラデバイスからホストデバイスに供給することを含む。ホストデバイスがネイティブデバイスドライバを有することが検出された場合、コンピュータプログラム製品は、ネイティブデバイスドライバを用いて、供給されたバイトの列を解析するように設計されている。一方、ホストデバイスがネイティブデバイスドライバを含んでいないことが検出された場合、コンピュータプログラム製品は、供給されたバイトの列を解析するためのデバイスドライバを提供するように設計されている。
実装は、オプションとして、以下の特徴の1つ以上を含むことができる。コンピュータプログラム製品は、供給されたバイトの列に基づいて、カスタマイズされたヒューマンインタフェースデバイスドライバを提供することを更に含む動作をデータ処理装置に実行させるように設計してもよい。コンピュータプログラム製品は、少なくとも、Java(登録商標)プラットホームと互換性がある双方向通信を提供することによって、プラットホームに依存しない双方向通信を提供することを更に含む動作をデータ処理装置に実行させるように設計してもよい。コンピュータプログラム製品は、少なくとも、バイトの列からの固定数のバイトを用いて、ネイティブヒューマンインタフェースデバイスデスクリプタがサポートしていない1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成することによって、バイトの列を供給することを更に含む動作をデータ処理装置に実行させるように設計してもよい。また、コンピュータプログラム製品は、少なくとも、ジョイスティック、リニアポテンショメータ、トラックボール、エンコーダ、フォースセンシティブレジスタ、歪みゲージ、一連のデジタルスイッチ、加速度計、ジャイロ、慣性センサ及び電磁センサからなるグループから選択される少なくとも1つをサポートする1つ以上のデバイス固有のデスクリプタを生成することによって、1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成することを更に含む動作をデータ処理装置に実行させるように設計してもよい。コンピュータプログラム製品は、Java(登録商標)プラットホームドライバがアクセスできる少なくとも2つの通信チャンネルを有するプラットホームに依存しない双方向通信を提供することを更に含む動作をデータ処理装置に実行させるように設計してもよい。コンピュータプログラム製品は、モバイルコントローラデバイスのためにカスタマイズされたバイトの可変シーケンスを有するバイトの列を供給することを更に含む動作をデータ処理装置に実行させる。更に、コンピュータプログラム製品は、バイトの可変シーケンスを供給することを更に含む動作をデータ処理装置に実行させるように設計してもよく、バイトの可変シーケンスを供給することは、バイトのシーケンス内の各バイトを、モバイルコントローラデバイス上の1つ以上の入力要素にマッピングすることと、入力要素の状態に基づいて、各バイトに割り当てられている値を変更することとを含んでいてもよい。
更に他の側面として、本発明に開示する技術は、モバイルコントローラデバイスをホストデバイスに接続するように設計されたベースバンドプロトコルを含む通信スタックを動作させるように設計された通信メカニズムを含むモバイルコントローラデバイスとして実現することもできる。また、モバイルコントローラデバイスは、ベースバンドプロトコル上で動作し、1つ以上のメッセージをホストデバイスに送信するように構成された双方向シリアル通信プロトコルを含む。送信される各メッセージは、バイトのシーケンスを含む。また、コントローラデバイスデバイスは、モバイルコントローラデバイスが使用可能な様々な入力メカニズムが提供する入力信号を監視し、1つ以上のメッセージを生成するように構成されたコントローラファームウェアを備える。双方向シリアル通信プロトコルは、ベースバンドプロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間でプラットホームに依存しない双方向通信を実現する。
実装は、オプションとして、以下の特徴の1つ以上を含むことができる。プラットホームに依存しない双方向通信を実現する双方向シリアル通信プロトコルは、Java(登録商標)プラットホームと互換性がある双方向通信を含んでいてもよい。コントローラファームウェアは、バイトのシーケンスからの固定数のバイトを用いて、ネイティブヒューマンインタフェースデバイスデスクリプタがサポートしていない1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成するように設計してもよい。また、コントローラファームウェアは、ジョイスティック、リニアポテンショメータ、トラックボール、エンコーダ、フォースセンシティブレジスタ、歪みゲージ、一連のデジタルスイッチ、加速度計、ジャイロ、慣性センサ及び電磁センサからなるグループから選択される少なくとも1つをサポートする1つ以上のデバイス固有のデスクリプタを生成するように設計してもよい。コントローラファームウェアは、それぞれがモバイルコントローラデバイスのためにカスタマイズされたバイトの可変シーケンスを含む1つ以上のメッセージを生成するように設計してもよい。コントローラファームウェアは、バイトのシーケンス内の各バイトを、モバイルコントローラデバイスが使用可能な様々な入力メカニズムの1つ以上の入力要素にマッピングし、マッピングされた1つ以上の入力要素の状態に基づいて、各バイトに割り当てられている値を変更するように設計してもよい。
ここに説明する通信プロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間でプラットホームに依存しない双方向通信を実現するための技術は、潜在的に、以下の利点の1つ以上を提供できる。本明細書に開示するシステム及び技術は、モバイルコントローラデバイス及びホストデバイスが、センサデータ、状態情報、及びシリアル化可能且つ小さいフットプリントで送信可能なあらゆる種類のデータを交換するための効率的で、軽量のメカニズムを提供できる。このメカニズムは、高速で効率的であり、ファームウェア及び/又はソフトウェアにおけるフットプリントが小さく、関連するデータの送信及び受信の処理におけるタイミングオーバヘッドを最小化することができる。このメカニズムは、ゲームにおいて一般的に用いられている様々なセンサをサポートするように明示的に定義することができ、これらには、ポテンショメータ又は多自由度アナログジョイスティックからのアナログ信号、例えば、光学マウス又はよりハイエンドのロボットデバイス内に配設されているデジタルエンコーダ、加えられる圧力の変化に比例する信号を提供するフォースセンシティブレジスタ、加速度計及びジャイロスコープ信号、トラックボールからの信号、例えば、歪みゲージベースのナビゲーションスティック等の力検出デバイスからの信号、光センサからの比例する又はデジタル信号、電磁センサからの信号等が含まれる。このメカニズムは、モバイルコントローラデバイス及びホストデバイスが、シリアル化可能な他のタイプのデータ、例えば、ゲーム状態情報、自動車診断情報、GPSフィックス(GPS fix)等を交換できるように拡張できる通信プロトコルとして実装することもできる。
本明細書に開示するシステム及び技術は、様々なトランスポートプロトコルに亘って動作でき、例えば、ブルートゥース論理リンク制御及び適応化プロトコル(Bluetooth logical link control and adaptation protocol:L2CAP)、ブルートゥースシリアルポートプロファイル(Bluetooth serial port profile:SPP)、若しくは他の有線又は無線トランスポートプロトコルを介して動作できるアプリケーションプログラムインタフェース(API)として実装することができる。例えば、このAPIは、USB、ファイヤワイヤ、IrDA、若しくは他の有線及び無線通信プロトコルを介する通信をサポートするように設計してもよい。
更に、通信プロトコルは、HIDベースのメカニズム、モバイルコントローラデバイスからホストデバイスに送信される、予め定義されたシンタクスを有する固定数のバイトを含む固定長シリアルメカニズム、並びにモバイルコントローラデバイスからホストデバイス、及びホストデバイスからモバイルコントローラデバイスにクエリ及びデータを送信することができる双方向通信システムプロトコルメカニズムを含む様々なメカニズム内で実装することができる。
HIDベースのメカニズムは、ホストデバイス上にHIDプロファイルのサブセットの軽量Java(登録商標)実装を提供でき、オプションとして、モバイルコントローラデバイスに適する一般的なセンサをサポートするカスタムHIDデスクリプタを含む。固定長シリアルメカニズムは、モバイルコントローラデバイスに適するセンサについて概ね汎用性がある固定数のバイトを有するバイト構造を反映できる。双方向シリアル通信プロトコルメカニズムは、モバイルコントローラデバイスに適する一般的なセンサをサポートするように実装することができるカスタムバイトシーケンス構造を含むことができる。
HIDベースのメカニズムを実装するか、シリアル通信プロトコルを実装するかにかかわらず、本明細書に開示するシステム及び技術は、Java(登録商標)等の、ホストデバイス上で実行されるプログラミングプラットホーム上で実装されたAPI内に組み込んでもよい。このようなAPIは、ホストデバイス上で実行されるアプリケーションに組み込んでもよい。
本明細書に開示する本発明の主題は、方法、システム、又はCD−ROM、DVD−ROM、半導体メモリ又はハードディスク等の情報担体内にアクセス可能に具現化されたコンピュータプログラム製品として実現することができる。このようなコンピュータプログラム製品は、本明細書に開示する1つ以上の動作をデータ処理装置に実行させてもよい。
更に、本明細書に開示する本発明の主題は、プロセッサと、プロセッサに接続されたメモリとを含むシステムとして実現してもよい。メモリ内には、本明細書に開示する1つ以上の方法の動作をプロセッサに実行させる1つ以上のプログラムをエンコードしてもよい。更に、本明細書に開示する本発明の主題は、様々なデータ処理マシンを用いて実現してもよい。
1つ以上の実装の詳細は、添付の図面及び以下の説明に開示されている。他の特徴及び利点は、以下の説明、図面及び特許請求の範囲から、自明となる。
1a及び1bは、コントローラデバイスとホストデバイスとの間の通信を実現するシステムを示すブロック図である。 HIDベースのメカニズムのHIDジョイスティックデバイスのために設計された例示的なレポートデスクリプタ300を示す図である。 HIDベースのメカニズムの様々なセンサのための通信を実現するために設計された例示的なカスタムレポートデスクリプタを示す図である。 HIDベースのメカニズムの様々なセンサのための通信を実現するために設計された例示的なカスタムレポートデスクリプタを示す図である。 HIDベースのメカニズムの様々なセンサのための通信を実現するために設計された例示的なカスタムレポートデスクリプタを示す図である。 HIDクラスデバイスとHIDに対応するホストデバイスとの間の通信を実現するシステムを説明するHIDベースのメカニズムの具体例を示すブロック図である。 固定長バイトシーケンスを用いた通信を実現する固定長シリアル法の実装のためのブルートゥーススタックを示すブロック図である。 終端バイトを有する4バイトシーケンスの例示的なバイトシーケンスを示す図である。 終端バイトを有する5バイトシーケンスの例示的なバイトシーケンスを示す図である。 ブルートゥースシリアルポートプロファイル(SPP)上に双方向シリアル通信プロトコルベースのメカニズムを実装する例示的な通信スタックを示す図である。 双方向シリアル通信プロトコルメカニズムのための例示的なバイトシーケンス又はレポートフォーマットを示す図である。 SET_IDLEの例示的なメッセージフォーマットを示す図である。 アイドルレートを示す例示的なバイトシーケンスを示す図である。 バージョンレポートの例示的なバイトシーケンスを示す図である。 コンフィグレーションデータ入力レポートの例示的なバイトシーケンスを示す図である。 ボタンメタデータレポートの例示的なバイトシーケンスを示す図である。 イネーブル/ディスエーブルレポートタイプの例示的なバイトシーケンスを示す図である。 ボタンレポートのための例示的なバイトシーケンスを示す図である。 8ビットアナログ2軸ジョイスティックレポートのための例示的なバイトシーケンスを示す図である。 例示的な16ビットアナログ2軸ジョイスティックレポートを示す図である。 例示的な32ビットアナログ2軸ジョイスティックレポートを示す図である。 例示的な8ビットアナログ3軸加速度計レポートを示す図である。 例示的な16ビットアナログ3軸加速度計レポートを示す図である。 例示的な32ビットアナログ3軸加速度計レポートを示す図である。 例示的な8ビットアナログパドルレポートを示す図である。 例示的な16ビットアナログパドルレポートを示す図である。 例示的な32ビットアナログパドルレポートを示す図である。 例示的な16ビットバッテリレベルレポートを示す図である。 例示的な8ビットトラックボールレポートを示す図である。 例示的な16ビットトラックボールレポートを示す図である。 例示的な32ビットトラックボールレポートを示す図である。 例示的な8ビットスクロールホイールレポートを示す図である。 例示的な16ビットスクロールホイールレポートを示す図である。 例示的な32ビットスクロールホイールレポートを示す図である。 生の及び調整された8ビットアナログ2軸ジョイスティックレポートのための例示的なバイトシーケンスを示す図である。 ランループ検査レポートのための例示的なバイトシーケンスを示す図である。 32ビットデバイスタイムスタンプ(ミリ秒)レポートのための例示的なバイトシーケンスを示す図である。 モバイルコントローラデバイスとホストデバイスとの間で通信を実現するためのプロセスを示すフローチャートである。 ナビゲーションシステム上のマッピングアプリケーションを制御するJava(登録商標)対応リモートコントローラデバイスを実装する例示的なシステムを示す図である。 GPS対応デバイス間のデータ交換を提供する例示的なシステムを示す図である。 携帯電話、自動車及びPCの間のデータ通信を実現するための例示的なシステムを示す図である。 複数の健康器具及びフィットネス機器の間のデータ通信を実現する例示的なシステムを示す図である。 Java(登録商標)対応ジョイスティックコントローラと携帯電話との間のデータ通信を実現する例示的なシステムを示す図である。 多人数参加型モバイルゲームのシナリオにおけるHID通信を実現するための例示的なシステムを示す図である。
様々な図面において、同様の参照符号は、同様の要素を示している。
概要
図1a及び図1bは、コントローラデバイス110とホストデバイス120との間で、プラットホームに依存しない(すなわち、ブルートゥース、USB、ファイヤワイヤ、IrDA等の通信プロトコルの如何にかかわらず)通信を実現するシステム100を示すブロック図である。コントローラデバイス110は、通信プロトコル130を用いて、ホストデバイス120と通信する。
ホストデバイス120には、1つ以上のプロセッサが埋め込まれたデバイス、例えば、携帯電話機、携帯情報端末(personal digital assistant:PDA)、スマートフォン、パーソナルナビゲーションシステム、デジタルビデオレコーダ(digital video recorder:DVR)デバイス、情報(例えば、GPSナビゲーション、無線通信)及び/又は娯楽(例えば、デジタルビデオディスクドライブ)を提供するアップグレード技術が搭載された自動車、歩数計、血糖計、血圧計、体重計等が含まれる。入力コントローラデバイス110は、ホストデバイス120と通信し、ホストデバイス120を制御するための直感的なインタフェース要素を提供するように設計されている。直感的なインタフェース要素を提供することによって、コントローラデバイス110は、例えば、ゲーム及びマッピングアプリケーション等の複雑なアプリケーションの制御及び実行を容易にすることができる。コントローラデバイス110は、様々な直感的な制御インタフェース要素を提供するモバイルアクセサリデバイスを含む。このようなコントローラデバイス110の具体例については、同時係属中の米国特許出願、発明の名称、「Human Interface Input Acceleration System」(米国特許公表番号第20070080934号)及び米国特許出願、発明の名称、「Human Interface Input Acceleration System」(米国特許公表番号第20070080931号)に開示されている。これらの同時係属中の米国特許出願(米国特許公表番号第20070080934号及び第20070080931号)は、引用によって本願に援用される。
通信プロトコルスタック130は、コントローラデバイス110とホストデバイス120との間で、通信信号の双方向変換を可能にする。通信プロトコルスタック130は、トランスポートメカニズム132上で動作するプラットホームに依存しないトランスポートプロトコル134を含む。トランスポートメカニズム132は、例えば、ブルートゥース(Bluetooth)、ユニバーサルシリアルバス(Universal Serial Bus:USB)、ファイヤワイヤ(FireWire)、IrDA等の有線又は無線のトランスポート/通信プロトコルを含む。プラットホームに依存しないトランスポートプロトコル134は、様々なトランスポートメカニズムの1つ以上を介して動作するように設計されている。プラットホームに依存しないトランスポートプロトコル134は、トランスポートメカニズム132の上位に常駐するアプリケーションプログラミングインタフェース(application programming interface:API)を用いて実装することできる。APIは、サービスの要求をサポートするためにコンピュータシステム又はプログラムライブラリが提供するソースコードインタフェースである。
ここに開示するプラットホームに依存しないトランスポートプロトコル134は、モバイルコントローラデバイスとホストデバイスとの間又は複数のモバイルコントローラデバイスと複数のホストデバイスとの間の通信を可能にする様々なメカニズムの下で実装することができる。例えば、プラットホームに依存しないトランスポートプロトコルは、HIDベースのメカニズム、固定長シリアルメカニズム又は双方向シリアル通信プロトコルメカニズムの下で実装することができる。
HIDベースのメカニズム
プラットホームに依存しないトランスポートプロトコル134は、モバイルコントローラデバイスとホストデバイスとの間の通信を可能にするために、HIDベースのメカニズムの下で実装することができる。HIDのベースの通信プロトコルは、標準のHIDデバイスのための既存のHID規格に基づいて構築される(例えば、ヒューマンインタフェースデバイス(HID)のためのユニバーサルシリアルバス(USB)デバイスクラス定義、バージョン1.11(www.usb.org)及びユニバーサルシリアルバス(USB)HID使用テーブル、バージョン1.12(www.usb.org)を参照。これらの全体は引用によって本願に援用される)。HIDプロファイルの軽量Java(登録商標) 2 Micro Edition(Java(登録商標) 2 Micro Edition:J2ME)の実装例は、例えば、ホストデバイスとして機能する携帯電話機及び他のモバイル機器等のモバイル機器上で動作するように実装することができる。1つ以上のモバイルコントローラデバイス上のファームウェアもまた、HIDプロファイルの軽量の実装例を含む。1つ以上のモバイルコントローラデバイスでの使用に適する汎用及び専用のセンサをサポートするために、カスタムデスクリプタを実装してもよい。
図2は、HIDジョイスティックデバイスのために設計された例示的なレポートデスクリプタ(report descriptor)200を示している。例示的なレポートデスクリプタ200は、(1)前/後及び右/左に傾けられる2軸ジョイスティック(バイト1、2)、(2)ベース上のアナログスロットルコントロール(バイト0)、(3)スティック上の4位置ハットスイッチ(バイト3のビット0〜3)、(4)スティック上の2つのボタン(バイト3のビット4〜5又は6〜7)及び(5)ベース上の2つのボタン(バイト3のビット4〜5又は6〜7)を含む。このレポートデスクリプタ(descriptor report)は、各ジョイスティックの読取値について、8ビットの分解能を提供する。
また、レポートのバイトレイアウトに加えて、レポートデスクリプタは、様々なフィールドに幾つかのセマンティクスを有することができる。例えば、ジョイスティックのためのX軸フィールドは、ジョイスティックのX軸に沿った位置を表す−127〜+127の範囲の8ビット符号値として定義することができる。幾つかの具体例では、X軸及びY軸の読取値が、第1のデスクリプタにおける8ビット分解能に代えて、16ビット分解能を提供する第2のデスクリプタを提供できる。
図3、図4及び図5は、様々なセンサとの通信を可能にするように設計された例示的なカスタムレポートデスクリプタを示している。固有のIDを有する固定された数のバイトが選択され、これらの選択されたバイトのコンテンツは、使用されるセンサのタイプに応じて、様々に適用される。この結果、例えば、(1)自由度(degrees of freedom:DOF)が2又は3の低分解能ジョイスティック(図3)、(2)リニアポテンショメータ、(3)DOFが2のトラックボール(エンコーダ等)(図4)、(3)エンコーダ、(4)フォースセンシティブレジスタ(force sensitive resistor)、(5)歪みゲージ、(6)光センサ、(7)一連のデジタルスイッチ、(8)加速度計(図5)、(9)ジャイロ、(10)他の慣性センサ及び(11)電磁センサを含む様々なセンサをサポートする軽量ではあるが柔軟なプロトコルが得られる。
図6は、HIDクラスデバイス610とHIDホストデバイス620との間の通信を可能にするシステム600を示すブロック図である。HIDクラスデバイス(例えば、コントローラデバイス610)は、ホストデバイス620上の制御(デフォルト)パイプ630又は割込パイプ640を用いて、HIDクラスドライバ(図示せず)と通信する。制御パイプ630は、(1)制御及びクラスデータの要求を受信及び応答し、(2)ホストデバイス620からHIDクラスドライバによってポーリングされる場合、コントローラデバイス610からホストデバイス620にデータを送信し、(3)コントローラデバイス620がホストデバイス620からデータを受信できるようにすることを含む動作を実行するために使用される。割込パイプ640は、(1)コントローラデバイス610から非同期(要求されていない)データを受信し、及び(2)ホストデバイス620からコントローラデバイス610に低遅延データを送信することを含む動作を実行するために使用される。
これらの2つのパイプは、HIDプロトコルにおいて、チャンネル0x11及び0x13上の2つのL2CAP接続として実装される。ゲーム及びアプリケーション開発プラットホームとしてのJava(登録商標)(例えば、J2ME)実装をサポートするために、HIDプロファイルのサブセットである軽量Java(登録商標)実装が提供されている。したがって、HIDPコンプライアンスのための2つのL2CAPチャンネル0x11、0x13に加えて、Java(登録商標)ドライバ(例えば、J2ME実装)からのアクセスを提供するために、2つの更なるL2CAPチャンネル0x1011、0x1013が実装される。
他の具体例では、シリアルポートプロファイル(Serial Port Profile:SPP)を介する動作のために、カスタムのシリアルトランスポートプロトコルを実装する。ここでは、HIDプロトコルの場合のようにL2CAP実装を用いることに代えて、他のトランスポートメカニズムを採用して、ブルートゥーススタック上にトランスポートチャンネルを設ける。SPPでは、様々なデバイスが無線周波数通信(Radio Frequency Communication:RFCOMM)を用いて、エミュレートされたシリアルケーブル接続をセットアップすることができる(シリアルポートプロファイル仕様、バージョン1.1(www.bluetooth.org)参照。この内容の全体は、引用によって本願に援用される)。RFCOMMは、L2CAPプロトコルを介して、RS−232シリアルポートの9つの回路のエミュレーションを提供する単純なトランスポートプロトコルである(RFCOMM仕様、バージョン1.1(www.bluetooth.org)参照。この内容の全体は、引用によって本願に援用される)。この実装は、L2CAPを直接使用し、SPPによって与えられる追加的な機能を使用しないHIDプロトコルとは異なる。
固定長シリアルプロトコルベースのメカニズム
他の実施の形態として、モバイルコントローラデバイスがホストデバイスに情報を渡すために、固定長シリアルシーケンスを採用してもよい。このバイトシーケンスは、トランスポートメカニズムとしてブルートゥースSPP(シリアルポートプロファイル)を用いて、モバイルコントローラデバイスからホストデバイスに送信することができる。
図7は、ブルートゥースシリアルポートプロファイル、すなわちSPP714、725上に実装された固定長シリアルシーケンス通信プロトコル713、724を示すブロック図である。プロトコルスタック700は、固定長シリアル通信プロトコルを用いて通信を実現する。プロトコルスタック700は、プロトコルのスタック内のレイヤとして実装することができる様々なプロトコルモジュールを含む。コントローラデバイス710の側では、トランスポートプロトコルスタックのレイヤは、ベースバンドレイヤ717、論理リンク制御及び適応化プロトコル(L2CAP)レイヤ716、RFCOMMレイヤ715、SPPレイヤ714、固定バイトシリアルシーケンスプロトコルレイヤ713及びコントローラファームウェアレイヤ712を含む。ホストデバイス720の側では、プロトコルスタックのレイヤは、ベースバンドレイヤ728、L2CAPレイヤ727、RFCOMMレイヤ726、SPPレイヤ725、固定長シリアルシーケンスプロトコルレイヤ724及びアプリケーションレイヤ722を含む。
コントローラファームウェア712は、コントローラデバイス710が使用可能な様々な入力メカニズム(例えば、ボタン、ジョイスティック、トラックボール)が提供するアナログ及びデジタル信号を監視する。信号イベントが発生した場合(例えば、ボタンが押下された場合、ジョイスティックが動かされた場合)、コントローラファームウェアは、固定長プロトコル713を用いて、メッセージを生成し、このメッセージをホストデバイス720に送信する。
固定長バイトシーケンスは、所定のバイト数を有する。このシーケンス内の各バイトは、特定の目的を有する。一実施の形態においては、シーケンスの最後のバイトは、「終端バイト(termination byte)」として指定してもよく、常に固定値、例えば、0xFFを表すようにしてもよく、データは、この値を下回るように制限されている。変形例として、バイトストリーム内のバイト数をシーケンスの最初のバイトに符号化してもよい。
ホストデバイス720上で実行され、ホストアプリケーションにリンクされているコントローラドライバ723は、固定長シリアルシーケンスプロトコルメッセージを受け取り、このメッセージを、1つ以上のアプリケーションレベルイベントに翻訳する。そして、これらのイベントは、ホストアプリケーションに供給される。
一実装例では、固定長シリアルシーケンスプロトコル713は、コントローラデバイス710からホストデバイス720への単方向730である。この場合、コントローラデバイス710は、ホストデバイス720にメッセージを送信することができるが、ホストデバイスは、コントローラデバイス730にメッセージを返信することができない。他の実装例では、固定長プロトコル713は、双方向(図示せず)であってもよく、この場合、ホストデバイスは、同様に所定の固定されたバイトシーケンスを用いて、コマンドをモバイルコントローラデバイスに送信することができる。
固定長シリアルシーケンスプロトコル713は、(1)ポテンショメータ又は多自由度アナログジョイスティックからのアナログ信号、(2)例えば、光学式マウス又はよりハイエンドのロボットデバイス内にあるデジタルエンコーダ、(3)加えられる圧力の変化に応じて、これに比例する信号を提供するフォースセンシティブレジスタ、(4)加速度計及びジャイロスコープ信号、(5)トラックボールからの信号、(6)例えば、歪みゲージベースのナビゲーションスティック等の力検出デバイスからの信号、(7)光センサからの比例する又はデジタル信号、(8)電磁センサからの信号等を含む、ゲームにおいて一般的に使用されている様々なセンサをサポートするためのカスタムの固定バイトバイトシーケンスを実装することができる例示的なプロトコルである。
図8は、終端バイト(第4バイト又は終端バイトとしての0xFF)を有する4バイトシーケンスの例示的なバイトシーケンスを示す図である。この実装例では、第1バイトは、押下されたボタンの状態を表すためのビットマップとして使用される。コントローラデバイス710は、ボタン押下が検出されたときにイベントを生成し、ボタン解放が検出されたときに異なるイベントを生成する。また、固定長シリアルシーケンスプロトコルによって、コントローラデバイス710は、ボタンが押下された後、ボタンが解放されるまでの一定期間、「繰返し」イベントを生成することができる。これらの繰返しイベントは、周期的に(例えば、50ms秒毎に)送信される。例えば、単一のボタン押下のイベントのシーケンスは、以下のように表すことができる。
(1)押下イベント
(2)繰返しイベント
(3)繰返しイベント(50ms毎に送り続けられる)
(4)解放イベント
一実施の形態においては、繰返しイベントの周波数は、コントローラのファームウェアにおいて固定されている。この周波数は、クライアントアプリケーションによって構成設定することはできない。他の実施の形態においては、繰返しイベントの周波数は、ホストが、ホストデバイスからモバイルコントローラデバイスへの固定バイトシリアルシーケンスを用いて指定できる。
第2バイト及び第3バイトは、それぞれ(1〜254の範囲に正規化/スケーリングされた(truncated))8ビットの符号のない数として表現される、ジョイスティック、トラックボール、加速度計又は他の入力要素のX値及びY値を表す。最後のバイトは、0xFFによって表される終端バイトである。データ値は、255(16進法の0xFF)に到達しないように制限されているので、0xFFのフレーミングバイト値によって、データストリームの終了を確実に示すことができる。
図9は、終端バイト(第5バイト又は終端バイトとしての0xFF又は255)を含む5バイトシーケンスの例示的なバイトシーケンスを示す図である。この実装では、第1バイト及び第2のバイトは、ボタン及びキーパッドイベントを表している。固定長シリアルシーケンスプロトコルの第3バイト及び第4バイトは、X値及びY値を含む。これらの値のそれぞれは、符号なしの8ビット値として表され、データ値が必ず1〜254の範囲に収まるように正規化/スケーリング(truncated)されている。第5バイトは、旧型バージョンのファームウェア及びドライバが5バイトパケットの最後を検出することを補助するために使用されるフレーミングバイトである。フレーミングバイトには、実際のデータが取ることができる範囲外の固定値(例えば、0xFF又は255)が割り当てられている。データ値は、255(16進法の0xFF)に到達しないように制限されているので、0xFFのフレーミングバイト値によって、データストリームの終了を確実に示すことができる。
双方向シリアル通信プロトコルベースのメカニズム
プラットホームに依存しない通信プロトコル134は、ブルートゥースシリアルポートプロファイル(SPP)等のトランスポートメカニズム上で動作する双方向シリアル通信プロトコルとして実装することもできる。バイトシーケンスは、長さが可変であってもよく、設計が柔軟で拡張可能であってもよい。ブルートゥーススペシャルインタレストグループ(Bluetooth Special Interest Group:SIG)は、ヒューマンインタフェースデバイスプロファイル(Human Interface Device Profile:HIDP)を指定しているが、ブルートゥースのJava(登録商標) 2 Micro Edition(J2ME)実装(JSR−82)は、必ずしもHIDPをサポートする必要はない。また、J2MEは、必ずしもHIDPが要求する2つの同時のL2CAP接続をサポートする必要はない。したがって、本明細書が開示する双方向シリアル通信プロトコルは、HIDPを模倣し、J2MEをサポートしながら、SPP接続(又はL2CAP等の他の接続)を介して、HIDPに似たデータを提供するように設計される。
図10は、ブルートゥースシリアルポートプロファイル、すなわちSPP上に双方向シリアル通信プロトコルベースのメカニズムを実装する例示的な通信スタック1000を示している。通信スタック1000は、HIDプロファイルで使用されているものと同様にモデル化されたメカニズムを用いて、コントローラデバイス1010とホストデバイス1020との間に双方向通信を提供する。コントローラデバイス1010の側は、ベースバンドレイヤ1012(例えば、ブルートゥース)、L2CAPレイヤ1014、RFCOMMレイヤ1015、SPPレイヤ1016、双方向シリアル通信プロトコルレイヤ1017及びコントローラファームウェア1018を含む。ホストデバイス1020の側は、ベースバンドレイヤ1022、L2CAPレイヤ1024、RFCOMMレイヤ1025、SPPレイヤ1026、双方向シリアル通信プロトコルレイヤ1027及びホストアプリケーションレイヤ1029を含む。
双方向シリアル通信プロトコル700、1000の幾つかの実装例では、固定された数の予め定義されたバイトシーケンス又はレポートフォーマットを実装し、これにより、ホストデバイス1020及びモバイルコントローラデバイス1010は、センサ情報、状態情報及び他のタイプのデータを含む様々なデータを交換することができる。バイトシーケンスの構造は、完全に拡張可能に設計され、これにより、初期的には、一組の標準のセンサタイプをサポートでき、後に、センサの開発に応じて、より多くのセンサをサポートできる。
図11は、双方向シリアル通信プロトコル700、1000のための例示的なバイトシーケンスを示している。バイトシーケンスの所定の構造は、コントローラデバイス1010及びホストデバイス1020の両方のドライバによって解析される。バイトシーケンスは、特にデータの可変長シリアル化をサポートするように設計されている。バイトシーケンス長は、第1バイト(バイト0)として符号化される。バイト0に符号化される情報は、データパケットのバイトシーケンス長を示す。レポートタイプ識別子(例えば、HIDPのものと同様である。)は、バイト1において符号化される。バイト1に符号化される特定のレポートタイプに関連するパラメータは、nをバイトシーケンス長として、バイト2からバイトnにシリアル化される。バイト0は、これに続くデータパケットのバイトシーケンス長を示すので、バイト1から始まるバイト(例えば、バイト1からバイトn)は、バイト長及び処理される関連データを反映する。パラメータのタイプ及びセマンティクス、パラメータが並べられる順序、及びパラメータが占めるバイト数は、レポートタイプ毎に異なっていてもよい。パラメータが2つ以上のバイトを占める場合(例えば、タイムスタンプを完全に表すには、4バイトが必要なことがある。)バイトは、好適なネットワーク規則において、最上位バイト(most significant byte:MSB)が最初になるようにシリアル化してもよい(これは、ビッグエンディアン規則とも呼ばれる)。他の実装例として、最下位バイト(least significant byte:LSB)を最初にしてもよい(これは、リトルエンディアン規則とも呼ばれる)。
フットプリントが合理的にコンパクトで、バイナリフォーマットが255バイトエンベロープ内に適合するようにシリアル化可能であれば、如何なるデータも、本明細書に開示する双方向シリアル通信プロトコルを用いて、容易に転送することができる。より大きなデータのパケットは、それぞれが255バイトエンベロープ内に適合するように設計された、複数のより小さい連続するパケットにシリアル化及び離散化(discretized)してもよい。より大きいデータパケットを離散的な複数のより小さいパケットに分割することによって、シリアル化可能なあらゆるデータストリームを、双方向シリアル通信プロトコルを用いて送信することができる。
モバイルコントローラデバイス710、1010の側とホストデバイス720、1020の側との両方に、これらのレポートを解釈できる一対のパーサ/シリアライザの組を設けることができる。最良の互換性のために、双方向シリアル通信プロトコルのためのパーサ及びシリアライザは、両方の側でバージョンが揃えられる。但し、モバイルコントローラデバイス側710、1010及びホストデバイス側720、1020の何れの側の如何なるバージョンのパーサも、第1バイトに符号化されるバイト長に基づいて、新たなシリアル通信を受信し、第2バイトを調べて、パーサがレポートタイプ識別子を認識するかを判定できるように設計することができる。レポートタイプ識別子が認識されるか否かによって、パーサは、レポートタイプ識別子に応じて動作するか、未知のレポートタイプ識別子の検出に基づいて、受信したシリアルレポートを無視するかを選択できる。
以下の段落では、モバイルコントローラデバイスがホストデバイスとデータを送受するための双方向シリアル通信プロトコルの例示的な実装例について詳細に説明する。これらの例は、説明を目的として示しているにすぎず、バイトシーケンスの他の特定の実装例も可能である。更に、サポートされるセンサのタイプ及び転送されるデータのタイプも例示的なものすぎない。実装例は、本明細書に開示する双方向通信プロトコルメカニズムの下で実現されたプラットホームに依存しない通信プロトコル134の下で、他のセンサタイプ及びデータタイプのサポートを可能にする。
ホストデバイス1020上のSPPデータストリームは、途切れのないデータのストリームとして現れる。本明細書に開示する双方向シリアル通信プロトコルは、パケット指向(packet-oriented)であり、各メッセージがパケット内にカプセル化される。ホストデバイスのSPP実装では、パケットの概念が見えなくなるので、「エンベロープスキーム(envelope scheme)」を用いる。具体的には、各メッセージの前にバイトカウントを設ける。例えば、ホストデバイス1020がコントローラデバイス1010に値が12のSET_IDLEメッセージを送信しようとする場合、SET_IDLEメッセージは、図12に示すようにフォーマットされる(SET_IDLEメッセージの詳細については後述する)。ホストデバイス1020は、データストリームに0x02、0x90、0x0Cのバイトを書き込む。
第1バイト(0x02)は、次のメッセージ内のバイト数(すなわち、バイトカウント)を表す。次の2つのバイト0x90(SET_IDLEメッセージヘッダ)及び0x0C(SET_IDLE値)は、SET_IDLEメッセージとして解釈される。
幾つかの実装例では、前方互換性(forward compatibility)を維持するために、認識されないDATAパケット(すなわち、入力レポート及び出力レポート)は無視される。
全てのSET_IDLE又はDATA_OUTPUTメッセージの確認応答として、1バイトのハンドシェイク(Handshake)メッセージが送信される。有効なハンドシェイク値のリストは、以下を含む。
Figure 2010537588
デフォルトでは、コントローラデバイス1010は、ボタン状態が変化すると(すなわち、ボタンが押下又は解放されると)、入力(例えば、ボタン)イベントを送信する。コントローラデバイス1010は、一定期間のボタン繰返しイベントの送信をサポートしている。この一定期間は、SET_IDLEメッセージ内で、コントローラのアイドルレート(すなわち、繰返しレート)を設定することによって特定される。
ゼロ(0)のアイドルレートは、ボタン繰返しイベントが発生していないと解釈される。これは、新たな接続が確立された時点でのコントローラデバイス110、710、1010のデフォルトの振る舞いである。ホストデバイス120、720、1020は、SET_IDLEメッセージをコントローラデバイス110、710、1010に送信して、新たな繰返しレートを指定することができる。繰返しレートは、SET_IDLEメッセージ内で送信された値に、所定の長さの時間(例えば、4ms)を乗算した値として設定される。例えば、12の値を有するSET_IDLEメッセージを送信すると、コントローラデバイス110、710、1010は、48ms毎にボタン繰返しイベントを送り出す。
SET_IDLEメッセージは、様々な適用可能な値を用いて応答される。例えば、有効なSET_IDLEメッセージへの応答は、0x00のHANDSHAKE_SUCCESSFUL値である。一方、SET_IDLEメッセージの長さが2バイト長でないことが検出された場合、応答として0x04のHANDSHAKE_ERR_INVALID_PARAMETER値が送信される。また指定されたアイドルレートが接続のレイテンシ(50msと想定される。)より短いことが検出された場合、コントローラデバイス110、710、1010は、アイドルレートを、レイテンシに等しくなるように設定する。図13は、アイドルレートを示す例示的なデータシーケンスを示している。
コントローラデバイス110、710、1010との間に接続が確立すると、様々な標準レポートがホストデバイス120、720、1020に送信される。送信される標準レポートは、(1)バージョンレポート(Version Report)、(2)ボタンカウント(Button Count)を示すコンフィグレーションデータレポート(Configuration Data Report)、(3)ゼロ以上のボタンメタデータレポート(Button Metadata Report)、(4)ゼロ以上のコンフィグレーションデータレポート(Configuration Data Report)、及び(5)0xFFのタイプの、0x00000000の値を有するコンフィグレーションデータレポート(Configuration Data Report)を含む。更に、他のカスタムレポートを送信してもよい。
標準レポートは、API内で使用することができる入力及び出力を表す。例えば、「入力」は、コントローラデバイス110、710、1010からホストデバイス120、720、1020に供給されるデータであるとみなすことができる。「出力」は、ホストデバイス120、720、1020からコントローラデバイス110、710、1010に供給されるデータであるとみなすことができる。全ての複数のバイト値は、ネットワークバイト順(ビッグエンディアン)で送信される。全てのストリングは、UTF−8(8ビットUCS/ユニコード変換フォーマット)で送信される。これは、標準の規則であるが、複数のバイト値及びストリングは、他のバイト順及び他のストリングフォーマットで送信してもよい。
図14は、バージョンレポートの例示的なバイトシーケンスを示している。バージョンレポートには、0x03の入力レポートIDが割り当てられている。接続が確立された後、バージョンレポートは、最初に送信されるパケットである。ファームウェアメジャーバージョン(Firmware Major Version)(バイト2〜3)は、双方向シリアル通信プロトコルのバージョンを特定する。ファームウェアマイナーバージョン(Firmware Minor Version)(バイト4〜5)は、ファームウェアに特徴が追加される都度、インクリメントされる。ファームウェアリビジョン(Firmware Revision)(バイト6〜7)は、新たなリリースが実行される(例えば、バグが修正される)都度、インクリメントされる。プラットホームID(Platform ID)(バイト8〜9)は、表1に示すように、現在のプラットホーム(すなわち、ハードウェア又はプロセッサ)を特定する。
Figure 2010537588
モデルID(Model ID)は、コントローラモデルのレイアウトを特定する。
図15は、コンフィグレーションデータレポート入力レポート(Configuration Data Report Input Report)の例示的なバイトシーケンスを示す図である。コンフィグレーションデータレポートには、入力レポートID(例えば、0x05)が割り当てられている。接続及びバージョンレポートの送信の後に、コントローラデバイス110、710、1010は、ホストデバイス120、720、1020に1つ以上のコンフィグレーションデータレポートを送信する。タイプフィールド(バイト2)は、コンフィグレーションデータレポート内で送信されるコントローラコンフィグレーションデータを特定する。有効なタイプ値のリストを表2に示す。
Figure 2010537588
値(Value)フィールド(バイト3)は、タイプ(Type)フィールド(バイト2)が指定するタイプに対応する値を含む。コントローラデバイス110、710、1010に関連するデータのみがホストデバイス120、720、1020に送信される。換言すれば、コントローラデバイス110、710、1010に加速度計がない場合、加速度計カウントは送信されない。
サンプル毎のビット数bは、2より大きく32以下である。関連するレポート内で許容される値域は、(−2b−1)から(2b−1−1)までの範囲として表される。例えば、一実施の形態では、8ビットジョイスティックの値域は、−128〜127(動作範囲の中心を0として、符号付きの8ビット値で表される。)であってもよい。12ビットジョイスティックでは、値域は、−2048〜2047である。幾つかの具体例は、8ビットジョイスティックの値域は、0〜255(動作範囲の中心を128として、符号なしの8ビット値で表される)であってもよい。12ビットジョイスティックの値域は、0〜4095であってもよく、これは、動作範囲の中心を2048として、符号なしの12ビット数で表される。
様々なアナログ制御(例えば、ジョイスティック、加速度計、パドル)のためのサンプル毎のビット数に基づき、コントローラデバイス110、710、1010は、そのサンプル毎のビット数を含ませることができる最小のサイズの入力レポートを出す。換言すれば、サンプル毎に10ビットを有する2軸ジョイスティックは、16ビット2軸ジョイスティックレポートで送られる。
図16は、ボタンメタデータレポートのための例示的なバイトシーケンスを示している。ボタンメタデータレポートには、0x04の入力レポートIDが割り当てられている。コンフィグレーションデータレポートを送信した後、コントローラデバイス110、710、1010は、コントローラ上の各ボタンについて、最大1つのボタンメタデータ(Button Metadata)レポートを送信する。ボタンメタデータレポートは、ボタンレポートで報告されるボタンIDと同じボタンID(バイト2)を含む。ボタン記述フィールドは、人間が読むことができるボタンの説明(例えば、「トリガ(fire)」又は「上」)である。推奨ゲームアクション(recommended game action)フィールド(バイト−3)は、各ボタンについての推奨されるセマンティクスを提供する。推奨ゲームアクションフィールドの値のリスト表3に示す。この範囲外の推奨ゲームアクション値は、未定義として取り扱われる。
Figure 2010537588
図17は、イネーブル/ディスエーブルレポートタイプ(Enable/Disable Report Type)の例示的なバイトシーケンスを示している。イネーブル/ディスエーブルレポートには、0x06の出力レポートID値が割り当てられている(バイト1)。イネーブル/ディスエーブルレポートのバイト2は、イネーブル又はディスエーブルにすることができるレポートIDを含む。(コントローラデバイスからホストデバイスに供給される)如何なる入力レポートもイネーブル又はディスエーブルにすることができる。バイト3のビット0をセットして、指定されたレポートIDをイネーブルにすることができ、又はこれをクリアして、指定されたレポートIDをディスエーブルにすることができる。
イネーブル/ディスエーブルレポート内のバイト3のビット1は、レポートを調整(condition)するか否かを指定する。バイト3のビット1がセットされていることが検出された場合、指定されたタイプのレポートは、調整されない。ビットがクリアされていることが検出された場合、指定されたタイプのレポートは、オプションとしてコントローラデバイス上の信号調整ソフトウェアアルゴリズム(signal conditioning software algorithm)によって調整される。信号調整は、ジョイスティックの中心の周囲に「デッドゾーン」を設けること、データの範囲の限界の切捨て、生のデータをスケーリングして、この結果、所定の範囲のデータを生成すること、又は他の処理を含んでいてもよい。指定されたレポートIDがアナログレポートでないこと、又はスケーリングを用いないアナログレポートであることが検出された場合、(スケーリングは行われないので)バイト3のビット1は無視される。指定されたレポートIDをイネーブル又はディスエーブルにすることができないこと、又は指定されたレポートIDが認識されていないことが検出された場合、HANDSHAKE_ERR_INVALID_PARAMETERが返される。この他の場合、HANDSHAKE_SUCCESSFULが返される。
図18は、ボタンレポートの例示的なバイトシーケンスを示している。0x07の入力レポートID値が割り当てられている(バイト1)。ボタンレポートは、押下されたキーを表すキーコード(バイト2〜7)を示す。如何なる時点においても、6個のキー(例えば、キーコード1〜6)のうちの1つ以上をアクチュエートすることができる。キーコードは、0x00から連続的に割り当てられた値である。これらのキーコードは、ボタン番号を反映している。ボタンは、ハードウェア設計の間に、序列付けされている。最大のキーコード値は、0xFDである。
キーコードは、レポート内で昇順に示される。第nのキーが押下されていない場合、アクチュエートされていないボタンに対応するキーコードは、KEYCODE_NO_EVENT(0xFE)としてレポートされる。6個以上のキー(ボタン)が押下されている場合、6個の全てのキーコードがKEYCODE_ERROR_ROLL_OVER(0xFF)としてレポートされる。
アイドルレートが指定されていない場合、又はアイドルレートが「0」に設定されている場合、ボタンレポートは、ボタン状態が変化する都度、送信される。一方、ゼロではないアイドルレートが指定されていることが検出された場合、ボタンレポートは、1つ以上のボタンが押下されると、指定されたアイドルレートで繰り返し送信される。SET_IDLEについては、後に更に説明する。
図19は、8ビットアナログ2軸ジョイスティックレポートの例示的なバイトシーケンスを示している。0x08の入力レポートID値が割り当てられている(バイト1)。ジョイスティックID(バイト2)値は、コンフィグレーションデータ(入力レポート(0x05)参照)によって報告されたジョイスティックの総数に対して確認され、新たなジョイスティックのそれぞれには、コントローラの現在のジョイスティックの総数をnとして、0〜n−1の連続的な番号が付される。すなわち、例えば、第1のジョイスティックには、0x00のジョイスティック識別値が割り当てられる。
中心位置は、(0,0)としてレポートされる。ジョイスティックが右に動くと、X軸読取値が増加する。ジョイスティックが下に動くと、Y軸読取値が増加する。生ビット(raw bit)(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされている場合、読取値は、調整される。
図20は、例示的な16ビットアナログ2軸ジョイスティックレポートを示している。0x09の入力レポートID値が割り当てられている(バイト1)。ジョイスティックID値は、コンフィグレーションデータ(入力レポート(0x05))によって返されるジョイスティックカウントより小さい値である。すなわち、第1のジョイスティックには、0x00の識別値が割り当てられる。
これは、8ビットレポートと同様に設計されているが、各軸の読取値には、16ビットが割り当てられている。中心位置は、(0,0)としてレポートされる。ジョイスティックが右に動くと、X軸読取値が増加する。ジョイスティックが下に動くと、Y軸読取値が増加する。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。
図21は、例示的な32ビットアナログ2軸ジョイスティックレポートを示している。0x0Aの入力レポートID値が割り当てられている(バイト1)。ジョイスティックID値は、コンフィグレーションデータ(入力レポート(0x05))によって返されるジョイスティックカウントより小さい値である。すなわち、第1のジョイスティックには、0x00の識別値が割り当てられる。
これは、8ビットレポートと同様に設計されているが、各軸の読取値には、32ビットが割り当てられている。中心位置は、(0,0)としてレポートされる。ジョイスティックが右に動くと、X軸読取値が増加する。ジョイスティックが下に動くと、Y軸読取値が増加する。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。
図22は、例示的な8ビットアナログ3軸加速度計レポートを示している。0x0Bの入力レポートID値が割り当てられている(バイト1)。加速度計IDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるジョイスティックカウントより小さい値である。すなわち、第1の加速度計には、0x00の識別値が割り当てられる。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。
図23は、例示的な16ビットアナログ3軸加速度計レポートを示している。0x0Cの入力レポートID値が割り当てられている(バイト1)。加速度計IDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるジョイスティックカウントより小さい値である。すなわち、第1の加速度計には、0x00の識別値が割り当てられる。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。
図24は、例示的な32ビットアナログ3軸加速度計レポートを示している。0x0Dの入力レポートID値が割り当てられている(バイト1)。加速度計IDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるジョイスティックカウントより小さい値である。すなわち、第1の加速度計には、0x00の識別値が割り当てられる。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。
図25は、例示的な8ビットアナログパドルレポートを示している。一実施の形態においては、パドルは、動作範囲が固定された回転式のポテンショメータとして、ハードウェア内に実装される。0x0Eの入力レポートID値が割り当てられている(バイト1)。加速度計IDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるパドルカウントより小さい値である。すなわち、第1のパドルには、0x00の識別値が割り当てられる。中心位置は、「0」としてレポートされる。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。
図26は、例示的な16ビットアナログパドルレポートを示している。0x0Fの入力レポートID値が割り当てられている(バイト1)。加速度計IDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるパドルカウントより小さい値である。すなわち、第1のパドルには、0x00の識別値が割り当てられる。中心位置は、「0」としてレポートされる。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。各読取値には、16ビットが割り当てられている。
図27は、例示的な32ビットアナログパドルレポートを示している。0x10の入力レポートID値が割り当てられている(バイト1)。パドルIDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるパドルカウントより小さい値である。すなわち、第1のパドルには、0x00の識別値が割り当てられる。中心位置は、「0」としてレポートされる。生ビット(バイト2、ビット7)がセットされていることが検出された場合、読取値は、調整されない。一方、生ビットがクリアされていることが検出された場合、読取値は、調整される。各読取値には、32ビットが割り当てられている。
図28は、例示的な16ビットバッテリレベルレポートを示している。0x11の入力レポートID値が割り当てられている(バイト1)。バッテリレベルレポートは、定期的に(例えば、60秒毎)に送信される。バイト2〜3は、現在のバッテリ読取値を含む。バッテリレベル読取値には、16ビットが割り当てられている。
図29は、例示的な8ビットトラックボールレポートを示している。0x12の入力レポートID値が割り当てられている(バイト1)。トラックボールIDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるトラックボールカウントより小さい値である。すなわち、第1のトラックボールには、0x00の識別値が割り当てられる。トラックボールが右に動くと、X読取値は、正の値として検出される。トラックボールが下に動くと、Y読取値は、正の値として検出される。X読取値及びY読取値には、それぞれ8ビットが割り当てられている。
図30は、例示的な16ビットトラックボールレポートを示している。0x13の入力レポートID値が割り当てられている(バイト1)。トラックボールIDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるトラックボールカウントより小さい値である。すなわち、第1のトラックボールには、0x00の識別値が割り当てられる。トラックボールが右に動くと、X読取値は、正の値として検出される。トラックボールが下に動くと、Y読取値は、正の値として検出される。X読取値及びY読取値には、それぞれ16ビットが割り当てられている。
図31は、例示的な32ビットトラックボールレポートを示している。0x14の入力レポートID値が割り当てられている(バイト1)。トラックボールIDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるトラックボールカウントより小さい値である。すなわち、第1のトラックボールには、0x00の識別値が割り当てられる。トラックボールが右に動くと、X読取値は、正にとどまる。トラックボールが下に動くと、Y読取値は、正にとどまる。X読取値及びY読取値には、それぞれ32ビットが割り当てられている。
図32は、例示的な8ビットスクロールホイールレポートを示している。0x15の入力レポートID値が割り当てられている(バイト1)。スクロールホイールIDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるスクロールホイールカウントより小さい値である。すなわち、第1のスクロールホイールには、0x00の識別値が割り当てられる。読取値が正の場合、スクロールホイールは、上又は左に動いたと判定される。読取値が負の場合、スクロールホイールは、下又は右に動いたと判定される。
図33は、例示的な16ビットスクロールホイールレポートを示している。0x16の入力レポートID値が割り当てられている(バイト1)。スクロールホイールIDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるスクロールホイールカウントより小さい値である。すなわち、第1のスクロールホイールには、0x00の識別値が割り当てられる。読取値が正であることが検出された場合、スクロールホイールは、上又は左に動いたと判定される。読取値が負であることが検出された場合、スクロールホイールは、下又は右に動いたと判定される。読取値には、16ビットが割り当てられている。
図34は、例示的な32ビットスクロールホイールレポートを示している。0x17の入力レポートID値が割り当てられている(バイト1)。スクロールホイールIDは、コンフィグレーションデータ(入力レポート(0x05))によって返されるスクロールホイールカウントより小さい値である。すなわち、第1のスクロールホイールには、0x00の識別値が割り当てられる。検出された読取値が正である場合、スクロールホイールは、上又は左に動いたと判定される。検出された読取値が負である場合、スクロールホイールは、下又は右に動いたと判定される。
上述したように、アナログレポートは、生で(調整なしで)提供してもよい。一般化して言えば、調整されたレポートは、(サンプル毎のビットのコンフィグレーションデータレポートで指定されるように、)所定の範囲を満たすようにスケーリングされた、0を中心とする符号付きの読取値を送信するように設計される。生のレポートは、処理されていない値を有するレポートである。生のレポートは、処理されていないセンサ信号を表す。したがって、生のレポートは、符号がなく、読取値の中心は、上述したコンフィグレーションデータレポートによって特定される。例えば、レポートが生であることが検出された場合、読取値は、符号なしである。一方、レポートが調整されている場合、読取値は、符号ありである。
また、様々な出力レポートを提供できる。図35は、生の及び調整された8ビットアナログ2軸ジョイスティックレポートの例示的なバイトシーケンスを示している。0xFDの出力レポートID値が割り当てられている(バイト1)。スケーリングアルゴリズムの性能を検査するために生の及び調整された8ビットアナログ2軸ジョイスティックレポートが含まれている。生の及び調整された8ビットアナログ2軸ジョイスティックレポートは、検査アプリケーション以外では使用されない。生の及び調整された8ビットアナログ2軸ジョイスティックレポートは、出力レポート0x06を用いてイネーブルにすることができる。
図36は、ランループ検査レポートの例示的なバイトシーケンスを示している。0xFEの出力レポートID値が割り当てられている。コントローラデバイス110、710、1010は、有効なランループ検査レポートを受信すると、以下の1つ以上を実行する。(1)HANDSHAKE_SUCCESSFULによってホストデバイス120、720、1020に応答する。(2)現在イネーブルにされている全てのレポート(バッテリレポートを含む。)をディスエーブルにする。(3)タイムスタンプレポート(入力レポートID0xFF)を送信する。(4)n個レポートを送信する。(a)nは、指定された繰返しの数(バイト4〜7)に等しい。(b)レポートは、(バイト2で)指定されたタイプのものである。(c)レポートは、アナログレポートタイプである必要がある。(d)生ビットがセットされている場合(バイト3のビット0)、アナログの読取値に対するスケーリングは行われない(一方、生ビットがクリアされている場合は、通常のスケーリングが実行される)。(5)タイムスタンプレポート(入力レポートID0xFF)を送信する。(6)先にイネーブルにされていたレポートを再びイネーブルにする。
更に、所望のレポートID(バイト2)が、デバイスによってサポートされているレポートであることが検出された場合、ランループ検査レポートが有効になる。例えば、コントローラデバイス110、710、1010が加速度計を有していない場合、所望のレポートIDは、加速度計レポートを指定できない。一方、所望のレポートIDがアナログレポートタイプを指定していることが検出された場合、ランループ検査レポートは、有効になる。
繰返しがゼロに指定されている(例えば、バイト4〜7が全て0x00である)ランループ検査レポートが受信されると、現在実行中の全てのループ検査が中止される。コントローラデバイスは、現在実行中の検査がない場合であっても、HANDSHAKE_SUCCESSFULで応答する。
図37は、32ビットデバイスタイムスタンプ(ミリ秒単位)レポートの例示的なバイトシーケンスを示している。0xFFの入力レポートID値が割り当てられている(バイト1)。32ビットデバイスタイムスタンプ(ミリ秒単位)レポートは、コントローラデバイス110、710、1010の内部クロックによってレポートされる時刻を反映している。32ビットデバイスタイムスタンプ(ミリ秒単位)レポートは、ループ検査に関してのみ使用される。
モバイルコントローラデバイスとホストデバイスとの間のデータの転送
一側面においては、本明細書に開示するプラットホームに依存しない通信プロトコルは、ヒューマンインタフェースデバイス(例えば、コントローラデバイス1010)からホストデバイス1020に制御データを転送する(通信を可能にする)ように設計される。プラットホームに依存しない通信プロトコル134は、様々な入力メカニズム(例えば、ジョイスティック及びボタン状態)を有する様々なコントローラデバイスへのサポートを提供し、様々なコントローラデバイスによって制御できる、ゲーム等のアプリケーションを実行するホストデバイスにデータを転送する。更に、本明細書に開示するプラットホームに依存しない通信プロトコルは、他のタイプのデータの転送をサポートするために更なるレポートを追加できるという点で、拡張可能である。プラットホームに依存しない通信プロトコルは、ブルートゥースヒューマンインタフェースプロファイル(HID)又はブルートゥースシリアルポートプロファイル(SPP)接続等に関連して説明できるが、他のベースバンド接続にも同様に適用できる。双方向シリアル通信プロトコル1017、1027は、接続形態から独立している。但し、他のトランスポートプロトコル(例えば、L2CAP)を使用する場合、バイトシーケンス長が不要になり、又は送信において他の「オーバヘッド」が必要になることもある。
図38は、モバイルコントローラデバイスとホストデバイスとの間の通信を実現する処理3800を示すフローチャートである。コントローラデバイス上のファームウェアは、3810において、モバイルコントローラデバイス(例えば、ボタン、ジョイスティック、トラックボール等)が利用可能な様々な入力メカニズムが提供する入力信号(例えば、アナログ信号及びデジタル信号)を監視する。各入力メカニズムは、1つ以上の入力要素(例えば、ボタン)を含むことができる。3820において、信号イベントが発生すると(例えば、ボタンが押下され、ジョイスティックが操作されると)、コントローラファームウェアは、双方向シリアル通信プロトコル1017を用いてメッセージを生成し、このメッセージをホストデバイス1020に送信する。
コントローラファームウェアは、3830において、検出された信号イベントに基づいて、メッセージを生成する。メッセージは、複数のバイトから構成され、ポテンショメータ又は多自由度アナログジョイスティックからのアナログ信号、例えば、光学マウス又はよりハイエンドのロボットデバイス内に配設されているデジタルエンコーダ、加えられる圧力の変化に比例する信号を提供するフォースセンシティブレジスタ、加速度計及びジャイロスコープ信号、トラックボールからの信号、例えば、歪みゲージベースのナビゲーションスティック等の力検出デバイスからの信号、光センサからの比例する又はデジタル信号、電磁センサからの信号等を含む、ゲームにおいて一般的に使用されている様々なセンサをサポートするように設計されている。HIDベースの手法の場合、バイトシーケンスは、カスタムデスクリプタ内で定義される。固定長シリアル法の場合、センサからの信号と、プリセットのバイトシンタクスとの間で、最も適合するものが採用される。双方向シリアル通信プロトコルの場合、バイトシーケンスは、可変であり、センサの実際の出力及び/又はモバイルコントローラデバイスから出力される他の何らかのデータに完全に適合する。
バイトシーケンスの少なくとも1つは、モバイルコントローラデバイスが使用可能な入力メカニズム上の1つ以上の入力要素にマッピングされる。例えば、モバイルコントローラデバイスがキーパッドを含む場合、バイトの少なくとも1つをキーパッド上のボタンの1つ以上にマッピングすることができる。同様に、ジョイスティックの場合、バイトの少なくとも1つをジョイスティック及び/又はジョイスティック上のボタンの様々な動きにマッピングすることができる。更に、各センサタイプは、個別のレポートタイプ識別子によって表すことができ、これにより、同じファームウェア及びホストソフトウェアによって様々なセンサをサポートできる。
3840では、生成されたメッセージをホストデバイスに送信する。ホストデバイス上で動作し、ホストアプリケーションにリンクされているコントローラドライバは、3850において、メッセージを受信し、3860において、このメッセージを1つ以上のアプリケーションレベルイベントに翻訳する。そして、3870において、これらの翻訳されたイベントをホストアプリケーションに送信する。3880において、ホストアプリケーションは、翻訳されたイベントを処理する。例えば、ホストアプリケーションがゲームである場合、翻訳されたイベントは、ボタン押圧、ジョイスティックの動き等に対応するゲーム機能を実行するように処理される。
ブルートゥース実装
コントローラデバイスとホストデバイスとの間で接続を確立するために、コントローラデバイス1010は、接続の主導権を有する他のデバイスを待機する。ホストデバイス1020(例えば、携帯電話機、PC、モバイル機器等)は、コントローラデバイス1010との接続を確立する主導権を有する。コントローラデバイス1010は、ホストデバイス1020に接続するためのSPPサーバ(又はL2CAPサーバ等)を提供する。サーバは、汎用一意識別子(universally unique identifier:UUID)を用いて、サービス発見プロファイル(Service Discovery Profile:SDP)によって特定できる。一実施の形態においては、このUUIDは、プラットホームに依存しない通信プロトコルに関連付けて選択することができる。プラットホームに依存しない通信プロトコルの将来の全ての実装は、後方互換性(backwards-compatibility)を保つために、同じUUIDを用いることができる。異なるUUIDを使用する場合、後方互換性は、保証されない。コントローラデバイスに接続しようとするホストデバイス1020は、UUIDを特定できる。変形例として、プラットホームに依存しない通信プロトコルのアップグレードを反映するようにUUIDを変更してもよい。
例示的なアプリケーション
プラットホームに依存しない通信プロトコルを介して転送されるデータは、センサ出力に直接関連していてもよく、直接は関連していなくてもよい。例えば、タイムスタンプデータを読み出してもよい。他の具体例では、モバイルコントローラデバイスを他のプラットホームのためのデータ転送及びストレージデバイスとして使用してもよい。
図39〜図44は、プラットホームに依存しない通信プロトコルを適用できる幾つかの具体例を示している。図39は、ナビゲーションシステム3920上のマッピングアプリケーションを制御するJava(登録商標)対応リモートコントローラデバイス3910を実装する例示的なシステム3900を示している。例えば、リモートコントローラデバイス3910は、自動車のダッシュボードに取り付けられ又はセンタコンソールに統合されたカーナビゲーションシステム3920上のマッピングアプリケーションを制御するために使用することができる。リモートコントローラデバイス3910は、手で握持することができ、ハンドル等に固定することもできる。この具体例のベースバンド接続は、ナビゲーションシステムによってサポートされていれば、ブルートゥースであってもよく、又はUSB等の有線接続であってもよい。コントローラデバイス3910により、リモートコントローラ上の固有の設計を用いて、所望の住所及び地点をナビゲーションシステム3920に入力することができる。本明細書に開示するプラットホームに依存しない通信プロトコルによって、コントローラ及びナビゲーションシステムの何れの側にも大きな容量のメモリを使用することなく、このような情報を効率的に符号化し、ナビゲーションシステム3920に転送することができる。
図40は、GPS対応デバイス間のデータ交換を提供する例示的なシステム4000を示している。例えば、GPS対応の自動車4020、リモートコントローラデバイス4010及び携帯電話機4030上で実行されるマッピングアプリケーション4032は、本明細書に開示するプラットホームに依存しない通信プロトコルを介して、互いに通信できる。プラットホームに依存しない通信プロトコルをブルートゥース4040上に実装することによって、GPS対応の自動車4020は、携帯電話機4030と通信することができる。自動車4020から携帯電話機に送信される特定の情報には、イグニッションを切った時点の自動車4020のGPS位置を記述するデータを含ませてもよい。例えば、本明細書に開示するプラットホームに依存しない通信プロトコルを実装することによって、同時係属中の特許出願、発明の名称、「System and Method for Providing Local Maps Using Wireless Handheld Devices」(米国特許出願番号第11/620,604号)に開示されている通信が可能になる。この同時係属中の特許出願(米国特許出願番号11/620,604)の内容は、引用によって本願に援用される。
図41は、携帯電話機4110、自動車4120及びPC4130の間のデータ通信を実現する例示的なシステム4100を示している。例えば、ブルートゥースを装備する自動車4120は、プラットホームに依存しない通信プロトコルを介して、携帯電話機4110に、データ(例えば、車の機械的な状態情報)を通信できる。そして、携帯電話機4110によって、本明細書に開示するプラットホームに依存しない通信プロトコルを用いて、ブルートゥースに対応するPC4130にデータをアップロードすることができる。自動車の走行距離、摩耗及び損傷等の情報をPC上で追跡して、自動車が故障する前に、事前の整備及び修理を適切なタイミングで行うことができる。
同様の具体例(図示せず)において、コントローラは、携帯型の又は自動車に取り付けられたナビゲーションデバイスから、GPS情報を検索し、将来、レビューのためにPCにアップロードするために、このGPS情報を保存してもよい。
図42は、複数の健康器具及びフィットネス機器間でデータ通信を実現するするための例示的なシステム4200を示している。例えば、本明細書に開示するプラットホームに依存しない通信プロトコルを用いて、携帯電話機4210を歩数計4220にリンクできる。歩数計4220からのデータは、シリアル化することができる。ユーザが運動をすると、歩数計は、シリアル化された歩数計データを携帯電話機4210にストリーミングすることができ、これによって歩数計を装着したユーザの運動の状態を追跡することができる。携帯電話機4210が受信したデータは、本明細書に開示する同様のプラットホームに依存しない通信プロトコルを用いて、PCに転送できる。
図43は、Java(登録商標)対応ジョイスティックコントローラ4310と携帯電話機4320との間でデータ通信を実現するにする例示的なシステム4300を示している。例えば、アナログジョイスティックを備えるリモートコントローラ4310は、本明細書に開示するプラットホームに依存しない通信プロトコルを介して、携帯電話機4320と通信できる。携帯電話機4320は、例えば、J2MEプラットホーム上でゲームを実行できる。このゲームは、プラットホームに依存しない通信プロトコルをサポートし、したがって、このゲームは、ブルートゥースを介してコントローラデバイス4310から携帯電話機4320に転送されるアナログジョイスティック信号、他のスイッチ信号又は他の何らかのデータを符号化するソフトウェアライブラリを利用できる。例えば、本明細書に開示するプラットホームに依存しない通信プロトコルを実装することによって、同時係属中の特許出願、発明の名称、「Human Input Acceleration System」(米国特許出願番号第11/519,455号)に開示されている通信が可能になる。
図44は、多人数参加型モバイルゲームのシナリオにおいて通信を実現する例示的なシステム4400を示している。例えば、携帯電話機4430上のゲームは、2人のプレイヤが遊戯できる。各プレイヤは、それぞれのコントローラ4410、4420を有する。携帯電話機4430は、J2MEプラットホーム上のゲームをサポートし、及びTV又は他のディスプレイデバイス4440へのビデオ出力をサポートする。携帯電話機4430は、本明細書に開示するプラットホームに依存しない通信プロトコルを介して、両方のコントローラ4410、4420と同時に通信する。2人のゲームプレイヤは、携帯電話機4430上で実行されるゲームを遊戯しながら、ゲームコンソールと同様の体験を楽しむことができる。
他の具体例(図示せず)では、コントローラデバイスは、ホストデバイス(例えば、携帯電話機)からゲーム状態情報を読み出し、この情報をPCに転送して、バックアップを行い、又はPC上でもサポートされているゲームのためのプラットホームに依存しないゲームプレイを行ってもよい。逆に、コントローラデバイスは、ゲーム状態情報をPCから読み出し、これを携帯電話機に転送してもよい。また、他のプラットホームをサポートしてもよい。したがって、モバイルコントローラデバイスは、1つのプラットホームから他のプラットホームにゲーム体験を運ぶ運搬装置(vehicle)となることができる。例えば、本明細書に開示するプラットホームに依存しない通信プロトコルを実装することによって、同時係属中の特許出願、発明の名称、「Universal Controller for Toy and Games」(米国特許出願番号第11/519,455号)に開示されている通信が可能になる。
本発明の主題の実施の形態及び本明細書に開示する機能的動作は、デジタル電子回路で実現してもよく、本明細書に開示した構造及びこれらの均等物を含むコンピュータソフトウェア、ファームウェア又はハードウェアで実現してもよく、これらの1つ以上の組合せで実現してもよい。本発明の主題の実施の形態は、1つ以上のコンピュータプログラム製品、すなわち、アクセス可能なプログラム担体内に符号化され、データ処理装置によって実行され、又はデータ処理装置の動作を制御するコンピュータプログラム命令の1つ以上のモジュールとして実現することもできる。アクセス可能なプログラム担体は、伝播信号又はコンピュータにより読取可能な媒体であってもよい。伝播信号は、人工的に生成された信号であり、例えば、コンピュータによる実行のために、適切な受信装置への送信のために情報を符号化するように機械が生成した電気信号、光信号又は電磁波信号である。コンピュータが読取可能な媒体は、機械可読のストレージデバイス、機械可読のストレージ基板、メモリデバイス、機械可読の伝播信号に作用する組成物又はこれらの1つ以上の組合せであってもよい。
用語「データ処理装置」は、データを処理するための全ての装置、デバイス及び機械を包含し、一例としてプログラミング可能なプロセッサ、コンピュータ、複数のプロセッサ又はコンピュータがこれに含まれる。装置は、ハードウェアに加えて、当該コンピュータプログラムの実行環境を作成するコード、例えば、プロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム又はこれらの1つ以上の組合せを含むことができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト又はコードとも呼ばれる。)は、コンパイラ言語又はインタープリタ言語を含む如何なる形式のプログラミング言語で書いてもよく、例えば、スタンドアロンプログラムとして、若しくはモジュール、コンポーネント、サブルーチン又は演算環境での使用に適する他のユニットとして、如何なる形式で展開してもよい。コンピュータプログラムは、必ずしもファイルシステム内のファイルに対応していなくてもよい。プログラムは、他のプログラム又はデータを含むファイル(例えば、マークアップ言語文書内に保存された1つ以上のスクリプト)の一部に保存してもよく、当該プログラムに専用の単一のファイルに保存してもよく、連携する複数のファイル(例えば、モジュール、サブプログラム又はコードの一部を保存する1つ以上のファイル)に保存してもよい。コンピュータプログラムは、1つのコンピュータ上で実行されるように展開してもよく、1つの場所に設けられた又は複数の場所に亘って分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開してもよい。
本明細書に開示したプロセス及びロジックフローは、入力データを処理し、出力を生成することによって機能を実現する1つ以上のコンピュータプログラムを実行する1つ以上のプログラミング可能なプロセッサによって実現してもよい。プロセス及びロジックフローは、例えば、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)又は特定用途向け集積回路(application specific integrated circuit:ASIC)等の専用論理回路によって実行してもよく、これらによって装置を実現してもよい。
コンピュータプログラムの実行に適するプロセッサには、一例として、汎用マイクロプロセッサ及び専用マイクロプロセッサの両方、並びにあらゆる種類のデジタルコンピュータの1つ以上のプロセッサの何れも含まれる。プロセッサは、通常、読出専用メモリ又はランダムアクセスメモリ、若しくはこれらの両方から命令及びデータを受け取る。コンピュータの基本的な要素は、命令を実行するためのプロセッサ、並びに命令及びデータを保存する1つ以上の記憶装置である。また、コンピュータは、通常、データを保存するための1つ以上の大容量記憶装置、例えば、磁気ディスク、光磁気ディスク又は光ディスクを含み、若しくは、大容量記憶装置からデータを受信し、大容量記憶装置にデータを送信し、又はこの両方の動作を行うように大容量記憶装置に動作的に接続されている。但し、コンピュータは、必ずしもこのような装置を有する必要はない。更に、コンピュータは、他の装置内に埋め込んでもよい。
コンピュータプログラム命令及びデータの格納に適するデバイスには、一例として挙げれば、半導体記憶デバイス、例えば、EPROM、EEPROM及びフラッシュメモリデバイスを含む全ての形式の不揮発性メモリ、媒体及びメモリデバイス、磁気ディスク、例えば、内蔵ハードディスク又はリムーバブルディスク、光磁気ディスク、並びにCD−ROMディスク及びDVD−ROMディスク等が含まれる。プロセッサ及びメモリは、専用論理回路によって補ってもよく、専用論理回路に組み込んでもよい。
ユーザとのインタラクションを提供するために、本明細書に開示する発明の主題の実施の形態は、コンピュータ上で実現してもよく、コンピュータは、ユーザに情報を表示するためのディスプレイ装置、例えば、陰極線管(cathode ray tube:CRT)又は液晶ディスプレイ(liquid crystal display:LCD)モニタと、ユーザがコンピュータに入力を行うためのキーボード及びポインティング装置、例えば、マウス又はトラックボールとを備えていてもよい。他の種類のデバイスを用いて、ユーザとのインタラクションを提供してもよく、例えば、ユーザからの入力は、音響入力、音声入力又は触覚入力を含む如何なる形式で受け付けてもよい。
本明細書に開示する発明の主題の実施の形態は、コンピュータシステムにおいて実現してもよく、コンピュータシステムは、例えば、データサーバとしてのバックエンドコンポーネント、例えば、アプリケーションサーバであるミドルウェアコンポーネント、又は例えば、ユーザが本明細書に開示する発明の主題の実装例とインタラクトすることができるグラフィカルユーザインタフェース又はウェブブラウザを有するクライアントコンピュータであるフロントエンドコンポーネントを含んでいてもよく、若しくは、これらのバックエンドコンポーネント、ミドルウェアコンポーネント及びフロントエンドコンポーネントの1つ以上の如何なる組合せを含んでいてもよい。システムのコンポーネントは、デジタルデータ通信の如何なる形式又は媒体によって、例えば、通信ネットワークによって相互接続してもよい。通信ネットワークの具体例には、ローカルエリアネットワーク(local area network:LAN)と、例えば、インターネット等のワイドエリアネットワーク(wide area network:WAN)とが含まれる。
コンピュータシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは、通常、互いに遠隔にあり、典型的には、通信ネットワークを介して互いにインタラクトする。クライアント及びサーバの関係は、各コンピュータ上で実行され、互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
本明細書は、多くの詳細事項を含んでいるが、これらの詳細事項は、任意の発明の範囲又は特許請求可能な範囲を限定するものとは解釈されず、特定の実施の形態の特定の特徴の記述として解釈される。本明細書おいて、別個の実施の形態の文脈で開示した幾つかの特徴を組み合わせて、単一の実施の形態として実現してもよい。逆に、単一の実施の形態の文脈で開示した様々な特徴は、複数の実施の形態に別個に具現化してもよく、適切な如何なる部分的組合せとして具現化してもよい。更に、以上では、幾つかの特徴を、ある組合せで機能するものと説明しているが、初期的には、そのように特許請求している場合であっても、特許請求された組合せからの1つ以上の特徴は、幾つかの場合、組合せから除外でき、特許請求された組合せは、部分的組合せ又は部分的な組合せの変形に変更してもよい。
同様に、図面では、動作を特定の順序で示しているが、このような動作は、所望の結果を達成するために、図示した特定の順序又は順次的な順序で行う必要はなく、また、図示した全ての動作を行う必要もない。
幾つかの実施の形態及び具体例について説明したが、本明細書の記述及び説明に基づき、他の実施の形態、拡張例、変形例を想到することができる。
更に、データ入力、デバイス制御又はゲーム制御を提供する方法は、異なる順序で実行しても、望ましい結果を達成できることがある。したがって、他の実施の形態も、特許請求の範囲に含まれる。

Claims (22)

  1. 通信プロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間でプラットホームに依存しない双方向通信を提供するステップを有し、前記提供するステップは、
    前記モバイルコントローラデバイスの1つ以上のデータパケットを記述するバイトの列を、前記モバイルコントローラデバイスから前記ホストデバイスに供給するステップと、
    前記ホストデバイスがネイティブデバイスドライバを有することが検出された場合、前記ネイティブデバイスドライバを用いて、前記供給されたバイトの列を解析するステップと、
    前記ホストデバイスがネイティブデバイスドライバを含んでいないことが検出された場合、前記供給されたバイトの列を解析するためのデバイスドライバを提供するステップとを有する方法。
  2. 前記デバイスドライバを提供するステップは、前記供給されたバイトの列に基づいて、カスタマイズされたヒューマンインタフェースデバイスドライバを提供するステップを有する請求項1記載の方法。
  3. 前記プラットホームに依存しない双方向通信を提供するステップは、Java(登録商標)プラットホームと互換性がある双方向通信を提供するステップを有する請求項1記載の方法。
  4. 前記バイトの列を供給するステップは、前記バイトの列からの固定数のバイトを用いて、ネイティブヒューマンインタフェースデバイスデスクリプタがサポートしていない1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成するステップを有する請求項1記載の方法。
  5. 前記1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成するステップは、ジョイスティック、リニアポテンショメータ、トラックボール、エンコーダ、フォースセンシティブレジスタ、歪みゲージ、一連のデジタルスイッチ、加速度計、ジャイロ、慣性センサ及び電磁センサからなるグループから選択される少なくとも1つをサポートする1つ以上のデバイス固有のデスクリプタを生成するステップを有する請求項4記載の方法。
  6. 前記プラットホームに依存しない双方向通信を提供するステップは、Java(登録商標)プラットホームドライバがアクセスできる少なくとも2つの通信チャンネルを提供するステップを有する請求項1記載の方法。
  7. 前記バイトの列を供給するステップは、前記モバイルコントローラデバイスのためにカスタマイズされたバイトの可変シーケンスを供給するステップを有する請求項1記載の方法。
  8. 前記バイトの可変シーケンスを供給するステップは、
    前記バイトのシーケンス内の各バイトを、前記モバイルコントローラデバイス上の1つ以上の入力要素にマッピングするステップと、
    前記入力要素の状態に基づいて、各バイトに割り当てられている値を変更するステップとを有する請求項7記載の方法。
  9. コンピュータが読取可能な媒体上で実現され、データ処理装置に動作を実行させるコンピュータプログラム製品において、前記動作は、
    通信プロトコルを介して、モバイルコントローラデバイスとホストデバイスとの間でプラットホームに依存しない双方向通信を提供することを含み、前記提供は、
    前記モバイルコントローラデバイスの1つ以上のデータパケットを記述するバイトの列を、前記モバイルコントローラデバイスから前記ホストデバイスに供給することと、
    前記ホストデバイスがネイティブデバイスドライバを有することが検出された場合、前記ネイティブデバイスドライバを用いて、前記供給されたバイトの列を解析することと、
    前記ホストデバイスがネイティブデバイスドライバを含んでいないことが検出された場合、前記供給されたバイトの列を解析するためのデバイスドライバを提供することとを含むコンピュータプログラム製品。
  10. 前記供給されたバイトの列に基づいて、カスタマイズされたヒューマンインタフェースデバイスドライバを提供することを更に含む動作を前記データ処理装置に実行させる請求項9記載のコンピュータプログラム製品。
  11. 少なくとも、Java(登録商標)プラットホームと互換性がある双方向通信を提供することによって、プラットホームに依存しない双方向通信を提供することを更に含む動作を前記データ処理装置に実行させる請求項9記載のコンピュータプログラム製品。
  12. 少なくとも、前記バイトの列からの固定数のバイトを用いて、ネイティブヒューマンインタフェースデバイスデスクリプタがサポートしていない1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成することによって、バイトの列を供給することを更に含む動作を前記データ処理装置に実行させる請求項9記載のコンピュータプログラム製品。
  13. 少なくとも、ジョイスティック、リニアポテンショメータ、トラックボール、エンコーダ、フォースセンシティブレジスタ、歪みゲージ、一連のデジタルスイッチ、加速度計、ジャイロ、慣性センサ及び電磁センサからなるグループから選択される少なくとも1つをサポートする1つ以上のデバイス固有のデスクリプタを生成することによって、1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成することを更に含む動作を前記データ処理装置に実行させる請求項12記載のコンピュータプログラム製品。
  14. Java(登録商標)プラットホームドライバがアクセスできる少なくとも2つの通信チャンネルを有するプラットホームに依存しない双方向通信を提供することを更に含む動作を前記データ処理装置に実行させる請求項9記載のコンピュータプログラム製品。
  15. 前記モバイルコントローラデバイスのためにカスタマイズされたバイトの可変シーケンスを有するバイトの列を供給することを更に含む動作を前記データ処理装置に実行させる請求項9記載のコンピュータプログラム製品。
  16. バイトの可変シーケンスを供給することを更に含む動作を前記データ処理装置に実行させ、前記バイトの可変シーケンスを供給することは、
    前記バイトのシーケンス内の各バイトを、前記モバイルコントローラデバイス上の1つ以上の入力要素にマッピングすることと、
    前記入力要素の状態に基づいて、各バイトに割り当てられている値を変更することとを含む請求項15記載のコンピュータプログラム製品。
  17. 通信スタックを動作させるように構成された通信メカニズムを備え、前記通信メカニズムは、
    モバイルコントローラデバイスをホストデバイスに接続するように構成されたベースバンドプロトコルと、
    前記ベースバンドプロトコル上で動作し、それぞれがバイトのシーケンスを含む1つ以上のメッセージを前記ホストデバイスに送信するように構成された双方向シリアル通信プロトコルと、
    前記モバイルコントローラデバイスが使用可能な様々な入力メカニズムが提供する入力信号を監視し、前記1つ以上のメッセージを生成するように構成されたコントローラファームウェアとを備え、
    前記双方向シリアル通信プロトコルは、前記ベースバンドプロトコルを介して、前記モバイルコントローラデバイスとホストデバイスとの間でプラットホームに依存しない双方向通信を実現するモバイルコントローラデバイス。
  18. 前記双方向シリアル通信プロトコルは、Java(登録商標)プラットホームと互換性がある双方向通信を含むプラットホームに依存しない双方向通信を実現する請求項17記載のシステム。
  19. 前記コントローラファームウェアは、前記バイトのシーケンスからの固定数のバイトを用いて、ネイティブヒューマンインタフェースデバイスデスクリプタがサポートしていない1つ以上のセンサをサポートする1つ以上のデバイス固有のデスクリプタを生成するように更に構成されている請求項17記載のシステム。
  20. 前記コントローラファームウェアは、ジョイスティック、リニアポテンショメータ、トラックボール、エンコーダ、フォースセンシティブレジスタ、歪みゲージ、一連のデジタルスイッチ、加速度計、ジャイロ、慣性センサ及び電磁センサからなるグループから選択される少なくとも1つをサポートする1つ以上のデバイス固有のデスクリプタを生成するように更に構成されている請求項19記載のシステム。
  21. 前記コントローラファームウェアは、それぞれがモバイルコントローラデバイスのためにカスタマイズされたバイトの可変シーケンスを含む1つ以上のメッセージを生成するように更に構成されている請求項17記載のシステム。
  22. 前記コントローラファームウェアは、前記バイトのシーケンス内の各バイトを、前記モバイルコントローラデバイスが使用可能な様々な入力メカニズムの1つ以上の入力要素にマッピングし、前記マッピングされた1つ以上の入力要素の状態に基づいて、各バイトに割り当てられている値を変更するように更に構成されている請求項22記載のシステム。
JP2010522102A 2007-08-24 2008-08-25 プラットホームに依存しない通信プロトコル Pending JP2010537588A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/844,999 US20090054069A1 (en) 2007-08-24 2007-08-24 Platform Independent Communication Protocol
PCT/US2008/074243 WO2009029588A2 (en) 2007-08-24 2008-08-25 Platform independent communication protocol

Publications (1)

Publication Number Publication Date
JP2010537588A true JP2010537588A (ja) 2010-12-02

Family

ID=40382665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010522102A Pending JP2010537588A (ja) 2007-08-24 2008-08-25 プラットホームに依存しない通信プロトコル

Country Status (7)

Country Link
US (1) US20090054069A1 (ja)
EP (1) EP2193427A2 (ja)
JP (1) JP2010537588A (ja)
KR (1) KR20100058586A (ja)
CN (1) CN101828160A (ja)
CA (1) CA2698314A1 (ja)
WO (1) WO2009029588A2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014514640A (ja) * 2011-03-21 2014-06-19 マイクロソフト コーポレーション シンプルペリフェラルバスを利用するシステム及び方法
JP2016015150A (ja) * 2011-01-21 2016-01-28 クゥアルコム・インコーポレイテッドQualcomm Incorporated ワイヤレスディスプレイのためのユーザ入力バックチャネル
JP2016503601A (ja) * 2012-10-29 2016-02-04 クゥアルコム・インコーポレイテッドQualcomm Incorporated コンピューティングデバイスと車両ヘッドユニットとの間のワイヤレスディスプレイセッションの確立
JP2016189589A (ja) * 2011-10-25 2016-11-04 ヴァイタル コネクト, インコーポレイテッドVital Connect, Inc. 健康監視のための信頼できるスケーラブルなシステムおよび方法
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009063335A2 (en) * 2007-11-13 2009-05-22 Spielo Manufacturing Ulc Wireless wagering system
US8706297B2 (en) 2009-06-18 2014-04-22 Michael Todd Letsky Method for establishing a desired area of confinement for an autonomous robot and autonomous robot implementing a control system for executing the same
US10601457B2 (en) 2010-07-27 2020-03-24 Comcast Cable Communications, Llc Configuring remote control behavior to limit a maximum amount of transmissions for continuous press of a button
CN102012886B (zh) * 2010-10-14 2012-12-05 深圳市文鼎创数据科技有限公司 基于hid协议的通讯方法、装置及系统
CN102111446B (zh) * 2011-01-12 2013-04-24 华为终端有限公司 设备连接处理方法、组合设备和主机设备
CN102651753B (zh) * 2011-02-25 2016-04-27 国际商业机器公司 与平台无关的信息处理系统及其通信方法
US8725916B2 (en) 2012-01-07 2014-05-13 Microsoft Corporation Host side implementation for HID I2C data bus
DE102012002618B4 (de) * 2012-02-13 2014-11-06 Bury Sp.Z.O.O Verfahren zum Betreiben eines Mobiltelefons
US9411761B2 (en) 2012-06-22 2016-08-09 Microsoft Technology Licensing, Llc Platform neutral device protocols
JP2014085857A (ja) * 2012-10-24 2014-05-12 Alpine Electronics Inc 電子装置、電子装置の通信制御方法、電子装置の通信制御プログラム、情報端末装置および電子システム
KR20140089864A (ko) * 2013-01-07 2014-07-16 (주)초이스테크놀로지 인터페이스 장치 및 이를 이용한 단말기와 컴퓨터의 연동 시스템
US9773353B2 (en) * 2013-10-10 2017-09-26 Fusepoint Ltd. Wireless automotive interface device
CN104796249B (zh) * 2015-03-19 2018-10-30 柳州市新科电脑衡器制造有限责任公司 用于微电脑的串行通讯数据的加密方法
CN106851531A (zh) * 2016-12-15 2017-06-13 北京塞宾科技有限公司 一种蓝牙音频传输方法
US10074269B2 (en) 2017-01-09 2018-09-11 Nintendo Co., Ltd. Communication system, apparatus and method
US11928898B2 (en) * 2019-12-13 2024-03-12 Autolab Inc. Systems and methods for facilitating vehicle related problems
KR102634983B1 (ko) * 2021-02-15 2024-02-07 (주)자이네스 이동형 조작 장치 및 이동형 조작 장치의 조작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100280783B1 (ko) * 1996-08-20 2001-02-01 윤종용 컴퓨터 시스템의 원격 제어 장치 및 원격 제어 방법
US6415439B1 (en) * 1997-02-04 2002-07-02 Microsoft Corporation Protocol for a wireless control system
US6539437B1 (en) * 1998-11-30 2003-03-25 Intel Corporation Remote control inputs to java applications
JP4378576B2 (ja) * 1999-05-18 2009-12-09 ソニー株式会社 受信装置および方法、供給装置および方法、双方向通信システムおよび方法、並びに記録媒体
US7161926B2 (en) * 2001-07-03 2007-01-09 Sensoria Corporation Low-latency multi-hop ad hoc wireless network
JP2003084984A (ja) * 2001-09-12 2003-03-20 Canon Inc 情報処理装置、及び、情報処理方法、及び、制御プログラム、及び、制御プログラムを記憶した記憶媒体
JP3715954B2 (ja) * 2002-07-12 2005-11-16 キヤノン株式会社 情報処理装置、情報処理方法、制御プログラム、ネットワークシステム
US20060253617A1 (en) * 2005-04-22 2006-11-09 Microsoft Corporation Driver upgrade tools
US7280097B2 (en) * 2005-10-11 2007-10-09 Zeetoo, Inc. Human interface input acceleration system
US7649522B2 (en) * 2005-10-11 2010-01-19 Fish & Richardson P.C. Human interface input acceleration system
JP4805116B2 (ja) * 2006-12-11 2011-11-02 株式会社日立製作所 情報処理システム、情報処理システムの制御方法、サービス利用装置及びサービス提供装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016015150A (ja) * 2011-01-21 2016-01-28 クゥアルコム・インコーポレイテッドQualcomm Incorporated ワイヤレスディスプレイのためのユーザ入力バックチャネル
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US10382494B2 (en) 2011-01-21 2019-08-13 Qualcomm Incorporated User input back channel for wireless displays
US10911498B2 (en) 2011-01-21 2021-02-02 Qualcomm Incorporated User input back channel for wireless displays
JP2014514640A (ja) * 2011-03-21 2014-06-19 マイクロソフト コーポレーション シンプルペリフェラルバスを利用するシステム及び方法
JP2016189589A (ja) * 2011-10-25 2016-11-04 ヴァイタル コネクト, インコーポレイテッドVital Connect, Inc. 健康監視のための信頼できるスケーラブルなシステムおよび方法
JP2016503601A (ja) * 2012-10-29 2016-02-04 クゥアルコム・インコーポレイテッドQualcomm Incorporated コンピューティングデバイスと車両ヘッドユニットとの間のワイヤレスディスプレイセッションの確立

Also Published As

Publication number Publication date
CN101828160A (zh) 2010-09-08
KR20100058586A (ko) 2010-06-03
WO2009029588A2 (en) 2009-03-05
US20090054069A1 (en) 2009-02-26
CA2698314A1 (en) 2009-03-05
WO2009029588A3 (en) 2009-04-30
EP2193427A2 (en) 2010-06-09
WO2009029588A9 (en) 2009-10-29

Similar Documents

Publication Publication Date Title
JP2010537588A (ja) プラットホームに依存しない通信プロトコル
US20190294236A1 (en) Method and System for Processing Signals that Control a Device Using Human Breath
JP5250042B2 (ja) ワイヤレス送受信機用インターフェース・プロトコルおよびapi
US8184100B2 (en) Inertia sensing input controller and receiver and interactive system using thereof
KR101109293B1 (ko) 순차 멀티모드 입력
RU2431180C2 (ru) Указывающее устройство типа мыши, управляемое пользователем
US8150455B2 (en) Method and system for integrating a computer mouse function in a mobile communication device
US8723820B1 (en) Methods and apparatus related to a haptic feedback drawing device
WO2016105494A1 (en) Architecture and communication protocol for haptic output devices
WO2006026021A2 (en) Device orientation based input signal generation
WO2015090250A1 (zh) 一种进程间通讯的方法及装置
WO2008138407A1 (en) Methods and devices for generating multimedia content in response to simultaneous inputs from related portable devices
WO2022057370A1 (zh) 针对蓝牙通讯协议上的游戏外设模式调节方法
US20140018129A1 (en) System And Method For Transport Layer Agnostic Programming Interface For Use With Smartphones
CN101577759A (zh) 具有内置游戏控制装置的手机以及游戏控制系统和方法
JP2011060273A (ja) 携帯式電子装置
CN102114343A (zh) 基于多游戏控制设备的动感游戏控制方法
US20200272408A1 (en) Wireless control and modification of electronic audio signals of remote electronic devices
WO2023060999A1 (zh) 一种基于光惯融合原理的无线手柄交互系统
US20220004260A1 (en) Vibrational input elements
CN110109685A (zh) 快应用的更新、安装包的制作方法、装置及移动终端
KR102361148B1 (ko) 응용프로그램 구동 환경을 제공하는 가상 안드로이드 장치를 이용한 제어 시스템
US20240333459A1 (en) Wireless communication protocol having a method for determining use of data acknowledgement
CN116492666A (zh) 手柄、手柄操作方法、装置、终端和存储介质
CN115113962A (zh) 界面跳转方法、装置、电子设备及可读存储介质