以下、本発明の実施の形態を図面に基づいて説明する。
(第1実施形態)
図1は、本発明の第1実施形態に係る無線通信システム1の構成例を表す図である。
図1に示す構成例において、無線通信システム1は、電子時計100とスマートフォン200とから構成される。電子時計100とスマートフォン200とは、Bluetooth(登録商標) low energy(以下、BLEという。)に基づいて、互いに無線通信を行う。BLEとは、Bluetooth(登録商標)と呼ばれる近距離無線通信規格において、低消費電力を目的として策定された規格(モード)である。本実施形態において、電子時計100とスマートフォン200との接続が確立した後の無線通信時において、BLEに基づいて、電子時計100は、スレーブとして動作し、スマートフォン200は、マスターとして、動作する。
次に、第1実施形態に係る電子時計100の構成について説明する。
まず、第1実施形態に係る電子時計100のハードウェア構成について説明する。図2は、本発明の第1実施形態に係る電子時計100の構成を示すブロック図である。電子時計100は、マイクロコンピュータ101と、ROM(Read Only Memory)102(Read Only Memory)と、通信モジュール103と、アンテナ104と、電力供給部105と、表示部106と、表示ドライバ107と、操作受付部108と、振動子109とを備える。
マイクロコンピュータ101は、CPU(Central Processing Unit)110と、記憶部としてのRAM(Random Access Memory)111と、発振回路112と、分周回路113と、計時回路114などを備える。なお、RAM111、発振回路112、分周回路113、及び計時回路114は、マイクロコンピュータ101の内部に限られず、マイクロコンピュータ101の外部に設けられてもよい。また、ROM102と、表示ドライバ107と、電力供給部105と、振動子109と、通信モジュール103と、アンテナ104とは、マイクロコンピュータ101の外部に限られず、マイクロコンピュータ101の内部に設けられてもよい。
CPU110は、各種演算処理を行い、電子時計100の全体動作を統括制御するプロセッサである。CPU110は、ROM102から制御プログラムを読み出し、RAM111にロードして時刻の表示や各種機能に係る演算制御や表示などの各種動作処理を行う。また、CPU110は、通信モジュール103を制御してスマートフォン200とデータ通信を行う。
RAM111は、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの揮発性のメモリであり、CPU110に作業用のメモリ空間を提供して一時データを記憶すると共に、各種設定データを記憶する。
発振回路112は、振動子109を発振させて、所定の周波数信号(クロック信号)を生成して出力する。この発振回路112には、例えば、水晶発振器が用いられている。
分周回路113は、発振回路112から入力された周波数信号を計時回路114やCPU110が利用する周波数の信号に分周して出力する。この出力信号の周波数は、CPU110による設定に基づいて変更されても良い。
計時回路114は、分周回路113から入力された所定の計時信号の入力回数を計数して初期値に加算することで現在の時刻を計時する。計時回路114は、RAM111に記憶させる値を変化させるソフトウェアにより構成されても良いし、或いは、専用のカウンタ回路により構成されても良い。計時回路114が計時する時刻は、所定のタイミングからの累積時間、UTC(Coordinated Universal Time、協定世界時)、又は予め設定された都市の時刻(地方時)などのうち何れであっても良い。また、この計時回路114が計時する時刻は、必ずしも年月日時分秒の形式で保持される必要がない。また、計時回路114が計時する時刻は、後述するようにCPU110からの指示によって変更される。
これら発振回路112、分周回路113及び計時回路114により計時部が構成される。
ROM102は、マスクROMや書き換え可能な不揮発性メモリなどであり、制御プログラムや初期設定データを記憶する。制御プログラムの中には、スマートフォン200から時刻を修正するためのデータを通信し、電子時計100が計時する時刻を変更するための各種処理の制御に係るプログラム115が含まれる。
通信モジュール103は、アンテナ104を介して、BLEに基づく無線信号の送信及び受信を行う。通信モジュール103の構成を図3に示す。図3に示すように、通信モジュール103は、制御部としてのCPU131と、ROM132と、RAM133と、通信部134とを備える。
CPU131は、各種演算処理を行い、通信モジュール103の全体動作を統括制御するプロセッサである。CPU131は、ROM132から制御プログラムを読み出し、RAM133にロードして、BLEに基づく無線信号の送信及び受信に係る各種動作処理を行う。また、CPU131は、CPU110からの指示に従って、各種動作処理を行う。
通信部134は、例えば無線周波数(RF:Radio Frequency)回路やベースバンド(BB:Baseband)回路、メモリ回路で構成される。通信部134は、アンテナ104を介して受信した無線信号を、復調、復号等してCPU131へ送る。また、通信部134は、CPU131から送られた信号を、符号化、変調等して、アンテナ104を介して外部へ送信する。
電力供給部105は、バッテリを備え、電子時計100の動作に係る電力を各部にその動作電圧で供給する。電力供給部105のバッテリとしては、本実施形態では、ボタン型乾電池などの一次電池が用いられている。或いは、バッテリとして、ソーラパネルと二次電池が用いられ、ソーラパネルへの入射光に応じた起電力の大小により、二次電池が充放電されても良い。
これらマイクロコンピュータ101、ROM102、通信モジュール103、アンテナ104、電源供給部105、及び振動子109により無線通信装置10が構成される。
表示部106は、例えば、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機EL(Electro-Luminescent)ディスプレイなどの表示画面を備え、ドットマトリクス方式及びセグメント方式の何れか又はこれらの組み合わせにより時刻や各種機能に係るデータを表示するデジタル表示動作を行う。表示ドライバ107は、表示画面の種別に応じた駆動信号をCPU110からの制御信号に基づいて表示部106に出力して、表示画面上に表示を行わせる。或いは、表示部106は、複数の指針をステッピングモータにより輪列機構を介して回転動作させることで表示を行うアナログ式の構成を有するものであっても良い。
操作受付部108は、ユーザからの入力操作を受け付けて、当該入力操作に応じた電気信号を入力信号としてCPU110に出力する。この操作受付部108は、例えば、押しボタンスイッチやりゅうずを含む。或いは、操作受付部108として、タッチセンサが、表示部106の表示画面に重ねて設けられ、表示画面とともにタッチパネルを構成してもよい。この場合、タッチセンサは、当該タッチセンサへのユーザの接触動作に係る接触位置や接触態様を検出し、検出された接触位置や接触態様に応じた操作信号をCPU110に出力する。
次に、第1実施形態に係る電子時計100のCPU110の機能構成について説明する。
図2に示すように、CPU110は、接続制御部121、データ通信制御部122、及び変更部123として機能する。これら接続制御部121、データ通信制御部122、及び変更部123の機能は、単一のCPUにより実現されても良いし、各々別個のCPUにより実現されてもよい。また、それらの機能は、通信モジュール103のCPU131等、マイクロコンピュータ101以外のプロセッサにより実現されても良い。
接続制御部121としてのCPU110は、通信モジュール103を制御して、スマートフォン200との接続を制御する。具体的には、CPU110は、通信モジュール103を制御して、スマートフォン200から、アドバタイズパケットを受信するためのスキャンを実行する。本実施形態において、CPU110は、計時回路114が計時する時刻Twが所定の時刻Tよりも所定時間前になったとき、スキャンの開始を通信モジュール103に指示する。また、CPU110は、通信モジュール103から、スマートフォン200からのアドバタイズパケットを受信した旨の通知を受け付けると、スマートフォン200への接続要求の送信を通信モジュール103に指示する。また、CPU110は、スマートフォン200との接続が確立した後、例えば、スマートフォン200からのデータの受信が終了したとき、またはスマートフォン200との通信を終了する指示を操作受付部108を介してユーザから受け付けたとき、スマートフォン200への切断要求の送信を通信モジュール103に指示する。
データ通信制御部122としてのCPU110は、スマートフォン200との接続が確立した後、通常モード及び時刻変更モードうちの通常モードに基づいて、スマートフォン200との無線通信を制御する。
ここで、通常モードは、スマートフォン200から、後述する時刻データ以外の所定データを受信するモードである。また、時刻変更モードは、スマートフォン200から、スマートフォン200が計時する現在時刻を表す時刻データを受信し、受信された時刻データに基づいて、電子時計100が計時する現在時刻を変更するモードである。具体的には、CPU110は、初期設定において、通常モードで動作するように設定されている。そして、CPU110は、例えば、時刻変更モードで動作する指示を操作受付部108を介してユーザから受け付けたとき、時刻変更モードで動作するよう、通信モジュール103に指示する。なお、通常モードは、本発明の第1モードの一例であり、時刻変更モードは、本発明の第2モードの一例である。
具体的には、データ通信制御部122としてのCPU110は、所定データを含むリード応答の送信をスマートフォン200に要求するリード要求を送信するよう、通信モジュール103に指示する。また、CPU110は、通信モジュール103から、リード応答に含まれる所定データを受け付ける。
変更部123としてのCPU110は、スマートフォン200との接続が確立した後、時刻変更モードに基づいて、スマートフォン200との無線通信を制御する。具体的には、CPU110は、スマートフォン200が計時する現在時刻を表す時刻データを含むリード応答の送信をスマートフォン200に要求するリード要求を送信するよう、通信モジュール103に指示する。より詳細には、CPU110は、時刻データを受信するために、接続が確立したスマートフォン200に対して、CTS(Current Time Service)が提供する必須のキャラクタリスティック(属性)であるCurrent Time Characteristicの値を読み出すためのリード要求を送信する。ここで、CTSは、GATT(Generic Attribute Profile)と呼ばれるプロファイルをベースとして定義されたTIP(Time Profile)に含まれるサービスのひとつであり、BLEを用いて他装置に時刻情報を公開する方法などが定義されている。CTSには、少なくとも、自装置が計時する時刻を公開するCurrent Time Characteristicが割り当てられている。また、CPU110は、通信モジュール103から、リード応答に含まれる時刻データとして、Current Time Characteristicの値を受け付ける。そして、CPU110は、受け付けたCurrent Time Characteristicの値に基づいて、計時回路114が計時する現在時刻を変更する。具体的には、CPU110は、受け付けたCurrent Time Characteristicの値が、時刻Tp0を表す場合、CPU110は、計時回路114が計時する現在時刻Twを、Tw=Tp0に変更する。
次に、第1実施形態に係る通信モジュール103のCPU131の機能構成について説明する。
図3に示すように、CPU131は、接続制御部141、データ通信制御部142、及び再送抑制部143として機能する。これら接続制御部141、データ通信制御部142、及び再送抑制部143の機能は、単一のCPUにより実現されても良いし、各々別個のCPUにより実現されてもよい。また、それらの機能は、CPU110等、CPU131以外のプロセッサにより実現されても良い。
接続制御部141としてのCPU131は、通信部134を制御して、スマートフォン200との接続を制御する。具体的には、CPU131は、CPU110からスキャンの開始指示を受け付けると、通信部134を制御して、アドバタイズパケットのスキャンを開始する。そして、CPU131は、通信部134がアドバタイズパケットを受信すると、CPU110にアドバタイズパケットの受信を通知する。また、CPU131は、CPU110から接続要求の送信指示を受け付けると、通信部134を制御して、スマートフォン200に接続要求を送信する。そして、CPU131は、CPU110に接続の完了を通知する。
データ通信制御部142としてのCPU131は、スマートフォン200との接続が確立した後、通常モードにおいて、スマートフォン200との無線通信を制御する。
具体的には、通常モードにおいて、CPU131は、通信部134を制御して、所定データを含むリード応答の送信を要求するリード要求を、スマートフォン200に送信する。そして、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信しなかった場合、通信部134を制御して、リード応答の再送を要求する再送要求をスマートフォン200に送信する。ここで、リード応答を正常に受信しなかった場合は、例えば、通信部134がリード応答を所定時間内に受信しなかった場合や、受信したリード応答のCRC(Cyclic Redundancy Check)エラーが発生した場合を含む。また、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信した場合、リード応答に含まれる所定データとともに、リード応答の受信をCPU110に通知する。
再送抑制部143としてのCPU131は、スマートフォン200との接続が確立した後、時刻変更モードにおいて、スマートフォン200との無線通信を制御する。
具体的には、時刻変更モードにおいて、CPU131は、通信部134を制御して、所定データを含むリード応答の送信を要求するリード要求を、スマートフォン200に送信する。そして、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信しなかった場合、通信部134を制御して、スマートフォン200が新たに受信した所定データを含むリード応答の送信を要求するリード要求をスマートフォン200に送信する。また、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信した場合、リード応答に含まれる所定データとともに、リード応答の受信をCPU110に通知する。
本実施形態では、時刻変更モードにおいて、CPU131は、通信部134を制御して、所定データとして、スマートフォン200が計時した現在時刻を表す時刻データを含むリード応答の送信を要求するリード要求を、スマートフォン200に送信する。より詳細には、CPU131は、通信部134を制御して、スマートフォン200からCurrent Time Characteristicの値を読み出すためのリード要求をスマートフォン200に送信する。そして、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信しなかった場合、通信部134を制御して、スマートフォン200が新たに計時した現在時刻を表す時刻データを含むリード応答の送信を要求するリード要求をスマートフォン200に送信する。また、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信した場合、リード応答に含まれる時刻データ、すなわちCurrent Time Characteristicの値をCPU110に通知する。
次に、CPU131が、通常モード及び時刻変更モードにおいて、リード要求、リード応答、及び再送要求を含む、スマートフォン200との間で送受信するデータパケットについて説明する。図4に、データパケットのPDU(Payload Data Unit)の構成を示す。図4に示すように、データパケットのPDUは、16ビットのヘッダ(Header)と、ヘッダに含まれるレングス(Length)に設定された値の長さを有するペイロード(Payload)とを含む。さらに、ヘッダは、SN(Sequence Number)と、NESN(Next Expected Sequence Number)と、レングス等のフィールドを含む。SNは、自装置が送信するデータパケットのシーケンス番号が設定されるフィールドである。NESNは、自装置が送信したデータパケットに対して通信先が送信すべきデータパケットのシーケンス番号が設定されるフィールドである。SN及びNESNは、それぞれ1ビットのデータである。なお、NESNは、本発明の識別子の一例である。
通常モードにおいて、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信しなかった場合、通信部134を制御して、前回送信したリード要求に含まれるNESNと同じNESNを含むリード要求を、再送要求としてスマートフォン200に送信する。一方、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信した場合、通信部134を制御して、前回送信したリード要求に含まれるNESNに設定された値をインクリメントし、新しいデータパケットの送信を要求するリード要求をスマートフォン200に送信する。
また、時刻変更モードにおいて、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信しなかった場合及び正常に受信した場合のいずれの場合においても、通信部134を制御して、前回送信したリード要求に含まれるNESNに設定された値をインクリメントし、新しいデータパケットの送信を要求するリード要求をスマートフォン200に送信する。
次に、第1実施形態に係るスマートフォン200の構成について説明する。
まず、第1実施形態に係るスマートフォン200のハードウェア構成について説明する図5は、本発明の第1実施形態に係るスマートフォン200の構成を示すブロック図である。スマートフォン200は、マイクロコンピュータ201と、ROM202と、通信モジュール203と、アンテナ204と、電力供給部205と、表示部206と、表示ドライバ207と、操作受付部208と、振動子209とを備える。
マイクロコンピュータ201は、制御部としてのCPU210と、記憶部としてのRAM211と、発振回路212と、分周回路213と、計時回路214とを備える。なお、RAM211、発振回路212、分周回路213、及び計時回路214は、マイクロコンピュータ201の内部に限られず、マイクロコンピュータ201の外部に設けられてもよい。また、ROM202と、通信モジュール203と、電力供給部205と、表示ドライバ207と、振動子209は、マイクロコンピュータ201の外部に限られず、マイクロコンピュータ201の内部に設けられてもよい。
CPU210は、各種演算処理を行い、スマートフォン200の全体動作を統括制御するプロセッサである。CPU210は、ROM202から制御プログラムを読み出し、RAM211にロードして時刻の表示や各種機能に係る演算制御や表示などの各種動作処理を行う。また、CPU210は、通信モジュール203を制御し、電子時計100とデータ通信を行う。
RAM211は、SRAMやDRAMなどの揮発性のメモリであり、CPU210に作業用のメモリ空間を提供して一時データを記憶すると共に、各種設定データを記憶する。
発振回路212は、振動子209を発振さることにより所定の周波数信号(クロック信号)を生成して出力する。この発振回路212として、例えば、水晶発振器が用いられる。
分周回路213は、発振回路212から入力された周波数信号を、計時回路214やCPU210が利用する周波数の信号に分周して出力する。この出力信号の周波数は、CPU210による設定に基づいて変更されても良い。
計時回路214は、分周回路213から入力された所定の計時信号の入力回数を計数して初期値に加算することで現在の時刻を計時する。計時回路214は、RAM211に記憶させる値を変化させるソフトウェアにより構成されても良いし、或いは、専用のカウンタ回路により構成されても良い。計時回路214が計時する時刻は、所定のタイミングからの累積時間、UTC、又は予め設定された地方時などのうち何れであっても良い。また、この計時回路214が計時する時刻は、必ずしも年月日時分秒の形式で保持される必要がない。また、計時回路214が計時する時刻は、Wi−Fi(登録商標)等の外部から得られる時刻によって修正可能である。
これら発振回路212、分周回路213及び計時回路214により計時部が構成される。
ROM202は、マスクROMや書き換え可能な不揮発性メモリなどであり、制御プログラムや初期設定データが記憶されている。制御プログラムの中には、電子時計100と電子時計100の時刻を変更するためのデータを通信し、電子時計100が計時する時刻を変更するための各種処理の制御に係るプログラム215が含まれる。
通信モジュール203は、アンテナ204を介して、BLEに基づく無線信号の送信及び受信を行う。通信モジュール203の構成を図6に示す。図6に示すように、通信モジュール203は、制御部としてのCPU231と、ROM232と、RAM233と、通信部234とを備える。
CPU231は、各種演算処理を行い、通信モジュール203の全体動作を統括制御するプロセッサである。CPU231は、ROM232から制御プログラムを読み出し、RAM233にロードして、BLEに基づく無線信号の送信及び受信に係る各種動作処理を行う。また、CPU231は、CPU210からの指示に従って、各種動作処理を行う。
通信部234は、例えば無線周波数(RF:Radio Frequency)回路やベースバンド(BB:Baseband)回路、メモリ回路で構成される。通信部234は、アンテナ204を介して受信した無線信号を、復調、復号等してCPU231へ送る。また、通信部234は、CPU231から送られた信号を、符号化、変調等して、アンテナ204を介して外部へ送信する。
電力供給部205は、バッテリを備え、スマートフォン200の動作に係る電力を各部にその動作電圧で供給する。電力供給部205のバッテリとしては、本実施形態では、リチウムイオン電池等の二次電池が用いられる。
これらマイクロコンピュータ201、ROM202、通信モジュール203、アンテナ204、電源供給部205、及び振動子209により無線通信装置20が構成される。
表示部206は、例えば、液晶ディスプレイや有機ELディスプレイなどの表示画面を備える。表示ドライバ207は、表示画面の種別に応じた駆動信号をCPU210からの制御信号に基づいて表示部206に出力して、表示画面上への表示を行う。
操作受付部208は、ユーザからの入力操作を受け付けて、当該入力操作に応じた電気信号を入力信号としてCPU210に出力する。例えば、操作受付部208としてタッチセンサが表示部206の表示画面に重ねて設けられ、表示画面とともにタッチパネルを構成してもよい。この場合、タッチセンサは、当該タッチセンサへのユーザの接触動作に係る接触位置や接触態様を検出し、検出された接触位置や接触態様に応じた操作信号をCPU210に出力する。
次に、第1実施形態に係るスマートフォン200のCPU210の機能構成について説明する。
CPU210は、接続制御部221及びデータ通信制御部222として機能する。これら接続制御部221及びデータ通信制御部222の機能は、単一のCPUにより実現されても良いし、各々別個のCPUにより実現されても良い。また、それらの機能は、通信モジュール203のCPU231等、マイクロコンピュータ201以外のプロセッサにより実現されても良い。
接続制御部221としてのCPU210は、通信モジュール203を制御して、電子時計100との接続を制御する。具体的には、CPU210は、通信モジュール203を制御して、電子時計100にスマートフォン200の存在を知らせるためのアドバタイズパケットの送信を実行する。本実施形態において、CPU210は、計時回路214が計時する時刻Tpが所定の時刻Tになったとき、アドバタイズパケットの送信開始を通信モジュール203に指示する。また、CPU210は、通信モジュール203から、電子時計100からの接続要求を受信して、接続が確立した旨の通知を受け付けると、アドバタイズパケットの送信を停止するよう、通信モジュール203に指示する。
データ通信制御部222としてのCPU210は、電子時計100との接続が確立した後、電子時計100との無線通信を制御する。具体的には、CPU210は、通信モジュール203から、所定データを含むリード応答の送信をスマートフォン200に要求するリード要求を受信した旨の通知を受け付けると、所定データを受信し、受信された所定データを含むリード応答を電子時計100に送信するよう、通信モジュール203に指示する。
また、CPU210は、所定データとして、スマートフォン200が計時した現在時刻を表す時刻データを含むリード応答の送信を要求するリード要求を受信した旨の通知を通信モジュール203から受け付けると、計時回路214が計時する現在時刻を表す時刻データとして、Current Time Characteristicの値を受信する。そして、CPU210は、受信された時刻データを含むリード応答を電子時計100に送信するよう、通信モジュール203に指示する。
次に、第1実施形態に係る通信モジュール203のCPU231の機能構成について説明する。
図6に示すように、CPU231は、接続制御部241及びデータ通信制御部242として機能する。これら接続制御部241及びデータ通信制御部242の機能は、単一のCPUにより実現されても良いし、各々別個のCPUにより実現されてもよい。また、それらの機能は、CPU210等、CPU231以外のプロセッサにより実現されても良い。
接続制御部241としてのCPU231は、通信部234を制御して、電子時計100との接続を制御する。具体的には、CPU231は、CPU210からアドバタイジングパケットの送信開始の指示を受け付けると、通信部234を制御して、アドバタイズパケットの送信を開始する。そして、CPU231は、所定の時間間隔Tiおきにアドバタイジングパケットを送信する。また、CPU231は、通信部234が電子時計100から接続要求を受信すると、電子時計100からの接続要求を受信して、接続が確立した旨をCPU210に通知する。また、CPU231は、CPU210からアドバタイズパケットの送信停止の指示を受け付けると、通信部234を制御して、アドバタイズパケットの送信を停止する。
データ通信制御部242としてのCPU231は、電子時計100との接続が確立した後、電子時計100との無線通信を制御する。具体的には、CPU231は、通信部234が所定データを含むリード応答の送信を要求するリード要求を、電子時計100から受信すると、リード要求を受信した旨をCPU210に通知する。そして、CPU231は、CPU210から所定データを含むリード応答を送信する旨の指示を受け付けると、通信部234を制御して、電子時計100にリード応答を送信する。また、CPU231は、通信部234がリード応答の再送を要求する再送要求を電子時計100から受信すると、電子時計100に前回送信したリード応答と同じリード応答を電子時計100に送信する。
図7は、第1実施形態における無線通信システム1の接続確立動作の一例を示すシーケンス図である。図7に示す例では、電子時計100がセントラル、スマートフォン200がペリフェラルとして動作する場合の、電子時計100及びスマートフォン200のホスト及びコントローラの動作について説明する。ここで、CPU110、210がホストとして機能する。また、CPU131、231がコントローラとして機能する。
電子時計100とスマートフォン200は、例えば、1日に1回の定期的な時刻である時刻Tに接続確立動作を開始する。また、電子時計100は、時刻変更モードで動作する場合、予め時刻変更モードで動作するように設定される。以下の説明において、電子時計100の計時回路114が計時する現在時刻をTw、スマートフォン200の計時回路214が計時する現在時刻をTp、と表す。
電子時計100は、時刻Tw=Tにスマートフォン200からのアドバタイズパケットを受信できるように、時刻Tw=Tに対して時間Mだけ早くスキャンを開始する。即ち、電子時計100のCPU110は、時刻Tw=T−Mに、CPU131へスキャンを開始するように指示する(ステップS10)。
時間Mは時刻Tに対する電子時計100とスマートフォン200との間の計時誤差のためのマージンであり、電子時計100からのアドバタイズパケットをいち早く確実に受信するために設定される。時間Mは、例えば、計時回路214の歩度と、電子時計100の前回の時刻変更からの経過時間とを考慮し、計時回路214が計時する時刻Tpの誤差よりも長い時間に設定されることが好ましい。
スマートフォン200のCPU210は、時刻Tp=Tに、CPU231にアドバタイズパケットを送信するように指示する(ステップS11)。以後、CPU231は、時間間隔Tiおきに、アドバタイズパケットを送信する(ステップS12)。
電子時計100のCPU131は、スマートフォン200からアドバタイズパケットを受信すると、アドバタイズパケットを受信した旨をCPU110に通知する(ステップS13)。
CPU110は、接続要求をスマートフォン200に送信するよう、CPU131に指示する(ステップS14)。これにより、CPU131は、電子時計100へ接続要求を送信する(ステップS15)。そして、CPU131は、スマートフォン200との接続確立をCPU110に通知する(ステップS16)。
スマートフォン200のCPU231は、電子時計100から接続要求を受信すると、電子時計100との接続確立をCPU210に通知する(ステップS17)。そして、CPU210は、CPU231にアドバタイズパケットの送信を停止するよう指示する(ステップS18)。
以上の接続確立動作により、電子時計100とスマートフォン200との接続が確立される。以後、電子時計100及びスマートフォン200は、図8及び図9に例示するデータ通信動作を実行する。図8及び図9に示す例では、電子時計100がマスター、スマートフォン200がスレーブとして動作する場合の、電子時計100及びスマートフォン200のホスト及びコントローラの動作について説明する。ここで、CPU110、210がホストとして機能する。また、CPU131、231がコントローラとして機能する。
図8は、第1実施形態における無線通信システム1の通常モードにおけるデータ通信動作の一例を示すシーケンス図である。
まず、電子時計のCPU131が、スマートフォン200からのリード応答を正常に受信する場合のデータ通信動作について説明する。
電子時計のCPU110は、CPU131に、所定データを含むリード応答の送信を要求するリード要求(Read_REQ)をスマートフォン200に送信するよう指示する(ステップS21)。そして、CPU131は、SN及びNESNにそれぞれ初期値である「0」が設定されたリード要求をスマートフォン200に送信する(ステップS22)。
スマートフォン200のCPU231は、電子時計100からリード要求を受信すると、CPU110にリード要求の受信を通知する(ステップS23)。また、CPU231は、SNに「0」、NESNに「1」が設定された空パケット(Empty PDU)を電子時計100に送信する(ステップS24)。すなわち、CPU231は、ステップS22においてリード要求を正常に受信したため、電子時計100から次のパケットの送信を要求するべく、受信したリード要求に含まれるSNに設定された「0」をインクリメントすることにより、電子時計100に送信すべき空パケットに含まれるNESNに「1」を設定する。
スマートフォン200のCPU210は、所定データを受信し、受信された所定データを含むリード応答(Read_RSP)を電子時計100に送信するようCPU231に指示する(ステップS25)。
電子時計100のCPU131は、ステップS24において送信されたスマートフォン200からの空パケットを正常に受信すると、SNに「1」、NESNに「1」が設定された空パケットをスマートフォン200に送信する(ステップS26)。すなわち、CPU131は、受信した空パケットに含まれるNESNに設定された「1」をSNに設定する。また、CPU131は、ステップS24において送信されたスマートフォン200からの空パケットを正常に受信したため、スマートフォン200から次のパケットの送信を要求するべく、受信した空パケットに含まれるSNに設定された「0」をインクリメントすることにより、NESNに「1」を設定する。
スマートフォン200のCPU231は、ステップS26において送信された電子時計100からの空パケットを正常に受信すると、SNに「1」、NESNに「0」が設定された、所定データを含むリード応答を電子時計100に送信する(ステップS27)。すなわち、CPU231は、受信した空パケットに含まれるNESNに設定された「1」をSNに設定する。また、CPU231は、ステップS26において送信された電子時計100からの空パケットを正常に受信したため、電子時計100から次のパケットの送信を要求するべく、受信した空パケットに含まれるSNに設定された「1」をインクリメントすることにより、NESNに「0」を設定する。
電子時計100のCPU131は、ステップS27において送信されたスマートフォン200からのリード応答を正常に受信すると、リード応答に含まれる所定データとともに、リード応答の受信をCPU110に通知する(ステップS28)。
次に、電子時計のCPU131が、スマートフォン200からのリード応答の受信に失敗する場合のデータ通信動作について説明する。
まず、電子時計のCPU110は、CPU131に、所定データを含むリード応答の送信を要求するリード要求をスマートフォン200に送信するよう指示する(ステップS29)。そして、CPU131は、SN及びNESNにそれぞれ「0」が設定されたリード要求をスマートフォン200に送信する(ステップS30)。すなわち、CPU131は、ステップS27において受信した空パケットに含まれるNESNに設定された「0」をSNに設定する。また、CPU131は、ステップS27において送信されたスマートフォン200からの空パケットを正常に受信したため、スマートフォン200から次のパケットの送信を要求するべく、受信した空パケットに含まれるSNに設定された「1」をインクリメントすることにより、NESNに「0」を設定する。
スマートフォン200のCPU231は、電子時計100からリード要求を受信すると、CPU110にリード要求の受信を通知する(ステップS31)。また、CPU231は、SNに「0」、NESNに「1」が設定された空パケットを電子時計100に送信する(ステップS32)。すなわち、CPU231は、ステップS22においてリード要求を正常に受信したため、電子時計100から次のパケットの送信を要求するべく、受信したリード要求に含まれるSNに設定された「0」をインクリメントすることにより、電子時計100に送信すべき空パケットに含まれるNESNに「1」を設定する。
スマートフォン200のCPU210は、所定データを受信し、受信された所定データを含むリード応答を電子時計100に送信するようCPU231に指示する(ステップS33)。
電子時計100のCPU131は、ステップS32において送信されたスマートフォン200からの空パケットを正常に受信すると、SNに「1」、NESNに「1」が設定された空パケットをスマートフォン200に送信する(ステップS34)。すなわち、CPU131は、受信した空パケットに含まれるNESNに設定された「1」をSNに設定する。また、CPU131は、ステップS32において送信されたスマートフォン200からの空パケットを正常に受信したため、スマートフォン200から次のパケットの送信を要求するべく、受信した空パケットに含まれるSNに設定された「0」をインクリメントすることにより、NESNに「1」を設定する。
スマートフォン200のCPU231は、ステップS34において送信された電子時計100からの空パケットを正常に受信すると、SNに「1」、NESNに「0」が設定された、所定データを含むリード応答を電子時計100に送信する(ステップS35)。すなわち、CPU231は、受信した空パケットに含まれるNESNに設定された「1」をSNに設定する。また、CPU231は、ステップS34において送信された電子時計100からの空パケットを正常に受信したため、電子時計100から次のパケットの送信を要求するべく、受信した空パケットに含まれるSNに設定された「1」をインクリメントすることにより、NESNに「0」を設定する。
電子時計100のCPU131は、ステップS35において送信されたスマートフォン200からのリード応答の受信に失敗すると、SNに「1」、NESNに「1」が設定された空パケットをスマートフォン200に送信する(ステップS36)。すなわち、CPU131は、ステップS35において送信されたスマートフォン200からのリード応答の受信に失敗したため、ステップS35において送信されたリード応答の再送をスマートフォン200に要求するべく、ステップ34において送信された空パケットに含まれるNESNに設定された値と同じ値である「1」を、NESNに設定する。
スマートフォン200のCPU231は、ステップS36において送信された電子時計100からの空パケットを正常に受信すると、ステップS35において送信したリード応答を電子時計100に再送する(ステップS37)。すなわち、CPU231は、ステップS36において送信された空パケットに含まれるNESNに設定された値「1」が、ステップ35において送信したリード応答に含まれるSNに設定された値「1」と同じであると判定し、ステップS35において送信したリード応答を電子時計100に再送する。
そして、電子時計100のCPU131は、ステップS37において送信されたスマートフォン200からのリード応答を正常に受信すると、リード応答に含まれる所定データとともに、リード応答の受信をCPU110に通知する(ステップS38)。
そして、電子時計100のCPU110は、例えば、スマートフォン200から受信すべき所定データがないと判定すると、切断要求(Terminate_IND)をスマートフォン200に送信するよう、CPU131に指示する(ステップS39)。これにより、CPU131は、スマートフォン200へ切断要求を送信する(ステップS40)。そして、CPU131は、スマートフォン200との接続の切断が完了した旨をCPU110に通知する(ステップS41)。
スマートフォン200のCPU231は、電子時計100から切断要求を受信すると、電子時計100との接続の切断が完了した旨をCPU210に通知する(ステップS42)。
図9は、第1実施形態における無線通信システム1の時刻変更モードにおける動作の一例を示すシーケンス図である。なお、電子時計のCPU131が、スマートフォン200からのリード応答を正常に受信する場合のデータ通信動作は、図8に示す通常モードにおけるデータ通信動作の一例と同様であるため、その詳細な説明を省略する。以下では、電子時計のCPU131が、スマートフォン200からのリード応答の受信に失敗する場合のデータ通信動作について説明する。
まず、電子時計のCPU110は、時刻変更モードに設定するようCPU131に指示する(ステップS51)。
電子時計100のCPU110は、CPU131に、スマートフォン200からCurrent Time Characteristicの値を読み出すためのリード要求をスマートフォン200に送信するよう指示する(ステップS52)。そして、CPU131は、SN及びNESNにそれぞれ初期値である「0」が設定されたリード要求をスマートフォン200に送信する(ステップS53)。
CPU131,231は、図8に示すステップS22〜S24と同様に、ステップS53〜S55の処理を実行する。
スマートフォン200のCPU210は、Current Time Characteristicの値を受信し、受信されたCurrent Time Characteristicの値を含むリード応答を電子時計100に送信するようCPU231に指示する(ステップS56)。
電子時計100のCPU131は、ステップS55において送信されたスマートフォン200からの空パケットを正常に受信すると、図8に示すステップS26と同様にSNに「1」、NESNに「1」が設定された空パケットをスマートフォン200に送信する(ステップS57)。
スマートフォン200のCPU231は、ステップS57において送信された電子時計100からの空パケットを正常に受信すると、図8に示すステップS27と同様にSNに「1」、NESNに「0」が設定された、Current Time Characteristicの値を含むリード応答を電子時計100に送信する(ステップS58)。
電子時計100のCPU131は、ステップS58において送信されたスマートフォン200からのリード応答の受信に失敗すると、SNに「0」、NESNに「0」が設定されたリード要求をスマートフォン200に送信する(ステップS59)。すなわち、CPU131は、ステップS58において送信されたスマートフォン200からのリード応答の受信に失敗すると、ステップS57において送信したリード要求に含まれるSN及びNESNに設定された値をそれぞれインクリメントすることにより、SN及びNESNに「0」を設定する。
スマートフォン200のCPU231は、電子時計100からリード要求を受信すると、CPU210にリード要求の受信を通知する(ステップS60)。また、CPU231は、SNに「0」、NESNに「1」が設定された空パケット(Empty PDU)を電子時計100に送信する(ステップS61)。すなわち、CPU231は、ステップS59において受信したリード要求に含まれるNESNに設定された値「0」が、ステップS57において受信した空パケットに含まれるNESNに設定された値「1」と異なるため、ステップS59において受信したリード要求が、新しいデータパケットの送信を要求するリード要求であると判定する。そして、CPU231は、CPU210にリード要求の受信を通知する。
スマートフォン200のCPU210は、Current Time Characteristicの値を新たに受信し、受信されたCurrent Time Characteristicの値を含むリード応答を電子時計100に送信するようCPU231に指示する(ステップS62)。
電子時計100のCPU131は、ステップS61において送信されたスマートフォン200からの空パケットを正常に受信すると、ステップS57と同様にSNに「1」、NESNに「1」が設定された空パケットをスマートフォン200に送信する(ステップS63)。
スマートフォン200のCPU231は、ステップS63において送信された電子時計100からの空パケットを正常に受信すると、新たに受信されたCurrent Time Characteristicの値を含む、SNに「1」、NESNに「0」が設定されたリード応答を電子時計100に送信する(ステップS64)。
そして、電子時計100のCPU131は、ステップS64において送信されたスマートフォン200からのリード応答を正常に受信すると、リード応答に含まれるCurrent Time Characteristicの値とともに、リード応答の受信をCPU110に通知する(ステップS65)。そして、CPU110は、CPU131から通知されたCurrent Time Characteristicの値で、計時回路114が計時する現在時刻を変更する。
そして、電子時計100のCPU110は、時刻変更モードの設定を解除するようCPU131に指示する(ステップS66)。
そして、電子時計100のCPU110は、切断要求をスマートフォン200に送信するよう、CPU131に指示する(ステップS67)。これにより、CPU131,231は、図8に示すステップS40〜42と同様には、ステップS68〜70の処理を実行して、接続を切断する。
図10は、電子時計100のCPU131が実行する通常モードにおけるデータ通信処理の制御手順を示すフローチャートである。CPU131は、例えば、スマートフォン200との接続が確立したことを契機として、本データ通信処理を開始する。
データ通信処理が開始されると、CPU131は、CPU110からリード要求の送信指示を受け付けたか否かを判定する(ステップS101)。CPU131は、リード要求の送信指示を受け付けていないと判定した場合(ステップS101;No)、リード要求の送信指示を受け付けるまで待機する。
CPU131は、リード要求の送信指示を受け付けたと判別した場合(ステップS101;Yes)、リード要求を生成し、RAM133に格納する(ステップS102)。このとき、CPU131は、SN及びNESNにそれぞれ初期値である「0」が設定されたリード要求を生成する。
そして、CPU131は、通信部134を制御して、ステップS102において格納されたリード要求をスマートフォン200に送信する(ステップS103)。
CPU131は、スマートフォン200から、ステップS103において送信したリード要求に対して送信された空パケットを正常に受信したか否かを判定する(ステップS104)。CPU131は、空パケットを正常に受信しなかったと判定した場合(ステップS104;No)、ステップS103に戻って、RAM133に格納されたリード要求を再送する。
CPU131は、空パケットを正常に受信したと判定した場合(ステップS104;Yes)、空パケットを生成し、RAM133に格納する(ステップS105)。このとき、CPU131は、ステップS102においてRAM133に格納されたリード要求に含まれるSN及びNESNに設定された値をインクリメントすることにより、空パケットに含まれるSN及びNESNに設定される値を生成する。
そして、CPU131は、通信部134を制御して、ステップS105において格納された空パケットをスマートフォン200に送信する(ステップS106)。
CPU131は、スマートフォン200から、ステップS106において送信した空パケットに対して送信されたリード応答を正常に受信したか否かを判定する(ステップS107)。CPU131は、リード応答を正常に受信しなかったと判定した場合(ステップS107;No)、ステップS106に戻って、RAM133に格納された空パケットを再送する。
CPU131は、リード応答を正常に受信したと判定した場合(ステップS107;Yes)、リード応答の受信をCPU110に通知する(ステップS108)
そして、CPU131は、CPU110から、スマートフォン200との接続の切断要求の送信指示を受け付けたか否かを判定する(ステップS109)。CPU131は、切断要求の送信指示を受け付けていないと判定した場合(ステップS109;No)、S101に戻って、その後の処理を繰り返す。
CPU131は、切断要求の送信指示を受け付けたと判定した場合(ステップS109;Yes)、通信部134を制御して、スマートフォン200に切断要求を送信する(ステップS110)。そして、CPU131は、本処理を終了する。
図11は、電子時計100のCPU131が実行する時刻変更モードにおけるデータ通信処理の制御手順を示すフローチャートである。CPU131は、例えば、スマートフォン200との接続が確立した後に、CPU110から時刻変更モードの設定指示を受け付けたことを契機として、本データ通信処理を開始する。
データ通信処理が開始されると、CPU131は、CPU110からCurrent Time Characteristicの値を読み出すためのリード要求の送信指示を受け付けたか否かを判定する(ステップS201)。CPU110は、リード要求の送信指示を受け付けていないと判定した場合には(ステップS201;No)、CPU110は、リード要求の送信指示を受け付けるまで待機する。
そして、CPU131は、図10に示すステップS102〜S107と同様に、ステップS202〜207の処理を実行する。
そして、CPU131は、リード応答を正常に受信しなかったと判定した場合(ステップS207;No)、RAM133に格納された空パケットに含まれるSN及びNESNに設定された値をインクリメントする(ステップS208)。
CPU131は、ステップS202に戻って、ステップS208においてインクリメントされた値がSN及びNESNに設定されたリード要求を生成し、RAMに格納する。
そして、CPU131は、リード応答を正常に受信したと判定した場合(ステップS207;Yes)、リード応答に含まれるCurrent Time Characteristicの値とともに、リード応答の受信をCPU110に通知する(ステップS209)。
CPU131は、CPU110から時刻変更モードの解除指示を受け付けたか否かを判定する(ステップS210)。CPU131は、時刻変更モードの解除指示を受け付けていないと判定した場合(ステップS210;No)、解除指示を受け付けるまで待機する。
CPU131は、CPU110から時刻変更モードの解除指示を受け付けたと判定した場合(ステップS210;Yes)、CPU110から、スマートフォン200との接続の切断要求の送信指示を受け付けたか否かを判定する(ステップS211)。CPU131は、切断要求の送信指示を受け付けていないと判定した場合(ステップS211;No)、接続要求の送信指示を受け付けるまで待機する。
CPU131は、切断要求の送信指示を受け付けたと判定した場合(ステップS211;Yes)、通信部134を制御して、スマートフォン200に切断要求を送信する(ステップS212)。そして、CPU131は、本処理を終了する。
以上のように、第1実施形態の電子時計100は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信しなかった場合、スマートフォン200が新たに受信した時刻データを含むリード応答の送信を要求するリード要求をスマートフォン200に送信する。従って、電子時計100は、通信環境が悪くても、最新の時刻データを受信することができる。そのため、電子時計100は、再送されたリード応答に含まれる時刻データを用いて時刻を変更する場合と比較して、変更誤差を小さくすることができる。また、電子時計100は、通信間隔を短くして変更誤差を小さくする場合と比較して、少ない消費電力で時刻を変更することができる。
また、第1実施形態の電子時計100は、通常モード及び時刻変更モードのうちいずれかのモードに基づいて、スマートフォン200との無線通信を制御する。そして、電子時計100は、通常モードにおいて、リード応答を正常に受信しなかった場合、リード応答の再送を要求する再送要求をスマートフォン200に送信する。また、電子時計100は、時刻変更モードにおいて、リード応答を正常に受信しなかった場合、スマートフォン200が新たに受信した時刻データを含むリード応答の送信を要求するリード要求をスマートフォン200に送信する。従って、電子時計100は、ユーザが所望するデータに応じて、通常モード及び時刻変更モードのうちいずれかに切り替えて、スマートフォン200との無線通信を制御することができる。
また、第1実施形態の電子時計100は、リード要求に対してスマートフォン200が送信すべきリード応答を識別する識別子として、NESNを含むリード要求をスマートフォンに送信する。そして、通常モードにおいて、電子時計100は、リード応答を正常に受信しなかった場合、リード要求に含まれるNESNに設定された値と同じ値を含むリード要求を、再送要求としてスマートフォン200に送信する。また、時刻変更モードにおいて、電子時計100は、リード応答を正常に受信しなかった場合、リード要求に含まれるNESNに設定された値と異なる値を含むリード要求を、スマートフォン200に送信する。従って、スマートフォン200は、受信したリード要求に含まれるNESNに設定された値が、前回受信したリード要求に含まれるNESNに設定された値と同じ場合、電子時計100がリード応答を正常に受信しなかったと判別して、リード応答を再送する。また、スマートフォン200は、受信したリード要求に含まれるNESNに設定された値が、前回受信したリード要求に含まれるNESNに設定された値と異なる場合、電子時計100がリード応答を正常に受信したと判別して、受信したリード要求を新たなリード要求であると判別し、新たに受信した時刻データを含むリード応答を送信する。従って、電子時計100は、リード要求に含まれるNESNに設定される値を適宜設定することにより、再送要求または新たなリード応答を要求するリード要求のいずれかを送信することができる。
また、第1実施形態の電子時計100は、時刻変更モードにおいて、リード応答を正常に受信しなかった場合、前回送信したリード要求に含まれるNESNに設定された値をインクリメントした値を、送信すべきリード要求に含まれるNESNに設定する。これにより、電子時計100は、新たなリード応答を要求するリード要求を送信することができる。
(第2実施形態)
上記の第1実施形態では、電子時計100は、時刻変更モードにおいて、リード応答を正常に受信しなかったときに、リード応答の再送をスマートフォン200に要求せずに、リード要求を送信する。これにより、電子時計100は、新たに受信されたCurrent Time Characteristicの値を含むリード応答を受信し、その受信した値に基づいて、自装置が計時する現在時刻を変更する。しかし、電子時計100がリード応答を正常に受信しなかったときでも、誤差が小さくなるように電子時計100が計時する現在時刻を変更する方法は、この方法に限られない。第2実施形態では、電子時計100aが送信したリード要求に応答してスマートフォン200から送信された通知を受信した時刻からリード応答を正常に受信した時刻までの時間を考慮して、電子時計100aが計時する現在時刻を変更する方法について説明する。なお、第1実施形態と同一の構成要素には同一の符号を付すこととして、その詳細な説明を省略する。
まず、第2実施形態の電子時計100aについて説明する。図12は、本実施形態の電子時計100aの構成を示すブロック図である。電子時計100aは、第1実施形態の電子時計100の構成と比較して、CPU110が、変更部123の代わりに変更部123aとして機能する点、及び通信モジュール103の代わりに通信モジュール103aを備える点を除き同一である。
変更部123aとしてのCPU110は、スマートフォン200との接続が確立した後、時刻変更モードに基づいて、スマートフォン200との無線通信を制御する。具体的には、CPU110は、第1実施形態と同様に、スマートフォン200が計時する現在時刻を表す時刻データとして、Current Time Characteristicの値を含むリード応答の送信をスマートフォン200に要求するリード要求を送信するよう、通信モジュール103aに指示する。そして、CPU110は、通信モジュール103aがリード要求の受信に応答してスマートフォン200が送信した通知を受信すると、通信モジュール103aからその通知を受信したことを表すAck reportの通知を受け付ける。そして、CPU110は、そのAck reportを受け付けた時刻を、計時回路114が計時する現在時刻から受信する。また、CPU110は、通信モジュール103から、リード応答に含まれる時刻データとして、Current Time Characteristicの値を受け付ける。そして、CPU110は、そのCurrent Time Characteristicの値を受け付けた時刻を、計時回路114が計時する現在時刻から受信する。そして、CPU110は、Ack reportを受け付けた時刻と、Current Time Characteristicの値を受け付けた時刻と、受け付けたCurrent Time Characteristicの値が表す時刻と、に基づいて、計時回路114が計時する現在時刻を変更する。具体的には、Ack reportを受け付けた時刻がTw1、Current Time Characteristicの値を受け付けた時刻がTw2、受け付けたCurrent Time Characteristicの値が表す時刻がTp0である場合、CPU110は、計時回路114が計時する現在時刻Twを、Tw=Tp0+Tw2−Tw1に変更する。
次に、第2実施形態の電子時計100aの通信モジュール103aについて説明する。図13は、本実施形態の通信モジュール103aの構成を示すブロック図である。通信モジュール103aは、第1実施形態の通信モジュール103の構成と比較して、CPU131が、データ通信制御部142の代わりにデータ通信制御部142aとして機能する点、及び再送抑制部143を備えない点を除き同一である。
データ通信制御部142aとしてのCPU131は、スマートフォン200との接続が確立した後、通常モード及び時刻変更モードのいずれにおいても、スマートフォン200との無線通信を制御する。
具体的には、CPU131は、通信部134を制御して、所定データを含むリード応答の送信を要求するリード要求を、スマートフォン200に送信する。なお、時刻変更モードにおいて、CPU131は、所定データとして、スマートフォン200が計時した現在時刻を表す時刻データを含むリード応答の送信を要求するリード要求を、スマートフォン200に送信する。より詳細には、CPU131は、通信部134を制御して、スマートフォン200からCurrent Time Characteristicの値を読み出すためのリード要求をスマートフォン200に送信する。さらに、時刻変更モードにおいて、CPU131は、通信部134が、リード要求に応答してスマートフォン200が送信した通知を受信し、受信された通知が、スマートフォン200がリード要求を正常に受信したことを表す場合、CPU110にスマートフォン200から通知を受信したことを表すAck reportを通知する。
また、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信しなかった場合、通信部134を制御して、リード応答の再送を要求する再送要求をスマートフォン200に送信する。また、CPU131は、リード要求に対してスマートフォン200が送信したリード応答を正常に受信した場合、リード応答に含まれる所定データをCPU110に通知する。
図14は、第2実施形態における無線通信システム1の時刻変更モードにおける動作の一例を示すシーケンス図である。なお、第2実施形態における無線通信システム1の通常モードにおける動作は、図8に示す第1実施形態における動作と同様であるため、その詳細な説明を省略する。
まず、電子時計100aのCPU110,131及びスマートフォン200のCPU210,231は、図9に示す第1実施形態のステップS52〜S55と同様に、ステップS81〜S84の処理を実行する。
CPU131は、ステップS84においてスマートフォン200から送信された空パケットを正常に受信し、かつ、空パケットが、スマートフォン200がステップS82において送信されたリード要求を正常に受信したことを表す場合、スマートフォン200から通知を受信したことを表すAck reportをCPU110に通知する(ステップS85)。具体的には、CPU131は、空パケットに含まれるNESNに設定された値「1」が、ステップS82において送信したリード要求に含まれるSNに設定された値「0」と異なることを判定することにより、スマートフォン200がステップS82において送信されたリード要求を正常に受信したと判定する。また、CPU110は、Ack reportを受け付けた時刻Tw1を受信する。
スマートフォン200のCPU210は、計時回路214が計時する現在時刻Tp=Tp0を表すCurrent Time Characteristicの値を受信し、受信されたCurrent Time Characteristicの値を含むリード応答を電子時計100に送信するようCPU231に指示する(ステップS86)。
電子時計100のCPU131及びスマートフォン200のCPU231は、図8に示す第1実施形態のステップS34〜S37と同様に、ステップS87〜S90の処理を実行する。すなわち、CPU131は、リード応答を正常に受信しなかった場合、通常モードと同様に、リード応答の再送をスマートフォン200に要求する。
そして、電子時計100のCPU131は、ステップS90において送信されたスマートフォン200からのリード応答を正常に受信すると、リード応答に含まれるCurrent Time Characteristicの値とともに、リード応答の受信をCPU110に通知する(ステップS91)。また、CPU110は、リード応答の受信通知を受け付けた時刻Tw2を受信する。そして、CPU110は、Ack reportを受け付けた時刻Tw1と、リード応答の受信通知を受け付けた時刻Tw2と、Current Time Characteristicの値が表す時刻Tp0から、計時回路114が計時する現在時刻Twを、Tw=Tp0+Tw2−Tw1に変更する。
そして、電子時計100のCPU110は、切断要求をスマートフォン200に送信するよう、CPU131に指示する(ステップS92)。これにより、CPU131,231は、図8に示すステップS40〜42と同様に、ステップS93〜95の処理を実行して、接続を切断する。
図15は、電子時計100aのCPU110が実行する時刻変更モードにおける時刻変更処理の制御手順を示すフローチャートである。CPU110は、例えば、スマートフォン200との接続が確立した後に、本時刻変更処理を開始する。
時刻変更処理が開始されると、CPU110は、CPU131に、スマートフォン200からCurrent Time Characteristicの値を読み出すためのリード要求をスマートフォン200に送信するよう指示する(ステップS301)。
次に、CPU110は、CPU131から、Ack reportを受け付けたか否かを判定する(ステップS302)。CPU110は、Ack reportを受け付けていないと判定した場合(ステップS302;No)、Ack reportを受け付けるまで待機する。
CPU110は、Ack reportを受け付けたと判定した場合(ステップS302;Yes)、Ack reportを受け付けた時刻として、計時回路114が計時する現在時刻Tw1を受信する(ステップS303)。
次に、CPU110は、CPU131から、リード応答の受信通知を受け付けたか否かを判定する(ステップS304)。CPU110は、リード応答の受信通知を受け付けていないと判定した場合(ステップS304;No)、受信通知を受け付けるまで待機する。
CPU110は、リード応答の受信通知を受け付けたと判定した場合(ステップS304;Yes)、リード応答を受け付けた時刻として、計時回路114が計時する現在時刻Tw2を受信する(ステップS305)。
そして、CPU110は、計時回路114が計時する現在時刻Twを、リード応答に含まれるCurrent Time Characteristicの値が表す時刻Tp0と、Ack reportを受け付けた時刻Tw1と、リード応答を受け付けた時刻Tw2とに基づいて、Tw=Tp0+Tw2−Twに変更する(ステップS306)。
そして、CPU110は、CPU131に、切断要求をスマートフォン200に送信するよう指示する(ステップS307)。そして、CPU110は、本処理を終了する。
図16は、電子時計100aのCPU131が実行する時刻変更モードにおけるデータ通信処理の制御手順を示すフローチャートである。CPU131は、例えば、スマートフォン200との接続が確立した後に、本データ通信処理を開始する。
データ通信処理が開始されると、CPU131は、図11に示すステップS201〜204と同様に、ステップS401〜S404の処理を実行する。
そして、CPU131は、空パケットを正常に受信したと判定した場合(ステップS404;Yes)、CPU110にAck reoprtを通知する(ステップS405)。
そして、CPU131は、図11に示すステップS205〜S207と同様に、ステップS406〜408の処理を実行する。
そして、CPU131は、リード応答を正常に受信しなかったと判定した場合(ステップS408;No)、ステップS407に戻って、RAM133に格納された空パケットを再送する。
CPU131は、リード応答を正常に受信したと判定した場合(ステップS408;Yes)、リード応答に含まれるCurrent Time Characteristicの値とともに、リード応答の受信をCPU110に通知する(ステップS409)。
そして、CPU131は、図11に示すステップS211〜S212と同様に、ステップS410〜411の処理を実行する。そして、CPU131は、本処理を終了する。
以上説明したように、第2実施形態に係る電子時計100aは、リード要求の受信に応答してスマートフォン200が送信した通知を受信した時刻と、リード応答を正常に受信した時刻と、リード応答に含まれる時刻データが表す時刻と、に基づいて、自装置が計時する時刻を変更する。このように、電子時計100aは、リード要求の送信が完了してから、リード応答を受信するまでの時間で、リード応答を正常に受信することができなくても、その時間を考慮して、リード応答に含まれる時刻データが表す時刻と、に基づいて、自装置が計時する時刻を変更するため、より正確な時刻変更を行うことができる。
具体的には、電子時計100aは、リード応答を正常に受信した時刻Tw2と、リード要求に応答して送信されたスマートフォン200からの通知を受信した時刻Tw1と、の差分Tw2−Tw1を、リード応答に含まれるCurrent Time Characteristicの値が表す時刻Tp0に加算した時刻Tp0+Tw2−Tw1に、自装置が計時する時刻Twを変更する。従って、電子時計100aは、リード応答を正常に受信せず、再送されたリード応答を受信した場合であっても、再送されたリード応答に含まれる時刻データにリード応答を正常に受信しなかった時間を加算して自装置が計時する時刻を変更するため、より正確な時刻変更を行うことができる。
なお、本発明は、上記実施の形態に限られるものではなく、様々な変更が可能である。
例えば、第1実施形態において、時刻修正モードにおける電子時計100が、所定データとして、スマートフォン200が計時する現在時刻が表す時刻データを受信する例について説明した。しかし、電子時計100が受信する所定データは、時刻データに限られない。所定データは、例えば、温度データや気圧データなど、スマートフォン200が提供可能なデータであればよい。このようなデータを本実施形態に適用することにより、電子時計100は、通信が悪く、リード応答を正常に受信することが困難な場合でも、スマートフォン200から最新のデータを受信することができる。
また、上記第1及び第2実施形態では、電子時計100,100aが、スマートフォン200とブルートゥースで通信する例を説明した。しかし、電子時計100、100aは、スマートフォン200とその他の通信方法、例えば、無線LAN(Local Area Network)やWi−Fi(登録商標)で通信しても良い。
また、上記第1及び第2実施形態では、電子時計100,100aが計時する時刻をスマートフォン200が計時する時刻に基づいて変更する例を説明した。しかし、スマートフォン200が計時する時刻を電子時計100,100aが計時する時刻に基づいて変更しても良い。
また、上記第1及び第2実施形態では、電子時計100,100a及びスマートフォン200を例に挙げて説明したが、これらはスマートウォッチなどの各種電子機器であって良い。
また、上記第1及び第2実施形態では、CPU110,113,210,213が、制御動作を行う例を説明した。しかし、制御動作は、CPUによるソフトウェア制御に限られるものではない。制御動作の一部又は全部が専用の論理回路などのハードウェア構成を用いてなされても良い。
また、以上の説明では、本発明のデータ通信処理に係るプログラム、時刻変更処理に係るプログラムを記憶するコンピュータ読み取り可能な媒体としてフラッシュメモリなどの不揮発性メモリからなるROM102,132を例に挙げて説明した。しかし、コンピュータ読み取り可能な媒体は、これらに限定されず、HDD(Hard Disk Drive)、CD−ROM(Compact Disc Read Only Memory)やDVD(Digital Versatile Disc)などの可搬型記録媒体を適用してもよい。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウェーブ(搬送波)も本発明に適用される。
その他、上記実施の形態で示した構成、制御手順や表示例などの具体的な細部は、本発明の趣旨を逸脱しない範囲において適宜変更可能である。
本発明のいくつかの実施形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記の番号は、この出願の願書に最初に添付した特許請求の範囲の通りである。
(付記1)
他の無線通信装置と無線通信する通信部と、
制御部と、を備え、
前記制御部は、
前記通信部を制御して、所定データを含むリード応答の送信を要求するリード要求を、前記他の無線通信装置に送信し、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記他の無線通信装置が新たに受信した前記所定データを含む前記リード応答の送信を要求する前記リード要求を前記他の無線通信装置に送信する、
ことを特徴とする無線通信装置。
(付記2)
前記制御部は、
第1モードと第2モードのうちのいずれかのモードに基づいて、前記他の無線通信装置との無線通信を制御し、
前記第1モードにおいて、前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記リード応答の再送を要求する再送要求を前記他の無線通信装置に送信し、
前記第2モードにおいて、前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記他の無線通信装置が新たに受信した前記所定データを含む前記リード応答の送信を要求する前記リード要求を前記他の無線通信装置に送信する、
ことを特徴とする付記1に記載の無線通信装置。
(付記3)
前記制御部は、
前記リード要求に対して前記他の無線通信装置が送信すべき前記リード応答を識別する識別子を含む前記リード要求を前記他の無線通信装置に送信し、
前記第1モードにおいて、前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記リード要求に含まれる前記識別子と同じ識別子を含む前記リード要求を、前記再送要求として前記他の無線通信装置に送信し、
前記第2モードにおいて、前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記リード要求に含まれる前記識別子と異なる識別子を含む前記リード要求を、前記他の無線通信装置に送信する、
ことを特徴とする付記2に記載の無線通信装置。
(付記4)
前記識別子は、1ビットのデータであって、
前記制御部は、
前記第2モードにおいて、前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記リード要求に含まれる前記識別子をインクリメントすることにより、前記異なる識別子を生成し、前記通信部を制御して、生成された前記異なる識別子を含む前記リード要求を、前記他の無線通信装置に送信する、
ことを特徴とする付記3に記載の無線通信装置。
(付記5)
前記所定データは、前記他の無線通信装置が計時した現在時刻を表し、
前記制御部は、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記他の無線通信装置が新たに計時した現在時刻を表す前記所定データを含む前記リード応答の送信を要求する前記リード要求を前記他の無線通信装置に送信する、
ことを特徴とする付記1乃至4のいずれか1つに記載の無線通信装置。
(付記6)
前記制御部は、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信した場合、受信された前記リード応答に含まれる前記所定データが表す前記現在時刻に基づいて、自装置が計時する現在時刻を変更する、
ことを特徴とする付記5に記載の無線通信装置。
(付記7)
付記5または6に記載の無線通信装置と、
自装置が計時する現在時刻を表示する表示部と、
を備えることを特徴とする電子時計。
(付記8)
他の無線通信装置と無線通信する通信部と、
制御部と、を備え、
前記制御部は、
前記通信部を制御して、前記他の無線通信装置が計時する現在時刻を表す時刻データを含むリード応答の送信を要求するリード要求を、前記他の無線通信装置に送信し、
前記通信部を制御して、前記リード要求の受信に応答して前記他の無線通信装置が送信した通知を受信し、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記リード応答の再送を要求する再送要求を前記他の無線通信装置に送信し、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信した場合、前記通知を受信した時刻と、前記リード応答を正常に受信した時刻と、前記リード応答に含まれる前記時刻データが表す時刻と、に基づいて、自装置が計時する時刻を変更する、
ことを特徴とする無線通信装置。
(付記9)
前記制御部は、前記リード応答を正常に受信した時刻と、前記通知を受信した時刻と、の差分を、前記リード応答に含まれる前記時刻データが表す時刻に加算した時刻に、自装置が計時する時刻を変更する、
ことを特徴とする付記8に記載の無線通信装置。
(付記10)
他の無線通信装置と無線通信する通信部を備える無線通信装置が実行する無線通信方法であって、
前記通信部を制御して、所定データを含むリード応答の送信を要求するリード要求を、前記他の無線通信装置に送信するステップと、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記他の無線通信装置が新たに受信した前記所定データを含む前記リード応答の送信を要求する前記リード要求を前記他の無線通信装置に送信するステップと、
を含むことを特徴とする無線通信方法。
(付記11)
他の無線通信装置と無線通信する通信部を備える無線通信装置が実行する時刻変更方法であって、
前記通信部を制御して、前記他の無線通信装置が計時する現在時刻を表す時刻データを含むリード応答の送信を要求するリード要求を、前記他の無線通信装置に送信するステップと、
前記通信部を制御して、前記リード要求の受信に応答して前記他の無線通信装置が送信した通知を受信するステップと、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記リード応答の再送を要求する再送要求を前記他の無線通信装置に送信するステップと、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信した場合、前記通知を受信した時刻と、前記リード応答を正常に受信した時刻と、前記リード応答に含まれる前記時刻データが表す時刻と、に基づいて、自装置が計時する時刻を変更するステップと、
を含むことを特徴とする時刻変更方法。
(付記12)
無線通信装置と無線通信する通信部を備えるコンピュータを、
前記通信部を制御して、所定データを含むリード応答の送信を要求するリード要求を、前記無線通信装置に送信する手段、
前記リード要求に対して前記無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記無線通信装置が新たに(時刻要求受信後に)受信した前記所定データを含む前記リード応答の送信を要求する前記リード要求を前記無線通信装置に送信する手段、
として機能させることを特徴とするプログラム。
(付記13)
無線通信装置と無線通信する通信部を備えるコンピュータを、
前記通信部を制御して、前記他の無線通信装置が計時する現在時刻を表す時刻データを含むリード応答の送信を要求するリード要求を、前記他の無線通信装置に送信する手段、
前記通信部を制御して、前記リード要求の受信に応答して前記他の無線通信装置が送信した通知を受信する手段、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信しなかった場合、前記通信部を制御して、前記リード応答の再送を要求する再送要求を前記他の無線通信装置に送信する手段、
前記リード要求に対して前記他の無線通信装置が送信した前記リード応答を正常に受信した場合、前記通知を受信した時刻と、前記リード応答を正常に受信した時刻と、前記リード応答に含まれる前記時刻データが表す時刻と、に基づいて、自装置が計時する時刻を変更する手段、
として機能させることを特徴とするプログラム。