以下では、本発明の実施の形態について、図面を参照しながら説明する。なお、本発明の技術範囲は、特許請求の範囲によって確定されるものであって、以下の個別の実施形態によって限定されるわけではない。すなわち、本発明の範囲内で、以下の実施形態に対する任意の変更や変形を行うことが可能である。
(システム構成)
図1(A)に、本実施形態に係る無線通信システムの構成例を示す。本無線通信システムは、複数のデジタルカメラ101a~101cを含み、これらのデジタルカメラ101a~101cは、無線通信ネットワーク102に参加して、少なくとも1つの他のデジタルカメラと相互に通信する。なお、無線通信ネットワーク102は、IEEE802.11規格シリーズの少なくともいずれかの規格において規定されたインフラストラクチャモードにおける無線通信ネットワークである。すなわち、デジタルカメラ101a~101cは、IEEE802.11規格シリーズの少なくともいずれかに準拠した無線通信を行うことが可能な通信装置として動作可能である。なお、上述の構成は一例に過ぎず、他の無線規格に従って構成された無線通信ネットワークを介して、デジタルカメラ101a~101cが相互に通信するようにしてもよい。
図1(A)では、デジタルカメラ101aがアクセスポイントとして動作しており、無線通信ネットワーク102がデジタルカメラ101aによって構築されているものとする。そして、デジタルカメラ101b及び101cは、ステーションとして、無線通信ネットワーク102に参加している。なお、本実施形態では、無線通信システムに含まれる通信装置がデジタルカメラの場合について説明するが、デジタルカメラは、例えば、携帯電話、PC、ビデオカメラ、スマートウォッチ、PDA等、通信機能を有する任意の他の装置と置き換えられてもよい。また、図1(A)では、デジタルカメラ(通信装置)の数が3台の場合を示しているが、この台数は、2台または4台以上であってもよい。
本実施形態のデジタルカメラ101a~101cは、時刻同期機能を有する。時刻同期機能は、持ち寄られた複数のデジタルカメラのうちの1台のカメラの時刻を基準として、その複数のデジタルカメラの時刻を同期させる機能である。時刻同期確立処理の概要を、図1(B)に示す。図1(B)は、デジタルカメラ101aの時刻に、デジタルカメラ101b及び101cの時刻を合わせる例を示している。デジタルカメラ101aの時刻が18:47:00であるタイミングで時刻合わせが行われると、デジタルカメラ101b及び101cは、自装置の時刻を、その「18:47:00」に処理遅延を加えた値とする。これにより、デジタルカメラ101b及び101cの時刻を、デジタルカメラ101aの時刻と一致させることができる。
複数のデジタルカメラのそれぞれにおける時刻を同期させることで、例えば、それらのデジタルカメラの各々において撮像されて持ち寄られた撮像データに対して、タイムスタンプによるグループ化/ソート等の処理を行うことが可能となる。なお、このような複数のデジタルカメラの時刻を合わせることによって、撮像データの時刻管理の用途で時刻情報を使用するアプリケーションを、以下では「時刻合わせ」アプリケーションと呼ぶ。ここで、撮像データのEXIF情報に含まれるタイムスタンプは、秒単位で管理されるため、このような用途に対しては、時刻同期精度を高く維持する必要はない。
一方、持ち寄られた複数のデジタルカメラ(デジタルカメラ101a~101c)におけるレリーズを、同一時刻(同一タイミング)で行う機能を実現する同期撮像アプリケーションでは、高精度な時刻合わせが必要となる場合がある。同期撮像の概要を、図1(C)に示す。図1(C)の例では、デジタルカメラ101b及び101cが、デジタルカメラ101aのレリーズのタイミングに合わせてレリーズする。なお、図1(C)では、全てのデジタルカメラ101a~101cが被写体103に向けられているが、各デジタルカメラの被写体は必ずしも一致しなくてもよい。同期撮像により、例えば、複数のデジタルカメラで撮像された画像から動体の被写体の3Dモデルが生成されることがある。この場合、生成される3Dモデルの品質を向上させるためには、高い同期精度での撮像が行われることが重要となる。
このように、デジタルカメラ101a~101cは、実行されるアプリケーション又は撮像等の処理がどのような用途で行われるかによって要求される同期精度が異なりうる。なお、これは、デジタルカメラに固有の議論ではなく、他の通信装置においても、時刻情報を用いて実行される処理について、その用途によって、他の装置との間での時刻同期についての要求される精度が異なりうる。
一般に、高頻度で同期確立処理を行うことにより、低頻度で同期確立処理が行われる場合と比して、時刻同期精度を向上させることができる。しかしながら、高頻度で同期確立処理を行う場合には、同期用の信号の送受信のために、通信装置間で接続が確立された状態が維持され、又は、通信装置間で都度接続処理が実行されることになる。この場合、その通信装置の消費電力は大きくなり、また、無線通信ネットワークの負荷も増大する。このため、本実施形態の各通信装置(デジタルカメラ101a~101c)は、同期が確立された後の時刻情報の用途に応じて、同期確立処理を行う頻度を制御する。すなわち、例えば上述のように、撮像時の時刻情報が各デジタルカメラで別個に撮像された撮像データの時刻によるグループ化やソート等のために使用される場合には、高い時刻同期精度は不要である。このため、デジタルカメラ101a~101cは、例えば撮像が行われる当日の利用開始前に1回だけ等、低頻度で同期確立処理を行うように制御を行いうる。一方、3Dモデルの生成のために時刻情報が使用される場合は、高い時刻同期精度を得ることが重要となる。このため、デジタルカメラ101a~101cは、高頻度で同期確立処理を行うような制御を行いうる。また、例えば、通信装置内の時刻情報に基づいて所定の時刻に所定の処理を一斉に行う又は一連の処理を連携して実行する等の、処理のタイミングを指定するために時刻情報が使用される場合には、高い時刻同期精度が要求されうる。このため、この通信装置は、高い時刻同期精度を得るために、同期確立処理を行う頻度を高く設定しうる。なお、実行される処理ごとに要求される時刻同期精度が異なる場合、その要求される精度に応じて、同期処理を行う頻度が設定されてもよい。また、時刻情報の用途が同期確立処理の際に不明である場合は、その後に高い時刻同期精度が要求される用途にも耐えることができるように、高頻度で同期確立処理が行われるようにしてもよい。また、時刻情報の用途が同期確立処理の際に不明である場合には、同期確立処理を低頻度で実行するような制御が行われてもよい。また、通信装置は、例えば事前に用途が特定されない場合の同期確立精度に関するユーザ操作を受け付け、その設定に応じて同期確立処理の頻度を決定するようにしてもよい。なお、通信装置は、時刻情報の用途を直接特定するのではなく、例えばアプリケーションの種類を特定するなど、用途に対応する情報を特定し、その情報に基づいて同期確立頻度を決定してもよい。すなわち、通信装置は、時刻情報を使用するアプリケーションを特定し、その特定されたアプリケーションに応じて(例えばアプリケーションごとに事前に定められた)同期確立頻度を判定しうる。
本実施形態の通信装置は、このように時刻情報の用途に応じて同期確立処理の頻度を設定し、それに基づいて、同期確立処理の際に確立されたネットワーク接続を維持するか切断するかを決定しうる。すなわち、高頻度で同期確立処理が実行される場合にネットワーク接続が都度切断されると、その後の接続確立処理のための遅延が発生しうると共に、無線リソースを不必要に浪費することとなりうる。このため、同期確立処理の実行頻度を示す値(頻度が高いほど高くなる値)が所定値を超える場合には、通信装置はネットワーク接続を維持すると判定しうる。また、同期確立処理の実行頻度を示す値が所定値以下の場合には、通信装置はネットワーク接続を切断すると判定しうる。これにより、通信装置は、ネットワーク接続を切断することにより、例えば生存確認信号の送受信が不要となり、また、通信機能をオフとすることができるため、消費電力を削減することができる。なお、通信装置は、必要な時刻同期精度に応じて、同期確立処理の頻度によらずに、同期確立処理のために確立されたネットワーク接続を維持するか否かを判定してもよい。すなわち、通信装置は、時刻情報の用途に応じて、同期確立処理のために確立されたネットワーク接続を維持するか否かを判定してもよい。
(装置構成)
続いて、デジタルカメラ101a~101cの構成について説明する。図2は、デジタルカメラ101a~101cのハードウェア構成例を示す図である。なお、以下では、デジタルカメラ101a~101cを総称して、「通信装置」と呼ぶ。通信装置は、そのハードウェア構成として、例えば、制御部201、記憶部202、無線通信部203、表示部204、アンテナ205、入力部206、及び撮像部207を有する。
制御部201は、記憶部202に記憶される制御プログラムを実行することにより、通信装置の全体を制御する。制御部201は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の1つ以上のプロセッサを含んで構成される。後述の各処理は、記憶部202に記憶された制御プログラムを制御部201が実行することによって実現される。ただし、これに限られず、後述の処理の一部または全部が、専用のハードウェア等によって実現されてもよい。記憶部202は、制御部201が実行する制御プログラムや、撮像部207で生成された撮像データ、また、他機器と無線通信の送受信に使用される通信パケット等を記憶する。記憶部202は、例えば、Random Access Memoryや、Read Only Memory等のメモリ、着脱可能な記憶媒体等の外部記憶装置を含んで構成される。
無線通信部203は無線通信機能を提供する機能部である。無線通信部203は、例えば、IEEE802.11規格シリーズに準拠した無線LANに準拠した無線通信を行うための無線通信回路を含んで構成される。また、無線通信部203は、これに加えて又はこれに代えて、例えばNear Field Communication(NFC(登録商標))やBluetooth(登録商標)等の近距離無線通信のための無線通信回路を含んで構成されてもよい。無線通信部203は、複数の無線通信規格に対応可能な場合、例えば、その複数の無線通信規格に準拠した1つの回路ユニットを含んでもよいし、それぞれ1つの無線通信規格に準拠した複数の回路ユニットを含んでもよい。また、無線通信部203は、他の装置との高精度な同期処理を実現するために必要なハードウェアを含んでもよい。例えば、無線通信部203は、通信装置が他の装置と高精度な同期処理を実現するためのタイミング信号を、アンテナ205を介して他の装置から受信した信号に基づいて生成する機能を有していてもよい。表示部204は、各種情報表示を行う機能部であり、LCDやLEDのように視覚で認知可能な情報の出力する機能を含む。なお、表示部204は、視覚表示機能に加えて又はこれに代えて、スピーカ等の音声出力機能や、振動出力機能を含んでもよい。アンテナ205は、他の装置と無線通信を行うために、無線通信部203の制御下で他の装置への信号が載せられた電磁波を放射し又は他の装置から信号が載せられて放射された電磁波を受信するための構造を含んで構成される。入力部206は、ユーザによる各種入力等を受け付けるための機能部であり、例えば、ボタンやタッチパネル等を含んで構成される。入力部206を介してユーザ操作が受け付けられると、制御部201が、そのユーザ操作に基づいて通信装置の制御を行う。撮像部207は、撮像を行うためのレンズやセンサ、画像処理回路を含んで構成され、撮像によって得られた撮像データを制御部201や記憶部202に出力する機能を有する。
図3は、本実施形態の通信装置の機能構成例を示す図である。通信装置は、例えば、通信パラメータ制御部301、パケット受信部302、パケット送信部303、データ記憶部304、サービス制御部305、ステーション機能制御部306、アクセスポイント機能制御部307、及び同期処理部308を有する。
通信パラメータ制御部301は、通信装置間で通信パラメータを共有するための通信パラメータ共有処理を実行する。通信パラメータ共有処理では、親機が子機に対して、親機が構築する無線通信ネットワークへ無線接続するための通信パラメータを提供する。通信パラメータ共有処理として、無線LANネットワークの形成のための設定方式として、Device Provisioning Protocol(以下、「DPP」と呼ぶ。)がある(特許文献2参照)。DPPにおいては、無線LANネットワークを形成する機器のいずれか一台がConfigurator(コンフィグレータ)として動作し、他の機器がEnrollee(エンローリ)として動作して、これらの機器の間で通信パラメータが共有される。各通信装置は、このようにして共有された通信パラメータに基づいて、容易に無線LANネットワークを形成することができる。ここで、通信パラメータには、ネットワーク識別子としてのSSID(Service Set Identifier)、暗号方式、暗号鍵、認証方式、認証鍵等の、無線LAN通信を行うために必要な無線通信パラメータが含まれる。また、通信パラメータには、DPPにおいて規定されるコネクタ、MACアドレス、PSK、パスフレーズ、IP層での通信を行うためのIPアドレス、上位サービスに必要な情報やネットワークの利用用途等が含まれてもよい。なお、ここでは、通信パラメータ制御部301が実行する通信パラメータ共有処理がDPPであるものとするが、例えば、WPS(Wi-Fi Protected Setup)またはWi-Fi Directなど他の処理が実行されてもよい。DPPが使用される場合、コンフィグレータが提供する通信パラメータは、コンフィグレータ専用の秘密鍵によって暗号化される。なお、時刻同期以外の用途(たとえば、撮像データの転送など)においても、通信パラメータ制御部301を使用した無線通信ネットワークの形成を行うことができる。
パケット受信部302及びパケット送信部303は、上位レイヤの通信プロトコルを含むあらゆるパケットの送受信を制御する。また、パケット受信部302及びパケット送信部303は、相手装置との間でIEEE802.11規格シリーズに準拠した方式で無線パケットの送信及び受信を行うために、無線通信部203を制御する。なお、通信装置がNFCやBluetoothでの通信を実行可能な場合、パケット受信部302及びパケット送信部303は、それらの規格に準拠した方式で無線パケットを送信及び受信するためにも、無線通信部203を制御しうる。
データ記憶部304は、ソフトウェア、通信パラメータ、及び、認証情報などの各種情報の、記憶部202への書き込み及び読み出しの制御を行う。サービス制御部305は、OSI参照モデルにおける第5層以上の上位レイヤにおけるサービス提供層(アプリケーション層)における、例えば無線通信部203による無線通信を用いた撮像データの転送などの制御を実行する。ステーション機能制御部306は、IEEE802.11規格シリーズで規定されているインフラストラクチャモードにおけるステーションとして動作する機能を提供する。ステーション機能制御部306は、ステーションとして動作する際に、認証・暗号処理等を実行する。また、アクセスポイント機能制御部307は、IEEE802.11規格シリーズで規定されているインフラストラクチャモードにおけるアクセスポイントとして動作する機能を提供する。アクセスポイント機能制御部307は、無線通信ネットワークを形成し、ステーションとして動作する他の通信装置に対する認証・暗号処理およびステーションの管理等を実行する。なお、アクセスポイント機能制御部307は、無線通信ネットワークに接続するステーションの数をカウントする機能を有する。
同期処理部308は、通信パラメータ制御部301によって接続した無線通信ネットワークを使用して、親機と子機との間の時刻同期の処理を行う。一例において、同期処理部308は、Wi-Fi TimeSync(登録商標)を使用した同期処理を実行しうる。ただし、これに限られず、同期処理部308は、無線通信ネットワークを構築して他の装置と時刻同期を確立する任意の処理を実行しうる。なお、時刻同期の処理では、親機の時刻に子機が合わせるものとする。時刻同期の処理の流れについては後述する。本実施形態では、通信パラメータ制御部301によって、親機と子機との間で時刻同期用の無線通信ネットワークが形成される。このため、親機として動作する通信装置は、後述の通信パラメータ交換処理と無線接続処理によって接続できた全ての子機との間で、時刻同期を行うものとする。
(処理の流れ)
続いて、通信装置が実行する処理の流れについて図4を用いて説明する。なお、ここでは、通信装置が、ユーザによって起動されたアプリケーションに応じて時刻情報の用途を特定して、時刻同期を行うための無線通信ネットワークを解消するか維持するかを判定する場合の例について説明する。しかしながら、これに限られず、ユーザ操作によって時刻情報の用途が直接指定されてもよいし、他の情報に基づいて用途が特定されてもよい。また、アプリケーションの起動や時刻情報の用途の指定は、ユーザ操作によって受け付けられてもよいし、他の装置から受信された信号による指示によって行われてもよい。例えば、固定的に設置された複数のデジタルカメラに対して、タブレット端末等がユーザによって選択されたアプリケーションや用途を指定する信号を送信し、デジタルカメラは、その信号に基づいてアプリケーションや用途を特定しうる。
図4では、まず、通信装置が実行すべきアプリケーションの選択をユーザが行う(S401)。なお、本実施形態では、ユーザは、アプリケーションとして、上述のような、複数のデジタルカメラが時刻を一致させるだけの「時刻合わせ」と、同じタイミングで撮像を行う「同期撮像」とのいずれかを選択するものとする。通信装置は、選択されたアプリケーションを記憶する(S402)。また、通信装置は、選択したアプリケーションを実行する場合に、自装置が親機として動作するか、子機として動作するかを決定する(S403)。なお、この決定は、例えば通信装置と他の通信装置との間でのネゴシエーション等によって自動で行われてもよいし、ユーザによる指定を受け付けることによって行われてもよい。例えば、各通信装置は、ネゴシエーションによって、GPS(全地球測位システム)や他の基準信号によって時刻設定を行っている通信装置が存在するか否かを判定し、そのような通信装置が存在する場合は、その通信装置を親機として決定する。また、各通信装置は、例えば商用電源に接続されている等の安定して基準時刻を供給可能な通信装置を親機として決定してもよい。通信装置は、自装置が親機として動作する場合(S404でYES)は、処理をS405に進め、自装置が子機として動作する場合(S404でNO)は、処理をS420に進める。
S405では、通信装置は、アクセスポイントとしての無線通信機能を起動する。これにより、通信装置は、無線通信ネットワークを構築し、後述する処理によって、その無線通信ネットワークにおいてステーション(子機)として動作する他の装置と接続し、時刻同期を確立する。なお、親機として動作する場合にアクセスポイントの役割で動作することにより、自装置が構築した無線通信ネットワークに参加する他の通信装置との直接通信を行うことが容易となるため、同期確立処理の構成を簡単化することができる。通信装置は、この時点で、構築した無線通信ネットワークに子機が接続するための無線通信パラメータを用意しておく。通信装置は、アクセスポイントとしての無線通信機能を起動した後、同期処理の開始指示を受け付ける前(S409でNO)の期間において、同期確立処理対象となる子機の検出処理を実行する(S406)。そして、通信装置は、同期確立処理の対象の子機を検出した場合(S406でYES)、その子機との間で無線接続処理を実行する(S407)。無線接続処理の流れについては後述する。通信装置は、S407において子機との間での無線接続が正常に行われると、無線通信ネットワークに接続している子機の台数をカウントし、その台数を画面に表示する(S408)。なお、通信装置は、このときに、後述の同期確立処理においてフレームを送信するために、無線接続を確立した子機のMACアドレスを記憶しうる。なお、同期確立処理対象の子機の情報は、例えば、事前にユーザ操作や所定のファイル入力等によって通信装置に入力されうる。また、この子機の情報は、例えば子機の識別情報を含みうる。この場合、一例において、通信装置が同期確立処理対象の他の装置以外の装置とは接続を確立しないことによって、接続を完了した台数を表示するだけで、ユーザに対して、同期確立処理対象の他の装置の全てとの接続が確立されたかを認識することができる。なお、通信装置は、子機の台数に代えて、接続が確立された子機を示す情報(その子機を示す名称、機種名、識別情報等)を表示してもよい。これにより、通信装置のユーザが、同期確立対象の他の装置の接続状態を認識することができる。なお、通信装置は、接続が確立された他の装置の情報の表示と共に、どの装置との同期確立を行うかの選択を受け付ける画面を表示してもよい。これによれば、同期確立処理対象でない他の装置と接続が確立された場合に、ユーザがその装置を同期確立処理対象から外す操作を行うことにより、通信装置がその装置と不必要に同期を確立することを防ぐことができる。
通信装置は、同期対象とする子機の全てと(又はその少なくとも一部と)接続を確立した後に、ユーザからの同期処理の開始の指示を受け付けると(S409でYES)、それらの子機との同期確立処理を開始する。通信装置は、例えばユーザ操作により又は例えばMACアドレスの値順等の所定の順序で、同期確立対象の子機を1台選択し(S411)、自装置を親機として、その子機との同期確立処理を実行する(S412)。同期確立処理の詳細については後述する。そして、通信装置は、子機から同期の完了の通知を受け取ると(S413でYES)、処理をS410に戻して、同期確立処理対象でまだ同期処理が完了していない子機との同期処理を実行する。なお、図4の例では、それぞれの子機について別個のタイミングで同期確立処理を実行する例について説明したが、同期確立処理対象の複数の(場合によっては全ての)子機との同期確立処理を一斉に行ってもよい。例えば、複数の子機のそれぞれに対して、それぞれ異なる周波数・空間・符号等のチャネルを使用して時刻同期用のパケットを並行して送受信することによって、同期確立処理が並行して実行されうる。例えば、各子機は、親機との間での通信の遅延時間を特定し、親機からのタイムスタンプ付きのパケットを受信することによって、そのタイムスタンプで示される時刻に、特定した遅延時間を加算した時刻を現在時刻として設定しうる。
通信装置は、全ての同期確立処理対象の子機との同期確立処理を完了した場合(S410でYES)に、同期処理が完了したことを画面に表示する(S414)。これにより、ユーザは、全ての同期確立処理対象の子機との同期が確立されたことを認識することができ、例えば上述の時刻合わせや同期撮像等の時刻情報を用いたアプリケーションの実行を開始することができる。すなわち、S401においてアプリケーションが開始されているが、その時点では通信装置間での同期が確立されていないため、適切な時刻情報を使用することができない場合がある。これに対して、上述のような同期確立処理の完了後には、適切な時刻情報を使用してこれらのアプリケーションを実行することが可能となる。
そして、通信装置は、S401で起動したアプリケーションが、同期撮像のような高い同期精度を必要とするアプリケーションであるか、時刻合わせのような相対的に低い同期精度で足りるアプリケーションであるかを判定する(S415)。通信装置は、「時刻合わせ」アプリケーションを実行していた場合は、このアプリケーションを実行するには十分な時刻同期が確立されたため、ネットワークを解消して(S417)、図4の処理を終了する。一方、通信装置は、「同期撮像」アプリケーションを実行していた場合は、実際に撮像が実行されるまで、高精度な同期が継続されている必要があるため、「時刻合わせ」アプリケーションのように、即座にはネットワークを解消しない。この場合、通信装置は、ユーザ、自装置内部、又は他装置のいずれかからの終了要求を検出していない場合(S416でNO)、所定時間が経過する(S418でYES)ごとに、同期確立処理を実行し(S419)、高精度な時刻同期を維持する。そして、通信装置は、終了要求を検出した場合(S416でYES)に、ネットワークを解消し(S417)、図4の処理を終了する。通信装置は、例えば、1度同期撮像を実行した場合に内部的に終了要求を発生させるように構成されてもよいし、所定回数の同期撮像が行われたことに応じて終了要求を発生させるように構成されてもよい。なお、ここでの所定回数はユーザ操作によって指定可能なように構成されてもよい。また、通信装置は、ユーザ操作によってアプリケーションの終了が指示された場合に終了要求を発生させてもよい。また、通信装置は、他の通信装置においてユーザが同期撮像を終了する操作を行ったことにより、その装置から終了要求を受信し、それによって、ネットワークを解消してもよい。このような明示的な終了要求によれば、ユーザが親機を選択してネットワーク解消のための操作を行うことなく、子機においてその操作を行うだけで、同期処理を解消させることができる。なお、親機においてネットワーク解消のための操作が受け付けられた場合には、複数の子機との間で同期確立処理を実行していた場合に、一斉にその処理を終了させることができる。さらに、通信装置は、同期撮像を行っていた子機のデジタルカメラが、自装置(親機)から離れたことによって無線通信ネットワークから切断されたことを検出した場合に、終了要求を内部的に発生させてもよい。これによれば、子機がネットワークに接続できない状態となったにも関わらず、同期確立処理が継続されてしまうことを防ぐことができる。なお、通信装置は、複数の子機の全てとの同期を終了すると判定された場合に、ネットワークを解消するようにしうる。すなわち、通信装置は、複数の子機のうち、いずれかとの間で同期処理が終了しない場合には、ネットワークを維持するようにしうる。これにより、例えば一部の子機のみ同期撮像の対象から外すなどの操作があった場合に、他の子機との間では同期確立処理が継続され、それらの子機との同期撮像を継続することが可能となるなど、柔軟な運用を行うことが可能となる。
通信装置は、自装置が子機として動作する場合(S404でNO)、としての無線通信機能を起動し(S420)、ユーザからの同期処理の開始指示を待ち受ける(S421)。そして、通信装置は、同期処理の開始指示を受け付けると(S421でYES)、アクセスポイント(親機)として動作している他の装置との間で無線接続処理を実行する(S422)。無線接続処理の流れについては後述する。通信装置は、S422において親機との間での無線接続が正常に行われ、その親機からの同期要求を受信する(S423でYES)と、その親機の時刻に同期するための同期確立処理を実行する(S424)。そして、通信装置は、同期確立処理の完了後、同期が完了したことを画面に表示してユーザに通知する(S425)。また、通信装置は、親機として動作している他の装置に対しても同期処理が完了したことを通知する(S426)。そして、通信装置は、S401で起動したアプリケーションが、同期撮像のような高い同期精度を必要とするアプリケーションであるか、時刻合わせのような相対的に低い同期精度で足りるアプリケーションであるかを判定する(S427)。通信装置は、「時刻合わせ」アプリケーションを実行していた場合は、このアプリケーションを実行するには十分な時刻同期が確立されたため、ネットワークから離脱して(S429)、図4の処理を終了する。一方、通信装置は、「同期撮像」アプリケーションを実行していた場合は、実際に撮像が実行されるまで、高精度な同期が継続されている必要があるため、親機として動作する場合と同様に、ネットワークから離脱せずに、同期確立処理を継続的に実行する。すなわち、通信装置は、終了要求を検出していない場合(S428でNO)、所定時間が経過する(S430でYES)ごとに、同期確立処理を実行し(S431)、高精度な時刻同期を維持する。そして、通信装置は、終了要求を検出した場合(S428でYES)に、ネットワークから離脱し(S429)、図4の処理を終了する。
以上のようにして、本実施形態では、親機として動作する通信装置は、時刻情報の用途に応じて、時刻同期を行った後にその時刻同期において使用された無線通信ネットワークでの接続を解消するか否かを決定する。これにより、時刻情報を高精度に同期させる必要がある用途においては無線通信ネットワークが維持されることで同期確立処理が継続的に実行される。一方、時刻情報の要求精度が相対的に低い用途では、無線通信ネットワークを解消することで、各通信装置が不必要に無線通信ネットワークに接続された状態となることを防ぎ、消費電力を削減することが可能となる。
なお、上述の説明(及び、後述の説明)では、アクセスポイントとして動作する通信装置が親機として動作し、ステーションとして動作する通信装置が子機として動作するように説明したが、これに限られない。すなわち、ステーションとして動作する通信装置のうちの1つが親機として動作してもよい。また、親機と子機との関係は、複数の通信装置間でネゴシエーションによって決定されてもよい。また、上述の説明(及び、後述の説明)では、アクセスポイントとして動作する通信装置が、無線通信ネットワークのための通信パラメータを用意すると説明したがこれに限られない。すなわち、ステーションとして動作する通信装置が通信パラメータを提供する役割で動作してもよい。
続いて、S407及びS422で実行される、無線接続処理の流れの例について、図5を用いて説明する。本実施形態では、通信パラメータの共有処理が、DPPを使用して実行されるものとする。ここで、本実施形態では、親機はコンフィグレータとして動作し、子機はエンローリとして動作するものとする。ただし、これに限られず、子機のうちの1台がコンフィグレータとして動作し、親機及び他の子機がエンローリとして動作してもよい。
DPPは、Bootstrapping(S501)、Authentication(S502)、Configration(S503)、及びNetwork Introduction(S504)の各処理を含んで構成される。これらの処理の詳細なシーケンスについては、従来技術であるため、ここでは各処理における処理内容を概説するに留める。Bootstrapping(S501)では、Authenticaion(S502)を実行するためのチャネルを示す情報や公開鍵等の情報の受け渡しが行われる。Bootstrappingには様々な方法が存在するが、それらのいずれの方法が採用されてもよい。なお、公開鍵の情報は、通信パラメータ共有処理の際のセキュリティを高めるために用いられる情報であり、公開鍵暗号方式で用いられる暗号鍵の一種である。ただし、これに代えて又はこれに加えて、証明書、またはパスワードなどの情報の受け渡しが行われてもよい。Authentication(S502)では、通信パラメータの提供と受信とを行うための認証処理が実行される。認証処理には、Bootstrappingで得られた情報が使用される。Authenticationでは、コンフィグレータ及びエンローリは、Bootstrappingで受け渡された情報を相互に確認できた場合に認証に成功し、共通鍵を取得することができる。この共通鍵は、Configration(S503)の通信を暗号化するのに使用される。Configration(S503)では、コンフィグレータとエンローリとの間で、無線接続を行うための通信パラメータの提供と受信とが行われる。エンローリからの通信パラメータの要求に対し、コンフィグレータが、エンローリへ通信パラメータを提供する。Network Introduction(S504)では、コンフィグレータとエンローリが、Configurationで共有された通信パラメータを使用して無線接続の確認を行う。Network Introductionにおいて、エンローリは、コンフィグレータへ接続要求を送信し、コンフィグレータから接続許可を受信する。
エンローリとして動作していたステーションは、DPPの処理によって接続許可を受信したことに応じて、コンフィグレータとして動作していたアクセスポイントとの間で4-Way handshake等の必要な接続処理を実行する。そして、アクセスポイントとステーションとの間で、無線通信ネットワークを介した接続が確立される(S505)。
本実施形態では、親機として動作する通信装置が、DPPを使用して無線接続を確立した子機として動作する全ての他の通信装置と時刻同期を確立するための同期確立処理を実行する。DPPでは、無線接続のために鍵交換が行われる。このため、通信装置は、時刻同期や撮像データの通信等、無線接続完了後の処理内容に応じて、使用する公開鍵等の内容を変更し、通信を正しく復号することができる相手装置を同期確立処理の対象として認識しうる。また、通信装置は、通信パラメータに含まれる情報(たとえば、DPPで規定されるコネクタや、ネットワーク利用用途)を用いて、時刻同期を行う相手装置を認識してもよい。このため、通信装置は、時刻同期の確立用と時刻同期の確立以外用とで、それぞれ異なる通信パラメータを使用するように構成されてもよい。例えば、DPPの通信パラメータであるDPP CredentialのAKM(Authentication and key management type)が、時刻同期用途においてはDPPを示す情報が含まれるように事前に取り決められうる。また、通信装置は、図4の処理を開始するときに、時刻同期を行うと判断することができるため、アクセスポイントとして無線通信機能を起動した場合、時刻同期用途の通信パラメータをステーションとして動作する他の通信装置へ提供するようにしてもよい。
続いて、同期確立処理の流れの例について説明する。本実施形態では、時刻同期のプロトコルにIEEE802.11v規格において規定されているTiming Measurement Protocol(以下、「TMプロトコル」と呼ぶ。)を使用する。図6は、このTMプロトコルを用いた同期確立処理の流れの概要を示している。
本処理では、まず、親機が、時刻「T1」において、Actionフレームを子機へ送信する(S601)。なお、親機は、このActionフレームを送信するときに、その送信時刻である「T1」を記憶する(S611)。子機は、S601のActionフレームを受信すると、その受信時刻である「T2」を記憶する(S621)。そして、子機は、時刻「T3」において、ACKフレームを送信する(S602)。このときに、子機は、親機が時刻「T1」を記憶したのと同様に、ACKフレームの送信時刻である「T3」を記憶する(S622)。親機は、S602のACKフレームを受信すると、その受信時刻である「T4」を記憶する(S612)。その後、親機は、S611及びS612で記憶した時刻「T1」及び「T4」の情報を含んだActionフレームを子機へ送信する(S603)。ここでも、親機は、このActionフレームの送信時刻である「T1’」を記憶する(S613)。子機は、S603のActionフレームを受信すると、その受信時刻である「T2’」を記憶する(S623)。そして、子機は、ACKフレームを親機へ送信する(S604)。ここでも、子機は、このACKフレームの送信時刻である「T3’」を記憶する(S624)。親機は、S604のACKフレームを受信すると、その受信時刻である「T4’」を記憶する(S614)。なお、図6には示していないが、親機は、次にActionフレームを送信する際には、S613及びS614で記憶した時刻「T1’」及び「T4’」の時刻を含めて送信する。このような処理が定期的に繰り返されることにより、子機は、時刻「T1」~「T4」(または時刻「T1’」~「T4’」)を取得することができる。ここで、子機は、親機との間の遅延時間Tdを、その大きさが往路と復路とで対称であると仮定して、
Td=((T4―T1)―(T3-T2))/2 ・・・(1)
のように算出することができる。また、子機は、親機と自装置との間の時刻のずれToを、
To=T2-(T1+Td) ・・・(2)
のように算出することができる。
子機は、上述のようにして、親機と自装置との間の時刻のずれToを特定すると、自装置のシステム時刻にToを加算することによって、自装置のシステム時刻を親機と一致(又は略一致)させることができる。
なお、TMプロトコルでは、時刻T1~T4は32ビットで表現され、1ビットが10ナノ秒に対応する。したがって、システム時刻(例えば、POSIX時間のように1970年1月1日00:00:00以降の経過秒数をカウントして表現する時刻表現)を用いた同期を行うには情報ビットが足りない。このため、一例において、Actionフレーム送信時には、Vendor Specific ID領域にシステム時刻(たとえば、64ビットで1ビットは10ナノ秒)を追加しうる。これにより、システム時刻の同期を実現することができる。
システム時刻の同期方法は、例えば、以下の2つの方法が挙げられる。1つ目の方法(以下、「パターンA」と呼ぶ。)では、S611とS612、及び、S621とS622において、32ビットの時刻のみならずシステム時刻が記憶される。そして、S603のActionフレームにおいてシステム時刻(時刻T1に対応するシステム時刻と時刻T4に対応するシステム時刻)が送信される。そして、上述の式(1)及び式(2)の時刻T1~T4を、それぞれに対応するシステム時刻で置き換えることにより、システム時刻の同期が実現されうる。なお、TMプロトコルに準拠するために、S603のActionフレームにおいて、32ビットの時刻も同時に送信されてもよい。システム時刻の取得は、S611、S612、S621、S622のみならず、S613やS623以降も行われる。2つ目の方法(以下、「パターンB」と呼ぶ。)は、親機が、S611で時刻T1と対応するシステム時刻「Ts1」とを記憶し、S603において、時刻T1及びT4に加えて、システム時刻Ts1を含んだActionフレームを送信する。そして、式(1)及び式(2)により、遅延時間TdとToを求めた後に、新しいシステム時刻Tnewを、
Tnew=Ts1+To ・・・(3)
のように計算する。子機は、式(3)によって得られたシステム時刻を適用することにより、親機と時刻同期を確立することができる。
また、子機は、時刻同期と並行して、自装置のクロック周波数を親機のクロック周波数に合わせる調整を行ってもよい。例えば、子機は、
Fratio=(T1’-T1)/(T2’-T2) ・・・(4)
を算出し、Fratioが1を下回る場合は、自装置の方が親機のクロック周波数よりも高いことが想定されるため、自装置のクロック周波数を遅くする調整を行う。また、子機は、Fratioが1を上回る場合は、自装置の方が親機のクロック周波数よりも低いことが想定されるため、自装置のクロック周波数を早くする調整を行う。なお、子機は、Fratioが1-Δ~1+Δの間の値である場合に、調整を行わないようにしてもよい。
なお、TMプロトコルでは、通常、S601のActionフレームが送信される前に、装置間で相互にTMプロトコルに対応しているか否かの確認が行われる。本実施形態では、親機及び子機は、共にTMプロトコルに対応しているものとし、この確認処理が省略された例を示しているが、その確認処理が行われてから、図6の処理が開始されてもよい。また、時刻同期のプロトコルはTMプロトコルに限られず、たとえばNetwork Time Protocol(NTP)や、Precision Time Protocol(PTP)が用いられてもよい。なお、時刻同期にTMプロトコル以外が使用される場合であっても、子機が、自装置の時刻を親機の時刻に合わせるものとする。
続いて、図7を用いて、図6の時刻同期処理における親機の動作の流れの例について説明する。図7の処理は、図4のS412又はS419の処理に対応する。本処理では、まず、親機が、子機へ時刻同期のActionフレームを送信し、そのときの送信時刻を記憶する(S701)。なお、親機は、32ビットの時刻に代えて又はこれに加えて、システム時刻(64ビット)を記憶する。そして、親機は、Actionフレームを受信した子機からACKフレームを受信するまで待機する(S702)。親機は、Actionフレームを受信した子機からACKフレームを受信すると(S702でYES)、そのACKフレームの受信時刻を記憶する。なお、上述のパターンAが採用される場合、このときに、ACKフレームが受信された時点のシステム時刻が記憶される。その後、親機は、Actionフレームの送信時刻とACKフレームの受信時刻とが含まれるActionフレームを子機へ送信する(S703)。そして、親機は、そのActionフレームについて、その送信時刻(32ビットの時刻とシステム時刻)を記憶する。そして、親機は、Actionフレームを受信した子機からACKフレームを受信するまで再度待機する(S704)。親機は、Actionフレームを受信した子機からACKフレームを受信すると(S704でYES)、そのACKフレームの受信時刻を記憶する。この場合にも、上述のパターンAが採用される場合、このときにACKフレームが受信された時点のシステム時刻が記憶される。そして、親機は、子機からの終了要求を受信したか否かを判定する(S705)。親機は、子機からの終了要求を受信しない限り(S705でNO)、S703及びS704の処理を繰り返し実行する。一方、親機は、子機からの終了要求を受信した場合(S705でYES)、その終了要求に対するACKを送信し(S706)、図7の処理を終了する。なお、終了要求は、IEEE802.11vで規定されている、トリガフィールドが「0」にセットされたTM Request Frameでありうる。また、子機によるネットワーク切断要求(例えば、DeauthenticationフレームやDisassociationフレーム)が終了要求として扱われてもよいし、その他のフレームが終了要求として扱われてもよい。
続いて、図8を用いて、図6の時刻同期処理における子機の動作の流れの例について説明する。本処理は、図4におけるS424又はS431の処理に対応する。本処理では、子機は、親機からActionフレームを受信するのを待機する(S801)。そして、子機は、親機からActionフレームを受信すると(S801でYES)、その受信時刻を記憶する。そして、子機は、Actionフレームを受信したことを示すACKフレームを親機へ送信し(S802)、その送信時刻を記憶する。なお、上述のパターンAが採用される場合、このときに、Actionフレームの受信時刻及びACKフレームの送信時刻を記憶するときに、それぞれのシステム時刻も記憶する。子機は、自装置が記憶したActionフレームの受信時刻とACKフレームの送信時刻と、S801で受信したActionフレーム内に含まれるActionフレームの送信時刻及びACKフレームの受信時刻とを用いて、TdとToを計算する(S803)。なお、最初に受信されるActionフレーム内には有効な送信時間と受信時間とが含まれていないため、TdとToとを正しく計算することはできない。このため、1回目のActionフレームの受信後かつACKフレームの送信後にはTdとToの計算処理(S803)はスキップされてもよい。この場合、2回目以降のActionフレームの受信後かつACKフレームの送信後に、この処理が実行される。なお、子機は、Actionフレームに含まれる情報を解析して、有効な送信時間及び受信時間の情報が含まれているか否かを判定し、有効な情報が含まれていない場合にS803の処理をスキップするようにしてもよい。子機は、Td及びToの計算後、時刻同期の終了条件を満たすか否かを判定する(S804)。子機は、時刻同期の終了条件を満たすと判定した場合(S804でYES)、S803での計算結果を使用して、自装置のシステム時刻を補正する(S805)。一方、子機は、時刻同期の終了条件を満たさないと判定した場合は(S804でNO)、処理をS801に戻す。終了条件は、例えば、TdとToの計算回数が所定回数に達したこと、計算結果の統計処理によって遅延時間Tdが終息したことが確認されたこと等を含みうる。なお、S805で補正時に使用される値は、最後に算出された値であってもよいし、複数回の計算結果の平均値や統計値であってもよい。以上のようにして、親機と子機との間で、時刻同期が確立される。
なお、初回の同期処理完了後、子機は親機に対して同期処理完了の通知(S426)を行う例について説明した。これに対し、ユーザが選択するアプリケーションが1回のみの同期処理で完了する「時刻合わせ」である場合、この同期完了通知は送受信されなくてもよい。この場合、例えば、親機が、子機からのDeauthentication等の切断要求を、子機の同期処理完了通知として取り扱うことができる。このようにすることにより、子機は、親機に対して無線通信ネットワークからの切断要求を送信することにより、黙示的に同期処理の完了を通知することができる。また、S416又はS428の終了要求は、ユーザが入力できるようにしてもよいし、所定枚数の撮像後に終了要求を内部で発生させてもよい。
以上のように、本実施形態では、複数の通信装置が時刻同期を確立する無線通信システムにおいて、同期が確立された時刻情報を使用する用途に応じて、時刻同期に使用された無線通信ネットワークへの接続を維持するか否かが決定される。すなわち、高精度な時刻同期が維持される必要のある用途で時刻情報が使用される場合は、時刻同期の確立処理の完了後にも無線通信ネットワークへの接続が維持される。これにより、定期的に時刻同期の確立処理が実行されるため、高精度な時刻同期が維持される。一方で、高精度な時刻同期が維持される必要のない用途で時刻情報が使用される場合は、時刻同期の確立処理の完了後に、無線通信ネットワークへの接続が維持されない。すなわち、この場合、親機として動作している通信装置は、無線通信ネットワークを解消し、子機として動作している通信装置は、無線通信ネットワークとの接続を切断する。これにより、時刻情報の用途に応じて、必要な場合には無線通信ネットワークへの接続を維持して高精度な時刻同期を維持し、その他の場合には不必要に無線通信ネットワークへの接続が維持されることを防ぎ、通信装置の消費電力を抑制することができる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。