図1に示すように、ネットワークシステム2は、PC100,200と、多機能機(即ちPC100,200の周辺機器)10と、を備える。各装置10,100,200は、LAN4を介して、相互に通信可能である。
(多機能機10の構成)
図1に示すように、多機能機10は、ASIC(Application Specific Integrated Circuit)12、フラッシュメモリ70、SDRAM80、ネットワークインターフェイス90、表示パネル92、及び、読取部94を備える。
ASIC12は、メインCPU20、メイン用クロック回路30、サブCPU40、サブ用クロック回路50、SRAM60、SDRAM制御回路64、及び、MACコントローラ66を備える。
メインCPU20は、SDRAM80に記憶されているプログラム82に従って様々な処理を実行する。これにより、受信制御部22と送信制御部24と取得部26との各機能が実現される。メイン用クロック回路30は、メインCPU20にクロック信号を供給する。メイン用クロック回路30からメインCPU20にクロック信号が供給されている間は、メインCPU20は非スリープ状態である。メインCPU20にクロック信号が供給されていない間は、メインCPU20はスリープ状態である。メインCPU20のスリープ状態は、メインCPU20の非スリープ状態と比較して、消費電力が低い状態である。メイン用クロック回路30は、サブCPU40によって制御される。即ち、サブCPU40によって、メインCPU20へのクロック信号の供給及び停止が制御される。
サブCPU40は、SRAM60に記憶されているプログラム62に従って様々な処理を実行する。これにより、受信制御部42と移行制御部48との各機能が実現される。サブ用クロック回路50は、サブCPU40にクロック信号を供給する。サブ用クロック回路50のクロック信号の周波数は、メイン用クロック回路30のクロック信号の周波数よりも低い。従って、メインCPU20を駆動するための消費電力と比べて、サブCPU40を駆動するための消費電力は低い。なお、メインCPU20の処理速度は、サブCPU40の処理速度よりも速い。サブ用クロック回路50は、多機能機10の電源がONにされるとサブCPU40にクロック信号を供給し、多機能機10の電源がOFFにされるとクロック信号を停止する。即ち、サブCPU40は、多機能機10の電源がONされている間、クロック信号が供給されている状態(非スリープ状態)で維持される。変形例では、サブCPU40は、メインCPU20が非スリープ状態である間、スリープ状態であってもよい。即ち、サブ用クロック回路50は、メインCPU20が非スリープ状態である間、サブCPU40へのクロック信号を停止してもよい。
SRAM60は、各CPU20,40からアクセス可能である。多機能機10の電源がONされると、メインCPU20は、フラッシュメモリ70内の圧縮されたプログラム72を展開して、展開済みのプログラム62をSRAM60に記憶する。
SDRAM制御回路64は、サブCPU40からの指示に従って、SDRAM80に対するクロック信号の供給の開始又は停止をして、消費電力が比較的に高い通常動作モードと、消費電力が比較的に低いセルフリフレッシュモードと、の間でSDRAM80の状態を移行させる。
MACコントローラ66は、ネットワークインターフェイス90に接続されている。MACコントローラ66は、LAN4を介して、ネットワークインターフェイス90でパケットが受信されると、メインCPU20又はサブCPU40の割込コントローラ(図示省略)にパケット割込要求信号を供給する。
フラッシュメモリ70は、ASIC12の外部に設けられている。フラッシュメモリ70は、各CPU20,40からアクセス可能である。フラッシュメモリ70は、各CPU20,40によって実行されるプログラム62,82が圧縮された状態のプログラム72を記憶している。
SDRAM80は、メインCPU20からアクセス可能である。SDRAM80は、SRAM60よりもメモリの総容量が大きく、各CPU20,40がアクセス(読み出し、書き込み)可能な速度が高速である。このため、SDRAM80の消費電力は、SRAM60の消費電力と比べて高い。SDRAM80は、SDRAM制御回路64によって制御され、通常動作モードとセルフリフレッシュモードとの間で状態が移行する。
SDRAM80は、さらに、外部のデバイス(例えばPC100,200)のデバイス情報(例えばMACアドレス)を登録するための登録テーブル(図示省略)を記憶している。メインCPU20は、外部のデバイスから登録要求パケットを受信すると、登録要求パケットに含まれるデバイス情報を、登録テーブルに登録する。多機能機10は、SDRAM80の登録テーブルに登録されているデバイス(例えばPC100,200)からの印刷指示を受信すると、印刷指示に従った印刷処理を実行する。なお、印刷指示は、XML(Extensible Markup Language)で記述される。
また、SDRAM80は、パケット情報84を記憶することができる。パケット情報84とは、外部のデバイス(例えばPC100)のMACアドレスと、登録指示パケットの受信時刻と、当該デバイスが当該登録指示パケットを送信してから次に登録指示パケットを送信するまでの待機間隔と、が対応付けられた情報(図3参照)である。
表示パネル92は、メインCPU20からの指示に従って、情報を表示する。表示パネル92には、ユーザからの操作を受け付けるためのタッチボタンが配置される。ユーザは、予め決められたスキャン指示操作を、タッチボタンに実行することができる。メインCPU20は、スキャン指示操作が受け付けられると、スキャン処理を実行させるための指示を読取部94に供給する。読取部94は、CCD方式の画像読取機構を備える。読取部94は、メインCPU20からのスキャン指示に従って、読取部94にセットされた原稿を読み取り、読み取った原稿の画像を示す画像データを生成するスキャン処理を実行する。なお、ユーザは、SDRAM80の登録テーブルに登録されているデバイスの中から、生成された画像データの送信先のデバイスを選択することができる。メインCPU20は、表示パネル92等からユーザの操作(デバイスの選択操作)を受け付ける場合、SDRAM80の登録テーブルに登録されているデバイスに対して、生成された画像データを送信することができる。また、多機能機10は、インクジェット方式又はレーザ方式の画像形成機構(図示省略)を備え、メインCPU20からの指示に従って、外部のデバイス(例えばPC100,200)から受信される印刷データによって表わされる画像を、印刷用紙に印刷することができる。
なお、SDRAM80の登録テーブルに記憶されるデバイス情報は、外部のデバイスを特定することが可能なID情報(例えばデバイス名)であってもよい。また、SDRAM80の登録テーブルには、外部のデバイスのIPアドレスと外部のデバイスの宛先ポート番号とによって表される外部のデバイスのアドレス情報が、ID情報と対応付けて記憶されていてもよい。メインCPU20は、SDRAM80の登録テーブルに登録されているID情報を、表示パネル92に表示させることによって、ユーザに、画像データの送信先のデバイスを選択させてもよい。メインCPU20は、ユーザによって選択されたID情報に対応するアドレス情報を用いて、画像データを送信してもよい。さらに、SDRAM80に記憶されるパケット情報84として、上記のID情報に、登録指示パケットの受信時刻と、ID情報によって特定されるデバイスが当該登録指示パケットを送信してから次に登録指示パケットを送信するまでの待機間隔と、が対応付けて記憶されていてもよい。
(多機能機10の状態移行)
多機能機10の状態は、レディ状態とスリープ状態との間で移行する。多機能機10の電源がONされると、多機能機10は、レディ状態となる。
(レディ状態)
多機能機10がレディ状態である場合、2個のCPU20,40は非スリープ状態(2個のクロック回路30,50からそれぞれクロック信号が供給されている状態)であり、2個のRAM60,80は通常動作モードである。この状態では、メインCPU20は、通常の処理を実行することができる。上記の通常の処理は、印刷指示に従った印刷処理、スキャン指示に従ったスキャン処理、ユーザの表示パネル92への操作に従った表示処理等を含む。なお、メインCPU20は、多機能機10がレディ状態である場合、SDRAM80に、レディ状態を示す状態変数を記憶させる。
(スリープ状態)
多機能機10は、サブCPU40が後述する図2のS16等の処理を実行することによって、レディ状態からスリープ状態に移行する。多機能機10がスリープ状態である場合、メインCPU20はスリープ状態であり(メイン用クロック回路30からのクロック信号が停止されている状態、サブCPU40は非スリープ状態であり(サブ用クロック回路50からのクロック信号が供給されている状態)、SRAM60は通常動作モードであり、SDRAM80はセルフリフレッシュモードである。多機能機10がスリープ状態であって、メインCPU20が上記の通常の処理(印刷処理、スキャン処理、表示処理等)を実行すべき場合には、多機能機10は、レディ状態に移行する。
なお、メインCPU20は、多機能機10がレディ状態からスリープ状態に移行される際に、SDRAM80内の状態変数を、SRAM60に移動させる。サブCPU40は、多機能機10がスリープ状態に移行されると、SRAM60内の状態変数を、スリープ状態を示す状態変数に変更する。さらに、サブCPU40は、多機能機10がスリープ状態からレディ状態に移行される際に、SRAM60内の状態変数を、SDRAM80に移動させる。メインCPU20は、多機能機10がレディ状態に移行されると、SDRAM80内の状態変数を、レディ状態を示す状態変数に変更する。
(PC100の構成)
PC100には、XMLで記述されるデータを利用して、外部のデバイス(例えば多機能機10)に機能実行指示を送信するためのプログラムがインストールされている。PC100は、ユーザによる印刷指示操作を受け付けると、印刷指示操作に従って、外部のデバイスに印刷指示を送信することができる。
(PC100の多機能機10への登録処理)
PC100は、ユーザによって予め決められた操作が実行されると、多機能機10に登録要求パケットを送信する。登録要求パケットは、PC100のデバイス情報(例えばPC100のMACアドレス)と、期間指示情報と、デバイス情報の登録を指示するコマンドと、を含む。期間指示情報は、PC100のデバイス情報を、多機能機10の登録テーブルに保持させる期間(例えば1時間)を示す。
多機能機10は、登録要求パケットが受信されると、登録要求パケットに含まれるPC100のデバイス情報を、登録テーブルに登録する。多機能機10は、さらに、PC100のデバイス情報を登録テーブルから消去するための保持終了時刻を、当該デバイス情報に対応付けて、デバイス登録テーブルに登録する。保持終了時刻は、次のようにして決定される。
多機能機10は、通常、外部デバイス(例えばPC100)から受信された登録要求パケットに含まれる期間指示情報によって示される期間(例えば1時間)を、当該外部デバイスのデバイス情報を登録テーブルに保持させる保持期間として決定する。ただし、詳しくは後述するが、多機能機10は、登録要求パケットに含まれる期間指示情報によって示される期間(例えば1時間)とは異なる期間を、保持期間として決定することがある。多機能機10は、登録要求パケットの受信時刻に、決定済みの保持期間(例えば1時間)を加算することによって、保持終了時刻を算出する。
なお、多機能機10は、決定済みの保持期間(例えば1時間)を示す期間確定情報を含む応答パケットを、登録要求パケットの応答として、PC100に送信する。多機能機10は、PC100のデバイス情報を、決定済みの保持期間(例えば1時間)に亘って保持する。
PC100は、多機能機10から登録要求パケットの応答パケットが受信されてから、応答パケットに含まれる期間確定情報によって示される保持期間(例えば1時間)の半分の期間(例えば30分間)が経過する際に、多機能機10に登録更新パケットを送信する。このように、保持期間が示すタイミングよりも大幅に早いタイミングで登録更新パケットを送信するのは、PC100のデバイス情報が多機能機10の登録テーブルから消去されるのを確実に防止するためである。なお、登録更新パケットは、PC100のデバイス情報と、応答コマンドに含まれる保持期間(例えば1時間)と同じ期間を示す期間指示情報と、デバイス情報の登録を更新することを示す更新コマンドと、を含む。
多機能機10は、登録要求パケットの場合と同様に、登録更新パケットに含まれる期間指示情報を用いて、保持期間を決定する。次いで、多機能機10は、登録更新パケットの受信時刻に、決定済みの保持期間(例えば1時間)を加算することによって、保持終了時刻を算出する。そして、多機能機10は、PC100のデバイス情報に対応付けられている現在の保持終了時刻を、算出済みの保持終了時刻に更新する。なお、多機能機10は、保持期間(例えば1時間)を経過するまでに、PC100から登録更新パケットが受信されない場合、PC100のデバイス情報を、登録テーブルから消去する。
さらに、多機能機10は、登録要求パケットの場合と同様に、決定済みの保持期間(例えば1時間)を示す期間確定情報を含む応答パケットを、登録更新パケットの応答として、PC100に送信する。
PC100は、多機能機10から登録更新パケットの応答パケットが受信されてから、応答パケットに含まれる期間確定情報によって示される保持期間の半分の期間が経過する際に、当該応答パケットに含まれる保持期間と同じ期間を示す期間指示情報を含む登録更新パケットを再び送信する。即ち、PC100は、登録更新パケットの多機能機10への送信を繰り返し実行する。
なお、PC100は、ユーザによって予め決められた登録解除操作が実行されると、PC100のデバイス情報を含む登録解除パケットを、多機能機10に送信する。この場合、PC100は、繰り返し送信される予定の登録更新パケットの送信を停止する。多機能機10は、登録解除パケットを受信すると、登録解除パケットに含まれるPC100のデバイス情報を、登録テーブルから消去する。
なお、PC100は、登録要求パケット又は登録更新パケット(以下では登録要求パケットと登録更新パケットとを「登録指示パケット」と呼ぶ)を多機能機10に送信してから、2秒間(以下では「タイムアウト時間」と呼ぶ)経過しても、応答パケットが多機能機10から受信されない場合、応答パケットを受信できないと判断する。この場合、PC100は、再度、登録指示パケットを、多機能機10に送信する。PC100は、予め決められた個数の登録指示パケットを送信しても、タイムアウト時間内に応答パケットが受信されない場合、通信エラーを示す情報を、PC100の表示部に表示させる。これにより、PC100のユーザは、多機能機10とPC100とが通信できないことを知ることができる。
PC200は、PC100と同様の構成を備える。即ち、PC200は、ユーザによって予め決められた登録操作が実行されると、登録要求パケットを多機能機10に送信する。また、PC200は、登録更新パケットを多機能機10に送信する処理を繰り返し実行する。
(メインCPU20及びサブCPU40が実行する処理)
次いで、図2を参照して、メインCPU20及びサブCPU40が実行する処理の内容について説明する。本処理は、多機能機10の電源がONされている間、繰り返し実行される。多機能機10の電源がONされたタイミングでは、多機能機10はレディ状態である。即ち、多機能機10の電源がONされたタイミングでは、メインCPU20が本処理を実行する。
S12では、受信制御部22は、LAN4を介して、パケットが受信されたのか否かを判断する。ネットワークインターフェイス90でパケットが受信される場合、MACコントローラ66は、パケット割込要求信号を、メインCPU20に供給する。受信制御部22は、パケット割込要求信号を取得すると、受信されたパケットを、ネットワークインターフェイス90からSDRAM80に移動させる。S12では、受信制御部22は、SDRAM80に受信済みのパケットが存在するのか否かを判断する。
パケットが受信されていない場合(S12でNO)、S14において、メインCPU20は、メインCPU20をスリープ状態に移行可能(即ち多機能機10をスリープ状態に移行可能)であるのか否かを判断する。例えば、メインCPU20は、以下の(1)〜(5)の条件を含む複数個の条件の全てでNOと判断される場合に、スリープ状態に移行可能(S14でYES)と判断し、複数個の条件のうち、少なくとも1個の条件でYESと判断される場合に、スリープ状態に移行不可能(S14でNO)と判断する。
上記の複数個の条件は、(1)多機能機10がパケットを外部に送信中であるのか否か、(2)未処理パケットがSDRAM80に記憶されているのか否か、(3)多機能機10にTCP接続しているデバイス(例えばPC100)があるのか否か、(4)多機能機10が起動又はシャットダウンのための処理を実行しているのか否か、(5)ネットワークの負荷が高いのか否か、を含む。
例えば、メインCPU20がPC100等からのパケットに対する応答を送信している場合には、上記の(1)でYESと判断される。例えば、多機能機10がWebサーバ機能を有しており、PC100が多機能機10のWebサーバにTCP接続中である場合には、上記の(3)でYESと判断される。例えば、S14の処理を実行する直前の所定の期間に受信されたパケット数が所定の個数を超えている場合には、多機能機10が処理すべきパケットを受信する可能性が高いために、上記の(5)でYESと判断される。従って、ここで示されるように、上記の(1)〜(5)の条件のうち、少なくとも1個の条件でYESと判断される場合に、スリープ状態に移行不可能(S14でNO)と判断する。
一方、上記の(1)〜(5)の条件の全てでNOと判断される場合に、メインCPU20がスリープ状態に移行可能(S14でYES)と判断される。このS14でYESの場合、S16において、移行制御部48は、メインCPU20を、非スリープ状態からスリープ状態に移行させる。具体的には、移行制御部48は、メイン用クロック回路30にクロック供給の停止を指示する。この結果、メインCPU20は、非スリープ状態からスリープ状態に移行する。なお、S16では、さらに、移行制御部48は、SDRAM80を通常動作モードからセルフリフレッシュモードに移行させる。これにより、多機能機10は、スリープ状態となる。なお、SDRAM80がセルフリフレッシュモードである間は、SDRAM80に情報を書き込んだり、SDRAM80から情報を読み込んだりすることができない。例えば、ネットワークインターフェイス90で受信されたパケットをSDRAM80に記憶させることができない。
なお、メインCPU20は、S16でスリープ状態に移行する前に、多機能機10をレディ状態からスリープ状態に移行するために、以下の処理を実行する。即ち、メインCPU20は、代理応答情報を、SDRAM80からSRAM60に移動させる。代理応答情報は、メインCPU20がスリープ状態である間に受信されたパケットに従った処理を、サブCPU40が実行するための情報(例えば多機能機10のIPアドレス、MACアドレス、ノード名等)を含む。また、メインCPU20は、LAN4を介して受信されるパケットを記憶するためのRAMを、SDRAM80からSRAM60に切り替える。続いて、メインCPU20は、サブCPU40以外からの割込要求をマスク(禁止)する。次いで、メインCPU20は、サブCPU40に処理を開始させるための開始信号を、サブCPU40に供給する。サブCPU40は、開始信号が取得されると、S16の処理を実行する。なお、メインCPU20は、WAIT命令を実行する。WAIT命令が実行されると、メインCPU20は、サブCPU40から割込要求信号が供給されるまで待機する実行停止状態となる。
S16が終了すると、S12に戻る。即ち、メインCPU20がスリープ状態である間に、S12が実行される。この場合、サブCPU40の受信制御部42がS12を実行する。S12でNOの場合、S14において、メインCPU20が既にスリープ状態であるために、NOと判断され、S12に戻る。
以下のS18の処理では、S12において、サブCPU40の受信制御部42が、パケットが受信されたと判断する場合(メインCPU20がスリープ状態である間にパケットが受信される場合)について説明する。
S18では、サブCPU40は、メインCPU20がスリープ状態であるのか否かを判断する。具体的には、サブCPU40は、SRAM60内の状態変数を確認して、多機能機10がスリープ状態であるのか否かを判断することによって、メインCPU20がスリープ状態であるのか否かを判断する。この場合では、S18にてYESと判断され、次いで、S20では、サブCPU40は、S12で受信されたパケットを解析することによって、サブCPU40自身がパケットに従った処理を実行することができるのか否かを判断する。
例えば、サブCPU40は、SRAM60内の代理応答情報を用いて、S12で受信されたパケットに従った応答処理を実行可能であるのか否かを判断する。サブCPU40が代理して実行可能な応答処理は、例えば、PINGに対する応答、ARP(Address Resolution Protocol)のパケットに対する応答等を含む。なお、S12で受信されたパケットがPC100,200からの登録指示パケットである場合、サブCPU40は、サブCPU40自身がパケットに従った処理を実行することができないと判断する。
S20でYESの場合、S22において、サブCPU40は、S12で受信されたパケットに従った処理を実行して、S12に戻る。S20でNOの場合、S24において、移行制御部48は、メインCPU20をスリープ状態から非スリープ状態に移行する。具体的には、移行制御部48は、メイン用クロック回路30に、メインCPU20にクロック供給を開始するよう指示する。この結果、メインCPU20にクロックが供給され、メインCPU20がスリープ状態から非スリープ状態に移行する。移行制御部48は、メインCPU20に割込要求信号を供給する。
サブCPU40は、さらに、SDRAM80をセルフリフレッシュモードから通常動作モードに移行させる処理、外部デバイスからの受信パケットの記憶先をSRAM60からSDRAM80に切り替える処理、SRAM60内の情報をSDRAM80に移動させる処理等を実行する。
メインCPU20は、サブCPU40から割込要求信号が供給されると、WAIT命令を解除する。メインCPU20は、SRAM60に記憶されている未処理のパケットを、SDRAM80に移動させる。
S26において、メインCPU20は、S12で受信されたパケットが、登録指示パケットであるのか否かを判断する。具体的には、メインCPU20は、S12で受信されたパケットに、登録コマンド又は更新コマンドが含まれている場合に、登録指示パケットであると判断する。
登録指示パケットでないと判断される場合(S26でNO)、S28において、メインCPU20は、S12で受信されたパケットに応じた処理(例えば上記の通常の処理(印刷指示に従った印刷処理等))を実行して、S12に戻る。
一方、登録指示パケットであると判断される場合(S26でYES)、S30において、メインCPU20は、SDRAM80にパケット情報84が記憶されているのか否かを判断する。パケット情報84がSDRAM80に記憶されていない場合(S30でNO)にS34に進み、記憶されている場合(S30でYES)にS32に進む。
S32では、メインCPU20は、S12で受信された登録指示パケットの送信元のデバイスが、パケット情報84として記憶されているデバイスと一致するのか否かを判断する。具体的には、メインCPU20は、登録指示パケットに含まれる送信元のデバイスのMACアドレスと、パケット情報84に含まれるMACアドレスと、が一致するのか否かを判断する。ここで、上述した2つのMACアドレスが一致する場合、S32でYESと判断されS34に進み、一方、上述した2つのMACアドレスが異なる場合、S32でNOと判断されS36に進む。
S34では、メインCPU20は、SDRAM80に、パケット情報84を記憶させる。S30でNOと判断された場合(即ちパケット情報84が記憶されていない場合)に実行されるS34では、メインCPU20は、登録指示パケット(即ち登録要求パケット)の送信元デバイスのMACアドレスと、当該登録指示パケットの受信時刻と、を対応付けて、SDRAM80に記憶させる。さらに、メインCPU20は、登録指示パケットに含まれる期間指示情報によって示される期間の半分の期間(例えば1時間の半分の30分)を、待機期間(図3参照)として記憶させる。
一方、S32でYESと判断された場合(即ちSDRAM80に既にパケット情報84が記憶されている場合)に実行されるS34では、メインCPU20は、パケット情報84に含まれる前回の登録指示パケットの受信時刻を、今回の登録指示パケットの受信時刻に更新する。さらに、メインCPU20は、登録指示パケットに含まれる期間指示情報によって示される期間の半分の期間(例えば1時間の半分の30分)を、待機期間(図3参照)として記憶させる。S34が終了すると、S46に進む。
一方、上述したように、今回のS12で受信された登録指示パケットの送信元のデバイス(以下では「PC200」を例として説明する)が、パケット情報84として記憶されているデバイス(以下では「PC100」を例として説明する)と異なる場合(S32でNOの場合)に、S36の処理が実行される。S36では、取得部26は、PC200から次回の登録指示パケットが受信される受信予定時刻を算出する。具体的には、取得部26は、今回の登録指示パケットに含まれる期間指示情報によって示される期間の半分の期間(例えば1時間の半分の30分間)を、今回の登録指示パケットが受信された受信時刻に加算することによって、受信予定時刻を算出する。
なお、PC200は、今回の登録指示パケットに対する応答パケットを受信してから、当該応答パケットに含まれる期間確定情報によって示される保持期間の半分の期間(即ち待機期間)が経過する際に、次回の登録指示パケットを送信する。従って、厳密には、S36において、取得部26は、PC200が今回の登録指示パケットに対する応答パケットを受信した時刻に、待機期間を加算することによって、受信予定時刻を算出しなければならない。しかしながら、多機能機10がPC200から登録指示パケットを受信してから、PC200が多機能機10から登録指示パケットに対する応答パケットを受信するまでの期間は、非常に短い。即ち、登録指示パケットを多機能機10が受信する時刻と、当該登録指示パケットに対する応答パケットをPC200が受信する時刻とは、ほぼ等しい。従って、S36において、取得部26は、PC200から今回の登録指示パケットを受信した受信時刻に待機期間を加算して、受信予定時刻を算出する。
次いで、S38では、取得部26は、SDRAM80に記憶されているパケット情報84に含まれる受信時刻に、当該パケット情報84に含まれる待機期間を加算することによって、PC100から次回の登録指示パケットが受信される次回受信時刻を算出する。次いで、S40では、メインCPU20は、S36で算出された受信予定時刻(即ちPC200から次回の登録指示パケットが受信される予定時刻)と、S38で算出された次回受信時刻(即ちPC100から次回の登録指示パケットが受信される時刻)と、が略等しいのか否かを判断する。
ここで「受信予定時刻と次回予定時刻とが略等しい」とは、受信予定時刻と次回受信時刻との差分が、所定値以下であることを意味する。例えば、所定値は、上記のタイムアウト時間よりも短い(例えば上記のタイムアウト時間の10分の1(即ち0.2秒))期間を示す値に設定されてもよい。また、例えば、所定値は、S12において、特定の登録指示パケットが受信されてから、上記の特定の登録指示パケットについてのS18からS48の処理が終了するまでの期間を示す値に設定されてもよい。この場合、上記の特定の登録指示パケットについてのS18からS48の処理が終了した後に実行されるS12の処理において、NOと判断されることを回避することができる。これにより、S14でYESと判断されて、メインCPU20がスリープ状態に移行されることなく(S16)、上記の特定の登録指示パケットの次にS12において受信される登録指示パケットについて、S18からS48までの処理を実行することができる。
なお、S38では、S36と同様に、取得部26は、多機能機10がPC100から登録指示パケットを受信してから、PC100が多機能機10から登録指示パケットに対する応答パケットを受信するまでの期間は、非常に短い。即ち、登録指示パケットを多機能機10が受信する時刻と、当該登録指示パケットに対する応答パケットをPC100が受信する時刻とは、ほぼ等しい。従って、S38において、取得部26は、PC100から今回の登録指示パケットを受信した受信時刻に待機期間を加算して、受信予定時刻を算出する。
S36で算出された受信予定時刻とS38で算出された次回受信時刻とが略等しい場合(S40でYES)、S42において、メインCPU20は、S36で算出された受信予定時刻を、PC200が次回の登録指示パケットを送信するための送信時刻として決定する。一方、S36で算出された受信予定時刻とS38で算出された次回受信時刻とが略等しくない場合(S40でNO)、S44において、メインCPU20は、S38で算出された次回受信時刻(即ちPC100から次回の登録指示パケットが受信される時刻)を、PC200が次回の登録指示パケットを送信するための送信時刻として決定する。S42またはS44が終了すると、S46に進む。
次いで、S46では、メインCPU20は、デバイス情報を、登録テーブルに登録する。具体的には、メインCPU20は、S12で受信された登録指示パケットが、登録要求パケットである場合、登録要求パケットに含まれるデバイス情報を、登録テーブルに登録する。メインCPU20は、さらに、算出された保持終了時刻を、デバイス情報に対応づいて登録テーブルに登録する。メインCPU20は、S12で受信された登録指示パケットが、登録更新パケットである場合、登録更新パケットに含まれるデバイス情報と一致するデバイス情報に対応付けて登録テーブルに登録されている保持終了時刻を、算出された保持終了時刻に更新する。なお、S34、S42及びS44のいずれの処理が実行された後にS46が実行されるのかに応じて、保持終了時刻の算出方法は異なる。
S34又はS42が実行された後のS46では、メインCPU20は、最初に、S12で受信された登録指示パケットに含まれる期間指示情報によって示される期間(例えば1時間)を、当該登録指示パケットに含まれるデバイス情報と一致するデバイス情報を、登録テーブルに登録させる保持期間として決定する。次いで、メインCPU20は、登録指示パケットの受信時刻に、決定済みの保持期間(例えば1時間)を加算することによって、保持終了時刻を算出する。即ち、S34又はS42が実行された後のS46では、S12で受信された登録指示パケットに含まれる期間指示情報によって示される期間を用いて、保持終了時刻が算出される。
一方、S44が実行された後のS46では、メインCPU20は、最初に、S38で算出された次回受信時刻(即ちPC100から次回に登録指示パケットが受信される時刻)から、S12における登録指示パケットの受信時刻を減算して、減算値を算出する。次いで、メインCPU20は、算出された減算値を2倍することによって得られる値を、保持期間として決定する。次いで、メインCPU20は、登録指示パケットの受信時刻に、決定済みの保持期間(例えば1時間)を加算することによって、保持終了時刻を算出する。即ち、S44が実行された後のS46では、S12で受信された登録指示パケットに含まれる期間指示情報によって示される期間に関わらず、保持終了時刻が算出される。
S46が実行された後、S48では、S12で受信された登録指示パケットに対する応答パケットを、登録指示パケットの送信元のデバイスに送信して、応答処理を終了する。応答パケットは、S46で決定された保持期間を示す期間確定情報が含まれる。
(本実施例の効果)
図3を参照して、各装置10,100,200の動作と、本実施例の効果と、を説明する。なお、図3では、メインCPU20がスリープ状態である状況で開始される。
12:00:00では、PC100は、M−1(Mは2以上の整数)番目の登録指示パケットを、多機能機10に送信する。なお、M−1番目の登録指示パケットは、1時間を示す期間指示情報を含む。M−1番目の登録指示パケットが受信されると(図2のS12)、移行制御部48は、メインCPU20を非スリープ状態に移行させる(図2のS24)。メインCPU20は、PC100のMACアドレス(即ち「PC100」)と対応付けて、受信時刻(即ち「12:00:00」)を記憶させる(即ちパケット情報84)(図2のS34)。さらに、メインCPU20は、M−1番目の登録指示パケットの期間指示情報によって示される期間(即ち1時間)の半分の期間(即ち30分間)を、待機期間として、パケット情報84を記憶する(図2のS34)。
送信制御部24は、M−1番目の登録指示パケットの応答として、M−1番目の応答パケットを送信する(図2のS48)。M−1番目の応答パケットは、M−1番目の登録指示パケットに含まれる期間指示情報によって示される期間(即ち1時間)と等しい保持期間を示す期間確定情報を含む。
M−1番目の応答パケットが送信されると、移行制御部48は、メインCPU20を、非スリープ状態からスリープ状態に移行させる(図2のS16)。
12:15:00では、PC200は、N−1(Nは2以上の整数)番目の登録指示パケットを、多機能機10に送信する。なお、N−1番目の登録指示パケットは、1時間を示す期間指示情報を含む。N−1番目の登録指示パケットが受信されると(図2のS12)、移行制御部48は、メインCPU20を非スリープ状態に移行させる(図2のS24)。取得部26は、登録指示パケットに含まれる期間指示情報によって示される期間期間(即ち1時間)の半分の期間(即ち30分間)を、今回の登録指示パケットが受信された受信時刻に加算することによって、N番目の登録指示パケットの受信予定時刻(即ち「12:45:00」)を算出する(図3のP2で示す)(図2のS36)。
さらに、取得部26は、パケット情報84に含まれる受信時刻(PC100からM−1番目の登録指示パケットが受信された時刻(即ち「12:00:00」))と、受信間隔(即ち30分間)とを用いて、PC100から次に受信される次回受信時刻(即ち「12:30:00」)を算出する(図3のP1で示す)(図2のS38)。メインCPU20は、P1とP2とが略等しくない(図2のS40でNO)ために、PC200がN番目の登録指示パケットの送信時刻を、「12:30:00」に決定する(図3のP1で示す)(図2のS44)。
送信制御部24は、N−1番目の登録指示パケットの応答として、N−1番目の応答パケットを送信する(図2のS48)。メインCPU20は、決定された送信時刻(即ち「12:30:00」)から、N−1番目の登録指示パケットの受信時刻(即ち「12:15:00」)を減算することによって、減算値を算出する(即ち15分間)。次いで、減算値を2倍することによって得られる値を、保持期間(即ち30分間)として決定する(図2のS46)。N−1番目の応答パケットは、決定された保持期間を示す期間確定情報を含む。
N−1番目の応答パケットが送信されると、移行制御部48は、メインCPU20を、非スリープ状態からスリープ状態に移行させる(図2のS16)。
12:30:00では、PC100は、M番目の登録指示パケットを、多機能機10に送信する。同様に、PC200は、N番目の登録指示パケットを、多機能機10に送信する。この構成によれば、PC100から受信されるM番目の登録指示パケットの受信タイミングと、PC200から受信されるN番目の登録指示パケットの受信タイミングと、を等しくすることができる。また、PC200から次に受信されるN番目の登録指示パケットの受信タイミングを、N+1番目以降に受信される登録指示パケットの受信タイミングと等しくする場合と比べて、早期に、PC100からの登録指示パケットと、PC200からの登録指示パケットと、を略等しいタイミングで受信することができる。
N−1番目の登録指示パケットの送信タイミングと、N番目の登録指示パケットの送信タイミングと、の間隔(図3のT1)は、N−1番目の登録指示パケットの送信タイミングと、N−1番目の登録指示パケット(受信時刻「12:15:00」)に含まれる期間指示情報によって示される期間(即ち1時間)を用いて得られるN番目の登録指示パケットの送信タイミングと、の間隔(図3のT2)よりも短い。即ち、N番目の登録指示パケットの送信タイミングが、予定されている送信タイミングよりも早い。この構成によれば、多機能機10は、N−1番目の登録指示パケットの送信タイミングと、N番目の登録指示パケットの送信タイミングと、の間隔を、T2よりも長くすることによって、PC100とPC200とからの登録指示パケットの受信タイミングを略等しくさせる場合と比べて、早期に、PC100からの登録指示パケットと、PC200からの登録指示パケットと、を略等しいタイミングで受信することができる。
M番目及びN番目の登録指示パケットが受信されると(図2のS12)、移行制御部48は、メインCPU20を非スリープ状態に移行させる(図2のS24)。メインCPU20は、PC100のMACアドレス(即ち「PC100」)と対応付けて、受信時刻(即ち「12:30:00」)を、記憶させる(即ちパケット情報84)(図2のS34)。
取得部26は、N番目の登録指示パケットに含まれる期間指示情報によって示される期間(即ち30分間)の半分の期間(即ち15分間)を、N番目の登録指示パケットの受信時刻(即ち「12:30:00」)に加算することによって、N+1番目の登録指示パケットの受信予定時刻(即ち「12:45:00」)を算出する(図3のP2で示す)(図2のS36)。次いで、取得部26は、パケット情報84に含まれる受信時刻(即ち「12:30:00」)と、受信間隔(即ち30分間)とを用いて、PC100から次に受信される次回受信時刻(即ち「13:00:00」)を算出する(図3のP3で示す)(図2のS38)。メインCPU20は、P2とP3と略等しくないため(図2のS40でNO)に、PC200がN番目の登録指示パケットの送信時刻を、「13:00:00」に決定する(図3のP3で示す)(図2のS44)。
送信制御部24は、M番目の登録指示パケットの応答として、M番目の応答パケットを送信する(図2のS48)。M番目の応答パケットは、M番目の登録指示パケットに含まれる期間指示情報によって示される期間(即ち1時間)と等しい保持期間を示す期間確定情報を含む。さらに、送信制御部24は、N番目の登録指示パケットの応答として、N番目の応答パケットを送信する(図2のS48)。メインCPU20は、決定された送信時刻(即ち「13:00:00」)から、N番目の登録指示パケットの受信時刻(即ち「12:30:00」)を減算することによって、減算値を算出する(即ち30分間)。次いで、減算値を2倍することによって得られる値を、保持期間(即ち1時間)として決定する(図2のS46)。N番目の応答パケットは、決定された保持期間を示す期間確定情報を含む。
M番目及びN番目の応答パケットが送信されると、移行制御部48は、メインCPU20を、非スリープ状態からスリープ状態に移行させる(図2のS16)。
13:00:00では、PC100は、M+1番目の登録指示パケットを、多機能機10に送信する。同様に、PC200は、N+1番目の登録指示パケットを、多機能機10に送信する。この構成によれば、PC100から受信される登録指示パケットの受信タイミングと、PC200から受信される登録指示パケットの受信タイミングと、を等しくすることができる。また、この構成によれば、受信タイミングが略等しくなったM番目の登録指示パケットとN番目の登録指示パケットの次にPC100,200から受信されるM+1番目の登録指示パケットとN+1番目の登録指示パケットとを、略等しいタイミングで受信することができる。
M+1番目及びN+1番目の登録指示パケットが受信されると(図2のS12)、移行制御部48は、メインCPU20を非スリープ状態に移行させる(図2のS24)。メインCPU20は、PC100のMACアドレス(即ち「PC100」)と対応付けて、受信時刻(即ち「13:00:00」)を、記憶させる(即ちパケット情報84)(図2のS34)。
取得部26は、N+1番目の登録指示パケット期間指示情報によって示される期間(即ち1時間)の半分の期間(即ち30分間)を、登録指示パケットが受信された受信時刻に加算することによって、N+2番目の登録指示パケットの受信予定時刻(即ち「13:30:00」)を算出する(図2のS36)。次いで、取得部26は、パケット情報84に含まれる次回受信時刻(即ち「13:00:00」)と、受信間隔(即ち30分間)とを用いて、PC100からM+2番目の登録指示パケットが受信される次回受信時刻(即ち「13:30:00」)を算出する(図2のS38)。メインCPU20は、M+2番目の登録指示パケットの受信時刻と、N+2番目の登録指示パケットの受信時刻と、が等しいために、PC200がN+2番目の登録指示パケットの送信時刻を、「13:30:00」に決定する(図3のP3で示す)(図2のS44)。
また、送信制御部24は、M+1番目の登録指示パケットの応答として、M+1番目の応答パケットを送信する(図2のS48)。M+1番目の応答パケットは、M+1番目の登録指示パケットに含まれる期間指示情報によって示される期間(即ち1時間)と等しい保持期間を示す期間確定情報を含む。さらに、送信制御部24は、N+1番目の登録指示パケットの応答として、N+1番目の応答パケットを送信する(図2のS48)。N+1番目の応答パケットは、N+1番目の登録指示パケットに含まれる期間指示情報によって示される期間(即ち1時間)と等しい保持期間を示す期間確定情報を含む。
なお、M+2番目及びN+2番目の登録指示パケット以降では、多機能機10は、図2のS30からS44の処理を実行しなくてもよい。多機能機10は、登録指示パケットに含まれる期間指示情報によって示される期間と等しい保持期間を示す期間確定情報を含む応答パケットを送信することによって、PC100から送信される登録指示パケットと、PC200から送信される登録指示パケットと、を等しいタイミングで受信することができる。即ち、メインCPU20は、PC100及びPC200から、登録指示パケットを、2回続けて等しいタイミングで受信する場合に、それ以降のS30からS44の処理を実行しなくてもよい。
多機能機10は、PC200からの登録指示パケットに含まれる期間指示情報によって示される期間(例えば1時間)に関わらず、保持期間(例えば30分間)を決定し、決定された保持期間を示す期間確定情報を含む応答パケットをPC200に送信する。PC200は、応答パケットが受信されると、受信された応答パケットの保持期間の半分の期間(例えば15分間)の経過する際に、登録指示パケットを送信する。この結果、多機能機10がPC100とPC200とから受信される登録要求パケットの受信タイミングを等しくすることができる。
PC200のN番目の登録指示パケットの送信タイミングと、N+1番目の登録指示パケットの送信タイミングと、の間隔(図3のT4)は、PC200のN番目の登録指示パケットの送信タイミングと、N番目の登録指示パケット(受信時刻「12:30:00」)に含まれる期間指示情報によって示される期間(即ち30分間)を用いて得られるN+1番目の登録指示パケットの送信タイミングと、の間隔(図3のT3)よりも長い。即ち、N番目の登録指示パケットの送信タイミングが、予定されている送信タイミングよりも早い。この構成によれば、多機能機10は、この構成によれば、受信タイミングが略等しくなったM番目の登録指示パケットとN番目の登録指示パケットの次に各PC100,200から受信されるM+1番目の登録指示パケットとN+1番目の登録指示パケットとを、略等しいタイミングで受信することができる。
メインCPU20がスリープ状態である間に登録指示パケットが受信される場合、多機能機10は、応答パケットを送信するために、メインCPU20をスリープ状態から非スリープ状態に移行する。PC100とPC200とから受信される登録要求パケットの受信タイミングが等しくなることによって、メインCPU20がスリープ状態から非スリープ状態に移行される頻度を少なくすることができる。この結果、多機能機10の消費電力を低減することができる。
PC100は、通常、1時間を示す期間指示情報を含む登録指示パケットを送信する。仮に、PC100のデバイス情報を保持する期間として、1時間よりも長い期間(1日間、1週間等)を示す期間指示情報を含む登録指示パケットを送信する構成を採用すれば、登録指示パケットの送信頻度が少なくて済む。しかしながら、この構成では、例えば、PC100が2時間だけLAN4と接続される場合に、多機能機10は、1日間又は1週間等に亘って、PC100のデバイス情報を登録テーブルに保持しなければならず、SDRAM80を無駄に利用することになる。逆に、1時間よりも短い期間(例えば10分間)を示す期間指示情報を含む登録指示パケットを送信する構成を採用すると、登録指示パケットと応答パケットとの通信頻度が高くなる。上記の構成によれば、SDRAM80が無駄に利用されることを抑制すると共に、登録指示パケットと応答パケットとの通信頻度が高くなることを抑制することができる。
(対応関係)
上記の多機能機10、PC100及びPC200のそれぞれが、「通信装置」、「第1の装置」及び「第2の装置」の一例である。PC100から送信される登録指示パケットが「第1の要求パケット」の一例であり、PC200から送信される登録指示パケットが「第2の要求パケット」の一例である。メインCPU20とサブCPU40とが「プロセッサ」の一例である。2個のPCU20,40が共に非スリープ状態である状態が「高消費状態」の一例であり、メインPCU20がスリープ状態であり、サブCPU40が非スリープ状態である状態が「低消費状態」の一例である。PC100から送信される登録指示パケットに含まれる保持情報が「特定の情報」及び「第1の関係情報」の一例であり、PC200から送信される登録指示パケットに含まれる保持情報が「特定の情報」及び「第2の関係情報」の一例である。
図3に示されるP1が「第1の予定タイミング」、「第1の送信タイミング」及び「第2の送信タイミング」の一例であり、P2が「第2の予定タイミング」及び「第4の予定タイミング」の一例であり、P3が「第3の予定タイミング」、「第3の送信タイミング」及び「第4の送信タイミング」の一例である。
以上、本発明の実施形態について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
(変形例)
(1)上記の実施例では、多機能機10は、2個のCPU20,40を備えるが、これに代えて、多機能機10は、メインCPU20のみを備えていてもよい。この場合、メインCPU20に供給されるクロック信号の周波数が低い状態と高い状態とに移行してもよい。クロック信号の周波数が高い状態では、メインCPU20の消費電力が比較的に高く、クロック信号の周波数が低い状態では、メインCPU20の消費電力が比較的に低い。この変形例では、メインCPU20が「プロセッサ」の一例であり、メインCPU20に供給されるクロック信号の周波数が高い状態が「高消費状態」の一例であり、メインCPU20に供給されるクロック信号の周波数が低い状態が「低消費状態」の一例である。
(2)上記の実施例では、多機能機10からの応答パケットに含まれる期間確定情報によって、PC100が次に送信する登録指示パケットの送信タイミングが決まる。しかしながら、PC100は、所定の間隔(例えば1時間)で、登録指示パケットを送信してもよい。多機能機10には、上記の所定の間隔が予め記憶されていてもよい。あるいは、メインCPU20は、PC100からの登録指示パケットの受信タイミイグに基づいて、上記の所定の間隔を特定してもよい。取得部26は、PC100からの登録指示パケットの受信時刻に、上記の所定の間隔を加算することによって、次にPC100から登録指示パケットが受信される時刻を算出してもよい。この構成も、「受信済みの特定の第1のパケットの受信に基づいて得られる特定の情報を利用して、第1の装置が、特定の第1のパケットの送信後に、第1のパケットを前記通信装置に送信するための第1の送信タイミングを取得する」という構成に含まれる。
(3)上記の実施例では、メインCPU20は、N番目の登録要求パケットの送信時刻を、PC100から次に受信されるM番目の登録指示パケットの送信時刻に合わせている(図2のS44)。即ち、K=0である。しかしながら、メインCPU20は、N番目の登録要求パケットの送信時刻を、PC100から受信されるM+1番目の登録指示パケットの送信時刻に合わせてもよい。この場合、メインCPU20は、N+1番目の登録要求パケットの送信時刻を、PC100から受信されるM+1番目の登録指示パケットの送信時刻に合わせてもよい。一般的に言うと、メインCPU20は、N+H番目(Hは0以上の整数)の登録要求パケットの送信時刻を、M+K番目(Kは0以上の整数)の登録指示パケットの送信時刻に合わせていればよい(図2のS44)。この場合、取得部26は、M−1番目の登録指示パケットの受信タイミングを利用して、M+K番目の登録指示パケットの送信タイミングを取得してもよい。なお、この場合、メインCPU20は、PC200からの登録指示パケットの受信時刻と、PC100からの登録指示パケットの受信時刻と、が徐々に近づくように、PC200からの登録指示パケットの送信時刻を決定してもよい。
(4)メインCPU20がプログラム82に従って処理を実行することによって、取得部26の機能が実現されている。しかしながら、サブCPU40がプログラム62に従って処理を実行することによって、取得部の機能が実行されてもよい。この場合、図2のS26、S30からS46までの処理を、サブCPU40が実行してもよい。
(5)上記の実施例では、メインCPU20が非スリープ状態である間に登録指示パケットが受信される場合と、メインCPU20がスリープ状態である間に登録指示パケットが受信される場合と、の両方の場合において、メインCPU20は、受信予定時刻の算出(図2のS36)と次回受信時刻の算出(図2のS38)及び比較(図2のS40)をしている。しかしながら、メインCPU20が非スリープ状態である間に登録指示パケットが受信される場合には、メインCPU20は、図2のS36〜S40の処理を実行しなくてもよい。本変形例では、S32でNOの場合には、図2のS36〜S40の処理をスキップして、S42の処理を実行してもよい。この構成によれば、メインCPU20が非スリープ状態である間に登録指示パケットが受信される場合には、図2のS36〜S40の処理を実行しなくて済む。
(6)多機能機10に接続されるPCの個数に限りはない。多機能機10は、多数個のPCからの登録指示パケットの受信時刻を、PC100の登録指示パケットの受信時刻と略等しくしてもよい。多数個のPCが多機能機10に接続される場合、多機能機10は、1個以上のPCの登録指示パケットの受信時刻を、パケット情報84に記憶してもよい。そして、多機能機10は、パケット情報84に記憶されているPC以外の多数個の登録指示パケットのそれぞれの受信時刻が、パケット情報84に含まれる1個以上PCのいずれかのPCに対応する送信時刻に略等しくなるように、送信時刻を決定してもよい。例えば、多機能機10に10個のPCが接続されている場合、多機能機10は、5個のPCを第1グループとして、他の5個のグループを第2グループとして分類してもよい。多機能機10は、第1グループの中の1個の基準PCの受信時刻に、第1グループの中の他の4個のPCの受信時刻を近づけてもよい。同様に、多機能機10は、第2グループの中の1個の基準PCの受信時刻に、第2グループの中の他の4個のPCの受信時刻を近づけてもよい。この場合、第1グループの中の上記の基準PCの受信時刻と、第2グループの中の上記の基準PCの受信時刻と、は一致しなくてもよい。
(7)上記の実施例では、メインCPU20がプログラム82に従って処理を実行することによって、各部22〜26が実現されるが、各部22〜26の少なくとも1個は、論理回路等のハードウェアで実現されてもよい。また、サブCPU40がプログラム62に従って処理を実行することによって、各部42、48が実現されるが、各部42、48の少なくとも1個は、論理回路等のハードウェアで実現されてもよい。
(8)「通信装置」は、多機能機でなくてもよく、PC、プリンタ、サーバ、PDA等の通信装置であってもよい。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。