(57)【要約】【課題】安定して通信を維持することが可能な無線通信装置等を提供する。【解決手段】電子時計１００は、複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する通信部１０３と、ＣＰＵ１１０と、を備える。ＣＰＵ１１０は、通信部１０３を制御して、他の無線通信装置とのデータの送受信を含む複数の処理を、複数の処理それぞれに対応するカウンタに基づいて実行する。また、ＣＰＵ１１０は、処理の実行中に期待されるイベントと異なるイベントが発生した場合に、複数の階層のそれぞれについて、他の無線通信装置への応答の要否を判定し、応答を要すると判定した場合に、通信部１０３を制御して、応答を送信する。また、ＣＰＵ１１０は、現在実行中の処理を終了するとき、カウンタを次に実行すべき処理を表すように更新する。【選択図】図２
2019067187.tif 000002
【特許請求の範囲】
【請求項１】
複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する無線通信部と、
制御部と、
を備え、
前記制御部は、
前記無線通信部を制御して、前記他の無線通信装置とのデータの送受信を含む複数の処理を、前記複数の処理それぞれに対応するカウンタに基づいて実行し、
前記処理の実行中に期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれについて、前記他の無線通信装置への応答の要否を判定し、
前記応答を要すると判定した場合に、前記無線通信部を制御して、前記応答を送信し、
現在実行中の処理を終了するとき、前記カウンタを次に実行すべき処理を表すように更新する、
ことを特徴とする無線通信装置。
【請求項２】
前記制御部は、前記複数の階層のそれぞれについて、当該階層で前記他の無線通信装置から受信する可能性があるコマンド毎に、前記応答の要否を判定する、
ことを特徴とする請求項１に記載の無線通信装置。
【請求項３】
前記制御部は、
前記複数の処理それぞれの実行中に、期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれで受信する可能性があるコマンド毎に、前記応答の要否を判定する、
ことを特徴とする請求項２に記載の無線通信装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の無線通信装置と、
現在時刻を計時する計時部と、
前記計時部により計時された現在時刻を表示する表示部と、
を備えることを特徴とする電子時計。
【請求項５】
複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する無線通信部を備える無線通信装置が実行する無線通信方法であって、
前記無線通信部を制御して、前記他の無線通信装置とのデータの送受信を含む複数の処理を、前記複数の処理それぞれに対応するカウンタに基づいて実行し、
前記処理の実行中に期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれについて、前記他の無線通信装置への応答の要否を判定し、
前記応答を要すると判定した場合に、前記無線通信部を制御して、前記応答を送信し、
現在実行中の処理を終了するとき、前記カウンタを次に実行すべき処理を表すように更新する、
ことを特徴とする無線通信方法。
【請求項６】
複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する無線通信部を備えるコンピュータを、
前記無線通信部を制御して、前記他の無線通信装置とのデータの送受信を含む複数の処理を、前記複数の処理それぞれに対応するカウンタに基づいて実行する処理手段、
前記処理の実行中に期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれについて、前記他の無線通信装置への応答の要否を判定する応答要否判定手段、
前記応答を要すると判定した場合に、前記無線通信部を制御して、前記応答を送信する応答手段、
として機能させ、
前記処理手段は、現在実行中の処理を終了するとき、前記カウンタを次に実行すべき処理を表すように更新する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、無線通信装置、電子時計、無線通信方法、及びプログラムに関する。
【背景技術】
【０００２】
従来より、通信相手との接続のための設定情報の履歴を保存しておくことにより、他の通信相手との間で割り込み通信が発生した場合であっても、割り込み通信の後に、設定情報の履歴に基づいて、元の通信相手との通信を再開する技術がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２３８３２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されているような通信処理において、通信装置同士が互いに決められたシーケンスに従って通信している状況において、例えば一方の通信装置のＯＳ（Operating System）のアップデート等により、決められたシーケンスと異なるシーケンスを要求された場合がある。このような場合に、異なるシーケンスを優先的に処理した結果、元のシーケンスに戻れずに通信装置が動作不全に陥る可能性がある。
【０００５】
この発明の目的は、安定して通信を維持することが可能な無線通信装置、電子時計、無線通信方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、上記目的を達成するため、本発明の観点に係る無線通信装置は、
複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する無線通信部と、
制御部と、
を備え、
前記制御部は、
前記無線通信部を制御して、前記他の無線通信装置とのデータの送受信を含む複数の処理を、前記複数の処理それぞれに対応するカウンタに基づいて実行し、
前記処理の実行中に期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれについて、前記他の無線通信装置への応答の要否を判定し、
前記応答を要すると判定した場合に、前記無線通信部を制御して、前記応答を送信し、
現在実行中の処理を終了するとき、前記カウンタを次に実行すべき処理を表すように更新する、
ことを特徴とする。
【発明の効果】
【０００７】
本発明に従うと、安定して通信を維持することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る無線通信システムの構成例を示す図である。
【図２】実施形態に係る電子時計の構成を示すブロック図である。
【図３】実施形態における電子時計と無線通信装置との間の接続中に実行される複数の処理を示す図である。
【図４】実施形態における電子時計のＣＰＵが実行する無線通信処理の動作の一例を示すフローチャートである。
【図５】実施形態における電子時計のＣＰＵが実行する各処理におけるデータ送受信処理の動作の一例を示すフローチャートである。
【図６】実施形態における電子時計のＣＰＵが実行する層判定処理の動作の一例を示すフローチャートである。
【図７】実施形態における電子時計のＣＰＵが実行する応答処理の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１０】
図１は、実施形態に係る無線通信システム１の構成例を示す図である。図１に示す構成例において、無線通信システム１は、電子時計１００と、無線通信装置２００とから構成される。電子時計１００は、計時機能及び無線通信機能を備える電子機器であって、Ｂｌｕｅｔｏｏｔｈ（登録商標） Ｌｏｗ Ｅｎｅｒｇｙ（以下、ＢＬＥという。）等の無線通信規格に基づいて、無線通信装置２００と無線通信を行う。無線通信装置２００は、例えば、携帯電話、スマートフォン、ＰＣ（Personal Computer）、ＰＤＡ（Personal Digital Assistant）や、スマートウォッチ等のウェアラブル端末といった、無線通信機能を備える携帯可能な電子機器である。
【００１１】
次に、実施形態に係る電子時計１００の構成について説明する。
【００１２】
図２は、本実施形態に係る電子時計１００の構成例を示すブロック図である。まず、実施形態に係る電子時計１００のハードウェア構成について説明する。図２に示すように、電子時計１００は、マイクロコンピュータ１０１と、ＲＯＭ（Read Only Memory）１０２と、通信部１０３と、アンテナ１０４と、電力供給部１０５と、表示部１０６と、表示ドライバ１０７と、操作受付部１０８と、振動子１０９と、を備える。
【００１３】
マイクロコンピュータ１０１は、制御部としてのＣＰＵ（Central Processing Unit）１１０と、記憶部としてのＲＡＭ（Random Access Memory）１１１と、発振回路１１２と、分周回路１１３と、計時回路１１４とを備える。なお、ＲＡＭ１１１、発振回路１１２、分周回路１１３、及び計時回路１１４は、マイクロコンピュータ１０１の内部に限られず、マイクロコンピュータ１０１の外部に設けられてもよい。また、ＲＯＭ１０２と、通信部１０３と、電力供給部１０５と、表示ドライバ１０７と、振動子１０９は、マイクロコンピュータ１０１の外部に限られず、マイクロコンピュータ１０１の内部に設けられてもよい。
【００１４】
ＣＰＵ１１０は、各種演算処理を行い、電子時計１００の全体動作を統括制御するプロセッサである。ＣＰＵ１１０は、ＲＯＭ１０２から制御プログラムを読み出し、ＲＡＭ１１１にロードして時刻の表示や各種機能に係る演算制御や表示などの各種動作処理を行う。また、ＣＰＵ１１０は、通信部１０３を制御して、無線通信装置２００との接続を確立し、後述する無線通信処理を実行する。
【００１５】
ＲＡＭ１１１は、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）などの揮発性のメモリであり、ＣＰＵ１１０に作業用のメモリ空間を提供して一時データを記憶すると共に、各種設定データを記憶する。
【００１６】
発振回路１１２は、振動子１０９を発振さることにより所定の周波数信号（クロック信号）を生成して出力する。この発振回路１１２として、例えば、水晶発振器が用いられる。
【００１７】
分周回路１１３は、発振回路１１２から入力された周波数信号を、計時回路１１４やＣＰＵ１１０が利用する周波数の信号に分周して出力する。この出力信号の周波数は、ＣＰＵ１１０による設定に基づいて変更されても良い。
【００１８】
計時回路１１４は、分周回路１１３から入力された所定の計時信号の入力回数を計数して初期値に加算することで現在の時刻を計時する。計時回路１１４は、ＲＡＭ１１１に記憶させる値を変化させるソフトウェアにより構成されても良いし、或いは、専用のカウンタ回路により構成されても良い。計時回路１１４が計時する時刻は、所定のタイミングからの累積時間、ＵＴＣ（Coordinated Universal Time、協定世界時）、又は予め設定された地方時などのうち何れであっても良い。また、この計時回路１１４が計時する時刻は、必ずしも年月日時分秒の形式で保持される必要がない。また、計時回路１１４が計時する時刻は、Ｗｉ−Ｆｉ（登録商標）等の外部から得られる時刻によって修正可能である。
【００１９】
これら発振回路１１２、分周回路１１３及び計時回路１１４により計時部が構成される。
【００２０】
ＲＯＭ１０２は、マスクＲＯＭや書き換え可能な不揮発性メモリなどであり、制御プログラムや初期設定データが記憶されている。制御プログラムの中には、後述する各種処理の制御に係るプログラム１１５が含まれる。
【００２１】
通信部１０３は、例えば無線周波数（ＲＦ：Radio Frequency）回路やベースバンド（ＢＢ：Baseband）回路、メモリ回路で構成される。通信部１０３は、アンテナ１０４を介して受信した無線信号を、復調、復号等してＣＰＵ１１０へ送る。また、通信部１０３は、ＣＰＵ１１０から送られた信号を、符号化、変調等して、アンテナ１０４を介して外部へ送信する。
【００２２】
また、通信部１０３は、複数の階層から構成される通信プロトコルスタックに従って無線通信装置２００と互いに無線通信する。本実施形態において、通信部１０３は、ＢＬＥにおける通信プロトコルスタックであるＢＬＥスタックに従って無線通信する。ＢＬＥスタックは、複数の階層として、リンク層、Ｌ２ＣＡＰ（Logical Link Control and Adaption Protocol）層、ＳＭ（Security Management）層、ＡＴＴ（Attribute Protocol）層等から構成される。リンク層は、自装置に近接するデバイスの発見や接続、通信に用いられるプロトコルの階層である。Ｌ２ＣＡＰ層は、通信の多重化を行うプロトコルの層である。ＳＭ層は、ペアリングや暗号化、暗号鍵の配布の方法を定義するプロトコルの層である。ＡＴＴ層は、ＢＬＥのサービス及びキャラクタリスティックを定義するプロトコルの層である。本実施形態では、後述するように、リンク層、Ｌ２ＣＡＰ層、ＳＭ層、及びＡＴＴ層の４つの層のそれぞれについて、無線通信装置２００への応答の要否を判定する。
【００２３】
電力供給部１０５は、バッテリを備え、電子時計１００の動作に係る電力を各部にその動作電圧で供給する。電力供給部１０５のバッテリとしては、本実施形態では、リチウムイオン電池等の二次電池が用いられる。
【００２４】
これらマイクロコンピュータ１０１、ＲＯＭ１０２、通信部１０３、アンテナ１０４、電力供給部１０５、及び振動子１０９により無線通信装置１０が構成される。
【００２５】
表示部１０６は、例えば、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）や有機ＥＬ（Electro Luminescence）ディスプレイなどの表示画面を備える。表示ドライバ１０７は、表示画面の種別に応じた駆動信号をＣＰＵ１１０からの制御信号に基づいて表示部１０６に出力して、表示画面上への表示を行う。
【００２６】
操作受付部１０８は、例えばキーやボタンを備え、ユーザからの入力操作を受け付けて、当該入力操作に応じた電気信号を入力信号としてＣＰＵ１１０に出力する。また、例えば、操作受付部１０８としてタッチセンサが表示部１０６の表示画面に重ねて設けられ、表示画面とともにタッチパネルを構成してもよい。この場合、タッチセンサは、当該タッチセンサへのユーザの接触動作に係る接触位置や接触態様を検出し、検出された接触位置や接触態様に応じた操作信号をＣＰＵ１１０に出力する。
【００２７】
次に、実施形態に係る電子時計１００のＣＰＵ１１０の機能構成について説明する。図２に示すように、ＣＰＵ１１０は、通常処理部１２１、応答要否判定部１２２、応答部１２３として機能する。これら通常処理部１２１、応答要否判定部１２２、応答部１２３の機能は、単一のＣＰＵにより実現されても良いし、各々別個のＣＰＵにより実現されても良い。また、それらの機能は、通信部１０３のＣＰＵ等、マイクロコンピュータ１０１以外のプロセッサにより実現されても良い。
【００２８】
通常処理部１２１としてのＣＰＵ１１０は、通信部１０３を制御して、無線通信装置２００とのデータの送受信を含む複数の処理を、複数の処理それぞれに対応するカウンタに基づいて実行する。複数の処理は、電子時計１００と無線通信装置２００との間で予め設定された所定の順序で実行される処理である。本実施形態では、図３に示すように、電子時計１００は、無線通信装置２００との接続確立後に無線通信をすることにより、サービス発見処理（Service Discovery）、プロファイル構成処理（Profile Config）、接続更新処理（Connection Update）、接続継続処理（Connect Continue）、終了処理（Terminate）を、この順序で実行する例について説明する。サービス発見処理は、電子時計１００が行う、無線通信装置２００が持つサービスを確定するための処理である。プロファイル構成処理は、データ読出し・書込みを行い、電子時計１００の設定、アプリの設定等を行うための処理である。接続更新処理は、接続におけるデータ送受信間隔の変更や、接続に関するパラメータを更新するための処理である。接続継続処理は、接続を維持してユーザが無線通信装置２００を操作すること等により、電子時計１００の状態を変更することや、無線通信装置２００からの通知を受け取るための処理である。終了処理は、タイムアウトや、電子時計１００等の操作により接続を切断するための処理である。これらの処理を上記の順で実行するため、本実施形態では、各処理に１〜５までの値を割り当て、ＲＡＭ１１１に各処理に対応するカウンタｃｔが設定される。例えば、サービス発見処理に「１」、プロファイル構成処理に「２」、接続更新処理に「３」、接続継続処理に「４」、終了処理に「５」が割り当てられ、カウンタｃｔ＝１の場合、サービス発見処理が実行される。通常処理部１２１は、上記５つの処理のうちいずれかを終了するとき、カウンタｃｔを次の値に更新し、次の処理を実行する。なお、カウンタｃｔは、当該処理の実行中において、当該実行中の処理も示している。
【００２９】
また、通常処理部１２１としてのＣＰＵ１１０は、各処理の実行中に、無線通信装置２００とのデータの送受信を行う。具体的には、ＣＰＵ１１０は、実行中の処理が無線通信装置２００からのデータの受信が必要な処理である場合、通信部１０３を制御して、無線通信装置２００からデータを受信する。そして、ＣＰＵ１１０は、受信したデータが、実行中の処理において期待されているイベントである場合、カウンタを次の値に更新する。また、ＣＰＵ１１０は、実行中の処理が無線通信装置２００へのデータの送信が必要な処理である場合、通信部１０３を制御して、無線通信装置２００へデータを送信する。そして、ＣＰＵ１１０は、無線通信装置２００からデータを受信しなかった場合、カウンタを次の値に更新する。
【００３０】
応答要否判定部１２２としてのＣＰＵ１１０は、通信プロトコルスタックを構成する複数の階層のそれぞれについて、無線通信装置２００への応答の要否を判定する。本実施形態において、ＣＰＵ１１０は、リンク層、Ｌ２ＣＡＰ層、ＳＭ層、及びＡＴＴ層の４つの層のそれぞれについて、無線通信装置２００への応答の要否を判定する。具体的には、ＣＰＵ１１０は、サービス発見処理、プロファイル構成処理、接続更新処理、接続継続処理、終了処理のいずれかを処理中に、受信したデータが、実行中の処理において期待されているイベントでない場合や、送信が必要な処理であるのに無線通信装置２００からデータを受信した場合には、通常の処理とは異なる処理が発生していると判定し、ＢＬＥスタックを構成する４つの階層のそれぞれについて、無線通信装置２００への応答の要否を判定するデータチェック処理を実行する。具体的には、ＣＰＵ１１０は、受信したイベントがリンク層イベントであると判定した場合、リンク層データチェック処理を実行する。また、ＣＰＵ１１０は、受信したイベントがＡＴＴ層イベントであって、後述するＡＴＴ層応答フラグがＯＮであると判定した場合、ＡＴＴ層データチェック処理を実行する。また、ＣＰＵ１１０は、受信したイベントがＳＭ層イベントであって、後述するＳＭ層応答フラグがＯＮであると判定した場合、ＳＭ層データチェック処理を実行する。また、ＣＰＵ１１０は、受信したイベントがＬ２ＣＡＰ層イベントであって、後述するＬ２ＣＡＰ層応答フラグがＯＮであると判定した場合、Ｌ２ＣＡＰ層データチェック処理を実行する。
【００３１】
また、ＣＰＵ１１０は、リンク層データチェック処理、ＡＴＴ層データチェック処理、ＳＭ層データチェック処理、Ｌ２ＣＡＰ層データチェック処理といったデータチェック処理において、対応する層で受信する可能性があるコマンド毎に応答の要否を判定する。そして、ＣＰＵ１１０は、応答が必要であると判定した場合に、ＲＡＭ１１１に設定された各層の応答フラグをＯＮにする。例えば、ＡＴＴ層データチェック処理においては、"Write Request"、"Write Response"、"Write Command"、"Handle Value Indication"、"Handle Value Notification"といったコマンドを受信する可能性がある。ＣＰＵ１１０は、これらのコマンドのうち、無線通信装置２００への応答が必要なコマンド、例えば"Write Response"や"Handle Value Indication"を受信したと判定した場合、ＲＡＭ１１１に設定されたＡＴＴ層応答フラグをＯＮにし、応答すべきデータの準備をする。ＣＰＵ１１０は、リンク層データチェック処理、ＳＭ層データチェック処理、Ｌ２ＣＡＰ層データチェック処理においても同様に応答の要否を判定し、応答が必要であると判定した場合に、ＲＡＭ１１１に設定されたリンク層応答フラグ、Ｌ２ＣＡＰ層応答フラグ、ＳＭ層応答フラグをＯＮにする。
【００３２】
応答部１２３としてのＣＰＵ１１０は、無線通信装置２００への応答が必要であると判定された場合に、無線通信装置２００に応答を送信する。本実施形態において、ＣＰＵ１１０は、ＲＡＭ１１１に設定されたリンク層応答フラグ、Ｌ２ＣＡＰ層応答フラグ、ＳＭ層応答フラグ、ＡＴＴ層応答フラグを参照し、フラグがＯＮである場合に、応答すべきデータを無線通信装置２００に送信する。
【００３３】
図４は、本実施形態における電子時計１００のＣＰＵ１１０が実行する無線通信処理の動作の一例を示すフローチャートである。電子時計１００のＣＰＵ１１０は、例えば無線通信装置２００との接続が確立すると、図４に示す無線通信処理を開始する。
【００３４】
まず、ＣＰＵ１１０は、ＲＡＭ１１１に設定されたリンク層応答フラグがＯＮか否かを判定する（ステップＳ１０１）。リンク層応答フラグがＯＮでないと判定した場合（ステップＳ１０１；Ｎｏ）、ＣＰＵ１１０は、ＲＡＭ１１１に設定されたＬ２ＣＡＰ層応答フラグがＯＮか否かを判定する（ステップＳ１０２）。Ｌ２ＣＡＰ層応答フラグがＯＮでないと判定した場合（ステップＳ１０２；Ｎｏ）、ＣＰＵ１１０は、ＲＡＭ１１１に設定されたＳＭ層応答フラグがＯＮか否かを判定する（ステップＳ１０３）。ＳＭ層応答フラグがＯＮでないと判定した場合（ステップＳ１０３；Ｎｏ）、ＣＰＵ１１０は、ＲＡＭ１１１に設定されたＡＴＴ層応答フラグがＯＮか否かを判定する（ステップＳ１０４）。
【００３５】
リンク層応答フラグがＯＮであると判定した場合（ステップＳ１０１；Ｙｅｓ）、Ｌ２ＣＡＰ層応答フラグがＯＮであると判定した場合（ステップＳ１０２；Ｙｅｓ）、ＳＭ層応答フラグがＯＮであると判定した場合（ステップＳ１０３；Ｙｅｓ）、またはＡＴＴ層応答フラグがＯＮであると判定した場合（ステップＳ１０４；Ｙｅｓ）、ＣＰＵ１１０は、後述する応答処理を実行する（ステップＳ１０５）。
【００３６】
ＣＰＵ１１０は、ＲＡＭ１１１に設定されたＡＴＴ層応答フラグがＯＮでないと判定した場合（ステップＳ１０４；Ｎｏ）、ＲＡＭ１１１に設定されたカウンタｃｔが「１」か否かを判定する（ステップＳ１０６）。カウンタｃｔが「１」であるとした場合（ステップＳ１０６；Ｙｅｓ）、ＣＰＵ１１０はサービス発見処理を実行し（ステップＳ１０７）、ステップＳ１０１に戻る。
【００３７】
カウンタｃｔが「１」でないとした場合（ステップＳ１０６；Ｎｏ）、ＣＰＵ１１０は
カウンタｃｔが「２」か否かを判定する（ステップＳ１０８）。カウンタｃｔが「２」であるとした場合（ステップＳ１０８；Ｙｅｓ）、ＣＰＵ１１０はプロファイル構成処理を実行し（ステップＳ１０９）、ステップＳ１０１に戻る。
【００３８】
カウンタｃｔが「２」でないとした場合（ステップＳ１０８；Ｎｏ）、ＣＰＵ１１０は
カウンタｃｔが「３」か否かを判定する（ステップＳ１１０）。カウンタｃｔが「３」であるとした場合（ステップＳ１１０；Ｙｅｓ）、ＣＰＵ１１０は接続更新処理を実行し（ステップＳ１１１）、ステップＳ１０１に戻る。
【００３９】
カウンタｃｔが「３」でないとした場合（ステップＳ１１０；Ｎｏ）、ＣＰＵ１１０は
カウンタｃｔが「４」か否かを判定する（ステップＳ１１２）。カウンタｃｔが「４」であるとした場合（ステップＳ１１２；Ｙｅｓ）、ＣＰＵ１１０は接続継続処理を実行し（ステップＳ１１３）、ステップＳ１０１に戻る。
【００４０】
カウンタｃｔが「４」でないとした場合（ステップＳ１１２；Ｎｏ）、ＣＰＵ１１０は
カウンタｃｔが「５」か否かを判定する（ステップＳ１１４）。カウンタｃｔが「５」であるとした場合（ステップＳ１１４；Ｙｅｓ）、終了処理を実行し（ステップＳ１１５）、無線通信処理を終了する。カウンタｃｔが「５」でないとした場合（ステップＳ１１４；Ｎｏ）、例えばカウンタｃｔの値を「１」としてステップＳ１０１に戻る。
【００４１】
図５に本実施形態における電子時計１００のＣＰＵ１１０がサービス発見処理（図４のステップＳ１０７）、プロファイル構成処理（図４のステップＳ１０９）、接続更新処理（図４のステップＳ１１１）、接続継続処理（図４のステップＳ１１３）、及び終了処理（図４のステップＳ１１５）において共通して実行される、無線通信装置２００とのデータの送受信処理（データ送受信処理）の動作の一例を示すフローチャートを示す。
【００４２】
まずＣＰＵ１１０は、現在実行中の処理において、無線通信装置２００からのデータの受信を待っている状態か否かを判定する（ステップＳ２０１）。無線通信装置２００からのデータの受信を待っている状態であると判定した場合（ステップＳ２０１；Ｙｅｓ）、ＣＰＵ１１０は、通信部１０３を制御して、無線通信装置２００からデータを受信するデータ受信処理を実行する（ステップＳ２０２）。
【００４３】
そして、ＣＰＵ１１０は、ステップＳ２０２において受信したデータが実行中の処理において受信を期待していたイベントであるか否かを判定する（ステップＳ２０３）。受信したデータが受信を期待していたイベントであると判定した場合（ステップＳ２０３；Ｙｅｓ）、ＣＰＵ１１０は、現在のカウンタｃｔを１増加させることによりカウンタｃｔを更新する（ステップＳ２０４）。また、受信したデータが受信を期待していたイベントでないと判定した場合（ステップＳ２０３；Ｎｏ）、ＣＰＵ１１０は、層判定処理を実行する（ステップＳ２０５）。
【００４４】
また、ＣＰＵ１１０は、無線通信装置２００からのデータの受信を待っていない状態であると判定した場合（ステップＳ２０１；Ｎｏ）、すなわち無線通信装置２００へデータを送信すべきであると判定した場合、無線通信装置２００に送信するデータをセットする（ステップＳ２０６）。そして、ＣＰＵ１１０は、通信部１０３を制御して、無線通信装置２００との間でデータ送受信処理を実行する（ステップＳ２０７）。
【００４５】
そして、ＣＰＵ１１０は、ステップＳ２０７において無線通信装置２００から受信したデータがあるか否かを判定する（ステップＳ２０８）。無線通信装置２００から受信したデータがないと判定した場合（ステップＳ２０８；Ｎｏ）、ＣＰＵ１１０は、現在のカウンタｃｔを１増加させることによりカウンタｃｔを更新する（ステップＳ２０９）。また、無線通信装置２００から受信したデータがあると判定した場合（ステップＳ２０８；Ｙｅｓ）、ＣＰＵ１１０は、層判定処理を実行する（ステップＳ２０５）。
【００４６】
図６に本実施形態における電子時計１００のＣＰＵ１１０が実行する層判定処理の動作の一例を示すフローチャートを示す。まずＣＰＵ１１０は、図４に示すステップＳ２０２またはステップＳ２０８において受信したイベントがリンク層イベントか否かを判定する（ステップＳ３０１）。受信したイベントがリンク層イベントであると判定した場合（ステップＳ３０１；Ｙｅｓ）、ＣＰＵ１１０は、リンク層データチェック処理を実行し（ステップＳ３０２）、応答が必要であると判定した場合に、リンク層応答フラグをＯＮにして本処理を終了する。
【００４７】
そしてＣＰＵ１１０は、受信したイベントがリンク層イベントでないと判定した場合（ステップＳ３０１；Ｎｏ）、受信したイベントがＡＴＴ層イベントか否かを判定する（ステップＳ３０３）。受信したイベントがＡＴＴ層イベントであると判定した場合（ステップＳ３０３；Ｙｅｓ）、ＣＰＵ１１０は、ＲＡＭ１１１に設定されているＡＴＴ層応答フラグがＯＮか否かを判定する（ステップＳ３０４）。ＣＰＵ１１０は、ＡＴＴ層応答フラグがＯＮでないと判定した場合（ステップＳ３０４；Ｎｏ）、ＡＴＴ層データチェック処理を実行し（ステップＳ３０５）、応答が必要であると判定した場合に、ＡＴＴ層応答フラグをＯＮにして本処理を終了する。ＡＴＴ層応答フラグがＯＮであると判定した場合（ステップＳ３０４；Ｙｅｓ）、ＣＰＵ１１０は、本処理を終了する。
【００４８】
そしてＣＰＵ１１０は、受信したイベントがＡＴＴ層イベントでないと判定した場合（ステップＳ３０３；Ｎｏ）、受信したイベントがＳＭ層イベントか否かを判定する（ステップＳ３０６）。受信したイベントがＳＭ層イベントであると判定した場合（ステップＳ３０６；Ｙｅｓ）、ＣＰＵ１１０は、ＲＡＭ１１１に設定されているＳＭ層応答フラグがＯＮか否かを判定する（ステップＳ３０７）。ＣＰＵ１１０は、ＳＭ層応答フラグがＯＮでないと判定した場合（ステップＳ３０７；Ｎｏ）、ＳＭ層データチェック処理を実行し（ステップＳ３０８）、応答が必要であると判定した場合に、ＳＭ層応答フラグをＯＮにして本処理を終了する。ＳＭ層応答フラグがＯＮであると判定した場合（ステップＳ３０７；Ｙｅｓ）、ＣＰＵ１１０は、本処理を終了する。
【００４９】
そしてＣＰＵ１１０は、受信したイベントがＳＭ層イベントでないと判定した場合（ステップＳ３０６；Ｎｏ）、受信したイベントがＬ２ＣＡＰ層イベントか否かを判定する（ステップＳ３０９）。受信したイベントがＬ２ＣＡＰ層イベントであると判定した場合（ステップＳ３０９；Ｙｅｓ）、ＣＰＵ１１０は、ＲＡＭ１１１に設定されているＬ２ＣＡＰ層応答フラグがＯＮか否かを判定する（ステップＳ３１０）。ＣＰＵ１１０は、Ｌ２ＣＡＰ層応答フラグがＯＮでないと判定した場合（ステップＳ３１０；Ｎｏ）、Ｌ２ＣＡＰ層データチェック処理を実行し（ステップＳ３１１）、応答が必要であると判定した場合に、Ｌ２ＣＡＰ層応答フラグをＯＮにして本処理を終了する。Ｌ２ＣＡＰ層応答フラグがＯＮであると判定した場合（ステップＳ３１０；Ｙｅｓ）、ＣＰＵ１１０は、本処理を終了する。
【００５０】
そしてＣＰＵ１１０は、受信したイベントがＬ２ＣＡＰ層イベントでないと判定した場合（ステップＳ３０９；Ｎｏ）、エラーを通知し（ステップＳ３１２）、本処理を終了する。
【００５１】
図７に本実施形態における電子時計１００のＣＰＵ１１０が実行する応答処理の動作の一例を示すフローチャートを示す。まずＣＰＵ１１０は、無線通信装置２００に送信すべき送信データをセットする（ステップＳ４０１）。そして、ＣＰＵ１１０は、通信部１０３を制御して、無線通信装置２００との間でデータ送受信処理を実行する（ステップＳ４０２）。そして、ＣＰＵ１１０は、本処理の契機となった応答フラグをクリアする（ステップＳ４０３）。
【００５２】
そして、ＣＰＵ１１０は、ステップＳ４０２において無線通信装置２００から受信したデータがあるか否かを判定する（ステップＳ４０４）。無線通信装置２００から受信したデータがないと判定した場合（ステップＳ４０４；Ｎｏ）、ＣＰＵ１１０は、現在のカウンタｃｔを１増加させることによりカウンタｃｔを更新する（ステップＳ４０５）。また、無線通信装置２００から受信したデータがあると判定した場合（ステップＳ４０５；Ｙｅｓ）、ＣＰＵ１１０は、図６に示す層判定処理を実行する（ステップＳ４０６）。そして、ＣＰＵ１１０は、図４のステップＳ１０１に戻る。
【００５３】
以上説明したように、本実施形態に係る電子時計１００のＣＰＵ１１０は、複数の通常処理を複数の処理それぞれに対応するカウンタに基づいて所定の順序で実行する。またその際に、通信プロトコルスタックを構成する複数の階層のそれぞれについて、無線通信装置２００への応答の要否を判定し、応答を要すると判定した場合に、無線通信部を制御して、応答を送信する。またＣＰＵ１１０は、現在実行中の処理を終了するとき、カウンタを次に実行すべき処理を表すように更新する。従って、ＣＰＵ１１０は、応答を要する通常と異なる処理が要求されても、応答を送信しつつ、カウンタに基づいて通常処理を実行するため、安定して通信を維持することができる。なお、カウンタは必ずしも１ずつカウントアップされる必要はなく、例えば、サービス発見処理等の各処理中に、特定の数値にカウンタが変更されてもよい。よって、サービス発見処理を行った次の処理が、接続更新処理や、終了処理となるように、複数の通常処理をカウンタに基づいて実行することで、順序が入れ替わってもよい。このようにカウンタの制御は、適宜変更可能である。
【００５４】
また、本実施形態に係る電子時計１００のＣＰＵ１１０は、複数の階層のそれぞれについて、当該階層で無線通信装置２００から受信する可能性があるコマンド毎に、応答の要否を判定する。従って、ＣＰＵ１１０は、応答を要するコマンドを受信した場合に、そのコマンドに対応する応答を無線通信装置２００に送信することができる。
【００５５】
また、本実施形態に係る電子時計１００のＣＰＵ１１０は、複数の処理のそれぞれについて、期待されるイベントと異なるイベントが発生した場合に、複数の階層それぞれについて受信する可能性があるコマンド毎に、応答の要否を判定する。従って、ＣＰＵ１１０は、通常処理のイベントと異なるイベントが発生した場合に、そのイベントに応じた応答を無線通信装置２００に送信するこができる。
【００５６】
また、上記の実施形態では、電子時計１００及び無線通信装置２００が、Ｂｌｕｅｔｏｏｔｈ（登録商標）で通信する例を説明した。しかし、電子時計１００及び無線通信装置２００は、その他の通信方法、例えば、無線ＬＡＮ（Local Area Network）やＷｉ−Ｆｉ（登録商標）で通信しても良い。
【００５７】
また、上記の実施形態では、電子時計１００を例に挙げて説明したが、本発明はこれに限られず、無線通信可能な電子機器に適用可能である。本発明は、特に、電子時計１００にように、比較的小さな容量を有するバッテリを搭載する携帯可能な電子機器に好適である。
【００５８】
また、上記の実施形態では、ＣＰＵ１１０が、制御動作を行う例を説明した。しかし、制御動作は、ＣＰＵによるソフトウェア制御に限られるものではない。制御動作の一部又は全部が専用の論理回路などのハードウェア構成を用いてなされても良い。
【００５９】
また、以上の説明では、本発明のデータ通信処理に係るプログラム、アドバタイズ処理に係るプログラムを記憶するコンピュータ読み取り可能な媒体としてフラッシュメモリなどの不揮発性メモリからなるＲＯＭ１０２を例に挙げて説明した。しかし、コンピュータ読み取り可能な媒体は、これらに限定されず、ＨＤＤ（Hard Disk Drive）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ（Digital Versatile Disc）などの可搬型記録媒体を適用してもよい。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウェーブ（搬送波）も本発明に適用される。
【００６０】
その他、上記実施の形態で示した構成、制御手順や表示例などの具体的な細部は、本発明の趣旨を逸脱しない範囲において適宜変更可能である。
【００６１】
本発明のいくつかの実施形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記の番号は、この出願の願書に最初に添付した特許請求の範囲の通りである。
【００６２】
（付記１）
複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する無線通信部と、
制御部と、
を備え、
前記制御部は、
前記無線通信部を制御して、前記他の無線通信装置とのデータの送受信を含む複数の処理を、前記複数の処理それぞれに対応するカウンタに基づいて実行し、
前記処理の実行中に期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれについて、前記他の無線通信装置への応答の要否を判定し、
前記応答を要すると判定した場合に、前記無線通信部を制御して、前記応答を送信し、
現在実行中の処理を終了するとき、前記カウンタを次に実行すべき処理を表すように更新する、
ことを特徴とする無線通信装置。
【００６３】
（付記２）
前記制御部は、前記複数の階層のそれぞれについて、当該階層で前記他の無線通信装置から受信する可能性があるコマンド毎に、前記応答の要否を判定する、
ことを特徴とする付記１に記載の無線通信装置。
【００６４】
（付記３）
前記制御部は、
前記複数の処理それぞれの実行中に、期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれで受信する可能性があるコマンド毎に、前記応答の要否を判定する、
ことを特徴とする付記２に記載の無線通信装置。
【００６５】
（付記４）
付記１乃至３のいずれか１つに記載の無線通信装置と、
現在時刻を計時する計時部と、
前記計時部により計時された現在時刻を表示する表示部と、
を備えることを特徴とする電子時計。
【００６６】
（付記５）
複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する無線通信部を備える無線通信装置が実行する無線通信方法であって、
前記無線通信部を制御して、前記他の無線通信装置とのデータの送受信を含む複数の処理を、前記複数の処理それぞれに対応するカウンタに基づいて実行し、
前記処理の実行中に期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれについて、前記他の無線通信装置への応答の要否を判定し、
前記応答を要すると判定した場合に、前記無線通信部を制御して、前記応答を送信し、
現在実行中の処理を終了するとき、前記カウンタを次に実行すべき処理を表すように更新する、
ことを特徴とする無線通信方法。
【００６７】
（付記６）
複数の階層から構成される通信プロトコルスタックに従って他の無線通信装置と互いに無線通信する無線通信部を備えるコンピュータを、
前記無線通信部を制御して、前記他の無線通信装置とのデータの送受信を含む複数の処理を、前記複数の処理それぞれに対応するカウンタに基づいて実行する処理手段、
前記処理の実行中に期待されるイベントと異なるイベントが発生した場合に、前記複数の階層のそれぞれについて、前記他の無線通信装置への応答の要否を判定する応答要否判定手段、
前記応答を要すると判定した場合に、前記無線通信部を制御して、前記応答を送信する応答手段、
として機能させ、
前記処理手段は、現在実行中の処理を終了するとき、前記カウンタを次に実行すべき処理を表すように更新する、
ことを特徴とするプログラム。
【符号の説明】
【００６８】
１…無線通信システム、１０…無線通信装置、１００…電子時計、１０１…マイクロコンピュータ、１０２…ＲＯＭ、１０３…通信部、１０４…アンテナ、１０５…電力供給部、１０６…表示部、１０７…表示ドライバ、１０８…操作受付部、１０９…振動子、１１０…ＣＰＵ、１１１…ＲＡＭ、１１２…発振回路、１１３…分周回路、１１４…計時回路、１１５…プログラム、１２１…通常処理部、１２２…応答要否判定部、１２３…応答部、２００…無線通信装置
【図１】
2019067187.tif 000003
【図２】
2019067187.tif 000004
【図３】
2019067187.tif 000005
【図４】
2019067187.tif 000006
【図５】
2019067187.tif 000007
【図６】
2019067187.tif 000008
【図７】
2019067187.tif 000009