(57)【特許請求の範囲】
【請求項１】
無線デバイスであって、
機能ユニットと、
前記機能ユニットに結合された、無線トランシーバおよびアンテナと、
前記機能ユニットと前記無線トランシーバとに結合され、クロック信号を生成するように構成されたクロックと、
を備え、
前記無線デバイスは、少なくとも１つの無線スレーブデバイスに無線で結合され、前記機能ユニットは、
ａ）前記クロックに基づいて、前記少なくとも１つのスレーブデバイスとの最後に成功したキープアライブ送信が行われてから経過した時間量を決定し、
ｂ）前記最後に成功したキープアライブ送信からの前記決定された、経過した時間量に基づいて、前記少なくとも１つのスレーブデバイスに送信するキープアライブ送信の回数と、次にスケジュールされたキープアライブ送信の時間に関する前記キープアライブ送信についての送信時間とを決定し、
ｃ）前記決定された送信時間ごとに、前記少なくとも１つのスレーブデバイスに前記回数分のキープアライブ送信の連続送信を開始する、
ように構成され、
前記機能ユニットは、さらに、
前記少なくとも１つのスレーブデバイスからの受信されたキープアライブ送信に基づいて、前記クロックの誤差を調整し、それによって、前記クロックを前記少なくとも１つのスレーブ無線デバイスに同期する、
ように構成される、無線デバイス。
【請求項２】
前記機能ユニットは、さらに、
前記キープアライブ送信についての周波数チャネルを決定し、
前記少なくとも１つのスレーブデバイスが前記回数分のキープアライブ送信のうちの少なくとも１つを受信することに応答して、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を受信し、
前記少なくとも１つのスレーブデバイスからの前記キープアライブ送信を受信することに応答して、前記回数分のキープアライブ送信の連続送信を中止し、それによって、前記回数分のキープアライブ送信のうちのいずれの残りのものも送信しない、
ように構成される、請求項１に記載の無線デバイス。
【請求項３】
送信する前記キープアライブ送信の回数を決定するために、前記機能ユニットは、
予測されたクロックドリフト誤差レートにさらに基づいて、前記キープアライブ送信の回数および送信時間を決定する、
ように構成される、請求項１に記載の無線デバイス。
【請求項４】
前記機能ユニットは、指定された時間量の間、前記少なくとも１つのスレーブデバイスからのキープアライブ送信の検出を失敗することに応答して、ａ）乃至ｃ）を実行するように構成される、請求項１に記載の無線デバイス。
【請求項５】
前記機能ユニットは、さらに、
前記指定された時間量の間、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を検出することのそれぞれの失敗に応答して、そのたびに、ａ）乃至ｃ）の複数の繰り返しを実行する、なお、前記複数の繰り返しのうちの少なくとも２つについての前記送信時間は、異なる、
ように構成される、請求項４に記載の無線デバイス。
【請求項６】
前記機能ユニットは、さらに、
ａ）乃至ｃ）を指定された回数実行した後、前記少なくとも１つのスレーブデバイスからのキープアライブ送信の検出を失敗することに応答して、予測されたクロックドリフトレートを増大させる、
ように構成される、請求項１に記載の無線デバイス。
【請求項７】
前記回数分のキープアライブ送信の各送信は、送信フレームの境界上で行われる、請求項１に記載の無線デバイス。
【請求項８】
前記機能ユニットは、
プロセッサと、
前記プロセッサに結合されたメモリと、
を備える、請求項１に記載の無線デバイス。
【請求項９】
前記機能ユニットは、１つまたは複数の、
プログラマブルハードウェアエレメント、または
特定用途向け集積回路（ＡＳＩＣ）、
を備える、請求項１に記載の無線デバイス。
【請求項１０】
スリープクロック誤差から回復するための方法であって、
無線マスタデバイスが、クロックに基づいて、少なくとも１つのスレーブデバイスへの無線接続に関する最後に成功したキープアライブ送信が行われてから経過した時間量を決定することと、
前記最後に成功したキープアライブ送信からの前記決定された、経過した時間量に基づいて、前記少なくとも１つのスレーブデバイスに送信するキープアライブ送信の回数と、次にスケジュールされたキープアライブ送信の時間に関する前記キープアライブ送信についての送信時間とを決定することと、
前記決定された送信時間ごとに、前記少なくとも１つのスレーブデバイスに前記回数分のキープアライブ送信の連続送信を開始することと、
前記少なくとも１つのスレーブデバイスからの受信されたキープアライブ送信に基づいて、前記クロックの誤差を調整し、それによって、前記クロックを前記少なくとも１つのスレーブ無線デバイスに同期することと、
を備える方法。
【請求項１１】
前記キープアライブ送信についての周波数チャネルを決定することと、
前記少なくとも１つのスレーブデバイスが前記回数分のキープアライブ送信のうちの少なくとも１つを受信することに応答して、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を受信することと、
前記少なくとも１つのスレーブデバイスからの前記キープアライブ送信を受信することに応答して、前記回数分のキープアライブ送信の連続送信を中止し、それによって、前記回数分のキープアライブ送信のうちのいずれの残りのものも送信しないことと、
をさらに備える、請求項１０に記載の方法。
【請求項１２】
前記送信するキープアライブ送信の回数を決定することは、予測されたクロックドリフト誤差レートに基づいて、前記キープアライブ送信の回数および送信時間を決定することをさらに備える、請求項１０に記載の方法。
【請求項１３】
前記回数分のキープアライブ送信の各送信は、送信フレームの境界上で行われる、請求項１０に記載の方法。
【請求項１４】
実行されたときに、１つまたは複数のコンピュータに方法をインプリメントさせるプログラム命令を記憶した非一時的なコンピュータ可読記憶媒体であって、前記方法は、
無線マスタデバイスが、クロックに基づいて、少なくとも１つのスレーブデバイスへの無線接続に関する最後に成功したキープアライブ送信が行われてから経過した時間量を決定することと、
前記最後に成功したキープアライブ送信からの前記決定された、経過した時間量に基づいて、前記少なくとも１つのスレーブデバイスに送信するキープアライブ送信の回数と、次にスケジュールされたキープアライブ送信の時間に関する前記キープアライブ送信についての送信時間とを決定することと、
前記決定された送信時間ごとに、前記少なくとも１つのスレーブデバイスに前記回数分のキープアライブ送信の連続送信を開始することと、
前記少なくとも１つのスレーブデバイスからの受信されたキープアライブ送信に基づいて、前記クロックの誤差を調整し、それによって、前記クロックを前記少なくとも１つのスレーブ無線デバイスに同期することと、
を備える、非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記方法は、さらに、
前記キープアライブ送信についての周波数チャネルを決定することと、
前記少なくとも１つのスレーブデバイスが、前記回数分のキープアライブ送信のうちの少なくとも１つを受信することに応答して、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を受信することと、
前記少なくとも１つのスレーブデバイスからの前記キープアライブ送信を受信することに応答して、前記回数分のキープアライブ送信の連続送信を中止し、それによって、前記回数分のキープアライブ送信のうちのいずれの残りのものも送信しないことと、
を備える、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記送信するキープアライブ送信の回数を決定することは、予測されたクロックドリフト誤差レートに基づいて、前記キープアライブ送信の回数および送信時間を決定することをさらに備える、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記回数分のキープアライブ送信の各送信は、送信フレームの境界上で行われる、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本発明は、無線通信に関し、より詳細には、より安定した低電力発振器の設計に関する。
【背景技術】
【０００２】
[0002]  ブルートゥース（登録商標）は、固定デバイスおよびモバイルデバイスから、（長さの短い電波を使用して）短距離上でデータを交換するための無線プロトコルである。ブルートゥースは、低電力アプリケーションのために意図され、しばしば、ファックス、モバイルフォン、電話、ラップトップ、パーソナルコンピュータ、プリンタ、全地球測位システム（ＧＰＳ）受信機、デジタルカメラ、およびビデオゲームコンソールなどのデバイスで使用される。ブルートゥースは、周波数ホッピングスペクトル拡散と呼ばれる無線技術を使用し、これは、送られるデータを分割して、２４０２−２４８０ＭＨｚの範囲における１ＭＨｚ幅の最大７９個の帯域上で、これらデータの塊を送信する。
【０００３】
[0003]  ブルートゥース無線リンクは、ピコネットのコンテキスト（context）において形成される。ピコネットは、同じ物理チャネルを占有する２つ以上のデバイスを備える（これは、それらが、共通のクロックおよびホッピングシーケンスに同期されていることを意味する）。共通の（ピコネット）クロックは、ピコネットのマスタとして知られる、ピコネット内のデバイスのうちの１つのブルートゥースクロックと同一であり、ホッピングシーケンスは、マスタのクロックおよびマスタのブルートゥースデバイスアドレスから導出される。その他すべての同期されたデバイスは、ピコネット内のスレーブと呼ばれる。
【０００４】
[0004]  ブルートゥースは、マスタ／スレーブ構造を有するパケットベースプロトコルである。１つのマスタは、ピコネット内の最大７個のスレーブと通信することができ、すべてのデバイスは、マスタのクロックを共有する。パケット交換は、マスタによって定義される基本クロックに基づき、それは、３１２．５μｓインターバルでティックする（ticks）。２つのクロックティックは、６２５μｓのスロットを作成し、２つのスロットは、１２５０μｓのスロットペアを作成する。シングルスロットパケットの単純なケースでは、マスタは、偶数スロットで送信して奇数スロットで受信し、逆にスレーブは、偶数スロットで受信して奇数スロットで送信する。パケットは、１スロット長、３スロット長または５スロット長でありうるが、すべてのケースにおいて、マスタ送信は、偶数スロットから開始し、スレーブ送信は、奇数スロットから開始する。
【０００５】
[0005]  ブルートゥースの仕様は、スニフモード（sniff mode）と呼ばれる低電力モードを含み、これは、より一般的には、低電力スリープモード、または簡略化のために、単にスリープモードと呼ばれうる。スニフモードでは、アクティブに通信していないデバイスは、互いに「キープアライブ（keep alive）」メッセージまたは送信を周期的に送りながら、低電力（スリープ）状態に入りうる。言い換えれば、スニフモードでは、通信リンクを確立した送信機デバイスと受信機デバイスは、リンクを維持するために、互いに周期的に通信しあう。例えば、ユーザが、ブルートゥースのキーボードまたはマウスを使用しており、ある一定の時間期間の間、入力を提供していなかった場合には、このキーボードまたはマウスは、低電力スニフモードに入り、ブルートゥースマスタデバイス（ホストコンピュータ）は、リンクを維持するために、スレーブデバイス（キーボードまたはマウス）と周期的に通信するであろう。スニフモードは、バッテリで動作するヒューマンインタフェースデバイスに最大の利益をもたらし、また、これらデバイスのために、増大されたバッテリ寿命をもたらす。
【０００６】
[0006]  ブルートゥースの仕様は、ブルートゥースデバイスが、スリープ中でさえも、３．２ｋＨｚのブルートゥースクロックを維持することを必要とする。スリープ中、ブルートゥースは、クロックが２５０ｐｐｍ＋／−１０μｓ内に維持されることを必要とする。デバイスが内部低電力発振器（ＬＰＯ）を含む場合、内部ＬＰＯ回路は、時として２５０ｐｐｍを超えてドリフトする（drifts）クロックを作成しうる。このドリフトは、ノイズ、温度の変化、供給電圧変動、または上記の組み合わせによるものである。
【０００７】
[0007]  ブルートゥースデバイスクロックが、２５０ｐｐｍを超えてドリフトするケースでは、２つのデバイスは、スニフモードの間に通信リンクを維持することが困難になりうる。これは、マスタデバイスとスレーブデバイスとのクロックにおける差のためであり、マスタは、スレーブデバイスがスリープ状態の間に、スニフメッセージを送信しうる。スニフリンクにおけるスレーブデバイスの場合、このスレーブデバイスは、マスタ送信機を見つけ出すことができるように、その走査ウィンドウを開くことが可能である。スレーブデバイスは、典型的に、リンクの両側で２５０ｐｐｍの許容可能なクロックドリフト誤差範囲を可能にするために、そのウィンドウを所望の量だけ開くことができる。
【０００８】
[0008]  しかしながら、スレーブデバイスがその走査ウィンドウを増大させるケースでさえも、マスタデバイスは、依然として、スレーブデバイスがスリープモードにあるときに、スニフ通信を送信しうる。例えば、マスタは、スレーブがその受信ウィンドウを＋／−２５０ｐｐｍを超えて開くと仮定することはできず、また、スレーブにそうするよう要求することもできない。マスタデバイスは、マスタ送信を、（クロックによって決定されるように）時間通り（on time）、かつ適切な周波数において実行する必要があり、さもなければ、リンクは、リンク監視タイムアウト（このタイムアウトの間に、リンクを復活させようとする、交渉されたまたはプログラム可能な数の試みが存在しうる）の満了後にドロップするであろう。
【０００９】
[0009]  先行技術に関連するその他の対応する課題は、そのような先行技術を、ここに説明される実施形態と比較した後に、当業者にとって明らかになるであろう。
【発明の概要】
【００１０】
[0010]  本発明の実施形態は、例えば、ブルートゥースシステムのような、無線通信システムおけるデバイス間の通信リンクを維持することに関する。無線通信システムは、マスタデバイスと１つまたは複数のスレーブデバイスとを含む。スレーブデバイスが低電力モード（またはスリープモード）に入った場合、マスタデバイスは、通信リンクを維持するために、スレーブデバイスにキープアライブメッセージを周期的に送る。いくつかの実施形態では、マスタデバイスは、最後に成功したキープアライブ送信がスレーブデバイスに送られてからの時間の量を決定するように構成される。その後、マスタデバイスは、最後のキープアライブ送信からの決定された時間の量に基づいて、キープアライブ送信の適切な数と、キープアライブ送信のための適切な送信時間（transmission time）とを決定しうる。その後、マスタデバイスは、通信リンクを維持するために、複数のキープアライブメッセージをスケジュールされた時間において送信しうる。
【図面の簡単な説明】
【００１１】
[0011]  本発明の目的、特徴、および利点は、添付図面とともに読むと、以下の詳細な説明への参照によって、より完全に理解されうる。
【図１】図１は、実例的なブルートゥースデバイスを含むブルートゥースシステムを示す。
【図２】図２は、一実施形態による、ブルートゥースマスタ送信機デバイスのブロック図である。
【図３】図３は、一実施形態による、スリープクロック誤差から回復する方法のフローチャート図である。
【図４】図４は、一実施形態による、マスタ無線デバイスとスレーブデバイスの間のスリープモード送信に関する時間的関係のチャートを図示する。
【図５】図５は、一実施形態による、マスタ無線デバイスとスレーブデバイスの間の計画されたスリープモード送信に関する実例的なタイミング図を例示する。
【図６】図６は、一実施形態による、マスタ無線デバイスとスレーブデバイスの間の実際のスリープモード送信に関する実例的なタイミング図を例示する。
【図７】図７は、一実施形態による、スリープクロック誤差から回復する方法のフローチャート図である。
【００１２】
[0019]  本発明は、様々な修正および代替形態が可能であるが、その特定の実施形態が、図面に例として示され、ここで詳細に説明される。しかしながら、それに対する図面および詳細な説明は、本発明を開示される特定の形態に限定するようには意図されず、逆に、その意図は、添付の特許請求の範囲によって定義される本発明の趣旨および範囲内に含まれるすべての修正、同等のもの、および代替例を網羅することであることが理解されるべきである。見出しは、構成目的のみに用いられ、説明または特許請求の範囲を、限定または解釈するために使用されるようには意図されないことに留意されたい。さらに、本願にわたり、「〜しうる、〜することができる（may）」という文言は、許容を示す意味（すなわち、可能性がある、または可能であること）で用いられ、義務的な意味（すなわち、〜しなければならない（must））ではないことに留意されたい。「含む（include）」という用語、およびその派生語は、「それに限定されるものではないが、〜を含む」を意味する。「結合された（coupled）」という用語は、「直接的または間接的に接続された」を意味する。
【発明を実施するための形態】
【００１３】
[0020]  ここに説明される本発明の実施形態は、２つのデバイス間の通信リンクを維持するために、「スリープモード」を含み、かつ、２つのデバイスのうちの少なくとも１つが低電力モードに置かれることができる、２つのデバイス間で送信されるメッセージを利用する、任意の様々な無線通信システムで使用されうる。実施形態は、ブルートゥースシステムのコンテキストにおいて以下に説明される。ここで使用される場合、「ブルートゥース」という用語は、ブルートゥース無線通信規格を指し、この規格の過去、現在および将来のバージョンを含む。以下の実施形態は、例示的であり、実施形態は、他の同様のタイプのシステムにも適用されうることに、ここでも留意されたい。さらに、「スリープモード」および「スリープフレーム」という用語は、それぞれ「スニフモード」および「スニフフレーム」というブルートゥース特有の用語に対応し、またはこれらの用語を一般的に称するためにここで使用されることに留意されたい。加えて、ここで使用される場合、「キープアライブ送信」または「キープアライブメッセージ」という用語は、「スニフパケット」というブルートゥース特有の用語に対応し、またはこの用語を一般的に称するために使用される。
【００１４】
[0021]  図１は、一実施形態による、実例的な無線通信システムを例示する。図１の実例的なシステムは、ブルートゥースシステムである。この実例的なシステムは、ブルートゥース送信機／受信機、すなわち、トランシーバ、として動作しうるコンピュータシステム１０２を備え、それは、本発明の実施形態をインプリメント（implement）するように構成されうる。コンピュータシステム１０２は、コンピュータシステムの標準がそうであるように、少なくとも１つのプロセッサとメモリ、ディスプレイ、およびその他の様々なハードウェア／ソフトウェアなどの、様々な標準コンポーネントを含む。コンピュータシステム１０２は、ここで説明されるように動作するように構成されたブルートゥース送信／受信デバイス、すなわち、トランシーバデバイス（図２の２００）、を含む。
【００１５】
[0022]  コンピュータシステム１０２は、示されるように、ブルートゥースキーボード１１２、ブルートゥースマウス１１４および／またはブルートゥースヘッドセット１１６などの１つまたは複数の周辺機器と通信する。周辺機器１１２、１１４、１１６の各々は、ホストコンピュータ１０２と無線方式で通信する、バッテリ（またはその他の携帯可能なエネルギーソース）で動作するデバイスでありうる。
【００１６】
[0023]  様々なタイプのコンピュータシステムのうちの任意のもの、特に、スマートフォンまたはその他のモバイルフォン、マイクロホン、スピーカ、デジタルカメラ、ライトペン、ジョイスティック、ファックス装置、プリンタ、全地球測位システム（ＧＰＳ）受信機、携帯情報端末（ＰＤＡｓ）、デジタルオーディオおよび／またはビデオプレーヤ、およびビデオゲームコンソールなどの、その他のタイプの無線デバイスも企図される。いくつかの実施形態では、プロセッサとメモリの代わりに、またはそれに加えて、無線デバイスは、何らかの他のタイプの機能的な、例えば、ＡＳＩＣ（特定用途向け集積回路）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの、プログラマブルハードウェアエレメントを利用しうることにさらに留意されたい。ここで使用される場合、「機能ユニット」という用語は、ハードウェアおよび／またはソフトウェアを備え、かつ特定の機能を実行することが可能なコンポーネント（または複数のコンポーネント）を指す。
【００１７】
[0024]  上述されたように、図１は、一例にすぎず、実施形態は、無線方式で互いに通信しあうデバイスの様々な組み合わせのうちの任意のもので動作しうる。
【００１８】
[0025]  図２は、図１に示された任意のブルートゥースデバイスにおいて備えられうる、実例的なブルートゥース・マスタ・トランシーバ・デバイス２００のブロック図である。ブルートゥース・マスタ・トランシーバ・デバイス２００は、マスタ送信機（またはトランシーバ）デバイスとして動作するように構成されうる。示されるように、ブルートゥースデバイス２００は、例えば、メモリ２０４に結合されたプロセッサ２０２などの、機能ユニットを備えることができるが、他のタイプの機能ユニットも所望に応じて使用されることができ、例えば、所望に応じて、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、ＡＳＩＣ（特定用途向け集積回路）などのようなプログラマブルハードウェアエレメント。ブルートゥースデバイス２００はまた、アンテナ２０６と、クロック２１０を含むブルートゥース通信をインプリメントするための様々なブルートゥース回路２０８とを備え、例えば、低電発振器を備える。他の実施形態では、クロックは、任意の様々な方法でインプリメントされることができ、さらに、デバイス中の他の場所に位置しうることに留意されたい。
【００１９】
[0026]  メモリ２０４は、ブルートゥースデバイス２００の動作ために、様々なタイプのプログラム命令を記憶しうる。示されるように、メモリ２０４はまた、誤差回復プログラム命令２１２を記憶しうる。誤差回復プログラム命令２１２は、ここに説明される方法および機能、例えば、図３−図７のフローチャートおよびタイミング図で説明される方法および機能、の実施形態を実行するために、プロセッサ２０２によって実行可能でありうる。あるいは、ここに開示される誤差回復機能は、所望に応じて、ハードウェアで、例えば、適切に構成されたプログラマブルハードウェア、例えば、ＦＰＧＡ、またはその他のロジックを介して、あるいはソフトウェアとハードウェアの組み合わせで、インプリメントされうる。より一般的には、誤差回復機能は、機能ユニットを介してインプリメントされうる。
【００２０】
[0027]  図３は、クロック誤差から回復するための方法の一実施形態の動作を例示するフローチャート図である。この方法は、コンピュータシステム１０２のような、マスタ送信機として動作するブルートゥースデバイスによって実行されうる。マスタ無線デバイスは、スリープモード（３０２）、例えば、ブルートゥースの実施形態についてのスニフモード、に入りうる。マスタ無線デバイスは、同様にスリープモードにある、少なくとも１つのスレーブ無線デバイスに無線で結合される。マスタおよびスレーブの無線デバイスは、例えば、バッテリ電力を節約するために、少なくとも１つのスレーブ無線デバイスがアイドル状態にあってスリープモード（すなわち、低電力スリープモード、またはスニフモード）に入ることを決定したために、スリープモードに入りうる。例えば、スレーブ無線デバイスが、ブルートゥースキーボードであり、ユーザが、予め定められた時間の量の間、いずれの入力もキーボードに入力していない（キーボード上のいずれのキーも押下していない）場合、ブルートゥースキーボードは、スリープ（例えば、スニフ）モードに入りうる。
【００２１】
[0028]  マスタ無線デバイスは、少なくとも１つのスレーブ無線デバイスとの最後に成功したキープアライブ送信が行われてからの時間の量を決定する（３０４）。いくつかの実施形態では、成功は、送信に続く肯定応答の受信として定義される。いくつかの実施形態では、最後のキープアライブ送信の検出からの指定された時間の量の経過は、以下に説明されるブロック３０６−３０８で図示される動作をトリガする。マスタ無線デバイスは、スレーブ無線デバイスに送信するキープアライブフレームの回数と、キープアライブ送信を送信するのに適切な時間と周波数チャネルとを決定する（３０６）。いくつかの実施形態では、キープアライブフレームの回数は複数である。いくつかの実施形態では、マスタ無線デバイスは、ブロック３０４で決定されたような、最後のキープアライブ送信が行われてからの時間の量に基づいて、スレーブ無線デバイスに送信するキープアライブ送信の回数を決定する。
【００２２】
[0029]  ブロック３０６のスレーブ無線デバイスに送信するキープアライブ送信の回数を決定することにおいて、マスタ無線デバイスは、以下に説明される図４の表のようなデータ構造を調べうる（examine）。マスタ無線デバイスはまた、データ構造を調べることによって、キープアライブフレームについての適切な送信時間を決定しうる。データ構造は、メモリ２０４の誤差回復プログラム命令２１２中に記憶されうる。マスタデバイスは、選択された回数のキープアライブフレームの送信を開始する（３０８）。ブロック３０６−３０８で実行される動作は、スレーブデバイスからの送信を検出することの繰り返される失敗に応答して、繰り返されることが可能であり、また、いくつかの実施形態では、様々な繰り返しについての送信時間は、それぞれの繰り返しの時間における状態に応答して、異なって間隔を空けられることが可能である。加えて、いくつかの実施形態は、ブロック３０６−３０８について上述された動作の繰り返される実行に応答して、送信の数および間隔を再計算するために、予期されたまたは予測されたクロックドリフトレートを調整しうる。
【００２３】
[0030]  図４は、一実施形態による、マスタ無線デバイスとスレーブデバイスの間のスリープモード送信（キープアライブ送信）に関する時間的関係のチャートを図示する。表４００は、１．２５ミリ秒間隔の複数のキープアライブパケット（またはスニフフレーム）のセットを送った場合、クロック回復が成功する確率が高いかを決定するために使用される一連の値を示す（reflects）。表４００は、６２５マイクロ秒のスロット期間を示す。各々の表エントリ４０２−４１４については、スロットの数が、スロット列４１６に示される。各々の表エントリ４０２−４１４については、時間列４１８が、スロット列４１６に示される６２５マイクロ秒のスロットの数のための時間の量を示す。
【００２４】
[0031]  各々の表エントリ４０２−４１４については、誤差列４２０が、予測されたクロックドリフト誤差範囲または許可された許容誤差（error tolerance）によって示される誤差の大きさを示す。表４００のケースでは、予測されたクロックドリフト誤差レートの２５０ｐｐｍの許容誤差は、誤差列４２０に示される。誤差列４２０は、エントリのスロット列４１６における選択された数のスロット毎に、２５０ｐｐｍの誤差を有する水晶から生じる誤差の量を示す。ＬＰＯ周波数が、２５０ｐｐｍの誤差で誤調整された場合、誤差列４２０にリストされる量は、予期されたまたは予測されたクロックドリフトである。誤差列４２０は、時間列４１８を、受け入れ可能な誤差フラクション（error fraction）（例えば、クロックドリフトレート）で乗算することによって計算され、これは、表４００のケースにおいて、エントリ４０２については、時間列４２０の値１２．５ミリ秒を、２５０で乗算し、１００万で除算して、誤差列４２０における３．１２５マイクロ秒の値を生成することとなる。
【００２５】
[0032]  誤差フレーム列４２２は、誤差列４２０にリストされる誤差から相当する数のブルートゥース送信フレームへの変換を表す。フレームは、２つのスロットで構成される。上述されたように、スロット期間は６２５マイクロ秒である。したがって、各フレームは、１．２５ミリ秒である。ブルートゥースデバイスは、スロットおよびフレームで時間をキープする。例えば、スニフインターバルは、典型的に、フレームまたはスロットで表される。例えば、スニフインターバルは、２０スロット（または１６０、または３２０）として計算されうる。エントリ４０２の各々は、スロット列４１６における所与のスニフインターバルについての誤差フレーム列４２２における潜在的なドリフトの（potential drift）フレームの数を提供する。スロット列４１６の値は、スレーブデバイスとの最後のコンタクトからいくつのスロットが経過したかを表す、同期期間（synch period）として考えられる。
【００２６】
[0033]  表４００は、スニフ期間が増大するにつれて、誤差と関連づけられる潜在的な時間の長さは、増加するフレームの数を表すということを実証する。スニフ期間と、誤差と関連づけられる潜在的な時間の長さとの間の関係を決定することは、スレーブデバイスとの相互作用の確率を増大させるために送られることができるキープアライブメッセージ（スニフパケット）の回数の決定を可能にする。ＬＰＯが２５０ｐｐｍの精度であるという確信（belief）を与えられると、その後、１６０００スロット期間の後に、およそ＋／−２フレームの不確定性が現れるであろう。いくつかの実施形態では、デバイスがＬＰＯ周波数における可能な誤差が、例えば、１０００ｐｐｍ程の高さになりうると決定した場合には、この列の値は、４によって乗算されることができ、１６０００スロット期間にわたり、およそ＋／−８フレームの不確定性を与える。送られるマスタ送信の数が、その後、表された誤差の反映として決定されることが可能である。
【００２７】
[0034]  図５は、一実施形態による、マスタ無線デバイスとスレーブデバイスの間の計画されたキープアライブ送信に関する実例的なタイミング図を例示する。図５は、マスタタイムライン５００とスレーブタイムライン５０２を含む。マスタタイムライン５００は、一連の送信ウィンドウ５０４−５１２および受信ウィンドウ５１４−５２２を含む。スレーブタイムライン５０２は、送信ウィンドウ５２４と受信ウィンドウ５２６を含む。
【００２８】
[0035]  図５に描写される例では、マスタクロックが誤差に遭遇し、マスタタイムライン５００をスレーブタイムライン５０２と４００ｐｐｍずれた時間において配置する。マスタデバイスとスレーブデバイスの間の通信リンクを回復するために、マスタは、マスタデバイスが送信ウィンドウ５０４−５１２において最大５個のキープアライブ送信を送信するであろうことを決定する。マスタデバイスのブルートゥースリソースマネージャ（ＢＲＭ）は、マスタシステムを通常よりも２スロット早く、例えば、送信ウィンドウ５０４において、ウェーク（wakes）し、フレームカウントを２だけ調整して、ブルートゥース回路がキープアライブ送信を生成することを要求する。スレーブデバイスからのいずれの応答も受信されない場合、ＢＲＭは、フレームカウントをスリープタイム位置に再び調整して、送信ウィンドウ５０６において再送信する。上述した例では、送信は、およそ−１０００ｐｐｍ（送信ウィンドウ５０４）、−５００ｐｐｍ（送信ウィンドウ５０６）、オン−タイム（on-time）（送信ウィンドウ５０８）、＋５００ｐｐｍ（送信ウィンドウ５１０）、および＋１０００ｐｐｍ（送信ウィンドウ５１２）において、最大５回まで行われるように計画される。図５の例では、スレーブクロックは、マスタクロックと４００ｐｐｍずれており、したがって、送信ウィンドウ５１０における４番目の送信は、スレーブ受信ウィンドウ５２６に到来し、スレーブ送信５２４により応答され、それは、マスタ受信ウィンドウ５２０において受信される。
【００２９】
[0036]  一旦スリープ応答が見つけ出されると、マスタは、そのクロックを、スレーブが応答したスニフ送信を作成しているクロックになるように調整でき、そして、リンクは継続できる。マスタクロックを調整することは、マスタクロックが誤差状態にあるという仮定を具現化（embodies）し、マスタクロックをスレーブクロックに一致させるように調整することにより、マスタクロックは修正される。しかしながら、たとえ誤差がスレーブクロックにあったとしても、スレーブクロックへの再同期は、多くのアプリケーションに利益を提供するであろう。実施形態は、クロックが再調整（realigned）されているので、リンクが維持されるという可能性（likelihood）を増大させるのに役立つ。このようなケースにおいて影響を被りうる、同期接続指向型（ＳＣＯ：Synchronous Connection Oriented）リンクのような同期リンクは、比較的長い時間期間の間にいずれの応答がなく、スリープ状態の間にタイムセンシティブな（time-sensitive）同期データをアクティブに送らない傾向にある実施形態において使用される。いくつかの実施形態では、送信ウィンドウ５０４−５１２におけるスリープ送信は、優先フレームとして扱われる。送信が、（共存インタフェースを介して）他のブルートゥースまたはＷＡＬＮのトラフィックによって阻止された（pre-empted）場合、後続するスリープ期間もまた、スリープ応答が見つからなかった場合には、スリープ回復を利用するであろう。
【００３０】
[0037]  すべてのフレームにおいてキープアライブ送信を送ることの代替として、送信機は、１つのスリープアンカーにおけるいくつかのフレーム期間において送信し、その後、別のスリープアンカーにおける他のスリープ期間において送信するように、オプション的に選択しうる。例えば、送信機は、１つのスリープアンカーにおいて偶数フレームのオフセット（−４、−２、０、２、４）で送り、その後、次のアンカにおいて奇数フレームのオフセットで送ることを選択しうる。このような実施形態は、電力を節約するために選択されることができ、スレーブが１つのフレーム期間全体よりも長くウィンドウを開くので、デバイスがスリープ応答なしで５秒を超えた場合、有用であることが証明されうる。このような実施形態はまた、マスタが、送信すべき他のブルートゥーストラフィックを有している場合、あるいは、共存インタフェース上のＷＬＡＮトラフィックが、あるトラフィックについての媒体を必要とする場合に、有用であることが証明されうる。
【００３１】
[0038]  当業者であれば、本開示を読んだことを踏まえて、図５に描写される送信が、フレーム境界に対応するように揃えられている一方で、いくつかの実施形態は、本開示の範囲から逸脱することなく、数１００マイクロ秒のインクリメントにおいてクロックの分解能を調整することによって、フレーム境界にまたがる送信を含むということを理解するであろう。加えて、ここに開示される実例的な実施形態は、簡単にするために、単一のマスタおよび単一のスレーブについて説明された一方で、当業者であれば、本開示を読んだことを踏まえて、複数のスレーブをサポートする実施形態が、本開示の範囲から逸脱することなくインプリメントされうることを理解するであろう。複数のスニフリンクを適合（accommodate）するための解決策は、複数のマスタ／スレーブ関係の単一のリンクのみについての回復のサポートを含みうる。さらに、いくつかの実施形態は、複数のスレーブリンクのための複数のマスタクロックをインプリメントする。
【００３２】
[0039]  図６は、図５に示された計画された時間ダイアグラムに関する実例的な結果のタイミング図を図示する。図６は、マスタタイムライン６００とスレーブタイムライン６０２を含む。マスタタイムライン６００は、一連の送信ウィンドウ６０４−６１０および受信ウィンドウ６１４−６２０を含む。スレーブタイムライン６０２は、送信ウィンドウ６２４と受信ウィンドウ６２６を含む。
【００３３】
[0040]  図６に描写される例では、マスタクロックは、マスタタイムライン６００がスレーブタイムライン６０２に対して４００ｐｐｍのオフセットを生じる誤差に遭遇する。マスタデバイスとスレーブデバイスと間の通信リンクを回復するために、マスタは、送信ウィンドウ６０４−６１０において、４個のみが実際には送信されるが、最大５個のスリープ送信を送信するよう計画する。マスタデバイスのＢＲＭは、マスタシステムを通常よりも２スロット早く、例えば、送信ウィンドウ６０４において、ウェークし、フレームカウントを２だけ調整して、ブルートゥース回路がスリープ送信を生成することを要求する。スレーブからのいずれの応答も受信されない場合、ＢＲＭは、フレームカウントをスリープタイム位置に再び調整して、送信ウィンドウ６０６において再送信する。上述した例では、これは、およそ−１０００ｐｐｍ（送信ウィンドウ６０４）、−５００ｐｐｍ（送信ウィンドウ６０６）、オン−タイム（送信ウィンドウ６０８）、＋５００ｐｐｍ（送信ウィンドウ５１０）、および＋１０００ｐｐｍ（キャンセルにより図示せず）において、最大５回まで行われるように計画される。この例では、スレーブクロックは、マスタクロックから４００ｐｐｍの差があり、したがって、送信ウィンドウ５１０における４番目の送信は、スレーブ受信ウィンドウ６２６に到来し、スレーブ送信６２４により応答され、それは、マスタ受信ウィンドウ６２０において受信される。
【００３４】
[0041]  一旦スリープ応答が見つけ出されると、調整された時間値６２８に反映されているように、マスタは、そのクロックをスレーブクロックに調整することができ、そして、リンクは継続することができる。それによって具体化される（embodied）仮定は、マスタクロックが誤差状態にあるということであり、スレーブクロックに調整することによって、マスタクロックは修正される。
【００３５】
[0042]  図７は、一実施形態による、スリープクロック誤差から回復する方法のフローチャート図である。この方法は、コンピュータシステム１０２のような、マスタ送信機として動作するブルートゥースデバイスによって実行されうる。マスタ無線デバイスは、スリープモード（７０２）、例えば、ブルートゥースの実施形態についてのスニフモード、に入りうる。マスタ無線デバイスは、同様にスリープモードにある、少なくとも１つのスレーブ無線デバイスに無線で結合される。マスタおよびスレーブの無線デバイスは、例えば、バッテリ電力を節約するために、少なくとも１つのスレーブ無線デバイスがアイドル状態にあってスリープモード（すなわち、低電力スリープモード、またはスニフモード）に入ることを決定したために、スリープモードに入りうる。例えば、スレーブ無線デバイスが、ブルートゥースキーボードであり、ユーザが、予め定められた時間の量の間、いずれの入力もキーボードに入力していない（キーボード上のいずれのキーも押下していない）場合、ブルートゥースキーボードは、スリープ（例えば、スニフ）モードに入りうる。
【００３６】
[0043]  マスタ無線デバイスは、少なくとも１つのスレーブ無線デバイスとの最後に成功したキープアライブ送信が行われてからの時間の量を決定する（７０４）。いくつかの実施形態では、成功は、送信に続く肯定応答の受信として定義される。マスタ無線デバイスは、スレーブ無線デバイスに送信するスリープフレームの数と、複数のキープアライブ送信を送信するのに適切な時間とを決定する（７０６）。加えて、いくつかの実施形態では、適切なチャネル周波数が決定される。いくつかの実施形態では、スリープフレームの数は複数である。いくつかの実施形態では、マスタ無線デバイスは、ブロック７０４で決定されたような、最後のキープアライブ送信が行われてからの時間の量に基づいて、スレーブ無線デバイスに送信するキープアライブ送信の回数を決定しうる。
【００３７】
[0044]  ７０６のスレーブ無線デバイスに送信するキープアライブ送信の回数を決定することにおいて、マスタ無線デバイスは、上述された図４の表のようなデータ構造を調べうる。マスタ無線デバイスはまた、データ構造を調べることによって、スリープフレームについての適切な送信時間を決定しうる。マスタ無線デバイスは、いくつかの実施形態では、リンク監視タイムアウトまでの残りの時間の量も考慮しうる。このような実施形態では、複数のスニフフレームのより積極的な送信が、リンク監視タイムアウトの手法に対する応答として適切でありうる。データ構造は、メモリ２０４の誤差回復プログラム命令２１２中に記憶されうる。その後、マスタデバイスは、キープアライブ送信とも呼ばれるスリープフレームを送信する（７０８）。
【００３８】
[0045]  スレーブ応答が受信されたかどうかの決定が行われる（７１０）。スレーブ応答が受信された場合、マスタクロックが調整される（７１２）。いずれのスレーブ応答も受信されなかった場合、接続がタイムアウトしたかどうかの決定が行われる（７１４）。接続がタイムアウトした場合、接続は終了される（７１６）。接続がタイムアウトしていない場合には、処理は、ブロック７０８に戻り、これは上述されている。
【００３９】
[0046]  上記の実施形態は、かなり詳細に説明されているが、上記開示を十分に理解すれば、当業者にとって多数の変形例および修正が明らかになるであろう。以下の特許請求の範囲は、このような変形例および修正を全て包含するものとして解釈されるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  無線デバイスであって、
機能ユニットと、
前記機能ユニットに結合された、無線トランシーバおよびアンテナと、
前記機能ユニットと前記無線トランシーバとに結合され、クロック信号を生成するように構成されたクロックと、
を備え、
前記無線デバイスは、少なくとも１つの無線スレーブデバイスに無線で結合され、前記機能ユニットは、
ａ）前記クロックに基づいて、前記少なくとも１つのスレーブデバイスとの最後のキープアライブ送信が行われてからの時間の量を決定し、
ｂ）前記最後に成功したキープアライブ送信からの前記決定された時間の量に基づいて、前記少なくとも１つのスレーブデバイスに送信するキープアライブ送信の回数と、次にスケジュールされたキープアライブ送信の時間に関する前記キープアライブ送信についての適切な送信時間とを決定し、
ｃ）前記決定された送信時間ごとに、前記少なくとも１つのスレーブデバイスに前記回数分のキープアライブ送信の連続送信を開始する、
ように構成される、無線デバイス。
［Ｃ２］  前記機能ユニットは、さらに、
前記キープアライブ送信についての適切な周波数チャネルを決定し、
前記少なくとも１つのスレーブデバイスが前記回数のキープアライブ送信のうちの少なくとも１つを受信することに応答して、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を受信し、
前記少なくとも１つのスレーブデバイスからの前記キープアライブ送信を受信することに応答して、前記回数分のキープアライブ送信の連続送信を中止し、それによって、前記回数分のキープアライブ送信のうちのいずれの残りのものも送信しない、
ように構成される、Ｃ１に記載の無線デバイス。
［Ｃ３］  前記機能ユニットは、さらに、
前記少なくとも１つのスレーブデバイスからの前記受信されたキープアライブ送信に基づいて、前記クロックを調整し、それによって、前記クロックを前記少なくとも１つのスレーブ無線デバイスに同期する、
ように構成される、Ｃ１に記載の無線デバイス。
［Ｃ４］  送信する前記キープアライブ送信の回数を決定するために、前記機能ユニットは、
予測されたクロックドリフト誤差レートにさらに基づいて、前記キープアライブ送信の回数および適切な送信時間を決定する、
ように構成される、Ｃ１に記載の無線デバイス。
［Ｃ５］  前記機能ユニットは、指定された時間の量の間、前記少なくとも１つのスレーブデバイスからのキープアライブ送信の検出を失敗することに応答して、ａ）乃至ｃ）を実行するように構成される、Ｃ１に記載の無線デバイス。
［Ｃ６］  前記機能ユニットは、さらに、
前記指定された時間の量の間、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を検出することのそれぞれの失敗に応答して、そのたびに、ａ）乃至ｃ）の複数の繰り返しを実行する、なお、前記複数の繰り返しのうちの少なくとも２つについての前記適切な送信時間は、異なる、
ように構成される、Ｃ５に記載の無線デバイス。
［Ｃ７］  前記機能ユニットは、さらに、
ａ）乃至ｃ）を指定された回数実行した後、前記少なくとも１つのスレーブデバイスからのキープアライブ送信の検出を失敗することに応答して、前記予測されたクロックドリフトレートを増大させる、
ように構成される、Ｃ１に記載の無線デバイス。
［Ｃ８］  前記回数分のキープアライブ送信の各送信は、送信フレームの境界上で行われる、Ｃ１に記載の無線デバイス。
［Ｃ９］  前記機能ユニットは、
プロセッサと、
前記プロセッサに結合されたメモリと、
を備える、Ｃ１に記載の無線デバイス。
［Ｃ１０］  前記機能ユニットは、１つまたは複数の、
プログラマブルハードウェアエレメント、または
特定用途向け集積回路（ＡＳＩＣ）、
を備える、Ｃ１に記載の無線デバイス。
［Ｃ１１］  スリープクロック誤差から回復するための方法であって、
無線マスタデバイスが、クロックに基づいて、少なくとも１つのスレーブデバイスへの無線接続に関する最後のキープアライブ送信が行われてからの時間の量を決定することと、
前記最後に成功したキープアライブ送信からの前記決定された時間の量に基づいて、前記少なくとも１つのスレーブデバイスに送信するキープアライブ送信の回数と、次にスケジュールされたキープアライブ送信の時間に関する前記キープアライブ送信についての適切な送信時間とを決定することと、
前記決定された送信時間ごとに、前記少なくとも１つのスレーブデバイスに前記数のキープアライブ送信の連続送信を開始することと、
を備える方法。
［Ｃ１２］    前記キープアライブ送信についての適切な周波数チャネルを決定することと、
前記少なくとも１つのスレーブデバイスが前記回数分のキープアライブ送信のうちの少なくとも１つを受信することに応答して、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を受信することと、
前記少なくとも１つのスレーブデバイスからの前記キープアライブ送信を受信することに応答して、前記回数分のキープアライブ送信の連続送信を中止し、それによって、前記回数分のキープアライブ送信のうちのいずれの残りのものも送信しないことと、
をさらに備える、Ｃ１１に記載の方法。
［Ｃ１３］    前記少なくとも１つのスレーブデバイスからの前記受信されたキープアライブ送信に基づいて、前記クロックを調整し、それによって、前記クロックを前記少なくとも１つのスレーブ無線デバイスに同期すること、
をさらに備える、Ｃ１１に記載の方法。
［Ｃ１４］  前記送信するキープアライブ送信の回数を決定することは、予測されたクロックドリフト誤差レートに基づいて、前記キープアライブ送信の回数および適切な送信時間を決定することをさらに備える、Ｃ１１に記載の方法。
［Ｃ１５］  前記回数分のキープアライブ送信の各送信は、送信フレームの境界上で行われる、Ｃ１１に記載の方法。
［Ｃ１６］  実行されたときに、１つまたは複数のコンピュータに方法をインプリメントさせるプログラム命令を記憶した非一時的なコンピュータ可読記憶媒体であって、前記方法は、
無線マスタデバイスが、クロックに基づいて、少なくとも１つのスレーブデバイスへの無線接続に関する最後のキープアライブ送信が行われてからの時間の量を決定することと、
前記最後のキープアライブ送信からの前記決定された時間の量に基づいて、前記少なくとも１つのスレーブデバイスに送信するキープアライブ送信の回数と、次にスケジュールされたキープアライブ送信の時間に関する前記キープアライブ送信についての適切な送信時間とを決定することと、
前記決定された送信時間ごとに、前記少なくとも１つのスレーブデバイスに前記回数分のキープアライブ送信の連続送信を開始することと、
を備える、非一時的なコンピュータ可読記憶媒体。
［Ｃ１７］  前記方法は、さらに、
前記少なくとも１つのスレーブデバイスが、前記回数分のキープアライブ送信のうちの少なくとも１つを受信することに応答して、前記少なくとも１つのスレーブデバイスからのキープアライブ送信を受信することと、
前記少なくとも１つのスレーブデバイスからの前記キープアライブ送信を受信することに応答して、前記回数分のキープアライブ送信の連続送信を中止し、それによって、前記回数分のキープアライブ送信のうちのいずれの残りのものも送信しないことと、
を備える、Ｃ１６に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ１８］  前記方法は、さらに、
前記少なくとも１つのスレーブデバイスからの前記受信されたキープアライブ送信に基づいて、前記クロックを調整し、それによって、前記クロックを前記少なくとも１つのスレーブ無線デバイスに同期すること、
を備える、Ｃ１６に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ１９］  前記送信するキープアライブ送信の回数を決定することは、予測されたクロックドリフト誤差レートに基づいて、前記キープアライブ送信の回数および適切な送信時間を決定することをさらに備える、Ｃ１６に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２０］  前記回数分のキープアライブ送信の各送信は、送信フレームの境界上で行われる、Ｃ１６に記載の非一時的なコンピュータ可読記憶媒体。
【図１】
0005612221.tif 000002
【図２】
0005612221.tif 000003
【図３】
0005612221.tif 000004
【図４】
0005612221.tif 000005
【図５】
0005612221.tif 000006
【図６】
0005612221.tif 000007
【図７】
0005612221.tif 000008