(57)【特許請求の範囲】
【請求項１】
センサーインタフェースであって、
複数のセンサー入力と；
複数のクライアントからのいくつかのデータ要求を受信するように、環境設定された複数のクライアント入力と、なお、前記いくつかのデータ要求は、少なくとも１つのデータ要求を含み、前記少なくとも１つのデータ要求は、特定の種類のデータを取り込むときに使用されるべき特定の物理センサーを識別することなく、戻されるべき前記特定の種類のデータを指定する；
ｉ）前記いくつかのデータ要求を満たすためにどのセンサーデータが使用されることができるのかを決定し、ｉｉ）前記いくつかの物理センサーからセンサーデータを受信するように前記センサー入力の中の複数のセンサー入力を環境設定し、ｉｉｉ）可能であれば、前記受信されたセンサーデータを用いて、前記いくつかのデータ要求を満たし、そして、ｉｖ）データ要求が競合するときは、明らかに競合する要求を満たす、あるいは前記データ要求を満たすことを調停するように、環境設定されたプロセッサーと；
を備えるセンサーインタフェース。
【請求項２】
前記プロセッサーは、１以上のクライアントの前記データ要求が満たされることができないときは、前記１以上のクライアントに、警報またはエラー通知を戻すように環境設定されている、
請求項１に記載のセンサーインタフェース。
【請求項３】
前記プロセッサーは、データ要求が満たされることができないときは、前記データ要求を無視するように、さらに環境設定されている、
請求項１に記載のセンサーインタフェース。
【請求項４】
前記プロセッサーは、
１以上の物理センサーが、明らかに競合する要求を、並行して満たすように環境設定されることができるかどうかを、
決定するように環境設定されている、
請求項１に記載のセンサーインタフェース。
【請求項５】
前記明らかに競合する要求は、第１のサンプリング速度でのデータの要求と、第２の異なるサンプリング速度でのデータの要求とを備え、
前記プロセッサーは、前記データをサブサンプリングすることによって前記明らかに競合する要求を満たすように環境設定されている、
請求項１に記載のセンサーインタフェース。
【請求項６】
前記プロセッサーは、前記データ要求を満たすことを調停するように環境設定されており、どのデータ要求が最初に達成されるのかの優先順位を付けることを備える、
請求項１に記載のセンサーインタフェース。
【請求項７】
モバイル装置であって、
複数のセンサーと、
センサーインタフェースと、
を備え、前記センサーインタフェースは、
前記複数のセンサーと通信する複数のセンサー入力と；
複数のクライアントからの複数のデータ要求を受信するように環境設定されたクライアント入力と、なお、前記複数のデータ要求は、少なくとも１つのデータ要求を含み、前記少なくとも１つのデータ要求は、特定の種類のデータを取り込むときに使用されるべき特定の物理センサーを識別することなく、戻されるべき前記特定の種類のデータを指定する；
前記複数のデータ要求と、前記複数のクライアントへの複数のクライアント接続とを、管理するように環境設定されたセンサマネージメント層と、なお、前記センサマネージメント層は、さらに、前記複数のセンサーへのアクセスを調停するように、そして、どのように前記複数のデータ要求が満たされるのかを決定するように、さらに環境設定され、前記センサマネージメント層はさらに、ｉ）前記複数のデータ要求を満たすためにどのセンサーデータが使用されることができるのかを決定し、ｉｉ）いくつかの物理センサーからセンサーデータを受信するように前記センサー入力の中の複数のセンサー入力を環境設定し、ｉｉｉ）可能であれば、前記受信されたセンサーデータを用いて、前記複数のデータ要求を満たし、そして、ｉｖ）データ要求が競合するときは、明らかに競合する要求を満たす、あるいは前記データ要求を満たすことを調停するように、環境設定される；
を備えている、
モバイル装置。
【請求項８】
前記センサマネージメント層は、特定のデータ要求を１以上のセンサーまたは１以上の仮想センサーにマッピングすることにより、どのように前記複数のデータ要求が満たされるのかを決定するように、環境設定されている；
請求項７に記載の装置。
【発明の詳細な説明】
【優先権の主張】
【０００１】
（３５Ｕ．Ｓ．Ｃ．§１１９に基づく優先権の主張）
本特許出願は、ここでの譲受人に譲渡され、参照によりここに明示的に組み込まれる、２００６年４月７日に出願された「センサーＡＰＩ：システム要求仕様書ＡＭＳＳ／ＤＭＳＳ／ＢＲＥＷ(Sensor API: System Requirements Specification AMSS/DMSS/BREW)」と題された米国特許仮出願第６０／７９０，２５２号の優先権を主張する。
【背景】
【０００２】
（分野）
本発明は、一般的には、センサーインタフェースに関し、より詳細には、部分的にまたは完全にセンサーに依存しないデータ要求をハンドリング(handling)することのできる拡張可能なセンサーインタフェース(extensible sensor interface)に関する。
【０００３】
（背景）
ハンドヘルドモバイル装置(handheld mobile devices)（以下、「モバイル装置(mobile devices)」）が１つまたはそれ以上の物理センサー(physical sensors)を内蔵することが普及しつつある。一例として、いくつかの物理センサー(a number of physical sensors)を内蔵することができるモバイル装置の種類は、電話、スマートフォン、携帯情報端末（ＰＤＡ）、ゲームおよびその他の機器のコントローラ、腕時計、および、バイオフィードバック装置を含む。これらの装置が内蔵することができる物理センサーの種類は、限定はされないが、気圧センサー、加速度計、磁場センサー（例えば、コンパス）、ジャイロスコープ、および、バイオメトリックセンサーを含む。ここに定義されるように、「物理センサー」は、物理的現象を測定してこの物理的現象の量を表現する出力信号（典型的には、ディジタル電気信号）を提供することのできる何らかのセンサーである。物理的現象は、例えば、温度、圧力、方向、輝度、または、心拍数であってもよい。
【０００４】
より多くの多様な物理センサーからのデータを必要とするアプリケーションをモバイル装置に提供したいという要望が増大するにつれて、また、物理センサーの種類、型式、および、構成が増加するにつれて、異なるハードウェアプラットフォーム（例えば、異なる組のセンサーを内蔵するプラットフォーム）を有するモバイル装置に移植することのできるアプリケーションをアプリケーション開発者が開発することがより難しくなりつつある。また、その一方で、多種多様なアプリケーションをサポートすることのできるハードウェアプラットフォームをシステムエンジニアが提供することもより難しくなりつつある。その結果として、特定のモバイル装置のための感知能力とアプリケーションの特異的な組み合わせを定義するためにシステムエンジニアおよびアプリケーション開発者が協力して作業することが一般的になっている。いったん開発されると、感知能力とアプリケーションのこの特異的な組み合わせは、改善された装置または次世代の装置を開発するときにはほとんど使用されることはなく、感知能力とアプリケーションのこの特異的な組み合わせが開発された装置は、新しい感知能力とアプリケーションを内蔵するようにアップグレードすることができないことがある。したがって、より柔軟性のある拡張可能なセンサーインタフェースが必要とされている。
【発明の概要】
【０００５】
ここに開示される実施形態は、いくつかのセンサー入力(a number of sensor inputs)およびいくつかのクライアント入力(a number of client inputs)を備えたセンサーインタフェースを提供することによって、上述されたニーズに対処するものであり、いくつかのクライアント入力は、いくつかのクライアント(a number of clients)からいくつかのデータ要求(a number of data requests)を受信するように環境設定されており(configured)、そして、いくつかのデータ要求は、特定の種類のデータを取り込むときに使用されるべき特定の物理センサーを識別することなく、戻されるべき特定の種類のデータを指定する少なくとも１つのデータ要求を含む。また、センサーインタフェースは、プロセッサーを備え、このプロセッサーは、ｉ）いくつかのデータ要求を満たすにはどのセンサーデータを使用することができるか(what sensor data can be used)を決定し、ｉｉ）いくつかの物理センサーからセンサーデータを受信するように、センサー入力の中のいくつか(ones of the sensor inputs)を環境設定し、および／または、ｉｉｉ）可能であれば、受信されたセンサーデータを用いていくつかのデータ要求を満たすように、環境設定される。
【図面の簡単な説明】
【０００６】
【図１】第１の例示的なセンサーインタフェースを示す図である。
【図２】図１に示されるようなセンサーインタフェースのような、または図３に示されるようなセンサーインタフェースのような、センサーインタフェースを使用する方法を説明するフローチャートである。
【図３】第２の例示的なセンサーインタフェースを内蔵する装置を示す図である。
【詳細な説明】
【０００７】
「例示的な)」という用語は、ここでは、「例(example)、インスタンス(instance)、または、例証(illustration)として機能している」を意味するのに使用される。「例示的な」としてここに説明されるいずれの実施形態も、必ずしもその他の実施形態よりも好ましいものまたは有利なものであると解釈されるべきではない。
【０００８】
この記載の「背景」において説明された状況において、図１は、いくつかのセンサー入力１０６と、いくつかのクライアント入力１０２と、プロセッサー１０４とを備えたセンサーインタフェース１００を示す。クライアント入力１０２は、いくつかのクライアント１０８、１１０、１１２からいくつかのデータ要求を受信するように環境設定され、また、プロセッサー１０４は、１）いくつかのデータ要求を満たすためにはどのセンサーデータを使用することができるかを決定し、２）いくつかの物理センサー１１４、１１６、１１８、１２０からセンサーデータを受信するように、センサー入力１０６の中のいくつかを環境設定し、かつ、３）可能であれば、受信されたセンサーデータを用いて、いくつかのデータ要求を満たす、ように環境設定される。
【０００９】
ここにおいて定義されるように、「いくつかの(a number of)」は、「１つまたはそれ以上の(one or more)」を意味し、また、「複数の(a plurality of)」は、「２つまたはそれ以上の(two or more)」を意味する。前述の段落で説明された、いくつかのセンサー入力１０６、いくつかのクライアント入力１０２、いくつかのクライアント１０８、１１０、１１２、いくつかのデータ要求、および、いくつかの物理センサー１１４、１１６、１１８、１２０のそれぞれは、複数のこれらの要素をさまざまに(variously)含んでもよい。
【００１０】
センサーインタフェース１００からデータを要求する「クライアント(clients)」１０８、１１０、１１２は、様々な形態を有してもよく、また、限定はされないが、いくつかのソフトウェアベースまたはファームウェアベースのアプリケーション、いくつかのユーザアプリケーションまたはシステムアプリケーション、または、装置オペレーティングシステムを含んでもよい。注意すべきことには、クライアント１０８、１１０、１１２は、ここでは、場合によっては、「アプリケーション(applications)」（上述したように、これらのアプリケーションには、様々な種類が存在しうる）と呼ばれることもある。クライアント１０８、１１０、１１２によって生成されるデータ要求の一部または全部(Some or all of the data requests)は、特定の種類のデータを取り込むときに使用されるべき特定の物理センサー１１４、１１６、１１８、１２０を識別することなく、センサーインタフェース１００によって戻されるべき特定の種類のデータを指定する(specify)ことができる。したがって、例えば、クライアント１０８は、直線運動データを取り込むときに使用されるべきセンサーの種類または型式を指定することなく、モバイル装置の直線運動データを要求してもよい。あるいは、クライアント１１０は、方位データを取り込むときに使用されるべきセンサーの種類または型式を指定することなく、モバイル装置の方位データを要求してもよい。これらの種類のセンサー非依存型要求（または、少なくとも部分的にセンサーに依存しない要求）は、センサーインタフェース１００がより効率的に使用されるのを可能にする。なぜなら、これらのセンサー非依存型要求は、プロセッサー１０４がどのデータ要求を満たすのにどのセンサーデータを使用することができるかを決定するときにプロセッサー１０４をそれほど制約することがないからである。以下は、この点をよりよく説明する一部の例(some examples)である。
【００１１】
第１に、特定の組のセンサー種類およびセンサー型式を有する装置を考察し、これらのセンサーは、特定の組のセンサーデータを提供することができるものである。従来、アプリケーションは、１つまたはそれ以上の装置の特定のセンサーをサポートするためのアプリケーションが開発されていなければ、装置のセンサーデータを得ることまたは使用することができなかった。これは、装置がアプリケーションによって必要とされる特定の「種類のデータ」を取り込むことができたとしても、アプリケーションが開発されている特定の「種類および型式のセンサー」によってこのデータが提供されない限り、アプリケーションはこのデータを使用することができないことを意味する。また、これは、アプリケーション開発者がアプリケーションが様々な装置と互換性のあるものであることを望むならば、このアプリケーション開発者はアプリケーションに多数の異なるセンサー種類および型式をサポートさせなければならないことを意味する。しかしながら、アプリケーションが、センサーインタフェース１００とともにうまく動作するように開発されるならば、このアプリケーションは、特定の種類のデータをただ単に要求し、かつ、センサーインタフェースに、１）要求を満たすためにどのセンサーデータを使用することができるかを決定させ、２）センサーデータを受信させ、かつ、３）要求を満たさせてもよい。
【００１２】
第２に、第１の組のセンサーを用いて当初は設計されたが、設計変更のために、第２の組のセンサーを内蔵するように再環境設定される(re-configured)装置を考察する。あるいは、アップグレード可能なセンサーの組を備えた装置を考察する。従来、装置のセンサーの組における変更は、装置のアプリケーションへの１つまたはそれ以上のパッチを必要とした。しかしながら、アプリケーションが、ただ単に特定の種類のデータを要求するならば、ファームウェアまたはソフトウェアのアップグレードは、恐らくは、センサーインタフェース１００から分離され得る（もしアップグレードがすこしでも必要であれば）。
【００１３】
第３に、無線通信インタフェースを備えた装置を考察する。センサーインタフェース１００を備えた装置を提供することによって、また、センサーインタフェース１００がインストールされた装置の外部に存在する物理センサーを動的に発見するようにプロセッサー１０４を環境設定することによって（例えば、無線インタフェースを介して）、装置は、１）装置の製造業者によってそれまでに意図されていないセンサーへのアクセス、２）装置内に内蔵するにはあまりにも大きすぎるまたは費用がかかりすぎるセンサーへのアクセス、あるいは、３）より小さい部分集合を構成する装置のユーザだけに有効なセンサーへのアクセスを、提供されることができる。
【００１４】
センサーインタフェース１００は、様々な形で使用されてもよいが、１つの例示的な方法が、図２に示される。方法２００（図２）によれば、センサーインタフェース１００のクライアント入力１０２は、いくつかのクライアント１０８、１１０、１１２からデータ要求を受信してもよい（ブロック２０２）。これまでに説明されたように、データ要求は、特定の種類のデータを取り込むときに使用されるべき特定の物理センサー１１４、１１６、１１８、１２０を識別することなく、戻されるべき特定の種類のデータを指定する少なくとも１つのデータ要求を含んでもよい。そして、センサーインタフェース１００は、データ要求を満たすためにどのセンサーデータを使用することができるかを決定し、センサーインタフェース１００が内蔵されている機器（例えば、装置）が現時点において(currently)センサーデータを受信することのできるいくつかの物理センサー１１４、１１６、１１８、１２０を動的に発見する（ブロック２０４、２０６）。随意的に(optionally)、物理センサー１１４、１１６、１１８、１２０の中の一部又はすべて(some or all)が、イネーブル状態にされ(enabled)、あるいは、環境設定されてもよい（ブロック２０８、２１０）。一実施形態においては、現在の組のデータ要求(current set of data requests)を満たすのに必要であると決定された物理センサーだけが、イネーブル状態にされかつ環境設定される。
【００１５】
データ要求を満たすためにはどのセンサーデータが必要であるかを決定した後、かつ、どのセンサー１０８、１１０、１１２を利用できるかを発見した後、方法２００は、利用できるセンサー１１４、１１６、１１８、１２０の中の一部または全部からセンサーデータを受信し、また、可能であれば、受信されたセンサーデータを用いて、データ要求を満たす。
【００１６】
注意すべきことには、図２に示される方法２００のステップは、異なる順序で実行されてもよく、また、一部のステップ(some steps)は、同時にまたは反復して実行されてもよい。
【００１７】
ある場合においては(in some cases)、方法２００は、１つまたはそれ以上の物理センサーから受信された生センサーデータがデータ要求を満たすために変換されなければあるいは組み合わせられなければ、１つまたはそれ以上の物理センサー１１４、１１６、１１８、１２０から受信された生センサーデータはデータ要求を満たすことができないことを決定してもよい。この点において、センサーインタフェース１００は、１つまたはそれ以上の「仮想センサー(virtual sensor)」１２２、１２４を提供するようにプログラムされてもよい。ここに定義されるように、「仮想センサー」は、１つまたはそれ以上の物理センサー(one or more physical sensors)１１４、１１６、１１８、１２０によって得られたセンサーデータを受信し、このセンサーデータを変換しあるいは組み合わせ、そして、出力を提供するセンサーである。一例として、出力は、１）物理現象の量を表現し、２）物理現象の判断または評価（例えば、明るいまたは暗い）を提供し、あるいは、３）事象の発生を通知する(signify)。センサーデータの例示的な「変換」および「組み合わせ」は、１）第２のセンサーデータを補正するために（例えば、第１のセンサーデータによって量を表現された状態の存在下において、第２のセンサーデータの精度を改善するために）第１のセンサーデータを使用すること、２）複数の物理センサー１１４、１１６、１１８、１２０からの出力を平均すること、３）１つまたはそれ以上の物理センサー１１４、１１６、１１８、１２０からの出力を正規化すること、４）センサーデータの単位(the units of sensor data)を変換すること、あるいは、５）１つまたはそれ以上の物理センサー１１４、１１６、１１８、１２０の出力に基づいて判断または評価(ratings)をおこなうことを含む。また、センサーデータは、非センサー源から取り込まれたデータに基づいて、変換されあるいは組み合わせられてもよい。例えば、複数のセンサー指示値が平均される場合、現在時刻が、平均値からある特定の指示値を棄却するのに使用されてもよい。以下は、センサーデータがセンサーインタフェース１００の仮想センサー１２２、１２４によってどのように変換されあるいは組み合わせられるかを説明する一部の具体的な例である。
【００１８】
仮想センサーの１つの例は、傾斜補正コンパスである。仮想コンパスは、３次元（３Ｄ）加速度計からの傾斜データとともに、「実」物理コンパスから生磁針向首方向データを受信してもよい。そして、現時点において利用可能な数学アルゴリズムを用いて、仮想センサーは、物理コンパスの傾斜を補償するのに加速度計データを使用することができる。
【００１９】
仮想センサーの別の例は、温度補正圧力センサーであり、仮想センサーは、圧力指示値を得る物理センサーの温度依存特性のために、圧力指示値を補正するのに感知された温度を使用する。
【００２０】
仮想センサーのさらなる例は、高度センサーである。例えば、仮想高度センサーは、気圧指示値を受信し、そして、対応する高度を推定するのにルックアップテーブルまたは数学アルゴリズムを使用してもよい。
【００２１】
仮想センサーのさらに別の例は、直線運動および方位センサーである。例示的な直線運動および方位センサーは、「センサーに基づいた方位システム(Sensor-Based Orientation System)」と題された米国特許出願第１１／６８６，９４５号に記載されており、これは、参照によりその全体がここに組み込まれる。
【００２２】
仮想センサーのまたさらなる例は、振動センサーであり、この振動センサーは、加速度計データを受信し、装置に加えられる振動の量を表現するのにこの加速度計データを使用する。
【００２３】
仮想センサーの部分集合(subset)は、「事象センサー(event sensors)」である。仮想事象センサーの１つの例は、「ゼロＧ(zero G)」センサーまたは落下検出センサーである。このようなセンサーは、加速度計からセンサーデータを受信し、このセンサーデータが落下検出しきい値を越えていないかどうかを決定するためにこのセンサーデータを監視し、そして、装置が落下したかどうかを指示する出力を提供してもよい。その他の仮想「事象センサー」は、例えば、装置が動かされているかどうか、温度変化、高度または圧力の変化、速度変化、または、装置が所定の距離だけ移動したかどうかを決定するために、様々な種類のセンサーデータを監視してもよい。
【００２４】
一部の仮想事象センサー(some virtual event sensors)は、グラフィカルユーザインタフェース(graphical user interface)（ＧＵＩ）のエレメント間をナビゲートするのに使用されてもよい。例えば、仮想事象センサーは、ユーザの傾斜または装置の方位を、ＧＵＩの特定のエレメントまたはコントロールにナビゲートしたいというユーザの願望に関連させてもよい。それと同時に、仮想事象センサーは、「シェイク(shake)」または「ダブルタップ(double-tap)」の証拠として加速度計データを監視し、そして、シェイクまたはダブルタップを、ユーザがナビゲートしたＧＵＩのエレメントまたはコントロールを選択したいというユーザの願望と解釈してもよい。
【００２５】
方法２００に戻ると、方法２００によって発見された物理センサー１１４、１１６、１１８、１２０がセンサーインタフェース１００によって受信されたデータ要求の中の一部または全部を満たすことができないときがあるかもしれない。すなわち、センサーデータが、必要とされるが、得ることができないときがあるかもしれない。これらの場合には、方法２００は、要求を満たすことができないクライアントに警報またはエラー通知を戻してもよい。あるいは、方法２００は、満たすことのできない要求をただ単に無視してもよい。
【００２６】
発見されたセンサー１１４、１１６、１１８、１２０は複数のデータ要求(a plurality of data requests)を満たすのに必要なデータを技術的に提供することはできるが、データ要求に関連するパラメータが競合する(conflict)と思われるときがあるかもしれない。例えば、１サンプル／秒（１ヘルツ）の速度で加速度計指示値を要求する第１の要求、および、１００サンプル／秒（１００ヘルツ）の速度で加速度計指示値を要求する第２の要求を考察する。これらの要求は、競合するが、両方の要求は、加速度計指示値を１００ヘルツの速度で取り込み、そして、第１の要求を達成するためにこの指示値をサブサンプリングすることによって、満たすことができる。データ要求が競合するとき、センサーインタフェース１００のプロセッサー１０４は、明らかに競合する要求をパラレルに(in parallel)満たすためには１つまたはそれ以上の物理センサー１１４、１１６、１１８、１２０がどのように環境設定されるかを決定してもよい。有効な解決方法が存在しなければ、プロセッサー１０４は、競合するセンサー環境設定を必要とするデータ要求を満たすことを調停してもよい。ある場合においては、調停は、どの要求が最初に達成されるかという優先順位を付与することを含んでもよい。他の場合においては、調停は、結果として、ある特定の要求に対して警報またはエラー通知を戻してもよい。
【００２７】
センサーインタフェース１００によって受信されたデータ要求の中の一部または全部が、完全にまたは部分的にセンサーに依存しないものであれば、センサーインタフェースのプロセッサー１０４は、特定の要求を満たすための２つまたはそれ以上の方法の中から選択するように環境設定されてもよい。例えば、加速度計および車輪速度センサーが、運動の方向を独立して指示することのできるデータを提供してもよい。したがって、一方のセンサーが、利用できなければ、データ要求は、他方のセンサーから得られたデータを用いて満たされてもよい。あるいは、２つのデータ要求間の競合を調整することができなければ、それぞれのデータ要求は、センサーの中の異なるものから得られたデータを用いて満たされてもよい。
【００２８】
また、完全にまたは部分的にセンサーに依存しないデータ要求は、その他の基準に基づいてデータ要求が満たされることを可能にする。例えば、一組のデータ要求を満たすために異なる組のセンサーを使用してもよいならば、データ要求を満たすのに使用される一組のセンサーは、例えば、電力を節約し、使用される物理センサーの数を最小化し、プロセッサー使用量を最小化し（例えば、より高性能な物理センサーを利用することができれば、仮想センサーに対する依存度を最小化する）、雑音を最小化し、応答時間を向上させ、あるいは、サービス要求の品質を満たすように選択されてもよい。また、より多くの作業を「スマート」センサー("smart" sensors)にさせることによって、プロセッサー使用量を最小化してもよい。例えば、「スマート」センサーは、センサーを自動環境設定すること、ＱｏＳ要求（以下で説明される）を読み込んで応答すること、１つまたはそれ以上の仮想センサーと同じようにデータを変換または組み合わせること、あるいは、「ゼロＧ」事象のような事象を検出すること（例えば、ゼロＧ加速度計と同様に）ができてもよい。
【００２９】
一実施形態においては、センサーインタフェース１００（図１）は、入力品質制御、出力品質制御、または、双方向品質制御を実施してもよい。例えば、入力側において、プロセッサー１０４は、センサーインタフェース１００によって受信されたデータ要求の中の１つまたは複数に関連するサービス品質（ＱｏＳ）要求を読み込むように環境設定されてもよい。ＱｏＳ要求は、例えば、測定の精度よりも１回の測定あたりの時間を優先させるための要求（または、その逆の要求）；１回の測定あたりの時間と測定の精度とをどのように釣り合わせるかに関する指示；測定サンプリング速度(measurement sampling rate)；測定間隔；測定キャプチャートリガー；測定リターントリガー（例えば、センサーデータが処理される前に、あるいは、データ要求が満たされる前に、満たされなければならないしきい値）；測定フィルタリングのための時間定数；測定解像度；帯域幅（例えば、サンプル数またはリターン速度）とデータ解像度とをどのように釣り合わせるかに関する指示；あるいは、加速度計ｇレンジの選択；を含んでもよい。
【００３０】
ここに定義されるように、環境設定要求がセンサーに固有のものであり、かつ、ＱｏＳ要求が少なくとも部分的にセンサーに依存しない点において、ＱｏＳ要求は、典型的な環境設定要求とは異なる。したがって、ＱｏＳは、どのセンサーを利用できるまたはこれらのセンサーがどのように動作するかに関する知識をまったく持たないセンサーユーザまたはアプリケーション開発者によって生成されてもよい。むしろ、センサーユーザまたはアプリケーション開発者は、どのような種類のデータを彼らが必要としているかおよびこのデータをどのようにして取り込むことができるかを知るだけでよい。この点において、アプリケーションプログラミングインタフェース（ＡＰＩ）が、センサーインタフェース１００のために定義されてもよく、そして、アプリケーション開発者は、センサーインタフェース１００がどのような種類のデータおよびＱｏＳ要求を処理することができるかを決定するために、ＡＰＩを使用してもよい。
【００３１】
プロセッサー１０４は、さらに、１）ＱｏＳ要求を満たすためにはどのセンサーデータを使用することができるかを決定し、そして、２）可能であれば、いずれかの関連するＱｏＳ要求に基づいて１つまたはそれ以上のデータ要求を満たすように環境設定されてもよい。プロセッサー１０４は、様々な形でＱｏＳ要求を使用してもよい。ある場合においては、プロセッサー１０４は、データ要求を満たすためには２つまたはそれ以上のセンサーの中のどれを使用すべきかを決定するために、ＱｏＳ要求を使用してもよい。例えば、２つのセンサーが、データ要求を満たすことができるが、センサーの中の一方は、時間または電力を節約することができるならば、プロセッサーは、時間または電力を節約するセンサーからデータを普通に取り込むように環境設定されてもよい。しかしながら、より高価なセンサーからデータを取り込むことによってのみＱｏＳ要求を満たすことができないならば、プロセッサーは、より高価なセンサーからデータを取り込むことによってＱｏＳ要求に応答するように環境設定されてもよい。別の場合においては、一方のセンサーから得られたデータを他方のセンサーから得られたデータと組み合わせることによって一方のセンサーから得られたデータを「補正」または改善することが可能であってもよい。これらの場合においては、ＱｏＳ要求は、プロセッサー１０４が通常はクライアントに「補正されない状態」で送出するデータをプロセッサー１０４に補正させてもよい。
【００３２】
ある場合においては、プロセッサー１０４は、データ要求に関連するサービス要求の品質を満たすことができる場合にのみこれらのデータ要求を満たすように環境設定されてもよい。別の場合においては、プロセッサー１０４は、可能であればいつでもデータ要求を満たし、そして、これらのデータ要求に関連するＱｏＳ要求を満たすために「ベストエフォート(best effort)」をなすように環境設定されてもよい。
【００３３】
出力側において、プロセッサー１０４は、データとデータ品質の１つまたはそれ以上のインジケータとを戻すように環境設定されてもよい。データ品質のインジケータは、例えば、データ精度の指示、データ解像度、データをひずませる事象が発生したことの指示（例えば、装置の衝撃）、センサー限界に達したことの指示（例えば、１０００ｇを越える大きさの加速度が検出された）、データサンプルが紛失されたことの指示、あるいは、データは有効であると考えられるかどうかの指示を含んでもよい。また、データは、タイムスタンプとともに戻されてもよい。
【００３４】
ＱｏＳ要求を読み込んで応答するように環境設定されることに加えて、プロセッサー１０４は、特定のセンサー１１４、１１６、１１８、１２０へ宛てられた環境設定要求を読み込んで応答するように環境設定されてもよい。
【００３５】
さらに、プロセッサー１０４は、１）センサーインタフェース１００の存在、あるいは、２）センサーインタフェース１００によって発見された物理センサー１１４、１１６、１１８、１２０の少なくとも１つの存在、のブロードキャスト(broadcast)を開始するように、あるいは、を「通知する(advertise)」ように、環境設定されてもよい。一実施形態においては、ブロードキャストは、センサーインタフェース１００の無線インタフェースを介して、開始される。このようにして、センサーインタフェース１００がインストールされた「装置Ａ」以外の装置上にインストールされたクライアントは、「装置Ａ」が利用することのできる物理センサーにアクセスするために、センサーインタフェース１００を使用してもよい。例えば、複数の携帯電話またはＰＤＡの中の一部または全部がセンサーインタフェース１００のようなセンサーインタフェースを備えていれば、ある装置(some devices)は、その他の装置のクライアントになってもよく、それによって、その他の装置（１つまたは複数）のセンサーインタフェース（１つまたは複数）を介して利用することのできる物理センサーにまたはそれどころか仮想センサーにもアクセスしてよい。
【００３６】
センサーインタフェース１００のクライアント入力は、有線入力および無線入力の両方を備えてもよい。一実施形態においては、少なくとも１つのクライアント入力（例えば、有線クライアント入力）は、センサーインタフェース１００が物理的にインストールされているモバイル装置上にインストールされたクライアントからのデータ要求を受信するために専用であってもよく、そして、少なくとも１つのその他のクライアント入力（例えば、無線クライアント入力）は、センサーインタフェース１００が物理的にインストールされているモバイル装置の外部に存在するクライアントからのデータ要求を受信するように環境設定されてもよい。
【００３７】
図３は、センサーインタフェース１００の１つの例示的な実装(implementation)３０２を示す。一例として、センサーインタフェース３０２は、いくつかのインストールされたアプリケーション(a number of installed applications)３０４、３０６、３０８、３１０を有する装置(device)３００内に実装されている(implemented)。装置３００は、ハンドヘルドモバイル装置、コンピュータ、または、運搬用車両のような様々な形態を有してもよい。また、インストールされたアプリケーションは、様々な形態を有してもよく、そして、例えば、ウェブブラウザ３０４、カメラ３０６、万歩計（登録商標）３０８、グローバルポジショニングシステム、Ｑｕａｌｃｏｍｍ  ｕｉＯｎｅユーザインタフェース３１０、または、装置オペレーティングシステムを備えてもよい。センサーインタフェース３０２は、いくつかのクライアント入力(a number of client inputs)３１２を備えてもよく、このクライアント入力３１２は、一実施形態においては、単一ＣＯＭポートの形態を有する。ＩＳｅｎｓｏｒＰｏｒｔ  ＡＰＩへのアクセスは、このＣＯＭポートを介して提供されてもよい。
【００３８】
ＩＳｅｎｓｏｒＰｏｒｔ  ＡＰＩは、いくつかの物理センサーおよび／または仮想センサー３１４、３１６、３１８、３２０、３２２、３２４への双方向コネクションを提供してもよく、また、ｏｐｅｎ／ｒｅａｄ／ｗｒｉｔｅ／ｃｌｏｓｅ／ｉｏｃｔｌのようなＩ／Ｏ機能をサポートしてもよい。ＩＳｅｎｓｏｒＰｏｒｔ  ＡＰＩは、いくつかのインストールされたアプリケーション３０４、３０６、３０８、３１０からデータ要求を受信するように環境設定され、そして、生のまたは抽出されたセンサーデータの形で応答を戻す。インストールされたアプリケーション３０４、３０６、３０８、３１０は、いくつかのＩＳｅｎｓｏｒＰｏｒｔ拡張部３２６を介して、抽出されたセンサーデータにアクセスしてもよく、そして、このＩＳｅｎｓｏｒＰｏｒｔ拡張部３２６は、いくつかの仮想センサー３２４へのアクセスを提供する。一例として、ＩＳｅｎｓｏｒＰｏｒｔ拡張部３２６は、振動情報（例えば、画像安定化アプリケーションのための）または方位情報にアクセスするための拡張部３２８、３３０を備えてもよい。
【００３９】
好ましくは、センサーインタフェースクライアント(sensor interface clients)３０４、３０６、３０８、３１０は、ＩＳｅｎｓｏｒＰｏｒｔ  ＡＰＩを介して、特定の既知のセンサー（例えば、特定の種類および型式のセンサー）と通信することは許されない。むしろ、クライアント３０４、３０６、３０８、３１０は、特定の種類の生のまたは抽出されたセンサーデータを要求することだけが許される。このように、また、これまでに説明したように、センサーインタフェース３０２は、データ要求がどのように満たされるかを決定するときにより多くの柔軟性を提供される。しかしながら、一実施形態においては、アプリケーションは、特定のセンサーと通信することが許される。
【００４０】
一実施形態においては、ＩＳｅｎｓｏｒＰｏｒｔ  ＡＰＩは、Ｑｕａｌｃｏｍｍ  ＢＲＥＷ  ４．０  Ｃｏｍｐｏｎｅｎｔ  ＳｅｒｖｉｃｅのＩＰＯＲＴ１インタフェースを継承または実施してもよく、このＩＰＯＲＴ１インタフェースは、直接遠隔操作可能読み込み／書き込みポート(directly remotable read/write port)を提供する。
【００４１】
センサーインタフェース１００は、さらに、センサードライバ層３３２を備える。センサードライバ層３３２は、ベンダー固有センサー初期化操作、較正操作、環境設定操作、および、読み込み／書き込み操作を実行するよう機能するいくつかのセンサードライバ３３４、３３６、３３８を備える。センサードライバ３３４、３３６、３３８は、Ｉ２Ｃインタフェース、ＵＡＲＴインタフェース、および、Ｂｌｕｅｔｏｏｔｈ（登録商標）インタフェースのような１つまたはそれ以上のセンサー通信インタフェース３４２、３４４、３４６への接続性をサポートするセンサー通信層３４０を介して、これらの動作を実行してもよい。好ましくは、センサードライバ層３３２およびセンサー通信層３４０の両方は、拡張可能なものであり、センサードライバ３３４、３３６、３３８およびセンサー通信インタフェース３４２、３４４、３４６がこれらの層に追加されてもよいことを意味する。
【００４２】
一例として、図３は、Ｉ２Ｃバス３４４を介して通信層３４０に結合された一対の物理センサー３１４、３１６と、ＵＡＲＴ３４６を介して通信層３４０に結合されたマイクロコントローラ３５０のアナログ−ディジタル変換器（ＡＤＣ）３４８に結合されたもう１つの一対のセンサー３１８、３２０と、Ｂｌｕｅｔｏｏｔｈコネクション３４２を介して通信層３４０に結合された物理センサー３２２とを示す。
【００４３】
センサーインタフェース１００は、さらに、センサーマネージメント層３５２を備える。センサーマネージメント層３５２は、複数のクライアントコネクションおよびデータ要求を管理し、物理センサー３１４、３１６、３１８、３２０、３２２へのアクセスを調停し、そして、仮想センサーをサポートする役割をなす。センサーマネージメント層３５２は、また、データ要求をどのように満たすかを決定する（例えば、特定のデータ要求を特定の物理センサーまたは仮想センサー３１４、３１６、３１８、３２０、３２２、３２４にマッピングすることによって）。センサーマネージメント層３５２は、また、図２に示される方法２００を実行することに対して大きな責任を有するものであってもよい。
【００４４】
場合によっては、複数のクライアント３０４、３０６、３０８、３１０は、１つまたはそれ以上の物理センサー３１４、３１６、３１８、３２０、３２２によって生成されたデータに同時にアクセスすることを要求するかもしれない。その結果として、物理センサーから得られたデータは、このデータを複数の消費者（例えば、センサーインタフェースクライアント３０４、３０６、３０８、３１０または仮想センサー３２４）に提供できるように、バッファリングされ、その後に、コピーされなければならないかもしれない。ある場合においては、物理センサーのデータバッファーは、単一サンプルを保持するような寸法を与えられてもよい。別の場合においては、センサーのデータバッファーは、複数のサンプルを保持するような寸法を与えられてもよい。さらに別の場合においては、センサーのデータバッファーは、サンプルのアレイを保持するような、必要であれば、例えば、３Ｄ加速度計によって生成されたｘ，ｙ，ｚ加速度値を保持するような寸法を与えられてもよい。バッファーは、また、特定のセンサーによって生成されるデータサンプルの数および寸法、データサンプルが取り込まれる速度、あるいは、センサーのデータにアクセスすることを要求するクライアント３０４、３０６、３０８、３１０の数のような要素に基づいて、動的に寸法を与えられてもよい。
【００４５】
物理センサーから得られるデータのコピーは、同じものである必要はない。例えば、センサーデータは、異なる数のサンプルを有するデータセットを生成するために、サブサンプリングされてもよい。あるいは、センサーのデータの特定のコピーは、低域通過フィルタリングまたはその他の前処理要件を施されてもよい。
【００４６】
一実施形態においては、センサーインタフェース３０２のクライアント３０４は、ＡＳＣＩＩメッセージによって、ＱｏＳ要求またはデータ要求を送信してもよい。これらのメッセージは、以下の形態を有してもよい。
【００４７】
「ｓｅｔ，＜ｄａｔａｔｙｐｅ１＞＝＜ａｔｔｒｉｂｕｔｅ１＞：＜ｖａｌｕｅ１＞［，＜ｄａｔａｔｙｐｅ２＞＝＜ａｔｔｒｉｂｕｔｅ２＞：＜ｖａｌｕｅ２＞］．．．」
「ｇｅｔ，＜ａｔｔｒｉｂｕｔｅ１＞［，ａｔｔｒｉｂｕｔｅ２＞］．．．」
上記メッセージを用いてｘ−軸における加速度を要求するために、ユーザは、所望の測定周波数を以下のように設定してもよい。
【００４８】
「ｓｅｔ，ａｃｃｅｌｘ：ｆｒｅｑ＝１０」
そして、データ生成を開始するために、以下のメッセージが、送信されるかもしれない。
【００４９】
「ｇｅｔ，ａｃｃｅｌｘ」
そして、以下のメッセージを含むデータのストリームを戻すことによって、データ要求が満たされてもよい。
【００５０】
「ｇｅｔ，ａｃｃｅｌｘ＝１２３，ｅｒｒｏｒｎｏ＝０」
「ｇｅｔ，ａｃｃｅｌｘ＝２３４，ｅｒｒｏｒｎｏ＝０」
データストリームは、以下のメッセージによって終結(terminated)してもよい。
【００５１】
「ｓｅｔ，ａｃｃｅｌｘ：ｆｒｅｑ＝０」
上記の例においては、戻されたデータストリームの「ｅｒｒｏｒｎｏ＝０」部分は、戻されたデータサンプル内にエラーが存在しないことを指示する。センサー限界に達したために（あるいは、装置の衝撃が読み込みを妨害したために）、データサンプルにエラーが存在すると思われるならば、「ｅｒｒｏｒｎｏ＝１」または「ｅｒｒｏｒｎｏ＝２」の指示が、影響を受けた１つまたは複数のサンプルとともに戻されてもよい。このように、エラーコードが、（何らかの種類の）エラーが存在するかどうかを簡単に通知するために使用されてもよく、あるいは、エラーコードが、様々な異なる種類のエラーを指示するために使用されてもよい。
【００５２】
当業者は、ここに開示された実施形態に関連して説明された様々な説明のための論理ブロック、モジュール、および、ステップは、電子的ハードウェア、コンピュータソフトウェア、または、これらの両方の組み合わせによって実施されてもよいことを理解するであろう。ハードウェアとソフトウェアのこの交換可能性を明確に示すために、様々な例としてのコンポーネント、ブロック、モジュール、および、ステップが、これらの機能に関して概略的に上記に説明された。このような機能が、ハードウェアまたはソフトウェアとして実施されるかどうかは、特定のアプリケーション、および、システム全体に課される設計制約に依存する。当業者は、説明された機能をそれぞれの特定アプリケーションごとに様々な形で実施することができるが、このような実施の決定は、本発明の範囲から逸脱することをもたらすとして解釈されるべきではない。
【００５３】
ここに開示された実施形態に関連して説明された様々な例としての論理ブロック、モジュール、および、ステップは、汎用プロセッサー、ディジタル信号プロセッサー（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはその他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェアコンポーネント、または、ここに説明された機能を実行するように設計されたこれらの何らかの組み合わせによって実施または実行されてもよい。汎用プロセッサーは、マイクロプロセッサーであってもよいが、別の形においては、プロセッサーは、任意の従来のプロセッサー、コントローラ、マイクロコントローラ、または、状態マシンであってもよい。プロセッサーは、また、コンピューティング装置を組み合わせたもの、例えば、ＤＳＰとマイクロプロセッサーを組み合わせたもの、複数のマイクロプロセッサー、ＤＳＰコアと併用して１つまたはそれ以上のマイクロプロセッサー、または、何らかのその他のこのような構成として実施されてもよい。
【００５４】
ここに開示された実施形態に関連して説明された方法またはアルゴリズムのステップは、直接にハードウェアとして、プロセッサーによって実行されるソフトウェアモジュールとして、あるいは、これらを組み合わせたものとして具体化されてもよい。ソフトウェアモジュールは、ランダムアクセスメモリー（ＲＡＭ）、フラッシュメモリー、リードオンリーメモリー（ＲＯＭ）、電気的プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、取り外し可能ディスク、ＣＤ−ＲＯＭ、または、当分野において公知の何らかのその他の形態の記憶媒体に存在してもよい。例示的な記憶媒体は、プロセッサーがこの記憶媒体から情報を読み出しかつこの記憶媒体に情報を書き込むことができるようにこのプロセッサーに結合される。別の形においては、記憶媒体は、プロセッサーと一体化されたものであってもよい。プロセッサーおよび記憶媒体は、ＡＳＩＣ内に存在してもよい。このＡＳＩＣは、ハンドヘルドモバイル装置（例えば、携帯電話またはＰＤＡ）のようなユーザ端末内に存在してもよい。別の形においては、プロセッサーおよび記憶媒体は、ユーザ端末内に個別コンポーネントとして存在してもよい。
【００５５】
開示された実施形態のこれまでの説明は、当業者が本発明を作りまたは使用するのを可能にするために提供されたものである。当業者は、これらの実施形態への様々な変更を容易に考えることができ、ここに定義された包括的な概念は、本発明の精神および範囲を逸脱することなく、その他の実施形態に適用されることができる。したがって、本発明は、ここに示された実施形態に限定されるように意図されてはおらず、ここに開示された原理および新規な整合する最も広い範囲が与えられるべきである。
以下に、本願発明の当初の特許請求の範囲に記載された発明を付記する。
［１］
センサーインタフェースであって、
いくつかのセンサー入力と；
いくつかのクライアントからいくつかのデータ要求を受信するように、環境設定されたいくつかのクライアント入力と、なお前記いくつかのデータ要求は、特定の種類のデータを取り込むときに使用されるべき特定の物理センサーを識別することなく、戻されるべき前記特定の種類のデータを指定する少なくとも１つのデータ要求を含む；
ｉ）前記いくつかのデータ要求を満たすためにどのセンサーデータを使用することができるかを決定し、ｉｉ）いくつかの物理センサーからセンサーデータを受信するように前記センサー入力の中のいくつかを環境設定し、かつ、ｉｉｉ）可能であれば、前記受信されたセンサーデータを用いて、前記いくつかのデータ要求を満たすように、環境設定されたプロセッサーと；
を備える、センサーインタフェース。
［２］
前記プロセッサーは、前記いくつかの物理センサーを動的に発見するように環境設定されている、［１］に記載のセンサーインタフェース。
［３］
前記プロセッサーは、前記センサーインタフェースがインストールされている装置の外部に存在する少なくとも１つの物理センサーを、動的に発見するように環境設定されている、［１］に記載のセンサーインタフェース。
［４］
前記いくつかのセンサー入力は、複数のセンサー入力である、［１］に記載のセンサーインタフェース。
［５］
前記いくつかの物理センサーは、複数の物理センサーである、［１］に記載のセンサーインタフェース。
［６］
前記いくつかのクライアント入力は、複数のクライアント入力である、［１］に記載のセンサーインタフェース。
［７］
前記いくつかのクライアントは、複数のクライアントである、［１］に記載のセンサーインタフェース。
［８］
前記プロセッサーは、前記センサーデータの中の少なくとも一部を組み合わせることによって、前記データ要求の中の少なくとも１つを満たすように環境設定されている、［１］に記載のセンサーインタフェース。
［９］
前記プロセッサーは、センサーデータの中の少なくとも１つを変換することによって前記データ要求の中の少なくとも１つを満たすように環境設定されている、［１］に記載のセンサーインタフェース。
［１０］
前記プロセッサーは、前記センサーデータを用いてデータ要求を満たす２つまたはそれ以上の方法の中から選択するように、環境設定されている、［１］に記載のセンサーインタフェース。
［１１］
前記プロセッサーは、前記センサーデータを用いてデータ要求を満たす２つまたはそれ以上の方法の中から選択するように環境設定されており、前記選択は、前記いくつかの物理センサーに提供される電力を節約するように行われる、［１］に記載のセンサーインタフェース。
［１２］
前記プロセッサーは、前記いくつかの物理センサーの中の前記データ要求を満たすのに必要なものだけをイネーブル状態にするように環境設定されている、［１］に記載のセンサーインタフェース。
［１３］
前記プロセッサーは、前記データ要求を満たすのに必要であれば、前記いくつかの物理センサーの中の少なくとも１つを環境設定するように環境設定されている、［１］に記載のセンサーインタフェース。
［１４］
前記プロセッサーは、前記プロセッサーが環境設定され環境設定する前記少なくとも１つの物理センサーの、競合する環境設定を必要とする前記のデータ要求を満たすことを調停するように、環境設定されている、［１３］に記載のセンサーインタフェース。
［１５］
前記プロセッサーは、前記データ要求の中の複数の競合するものをパラレルに満たすために、前記いくつかの物理センサーの中の少なくとも１つを環境設定するように環境設定されている、［１］に記載のセンサーインタフェース。
［１６］
前記プロセッサーは、ｉ）前記データ要求の中の１つまたは複数に関連するサービス要求の品質を読み込み、ｉｉ）サービス要求の前記品質を満たすためにはどのセンサーデータを使用することができるかを決定し、かつ、ｉｉｉ）可能であれば、サービス要求の関連するいずれかの品質に基づいて、前記１つまたはそれ以上のデータ要求を満たすように、環境設定されている、［１］に記載のセンサーインタフェース。
［１７］
前記プロセッサーは、サービス要求の前記品質の中の少なくとも１つに応じて、前記データ要求の中の少なくとも１つを満たすために、前記センサーデータの少なくとも一部を組み合わせるように環境設定されている、［１６］に記載のセンサーインタフェース。
［１８］
前記プロセッサーは、データと前記データの品質のインジケータとの両方を戻すことによって、前記データ要求の中の少なくとも１つを満たすように環境設定されている、［１６］に記載のセンサーインタフェース。
［１９］
前記プロセッサーは、データと前記データの有効性のインジケータとの両方を戻すことによって、前記データ要求の中の少なくとも１つを満たすように環境設定されている、［１６］に記載のセンサーインタフェース。
［２０］
前記プロセッサーは、データと前記データの品質のインジケータとの両方を戻すことによって、前記データ要求の中の少なくとも１つを満たすように環境設定されている、［１］に記載のセンサーインタフェース。
［２１］
前記プロセッサーは、データと前記データの有効性のインジケータとの両方を戻すことによって、前記データ要求の中の少なくとも１つを満たすように環境設定されている、［１］に記載のセンサーインタフェース。
［２２］
無線インタフェースをさらに備え、前記プロセッサーは、前記無線インタフェースを介して、前記物理センサーの中の少なくとも１つの存在のブロードキャストを開始するように環境設定されている、［１］に記載のセンサーインタフェース。
［２３］
無線インタフェースをさらに備え、前記プロセッサーは、前記無線インタフェースを介して、前記センサーインタフェースの存在のブロードキャストを開始するように環境設定されている、［１］に記載のセンサーインタフェース。
［２４］
前記いくつかのクライアント入力は、ｉ）前記センサーインタフェースが物理的にインストールされているモバイル装置上にインストールされたクライアントからのデータ要求を受信するために専用である少なくとも１つの有線クライアント入力、および、ｉｉ）前記センサーインタフェースが物理的にインストールされている前記モバイル装置の外部に存在するクライアントからのデータ要求を受信するように環境設定されている少なくとも１つの無線クライアント入力、を含む、［１］に記載のセンサーインタフェース。
［２５］
いくつかのクライアントからデータ要求を受信することと、なお前記データ要求は、特定の種類のデータを取り込むときに使用されるべき特定の物理センサーを識別することなく、戻されるべき前記特定の種類のデータを指定する少なくとも１つのデータ要求を含む；
前記データ要求を満たすためにはどのセンサーデータを使用することができるかを決定することと；
装置が現時点においてセンサーデータを受信することのできるいくつかの物理センサーを動的に発見することと；
前記データ要求を満たすのに使用することのできる前記センサーデータの一部または全部を、前記いくつかの物理センサーのいくつかから受信することと；
可能であれば、前記受信されたセンサーデータを用いて前記データ要求を満たすことと；
を備える方法。
［２６］
前記いくつかの物理センサーの中の、前記データ要求を満たすのに使用されるものをイネーブル状態にすること、をさらに備える［２５］に記載の方法。
［２７］
前記データ要求を満たすのに必要であれば、前記いくつかの物理センサーの中の少なくとも１つを環境設定すること、をさらに備える［２５］に記載の方法。
［２８］
前記受信されたセンサーデータの中の少なくとも一部を組み合わせること、をさらに備える［２５］に記載の方法。
［２９］
前記受信されたセンサーデータの中の少なくとも一部を変換すること、をさらに備える［２５］に記載の方法。
［３０］
前記動的に発見された物理センサーの中の少なくとも１つの存在をブロードキャストすること、をさらに備える［２５］に記載の方法。
［３１］
インストールされたいくつかのアプリケーションと；
いくつかのセンサー通信インタフェースと；
ｉ）前記インストールされたいくつかのアプリケーションからデータ要求を受信し、かつ、ｉｉ）前記データ要求に対する応答を前記インストールされたいくつかのアプリケーションに戻すように、環境設定されているアプリケーションプログラミングインタフェース（ＡＰＩ）を提供し、
前記いくつかのセンサー通信インタフェースを介して、いくつかの物理センサーと通信するように環境設定された、いくつかのセンサードライバをホストし、そして、
可能であれば、ｉ）前記データ要求を満たすにはどのセンサーデータを使用することができるかを決定すること、ｉｉ）前記データ要求を満たすのに使用することのできる前記センサーデータの中の一部または全部を得るために前記センサードライバの中の少なくとも１つを使用すること、および、ｉｉｉ）可能であれば、前記データ要求を満たすために前記得られたセンサーデータを使用することによって、前記データ要求を満たす、
ように環境設定されたセンサーインタフェースと；
を備えるハンドヘルドモバイル装置。
［３２］
前記インストールされたいくつかのアプリケーションは、ウェブブラウザ、カメラ、万歩計、および、グローバルポジショニングシステムの中の少なくとも１つを含む、［３１］に記載のハンドヘルドモバイル装置。
［３３］
前記センサーインタフェースは、ｉ）前記受信されたセンサーデータの中の少なくとも一部を組み合わせる仮想センサーを提供し、かつ、ｉｉ）前記仮想センサーの出力を用いて、前記データ要求の中の少なくとも１つを満たす、［３１］に記載のハンドヘルドモバイル装置。
［３４］
前記センサーインタフェースは、ｉ）前記受信されたセンサーデータの中の少なくともいくつかを変換する仮想センサーを提供し、ｉｉ）前記仮想センサーの出力を用いて、前記データ要求の中の少なくとも１つを満たす、［３１］に記載のハンドヘルドモバイル装置。
【図１】
0005539443.tif 000002
【図２】
0005539443.tif 000003
【図３】
0005539443.tif 000004