以下、図面を参照して本発明の実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
(第1の実施形態)
まず、本発明に係る第1の実施形態について説明する。第1の実施形態では、後述するMFP100の起動時、スリープモードへの移行時、スタンバイ状態への復帰時、及びスタンバイ状態におけるMFP100の動作(特に、Ethernet(登録商標)へのリンクに関する動作)について説明する。
図1は、第1の実施形態における通信システムの全体図である。図1に示す通信システムでは、通信装置(マルチファンクションペリフェラル(以下、MFPとする)100)がネットワークインターフェース装置(ネットワークインターフェースカード(以下、NICとする)101)を介してHUB102に接続されている。HUB102は更にLAN(ローカルエリアネットワーク)103に接続されている。なお、HUB102には、NIC101の他にもPC104やメールサーバ105が接続されている。
HUB102は、Ethernet(登録商標)等の集線装置であり、10Mbps/100Mbps/1000Mbpsの3種類の通信スピード(リンクスピード)をサポートしている。また、Duplexに関しては、10Mbps及び100Mbpsでは全二重及び半二重通信をサポートし、1000Mbpsでは全二重通信をサポートしている。
また、HUB102の各ポートには、使用する通信モードとしてリンクスピードやDuplexが予め指定されているものとする。またこの時、リンクスピードやDuplexを固定的に指定せずに、AutoNegotiationを実行するように設定しておくこともできる。
図2は、MFP100及びNIC101からなる画像形成システム200の構成を説明するブロック図である。
NIC101は、インテリジェント型ネットワークカードモジュールにより実現された、MFP100に対して着脱可能なネットワークインターフェース装置である。そして、NIC101は、NIC101用のCPU201,RAM202,ROM203,ネットワークI/F204,LED205,拡張I/F206と、これらを互いに接続するシステムバス207とを備えている。
CPU201は、ROM203に記憶された制御プログラムを読み出して各種制御処理を実行する。例えば、CPU201は、システムバス207に接続されたネットワークI/F204を介してHUB102に接続し、更にHUB102を介してLAN103上の端末と所定の通信プロトコルに従って通信する処理を実行する。これにより、例えば、LAN103上の印刷データ生成装置から送信された印刷データやプリンタ制御命令等の各種データを受信し、拡張I/F206を介してMFP100に転送し、MFP100において印刷処理を行うことができる。
RAM202は、CPU201の主メモリ、ワークエリア等の一時記憶領域として用いられる。LED205は、NIC101の動作状態を示す表示部として用いられている。LED205は、例えば、ネットワークI/F204とHUB102との電気的な接続状態や通信モード等の各種動作状態をLEDの色や点滅パターンで示すこと可能となっている。
拡張I/F206は、NIC101とMFP100とを接続するためのI/Fであり、ローカルケーブル210を介してMFP100側の拡張I/F224に接続されている。なお、拡張I/F206は、不図示のコネクタを含んで構成されている。NIC101は、このコネクタによってプリンタMFP100への着脱が可能となっており、同じ構成を有する他のMFPに当該NIC101を装着することも可能である。
なお、ここではネットワークI/F204は、MFP100がスタンバイ状態である時は10Mbps/100Mbps/1000Mbpsのいずれかのリンクスピード、及び全二重または半二重のいずれかで通信する能力を有している。また、MFP100がスリープ状態である時は10Mbps/100Mbpsのいずれかのリンクスピード、及び全二重または半二重のいずれかで通信するように設定されている。即ち、ネットワークI/F204は、MFP100がスリープ状態である時は、10Mbps及び100Mbpsをサポートし、1000Mbpsはサポートしないものとして動作する。
一方、MFP100は、制御部220、操作部230、スキャナ240、及びプリンタ250を備えている。
制御部220には、MFP100用のCPU221,RAM222,ROM223,拡張I/F224,操作部I/F225,デバイスI/F226と、これらを互いに接続するシステムバス227とが備えられている。
CPU221は、ROM223に記憶された制御プログラムを読み出して各種制御処理を実行する。例えば、CPU221は、拡張I/F224を介してNIC101から転送される印刷データに基づいて出力画像データを生成し、デバイスI/F226を介してプリンタ250に出力する。
RAM222は、CPU221の主メモリ、ワークエリア等として機能する。また、RAM222は、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
操作部230には、MFP100の動作モード等の設定や印刷データの取り消し等の操作を行うためのボタンと、MFP100の動作状態を示す液晶パネルやLED等の表示部とが配されている。また、後述する通信モードの設定も、操作部230を介して行うことができる。
プリンタ250は、公知の印刷技術を利用したプリンタであり、例えば電子写真方式(レーザービーム方式)やインクジェット方式、昇華方(熱転写)方式等を用いて画像データの印刷を実行する。また、スキャナ250は原稿上の画像を読み取って画像データを生成し、MFP100に入力する。
なお、MFP100は、スタンバイ時よりも消費電力が小さいスリープモードを備えている。スリープ中は、特定のユニット(操作部230や拡張I/F224など)を除く各ユニットに対する電力供給をストップすることにより、消費電力が抑制されている。
図3は、NIC101及びMFP100のソフトウェア構成図である。なお、ここではNIC101における通信モードの設定に関する部分についてのみ説明するが、NIC101及びMFP100には、以下に説明するソフトウェア以外の各種ソフトウェアも備えられている。
図3に示す各ソフトウェアは、それぞれNIC101またはMFP100のメモリに格納されており、それぞれNIC101またはMFP100が起動したことに応じてRAMに読み出され、各CPUにより実行される。
NIC101側のオペレーティングシステム(OS)301上には、ネットワークI/Fドライバ302及び通信制御部303が備えられている。ネットワークI/Fドライバ302は、ネットワークI/F204による通信処理の実行を制御する。通信制御部303は、後述する方法を用いてMFP100側から指示される内容に従って、ネットワークI/Fドライバ302に所定の通信モードを設定させる。
一方、MFP100側のオペレーティングシステム(OS)311上には、NICドライバ312及び通信モード設定部313が備えられている。NICドライバ312は、NIC101に対して各種指示を送信し、NIC101に各種動作を実行させる。通信モード設定部313は、後述する方法を用いて、NIC101がHUB102と通信する際の通信モードを決定し、当該決定した通信モードをNIC101に設定させる。
なお、MFP100のOS311上で動作する各ソフトウェアのうち、NICドライバ312はOS311のカーネルスペースで動作するのに対して、通信モード設定部313はOS311のユーザスペースで動作するものとする。
また、通信モード設定部313は、NICドライバ312のAPI(ApplicationProgramInterface)を利用することにより、NIC101の各種情報を取得したり、NIC101に対して各種設定を行わせたりすることができる。
NIC101の各種情報とは、例えば、NIC101にネットワークケーブルが接続されているか否か(NIC101とHUB102とが電気的に接続されているか否か)を示す情報やNIC101に現在設定されている通信モードを示す情報等である。
また更に、通信モード設定部313は、HUB102の通信能力を示す能力情報を、NIC101から取得することができる。より具体的には、通信モード設定部313は、NICドライバ312を介してNIC101のLink−Partner−Abilityのレジスタを参照することにより、HUB102の通信能力を認識することができる。
なお、HUB102の通信能力を示す能力情報とは、HUB102が対応可能な通信スピードやDuplex、或いはAutoNegotiationが設定されているか否か等を示す情報である。
通信モード設定記憶部314には、MFP100がスタンバイ状態である場合、またはスリープ状態である場合における、NIC101がHUB102と通信する際の通信モードを示す情報が記憶されている。MFP100のCPU221は、通信モード設定部313により決定された通信モードを示す情報を通信モード設定記憶部316に記憶させたり、通信モード設定記憶部316に記憶されている情報に基づいてNIC101に対する指示を送信したりする。
図4は、操作部230に表示される通信モードの設定画面を示す図である。図4に示す設定画面を介して指定された通信モードは、MFP100がスタンバイ状態である場合における、NIC101がHUB102と通信する際の通信モードとして、NIC101に設定される。
図4に示す設定画面では、まず「自動検出」の「ON」または「OFF」を選択することができる。ここで「自動検出」の「ON」が選択された場合は、AutoNegotizationを実行して自動的に通信モードが決定するよう設定される。なお、「自動検出」の「ON」が選択された場合には、後述する「通信方式」や「Ethenetの種類」の指定を行うことはできない。
一方、「自動検出」の「OFF」が選択された場合は、AutoNegotiationは実行されない。そのため、ユーザは「通信方式」として「半二重」または「全二重」のいずれか、また「Ethenetの種類」として「10Base−T」や「100Base−TX」等の中からいずれかを指定しなければならない。
図4に示す設定画面を介して設定された通信モードを示す情報は、通信モード設定記憶部314に記憶される。そして、次にMFP100に電源が投入されMFP100が起動したときに、通信モード設定記憶部314に記憶されている情報が参照され、当該情報が示す通信モードをNIC101に設定させる。
次に、MFP100が起動する場合の動作について説明する。図5は、MFP100に電源が投入されてMFP100が起動する際の、MFP100及びNIC101の動作を説明するためのフローチャートである。図5に示すフローチャートのうち、破線よりも左側の各ステップはMFP100のCPU221により実行される。また、破線よりも右側の各ステップはNIC101のCPU201により実行される。
まず、MFP100が起動すると、ステップS501において、図4に示す設定画面を介して予め指定されている通信モードを示す情報を、通信モード設定記憶部314から読み出す。そして、続くステップS502では、通信モード設定部313がioctl命令を用いてNICドライバ312に指示し、NIC101を有効化する。
ステップS503では、NIC101がネットワークに接続されているか否かの判定を行う。ここでは、NIC101のネットワークI/F204にネットワークケーブルが挿入されているか否かの判定だけでなく、NIC101が電気的にHUB102と接続されているか否かの判定を行う。なお、この判定は、通信モード設定部313がNICドライバ312に対してioctl命令を送信し、これに応じてNICドライバ312がNIC101から取得したネットワーク接続状態に関する情報に基づいて行われる。
ステップS503の判定で、NIC101がHUB102に接続されていると判定された場合は、ステップS504に進む。なお、NIC101がHUB102に接続されていない場合は、接続されるまで待機する。ステップS504では、ステップS501で読み出した情報に基づいて、通信モード設定部313がioctl命令を用いてスタンバイ時の通信モードをNICドライバ312に通知し、NICドライバ312がNIC101に設定させる。
NIC101側では、ステップS505において、MFP100から通知される通信モードを、自装置がHUB102と通信する際の通信モードとして設定し、リンクアップする。なお、ここでスタンバイ時の通信モードがAutoNegotiationの場合は、NICドライバ312がAutoNegotiationの処理を実行し、HUB102が対応可能な通信モードに基づいて、NIC101が設定すべき通信モードを決定する。
MFP100側では、次に、ステップS506において、通信モード設定部313がioctl命令を用いて、HUB102の通信能力をNICドライバ312に問い合わせる。NICドライバ312は、この問い合わせに応じてNIC101に対して、HUB102の通信能力を示す能力情報を要求する。この要求を受けて、NIC101は、ステップS507において、HUB102の能力情報をMFP100に対して通知する。
より具体的には、この時、通信モード設定部313は、NICドライバ312を介して、NIC101におけるLink−Partner−Abilityのレジスタの内容を参照することにより、HUB102の能力情報を取得する。なお、NIC101は、ステップS505でリンクアップする際に、HUB102と通信し、HUB102の能力情報を取得しておく。
ステップS508では、HUB102の能力情報が取得できたか否かの判定を行う。ここで、HUB102の能力情報が取得できたと判定された場合は、ステップS509に進み、HUB102が10Mbpsの通信スピードをサポートしているか否かの判定を行う。そして、この判定の結果、HUB102が10Mbpsの通信スピードをサポートしていると判定された場合は、ステップS510に進む。
ステップS510では、通信モード設定部313が、MFP100がスリープモードに移行している状態でNIC101とHUB102とが通信する際の通信モードを10Mbpsと決定する。そして、通信モード設定部313は、この決定した通信モードを示す情報を、NICドライバ312に通知しておく。
一方、ステップS508の判定の結果、HUB102の能力情報が取得できなかったと判定された場合、またはステップS509の判定の結果、HUB102が10Mbpsの通信スピードをサポートしていないと判定された場合はステップS511に進む。
ステップS511では、通信モード設定部313が、MFP100がスリープモードに移行している状態でNIC101とHUB102とが通信する際の通信モードをAutoNegotiationと決定する。そして、通信モード設定部313は、この決定した通信モードを示す情報を、NICドライバ312に通知しておく。
なお、ここで上述した方法を用いて、スリープ時の通信モードを決定する理由は以下の通りである。即ち、MFP100がスタンバイ状態である場合は、HUB102が対応可能な通信スピードのうち、より速い通信スピードでネットワークにリンクした方がより効率よくデータ通信を行うことができる。
しかしながら、MFP100がスリープモードに移行した後も、スタンバイ時と同じ通信スピードでリンクしたままにしておくと、消費電力が大きくなってしまい、スリープモードに移行したことによる消費電力の抑制の効果が十分に得られない。そこで、スリープ時の通信モードとして、HUB102が対応可能な通信スピードのうちより遅い通信スピードを、MFP100がスリープモードに移行した状態でNIC101とHUB102とが通信する際の通信スピードとして決定している。これにより、MFP100がスリープモードに移行した状態における、NIC101側の消費電力を小さくすることができる。
なお、このとき通信スピードのみを考慮するだけでなく、Duplexを考慮してもよい。即ち、HUB102が対応可能な通信スピードを考慮して通信モードを決定するだけでなく、HUB102が半二重/全二重のそれぞれに対応可能か否かを判定し、Duplexも含めた通信モードの決定を行うようにしても構わない。即ち、HUB102が対応可能なDuplexに応じて半二重通信または全二重通信を選択することにより、データ通信の衝突(コリジョン)を防ぐことができる。また、これに加えて、NIC101の消費電力は、通信スピードだけでなく、半二重か全二重かによっても異なるため、HUB102が対応可能なDuplexも考慮して通信モードを決定することにより、更なる消費電力の抑制を行うこともできる。
また、MFP100がスリープモードに移行する際にHUB102の能力情報をNIC101から取得して通信モードを決定するのではなく、前もってMFP100の起動時にスリープ時の通信モードを決定することにより次のような利点がある。
即ち、MFP100がスリープモードに移行する際にMFP100とNIC101とが何度も情報のやり取りを行うと、実際にNIC101側で通信モードが変更されるまでに時間がかかってしまい、迅速にスリープモードに移行できないという問題がある。この問題に対して、上述したようにMFP100がスリープモードに移行するための条件を満たす前に、前もって通信モードを決定しておくことにより、MFP100がスリープモードに移行する際に、迅速にNIC101の通信モードを変更させることができる。
次に、MFP100がスリープモードに移行する場合の動作について説明する。図6は、MFP100がスリープモードに移行する際の、MFP100及びNIC101の動作を説明するためのフローチャートである。図6に示すフローチャートのうち、破線よりも左側の各ステップはMFP100のCPU221により実行される。また、破線よりも右側の各ステップはNIC101のCPU201により実行される。
まず、スタンバイ状態にあるMFP100は、ステップS601において、自装置がスリープモードに移行するための条件を満たしているか否かを判定する。この条件は、予めユーザにより設定されているものであって、ここでは、ユーザによる操作が所定期間行われなかった場合やプリント動作が終了してから所定期間が経過した場合に、スリープモードに移行するように設定されているものとする。
ステップS601の判定の結果、スリープモードに移行するための条件を満たしていると判定された場合は、ステップS602に進み、スリープモードに移行する。具体的には、操作部230や拡張I/F224などの特定のユニットを除く各ユニットへの電力供給をストップする。また、これとともに、通信モード設定部313は、ioctl命令を用いてNICドライバ312に対してスリープモードへの移行を通知する。NICドライバ312は、この通知を受けて、ステップS603において、NIC101にネットワークへのリンクをダウンするよう指示する。
NIC101側では、ステップS604において、NICドライバ312からの指示を受けて、ネットワークへのリンクをダウンする。
更に、MFP100側では、ステップS605において、通信モード設定部313がioctl命令を用いてスリープ時の通信モードをNICドライバ312に通知し、NICドライバ312がNIC101に設定させる。
NIC101側では、ステップS606において、MFP100から通知される通信モードを、自装置がHUB102と通信する際の通信モードとして設定し、リンクアップする。なお、ここでスリープ時の通信モードがAutoNegotiationの場合は、NICドライバ312がAutoNegotiationの処理を実行し、HUB102が対応可能な通信モードに基づいて、NIC101が設定すべき通信モードを決定する。
なお、スリープ時の通信モードは、図5のステップS510またはS511で決定したタイミングでNIC101に通知しておいても構わない。この場合、MFP100がスリープモードに移行するときには、スリープモードに移行する旨のみをNIC101に通知することにより、NIC101内のレジスタで予め管理されているスリープ時の通信モードに変更されることになる。
次に、MFP100がスリープモードからスタンバイ状態に復帰する場合の動作について説明する。図7は、MFP100がスリープモードからスタンバイ状態に復帰する際の、MFP100及びNIC101の動作を説明するためのフローチャートである。図7に示すフローチャートのうち、破線よりも左側の各ステップはMFP100のCPU221により実行される。また、破線よりも右側の各ステップはNIC101のCPU201により実行される。
まず、スリープ状態にあるMFP100は、ステップS701において、自装置がスタンバイ状態に復帰するための条件を満たしているか否かを判定する。この条件は、予めユーザにより設定されているものであって、ここでは、操作部230においてユーザによる操作が行われた場合や、ネットワークからの特定のパケットが受信された場合に、スタンバイ状態に復帰するように設定されているものとする。
なお、特定のパケットとは、例えば、(1)MFP100宛てのユニキャストパケット、(2)スリープモードからの復帰を要求する復帰パケット、(3)特定のプロトコルのブロードキャストパケット/マルチキャストパケット等が挙げられる。なお、(2)の復帰パケットとは、パケット中に特定のパターンを含むマジックパケットである。また、(3)の特定のプロトコルのブロードキャストパケット/マルチキャストパケットとは、例えば、LAN103上の他のノードがネットワーク上のMFPを探索するためのプロトコルに従った探索パケットである。
また、上記以外にも、NIC101のネットワーク接続が再検知された場合にも、スタンバイ状態に復帰する。なお、ここではNIC101のネットワークI/F204にネットワークケーブルが挿入された場合だけでなく、NIC101が電気的にHUB102に接続された場合にもスタンバイ状態に復帰する。即ち、NIC101側ではネットワークケーブルが挿入されたままの状態で、HUB102の電源が再投入されたりHUB自体が交換されたりした場合にもMFP100はスタンバイ状態に復帰する。
ステップS701の判定の結果、スタンバイ状態に復帰するための条件を満たしていると判定された場合は、ステップS702に進み、スリープモードを解除する。具体的には、各ユニットへの電力供給のストップを解除し、電力供給を再開する。また、これとともに、通信モード設定部313は、ioctl命令を用いてNICドライバ312に対してスタンバイ状態への復帰を通知する。NICドライバ312は、この通知を受けて、ステップS703において、NIC101にネットワークへのリンクをダウンするよう指示する。
NIC101側では、ステップS704において、NICドライバ312からの指示を受けて、ネットワークへのリンクをダウンする。
更に、MFP100側では、ステップS705において、通信モード設定部313がioctl命令を用いてスタンバイ時の通信モードをNICドライバ312に通知し、NICドライバ312がNIC101に設定させる。このとき通知されるスタンバイ時の通信モードとは、図4に示す設定画面において設定されている通信モードである。
NIC101側では、ステップS706において、MFP100から通知される通信モードを、自装置がHUB102と通信する際の通信モードとして設定し、リンクアップする。なお、ここでスタンバイ時の通信モードがAutoNegotiationの場合は、NICドライバ312がAutoNegotiationの処理を実行し、HUB102が対応可能な通信モードに基づいて、NIC101が設定すべき通信モードを決定する。
なお、スタンバイ時の通信モード、MAP100がスリープ状態にある間もNIC101内のレジスタで管理しておくようにしても構わない。この場合、MFP100がスリープモードから復帰するときには、復帰する旨のみをNIC101に通知することにより、NIC101内のレジスタで管理されているスタンバイ時の通信モードに変更されることになる。
MFP100側では、次に、ステップS707において、通信モード設定部313がioctl命令を用いて、HUB102の通信能力をNICドライバ312に問い合わせる。NICドライバ312は、この問い合わせに応じてNIC101に対して、HUB102の通信能力を示す能力情報を要求する。この要求を受けて、NIC101は、ステップS708において、HUB102の能力情報をMFP100に対して通知する。
より具体的には、この時、通信モード設定部313は、NICドライバ312を介して、NIC101におけるLink−Partner−Abilityのレジスタの内容を参照することにより、HUB102の能力情報を取得する。
なお、NIC101は、ステップS706でリンクアップする際に、HUB102と通信し、HUB102の能力情報を取得しておく。この能力情報の取得は、スタンバイ時の通信モードがAutoNegotiationでなかった場合(特定の通信スピードやDuplexが指定されている場合)にも行われている。
ステップS709では、HUB102の能力情報が取得できたか否かの判定を行う。ここで、HUB102の能力情報が取得できたと判定された場合は、ステップS710に進み、HUB102が10Mbpsの通信スピードをサポートしているか否かの判定を行う。そして、この判定の結果、HUB102が10Mbpsの通信スピードをサポートしていると判定された場合は、ステップS711に進む。
ステップS711では、通信モード設定部313が、MFP100がスリープモードに移行している状態でNIC101とHUB102とが通信する際の通信モードを10Mbpsと決定する。そして、通信モード設定部313は、この決定した通信モードを示す情報を、NICドライバ312に通知しておく。
一方、ステップS709の判定の結果、HUB102の能力情報が取得できなかったと判定された場合、またはステップS710の判定の結果、HUB102が10Mbpsの通信スピードをサポートしていないと判定された場合はステップS511に進む。
ステップS511では、通信モード設定部313が、MFP100がスリープモードに移行している状態でNIC101とHUB102とが通信する際の通信モードをAutoNegotiationと決定する。そして、通信モード設定部313は、この決定した通信モードを示す情報を、NICドライバ312に通知しておく。
このように、通信モード設定部313は、MFP100が起動したときだけでなく、MFP100がスリープモードからスタンバイ状態に復帰したときにも、改めてHUB102の能力情報の取得、及びスリープ時の通信モードの決定を行う。これは、MFP100がスリープモードからスタンバイ状態に復帰したことが、HUB102の電源が再投入されたことやHUB自体の交換に起因する場合があるためである。
つまり、HUB102が別のHUBに交換された場合、必ずしも新しく設置されたHUBが元のHUBと同じ通信能力を有しているとは限らないため、再度HUB102の通信能力を確認することにより、HUBが交換されていた場合にも対応することができる。また、HUB自体が交換されていなくても、HUB102の通信に関する設定が変更されてHUB102の電源が再投入された場合についても同様である。
次に、MFP100のスタンバイ状態における動作について説明する。図8は、MFP100がスタンバイ状態である場合の、MFP100及びNIC101の動作を説明するためのフローチャートである。
まず、スタンバイ状態にあるMFP100は、ステップS801において、NIC101がネットワークに接続されているか否かを判定する。なお、ここでは、NIC101のネットワークI/F204にネットワークケーブルが挿入されているか否かの判定だけでなく、NIC101が電気的にHUB102と接続されているか否かの判定を行う。
ステップS801の判定の結果、NIC101がネットワークに接続されていると判定された場合は、そのまま処理を終了する。一方、NIC101がネットワークに接続されていないと判定された場合は、ステップS802に進む。
ステップS802では、NIC101が新たにネットワークに接続されたか否かを判定する。なお、ここでも、NIC101のネットワークI/F204にネットワークケーブルが挿入されているか否かの判定だけでなく、NIC101が電気的にHUB102と接続されているか否かの判定を行う。
そして、ステップS802の判定の結果、NIC101が新たにネットワークに接続されたと判定された場合に、図5のステップS504に進む。即ち、MFP100がスタンバイ状態であって、ネットワークに新たに接続された場合には、MFP100が起動した場合と同様にしてNIC101にスタンバイ時の通信モードでリンクアップさせるとともに、スリープ時の通信モードの決定を行う。
このように、通信モード設定部313は、MFP100が起動したときだけでなく、MFP100がスタンバイ状態であって且つ新たにネットワークに接続されたときにも、改めてHUB102の能力情報の取得、及びスリープ時の通信モードの決定を行う。これは、新たにNIC101に接続されたHUBの通信能力が、元のHUBの通信能力と異なる場合があるためである。
つまり、HUB102が別のHUBに交換された場合、必ずしも新しく設置されたHUBが元のHUBと同じ通信能力を有しているとは限らないため、再度HUB102の通信能力を確認することにより、HUBが交換されていた場合にも対応することができる。また、HUB自体が交換されていなくても、HUB102の通信に関する設定が変更されてHUB102の電源が再投入された場合についても同様である。
(第2の実施形態)
次に、本発明に係る第2の実施形態について説明する。
第2の実施形態におけるMFP100及びNIC101のハードウェア構成及びソフトウェア構成は、上述した第1の実施形態と相違はないため、説明は省略する。また、第2の実施形態における通信システム全体の構成も、第1の実施形態と同様であるものとする。
第2の実施形態では、MFP100がスリープモードからスタンバイ状態に復帰する際に、この復帰の要因を判定し、復帰の要因が特定の要因であるか否かに応じて、HUB102の能力情報の再取得及びスリープ時の通信モードの再決定を行うようにしている。
図9は、MFP100がスリープモードからスタンバイ状態に復帰する際の、MFP100及びNIC101の動作を説明するためのフローチャートである。なお、図9のフローチャートは、第1の実施形態として説明した図7のフローチャートに対応するものであり、図7のフローチャートと比較して、ステップS901が追加されている点で異なっている。ステップS701乃至S712の各ステップの動作については図7で説明したものと同様のため、ここでは説明を省略する。
ステップS705において、通信モード設定部313がioctl命令を用いてスタンバイ時の通信モードをNICドライバ312に通知し、NICドライバ312がNIC101に設定させた後、ステップS901に進む。
ステップS901では、MFP100がスリープモードからスタンバイ状態に復帰する要因が特定の要因であるか否かを判定する。ここで、特定の要因とは、NIC101がネットワークに接続されたことを示す。即ち、ステップS901では、NIC101がネットワークに接続されたことに起因してMFP100が復帰するか否かを判定する。なお、ここでの判定においても、NIC101のネットワークI/F204にネットワークケーブルが挿入されているか否かの判定だけでなく、NIC101が電気的にHUB102と接続されているか否かの判定を行う。
そしてステップS901の判定の結果、復帰の要因がネットワークに接続されたことであれば、ステップS707に進み、HUB102の能力情報の取得、及びスリープ時の通信モードの決定を行う。一方、復帰の要因がネットワークに接続されたことでなければ、そのまま処理を終了する。
このように、第2の実施形態では、MFP100がスリープモードからスタンバイ状態に復帰する場合に、常に、HUB102の能力情報の取得やスリープ時の通信モードの決定を行うことなく、場合によって行うか否かを切り替えるようにしている。なぜなら、MFP100が復帰する要因が、ユーザが操作部230を操作したことであったり、或いはネットワークから上述した特定のパケットを受信したことであったりする場合は、HUB102の通信能力は変更していないと考えられるためである。つまり、HUB102の通信能力に変更がないことが明らかな場合には、HUB102の能力情報の取得や通信モードの決定といった処理を省くことにより、MFP100における処理の負荷を軽減することができる。
(その他の実施形態)
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体(記録媒体)等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接あるいは遠隔の外部装置から供給する。そして、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては、例えば、以下のようなものがある。フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページからハードディスク等の記録媒体にダウンロードすることによっても供給できる。すなわち、ホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等のコンピュータ読み取り可能な記憶媒体に格納してユーザに配布する。そして、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他にも、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後にも前述した実施形態の機能が実現される。すなわち、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行うことによっても前述した実施形態の機能が実現される。