以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
[第1の実施形態]
図1は、第1の実施形態における無線LANの構成の一例を示す図である。図1に示すように、無線通信機器AはIEEE802.11準拠の無線通信機能104を有するデジタルカメラ100である。無線通信機器Aは、ユーザが通信パラメータ設定起動ボタン102を押下することにより通信パラメータ設定モードのネットワークを構成することが可能である。また、無線通信機器BはIEEE802.11準拠の無線通信機能105を有するプリンタ101である。この無線通信機器Bは、機器Aと同様に、ユーザが通信パラメータ設定起動ボタン103を押下することにより通信パラメータ設定モードのネットワークを構成することが可能である。
次に、図2及び図3を用いて、通信パラメータ設定制御機能を有する機器A及び機器Bの構成及び動作について説明する。
図2は、デジタルカメラ100(機器A)の構成の一例を示す概略ブロック図である。図2において、201はデジタルカメラ100を制御する制御部、202は画像処理部、203は制御命令(プログラム)や制御データが格納されているROM、204はRAMである。RAM204には、通信パラメータ設定用ネットワークを形成するための設定用通信パラメータが予め記憶されている。205は無線通信処理部であり、無線LANにおける通信制御を行う。206はアンテナ、207はアンテナ制御部である。
208は撮像部であり、209のCCDから入力された画素信号を取り込む。210は撮像画像や設定情報を格納する記録メディアカードの制御を行うカードインタフェース、211は表示部である。212は操作部であり、撮影、再生、設定などを指示するボタンを含む。213は二次電池を含む電源部である。214は無線以外の通信インタフェース部であり、例えばUSBやIEEE1394などの有線インタフェースである。215は通信パラメータ設定ボタンであり、通信パラメータ設定起動を行う。
図3は、プリンタ101(機器B)の構成の一例を示す概略ブロック図である。図3において、301はプリンタ101を制御する制御部、302は画像処理部、303は制御命令(プログラム)や制御データが格納されているROM、304はRAM、305は電源部である。RAM304には、通信パラメータ設定用ネットワークを形成するための設定用通信パラメータが予め記憶されている。306は無線以外の通信インタフェース部であり、例えばUSBやIEEE1394などの有線インタフェースである。
307はプリンタ用紙の給紙排紙を行う給紙排紙部である。308はプリンタエンジンであり、電子写真方式やインクジェット方式などの印字制御を行う。309は画像が格納された記録メディアカードの制御を行うカードインタフェース、310は表示部である。311は操作部であり、メニュー、設定などのボタンを含む。312は無線通信処理部であり、無線LANにおける通信制御を行う。313はアンテナ、314はアンテナ制御部である。315は通信パラメータ設定ボタンであり、通信パラメータ設定起動を行う。
次に、図4を用いて、IEEE802.11準拠の無線LANのアドホックネットワークにおける機器Aと機器Bとの間で無線パラメータのデータを設定する処理について説明する。
図4は、第1の実施形態における無線パラメータ設定シーケンスを示す図である。以下では、図4に示すように全体の流れを6つのステップに分け、それぞれのステップを順に説明する。
<通信パラメータ設定ネットワーク形成ステップ401>
ここでは、機器Aと機器Bの間で通信パラメータ設定用ネットワークをアドホック接続によって形成する処理を行う。
<マスター機器決定ステップ402>
ここでは、機器Aと機器Bの間でどちらの機器が通信パラメータ設定用ネットワークのマスター機器となり、どちらの機器がスレーブ機器となるかを決定する処理と、各機器は相手が同一ネットワーク上に存在するか否かの監視処理を継続的に行う。
<機器能力収集ステップ403>
ここでは、ステップ402で決定されたマスター機器が同一ネットワーク上に存在するスレーブ機器が所有している機器能力属性値をスレーブ機器に問い合わせて収集する処理を行う。
<通信パラメータ転送方向決定ステップ404>
ここでは、ステップ403でマスター機器が収集した各スレーブ機器の機器能力属性値と自マスター機器の機器能力属性値とを比較し、どの機器からどの機器へ通信パラメータの転送を行うかをマスター機器が決定する。また、各スレーブ機器に対して通信パラメータの転送を行う上で必要となる、あて先や発信元情報などの指示を転送する。
<通信パラメータ転送ステップ405>
ここでは、ステップ404で決定された通信パラメータの転送方向に従って実際に通信パラメータ提供能力を持つ機器から通信パラメータ受理能力を持つ機器へ通信パラメータを転送する。
<通信パラメータ設定ネットワーク終了ステップ406>
ここでは、ステップ405の転送終了をきっかけに通信パラメータ設定ネットワークを終了するために必要となる処理を行う。尚、通信パラメータ設定ネットワーク終了ステップ406が終了した後は、通信パラメータ転送ステップ405において転送された通信パラメータを用いて新たなネットワークを構築することになる。
次に、上述した6つの通信パラメータ設定シーケンスで示す各ステップについて詳細に説明する。
まず、デジタルカメラ100とプリンタ101との間の通信パラメータ設定ネットワーク形成ステップ401について説明する。デジタルカメラ100(機器A)の通信パラメータ設定起動ボタン215と、プリンタ101(機器B)の通信パラメータ設定起動ボタン315とが押下される。これにより、デジタルカメラ100とプリンタ101とで構成される通信パラメータ設定用アドホックネットワークを形成する。このネットワークは、RAM204、304に記憶されている設定用通信パラメータを用いて形成する。
尚、以下に説明する各ステップの処理は、全てステップ401で形成したネットワーク上で通信を行うことにより遂行されるものである。
次に、デジタルカメラ100とプリンタ101との間で行われるマスター機器決定ステップ402について、その詳細を説明する。
まず、マスター機器決定ステップ402において、機器A及び機器B間で送受信されるメッセージのフォーマットについて、図5を参照しながら説明する。
図5に示すように、マスター機器決定ステップ402において、各機器間で送受信するメッセージには、少なくとも送受信元を示すアドレス情報(宛先MACアドレス501、送信元MACアドレス502)が含まれる。更に、通信パラメータ設定制御機能における識別子(ID)を示すID情報503と、マスター機器決定ステップ402における各機器の存在時間(Expire Time)を示す存在時間情報とが含まれる。尚、存在時間情報の値が“0”である場合は、メッセージを送信した機器がネットワークから即座に離脱することを示す。
次に、図6を参照しながらネットワーク参加時に各機器が行うマスター機器とスレーブ機器の決定処理手順について説明する。
図6は、ネットワーク参加時に各機器が行うマスター機器とスレーブ機器の決定処理を示すフローチャートである。
マスター機器決定ステップ402を開始後、ステップS601へ進み、機器はランダムタイマT1を起動する。このタイマT1により、この後の処理で行われる問合せメッセージの送信をランダム時間分だけ遅らせることで、複数の機器が、同時にマスター機器決定ステップ402を開始した場合に、メッセージの一斉送信によるメッセージの衝突を回避することができる。
次に、ステップS602において、機器はマスター機器の存在を通知するマスター宣言メッセージの受信を確認する。ここで、マスター宣言メッセージを受信した場合は、ネットワーク中に既にマスター機器が存在すると判断し、後述するステップS608へ進む。また、マスター宣言メッセージを受信していない場合はステップS603へ進み、タイマT1のタイムアップを確認する。タイマT1がタイムアップしていない場合はステップS602に戻り、マスター宣言メッセージを受信するか、或いはタイマT1がタイムアップするまで、上述した処理を繰り返す。この処理により、メッセージ衝突回避を目的としたランダム待ち時間中にマスター宣言メッセージを受信した場合でも、速やかにステップS608で説明するマスター宣言受信時の処理を行うことが可能となる。
また、ステップS603で、タイマT1がタイムアップした場合はステップS604へ進み、機器はマスター機器の存在を問い合わせるマスター問合せメッセージをネットワークへブロードキャスト送信し、マスター問合せ送信タイマT2を起動する。このマスター問合せ送信タイマT2は、マスター問合せメッセージを一定間隔で送信するために用いられる。
次に、ステップS605において、機器はマスター宣言メッセージの受信を確認し、マスター宣言メッセージを受信した場合は、ネットワーク中に既にマスター機器が存在することを認識し、後述するステップS608へ進む。また、マスター宣言メッセージを受信していない場合はステップS606へ進み、タイマT2のタイムアップを確認する。タイマT2がタイムアップしていない場合はステップS605に戻り、マスター宣言メッセージを受信するか、或いはタイマT2がタイムアップするまで上述の処理を繰り返す。
また、ステップS606で、タイマT2がタイムアップした場合はステップS607へ進み、機器はマスター問合せメッセージを所定回数送信したか否かを確認する。所定回数送信していない場合はステップS604に戻り、マスター問合せメッセージの送信が所定回数完了するか、或いはマスター宣言メッセージを受信するまで、ステップS604〜S607の処理を繰り返す。
一方、機器がマスター宣言メッセージを受信した場合はステップS608へ進み、受信したメッセージよりマスター機器のMACアドレス501を取得し、RAMに記憶しているマスター機器管理テーブル(図19参照)に取得したMACアドレスを登録する。また、受信したメッセージの存在時間情報504よりマスター機器の存在時間を取得し、マスター機器存在タイマT7に取得した存在時間をセットしてタイマT7を起動する。タイマT7は、マスター機器がネットワークに存在している時間を確認するために用いられ、タイマT7がタイムアップした場合、機器はマスター機器がネットワークから離脱したと判断する。
ステップS608でタイマT7を起動後、ステップS623において、機器はランダムタイマT9を起動する。このタイマT9により、この後の処理で行われる問合せスレーブ宣言メッセージの送信をランダム時間分だけ遅らせる。これにより、マスター宣言メッセージに対して複数の機器がスレーブ宣言メッセージを送信する場合の、スレーブ宣言メッセージの衝突を回避することができる。ランダムタイマT9を起動後ステップS624へ進み、タイマT9のタイムアップを待つ。
その後、タイマT9がタイムアップするとステップS609へ進み、自機器がスレーブ機器であることを通知するスレーブ宣言メッセージをマスター機器へ送信する。そして、ステップS610において、機器はスレーブ宣言メッセージ送信用タイマT5を起動する。タイマT5は、スレーブ宣言メッセージの周期的な送信を行うために用いられ、タイマT5がタイムアップした際にスレーブ宣言メッセージを再送信する。ここで、タイマT5はスレーブ宣言メッセージに記述される存在期限時間よりも短い値に設定され、存在期限が切れないよう周期的にメッセージの送信を行う。タイマT5を起動後、機器は後述するスレーブ機器の動作を行う。
また、上述のステップS607で、マスター問合せメッセージを所定回数送信完了した場合はステップS611へ進み、機器はマスター宣言メッセージ受信用タイマT3を起動する。そして、機器はタイマT3がタイムアップするまで他の機器からメッセージを受信するのを待ち、メッセージを受信すると、メッセージの種類に応じて以下に説明する処理を行う。
ステップS612において、機器はマスター宣言メッセージの受信を確認し、マスター宣言メッセージを受信した場合は、ネットワーク中に既にマスター機器が存在することを認識してステップS608へ進む。また、メッセージを受信していない場合はステップS613へ進む。
ステップS613において、機器はマスター問合せメッセージの受信を確認し、受信した場合は、ネットワーク中にマスター機器が存在せず、かつ自機器以外にマスター機器になり得る機器が存在する、マスター問合せ衝突状態であると判定する。そして、ステップS614へ進み、マスター衝突解決処理を行う。また、マスター問合せメッセージを受信していない場合はステップS615へ進む。
ステップS614で、機器はマスター問合せ衝突状態を解決するマスター衝突解決処理を行う。ここでは、受信したマスター問合せメッセージの送信元MACアドレス502と、自機器のMACアドレスとを辞書式順序で比較する。比較の結果、自機器のMACアドレスが辞書式順序で小さかった場合はWinnerと判定し、自機器のMACアドレスが辞書式順序で大きかった場合は判定Loserと判定する。そして、判定結果を記憶し、詳細は後述するステップS617において判定結果を利用した処理を行う。
尚、3台以上の機器がマスター機器決定ステップ402の処理を行っている場合、各々の機器はマスター宣言受信タイマT3がタイムアップするまでに複数の機器とステップS614で説明したマスター衝突解決処理を行うことが考えられる。しかし、この場合、一度でもLoserと判定すると、その判定結果をLoserと記憶し、また全てのマスター衝突解決処理においてWinnerと判定した場合にのみ、その判定結果をWinnerと記憶する。
次に、ステップS615において、機器はマスター宣言受信タイマT3のタイムアップを確認する。タイマT3がタイムアップした場合、機器はネットワーク内にマスター機器が存在しない状態であると判断してステップS616へ進む。また、タイマT3がタイムアップしていない場合はステップS612に戻る。
ステップS616において、機器はマスター宣言受信タイマT3がタイムアップするまでにマスター衝突解決処理を行ったか否かを確認する。ここで、マスター衝突解決処理を行っていた場合はステップS617へ進み、行っていなかった場合はステップS618へ進む。
ステップS617において、機器はマスター衝突解決処理における判定結果を確認する。判定結果がWinnerであった場合はステップS618へ進み、判定結果がLoserであった場合はステップS620へ進む。
ステップS618において、機器は自機器がマスター機器であることを通知するマスター宣言メッセージをネットワークへブロードキャスト送信する。
ステップS619において、機器はマスター宣言メッセージ送信タイマT4を起動する。タイマT4は、マスター宣言メッセージの周期的な送信を行うために用いられ、タイマT4がタイムアップした際にはマスター宣言メッセージを再送信する。ここでタイマT4はマスター宣言メッセージに記述される存在期限時間よりも短い値に設定され、存在期限が切れないよう周期的にメッセージの送信を行う。タイマT4を起動後、機器は後述するマスター機器の動作を行う。
ステップS620において、機器はマスター宣言受信待ちタイマT8を起動する。このタイマT8は、上述したステップS617の判定でLoserとなった機器がWinnerとなった機器からのマスター宣言メッセージの受信を一定期間待つために用いられる。
ステップS621において、機器はマスター宣言メッセージの受信を確認し、マスター宣言メッセージを受信した場合は上述したステップS608へ進む。また、マスター宣言メッセージを受信しなかった場合はステップS622へ進む。ステップS622において、機器はマスター宣言受信待ちタイマT8のタイムアップを確認する。ここでタイマT8がタイムアップした場合、機器は期間内にマスター機器からのメッセージを受け取ることができなかったとしてエラー終了する。また、タイマT8がタイムアップしていない場合はステップS621に戻る。
尚、ステップS622において、タイマT8がタイムアップした場合はエラー終了しているが、タイマT8がタイムアップした場合にステップS601に戻り、マスター問合せメッセージを再送信しても良い。このように処理することにより、期間内にマスター機器からメッセージを受け取ることができなかった場合でも、マスター機器とスレーブ機器の決定処理を速やかに再試行することが可能となる。
また、図6に示すマスター機器とスレーブ機器の決定処理において、ステップS604のマスター問合せメッセージの送信が完了するまでに、他の機器からマスター問合せメッセージを受信した場合は、ステップS614のマスター衝突解決処理を行う。判定結果がLoserであれば、その後、マスター問合せメッセージの送信を行わなくても良い。これにより、ネットワークへの無駄なメッセージの送信を抑えることが可能となる。
以上の手順をもって、マスター機器とスレーブ機器の決定処理が行われる。
次に、図7〜図12を参照しながらマスター機器決定ステップ402におけるマスター機器の動作について説明する。
マスター機器は、ネットワークの他の機器からメッセージを受信した場合や、マスター機器内部のタイマがタイムアップした場合に、各々の状態に応じて以下に説明する処理を行う。
まず、マスター機器がネットワーク内の他の機器よりマスター問合せメッセージを受信した場合に行う、マスター問合せメッセージ応答処理について説明する。
図7は、マスター問合せメッセージへの応答処理を示すフローチャートである。マスター機器は処理開始後、ステップS701において、マスター宣言メッセージをマスター問合せメッセージの送信元の機器へ送信する。そして、このメッセージを送信後、マスター機器はマスター問合せメッセージ応答処理を終了する。
尚、ステップS701で、マスター問合せメッセージの応答としてマスター宣言メッセージを送信する場合、上述のように送信元の機器へユニキャスト送信を行う方法とは別に、マスター宣言メッセージをブロードキャスト送信する方法も考えられる。前者の方法は無駄の無いメッセージ送信を行える利点があるが、後者の方法は複数の機器へ一度にマスター宣言メッセージを送信できるため、複数の機器がマスター問合せの状態であった場合に、効率良くマスター宣言メッセージを送信できるという利点がある。このように、2つの方法はそれぞれ異なる利点を有しており、ここではマスター問合せメッセージの応答としてのマスター宣言メッセージの送信方法について、限定は行わず、どちらの方法を用いても良いものとする。
次に、上述したステップS619又は後述するステップS802で起動されたマスター宣言メッセージ送信用タイマT4がタイムアップした場合にマスター機器が行う、マスター宣言メッセージ定期送信処理について説明する。
図8は、マスター宣言メッセージ定期送信処理を示すフローチャートである。処理開始後、マスター機器はステップS801においてマスター宣言メッセージをネットワークへブロードキャスト送信を行う。そして、メッセージを送信後、ステップS802においてマスター宣言メッセージ送信用タイマT4をマスター機器の存在時間よりも短い値に設定して再起動する。タイマ再起動後、マスター機器はマスター宣言メッセージ定期送信処理を終了する。
次に、マスター機器がスレーブ宣言メッセージを受信した場合に行う、スレーブ機器管理処理について説明する。
図9は、スレーブ機器管理処理を示すフローチャートである。処理開始後、マスター機器はステップS901においてスレーブ宣言メッセージの存在時間情報504に記述されている存在時間の値を参照し、その値が“0”か否かを確認する。ここで、存在時間の値が“0”であった場合には、マスター機器はスレーブ宣言メッセージを送信したスレーブ機器がネットワークから離脱すると判断してステップS902へ進み、また、存在時間の値が“0”ではなかった場合には、ステップS903へ進む。
ステップS903において、マスター機器は受信したスレーブ宣言メッセージの送信元MACアドレス502がRAMに記憶しているスレーブ機器管理テーブル(図10参照)に登録されているか否かを確認する。図10に示すスレーブ機器管理テーブルは、マスター機器がネットワークに参加中のスレーブ機器を把握するために、スレーブ機器のMACアドレスをインデックス番号で登録したテーブルである。
ここで、送信元MACアドレスがテーブルに登録されていなかった場合、マスター機器はスレーブ宣言メッセージを送信したスレーブ機器がネットワークに参加したと判断してステップS904へ進む。また、送信元MACアドレスがテーブルに登録されていた場合、マスター機器はスレーブ機器の存在時間の更新を行うためにステップS905へ進む。
ステップS904において、マスター機器は受信したスレーブ宣言メッセージの送信元MACアドレス502をスレーブ機器管理テーブルに登録する。そして、マスター機器は登録したスレーブ機器のテーブルにおけるインデックス番号nに対応するスレーブ機器存在タイマT6nに上述のステップS901で参照した存在時間をセットしてタイマを起動する。タイマT6は、スレーブ機器管理テーブルに登録されたスレーブ機器の台数分だけ起動され、タイマT6nがタイムアップした場合、マスター機器は対応するスレーブ機器がネットワークから離脱したと判断する。
また、ステップS905において、マスター機器はスレーブ宣言メッセージを送信したスレーブ機器に対応するスレーブ機器存在タイマT6nのタイマ値を、上述のステップS901で参照した存在時間に更新してタイマを再起動する。
一方、ステップS902において、マスター機器はスレーブ宣言メッセージを送信したスレーブ機器に対応するインデックス番号nのスレーブ機器のMACアドレスをスレーブ機器管理テーブルから削除する。
以上の手順をもって、マスター機器のスレーブ機器管理処理が行われる。
ここで、上述のステップS904又はステップS905で起動されたスレーブ機器存在タイマT6nがタイムアップした場合にマスター機器が行う、スレーブ機器離脱時処理について説明する。
図11は、スレーブ機器離脱時処理を示すフローチャートである。処理開始後、マスター機器はステップS1101においてタイムアップしたタイマに対応するスレーブ機器がネットワークから離脱したと判断する。そして、スレーブ機器管理テーブルにおけるタイムアップしたタイマに対応するインデックス番号nのスレーブ機器のMACアドレスをテーブルから削除する。削除後、マスター機器はスレーブ機器離脱時処理を終了する。
次に、ユーザ操作や上位アプリケーション等からの指示によって機器がマスター機器としての動作を正常終了する場合にマスター機器が行う、マスター機器終了時処理について説明する。
図12は、マスター機器終了時処理を示すフローチャートである。処理開始後、マスター機器はステップS1201において存在時間情報504に“0”を記述したマスター宣言メッセージをブロードキャスト送信する。このメッセージ送信により、マスター機器が離脱することをスレーブ機器に通知する。そして、このメッセージを送信後、ステップS1202においてスレーブ機器存在タイマT6を停止した後に、スレーブ機器管理テーブルを破棄し、またマスター宣言メッセージ送信タイマT4を停止する。これにより、マスター宣言メッセージの定期送信を終了し、マスター機器の動作を終了する。
以上の手順をもって、マスター機器決定ステップ402におけるマスター機器の動作が行われる。
ここまで説明したように、第1の実施形態ではネットワークに参加した機器がマスター問合せメッセージを送信し(ステップS604)、マスター宣言メッセージの受信を確認する(ステップS605)。一方、マスター機器はマスター問合せメッセージを受信すると直ちにマスター宣言メッセージを送信する(ステップS701)。
これにより、マスター機器がネットワークに存在する場合は、ネットワークに参加した機器が定期的にメッセージの受信を確認してからメッセージを送信する方式よりも速やかにマスター機器を検知することが可能となる。
また、上述した存在時間情報504を利用した機器管理処理により、機器は存在時間を“0”に設定されたメッセージを受信することで機器の離脱を検知可能となり、一定期間毎に確認を行うよりも迅速に機器状態を把握することが可能となる。
次に、図13〜図16を参照しながらマスター機器決定ステップ402におけるスレーブ機器の動作について説明する。
スレーブ機器は、マスター機器からメッセージを受信した場合や、スレーブ機器内部のタイマがタイムアップした場合に、各々の状態に応じて以下に説明する処理を行う。
まず、上述のステップS610又は後述するステップS1302で起動されたスレーブ宣言メッセージ送信用タイマT5がタイムアップした場合にスレーブ機器が行う、スレーブ宣言メッセージ定期送信処理について説明する。
図13は、スレーブ宣言メッセージ定期送信処理を示すフローチャートである。処理開始後、スレーブ機器はステップS1301においてスレーブ宣言メッセージをマスター機器へ送信する。メッセージを送信後、ステップS1302においてスレーブ宣言メッセージ送信用タイマT5をスレーブ機器の存在時間よりも短い値に設定して再起動する。そして、タイマ再起動後、スレーブ機器はスレーブ宣言メッセージ定期送信処理を終了する。
次に、スレーブ機器がマスター宣言メッセージを受信した場合に行う、マスター機器管理処理について説明する。
図14は、マスター機器管理処理を示すフローチャートである。処理開始後、スレーブ機器はステップS1401においてマスター宣言メッセージ中の存在時間情報504に記述されている存在時間の値を参照し、存在時間の値が“0”か否かを確認する。存在時間の値が“0”であれば、スレーブ機器はマスター機器がネットワークから離脱すると判断してステップS1403へ進み、存在時間の値が“0”でなければ、ステップS1402へ進む。
ステップS1402において、スレーブ機器はマスター機器存在タイマT7のタイマ値を上述のステップS1401で参照した存在時間に更新してタイマを再起動する。
ステップS1403において、スレーブ機器はマスター機器存在タイマT7を停止後にマスター機器管理テーブルを破棄する。また、スレーブ宣言メッセージ送信用タイマT5を停止することでスレーブ宣言メッセージの定期送信を終了し、スレーブ機器の動作を終了する。
以上の手順をもって、マスター機器管理処理が行われる。
次に、上述のステップS608又はステップS1402で起動されたマスター機器存在タイマT7がタイムアップした場合にスレーブ機器が行う、マスター機器離脱時処理について説明する。
図15は、マスター機器離脱時処理を示すフローチャートである。処理開始後、スレーブ機器はステップS1501において、マスター機器存在タイマT7を停止後にマスター管理テーブルを破棄する。また、スレーブ宣言メッセージ送信用タイマT5を停止することでスレーブ宣言メッセージの定期送信を終了し、スレーブ機器の動作を終了する。
次に、ユーザ操作や上位アプリケーション等からの指示によってスレーブ機器の動作を正常終了する場合にスレーブ機器が行う、スレーブ機器終了時処理について説明する。
図16は、スレーブ機器終了時処理を示すフローチャートである。処理開始後、スレーブ機器はステップS1601において、存在時間情報504に“0”を記述したスレーブ宣言メッセージをマスター機器へ送信する。このメッセージ送信により、スレーブ機器が離脱することをマスター機器に通知する。このメッセージ送信後、ステップS1602において、マスター機器存在タイマT7を停止後にマスター機器管理テーブルを破棄する。また、スレーブ宣言メッセージ送信タイマT5を停止することでスレーブ宣言メッセージの定期送信を終了し、スレーブ機器の動作を終了する。
尚、上述のステップS1403及びステップS1501において、スレーブ機器の動作を終了した後、機器は図6に示すマスター機器とスレーブ機器の決定処理を再試行しても良い。これにより、例えば3台以上の機器間で無線パラメータ自動設定を行っている際にマスター機器が終了した場合でも、残った機器の間で速やかにマスター機器決定ステップ402を再開し、無線パラメータ自動設定処理を行うことが可能となる。
以上の手順をもって、マスター機器決定ステップ402におけるスレーブ機器の動作が行われる。
次に、図1に示すデジタルカメラ100(機器A)とプリンタ101(機器B)が図5〜図16を用いて説明したマスター機器決定ステップ402において、マスター機器決定を行う際の動作について、図17、図18を用いて詳細に説明する。
まず、ネットワーク内にマスター機器が存在せず、機器Aが処理を開始した後に機器Bが処理を開始し、機器間でマスター機器とスレーブ機器を決定する際の動作について説明する。
図17は、機器Aが処理を開始した後に機器Bが処理を開始した場合のマスター機器とスレーブ機器とを決定するシーケンスを示す図である。
機器Aが処理を開始した後、マスター問合せ起動時間(TH1700)の間、ランダムタイマT1を起動してメッセージの送信を待機する(S601、S602、S603の処理に相当)。これは、ステップS601で説明したように、複数の機器が同時にマスター機器決定ステップ402を開始した際に、メッセージの一斉送信によるメッセージ衝突を回避するために行われる。
その後、ランダムタイマT1がタイムアップすると、機器Aはマスター問合せ送信タイマT2にマスター問合せ送信間隔(TH1701)を設定して起動する。そして、マスター問合せ送信タイマT2のタイムアップ毎にマスター問合せメッセージを送信する(S604、S605、S606、S607の処理に相当)。この例の場合、マスター問合せメッセージの送信を3回行う(F1702、F1703、F1704)。
機器Aはマスター問合せメッセージを送信した後、マスター宣言受信タイマT3を起動し、マスター問合せ応答待ち時間(TH1705)の間にマスター宣言メッセージを受信するのを待つ(S611、S612、S613、S615の処理に相当)。この例の場合、機器Aは所定時間(TH1705)の間にメッセージを受信しないため、マスター宣言受信タイマT3のタイムアップ後に、マスター宣言メッセージのブロードキャスト送信(F1706)を行う。そして、機器Aがマスター機器であることを他の機器に通知する(S616、S618の処理に相当)。
マスター宣言メッセージを送信後、機器Aはマスター宣言送信タイマT4にマスター宣言送信間隔(TH1707)を設定して起動する。そして、マスター宣言送信タイマT4のタイムアップ毎に周期的にマスター宣言メッセージをブロードキャスト送信(F1708)を行う(S619、S801、S802の処理に相当)。
図17に示す例では、機器Aがマスター宣言メッセージの定期送信開始後(F1706とF1708の間)に機器Bの処理が開始される。
機器Bが処理を開始した後、マスター問合せ起動時間(TH1709)の間、ランダムタイマT1を起動してメッセージの送信を待機する。ランダムタイマT1がタイムアップした後、機器Bはマスター問合せ送信タイマT2にマスター問合せ送信間隔(TH1710)を設定して起動する。そして、マスター問合せ送信タイマT2のタイムアップ毎にマスター問合せメッセージを3回送信する(F1711、F1712、F1713)。
これにより、機器Aが機器Bからのマスター問合せメッセージ(F1711)に応答し、マスター宣言メッセージを機器Bへ送信(F1714)する(S701の処理に相当)。機器Bはマスター問合せメッセージを送信後にマスター宣言受信タイマを起動し、マスター問合せ応答待ち時間(TH1715)の間にメッセージが送信されるのを待つ。
図17に示す例では、機器Bは所定時間(TH1715)の間に、機器Aよりマスター宣言メッセージを受信するため、機器Aがマスター機器であることを検知する。そして、マスター機器管理テーブル(図19)に機器AのMACアドレスを登録し、マスター機器存在タイマT7にマスター宣言メッセージより取得した機器Aの存在時間を設定してタイマを起動する。そして、機器Aへスレーブ宣言メッセージを送信(F1716)する(S608、S609の処理に相当)。
一方、機器Aが機器Bのスレーブ宣言メッセージを受信すると、スレーブ機器管理テーブル(図10)に機器BのMACアドレスを登録する。そして、機器Bのスレーブ機器存在タイマT6にスレーブ宣言メッセージより取得した機器Bの存在時間を設定してタイマを起動する(S901、S903、S904の処理に相当)。
機器Bが、スレーブ宣言メッセージを送信後、スレーブ宣言送信タイマT5にスレーブ宣言送信間隔(TH1717)を設定して起動する。そして、スレーブ宣言送信タイマT5のタイムアップ毎に周期的にスレーブ宣言メッセージを機器Aへ送信(F1718)する(S610、S1301、S1302の処理に相当)。
これ以降、機器Aと機器Bは宣言送信タイマに従って周期的に宣言メッセージを送信し、宣言メッセージを受信すると、メッセージ中の存在時間に存在タイマを再設定して再起動する(S905、S1402の処理に相当)。
以上の手順をもって、図17に示すシーケンスに従ってマスター機器とスレーブ機器が決定される。
次に、ネットワーク内にマスター機器が存在せず、機器Aと機器Bがほぼ同時に処理を開始し、機器間でマスター機器とスレーブ機器を決定する際の動作について説明する。
また、この例では、機器AのMACアドレスが機器BのMACアドレスよりも辞書式順序が小さく、機器Aがマスター衝突解決処理においてWinnerと判定されるものとする。
図18は、機器Aと機器Bがほぼ同時に処理を開始した場合のマスター機器とスレーブ機器を決定するシーケンスを示す図である。
機器Aが処理を開始した後、マスター問合せ起動時間(TH1800)の間、ランダムタイマT1を起動してメッセージの送信を待機する。
その後、ランダムタイマT1がタイムアップすると、機器Aはマスター問合せ送信タイマT2にマスター問合せ送信間隔(TH1801)を設定して起動して、マスター問合せ送信タイマT2のタイムアップ毎にマスター問合せメッセージを送信する。この例の場合、マスター問合せメッセージの送信を3回行う(F1802、F1803、F1804)。
また機器Aと同時に、機器Bも処理を開始後、マスター問合せ起動時間(TH1805)の間、ランダムタイマT1を起動してメッセージの送信を待機する。
その後、ランダムタイマT1がタイムアップすると、機器Bはマスター問合せ送信タイマT2にマスター問合せ送信間隔(TH1806)を設定して起動する。そして、マスター問合せ送信タイマT2のタイムアップ毎にマスター問合せメッセージを3回送信する(F1807、F1808、F1809)。
機器Aはマスター問合せメッセージを送信した後、マスター宣言受信タイマT3を起動し、マスター問合せ応答待ち時間(TH1810)の間にメッセージを受信するのを待つ。この例の場合、機器Aは所定時間(TH1810)の間に、機器Bよりマスター問合せメッセージを受信するため、マスター衝突解決処理を行う(S613、S614)。ここでは、機器Aがマスター衝突解決処理においてWinner判定されるため、機器Aはマスター宣言受信タイマT3のタイムアップ後、マスター衝突解決処理においてWinner判定されたことを認識する(S617の処理に相当)。そして、マスター宣言メッセージのブロードキャスト送信を行うことで機器Aがマスター機器であることを機器Bに通知する(F1812)。
機器Aはマスター宣言メッセージを送信後、マスター宣言送信タイマT4にマスター宣言送信間隔(TH1813)を設定して起動する。そして、マスター宣言送信タイマT4のタイムアップ毎に周期的にマスター宣言メッセージをブロードキャスト送信(F1816)を行う。
一方、機器Bもマスター問合せメッセージを送信後に、マスター宣言受信タイマT3を起動し、マスター問合せ応答待ち時間(TH1811)の間にメッセージを受信するのを待つ。この例の場合、機器Bは所定時間(TH1811)の間に、機器Aよりマスター宣言メッセージを受信するため、機器Aがマスター機器であることを検知する。
これにより、機器Bはマスター機器管理テーブル(図19)に機器AのMACアドレスを登録する。そして、マスター機器存在タイマT7にマスター宣言メッセージより取得した機器Aの存在時間を設定してタイマを起動し、機器Aへスレーブ宣言メッセージを送信(F1814)する。
機器Aが機器Bからスレーブ宣言メッセージを受信すると、スレーブ機器管理テーブル(図10)に機器BのMACアドレスを登録し、機器Bのスレーブ機器存在タイマT7にスレーブ宣言メッセージより取得した機器Bの存在時間を設定してタイマを起動する。
機器Bが、スレーブ宣言メッセージを送信後、スレーブ宣言送信タイマT5にスレーブ宣言送信間隔(TH1815)を設定して起動し、スレーブ宣言送信タイマT5のタイムアップ毎に周期的にスレーブ宣言メッセージを機器Aへ送信(F1817)する。
これ以降、機器Aと機器Bは宣言送信タイマに従って周期的に宣言メッセージを送信し、宣言メッセージを受信すると、メッセージ中の存在時間に存在タイマを再設定して再起動する。
以上の手順をもって、図18に示すシーケンスに従ってマスター機器とスレーブ機器が決定される。
次に、上述したマスター機器決定ステップ402で決定したマスター機器が同一ネットワークに参加しているスレーブ機器から機器能力を収集する機器能力収集ステップ403について説明する。
図20は、マスター機器であるデジタルカメラ100(機器A)がスレーブ機器であるプリンタ101(機器B)に対して機器能力を収集するシーケンスを示す図である。以下詳細に説明する。
まず、マスター機器であるデジタルカメラ100が機器能力収集要求をプリンタ101に対して行う(F2001)。スレーブ機器であるプリンタ101はこの要求に応答する形で機器能力収集応答を要求元のデジタルカメラ100へ自機器が有する機器能力属性値データを含む形で返信する(F2002)。この場合、マスター機器では、機器能力収集ステップタイマTCM100を起動し、その間に現在存在しているはずのスレーブ機器に対して上述した機器能力収集を行う。
図24は、自動通信パラメータ設定に対応したマスター機器が機器能力収集ステップで行う判断処理なども含むフローチャートである。以下詳細に説明する。
マスター機器において、現在の状況がスレーブ機器の参加受付状態にあるか否かを調べる(S2401)。参加受付状態が締め切られている場合には、既にネットワークに参加している機器の機器能力属性値の収集が完了したため、次の通信パラメータ転送方向決定ステップ404へ進む(S2406)。
一方、まだ受付中であれば、新規のスレーブ機器(機器能力属性をまだ取得していないスレーブ機器)が存在するかを確認し(S2402)、存在する場合には、新規スレーブ機器へ機器能力収集要求を送信する(S2403)。そして機器能力収集応答をスレーブ機器から受信すると(S2404)、受信した機器能力属性値を記憶する(S2405)。
図37は、機器能力の属性値を記憶するメモリの構成の一例を示す図である。図37に示すように、マスター機器は自機器が保有している属性値のテーブル3701と、その他今回スレーブ機器より受信した属性値のリスト3702を記憶する。図37に示す例では、機器を識別するためのMACアドレスと複数の属性値のリスト(属性値1、属性値2、属性値3)から構成される。
ここで、記憶した機器能力属性値情報に基づいて通信パラメータの転送方向を決定する(S2406)。図37に示す例では、属性値1については自機器及びスレーブ機器共に「YES」であるが、属性値2については自機器が「YES」で、スレーブ機器が「NO」であるため、通信パラメータ情報の提供者として自機器を選択する。
このように、マスター機器は、常時スレーブ機器の検出を行いながら、それと独立した処理として、並行してスレーブ機器の機器能力属性値収集を行うことが可能となる。そのため、参加受付状態を締め切り後にスレーブ機器の機器能力属性値を収集する場合に比べて処理に必要な時間を短縮することが可能となる。
図22は、自動通信パラメータ設定に対応したスレーブ機器が機器能力収集ステップで行う処理のフローチャートである。以下詳細に説明する。
自機器がスレーブ機器の場合には、マスター機器からの機器能収集要求を受信した後(S2201)、マスター機器へ自機器の機器能力を示す情報を含む機器能力収集応答メッセージを送信する(S2202)。
図36は、自動通信パラメータ設定に対応した機器が機器能力収集ステップで送受信するメッセージフォーマットを示す図である。まず、マスター機器では宛先MACアドレス3601に機器能力収集要求送信先のスレーブ機器のMACアドレスを挿入する。また、マスター機器である自機器のMACアドレスを送信元MACアドレス3602に挿入し、自機器が有する属性値のリストを含むメッセージを生成する。そして、そのメッセージを属性リスト3603に挿入する。
次に、スレーブ機器ではマスター機器からの機器能力収集要求コマンド受信の応答レスポンスとして、宛先MACアドレス3601にマスター機器のMACアドレスを挿入する。また、送信元MACアドレス3602には自スレーブ機器のMACアドレスを挿入し、マスター機器と同様に、自スレーブ機器が有する機器能力属性値を属性値リスト3603に挿入し、マスター機器へ本メッセージを応答として返送する。
このように、マスター機器の要求メッセージとスレーブ機器からの応答メッセージとに各機器の機器能力属性値を含めることで、両者で互いの機器能力を把握することが可能になる。従って、スレーブ機器もマスター機器からの機器能力収集要求メッセージに含まれる属性値と自機器が有する機器能力属性値に一致が見られないと判断した場合には、機器能力属性値の応答を返さずに、即座に自動通信パラメータ設定の停止を行える。その結果、ユーザにすばやく自動通信パラメータ設定の処理結果を通知することができる。
次に、マスター機器がスレーブ機器の機器能力属性値を収集し、通信パラメータの転送方向を決定する処理について説明する。ここでは、図32及び図37を参照しながら詳細に説明する。
図32は、通信パラメータの転送方向決定処理を示すフローチャートである。まず、マスター機器であるデジタルカメラ100がスレーブ機器であるプリンタ101の機器能力属性値を収集し(S3201)、機器能力属性値テーブルを図37に示す形式3702でRAM204に記憶する(S3202)。そして、全てのスレーブ機器の機器能力属性値テーブルの全属性値が確認完了済みか否かを調べる(S3203)。完了していなければ、マスター機器、スレーブ機器の機器能力属性値が記憶されている機器能力属性値テーブルの現属性値が「YES」の機器を抽出する(篩いにかけて残す)(S3204)。次に、抽出した機器が一台か否か(篩いにかけて残った機器の台数)を調べる(S3205)。
ここで、抽出した機器が一台でなければ、現在比較中の属性値を次の比較対象となる属性値に進め(S3206)、上述の処理を繰り返す(S3203)。また全属性値の確認が完了し、抽出した機器が一台だけの場合には(S3207)、抽出した機器をパラメータ提供者に設定する(S3208)。また、抽出した機器が複数台存在した場合には転送方向決定がエラーとなった旨を通知する(S3209)。
このように、複数の属性値から構成される属性値リストを比較してパラメータ提供者を一台の機器になるよう構成することが可能となる。また、マスター機器、スレーブ機器を含めた属性比較を行うことにより、通信用パラメータ設定用ネットワークを構成する全ての機器からマスター機器であるか、スレーブ機器であるか関係なく、通信パラメータ提供者を決めることができる。
ここで、通信パラメータ転送方向決定ステップ404において通信パラメータ提供者と受理者との間で行われる通信パラメータの交換シーケンスについて説明する。
まず、マスター機器であるデジタルカメラ100(機器A)が通信パラメータの提供者となり、スレーブ機器であるプリンタ101(機器B)が受理者となる場合に、デジタルカメラ100からプリンタ101へ通信パラメータが転送される旨を通知する。この場合のシーケンスを、図26を用いて説明する。
図26は、マスター機器が通信パラメータ提供者で、受理者のスレーブ機器へ通信パラメータを提供する際のシーケンスを示す図である。まずデジタルカメラ100が「パラメータ転送方向受理者要求」メッセージをプリンタ101に送信する(F2601)。通信パラメータ受理者となったプリンタ101はその応答「パラメータ転送方向受理者応答」をデジタルカメラ100へ返信する(F2602)。その後、通信パラメータ交換処理をデジタルカメラ100からプリンタ101に対して行う(詳細は後述する)。処理が完了すれば、デジタルカメラ100は終了を表すメッセージ「パラメータ転送方向受理者完了要求」をプリンタ101へ送信する(F2603)。そして、プリンタ101はその応答「パラメータ転送方向受理者完了応答」メッセージをデジタルカメラ100へ返信する(F2604)。
また、この時、図31に示すように、デジタルカメラ100は通信パラメータ受理者となったプリンタ101に対して通信パラメータ提供者となった自機器のMACアドレスを通知する。そして、プリンタ101がそのアドレスを受信後、通信パラメータ提供者から送信される通信パラメータをRAM304などに保存する。
次に、マスター機器であるデジタルカメラ100(機器A)が通信パラメータの受理者となり、スレーブ機器であるプリンタ101(機器B)が提供者となる場合に、プリンタ101からデジタルカメラ100へ通信パラメータを転送するように通知する。この場合のシーケンスを、図27を用いて説明する。
図27は、マスター機器が通信パラメータ受理者で、通信パラメータ提供者のスレーブ機器から通信パラメータを受理する際のシーケンスを示す図である。まずデジタルカメラ100が「パラメータ転送方向提供者要求」メッセージをプリンタ101に送信する(F2701)。通信パラメータ提供者となったプリンタ101はその応答「パラメータ転送方向提供者応答」をデジタルカメラ100へ返信する(F2702)。その後、通信パラメータ交換処理をプリンタ101からデジタルカメラ100に対して行う(詳細は後述する)。処理が完了すれば、プリンタ101は終了を表すメッセージ「パラメータ転送方向提供者完了要求」をデジタルカメラ100へ送信する(F2703)。そして、デジタルカメラ100はその応答「パラメータ転送方向提供者完了応答」メッセージをプリンタ101へ返信する(F2704)。
また、この時、図38に示すように、デジタルカメラ100は通信パラメータ提供者となったプリンタ101に対して通信パラメータ受理者となった自機器のMACアドレスを通知する。そして、プリンタ101がそのアドレスを受信後、通信パラメータ受理者となったデジタルカメラ100へ通信パラメータを送信する。そして、デジタルカメラ100はプリンタ101から送信される通信パラメータをRAM204に保存する。
このように、マスター機器とスレーブ機器の関係とは別に通信パラメータ受理者と通信パラメータ提供者を決定することが可能となり、ネットワーク管理を行う処理と通信パラメータ転送を独立した機能として動作させることが可能になる。
次に、マスター機器において自動通信パラメータ設定に対応した機器が通信パラメータ提供者か通信パラメータ受理者かを決定する転送方向決定処理を、図29を用いて説明する。
図29は、マスター機器転送方向決定処理を示すフローチャートである。まずマスター機器である機器Aは、同一ネットワーク上に存在するスレーブ機器の台数を確認する(S2901)。次に、全スレーブ機器との処理が完了したか否かをチェックする(S2902)。もし未完了であれば、スレーブ機器アドレスリストに含まれるスレーブ機器の中でパラメータ転送方向を未だ通知していないスレーブ機器を選択する(S2903)。そして、マスター機器自身が通信パラメータ提供者となったか否かをチェックする(S2904)。マスター機器自身が通信パラメータ提供者となった場合は、ステップS2903で選択したスレーブ機器に送信する転送方向要求メッセージに、図31に示すように、パラメータ提供者となった自身のMACアドレスを設定する(S2905)。そして、選択したスレーブ機器へパラメータ転送方向受理者要求を示すメッセージを送信する(S2906)。
次に、選択したスレーブ機器からのパラメータ転送方向受理者応答メッセージの受信を待つ(S2907)。その後、受信すると、選択したスレーブ機器を転送方向通知完了に設定し(S2908)、ステップS2902に戻り、全スレーブ機器との処理が完了するまで上述の処理を繰り返す。
また、マスター機器は自身が通信パラメータ受理者の場合には(S2904)、選択したスレーブ機器が通信パラメータ提供者か否かをチェックする(S2909)。ここで、通信パラメータの提供者であれば、選択したスレーブ機器に送信する転送方向要求メッセージに、パラメータ受理者となった自身のMACアドレスに加えて他にスレーブ機器が存在していればそれらの機器のMACアドレスを設定する(S2910)。図38を参照。そして、選択したスレーブ機器へパラメータ転送方向提供者要求を示すメッセージを送信する(S2911)。
次に、選択したスレーブ機器からのパラメータ転送方向提供者応答メッセージの受信を待つ(S2907)。その後、受信すると、選択したスレーブ機器を転送方向通知完了に設定し(S2908)、ステップS2902に戻り、全スレーブ機器との処理が完了するまで上述の処理を繰り返す。
更に、マスター機器自身が通信パラメータの受理者、かつ選択スレーブ機器が通信パラメータ受理者の場合には(S2904,S2909)、次のように設定する。即ち、選択したスレーブ機器に送信する転送方向要求メッセージに、パラメータ提供者となったスレーブ機器のMACアドレスを設定する(S2912)。そして、選択したスレーブ機器へパラメータ転送方向受理者要求を示すメッセージを送信する(S2913)。
次に、選択したスレーブ機器からのパラメータ転送方向受理者応答メッセージの受信を待つ(S2907)。その後、受信すると、選択したスレーブ機器を転送方向完了に設定し(S2908)、ステップS2902に戻り、全スレーブ機器との処理が完了するまで上述の処理を繰り返す。
次に、スレーブ機器において自動通信パラメータ設定に対応した機器が通信パラメータ提供者か通信パラメータ受理者かを決定する転送方向決定処理を、図30を用いて説明する。
図30は、スレーブ機器転送方向決定処理を示すフローチャートである。まずマスター機器からの通信パラメータ転送方向要求メッセージの受信チェックを行い(S3001)、受信するとマスター機器へ通信パラメータ転送方向応答メッセージを送信する(S3002)。ここで、マスター機器からの転送方向要求の役割が通信パラメータ提供者であれば(S3003のYES)、通信パラメータ転送方向要求メッセージに含まれる通信パラメータ受理者のMACアドレスリストを記憶する(S3004)。また、マスター機器からの転送方向要求の役割が通信パラメータ受理者であれば(S3003のNO)、通信パラメータ転送方向要求に含まれる通信パラメータ提供者のMACアドレスを記憶する(S3005)。
このように、マスター機器とスレーブ機器との間で提供者及び受理者を指示する処理を行い、事前にパラメータ転送方向をユーザに指示させることなく、各機器が通信パラメータをやりとりすべき相手機器を明らかにできる。
図33は、通信パラメータの提供者と受理者との間で通信パラメータのデータを送受信する場合のシーケンスを示す図である。尚、ここでは、デジタルカメラ100が通信パラメータの提供者となり、プリンタ101が受理者となった場合を例に説明する。
通信パラメータの提供者となったデジタルカメラ100は、通信パラメータのデータの送受信に先立ちプリンタ101に対して暗証番号の入力を要求する(F3301)。これに対して、プリンタ101は暗証番号の要求に応答する形で暗証番号の値を含むデータを応答する(F3302)。次に、暗号鍵設定要求メッセージをデジタルカメラ100からプリンタ101へ送信する(F3303)。これを受けたプリンタ101は暗号鍵設定応答をデジタルカメラ100へ返信する(F3304)。
次に、データ要求処理に移行し、デジタルカメラ100はプリンタ101に対して通信パラメータデータを送信する。しかし、デジタルカメラ100は通信パラメータのデータを先の暗号鍵で暗号化し、もし通信パラメータのデータが十分に大きなサイズの場合は分割する必要があるため、データ継続を示す継続(Continue)信号を付加して送信する(F3305)。それに応じてプリンタ101はデータ応答処理で継続信号の場合は更なる要求を、OKの場合はデータ送信の終了の意味を表すものとして応答信号をデジタルカメラ100へ返信する(F3306)。
その後、プリンタ101は受信し終わった通信パラメータデータを先の暗号鍵で復号化し、復号化した通信パラメータデータを保存する。
このように、通信の暗号化以外に第1の実施形態の中で最もセキュリティ上問題となる通信パラメータ部分を個別に暗号化することによって、より安全なセキュリティを施した通信パラメータ転送を行うことができる。
ここで、通信パラメータの提供者(この例ではデジタルカメラ100)と受理者(この例ではプリンタ101)とで通信パラメータのデータを授受する場合に、通信パラメータの提供者となった機器で執り行われる処理を詳細に説明する。
図34は、通信パラメータを提供する機器での処理を示すフローチャートである。まず、通信パラメータの提供者であるデジタルカメラ100は、通信パラメータ情報を転送しなければならない通信パラメータ受理者の台数をデジタルカメラ100のRAM204に設定記憶する(S3401)。次に、全ての通信パラメータ受理者となる機器に対して通信パラメータの送信が完了したか否かを調べ(S3402)、完了していれば正常終了とし、また完了していなければ以下の処理を繰り返し実行する。
まず、通信パラメータを未送信のパラメータ受理者機器のアドレスを送信先のアドレスとして設定する(S3403)。次に、設定した送信先のアドレスを表すパラメータ受理者機器に暗証番号要求メッセージを送信する(S3404)。そして、パラメータ受理者機器から暗証番号応答メッセージを受信するまで待ち(S3405)、受信すると、暗証番号応答メッセージに含まれる応答暗証番号が正しいか否かを調べる(S3406)。
ここで、応答暗証番号が正しければ、引き続いてパラメータ受理者機器に暗号鍵の要求メッセージを送信し(S3407)、パラメータ受理者機器から暗号鍵応答メッセージの受信を待つ(S3408)。受信すると、暗号鍵応答メッセージとして送られてきた暗号鍵を用いて今から送信したい通信パラメータ情報を暗号鍵で暗号化し(S3409)、暗号化通信パラメータ情報をパラメータ受理者機器へ送信する(S3410)。そして、受理者機器から通信パラメータ情報応答メッセージの受信を待ち(S3411)、受信すると、次のパラメータ受理者機器を選択する処理へ移行する(S3412)。
また、パラメータ受理者機器から受信した暗証番号応答メッセージに含まれる暗証番号が正しくないと判断した場合は(S3406のNO)、暗証番号再要求をパラメータ受理者機器に送信する(S3413)。もしその応答として暗証番号要求の拒否メッセージを受信した場合は(S3414のYES)、エラー終了となる。また、暗証番号要求の拒否メッセージではなく、暗証番号応答メッセージを受信した場合は(S3405のYES)、上述した処理を繰り返し行う。
次に、通信パラメータの提供者(この例ではデジタルカメラ100)と受理者(この例ではプリンタ101)とで通信パラメータのデータを授受する場合に、通信パラメータの受理者となった機器で執り行われる処理を詳細に説明する。
図35は、通信パラメータを受理する機器での処理を示すフローチャートである。まず、通信パラメータの受理者であるプリンタ101は、通信パラメータの提供者であるデジタルカメラ100から暗証番号要求メッセージの受信を待つ(S3501)。要求を受信した場合、操作部311に暗証番号の入力をユーザに促す表示を行い、ユーザにより入力された暗証番号を通信パラメータ提供者機器へ暗証番号応答メッセージとして送信する(S3502)。そして、通信パラメータの提供者機器から暗証番号再要求メッセージを受信した場合は(S3503のYES)、暗証番号を誤って入力した場合などが考えられるので、処理を中止するか否かをプリンタ101の表示部310に表示する。操作の中止を表すキャンセルなどが操作部311より入力されれば(S3504のYES)、プリンタ101はデジタルカメラ100へ暗証番号要求拒否メッセージを送信し、エラー終了となる(S3505)。
また、暗証番号が正しく入力されていれば、続けて通信パラメータ提供者機器から暗号鍵要求が送信されるのでこれを受信するまで待ち(S3506)、通信パラメータ提供者であるデジタルカメラ100に対して暗号鍵を応答として送信する(S3507)。その後、通信パラメータ提供者機器から通信パラメータ要求メッセージを受信するまで待ち(S3508)、受信すると、通信パラメータ提供者機器に通信パラメータ情報応答メッセージを送信する(S3509)。そして、通信パラメータ要求メッセージを先の暗号鍵にて復号化し(S3510)、通信パラメータを取得し、保存して(S3511)正常終了となる。
各機器は、ステップS3511で通信パラメータ情報を記憶すると、該通信パラメータを新規ネットワークの通信パラメータとして設定することにより、通信パラメータ設定用ネットワークから抜け出し、新規ネットワークを形成する。
[第2の実施形態]
次に、図面を参照しながら本発明に係る第2の実施形態について詳細に説明する。第1の実施形態では、2台の機器間における自動通信パラメータ設定について説明したが、第2の実施形態では複数の機器間における自動通信パラメータ設定の特徴的な部分について説明する。
図40は、第2の実施形態における無線LANの構成の一例を示す図である。図40に示すように、無線通信機器A、B、Cは、デジタルカメラ100(機器A)、プリンタ101(機器B)、デジタルカメラ106(機器C)であり、3者間でアドホック通信の無線通信パラメータ設定を行う。
デジタルカメラ100は無線通信機能104として無線LANを有し、通信パラメータ設定起動ボタン102を押下することにより通信パラメータ設定モードのネットワークを構成することが可能である。またプリンタ101も無線通信機能105として無線LANを有し、通信パラメータ設定起動ボタン103を押下することにより通信パラメータ設定モードのネットワークを構成することが可能である。更にデジタルカメラ106も無線通信機能108として無線LANを有し、通信パラメータ設定起動ボタン107を押下することにより通信パラメータ設定モードのネットワークを構成することが可能である。
尚、デジタルカメラ100(機器A)及びデジタルカメラ106(機器C)、プリンタ101(機器B)の構成は、第1の実施形態で図2、図3を用いて説明した構成と同様であり、ここでの説明は省略する。
次に、第1の実施形態と同様に、アドホックネットワークにおいてマスター機器が存在しない場合に、図2に示す機器Aと機器Bと機器Cとの間でマスター機器とスレーブ機器を決定する処理について、図21を用いて説明する。
図21は、第2の実施形態におけるマスター機器とスレーブ機器とを決定するシーケンスを示す図である。尚、図21に示す例では、機器Aが処理を開始した後に機器Bが処理を開始し、更に機器Cが処理を開始する場合を例に説明する。また、この例では、機器C、機器A、機器Bの順にMACアドレスの辞書式順序が小さいものとする。
機器Aが処理を開始した後、マスター問合せ起動時間(TH2100)の間、ランダムタイマを起動してメッセージの送信を待機する。
その後、ランダムタイマがタイムアップすると、機器Aはマスター問合せ送信タイマにマスター問合せ送信間隔(TH2101)を設定して起動し、マスター問合せ送信タイマのタイムアップ毎にマスター問合せメッセージを送信する。この例の場合、マスター問合せメッセージの送信を3回行う(F2102、F2103、F2104)。
機器Bが処理を開始した後、マスター問合せ起動時間(TH2105)の間、ランダムタイマを起動してメッセージの送信を待機する。
その後、ランダムタイマがタイムアップすると、機器Bはマスター問合せ送信タイマにマスター問合せ送信間隔(TH2106)を設定して起動する。そして、マスター問合せ送信タイマのタイムアップ毎にマスター問合せメッセージを3回送信する(F2107、F2108、F2109)。
機器Cが処理を開始した後、マスター問合せ起動時間(TH2110)の間、ランダムタイマを起動してメッセージの送信を待機する。
その後、ランダムタイマがタイムアップすると、機器Cはマスター問合せ送信タイマにマスター問合せ送信間隔(TH2111)を設定して起動する。そして、マスター問合せ送信タイマのタイムアップ毎にマスター問合せメッセージを3回送信する(F2112、F2113、F2114)。
次に、機器Aがマスター問合せメッセージを送信後、マスター宣言受信タイマを起動し、マスター問合せ応答待ち時間(TH2115)の間にメッセージが送信されるのを待つ。この例の場合、機器Aは所定時間(TH2115)の間に機器B、機器Cよりマスター問合せメッセージを受信するため、マスター衝突解決処理を二回行う。
第2の実施形態でも第1の実施形態と同様に、機器Aがマスター衝突解決処理において機器Bに対してはWinner、機器Cに対してはLoserと判定される。そのため、機器Aはマスター宣言受信タイマのタイムアップ後、マスター宣言受信待ちタイマを起動し、所定時間(TH2118)の間にマスター宣言メッセージが送信されるのを待つ(図8に示すS820の処理に相当)。
ここで、機器Bはマスター問合せメッセージを送信後、マスター宣言受信タイマを起動し、マスター問合せ応答待ち時間(TH2116)の間にメッセージが送信されるのを待つ。この例の場合、機器Bは所定時間(TH2116)の間に機器Cよりマスター問合せメッセージを受信するため、マスター衝突解決処理を行う。
第2の実施形態でも第1の実施形態と同様にマスター衝突解決処理を行い、機器Bがマスター衝突解決処理において機器Cに対してはLoserと判定されたとする。機器Bはマスター宣言受信タイマのタイムアップ後、マスター宣言受信待ちタイマを起動し、所定時間(TH2119)の間にマスター宣言メッセージが送信されるのを待つ。
また、機器Cはマスター問合せメッセージを送信後、マスター宣言受信タイマを起動し、マスター問合せ応答待ち時間(TH2117)の間にメッセージが送信されるのを待つ。この例の場合、機器Cは所定時間(TH2117)の間にはマスター問合せメッセージを受信しないため、機器Cはマスター宣言受信タイマのタイムアップ後、マスター宣言メッセージのブロードキャスト送信を行う。これにより、機器Cがマスター機器であることを他の機器に通知する(F2120)。
機器Cは、マスター宣言メッセージを送信後、マスター宣言送信タイマにマスター宣言送信間隔(TH2121)を設定して起動し、マスター宣言送信タイマのタイムアップ毎に周期的にマスター宣言メッセージをブロードキャスト送信(F2122)する。
これにより、機器Bは所定時間(TH2119)の間に機器Cよりマスター宣言メッセージを受信し、機器Cがマスター機器であることを検知する。そして、機器Bはマスター機器管理テーブルに機器CのMACアドレスを登録し、マスター機器存在タイマにマスター宣言メッセージより取得した機器Cの存在時間を設定してタイマを起動し、機器Cへスレーブ宣言メッセージを送信(F2123)する。
機器Bは、スレーブ宣言メッセージを送信後、スレーブ宣言送信タイマにスレーブ宣言送信間隔(TH2124)を設定して起動し、スレーブ宣言送信タイマのタイムアップ毎に周期的にスレーブ宣言メッセージを機器Cへ送信(F2125)する。
一方、機器Aは所定時間(TH2118)の間に機器Cよりマスター宣言メッセージを受信し、機器Cがマスター機器であることを検知する。そして、機器Aはマスター機器管理テーブルに機器CのMACアドレスを登録し、マスター機器存在タイマにマスター宣言メッセージより取得した機器Cの存在時間を設定してタイマを起動し、機器Cへスレーブ宣言メッセージを送信(F2126)する。
機器Aは、スレーブ宣言メッセージを送信後、スレーブ宣言送信タイマにスレーブ宣言送信間隔(TH2127)を設定して起動し、スレーブ宣言送信タイマのタイムアップ毎に周期的にスレーブ宣言メッセージを機器Cへ送信(F2128)する。
以上の手順をもって、図21に示す第2の実施形態において、マスター機器とスレーブ機器が決定される。
次に、第1の実施形態と同様に、マスター機器決定ステップ402で決定したマスター機器が同一ネットワークに参加しているスレーブ機器から機器能力を収集する第2の実施形態における機器能力収集ステップ403について説明する。
図23は、マスター機器としてのデジタルカメラ106(機器C)がスレーブ機器としてのプリンタ101(機器B)及びデジタルカメラ100(機器A)から機器能力を収集するシーケンスを示す図である。以下詳細に説明する。
まず、デジタルカメラ106(機器C)は、マスター機器として現在同一ネットワーク上に存在するスレーブ機器の機器能力属性値データを収集するために、プリンタ101(機器B)に対して機器能力収集要求を送信する(F2301)。これを受信したプリンタ101は自身の機器能力属性値を含む機器能力収集応答を返信する(F2302)。
また、デジタルカメラ106はスレーブ機器であるデジタルカメラ100(機器A)に対して機器能力収集要求を送信する(F2303)。これを受信したデジタルカメラ100は自身の機器能力属性値を含む機器能力収集応答を返信する(F2304)。
このように、マスター機器であるデジタルカメラ106は現在同一ネットワーク上に存在する全てのスレーブ機器の機器能力属性値データを収集する。そして、マスター機器がネットワーク管理者として同一ネットワーク上に存在する各スレーブ機器の機器能力収集を行う。これにより、3台以上の機器が同一ネットワーク上に存在し、任意のタイミングでスレーブ機器の参加が発生しても、その都度、即座にマスター機器による機器能力収集を行うことが可能になる。
図25は、マスター機器が同一ネットワーク上の全ての機器から機器能力属性を収集した後の機器能力属性テーブルを示す図である。以下、この機器能力属性値からどのようにして通信パラメータ情報提供者を決定するかについて説明する。
尚、この決定処理は、第1の実施形態で図32を用いて説明した通信パラメータの転送方向決定処理を適用可能である。
まず、属性値1についてフィルタをかける。属性値1の機能を持つ機器、即ち、属性値1が「YES」の機器は次の比較ステップの候補となる。従って、図25に示すように、機器番号が「2」の属性値1は「NO」であるため、機器番号「2」は比較対象から脱落する。
次に、属性値2について残った機器番号「1」、「3」、「4」に対して比較を行う。この場合、機器番号「1」の機器が、属性値2が「NO」であるため、機器番号「1」は以後比較対象から脱落する。
次に、属性値3について機器番号「3」と「4」に対して比較を行う。この場合、機器番号「3」が、属性値3が「YES」のため、最終的に残り、通信パラメータ情報提供者として選択される。
このように、複数の属性値からなる属性値リストで順次フィルタをかけて最終的な通信パラメータ情報提供者を決定することが可能となる。複数の属性値に重み付けを付けることにより、ある特定の機器能力を有するものを通信パラメータ情報提供者として選択することが可能となる。
次に、デジタルカメラ100(機器A)とプリンタ101(機器B)がスレーブ機器で、デジタルカメラ106(機器C)がマスター機器の場合に機器間で行われるシーケンスを説明する。即ち、マスター機器であるデジタルカメラ106(機器C)がスレーブ機器であるデジタルカメラ100(機器A)に対して通信パラメータ受理者である旨を通知する。更に、スレーブ機器であるプリンタ101(機器B)に対して通信パラメータ提供者である旨を通知し、機器Bからの通信パラメータを機器A、機器Cへ転送するシーケンスを説明する。
尚、この処理は、第1の実施形態で図29を用いて説明した処理と同様である。
図28は、第2の実施形態における通信パラメータの転送シーケンスを示す図である。マスター機器であるデジタルカメラ106(機器C)は、先の通信パラメータの提供者を決定する処理により通信パラメータの提供者及び受理者を決定する。スレーブ機器であるデジタルカメラ100を通信パラメータの受理者、スレーブ機器であるプリンタ101を通信パラメータの提供者、そして自身を通信パラメータの受理者と決定する。
そこで、デジタルカメラ106(機器C)はデジタルカメラ100(機器A)に対して通信パラメータ受理者を要求する「パラメータ転送方向受理者要求」メッセージを図31に示すような通信パラメータ提供者のアドレスを含めて送信する(F2801)。デジタルカメラ100は、その応答として「パラメータ転送方向受理者応答」メッセージを返信し、通信パラメータ受理者となることを容認する(F2802)。
また、デジタルカメラ106(機器C)は同様に、プリンタ101(機器B)に対して通信パラメータ提供者を要求する「パラメータ転送方向提供者要求」メッセージを全ての通信パラメータ受理者のアドレスを含めて送信する(F2803)。図39に示すように、受理者機器が6台の場合である。プリンタ101は、その応答として「パラメータ転送方向提供者応答」メッセージを返信し、通信パラメータ提供者となることを容認する(F2804)。
その後、プリンタ101(機器B)はデジタルカメラ100(機器A)と無線パラメータ交換シーケンスを行う。完了後、デジタルカメラ100はマスター機器であるデジタルカメラ106に対して通信パラメータ受理者処理の完了を表す「パラメータ転送方向受理者完了要求」メッセージを要求する(F2805)。デジタルカメラ106は、その応答として「パラメータ転送方向受理者完了応答」メッセージを返信する(F2806)。
また、デジタルカメラ106(機器C)とプリンタ101(機器B)も無線パラメータ交換シーケンスを行う。完了後、プリンタ101はマスター機器であるデジタルカメラ106に対して通信パラメータ提供者処理の完了を表す「パラメータ転送方向提供者完了要求」メッセージを要求する(F2807)。デジタルカメラ106は、その応答として「パラメータ転送方向提供者完了応答」メッセージを返信する(F2808)。各機器は、通信パラメータ提供者が提供した通信パラメータを新規ネットワークの通信パラメータとして設定することにより、通信パラメータ設定用ネットワークから抜け出し、新規ネットワークを形成する。
また、第2の実施形態では明記していないが、マスター機器は自身が通信パラメータの受理者となった場合の各スレーブ機器への転送方向要求を送信する順序に関しては、次の順序規則を適用する。即ち、まず通信パラメータの受理者となった各スレーブ機器に対して通信パラメータ受理者要求メッセージを送信する。その後、通信パラメータの提供者となったスレーブ機器に対して通信パラメータ提供者要求メッセージを送信する。
この順序規則により、通信パラメータ交換処理で、第2の実施形態にあるような複数の機器間で、特に各通信パラメータの受理者がマスター機器から通信パラメータ受理者メッセージを既に受信したか否かを通信パラメータの提供者が調べる必要がなくなる。また、パラメータ受理者の順序を意識することもなく、即座に無線パラメータ交換シーケンスへと処理を進めることが可能となる。
[他の実施形態]
第1及び第2の実施形態では、無線通信として、無線LANを例に挙げて説明した。しかし、例えばBluetooth(登録商標)、WirelessUSB、Wireless1394、UWB、WiMAXなどの他の無線通信方式に本発明を適用することも可能である。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インタフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。