以下、添付の図面を参照して実施形態を詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は以下の構成に限定されるものではない。
<実施形態1>
図1は、本実施形態に係るNAN(Neighbor Awareness Network)デバイス106が参加するネットワークの構成を示す図である。
本実施形態では、NANデバイス101、102、103、104、105、106は、Wi−Fi NAN規格に準拠した無線通信方式で無線通信を行う。NANデバイスは夫々、Wi−Fi NAN規格に準拠した無線通信の他に、Wi−Fi NAN規格以外の他のIEEE802.11シリーズ規格に準拠した無線通信方式で通信を行ってもよい。IEEEとは、Institute Of Electrical And Electronics Engineers,Incの略である。あるいは、Bluetooth(登録商標)、UWB、Zigbeeなどの他の無線通信方式に準拠した通信方式を利用してよい。なお、UWBはUltra Wide Bandの略である。また、UWBには、ワイヤレスUSB、ワイヤレス1394、WiNetなどが含まれる。あるいは、Ethernetなどの有線通信方式に準拠した通信方式も利用してよい。
NANデバイス103は、画像や文書の印刷サービスを提供する印刷装置である。NANデバイス103は、プリンタ、MFP(Multi−Function Peripheral)などの印刷装置であってもよい。また、NANデバイス103は、印刷サービスに加えて、あるいは代えて、画面共有サービスなど、他のサービスを提供する提供装置であってもよい。NANデバイス103の具体的な例としては他に、タブレットやディスプレイ、プロジェクタなどが挙げられるが、これらに限定されない。
NANデバイス106は、印刷サービスを提供する装置を探索している携帯端末である。なお、NANデバイス106は、スマホやタブレット、PCなど、他の装置が提供するサービスを探索する通信装置であればよい。具体的な例としては、スマホやタブレット、PC、ヘッドマウントディスプレイなどの通信装置が挙げられるが、これらに限定されない。NANデバイス101、102、104、105は任意の通信装置である。
本実施形態において、NANデバイス101、102、106はNANクラスタ107に、NANデバイス103、104、105はNANクラスタ108に参加する。
同じNANクラスタに参加するNANデバイスは、NAN Synchronization Beaconの送受信を行う期間を共有している。この信号の送受信を行う期間(この信号を用いた通信を行う期間)をDiscovery Window(DW)という。NAN Synchronization Beaconとは、同じNANクラスタに参加する各NANデバイスが同期を取れるようにするための同期信号である。本実施形態においてDWの長さは16TUs(Time Units)であり、また、DWの先頭から次のDWの先頭までは、512TUsの間隔がある。1TUは1024μsである。なお、DWの長さや間隔はこれらに限定されない。
NANクラスタに参加するNANデバイスには、夫々Master、もしくは、Non−Masterという役割が与えられる。Non−Masterの役割が与えられたNANデバイスはSync状態あるいはNon−Sync状態とされる。MasterとなったNANデバイスは、NAN Synchronization BeaconをDW中に、NAN Discovery BeaconをDW外に送信する。Non−MasterかつSync状態となったNANデバイスは、NAN Synchronization BeaconをDW中に送信するが、NAN Discovery Beaconは送信しない。Non−MasterかつNon−Sync状態となったNANデバイスは、DW中にNAN Synchronization Beaconも、NAN Discovery Beaconも送信しない。なお、NANデバイスはNon−Sync状態であっても、参加しているNANクラスタにおいてDWを共有している。
NAN Discovery Beaconは、DW外に送信される信号である。自装置が参加するNANクラスタの存在を、他のNANクラスタに参加しているNANデバイスや、NANクラスタに参加していないNANデバイスに報知するための報知信号である。
NANデバイスの役割は、各NANデバイスのMaster Rankによって決定される。Master Rankは、Master Preference、Random Factor、および、NAN Interface Addressに基づいて決定される。Master PreferenceはNANデバイスごとに設定される値であって、Master Preferenceが高いほど、そのNANデバイスはNANクラスタにおいてMasterになりやすい。
Master Preferenceの決定方法は任意であるが、例えば商用電源から電力を供給されているNANデバイスや、クロックの安定性が高いNANデバイスについては、Master Preferenceを高く設定してもよい。また、モバイル端末のように移動しながら利用されることが想定されるNANデバイスについては、Master Preferenceを低く設定してもよい。
Random Factorはランダムに設定される値であって、0から255の整数の内、何れか一つがランダムに選ばれる。NAN Interface Addressは、NANデバイスのMACアドレス(Media Access Control address)に基づいた値である。
Master Rankは以下の数式1に基づいて決定される。
(数式1)
Master Rank=Master Preference*2^56+Random Factor*2^48+MAC[5]*2^40+…+MAC[0]
数式1のMAC[0]からMAC[5]は、NANデバイスのMACアドレス(48ビット)を先頭から8ビットずつ区切ったものである。
上記の数式1に基づいて決定されたMaster Rankが高いほど、NANデバイスはNANクラスタにおいてMasterになりやすい。Anchor MasterはNANクラスタ内で最もMaster Rankが高いNANデバイスである。
本実施形態において、NANデバイス101、102、106はNANクラスタ107に、NANデバイス103、104、105はNANクラスタ108に参加している。各NANクラスタにはCluster Grade(以下、CG)が設定される。CGは、以下の数式2により設定される。
(数式2)
CG=2^64*A1+A2
数式2において、A1はNANクラスタ内のAnchor MasterのMaster Preferenceである。また、A2はTSF(Time Synchronization Function)値である。TSFは、NAN Synchronization Beaconに含まれるタイムスタンプであって、NANクラスタ内のNANデバイスが、Anchor Masterと同期するのに用いられる。
あるNANクラスタに参加するNANデバイスが、他のNANクラスタに参加するNANデバイスが送信するNAN Discovery Beaconを受信することで、他のNANクラスタを検出する。あるいはNANデバイスがNAN Synchronization Beaconを受信することで他のNANクラスタを検出してもよい。
NANデバイスはより高いCGが設定されているNANクラスタに参加する。具体的には、あるNANデバイスがNANクラスタを検出し、検出したNANクラスタのCGが、自装置が参加しているNANクラスタのCGより高かった場合、当該NANデバイスは検出したNANクラスタに参加し、元のNANクラスタから離脱する。このようなNANデバイスの動作をマージと呼ぶ。他のNANクラスタを検出したNANデバイスの役割がMasterである場合、今まで参加していたNANクラスタのDWに新たに検出したNANクラスタに関するNAN Synchronization Beaconを送信してもよい。なお、他のNANクラスタを検出したNANデバイスの役割がNon−MasterかつSync状態である場合も同様である。これにより、NANデバイスが参加していたNANクラスタに参加する他のNANデバイスが、新たに検出したNANクラスタのDWに信号の送受信を行うようになる。本実施形態において、NANクラスタ108のCGはNANクラスタ107より低いものとする。
なお、NANクラスタに参加しているNANデバイスが、自装置が参加するNANクラスタよりCGが高い別のNANクラスタを検出しても、検出したNANクラスタにマージしなくてもよい場合がある。具体的には、自装置が参加するNANクラスタ内のNANデバイス同士がWi−Fi NAN規格に準拠した無線通信を介してデータの送受信を行っている場合は、CGが高いNANクラスタにマージしなくてもよい。なお、Wi−Fi NAN規格に準拠した無線通信ではなく、Wi−Fi NAN規格以外のIEEE802.11シリーズ規格に準拠した無線通信や、Bluetooth、UWB、Zigbeeなどの他の無線通信方式に準拠した無線通信を介してもよい。本実施形態において、NANクラスタ108内のNANデバイス103が、NANデバイス104とNANデバイス105との少なくとも一方と、データの送受信を行う。そのため、NANクラスタ108はNANクラスタ107よりCGが低いが、NANクラスタ108に参加しているNANデバイスはNANクラスタ107を検出してもNANクラスタ107にマージしなくてもよい。
また、NANデバイスは参加しているNANクラスタ内の他のNANデバイスが提供するサービスを検索することができる。具体的には、NANデバイスはDW中にSubscribeメッセージを送信することで、同じNANクラスタに参加している他のNANデバイスにPublishメッセージを送信させることができる。Subscribeメッセージとは、同じNANクラスタに参加しているNANデバイスにどのようなサービスを提供可能か問合せる問合せ信号である。Publishメッセージとは、自装置がどのようなサービスを提供可能か、同じNANクラスタに参加しているNANデバイスに通知する通知信号である。これをSolicited型のサービス検索という。
一方、NANデバイスがSubscribeメッセージを受信することなく自律的にPublishメッセージを送信することも可能である。これをUnsolicited型のサービス検索と呼ぶ。
Solicited型のサービス検索では、Subscribeメッセージを送信するNANデバイスが所望のサービスを指定してサービス検索を行うことができる。Subscribeメッセージを受信したNANデバイスは、指定されたサービスを自装置が提供可能な場合、Publishメッセージを送信する。なお、Subscribeメッセージを送信するNANデバイスは、Subscribeメッセージを送信する際、所望のサービスを指定しないか、あるいはワイルドカードを指定してもよい。その場合、Subscribeメッセージを受信したNANデバイスは、自装置が提供可能な全てのサービスをPublishメッセージで通知する。なおNANデバイスは、自装置において起動しているアプリケーションに対応するサービスや、ユーザからの指示に基づいて決定されたサービスなど、特定のサービスについてのみ通知してもよい。
Unsolicited型のサービス検索では、NANデバイスは自装置が提供可能な全てのサービスをPublishメッセージによって通知する。なおNANデバイスは、自装置において起動しているアプリケーションに対応するサービスや、ユーザからの指示に基づいて決定されたサービスなど、特定のサービスについてのみ通知してもよい。
またNANデバイスは、Wi−Fi NAN規格に準拠した無線通信を開始する際、NANクラスタを形成する。NANクラスタを形成したNANデバイスは、所定の時間、自装置のMaster PreferenceとRandom Factorを0に設定する。そのため、所定の時間の間、NANデバイスが形成したNANクラスタのCGは非常に低くなる。所定の時間が経過した、あるいはAnchor MasterのMaster Preferenceが0より大きいNANクラスタにマージする場合は、NANデバイスは自装置のMaster Preferenceを0より大きくする。
なお、Wi−Fi NAN規格に準拠した無線通信を開始する際、NANデバイスはNANクラスタを形成しなくてもよい。このようなNANデバイスは、Wi−Fi NAN規格に準拠した無線通信を開始するとNANクラスタを検出し、検出したNANクラスタに参加する。なお、複数のNANクラスタを検出した場合、NANデバイスは最もCGが高いNANクラスタに参加する。あるいは、最も早く検出したNANクラスタに参加してもよいし、最も距離が近いNANクラスタに参加してもよい。
図2はNANデバイス106の機能構成を示す図である。なお、NANデバイス101、102、103、104、105の機能構成は、NANデバイス106と同様である。
無線通信制御部201は、他のNANデバイスや、無線通信を行うことができる通信装置との間で行う無線信号の送受信を制御する。無線通信制御部201は、Wi−Fi NAN規格を含むIEEE802.11シリーズ規格に準拠した無線通信方式による無線通信の制御を行う。
NAN制御部202は、NANデバイス106のWi−Fi NAN規格に準拠した制御や、Wi−Fi NAN規格に準拠した無線通信の開始、終了を制御する。NAN制御部202は、サービス検索の制御も行う。NAN制御部202は、後述するNANデバイス106の動作モードの選択処理において決定された参加モードに基づいて無線通信制御部201を制御する。NANデバイス106の動作モードの選択処理については、図4で詳細に説明する。NAN制御部202は無線通信制御部201による無線通信を所定の期間無効にすることで、後述の通信部306が消費する電力を低減し、省電力性を高める。なお、所定の期間とは、DWが終了してから次のDWが開始されるまでである。なお、DW外にNAN Discovery Beaconを送信する場合やデータの送受信を行う場合は、当該信号を送信する間やデータの送受信をする間は無線通信を有効にしてもよい。
アプリケーション制御部203は、アプリケーションの処理に基づいて、NAN制御部202へWi−Fi NAN規格に準拠した無線通信の開始、終了の制御を指示する。また、Wi−Fi NAN規格に準拠した無線通信によって検出されたNANデバイス間でのネットワークの形成、およびデータの送受信を制御する。例えばNANデバイス106のユーザが、Wi−Fi NAN規格に準拠した無線通信を利用可能な印刷サービスアプリケーションを起動したと想定する。この場合、アプリケーション制御部203はNAN制御部202に対してWi−Fi NAN規格に準拠した無線通信の開始を指示する。そして、NAN制御部202が無線通信制御部201を制御し、印刷サービスを提供可能な他のNANデバイスを検出すると、当該NANデバイスとの間でWi−Fi NAN規格に準拠したネットワークを形成する。NANデバイス106は、形成したネットワークを通してデータとして印刷データの送受信を行う。アプリケーション制御部203は、ユーザが印刷サービスアプリケーションを終了すると、NAN制御部202に対してWi−Fi NAN規格に準拠した無線通信の終了を指示する。なお、データの送受信を行うネットワークは、Wi−Fi NAN規格以外のIEEE802.11シリーズ規格に準拠した無線通信でもよいし、Bluetooth、UWB、Zigbeeなどの他の無線通信方式に準拠した無線通信であってもよい。
OS(Operating System)設定制御部204は、NANデバイス106内で動作するアプリケーションに共通のOS機能に関する設定を制御する。例えばOS機能の設定として、Wi−Fi NAN規格を含むIEEE802.11シリーズ規格に準拠した無線通信の開始、終了などを設定してもよい。
操作制御部205は、NANデバイス106のユーザにより、後述の入力部304に対して行われた操作を管理し、当該操作に基づいて必要な信号を他の制御部201〜204へ伝達する。
図3に、NANデバイス106のハードウェア構成を示す。なお、NANデバイス101、102、103、104、105のハードウェア構成は、NANデバイス106と同様である。
記憶部301は、ROMやRAMなどの1以上のメモリにより構成され、後述する各種動作を行うためのコンピュータプログラムや、無線通信のための通信パラメータなどの各種情報を記憶する。ROMはRead Only Memoryの、RAMはRandom Access Memoryの夫々略である。なお、記憶部301として、ROM、RAM等のメモリの他に、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、DVDなどの記憶媒体を用いてもよい。また、記憶部301が複数のメモリ等を備えていてもよい。
制御部302は、CPUやMPUなどの1以上のプロセッサにより構成され、記憶部301に記憶されたコンピュータプログラムを実行することによりNANデバイス106全体を制御する。CPUはCentral Processing Unitの、MPUはMicro Processing Unitの略であり、コンピュータとして機能する。なお、制御部302は、記憶部301に記憶されたプログラムとOSとの協働によりNANデバイス106全体を制御するようにしてもよい。また、制御部302がマルチコアなどの複数のプロセッサを備え、複数のプロセッサによりNANデバイス106全体を制御するようにしてもよい。
また、制御部302は、機能部303を制御して、撮像やコンテンツの閲覧等の所定の処理を実行する。機能部303は、NANデバイス106が所定の処理を実行するためのハードウェアである。例えば、NANデバイス106がカメラである場合、機能部303は撮像部であり、撮像処理を行う。あるいはNANデバイス106が印刷装置である場合、機能部303は印刷部であり、印刷処理を行う。また、例えば、NANデバイス106がプロジェクタである場合、機能部303は投影部であり、投影処理を行う。機能部303が処理するデータは、記憶部301に記憶されているデータであってもよいし、後述する通信部306を介して他のNANデバイスから受信したデータであってもよい。
入力部304は、ユーザからの各種操作の受付を行う。出力部305は、モニタ画面やスピーカーなどを介してユーザに対して各種出力を行う。ここで、出力部305による出力とは、画面上への表示の他、スピーカーによる音声出力や、振動出力などであってもよい。なお、タッチパネルを利用して入力部304と出力部305の出力先とを1つのモジュールで実現するようにしてもよい。また、入力部304や出力部305は、NANデバイス106と一体であってもよいし、別体であってもよい。なお、NANデバイス106は入力部304や出力部305を有していなくてもよい。
通信部306は、Wi−Fi NAN規格を含むIEEE802.11シリーズに準拠した無線通信の制御や、IP(Internet Protocol)通信の制御を行う。また、通信部306はアンテナ307を制御して、無線通信のための無線信号の送受信を行う。
NANデバイス106は通信部306を介して、画像データや文書データ、映像データ等のデータを他のNANデバイスと送受信する。通信部306はデータを送信する送信機能と、データを受信する受信機能とを有し、制御部302の指示に従いそれぞれを有効、無効に切り替えることが可能である。送信機能、受信機能はそれぞれ有効であるときは電力を消費し、無効であるときは電力を消費しない、もしくは有効であるときに比べて低消費電力で動作可能であることとする。
図4は、NANデバイス106が動作モードを選択する際に、記憶部301に記憶されたプログラムを制御部302が読み出し実行することで実現される処理を示すフローチャートである。
本フローチャートのフローは、NANデバイス106がWi−Fi NAN規格に準拠した無線通信を開始した場合に開始される。Wi−Fi NAN規格に準拠した無線通信は、例えばNANデバイス106の印刷サービスアプリケーションが起動されたことに基づいて開始される。その際、Wi−Fi NAN規格に準拠した無線通信は、アプリの起動開始でも起動中でも起動完了でも、あるいはアプリの起動指示に応答して開始するものでもよい。なお、ここで起動されるアプリケーションが提供するサービスは、印刷サービスに限定されない。あるいは、NANデバイス106のOS設定が変更されたことに基づいて、Wi−Fi NAN規格に準拠した無線通信が開始されてもよい。もしくは、NANデバイス106の電源が投入されたことに基づいてWi−Fi NAN規格に準拠した無線通信が開始してもよい。あるいは、本フローチャートは、NANデバイス106において特定のアプリケーションの起動や、OS設定の変更が行われたことに基づいて開始してもよい。もしくはNANデバイス106が何れかのNANクラスタに参加したことに基づいて開始してもよい。
NANデバイス106の制御部302は、複数のNANクラスタに参加して高速でサービス検索を行うか判定する(ステップS401)。本判定は、ユーザの指示に基づいて判定される。あるいはNANデバイス106の制御部302は、積極的に所望のサービスを高速で検索する必要がある場合はYesと判定し、サービスの検出より省電力であることが優先される場合はNoと判定を行う。例えば、NANデバイス106において何らかのサービスを利用するアプリケーションが起動している場合は、NANデバイス106の制御部302は当該サービスを複数のNANクラスタに参加して検索すると判定してもよい。一方、NANデバイス106の電源が投入されたことに基づいてWi−Fi NAN規格に準拠した無線通信が開始した場合は、省電力でサービス検索を行うため、NANデバイス106の制御部302はNoと判定してもよい。また、NANデバイス106のOS設定が変更され、Wi−Fi NAN規格に準拠した無線通信が開始した場合に、NANデバイス106の制御部302はNoと判定してもよい。例えばNANデバイス106のユーザが、入力部304より、NANデバイス106にインストールされている印刷サービスアプリケーションを起動することでWi−Fi NAN規格に準拠した無線通信を開始した場合を想定する。この場合、ユーザは印刷サービスを高速に検出したいということが予想される。そのため、NANデバイス106の制御部302は、ステップS401でYesと判定し、複数クラスタ参加モード(高速検索モード)を選択する。一方、NANデバイス106のユーザが、入力部304よりNANデバイス106のOS設定を変更したことでWi−Fi NAN規格に準拠した無線通信が開始した場合を想定する。この場合、ユーザは特定のサービスを高速に検出するよりも省電力でサービスを検索することを期待すると想定できる。そのため、NANデバイス106の制御部302は、ステップS401でNoと判定し、単一クラスタ参加モード(省電力検索モード)を選択する。なお、NANデバイス106のユーザがNANデバイス106の電源を投入したことに基づいてNANデバイス106がWi−Fi NAN規格に準拠した無線通信を開始した場合も同様に単一クラスタ参加モードが選択される。なお、この選択例は一例であり、どのようにWi−Fi NAN規格に準拠した通信を開始したかによって、どちらの検索モードを選択するかは、これに限定されない。
NANデバイス106の制御部302が複数のNANクラスタに参加してサービスを行うと判定すると(ステップS401のYes)、複数クラスタ参加モードが選択され(ステップS402)、本フローチャートのフローは終了する。一方、NANデバイス106の制御部302が複数のNANクラスタに参加してサービス検索を行わないと判定すると(ステップS401のNo)、単一クラスタ参加モードが選択され(ステップS403)、本フローチャートのフローは終了する。NANデバイス106が複数のNANクラスタに参加してサービス検索を行わないとは、NANデバイス106が単一のNANクラスタに参加してサービス検索を行うということである。
なお、単一クラスタ参加モードが選択された場合に、NANデバイス106が、参加しているNANクラスタよりCGが高いNANクラスタを検出しマージするとする。NANデバイス106が元々参加していたNANクラスタに対して新しく参加するNANクラスタに関する情報を報知する場合、NANデバイス106が二つのNANクラスタに一時的に参加した状態になる場合がある。この場合も、単一のNANクラスタに参加してサービス検索を行う単一クラスタ参加モードに含まれるとする。
図5は、NANクラスタを形成するNANデバイス106がサービス検索を行う際に、記憶部301に記憶されたプログラムを制御部302が読み出し実行することで実現される処理を示すフローチャートである。
本フローチャートは、NANデバイス106がWi−Fi NAN規格に準拠した無線通信を開始した場合に開始される。Wi−Fi NAN規格に準拠した無線通信は、例えばNANデバイス106の印刷サービスアプリケーションが起動されたことに基づいて開始される。なお、ここで起動されるアプリケーションが提供するサービスは、印刷サービスに限定されない。あるいは、NANデバイス106のOS設定が変更されたことに基づいて、Wi−Fi NAN規格に準拠した無線通信が開始されてもよい。もしくは、NANデバイス106の電源が投入されたことに基づいてWi−Fi NAN規格に準拠した無線通信が開始してもよい。なお、図4のフローチャートと開始のトリガーが同じだった場合、図4のフローチャートのフローが先に開始され、終了後に本フローチャートのフローが開始される。あるいは、NANデバイス106は図4および図5のフローチャートの処理を並行して実行してもよい。
まず、NANデバイス106の制御部302は、Wi−Fi NAN規格に準拠した無線通信が開始されると、NANクラスタを形成する(ステップS501)。そして、NANデバイス106の制御部302は、自装置が参加しているNANクラスタ内のNANデバイスに対してサービス検索を行う(ステップS502)。NANデバイス106は、Solicited型のサービス検索を行う。具体的には、NANデバイス106が参加しているNANクラスタに参加する他のNANデバイスに対して、所望のサービスを提供可能か問い合わせるSubscribeメッセージを送信する。Subscribeメッセージを受信した他のNANデバイスは、所望のサービスを提供可能な場合、NANデバイス106にPublishメッセージを送信する。
続いてNANデバイス106の制御部302は、所望のサービスを提供可能なNANデバイスを参加クラスタ内で検出したか判定する(ステップS503)。具体的には、Subscribeメッセージを送信してから所定の時間が経過するまでにPublishメッセージを受信したか判定する。制御部302は、所定の時間が経過するまでにPublishメッセージを受信した場合は所望のサービスを検出したと判定し、所定の時間が経過するまでにPublishメッセージを受信しなかった場合は、所望のサービスを検出できなかったと判定する。所望のサービスを検出した場合(ステップS503のYes)、NANデバイス106の制御部302は検出したサービスを実行するか判定する(ステップS504)。検出したサービスを実行しない場合(ステップS504のNo)、NANデバイス106の制御部302はステップS502の処理を行う。一方、検出したサービスを実行する場合(ステップS504のYes)、NANデバイス106の制御部302は当該サービスを実行し(ステップS511)、本フローチャートのフローを終了する。例えば、NANデバイス106の制御部302は、検出したサービスを提供するNANデバイスとの距離が遠い場合、検出したサービスを実行しないと判定してもよい。一方、検出したサービスを提供するNANデバイスとの距離が近い場合、NANデバイス106の制御部302は検出したサービスを実行すると判定してもよい。あるいは、NANデバイス106の制御部302はユーザ指示に基づいて判定してもよい。
なお、ステップS502で行われるサービス検索は、Solicited型ではなく、Unsolicited型であってもよい。その場合、NANデバイス106はステップS503で他のNANデバイスから送信されるPublishメッセージを待ち受ける。待ち受け開始から一定時間が経過すると、ステップS503の処理を行う。あるいは所定の数のサービスを検出した場合にステップS503の処理を行ってもよい。
また、ステップS502でNANデバイス106がUnsolicited型のサービス検索を行うか、あるいはSolicited型の検索を行うかは、図4の処理を行い選択された動作モードに基づいて決定してもよい。具体的には、NANデバイス106は単一クラスタ参加モードが選択された場合はUnsolicited型のサービス検索を行い、複数クラスタ参加モードが選択された場合はSolicited型のサービス検索を行うと決定されてもよい。あるいはユーザ指示に基づいて決定されてもよいし、NANデバイス106にプリセットされていてもよい。もしくは、起動しているアプリケーションによって決定されてもよいし、NANデバイス106がバッテリーで稼働している場合、当該バッテリーの残量に基づいて決定されてもよい。
NANデバイス106の動作モードとして単一クラスタ参加モードが選択されている場合はUnsolicited型のサービス検索を行うことで、より省電力にサービスを検索することができる。一方、NANデバイス106の動作モードとして複数クラスタ参加モードが選択されている場合はSolicited型のサービス検索を行うことで、所望のサービスの検出を優先することができる。
なお、NANデバイス106の制御部302はステップS502で複数のサービスを検索してもよい。この場合、ステップS503では、所望のサービスを全て検出した場合にYesと判定されてもよいし、所望のサービスのうち所定の数のサービスを検出した場合にYesと判定されてもよい。複数のサービスを検索する際、所定の時間サービスを検索した後、ユーザに検出したサービスのリストを表示してもよい。そして、ユーザが表示されたリストに基づいて検出したサービスを実行するか決定することで、ステップS504の処理を行ってもよい。
所望のサービスを検出しなかった場合(ステップS503のNo)、NANデバイス106の制御部302は、サービス検索を終了するか判定する(ステップS505)。当該判定は、ユーザ指示に基づいて判定される。あるいは、所定の回数サービス検索を行ったことに基づいてサービス検索を終了すると判定してもよいし、所定の時間サービス検索を行ったことに基づいてサービス検索を終了すると判定してもよい。NANデバイス106の制御部302は、サービス検索を終了すると判定すると(ステップS505のYes)、本フローチャートのフローを終了する。一方、サービス検索を終了しないと判定すると(ステップS505のNo)、NANデバイス106の制御部302は他のNANクラスタを検出したか判定する(ステップS506)。具体的には、NANデバイス106は自装置が参加するNANクラスタとは異なるNANクラスタに参加しているNANデバイスのNAN Discovery Beaconを受信したか判定する。なお、NANデバイス106は、NAN Discovery Beaconに代えて、あるいは加えて、NAN Synchronization Beaconを受信したか判定してもよい。なお、ステップS506において、NANデバイス106は、DW中に当該信号を受信する。しかしこれに限らず、DW外にも当該信号を受信してもよい。あるいは、本ステップより前のステップにおいて受信していてもよい。他のNANクラスタを検出しなかったと判定された場合(ステップS506のNo)、NANデバイス106の制御部302はステップS502の処理を行う。他のNANクラスタを検出したと判定された場合(ステップS506のYes)、NANデバイス106の制御部302は、検出したNANクラスタのCGを取得し、自装置が参加するNANクラスタのCGより高いか判定する(ステップS507)。
検出したNANクラスタのCGが、自装置が参加するNANクラスタより高い場合(ステップS507のYes)、NANデバイス106の制御部302は検出したNANクラスタにマージする(ステップS510)。具体的には、NANデバイス106は検出したCGが高いNANクラスタに参加し、元々参加していたNANクラスタから離脱する。
一方、検出したNANクラスタのCGが、自装置が参加するNANクラスタより低い場合(ステップS507のNo)、NANデバイス106の制御部302は、動作モードが複数クラスタ参加モードであるか判定する(ステップS508)。NANデバイス106の動作モードが複数クラスタ参加モードでない、つまり単一クラスタ参加モードであると判定された場合(ステップS508のNo)、制御部302はステップS502の処理を行う。一方、NANデバイス106の動作モードが複数クラスタ参加モードであると判定されると(ステップS508のYes)、NANデバイス106の制御部302は検出したNANクラスタへの参加処理を行う(ステップS509)。この場合、NANデバイス106は元々参加していたNANクラスタからは離脱しない。検出したNANクラスタへの参加処理(ステップS509)、またはマージ処理(ステップS510)を終えると、NANデバイス106の制御部302はステップS502の処理を行い、新たに参加したNANクラスタ内でサービス検索を行う。なお、複数のNANクラスタに参加している場合、新たに参加したNANクラスタに加えて、既に参加しているNANクラスタ内でサービス検索を行ってもよい。
なお、NANデバイス106の制御部302は、ステップS509において新たなNANクラスタに参加し、ステップS502でサービス検索を行った結果、所望のサービスを検出できなかった場合、新たに参加したNANクラスタから離脱しても良い。
また、本フローにおいて、NANデバイス106の制御部302はステップS501の処理を行った後、ステップS502からステップS505をスキップして、ステップS506の処理を行ってもよい。この場合ステップS509やステップS510の処理を行った後はステップS502の処理を行う。
なお、本フローチャートにおいて、NANデバイス106の制御部302は、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いか判定してから、自装置の動作モードが複数クラスタ参加モードであるか判定した。しかしこれに限らず、先に自装置の動作モードを判定してから、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いか判定してもよい。具体的には、ステップS506でYESと判定された場合、NANデバイス106の制御部302はステップS508の処理を行う。NANデバイス106の動作モードが複数クラスタ参加モードであると判定された場合(ステップS508のYes)、NANデバイス106の制御部302はステップS507の処理を行う。そして、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いと判定されると(ステップS507のYes)、NANデバイス106の制御部302はステップS510の処理を行う。一方、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高くないと判定されると(ステップS507のNo)、NANデバイス106の制御部302はステップS509の処理を行う。また、ステップS508において、NANデバイス106の動作モードが複数クラスタ参加モードではないと判定された場合(ステップS508のNo)、NANデバイス106の制御部302はステップS507の処理を行う。そして、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いと判定されると(ステップS507のYes)、NANデバイス106の制御部302はステップS510の処理を行う。一方、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高くないと判定された場合(ステップS507のNo)、NANデバイス106の制御部302はステップS502の処理を行う。
なお、本フローチャートにおいて、所定の時間サービス検索を行っても、所望のサービスを検出できない場合、サービス検索を終了してもよい。その場合、制御部302はNANデバイス106のユーザに、所望のサービスを検出できなかったことを通知してもよい。なお、所定の時間はNANデバイス106にプリセットされている。あるいは、NANデバイス106で起動しているアプリケーションによって決定されてもよいし、ユーザによって設定されてもよい。あるいは所定の時間ではなく所定の回数サービス検索を行ったことに基づいてサービス検索を終了してもよい。なお、本フローチャートのフローを実行中に、ユーザの指示に基づいて本フローチャートのフローを終了してもよい。
複数のNANクラスタに参加する場合、各NANクラスタのDWで通信部306を有効化する必要があり、その分消費電力が増える。単一クラスタ参加モードの場合は、ステップS508でステップS502に戻ることで、単一のNANクラスタのみに参加し、省電力性を優先することができる。
また、複数クラスタ参加モードの場合、自装置が参加するNANクラスタよりもCGが低いNANクラスタにも参加しサービス検索を行うことで、より所望のサービスを検出しやすくなる。CGの低いNANクラスタに参加しているNANデバイスであっても、NANクラスタ内のNANデバイス同士がデータの送受信を行っている場合は、CGの高いNANクラスタを検出してもマージしなくて良い。そのため、自装置が参加するNANクラスタより低いCGのNANクラスタに参加するNANデバイスが、必ず自装置が参加するNANクラスタにマージするとは限らない。よって、複数クラスタ参加モードの場合、自装置が参加するNANクラスタよりもCGが低いNANクラスタにも参加し、サービス検索を行うことで、所望のサービスを検出しやすくなる。
図6は、NANデバイス106が複数クラスタ参加モードによるサービス検索を行う際に、NANデバイス106が実行する処理を示すシーケンス図である。
まず、ユーザがNANデバイス106の印刷サービスアプリケーションを起動する(ステップS601)。なお、印刷サービス以外のサービスに関するアプリケーションが起動されてもよい。NANデバイス106は印刷サービスアプリケーションが起動されたことに基づいて、Wi−Fi NAN規格に準拠した無線通信を開始する。また、NANデバイス106は印刷サービスを利用するアプリケーションが起動されたことから、図4のフローチャートに基づき、動作モードを複数クラスタ参加モードとする。
NANデバイス106は、Wi−Fi NAN規格に準拠した無線通信を開始すると、NANクラスタを形成する。NANデバイス106は、自装置が形成したNANクラスタ内でサービス検索を行う。具体的には、NANデバイス106が形成したNANクラスタに参加しているNANデバイスに対してSolicited型のサービス検索を行う。NANデバイス106は、当該NANクラスタに参加しているNANデバイスに、印刷サービスを提供可能か問い合わせるSubscribeメッセージを送信する(ステップS602)。しかし、この時点では当該NANクラスタに他のNANデバイスが参加していない、あるいは当該NANクラスタに参加している他のNANデバイスは印刷サービスを提供できないので、NANデバイス106はPublishメッセージを受信しない。
その後、NANデバイス106は、NANクラスタ107に参加しているNANデバイス101からNAN Discovery Beaconを受信する(ステップS603)。NANデバイス106はNAN Discovery Beaconを受信することでNANクラスタ107を検出する(ステップS604)。あるいはNANデバイス106は、NAN Synchronization Beaconを受信したことによりNANクラスタ107を検出してもよい。NANデバイス106が形成したNANクラスタは所定の時間Master PreferenceとRandom Factorが0に設定されているため、当該NANクラスタのCGはNANクラスタ107のCGより低い。そのため、NANデバイス106はNANクラスタ107にマージする(ステップS605)。
あるいはNANデバイス106は、Wi−Fi NAN規格に準拠した無線通信を開始した場合に、NANクラスタを形成しなくてもよい。その場合、NANデバイス106はNAN Discovery Beaconを受信すると、当該信号を送信したNANデバイスが参加しているNANクラスタに参加する。なお、NAN Discovery Beaconではなく、NAN Synchronization Beaconであってもよい。また、複数のNANクラスタを検出した場合、NANデバイス106は最もCGの高いNANクラスタに参加する。あるいは最も早く検出したNANクラスタに参加してもよいし、最もNANデバイス106と距離が近いNANクラスタに参加してもよい。あるいはユーザ指示に基づいて参加するNANクラスタが決定されてもよい。
NANデバイス106は、NANクラスタ107に参加すると、NANクラスタ107内でサービス検索を行う(ステップS606)。具体的にはNANクラスタ107に参加しているNANデバイスに対してSolicited型のサービス検索を行う。NANデバイス106は、NANクラスタ107に参加しているNANデバイスに、印刷サービスを提供可能か問い合わせるSubscribeメッセージを送信する。しかし、NANクラスタ107に参加しているNANデバイスは、印刷サービスを提供できないので応答であるPublishメッセージを送信しない。
所望のサービスを提供するNANデバイスを参加するNANクラスタ内で検出できなかったNANデバイス106は、他のNANクラスタのNAN Discovery Beaconを待ち受ける。ここで、NANクラスタ108に参加しているNANデバイス103からNAN Discovery Beaconを受信する(ステップS607)。なお、NAN Discovery Beaconでなく、NAN Synchronization Beaconであってもよい。
NANデバイス106はNANデバイス103からNAN Discovery Beaconを受信したことにより、NANクラスタ108を検出する(ステップS608)。NANクラスタ108のCGは、NANクラスタ107のCGよりも低いため、NANデバイス106はNANクラスタ108にマージしない。NANデバイス106の動作モードは複数クラスタ参加モードのため、NANデバイス106はNANクラスタ108に参加する(ステップS609)。
NANクラスタ108に参加したNANデバイス106は、NANクラスタ108内でサービス検索を行う(ステップS610)。具体的には、NANクラスタ108に参加しているNANデバイスに対してSolicited型のサービス検索を行う。NANデバイス106は、NANクラスタ108に参加しているNANデバイスに、印刷サービスを提供可能か問い合わせるSubscribeメッセージを送信する。なお、NANクラスタ107に新たなNANデバイスが参加している可能性があるので、NANデバイス106は再度NANクラスタ107に参加するNANデバイスに対してサービス検索を行ってもよい。
いま、NANデバイス103が印刷サービスを提供可能であるので、NANデバイス103がNANデバイス106にPublishメッセージを送信する(ステップS611)。所望のサービスである印刷サービスを検出したNANデバイス106は、サービスを検出したことをユーザに通知する(ステップS612)。当該通知はNANデバイス106が有するモニタ画面に表示されることでユーザに通知される。サービス検索の結果、複数のNANデバイスからPublishメッセージを受信した場合は、Publishメッセージを送信したNANデバイスのリストを表示してもよい。この場合に、どのNANデバイスが提供するサービスを利用するかは、ユーザが決定してもよいし、NANデバイス106が自律的に決定してもよい。なお、ステップS612はスキップされてもよい。印刷サービスを検出したNANデバイス106は、当該印刷サービスの仕様に基づいて印刷サービスを開始する。
なお、ステップS602、ステップS606、ステップS610で行っているサービス検索は、Solicited型のサービス検索ではなく、Unsolicited型のサービス検索であってもよい。その場合NANデバイス106は、サービス検索を行うNANクラスタに参加しているNANデバイスから送信されるPublishメッセージを所定の時間待ち受けることで、所望のサービスを検索する。
また、ステップS602、ステップS606、ステップS610のサービス検索を行う際、複数のサービスを検索してもよい。そして、ステップS612でサービス検出の通知をユーザに行う際、検出したサービスをリストにしてNANデバイス106のモニタ画面に表示してもよい。この場合、どのサービスを利用するかは、ユーザによって決定されてもよいし、NANデバイス106によって自律的に決定されてもよい。
本シーケンスのNANデバイス106は、動作モードが複数クラスタ参加モードに設定されている場合は、自装置が参加しているNANクラスタよりCGが低いNANクラスタを検出した場合、検出したNANクラスタにも参加する。これにより、NANデバイス106は検出したNANクラスタ内のサービス検索も行えるようになるため、所望のサービスを提供可能なNANデバイスを検出しやすくなる。
図7は、NANデバイス106が単一クラスタ参加モードによるサービス検索を行う際に、NANデバイス106が実行する処理を示すシーケンス図である。
ユーザはNANデバイス106のOS設定を変更し、Wi−Fi NAN規格に準拠した無線通信を開始する(ステップS701)。NANデバイス106のOS設定が変更され、Wi−Fi NAN規格に準拠した無線通信が開始した場合、省電力にサービスを検出することを目的としてWi−Fi NAN規格に準拠した無線通信を開始したと考えられる。そのため、単一クラスタ参加モードが選択される。
NANデバイス106は、Wi−Fi NAN規格に準拠した無線通信を開始したことによりNANクラスタを形成し、形成したNANクラスタ内のサービス検索を行う(ステップS702)。本シーケンスにおいて、NANデバイス106はUnsolicited型のサービス検索を行うため、所定の時間publishメッセージの待ち受けを行う。なお、Solicited型のサービス検索を行ってもよい。ステップS703からステップS705は、図6のステップS603からステップS605と同様の処理を行う。
NANデバイス106は参加したNANクラスタ107内のサービス検索を行う(ステップS706)。NANデバイス106は、NANクラスタ107に参加しているNANデバイス101から送信されたPublishメッセージを受信する。
NANデバイス106は、受信したPublishメッセージに基づいて、サービス検出の通知をユーザに行う(ステップS707)。具体的には、検出したサービスをリストにしてNANデバイス106のモニタ画面に表示する。ユーザは表示されたリストから、所望のサービスを決定する。なお、サービスの決定はNANデバイス106が自律的に行ってもよい。その場合ステップS707はスキップしてもよい。
NANデバイス106はステップS706で受信したpublishメッセージに含まれるサービスに、所望のサービスがなかったため、サービスを開始しない。
NANデバイス106は他のNANクラスタに参加しているNANデバイスから送信されるNAN Discovery Beaconを待ち受ける。NANデバイス106は、NANクラスタ108に参加しているNANデバイス103からNAN Discovery Beaconを受信する(ステップS708)。これにより、NANデバイス106はNANクラスタ108を検出する(ステップS709)。なお、NAN Discovery Beaconではなく、NAN Synchronization Beaconであってもよい。
NANクラスタ108はNANクラスタ107よりCGが低いため、NANデバイス106はマージしない。いま、NANデバイス106の動作モードは単一クラスタ参加モードのため、NANデバイス106は新たに検出したNANクラスタ108には参加しない。
NANデバイス106は、単一クラスタ参加モードが選択されている場合は、自装置が参加しているNANクラスタよりCGが低いNANクラスタを検出した場合に、検出したNANクラスタに参加しない。複数のNANクラスタに参加すると、参加しているNANクラスタの夫々のDWにNANデバイス106の通信部306を有効化する必要があり、その分消費電力が増える。そのため、単一クラスタ参加モードの場合は、単一のNANクラスタにのみに参加することで、省電力性を優先することができる。
図8は、Wi−Fi NAN規格に準拠した無線通信を開始し、アプリケーションを起動したNANデバイス106がサービス検索を行う際に、NANデバイス106が実行する処理を示すシーケンス図である。
ステップS801からステップS805は、図7のステップS701からステップS705と同様である。この場合、動作モードは単一クラスタ参加モードが選択されている。
その後、ユーザは、NANデバイス106の印刷サービスアプリケーションを起動する(ステップS806)。印刷サービスアプリケーションが起動したことから、再度動作モードの選択が行われ、複数クラスタ参加モードが選択される。ステップS807からステップS813は、夫々図6のステップS606からステップ612と同様である。
このように、NANデバイス106において一度動作モードが選択された後も、例えばアプリケーションの起動に基づいて動作モードを再度選択してもよい。あるいは、NANデバイス106が複数のNANクラスタに参加している場合、NANデバイス106は動作モードを単一クラスタ参加モードに切り替えてもよい。なお、NANデバイス106の動作モードが複数クラスタ参加モードから単一クラスタ参加モードに切り替わった場合、NANデバイス106は自装置が参加するNANクラスタのCGよりCGの低いNANクラスタから離脱してもよい。
NANデバイス106の動作モードを必要に応じて切り替えることで、NANデバイス106は最適な動作モードでサービスの検索を行うことができる。
図9は、NANデバイス106がサービス検索を行う際に、記憶部301に記憶されたプログラムを制御部302が読み出し実行することで実現される処理を示すフローチャートである。
本フローチャートのフローは、NANデバイス106がWi−Fi NAN規格に準拠した無線通信を開始した場合に開始される。Wi−Fi NAN規格に準拠した無線通信は、例えばNANデバイス106の印刷サービスアプリケーションが起動されたことに基づいて開始される。なお、ここで起動されるアプリケーションが提供するサービスは、印刷サービスに限定されない。あるいは、NANデバイス106のOS設定が変更されたことに基づいて、Wi−Fi NAN規格に準拠した無線通信が開始されてもよい。もしくは、NANデバイス106の電源が投入されたことに基づいてWi−Fi NAN規格に準拠した無線通信が開始してもよい。なお、図4のフローチャートのフローと開始のトリガーが同じだった場合、図4のフローチャートのフローが先に開始され、終了後に本フローチャートのフローが開始される。あるいは、NANデバイス106は図4および図9のフローチャートの処理を並行して実行してもよい。
NANデバイス106の制御部302は、Wi−Fi NAN規格に準拠した無線通信を開始すると、NANクラスタを検出したか判定する(ステップS901)。なお、本ステップの処理はステップS506と同様である。本フローチャートのNANデバイス106は、Wi−Fi NAN規格に準拠した無線通信を開始してもNANクラスタを形成しない。また、本フローチャートのNANデバイス106はNANクラスタに参加している他のNANデバイスから送信されるNAN Discovery Beaconを待ち受ける。またNAN Synchronization Beaconを待ち受けてもよい。
クラスタを検出しなかったと判定すると(ステップS901のNo)、NANデバイス106の制御部302はステップS901の処理を行う。一方、クラスタを検出したと判定すると(ステップS901のYes)、NANデバイス106の制御部302は、ステップS901で検出したNANクラスタに参加する(ステップS902)。なお、ステップS901で複数のクラスタを検出した場合、NANデバイス106は最もCGの高いNANクラスタに参加する。あるいは最も早く検出したNANクラスタに参加してもよいし、最もNANデバイス106と距離が近いNANクラスタに参加してもよい。あるいはユーザ指示に基づいて参加するNANクラスタが決定されてもよい。NANデバイス106の制御部302は、ステップS902の処理を行うと、図5のステップS502以降の処理を行う。
<実施形態2>
本実施形態では、他のNANクラスタからNAN Discovery Beacon、あるいはNAN Synchronization Beaconを受信した際に、複数のNANクラスタを検出した場合の処理について説明する。
本実施形態に係るNANデバイスが参加するネットワークの構成は図1と同様である。また、本実施形態に係るNANデバイスの機能構成は図2と同様である。本実施形態に係るNANデバイスのハードウェア構成は図3と同様である。また、本実施形態に係るNANデバイスが動作モードを選択する際に実行する処理を示すフローチャートは図4と同様である。
図10は、NANクラスタを形成するNANデバイス106が複数のクラスタを検出し、サービスを検索する際に、記憶部301に記憶されたプログラムを制御部302が読み出し実行することで実現される処理を示すフローチャートである。
本フローチャートのフローは、NANデバイス106がWi−Fi NAN規格に準拠した無線通信を開始した場合に開始される。Wi−Fi NAN規格に準拠した無線通信は、例えばNANデバイス106の印刷サービスアプリケーションが起動されたことに基づいて開始される。なお、ここで起動されるアプリケーションが提供するサービスは、印刷サービスに限定されない。あるいは、NANデバイス106のOS設定が変更されたことに基づいて、Wi−Fi NAN規格に準拠した無線通信が開始されてもよい。もしくは、NANデバイス106の電源が投入されたことに基づいてWi−Fi NAN規格に準拠した無線通信が開始してもよい。なお、図4のフローチャートのフローと開始のトリガーが同じだった場合、図4のフローチャートのフローが先に開始され、終了後に本フローチャートのフローが開始される。あるいは、NANデバイス106は図4および図10のフローチャートの処理を並行して実行してもよい。
ステップS1001からステップS1005の処理は、夫々図5のステップS501からステップS505の処理と同様である。また、ステップS1014の処理は、図5のステップS511の処理と同様である。なお、ステップS1004において、後述のステップS1007で複数のNANクラスタを検出し、後述のステップS1012あるいはステップS1013の処理を行っていない未処理のNANクラスタがある場合、Noと判定してもよい。
ステップS1005においてサービス検索を終了しないと判定された場合(ステップS1005のNo)、NANデバイス106の制御部302は未処理のNANクラスタがあるか判定する(ステップS1006)。未処理のNANクラスタとは、後述のステップS1007で検出したNANクラスタの内、後述のステップS1012やステップS1013の処理を行っていないNANクラスタになる。未処理のNANクラスタがあると判定されると(ステップS1006のYes)、NANデバイス106の制御部302はステップS1009の処理を行う。一方、未処理のNANクラスタがないと判定されると(ステップS1006のNo)、NANデバイス106の制御部302はステップS1007の処理を行う。なお、複数のNANクラスタを検出していない場合、NANデバイス106の制御部302はステップS1006をNoと判定する。あるいはステップS1006をスキップしてもよい。
NANデバイス106の制御部302はNANクラスタを検出したか判定する(ステップS1007)。なお、後述のステップS1012の処理を行ったNANクラスタを再度検出した場合、ステップS1007はNoと判定してもよい。NANクラスタを検出しなかったと判定すると(ステップS1007のNo)、NANデバイス106の制御部302はステップS1002の処理を行う。NANクラスタを検出したと判定すると(ステップS1007のYes)、NANデバイス106の制御部302は複数のNANクラスタを検出したか判定する(ステップS1008)。
複数のNANクラスタを検出していない場合(ステップS1008のNo)、つまり単一のNANクラスタを検出した場合、NANデバイス106の制御部302はステップS1010の処理を実行する。一方、複数のNANクラスタを検出した場合(ステップS1008のYes)、ステップS1010以降の処理の対象となるNANクラスタを決定する(ステップS1009)。対象となるNANクラスタは、CGの高い順に決定される。なお、対象となるNANクラスタは、NANデバイス106が検出した順に決定されてもよいし、NANデバイス106との距離が近い順に決定されてもよい。あるいはユーザ指示に基づいて決定されてもよい。また、対象となるNANクラスタを一つ以上決定してもよい。ステップS1010からステップS1013の処理は、夫々図5のステップS507からステップS510と同様である。なお、ステップS1011でNANデバイス106の動作モードが複数クラスタ参加モードではないと判定されると(ステップS1011のNo)、NANデバイス106の制御部302はステップS1002の処理を行う。
また、NANデバイス106の制御部302は、ステップS1012およびステップS1013の処理を行うと、ステップS1002の処理を行う。なお、ステップS1009で対象クラスタを複数決定した場合、NANデバイス106の制御部302は対象クラスタとして決定した全てのNANクラスタに対してステップS1012もしくはステップS1013の何れかの処理を行ってもよい。そしてNANデバイス106の制御部302は全ての対象クラスタにステップS1012もしくはステップS1013の処理を行ってからステップS1002の処理を行うように制御してもよい。
なお、本フローチャートにおいて、所定の時間サービス検索を行っても、所望のサービスを検出できない場合、サービス検索を終了してもよい。その場合、制御部302はNANデバイス106のユーザに、所望のサービスを検出できなかったことを通知してもよい。なお、所定の時間は、NANデバイス106にプリセットされている。あるいは、NANデバイス106で起動しているアプリケーションによって決定されてもよいし、ユーザによって設定されてもよい。なお、本フローチャートのフローを実行中に、ユーザの指示に基づいて本フローチャートのフローを終了してもよい。
なお、本フローチャートにおいて、NANデバイス106の制御部302は、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いか判定してから、自装置の動作モードが複数クラスタ参加モードであるか判定した。しかしこれに限らず、先に自装置の動作モードを判定してから、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いか判定してもよい。具体的には、ステップS1009の処理を行ったNANデバイス106の制御部302は、ステップS1011の処理を行う。NANデバイス106の動作モードが複数クラスタ参加モードであると判定された場合(ステップS1011のYes)、NANデバイス106の制御部302はステップS1010の処理を行う。そして、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いと判定されると(ステップS1010のYes)、NANデバイス106の制御部302はステップS1013の処理を行う。一方、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高くないと判定されると(ステップS1010のNo)、NANデバイス106の制御部302はステップS1012の処理を行う。また、ステップS1011において、NANデバイス106の動作モードが複数クラスタ参加モードではないと判定された場合(ステップS1011のNo)、NANデバイス106の制御部302はステップS1010の処理を行う。そして、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高いと判定されると(ステップS1010のYes)、NANデバイス106の制御部302はステップS1013の処理を行う。一方、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高くないと判定された場合(ステップS1010のNo)、NANデバイス106の制御部302はステップS1002の処理を行う。
図11は、複数クラスタを検出したNANデバイス106がサービスを開始する際に、NANデバイス106が実行する処理を示すシーケンス図である。
NANデバイス109はNANクラスタ110に参加しているNANデバイスであって、印刷サービスを提供可能な通信装置である。NANクラスタ110のCGはNANクラスタ107よりも低い。
ステップS1101からS1106の処理は、図6のステップS601からステップS606と同様である。ステップS1106でNANデバイスはNANクラスタ107に参加しているNANデバイスに、印刷サービスを提供可能か問い合わせるSubscribeメッセージを送信した。しかし、NANクラスタ107に参加しているNANデバイスは印刷サービスを提供できないので、応答としてPublishメッセージを送信しない。
所望のサービスを提供するNANデバイスを同じNANクラスタ内で検出できなかったNANデバイス106は、他のNANクラスタのNAN Discovery Beaconを待ち受ける。あるいはNAN Synchronization Beaconを待ち受けてもよい。
ここで、NANクラスタ108に参加しているNANデバイス103からNAN Discovery Beaconを受信する(ステップS1107)。NANデバイス106はNANデバイス103からNAN Discovery Beaconを受信したことにより、NANクラスタ108を検出する(ステップS1108)。あるいはNAN Synchronization Beaconを受信したことによりNANクラスタ108を検出してもよい。NANクラスタ108のCGは、NANクラスタ107のCGよりも低いため、NANデバイス106はNANクラスタ108にマージしない。
また、NANクラスタ110に参加しているNANデバイス109からNAN Discovery Beaconを受信する(ステップS1109)。あるいはNAN Synchronization Beaconでもよい。NANデバイス106はNANデバイス109からNAN Discovery Beaconを受信したことにより、NANクラスタ110を検出する(ステップS1110)。あるいはNAN Synchronization Beaconでもよい。NANクラスタ110のCGは、NANクラスタ107のCGよりも低いため、NANデバイス106はNANクラスタ110にマージしない。
NANデバイス106は複数のNANクラスタを検出したので、対象となるNANクラスタを決定する。検出したNANクラスタ108とNANクラスタ110のCGを比較すると、NANクラスタ108のCGの方が高い。そのため、まずNANクラスタ108を対象となるNANクラスタとして決定する。
NANデバイス106の動作モードは複数クラスタ参加モードのため、NANデバイス106はNANクラスタ108に参加する(ステップS1111)。NANクラスタ108に参加したNANデバイス106は、NANクラスタ108内でサービス検索を行う(ステップS1112)。具体的には、NANクラスタ108に参加しているNANデバイスに対してSolicited型のサービス検索を行う。NANデバイス106は、NANクラスタ108に参加しているNANデバイスに、印刷サービスを提供可能か問い合わせるSubscribeメッセージを送信する。なお、NANクラスタ107に新たなNANデバイスが参加している可能性があるので、NANデバイス106は再度NANクラスタ107に参加するNANデバイスに対してサービス検索を行ってもよい。いま、NANデバイス103が印刷サービスを提供可能であるので、NANデバイス103がNANデバイス106にPublishメッセージを送信する(ステップS1113)。
NANデバイス106は所望のサービスを検出したが、未処理のNANクラスタの全てに対してサービス検索を行っていないので、サービス検索を続行する。
NANデバイス106は未処理クラスタであるNANクラスタ110を次の対象となるNANクラスタとして決定する。
NANデバイス106の動作モードは複数クラスタ参加モードのため、NANデバイス106はNANクラスタ110に参加する(ステップS1114)。NANクラスタ110に参加したNANデバイス106は、NANクラスタ110内でサービス検索を行う(ステップS1115)。具体的には、NANクラスタ110に参加しているNANデバイスに対してSolicited型のサービス検索を行う。NANデバイス106は、NANクラスタ110に参加しているNANデバイスに、印刷サービスを提供可能か問い合わせるSubscribeメッセージを送信する。なお、NANクラスタ107に新たなNANデバイスが参加している可能性があるので、NANデバイス106は再度NANクラスタ107に参加するNANデバイスに対してサービス検索を行ってもよい。いま、NANデバイス109が印刷サービスを提供可能であるので、NANデバイス109がNANデバイス106にPublishメッセージを送信する(ステップS1116)。
NANデバイス106は、ステップS1117において、検出した二つの印刷サービスについてユーザに通知する。なお、サービス検出の通知はステップS1113において印刷サービスを検出した際に一度通知し、ステップS1116で印刷サービスを検出した際に再度通知してもよい。検出した複数のサービスをすべてユーザに通知することにより、ユーザは複数のサービスから、利用したいサービスを選択することが可能になる。
図12は、NANデバイス106がサービスを検索し、複数クラスタを検出した際に、記憶部301に記憶されたプログラムを制御部302が読み出し実行することで実現される処理を示すフローチャートである。本フローチャートのフローは、NANデバイス106がWi−Fi NAN規格に準拠した無線通信を開始した場合に開始される。Wi−Fi NAN規格に準拠した無線通信は、例えばNANデバイス106の印刷サービスアプリケーションが起動されたことに基づいて開始される。なお、ここで起動されるアプリケーションが提供するサービスは、印刷サービスに限定されない。あるいは、NANデバイス106のOS設定が変更されたことに基づいて、Wi−Fi NAN規格に準拠した無線通信が開始されてもよい。もしくは、NANデバイス106の電源が投入されたことに基づいてWi−Fi NAN規格に準拠した無線通信が開始してもよい。なお、図4のフローチャートのフローと開始のトリガーが同じだった場合、図4のフローチャートのフローが先に開始され、終了後に本フローチャートのフローが開始される。あるいは、NANデバイス106は図4および図12のフローチャートの処理を並行して実行してもよい。
NANデバイス106の制御部302は、Wi−Fi NAN規格に準拠した無線通信を開始すると、NANクラスタを検出したか判定する(ステップS1201)。なお、本ステップの処理は図5のステップS506と同様である。本フローチャートのNANデバイス106は、Wi−Fi NAN規格に準拠した無線通信を開始してもNANクラスタを形成しない。また、本フローチャートのNANデバイス106はNANクラスタに参加している他のNANデバイスから送信されるNAN Discovery Beaconを待ち受ける。なおNAN Synchronization Beaconを待ち受けてもよい。
クラスタを検出しなかったと判定すると(ステップS1201のNo)、NANデバイス106の制御部302はステップS1201の処理を行う。一方、NANクラスタを検出したと判定すると(ステップS1201のYes)、NANデバイス106の制御部302は、複数のNANクラスタを検出したか判定する(ステップS1202)。複数のNANクラスタを検出していない場合(ステップS1202のNo)、つまり単一のNANクラスタを検出した場合、NANデバイス106の制御部302はステップS1204の処理を実行する。一方、複数のNANクラスタを検出した場合(ステップS1202のYes)、NANデバイス106の制御部302はステップS1201で検出したNANクラスタから参加の対象となるNANクラスタを決定する(ステップS1203)。対象となるNANクラスタは、ステップS1201で検出したNANクラスタの内、最もCGが高いNANクラスタとなる。あるいは、最も早く検出されたNANクラスタであってもよいし、最も距離が近いNANクラスタであってもよい。あるいはユーザ指示に基づいて対象となるNANクラスタを決定してもよい。NANデバイス106の制御部は、ステップS1203で対象として決定したNANクラスタに参加する(ステップS1204)。あるいは、ステップS1201で単一のNANクラスタを検出した場合、当該NANクラスタに参加する。NANデバイス106の制御部302は、ステップS1204の処理を実行すると、図10のステップS1002以降の処理を実行する。
本実施形態では、複数のNANクラスタを検出した場合、NANデバイス106は対象クラスタを決定し、対象クラスタに参加もしくはマージすると参加クラスタ内でサービス検索を行った。しかし、NANデバイス106は検出した全てのNANクラスタに参加、もしくはマージしてから参加クラスタ内でサービス検索を行ってもよい。
なお、実施形態1の図9および実施形態2の図12において、NANデバイス106はWi−Fi NAN規格に準拠した無線通信を開始した際にNANクラスタを形成しない。しかし、これに限らず、ステップS901およびステップS1201で所定の時間、NANクラスタを検出できない場合、NANデバイス106はNANクラスタを形成してもよい。この場合、図9のフローのNANデバイス106は、図5のフローを開始する。また、図12のフローのNANデバイス106は、図10のフローを開始する。
なお、実施形態1および2において、NANデバイス106は複数クラスタ参加モードの場合、新たにNANクラスタに参加しても、既に参加しているNANクラスタから離脱しなかった。しかしNANデバイス106は複数クラスタ参加モードで動作しており、所定の数以上のNANクラスタに参加している場合を想定する。この場合、自装置が参加しているNANクラスタよりCGが低い新たなNANクラスタに参加する際に、既に参加しているNANクラスタの何れか一つから離脱してもよい。
あるいは、実施形態1および2において、NANデバイス106は複数クラスタ参加モードで動作している場合であっても、所定の数以上のNANクラスタに参加した場合、参加するNANクラスタの数を増やさなくてもよい。具体的には、NANデバイス106が所定の数以上のNANクラスタに参加し、新たなNANクラスタを検出した場合、検出したNANクラスタのCGが、NANデバイス106が参加しているNANクラスタの何れかのCGより高い場合はマージする。一方、検出したNANクラスタのCGが、NANデバイス106が参加している全てのNANクラスタCGより低い場合は参加処理を行わない。
なお、実施形態1および実施形態2において、NANデバイス106はDW中にPublishメッセージやSubscribeメッセージの送受信を行うとしたが、DW外にこれらのメッセージの送受信を行ってもよい。
なお、実施形態1および実施形態2において、NANデバイス106は、検出したNANクラスタのCGが、自装置が参加するNANクラスタのCGより高い場合、検出したNANクラスタにマージした。NANデバイス106は検出したNANクラスタにマージする場合、検出したNANクラスタに参加し、元のNANクラスタからは離脱した。しかし、NANデバイス106の動作モードが複数クラスタ参加モードである場合、NANデバイス106は検出したNANクラスタにマージする際に、元のNANクラスタから離脱しなくてもよい。
また、実施形態1および実施形態2において、NANデバイス106が複数クラスタ参加モードで動作し複数のNANクラスタに参加しており、夫々のNANクラスタにおいて所定の条件が満たされた場合、NANデバイス106の役割が変更されてもよい。例えばあるNANクラスタにおけるNANデバイス106の役割がNon−Master Non−Sync状態であって、所定の条件が満たされた場合、NANデバイス106の役割はMasterに変更されてよい。あるいは、Non−Master Sync状態に変更されてもよい。また、NANデバイス106の役割がMasterである場合や、Non−Master Sync状態である場合も、同様にNANデバイス106の役割が変更されてもよい。なお、NANデバイス106はあるNANクラスタにおける役割がNon−Master Non−Sync状態からMasterに変更された場合、当該NANクラスタのDWにおいてNAN Synchronization Beaconを送信する。なお、NANデバイス106の役割がNon−Master Sync状態に変更された場合も同様である。
なお、実施形態1および実施形態2において、NANデバイス106がNANクラスタを検出した場合、検出したNANクラスタのCGと、NANデバイス106の動作モードとに基づいて、検出したNANクラスタにおいてサービス検索を行うか判定した。しかし、これに限らず、NANデバイス106が複数クラスタ参加モードで動作している場合は、NANデバイス106は検出したNANクラスタのCGを考慮せず、検出したNANクラスタにおいてサービス検索を行ってもよい。
また、実施形態1および実施形態2ではWi−Fi NAN規格に準拠した通信を行う通信装置を用いて各実施形態を説明したが、通信装置が準拠する通信規格はWi−Fi NAN規格に限らない。当該通信装置は、Wi−Fi NAN規格以外の他のIEEE802.11シリーズ規格に準拠したネットワーク(以下、NW)を複数検出した場合におけるサービスの検索方法を選択できる通信装置であってもよい。なお、当該通信装置が検出するNWは、BluetoothやWireless USBなどの無線通信規格に準拠したNWであってもよい。
具体的には、例えば通信装置が所定の信号の送受信を所定の期間に同期して行うNW1と、NW1とは異なる期間に所定の信号の送受信を同期して行うNW2を検出したと想定する。また、通信装置は参加したNWにおいて、当該NWに参加している他の通信装置が提供するサービスを検索できるものとする。通信装置が検出したNWにおいてサービス検索を行う場合、通信装置は単一のNWにおいてサービスを検索する単一ネットワーク参加モードと、複数のNWにおいてサービスを検索する複数ネットワーク参加モードを選択できる。通信装置が複数NW参加モードで動作している場合、通信装置はNW1およびNW2を検出すると、両方のNWにおいてサービス検索を行う。一方、通信装置が単一NW参加モードで動作している場合、通信装置は検出したNW1およびNW2の夫々に設定されている所定の値を比較し、その結果に基づいてNW1あるいはNW2の何れか一つにおいてサービス検索を行う。
なお、参加する通信装置が所定の信号の送受信を所定の期間に同期して行うNWにおいて、NWに参加している通信装置の夫々に、当該所定の信号を送信する役割と、当該所定の信号を送信しない役割のいずれかが設定されていると想定する。また、通信装置の役割は所定の条件が満たされると変更されるとする。通信装置が複数NW参加モードで動作し、複数のNWに参加している場合、通信装置は夫々のNWにおいて所定の条件が満たされると役割を変更してもよい。
なお、図4、図5、図9、図10、図12に示したNANデバイス106のフローチャートの少なくとも一部または全部をハードウェアにより実現してもよい。ハードウェアにより実現する場合、例えば、所定のコンパイラを用いることで、各ステップを実現するためのプログラムからFPGA上に専用回路を生成し、これを利用すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウェアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。図6、図7、図8、図11に示したシーケンス図においても同様である。
また、図4、図5、図9、図10、図12に示したフローチャートや、図6、図7、図8、図11に示したシーケンス図の各ステップを不図示の複数のCPUもしくは装置で分散して行うようにしてもよい。
以上、実施形態を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体(記憶媒体)等としての実施態様をとることが可能である。具体的には、複数の機器(例えば、ホストコンピュータ、インタフェイス機器、撮像装置、webアプリケーション等)から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。