(57)【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
前記ネットワークを介してパケットを受信する受信処理と、前記受信処理によって受信される前記パケットに従ったパケット処理と、を実行する処理部と、
前記処理部が処理を実行する際に利用されるメモリ部と、
を備え、
前記通信装置は、高消費状態と、第１の低消費状態と、第２の低消費状態と、の間で移行可能であり、
前記通信装置が前記第１の低消費状態である場合、前記処理部及び前記メモリ部の少なくとも一方の消費電力が、前記通信装置が前記高消費状態である場合よりも消費電力が少なく、
前記通信装置が前記第２の低消費状態である場合、前記通信装置が前記第１の低消費状態である場合に前記パケット処理が実行される複数種類のパケットのうち、一部の種類のパケットを受信する前記受信処理が実行されると前記パケット処理を実行するが、他の一部の種類のパケットを受信する前記受信処理が実行される場合に前記パケット処理を実行しないことに基づいて、前記通信装置が前記第１の低消費状態である場合よりも省電力であり、
前記処理部は、さらに、
前記通信装置が前記高消費状態である間に第１の条件が成立する場合、前記通信装置を前記高消費状態から前記第１の低消費状態に移行させるための第１の移行処理を実行し、
前記通信装置が前記高消費状態と前記第１の低消費状態とのうちの特定の状態である間に前記第１の条件とは異なる第２の条件が成立する場合、前記特定の状態から前記第２の低消費状態に移行させるための第２の移行処理を実行し、
前記第２の条件は、特定のデバイスから、前記通信装置の状態を前記第２の低消費状態に移行することを指示する第１のコマンドを含む移行指示パケットを受信する前記受信処理を、前記処理部が実行することによって成立し、
前記第１の条件は、前記移行指示パケットを受信することを含まない第１の低消費状態移行条件が成立することによって成立する、
通信装置。
【請求項２】
前記処理部は、前記通信装置が前記第２の低消費状態である間に対象パケットを受信する前記受信処理を実行する場合、前記対象パケットのプロトコル及び送信元識別情報の少なくとも一方を用いて、前記対象パケットが前記一部の種類のパケットであるのか否かを判断する判断処理をさらに実行し、
前記処理部は、
前記判断処理において前記対象パケットが前記一部の種類のパケットであると判断される場合に、前記対象パケットに従った前記パケット処理を実行し、
前記判断処理において前記対象パケットが前記他の一部の種類のパケットであると判断される場合に、前記対象パケットに従った前記パケット処理を実行せず、
前記処理部は、前記通信装置が前記第１の低消費状態である間に前記対象パケットを受信する前記受信処理を実行する場合、前記対象パケットが前記一部の種類のパケットであるのか否かに関わらず前記対象パケットに従った前記パケット処理を実行する、
請求項１に記載の通信装置。
【請求項３】
前記処理部は、
非スリープ状態とスリープ状態との間で状態が移行する第１のプロセッサであって、
前記通信装置が前記高消費状態である場合には、前記非スリープ状態であるとともに前記パケット処理を実行可能であり、
前記通信装置が前記第１の低消費状態又は前記第２の低消費状態である場合には、前記スリープ状態であるとともに前記パケット処理を実行不可能である、前記第１のプロセッサと、
前記第１のプロセッサが前記スリープ状態である間に受信されるパケットに従った前記パケット処理を、前記第１のプロセッサに代理して実行可能な第２のプロセッサと、を備え、
前記第２のプロセッサは、前記第１の移行処理及び前記第２の移行処理を実行する、請求項１又は２に記載の通信装置。
【請求項４】
前記処理部は、さらに、
前記通信装置が前記第２の低消費状態である間に、第１のタイミングで、特定の期間だけ前記通信装置を前記第２の低消費状態から前記高消費状態及び前記第１の低消費状態のどちらか一方の状態に移行させるための第３の移行処理を実行し、
前記第３の移行処理が実行される場合に、前記第１のタイミングを示す第１のタイミング情報を、前記ネットワークを介して外部に送信する送信処理を実行する、請求項１から３のいずれか一項に記載の通信装置。
【請求項５】
前記処理部は、さらに、
前記通信装置が前記第２の低消費状態である間に、所定の条件が成立する際に、前記通信装置を前記第２の低消費状態から前記高消費状態及び前記第１の低消費状態のどちらか一方の状態に移行させるための第４の移行処理を実行し、
前記所定の条件は、前記通信装置が前記第２の低消費状態である間に、前記特定のデバイスから、前記第１のコマンドと異なる第２のコマンドであって、前記通信装置の状態を前記第２の低消費状態から移行することを示す前記第２のコマンドを含む解除指示パケットを受信する前記受信処理を、前記処理部が実行することを含む、請求項１から４のいずれか一項に記載の通信装置。
【請求項６】
前記処理部は、さらに、
前記通信装置が前記第２の低消費状態である間に、所定の条件が成立する際に、前記通信装置を前記第２の低消費状態から前記高消費状態及び前記第１の低消費状態のどちらか一方の状態に移行させるための第４の移行処理を実行し、
前記所定の条件は、前記移行指示パケットに含まれる第２のタイミング情報によって示される第２のタイミングが到来することを含む、請求項１から５のいずれか一項に記載の通信装置。
【請求項７】
前記処理部は、前記通信装置が前記高消費状態である間に、前記第１の条件と前記第２の条件との両者が成立する場合に、前記第１の移行処理を実行せずに、前記第２の移行処理を実行する、請求項１から６のいずれか一項に記載の通信装置。
【請求項８】
前記特定の状態は、前記第１の低消費状態であり、
前記第２の移行処理は、前記第１の低消費状態から前記第２の低消費状態に移行させる処理である、請求項１から６のいずれか一項に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、ネットワークに接続される通信装置を開示する。
【背景技術】
【０００２】
特許文献１に、通常稼動モードと、通常稼動モードよりも消費電力が低い３個のモード（即ち、待機モード、省エネモード、及び電源断モード）と、の間でモードが移行する多機能機が開示されている。この多機能機は、ユーザによって消費電力が低い３個のモードのうちの１個のモードが選択されると、選択されたモードに移行する。多機能機は、ユーザによって指定された復帰時間に到達すると、通常稼動モードに移行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２９２９７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、多機能機の消費電力が低い状態である間に、多機能機でパケットが受信される状況について、何ら考慮されていない。本明細書では、通信装置の消費電力が低い状態である間にパケットが受信される状況を考慮しつつ、通信装置の消費電力をより低減し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される技術は、ネットワークに接続される通信装置である。通信装置は、処理部とメモリ部とを備える。処理部は、ネットワークを介してパケットを受信する受信処理と、受信処理によって受信されるパケットに従ったパケット処理と、を実行する。メモリ部は、処理部が処理を実行する際に利用される。通信装置は、処理部及びメモリ部の少なくとも一方の消費電力が比較的に高い高消費状態と、処理部及びメモリ部の少なくとも一方の消費電力が比較的に低い低消費状態と、の間で移行可能である。低消費状態は、第１の低消費状態と、第２の低消費状態と、を含む。処理部は、さらに、通信装置が高消費状態である間に、第１の条件が成立する場合、通信装置を高消費状態から第１の低消費状態に移行させるための第１の移行処理を実行し、通信装置が高消費状態と第１の低消費状態とのうちの特定の状態である間に第１の条件とは異なる第２の条件が成立する場合、特定の状態から第２の低消費状態に移行させるための第２の移行処理を実行する。処理部は、さらに、第１の移行処理で通信装置が第１の低消費状態に移行した後、第１のパケットを受信する前記受信処理を実行する場合、第１のパケットに従ったパケット処理を実行する。処理部は、さらに、第２の移行処理で通信装置が第２の低消費状態に移行した後、第１のパケットを受信する受信処理を実行する場合、第１のパケットに従ったパケット処理を実行しない。
【０００６】
上記の通信装置では、第１のパケットに従ったパケット処理が実行される第１の低消費状態と、第１のパケットに従ったパケット処理が実行されない第２の低消費状態と、が存在する。第２の低消費状態では、第１のパケットに従ったパケット処理が実行されないために、第１の低消費状態よりも省電力を実現し得る。この技術によると、例えば、第１のパケットに従ったパケット処理を実行する必要がある状況では、通信装置を第１の低消費状態に移行させ、第１のパケットに従ったパケット処理を実行する必要がない状況では、通信装置を第２の低消費状態に移行させる構成を採用し得る。即ち、通信装置が低消費状態である間に第１のパケットが受信される状況（即ち可能性）を考慮して、通信装置を第１の低消費状態と第２の低消費状態とのうちの適切な状態に移行させ得る。このために、通信装置の消費電力をより低減し得る。
【０００７】
処理部は、通信装置が第２の低消費状態である間に第１のパケットと異なる第２のパケットを受信する受信処理を実行する場合、第２のパケットのプロトコル及び送信元識別情報の少なくとも一方を用いて、第２のパケットに従ったパケット処理を実行すべきであるのか否かを判断する判断処理をさらに実行してもよい。処理部は、判断処理において第２のパケットに従ったパケット処理を実行すべきであると判断される場合に、第２のパケットに従ったパケット処理を実行してもよい。この構成によれば、通信装置は、第２の低消費状態である間に、処理すべきと判断されるパケットの処理を適切に実行し得る。また、通信装置は、処理すべきでないと判断されるパケットの処理を実行せずに済むために、消費電力を低減し得る。
【０００８】
処理部は、第１のプロセッサと第２のプロセッサとを備えていてもよい。第１のプロセッサは、非スリープ状態とスリープ状態との間で状態が移行してもよい。第１のプロセッサは、通信装置が高消費状態である場合には、非スリープ状態であるとともにパケット処理を実行可能であり、通信装置が低消費状態である場合には、スリープ状態であるとともにパケット処理を実行不可能であってもよい。第２のプロセッサは、第１のプロセッサがスリープ状態である間に受信されるパケットに従ったパケット処理を、第１のプロセッサに代理して実行可能であってもよい。第２のプロセッサは、第１の移行処理及び前記第２の移行処理を実行してもよい。
【０００９】
処理部は、さらに、通信装置が第２の低消費状態である間に、第１のタイミングで、特定の期間だけ通信装置を第２の低消費状態から高消費状態及び第１の低消費状態のどちらか一方の状態に移行させるための第３の移行処理を実行し、第３の移行処理が実行される場合に、第１のタイミングを示す第１のタイミング情報を、ネットワークを介して外部に送信する送信処理を実行してもよい。この構成によれば、通信装置は、上記の特定の期間だけ、第１のパケットの処理を実行し得る。通信装置は、ネットワークに接続されている外部のデバイスに、第１のパケットに従ったパケット処理を実行することができるタイミングを知らせることができる。これにより、通信装置は、上記の特定の期間中に外部のデバイスから第１のパケットを受信すれば、第１のパケットの処理を実行することができる。
【００１０】
第２の条件は、特定のデバイスから、通信装置の状態を移行することを指示する第１のコマンドを含む第３のパケットを受信する受信処理を処理部が実行することを含んでいてもよい。この構成によれば、通信装置は、上記の特定のデバイスからの指示に従って、第２の低消費状態に移行することができる。
【００１１】
処理部は、さらに、通信装置が第２の低消費状態である間に、所定の条件が成立する際に、通信装置を第２の低消費状態から高消費状態及び第１の低消費状態のどちらか一方の状態に移行させるための第４の移行処理を実行してもよい。上記の所定の条件は、通信装置が第２の低消費状態である間に、上記の特定のデバイスから、第１のコマンドと異なる第２のコマンドであって、通信装置の状態を移行することを示す第２のコマンドを含む第４のパケットを受信する受信処理を処理部が実行することを含んでいてもよい。この構成によれば、通信装置は、上記の特定のデバイスからの指示に従って、第２の低消費状態から高消費状態及び第１の低消費状態のどちらか一方の状態に移行することができる。
【００１２】
処理部は、さらに、通信装置が第２の低消費状態である間に、所定の条件が成立する際に、通信装置を第２の低消費状態から高消費状態及び第１の低消費状態のどちらか一方の状態に移行させるための第４の移行処理を実行してもよい。上記の所定の条件は、第３のパケットに含まれている第２のタイミング情報によって示される第２のタイミングが到来することを含んでいてもよい。この構成によれば、通信装置は、上記の特定のデバイスから指示されるタイミングで、第２の低消費状態から高消費状態及び第１の低消費状態のどちらか一方の状態に移行することができる。
【００１３】
処理部は、通信装置が高消費状態である間に、第１の条件と第２の条件との両者が成立する場合に、第１の移行処理を実行せずに、第２の移行処理を実行してもよい。この構成によれば、通信装置は、第１の条件と第２の条件との両者が同時的に成立する場合に、より消費電力が低い第２の低消費状態に優先的に移行することができる。
【００１４】
なお、上記の通信装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムが記憶された記憶媒体も、新規で有用である。また、上記の通信装置と上記の特定のデバイスとを含むシステムも新規で有用である。
【図面の簡単な説明】
【００１５】
【図１】ネットワークシステムの構成を示す。
【図２】多機能機の状態移行の一例を示す。
【図３】多機能機の状態に対応する各部の状態の一例を示す。
【図４】メインＣＰＵが実行するパケット受信時処理のフローチャートを示す。
【図５】メインＣＰＵが実行する状態移行処理のフローチャートを示す。
【図６】サブＣＰＵが実行する割込要求時処理のフローチャートを示す。
【図７】サブＣＰＵが実行する状態移行処理のフローチャートを示す。
【図８】ＰＣが実行する処理のフローチャートを示す。
【発明を実施するための形態】
【００１６】
図１に示すように、ネットワークシステム２は、ＰＣ１００と、多機能機（即ちＰＣ１００の周辺機器）１０と、を備える。ＰＣ１００と多機能機１０とは、ＬＡＮ４を介して、相互に通信可能である。
【００１７】
（多機能機の構成）
図１に示すように、多機能機１０は、ＡＳＩＣ（Application Specific Integrated Circuit）１２、フラッシュメモリ８０、ＳＤＲＡＭ９０、各ネットワークインターフェイス９２，９４、プリンタエンジン９６、及び、表示パネル９８を備える。
【００１８】
（ＡＳＩＣ１２の構成）
ＡＳＩＣ１２は、メインＣＰＵ２０、メイン用割込コントローラ２６、メイン用クロック回路２８、サブＣＰＵ３０、サブ用割込コントローラ３２、サブ用クロック回路４０、タイマ５０、タイマ用クロック回路５２、ＳＲＡＭ６０、ＳＤＲＡＭ制御回路７０、及び、ＭＡＣコントローラ７２を備える。
【００１９】
（メインＣＰＵ２０の構成）
メインＣＰＵ２０は、ＳＤＲＡＭ９０に格納されているプログラム９１に従って様々な処理を実行する。これにより、送信部２２とメイン処理実行部２４との機能が実現される。メイン用クロック回路２８からメインＣＰＵ２０にクロック信号が供給されている間は、メインＣＰＵ２０は非スリープ状態である。メインＣＰＵ２０にクロック信号が供給されていない間は、メインＣＰＵ２０はスリープ状態である。メインＣＰＵ２０のスリープ状態は、メインＣＰＵ２０の非スリープ状態と比較して、消費電力が低い状態である。メイン用クロック回路２８は、サブＣＰＵ３０によって制御される。
【００２０】
メイン用割込コントローラ２６は、メインＣＰＵ２０の外部（例えばサブＣＰＵ３０、タイマ５０、ＭＡＣコントローラ７２）から取得した割込要求信号を、メインＣＰＵ２０に供給する。メインＣＰＵ２０は、メイン用割込コントローラ２６から割込要求信号を取得すると、割込要求信号に応じた処理を実行する。
【００２１】
（サブＣＰＵ３０の構成）
サブＣＰＵ３０は、ＳＲＡＭ６０に格納されているプログラム６２に従って様々な処理を実行する。これにより、移行制御部３４と判断部３６とサブ処理実行部３８との機能が実現される。サブ用クロック回路４０は、サブＣＰＵ３０にクロック信号を供給する。サブ用クロック回路４０のクロック信号の周波数は、メイン用クロック回路２８のクロック信号の周波数よりも低い。従って、メインＣＰＵ２０を駆動するための消費電力と比べて、サブＣＰＵ３０を駆動するための消費電力は低い。さらに、メインＣＰＵ２０の処理速度は、サブＣＰＵ３０の処理速度よりも速い。サブ用クロック回路４０は、多機能機１０の電源がＯＮにされるとサブＣＰＵ３０にクロック信号を供給し、多機能機１０の電源がＯＦＦにされるとクロック信号を停止する。即ち、サブＣＰＵ３０は、多機能機１０の電源がＯＮされている間、クロック信号が供給されている状態（非スリープ状態）で維持される。
【００２２】
サブ用割込コントローラ３２は、サブＣＰＵ３０の外部（例えばメインＣＰＵ２０、ＭＡＣコントローラ７２）から取得した割込要求信号を、サブＣＰＵ３０に供給する。サブＣＰＵ３０は、サブ用割込コントローラ３２から割込要求信号を取得すると、割込要求信号に応じた処理を実行する。
【００２３】
（他の要素の構成）
タイマ５０は、タイマ用クロック回路５２から供給されるクロック信号に同期して、予め設定された初期値からカウントダウンを実行する。
【００２４】
ＳＲＡＭ６０は、各ＣＰＵ２０，３０からアクセス可能である。サブＣＰＵ３０は、メインＣＰＵ２０がスリープ状態である間に、ＬＡＮ４を介して受信されるパケットを、ＳＲＡＭ６０に格納する。ＳＲＡＭ６０は、さらに、サブＣＰＵ３０が各部３４，３６，３８の機能を実現するためのプログラム６２を格納することができる。プログラム６２は、圧縮された状態で、フラッシュメモリ８０に格納されている。多機能機１０の電源がＯＮされると、メインＣＰＵ２０は、フラッシュメモリ８０内の圧縮されたプログラム８４を展開して、展開済みのプログラム６２をＳＲＡＭ６０に格納する。ＳＲＡＭ６０は、後述の複数の状態（図２の５個の状態３０２〜３０８ｂ参照）に対応する複数個の状態変数のいずれか１個の値を記憶する。ＣＰＵ２０，３０のいずれかは、ＳＲＡＭ６０に格納されている状態変数を変更する。
【００２５】
ＳＤＲＡＭ制御回路７０は、各ＣＰＵ２０，３０からの指示に従って、ＳＤＲＡＭ９０にアクセスする。また、ＳＤＲＡＭ制御回路７０は、サブＣＰＵ３０からの指示に従って、ＳＤＲＡＭ９０に対するクロック信号の供給を開始又は停止して、消費電力が比較的に高い通常動作モードと、消費電力が比較的に低いセルフリフレッシュモードと、の間でＳＤＲＡＭ９０の状態を移行させる。
【００２６】
ＭＡＣコントローラ７２は、各ネットワークインターフェイス９２，９４に接続されている。ＭＡＣコントローラ７２は、ＬＡＮ４等を介して、各ネットワークインターフェイス９２，９４でパケットが受信されると、２個の割込コントローラ２６，３２のどちらかに、パケット割込要求信号を供給する。詳細には、メインＣＰＵ２０が非スリープ状態である間にパケットが受信されると、ＭＡＣコントローラ７２は、パケット割込要求信号を、メイン用割込コントローラ２６に供給する。一方、メインＣＰＵ２０がスリープ状態である間にパケットが受信されると、ＭＡＣコントローラ７２は、パケット割込要求信号を、サブ用割込コントローラ３２に供給する。
【００２７】
フラッシュメモリ８０は、ＡＳＩＣ１２の外部に設けられている。フラッシュメモリ８０は、各ＣＰＵ２０，３０からアクセス可能である。フラッシュメモリ８０は、各ＣＰＵ２０，３０によって実行されるプログラム６２，９１が圧縮された状態のプログラム８４を格納している。
【００２８】
ＳＤＲＡＭ９０は、メインＣＰＵ２０からアクセス可能である。メインＣＰＵ２０は、メインＣＰＵ２０が非スリープ状態である間に受信されるパケットを、ＳＤＲＡＭ９０に格納する。ＳＤＲＡＭ９０は、ＳＲＡＭ６０よりもメモリの総容量が大きく、各ＣＰＵ２０，３０がアクセス（読み出し、書き込み）可能な速度が高速である。このため、ＳＤＲＡＭ９０の消費電力は、ＳＲＡＭ６０の消費電力と比べて高い。ＳＤＲＡＭ９０は、ＳＤＲＡＭ制御回路７０によって制御され、通常動作モードとセルフリフレッシュモードとの間で状態が移行する。
【００２９】
多機能機１０は、有線ネットワークインターフェイス９４を介して、ＬＡＮ４に接続されている。また、多機能機１０は、無線ネットワークインターフェイス９２を介して、無線ネットワーク（図示省略）に接続されることもできる。各ネットワークインターフェイス９２，９４は、ネットワークを介して受信したパケットをＭＡＣコントローラ７２に供給する。
【００３０】
プリンタエンジン９６は、インクジェット方式、レーザ方式等の印刷機構を備える。プリンタエンジン９６は、メインＣＰＵ２０からの指示に従って、印刷を実行する。表示パネル９８は、ＬＣＤである。表示パネル９８は、メインＣＰＵ２０からの指示に従って、情報を表示する。なお、表示パネル９８のバックライトは、メインＣＰＵ２０からの指示に従って、ＯＮ状態とＯＦＦ状態との間で移行する。
【００３１】
（多機能機の状態移行）
図２に示すように、多機能機１０は、処理状態３０２と待機状態３０４とＬ（Light）スリープ状態３０６とＦＤ（First Deep）スリープ状態３０８ａとＳＤ（Second Deep）スリープ状態３０８ｂとの間で、状態が移行する。
【００３２】
（待機状態）
多機能機１０の電源がＯＮされると、多機能機１０は、待機状態３０４となる。図３に示すように、待機状態３０４では、２個のＣＰＵ２０，３０にはクロックが供給されており、２個のＣＰＵ２０，３０は非スリープ状態である。また、待機状態３０４では、２個のＲＡＭ６０，９０は通常動作モードであり、表示パネル９８はＯＮ状態である。
【００３３】
（処理状態）
多機能機１０が待機状態３０４であり、かつ、通常の処理を実行すべき場合に、多機能機１０は処理状態３０２に移行する。なお、上記の通常の処理は、印刷指示パケットに従った印刷処理、ユーザによって表示パネル９８の操作が為された場合に実行される表示処理等を含む。図３に示すように、処理状態３０２の場合の各部２０，３０等の状態は、待機状態３０４の場合と同様である。処理状態３０２と待機状態３０４との相違点は、メインＣＰＵ２０が上記の通常の処理を実行しているのか否かである。メインＣＰＵ２０が上記の通常の処理を終了すると、多機能機１０は、待機状態３０４に移行する。
【００３４】
（Ｌスリープ状態）
多機能機１０が待機状態３０４に移行すると、タイマ用クロック回路５２は、タイマ５０へのクロック信号の供給を開始する。これにより、タイマ５０は、初期値（例えば５分
）からカウントダウンを実行する。タイマ５０のカウント値が「０」になると、タイマ５０は、メイン用割込コントローラ２６を介して、メインＣＰＵ２０にタイマ割込要求信号を供給する。この結果、メインＣＰＵ２０は、表示パネル９８のバックライトをＯＦＦ状態にする。これにより、多機能機１０は、Ｌスリープ状態３０６に移行する。
【００３５】
Ｌスリープ状態３０６では、２個のＣＰＵ２０，３０は非スリープ状態であり、２個のＲＡＭ６０，１００は通常動作モードであり、表示パネル９８のバックライトはＯＦＦ状態である。これにより、表示パネル９８で消費される電力を低減させることができる。Ｌスリープ状態３０６において、メインＣＰＵ２０が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、多機能機１０は、処理状態３０２に移行する。この際に、メインＣＰＵ２０は、タイマ５０のカウント値を初期値に戻すための指示をタイマ５０に供給する。これにより、処理状態３０２を終えて待機状態３０４に再び移行すると、タイマ５０は初期値からカウントダウンを再び実行する。
【００３６】
（ＦＤスリープ状態、ＳＤスリープ状態）
多機能機１０は、サブＣＰＵ３０が後述する図６のＳ８４，Ｓ８６の移行処理を実行することによって、Ｌスリープ状態３０６からＦＤスリープ状態３０８ａ又はＳＤスリープ状態３０８ｂに移行する。ＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂでは、メインＣＰＵ２０はスリープ状態であり、サブＣＰＵ３０は非スリープ状態であり、ＳＲＡＭ６０は通常動作モードであり、ＳＤＲＡＭ９０はセルフリフレッシュモードであり、表示パネル９８のバックライトはＯＦＦ状態である。即ち、ＳＤスリープ状態３０８ｂでは、消費電力の観点から見ると、各ＣＰＵ２０，３０の状態がＦＤスリープ状態３０８ａの場合と同じ状態（即ちメインＣＰＵ２０がスリープ状態であり、サブＣＰＵ３０が非スリープ状態）であり、各ＲＡＭ６０，９０のモードがＦＤスリープ状態３０８ａの場合と同じモードである。多機能機１０が、ＦＤスリープ状態３０８ａと、ＳＤスリープ状態３０８ｂと、のどちらの状態であるのかは、ＳＲＡＭ６０に格納されている状態変数がＦＤスリープ状態３０８ａを示す値であるのか、ＳＤスリープ状態３０８ｂを示す値であるのか、によって決まる。
【００３７】
ＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂにおいて、メインＣＰＵ２０が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、多機能機１０は、Ｌスリープ状態３０６を経て処理状態３０２に移行する。また、ＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂの間に受信されるパケットに対する応答処理をメインＣＰＵ２０が実行すべき場合には、多機能機１０は、Ｌスリープ状態３０６に移行する。
【００３８】
（ＰＣの構成）
図１に示すように、ＰＣ１００は、処理部１０４を備える。ＰＣ１００は、処理許可テーブル１０２を格納することができる。処理許可テーブル１０２は、ＰＣ１００のユーザによって作成される。処理許可テーブル１０２には、ＭＡＣアドレスとプロトコルの種類との複数個の組合せ１０２ａ〜１０２ｅが記録されている。組合せ１０２ｃに記録されているプロトコルの種類「ＡＬＬ」は、全ての種類のプロトコルを意味する。なお、処理許可テーブル１０２に、ＭＡＣアドレスとプロトコルの種類との組合せが記憶されていなくてもよい。
【００３９】
（移行指示パケット）
ＰＣ１００のユーザは、多機能機１０をＳＤスリープ状態３０８ｂに移行させることを望む場合に、ＰＣ１００の操作部（図示省略）に所定の第１の操作を加える。上記の第１の操作が実行される場合に、処理部１０４は、ＳＤスリープ状態３０８ｂへの移行を示すＳＤ移行コマンドと、自身に格納されている処理許可テーブル１０２と、を含む移行指示パケットを生成する。処理許可テーブル１０２内に組合せが記録されていない場合、処理部１０４は、処理許可テーブル１０２を含まない移行指示パケットを生成する。なお、変形例では、ＰＣ１００は、処理許可テーブル１０２を移行指示パケットに含めるのか否かを、ユーザが選択することを許容してもよい。
【００４０】
ＰＣ１００のユーザは、第１の操作を実行する際に、さらに、多機能機１０をＳＤスリープ状態３０８ｂからＦＤスリープ状態３０８ａに移行させるための移行時刻を入力することができる。変形例では、ＰＣ１００のユーザは、多機能機１０をＳＤスリープ状態３０８ｂからＦＤスリープ状態３０８ａに移行させるための移行タイミング（例えばＳＤスリープ状態３０８ｂに移行してからの経過時間）を入力可能であってもよい。移行時刻が入力される場合に、処理部１０４は、移行時刻（変形例では移行タイミング）を示す移行時刻情報をさらに含む移行指示パケットを生成する。
【００４１】
なお、ＰＣ１００のユーザは、第１の操作を実行する際に、さらに、多機能機１０をＳＤスリープ状態３０８ｂからＬスリープ状態３０６に一時的に移行させるための一時解除時刻を入力することができる。なお、変形例では、ＰＣ１００のユーザは、ＳＤスリープ状態３０８ｂを解除するための解除タイミング（例えばＳＤスリープ状態３０８ｂに移行してからの経過時間）を入力可能であってもよい。一時解除時刻が入力される場合に、処理部１０４は、一時解除時刻（解除タイミング）を示す一時解除時刻情報をさらに含む移行指示パケットを生成する。
【００４２】
なお、本実施例では、処理部１０４は、移行時刻情報及び一時解除時刻情報の少なくとも一方を含む移行指示パケットを生成し得るが、変形例では、処理部１０４は、移行時刻情報及び一時解除時刻情報の少なくとも一方を含む時刻情報パケットであって、移行指示パケットとは異なる時刻情報パケットを生成してもよい。この場合、処理部１０４は、移行指示パケットの送信タイミングと異なるタイミングで、時刻情報パケットを多機能機１０に送信してもよい。
【００４３】
（解除指示パケット）
ＰＣ１００のユーザは、多機能機１０をＳＤスリープ状態３０８ｂからＦＤスリープ状態３０８ａに移行させることを望む場合に、ＰＣ１００の操作部（図示省略）に所定の第２の操作を加える。第２の操作が実行される場合に、処理部１０４は、ＳＤスリープ状態３０８ｂを解除して、Ｄスリープ状態３０８ａに移行することを示すＳＤ解除コマンドを含む解除指示パケットを生成する。
【００４４】
処理部１０４は、移行指示パケット又は解除指示パケットを生成すると、生成されたパケットを、多機能機１０に送信する。
【００４５】
（メインＣＰＵが実行するパケット受信時処理）
次いで、非スリープ状態のメインＣＰＵ２０が実行する処理の内容について説明する。なお、スリープ状態のメインＣＰＵ２０は、処理を実行することができない。図４に示すように、メインＣＰＵ２０は、多機能機１０がパケットの受信処理を実行すると、パケット受信時処理を実行する。具体的には、どちらかのネットワークインターフェイス９２，９４でパケットが受信される場合、ＭＡＣコントローラ７２は、メイン用割込コントローラ２８を介して、パケット割込要求信号を、メインＣＰＵ２０に供給する。メインＣＰＵ２０は、パケット割込要求信号を取得すると、受信されたパケットを、ネットワークインターフェイス９２，９４からＳＤＲＡＭ９０に移動する。メインＣＰＵ２０が受信されたパケットをＳＤＲＡＭ９０に移動する処理が、受信処理に相当する。
【００４６】
Ｓ１２において、メイン処理実行部２４は、受信処理でＳＤＲＡＭ９０に移動されたパケットを解析して、受信されたパケットが移行指示パケットであるのか否かを判断する。具体的には、メイン処理実行部２４は、受信されたパケットに、ＳＤスリープ状態３０８ｂへの移行を示す上記のＳＤ移行コマンドが含まれている場合にＳ１２でＹＥＳと判断し、上記のＳＤ移行コマンドが含まれていない場合にＳ１２でＮＯと判断する。
【００４７】
Ｓ１２でＮＯの場合、メイン処理実行部２４は、パケット受信時処理を終了する。なお、フローチャートに示されていないが、この場合、メイン処理実行部２４は、受信されたパケットに従ったパケット処理を実行する。パケット処理は、例えば、受信されたパケットに対する応答処理、印刷処理、登録処理を含む。登録処理とは、外部デバイスが多機能機１０に印刷処理を実行させるための前段階として、外部デバイスのＭＡＣアドレス、外部デバイスのユーザのユーザＩＤ等の識別情報を、予め多機能機１０に格納しておく処理である。多機能機１０は、登録処理によって格納された識別情報に対応する外部デバイスから、印刷処理を実行するためのパケットを受信する場合に、印刷処理を実行する。なお、受信されたパケットに従って登録処理が実行される場合、メインＣＰＵ２０は、受信されたパケットに対する応答を実行しない。
【００４８】
Ｓ１２でＹＥＳの場合、メイン処理実行部２４は、移行指示パケットに含まれる送信元のデバイス（本実施例ではＰＣ１００）のＭＡＣアドレスを、ＳＤＲＡＭ９０に格納する。次いで、Ｓ１４において、メイン処理実行部２４は、ＳＤＲＡＭ９０内のＳＤスリープ移行フラグを「１」に変更する。この結果、後述する図５のＳ４６でＹＥＳと判断され、多機能機１０は、ＳＤスリープ状態３０８ｂに移行される（図６のＳ８４，Ｓ８６）。
【００４９】
次いで、Ｓ１６において、メイン処理実行部２４は、受信された移行指示パケット内に、移行時刻情報が含まれているのか否かを判断する。Ｓ１６でＹＥＳの場合、Ｓ１８において、メイン処理実行部２４は、移行時刻情報をＳＤＲＡＭ９０内に格納して、Ｓ２２に進む。一方、Ｓ１６でＮＯの場合、Ｓ２０において、メイン処理実行部２４は、移行時刻情報が無いことを示す情報をＳＤＲＡＭ９０内に格納して、Ｓ２２に進む。
【００５０】
Ｓ２２では、メイン処理実行部２４は、受信された移行指示パケット内に、処理許可テーブル１０２が含まれているのか否かを判断する。Ｓ２２でＹＥＳの場合、Ｓ２４において、メイン処理実行部２４は、処理許可テーブル１０２をＳＤＲＡＭ９０内に格納して、Ｓ２８に進む。一方、Ｓ２２でＮＯの場合、Ｓ２６において、メイン処理実行部２４は、処理許可テーブル１０２が無いことを示す情報をＳＤＲＡＭ９０内に格納して、Ｓ２８に進む。
【００５１】
Ｓ２８では、メイン処理実行部２４は、受信された移行指示パケット内に、一時解除時刻情報が含まれているのか否かを判断する。Ｓ２８でＹＥＳの場合、Ｓ３０において、メイン処理実行部２４は、一時解除時刻情報をＳＤＲＡＭ９０内に格納して、移行指示パケット受信処理を終了する。一方、Ｓ２８でＮＯの場合、Ｓ３２において、メイン処理実行部２４は、一時解除時刻情報が無いことを示す情報をＳＤＲＡＭ９０内に格納して、移行指示パケット受信処理を終了する。
【００５２】
（メインＣＰＵが実行する状態移行処理）
メインＣＰＵ２０は、非スリープ状態である間（即ち処理状態３０２、待機状態３０４及びＬスリープ状態３０６のいずれか）、定期的（例えば１秒間隔）に、図５の状態移行処理を実行する。図５に示すように、まず、Ｓ４２において、メインＣＰＵ２０は、ＳＲＡＭ６０に格納されている状態変数がＬスリープ状態３０６を示す値であるのか否かを判断する。状態変数がＬスリープ状態３０６以外を示す場合（Ｓ４２でＮＯ）、メインＣＰＵ２０は、状態移行処理を終了する。なお、メインＣＰＵ２０が非スリープ状態である間では、多機能機１０は、必ず、処理状態３０２、待機状態３０４及びＬスリープ状態３０６のうちのいずれかの状態である。即ち、Ｓ４２では、状態変数は、処理状態３０２、待機状態３０４及びＬスリープ状態３０６のいずれかを示す値であり、ＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂのうちのどちらかを示す値にはならない。
【００５３】
（ＦＤスリープ移行条件の判断；Ｓ４４）
一方、状態変数がＬスリープ状態３０６を示す場合（Ｓ４２でＹＥＳ）、Ｓ４４において、メインＣＰＵ２０は、ＦＤスリープ移行条件が成立するのか否かを判断する。具体的には、メインＣＰＵ２０は、例えば、（１）多機能機１０がパケットを外部に送信中であるのか否か、（２）未処理パケットがＳＤＲＡＭ９０に格納されているのか否か、（３）多機能機１０にＴＣＰ接続しているデバイス（例えばＰＣ１００）があるのか否か、（４）多機能機１０が起動又はシャットダウンのための処理を実行しているのか否か、（５）ネットワークの負荷が高いのか否か、を含む複数個の条件について判断する。
【００５４】
例えば、メインＣＰＵ２０がＰＣ１００等からのパケットに対する応答を返信している途中の場合には、上記の（１）でＹＥＳと判断される。例えば、多機能機１０がＷｅｂサーバ機能を有しており、ＰＣ１００が多機能機１０のＷｅｂサーバにＴＣＰ接続中である場合には、上記の（３）でＹＥＳと判断される。例えば、Ｓ４４の処理を実行する直前の所定の期間に受信されたパケット数が所定の個数を超えている場合には、多機能機１０が処理すべきパケットを受信する可能性が高いために、上記の（５）でＹＥＳと判断される。
【００５５】
複数個の条件（例えば上記の（１）から（５）の条件）のいずれもが否定的に判断される場合、ＦＤスリープ移行条件が成立するために、メインＣＰＵ２０は、Ｓ４４でＹＥＳと判断する。
【００５６】
ＦＤスリープ移行条件が成立しないと判断される場合（Ｓ４４でＮＯ）、メインＣＰＵ２０は、状態移行処理を終了する。一方、ＦＤスリープ移行条件が成立すると判断される場合（Ｓ４４でＹＥＳ）、Ｓ４６において、メインＣＰＵ２０は、ＳＤＲＡＭ９０内のＳＤスリープ移行フラグが「１」であるのか否かを判断する。なお、ＳＤスリープ移行フラグは、多機能機１０が移行指示パケットを受信すると（図４のＳ１２でＹＥＳ）、「１」にされ（図４のＳ１４）、多機能機１０がＳＤスリープ状態３０８ｂからＦＤスリープ状態３０８ａに移行される場合（後述する図７のＳ１１２でＹＥＳ又はＳ１２０でＹＥＳ）、「０」にされる。
【００５７】
（ＳＤスリープ移行フラグ＝「０」の場合の処理；Ｓ４８〜Ｓ５０）
ＳＤスリープ移行フラグが「０」の場合（Ｓ４６でＮＯ）、Ｓ４８において、メインＣＰＵ２０は、ＳＲＡＭ９０内の状態変数を、ＦＤスリープ状態３０８ａを示す値に変更する。次いで、Ｓ５０において、メインＣＰＵ２０は、ＳＤＲＡＭ９０に格納されているＦＤスリープ状態情報をＳＲＡＭ６０に移動する。
【００５８】
ＦＤスリープ状態情報は、多機能機１０がＦＤスリープ状態３０８ａである場合に、サブＣＰＵ３０が処理を実行するために必要な情報である。ＦＤスリープ状態情報は、例えば、ＭＩＢ（Management Information Base）統計情報（例えば受信済みのパケットの総数）、パケットＩＤ（送信パケットに付与すべきＩＤ）、リンクステータス情報（多機能機１０がネットワーク（例えばＬＡＮ４）に接続されているのか否かを示す情報）、ＦＤスリープ解除時刻情報（後述する）、多機能機１０自身の各種情報（ＩＰアドレス、ＭＡＣアドレス、ＮｅｔＢＩＯＳのホスト名、ＳＮＭＰコミュニティ名、ノード名、ｍＤＮＳデバイス名）、代理応答用情報（後述する）、ＳＤＲＡＭディスクリプタ情報（ＳＤＲＡＭ９０にデータを格納する際に、格納可能なアドレスを示す情報）、マルチキャストアドレス情報（受信可能なマルチキャストアドレス）、及び、ＵＤＰポート情報（有効なＵＤＰポートと無効なＵＤＰポートとを示す情報）を含む。変形例では、ＦＤスリープ状態情報は、ＩＰアドレスフィルタ情報（フィルタリングするＩＰアドレスを示す情報）、無効プロトコル情報（多機能機１０が処理しない種類のプロトコル）を含んでいてもよい。
【００５９】
なお、上記のＦＤスリープ解除時刻情報は、ＦＤスリープ状態３０８ａからＬスリープ状態３０６に移行する時刻を示す。例えば、多機能機１０のＩＰアドレスがＤＨＣＰ（Dynamic Host Configuration Protocol）サーバから割り当てられている場合には、多機能機１０は、定期的にＩＰアドレスを更新する処理を実行する必要がある場合がある。このような状況では、ＦＤスリープ状態情報は、ＩＰアドレスを更新すべき時刻を示すＦＤスリープ解除時刻情報を含む。
【００６０】
上記の代理応答用情報は、メインＣＰＵ２０がスリープ状態である間（多機能機１０がＦＤ又はＳＤスリープ状態３０８ａ，３０８ｂである間）に、サブＣＰＵ３０が、メインＣＰＵ２０に代理して、受信されたパケットに従ったパケット処理を実行するための情報であって、ＦＤスリープ状態情報に含まれる情報（例えば多機能機１０のＩＰアドレス）以外の情報（例えばプリンタエンジン９６のインクカートリッジ又はトナーカートリッジの残量等の多機能機１０のステータスを示す情報）を含む。
【００６１】
（ＳＤスリープ移行フラグ＝「１」の場合の処理；Ｓ５２〜Ｓ５６）
ＳＤＲＡＭ９０内のＳＤスリープ移行フラグが「１」であると判断される場合（Ｓ４６でＹＥＳ）、Ｓ５２において、メインＣＰＵ２０は、ＳＲＡＭ６０内の状態変数を、ＳＤスリープ状態３０８ｂを示す値に変更する。次いで、Ｓ５４では、メインＣＰＵ２０は、ユーザによって予め指定されている特定の外部デバイス（例えばＰＣ１００）のＩＰアドレスを送信先として、多機能機１０がＳＤスリープ状態３０８ｂに移行することを示す情報を含むＳＤスリープ移行パケットを送信する。これにより、上記の特定の外部デバイスは、多機能機１０がＳＤスリープ状態３０８ｂに移行することを知ることができる。なお、別の実施例では、メインＣＰＵ２０は、ＳＤスリープ移行パケットをブロードキャストしてもよい。
【００６２】
次いで、Ｓ５６では、メインＣＰＵ２０は、ＳＤＲＡＭ９０に格納されているＳＤスリープ状態情報を、ＳＲＡＭ６０に移動する。ＳＤスリープ状態情報は、上記のＦＤスリープ状態情報と、ＳＤスリープ移行フラグと、移行指示パケットの送信元デバイス（即ちＰＣ１００）のＭＡＣアドレスと、を含む。ＳＤスリープ状態情報は、さらに、移行時刻情報又は移行時刻情報なしを示す情報（図４のＳ１８又はＳ２０）、処理許可テーブル１０２又は処理許可テーブルなしを示す情報（図４のＳ２４又はＳ２６）、及び、一時解除時刻情報又は一時解除時刻情報なしを示す情報（図４のＳ３０又はＳ３２）を、含む。
【００６３】
（ＷＡＩＴ命令を実行するまでの処理；Ｓ６０〜Ｓ６６）
Ｓ６０では、メインＣＰＵ２０は、ＬＡＮ４等を介して受信されるパケットを格納するためのＲＡＭを、ＳＤＲＡＭ９０からＳＲＡＭ６０に切り替える。続いて、Ｓ６２では、メインＣＰＵ２０は、サブＣＰＵ３０以外からの割込要求をマスク（禁止）する。次いで、Ｓ６４では、メインＣＰＵ２０は、サブＣＰＵ３０に処理を開始させるための開始割込要求信号を、サブ用割込コントローラ３２を介して、サブＣＰＵ３０に供給する。次いで、Ｓ６６において、メインＣＰＵ２０は、ＷＡＩＴ命令を実行する。ＷＡＩＴ命令が実行されると、メインＣＰＵ２０は、割込要求信号が供給されるまで待機する実行停止状態となる。
【００６４】
（ＷＡＩＴ命令の解除後の処理；Ｓ６８〜Ｓ７４）
メインＣＰＵ２０は、Ｓ６８において、サブＣＰＵ３０から割込要求信号が供給される（後述の図７のＳ１３４参照）と、ＷＡＩＴ命令を解除して、Ｓ７０に進む。Ｓ７０では、メインＣＰＵ２０は、ＳＲＡＭ６０に格納されている未処理のパケットを、ＳＤＲＡＭ９０に移動させる。Ｓ７２では、メインＣＰＵ２０は、ＳＲＡＭ６０に格納されているＦＤスリープ状態情報又はＳＤスリープ状態情報を、ＳＤＲＡＭ９０に移動させる。次いで、Ｓ７４では、メインＣＰＵ２０は、Ｓ６２で実行したマスクを解除して、状態移行処理を終了する。
【００６５】
（サブＣＰＵが実行する処理）
続いて、サブＣＰＵ３０が実行する図６の割込要求時処理の内容を説明する。図６の割込要求時処理は、多機能機１０の電源がＯＮにされると開始される。サブＣＰＵ３０は、プログラム６２に従って、以下の処理を実行する。なお、変形例では、サブＣＰＵ３０は、フラッシュメモリ８０に格納されているプログラムに従って、以下の処理を実行してもよい。
【００６６】
多機能機１０の電源がＯＮされると、サブＣＰＵ３０は、ＷＡＩＴ命令を実行して、割込要求信号が供給されるまで待機する（Ｓ８２）。上述したように、メインＣＰＵ２０は、図５のＳ６４で、サブＣＰＵ３０に開始割込要求信号を供給する。この場合、Ｓ８２でＹＥＳと判断される。
【００６７】
（ＦＤスリープ状態又はＳＤスリープ状態への移行処理；Ｓ８４〜Ｓ８６）
Ｓ８２でＹＥＳの場合、移行制御部３４は、メイン用クロック回路２８にクロック供給の停止を指示する（Ｓ８４）。この結果、メインＣＰＵ２０は、非スリープ状態からスリープ状態に移行する。続いて、移行制御部３４は、ＳＤＲＡＭ９０を通常動作モードからセルフリフレッシュモードに移行させる（Ｓ８６）。これにより、多機能機１０は、ＦＤスリープ状態３０８ａ又はＳＤスリープ状態３０８ｂとなる。なお、ＳＤＲＡＭ９０がセルフリフレッシュモードである間は、多機能機１０が受信したパケットをＳＤＲＡＭ９０に格納することができない。
【００６８】
（パケットの受信に関する処理；Ｓ８８）
Ｓ８８では、サブＣＰＵ３０は、パケットを受信することを監視する。具体的には、どちらかのネットワークインターフェイス９２，９４でパケットが受信される場合、ＭＡＣコントローラ７２は、サブ用割込コントローラ３２を介して、パケット割込要求信号を、サブＣＰＵ３０に供給する。サブＣＰＵ３０は、ＭＡＣコントローラ７２からパケット割込要求信号が供給されると、受信されたパケットをネットワークインターフェイス９２，９４からＳＲＡＭ６０に移動するためのパケット受信処理を実行する。パケット受信処理が実行される（Ｓ８８でＹＥＳ）と、サブＣＰＵ３０は、受信されたパケットをＳＲＡＭ６０に格納する。
【００６９】
次いで、Ｓ９０では、サブＣＰＵ３０は、ＳＲＡＭ６０内の状態変数がＳＤスリープ状態３０８ｂを示す値であるのか否かを判断する。状態変数がＦＤスリープ状態３０８ａを示す値である場合（Ｓ９０でＮＯ）、Ｓ９２〜Ｓ１００をスキップして、Ｓ１０２に進む。
【００７０】
（状態変数＝ＳＤスリープ状態の場合の処理；Ｓ９２〜Ｓ１００）
一方、状態変数がＳＤスリープ状態３０８ｂを示す値である場合（Ｓ９０でＹＥＳ）、Ｓ９２では、サブＣＰＵ３０は、Ｓ８８で受信されたパケットが、ＰＣ１００から送信された解除指示パケットであるのか否かを判断する。Ｓ９２の判断は、Ｓ８８で受信されたパケットに含まれる送信元デバイスのＭＡＣアドレスが、移行指示パケットの送信元デバイス（即ちＰＣ１００）のＭＡＣアドレスに一致するのか否かの判断と、Ｓ８８で受信されたパケットに、ＳＤ解除コマンドが含まれているのか否かの判断を含む。
【００７１】
Ｓ９２でＹＥＳの場合、Ｓ９４において、サブＣＰＵ３０は、ＳＲＡＭ６０内のＦＤスリープ移行フラグを「１」にして、Ｓ８８に戻る。この結果、後述する図７のＳ１１２の処理において、ＹＥＳと判断され、多機能機１０がＦＤスリープ状態３０８ａに移行される（図７のＳ１２４）。また、図７のＳ１２６において、サブＣＰＵ３０はＦＤスリープ移行フラグを「０」にする。一方、Ｓ９２でＮＯの場合、判断部３６は、判断処理を実行する（Ｓ９６，Ｓ９８）。Ｓ９６では、判断部３６は、Ｓ８８で受信されたパケットに含まれる送信元デバイスのＭＡＣアドレスが、ＳＲＡＭ６０に格納されている処理許可テーブル１０２に記録されているのか否かを判断する。Ｓ９６でＮＯの場合、Ｓ１００に進む。ＳＲＡＭ６０に処理許可なしが格納されている場合、判断部３６は、Ｓ９６でＮＯと判断する。なお、処理許可テーブル１０２に、ＭＡＣアドレスとプロトコルの種類との組合せが記録されていない場合、判断部３６は、Ｓ８８で受信されたパケットに含まれる送信元デバイスのＭＡＣアドレスがいずれのＭＡＣアドレスであっても、即ち、Ｓ８８で受信されたパケットがどのようなパケットであっても、Ｓ９６でＮＯと判断する。
【００７２】
一方、Ｓ９６でＹＥＳの場合、Ｓ９８において、判断部３６は、Ｓ８８で受信されたパケットの送信元デバイスのＭＡＣアドレスに組み合わされているプロトコル（以下では「特定のプロトコル」と呼ぶ）を、処理許可テーブル１０２から抽出する。Ｓ９８では、さらに、判断部３６は、Ｓ８８で受信されたパケットのプロトコルが特定のプロトコルに一致するのか否かを判断する（Ｓ９８）。Ｓ９８でＮＯの場合にＳ１００に進み、Ｓ９８でＹＥＳの場合にＳ１０２に進む。
【００７３】
Ｓ１００では、サブＣＰＵ３０は、Ｓ８８で受信されたパケットを破棄して、Ｓ８８に戻る。この構成によれば、多機能機１０がＳＤスリープ状態３０８ｂである場合に、パケットの送信先のデバイス及びプロトコルに応じて、サブＣＰＵ３０が処理すべきパケットであるのか否かを適切に決定することができる。この結果、処理すべきパケットの個数を低減し得るため、多機能機１０の消費電力を低減し得る。なお、この構成では、処理許可テーブル１０２にＭＡＣアドレスとプロトコルの種類との組合せが記録されていない場合、多機能機１０がＳＤスリープ状態３０８ｂである間に受信されるパケット（Ｓ８８でＹＥＳ）のうち、ＰＣ１００（即ち、移行指示パケットの送信元のデバイス）からの解除指示パケット（Ｓ９２でＹＥＳ）以外のパケットは、パケット処理が実行されずに破棄される（Ｓ１００）。
【００７４】
Ｓ１０２では、サブＣＰＵ３０は、Ｓ８８で受信されたパケットが、サブＣＰＵ３０が、メインＣＰＵ２０に代理して、応答可能であるのか否かを判断する。具体的には、サブＣＰＵ３０は、ＳＲＡＭ６０に格納されているＦＤスリープ状態情報又はＳＤスリープ状態情報に含まれる情報を用いて、Ｓ８８で受信されたパケットに従った応答処理を実行可能であるのか否かを判断する。サブＣＰＵ３０が代理して実行可能な応答処理は、例えば、ＰＩＮＧに対する応答、ＡＲＰ（Address Resolution Protocol）のパケットに対する応答等を含む。
【００７５】
サブＣＰＵ３０が代理して応答可能である場合（Ｓ１０２でＹＥＳ）、サブ処理実行部３８は、Ｓ８８で受信されたパケットに従った応答処理を実行して（Ｓ１０４）、Ｓ８８に戻る。一方、サブＣＰＵ３０が代理して応答不可能である場合（Ｓ１０２でＮＯ）、サブ処理実行部３８は、ＳＲＡＭ６０内のＬスリープ移行フラグを「１」に変更して（Ｓ１０６）、Ｓ８８に戻る。この結果、後述する図７のＳ１２８の処理において、ＹＥＳと判断され、多機能機１０がＬスリープ状態３０６に移行される（図７のＳ１３０からＳ１３４）。なお、Ｌスリープ移行フラグは、図７のＳ１３８において、サブＣＰＵ３０によって「０」にされる。
【００７６】
（サブＣＰＵが実行する状態移行処理）
サブＣＰＵ３０は、メインＣＰＵ２０がスリープ状態（即ち、ＦＤスリープ状態３０８ａ又はＳＤスリープ状態３０８ｂ）である間に、定期的（例えば５０ミリ秒間隔）に図７の状態移行処理を実行する。サブＣＰＵ３０が実行する状態移行処理は、メインＣＰＵ２０が実行する状態移行処理（図５参照）よりも短い時間間隔で実行される。これは、メインＣＰＵ２０が非スリープ状態である間では、メインＣＰＵ２０が実行すべき処理が多く存在するが、メインＣＰＵ２０がスリープ状態では、サブＣＰＵ３０が実行すべき処理はそれほど多くないからである。
【００７７】
図７では、まず、Ｓ１１２において、サブＣＰＵ３０は、ＳＲＡＭ６０に格納されているＦＤスリープ移行フラグが「１」であるのか否かを判断する。ＦＤスリープ移行フラグが「１」である場合（Ｓ１１２でＹＥＳ）、Ｓ１２２に進む。一方、ＦＤスリープ移行フラグが「１」でない場合（Ｓ１１２でＮＯ）、Ｓ１１４に進む。
【００７８】
（ＦＤスリープ移行フラグ＝「０」である場合の処理；Ｓ１１４〜Ｓ１２０）
Ｓ１１４において、サブＣＰＵ３０は、現在時刻がＳＲＡＭ６０内の一時解除時刻情報によって示される一時解除時刻に到達したのか否かを判断する。Ｓ１１４でＹＥＳの場合にＳ１１５に進み、Ｓ１１４でＮＯの場合にＳ１１６に進む。なお、ＳＲＡＭ６０に一時解除時刻情報なしが格納されている場合、Ｓ１１４でＮＯと判断される。
【００７９】
Ｓ１１５では、サブＣＰＵ３０は、上記の特定の外部デバイス（例えばＰＣ１００）のＩＰアドレスを送信先として、ＳＤスリープ状態３０８ｂを解除することを示す情報を含むＳＤスリープ解除パケットを送信する。この構成では、上記の特定の外部デバイスは、ＳＤスリープ解除パケットを受信することによって、多機能機１０がパケット処理を実行することが可能となったことを知ることができる。なお、サブＣＰＵ３０は、ＳＤスリープ解除パケットを、ブロードキャストしてもよい。Ｓ１１５を終えると、Ｓ１１８に進む。
【００８０】
Ｓ１１６では、サブＣＰＵ３０は、現在時刻がＳＲＡＭ６０内のＦＤスリープ解除時刻情報によって示されるＦＤスリープ解除時刻に到達したのか否かを判断する。Ｓ１１６でＹＥＳの場合にＳ１１８に進み、Ｓ１１６でＮＯの場合にＳ１２０に進む。Ｓ１１８では、サブＣＰＵ３０は、ＳＲＡＭ６０内のＬスリープ移行フラグを「１」に変更して、Ｓ１２８に進む。この結果、後述するＳ１２８の処理において、ＹＥＳと判断され、多機能機１０がＬスリープ状態３０６に移行される（図７のＳ１３０からＳ１３４）。なお、Ｌスリープ移行フラグは、図７のＳ１３８において、サブＣＰＵ３０によって「０」にされる。
【００８１】
Ｓ１２０では、サブＣＰＵ３０は、ＳＲＡＭ６０内の移行時刻情報によって示される移行時刻が、現在時刻に到達したのか否かを判断する。Ｓ１２０でＹＥＳの場合にＳ１２２に進み、ＮＯの場合にＳ１２８に進む。なお、ＳＲＡＭ６０に移行時刻情報なしが格納されている場合、サブＣＰＵ３０は、Ｓ１２０でＮＯと判断する。
【００８２】
（ＦＤスリープ移行フラグ＝「１」である場合又は移行時刻に到達した場合の処理；Ｓ１２２〜Ｓ１２７）
Ｓ１２２では、サブＣＰＵ３０は、ＳＲＡＭ６０内のＳＤスリープ移行フラグを「０」に変更する。次いで、Ｓ１２４において、サブＣＰＵ３０は、ＳＲＡＭ６０内の状態変数をＦＤスリープ状態３０８ａに示す値に変更する。この結果、多機能機１０は、ＦＤスリープ状態３８ａに移行される。次いで、Ｓ１２６において、サブＣＰＵ３０は、ＦＤスリープ移行フラグが「１」である場合に、ＦＤスリープ移行フラグを「０」に変更する。なお、サブＣＰＵ３０は、ＦＤスリープ移行フラグが「０」である場合（Ｓ１２０でＹＥＳの場合）、ＦＤスリープ移行フラグを変更しない。続く、Ｓ１２７では、サブＣＰＵ３０は、上記の特定の外部デバイスに、ＳＤスリープ解除パケットを送信して、状態移行処理を終了する。
【００８３】
一方、Ｓ１２８では、サブＣＰＵ３０は、ＳＤＲＡＭ６０内のＬスリープ移行フラグが「１」であるのか否かを判断する。Ｌスリープ移行フラグが「０」である場合（Ｓ１２８でＮＯ）、サブＣＰＵ３０は、状態移行処理を終了する。一方、Ｌスリープ移行フラグが「１」である場合（Ｓ１２８でＹＥＳ）、Ｓ１３０に進む。
【００８４】
（Ｌスリープ移行フラグ＝「１」である場合の処理；Ｓ１３０〜Ｓ１３８）
Ｓ１３０では、移行制御部３４は、ＳＤＲＡＭ９０をセルフリフレッシュモードから通常動作モードに移行させる。なお、移行制御部３４は、さらに、外部デバイス（例えばＰＣ１００）から受信されるパケットを格納するＲＡＭをＳＲＡＭ６０からＳＤＲＡＭ９０に切り替える。次いで、Ｓ１３２において、移行制御部３４は、メイン用クロック回路２８（図１参照）に、メインＣＰＵ２０にクロック供給を開始するよう指示する。この結果、メインＣＰＵ２０にクロックが供給され、メインＣＰＵ２０がスリープ状態から非スリープ状態に移行する。Ｓ１３４では、移行制御部３４は、メイン用割込コントローラ２６を介して、メインＣＰＵ２０に開始割込要求信号を供給する。この結果、図５のＳ６８のＷＡＩＴ命令が解除され、メインＣＰＵ２０は、図５のＳ７０の処理を実行する。これにより、多機能機１０は、Ｌスリープ状態３０６に移行される。サブＣＰＵ３０は、ＳＲＡＭ６０内の状態変数を、Ｌスリープ状態３０６を示す値に変更し（Ｓ１３６）、Ｌスリープ移行フラグを「０」に変更する（Ｓ１３８）。
【００８５】
上記の処理によって、多機能機１０は、Ｌスリープ状態３０６に移行され、メインＣＰＵ２０によって、状態移行処理（図５）が実行される。なお、現在時刻が一時解除時刻に到達しているため（Ｓ１１４でＹＥＳ）に、ＳＤスリープ状態３０８ｂからＬスリープ状態３０６に移行される場合、ＳＤスリープ移行フラグは「１」から「０」に変更されずに「１」の状態を維持する。この状況において、多機能機１０がＬスリープ状態３０６である間に、メインＣＰＵ２０が実行すべき処理（例えば、ＤＨＣＰサーバからのＩＰアドレスを更新するための処理）が実行されると、メインＣＰＵ２０が処理を実行している間は、図５のＳ４４でＮＯと判断され、Ｌスリープ状態３０６が維持される。メインＣＰＵ２０が実行すべき処理が終了すると、図５のＳ４４でＹＥＳと判断される。次に実行される図５のＳ４６では、ＳＤスリープ移行フラグが「１」であるために、多機能機１０は、Ｌスリープ状態３０６からＳＤスリープ状態３０８ｂに移行される。これにより、多機能機１０は、ＳＤスリープ状態３０８ｂから、一時的にＬスリープ状態３０６に移行され、ＳＤスリープ状態３０８ｂに戻る。
【００８６】
（ＰＣが実行する処理）
次いで、ＰＣ１００が実行する処理について説明する。ＰＣ１００の処理部１０４は、多機能機１０から、ＳＤスリープ移行パケット（図５のＳ５４）を受信すると、ＳＤスリープ移行パケットに含まれる多機能機１０のＭＡＣアドレスと、ＳＤスリープ状態３０８ｂであることを示す情報と、の特定の組合せをＰＣ１００に格納する。また、処理部１０４は、多機能機１０から、ＳＤスリープ解除パケット（図７のＳ１１５）を受信すると、上記の特定の組合せを、ＰＣ１０から削除する。
【００８７】
処理部１０４は、ＰＣ１００のユーザによって、多機能機１０にパケットを送信するための操作が実行されたことをトリガとして、図８に示す処理を実行する。処理部１０４は、多機能機１０がＳＤスリープ状態３０８ｂであるのか否かを判断する（Ｓ２０２）。具体的には、処理部１０４は、上記の特定の組合せが、ＰＣ１０に格納されているのか否かを判断する。処理部１０４は、上記の特定の組合せがＰＣ１０に格納されている場合に、多機能機１０がＳＤスリープ状態３０８ｂであると判断する（Ｓ２０２でＹＥＳ）。この場合、処理部１０４は、送信すべきパケットを、ＰＣ１０に格納する（Ｓ２０４）。
【００８８】
一方において、処理部１０４は、上記の特定の組合せがＰＣ１００に格納されていない場合に、多機能機１０がＳＤスリープ状態３０８ｂでないと判断する（Ｓ２０２でＮＯ）。この場合、処理部１０４は、送信すべきパケットを、多機能機１０に送信する（Ｓ２０６）。なお、Ｓ２０６では、処理部１０４は、前回までのＳ２０４において、既にＰＣ１００に格納されているパケットも、多機能機１０に送信する。この構成によれば、ＰＣ１００は、多機能機１０がＳＤスリープ状態３０８ｂである間に、パケットを送信しなくて済む。この結果、多機能機１０がパケットに従った処理を実行せずにパケットが破棄されることを防止することができる。また、ＰＣ１００は、多機能機１０がＳＤスリープ状態３０８ｂである間に、パケットを送信すべき指示がユーザによってなされた場合、送信すべきパケットを格納しておく。ＰＣ１００は、多機能機１０がＳＤスリープ状態３０８ｂから他の状態に移行した後で、格納しておいたパケットを送信する。この構成によれば、ＰＣ１００のユーザは、多機能機１０にパケットを送信させるための指示を、多機能機１０の状態をユーザ自らが判断して、ＰＣ１００に実行しなくて済む。なお、処理部１０４は、多機能機１０からＳＤスリープ解除パケットが受信される（図７のＳ１１５、Ｓ１２７参照）場合に、ＳＤスリープ解除パケットに含まれる送信元デバイス（即ち多機能機１０）のＭＡＣアドレスと一致するＭＡＣアドレスを送信先として指定しているパケットが、ＰＣ１００に格納されているのか否かを判断してもよい。処理部１０４は、当該パケットがＰＣ１００に格納されている場合に、格納されているパケットを多機能機１０に送信してもよい。
【００８９】
（本実施例の効果）
実施例の多機能機１０について詳しく説明した。多機能機１０は、ＦＤスリープ移行条件が成立する（図５のＳ４４でＹＥＳ）が、ＳＤスリープ移行フラグが「１」でない場合、（図５のＳ４６でＮＯ）（即ちＰＣ１００から移行指示パケットを受信していない場合）、ＦＤスリープ状態３０８ａに移行する。一方、ＦＤスリープ移行条件が成立し（図５のＳ４４でＹＥＳ）、かつ、ＳＤスリープ移行フラグが「１」である（図５のＳ４６でＹＥＳ）（即ちＰＣ１００から移行指示パケットを受信している場合）、ＳＤスリープ状態３０８ｂに移行する。
【００９０】
多機能機１０がＳＤスリープ状態３０８ｂである間に、多機能機１０がパケットを受信する場合、サブ処理実行部３８は、受信されたパケットの送信元のＭＡＣアドレスと、受信されたパケットのプロトコルとが、処理許可テーブル１０２の組合せ１０２ａ〜１０２ｅのいずれかの組合せに該当するのか否かを判断する（図６のＳ９６及びＳ９８）。組合せ１０２ａ〜１０２ｅのいずれかの組合せに該当しない場合（図６のＳ９６及びＳ９８のどちらかでＮＯ）には、サブ処理実行部３８は、受信されたパケットに従ったパケット処理を実行しない（図６のＳ１００）。一方、多機能機１０がＦＤスリープ状態３０８ａである間に、多機能機１０がパケットを受信する場合、多機能機１０は、処理許可テーブル１０２に関係なく、受信されたパケットに従った処理を実行する。
【００９１】
即ち、多機能機１０がＳＤスリープ状態３０８ｂである間では、多機能機１０がＦＤスリープ状態３０８ａである間と比較して、多機能機１０がパケット処理を実行すべきパケットの種類は少ない。即ち、多機能機１０がＳＤスリープ状態３０８ｂである間では、ＦＤスリープ状態３０８ａである間と比較して、パケット処理に費やされる電力を抑制することができる。このため、ＳＤスリープ状態３０８ｂは、ＦＤスリープ状態３０８ａと比較して、省電力であるということができる。
【００９２】
上記の多機能機１０は、以下のケースに有用である。例えば、多機能機１０を有する会社が営業時間内である場合には、多機能機１０は、受信した特定のパケットに従ったパケット処理を実行することが望まれる。この場合では、多機能機１０の省電力を実現するために、多機能機１０をＦＤスリープ状態３０８ａに移行させる。これにより、多機能機１０の消費電力を低減することができるとともに、多機能機１０は、上記の特定のパケットが受信される場合に、受信された特定のパケットに従ったパケット処理を実行することができる。
【００９３】
一方、多機能機１０を有する会社が営業時間外である場合には、多機能機１０は、上記の特定のパケットに従ったパケット処理を実行する必要がない。この場合では、多機能機１０の省電力を実現するために、多機能機１０をＳＤスリープ状態３０８ｂに移行させる。これにより、多機能機１０の消費電力を低減することができる。また、多機能機１０は、上記の特定のパケットを受信しても、パケット処理を実行しないために、省電力状態を維持することができる。
【００９４】
多機能機１０は、ＰＣ１００から受信した移行指示パケットに一時解除時刻情報が含まれている場合（図４のＳ２８でＹＥＳ）、一時解除時刻情報で示される時刻で、ＳＤスリープ状態３０８ａからＬスリープ状態３０６に移行する。多機能機１０は、Ｌスリープ状態３０６に移行するタイミングで、ＳＤスリープ解除パケットを、ＰＣ１００に送信する（図７のＳ１１５）。この構成によれば、ＰＣ１００は、多機能機１０がＳＤスリープ状態３０８ｂから移行された後で、多機能機１０にパケットを送信することができる。このため、ＰＣ１００は、多機能機１０に送信されたパケットが多機能機１０によって破棄されること（図６のＳ１００）を防止することができる。
【００９５】
多機能機１０は、移行指示パケットを送信したＰＣ１００以外のデバイスから、解除指示パケットが受信されたとしても、ＦＤスリープ移行フラグを「１」に変更しない。この構成によれば、移行指示パケットを送信するデバイスと解除指示パケットを送信するデバイスとを同一のデバイスに限定することができる。これにより、多機能機１０の状態を、１個のデバイスのみで管理することができる。
【００９６】
（対応関係）
なお、上記の多機能機１０が「通信装置」の一例である。また、上記のメインＣＰＵ２０とサブＣＰＵ３０とが「処理部」の一例であり、メインＣＰＵ２０が「第１のプロセッサ」、サブＣＰＵ３０が「第２のプロセッサ」の一例である。ＳＲＡＭ６０とＳＤＲＡＭ９０とが「メモリ部」の一例である。処理状態３０２、待機状態３０４及びＬスリープ状態３０６が「高消費状態」、ＦＤスリープ状態３０８ａが「第１の低消費状態」、ＳＤスリープ状態３０８ｂが「第２の低消費状態」の一例である。ＰＣ１００が「特定のデバイス」の一例である。
【００９７】
ＦＤスリープ移行条件が「第１の条件」の一例であり、ＦＤスリープ移行条件と移行指示パケットの受信とが「第２の条件」の一例である。図６のＳ８４及びＳ８６が「第１の移行処理」及び「第２の移行処理」の一例である。図７のＳ１３０からＳ１３４の処理が「第３の移行処理」の一例である。図７のＳ１２４の処理が「第４の移行処理」の一例である。
【００９８】
以上、本発明の実施形態について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【００９９】
（変形例）
（１）上記の実施例では、多機能機１０は、２個のＣＰＵ２０，３０を備えるが、これに代えて、多機能機１０は、メインＣＰＵ２０のみを備えていてもよい。この場合、メインＣＰＵ２０に供給されるクロック信号の周波数が低い状態と高い状態とに移行してもよい。クロック信号の周波数が高い状態では、メインＣＰＵ２０の消費電力が比較的に高く、クロック信号の周波数が低い状態では、メインＣＰＵ２０の消費電力が比較的に低い。多機能機１０が各状態３０２〜３０６である場合には、メインＣＰＵ２０に供給されるクロック信号の周波数が高い状態であり、多機能機１０がＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂである場合には、メインＣＰＵ２０に供給されるクロック信号の周波数が低い状態であってもよい。この場合、メインＣＰＵ２０が、上記の実施例のサブＣＰＵ３０に代わって、サブＣＰＵ３０が実行する処理（図６，７の処理）を実行してもよい。この変形例では、メインＣＰＵ２０が「処理部」の一例であり、メインＣＰＵ２０に供給されるクロック信号の周波数が高い状態が「高消費状態」の一例であり、メインＣＰＵ２０に供給されるクロック信号の周波数が低い状態が「低消費状態」の一例である。
【０１００】
（２）上記の実施例では、多機能機１０は、２個のＲＡＭ６０，９０を備えるが、これに代えて、多機能機１０は、１個のＲＡＭのみを備えていてもよい。この場合、１個のＲＡＭは、多機能機１０が電源ＯＮの間では、常に通常動作モードであってもよい。この変形例では、１個のＲＡＭが「メモリ部」の一例である。
【０１０１】
（３）上記の実施例では、ＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂでは、メインＣＰＵ２０はスリープ状態であり、ＳＤＲＡＭ９０はセルフリフレッシュモードである。しかしながら、ＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂでは、メインＣＰＵ２０は、非スリープ状態であってもよい。この場合、ＳＤＲＡＭ９０をセルフリフレッシュモードに移行させることによって、「低消費状態」が達成されていてもよい。同様に、ＦＤスリープ状態３０８ａ及びＳＤスリープ状態３０８ｂでは、ＳＤＲＡＭ９０は、通常動作モードであってもよい。この場合、メインＣＰＵ２０をスリープ状態に移行することによって、「低消費状態」が達成されていてもよい。なお、上記の実施例でも、本変形例でも、ＣＰＵ２０，３０（即ち「処理部」）の状態（スリープ状態又は非スリープ状態）は、ＦＤスリープ状態３０８ａとＳＤスリープ状態３０８ｂとで同一の状態であってもよい。
【０１０２】
（４）上記の実施例では、図２に示すように、多機能機１０は、Ｌスリープ状態３０６及びＦＤスリープ状態３０８ａどちらの状態でも、ＳＤスリープ状態３０８ｂに移行することができる。これに代えて、多機能機１０は、Ｌスリープ状態３０６からＳＤスリープ状態３０８ｂに移行することができなくてもよい。この場合、ＣＰＵ２０，３０は、ＦＤスリープ状態移行条件が成立すると（図５のＳ４４でＹＥＳ）、ＳＤスリープ状態移行フラグが「１」であるのか否かに関わらず、ＦＤスリープ状態３０８ａに移行されてもよい。ＦＤスリープ状態３０８ａに移行された後、サブＣＰＵ３０は、ＳＤスリープ状態移行フラグが「１」である場合に、ＳＤスリープ状態３０８ｂに移行してもよい。この変形例では、ＦＤスリープ状態３０８ａが「特定の状態」の一例である。
【０１０３】
（５）上記の実施例では、サブＣＰＵ３０は、一時解除時刻が到来すると（図７のＳ１１４でＹＥＳ）、Ｌスリープ状態３０６に移行する際に、ＳＤスリープ解除パケットを送信する（図７のＳ１１５）。これに代えて、メインＣＰＵ２０は、ＳＤ移行パケットを送信する際に（図５のＳ５４）、一時解除時刻情報を含むパケットを上記の特定の外部デバイスに送信してもよい。この変形例では、一時解除時刻情報を含むパケットを上記の特定の外部デバイスに送信する処理が、「送信処理」の一例である。
【０１０４】
（６）処理許可テーブル１０２は、ユーザの操作によって、多機能機１０のフラッシュメモリ８０等に予め格納されていてもよい。あるいは、処理許可テーブル１０２は、多機能機１０又はＰＣ１００が作成してもよい。例えば、メインＣＰＵ２０が非スリープ状態である間に、メインＣＰＵ２０は、多機能機１０によって受信されるパケットの送信元デバイスのＭＡＣアドレスとパケットのプロトコルとの組合せをＳＤＲＡＭ９０に記録しておいてもよい。メインＣＰＵ２０は、ＳＤスリープ状態３０８ｂに移行するタイミングで、ＳＤＲＡＭ９０に記録された組合せのうち、同一の組合せが所定の個数以上記録されている場合に、当該組合せを、処理許可テーブル１０２に記録してもよい。
【０１０５】
（７）上記の実施例では、処理許可テーブル１０２は、ＭＡＣアドレスとパケットのプロトコルとの組合せ１０２ａ〜１０２ｆが記録されている。しかしながら、組合せ１０２ａ〜１０２ｆは、ユーザＩＤ、ＩＰアドレス等を含んでいてもよい。この場合、判断部３６は、判断処理（図６のＳ９６，Ｓ９８）において、図６のＳ８８で受信されたパケットに含まれる送信元デバイスのユーザのユーザＩＤ、送信元デバイスのＩＰアドレスが、処理許可テーブル１０２に記録されているのか否かを判断することによって、パケット処理を実行するのか否かを判断してもよい。本変形例では、ユーザＩＤ、ＩＰアドレスのそれぞれが「送信元識別情報」の一例である。
【０１０６】
（８）上記の実施例では、メインＣＰＵ２０がプログラムに従って処理を実行することによって、各部２２，２４が実現されるが、各部２２，２４の少なくとも１個は、論理回路等のハードウェアで実現されてもよい。また、サブＣＰＵ３０がプログラムに従って処理を実行することによって、各部３４，３６，３８が実現されるが、各部２２，２４の少なくとも１個は、論理回路等のハードウェアで実現されてもよい。
【０１０７】
（９）「通信装置」は、多機能機でなくてもよく、ＰＣ、プリンタ、サーバ、ＰＤＡ等の通信装置であってもよい。
【０１０８】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１０９】
２：ネットワークシステム、１０：多機能機、２０：メインＣＰＵ、３０：サブＣＰＵ、６０：ＳＲＡＭ、９０：ＳＤＲＡＭ、１００：ＰＣ、３０２：処理状態、３０４：待機状態、３０６：Ｌスリープ状態、３０８ａ：ＦＤスリープ状態、３０８ｂ：ＳＤスリープ状態
【図１】
0005741022.tif 000002
【図２】
0005741022.tif 000003
【図３】
0005741022.tif 000004
【図４】
0005741022.tif 000005
【図５】
0005741022.tif 000006
【図６】
0005741022.tif 000007
【図７】
0005741022.tif 000008
【図８】
0005741022.tif 000009