(57)【特許請求の範囲】
【請求項１】
通信装置であって、
前記通信装置が使用可能なチャネルのうち、所定のチャネルを用いた外部装置と前記通信装置との第１の無線ネットワークにおける接続を確立させ、前記所定のチャネルを用いた端末装置と前記通信装置との第２の無線ネットワークにおける接続を確立させる接続手段と、
前記端末装置と前記通信装置との通信状態を取得し、前記通信状態に基づいた制御を行う第１の制御手段と、
前記第１の制御手段と異なる第２の制御手段と、を有し、
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段が、前記第１の制御手段が実行可能な複数の検索方法のうち前記端末装置と前記通信装置との通信状態に応じて特定される検索方法で前記外部装置を検索し、
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続が確立されており、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が確立されていない状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第２の制御手段が、前記端末装置と前記通信装置との通信状態にかかわらず所定の方法で前記外部装置を検索することを特徴とする通信装置。
【請求項２】
前記第１の制御手段は、前記第２の制御手段より処理速度が速いことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記外部装置と接続するための接続情報の設定が変更されたことで、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段は、前記複数の検索方法のうち、前記所定のチャネルを用いて前記外部装置を検索し、前記所定のチャネル以外のチャネルを少なくとも用いて前記外部装置を検索しない検索方法で前記外部装置を検索することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段は、前記複数の検索方法のうち、前記端末装置と前記通信装置との通信が実行されていない状態では、前記所定のチャネルを用いて所定の回数、前記外部装置の検索を繰り返し、前記所定のチャネルを用いた前記外部装置の検索により前記外部装置が検出されなかった場合、前記所定のチャネル以外のチャネルを少なくとも用いて前記外部装置を検索する検索方法で前記外部装置を検索することを特徴とする請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段は、前記複数の検索方法のうち、前記端末装置と前記通信装置との通信が実行されていない状態では、前記所定のチャネルを用いて、第１の周期で所定の回数、前記外部装置の検索を繰り返し、前記所定のチャネルを用いて、前記第１の周期で前記所定の回数、前記外部装置の検索が繰り返されることにより前記外部装置が検出されなかった場合、前記所定のチャネル以外のチャネルを少なくとも用いて、前記第１の周期より長い第２の周期で前記外部装置の検索を繰り返す検索方法で前記外部装置を検索することを特徴とする請求項４に記載の通信装置。
【請求項６】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されており、且つ、前記外部装置と前記通信装置との通信が実行されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段は、前記複数の検索方法のうち、前記所定のチャネルを用いて所定の回数、前記外部装置の検索を繰り返し、前記所定のチャネルを用いて前記所定の回数、前記外部装置の検索が繰り返されることにより前記外部装置が検出されなかった場合、前記所定のチャネル以外のチャネルを少なくとも用いて前記外部装置を検索する検索方法で前記外部装置を検索することを特徴とする請求項１乃至５のいずれか１項に記載の通信装置。
【請求項７】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されており、且つ、前記外部装置と前記通信装置との通信が実行されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段は、前記複数の検索方法のうち、前記所定のチャネルを用いて、前記第１の周期よりも短い第３の周期で所定の回数、前記外部装置の検索を繰り返し、前記所定のチャネルを用いて、前記第３の周期で前記所定の回数、前記外部装置の検索が繰り返されることにより前記外部装置が検出されなかった場合、前記所定のチャネル以外のチャネルを少なくとも用いて、前記第２の周期より短く、且つ前記第３の周期より長い第４の周期で前記外部装置の検索を繰り返す検索方法で前記外部装置を検索することを特徴とする請求項６に記載の通信装置。
【請求項８】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段は、前記複数の検索方法のうち、前記端末装置と前記通信装置との通信が実行されている状態では、前記端末装置と前記通信装置との通信が終了するまで、前記所定のチャネルを用いて、前記外部装置の検索を繰り返し、前記端末装置と前記通信装置との通信が終了するまで、前記所定のチャネルを用いて前記外部装置が検索されることにより前記外部装置が検出されなかった場合、前記所定のチャネル以外のチャネルを少なくとも用いて前記外部装置を検索する検索方法で前記外部装置を検索することを特徴とする請求項１乃至７のいずれか１項に記載の通信装置。
【請求項９】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段は、前記複数の検索方法のうち、前記端末装置と前記通信装置との通信が実行されている状態では、前記端末装置と前記通信装置との通信が終了するまで、前記所定のチャネルを用いて、前記外部装置の検索を繰り返し、前記端末装置と前記通信装置との通信が終了するまで、前記所定のチャネルを用いて前記外部装置が検索されることにより前記外部装置が検出されなかった場合、前記所定のチャネル以外のチャネルを少なくとも用いて、第５の周期で前記外部装置の検索を繰り返し、前記所定のチャネル以外のチャネルを少なくとも用いて、前記第５の周期で前記外部装置の検索が繰り返されることにより前記外部装置が検出されなかった場合、前記第５の周期よりも長い第６の周期で前記外部装置の検索を繰り返す検索方法で前記外部装置を検索することを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記通信装置の電源がオフになったことにより、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された後、前記通信装置の電源がオンになった場合、前記第２の制御手段が、前記端末装置と前記通信装置との通信状態にかかわらず前記所定の方法で前記外部装置を検索することを特徴とする請求項１乃至９のいずれか１項に記載の通信装置。
【請求項１１】
前記所定の方法は、前記通信装置が使用可能な全てのチャネルを用いて、前記外部装置を検索する検索方法であることを特徴とする請求項１乃至１０のいずれか１項に記載の通信装置。
【請求項１２】
前記第１の制御手段及び前記第２の制御手段は、前記通信装置が使用可能な全てのチャネルを用いて前記外部装置の検索を行う場合、前記通信装置が使用可能な全てのチャネルを順に使用して前記外部装置を検索することを特徴とする請求項１乃至１１のいずれか１項に記載の通信装置。
【請求項１３】
前記外部装置と前記通信装置との接続に用いられる前記所定のチャネルは、前記外部装置によって決定されることを特徴とする請求項１乃至１２のいずれか１項に記載の通信装置。
【請求項１４】
前記端末装置との前記第１の無線ネットワークにおける接続は、Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔ（登録商標）によって形成されることを特徴とする請求項１乃至１３のいずれか１項に記載の通信装置。
【請求項１５】
端末装置との通信状態を取得し、前記通信状態に基づいた制御を行う第１の制御手段と、前記第１の制御手段と異なる第２の制御手段と、を有する通信装置の制御方法であって、
前記通信装置が使用可能なチャネルのうち、所定のチャネルを用いた外部装置と前記通信装置との第１の無線ネットワークにおける接続を確立させ、前記所定のチャネルを用いた端末装置と前記通信装置との第２の無線ネットワークにおける接続を確立させる接続ステップと、
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段に、前記第１の制御手段が実行可能な複数の検索方法のうち前記端末装置と前記通信装置との通信状態に応じて特定される検索方法で前記外部装置を検索させ、前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続が確立されており、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が確立されていない状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第２の制御手段に、前記端末装置と前記通信装置との通信状態にかかわらず所定の方法で前記外部装置を検索させる検索ステップとを有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及びその制御方法、プログラムに関するものである。
【背景技術】
【０００２】
無線ルーター（外部アクセスポイント）等の外部装置を介した端末装置との接続（以後、インフラ接続）と、外部装置を介さない端末装置との直接的な接続（以後、Ｐ２Ｐ接続）とを同時に（並行して）確立可能な通信装置が知られている。なお、前述のようにして、２種類の接続を同時に（並行して）確立した状態を維持して動作することを、以後、同時動作という。このような通信装置は、外部装置との接続が切断された場合、当該外部装置と再度接続するために、外部装置を検索する処理を行う。
【０００３】
特許文献１は、同時動作している状態でアクセスポイント（ＡＰ）との接続が切断された場合に、端末装置との直接的な接続に使用されているチャネルによってＡＰを検索する装置を開示している。また、特許文献１は、端末装置との直接的な接続に使用されているチャネルによるＡＰの検索によってＡＰを検出できなかった場合、使用可能なチャネルを順に使用してＡＰを検索する装置を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２１６９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、同時動作している状態でインフラ接続が切断された場合に実行される外部装置の検索中は、例えば、Ｐ２Ｐ接続している端末装置との通信においてパケットロス等が生じるおそれがある。そのため、同時動作している状態でインフラ接続が切断された場合には、例えば、Ｐ２Ｐ接続している端末装置と通信装置との通信状態を適宜取得可能な制御手段が、当該通信状態を考慮して外部装置の検索を行うことが望ましい。一方で、Ｐ２Ｐ接続していない状態でインフラ接続が切断された場合には、Ｐ２Ｐ接続している端末装置と通信装置との通信状態を考慮した制御が必要ない。それにも係わらず、Ｐ２Ｐ接続していない状態でインフラ接続が切断された場合も、同時動作している状態でインフラ接続が切断された場合も、同一の制御手段が外部装置を検索すると、当該制御手段に負荷が集中してしまう。今日、特許文献１のような、通信装置の多機能化等に伴い、通信装置内の制御手段にかかる負荷を分散させ、外部装置の検索時における通信装置全体としてのパフォーマンスを向上させることが以前にも増して要望されている。
【０００６】
そこで、本発明は、外部装置を検索する処理にかかる負荷を分散させることができ、且つ通信装置の通信状態に応じた方法で外部装置の検索を実行できる通信装置、その制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明にかかる通信装置は、通信装置であって、
前記通信装置が使用可能なチャネルのうち、所定のチャネルを用いた外部装置と前記通信装置との第１の無線ネットワークにおける接続を確立させ、前記所定のチャネルを用いた端末装置と前記通信装置との第２の無線ネットワークにおける接続を確立させる接続手段と、
前記端末装置と前記通信装置との通信状態を取得し、前記通信状態に基づいた制御を行う第１の制御手段と、
前記第１の制御手段と異なる第２の制御手段と、を有し、
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続と、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が並行して確立されている状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第１の制御手段が、前記第１の制御手段が実行可能な複数の検索方法のうち前記端末装置と前記通信装置との通信状態に応じて特定される検索方法で前記外部装置を検索し、
前記所定のチャネルを用いた前記外部装置と前記通信装置との前記第１の無線ネットワークにおける接続が確立されており、前記所定のチャネルを用いた前記端末装置と前記通信装置との前記第２の無線ネットワークにおける接続が確立されていない状態で、前記所定のチャネルを用いた前記外部装置と前記通信装置との接続が切断された場合、前記第２の制御手段が、前記端末装置と前記通信装置との通信状態にかかわらず所定の方法で前記外部装置を検索することを特徴とする。
【発明の効果】
【０００８】
本発明によると、外部装置を検索する処理にかかる負荷を分散させることができ、且つ通信装置の通信状態に応じた方法で外部装置の検索を実行できる。
【図面の簡単な説明】
【０００９】
【図１】通信システムの構成の一例を示す図である。
【図２】端末装置の外観の一例を示す図である。
【図３】ＭＦＰの外観の一例を示す図である。
【図４】ＭＦＰの操作表示部に表示される画面の一例を示す図である。
【図５】端末装置の構成を示すブロック図である
【図６】ＭＦＰの構成を示すブロック図である。
【図７】ソフトウェアＡＰモードにおける無線接続シーケンスを示す図である。
【図８】ＷＦＤモードにおける無線接続シーケンスを示す図である。
【図９】インフラストラクチャモードにおける無線接続シーケンスを示す図である。
【図１０】ＭＦＰのドメイン構成を示すソフトウエア構成図である。
【図１１】メインシステムのＣＰＵがＩ／Ｆ接続Ｍｇｒタスクによって実行する処理を示すフローチャートである。
【図１２】メインシステムのＣＰＵがコントロールＡＰＩタスクによって実行する処理を示すフローチャートを示す図である。
【図１３】Ｉ／ＦドメインとＮＷサブシステム間のコントロールＡＰＩの制御フロー図である。
【図１４】ＡＰサーチの実行パターンを示すテーブルを示す図である。
【図１５】ＮＷサブシステムのＣＰＵによって実行されるインフラ接続処理を示すフローチャートである。
【図１６】メインシステムのＣＰＵがＩ／Ｆ接続Ｍｇｒタスクによって実行する処理を示すフローチャートである。
【図１７】ＭＦＰが同時動作している状態で、ＭＦＰとアクセスポイント４００との接続が切断された場合に行われる再接続処理のシーケンスを示す図である。
【図１８】ＭＦＰが、切断されたインフラ接続に使用していたチャネル以外のチャネルによってアクセスポイントを検索する処理を含む再接続処理のシーケンスを示す図である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照しながら、本発明の実施形態を例示的に詳しく説明する。但し、本実施形態に記載されている構成要素の相対配置、表示画面等は、特に、特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００１１】
（第１実施形態）
本実施形態の端末装置及び通信装置について説明する。端末装置として、本実施形態ではスマートホンを例示している。スマートホンとは、携帯電話の機能の他に、カメラや、ウェブブラウザ、電子メール機能等を搭載した多機能型の携帯電話のことである。なお、本発明を適用可能な端末装置は、スマートホンに限定されず、後述の通信装置と通信可能な装置であれば良い。例えば、端末装置として、デジタルカメラ、携帯端末、ノートＰＣ、タブレット端末、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、音楽再生デバイス等を適用可能である。また、通信装置として、本実施形態では、複写機能、ＦＡＸ機能、印刷機能を備えるマルチファンクションペリフェラル（以後、ＭＦＰ）を例示しているが、これに限定されず、端末装置と通信を行うことが可能な装置であれば、種々のものを適用可能である。例えば、プリンタであれば、インクジェットプリンタ、フルカラーレーザービームプリンタ、モノクロプリンタ等を適用可能である。また、プリンタのみならず複写機やファクシミリ装置、スマートホン、携帯端末、ノートＰＣ、タブレット端末、ＰＤＡ、デジタルカメラ、音楽再生デバイス、ストレージ等も適用可能である。その他、単一の機能を備えるシングルファンクションプリンタ（以後、ＳＦＰ）も適用可能である。
【００１２】
＜システム構成＞
まず、本実施形態を実現するためのシステム構成について、図１〜図６を用いて説明する。
【００１３】
図１は、本実施形態の通信システムの構成を示す図である。このシステムは、アクセスポイント４００、端末装置２００及びＭＦＰ３００を含むものとする。
【００１４】
端末装置２００は、本実施形態の端末装置である。ＭＦＰ３００は、本実施形態の通信装置である。また、ＭＦＰ３００と端末装置２００は、それぞれの装置外部のアクセスポイント４００を介してＷＬＡＮ（Ｗｉｒｅｌｅｓｓ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）接続し、相互に通信することが可能である。また、ＭＦＰ３００や端末装置２００は、それぞれの装置自身がアクセスポイントとして動作することもできる。そのため、例えばどちらか一方の装置がアクセスポイントとなり、もう一方の装置が当該アクセスポイントに接続することで、端末装置２００とＭＦＰ３００はアクセスポイント４００を介さずに直接無線ＬＡＮ接続することも可能である。また、端末装置２００とＭＦＰ３００は共にＷＬＡＮの機能を有するため、認証処理を実行することによってピアツーピア（以後、Ｐ２Ｐ）の通信が可能となる。なお、各装置は、アクセスポイントとして動作する場合、通信相手の装置と無線ＬＡＮを形成し、ビーコン（Ｂｅａｃｏｎ）信号を定期的に送信する。さらに、各装置は、アクセスポイントとして動作する場合、無線通信のために使用されるチャネルを決定したり、通信相手の装置から送信される接続情報（パスワード等）の認証処理を行う。
【００１５】
アクセスポイントとクライアントから構成される無線通信システムについて説明する。アクセスポイントとなる装置は、まず、ビーコン信号を送信する。そして、クライアントは、ビーコン信号を受信すると、アクセスポイントに機器探索コマンド（Ｐｒｏｂｅ  Ｒｅｑｕｅｓｔフレーム）を送信して通信相手となる装置（通信相手装置）を探索して発見する。探索側の装置は、機器探索コマンドに、種々の属性（パラメータ）を付随することが可能である。特にＰ２Ｐ無線接続の場合には、機器探索コマンドに、Ｐ２Ｐ無線接続に関する情報（Ｐ２Ｐエレメント）が含まれている。して、アクセスポイントが、受信した機器探索コマンドを参照して応答コマンド（Ｐｒｏｂｅ  Ｒｅｓｐｏｎｓｅフレーム）を送信すると、相互に相手側の装置を発見することができる（装置探索（Ｄｉｓｃｏｖｅｒｙ））。以降、装置の種類を示す機器情報やＩＰアドレスの確認等のシーケンスが実行され、その後に、印刷等の各種アプリケーションの実行が可能となる。
【００１６】
図２は端末装置２００の外観を示す図である。
【００１７】
ＷＬＡＮユニット２０１は、ＷＬＡＮによって無線通信を行うためのユニットである。ＷＬＡＮユニット２０１は、例えばＩＥＥＥ８０２．１１シリーズに準拠したＷＬＡＮシステムにおけるデータ（パケット）通信が可能であるものとする。すなわち、ＷＬＡＮユニット２０１は、例えば、Ｗｉ−Ｆｉ（登録商標）による通信を実行可能であるものとする。ＷＬＡＮユニット２０１は、ＷＬＡＮ接続を確立するための、ビーコン検知処理や認証処理、ＷＬＡＮ接続を確立した通信装置への印刷ジョブの送信等の機能を担う。また、ＷＬＡＮユニット２０１は、Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔ（ＷＦＤ）をベースにした通信、ソフトウェアＡＰモード、アドホックモード、インフラストラクチャモードによる通信などが可能である。Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔ（ＷＦＤ）をベースにした通信、ソフトウェアＡＰモードによる通信、アドホックモードによる通信とは、アクセスポイントとして動作している通信相手の装置（ＭＦＰ３００等）とダイレクトに（中継装置を介さず）通信することを指す。また、インフラストラクチャモードによる通信とは、ネットワーク上に設置された端末装置２００外部の中継装置（アクセスポイント４００等）を介して、通信相手の装置と通信することを指す。
【００１８】
表示部２０２は、例えば、ＬＣＤ方式の表示機構を備えたディスプレイである。具体的には、表示部２０２は、ボタンアイコンやソフトウェアキーボードの表示を行う。
【００１９】
操作部２０３は、タッチパネル方式の操作機構を備えており、ユーザによる操作を検知する。具体的には、操作部２０３は、表示部２０２が表示するボタンアイコンやソフトウェアキーボードにユーザが触れることによって発生する操作イベントを検知する。
【００２０】
電源キー２０４は電源をオン及びオフをする際に用いられるハードキーである。
【００２１】
図３はＭＦＰ３００の外観を示す図である。原稿台３０１は、スキャナ（読取部）によって読み取られる原稿が載せられるガラス状の透明な台である。原稿蓋３０２は、スキャナによって読取が行われる際に原稿を押さえたり、読取の際に原稿に照射される読取光が外部に漏れないようにしたりするための蓋である。
【００２２】
印刷用紙挿入口３０３は様々なサイズの用紙をセット可能な挿入口である。印刷用紙挿入口３０３にセットされた用紙は、図示しない印刷部に一枚ずつ搬送され、印刷部で印刷が行われて印刷用紙排出口３０４から排出される。
【００２３】
操作表示部３０５は、文字入力キー、カーソルキー、決定キー、取り消しキー等のキーと、ＬＥＤ（発光ダイオード）やＬＣＤ（液晶ディスプレイ）などから構成され、ユーザから、ＭＦＰとしての各種機能の起動や各種設定を受け付けることができる。なお、操作表示部３０５は、タッチパネルで構成されてもよい。
【００２４】
ＷＬＡＮアンテナ３０６は、ＷＬＡＮによって通信するためのアンテナである。
【００２５】
図４は、操作表示部３０５に表示される画面の一例を示した図である。図４（ａ）は、ＭＦＰ３００が印刷やスキャン等の動作をしていない状態（アイドル状態）で操作表示部３０５に表示される画面（ホーム画面）である。ＭＦＰ３００は、操作表示部３０５にホーム画面が表示されている状態で、ユーザからキー操作やタッチパネル操作を受け付けることで、コピーやスキャン、インターネット通信を利用したクラウド機能のメニュー表示や各種設定、機能を実行可能である。操作表示部３０５は、上述の操作を受け付けることによって、シームレスに図４（ａ）に示すホーム画面とは異なる画面を表示することができる。図４（ｂ）は、その一例である。ＭＦＰ３００は、操作表示部３０５に図４（ｂ）に示すホーム画面が表示されている状態で、ユーザによってキー操作やタッチパネル操作を受け付けることで、プリントやフォト機能の実行やＬＡＮ設定の変更を実行可能である。図４（ｃ）は、操作表示部３０５に図４（ｂ）の画面が表示されている状態で、ＬＡＮ設定を実行するための操作がユーザによって行われた際に表示される画面である。ＭＦＰ３００は、図４（ｃ）に示す画面における「無線ＬＡＮ」がユーザ操作によって選択された場合、後述するインフラストラクチャモードの有効／無効設定をユーザから受け付ける。また、このとき、ＭＦＰ３００は、後述するインフラ接続におけるＭＦＰ３００の接続相手（アクセスポイント４００等）の設定もユーザから受け付ける。また、ＭＦＰ３００は、図４（ｃ）に示す画面における「無線ダイレクト」がユーザ操作によって選択された場合、ＷＦＤ機能の有効／無効設定をユーザから受け付ける。また、ＭＦＰ３００は、図４（ｃ）に示す画面における「無線ダイレクトネゴシエーション」がユーザ操作によって選択された場合、後述するネゴシエーション設定の有り／無しの設定をユーザから受け付ける。
【００２６】
図５は、端末装置２００の構成を示すブロック図である。
【００２７】
端末装置２００は、装置自身のメインの制御を行うメインボード５０１と、ＷＬＡＮ通信を行うＷＬＡＮユニット５１７とを有する。
【００２８】
メインボード５０１において、ＣＰＵ（中央演算処理部）５０２は、システム制御部であり、ＲＯＭ５０３に格納されたプログラムの実行やハードウェアの起動により、端末装置２００の全体を制御する。なお、端末装置２００が実行する後述の処理は、ＣＰＵ５０２による制御によって実行される。
【００２９】
ＲＯＭ５０３は、ＣＰＵ５０２が実行する制御プログラムや組込オペレーティングシステム（ＯＳ）プログラム等を記憶する。本実施形態では、ＲＯＭ５０３に記憶されている各制御プログラムは、ＲＯＭ５０３に記憶されている組込ＯＳの管理下で、スケジューリングやタスクスイッチ等のソフトウェア制御を行う。
【００３０】
ＲＡＭ５０４は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成されるメモリである。ＲＡＭ５０４は、プログラム制御変数等のデータや、ユーザが登録した設定値や端末装置２００の管理データ等のデータを記憶する。なお、ＲＡＭ５０４には、各種ワーク用バッファ領域が設けられている。
【００３１】
画像メモリ５０５は、ＤＲＡＭ等のメモリで構成され、ＷＬＡＮユニット５１７を介して受信した画像データや、データ蓄積部５１３から読み出した画像データを、ＣＰＵ５０２によって処理するために一時的に記憶する。
【００３２】
不揮発性メモリ５１２は、フラッシュメモリ（ｆｌａｓｈ  ｍｅｍｏｒｙ）等のメモリで構成され、電源がオフされても保持されるべきデータを記憶する。
【００３３】
なお、端末装置２００が保持するメモリ構成はこの形態に限定されるものではなく、用途や目的に応じて、その数や特性、記憶容量等が適宜変更されても良い。例えば、画像メモリ５０５とＲＡＭ５０４を共有させてもよいし、データ蓄積部５１３にデータのバックアップ等が行われてもよい。また、本実施形態では、画像メモリ５０５にＤＲＡＭが用いられているものとするが、例えば、ハードディスク（ＨＤＤ）や不揮発性メモリ等の他の記憶媒体を使用しても良い。
【００３４】
データ変換部５０６は、種々の形式のデータの解析や、画像データに対する色変換、画像変換等のデータ変換を行う。
【００３５】
電話部５０７は、電話回線の制御を行い、スピーカ部５１４を介して入出力される音声データを処理することで電話による通信を実現する。
【００３６】
操作部５０８は、操作部２０４から出力される信号を制御し、ユーザによる操作を検知する。
【００３７】
ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）５０９は、端末装置２００の現在の緯度や経度等の位置情報を取得する。
【００３８】
表示部５１０は、表示部２０２に表示させる画面の内容を電子的に制御しており、表示部２０２に、各種入力操作画面や、ＭＦＰ３００の動作状況画面、ステータス状況画面の表示等を行うことができる。
【００３９】
カメラ部５１１は、レンズを介して入力された画像を電子的に記録して符号化する機能を有している。カメラ部５１１で撮影された画像に対応する画像データはデータ蓄積部５１３に保存される。
【００４０】
スピーカ部５１４は電話機能のための音声を入力または出力する機能や、その他、アラーム通知等の機能を実現する。
【００４１】
電源部５１５は、携帯可能な電池であり、端末装置２００内への電力供給制御を行う。端末装置２００の電源状態には、電池に残量が無い電池切れ状態、電源キー２０５が押下されていない電源オフ状態、通常起動している起動状態、起動しているが起動状態よりも消費電力が小さい省電力状態がある。
【００４２】
ＷＬＡＮユニット５１７は、ＷＬＡＮによって無線通信を行うためのユニットである。ＷＬＡＮユニット５１７は、例えばＩＥＥＥ８０２．１１シリーズに準拠したＷＬＡＮシステムにおけるデータ（パケット）通信が可能であるものとする。すなわち、ＷＬＡＮユニット５１７は、例えば、Ｗｉ−Ｆｉ（登録商標）による通信を実行可能であるものとする。ＷＬＡＮユニット５１７は、ＷＬＡＮ接続を確立するための、ビーコン検知処理や認証処理、ＷＬＡＮ接続を確立した通信装置への印刷ジョブの送信等の機能を担う。ＷＬＡＮユニット５１７により、端末装置２００は、ＭＦＰ３００等の他デバイスとのデータ通信を行う。ＷＬＡＮユニット５１７は、データをパケットに変換し、他デバイスにパケット送信を行ったり、逆に、外部の他デバイスからのパケットを、元のデータに復元してＣＰＵ５０２に対して送信したりする。なお、ＷＬＡＮユニット５１７はバスケーブル５１６介してメインボード５０１に接続されている。
【００４３】
メインボード５０１内の各種構成要素（５０３〜５１５及び５１７）は、ＣＰＵ５０２が管理するシステムバス５１９を介して、相互に接続されている。
【００４４】
図６はＭＦＰ３００の構成を示すブロック図である。
【００４５】
ＭＦＰ３００は、装置自身のメインの制御を行うメインボード６０１と、ＷＬＡＮ通信を行うＷＬＡＮユニット６１６とを有する。
【００４６】
メインボード６０１において、ＣＰＵ６０２は、システム制御部であり、ＲＯＭ６０３に格納されたプログラムの実行やハードウェアの起動により、ＭＦＰ３００の全体を制御する。また、ＣＰＵ６０２は、ＭＦＰ３００の装置状態を把握して、後述の各処理を実行する。また、ＣＰＵ６０２は、ＭＦＰ３００の全体を制御するため、後述のＡＰサーチ以外の処理（例えば、印刷制御やスキャン制御等の処理）を実行する役割も担う。
【００４７】
ＲＯＭ６０３は、ＣＰＵ６０２が実行する制御プログラムや組込ＯＳプログラム等を記憶する。本実施形態では、ＲＯＭ６０３に記憶されている各制御プログラムは、ＲＯＭ６０３に記憶されている組込ＯＳの管理下で、スケジューリングやタスクスイッチ等のソフトウェア制御を行う。
【００４８】
ＲＡＭ６０４は、ＳＲＡＭやＤＲＡＭ等で構成されるメモリである。ＲＡＭ６０４は、プログラム制御変数等のデータや、ユーザが登録した設定値、ＭＦＰ３００の管理データ等のデータを記憶する。なお、ＲＡＭ６０４には、各種ワーク用バッファ領域が設けられている。
【００４９】
不揮発性メモリ６０５は、フラッシュメモリ等のメモリで構成され、電源がオフされても保持されるべきデータを記憶する。
【００５０】
画像メモリ６０６は、ＤＲＡＭ等のメモリで構成され、ＷＬＡＮユニットを介して受信した画像データや、符号復号化処理部６１１で処理した画像データなどを蓄積する。
【００５１】
また、端末装置２００が保持するメモリ構成と同様に、ＭＦＰ３００が保持するメモリ構成はこの形態に限定されるものではなく、用途や目的に応じて、その数や特性、記憶容量等が適宜変更されても良い。
【００５２】
データ変換部６０８は、種々の形式のデータの解析や、画像データから印刷データへの変換等を行う。
【００５３】
読取制御部６０７は、読取部６０９（例えば、ＣＩＳイメージセンサ（密着型イメージセンサ））を制御して、原稿上の画像を光学的に読み取る。そして読取制御部６０７は、読み取った画像を電気的な画像データに変換した画像信号を出力する。このとき読取制御部６０７は、２値化処理や中間調処理等の各種画像処理を施してから画像信号を出力しても良い。
【００５４】
操作表示部６１０は、操作表示部３０５に対応し、ユーザから、ＭＦＰとしての各種機能の起動や各種設定を受け付ける。
【００５５】
符号復号化処理部６１１は、ＭＦＰ３００で扱う画像データ（ＪＰＥＧ、ＰＮＧ等）に対して符号復号化処理や、拡大縮小処理を行う。
【００５６】
給紙部６１３は印刷のための記録媒体を保持する。なお、給紙部６１３は、複数種類の記録媒体を一つの装置に保持するために、複数用意されていても良い。
【００５７】
印刷制御部６１４は、給紙部６１３を制御し、印刷部６１２に記録媒体を供給することができる。なお、給紙部６１３が複数用意されている場合、印刷制御部６１４は、複数の給紙部６１３のうちいずれの給紙部から給紙を行うかの制御を行うことができる。
【００５８】
印刷制御部６１４は、印刷される画像データに対し、スムージング処理や印刷濃度補正処理、色補正等の各種画像処理を施してから印刷部６１２に出力する。
【００５９】
印刷部６１２は、インクタンクから供給されるインクをプリントヘッドから吐出させて画像を印刷するインクジェットプリンタである。なお、印刷部６１２は、インクジェットプリンタでなくとも良く、例えば、レーザービームプリンタ等であっても良い。また、印刷制御部６１４は、印刷部６１２の情報を定期的に読み出してＲＡＭ６０４の情報を更新する。具体的には、印刷制御部６１４は、インクタンクの残量やプリントヘッドの状態等のステータス情報を更新する。ＷＬＡＮユニット６１６は、ＷＬＡＮユニット２０１に対応するため、説明を省略する。ＷＬＡＮユニット６１６はバスケーブル６１５を介してメインボード６０１に接続されている。なお、端末装置２００及びＭＦＰ３００は各装置が備えるＷＬＡＮユニットによってＷｉ−Ｆｉ  Ｄｉｒｅｃｔ（ＷＦＤ）をベースにした通信が可能であり、ソフトウェアアクセスポイント（ソフトウェアＡＰ）機能を有している。ソフトウェアＡＰ機能とは、当該機能を実行する装置を、ソフトウェアベースのアクセスポイントとして動作させるための機能である。
【００６０】
ＮＷサブシステム６２０は、ＣＰＵ６０２の制御負荷を低減させるためのサブシステムであり、ネットワーク通信関連の入出力制御をつかさどる。ＮＷサブＣＰＵ６２１は、ネットワーク通信関連の入出力制御を実行するためのＣＰＵである。ＮＷサブＣＰＵ６２１は、ＣＰＵ６０２が実行可能な処理のうち一部の処理をＣＰＵ６０２の代わりに実行することで、ＣＰＵ６０２の制御負荷を低減させるためのＣＰＵである。そのため、本実施形態では、ＮＷサブＣＰＵ６２１が実行する処理の範囲は、ＣＰＵ６０２が実行する処理の範囲より狭いものとする。また、例えば処理速度やキャッシュ容量に関する性能は、ＮＷサブＣＰＵ６２１よりＣＰＵ６０２の方が高いものとする。また、ＮＷサブＣＰＵ６２１は、ＣＰＵ６０２と比較して、アクセス可能な領域が限定されており、例えば、ＭＦＰ３００の装置情報等を取得するためには、ＣＰＵ６０２からＣＰＵ間通信によって取得する必要がある。ＲＡＭ６０４の一部にはＮＷサブＣＰＵ６２１によって実行される制御コードが保存されており、当該制御コードは、ＣＰＵ６０２のブートシーケンスにおいて、ＲＡＭ６０４からＲＡＭ６２２へＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送される。なお、当該制御コードは、６２１がネットワーク通信関連の入出力制御を実行するためのコードである。ＮＷサブシステム内の各モジュール（６２１、６２２、６２３）は、メイン側システムバス６１８とは分離されたローカルバス６２４を介して相互接続されている。ＮＷサブシステム６２０が、ネットワーク通信関連の機能モジュールのうち、特にハードウェアレイヤに近い層の機能を担うことで、メインボード上の他のモジュールの負荷状況の影響を最小化した、独立性が高いネットワーク制御を実現している。
【００６１】
ＷＬＡＮユニット６１６は、端末装置２００が備えるＷＬＡＮユニットと同様の機能を有するため、説明を省略する。なお、ＷＬＡＮユニット６１６は、ＮＷサブシステム６２０内のＵＨＯＳＴモジュール６２３とＵＳＢバス６２５を介して接続されている。なお、以下、メインボード６０１におけるＮＷサブシステム６２０以外のシステムを本体サブシステムという。
【００６２】
メインボード６０１内の各種構成要素（６０２〜６１４、６１６〜６１７、６２０）は、ＣＰＵ６０２が管理するシステムバス６１８を介して、相互に接続されている。
【００６３】
＜Ｐ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）モードについて＞
ＷＬＡＮにおける通信においてＰ２Ｐ方式の接続を確立するために、本実施形態のＭＦＰ３００は、Ｐ２Ｐモード（ソフトウェアＡＰモード又はＷｉ−Ｆｉ  Ｄｉｒｅｃｔ（ＷＦＤ）モード）で動作するものとする。なお、本実施形態では、Ｐ２Ｐ方式の接続とは、外部装置を介さずに装置同士が直接的に無線接続する形態を指す。ＭＦＰ３００が外部装置を介さずに端末装置２００と接続する場合、ＭＦＰ３００の通信モードとしてＰ２Ｐモードが設定される。なお、ＭＦＰ３００と端末装置２００とのＰ２Ｐ接続が切断されたり、ＭＦＰ３００の電源がオフされても、設定変更等によりＭＦＰ３００の通信モードが変更されない限りは、ＭＦＰ３００はＰ２Ｐモードとして動作し続ける。なお、本実施形態において、Ｐ２Ｐモードの設定変更は、ＭＦＰ３００のＷＦＤ機能のオン／オフに対応する。
【００６４】
なお、ＷＦＤは、ＷｉＦｉ  Ａｌｌｉａｎｃｅによって策定された規格である。ＷＦＤ対応機器である端末装置２００及びＭＦＰ３００は、アクセスポイントとして動作するためのソフトウェアアクセスポイント（ソフトＡＰ）機能を有している。そのため、端末装置２００及びＭＦＰ３００は、ＷＦＤにより、他のアクセスポイントを介さずに相互に直接、無線接続することが可能となる。なお、ＷＦＤによって通信するＷＦＤ対応機器のうちいずれがソフトＡＰとして動作するかは、ＧｒｏｕｐＯｗｎｅｒＮｅｇｏｔｉａｔｉｏｎというシーケンス（以下、ネゴシエーション）に従って決定される。具体的には、各装置に予め設定されているインテント値の大小に基づいて、いずれがソフトＡＰとして動作するかが各装置間で決定される。以下、ソフトＡＰの役割を果たす装置を特に、ＧｒｏｕｐＯｗｎｅｒという。なお、本実施形態では、装置間の通信には、Ｗｉ−Ｆｉ標準規格で規定された、２．４ＧＨｚ周波数帯の１〜１３チャネルが利用されるものとする。ＧｒｏｕｐＯｗｎｅｒは、装置間の通信に使用するチャネルを決定する役割を担う。そのため、ネゴシエーションは、装置間の通信に利用されるチャネルを決定する装置として動作するか否かを特定する処理とも言える。なお、ＭＦＰ３００が利用するチャネルは、１〜１３チャネルに限定されない。例えば、ＭＦＰ３００は、２．４ＧＨｚと５ＧＨｚの周波数帯を使って通信可能な場合、１〜１３、３６〜１４０チャネルを利用可能である。
【００６５】
なお、各モードによって通信する装置からなる通信システムでは、探索側の装置が機器探索コマンド（例えば、Ｐｒｏｂｅ  Ｒｅｑｕｅｓｔフレーム）を使用して通信相手となる装置（通信相手装置）を探索して発見する。探索側の装置は、機器探索コマンドに、種々の属性（パラメータ）を付随することが可能である。特にＰ２Ｐ方式による接続のための探索時には、機器探索コマンドに、Ｐ２Ｐ無線接続に関する情報（Ｐ２Ｐエレメント）が含まれている。機器探索コマンドに応答する装置は、探索コマンドに属性が指定されていた場合には、通常、探索側の装置のモードの仕様および前提となる仕様（ＷＦＤであればＷｉ−Ｆｉ）で規定されている範囲で、解釈可能な属性に最大限応答をする事が推奨されている。また、機器探索コマンドに応答する装置は、機器探索コマンドに付随する情報（上記属性を含む）が解釈できない場合であっても、解釈できる情報のみを元に応答することも可能である。
【００６６】
以下、各モードにおける無線接続シーケンスについて、図７、図８を用いて説明する。
【００６７】
図７はソフトウェアＡＰモードにおける無線接続シーケンスを示す図である。なお、本シーケンスにおいて各装置が実行する処理は、各装置が備えるＲＯＭ等のメモリに格納された各種プログラムを、各装置が備えるＣＰＵがＲＡＭに読み出して実行することにより実現される。また、本シーケンスは、端末装置２００がクライアント、ＭＦＰ３００がソフトウェアＡＰとして動作し、ＭＦＰ３００がビーコン（Ｂｅａｃｏｎ）信号を発信している状態で開始されるものとする。なお、ＭＦＰ３００は、ソフトウェアＡＰとして動作するための所定の操作をユーザから受け付けた場合、ソフトウェアＡＰとしての動作を開始する。なお、所定の操作とは例えば、ＬＡＮ設定画面における、ソフトウェアＡＰとしての動作を開始させるための所定のアイコンを選択する操作である。
【００６８】
まず、Ｓ７０１にて、端末装置２００は、端末装置２００が利用可能なチャネルを順に使用して機器探索コマンドを送信し、ソフトウェアＡＰとなる装置を検索する。
【００６９】
続いて、Ｓ７０２にて、ＭＦＰ３００は、端末装置２００から送信された機器探索コマンドを受信した場合、機器探索コマンドに対する応答である機器探索応答を端末装置２００に送信する。なお、ＭＦＰ３００は、自身が使用可能なチャネル以外のチャネルで送信された機器探索コマンドに対しては機器探索応答を送信しない。例えば、ＭＦＰ３００が使用可能なチャネルが第４チャネルであるとすると、ＭＦＰ３００は、第１チャネルを使用して送信された装置探索リクエストコマンドに対しては応答コマンドを送信しない。そのため、端末装置２００は、第１チャネルを使用して機器探索コマンドを送信した後、一定時間以上ＭＦＰ３００からの応答がない場合には、第２チャネルを使用して装置探索リクエストコマンドを送信する。端末装置２００は、以上のような試行を、使用するチャネルの番号をインクリメントしながら繰り返す。そして例えば、ＭＦＰ３００は、端末装置２００が第４チャネルを使用して送信した機器探索コマンドを受信すると、端末装置２００に機器探索応答を送信する。これにより、端末装置２００は、ＭＦＰ３００を発見することになる。なお、機器探索応答の送信に利用されたチャネルが、以後、端末装置２００とＭＦＰ３００との間の通信に利用されるチャネルとして決定される。すなわち、端末装置２００とＭＦＰ３００との間の通信に利用されるチャネルは、ソフトＡＰとして動作するＭＦＰ３００によって決定される。
【００７０】
続いて、Ｓ７０３にて、端末装置２００とＭＦＰ３００との間で、公知の無線接続の確立処理を実行する。具体的には、接続要求の送信や、接続要求の認証、ＩＰアドレスの割当等の処理が行われる。なお、端末装置２００とＭＦＰ３００との間での無線接続の確立処理において送受信されるコマンドやパラメータについては、Ｗｉ−Ｆｉ規格で規定されているものが用いられればよく、ここでの説明は省略する。
【００７１】
図８はＷＦＤモードにおける無線接続シーケンスを示す図である。なお、本シーケンスにおいて各装置が実行する処理は、各装置が備えるＲＯＭ等のメモリに格納された各種プログラムを、各装置が備えるＣＰＵがＲＡＭに読み出して実行することにより実現される。また、本処理は、各装置がＷＦＤ機能を実行するための所定のアプリケーションを起動している状態で、ＷＦＤによる接続を確立するための所定の操作をユーザから受け付けた場合に開始されるものとする。
【００７２】
まず、Ｓ８０１にて、端末装置２００は、機器探索コマンドを送信し、通信相手の装置として、ＷＦＤ機能に対応している装置を検索する。
【００７３】
続いて、Ｓ８０２にて、ＭＦＰ３００は、受信した機器探索コマンドに対する応答である機器探索応答を端末装置２００に送信する。これにより、端末装置２００は、ＷＦＤ機能に対応している装置として、ＭＦＰ３００を発見することになる。なお、端末装置２００がＭＦＰ３００を発見した後、各装置の間で、各装置が供給可能なサービスや機能に関する情報を交換する処理が行われても良い。
【００７４】
続いて、Ｓ８０３にて、端末装置２００とＭＦＰ３００との間で、ネゴシエーション処理を行う。ネゴシエーション処理とは、各装置が保持する所定の設定値を用いて、Ｐ２Ｐ方式による通信における役割（ＧｒｏｕｐＯｗｎｅｒとクライアント）を決定する処理である。なお、ネゴシエーション処理により各装置の役割が決定された場合、各装置の間で、Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔによる通信を行うためのパラメータが交換される（パラメータ交換フェーズ）。パラメータ交換フェーズは、例えば、Ｗｉ−Ｆｉ  Ｐｒｏｔｅｃｔｅｄ  Ｓｅｔｕｐによって自動的に無線ＬＡＮセキュリティのパラメータが交換されることに対応する。なお、ネゴシエーションが行われた後、ＧｒｏｕｐＯｗｎｅｒが、以後の通信に利用するチャネルを決定する。
【００７５】
その後、Ｓ８０４にて、各装置は、交換したパラメータに基づいて、無線接続の確立処理を実行する。
【００７６】
なお、ＭＦＰ３００は、ＷＦＤモードにおける無線接続シーケンスにおいてネゴシエーションを実行するか否かの設定をユーザから受け付け可能であっても良い。ＭＦＰ３００は、ネゴシエーションを実行しないものとして設定されている場合は、自身がＧｒｏｕｐＯｗｎｅｒとして動作する。
【００７７】
なお、以後、Ｐ２Ｐモードによって通信するための接続（アクセスポイント４００を介さない端末装置２００との接続）をＰ２Ｐ接続という。
【００７８】
＜インフラストラクチャモードについて＞
上述したように、インフラストラクチャモードとは、通信を行う装置（例えば、端末装置２００とＭＦＰ３００）が、ネットワークを統括する外部装置（例えば、アクセスポイント４００）を介して通信する形態である。ＭＦＰ３００がアクセスポイント４００を介して端末装置２００と接続する場合、ＭＦＰ３００の通信モードとしてインフラストラクチャモードが設定される。なお、ＭＦＰ３００とアクセスポイント４００との接続が切断されたり、ＭＦＰ３００の電源がオフされても、設定変更等によりＭＦＰ３００の通信モードが変更されない限りは、ＭＦＰ３００はインフラストラクチャモードとして動作し続ける。
【００７９】
図９は、インフラストラクチャモードにおける無線接続シーケンスを示す図である。なお、本シーケンスにおいて各装置が実行する処理は、各装置が備えるＲＯＭ等のメモリに格納された各種プログラムを、各装置が備えるＣＰＵがＲＡＭに読み出して実行することにより実現される。
【００８０】
まず、Ｓ９０１にて、端末装置２００は、端末装置２００が利用可能なチャネルを順に使用して機器探索コマンドを送信し、ソフトウェアＡＰとなる装置を検索する。
【００８１】
続いて、Ｓ９０２にて、アクセスポイント４００は、端末装置２００から送信された機器探索コマンドを受信した場合、機器探索コマンドに対する応答である機器探索応答コマンドを端末装置２００に送信する。なお、Ｓ７０２の説明において述べたように、アクセスポイント４００は、自身が使用可能なチャネルで送信された機器探索コマンドに対してのみ機器探索応答コマンドを送信する。これにより、端末装置２００は、アクセスポイント４００を発見することになる。なお、機器探索応答コマンドの送信に利用されたチャネルが、以後、端末装置２００とアクセスポイント４００との間の通信に利用されるチャネルとして決定される。すなわち、インフラストラクチャモードによる通信に利用されるチャネルは、アクセスポイント４００によって決定される。
【００８２】
続いて、Ｓ９０３にて、端末装置２００とアクセスポイント４００との間で、公知の無線接続の確立処理を実行する。具体的には、接続要求の送信や、接続要求の認証、ＩＰアドレスの割当等の処理が行われる。なお、Ｐ２Ｐモードと同様、端末装置２００とＭＦＰ３００との間での無線接続の確立処理において送受信されるコマンドやパラメータについては、Ｗｉ−Ｆｉ規格で規定されているものが用いられればよく、ここでの説明は省略する。
【００８３】
Ｓ９０４〜Ｓ９０６では、Ｓ９０１〜Ｓ９０３と同様の処理が、ＭＦＰ３００とアクセスポイント４００との間で実行される。なお、このときアクセスポイント４００は、機器探索応答コマンドを、端末装置２００との通信に利用しているチャネルを用いてＭＦＰ３００に送信する。すなわち、アクセスポイント４００は、ＭＦＰ３００及び端末装置２００と、同一のチャネルを用いて通信する。
【００８４】
これにより、アクセスポイント４００を介してＭＦＰ３００と端末装置２００とが接続することとなり、ＭＦＰ３００と端末装置２００との間で、アクセスポイント４００を介した通信が可能となる。
【００８５】
なお、以後、インフラストラクチャモードによって通信するための接続（アクセスポイント４００を介した端末装置２００との接続）をインフラ接続という。
【００８６】
＜同時動作モードについて＞
ＭＦＰ３００は、インフラストラクチャモードによる通信と、Ｐ２Ｐモードによる通信を、同時に（並行して）実行可能であり、インフラストラクチャモードとしての動作とＰ２Ｐモードとしての動作を同時に（並行して）実行可能であるものとする。そのため、ＭＦＰ３００は、インフラストラクチャモードによって通信するための接続と、Ｐ２Ｐモードによって通信するための接続とを同時に（並行して）確立することができる。以後、インフラストラクチャモードによって通信するための接続（アクセスポイント４００を介した端末装置２００との接続）をインフラ接続という。また、Ｐ２Ｐモードによって通信するための接続（アクセスポイント４００を介さない端末装置２００との接続）をＰ２Ｐ接続という。また、以後、インフラ接続とＰ２Ｐ接続を同時に（並行して）維持して動作することを、同時動作という。ＭＦＰ３００がインフラストラクチャモードとしての動作とＰ２Ｐモードとしての動作を同時に（並行して）実行する場合、ＭＦＰ３００の通信モードとしてインフラストラクチャモードが設定される。なお、ＭＦＰ３００と端末装置２００との接続やＭＦＰ３００とアクセスポイント４００との接続が切断されたり、ＭＦＰ３００の電源がオフされても、ＭＦＰ３００の通信モードが変更されない限りは、ＭＦＰ３００は同時動作モードで動作し続ける。
【００８７】
本実施形態においては、ＭＦＰ３００は、ＷＦＤモードにおける無線接続シーケンスにおいてネゴシエーションを実行するか否かの設定をユーザから受け付け可能であり、ネゴシエーションを実行する設定がなされている場合は、同時動作しないものとする。
【００８８】
＜同時動作モードにおけるチャネル決定シーケンス＞
インフラストラクチャモードによる通信及びＰ２Ｐモードによる通信は、特定の周波数帯域（特定のチャネル）を使用して行われる。そのため、インフラストラクチャモードによる通信とＰ２Ｐモードによる通信のいずれにおいても、通信が開始される前に、まず、各装置間の通信・接続に利用されるチャネルが決定される必要がある。なお、１つの無線ＩＣチップに同時に複数のチャネルを割り当てて通信させる形態では、通信を行う各装置の構成や各装置が実行する処理が複雑となってしまう。従って、例えば、ＭＦＰ３００が同時動作する場合は、各モードにおける通信において、共通のチャネルが使用されることが望ましい。すなわち、ＭＦＰ３００は、同時動作している場合においても、１つのチャネルのみを使用することが望ましい。そのため、本実施形態では、ＷＬＡＮユニット６１６は、所定のチャネルによる通信を実現する無線ＩＣチップを１つのみ有するものとし、ＭＦＰ３００は、同時に複数のチャネルを用いて通信しないものとする。
【００８９】
上述したように、ＭＦＰ３００がＧｒｏｕｐＯｗｎｅｒまたはソフトＡＰとして動作しているのであれば、Ｐ２Ｐ接続に利用されるチャネルは、ＭＦＰ３００が自由に決定可能である。しかしながら、インフラ接続に利用されるチャネルは、アクセスポイント４００によって決定される。そのため、ＭＦＰ３００は、同時動作する場合は、アクセスポイントによって決定された、インフラ接続に利用するチャネルを、Ｐ２Ｐ接続に利用するチャネルとして決定することが好ましい。
【００９０】
なお、本実施形態では、インフラ接続、及びＰ２Ｐ接続では、いずれもＷｉ−Ｆｉ標準規格で規定された、２．４ＧＨｚ周波数帯の１〜１３チャネルが利用されるものとする。しかしながら、異なる周波数帯ではチャネル数が増えたり、国や地域によっては周波数帯の規制により、同じ周波数帯でも１〜１１チャネルに限定されたりする。そのため、ＭＦＰ３００によって利用されるチャネルは、１〜１３チャネルに限定されるものではない。また、例えば、ＩＥＥＥ  ８０２．１１ａの規格では、５ＧＨｚの周波数帯の３６〜１４０チャネルが利用可能である。また、ＭＦＰ３００は、２．４ＧＨｚ（１〜１３チャネル）と５ＧＨｚ（３６〜１４０チャネル）の周波数帯を使う場合、利用可能なチャネル数は、どちらか一方の周波数帯を使う形態と比較して多くなる。そのため、両周波数帯が用いられる場合、アクセスポイントに機器探索コマンドを送信すべきチャネル数は増える。
【００９１】
＜再接続処理について＞
例えば、電波状況が悪くなったり、接続に用いられるチャネルの設定が変更されること等を切断要因として、ＭＦＰ３００とアクセスポイント４００との間の無線接続が切断される場合がある。この場合、ＭＦＰ３００は、アクセスポイント４００との再接続を試みる。ここでは、ＭＦＰ３００がアクセスポイント４００と再接続するために実行する処理（再接続処理）について説明する。
【００９２】
図１７は、ＭＦＰ３００が同時動作している状態で、ＭＦＰ３００とアクセスポイント４００との接続が切断された場合に行われる再接続処理のシーケンスを示す図である。なお、本シーケンスにおいて各装置が実行する処理は、各装置が備えるＲＯＭ等のメモリに格納された各種プログラムを、各装置が備えるＣＰＵがＲＡＭに読み出して実行することにより実現される。また、本シーケンスが示す処理は、ＭＦＰ３００が、ソフトウェアＡＰとして動作している状態で開始されるものとする。
【００９３】
まず、Ｓ１７０１にて、図９の説明において述べた処理と同様にして、ＭＦＰ３００とアクセスポイント４００が無線接続を確立し、アクセスポイント４００を介してＭＦＰ３００と通信相手装置がインフラ接続を確立する。なおここでは、ＭＦＰ３００とアクセスポイント４００との接続（インフラ接続）に利用されるチャネルは、第ｐチャネルとして決定されたものとする。
【００９４】
また、Ｓ１７０２にて、図８の説明において述べた処理と同様にして、ＭＦＰ３００と端末装置２００がＰ２Ｐ接続を確立する。なお、ＭＦＰ３００とアクセスポイント４００との間の接続に利用されるチャネルが第ｐチャネルであるため、ＭＦＰ３００と端末装置２００との接続（Ｐ２Ｐ接続）に利用されるチャネルも第ｐチャネルとして決定される。
【００９５】
続いて、Ｓ１７０３にて、上述した切断要因等により、ＭＦＰ３００とアクセスポイント４００との接続（インフラ接続）が切断される。すなわち、ＭＦＰ３００が、アクセスポイント４００を介した通信相手装置とのインフラ接続と、端末装置２００とのＰ２Ｐ接続を並行して確立している状態で、ＭＦＰ３００とアクセスポイント４００との接続が切断される。このとき具体的には、アクセスポイント４００が、切断コマンドをＭＦＰ３００に送信する。
【００９６】
なお、図１７では、Ｓ１７０３にてＭＦＰ３００とアクセスポイント４００との接続が切断されたとしても、端末装置２００とＭＦＰ３００のＰ２Ｐ接続は維持されているものとする。
【００９７】
続いて、Ｓ１７０４にて、ＭＦＰ３００は、アクセスポイント４００を再度発見して接続するために、切断されたインフラ接続において使用されていて且つ現在Ｐ２Ｐ接続において使用している第ｐチャネルを使用してアクセスポイント４００の検索を行う。すなわち、ＭＦＰ３００は、第ｐチャネルを使用して装置探索リクエストコマンドをアクセスポイント４００に送信する。なおこのとき、ＭＦＰ３００は、装置探索リクエストコマンドの送信を複数回実行しても良い。また、以後、アクセスポイント４００の検索をＡＰサーチという。
【００９８】
続いて、Ｓ１７０５にて、装置探索リクエストコマンドを受信したアクセスポイント４００は、装置探索リクエストコマンドに対する応答である機器探索応答コマンドをＭＦＰ３００に送信する。その後、Ｓ１７０６にて公知の接続処理が実行されることにより、ＭＦＰ３００とアクセスポイント４００との接続が再開される。
【００９９】
これにより、ＭＦＰ３００は、ＭＦＰ３００とアクセスポイント４００との接続が一旦切断されても、第ｐチャネルを使用して、インフラ接続を再度確立することができる。
【０１００】
しかしながら例えば、接続の切断後に、アクセスポイント４００が自律的に周囲の電波環境の混雑状況を参照して使用チャネルを比較的空いているチャネルに遷移させた場合等には、アクセスポイント４００が利用するチャネルが、接続の切断前から変化する。また、アクセスポイント４００が接続に利用するチャネルが変更されたことが、そもそも接続が切断された要因である場合もある。
【０１０１】
アクセスポイント４００が利用するチャネルが変更された場合、アクセスポイント４００は、変更後のチャネルにより送信される装置探索リクエストコマンドにしか応答しない。そのため、ＭＦＰ３００は、切断されたインフラ接続に使用していたチャネル（つまり第ｐチャネル）によるＡＰサーチでは、アクセスポイント４００と再接続することができない。そこで本実施形態のＭＦＰ３００は、切断されたインフラ接続に使用していたチャネルによってＡＰサーチを実行した結果、再接続が実行できなかった場合に、切断されたインフラ接続に使用していたチャネル以外のチャネルによってＡＰサーチを実行する。
【０１０２】
図１８は、ＭＦＰ３００が、切断されたインフラ接続に使用していたチャネル以外のチャネルによってアクセスポイント４００を検索する処理を含む再接続処理のシーケンスを示す図である。なお、本シーケンスにおいて各装置が実行する処理は、各装置が備えるＲＯＭ等のメモリに格納された各種プログラムを、各装置が備えるＣＰＵがＲＡＭに読み出して実行することにより実現される。また、本シーケンスが示す処理は、ＭＦＰ３００が、ソフトウェアＡＰとして動作している状態で開始されるものとする。
【０１０３】
Ｓ１８０１〜Ｓ１８０４までの処理は、Ｓ１７０１〜Ｓ１７０４までの処理と同様であるため、説明を省略する。なお、Ｓ１８０３において、ＭＦＰ３００とアクセスポイント４００との接続が切断された後、アクセスポイント４００が使用するチャネルが、第ｐチャネルから第ｑチャネルに変更されたものとする。
【０１０４】
上述のようにアクセスポイント４００が使用するチャネルが変更されたため、ＭＦＰ３００は、Ｓ１８０４における第ｐチャネルを用いたＡＰサーチでは、アクセスポイント４００を検出することはできない。そのため、ＭＦＰ３００は、第ｐチャネルを用いたＡＰサーチを、アクセスポイント４００を検出することなく所定の回数繰り返した場合、Ｓ１８０５にて、第ｐチャネル以外のチャネルを使用したＡＰサーチを行う。具体的には、ＭＦＰ３００は、使用可能な全チャネルを第１チャネルから順に使用して、ＡＰサーチを行う。なお、ＭＦＰ３００は、各チャネルを使用したＡＰサーチにおいて、装置探索リクエストコマンドの送信を複数回実行しても良い。なお、このとき、ＭＦＰ３００が利用可能な全てのチャネルで装置探索リクエストが送信されなくとも良い。すなわち、ＭＦＰ３００とアクセスポイント４００との接続が切断される直前に、ＭＦＰ３００とアクセスポイント４００との間の通信において使用されていたチャネル以外のチャネルが少なくとも使用されて装置探索リクエストが送信されれば良い。
【０１０５】
アクセスポイント４００が使用するチャネルは第ｑチャネルであるため、ＭＦＰ３００が第ｑチャネルを使用してＡＰサーチを行った場合、Ｓ１８０６にて、アクセスポイント４００は、機器探索応答コマンドをＭＦＰ３００に送信する。
【０１０６】
その後、Ｓ１８０７にて、ＭＦＰ３００は、Ｐ２Ｐ接続に利用するチャネルを切り替えるため、一旦端末装置２００とのＰ２Ｐ接続を切断する。なお、端末装置２００とのＰ２Ｐ接続が切断されるタイミングは、Ｓ１８０６の後に限定されず、例えば、ＭＦＰ３００とアクセスポイント４００との接続が切断された後、Ｐ２Ｐモードによって通信されたデータの処理が完了したタイミング等であっても良い。
【０１０７】
その後、Ｓ１８０８及び１１０９にて、公知の接続処理が実行されることにより、ＭＦＰ３００とアクセスポイント４００との接続（インフラ接続）及びＭＦＰ３００と端末装置２００との接続（Ｐ２Ｐ接続）が再開される。
【０１０８】
なお、装置間で無線接続を再開する場合に送受信されるコマンドやパラメータについては、Ｗｉ−Ｆｉ規格で規定されているものが用いられればよく、ここでの説明は省略する。
【０１０９】
なお上述の形態において、ＭＦＰ３００とアクセスポイント４００との接続が切断された後にアクセスポイント４００が使用するチャネルが変更されていなければ、ＭＦＰ３００は、Ｓ１８０４におけるＡＰサーチによってアクセスポイント４００と再接続する。この場合は、ＭＦＰ３００は、Ｓ１８０５の処理を省略する。
【０１１０】
これにより、ＭＦＰ３００は、ＭＦＰ３００とアクセスポイント４００との接続が切断された後、何らかの要因でアクセスポイント４００が使用するチャネルが変更された場合も、アクセスポイント４００と再接続することができる。
【０１１１】
しかしながら、上述したように、本実施形態のＭＦＰ３００は、同時に（並行して）複数のチャネルを使用しない。そのため、ＭＦＰ３００は、インフラ接続に使用していたチャネル（現在Ｐ２Ｐ接続に使用しているチャネル）以外のチャネルによってＡＰサーチを実行する場合、Ｐ２Ｐモードによる通信を一旦停止する必要がある。この場合、Ｐ２Ｐモードによる通信において、パケットロスや、送信パケットの遅延が発生したりするおそれがある。なお、パケットロスとは、Ｐ２Ｐ接続に使用するチャネルを用いて端末装置２００が送信したパケットが、Ｐ２Ｐ接続に使用するチャネル以外のチャネルをＭＦＰ３００が使用していたことによりＭＦＰ３００に受信されず失われてしまうことをいう。また、送信パケットの遅延とは、ＭＦＰ３００がＰ２Ｐ接続に使用するチャネル以外のチャネルを使用していることで端末装置２００へパケット送信できなかった場合、Ｐ２Ｐ接続に使用するチャネルが使用可能となるまでパケットの送信が遅延することをいう。
【０１１２】
なお、Ｐ２Ｐモードによる通信がＴＣＰ層を経由したネットワーク通信であれば、パケットロスが発生しても、ロスされたパケットが再送されるが、ＵＤＰ層を経由したネットワーク通信である場合は、ロスされたパケットが再送されることはない。そのため、端末装置２００のＯＳ、ドライバ、またはアプリケーションの挙動によっては、パケットロスが生じることによって、Ｐ２Ｐモードによる通信における通信相手装置が検出できなかったり、アプリケーションが利用できなかったりするおそれがある。
【０１１３】
そこで、図１８に示す再接続処理では、現在Ｐ２Ｐ接続に使用しているチャネルによるＡＰサーチを先に実行する形態としている。これにより、インフラ接続切断後にアクセスポイントが使用するチャネルが変更されていなければ、Ｐ２Ｐモードによる通信におけるパケットロスや送信パケット遅延をできるだけ発生させずにアクセスポイントを検出することができる。
【０１１４】
なお、上述した再接続処理はあくまで一例であり、本実施形態では、上述した再接続処理のほか、後述する図１４に示すような、ＭＦＰ３００の状態に応じた種々の再接続処理が実行される。
【０１１５】
図１０に、ＣＰＵ６０２およびＮＷサブＣＰＵ６２１が実行するソフトウェアのドメインブロック図を示す。なお、１０００〜１０３０のソフトウェアはＲＯＭ６０３に、１０３１〜１０３４のソフトウェアはＷＬＡＮユニット６１６が備えるメモリに格納されているものとする。また、１０００〜１０１９のソフトウェアはＣＰＵ６０２によって実行され、１０２０−１０３０のソフトウェアはＮＷサブＣＰＵ６２１によって実行されるものとする。また、１０３１〜１０３４のソフトウェアはＷＬＡＮユニット６１６が備えるＣＰＵによって実行されるものとする。メインシステム１０００は、ＣＰＵ６０２によって実行される、μＩｔｒｏｎ規格準拠の組込ＯＳ１００１、装置全体に関わる状態遷移をつかさどるシステムタスクが含まれるＳＹＳドメイン１００２、および各機能ドメインによって全体が構成される。
【０１１６】
ＮＷサブシステム６２０は、メインシステム１０００の一部であり、ＮＷサブＣＰＵ６２１によって実行される組込ＯＳ１０２０とＮＷサブシステム内の状態遷移をつかさどるＳＹＳドメイン１０２１、およびネットワーク関連の各機能ドメインで構成される。
【０１１７】
ＣＰＵ６０２が実行するＩ／Ｆドメイン１０１０には、アプリドメイン１００５と連携した各種サービスプロトコル毎のインターフェース制御ブロック群が含まれる。ＷＳＤ（ＷｅｂＳｅｒｖｉｃｅＦｏｒＤｅｖｉｃｅ）１０１４は、ＷＳＤに準拠した印刷やスキャン、ＦＡＸを実行するためのソフトウェアである。ＩＰＰ（ＩｎｔｅｒｎｅｔＰｒｉｎｔｉｎｇＰｒｏｔｏｃｏｌ）１０１５は、ＩＰＰに準拠した印刷やスキャン、ＦＡＸを実行するためのソフトウェアである。Ｉ／ＦアプリＭｇｒタスク１０１６は、ＷＳＤ１０１４やＩＰＰ１０１５等の各サービスプロトコルに割り当てるＨＴＴＰタスク１０１７のリソース（本数）を管理することによって、各サービスの実行状態を把握するためのソフトウェアである。ＣＰＵ６０２は、各サービスプロトコルによって、各サービスプロトコルに割り当てられたＨＴＴＰタスクを経由したソケットＡＰＩ１０１９によって、ＮＷサブシステム６２０との間で双方向のＣＰＵ間データ通信を実施する。各ソケットのパラメータには、インターフェース情報としてインフラストラクチャーモード／ＷＦＤモード／ソフトウェアＡＰモードを示す接続モード情報が付加されている。
【０１１８】
ＣＰＵ６０２は、ソケットＡＰＩ経由の送受信パケットを、ＮＷサブシステム６２０内のＴＣＰ／ＩＰタスク１０２６やＵＤＰタスク１０２７でハンドリングする。そして、ＣＰＵ６０２は、ソケットＡＰＩ経由の送受信パケットを経路制御し、インターフェース情報に応じて、インフラコントローラ１０２４やＰ２Ｐコントローラ１０２５、データコントローラ１０２８に渡す。その後、ＣＰＵ６０２は、ソケットＡＰＩ経由の送受信パケットを、ＷＬＡＮチップコントローラ１０２９によって、パケットデータと８０２．１１等の通信規格に沿ったデータにフォーマット変換する。そして最後に、ＣＰＵ６０２は、変換後のデータを、ＵＳＢのパケットサイズである５１２バイト単位に分割し、ＵＳＢＨＯＳＴドライバタスク１０３０によるＤＭＡ制御によって、ＷＬＡＮユニット６１６に到達させる。
【０１１９】
ＷＬＡＮユニット内には、ユニット間データ送受信を担うＵＳＢモジュール１０３１、８０２．１１規格に準拠した制御用の２つのモジュール（データ制御モジュール１０３２、波形制御モジュール１０３３）が存在する。また、ＷＬＡＮユニット内には、単一無線アンテナの送受信のためのＷＬＡＮＲＦモジュール１０３４が存在する。
【０１２０】
また、ＣＰＵ６０２及びＮＷサブシステム６２０が共通して実行するソフトウェアとして、パケットデータ送受信用のソケットＡＰＩや、コントロールＡＰＩ１０１８が存在する。コントロールＡＰＩ１０１８は、ＮＷサブシステム内の各制御モジュールの設定変更や実行コマンドの指示、およびネットワーク状態変化の通知等を行うためのＡＰＩである。Ｉ／Ｆドメイン内の、Ｉ／Ｆ接続Ｍｇｒ１０１１・同時動作接続シーケンサ１０１２・ＡＰサーチハンドラ１０１３からは、コントロールＡＰＩ経由で、Ｉ／Ｆドメイン内の状態や周辺ドメインの状態に応じたコマンドが発行される。
【０１２１】
ＮＷサブＣＰＵ６２１は、ＮＷサブＭｇｒ１０２２によって、Ｉ／Ｆドメイン内の各要素から発行されたコマンドをハンドリングする。ＮＷサブＣＰＵ６２１は、ハンドリングするコマンドの種類に応じて、インフラコントローラ１０２４やＰ２Ｐコントローラ１０２５を用いて、インフラストラクチャモードやＰ２Ｐモードの起動・終了制御と設定変更指示を行う。また、本実施形態では、ＭＦＰ３００が同時動作しており、装置状態や周辺ドメイン状態が考慮された接続処理が必要な場合には、同時動作接続シーケンサ１０１２によってＣＰＵ６０２単独で接続を実行する。一方、本実施形態では、ＭＦＰ３００が同時動作しておらず、装置状態や周辺ドメイン状態が考慮された接続処理が必要ない場合には、ＮＷサブ接続シーケンサ１０２３によってＮＷサブＣＰＵ６２１単独で接続を実行する。例えば、ユーザ操作（本体ＵＩ操作等）に起因しない再接続処理が行われる場合は、ＮＷサブ接続シーケンサ１０２３により、バックグランドでＡＰサーチが実行され続ける。なお、ユーザ操作に起因しない再接続処理が行われる場合とは、具体的には例えば、インフラストラクチャモードで動作するＭＦＰ３００とアクセスポイントとの接続が切断された場合である。また、このとき、ＮＷサブ接続シーケンサ１０２３により、ＭＦＰ３００が使用可能な全てのチャネルによってＡＰサーチが実行される。このような構成とすることで、ＡＰが使用するチャネルが変更された場合にも、ＭＦＰ３００とＡＰとを再接続させることが可能である。
【０１２２】
本実施形態では、種々のコマンドがＣＰＵ６０２とＮＷサブＣＰＵ６２１間で通信される。ここで、ＣＰＵ６０２とＮＷサブＣＰＵ６２１間のＣＰＵ間通信について説明する。
【０１２３】
図１２は、ＣＰＵ６０２がコントロールＡＰＩタスクによって実行する処理を示すフローチャートを示す図である。コントロールＡＰＩタスクは、ＣＰＵ６０２とＮＷサブＣＰＵ６２１間のＣＰＵ間通信を実行するタスクであり、コマンド送信と状態通知イベント受信（ＮＷサブＣＰＵ側からみればコマンド受信と状態通知イベント配信）の責務を担っている。コマンド送信におけるコマンドとパラメータ、イベント受信におけるイベントと通知情報は、双方のＣＰＵからアクセス可能なＲＡＭ６０４の一部に確保された共有ＲＡＭとＣＰＵ間割込信号とによって、イベントドリブン形式でやり取りされる。なお、本フローチャートが示す処理は、例えば、ＲＯＭ６０３等のメモリに格納されたコントロールＡＰＩ１０１８に対応するプログラムをＣＰＵ６０２がＲＡＭ６０４に読み出して実行することにより実現される。
【０１２４】
まずＣＰＵ６０２は、Ｉ／Ｆドメイン１０１０内の各タスクからコマンドメッセージが発行された時、又はＮＷサブＣＰＵ６２１からの状態通知イベント割込みが発生した時にＷＡＩＴタスクから復帰して、コントロールＡＰＩタスクを実行する（Ｓ１２００）。その後、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１に送信するコマンドがあるか否かを判定する（Ｓ１２０１）。例えば、ＣＰＵ６０２は、後述するＳ１１０５・Ｓ１１１２・Ｓ１１２１・Ｓ１１２６等でコマンドをＮＷサブＣＰＵ６２１に送信する場合には、送信するコマンドとパラメータを共有ＲＡＭにセットする（Ｓ１２０２）。その後、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１にセットしたコマンドを送信する（Ｓ１２０３）。ＮＷサブＣＰＵ６２１は、送信された各コマンドを、ＮＷサブＭｇｒ１０２２によって受け付けた後、ＮＷサブ接続シーケンサ１０２３・インフラコントローラ１０２４・Ｐ２Ｐコントローラ１０２５の各タスクに配信し、コマンドに応じた処理を実行する。
【０１２５】
一方、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１に送信するコマンドがない場合には、ＮＷサブＣＰＵ６２１から受け付けた通知に応じて各処理を実行する。
【０１２６】
後述するＳ１１０５やＳ１１２１において送信されるインフラ接続コマンドに対応して、ＮＷサブＣＰＵ６２１がインフラ接続処理を実行した場合、ＣＰＵ６０２は、インフラ接続完了通知をＮＷサブＣＰＵ６２１から受信する（Ｓ１２１０）。ＣＰＵ６０２は、共有ＲＡＭ経由で情報を取得し（Ｓ１２７０）、取得情報に含まれる、インフラ接続に成功したチャネルの番号や割り当てられたＩＰアドレス等を保存する（Ｓ１２１１）。その後、ＣＰＵ６０２は、Ｓ１１０６やＳ１１２２で参照されるインフラ接続完了イベントを発生させる（Ｓ１２１２）。
【０１２７】
また、ＭＦＰ３００がアクセスポイント４００を介して通信相手装置とインフラ接続している状態で、ＭＦＰ３００とアクセスポイント４００との接続が切断される場合がある。この場合、ＮＷサブＣＰＵ６２１からＣＰＵ６０２へ、インフラ接続が切断されたことを示す切断イベントが通知される（Ｓ１２２０）。その後、ＣＰＵ６０２は、切断イベントの通知において、ＮＷサブＣＰＵ６２１から通知される情報がある場合には、共有ＲＡＭ経由で情報を取得する（Ｓ１２７０）。なおこのとき、ＮＷサブＣＰＵ６２１から通知される情報がない場合には、Ｓ１２７０の処理は省略される。その後、ＣＰＵ６０２は、後述の再接続処理において参照されるインフラ再接続Ｍｓｅｇを発行する（Ｓ１２２１）。
【０１２８】
また、後述するＳ１１１２やＳ１１２６において送信されるＰ２Ｐ起動コマンドに対応して、ＮＷサブＣＰＵ６２１は、Ｐ２Ｐコントローラ１０２５を起動し、ＭＦＰ３００をソフトウェアＡＰとして動作させる。これにより、ソフトウェアＡＰとして動作するＭＦＰ３００の識別子となるＳＳＩＤ名（プリンタＳＳＩＤ名）を含むビーコン信号がＷＬＡＮユニット６１６から周期的にブロードキャストされる。そして、ＮＷサブＣＰＵ６２１は、ビーコンを検出した端末装置２００からの機器探索リクエスト（ＰｒｏｂｅＲｅｑｕｅｓｔ）を受け付けた場合、Ｐ２Ｐコントローラ１０２５によって機器探索応答（ＰｒｏｂｅＲｅｓｐｏｎｓｅ）を端末装置２００に送信する。機器探索応答を受け付けた端末装置２００は、ソフトウェアＡＰとして動作しているＭＦＰ３００への接続要求を送信する。ＮＷサブＣＰＵ６２１は、接続要求を受信し、パスワード認証が成功した場合、端末装置２００へ接続許可を送信することで、ＭＦＰ３００と端末装置２００とのＰ２Ｐ接続が確立することになる。
【０１２９】
本実施形態では、ＭＦＰ３００は、ＭＦＰ３００がＧｒｏｕｐＯｗｎｅｒなるＰ２Ｐ接続において、最大５台までの端末装置２００との接続を許可している。Ｐ２Ｐ接続中の端末装置の台数（Ｐ２Ｐ接続台数）の管理のために、ＣＰＵ６０２は、Ｐ２Ｐ接続時はＰ２Ｐデバイス接続通知を受信する（Ｓ１２３０）。そして、ＭＦＰ３００は、Ｐ２Ｐ接続の切断（端末装置２００の離脱）時はＰ２Ｐデバイス切断通知（Ｓ１２４０）をＮＷサブＣＰＵ６２１から受信する。その後、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１から通知される情報がある場合には、共有ＲＡＭ経由で情報を取得する（Ｓ１２７０）。なおこのとき、ＮＷサブＣＰＵ６２１から通知される情報がない場合には、Ｓ１２７０の処理は省略される。そして、ＣＰＵ６０２は、受け付けた通知に応じて、ＲＡＭ等のメモリに保存されているＰ２Ｐ接続台数の値を加減し（Ｓ１２３１・Ｓ１２４１）、接続Ｍｓｅｇや切断Ｍｓｅｇを発行する（Ｓ１２３２・Ｓ１２４２）。
【０１３０】
ＣＰＵ６０２は、接続Ｍｓｅｇを発行すると、Ｉ／ＦアプリＭｇｒタスクによって、アプリドメイン１００５および各サービスプロトコル１０１４・１０１５等と連携し、物理層での接続に続くアプリケーション・サービス層での接続処理を実施する（不図示）。
【０１３１】
また、ＣＰＵ６０２は、切断Ｍｓｅｇを発行すると、Ｉ／ＦアプリＭｇｒタスクによって、Ｐ２Ｐ接続が解除された端末装置２００に割り当てられていたＨＴＴＰリソースの解放処理を実施する（不図示）。Ｐ２Ｐ接続台数情報やＨＴＴＰのリソース情報は、後述する、同時動作におけるインフラ切断後の再接続処理で参照されることになる。
【０１３２】
また、ＡＰサーチの結果、ＷＬＡＮユニット６１６がアクセスポイント４００から機器探索応答（ＰｒｏｂｅＲｅｓｐｏｎｓｅ）を受信した場合、ＣＰＵ６０２は、ＡＰサーチ完了通知をＮＷサブＣＰＵ６２１から受信する（Ｓ１２５０）。その後、ＣＰＵ６０２は、共有ＲＡＭ経由で情報を取得する（Ｓ１２７０）。そしてＣＰＵ６０２は、取得した情報に含まれる、検出したアクセスポイント４００のＭＡＣアドレス及び検出に成功した通信チャネルの番号を内部ＲＡＭに保存し（Ｓ１２５１）、同時接続シーケンサタスクにＡＰサーチ完了イベントを発行する。（Ｓ１２５２）
また、ＡＰサーチの結果、ＷＬＡＮユニット６１６がアクセスポイント４００から接続許可応答のレスポンスを受信した場合、ＣＰＵ６０２は、ＡＰ  ＪＯＩＮ完了通知をＮＷサブＣＰＵ６２１から受信する（Ｓ１２６０）。その後、ＣＰＵ６０２は、共有ＲＡＭ経由で情報を取得する（Ｓ１２７０）。そしてＣＰＵ６０２は、取得した情報に含まれる、アクセスポイント４００から割り振られたＩＰアドレスおよびインフラ接続に利用する通信チャネル番号を内部ＲＡＭに保存し（Ｓ１２６１）、ＡＰ  ＪＯＩＮ完了イベントを発行する（Ｓ１２６２）。
【０１３３】
続いて、ネットワークの接続・切断・再接続のシーケンスを説明する。
【０１３４】
図１１は、ＣＰＵ６０２がＩ／Ｆ接続Ｍｇｒ１０１１によって実行する処理を示すフローチャートである。無線ネットワークの接続処理を中心に、パワーオン時の処理・切断再接続時の処理・パラメータ変更時の処理とを、順に説明していく。なお、本フローチャートが示す処理は、例えば、ＲＯＭ６０３等のメモリに格納されたＩ／Ｆ接続Ｍｇｒ１０１１に対応するプログラムをＣＰＵ６０２がＲＡＭ６０４に読み出して実行することにより実現される。
【０１３５】
［パワーオン（電源オン）時の処理］
以下、ＭＦＰ３００の電源がオフ状態からオン状態に復帰した際に実行される接続処理について説明する。以下の処理は、ＭＦＰ３００が電源オフ状態になる前のＭＦＰ３００の接続状態を復帰させる処理である。
【０１３６】
ＭＦＰ３００のパワーオン時には、パワーオンＭｓｅｇが、ＳＹＳドメインから各ドメインに発行される。ＣＰＵ６０２は、Ｉ／Ｆドメインに発行されたパワーオンＭｓｅｇを、接続Ｍｇｒ１０１１によって処理する（Ｓ１１０１）。
【０１３７】
その後、ＣＰＵ６０２は、ＭＦＰ３００内の不揮発性メモリ（不図示）に保持されているユーザ設定値を参照し、ＭＦＰ３００が同時動作モードか否かを判定する（Ｓ１１０２）。
【０１３８】
ＣＰＵ６０２は、ＭＦＰ３００が同時動作モードでないと判定した場合は、ＭＦＰ３００がインフラストラクチャモードか否かを判定する（Ｓ１１０３）。ＣＰＵ６０２は、ＭＦＰ３００がインフラストラクチャモードであると判定した場合、インフラ接続を確立するための接続処理を実行する。具体的には、まずＣＰＵ６０２は、不揮発性メモリに保存されている、インフラ接続を実行するためのネットワークパラメータ（ＳＳＩＤ・認証方法・パスワード等）を取得する（Ｓ１１０４）。このネットワークパラメータは、前回のパワーオフ時にインフラ接続していたアクセスポイントと接続するためのパラメータに相当する。そして、ＣＰＵ６０２は、コントロールＡＰＩタスクで取得したパラメータをコマンド引数としたインフラ接続コマンドを、コントロールＡＰＩタスク経由でＮＷサブＣＰＵ６２１に発行する（Ｓ１１０５）。なお、インフラ接続コマンドとは、取得したパラメータによってインフラ接続を再度確立させる再接続処理をＮＷサブＣＰＵ６２１に実行させるためのコマンドである。すなわち、ＣＰＵ６０２は、パワーオン時にＭＦＰ３００がインフラストラクチャモードである場合、再接続処理を、ＮＷサブＣＰＵ６２１に実行させることを特定する。
【０１３９】
インフラ接続コマンドを受け付けたＮＷサブＣＰＵ６２１は、ＮＷサブ接続シーケンサ１０２３によって、アクセスポイントの検索処理及び検出したアクセスポイントとの接続処理から構成されるシーケンス処理を実行する。具体的には、ＮＷサブＣＰＵ６２１は、図１８に示す再接続処理におけるＳ１８０４〜Ｓ１８０６、Ｓ１８０８の処理を実行する。
【０１４０】
続いて、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１が実行する再接続処理により、アクセスポイントとの接続が完了したか否かを判定する（Ｓ１１０６）。具体的には、ＣＰＵ６０２は、コントロールＡＰＩタスク経由のインフラ接続完了イベントが発生したか否かを判定する。ＣＰＵ６０２は、アクセスポイントとの接続が完了していないと判定した場合、Ｓ１１０６の処理を再度実行する。一方、ＣＰＵ６０２は、アクセスポイントとの接続が完了したと判定した場合、接続に成功したチャネルの番号や、接続完了後にアクセスポイントからＭＦＰ３００に割り振られるＩＰアドレス等の接続情報を取得し（Ｓ１１０７）、不揮発性メモリに保存する。
【０１４１】
このように、ＣＰＵ６０２は、パワーオン時にＭＦＰ３００がインフラストラクチャモードである場合は、パワーオフ時に切断されたインフラ接続を、パワーオン時に再開することができる。
【０１４２】
また、ＣＰＵ６０２は、Ｓ１１０３において、ＭＦＰ３００がインフラストラクチャモードでないと判定した場合（ＭＦＰ３００がＰ２Ｐモードの場合）は、Ｐ２Ｐモード時に使用されるＭＦＰ３００内のアクセスポイントを有効にする。具体的にはまず、ＣＰＵ６０２は、ＭＦＰ３００内のアクセスポイント経由での通信（Ｐ２Ｐモードによる通信）に利用するチャネルを決定する（Ｓ１１１０）。なお、利用されるチャネルの番号は、デフォルト値が設定されているものとし、ここでは３番のチャネルが利用されるものとする。なお、この番号のチャネルに限定されず、任意の番号のチャネルが利用されて良い。
【０１４３】
続いて、ＣＰＵ６０２は、ＭＦＰ３００内のアクセスポイントとの接続に利用されるネットワークパラメータ（ＳＳＩＤ、パスワード、利用されるチャネル番号等）を取得する（Ｓ１１１１）。そして、ＣＰＵ６０２は、取得したパラメータをコマンド引数としたＡＰ起動コマンドを、コントロールＡＰＩタスク経由でＮＷサブＣＰＵ６２１に発行する（Ｓ１１１２）。なお、ＡＰ起動コマンドとは、取得したパラメータによって接続可能なソフトＡＰを起動させる処理をＮＷサブＣＰＵ６２１に実行させるためのコマンドである。
【０１４４】
ＡＰ起動コマンドを受け付けたＮＷサブＣＰＵ６２１は、ＡＰ起動コマンドに含まれるネットワークパラメータを参照し、Ｐ２Ｐ接続に利用するチャネル番号（３番）を特定する。そして、ＮＷサブＣＰＵ６２１は、ＭＦＰ３００内のアクセスポイントを有効化し、３番のチャネルを用いて、ＭＦＰ３００内のアクセスポイントのＳＳＩＤ等が含まれるビーコン信号を周期的に発信する。その後、ＮＷサブＣＰＵ６２１は、端末装置２００からの機器探索リクエストを待ち、機器探索リクエストを受信した場合は、機器探索応答を端末装置２００に送信して、ＭＦＰ３００と端末装置２００とのＰ２Ｐ接続を確立する。
【０１４５】
このように、ＣＰＵ６０２は、パワーオン時にＭＦＰ３００がＰ２Ｐモードである場合は、パワーオフ時に切断されたＰ２Ｐ接続を、パワーオン時に再開することができる。
【０１４６】
また、上述したように、パワーオン時にＭＦＰ３００がインフラストラクチャモードである場合、及びパワーオン時にＭＦＰ３００がＰ２Ｐモードである場合には、再接続処理をＮＷサブＣＰＵ６２１が実行する。このような形態とすることで、再接続処理にかかる負荷がＣＰＵ６０２にかかることを抑制できる。
【０１４７】
一方、ＣＰＵ６０２は、Ｓ１１０２において、ＭＦＰ３００が同時動作モードであると判定した場合、同時動作を実行するために、インフラ接続の確立及びＭＦＰ３００内のアクセスポイントの有効化を行う。具体的には、ＣＰＵ６０２は、Ｓ１１２０〜Ｓ１１２３において、Ｓ１１０４〜Ｓ１１０７と同様の処理を行い、ＭＦＰ３００とアクセスポイントとの接続を確立する。その後、ＣＰＵ６０２は、Ｓ１１２４〜Ｓ１１２６において、Ｓ１１１０〜Ｓ１１１２と同様の処理を行い、ＭＦＰ３００内のアクセスポイントの有効化を行う。なお、Ｓ１１２４において、ＣＰＵ６０２は、アクセスポイントとの接続に成功したチャネルの番号を特定し、特定した番号のチャネルを、ＭＦＰ３００内のアクセスポイント経由での通信（Ｐ２Ｐモードによる通信）に利用するチャネルとして決定する。そして、ＣＰＵ６０２は、Ｓ１１１１及びＳ１１１２と同様の処理を実行することで（Ｓ１１２５、Ｓ１１２６）、Ｓ１１２４において決定したチャネルで接続可能なＭＦＰ３００内のアクセスポイントが起動する。
【０１４８】
このように、ＣＰＵ６０２は、パワーオン時にＭＦＰ３００が同時動作モードである場合は、パワーオフ時に切断されたＰ２Ｐ接続及びインフラ接続を、パワーオン時に再開することができる。
【０１４９】
また、上述したように、パワーオン時にＭＦＰ３００が同時動作モードである場合には、再接続処理をＮＷサブＣＰＵ６２１が実行する。これは、パワーオン時には、インフラ接続とＰ２Ｐ接続が共に切断された状態であるため、各接続によって通信されるデータの処理等を担うアプリケーションが実行されておらず、ＭＦＰ３００本体の状態に応じた再接続処理が実行される必要がないためである。再接続処理をＮＷサブＣＰＵ６２１が実行することにより、再接続処理にかかる負荷がＣＰＵ６０２にかかることを抑制できる。
【０１５０】
以上で、パワーオン処理の無線ネットワーク接続処理に関して説明した。パワーオン時は、ＣＰＵ６０２は、エンジンドメインやＵＩドメイン等を用いた装置全体の起動処理を行う必要がある。そのためパワーオン時の再接続処理をＣＰＵ６０２が実行する形態では、接続処理シーケンスが複雑化するだけでなく、装置全体の起動処理にかけられるリソース不足により起動処理に時間がかかり、ユーザーの利便性が損なわれてしまう。そこで、本実施形態においては、パワーオン時の再接続処理をＮＷサブＣＰＵ６２１が実行することで、無線接続シーケンスが負荷分散され、ＣＰＵ６０２は、スムーズに起動処理を遂行することができる。
【０１５１】
なお、本実施形態は、後述のＬＡＮ設定変更処理やインフラ再接続処理においては、ＭＦＰ３００が同時動作モードの場合には、ＭＦＰ３００の装置状態に応じた再接続処理が実行される。そのため、ＭＦＰ３００の装置状態を速やかに取得可能なＣＰＵ６０２が再接続処理を実行する。一方、パワーオン処理においては、ＭＦＰ３００が同時動作モードの場合にもＮＷサブＣＰＵ６２１が再接続処理を実行する。これは、パワーオン処理においては、ＭＦＰ３００が同時動作モードであっても、Ｐ２Ｐ接続とインフラ接続共に切断されている状態であるため、Ｐ２Ｐ接続とインフラ接続で共通のチャネルを利用していることによる再接続時の問題が発生しないためである。そのため、ＣＰＵ６０２にかかる負荷を軽減することを優先し、ＮＷサブＣＰＵ６２１に再接続処理を実行させる。
【０１５２】
［ＬＡＮ設定変更処理］
以下、図４（ｃ）のＬＡＮ設定変更画面に対する入力のために操作表示部６１０をユーザが操作することで、ユーザからＬＡＮ設定の変更が指示された場合に実行される接続処理について説明する。なお、指示されるＬＡＮ設定変更は、例えば、インフラストラクチャモードの有効／無効設定や、ＷＦＤ機能の有効／無効設定、ＭＦＰ３００がＰ２Ｐモード時に有効なソフトＡＰの接続情報（ＳＳＩＤやパスワード）の変更設定、ネゴシエーション設定等である。他にも、例えば、インフラストラクチャモードによる通信に利用される暗号方式の設定等が指示されても良い。
【０１５３】
ユーザからＬＡＮ設定の変更が指示された場合、ＵＩドメイン１００４からＩ／Ｆ接続Ｍｇｒ１０１１にＬＡＮ設定変更Ｍｓｅｇが発行されるため、ＣＰＵ６０２は、ＬＡＮ設定変更処理を開始する（Ｓ１１３０）。
【０１５４】
続いて、ＣＰＵ６０２は、ＭＦＰ３００内の不揮発性メモリ（不図示）に保持されているユーザ設定値を参照し、ＭＦＰ３００が同時動作モードか否かを判定する（Ｓ１１３１）。ＣＰＵ６０２は、ＭＦＰ３００が同時動作モードでないと判定した場合は、コントロールＡＰＩタスク経由でＮＷサブＣＰＵ６２１にＬＡＮ設定変更コマンドを発行する（Ｓ１１３２）。なお、ＬＡＮ設定変更コマンドとは、ユーザから指示されたＬＡＮ設定の変更をＮＷサブＣＰＵ６２１に実行させるためのコマンドである。
【０１５５】
ＬＡＮ設定変更コマンドを受け付けたＮＷサブＣＰＵ６２１は、ユーザから指示されたＬＡＮ設定の変更内容に応じて、インフラコントローラ１０２４もしくはＰ２Ｐコントローラ１０２５に実行処理メッセージを受け渡す。これにより、ＮＷサブＣＰＵ６２１は、ユーザから指示されたＬＡＮ設定の変更内容を適用する処理を実行する。
【０１５６】
一方、ＣＰＵ６０２は、ＭＦＰ３００が同時動作モードであると判定した場合は、後述するＳ１１４２以降の処理を実行する。
【０１５７】
詳細は後述するが、ＭＦＰ３００が同時動作モードであれば、ＣＰＵ６０２がＬＡＮ設定変更処理を実行し、ＭＦＰ３００が同時動作モードでなければ、ＮＷサブＣＰＵ６２１がＬＡＮ設定変更処理を実行する。ＬＡＮ設定変更処理には、例えば、通信帯域の変更や通信に利用されるチャネルの変更等が伴う場合がある。また、同時動作モードでは、ＭＦＰ３００は、インフラストラクチャモードによる通信と、Ｐ２Ｐモードによる通信とを、同じ通信帯域や同じチャネルによって実行している。そのため、ＭＦＰ３００が同時動作モードで動作している状態におけるＬＡＮ設定変更処理においては、パラメータの整合性や、パラメータ変更のタイミングと装置動作状態との整合性の確認が必要になる場合がある。そこで、本実施形態では、ＭＦＰ３００の装置状態やＭＦＰ３００で実行中のアプリの実行状態まできめ細かく把握することができるＣＰＵ６０２が、ＭＦＰ３００が同時動作モードで動作している状態におけるＬＡＮ設定変更処理を実行するものとする。
【０１５８】
［インフラ再接続処理］
以下、ＭＦＰ３００がアクセスポイント４００を介して通信相手装置とインフラ接続している状態で、ＭＦＰ３００とアクセスポイント４００との接続が切断された（インフラ接続が切断された）場合に実行される再接続処理について説明する。
【０１５９】
ＭＦＰ３００とアクセスポイント４００との接続が切断された場合、ＮＷサブＣＰＵ６２１が、インフラ接続の切断を検知する。その後、ＮＷサブＣＰＵ６２１からＣＰＵ６０２へ、インフラ接続が切断されたことを示す切断イベントが通知される。ＣＰＵ６０２は、切断イベントを受信すると、コントロールＡＰＩ１０１８によってイベント通知をハンドリングする（Ｓ１２２０）。これにより、インフラ再接続Ｍｓｅｇが発行されるため（Ｓ１２２１）、ＣＰＵ６０２は、Ｓ１１４０以降の再接続処理が実行される。
【０１６０】
ＣＰＵ６０２は、インフラ再接続Ｍｓｅｇが発行されたことに応じて、インフラ接続を再開することを試みる（Ｓ１１４０）。まず、ＣＰＵ６０２は、ＭＦＰ３００内の不揮発性メモリ（不図示）に保持されているユーザ設定値を参照し、ＭＦＰ３００が同時動作モードか否かを判定する（Ｓ１１４１）。
【０１６１】
ＣＰＵ６０２は、ＭＦＰ３００が同時動作モードでないと判定した場合は、パワーオン時の処理と同様に、Ｓ１１０４以降の処理を実行する。これにより、ＭＦＰ３００が同時動作モードでない場合には、ＮＷサブＣＰＵ６２１によって、インフラ接続の再接続処理が実行される。
【０１６２】
一方、ＣＰＵ６０２は、ＭＦＰ３００が同時動作モードであると判定した場合は、Ｓ１１４２以降の処理を実行することで、インフラ接続の再接続処理を実行する。すなわち、ＭＦＰ３００が同時動作モードでない状態でＭＦＰ３００とアクセスポイント４００との接続が切断された場合は、ＮＷサブＣＰＵ６２１によって再接続処理が実行される。そして、ＭＦＰ３００が同時動作モードである状態でＭＦＰ３００とアクセスポイント４００との接続が切断された場合は、ＣＰＵ６０２によって再接続処理が実行される。
【０１６３】
ＣＰＵ６０２は、まず、ＭＦＰ３００の状態情報を参照する（Ｓ１１４２）。具体的には、ＣＰＵ６０２は、Ｉ／ＦアプリＭｇｒタスクによって管理しているＰ２Ｐデバイス（現在ＭＦＰ３００とＰ２Ｐ接続中の装置）の台数や同時動作モード時に実行されるアプリ・サービスの利用状況（ＨＴＴＰリソースの利用本数等）を参照する。
【０１６４】
続いて、ＣＰＵ６０２は、参照したＭＦＰ３００の状態情報に応じて、いずれのＴｙｐｅの接続シーケンスを実行するかを特定する（Ｓ１１４３）。なお、ＬＡＮ設定変更処理におけるＳ１１４３の処理であれば、ユーザから指示されたＬＡＮ設定の変更内容も、接続シーケンスの特定において参照される。
【０１６５】
続いて、ＣＰＵ６０２は、不揮発性メモリに保存されている、インフラ接続を実行するためのネットワークパラメータ（ＳＳＩＤ・認証方法・パスワード等）を取得する（Ｓ１１４４）。このネットワークパラメータは、再接続対象のアクセスポイント（アクセスポイント４００）と接続するためのパラメータに相当する。なお、ＬＡＮ設定変更処理におけるＳ１１４４の処理であれば、ネットワークパラメータは、ユーザによって指示されたアクセスポイントと接続するためのパラメータに相当する。
【０１６６】
その後、ＣＰＵ６０２は、同時動作接続シーケンサタスクを起動し、取得したパラメータ及び特定したＴｙｐｅの接続シーケンスに基づいてインフラ接続処理を実行する（Ｓ１１４５）。この処理の詳細は後述する。
【０１６７】
これによって、Ｉ／Ｆの種類ごとのアプリの動作状況が加味されたうえでの再接続処理が実行されることになる。ＬＡＮ設定変更処理においても、設定内容によっては、ユーザー操作（指示）に対するフィードバックをいち早く返却することが可能であり、ユースケースに応じたきめ細かな対応が可能になる。
【０１６８】
図１３は、ＣＰＵ６０２によって実行されるインフラ接続処理を示すフローチャートである。なお、本フローチャートが示す処理は、ＲＯＭ６０３等のメモリに格納された同時動作接続シーケンサ１０１２に対応するプログラムをＣＰＵ６０２がＲＡＭ６０４に読み出して実行することにより実現される。なお、本フローチャートに示す処理は、Ｓ１１４５で、同時動作接続シーケンサタスクが起動された後の処理に対応する。
【０１６９】
以下、ＣＰＵ６０２は、Ｓ１１４３で特定したＴｙｐｅの接続シーケンスを実行する。なお、Ｔｙｐｅ１〜Ｔｙｐｅ３は、ＬＡＮ設定変更処理において、ユーザから指示された設定変更内容に応じて特定される接続シーケンスである。また、Ｔｙｐｅ４は、インフラ再接続処理において特定される接続シーケンスである。なお、本説明では、接続シーケンスとして４つのＴｙｐｅを示したが、ユーザから指示された設定変更内容や、インフラ再接続処理のＭＦＰ３００の状態等に応じて、その他のＴｙｐｅの接続シーケンスが用意されても良い。
【０１７０】
ＣＰＵ６０２は、ユーザから指示された設定変更内容が、接続処理を伴わないパラメータ変更設定のみの場合、Ｓ１１４３でＴｙｐｅ１の接続シーケンスを特定するため、Ｓ１３１０に進む。接続処理を伴わないパラメータ変更設定とはネゴシエーション設定や、インフラストラクチャモードによる通信に利用される暗号方式の設定等である。そして、ＣＰＵ６０２は、当該パラメータ変更に対応するＮＷサブシステム側のコントローラに、コントロールＡＰＩ経由で、パラメータセットコマンドを発行する（Ｓ１１３１）。これにより、ＮＷサブＣＰＵ６２１が、各コントローラを用いて、ユーザから指示された設定変更内容を適用する処理を行う。
【０１７１】
ＣＰＵ６０２は、ＮＷサブシステム側のコントローラの再起動処理が必要な場合、より具体的にはＰ２Ｐコントローラの再起動が必要な場合、Ｓ１１４３でＴｙｐｅ２の接続シーケンスを特定するため、Ｓ１３２０に進む。Ｐ２Ｐコントローラの再起動が必要な場合とは例えば、ユーザから指示された設定変更内容が、ＭＦＰ３００がＰ２Ｐモード時に有効なソフトＡＰの接続情報（ＳＳＩＤやパスワード等）の変更設定であった場合に相当する。ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１に、Ｐ２ＰコントローラＳＴＯＰコマンドを発行し（Ｓ１３２１）、ＭＦＰ３００がソフトウェアＡＰとして動作することを停止させた後、ＮＷサブＣＰＵ６２１にパラメータセットコマンドを発行する（Ｓ１３２２）。パラメータセットコマンドは、ユーザから指示された設定変更内容を適用するためのコマンドである。これにより、例えば、ＭＦＰ３００がＰ２Ｐモード時に有効なソフトＡＰのＳＳＩＤ名やパスワードが変更される。その後、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１に、Ｐ２Ｐ起動コマンドを発行して（Ｓ１３２３）、ＭＦＰ３００がソフトウェアＡＰとして動作することを再開させる。
【０１７２】
ＣＰＵ６０２は、ユーザから指示された設定変更内容が、アクセスポイント４００のパスワードが変更されたことにより切断されたインフラ接続の再接続処理である場合、Ｓ１１４３でＴｙｐｅ３の接続シーケンスを特定するため、Ｓ１３３０に進む。なお、このとき、インフラ接続の切断要因はパスワードの変更であり、インフラ接続に利用される通信チャネル番号は変更されていない。そのため、インフラ接続を再開してもＰ２Ｐモードによる通信で使用するチャネルは変更されないため、ＣＰＵ６０２は、Ｐ２Ｐモードによる通信を停止する必要はない。そこで、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１にインフラコントローラＳＴＯＰコマンドを発行することで、インフラコントローラの動作のみを停止する（Ｓ１３３１）。その後、ＣＰＵ６０２は、切断されたインフラ接続で利用していた通信チャネル（現在Ｐ２Ｐ接続に利用している通信チャネル）によって、ＡＰサーチを実行することを特定する（Ｓ１３３２）。なおこのとき、ＡＰサーチの周期は２００ｍｓｅｃ、リトライ限度回数は３回とする。ＣＰＵ６０２は、ＡＰサーチを実行する場合、ＡＰサーチハンドラを起動し、ＡＰサーチに利用するチャネルの番号の情報を含むＡＰサーチコマンドを、コントロールＡＰＩを経由してＮＷサブシステム側のインフラコントローラ１０２４に発行する。これにより、ＡＰサーチが実行され、切断されたインフラ接続で利用していた通信チャネルで機器探索リクエスト（ＰｒｏｂｅＲｅｑｕｅｓｔ）が、ＷＬＡＮユニット６１６から無線出力される。そして、ＰｒｏｂｅＲｅｑｕｅｓｔを受けたアクセスポイント４００は、機器探索応答（ＰｒｏｂｅＲｅｓｐｏｎｓｅ）を無線出力する。
【０１７３】
ＣＰＵ６０２は、所定時間（５０ｍｓｅｃ）のＷａｉｔタスク中（Ｓ１３３４）に、Ｓ１２５０〜Ｓ１２５２の処理が実行されてＡＰサーチ完了イベントが発行されるのを待つ。ＣＰＵ６０２は、Ｗａｉｔ後、アクセスポイント４００を検出したか否かを判定する。具体的には、ＣＰＵ６０２は、Ｗａｉｔタスク中に、ＡＰサーチ完了イベントが発行されたか否かを判定する（Ｓ１３３５）。ＣＰＵ６０２は、アクセスポイント４００を検出していないと判定した場合、再度Ｓ１３３４にてＷａｉｔする。一方、ＣＰＵ６０２は、アクセスポイント４００を検出したと判定した場合、検出したアクセスポイント４００のＳＳＩＤ名・パスワードを引数にして、ＮＷサブＣＰＵ６２１にＡＰＪＯＩＮコマンドを発行する（Ｓ１３３６）。ＮＷサブＣＰＵ６２１によってＡＰＪＯＩＮコマンドが受信されると、ＡＰサーチで検出されたアクセスポイント４００に対する機器接続リクエストが、ＷＬＡＮユニット６１６から無線出力される。無線出力されたデータの中には、認証方法やパスワードが含まれており、アクセスポイント４００は、受信した情報が、内部に保持する認証方法およびパスワードと一致するか否かの判定を行って、一致した場合には、接続許可応答のレスポンスを無線出力する。
【０１７４】
ＣＰＵ６０２は、Ｓ１２６０〜Ｓ１２６２の処理が実行されてＡＰ  ＪＯＩＮ完了イベントが発行されたか否かを判定し、ＡＰ  ＪＯＩＮ完了イベントが発行されたと判定した場合は、ＡＰサーチハンドラの起動を終了する（Ｓ１３３８）。これにより、ＣＰＵ６０２は、同時動作接続シーケンサタスク処理を完了する。
【０１７５】
ＣＰＵ６０２は、インフラ再接続処理においてＳ１１４３の処理を実行する場合、Ｔｙｐｅ４の接続シーケンスを特定するため、Ｓ１３１０に進む。
【０１７６】
切断された接続はインフラ接続のため、ＣＰＵ６０２は、まずインフラコントローラ１０２４の動作を停止するためのコマンドをＮＷサブＣＰＵ６２１に送信する（Ｓ１３４１）。その後、ＣＰＵ６０２は、Ｓ１１４２で取得したＭＦＰ３００の状態情報に応じてＡＰサーチの実行パターンを決定する（Ｓ１３４２）。本実施形態では、ＡＰサーチの実行パターンとして、図１４に示すような４つパターンが用意されるものとする。
【０１７７】
図１４に示すＡＰサーチシーケンステーブルは、ＡＰサーチ時に参照されるテーブルである。本テーブルでは、各実行パターンにおけるＡＰサーチのシーケンスナンバー（ＳｅｑＮｏ）・サーチタイプ（Ｔｙｐｅ）・サーチ周期（周期）・リトライ限度回数（Ｒｅｔｒｙ）の値がそれぞれ定義されている。シーケンスナンバーは、各実行パターンにおける各ＡＰサーチの順番を示す。ＣＰＵ６０２は、シーケンスナンバーの番号順に、各番号に対応する各ＡＰサーチを実行する。サーチタイプ（Ｔｙｐｅ）は、各ＡＰサーチのＴｙｐｅを示す。サーチタイプが固定の場合、ＣＰＵ６０２は、ＲＡＭ６０４に保存されている、切断されたインフラ接続において利用していた通信チャネル（現在Ｐ２Ｐ接続に利用している通信チャネル）によってＡＰサーチを実行する。サーチタイプがＡＬＬの場合、ＣＰＵ６０２は、ＭＦＰ３００が使用可能な全ての通信チャネルを番号の小さいチャネルから順に用いてＡＰサーチを実行する。なお、ＭＦＰ３００は、各チャネルを使用したＡＰサーチにおいて、装置探索リクエストコマンドの送信を複数回実行しても良い。また、このとき、ＣＰＵ６０２は、ＭＦＰ３００が使用可能な全ての通信チャネルを使用せずとも良く、切断されたインフラ接続において利用していた通信チャネル以外の通信チャネルを少なくとも使用すれば良い。また、このとき利用されるチャネルの順番は特に限定されず、例えば、ＣＰＵ６０２は、まず初めに現在Ｐ２Ｐ接続に使用しているチャネルを使用してＡＰサーチを実行した後、第１チャネルから順に使用してＡＰサーチを実行してもよい。また、ＣＰＵ６０２は、２．４ＧＨｚ（１〜１３チャネル）と５ＧＨｚ（３６〜１４０チャネル）の周波数帯を使う場合、どちらかの周波数帯（例えば５ＧＨｚ）に対応するチャネルを優先して用いてＡＰサーチを開始してもよい。サーチ周期（周期）は、各シーケンスナンバーに対応するＡＰサーチを実行する周期を示す。リトライ限度回数（Ｒｅｔｒｙ）は、アクセスポイントを発見できなかった場合に各シーケンスナンバーに対応するＡＰサーチをリトライする回数を示す。なお、リトライ回数がＦｏｒｅｖｅｒの場合、ＣＰＵ６０２は、アクセスポイントを発見する等などしてＡＰサーチハンドラが終了されるまで、対応するシーケンスナンバーのＡＰサーチのリトライを繰り返す。また、リトライ回数がＰ２ＰＢｕｓｙの場合は、ＣＰＵ６０２は、Ｐ２Ｐモードによる通信が終了するまで、対応するシーケンスナンバーのＡＰサーチのリトライを繰り返し、その後次のシーケンスナンバーのＡＰサーチを行う。
【０１７８】
パターン（ａ）は、アクセスポイント４００と接続するためのパスワードが変更されたことが切断要因であるインフラ接続の再接続処理で選択される実行パターンである。ＣＰＵ６０２は、パターン（ａ）を選択した場合、切断されたインフラ接続において利用していた通信チャネル（現在Ｐ２Ｐ接続に利用している通信チャネル）によって、２００ｍｓｅｃの周期で最大３回のＡＰサーチを実行する。サーチタイプが固定のＡＰサーチのみが実行されるのは、パスワード変更がインフラ接続の切断要因である場合には、アクセスポイント４００が使用するチャネルは変更されていない可能性が高いためである。また、アクセスポイント４００が使用するチャネルは変更されていない場合は、サーチタイプが固定のＡＰサーチによってすぐにアクセスポイントを検出できる。そのため、ＣＰＵ６０２は、２００ｍｓｅｃという短い周期且つ少ないリトライ限度回数でＡＰサーチを実行する。
【０１７９】
パターン（ｂ）は、ＭＦＰ３００が同時動作モードで且つＰ２Ｐモードによる通信を実行していない（Ｐ２Ｐ通信状態が休止（Ｉｄｌｅ）状態）の場合の再接続処理で選択される実行パターンである。すなわち、パターン（ｂ）は、Ｐ２Ｐデバイスの接続台数が０台の場合の再接続処理で選択される実行パターンである。ＣＰＵ６０２は、パターン（ｂ）を選択した場合、まず、切断されたインフラ接続において利用していた通信チャネル（現在Ｐ２Ｐ接続に利用している通信チャネル）によって、１０ｓｅｃの周期で最大３回のＡＰサーチを実行する。その後、シーケンスナンバーの１のＡＰサーチでアクセスポイントを検出できなかった場合は、ＣＰＵ６０２は、ＭＦＰ３００が使用可能な全ての通信チャネルを順に用いて、１０ｓｅｃの周期で、アクセスポイントを検出するまでＡＰサーチを実行する。サーチタイプが固定のＡＰサーチ後に、サーチタイプがＡＬＬのＡＰサーチを実行するのは、インフラ接続切断後にアクセスポイントが使用するチャネルが変更されていても、アクセスポイントを検出できるようにするためである。また、ＣＰＵ６０２は、サーチタイプが固定のＡＰサーチを先に実行する。このような形態とすることで、インフラ接続切断後にアクセスポイントが使用するチャネルが変更されていなければ、Ｐ２Ｐモードによる通信におけるパケットロスや送信パケット遅延等をできるだけ発生させずにアクセスポイントを検出することができる。
【０１８０】
パターン（ｃ）は、ＭＦＰ３００が同時動作モードで且つＰ２Ｐモードによる通信を実行している（Ｐ２Ｐ通信状態が動作（Ｂｕｓｙ）状態）の場合の再接続処理で選択される実行パターンである。ＣＰＵ６０２は、パターン（ｃ）を選択した場合、まず、切断されたインフラ接続において利用していた通信チャネル（現在Ｐ２Ｐ接続に利用している通信チャネル）によって、１０ｓｅｃの周期で、Ｐ２Ｐモードによる通信が終了するまでＡＰサーチを実行する。その後、シーケンスナンバーの１のＡＰサーチでアクセスポイントを検出できなかった場合は、ＣＰＵ６０２は、ＭＦＰ３００が使用可能な全ての通信チャネルを順に用いて、２ｓｅｃの周期で、最大３回のＡＰサーチを実行する。その後、シーケンスナンバーの２のＡＰサーチでアクセスポイントを検出できなかった場合は、ＣＰＵ６０２は、ＭＦＰ３００が使用可能な全ての通信チャネルを順に用いて、３０ｓｅｃの周期で、アクセスポイントを検出するまでＡＰサーチを実行する。Ｐ２Ｐモードによる通信を実行している間は、現在Ｐ２Ｐ接続に利用している通信チャネル以外のチャネルを使用すると、パケットロスや送信パケット遅延の課題が発生しやすい。そのため、パターン（ｃ）では、Ｐ２Ｐモードによる通信が終了するまでは、サーチタイプが固定のＡＰサーチを実行する。また、シーケンスナンバーの２のＡＰサーチの周期より、シーケンスナンバーの３のＡＰサーチの周期を遅くする。これにより、アクセスポイントが検出できない状態にもかかわらず、サーチタイプがＡＬＬのＡＰサーチが短い周期で実行されることに起因してパケットロスや送信パケット遅延が頻繁に発生してしまうことを抑制できる。
【０１８１】
パターン（ｄ）は、ＭＦＰ３００が同時動作モードで且つインフラストラクチャモードによる通信を実行している（インフラ通信状態が動作（Ｂｕｓｙ）状態）の場合の再接続処理で選択される実行パターンである。例えば、インフラストラクチャモードによる通信を実行している最中に、電波の干渉等によってインフラ接続が切断されるケースがある。インフラ接続が切断されているのに、インフラ通信状態が動作（Ｂｕｓｙ）状態であケースとは、このようなケースに相当する。このようなケースでは、インフラストラクチャモードによる通信を速やかに復帰させる必要がある。そのため、パターン（ｄ）では、パターン（ｂ）やパターン（ｃ）と比較して短い周期で各ＡＰサーチを実行する。
【０１８２】
なお、例えば、ＭＦＰ３００の状態として、Ｐ２Ｐデバイスが接続してはいるがＰ２Ｐモードによる通信が実行されていない状態や、Ｐ２Ｐモードによる通信が実行されていても通信周期が数十秒周期で間欠的に行われる状態も考えられる。そのため、実行パターンは、上述の４パターンに限定されるわけではなく、ユースケースに応じてより細かなパターンが用意されても良い。また、各パターンのＡＰサーチにおけるリトライ周期やリトライ回数は、上述した関係性が各シーケンスナンバーのＡＰサーチ間で満たされていれば、上述した値に限定されない。
【０１８３】
上述のように、本実施形態では、ＭＦＰ３００が同時動作モードで動作する状態でインフラ接続が切断された場合は、ＭＦＰ３００の通信状態や接続状態に応じて異なる再接続処理が実行される。これにより、ＭＦＰ３００の通信状態や接続状態に応じた適切な再接続処理が実行されることになり、パケットロスや送信パケット遅延等の課題をできるだけ発生させずに、アクセスポイントを検出できる可能性を向上させることができる。
【０１８４】
また、本実施形態では、ＭＦＰ３００が同時動作モードで動作する状態でインフラ接続が切断された場合に実行される再接続処理を、ＮＷサブＣＰＵ６２１でなく、ＣＰＵ６０２が実行する。ＣＰＵ６０２は、装置全体の制御を担うため、ＮＷサブＣＰＵ６２１と比較して、アクセス可能な情報の範囲が広く、情報へのアクセススピードも速い。またＮＷサブＣＰＵ６２１は、例えば、ＭＦＰ３００の通信状態や接続状態の情報を取得するためには、ＣＰＵ間通信によってＣＰＵ６０２から取得する必要がある。そのため、ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１と比較して、ＭＦＰ３００の通信状態や接続状態の情報に応じた処理を速やかに実行できる。上述したような場合には、ＣＰＵ６０２が再接続処理を実行することにより、ＭＦＰ３００の通信状態や接続状態に応じた適切な再接続処理が実行される。
【０１８５】
ＣＰＵ６０２は、Ｓ１３４２にて実行パターンを決定したら、ＡＰサーチハンドラを起動し、決定した実行パターンに基づいたＡＰサーチを開始する（Ｓ１３４３）。
【０１８６】
その後、ＣＰＵ６０２は、所定時間（５０ｍｓｅｃ）のＷａｉｔタスク中（Ｓ１３４４）に、Ｓ１２５０〜Ｓ１２５２の処理が実行されてＡＰサーチ完了イベントが発行されるのを待つ。ＣＰＵ６０２は、Ｗａｉｔ後、アクセスポイント４００を検出したか否かを判定する。具体的には、ＣＰＵ６０２は、Ｗａｉｔタスク中に、ＡＰサーチ完了イベントが発行されたか否かを判定する（Ｓ１３４５）。ＣＰＵ６０２は、アクセスポイント４００を検出していないと判定した場合、再度Ｓ１３３４にてＷａｉｔする。一方ＣＰＵ６０２は、アクセスポイント４００を検出したと判定した場合、アクセスポイント４００の検出に成功したチャネルの番号が、アクセスポイント４００との以前のインフラ接続において利用されていたチャネルの番号から変更されたか否かを判定する。（Ｓ１３４６）すなわち、ＣＰＵ６０２は、アクセスポイント４００の検出に成功したチャネルの番号が、現在Ｐ２Ｐ接続に利用しているチャネルの番号と一致するか否かを判定する。
【０１８７】
アクセスポイント４００の検出に成功したチャネルの番号が、現在Ｐ２Ｐ接続に利用しているチャネルの番号と一致しない場合は、現在Ｐ２Ｐ接続に利用しているチャネルを切り替えるため、Ｐ２Ｐ接続を一旦切断し、その後再接続する必要がある。しかし、Ｐ２Ｐモードによる通信中にＰ２Ｐ接続を切断したら、Ｐ２ＰデバイスとＭＦＰ３００間で通信しているデータが失われてしまう可能性がある。そこで、ＣＰＵ６０２は、Ｓ１３４６にてアクセスポイント４００の検出に成功したチャネルの番号が、現在Ｐ２Ｐ接続に利用しているチャネルの番号と一致しないと判定した場合は、Ｐ２Ｐモードによる通信が行われているか否かを判定する（Ｓ１３４７）。ＣＰＵ６０２は、Ｐ２Ｐモードによる通信が行われていると判定した場合、Ｓ１３４４の処理を再度行う。一方、ＣＰＵ６０２は、Ｐ２Ｐモードによる通信が行われていないと判定した場合、ＮＷサブＣＰＵ６２１に、Ｐ２ＰＳＴＯＰコマンドを送信し、ＭＦＰ３００のＰ２Ｐ接続を解除する（Ｓ１３４８）。その後、ＣＰＵ６０２は、Ｓ１３４９〜Ｓ１３５１の処理を行う。Ｓ１３４９〜Ｓ１３５１の処理は、Ｓ１３３６〜Ｓ１３３８と同様であるため、説明を省略する。
【０１８８】
その後、ＣＰＵ６０２は、アクセスポイント４００との接続に成功した通信チャネルの番号を含むＰ２Ｐのパラメータセットコマンド及びＰ２Ｐ起動コマンドをＮＷサブＣＰＵ６２１に発行する（Ｓ１３５１、Ｓ１３５２）。これにより、ＣＰＵ６０２は、ＭＦＰ３００のソフトウェアＡＰを再起動する。切断されたＰ２Ｐ接続は、再度、端末装置２００から接続要求を受け付けることで再開される。なお、このときＰ２Ｐ接続に利用されるチャネルは、アクセスポイント４００の検出及び接続に成功したチャネルである。
【０１８９】
一方、ＣＰＵ６０２は、Ｓ１３４６にてアクセスポイント４００の検出に成功したチャネルの番号が、現在Ｐ２Ｐ接続に利用しているチャネルの番号と一致すると判定した場合は、現在Ｐ２Ｐ接続に利用しているチャネルを切り替える必要がない。そのため、ＣＰＵ６０２は、Ｓ１３５４〜Ｓ１３５６の処理を行う。Ｓ１３５４〜Ｓ１３５６の処理は、Ｓ１３３６〜Ｓ１３３８と同様であるため、説明を省略する。このように、本実施形態では、ＭＦＰ３００が同時動作モードである場合のインフラ接続処理は、ＣＰＵ６０２が実行する。ＣＰＵ６０２は、ＮＷサブＣＰＵ６２１と異なり、ＭＦＰ３００の装置状態や、受け付けたＬＡＮ設定変更の内容を確認して、確認した情報に対応する接続シーケンスを実行できる。
【０１９０】
図１５に、ＮＷサブＣＰＵ６２１によって実行されるインフラ接続処理を示すフローチャートである。なお、本フローチャートが示す処理は、ＲＯＭ６０３等のメモリに格納されたＮＷサブ接続シーケンサ１０２３に対応するプログラムをＮＷサブＣＰＵ６２１がＲＡＭ６２２に読み出して実行することにより実現される。なお、本フローチャートに示す処理は、Ｓ１１０５、Ｓ１１２１で、ＮＷサブＣＰＵ６２１にインフラ接続コマンドが送信された場合に開始される。
【０１９１】
まず、ＮＷサブＣＰＵ６２１は、インフラ接続コマンドを受信する。その後、ＮＷサブＣＰＵ６２１は、アクセスポイント４００の検索に使用するチャネル（サーチＣｈ）を１に初期化する（Ｓ１５０２）。その後、ＮＷサブＣＰＵ６２１は、インフラ接続コマンドの引数で渡されたＳＳＩＤ名のアクセスポイントを検索する（Ｓ１５０３）。具体的には、ＮＷサブＣＰＵ６２１は、ＡＰサーチＭｓｅｇをインフラコントローラ１０２４に発行し、サーチＣｈによって機器探索リクエスト（ＰｒｏｂｅＲｅｑｕｅｓｔ）を、ＷＬＡＮユニット６１６から無線出力させる。そして、ＮＷサブＣＰＵ６２１は、所定の時間（１００ｍｓｅｃ）アクセスポイントからの機器探索応答を待つ。
【０１９２】
その後、ＮＷサブＣＰＵ６２１は、Ｓ１５０３におけるＡＰサーチによってアクセスポイントの検出に成功したか否かを判定する（Ｓ１５０４）。具体的には、ＮＷサブＣＰＵ６２１は、アクセスポイントから機器探索応答を受信したか否かを判定する。ＮＷサブＣＰＵ６２１は、アクセスポイントの検出に成功しなかったと判定した場合、次のＡＰサーチに使用するチャネルを決定する。具体的には、サーチＣｈをインクリメントする（Ｓ１５０８）。
【０１９３】
その後、次のＡＰサーチに使用するチャネルとして決定したチャネルの番号が上限値か否かを判定する。すなわち、ＮＷサブＣＰＵ６２１は、使用可能な全てのチャネルを用いてＡＰサーチを実行したか否かを判定する（Ｓ１５０９）。ＮＷサブＣＰＵ６２１は、チャネルの番号が上限値であると判定した場合、所定の時間（５００ｍｓｅｃ）Ｗａｉｔする（Ｓ１５１０）。これは、ＮＷサブシステム内の他のタスクを実行可能なように、一時的にＮＷサブＣＰＵ６２１を開放するためである。その後、ＮＷサブＣＰＵ６２１は、Ｓ１５０２の処理を再度行う。一方、ＮＷサブＣＰＵ６２１は、チャネルの番号が上限値でないと判定した場合、Ｓ１５０８で決定したチャネルを用いて、Ｓ１５０３でＡＰサーチを行う。すなわち、ＮＷサブＣＰＵ６２１は、アクセスポイントの検出に失敗した場合は、使用可能なチャネルを順に使用してＡＰサーチを行う。
一方、ＮＷサブＣＰＵ６２１は、アクセスポイントの検出に成功したと判定した場合は、通信チャネル番号・ＳＳＩＤ名・暗号方法・パスワード等を引数としてインフラコントローラ１０２４にＡＰ  ＪＯＩＮ  Ｍｓｅｇを発行する（Ｓ１５０６）。また、このとき、ＮＷサブＣＰＵ６２１は、ＡＰサーチ完了通知をＣＰＵ６０２に送信し、検出したアクセスポイントのＭＡＣアドレス及び検出に成功した通信チャネルの番号を共有ＲＡＭに保存する。ＡＰ  ＪＯＩＮ  Ｍｓｅｇが発行されると、ＷＬＡＮユニット６１６が、Ｓ１５０３におけるＡＰサーチにより検出されたアクセスポイントに対して機器接続リクエストを無線出力する。アクセスポイントは、機器接続リクエストを受信すると、受信した機器接続リクエスト中に含まれる認証方法やパスワードと、アクセスポイント内部に保持される認証方法およびパスワードが一致するか否かの判定を行う。アクセスポイントは、それらが一致する場合には、接続許可応答を無線出力し、一致しない場合には、接続不許可応答を無線出力する。
ＡＰ  ＪＯＩＮ  Ｍｓｅｇを発行後、ＮＷサブＣＰＵ６２１は、アクセスポイントとの接続が成功したか否かを判定する。具体的には、ＮＷサブＣＰＵ６２１は、接続許可応答をアクセスポイントから受信したか否かを判定する。ＮＷサブＣＰＵ６２１は、接続許可応答をアクセスポイントから受信せず、アクセスポイントとの接続が失敗したと判定した場合、アクセスポイントとの接続が失敗した旨と、接続が失敗した理由（例えば、パスワード不一致）をＣＰＵ６０２に通知する。一方、ＮＷサブＣＰＵ６２１は、接続許可応答をアクセスポイントから受信し、アクセスポイントとの接続が成功したと判定した場合、接続に成功したＡＰ  ＪＯＩＮ完了通知をＣＰＵ６０２に通知する。
【０１９４】
なお、ＮＷサブＣＰＵ６２１は、各チャネルを使用したＡＰサーチにおいて、装置探索リクエストコマンドの送信を複数回実行しても良い。また、このとき、ＣＰＵ６０２は、ＭＦＰ３００が実行可能な全ての通信チャネルを使用せずとも良く、切断されたインフラ接続において利用していた通信チャネル以外の通信チャネルを少なくとも使用すれば良い。また、このとき利用されるチャネルの順番は特に限定されず、例えば、ＣＰＵ６０２は、まず初めに現在Ｐ２Ｐ接続に使用しているチャネルを使用してＡＰサーチを実行した後、第１チャネルから順に使用してＡＰサーチを実行してもよい。また、ＣＰＵ６０２は、２．４ＧＨｚ（１〜１３チャネル）と５ＧＨｚ（３６〜１４０チャネル）の周波数帯を使う場合、どちらかの周波数帯（例えば５ＧＨｚ）に対応するチャネルを優先して用いてＡＰサーチを開始してもよい。
【０１９５】
このように、ＭＦＰ３００が同時動作モードでない状態でインフラ接続が切断された場合や、ＭＦＰ３００の電源がオンされた場合には、インフラ接続の再接続処理を、ＣＰＵ６０２でなく、ＮＷサブＣＰＵ６２１が実行する。また、ＮＷサブＣＰＵ６２１はＭＦＰ３００の装置状態や通信状態に係わらず、同一の方法でＡＰサーチを実行する。これは、上述の場合には、Ｐ２Ｐ接続は確立されておらず、Ｐ２Ｐモードによる通信におけるパケットロスや送信パケット遅延の課題が生じないため、ＭＦＰ３００の装置状態や通信状態に応じたインフラ接続の再接続処理が必要ないためである。また、上述の場合における再接続処理を、ＣＰＵ６０２でなくＮＷサブＣＰＵ６２１が実行する形態とすることで、ＣＰＵ６０２にかかる負荷を軽減することができる。そして、このような負荷分散システムによって、インフラ接続の再接続処理時のＭＦＰ３００全体としてのパフォーマンスを向上させることができる。
【０１９６】
また、ＮＷサブＣＰＵ６２１は、ＭＦＰ３００が実行可能な全ての通信チャネルを番号の小さいチャネルから順に用いて、５００ｍｓｅｃの周期で、アクセスポイントを検出するまでＡＰサーチを実行する。上述したように、ＮＷサブＣＰＵ６２１が再接続処理を実行するのは、ＭＦＰ３００が同時動作モードでない状態でインフラ接続が切断された場合や、ＭＦＰ３００の電源がオンされた場合である。しかし、このような場合には、Ｐ２Ｐモードによる通信におけるパケットロスや送信パケット遅延の課題は生じない。そのため、ＮＷサブＣＰＵ６２１は、サーチタイプがＡＬＬのＡＰサーチを、短い周期で実行することができる。
【０１９７】
また一方で、ＭＦＰ３００が同時動作モードである状態でインフラ接続が切断された場合やＭＦＰ３００が同時動作モードである状態でＬＡＮ設定変更処理が実行される場合は、インフラ接続の再接続処理を、ＮＷサブＣＰＵ６２１でなくＣＰＵ６０２が実行する。これにより、ＭＦＰ３００が同時動作モードである状態では、ＭＦＰ３００の装置状態や通信状態に応じた接続処理が実行される。
【０１９８】
＜第２実施形態＞
上述の実施形態では、インフラ接続が切断された際に、ＭＦＰ３００が同時動作モードか否かに応じて、再接続処理を実行する主体となるＣＰＵを切り替えていた。本実施形態では、さらに他の要素を考慮して、再接続処理を実行する主体となるＣＰＵを切り替える形態を説明する。
【０１９９】
なお、本実施形態の通信システムや各装置の構成等は、第１実施形態と同様であるものとする。
【０２００】
図１６は、ＣＰＵ６０２がＩ／Ｆ接続Ｍｇｒ１０１１によって実行する処理を示すフローチャートである。なお、本フローチャートが示す処理は、例えば、ＲＯＭ６０３等のメモリに格納されたＩ／Ｆ接続Ｍｇｒ１０１１に対応するプログラムをＣＰＵ６０２がＲＡＭ６０４に読み出して実行することにより実現される。また、パワーオン時の処理は、第１実施形態と同様であるため説明を省略する。
【０２０１】
〔ＬＡＮ設定変更処理〕
Ｓ１６３０〜Ｓ１６３２の処理は、Ｓ１１３０〜Ｓ１１３２の処理と同様であるため説明を省略する。
【０２０２】
ＣＰＵ６０２は、Ｓ１６３１にて、ＭＦＰ３００が同時動作モードであると判定した場合は、ユーザが操作表示部６１０を操作しているか否かを判定する（Ｓ１６３３）。一方、ＬＡＮ設定の変更を指示したユーザは、引き続き操作表示部６１０を操作している可能性が高い。特に、ＭＦＰ３００が操作表示部６１０としてタッチパネルを搭載している場合は、ＣＰＵ６０２は、タッチやドラッグといったタッチパネルに対するユーザ操作に追従して、タッチパネル上のＧＵＩパーツの描画を行う必要がある。一般的に、タッチに対するユーザ操作に対して、ＧＵＩパーツの描画が１００ｍｓｅｃ以上遅れると、ユーザに違和感を感じさせてしまう。そのため、ユーザが操作表示部６１０を操作している場合は、ＣＰＵ６０２は、ＧＵＩパーツの描画等の、ＵＩドメイン内の処理を優先しなければならない。そこで、ＣＰＵ６０２は、ユーザが操作表示部６１０を操作していると判定した場合は、Ｓ１６３２に進み、再接続処理をＮＷサブＣＰＵ６２１に実行させる。これにより、ＣＰＵ６０２は、ユーザが操作表示部６１０を操作している場合は、ＵＩドメイン内の処理に注力することができ、ユーザに違和感を感じさせることなく、ＧＵＩパーツの描画等の処理を実行できる。なお、ＣＰＵ６０２は、ユーザが操作表示部６１０を操作していないと判定した場合は、Ｓ１６４３以降の処理を行う。Ｓ１６４３〜Ｓ１６４６の処理は、Ｓ１１４２〜Ｓ１１４５の処理と同様のため、説明を省略する。
【０２０３】
〔インフラ再接続処理〕
Ｓ１６４０、Ｓ１６４１の処理は、Ｓ１１４０、Ｓ１１４１の処理と同様であるため説明を省略する。
【０２０４】
ＣＰＵ６０２は、Ｓ１６４１にて、ＭＦＰ３００が同時動作モードであると判定した場合は、ＭＦＰ３００とＰ２Ｐ接続している装置があるか否かを判定する（Ｓ１６４２）。上述したように、ＭＦＰ３００が一旦同時動作モードに設定されたら、Ｐ２Ｐ接続やインフラ接続が切断されても、通信モードの設定変更が行われないかぎり同時動作モードは解除されない。すなわち、ＭＦＰ３００は、同時動作モードであっても、Ｐ２Ｐ接続を実行していない場合がある。同時動作モードであっても、Ｐ２Ｐ接続が実行されていない場合は、インフラ接続の再接続処理がＰ２Ｐモードによる通信に与える影響はなく、Ｐ２Ｐモードによる通信におけるパケットロスや送信パケット遅延等の課題は発生しない。そのため、ＣＰＵ６０２による、ＭＦＰ３００の装置状態に応じた、インフラ接続の再接続処理が実行される必要はない。よって、ＣＰＵ６０２は、ＭＦＰ３００とＰ２Ｐ接続している装置がないと判定した場合、Ｓ１６４７に進み、ＮＷサブＣＰＵ６２１にＰ２ＰコントローラＳＴＯＰコマンドを発行し、ＭＦＰ３００がソフトウェアＡＰとして動作することを停止させる。その後、ＣＰＵ６０２は、インフラ接続の再接続処理をＮＷサブＣＰＵ６２１に実行させる。これにより、ＣＰＵ６０２への負荷が軽減された、インフラ接続の再接続処理が実行される。なお、ＣＰＵ６０２は、ＭＦＰ３００とＰ２Ｐ接続している装置がないと判定した場合は、Ｓ１６４３以降の処理を行う。Ｓ１６４３〜Ｓ１６４６の処理は、Ｓ１１４２〜Ｓ１１４５の処理と同様のため、説明を省略する。
【０２０５】
＜その他の実施形態＞
本発明は、メインサブシステム側とＮＷサブシステム側の双方に無線接続シーケンサを配置し、状況に応じた接続シーケンスの負荷分散を行うことである。いずれの接続シーケンスを用いるかの判断は、ユーザ設定に応じて判断してもいいし、ユーザ操作状況、ユーザ使用状況、あるいはその複合条件で判断してもよい。
【０２０６】
上述の実施形態のインフラ再接続処理における、ＭＦＰ３００が同時動作モードか否かの判定を、ＭＦＰ３００が端末装置２００とＰ２Ｐ接続中か否かを判定することで行っても良い。又は、ＭＦＰ３００がＧｒｏｕｐＯｗｎｅｒ（もしくはソフトウェアＡＰ）として動作しているか否かを判定することで行っても良い。なお、上述の実施形態では、ＭＦＰ３００は、ＷＦＤモードにおける無線接続シーケンスにおいてネゴシエーションを実行するか否かの設定をユーザから受け付け可能であり、ネゴシエーションを実行する設定がなされている場合は、同時動作を実行しない。そのため、ＭＦＰ３００とアクセスポイント４００との接続が切断されたタイミングにおいてＭＦＰ３００は、ＧｒｏｕｐＯｗｎｅｒとして動作している端末装置２００とＰ２Ｐ接続していることはない。ＭＦＰ３００がＰ２Ｐ接続しているならば、ＭＦＰ３００がＧｒｏｕｐＯｗｎｅｒ（もしくはソフトウェアＡＰ）として動作している。よって、ＣＰＵ６０２は、ＭＦＰ３００がＧｒｏｕｐＯｗｎｅｒ（もしくはソフトウェアＡＰ）として動作しているか否かを判定することで、ＭＦＰ３００が端末装置２００とＰ２Ｐ接続中か否かを判定できる。ＣＰＵ６０２は、ＭＦＰ３００がＧｒｏｕｐＯｗｎｅｒ（もしくはソフトウェアＡＰ）として動作していない場合は、ＭＦＰ３００がＰ２Ｐ接続中でないと判定する。一方、ＣＰＵ６０２は、ＭＦＰ３００がＧｒｏｕｐＯｗｎｅｒ（もしくはソフトウェアＡＰ）として動作している場合は、ＭＦＰ３００がＰ２Ｐ接続中であると判定する。ＭＦＰ３００がＰ２Ｐ接続中でなければ、インフラストラクチャモードによる通信を実行するためのインターフェースのみが単独で動作していることになる。すなわち、ＭＦＰ３００が同時動作を実行していない状態で、ＭＦＰ３００とアクセスポイント４００との接続が切断されたことになる。そのため、ＣＰＵ６０２は、ＭＦＰ３００がＰ２Ｐ接続中でないと判定した場合は、ＮＷサブＣＰＵ６２１に再接続処理を実行させる。なお、ＭＦＰ３００が同時動作モードか否かの判定を、ＭＦＰ３００が端末装置２００とＰ２Ｐ接続中か否かを判定することで行う場合は、Ｓ１６４２における判定は省略する。
【０２０７】
上述の実施形態では、ＭＦＰ３００は、Ｐ２Ｐモードによる通信やインフラストラクチャモードによる通信を実行するために、Ｗｉ−Ｆｉを用いるものとしたが、この形態に限定されない。例えば、Ｂｌｕｅｔｏｏｔｈ等、他の通信方式が用いられても良い。
上述した実施形態は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウエア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。また、プログラムは、１つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウエアで実現する必要はなく、処理の一部または全部をＡＳＩＣ等のハードウェアで実現するようにしてもよい。また、ＣＰＵも１つのＣＰＵで全ての処理を行うものに限らず、複数のＣＰＵが適宜連携をしながら処理を行うものとしてもよい。
【符号の説明】
【０２０８】
２００  端末装置
３００  ＭＦＰ
４００  アクセスポイント
６０２  ＣＰＵ
６２１  ＮＷサブＣＰＵ
【図１】
0006742812.tif 000002
【図２】
0006742812.tif 000003
【図３】
0006742812.tif 000004
【図４】
0006742812.tif 000005
【図５】
0006742812.tif 000006
【図６】
0006742812.tif 000007
【図７】
0006742812.tif 000008
【図８】
0006742812.tif 000009
【図９】
0006742812.tif 000010
【図１０】
0006742812.tif 000011
【図１１】
0006742812.tif 000012
【図１２】
0006742812.tif 000013
【図１３】
0006742812.tif 000014
【図１４】
0006742812.tif 000015
【図１５】
0006742812.tif 000016
【図１６】
0006742812.tif 000017
【図１７】
0006742812.tif 000018
【図１８】
0006742812.tif 000019