(57)【要約】モバイルコンピューティングデバイスからクライアントコンピューティングデバイスにセンサデータを通信するための技術は、ユニバーサルシリアルバスオーバーインターネットプロトコル（「ＵｏＩＰ」）アーキテクチャを含む。ＵｏＩＰアーキテクチャは、モバイルコンピューティングデバイス上の非ＵＳＢセンサデバイスを仮想センサとして仮想化し、クライアントコンピューティングデバイスが、仮想センサをＵＳＢデバイスとして認識することを可能にする。結果として、モバイルコンピューティングデバイスの非ＵＳＢセンサデバイスにより得られたセンサデータは、クライアントコンピューティングデバイス上で実行されているアプリケーションによりアクセスされ使用され得る。
2017507447.tif 000002
【特許請求の範囲】
【請求項１】
モバイルデバイスの非ユニバーサルシリアルバス（非ＵＳＢ）ハードウェアセンサにより得られたセンサデータを使用するユーザレベルアプリケーションを実行するためのコンピューティングデバイスであって、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続され、前記コンピューティングデバイスは、
前記ユーザレベルアプリケーションに通信可能に接続されるユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムであって、
前記ユーザレベルアプリケーションから、前記センサデータを求めるリクエストを受信し、
前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをユニバーサルシリアルバスデバイスとして認識し、
前記モバイルデバイスのＵｏＩＰサブシステムと通信して、前記モバイルデバイスから前記センサデータを受信する
ＵｏＩＰサブシステムと、
前記コンピューティングデバイスの前記ＵｏＩＰサブシステムに通信可能に接続されるセンサフレームワークであって、前記ユーザレベルアプリケーションによる使用のために、前記の受信されたセンサデータを編成するセンサフレームワークと、
を備えた、コンピューティングデバイス。
【請求項２】
前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、トランスポートメカニズム及び仮想センサハブを含み、前記トランスポートメカニズムは、前記モバイルデバイスへの送信のために、ＵＳＢ通信プロトコルに従って、前記センサデータを求める前記リクエストを編成し、前記ＵＳＢ通信プロトコルに従って編成された前記センサデータを受信し、前記仮想センサハブは、前記の受信されたセンサデータを、前記コンピューティングデバイスにより使用可能なフォーマットに変換する、請求項１記載のコンピューティングデバイス。
【請求項３】
前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、前記センサデータを求める前記リクエストを、ＵｏＩＰデータ読み取りリクエストとして編成し、前記ＵｏＩＰデータ読み取りリクエストを、前記モバイルデバイスの前記ＵｏＩＰサブシステムに送信し、前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記センサデータを受信する、請求項１又は２記載のコンピューティングデバイス。
【請求項４】
前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、ユニバーサルシリアルバスヒューマンインタフェースデバイス（ＵＳＢ  ＨＩＤ）仕様に従って、前記モバイルデバイスの前記ＵｏＩＰサブシステムから受信された前記センサデータを編成する、請求項１乃至３いずれか一項記載のコンピューティングデバイス。
【請求項５】
前記モバイルデバイスの前記ＵｏＩＰサブシステムは、前記非ＵＳＢハードウェアセンサを、前記モバイルデバイス上の仮想センサとして仮想化する、請求項１乃至４いずれか一項記載のコンピューティングデバイス。
【請求項６】
前記モバイルデバイスの前記ＵｏＩＰサブシステムは、ＵＳＢ  ＨＩＤ仕様に従って前記仮想センサを作成する、請求項５記載のコンピューティングデバイス。
【請求項７】
前記モバイルデバイスの前記ＵｏＩＰサブシステムは、ＵＳＢ  ＨＩＤ記述子ファイルを読み取ることにより前記仮想センサを作成する、請求項６記載のコンピューティングデバイス。
【請求項８】
前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、デバイス列挙リクエストを前記モバイルデバイスに送信し、前記モバイルデバイスの前記ＵｏＩＰサブシステムは、前記デバイス列挙リクエストに対するレスポンスを、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムに送信し、前記デバイス列挙リクエストに対する前記レスポンスは、前記コンピューティングデバイスに対して、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをＵＳＢデバイスとして識別させるものである、請求項１乃至７いずれか一項記載のコンピューティングデバイス。
【請求項９】
前記コンピューティングデバイスに対する前記ＵＳＢデバイスの識別に応じて、前記コンピューティングデバイスは、仮想の前記ＵＳＢデバイスに対応するセンサドライバをロードし、前記センサドライバは、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムと通信する、請求項８記載のコンピューティングデバイス。
【請求項１０】
前記モバイルデバイスの前記非ＵＳＢハードウェアセンサは、動きセンサを含み、前記ユーザレベルアプリケーションは、前記センサデータに応じたモーション機能を含み、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、前記ユーザレベルアプリケーションと通信して、前記モバイルデバイスの前記ＵｏＩＰサブシステムと通信することにより前記ユーザレベルアプリケーションの前記モーション機能を動作させる、請求項１乃至９いずれか一項記載のコンピューティングデバイス。
【請求項１１】
モバイルデバイスの非ユニバーサルシリアルバス（非ＵＳＢ）ハードウェアセンサにより得られたセンサデータを使用する、コンピューティングデバイス上のユーザレベルアプリケーションの実行を可能にするための方法であって、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続され、前記方法は、
前記コンピューティングデバイスにより、前記ユーザレベルアプリケーションから、前記センサデータを求めるリクエストを受信するステップと、
前記コンピューティングデバイスにより、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをユニバーサルシリアルバスデバイスとして認識するステップと、
前記コンピューティングデバイスにより、前記モバイルデバイスのユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムと通信して、前記モバイルデバイスから前記センサデータを受信するステップと、
前記コンピューティングデバイスにより、前記ユーザレベルアプリケーションによる使用のために、前記の受信されたセンサデータを編成するステップと、
を含む、方法。
【請求項１２】
前記モバイルデバイスへの送信のために、ＵＳＢ通信プロトコルに従って、前記センサデータを求める前記リクエストを編成するステップと、
前記ＵＳＢ通信プロトコルに従って編成された前記センサデータを受信するステップと、
前記の受信されたセンサデータを、前記コンピューティングデバイスにより使用可能なフォーマットに変換するステップと、
を含む、請求項１１記載の方法。
【請求項１３】
前記センサデータを求める前記リクエストを、ＵｏＩＰデータ読み取りリクエストとして編成するステップと、
前記ＵｏＩＰデータ読み取りリクエストを、前記モバイルデバイスの前記ＵｏＩＰサブシステムに送信するステップと、
前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記センサデータを受信するステップと、
を含む、請求項１１記載の方法。
【請求項１４】
ユニバーサルシリアルバスヒューマンインタフェースデバイス（ＵＳＢ  ＨＩＤ）仕様に従って、前記モバイルデバイスの前記ＵｏＩＰサブシステムから受信された前記センサデータを編成するステップを含む、請求項１１記載の方法。
【請求項１５】
前記非ＵＳＢハードウェアセンサを、前記モバイルデバイス上の仮想センサとして仮想化するステップを含む、請求項１１記載の方法。
【請求項１６】
ＵＳＢ  ＨＩＤ記述子ファイルを読み取ることにより前記仮想センサを作成するステップを含む、請求項１５記載の方法。
【請求項１７】
デバイス列挙リクエストを前記モバイルデバイスに送信するステップと、
前記デバイス列挙リクエストに対するレスポンスを、前記コンピューティングデバイスのＵｏＩＰサブシステムに送信するステップと、
を含み、
前記デバイス列挙リクエストに対する前記レスポンスは、前記コンピューティングデバイスに対して、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをＵＳＢデバイスとして識別させるものである、請求項１１記載の方法。
【請求項１８】
前記コンピューティングデバイスに対する仮想の前記ＵＳＢデバイスの識別に応じて、仮想の前記ＵＳＢデバイスに対応するセンサドライバをロードするステップを含み、
前記センサドライバは、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムと通信する、請求項１７記載の方法。
【請求項１９】
前記モバイルデバイスの前記非ＵＳＢハードウェアセンサは、動きセンサを含み、前記ユーザレベルアプリケーションは、前記センサデータに応じたモーション機能を含み、前記方法は、前記モバイルデバイスの前記ＵｏＩＰサブシステムと通信することにより前記ユーザレベルアプリケーションの前記モーション機能を動作させるステップを含む、請求項１１記載の方法。
【請求項２０】
複数の命令を記憶しているメモリを備えたコンピューティングデバイスであって、前記複数の命令が、前記コンピューティングデバイスにより実行されたときに、前記複数の命令は、前記コンピューティングデバイスに、請求項１１乃至１９いずれか一項記載の方法を実行させる、コンピューティングデバイス。
【請求項２１】
コンピューティングデバイスに、請求項１１乃至１９いずれか一項記載の方法を実行させるプログラム。
【請求項２２】
統合された動きセンサを有さないコンピューティングデバイスであって、前記コンピューティングデバイスは、前記コンピューティングデバイス上の動きセンサベースのアプリケーションを実行するよう構成されており、前記コンピューティングデバイスは、
ユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムであって、
モバイルデバイスの非ユニバーサルシリアルバス動きセンサを、ユニバーサルシリアルバスヒューマンインタフェースデバイスとして認識し、ここで、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続され、
前記動きセンサベースのアプリケーションから、動きセンサデータを求めるリクエストを受信し、
前記動きセンサデータを求める前記リクエストを、前記モバイルデバイスのＵｏＩＰサブシステムに通信し、
前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記のリクエストされた動きセンサデータを受信する
ＵｏＩＰサブシステム
を備えた、コンピューティングデバイス。
【請求項２３】
前記コンピューティングデバイスは、前記コンピューティングデバイス上の前記動きセンサベースのアプリケーションによる使用のために、前記の受信された動きセンサデータを編成する、請求項２２記載のコンピューティングデバイス。
【請求項２４】
統合された動きセンサを有さないコンピューティングデバイス上の動きセンサベースのアプリケーションの実行を可能にするための方法であって、
前記コンピューティングデバイスにより、モバイルデバイスの非ユニバーサルシリアルバスセンサを、ユニバーサルシリアルバスデバイスとして認識するステップであって、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続される、ステップと、
前記コンピューティングデバイスにより、前記動きセンサベースのアプリケーションから、動きセンサデータを求めるリクエストを受信するステップと、
前記コンピューティングデバイスにより、前記動きセンサデータを求める前記リクエストを、前記モバイルデバイスのユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムに通信するステップと、
前記コンピューティングデバイスにより、前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記のリクエストされた動きセンサデータを受信するステップと、
を含む、方法。
【請求項２５】
前記の受信された動きセンサデータを、１つのオペレーティングシステムフォーマットから別のオペレーティングシステムフォーマットに変換することにより、前記コンピューティングデバイス上の前記動きセンサベースのアプリケーションによる使用のために、前記の受信された動きセンサデータを編成するステップを含む、請求項２４記載の方法。
【請求項２６】
請求項２１記載のプログラムを記憶しているマシン読み取り可能な記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連米国特許出願の相互参照）
本出願は、２０１４年３月２５日に出願された「ＵＳＢオーバーＩＰを用いた、別のデバイスとの非ＵＳＢセンサの共有」という名称の米国特許出願第１４／２２４３４３号の優先権を主張する。
【０００２】
多くの既存のコンピューティングデバイス（デスクトップコンピュータ、ラップトップコンピュータ、及びノートブックコンピュータ等）は、動きセンサ及びモバイルポインティングデバイス等の統合されたセンサハードウェアを有していない。しかしながら、統合されたセンサハードウェアは、スマートフォン、タブレットコンピュータ、及びウェアラブルデバイス等のモバイルデバイスにおいて標準的になってきている。センサハードウェアは、ユニバーサルシリアルバス（「ＵＳＢ」）接続を介して電子デバイスに接続されないという点で、「非ＵＳＢ」ということができる。モバイルデバイスから、クライアントデバイス上で実行されているアプリケーションに、センサデータを送信することができるいくつかのアプリケーションが存在するが、これは、現在、ＵＳＢ接続以外の直接ネットワーク接続を介して行われている。したがって、現在の方法は、特定のアプリケーション向けに設計されている専用アプリケーションプログラミングインタフェースを必要とする。例えば、いくつかのゲームアプリケーションは、スマートフォンのタッチスクリーン上でなされた動きを、別のデバイス（例えば、ラップトップコンピュータ）上で実行されている同じゲームアプリケーションの表示と「同期させる」ことができるが、そうするために、これらのゲームアプリケーションは、特定のタイプのブラウザソフトウェアを必要とし、同じ専用ブラウザソフトウェアを実行中でないデバイス又は他のブラウザとともに使用することはできない。
【０００３】
ＵＳＢは、パーソナルコンピュータ等のコンピューティングデバイスを、プリンタ、スキャナ、キーボード、及びカメラ等の周辺デバイスと相互接続することを容易にするために初期には開発された仕様である。その後、ＵＳＢは、消費者向け電子機器及びモバイルデバイスの業界における製造業者により採用された。例えば、ＵＳＢを使用して、モバイルデバイス（タブレットコンピュータ等）をキーボード及びマウスに接続することができる、又は、プリンタを、パーソナルコンピュータを介さずに、カメラに直接接続することができる。
【図面の簡単な説明】
【０００４】
本明細書に記載のコンセプトが、限定ではなく例として、添付の図面に示される。図示の単純さ及び明瞭さのために、図面に示される要素は、必ずしも縮尺通りに描かれてはいない。参照ラベルは、適切であると考えられる場合、対応要素又は類似要素を示すために、図面間で繰り返されている。
【図１】クライアントコンピューティングデバイス、モバイルコンピューティングデバイス、及び、本明細書で開示するユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）アーキテクチャを含むコンピューティングシステムの少なくとも一実施形態の簡略化されたブロック図。
【図２】図１のコンピューティングシステムの環境の少なくとも一実施形態の簡略化されたブロック図。
【図３】図１のクライアントコンピューティングデバイス上のユーザレベルアプリケーションが、図１のモバイルコンピューティングデバイスの非ＵＳＢセンサにより得られたセンサデータにアクセスして該センサデータを使用することを可能にするための方法の少なくとも一実施形態の簡略化されたフロー図。
【図４】図１のクライアントコンピューティングデバイスのデバイスマネージャプログラムのグラフィカルユーザインタフェースであって、図１のモバイルコンピューティングデバイスの仮想ＵＳＢセンサへの例示的な通信接続を表示するグラフィカルユーザインタフェースの少なくとも一実施形態の簡略化された図。
【発明を実施するための形態】
【０００５】
本開示のコンセプトは、様々な変更形態及び代替形態を受け入れる余地があるが、その特定の実施形態が、例として、図面に示され本明細書で詳細に説明される。しかしながら、本開示のコンセプトを、開示する特定の形態に限定する意図はなく、反対に、意図は、本開示及び添付の特許請求の範囲と整合する全ての変更形態、均等形態、及び代替形態をカバーすることにあることを理解されたい。
【０００６】
「一実施形態」、「ある実施形態」、「例示的な実施形態」等の本明細書における言及は、説明する実施形態が、特定の特徴、構造、又は特性を含み得るが、全ての実施形態が、そのような特定の特徴、構造、又は特性を含んでもよいし、又は、必ずしもそのような特定の特徴、構造、又は特性を含む必要がなくてもよいことを示す。さらに、このような語句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造、又は特性がある実施形態との関連で記載されている場合には、明示されていようといまいと、他の実施形態との関連でそのような特徴、構造、又は特性を実装することは当業者の知識の範囲内であるとする。さらに、「Ａ、Ｂ、及びＣのうちの少なくとも１つ」という形のリストに含まれる項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ｂ及びＣ）；（Ａ及びＣ）；又は（Ａ、Ｂ、及びＣ）を意味し得ることを理解されたい。同様に、「Ａ、Ｂ、又はＣのうちの少なくとも１つ」という形でリストされる項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ｂ及びＣ）；（Ａ及びＣ）；又は（Ａ、Ｂ、及びＣ）を意味し得る。
【０００７】
開示する実施形態は、場合に応じて、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組合せにより実装することができる。開示する実施形態はまた、１以上のプロセッサにより読み取られ実行され得る、一時的又は非一時的なマシン読み取り可能な記憶媒体（例えば、コンピュータ読み取り可能な記憶媒体）により運ばれる命令又はそのような媒体に記憶される命令として実装することができる。マシン読み取り可能な記憶媒体は、マシンにより読み取ることができる形式で情報を記憶又は伝送する任意の記憶デバイス、メカニズム、又は他の物理的構造（例えば、揮発性メモリ、不揮発性メモリ、メディアディスク、又は他のメディアデバイス）として具現化することができる。
【０００８】
図面において、いくつかの構造的特徴又は方法的特徴が、特定の配置及び／又は順序で示され得る。しかしながら、そのような特定の配置及び／又は順序が必須とされるわけではないことを理解されたい。そうではなく、いくつかの実施形態においては、そのような特徴は、例示する図面に示される態様及び／又は順序と異なる態様及び／又は順序で構成することもできる。さらに、特定の図面内に構造的特徴又は方法的特徴が含まれることは、そのような特徴が全ての実施形態において必要とされることを意味しないし、いくつかの実施形態においては、そのような特徴が含まれないことを意味しない、又はそのような特徴が他の特徴と組み合わされないことを意味しない。
【０００９】
次に図１を参照すると、例示的な実施形態において、ユニバーサルシリアルバスオーバーインターネットプロトコル（「ＵｏＩＰ」）アーキテクチャは、コンピューティングシステム１００のモバイルコンピューティングデバイス１５０及びクライアントコンピューティングデバイス１１０においてそれぞれ具現化される、モバイルＵｏＩＰサブシステム又は「ドック（dock）」ＵｏＩＰサブシステム１７０、及びクライアントＵｏＩＰサブシステム１３２を含む。モバイルコンピューティングデバイス１５０及びクライアントコンピューティングデバイス１１０は、１以上の無線ネットワーク及び／又は有線ネットワーク１８０を介して、通信可能に接続される。モバイルＵｏＩＰサブシステム１７０及びクライアントＵｏＩＰサブシステム１３２は、別々のデバイス上に存在するものとして図示されているが、他の実施形態においては、同じデバイス上に存在してもよい。例示的なモバイルコンピューティングデバイス１５０は、非ＵＳＢセンサ１５８を含み、例示的なクライアントコンピューティングデバイス１１０は、そのようなセンサを有さない。例えば、クライアントコンピューティングデバイス１１０は、「レガシー」ラップトップコンピュータ又は「レガシー」パーソナルコンピュータとして具現化され得る。しかしながら、他の実施形態においては、クライアントコンピューティングデバイス１１０は、非ＵＳＢセンサ１５８と同様の統合されたセンサを有してもよいが、モバイルコンピューティングデバイス１５０の非ＵＳＢセンサ１５８の使用は、他の理由から（例えば、クライアントコンピューティングデバイス１１０及び／又はモバイルコンピューティングデバイス１５０と相対するエンドユーザに、より優れた移動性を提供するために）望ましいことがある。「モバイル」及び「クライアント」という用語は、２つのデバイス１１０、１５０を説明するのを明瞭にするために本明細書において使用されるが、デバイス１１０、１５０の一方又は両方は、コンピューティングシステム１００の様々な実装において、モバイルデバイス（例えば、ハンドヘルドデバイス又はウェアラブルデバイス）又は他のタイプのコンピューティングデバイス（例えば、サーバ、ラップトップ、又はパーソナルコンピュータ）として具現化されてもよいことを理解されたい。開示する実施形態は、ＵＳＢ仕様を参照するが、本開示の態様は、他のタイプの「プラグアンドプレイ」アーキテクチャにも適用可能であることを理解されたい。
【００１０】
モバイルＵｏＩＰサブシステム１７０は、非ＵＳＢセンサ１５８を、仮想ＵＳＢデバイス（例えば、図２の仮想ＵＳＢセンサ２１８）としてエミュレートすることができる。モバイルＵｏＩＰサブシステム１７０は、例えば、クライアントコンピューティングデバイス１１０上で実行されているユーザレベルアプリケーション１１８による使用のために、非ＵＳＢセンサ１５８により得られたデータを、仮想ＵＳＢデバイスを介して、クライアントコンピューティングデバイス１１０のクライアントＵｏＩＰサブシステム１３２に通信する。以下で説明するように、動作中、クライアントコンピューティングデバイス１１０は、非ＵＳＢセンサ１５８が、あたかもクライアントコンピューティングデバイス１１０の統合されたセンサであるかのように、あるいは、非ＵＳＢセンサ１５８が、あたかもクライアントコンピューティングデバイス１１０に直接接続されているＵＳＢデバイスであるかのように、非ＵＳＢデバイス１５８を認識して使用することができる。とりわけ、開示する技術は、クライアントコンピューティングデバイス１５０が、ユーザレベルアプリケーション１１８に透過的であるように（例えば、ユーザレベルアプリケーション１１８を変更又は再コンパイルする必要なく）、ヒューマンインタフェースデバイスとして、モバイルコンピューティングデバイス１５０の非ＵＳＢセンサ１５８にアクセスして非ＵＳＢセンサ１５８を使用することを可能にし得る。例えば、開示する技術を使用すると、非ＵＳＢセンサ１５８により得られたセンサデータは、センサデータがローカルセンサハードウェア（例えば、統合されたセンサハードウェア又はＵＳＢ接続されたセンサハードウェア）から得られたものではないということをクライアントコンピューティングデバイス１１０又はユーザレベルアプリケーション１１８が認識することなく、ユーザレベルアプリケーション１１８により処理され得る。さらに、開示する技術を使用すると、非ＵＳＢセンサ１５８により得られたセンサデータは、モバイルコンピューティングデバイス１５０にインストールされモバイルコンピューティングデバイス１５０上で実行される、ユーザレベルアプリケーション１１８のコピー又は対応部分をモバイルコンピューティングデバイス１５０が有する必要なく、クライアントコンピューティングデバイス１１０により使用され得る。さらに、開示する技術を使用すると、デバイス１１０、１５０が、同じオペレーティングシステムを有する必要はないし、又は、同じブラウザソフトウェアを実行する必要はない。さらに、開示する技術を使用すると、デバイス１１０、１５０のいずれかが、さらなる特別なハードウェア（例えば、無線ＵＳＢアダプタ等）を有する必要はない。
【００１１】
クライアントコンピューティングデバイス１１０は、本明細書に記載の機能を実行する任意のタイプのデバイスとして具現化され得る。例えば、クライアントコンピューティングデバイス１１０は、スマートフォン、タブレットコンピュータ、ウェアラブルコンピューティングデバイス、ラップトップコンピュータ、ノートブックコンピュータ、モバイルコンピューティングデバイス、携帯電話機、ハンドセット、メッセージングデバイス、車両テレマティックスデバイス、サーバコンピュータ、デスクトップコンピュータ、ワークステーション、分散コンピューティングシステム、マルチプロセッサシステム、消費者向け電子デバイス、及び／又は、本明細書に記載の機能を実行するよう構成される任意の他のコンピューティングデバイスとして具現化され得るが、これらに限定されるものではない。図１に示されるように、例示的なクライアントコンピューティングデバイス１１０は、プロセッサ１１２、メモリ１１４、入力／出力（Ｉ／Ｏ）サブシステム１１６、ユーザレベルアプリケーション１１８、及びデータ記憶デバイス１２２を含む。データ記憶デバイス１２２は、以下で説明するＵＳＢリクエスト１２４を記憶する。クライアントコンピューティングデバイス１１０はまた、ユーザインタフェース（ＵＩ）サブシステム１２６、システムソフトウェアコンポーネント１２８、クライアントＵｏＩＰサブシステム１３２、及び通信サブシステム１３０を含む。クライアントコンピューティングデバイス１１０は、他の実施形態においては、モバイルコンピュータ及び／又は固定型コンピュータにおいて通常見つけられるコンポーネント（例えば、様々なセンサ及び入力／出力デバイス）等の他のコンポーネント又はさらなるコンポーネントを含んでもよい。さらに、いくつかの実施形態において、例示的なコンポーネントのうちの１以上のコンポーネントは、別のコンポーネントに組み込まれ得る、又は、別のコンポーネントの一部を形成し得る。例えば、クライアントＵｏＩＰサブシステム１３２又はクライアントＵｏＩＰサブシステム１３２の一部は、いくつかの実施形態において、システムソフトウェアコンポーネント１２８及び／又は通信サブシステム１３０に組み込まれ得る。
【００１２】
プロセッサ１１２は、本明細書に記載の機能を実行することができる任意のタイプのプロセッサとして具現化され得る。例えば、プロセッサ１１２は、シングルコアプロセッサ若しくはマルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、又は、他のプロセッサ若しくは処理／制御回路として具現化され得る。メモリ１１４は、本明細書に記載の機能を実行することができる任意のタイプの揮発性メモリ、不揮発性メモリ、又はデータストアとして具現化され得る。動作中、メモリ１１４は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバ等の、クライアントコンピューティングデバイス１１０の動作中に使用される様々なソフトウェア及びデータを記憶することができる。例えば、メモリ１１４は、ユーザレベルアプリケーション１１８及び／又はＵＳＢリクエスト１２４の諸部分を、少なくとも一時的に記憶することができる。
【００１３】
メモリ１１４は、例えば、Ｉ／Ｏサブシステム１１６を介して、プロセッサ１１２に通信可能に接続される。Ｉ／Ｏサブシステム１１６は、プロセッサ１１２、メモリ１１４、及び、クライアントコンピューティングデバイス１１０の他のコンポーネントによる入力／出力動作を円滑にする回路及び／又はコンポーネントとして具現化され得る。例えば、Ｉ／Ｏサブシステム１１６は、メモリコントローラハブ、入力／出力制御ハブ、ファームウェアデバイス、通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレース等）、並びに／又は、入力／出力動作を円滑にする他のコンポーネント及びサブシステムとして具現化され得る、又は、これらを含み得る。いくつかの実施形態において、Ｉ／Ｏサブシステム１１６は、システムオンチップ（ＳｏＣ）の一部を形成し、プロセッサ１１２、メモリ１１４、及び／又は、クライアントコンピューティングデバイス１１０の他のコンポーネントとともに、単一の集積回路チップ上に組み込まれ得る。
【００１４】
ユーザレベルアプリケーション１１８は、キーボード、マウス、又はタッチスクリーン等のヒューマンインタフェースデバイスを介してエンドユーザとインタフェースをとるよう構成される任意のタイプのソフトウェアアプリケーションとして具現化され得る。例えば、ユーザレベルアプリケーション１１８は、コンピュータゲーム若しくはビデオゲーム、プレゼンテーションソフトウェア、又は、クライアントコンピューティングデバイス１１０上で実行することができる別のタイプのセンサベースのアプリケーションとして具現化され得る。本明細書で使用されるとき、「センサベースのアプリケーション」とは、とりわけ、動きセンサ又はポインティングデバイス等のセンサにより得られたデータに応じて使用される且つ／又は動作するよう設計されているソフトウェアアプリケーションを指し得る。クライアントコンピューティングデバイス１１０の実施形態が、必要なセンサを有さない場合であっても、開示する技術は、エンドユーザに透過的であるように、そのようなユーザレベルアプリケーション１１８の使用を可能にする。
【００１５】
データ記憶デバイス１２２は、例えば、メモリデバイス及び回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、又は他のデータ記憶デバイス等の、データの短期記憶又は長期記憶のために構成される任意のタイプの１以上のデバイスとして具現化され得る。データ記憶デバイス１２２は、クライアントコンピューティングデバイス１１０のためのファームウェアコード及びデータを記憶するシステムパーティションを含み得る。データ記憶デバイス１２２はまた、クライアントコンピューティングデバイス１１０のシステムソフトウェアコンポーネント１２８（例えば、オペレーティングシステム）のための実行ファイル及びデータファイルを記憶するオペレーティングシステムパーティションを含み得る。
【００１６】
ユーザインタフェースサブシステム１２６は、物理的若しくは仮想的なコントロールボタン若しくはキー、マイクロフォン、スピーカ、ゲームコントローラ、単方向及び／若しくは双方向のスチールカメラ及び／若しくはビデオカメラ、並びに／又はその他を含む、クライアントコンピューティングデバイス１１０とのユーザインタラクションを円滑にする複数のデバイスを含み得る。ユーザインタフェースサブシステム１２６はまた、クライアントコンピューティングデバイス１１０を伴う他の形態の様々なヒューマンインタラクションを検出、キャプチャ、及び処理するよう構成され得る、動きセンサ、近接センサ、キネティックセンサ、バイオメトリックセンサ、及び／又はアイトラッキングデバイス等のデバイスを含み得る。
【００１７】
システムソフトウェアコンポーネント１２８は、オペレーティングシステム、１以上のデバイスドライバ、及びミドルウェアコンポーネント（例えば、アプリケーションプログラミングインタフェース（ＡＰＩ）、ランタイムライブラリ、及び／又はその他）等の複数のコンピュータプログラムコンポーネントを含む。本明細書で開示するように、システムソフトウェアコンポーネント１２８の諸部分は、クライアントコンピューティングデバイス１１０のユーザレベルアプリケーション１１８とモバイルコンピューティングデバイス１５０の非ＵＳＢセンサ１５８との間の通信を円滑にすることができる。クライアントコンピューティングデバイス１１０は、マイクロソフト（登録商標）社によるＷＩＮＤＯＷＳ（登録商標）のバージョン、ＬＩＮＵＸ（登録商標）のバージョン（グーグル（登録商標）社によるＡＮＤＲＯＩＤ（登録商標）、インテル（登録商標）社及びノキア（登録商標）社によるＭＥＥＧＯ（登録商標）を含む）、アップルコンピュータ（登録商標）社によるｉＯＳ（登録商標）、及び／又はその他等の、本明細書に記載の機能を実行することができるオペレーティングシステムを有することができる。
【００１８】
クライアントＵｏＩＰサブシステム１３２は、コンピュータソフトウェア、ハードウェア、又はこれらの組合せとして具現化され得る。以下でより詳細に説明するように、クライアントＵｏＩＰサブシステム１３２の諸部分は、クライアントコンピューティングデバイス１１０が、モバイルコンピューティングデバイス１５０の非ＵＳＢセンサ１５８をＵＳＢヒューマンインタフェースデバイスとして認識又は「列挙（enumerate）」して、非ＵＳＢセンサ１５８に接続することを可能にするために、システムソフトウェアコンポーネント１２８及びモバイルＵｏＩＰサブシステム１７０とインタフェースをとる。いくつかの実施形態において、クライアントＵｏＩＰサブシステム１３２は、非ＵＳＢセンサ１５８に代えて又は非ＵＳＢセンサ１５８に加えて、他の周辺デバイスを列挙して他の周辺デバイスに接続することができる。
【００１９】
クライアントコンピューティングデバイス１１０は、通信サブシステム１３０をさらに含む。通信サブシステム１３０は、クライアントコンピューティングデバイス１１０とモバイルコンピューティングデバイス１５０を含む他の電子デバイスとの間の電子的通信を可能にすることができる任意のタイプの通信回路、通信デバイス、又はこれらの集合として具現化され得る。通信サブシステム１３０は、任意の１以上の通信技術（例えば、光通信、無線通信、又は有線通信）及び関連プロトコル（例えば、イーサネット（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）、３Ｇ／ＬＴＥ等）を使用して、そのような通信を実施するよう構成され得る。通信サブシステム１３０は、無線ネットワークアダプタを含む１以上のネットワークアダプタとして具現化され得る。
【００２０】
モバイルコンピューティングデバイス１５０は、本明細書に記載の機能を実行する任意のタイプのデバイスとして具現化され得る。例えば、モバイルコンピューティングデバイス１５０は、スマートフォン、タブレットコンピュータ、ウェアラブルコンピューティングデバイス、ラップトップコンピュータ、ノートブックコンピュータ、モバイルコンピューティングデバイス、携帯電話機、ハンドセット、メッセージングデバイス、車両テレマティックスデバイス、サーバコンピュータ、ワークステーション、分散コンピューティングシステム、マルチプロセッサシステム、消費者向け電子デバイス、及び／又は、本明細書に記載の機能を実行するよう構成される任意の他のコンピューティングデバイスとして具現化され得るが、これらに限定されるものではない。図１に示されるように、例示的なモバイルコンピューティングデバイス１５０は、プロセッサ１５２、メモリ１５４、入力／出力（Ｉ／Ｏ）サブシステム１５６、非ＵＳＢセンサ１５８、及びデータ記憶デバイス１６０を含む。データ記憶デバイス１６０は、以下で説明する仮想センサ記述子１６２を記憶する。モバイルコンピューティングデバイス１５０はまた、ユーザインタフェース（ＵＩ）サブシステム１６４、システムソフトウェアコンポーネント１６６、モバイルＵｏＩＰサブシステム１７０、及び通信サブシステム１６８を含む。もちろん、モバイルコンピューティングデバイス１５０は、他の実施形態においては、モバイルコンピュータ及び／又は固定型コンピュータにおいて通常見つけられるコンポーネント（例えば、様々なセンサ及び入力／出力デバイス）等の他のコンポーネント又はさらなるコンポーネントを含んでもよい。さらに、いくつかの実施形態において、例示的なコンポーネントのうちの１以上のコンポーネントは、別のコンポーネントに組み込まれ得る、又は、別のコンポーネントの一部を形成し得る。例えば、モバイルＵｏＩＰサブシステム１７０又はモバイルＵｏＩＰサブシステム１７０の一部は、いくつかの実施形態において、システムソフトウェアコンポーネント１６６及び／又は通信サブシステム１６８に組み込まれ得る。
【００２１】
クライアントコンピューティングデバイス１１０の要素の前述の説明は、同じ名前又は類似する名前を有する、モバイルコンピューティングデバイス１５０の要素（例えば、プロセッサ１１２とプロセッサ１５２等）に適用される。したがって、簡潔さのために、その説明はここでは繰り返さない。しかしながら、モバイルコンピューティングデバイス１５０のシステムソフトウェアコンポーネント１６６が、クライアントコンピューティングデバイス１１０のシステムソフトウェアコンポーネント１２８と同じである又は互換性がある必要はないことに留意すべきである。例えば、モバイルコンピューティングデバイス１５０は、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステム及びグーグル（登録商標）クローム（登録商標）ウェブブラウザ、又は、ｉＯＳ（登録商標）オペレーティングシステム及びサファリ（登録商標）ウェブブラウザを実行中であり得るのに対し、クライアントコンピューティングデバイス１１０は、ＷＩＮＤＯＷＳ（登録商標）オペレーティングシステム及びインターネットエクスプローラ（登録商標）ブラウザを実行中であり得る。
【００２２】
非ＵＳＢセンサ１５８は、動きセンサデバイス（例えば、加速度計、傾斜計、キネティックセンサ、又は近接センサ）、方位センサ（例えば、ジャイロスコープ）、モバイルポインティングデバイス（例えば、赤外線デバイス）、位置センサ（例えば、全地球測位システム（ＧＰＳ））、又は、人若しくは物体の動き（回転若しくは並進）若しくは位置を検知若しくは検出することができる別のタイプのハードウェアデバイスとして具現化され得る。モバイルＵｏＩＰサブシステム１７０は、コンピュータソフトウェア、ハードウェア、又はこれらの組合せとして具現化され得、本明細書で開示するように、ネットワーク１８０を介する非ＵＳＢセンサ１５８の共有を可能にする。いくつかの実施形態において、モバイルＵｏＩＰサブシステム１７０は、非ＵＳＢセンサ１５８に代えて又は非ＵＳＢセンサ１５８に加えて、１以上の他の周辺デバイスの共有を可能にし得る。本明細書で使用されるとき、「周辺デバイス」とは、とりわけ、データを生成、取得、キャプチャ、若しくは収集する、又は、コンピュータアプリケーションによりリクエストされ得るサービスを実行するデバイスを指し得、「周辺デバイス」は、物理ＵＳＢデバイス、仮想ＵＳＢデバイス、非ＵＳＢデバイス、様々なバス及びサービスを含み得る「一般」デバイス（例えば、パーソナルコンピュータ、スマートフォン、タブレットコンピュータ、カメラ、マイクロフォン、タッチセンサ等）、及び／又は他のデバイスを含み得る。
【００２３】
ネットワーク１８０は、セルラネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク（例えば、Ｗｉ−Ｆｉ（登録商標））、パーソナルクラウド、仮想パーソナルネットワーク（例えば、ＶＰＮ）、エンタープライズクラウド、パブリッククラウド、イーサネット（登録商標）、及び／又は、インターネット等のパブリックネットワークとして具現化され得る。代替的又は追加的に、ネットワーク１８０は、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）技術及び／又は近距離無線通信（ＮＦＣ）技術を使用して、モバイルコンピューティングデバイス１５０とクライアントコンピューティングデバイス１５０との間のより短距離の無線通信を可能にしてもよい。
【００２４】
次に図２を参照すると、いくつかの実施形態において、コンピューティングシステム１００は、動作中に環境２００を確立する。例示的な環境２００は、モバイルコンピューティングデバイス１５０及びクライアントコンピューティングデバイス１１０の両デバイス上のアクティブコンポーネント（例えば、ロードされているコンポーネント及び／又は実行中のコンポーネント）（例えば、コンポーネント２１０、２１２、２１４、２１８、２２０、２３０、２３２、２３４、２３６、２３８、２４０）を含む。モバイルコンピューティングデバイス１５０上では、オペレーティングシステム２１０、モバイルセンサドライバ２１２、及びモバイルセンサフレームワーク２１４が、システムソフトウェア１６６の実行可能なコンポーネントである。クライアントコンピューティングデバイス１１０上では、オペレーティングシステム２３０、クライアントセンサフレームワーク２３４、及びクライアントセンサドライバ２３６が、システムソフトウェア１２８の実行可能なコンポーネントである。さらに、ＵｏＩＰサブシステム１３２、１７０の実行可能なコンポーネントが、図２においてより詳細に示されている。モバイルＵｏＩＰサブシステム１７０は、仮想ＵＳＢセンサ２１８及びＵＳＢトランスポートメカニズム２２０を含み、ＵＳＢトランスポートメカニズム２２０は、モバイルＵＳＢプロトコル適応層（「ＰＡＬ」）２２２及びネットワークトランスポート層２２４を含む。クライアントＵｏＩＰサブシステム１３２は、仮想ＵＳＢセンサハブ２３８及びＵＳＢトランスポートメカニズム２４０を含み、ＵＳＢトランスポートメカニズム２４０は、クライアントＵＳＢ  ＰＡＬ２４２及びネットワークトランスポート層２４４を含む。いくつかの実施形態において、ネットワークトランスポート層２２４、２４４はそれぞれ、ＵｏＩＰサブシステム１７０、１３２のコンポーネントとしてではなく、システムソフトウェア１６６、１２８のコンポーネントとして（例えば、オペレーティングシステム２１０、２３０のコンポーネントとして）具現化され得る。例えば、ネットワークトランスポート層２２４、２４４はそれぞれ、標準的なオペレーティングシステム依存のソケットベースのネットワークトランスポートメカニズムとして具現化され得る。すなわち、ネットワークトランスポート層２２４、２４４の実装は、デバイス１５０、１１０に提供される１以上のオペレーティングシステムに依存し得る。環境２００の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組合せとして具現化され得る。さらに、いくつかの実施形態において、環境２００のモジュールの一部又は全ては、他のモジュール若しくはソフトウェア／ファームウェア構造と統合され得る、又は、他のモジュール若しくはソフトウェア／ファームウェア構造の一部を形成し得る。
【００２５】
図２に示されるモバイルコンピューティングデバイス１５０を参照すると、例示的なモバイルＵｏＩＰサブシステム１７０は、モバイルコンピューティングデバイス１５０上の別個のアプリケーションとして取得され（例えば、ユーザにより、ウェブサイト又は「アプリケーションストア」からネットワークを介してダウンロードされ）インストールされ得るソフトウェアスタックとして具現化され得る。モバイルＵｏＩＰサブシステム１７０の諸部分は、ユーザモードサービス（例えば、特権なし）又はカーネルモードサービス（例えば、特権あり）として実装され得る。ＵｏＩＰサブシステム１７０のコンポーネントは、モバイルコンピューティングデバイス１５０上に仮想ＵＳＢセンサ２１８を作成し、非ＵＳＢセンサ１５８からセンサデータを得、クライアントコンピューティングデバイス１１０から受信される、センサデータを求めるリクエストに従うために、複数の異なるシステムソフトウェアコンポーネント１６６と通信する。上述したように、例示的な仮想ＵＳＢセンサ２１８は、非ＵＳＢセンサ１５８のソフトウェアエミュレーション（又は、「抽象化（abstraction）」）である。仮想ＵＳＢセンサ２１８を作成するために、非ＵＳＢセンサ１５８の論理表現が、モバイルＵｏＩＰサブシステム１７０のコンポーネントとして、モバイルコンピューティングデバイス１５０上に定義されてインストールされる。非ＵＳＢセンサ１５８の論理表現を定義するために、非ＵＳＢセンサ１５８の様々な特性（デバイスタイプ、機能、データのタイプ、及び有効データ範囲等）が、例えば、ユニバーサルシリアルバスヒューマンインタフェースデバイス（「ＵＳＢ  ＨＩＤ」）仕様を使用して、記述子又はバイナリコードにマッピング又は変換される。非ＵＳＢセンサ１５８の論理表現は、仮想センサ記述子１６２として、モバイルコンピューティングデバイス１５０に記憶され得る。仮想センサ記述子１６２は、例えば、電子ファイル又はデータ構造として具現化され得る。仮想センサ記述子１６２の一部の例が、以下のコード例１に示される。
【数１】
2017507447.tif 000003
【００２６】
コード例１において、仮想ＵＳＢセンサ２１８は、３次元動き加速度計として定義されており、センサの様々な属性が、記述子言語を使用して成文化されている。仮想ＵＳＢセンサ２１８は、いくつかの実施形態において、クライアントＵｏＩＰサブシステム１３２からのデバイス列挙リクエストに応じて「アクティブ」になり、それ以外は非アクティブであり得る。仮想ＵＳＢセンサ２１８が、モバイルコンピューティングデバイス１５０上に作成されると、モバイルＵｏＩＰサブシステム１７０は、仮想センサ仕様（例えば、ＵＳＢ  ＨＩＤ動きセンサ仕様）に従って、（非ＵＳＢセンサ１５８によりキャプチャされた）センサデータをパッケージ化することにより、クライアントＵｏＩＰサブシステム１３２からのデバイス列挙リクエストに応答することができる。
【００２７】
仮想センサ仕様（例えば、ＵＳＢ  ＨＩＤ）に従ってパッケージ化するためのセンサデータを得るために、モバイルＵｏＩＰサブシステム１７０は、モバイルセンサフレームワーク２１４のアプリケーションプログラミングインタフェース（ＡＰＩ）を使用する。非ＵＳＢセンサ１５８からセンサデータを得るために使用される特定のＡＰＩは、オペレーティングシステムに依存し得る。例えば、モバイルコンピューティングデバイス１５０が、ＡＮＤＲＯＩＤ（登録商標）オペレーティングシステムを実行中である場合、モバイルセンサフレームワーク２１４は、センサデータを得るために使用され得るＳｅｎｓｏｒＭａｎａｇｅｒクラスＡＰＩを含み得る。一方、モバイルコンピューティングデバイス１５０が、ｉＯＳ（登録商標）オペレーティングシステムを実行中である場合、モバイルセンサフレームワーク２１４は、ＣＭｏｔｉｏｎＭａｎａｇｅｒクラスＡＰＩを含み得る。モバイルセンサフレームワーク２１４のこれらのＡＰＩは、モバイルセンサドライバ２１２とモバイルＵｏＩＰサブシステム１７０との間の通信を円滑にする。例えば、モバイルセンサフレームワーク２１４が、関連ＡＰＩを使用して、非ＵＳＢセンサ１５８によりキャプチャされた動きセンサデータをモバイルＵｏＩＰサブシステム１７０に定期的に（例えば、数ミリ秒（２〜３ミリ秒）ごとに）送信するように、モバイルＵｏＩＰサブシステム１７０は、モバイルＵｏＩＰサブシステム１７０自身をモバイルセンサフレームワーク２１４に登録することができる。モバイルセンサドライバ２１２は、オペレーティングシステム２１０が、非ＵＳＢセンサ１５８と直接通信して非ＵＳＢセンサ１５８からセンサデータを得、モバイルＵｏＩＰサブシステム１７０による使用のためにセンサデータを編成することを可能にするデバイス固有のドライバソフトウェアとして具現化され得る。モバイルセンサドライバ２１２は、非ＵＳＢセンサ１５８により理解可能なフォーマットで、センサデータリクエストを非ＵＳＢセンサ１５８に通信し、非ＵＳＢセンサ１５８からレスポンス（例えば、センサデータ）を受信し、非ＵＳＢセンサ１５８のレスポンスをモバイルセンサフレームワーク２１４に通信するために、オペレーティングシステム２１０及びモバイルセンサフレームワーク２１４とインタフェースをとる。センサデータをクライアントコンピューティングデバイス１１０に送信するために、モバイルＵＳＢプロトコル適応層２２２は、ＵＳＢ  ＰＡＬプロトコルに従ってセンサデータをカプセル化し、ネットワークトランスポート層２２４は、（例えば、伝送制御プロトコル（「ＴＣＰ」）を使用して、）カプセル化されたデータをＵｏＩＰ通信２５０としてクライアントコンピューティングデバイス１１０に送信する。モバイルＵＳＢ  ＰＡＬ２２２は、ＵＳＢリクエスト及びレスポンスをＰＡＬリクエスト及びレスポンスにマッピングすることにより、例えば、ＴＣＰオーバーＩＰを用いて、デバイス１１０とデバイス１５０との間の完全なＵＳＢ転送への論理トランスポートを提供する。モバイルＵＳＢ  ＰＡＬ２２２は、例えば、メモリ管理ロジックとデータ構造と転送キューとの組合せとして具現化され得る。ＵＳＢ  ＰＡＬプロト��ル仕様は、コンピューティングシステム１００の特定の実装の要件に従って定義され得る。いくつかの実施形態において、ＵＳＢ  ＰＡＬプロトコルの諸部分は、ＷｉＧｉｇシリアル拡張（「ＷＳＥ」）ＰＡＬ仕様の後にモデル化され得る。
【００２８】
図２に示されるクライアントコンピューティングデバイス１１０を参照すると、例示的なクライアントＵｏＩＰサブシステム１３２は、クライアントコンピューティングデバイス１１０上の別個のアプリケーションとして取得され（例えば、ユーザにより、ウェブサイト又は「アプリケーションストア」からネットワークを介してダウンロードされ）インストールされ得るソフトウェアスタックとして具現化され得る。クライアントＵｏＩＰサブシステム１３２は、クライアントコンピューティングデバイス１１０と、リモートにある（例えば、ネットワーク化された）ＵＳＢ周辺デバイスが共有されることを可能にする。クライアントＵｏＩＰサブシステム１３２の諸部分は、ＵｏＩＰサービスを提供し、必要に応じて既存のＵＳＢソフトウェアとインタフェースをとるよう設計されているソフトウェアを含む。クライアントＵｏＩＰサブシステム１３２の諸部分は、ユーザモードサービス（例えば、特権なし）又はカーネルモードサービス（例えば、特権あり）として実装され得る。クライアントＵｏＩＰサブシステム１３２のコンポーネントは、ユーザレベルアプリケーション１１８から、センサデータを求めるリクエスト（例えば、ＵＳＢリクエスト１２４）を受信し、リクエスト１２４をＵｏＩＰ通信２５０として編成し、ネットワーク１８０を介してＵｏＩＰ通信２５０をモバイルコンピューティングデバイス１５０に送信するために、複数の異なるシステムソフトウェアコンポーネント１２８と通信する。ＵＳＢリクエスト１２４は、サービスリクエストをクライアントＵｏＩＰサブシステム１３２に送信するためにクライアントセンサドライバ２３６により使用されるデータ構造を含む。
【００２９】
動作中、ユーザレベルアプリケーション１１８は、ユーザレベルアプリケーション１１８自身をセンサフレームワーク２３４に登録し、センサデータを求めるＵＳＢリクエスト１２４をセンサフレームワーク２３４に定期的に送信することができる。センサフレームワーク２３４は、リクエスト１２４がＵＳＢセンサドライバ２３６により読み取られ処理され得るように、ユーザレベルアプリケーション１１８から受信されたリクエスト１２４を編成する。しかしながら、ＵＳＢセンサドライバ２３６は、センサハードウェアと直接インタフェースをとる代わりに、クライアントＵｏＩＰサブシステム１３２とインタフェースをとる。これを行うために、ＵＳＢセンサドライバ２３６は、クライアントＵｏＩＰサブシステム１３２により読み取られ処理され得るフォーマットで（例えば、ＵＳＢ  ＨＩＤリクエストとして）、センサデータリクエスト１２４をクライアントＵｏＩＰサブシステム１３２に渡す。
【００３０】
仮想ＵＳＢセンサハブ２３８は、仮想ＵＳＢセンサ２１８がＵＳＢトランスポートメカニズム２２０、２４０を介して接続する「スロット」として動作する。したがって、仮想ＵＳＢセンサハブ２３８は、http://www.usb.org/developers/docs/においてアクセスすることができるＵＳＢ仕様書に記載されているハードウェアＵＳＢハブインタフェースのソフトウェアエミュレーションとして具現化され得る。仮想ＵＳＢセンサハブ２３８は、仮想ＵＳＢセンサ２１８及び／又は他のＵＳＢ周辺デバイスを列挙し、適用可能なＵＳＢクライアントドライバ（例えば、ＵＳＢセンサドライバ２３６）をロードし、ＵＳＢクライアントドライバからのＵＳＢリクエスト１２４を、クライアントＵＳＢ  ＰＡＬ２４２により読み取られ処理され得るリクエストに変換する仮想ハブドライバ又はサービスとして具現化され得る。クライアントＵＳＢ  ＰＡＬ２４２は、ＵＳＢ  ＰＡＬプロトコルに従ってＵＳＢリクエスト１２４をカプセル化し、（例えば、ＴＣＰを使用して、）カプセル化されたリクエストをＵｏＩＰ通信２５０としてモバイルコンピューティングデバイス１５０に送信するために、ネットワークトランスポート層２４４とインタフェースをとる。カプセル化されたセンサデータリクエストが、ネットワーク１８０を介して送信され、モバイルコンピューティングデバイス１５０においてネットワークトランスポート層２２４により受信され、モバイルＵＳＢ  ＰＡＬ２２２により復号され、上述したように、モバイルコンピューティングデバイス１５０により処理される。
【００３１】
次に図３を参照すると、クライアントコンピューティングデバイス１１０上のクライアントアプリケーション（例えば、ユーザレベルアプリケーション１１８）が、モバイルコンピューティングデバイス１５０の非ＵＳＢセンサ１５８により得られたセンサデータにアクセスして該センサデータを使用することを可能にするための方法３００の例が示されている。方法３００の諸部分は、コンピューティングシステム１００、例えば、クライアントコンピューティングデバイス１１０及び／又はモバイルコンピューティングデバイス１５０により実行され得る。ブロック３１０において、コンピューティングシステム１００は、モバイルコンピューティングデバイス１５０上に仮想ＵＳＢセンサ２１８を作成する。これを行うために、モバイルＵｏＩＰサブシステム１７０が、モバイルコンピューティングデバイス１５０にインストールされ、仮想センサ記述子１６２が、モバイルコンピューティングデバイス１５０により読み取られ実行される。モバイルＵｏＩＰサブシステム１７０のインストールは、エンドユーザにより又は（例えば、ソフトウェアアップデートの場合には）自動プロセスにより開始され得る。ブロック３１２において、クライアントアプリケーション（例えば、ユーザレベルアプリケーション１１８等のセンサベースのアプリケーション）の使用が、クライアントコンピューティングデバイス１１０上で開始される。これを行うために、エンドユーザ又は自動プロセスは、（例えば、クライアントコンピューティングデバイス１１０のディスプレイスクリーン上のグラフィカル要素をタップ又は選択することにより）クライアントアプリケーションを起動することができる。起動プロセスの一部として、クライアントアプリケーションは、クライアントアプリケーションの実行中に必要なセンサデータをクライアントアプリケーションに提供するために使用され得るセンサを識別するためのデバイス列挙リクエストを発することができる。
【００３２】
ブロック３１４において、クライアントコンピューティングデバイス１１０が仮想ＵＳＢセンサ２１８を検出して認識したかどうかについて判定がなされる。モバイルコンピューティングデバイス１５０とクライアントコンピューティングデバイス１１０との間にネットワーク接続（例えば、ＴＣＰ接続）が存在する場合、仮想ＵＳＢセンサ２１８は、アクティブになってセンサデータを送信するために利用可能になり、モバイルコンピューティングデバイス１５０（例えば、モバイルＵｏＩＰサブシステム１７０）は、クライアントコンピューティングデバイス１１０から、仮想ＵＳＢセンサ２１８を求めるデバイス列挙リクエストを受信する。仮想ＵＳＢセンサ２１８がアクティブになった場合、モバイルコンピューティングデバイス１５０は、デバイス列挙リクエストに対するレスポンスをクライアントコンピューティングデバイス１１０に送信する。クライアントコンピューティングデバイス１５０が、仮想ＵＳＢセンサ２１８を検出していない場合、方法３００はブロック３１４に戻る。クライアントコンピューティングデバイス１１０が、仮想ＵＳＢセンサ２１８を認識した場合、方法３００はブロック３１６に進む。デバイス列挙リクエストに対するモバイルコンピューティングデバイス１５０のレスポンスのクライアントコンピューティングデバイス１１０による受信は、ブロック３１６における、クライアントコンピューティングデバイス１１０による対応するセンサ機能ドライバ（例えば、クライアントセンサドライバ２３６）のロードをトリガする。
【００３３】
ブロック３１８において、クライアントアプリケーション（例えば、ユーザレベルアプリケーション１１８）が、仮想ＵＳＢセンサ２１８を介して非ＵＳＢセンサ１５８により提供され得る種類のセンサデータを求めるリクエスト（例えば、ＵＳＢリクエスト１２４）を発したかどうかについて判定がなされる。クライアントセンサドライバ２３６が、ユーザレベルアプリケーション１１８から、センサデータを求める（例えば、「動きセンサデータを得る（get  motion  sensor  data）」）リクエストを受信した場合、この判定は肯定的な結果となる。そのようなリクエストが受信されていない場合、方法３００はブロック３１８に戻る。センサデータリクエストが、ユーザレベルアプリケーション１１８から受信された場合、クライアントセンサドライバ２３６は、センサデータリクエストをＵＳＢリクエスト１２４として（例えば、ＵＳＢ  ＨＩＤリクエストとして）編成し、方法３００はブロック３２０に進む。ブロック３２０において、クライアントＵｏＩＰサブシステム１３２は、例えば、上述したＵＳＢ  ＰＡＬプロトコルを使用して、ＵＳＢリクエスト１２４をＵｏＩＰ通信２５０として編成する。ブロック３２２において、クライアントＵｏＩＰサブシステム１３２は、例えば、ＴＣＰ／ＩＰプロトコルを使用して、ＵｏＩＰ通信２５０をモバイルコンピューティングデバイス１５０に送信する。
【００３４】
ブロック３２４において、モバイルＵｏＩＰサブシステム１７０は、モバイルコンピューティングデバイス１５０上のオペレーティングシステム２１０から、リクエストされたセンサデータを得る。これを行うために、モバイルＵｏＩＰサブシステム１７０は、モバイルセンサフレームワーク２１４を介して、モバイルセンサドライバ２１２とインタフェースをとることができる。例えば、モバイルＵｏＩＰサブシステム１７０が、モバイルセンサフレームワーク２１４に登録されると、モバイルセンサフレームワーク２１４は、モバイルセンサドライバ２１２が非ＵＳＢセンサ１５８から定期的に受信するセンサデータを、モバイルＵｏＩＰサブシステム１７０に転送することができ、モバイルＵｏＩＰサブシステム１７０は、センサデータをＵＳＢ  ＨＩＤレスポンスとして編成することができる。ブロック３２６において、ＵＳＢトランスポートメカニズム２２０は、例えば、上述したＵＳＢ  ＰＡＬプロトコルを使用して、センサデータ（例えば、ＵＳＢ  ＨＩＤレスポンスとしてフォーマット化されたセンサデータ）をＵｏＩＰ通信２５０として編成する。必要とされる場合、モバイルＵｏＩＰサブシステム１７０及び／又はクライアントＵｏＩＰサブシステム１３２は、１つのオペレーティングシステムフォーマットから別のオペレーティングシステムフォーマットへのセンサデータの適切な変換を実行する。例えば、モバイルＵｏＩＰサブシステム１７０又はクライアントＵｏＩＰサブシステム１３２は、モバイルコンピューティングデバイス１５０及びクライアントコンピューティングデバイス１１０により使用され得る異なるオペレーティングシステム（例えば、ＡＮＤＲＯＩＤ（登録商標）若しくはｉＯＳ（登録商標）からＷＩＮＤＯＷＳ（登録商標）へ、又はその逆）にわたる加速度計範囲差又は基準軸差（references  axis  difference）を補償するための数式を適用することができる。もちろん、モバイルコンピューティングデバイス１５０及びクライアントコンピューティングデバイス１１０の両方が、同じオペレーティングシステムを実行中である場合、そのような変換は必要でない。
【００３５】
ブロック３２８において、モバイルＵｏＩＰサブシステム１７０は、例えば、ＴＣＰ／ＩＰプロトコルを使用して、センサデータ（例えば、ＵＳＢ  ＨＩＤレスポンスとしてフォーマット化されたセンサデータ）をＵｏＩＰ通信２５０としてクライアントコンピューティングデバイス１１０に送信する。ブロック３３０において、クライアントＵｏＩＰサブシステム１３２は、ＵｏＩＰ通信２５０を復号し、センサデータ（例えば、ＵＳＢ  ＨＩＤレスポンスとしてフォーマット化されたセンサデータ）をクライアントセンサドライバ２３６に転送し、クライアントセンサドライバ２３６は、クライアントセンサフレームワーク２３４を介して、クライアントアプリケーションにより使用可能なフォーマットで（ここで、クライアントアプリケーションにより使用可能なフォーマットは実装に固有であり得る）、センサデータをユーザレベルアプリケーション１１８に提供する。ブロック３３２において、クライアントアプリケーション（例えば、ユーザレベルアプリケーション１１８）が、クライアントコンピューティングデバイス１１０上でまだ実行中であるかどうかについて判定がなされる。クライアントアプリケーションがまだ実行中であるとクライアントコンピューティングデバイス１１０が判定した場合、方法３００はブロック３１８に戻り、センサデータを求める次のリクエストを処理する。クライアントアプリケーションが実行中でない場合、方法３００は、終了する、又は、クライアントアプリケーション又は別のセンサベースのアプリケーションの次の起動を待つ。
【００３６】
次に図４を参照すると、「デバイスマネージャ」ユーティリティの一部としてクライアントコンピューティングデバイス１１０のディスプレイ上に提示され得るユーザインタフェースディスプレイスクリーン４００の例が示されている。ディスプレイスクリーン４００は、ＵＳＢデバイス（仮想ＵＳＢセンサ２１８）としての非ＵＳＢセンサ１５８のクライアントコンピューティングデバイス１１０による認識を示す、すなわち、別の言い方をすると、ネットワーク１８０を介するモバイルコンピューティングデバイス１５０による非ＵＳＢセンサ１５８の共有を示す。ディスプレイスクリーン４００は、上述したように、クライアントコンピューティングデバイス１１０が、デバイス列挙リクエストをモバイルコンピューティングデバイス１５０に発し、デバイス列挙リクエストに対するレスポンスを受信した後、エンドユーザに対して提示され得る。例示的なディスプレイスクリーン４００は、リスト４１０を表示する。リスト４１０は、クライアントコンピューティングデバイス１１０に接続されているデバイス又はクライアントコンピューティングデバイス１１０と通信しているデバイスを識別するものである。仮想ＵＳＢセンサ２１８が、クライアントコンピューティングデバイス１１０に接続されているとして、スクリーン位置４２０において識別される。ディスプレイスクリーン４００及び／又はデバイスマネージャは、いくつかの実施形態において、ユーザレベルアプリケーション１１８の一部として具現化され得る。
【００３７】
例
本明細書で開示した技術の例示的な例が、以下に提供される。本技術の実施形態は、以下に記載の例の任意の１以上及び任意の組合せを含み得る。
【００３８】
例１は、モバイルデバイスの非ユニバーサルシリアルバス（非ＵＳＢ）ハードウェアセンサにより得られたセンサデータを使用するユーザレベルアプリケーションを実行するためのコンピューティングデバイスであって、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続される、コンピューティングデバイスを含む。前記コンピューティングデバイスは、前記ユーザレベルアプリケーションに通信可能に接続されるユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムを含む。前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、前記ユーザレベルアプリケーションから、前記センサデータを求めるリクエストを受信し、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをユニバーサルシリアルバスデバイスとして認識し、前記モバイルデバイスのＵｏＩＰサブシステムと通信して、前記モバイルデバイスから前記センサデータを受信する。前記コンピューティングデバイスは、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムに通信可能に接続されるセンサフレームワークであって、前記ユーザレベルアプリケーションによる使用のために、前記の受信されたセンサデータを編成するセンサフレームワークをさらに含む。
【００３９】
例２は、例１の主題を含み、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、トランスポートメカニズム及び仮想センサハブを含み、前記トランスポートメカニズムは、前記モバイルデバイスへの送信のために、ＵＳＢ通信プロトコルに従って、前記センサデータを求める前記リクエストを編成し、前記ＵＳＢ通信プロトコルに従って編成された前記センサデータを受信し、前記仮想センサハブは、前記の受信されたセンサデータを、前記コンピューティングデバイスにより使用可能なフォーマットに変換する。
【００４０】
例３は、例１又は２の主題を含み、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、前記センサデータを求める前記リクエストを、ＵｏＩＰデータ読み取りリクエストとして編成し、前記ＵｏＩＰデータ読み取りリクエストを、前記モバイルデバイスの前記ＵｏＩＰサブシステムに送信し、前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記センサデータを受信する。
【００４１】
例４は、例１〜３のうちのいずれかの主題を含み、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、ユニバーサルシリアルバスヒューマンインタフェースデバイス（ＵＳＢ  ＨＩＤ）仕様に従って、前記モバイルデバイスの前記ＵｏＩＰサブシステムから受信された前記センサデータを編成する。
【００４２】
例５は、例１〜４のうちのいずれかの主題を含み、前記モバイルデバイスの前記ＵｏＩＰサブシステムは、前記非ＵＳＢハードウェアセンサを、前記モバイルデバイス上の仮想センサとして仮想化する。
【００４３】
例６は、例５の主題を含み、前記モバイルデバイスの前記ＵｏＩＰサブシステムは、ＵＳＢ  ＨＩＤ仕様に従って前記仮想センサを作成する。
【００４４】
例７は、例６の主題を含み、前記モバイルデバイスの前記ＵｏＩＰサブシステムは、ＵＳＢ  ＨＩＤ記述子ファイルを読み取ることにより前記仮想センサを作成する。
【００４５】
例８は、例１〜７のうちのいずれかの主題を含み、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、デバイス列挙リクエストを前記モバイルデバイスに送信し、前記モバイルデバイスの前記ＵｏＩＰサブシステムは、前記デバイス列挙リクエストに対するレスポンスを、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムに送信し、前記デバイス列挙リクエストに対する前記レスポンスは、前記コンピューティングデバイスに対して、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをＵＳＢデバイスとして識別させるものである。
【００４６】
例９は、例８の主題を含み、前記コンピューティングデバイスに対する前記ＵＳＢデバイスの識別に応じて、前記コンピューティングデバイスは、仮想の前記ＵＳＢデバイスに対応するセンサドライバをロードし、前記センサドライバは、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムと通信する。
【００４７】
例１０は、例１〜９のうちのいずれかの主題を含み、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサは、動きセンサを含み、前記ユーザレベルアプリケーションは、前記センサデータに応じたモーション機能（motion  feature）を含み、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムは、前記ユーザレベルアプリケーションと通信して、前記モバイルデバイスの前記ＵｏＩＰサブシステムと通信することにより前記ユーザレベルアプリケーションの前記モーション機能を動作させる。
【００４８】
例１１は、モバイルデバイスの非ユニバーサルシリアルバス（非ＵＳＢ）ハードウェアセンサにより得られたセンサデータを使用する、コンピューティングデバイス上のユーザレベルアプリケーションの実行を可能にするための方法であって、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続され、前記方法は、前記コンピューティングデバイスにより、前記ユーザレベルアプリケーションから、前記センサデータを求めるリクエストを受信するステップと、前記コンピューティングデバイスにより、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをユニバーサルシリアルバスデバイスとして認識するステップと、前記コンピューティングデバイスにより、前記モバイルデバイスのユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムと通信して、前記モバイルデバイスから前記センサデータを受信するステップと、前記コンピューティングデバイスにより、前記ユーザレベルアプリケーションによる使用のために、前記の受信されたセンサデータを編成するステップと、を含む、方法を含む。
【００４９】
例１２は、例１１の主題を含み、前記モバイルデバイスへの送信のために、ＵＳＢ通信プロトコルに従って、前記センサデータを求める前記リクエストを編成するステップと、前記ＵＳＢ通信プロトコルに従って編成された前記センサデータを受信するステップと、前記の受信されたセンサデータを、前記コンピューティングデバイスにより使用可能なフォーマットに変換するステップと、をさらに含む。
【００５０】
例１３は、例１１の主題を含み、前記センサデータを求める前記リクエストを、ＵｏＩＰデータ読み取りリクエストとして編成するステップと、前記ＵｏＩＰデータ読み取りリクエストを、前記モバイルデバイスの前記ＵｏＩＰサブシステムに送信するステップと、前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記センサデータを受信するステップと、をさらに含む。
【００５１】
例１４は、例１１の主題を含み、ユニバーサルシリアルバスヒューマンインタフェースデバイス（ＵＳＢ  ＨＩＤ）仕様に従って、前記モバイルデバイスの前記ＵｏＩＰサブシステムから受信された前記センサデータを編成するステップをさらに含む。
【００５２】
例１５は、例１１の主題を含み、前記非ＵＳＢハードウェアセンサを、前記モバイルデバイス上の仮想センサとして仮想化するステップをさらに含む。
【００５３】
例１６は、例１５の主題を含み、ＵＳＢ  ＨＩＤ仕様に従って前記仮想センサを作成するステップをさらに含む。
【００５４】
例１７は、例１６の主題を含み、ＵＳＢ  ＨＩＤ記述子ファイルを読み取ることにより前記仮想センサを作成するステップをさらに含む。
【００５５】
例１８は、例１１の主題を含み、デバイス列挙リクエストを前記モバイルデバイスに送信するステップと、前記デバイス列挙リクエストに対するレスポンスを、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムに送信するステップと、をさらに含み、前記デバイス列挙リクエストに対する前記レスポンスは、前記コンピューティングデバイスに対して、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをＵＳＢデバイスとして識別させるものである。
【００５６】
例１９は、例１８の主題を含み、前記コンピューティングデバイスに対する仮想の前記ＵＳＢデバイスの識別に応じて、仮想の前記ＵＳＢデバイスに対応するセンサドライバをロードするステップをさらに含み、前記センサドライバは、前記コンピューティングデバイスの前記ＵｏＩＰサブシステムと通信する。
【００５７】
例２０は、例１１の主題を含み、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサは、動きセンサを含み、前記ユーザレベルアプリケーションは、前記センサデータに応じたモーション機能を含み、前記方法は、前記モバイルデバイスの前記ＵｏＩＰサブシステムと通信することにより前記ユーザレベルアプリケーションの前記モーション機能を動作させるステップを含む。
【００５８】
例２１は、複数の命令を記憶しているメモリを含むコンピューティングデバイスであって、前記複数の命令が、前記コンピューティングデバイスにより実行されたときに、前記複数の命令は、前記コンピューティングデバイスに、例１１〜２０のうちのいずれかの方法を実行させる、コンピューティングデバイスを含む。
【００５９】
例２２は、複数の命令を記憶している１以上のマシン読み取り可能な記憶媒体であって、前記複数の命令が実行されたことに応じて、前記複数の命令は、コンピューティングデバイスに、例１１〜２０のうちのいずれかの方法を実行させる、１以上のマシン読み取り可能な記憶媒体を含む。
【００６０】
例２３は、例１１〜２０のうちのいずれかの方法を実行する手段を含むコンピューティングデバイスを含む。
【００６１】
例２４は、統合された動きセンサを有さないコンピューティングデバイスであって、前記コンピューティングデバイスは、前記コンピューティングデバイス上の動きセンサベースのアプリケーションを実行するよう構成されており、前記コンピューティングデバイスは、ユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムであって、モバイルデバイスの非ユニバーサルシリアルバス動きセンサを、ユニバーサルシリアルバスヒューマンインタフェースデバイスとして認識し、ここで、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続され、前記動きセンサベースのアプリケーションから、動きセンサデータを求めるリクエストを受信し、前記動きセンサデータを求める前記リクエストを、前記モバイルデバイスのＵｏＩＰサブシステムに通信し、前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記のリクエストされた動きセンサデータを受信するＵｏＩＰサブシステムを含む、コンピューティングデバイスを含む。
【００６２】
例２５は、例２４の主題を含み、前記コンピューティングデバイスは、前記コンピューティングデバイス上の前記動きセンサベースのアプリケーションによる使用のために、前記の受信された動きセンサデータを編成する。
【００６３】
例２６は、例２４又は２５の主題を含み、前記モバイルデバイスの前記ＵｏＩＰサブシステムは、前記モバイルデバイスの前記非ユニバーサルシリアルバス動きセンサを仮想化することによりユニバーサルシリアルバスセンサを作成する。
【００６４】
例２７は、統合された動きセンサを有さないコンピューティングデバイス上の動きセンサベースのアプリケーションの実行を可能にするための方法であって、前記コンピューティングデバイスにより、モバイルデバイスの非ユニバーサルシリアルバスセンサを、ユニバーサルシリアルバスデバイスとして認識するステップであって、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続される、ステップと、前記コンピューティングデバイスにより、前記動きセンサベースのアプリケーションから、動きセンサデータを求めるリクエストを受信するステップと、前記コンピューティングデバイスにより、前記動きセンサデータを求める前記リクエストを、前記モバイルデバイスのユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムに通信するステップと、前記コンピューティングデバイスにより、前記モバイルデバイスの前記ＵｏＩＰサブシステムから、前記のリクエストされた動きセンサデータを受信するステップと、を含む、方法を含む。
【００６５】
例２８は、例２７の主題を含み、前記の受信された動きセンサデータを、１つのオペレーティングシステムフォーマットから別のオペレーティングシステムフォーマットに変換することにより、前記コンピューティングデバイス上の前記動きセンサベースのアプリケーションによる使用のために、前記の受信された動きセンサデータを編成するステップをさらに含む。
【００６６】
例２９は、例２７の主題を含み、前記モバイルデバイスの前記非ユニバーサルシリアルバスセンサを仮想化することによりユニバーサルシリアルバスセンサを作成するステップをさらに含む。
【００６７】
例３０は、複数の命令を記憶しているメモリを含むコンピューティングデバイスであって、前記複数の命令が、前記コンピューティングデバイスにより実行されたときに、前記複数の命令は、前記コンピューティングデバイスに、例２７〜２９のうちのいずれかの方法を実行させる、コンピューティングデバイスを含む。
【００６８】
例３１は、複数の命令を記憶している１以上のマシン読み取り可能な記憶媒体であって、前記複数の命令が実行されたことに応じて、前記複数の命令は、コンピューティングデバイスに、例２７〜２９のうちのいずれかの方法を実行させる、１以上のマシン読み取り可能な記憶媒体を含む。
【００６９】
例３２は、例２７〜２９のうちのいずれかの方法を実行する手段を含むコンピューティングデバイスを含む。
【００７０】
例３３は、モバイルデバイスの非ユニバーサルシリアルバス（非ＵＳＢ）ハードウェアセンサにより得られたセンサデータを使用するユーザレベルアプリケーションを実行するためのコンピューティングデバイスであって、前記モバイルデバイスは、ネットワークを介して、前記コンピューティングデバイスに通信可能に接続される、コンピューティングデバイスを含む。前記コンピューティングデバイスは、前記ユーザレベルアプリケーションから、前記センサデータを求めるリクエストを受信する手段と、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをユニバーサルシリアルバスデバイスとして認識する手段と、前記モバイルデバイスのユニバーサルシリアルバスオーバーインターネットプロトコル（ＵｏＩＰ）サブシステムと通信して、前記モバイルデバイスから前記センサデータを受信する手段と、前記ユーザレベルアプリケーションによる使用のために、前記の受信されたセンサデータを編成する手段と、を含む。
【００７１】
例３４は、例３３の主題を含み、前記モバイルデバイスへの送信のために、ＵＳＢ通信プロトコルに従って、前記センサデータを求める前記リクエストを編成する手段と、前記ＵＳＢ通信プロトコルに従って編成された前記センサデータを受信する手段と、前記の受信されたセンサデータを、前記コンピューティングデバイスにより使用可能なフォーマットに変換する手段と、を含む。
【００７２】
例３５は、例３３の主題を含み、前記センサデータを求める前記リクエストを、ＵｏＩＰデータ読み取りリクエストとして編成する手段と、前記ＵｏＩＰデータ読み取りリクエストを前記モバイルデバイスに送信する手段と、前記モバイルデバイスから前記センサデータを受信する手段と、を含む。
【００７３】
例３６は、例３３の主題を含み、ユニバーサルシリアルバスヒューマンインタフェースデバイス（ＵＳＢ  ＨＩＤ）仕様に従って、前記の受信されたセンサデータを編成する手段を含む。
【００７４】
例３７は、例３３の主題を含み、前記非ＵＳＢハードウェアセンサを、前記モバイルデバイス上の仮想センサとして仮想化する手段を含む。
【００７５】
例３８は、例３７の主題を含み、ＵＳＢ  ＨＩＤ記述子ファイルを読み取ることにより前記仮想センサを作成する手段を含む。
【００７６】
例３９は、例３８の主題を含み、デバイス列挙リクエストを前記モバイルデバイスに送信する手段と、前記デバイス列挙リクエストに対するレスポンスを、前記コンピューティングデバイスのＵｏＩＰサブシステムに送信する手段と、前記コンピューティングデバイスに対して、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサをＵＳＢデバイスとして識別させる手段と、を含む。
【００７７】
例４０は、例３９の主題を含み、前記コンピューティングデバイスに対する前記ＵＳＢデバイスの識別に応じて、仮想の前記ＵＳＢデバイスに対応するセンサドライバをロードする手段を含む。
【００７８】
例４１は、例４０の主題を含み、前記モバイルデバイスの前記非ＵＳＢハードウェアセンサは、動きセンサを含み、前記ユーザレベルアプリケーションは、前記センサデータに応じたモーション機能を含み、前記コンピューティングデバイスは、前記ユーザレベルアプリケーションと通信して、前記モバイルデバイスの前記ＵｏＩＰサブシステムと通信することにより前記ユーザレベルアプリケーションの前記モーション機能を動作させる手段を含む。
【図１】
2017507447.tif 000004
【図２】
2017507447.tif 000005
【図３】
2017507447.tif 000006
【図４】
2017507447.tif 000007
【国際調査報告】
2017507447.tif 000008
2017507447.tif 000009
2017507447.tif 000010