(57)【要約】【課題】  処理部の消費電力を低減し得る技術を提供する。【解決手段】  プリンタは、メインＣＰＵとサブＣＰＵとを備える。メインＣＰＵは、消費電力が比較的に高い非スリープ状態と、消費電力が比較的に低いスリープ状態との間で状態が移行する。サブＣＰＵは、メインＣＰＵがスリープ状態である間に、ネットワークを介して受信されるパケットが、応答処理を実行すべきパケットであるのか否かを判断するパケット判断処理（Ｓ６０）を実行する。サブＣＰＵは、パケットが応答処理を実行すべきパケットであると判断される場合に、判断処理の後に、パケット妥当性確認処理（Ｓ６４）を実行する。サブＣＰＵは、パケットが妥当であると確認される場合に、パケットに対する応答処理を実行する（Ｓ７０）。パケットが応答処理を実行すべきパケットでないと判断される場合に、サブＣＰＵは、確認処理を実行せず、応答処理を実行しない。【選択図】  図６
2011205580.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
消費電力が比較的に高い第１の状態と、消費電力が比較的に低い第２の状態と、の間で状態が移行する処理部であって、前記ネットワークを介して受信されるパケットに対する応答処理を実行する前記処理部を備え、
前記処理部は、
前記処理部が前記第２の状態である間に、前記ネットワークを介して受信される第１のパケットが、前記処理部が前記応答処理を実行すべきパケットであるのか否かを判断する第１の判断処理を実行する判断部と、
前記第１のパケットが、前記処理部が前記応答処理を実行すべきパケットであると判断される第１の場合に、前記第１の判断処理の後に、前記第１のパケットの妥当性を確認する第１の確認処理を実行する確認部と、
前記第１のパケットが妥当であると確認される場合に、前記第１のパケットに対する前記応答処理を実行する第１応答実行部と、を備え、
前記第１のパケットが、前記処理部が前記応答処理を実行すべきパケットでないと判断される第２の場合に、前記確認部は、前記第１の確認処理を実行せず、前記第１応答実行部は、前記応答処理を実行しない、通信装置。
【請求項２】
前記判断部は、前記第１のパケットのうち、第１のレイヤで処理されるべき情報を用いて、前記第１の判断処理を実行し、
前記確認部は、前記第１の判断処理の後に、前記第１のパケットのうち、前記第１のレイヤよりも下位のレイヤである第２のレイヤで処理されるべき情報を用いて、前記第１の確認処理を実行する、請求項１に記載の通信装置。
【請求項３】
前記判断部は、前記第１のパケットのうち、ＩＰヘッダに含まれる宛先ＩＰアドレスと、ＵＤＰヘッダに含まれる宛先ポート番号と、を用いて、前記第１の判断処理を実行し、
前記確認部は、前記第１の判断処理の後に、前記第１のパケットのうち、ＩＰヘッダに含まれる特定の情報を用いて、前記第１の確認処理を実行する、請求項１又は２に記載の通信装置。
【請求項４】
前記ＩＰヘッダに含まれる前記特定の情報は、誤り検出のための情報と、データサイズに関する情報と、送信元ＩＰアドレスと、のうちの少なくとも１つを含む、請求項３に記載の通信装置。
【請求項５】
前記判断部は、さらに、前記第１のパケットのうち、アプリケーションデータに含まれる情報を用いて、前記第１の判断処理を実行し、
前記確認部は、さらに、前記第１の判断処理の後に、前記第１のパケットのうち、ＵＤＰヘッダに含まれる特定の情報を用いて、前記第１の確認処理を実行する、請求項３又は４に記載の通信装置。
【請求項６】
前記ＵＤＰヘッダに含まれる前記特定の情報は、誤り検出のための情報を含む、請求項５に記載の通信装置。
【請求項７】
前記処理部は、さらに、
前記処理部が前記第１の状態である間に、前記ネットワークを介して受信される第２のパケットが、前記処理部が前記応答処理を実行すべきパケットであるのか否かを判断する第２の判断処理を実行し、前記第２の判断処理を実行する際に、前記第２のパケットの妥当性を確認する第２の確認処理を実行するパケット解析部と、
前記第２のパケットが、前記処理部が前記応答処理を実行すべきパケットであると判断され、かつ、前記第２のパケットが妥当であると確認される場合に、前記第２のパケットに対する前記応答処理を実行する第２応答実行部と、を備える、請求項１から６のいずれか一項に記載の通信装置。
【請求項８】
前記パケット解析部は、前記第２のパケットのうち、第３のレイヤで処理されるべき情報を用いて、前記第２の確認処理を実行し、その後に、前記第２のパケットのうち、前記第３のレイヤよりも上位のレイヤである第４のレイヤで処理されるべき情報を用いて、前記第２の確認処理を実行する、請求項７に記載の通信装置。
【請求項９】
前記処理部は、
非スリープ状態とスリープ状態との間で状態が移行し、前記非スリープ状態である場合に、前記応答処理を実行する第１処理部であって、前記処理部が前記第１の状態である場合には前記非スリープ状態であり、前記処理部が前記第２の状態である場合には前記スリープ状態である前記第１処理部と、
前記判断部と前記確認部と前記第１応答実行部とを含む第２処理部であって、前記第１処理部が前記スリープ状態である場合に、前記応答処理を実行する第２処理部と、
を備え、
前記判断部は、さらに、前記第１の場合に、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させるべきであるのか否かを判断し、
前記第１応答実行部は、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させるべきでないと判断される場合に、前記第１のパケットに対する前記応答処理を実行し、
前記第２処理部は、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させるべきであると判断される場合に、前記第１処理部を前記スリープ状態から前記非スリープ状態に移行させ、
前記第１処理部は、前記非スリープ状態に移行した後に、前記第１のパケットに対する前記応答処理を実行する、請求項１から８のいずれか一項に記載の通信装置。
【請求項１０】
前記処理部を含む集積回路と、
前記集積回路内に設けられた第１のメモリと、
前記集積回路外に設けられた第２のメモリと、を備え、
前記判断部は、前記第１のメモリに格納された第１のプログラムに従って、前記第１の判断処理を実行し、
前記確認部は、前記第２のメモリに格納された第２のプログラムに従って、前記第１の確認処理を実行する、請求項１から９のいずれか一項に記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、ネットワークに接続される通信装置を開示する。
【背景技術】
【０００２】
特許文献１に、メインＣＰＵとサブＣＰＵとを備える画像処理装置が開示されている。画像処理装置は、メインＣＰＵへの電源の供給が行なわれる通常動作状態と、メインＣＰＵへの電源の供給が停止される省電力状態と、の間で状態が移行する。画像処理装置が省電力状態である間に、ネットワークを介してパケットが受信されると、サブＣＰＵは、当該パケットに含まれるＩＰバージョンを示す情報及びヘッダ長を示す情報を用いて、当該パケットを破棄すべきか否かを確認する。当該パケットを破棄すべきでないと確認された後に、サブＣＰＵは、さらに、当該パケットが、画像処理装置が応答すべきパケットであるのか否かを判断する。ここで肯定的に判断される場合に、メインＣＰＵ又はサブＣＰＵは、パケットに対する応答処理を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２５９９０６号公報
【特許文献２】特開２００３−２８３５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通信装置（特許文献１では画像処理装置）の消費電力をより低減させることが求められている。本明細書では、通信装置の消費電力をより低減し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される技術は、ネットワークに接続される通信装置である。この通信装置は、消費電力が比較的に高い第１の状態と、消費電力が比較的に低い第２の状態との間で状態が移行する処理部を備える。処理部は、ネットワークを介して受信されるパケットに対する応答処理を実行する。処理部は、判断部と確認部と第１応答実行部とを備える。判断部は、処理部が第２の状態である間に、ネットワークを介して受信される第１のパケットが、処理部が応答処理を実行すべきパケットであるのか否かを判断する第１の判断処理を実行する。確認部は、第１のパケットが、処理部が応答処理を実行すべきパケットであると判断される第１の場合に、第１の判断処理の後に、第１のパケットの妥当性を確認する第１の確認処理を実行する。第１応答実行部は、第１のパケットが妥当であると確認される場合に、第１のパケットに対する応答処理を実行する。第１のパケットが、処理部が応答処理を実行すべきパケットでないと判断される第２の場合に、確認部は、第１の確認処理を実行せず、第１応答実行部は、応答処理を実行しない。
【０００６】
通常では、応答処理の前に、受信したパケットに対して応答すべきか否かを判断する処理が実行される際に、受信したパケットの妥当性を確認する処理も実行される。このため、通常の処理では、受信したパケットに対して応答すべきでないと判断される場合にも、確認の処理は実行される。しかしながら、この通信装置では、処理部が第２の状態である間に第１のパケットが受信されると、先に、第１の判断処理が実行され、その後に、第１の確認処理が実行される。そして、第１の判断処理において第１のパケットが応答すべきパケットでないと判断される場合には、第１の確認処理は実行されない。このため、処理部が第２の状態である間に、処理部の処理負荷を低減し得る。従って、通信装置の消費電力を低減し得る。
【０００７】
判断部は、第１のパケットのうち、第１のレイヤで処理されるべき情報を用いて、第１の判断処理を実行してもよい。確認部は、第１の判断処理の後に、第１のパケットのうち、第１のレイヤよりも下位のレイヤである第２のレイヤで処理されるべき情報を用いて、第１の確認処理を実行してもよい。上記の通常の処理では、受信したパケットのうち、下位のレイヤで処理されるべき情報を用いて判断および確認を含む処理が実行された後に、上位のレイヤで処理されるべき情報を用いて判断および確認を含む処理が実行される。しかしながら、上記の通信装置では、下位のレイヤ（第２のレイヤ）で処理されるべき情報を用いて第１の確認処理が実行される前に、上位のレイヤ（第１のレイヤ）で処理されるべき情報を用いて第１の判断処理が実行される。このため、処理部が第２の状態である間において、第１のパケットが応答処理を実行すべきパケットでないと判断される場合に、下位のレイヤ（第２のレイヤ）で処理されるべき情報を用いた第１の確認処理を実行せずに済む。
【０００８】
判断部は、第１のパケットのうち、ＩＰヘッダに含まれる宛先ＩＰアドレスと、ＵＤＰヘッダに含まれる宛先ポート番号と、を用いて、第１の判断処理を実行してもよい。確認部は、第１の判断処理の後に、第１のパケットのうち、ＩＰヘッダに含まれる特定の情報を用いて、第１の確認処理を実行してもよい。なお、ＩＰヘッダに含まれる特定の情報は、誤り検出のための情報と、データサイズに関する情報と、送信元ＩＰアドレスと、のうちの少なくとも１つを含んでいてもよい。
【０００９】
判断部は、さらに、第１のパケットのうち、アプリケーションデータに含まれる情報を用いて、第１の判断処理を実行してもよい。確認部は、さらに、第１の判断処理の後に、第１のパケットのうち、ＵＤＰヘッダに含まれる特定の情報を用いて、第１の確認処理を実行してもよい。なお、ＵＤＰヘッダに含まれる特定の情報は、誤り検出のための情報を含んでいてもよい。
【００１０】
処理部は、さらに、パケット解析部と第２応答実行部とを備えていてもよい。パケット解析部は、処理部が第１の状態である間に、ネットワークを介して受信される第２のパケットが、処理部が応答処理を実行すべきパケットであるのか否かを判断する第２の判断処理を実行し、第２の判断処理を実行する際に、第２のパケットの妥当性を確認する第２の確認処理を実行してもよい。第２応答実行部は、第２のパケットが、処理部が応答処理を実行すべきパケットであると判断され、かつ、第２のパケットが妥当であると確認される場合に、第２のパケットに対する応答処理を実行してもよい。この構成によれば、処理部が第１の状態である間に受信される第２のパケットに対する処理を、上記の通常の処理と同様に適切に実行し得る。
【００１１】
パケット解析部は、第２のパケットのうち、第３のレイヤで処理されるべき情報を用いて、第２の確認処理を実行し、その後に、第２のパケットのうち、第３のレイヤよりも上位のレイヤである第４のレイヤで処理されるべき情報を用いて、第２の確認処理を実行してもよい。
【００１２】
処理部は、第１処理部と第２処理部とを備えていてもよい。第１処理部は、非スリープ状態とスリープ状態との間で状態が移行し、非スリープ状態である場合に、応答処理を実行してもよい。第１処理部は、処理部が第１の状態である場合には非スリープ状態であり、処理部が第２の状態である場合にはスリープ状態であってもよい。第２処理部は、判断部と確認部と第１応答実行部とを含んでもよい。第２処理部は、第１処理部がスリープ状態である場合に、応答処理を実行してもよい。判断部は、さらに、第１の場合に、第１処理部をスリープ状態から非スリープ状態に移行させるべきであるのか否かを判断してもよい。第１応答実行部は、第１処理部をスリープ状態から非スリープ状態に移行させるべきでないと判断される場合に、第１のパケットに対する応答処理を実行してもよい。第２処理部は、第１処理部をスリープ状態から非スリープ状態に移行させるべきであると判断される場合に、第１処理部をスリープ状態から非スリープ状態に移行させてもよい。第１処理部は、非スリープ状態に移行した後に、第１のパケットに対する応答処理を実行してもよい。この構成によれば、第１処理部を非スリープ状態に移行させるべきでないと判断される場合に、第１処理部をスリープ状態に維持した状態で、第２処理部は、第１のパケットに対する応答処理を実行することができる。第１処理部がスリープ状態に維持されるために、通信装置の消費電力を低減することができる。また、上記の通信装置では、第１処理部を非スリープ状態に移行させるべきであると判断される場合に、第１処理部が非スリープ状態に移行し、第１処理部が第１のパケットに対する応答処理を実行する。この構成によれば、第１のパケットに対する応答処理を適切に実行し得る。
【００１３】
上記の通信装置は、処理部を含む集積回路と、集積回路内に設けられた第１のメモリと、集積回路外に設けられた第２のメモリと、を備えていてもよい。判断部は、第１のメモリに格納された第１のプログラムに従って、第１の判断処理を実行してもよい。確認部は、第２のメモリに格納された第２のプログラムに従って、第１の確認処理を実行してもよい。この構成によれば、第２のメモリが集積回路外に設けられている。この構成によれば、第１のメモリと第２のメモリとの両方が集積回路内に設けられている構成と比較して、集積回路内のメモリ（即ち第１のメモリ）の容量を小さくすることができる。また、上述したように、上記の通信装置では、第１の判断処理において、第１のパケットが、処理部が応答処理を実行すべきパケットでないと判断される場合に、第１の確認処理は実行されない。このため、処理部が、第１の確認処理を実行するための第２のプログラムを格納している集積回路外の第２のメモリにアクセスする頻度が少なくて済む。
【００１４】
なお、上記の通信装置を実現するための制御方法、及び、コンピュータプログラムも新規で有用である。
【図面の簡単な説明】
【００１５】
【図１】ネットワークシステムの構成を示す。
【図２】プリンタの状態移行の一例を示す。
【図３】プリンタの状態に対応する各部の状態の一例を示す。
【図４】プリンタが受信するパケットの一例を示す。
【図５】メインＣＰＵが実行する処理のフローチャートを示す。
【図６】サブＣＰＵが実行する処理のフローチャートを示す。
【図７】パケット判断処理のフローチャートを示す。
【図８】ＳＮＭＰパケット処理のフローチャートを示す。
【図９】ＮｅｔＢＩＯＳ−ＮＳパケット処理のフローチャートを示す。
【図１０】パケット妥当性確認処理のフローチャートを示す。
【発明を実施するための形態】
【００１６】
図面を参照して実施例を説明する。図１に示すように、ネットワークシステム２は、ＰＣ等の外部装置６と、プリンタ１０と、を備える。外部装置６とプリンタ１０は、ＬＡＮ４を介して、相互に通信可能である。
【００１７】
（プリンタの構成）
図１に示すように、プリンタ１０は、ＡＳＩＣ（Application Specific Integrated Circuit）１２と、フラッシュメモリ８０と、ＳＤＲＡＭ１００と、ネットワークインターフェイス１０２と、エンジン制御回路１１０と、プリンタエンジン１１２と、パネル制御回路１２０と、表示パネル１２２と、を備える。
【００１８】
ＡＳＩＣ１２は、メインＣＰＵ２０と、メイン用割込コントローラ２６と、メイン用クロック回路２８と、サブＣＰＵ３０と、サブ用割込コントローラ３８と、サブ用クロック回路４０と、タイマ５０と、タイマ用クロック回路５２と、ＳＲＡＭ６０と、ＳＤＲＡＭ制御回路７０と、ＭＡＣコントローラ７２と、を備える。各部２０，２６，３０，３８，５０，６０，７０，７２は、バス１４に接続されている。
【００１９】
メインＣＰＵ２０は、フラッシュメモリ８０に格納されている基本プログラム８４に従って様々な処理を実行する。これにより、パケット解析部２２と第２応答実行部２４との機能が実現される。メイン用クロック回路２８は、メインＣＰＵ２０にクロック信号を供給する。メインＣＰＵ２０にクロック信号が供給されている間は、メインＣＰＵ２０は非スリープ状態である。メインＣＰＵ２０にクロック信号が供給されていない間は、メインＣＰＵ２０はスリープ状態である。メインＣＰＵ２０のスリープ状態は、メインＣＰＵ２０の非スリープ状態と比較して、消費電力が低い状態である。メイン用クロック回路２８は、サブＣＰＵ３０によって制御される。メイン用割込コントローラ２６は、メインＣＰＵ２０の外部（例えばサブＣＰＵ３０、タイマ５０、ＭＡＣコントローラ７２）から取得した割込要求信号を、メインＣＰＵ２０に供給する。メインＣＰＵ２０は、メイン用割込コントローラ２６から割込要求信号を取得すると、割込要求信号に応じた処理を実行する。
【００２０】
サブＣＰＵ３０は、各メモリ６０，８０に格納されている各プログラム６８，８４，８６に従って様々な処理を実行する。これにより、判断部３２、確認部３４、及び、第１応答実行部３６の機能が実現される。サブ用クロック回路４０は、サブＣＰＵ３０にクロック信号を供給する。サブ用クロック回路４０のクロック信号の周波数は、メイン用クロック回路２８のクロック信号の周波数よりも低い。従って、メインＣＰＵ２０を駆動するための消費電力と比べて、サブＣＰＵ３０を駆動するための消費電力は低い。さらに、メインＣＰＵ２０の処理速度は、サブＣＰＵ３０の処理速度よりも高い。サブ用クロック回路４０は、プリンタ１０の電源がＯＮにされるとサブＣＰＵ３０にクロック信号を供給し、プリンタ１０の電源がＯＦＦにされるとクロック信号を停止する。即ち、サブＣＰＵ３０は、プリンタ１０の電源がＯＮされている間、クロック信号が供給されている状態（非スリープ状態）で維持される。サブ用割込コントローラ３８は、サブＣＰＵ３０の外部（例えばメインＣＰＵ２０、ＭＡＣコントローラ７２）から取得した割込要求信号を、サブＣＰＵ３０に供給する。サブＣＰＵ３０は、サブ用割込コントローラ３８から割込要求信号を取得すると、割込要求信号に応じた処理を実行する。
【００２１】
タイマ５０は、タイマ用クロック回路５２から供給されるクロック信号に同期して、予め設定された初期値からカウントダウンを実行する。タイマ用クロック回路５２は、プリンタ１０が後述する処理状態３０２から待機状態３０４（図２参照）に移行されると、タイマ５０へのクロック信号の供給を開始する。タイマ５０は、カウント値が「０」になると、メイン用割込コントローラ２６にタイマ割込要求信号を供給する。この結果、メイン用割込コントローラ２６はタイマ割込要求信号をメインＣＰＵ２０に供給し、メインＣＰＵ２０は、プリンタ１０を、待機状態３０４からＬスリープ状態３０６（図２参照）に移行させる。
【００２２】
ＳＲＡＭ６０は、各ＣＰＵ２０，３０からアクセス可能である。サブＣＰＵ３０は、メインＣＰＵ２０がスリープ状態である間に、ＬＡＮ４を介して受信されるパケットを、ＳＲＡＭ６０に格納する。ＳＲＡＭ６０は、ＯＩＤ（Object ID）テーブル６２（後述する）を格納している。ＳＲＡＭ６０は、さらに、サブＣＰＵ３０がパケット判断処理（図７参照）を実行するための判断処理用プログラム６８を格納する。判断処理用プログラム６８は、圧縮された状態で、フラッシュメモリ８０に格納されている。プリンタ１０の電源がＯＮされると、メインＣＰＵ２０は、フラッシュメモリ８０内の圧縮された判断処理用プログラム６８を展開して、展開済みの判断処理用プログラム６８をＳＲＡＭ６０に格納する。
【００２３】
ＳＤＲＡＭ制御回路７０は、各ＣＰＵ２０，３０の指示に従って、ＳＤＲＡＭ１００にアクセスする。また、ＳＤＲＡＭ制御回路７０は、サブＣＰＵ３０の指示により、ＳＤＲＡＭ１００にクロック信号を供給又は停止して、消費電力が比較的に高い通常動作モードと、消費電力が比較的に低いセルフリフレッシュモードと、の間でＳＤＲＡＭ１００の状態を移行させる。
【００２４】
ＭＡＣコントローラ７２は、ネットワークインターフェイス１０２に接続されている。ＭＡＣコントローラ７２は、ＬＡＮ４を介して、ネットワークインターフェイス１０２でパケットが受信されると、２個の割込コントローラ２６，３８のどちらかに、パケット割込要求信号を供給する。詳細には、メインＣＰＵ２０が非スリープ状態である間に、パケットが受信されると、ＭＡＣコントローラ７２は、パケット割込要求信号を、メイン用割込コントローラ２６に供給する。一方、メインＣＰＵ２０がスリープ状態である間に、パケットが受信されると、ＭＡＣコントローラ７２は、パケット割込要求信号を、サブ用割込コントローラ３８に供給する。
【００２５】
フラッシュメモリ８０は、ＡＳＩＣ１２の外部に設けられている。フラッシュメモリ８０は、各ＣＰＵ２０，３０からアクセス可能である。なお、フラッシュメモリ８０は、各ＣＰＵ２０，３０からのアクセスがない状態では、アクセスされている状態と比較して、消費電力が低いモードに維持される。これにより、フラッシュメモリ８０の省電力化が実現される。フラッシュメモリ８０は、各ＣＰＵ２０，３０によって実行される複数種類のプログラムを格納している。上記の複数種類のプログラムは、基本プログラム８４と確認処理用プログラム８６と判断処理用プログラム６８とを含む。各プログラム８４，８６は、フラッシュメモリ８０に格納された状態で、各ＣＰＵ２０，３０によって利用される。ただし、上述したように、判断処理用プログラム６８は、ＳＲＡＭ６０に格納された状態で、サブＣＰＵ３０によって利用される。なお、フラッシュメモリ８０は、ＭＩＢ（Management Information Base）データ格納領域９０（後述する）を備える。
【００２６】
ＳＤＲＡＭ１００は、メインＣＰＵ２０からアクセス可能である。メインＣＰＵ２０は、メインＣＰＵ２０が非スリープ状態である間に、ＬＡＮ４を介して受信されるパケットを、ＳＤＲＡＭ１００に格納する。ＳＤＲＡＭ１００は、ＳＲＡＭ６０よりもメモリの総容量が大きい。このため、ＳＤＲＡＭ１００の消費電力は、ＳＲＡＭ６０の消費電力と比べて高い。ＳＤＲＡＭ１００は、ＳＤＲＡＭ制御回路７０によって制御され、通常動作モードとセルフリフレッシュモードとの間で状態が移行する。ＳＤＲＡＭ１００には、メインＣＰＵ２０が処理を実行する際に必要な情報が格納される。例えば、プリンタ１０のＩＰアドレス、ＭＡＣアドレス、ノード名等が格納される。ＳＤＲＡＭ１００には、さらに、複数個のＯＩＤと複数個のオブジェクトデータとが対応付けて登録されるオブジェクトデータテーブル（後述する）が格納されている。オブジェクトデータは、プリンタ１０の現在の状態を示す情報である。
【００２７】
ここで、ＳＲＡＭ６０に格納されているＯＩＤテーブル６２と、フラッシュメモリ８０内のＭＩＢデータ格納領域９０と、ＳＤＲＡＭ１００に格納されているオブジェクトデータテーブルと、について詳しく説明する。メインＣＰＵ２０は、プリンタ１０の電源がＯＮにされると、オブジェクトデータテーブル内の複数個のＯＩＤのそれぞれについて、当該ＯＩＤに対応するオブジェクトデータを登録する。なお、複数個のＯＩＤは、プリンタ１０のベンダによって予め登録されている。例えば、プリンタ１０のトナーの残量が所定量よりも少ない場合、メインＣＰＵ２０は、ＯＩＤ「Ｘ．Ｘ．Ｘ」に対応付けて、「ＴＯＮＥＲ  ＬＯＷ」を登録する。メインＣＰＵ２０は、プリンタ１０の状態が変更される（例えばトナーが交換される）と、オブジェクトデータテーブル内のオブジェクトデータを変更する。メインＣＰＵ２０は、ＬＡＮ４を介して受信されたパケットであって、プリンタ１０のオブジェクトデータを要求する要求パケットに対する応答処理を実行する場合には、要求パケットで指定されたＯＩＤに対応するオブジェクトデータを、ＳＤＲＡＭ１００内のオブジェクトデータテーブルから取得する。次いで、メインＣＰＵ２０は、ＯＩＤと取得したオブジェクトデータとが対応付けられた応答パケットを、要求パケットの送信元のデバイス（例えば外部装置６）に送信する。
【００２８】
ＳＲＡＭ６０内のＯＩＤテーブル６２には、ＯＩＤ６４とアドレス６６とが対応付けて登録される。ＯＩＤ６４は、プリンタ１０のベンダによって予め登録されている。ＯＩＤ６４は、オブジェクトデータテーブル内の複数個のＯＩＤのうちの一部のＯＩＤのみと一致する。即ち、ＳＤＲＡＭ１００内のオブジェクトデータテーブルには、ＯＩＤ６４と一致しないＯＩＤが含まれる。ＭＩＢデータ格納領域９０には、複数個のオブジェクトデータ９４が格納されている。各オブジェクトデータ９４は、アドレス９２によって特定される。メインＣＰＵ２０は、非スリープ状態からスリープ状態に移行する際に、オブジェクトデータテーブルを参照して、各ＯＩＤ６４に対応するアドレス６６を登録する。具体的には、メインＣＰＵ２０は、オブジェクトデータテーブルから、各ＯＩＤ６４（例えばＯＩＤ「Ｙ．Ｙ．Ｙ」）と一致するＯＩＤに対応するオブジェクトデータ（例えば「警告あり」または「警告なし」）を取得する。次いで、メインＣＰＵ２０は、取得したオブジェクトデータ（例えば「警告あり」）と一致するオブジェクトデータのアドレス９２（例えばアドレス「２２２２」）を、ＭＩＢデータ格納領域９０から特定する。そして、メインＣＰＵ２０は、特定したアドレス９２を、ＯＩＤテーブル６２のＯＩＤ６４（例えばＯＩＤ「Ｙ．Ｙ．Ｙ」）に対応するアドレス６６として登録する。
【００２９】
サブＣＰＵ３０は、上記の要求パケットに対する応答処理を実行する場合に、要求パケットで指定されたＯＩＤ（例えばＯＩＤ「Ｙ．Ｙ．Ｙ」）に対応するアドレス６６（例えばアドレス「２２２２」）を、ＯＩＤテーブル６２から取得する。次いで、サブＣＰＵ３０は、ＭＩＢデータ格納領域９０内から、取得したアドレス６６によって特定されるオブジェクトデータ９４（例えば「警告あり」）を取得する。サブＣＰＵ３０は、ＯＩＤと取得したオブジェクトデータとが対応付けられた応答パケットを、要求パケットの送信元のデバイス（例えば外部装置６）に送信する。
【００３０】
ネットワークインターフェイス１０２は、ＬＡＮ４に接続されている。ネットワークインターフェイス１０２は、ＬＡＮ４を介して受信したパケットを、ＭＡＣコントローラ７２に供給する。エンジン制御回路１１０は、メインＣＰＵ２０からの指示に従って、インクジェット方式、レーザ方式等のプリンタエンジン１１２を制御する。パネル制御回路１２０は、メインＣＰＵ２０からの指示に従って、表示パネル１２２を制御する。表示パネル１２２は、ＬＣＤである。パネル制御回路１２０は、表示パネル１２２のバックライトをＯＮ状態とＯＦＦ状態との間で移行させる。各制御回路１１０，１２０には、図示省略されたクロック回路からクロック信号が供給される。各制御回路１１０，１２０にクロック信号が供給されている間、各制御回路１１０，１２０は動作状態である。各制御回路１１０，１２０へのクロック信号の供給が停止されると、各制御回路１１０，１２０は停止状態となる。これにより、各制御回路１１０，１２０の消費電力を低減させることができる。各制御回路１１０，１２０のためのクロック回路は、メインＣＰＵ２０によって制御される。
【００３１】
（プリンタの状態移行）
図２に示すように、プリンタ１０は、処理状態３０２と待機状態３０４とＬスリープ状態３０６とＤスリープ状態３０８との間で状態が移行する。図３は、プリンタ１０が各状態３０２〜３０８である場合に、２個のＣＰＵ２０，３０、２個のＲＡＭ６０，１００、表示パネル１２２、及び、２個の制御回路１１０，１２０の状態を表わす。プリンタ１０の電源がＯＮされると、プリンタ１０は、待機状態３０４となる。図３に示すように、待機状態３０４では、２個のＣＰＵ２０，３０には、クロックが供給される。即ち、待機状態３０４では、２個のＣＰＵ２０，３０は、非スリープ状態である。また、待機状態３０４では、２個のＲＡＭ６０，１００は通常動作モードであり、表示パネル１２２はＯＮ状態であり、２個の制御回路１１０，１２０にはクロックが供給されている。
【００３２】
プリンタ１０が待機状態３０４であり、かつ、通常の処理を実行すべき場合に、プリンタ１０は、処理状態３０２に移行する。なお、上記の通常の処理は、印刷指示パケットに応じて実行される印刷処理、ユーザによって表示パネル１２２の操作が為された場合に実行される表示処理等を含む。図３に示すように、処理状態３０２の場合の各部２０，３０等の状態は、待機状態３０４の場合と同様である。処理状態３０２と待機状態３０４との相違点は、メインＣＰＵ２０が上記の通常の処理を実行しているか否かである。メインＣＰＵ２０が上記の通常の処理を終了すると、プリンタ１０は、待機状態３０４に移行する。
【００３３】
プリンタ１０が待機状態３０４に移行すると、タイマ５０は、初期値からカウントダウンを実行する。タイマ５０のカウント値が「０」になると、タイマ５０は、メイン用割込コントローラ２６を介して、メインＣＰＵ２０にタイマ割込要求信号を供給する。この結果、メインＣＰＵ２０は、表示パネル１２２のバックライトをＯＦＦ状態にするように、パネル制御回路１２０に指示する。また、メインＣＰＵ２０は、エンジン制御回路１１０とパネル制御回路１２０へのクロック信号を停止することを、２個の制御回路１１０，１２０のためのクロック回路に指示する。これにより、プリンタ１０は、Ｌスリープ状態３０６に移行する。Ｌスリープ状態３０６では、２個のＣＰＵ２０，３０は非スリープ状態であり、２個のＲＡＭ６０，１００は通常動作モードであり、表示パネル１２２のバックライトはＯＦＦ状態であり、２個の制御回路１１０，１２０は停止状態である。これにより、２個の制御回路１１０，１２０及び表示パネル１２２で消費される電力を低減させることができる。Ｌスリープ状態３０６において、メインＣＰＵ２０が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、プリンタ１０は、処理状態３０２に移行する。この際に、メインＣＰＵ２０は、タイマ５０のカウント値を初期値に戻すための指示をタイマ５０に供給する。これにより、処理状態３０２を終えて待機状態３０４に再び移行すると、タイマ５０は、初期値からカウントダウンを再び実行する。
【００３４】
プリンタ１０は、メインＣＰＵ２０が図５の処理を実行することによって、Ｌスリープ状態３０６からＤスリープ状態３０８に移行する。Ｄスリープ状態３０８では、メインＣＰＵ２０はスリープ状態であり、サブＣＰＵ３０は非スリープ状態であり、ＳＲＡＭ６０は通常動作モードであり、ＳＤＲＡＭ１００はセルフリフレッシュモードであり、表示パネル１２２のバックライトはＯＦＦ状態であり、２個の制御回路１１０，１２０は停止状態である。Ｄスリープ状態３０８において、メインＣＰＵ２０が上記の通常の処理（印刷処理、表示処理等）を実行すべき場合には、プリンタ１０は、Ｌスリープ状態３０６を経て処理状態３０２に移行する。また、Ｄスリープ状態３０８の間に受信されるパケットに対する応答処理をメインＣＰＵ２０が実行すべき場合には、プリンタ１０は、Ｌスリープ状態３０６に移行する。
【００３５】
（プリンタが受信するパケットの構成）
次いで、プリンタ１０がＬＡＮ４を介して受信するパケットの一例の構成を説明する。ここで説明する一例のパケット２００は、図４に示すように、ＮｅｔＢＩＯＳ−ＮＳ（Network Basic Input-Output System - Name Service）と、ＳＮＭＰ（Simple Network Management Protocol）と、のいずれかのパケットである。パケット２００は、イーサネット（登録商標）ヘッダ２１０と、ＩＰｖ４ヘッダ２２０と、ＵＤＰ（User Datagram Protocol）ヘッダ２３０と、アプリケーションデータ２４０と、を含む。イーサネット（登録商標）ヘッダ２１０内の各情報（例えばタイプ／フレーム長２１２等）は、ＴＣＰ／ＩＰモデルの最下位のレイヤであるネットワークインターフェイス層で処理されるべき情報である。ＩＰｖ４ヘッダ２２０内の各情報（例えばバージョン２２１、ヘッダ長２２２等）は、ネットワークインターフェイス層よりも１段階上位のレイヤであるインターネット層で処理されるべき情報である。ＵＤＰヘッダ２３０内の各情報（例えば宛先ポート２３２、チェックサム２３４等）は、インターネット層よりも１段階上位のレイヤであるトランスポート層で処理されるべき情報である。アプリケーションデータ２４０内の各情報は、トランスポート層よりも１段階上位のレイヤであるアプリケーション層で処理されるべき情報である。なお、アプリケーション層は、ＴＣＰ／ＩＰモデルの最上位のレイヤである。
【００３６】
パケット２００がＮｅｔＢＩＯＳ−ＮＳのパケットである場合と、パケット２００がＳＮＭＰのパケットである場合とでは、アプリケーションデータ２４０内の情報の内容が異なる。例えば、パケット２００がＮｅｔＢＩＯＳ−ＮＳのパケットである場合には、アプリケーションデータ２４０は、ＱＤＣＯＵＮＴ２４１、ＡＮＣＯＵＮＴ２４２等を含む。パケット２００がＳＮＭＰのパケットである場合には、アプリケーションデータ２４０は、ＳＮＭＰバージョン２５１、コミュニティ名２５２等を含む。
【００３７】
（メインＣＰＵが実行する処理）
次いで、メインＣＰＵ２０が実行する処理の内容について説明する。メインＣＰＵ２０は、プリンタ１０の電源がＯＮにされると、フラッシュメモリ８０内の基本プログラム８４に従って、図５の処理を実行する。プリンタ１０の電源がＯＮされた時点では、プリンタ１０は待機状態３０４である。即ち、プリンタ１０の電源がＯＮされると、タイマ用クロック回路５２は、タイマ５０にクロック信号を供給する。
【００３８】
メインＣＰＵ２０は、パケットを受信することを監視している（Ｓ１２）。具体的には、メインＣＰＵ２０は、ＭＡＣコントローラ７２から、メイン用割込コントローラ２６を介して、パケット割込要求信号が供給されることを監視している。ここでＹＥＳの場合にＳ１４に進み、ＮＯの場合にＳ１７に進む。なお、Ｓ１２でＹＥＳの場合、メインＣＰＵ２０は、Ｓ１２で受信したパケットを、ＳＤＲＡＭ１００に格納する。
【００３９】
Ｓ１２で受信したパケットが図４のパケット２００である場合を例にして、Ｓ１４の処理について説明する。パケット解析部２２は、最初に、最も下位のレイヤであるネットワークインターフェイス層で処理されるべきイーサネット（登録商標）ヘッダ２１０を用いて、インターネット層で処理されるべきヘッダのプロトコルを特定する。次いで、パケット解析部２２は、インターネット層で処理されるべきＩＰｖ４ヘッダ２２０を用いて、ＩＰｖ４ヘッダ判断処理とＩＰｖ４ヘッダ妥当性確認処理とを含む処理を実行する。ＩＰｖ４ヘッダ判断処理は、ＩＰｖ４ヘッダ２２０に含まれる宛先ＩＰアドレス２２８を用いて、パケット２００が、プリンタ１０が処理すべきパケットであるのか否かを判断する処理を含む。例えば、宛先ＩＰアドレス２２８が、プリンタ１０のＩＰアドレス、ブロードキャストアドレス、及び、マルチキャストアドレスの３種類のＩＰアドレスのうちのいずれかである場合には、パケット解析部２２は、パケット２００が、プリンタ１０が処理すべきパケットであると判断する。宛先ＩＰアドレス２２８が、上記の３種類のＩＰアドレスのいずれでもない場合（例えば、宛先ＩＰアドレス２２８が、他のデバイスのＩＰアドレスである場合）には、パケット解析部２２は、プリンタ１０が応答処理を実行すべきパケットでないと判断する。ＩＰｖ４ヘッダ妥当性確認処理は、ヘッダ長２２２、データグラム長２２３、及び、ヘッダチェックサム２２６を用いて、パケット２００が妥当である（正常である）のか否かを確認する処理を含む。
【００４０】
ＩＰｖ４ヘッダ判断処理で、パケット２００がプリンタ１０が処理すべきパケットであると判断され、かつ、ＩＰｖ４ヘッダ妥当性確認処理で、パケット２００が妥当であると確認された場合に、パケット解析部２２は、トランスポート層で処理されるべきＵＤＰヘッダ２３０を用いて、ＵＤＰヘッダ判断処理とＵＤＰヘッダ妥当性確認処理とを含む処理を実行する。ＵＤＰヘッダ判断処理は、ＵＤＰヘッダ２３０に含まれる宛先ポート２３２を用いて、パケット２００が、プリンタ１０が処理すべきパケットであるのか否かを判断する処理を含む。例えば、宛先ポート２３２が、所定のポート番号の範囲内の番号でない場合には、パケット２００が、プリンタ１０が処理すべきパケットでないと判断される。ＵＤＰヘッダ妥当性確認処理は、チェックサム２３４を用いて、パケット２００が妥当であるのか否かを確認する処理を含む。
【００４１】
ＵＤＰヘッダ判断処理で、パケット２００がプリンタ１０が処理すべきパケットであると判断され、かつ、ＵＤＰヘッダ妥当性確認処理で、パケット２００が妥当であると確認された場合に、パケット解析部２２は、アプリケーション層で処理されるべきアプリケーションデータ２４０を用いて、パケット２００に対する応答処理を実行する。なお、パケット２００が、ＮｅｔＢＩＯＳ−ＮＳのパケットである場合には、パケット解析部２２は、ＱＵＥＳＴＩＯＮ＿ＮＡＭＥ２４６を用いて、パケット２００が妥当であるのか否かを確認する処理を実行する。
【００４２】
上記の説明から明らかなように、パケット解析部２２は、メインＣＰＵ２０が非スリープ状態である間にＬＡＮ４を介して受信されたパケット２００のうち、下位のレイヤ（即ちインターネット層）で処理されるべき情報（即ちＩＰｖ４ヘッダ２２０）を用いて、パケット２００がプリンタ１０が処理すべきパケットであるか否かの判断処理とパケット２００が妥当であるのか否かの確認処理とを含む処理を実行し、その後に、上位のレイヤ（即ちトランスポート層）で処理されるべき情報（即ちＵＤＰヘッダ２３０）を用いて、判断処理と確認処理とを含む処理を実行する。
【００４３】
次いで、メインＣＰＵ２０は、Ｓ１２で受信したパケットが、プリンタ１０が応答処理を実行すべきパケットであると判断され、かつ、Ｓ１２で受信したパケットが、妥当なパケットであると確認されたのか否かを判断する（Ｓ１５）。ここでＮＯの場合、メインＣＰＵ２０は、Ｓ１２で受信したパケットを破棄して、Ｓ１７に進む。一方、Ｓ１５でＹＥＳの場合、第２応答実行部２４は、Ｓ１２で受信したパケットに対する応答処理を実行する（Ｓ１６）。例えば、Ｓ１２で受信したパケットがオブジェクトデータの要求パケットである場合、メインＣＰＵ２０は、ＳＤＲＡＭ１００に格納されているオブジェクトデータのうち、パケットに含まれるＯＩＤに対応付けて登録されているオブジェクトデータを含む応答パケットを、Ｓ１２で受信したパケットの送信元のデバイスに送信する。
【００４４】
Ｓ１７では、メインＣＰＵ２０は、プリンタ１０の待機状態３０４が所定時間継続したのか否かを判断する。具体的には、メインＣＰＵ２０は、タイマ５０から、メイン用割込コントローラ２６を介して、タイマ割込要求信号が供給されたのか否かを判断する。ここでＹＥＳの場合にＳ１８に進み、ＮＯの場合にＳ１２に戻る。Ｓ１８では、メインＣＰＵ２０は、表示パネル１２２のバックライトをＯＦＦにするように、パネル制御回路１２０に指示する。次いで、メインＣＰＵ２０は、エンジン制御回路１１０とパネル制御回路１２０とに供給されるクロック信号を停止する（Ｓ２０）。これにより、プリンタ１０は、Ｌスリープ状態３０６になる。
【００４５】
次いで、メインＣＰＵ２０は、プリンタ１０がＬスリープ状態３０６であるのか否かを判断する（Ｓ２１）。具体的には、メインＣＰＵ２０は、タイマ５０のカウント値が「０」である場合に、プリンタ１０がＬスリープ状態３０６であると判断し、タイマ５０のカウント値が「０」以外の値である場合に、プリンタ１０がＬスリープ状態３０６でないと判断する。Ｓ２１でＮＯの場合には、メインＣＰＵ２０は、Ｓ２２でプリンタ１０を処理状態３０２に移行させて（即ち、表示パネル１２２のバックライトの電源をＯＮにし、各制御回路１１０，１２０にクロックを供給する）、Ｓ１２に戻る。
【００４６】
Ｓ２１でＹＥＳの場合には、メインＣＰＵ２０は、プリンタ１０からパケットが送信されている状態であるのか否かを判断する（Ｓ２３）。例えば、メインＣＰＵ２０が外部装置６等からのパケットに対する応答を返信している途中の場合には、Ｓ２３でＹＥＳと判断され、Ｓ３０に進む。一方において、Ｓ２３でＮＯの場合、メインＣＰＵ２０は、未処理パケットがＳＤＲＡＭ１００に格納されているか否かを判断する（Ｓ２４）。Ｓ２４でＹＥＳの場合には、メインＣＰＵ２０は、未処理パケットに対する処理を実行し（Ｓ２６）、Ｓ２１に戻る。Ｓ２６の処理は、上記のＳ１４〜Ｓ１６の処理を含む。なお、Ｓ２６で処理されるパケットは、メインＣＰＵ２０が非スリープ状態である間に受信されて、ＳＤＲＡＭ１００に格納されたパケットと、メインＣＰＵ２０がスリープ状態である間に受信されて、ＳＲＡＭ６０に格納された特定のパケットと、を含む。なお、この特定のパケットは、後述の図６のＳ７２の処理によって、ＳＲＡＭ６０からＳＤＲＡＭ１００に移動される。また、特定のパケットが、プリンタ１０が処理状態３０２で処理すべきパケット（例えば印刷指示パケット）である場合には、メインＣＰＵ２０は、タイマ５０のカウント値を初期値に戻す。この結果、Ｓ２１でＮＯと判断され、プリンタ１０は、処理状態３０２に移行する。
【００４７】
Ｓ２４でＮＯの場合には、メインＣＰＵ２０は、プリンタ１０に接続中のデバイス（例えば外部装置６）があるのか否かを判断する（Ｓ２８）。例えば、プリンタ１０がＷｅｂサーバ機能を有しており、外部装置６がプリンタ１０のＷｅｂサーバにＴＣＰ接続中である場合に、Ｓ２８でＹＥＳと判断される。Ｓ２３又はＳ２８でＹＥＳの場合には、ＭＡＣコントローラ７２はパケット送信やＴＣＰ接続のための処理を実行中であるが、メインＣＰＵ２０はパケット送信やＴＣＰ接続のための処理を実行していないため、メインＣＰＵ２０は、ＷＡＩＴ命令を実行する（Ｓ３０）。ＷＡＩＴ命令が実行されると、メインＣＰＵ２０は、割込要求信号が供給されるまで待機する実行停止状態となる。これにより、メインＣＰＵ２０の消費電力を低減させることができる。メインＣＰＵ２０は、Ｓ３０において割込要求信号が供給されると、Ｓ２１に戻る。なお、メインＣＰＵ２０は、パケット送信の終了時や、ＴＣＰ接続の終了時に、ＭＡＣコントローラ７２から割込要求信号を受け取る。
【００４８】
Ｓ３２では、メインＣＰＵ２０は、ＬＡＮ４を介して受信されるパケットを格納するためのＲＡＭを、ＳＤＲＡＭ１００からＳＲＡＭ６０に切り替える。Ｓ３２では、さらに、メインＣＰＵ２０は、サブＣＰＵ３０がメインＣＰＵ２０に代理して応答処理を実行するために必要な情報（例えばプリンタ１０のＩＰアドレス、ＭＡＣアドレス、ノード名等）を、ＳＲＡＭ６０に格納する。続いて、メインＣＰＵ２０は、サブＣＰＵ３０以外からの割込要求をマスク（禁止）する（Ｓ３４）。次いで、メインＣＰＵ２０は、サブＣＰＵ３０に処理を開始させるための開始割込要求信号を、サブ用割込コントローラ３８を介して、サブＣＰＵ３０に供給する（Ｓ３６）。
【００４９】
さらに、メインＣＰＵ２０は、上記したように、ＳＤＲＡＭ１００に格納されているＭＩＢオブジェクトデータテーブルに従って、ＳＲＡＭ６０のＯＩＤテーブル６２のアドレス６６を更新する。次いで、メインＣＰＵ２０は、ＷＡＩＴ命令を実行する（Ｓ３８）。ＷＡＩＴ命令が実行されると、メインＣＰＵ２０は、割込要求信号が供給されるまで待機する実行停止状態となる。メインＣＰＵ２０は、Ｓ３８においてサブＣＰＵ３０から割込要求信号が供給される（後述の図６のＳ７６参照）と、Ｓ４０に進む。Ｓ４０では、メインＣＰＵ２０は、ＳＲＡＭ６０に格納されている上記の特定のパケット（即ちＤスリープ状態３０８中に受信された未処理パケット）を、ＳＤＲＡＭ１００に移動させる。次いで、メインＣＰＵ２０は、Ｓ３４で実行したマスクを解除して（Ｓ４２）、Ｓ２１に戻る。
【００５０】
（サブＣＰＵが実行する処理）
続いて、サブＣＰＵ３０が実行する処理の内容を説明する。図６の処理は、プリンタ１０の電源がＯＮにされると開始される。サブＣＰＵ３０は、フラッシュメモリ８０に格納されている各プログラム８４，８６、及び、ＳＲＡＭ６０に格納されている判断処理プログラム６８に従って、以下の処理を実行する。詳しくは、サブＣＰＵ３０は、基本プログラム８４に従って、Ｓ５２〜Ｓ５６、Ｓ６６〜Ｓ７６の処理を実行する。サブＣＰＵ３０は、判断処理用プログラム６８に従ってＳ５８〜Ｓ６２の処理を実行し、確認処理用プログラム８６に従ってＳ６４の処理を実行する。
【００５１】
プリンタ１０の電源がＯＮされると、サブＣＰＵ３０は、ＷＡＩＴ命令を実行して、割込要求信号が供給されるまで待機する（Ｓ５２）。上述したように、メインＣＰＵ２０は、図５のＳ３６で、サブＣＰＵ３０に開始割込要求信号を供給する。この場合、Ｓ５２でＹＥＳと判断される。Ｓ５２でＹＥＳの場合、サブＣＰＵ３０は、メイン用クロック回路２８（図１参照）にクロック供給の停止を指示する（Ｓ５４）。この結果、メインＣＰＵ２０は、非スリープ状態からスリープ状態に移行する。続いて、サブＣＰＵ３０は、ＳＤＲＡＭ１００を通常動作モードからセルフリフレッシュモードに移行させる（Ｓ５６）。この結果、プリンタ１０は、Ｄスリープ状態３０８となる。なお、ＳＤＲＡＭ１００がセルフリフレッシュモードである間は、プリンタ１０が受信したパケットをＳＤＲＡＭ１００に格納することができない。次いで、サブＣＰＵ３０は、パケットを受信することを監視する（Ｓ５８）。具体的には、サブＣＰＵ３０は、ＭＡＣコントローラ７２から、サブ用割込コントローラ３８を介して、パケット割込要求信号が供給されることを監視する。
【００５２】
ＭＡＣコントローラ７２からパケット割込要求信号が供給されると、サブＣＰＵ３０は、受信したパケットをＳＲＡＭ６０に格納する。次いで、判断部３２は、ＳＲＡＭ６０に格納された判断処理用プログラム６８に従って、パケット判断処理（図７〜９）を実行する（Ｓ６０）。次いで、サブＣＰＵ３０は、ＳＲＡＭ６０に格納されている動作指定変数が「０」であるのか否かを判断する（Ｓ６２）。詳しくは後述するが、Ｓ６０のパケット判断処理において、Ｓ５８で受信したパケットが、プリンタ１０が応答処理を実行すべきパケットでないと判断される場合には、Ｓ６０で動作指定変数が「０」になる。なお、動作指定変数は、Ｓ５８で受信したパケットが、応答処理を実行すべきでないパケット（破棄すべきパケット）であるのか否かを示す変数である。また、Ｓ５８で受信したパケットが、応答処理を実行すべきパケット（破棄すべきでないパケット）である場合、動作指定変数は、サブＣＰＵ３０が処理すべきであるのか、メインＣＰＵ２０が処理すべきであるのかを示す変数である。Ｓ６２でＹＥＳの場合には、サブＣＰＵ３０は、Ｓ５８で受信したパケットを破棄して、Ｓ５８に戻る。Ｓ６２でＮＯの場合には、確認部３４は、フラッシュメモリ８０に格納された確認用処理プログラム８６に従って、パケット妥当性確認処理（図１０）を実行する（Ｓ６４）。次いで、サブＣＰＵ３０は、ＳＲＡＭ６０に格納されている動作指定変数が「０」であるのか否かを判断する（Ｓ６６）。詳しくは後述するが、Ｓ６４の妥当性確認処理において、Ｓ５８で受信したパケットが妥当（正常）でないと確認される場合には、Ｓ６４で動作指定変数が「０」になる。Ｓ６６でＹＥＳの場合には、サブＣＰＵ３０は、Ｓ５８で受信したパケットを破棄して、Ｓ５８に戻る。
【００５３】
Ｓ６６でＮＯの場合には、サブＣＰＵ３０は、ＳＲＡＭ６０に格納されている動作指定変数が「３」であるのか否かを判断する（Ｓ６８）。詳しくは後述するが、動作指定変数が「３」である場合とは、Ｓ６０のパケット判断処理において、Ｓ５８で受信したパケットが、メインＣＰＵ２０が応答処理を実行すべきパケットであると判断された場合である。Ｓ６８でＮＯの場合には、サブＣＰＵ３０の第１応答実行部３６は、動作指定変数の値に応じて、Ｓ５８で受信したパケットに対する応答処理を実行する（Ｓ７０）。
【００５４】
Ｓ７２では、サブＣＰＵ３０は、ＳＤＲＡＭ１００のモード移行処理を実行する。モード移行処理は、ＳＤＲＡＭ１００をセルフリフレッシュモードから通常動作モードに移行させる移行処理と、ＬＡＮ４を介して受信されるパケットを格納するＲＡＭをＳＲＡＭ６０からＳＤＲＡＭ１００に切り替える切替処理と、を含む。次いで、サブＣＰＵ３０は、メイン用クロック回路２６（図１参照）に、メインＣＰＵ２０にクロック供給を開始するよう指示する（Ｓ７４）。この結果、メインＣＰＵ２０にクロックが供給され、メインＣＰＵ２０がスリープ状態から非スリープ状態に移行する。サブＣＰＵ３０は、メイン用割込コントローラ２６を介して、メインＣＰＵ２０に開始割込要求信号を供給する（Ｓ７６）。この結果、図５のＳ３８のＷＡＩＴ命令が解除され、メインＣＰＵ２０は、Ｓ４０の処理を開始する。
【００５５】
（サブＣＰＵが実行するパケット判断処理）
次いで、図６のＳ６０のパケット判断処理について説明する。図７に示すように、判断部３２は、ＳＲＡＭ６０に格納されている動作指定変数を「０」にし、パケット解析結果フラグ（即ちＩＰｖ４フラグ及びＵＤＰフラグ）をＯＦＦにする（Ｓ８２）。なお、ＩＰｖ４フラグは、インターネット層で処理されるべきヘッダがＩＰｖ４ヘッダであるのか否かを示すフラグである。ＵＤＰフラグは、トランスポート層で処理されるべきヘッダがＵＤＰヘッダであるのか否かを示すフラグである。次いで、判断部３２は、イーサネット（登録商標）ヘッダ２１０（図４）内のタイプ／フレーム長２１２に含まれるＥｔｈｅｒｎｅｔ（登録商標）  Ｔｙｐｅが「０ｘ０８００」であるのか否かを判断する（Ｓ８４）。Ｅｔｈｅｒｎｅｔ（登録商標）  Ｔｙｐｅが「０ｘ０８００」である場合とは、インターネット層で処理されるべきヘッダが、ＩＰｖ４ヘッダであることを示す。ここでＹＥＳの場合にＳ８８に進み、ＮＯの場合にＳ８６に進む。Ｓ８６では、判断部３２は、インターネット層で処理されるべきヘッダの種類に応じたパケット判断処理を実行して、パケット判断処理を終了する。例えば、Ｅｔｈｅｒｎｅｔ（登録商標）  Ｔｙｐｅが「０ｘ０８０６」である場合には、Ｓ８６において、判断部３２は、インターネット層で処理されるべきヘッダが、ＡＲＰ（Address Resolution Protocol）ヘッダである場合のパケット判断処理を実行する。
【００５６】
Ｓ８８では、判断部３２は、ＩＰｖ４ヘッダ２２０内の宛先ＩＰアドレス２２８が、プリンタ１０が処理すべきパケットのＩＰアドレスであるのか否かを判断する。具体的には、判断部３２は、宛先ＩＰアドレス２２８が、上記の３種類のＩＰアドレスのいずれかである場合には、プリンタ１０が応答処理を実行すべきパケットであると判断し、上記の３種類のＩＰアドレスに該当しない場合に、プリンタ１０が応答処理を実行すべきパケットでないと判断する。ここでＹＥＳの場合にＳ９０に進み、ＮＯの場合にパケット判断処理を終了する。Ｓ９０では、判断部３２は、ＩＰｖ４ヘッダ２２０内のフラグメントオフセット２２４と、フラグ２２９と、を用いて、フラグメント化されたパケットであるのか否かを判断する。具体的には、判断部３２は、フラグメントオフセット２２４及びフラグ２２９の値が「０」であるのか否かを判断し、フラグメントオフセット２２４及びフラグ２２９のいずれかの値が「０」以外の場合にフラグメント化されたパケットである（Ｓ９０でＹＥＳ）と判断する。ここでＹＥＳの場合にＳ９２に進み、ＮＯの場合にＳ９４に進む。Ｓ９２では、判断部３２は、動作指定変数を、Ｄスリープ状態３０２を解除することを示す「３」に変更して、パケット判断処理を終了する。フラグメント化されたパケットの応答処理は複雑であるため、メインＣＰＵ２０が応答処理を実行することが好ましいからである。
【００５７】
Ｓ９４では、判断部３２は、ＩＰｖ４フラグをＯＮにする。次いで、判断部３２は、ＩＰｖ４ヘッダ２２０内のプロトコル番号２２５の値が「１７」であるのか否かを判断する（Ｓ９６）。プロトコル番号２２５の値が「１７」である場合とはトランスポート層で処理されるべきヘッダが、ＵＤＰヘッダであることを示す。ここでＹＥＳの場合にＳ１００に進み、ＮＯの場合にＳ９８に進む。Ｓ９８では、判断部３２は、トランスポート層で処理されるべきヘッダの種類に応じたパケット判断処理を実行して、パケット判断処理を終了する。例えば、プロトコル番号が「６」の場合には、Ｓ９８において、判断部３２は、トランスポート層で処理されるべきヘッダが、ＴＣＰヘッダである場合のパケット判断処理を実行する。
【００５８】
Ｓ１００では、判断部３２は、ＵＤＰフラグをＯＮにする。次いで、判断部３２は、ＵＤＰヘッダ２３０内の宛先ポート２３２の値が「１６１」であるのか否かを判断する（Ｓ１０２）。宛先ポート２３２の値が「１６１」である場合とは、アプリケーション層で処理されるべきアプリケーションデータ２４０が、ＳＮＭＰのデータであることを示す。ここでＹＥＳの場合にＳ１０３に進み、ＮＯの場合にＳ１０４に進む。Ｓ１０３では、判断部３２は、ＳＮＭＰパケット処理を実行する。Ｓ１０４では、ＵＤＰヘッダ２３０内の宛先ポート２３２の値が「１３７」であるのか否かを判断する。宛先ポート２３２の値が「１３７」である場合とは、アプリケーションデータ２４０が、ＮｅｔＢＩＯＳ−ＮＳのデータであることを示す。ここでＹＥＳの場合にＳ１０８に進み、ＮＯの場合にＳ１０６に進む。Ｓ１０６では、判断部３２は、アプリケーションデータ２４０の種類に応じたパケット判断処理を実行して、パケット判断処理を終了する。例えば、宛先ポート２３２の値が「１３８」の場合には、Ｓ１０６において、判断部３２は、アプリケーションデータ２４０が、ＮｅｔＢＩＯＳ  Ｄａｔａｇｒａｍ  Ｓｅｒｖｉｃｅである場合のパケット判断処理を実行する。なお、Ｓ１０６において、判断部３２は、宛先ポート２３２の値が、プリンタ１０がサポートしていないポート番号である場合には、図６のＳ５８で受信したパケットがプリンタ１０で処理すべきパケットでないと判断して、パケット判断処理を終了する。
【００５９】
Ｓ１０８では、判断部３２は、アプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＮＡＭＥ２４６がプリンタ１０宛のホスト名であるのか否かを判断する。ここでＹＥＳの場合、判断部３２は、ＮｅｔＢＩＯＳ−ＮＳパケット処理を実行する（Ｓ１１０）。一方、ここでＮＯの場合に、判断部３２は、図６のＳ５８で受信したパケットがプリンタ１０で処理すべきパケットでないと判断して、パケット判断処理を終了する。なお、Ｓ８８、Ｓ１０６又はＳ１０８において、図６のＳ５８で受信したパケットがプリンタ１０で処理すべきパケットでないと判断された場合、動作指定変数は「０」である。この場合、図６のＳ６２でＹＥＳと判断され、Ｓ６４のパケット妥当性処理確認処理は実行されない。
【００６０】
（ＳＮＭＰパケット処理）
次いで、図７のＳ１０３で実行されるＳＮＭＰパケット処理について説明する。図８に示すように、判断部３２は、アプリケーションデータ２４０内のＳＮＭＰバージョン２５１（図４参照）の値が「０」（即ちＳＮＭＰｖ１）であるのか否かを判断する（Ｓ１１２）。ここでＹＥＳの場合にＳ１１４に進み、ＮＯの場合にＳ１２２に進む。Ｓ１１４では、判断部３２は、コミュニティ名２５２（図４参照）がプリンタ１０のコミュニティ名と一致するのか否かを判断する。ここでＹＥＳの場合にＳ１１６に進み、ＮＯの場合にＳＮＭＰパケット処理を終了する。コミュニティ名２５２がプリンタ１０のコミュニティ名と一致しない場合には、プリンタ１０は、図６のＳ５８で受信したパケットに対する応答処理を実行すべきでないからである。Ｓ１１６では、判断部３２は、ＰＤＵタイプ２５４（図４参照）は、ＧＥＴリクエスト（GetRequest）であるのか否かを判断する。ここでＹＥＳの場合にＳ１１８に進み、ＮＯの場合にＳ１２２に進む。
【００６１】
Ｓ１１８では、判断部３２は、オブジェクトデータ２５６（図４参照）に含まれる第１〜第Ｎ（Ｎは１以上の整数）のＯＩＤを取得する。次いで、判断部３２は、プリンタ１０がＤスリープ状態３０８を維持した状態（即ちメインＣＰＵ２０をスリープ状態に維持した状態）で、図６のＳ５８で受信したパケットに対する応答処理を実行することが可能であるのか否かを判断する（Ｓ１２０）。具体的には、判断部３２は、Ｓ１１８で取得した１個以上のＯＩＤのそれぞれについて、当該ＯＩＤと一致するＯＩＤ６４がＯＩＤテーブル６２に登録されているのか否かを判断する。判断部３２は、Ｓ１１８で取得した１個以上のＯＩＤの全てが、ＯＩＤテーブル６２に登録されている場合に、Ｓ１２０でＹＥＳと判断する。一方、判断部３２は、Ｓ１１８で取得した１個以上のＯＩＤのうちの少なくとも１個のＯＩＤと一致するＯＩＤが、ＯＩＤテーブル６２に登録されていない場合に、Ｓ１２０でＮＯと判断する。この場合、サブＣＰＵ３０は、図６のＳ５８で受信したパケットに対する応答処理を実行することができないからである。Ｓ１２０でＹＥＳの場合にＳ１２４に進み、ＮＯの場合にＳ１２２に進む。
【００６２】
Ｓ１２２では、判断部３２は、動作指定変数を「３」（Ｄスリープ状態の解除を示す）に変更して、ＳＮＭＰパケット処理を終了する。即ち、Ｓ１１２、Ｓ１１６及びＳ１２０でＮＯの場合には、判断部３２は、メインＣＰＵ２０が、図６のＳ５８で受信したパケットに対応する応答処理を実行すべきであると判断する。この結果、図６のＳ６４、Ｓ６６の処理を経て、メインＣＰＵ２０は、スリープ状態から非スリープ状態（図６のＳ１００参照）に移行される。Ｓ１２４では、判断部３２は、動作指定変数を「１」（ＳＭＮＰ  ＧＥＴ応答を示す）に変更して、ＳＮＭＰパケット処理を終了する。動作指定変数が「１」である場合には、図６のＳ７０では、第１応答実行部３６は、ＧｅｔＲｅｑｕｅｓｔパケットに対する応答処理として、まず、Ｓ１１８で取得されたＯＩＤに対応するアドレスを、ＯＩＤテーブル６２から取得する。次いで、第１応答実行部３６は、取得されたアドレスに対応するオブジェクトデータを、フラッシュメモリ８０に格納されているＭＩＢデータ格納領域９０から取得する。続いて、第１応答実行部３６は、ＯＩＤと取得したオブジェクトデータとが対応付けられた応答パケットを、ＧｅｔＲｅｑｕｅｓｔパケットの送信元に向けて、送信する。
【００６３】
（ＮｅｔＢＩＯＳ−ＮＳパケット処理）
次いで、図７のＳ１１０のＮｅｔＢＩＯＳ−ＮＳパケット処理ついて説明する。図９に示すように、判断部３２は、図６のＳ５８で受信したパケットのアプリケーションデータ２４０内のＱＤＣＯＵＮＴ２４１（図４参照）の値が「１」であるのか否かを判断する（Ｓ１３２）。なお、ＱＤＣＯＵＮＴ２４１の値が「１」以外のパケットは、当該パケットに対する応答処理を必要としないパケットである。ここでＹＥＳの場合にＳ１３４に進み、ＮＯの場合に処理を終了する。
【００６４】
Ｓ１３４では、判断部３２は、ＡＮＣＯＵＮＴ２４２、ＮＳＣＯＵＮＴ２４３及びＡＲＣＯＵＮＴ２４５（図４参照）の値が全て「０」であるのか否かを判断する。なお、各情報２４２、２４３、２４５のうちの少なくとも１個の値が「０」以外のパケットは、当該パケットに対する応答処理を必要としないパケットである。ここでＹＥＳの場合にＳ１３６に進み、ＮＯの場合に処理を終了する。Ｓ１３６では、判断部３２は、図６のＳ５８で受信したパケットのアプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＣＬＡＳＳ２４８の値がＩＮ（０ｘ０００１）であるのか否かを判断する。なお、ＱＵＥＳＴＩＯＮ  ＣＬＡＳＳ２４８の値がＩＮ（０ｘ０００１）以外のパケットは、当該パケットに対する応答処理を必要としないパケットである。ここでＹＥＳの場合にＳ１３８に進み、ＮＯの場合に処理を終了する。Ｓ１３８では、判断部３２は、図６のＳ５８で受信したパケットのアプリケーションデータ２４０内のオペレーション２４９（ＯＰＣＯＤＥ、ＮＭ＿ＦＬＡＧＳ及びＲＣＯＤＥ）が名前問合せ要求を示す値であるのか否かを判断する。ここでＹＥＳの場合にＳ１４６に進み、ＮＯの場合にＳ１４０に進む。
【００６５】
Ｓ１４０では、判断部３２は、オペレーション２４９が、プリンタ１０のステータス要求を示す値であるのか否かを判断する。なお、オペレーション２４９が、名前問合せ要求を示す値及びステータス要求を示す値以外のパケットは、応答処理を必要としないパケットである。ここでＹＥＳの場合にＳ１４２に進み、ＮＯの場合に処理を終了する。Ｓ１４２では、判断部３２は、図６のＳ５８で受信したパケットのアプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７の値がＮＢＳＴＡＴ（０ｘ００２１）であるのか否かを判断する。なお、ＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７の値がＮＢＳＴＡＴ（０ｘ００２１）以外のパケットは、応答処理を必要としないパケットである。ここでＹＥＳの場合にＳ１４４に進み、ＮＯの場合に処理を終了する。Ｓ１４４では、判断部３２は、動作指定変数を「３」（Ｄスリープ状態の解除を示す）に変更して、処理を終了する。
【００６６】
Ｓ１４６では、ＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７の値がＮＢ（０ｘ００２０）であるのか否かを判断する。なお、ＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７の値がＮＢ（０ｘ００２０）以外のパケットは、応答処理を必要としないパケットである。ここでＹＥＳの場合にＳ１４８に進み、ＮＯの場合に処理を終了する。Ｓ１４８では、判断部３２は、動作指定変数を「２」（ＮｅｔＢＩＯＳ名前問合せを示す）に変更して、処理を終了する。動作指定変数が「２」である場合には、図６のＳ７０において、第１応答実行部３６は、ＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７がＮＢ（０ｘ００２０）のパケットに対する応答処理を実行する。
【００６７】
ＮｅｔＢＩＯＳ−ＮＳパケット処理において、動作指定変数が変更されずに「０」の状態で処理が終了した場合、即ち、Ｓ１３２〜１３６、Ｓ１４０、Ｓ１４２、Ｓ１４６でＮＯと判断された場合、図６のＳ６６でＹＥＳと判断され、サブＣＰＵ３０及びメインＣＰＵ２０は、応答処理を実行しない。
【００６８】
（パケット妥当性確認処理）
次いで、図６のＳ６４のパケット妥当性確認処理について説明する。図１０に示すように、確認部３４（図１参照）は、ＳＲＡＭ６０に格納されているＩＰｖ４フラグがＯＮであるのか否かを確認する（Ｓ２０２）。ここでＹＥＳの場合にＳ２０６に進み、ＮＯの場合にＳ２０４に進む。Ｓ２０４では、確認部３４は、イーサネット（登録商標）ヘッダ２１０のタイプ／フレーム長２１２のＥｔｈｅｒｎｅｔ（登録商標）  ＴｙｐｅがＩＰｖ４以外の場合のパケット妥当性確認処理を実行する。
【００６９】
Ｓ２０６では、確認部３４は、インターネット層で処理されるべきＩＰｖ４ヘッダ２２０内のＩＰバージョン２２１（図４参照）の値が「４」（ＩＰｖ４を示す値）であるのか否かを確認する。即ち、確認部３４は、ＩＰｖ４フラグがＯＮになっている（即ち図７のＳ８４で、Ｅｔｈｅｒｎｅｔ（登録商標）  ＴｙｐｅがＩＰｖ４を示すと判断された）にも関わらず、ＩＰバージョン２２１の値がＩＰｖ４を示す値でないパケットであるのか否かを確認する。ＩＰｖ４フラグがＯＮであり、ＩＰバージョン２２１の値がＩＰｖ４を示す値でない場合には、パケット内で整合性が取れておらず、正常なパケットでないからである。ここでＹＥＳの場合にＳ２０８に進み、ＮＯの場合にＳ２２８に進む。
【００７０】
Ｓ２０８では、確認部３４は、ヘッダ長２２２（図４参照）が２０バイト以上であるのか否かを確認する。ヘッダ長２２２は、ＩＰｖ４ヘッダ２００のヘッダ長を示す。ＩＰｖ４ヘッダ２００に必須の情報が含まれている場合には、ヘッダ長２２２は２０バイト以上になる。即ち、ヘッダ長２２２が２０バイト未満である場合、ＩＰｖ４ヘッダ２００に必須の情報が含まれておらず、正常なパケットでない。ここでＹＥＳの場合にＳ２１０に進み、ＮＯの場合にＳ２２８に進む。Ｓ２１０では、確認部３４は、データグラム長２２３（図４参照）がヘッダ長２２２よりも大きいか否かを確認する。データグラム長２２３は、各ヘッダ２２０、２３０と、アプリケーションデータ２４０と、の合計のサイズを示す。正常なパケットであれば、データグラム長２２３は、ＩＰｖ４ヘッダ２００のヘッダ長よりも長い。ここでＹＥＳの場合にＳ２１２に進み、ＮＯの場合にＳ２２８に進む。
【００７１】
Ｓ２１２では、確認部３４は、図６のＳ５８で受信したパケットのサイズがデータグラム長２２３よりも長いのか否かを判断する。サブＣＰＵ３０は、パケットを受信した際に、パケットのサイズを測定し、ＳＲＡＭ６０に格納しておく。パケットのサイズは、イーサネット（登録商標）ヘッダ２１０からアプリケーションデータ２４０までの合計のサイズである。正常なパケットであれば、パケットのサイズは、データグラム長２２３よりも長い。ここでＹＥＳの場合にＳ２１４に進み、ＮＯの場合にＳ２２８に進む。
【００７２】
Ｓ２１４では、確認部３４は、送信元ＩＰアドレス２２７（図４参照）が妥当であるのか否かを確認する。具体的には、確認部３４は、送信元ＩＰアドレス２２７が、クラスＤ（ＩＰアドレスが最上位の４ビットが「１１１０」）のＩＰアドレス、クラスＥ（ＩＰアドレスが最上位の４ビットが「１１１１」）のＩＰアドレスである場合には、Ｓ２１４でＮＯと判断する。また、確認部３４は、送信元ＩＰアドレス２２７が、デバイス内の通信に用いられるＩＰアドレス（いわゆるループバックアドレス）である場合、ブロードキャストアドレスである場合にも、Ｓ２１４でＮＯと判断する。これらのＩＰアドレスは、他のデバイスと通信するために用いられるＩＰアドレスではないからである。確認部３４は、さらに、送信元ＩＰアドレス２２７が、無視すべきＩＰアドレスとして、プリンタ１０に予め設定されているＩＰアドレスである場合にも、Ｓ２１４でＮＯと判断する。上記した以外のＩＰアドレスの場合にＳ２１４でＹＥＳと判断する。ここでＹＥＳの場合にＳ２１６に進み、ＮＯの場合にＳ２２８に進む。
【００７３】
Ｓ２１６では、確認部３４は、ＩＰｖ４ヘッダ２２０のチェックサムを用いてＩＰｖ４ヘッダの整合性を確認する。例えば、確認部３４は、予め決められた数式を用いて、ＩＰｖ４ヘッダ２２０のチェックサムを算出する。確認部３４は、算出されたチェックサムと、ＩＰｖ４ヘッダ２２０内のヘッダチェックサム２２６とが一致するのか否かを確認する（Ｓ２１８）。一致しない場合、図６のＳ５８で受信したパケットは正常でないことを意味する。ここでＹＥＳの場合にＳ２２０に進み、ＮＯの場合にＳ２２８に進む。
【００７４】
Ｓ２２０では、確認部３４は、ＳＲＡＭ６０内のＵＤＰフラグがＯＮであるのか否かを確認する。ここでＹＥＳの場合（即ちトランスポート層で処理されるべきヘッダがＵＤＰヘッダ２３０である場合）にＳ２２４に進み、ＮＯの場合にＳ２２２に進む。Ｓ２２２では、確認部３４は、ＩＰｖ４ヘッダ２２０内のプロトコル番号２２５がＵＤＰ以外の場合のパケット妥当性確認処理を実行する。
【００７５】
Ｓ２２４では、確認部３４は、ＵＤＰヘッダ２３０のチェックサムを用いてＵＤＰヘッダおよびアプリケーションデータを含むデータの整合性を確認する。例えば、確認部３４は、予め決められた数式を用いて、ＵＤＰヘッダ２３０及びアプリケーションデータ２４０を含む部分のチェックサムを算出する。次に、確認部３４は、算出されたチェックサムと、ＵＤＰヘッダ２３０内のチェックサム２３４と、が一致するのか否かを確認する（Ｓ２２６）一致しない場合、図６のＳ５８で受信したパケットは正常でないことを意味する。ここでＹＥＳの場合にパケット妥当性確認処理を終了し、ＮＯの場合にＳ２２８に進む。Ｓ２２８では、確認部３４は、動作指定変数を「０」に変更して、処理を終了する。この結果、図６のＳ６６でＮＯと判断され、サブＣＰＵ３０及びメインＣＰＵ２０は、図６のＳ５８で受信したパケットに対する応答処理を実行しない。
【００７６】
上記の実施例では、図６のＳ５８で受信したパケットがＳＮＭＰのパケットである場合、図６のＳ６０のパケット判断処理（図７）では、ＩＰｖ４ヘッダ２２０内の宛先ＩＰアドレス２２８、ＵＤＰヘッダ２３０内の宛先ポート２３２等が利用される。そして、その後の図６のＳ６４のパケット妥当性確認処理（図１０）では、ＩＰヘッダ２２０内のヘッダチェックサム２２６、ＵＤＰヘッダ２３０内のチェックサム２３４等が利用される。即ち、上記の実施例では、上位のレイヤ（トランスポート層）で処理されるべきＵＤＰヘッダ２３０内の宛先ポート２３２を用いてパケット判断処理が実行された後に、下位のレイヤ（インターネット層）で処理されるべきＩＰヘッダ２２０内のヘッダチェックサム２２６を用いてパケット妥当性確認処理が実行されている。
【００７７】
また、図６のＳ５８で受信したパケットがＮＥＴＢＩＯＳ−ＮＳのパケットである場合、図６のＳ６０のパケット判断処理（図７）では、ＩＰｖ４ヘッダ２２０内の宛先ＩＰアドレス２２８、ＵＤＰヘッダ２３０内の宛先ポート２３４、アプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＮＡＭＥ２４６等が利用される。そして、その後の図６のＳ６４のパケット妥当性確認処理（図１０）では、ＩＰヘッダ２２０内のヘッダチェックサム２２６、ＵＤＰヘッダ２３０内のチェックサム２３４等が利用される。即ち、上記の実施例では、上位のレイヤ（アプリケーション層）で処理されるべきアプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＮＡＭＥ２４６を用いて判断処理が実行された後に、下位のレイヤ（インターネット層、トランスポート層）で処理されるべきＩＰヘッダ２２０内のヘッダチェックサム２２６、ＵＤＰヘッダ２３０内のチェックサム２３４を用いてパケット妥当性確認処理が実行されている。さらに、上記の実施例では、上位のレイヤ（トランスポート層）で処理されるべきＵＤＰヘッダ２３０内の宛先ポート２３２を用いてパケット判断処理が実行された後に、下位のレイヤ（インターネット層）で処理されるべきＩＰヘッダ２２０内のヘッダチェックサム２２６を用いてパケット妥当性確認処理が実行されている。
【００７８】
実施例のプリンタ１０について詳しく説明した。通常では、パケットが受信されると、応答処理すべきパケットであるのか否かの判断処理が実行される際に、パケットが妥当であるのか否かの確認処理も実行される（図５のＳ１４参照）。このため、パケット判断処理において、プリンタ１０が応答処理を実行すべきでないと判断される場合にも、パケット妥当性確認処理は、実行される。これに対して、プリンタ１０では、サブＣＰＵ３０は、メインＣＰＵ２０がスリープ状態である間にパケットを受信すると（図６のＳ５８参照）、パケット判断処理（図７参照）を実行する。そして、プリンタ１０が応答処理すべきパケットであると判断される場合（図６のＳ６２でＮＯ）に、パケット妥当性確認処理（図１０参照）を実行する。このため、パケット判断処理において、プリンタ１０が応答処理すべきパケットでないと判断される場合（図６のＳ６２でＹＥＳ）に、サブＣＰＵ３０は、パケット妥当性確認処理を実行しなくて済む。この結果、パケット判断処理のみが実行される場合の本実施例の処理負荷は、通常の処理手順で判断処理と確認処理とが実行される場合の処理負荷よりも、低くなる。このため、メインＣＰＵ２０がスリープ状態である場合のプリンタ１０の消費電力を低減することができる。
【００７９】
サブＣＰＵ３０は、メインＣＰＵ２０がスリープ状態である間にパケットを受信すると（図６のＳ５８参照）、ＩＰｖ４ヘッダ２２０内の宛先ＩＰアドレス２２８、ＵＤＰヘッダ２３０内の宛先ポート２３２、アプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＮＡＭＥ２４６等を利用して、図６のＳ６０のパケット判断処理（図７参照）を実行する。パケット判断処理において、プリンタ１０が応答処理すべきでないと判断される場合（図６のＳ６２でＹＥＳ）に、ＩＰヘッダ２２０内のヘッダチェックサム２２６、ＵＤＰヘッダ２３０内のチェックサム２３４等を利用したパケット妥当性確認処理（図６のＳ６４、図１０参照）を実行しない。このため、サブＣＰ３０は、上位のレイヤ（トランスポート層）で処理されるべきＵＤＰヘッダ２３０内の宛先ポート２３２を用いたパケット判断処理において、応答処理すべきパケットでないと判断される場合に、下位のレイヤ（インターネット層）で処理されるべきＩＰヘッダ２２０内のヘッダチェックサム２２６を用いてパケット妥当性確認処理を実行せずに済む。
【００８０】
仮に、サブＣＰＵ３０が、下位のレイヤで処理されるべきヘッダ（情報）から順に、パケットが応答処理すべきパケットであるのか否かの判断処理と、パケットが妥当であるのか否かの確認処理と、を実行する構成を採用すると、アプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＮＡＭＥ２４６がプリンタ１０宛のホスト名でない場合に、サブＣＰＵ３０は、ＩＰｖ４ヘッダ２２０とＵＤＰヘッダ２３０とを利用した判断処理と確認処理とを実行した後でなければ、応答処理を実行すべきパケットでないことを判断することができない。これに対して、プリンタ１０では、パケット妥当性確認処理をしなくて済む。これにより、サブＣＰＵ３０の処理負荷を低減することができる。この結果、プリンタ１０の消費電力が低減することができる。
【００８１】
また、通常、パケット妥当性確認処理（図１０参照）において、妥当でないと確認されるパケットはあまりない。そのため、仮に、パケット妥当性確認処理を先に実行し、パケット判断処理を後に実行する構成を採用すると、応答処理を実行する必要がないとパケット判断処理で判断されるパケットについても、パケット妥当性確認処理が実行される。この場合、サブＣＰＵ３０の処理負荷が高くなり、この結果、プリンタの消費電力が増大する。これに対し、本実施例では、パケット判断処理を先に実行し、パケット妥当性確認処理を後に実行する構成を採用しているために、応答処理を実行する必要がないとパケット判断処理で判断されるパケットについて、パケット妥当性確認処理が実行されない。この場合、サブＣＰＵ３０の処理負荷が低くなり、この結果、プリンタ１０の消費電力が低減することができる。
【００８２】
サブＣＰＵ３０は、パケット判断処理（図７参照）、ＳＮＭＰパケット処理（図８参照）及びＮｅｔＢＩＯＳ−ＮＳパケット処理（図９参照）において、メインＣＰＵ２０をスリープ状態から非スリープ状態に移行させるべきであるのか否かを判断する（図７のＳ９０、図８のＳ１１２、Ｓ１２０、図９のＳ１４２参照）。この構成によれば、サブＣＰＵ３０が応答処理すべきパケットである場合には、サブＣＰＵ３０がパケットに対する応答処理を実行することによって、メインＣＰＵ２０をスリープ状態に維持することができる。これにより、プリンタ１０の消費電力を低減するができる。一方、メインＣＰＵ２０が応答処理すべきパケットである場合には、メインＣＰＵ２０をスリープ状態から非スリープ状態に移行して、メインＣＰＵ２０にパケットに対する応答処理を実行させる。これにより、パケットに対する応答処理を適切に実行することができる。
【００８３】
サブＣＰＵ３０がパケット判断処理（図７参照）を実行するための判断処理用プログラム６８は、ＳＲＡＭ６０に格納された状態で、サブＣＰＵ３０に利用される。これに対して、サブＣＰＵ３０がパケット妥当性処理（図１０参照）を実行するための確認処理用プログラム８６は、フラッシュメモリ８０に格納された状態で、サブＣＰＵ３０に利用される。この構成によれば、ＡＳＩＣ１２内のＳＲＡＭ６０の容量を小さくすることができる。また、サブＣＰＵ３０がＡＳＩＣ１２外のフラッシュメモリ８０にアクセスする頻度を抑えることができる。
【００８４】
また、ＳＲＡＭ６０には、ＯＩＤテーブル６２が格納されているが、オブジェクトデータ自体は格納されていない。この構成では、オブジェクトデータをＳＲＡＭ６０に格納する構成と比較して、ＳＲＡＭ６０の容量を小さくすることができる。
【００８５】
なお、上記のプリンタ１０が「通信装置」の一例である。また、メインＣＰＵ２０が「第１処理部」の一例であり、サブＣＰＵ３０が「第２処理部」の一例である。メインＣＰＵ２０とサブＣＰＵ３０とがともに非スリープ状態である状態が「第１の状態」の一例であり、メインＣＰＵ２０がスリープ状態であり、サブＣＰＵ３０が非スリープ状態である状態が「第２の状態」の一例である。図７の処理が「第１の判断処理」の一例であり、図１０の処理が「第１の確認処理」の一例である。
【００８６】
ＳＲＡＭ６０が「第１のメモリ」の一例であり、フラッシュメモリ８０が「第２のメモリ」の一例である。判断処理用プログラム６８が「第１のプログラム」の一例であり、確認処理用プログラム８６が「第２のプログラム」の一例である。
【００８７】
（変形例）
（１）上記の実施例では、プリンタ１０は、メインＣＰＵ２０とサブＣＰＵ３０とを備えるが、これに代えて、プリンタ１０は、メインＣＰＵ２０のみを備えていてもよい。この場合、メインＣＰＵ２０に供給されるクロック信号の周波数が低い状態と高い状態とに移行してもよい。クロック信号の周波数が高い状態では、メインＣＰＵ２０の消費電力が比較的に高く、クロック信号の周波数が低い状態では、メインＣＰＵ２０の消費電力が比較的に低い。プリンタ１０が各状態３０２〜３０６である場合には、メインＣＰＵ２０に供給されるクロック信号の周波数が高い状態であり、プリンタ１０がＤスリープ状態３０８である場合には、メインＣＰＵ２０に供給されるクロック信号の周波数が低い状態であってもよい。この場合、メインＣＰＵ２０が、上記の実施例のサブＣＰＵ３０に代わって、サブＣＰＵ３０が実行する処理（図６〜１０の処理）を実行してもよい。この変形例では、メインＣＰＵ２０が「処理部」の一例であり、メインＣＰＵ２０に供給されるクロック信号の周波数が高い状態が「第１の状態」の一例であり、メインＣＰＵ２０に供給されるクロック信号の周波数が低い状態が「第２の状態」の一例である。
【００８８】
（２）上記の実施例では、基本プログラム８４と確認処理用プログラム８６は、フラッシュメモリ８０に、各ＣＰＵ２０，３０が利用可能な状態で格納されている。しかしながら、各プログラム８４，８６は、フラッシュメモリ８０に、圧縮された状態で格納されていてもよい。この場合、メインＣＰＵ２０又はサブＣＰＵ３０が、プリンタ１０の電源ＯＮ時又はプログラムの起動時に、各プログラム８４，８６を展開し、ＳＤＲＡＭ１００又はＳＲＡＭ６０に格納してもよい。
【００８９】
（３）上記の実施例では、アプリケーションデータ２４０内のＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７の値がＮＢＳＴＡＴ（０ｘ００２１）である（図９のＳ１４２でＹＥＳ）場合に、動作指定変数を、Ｄスリープ状態解除を示す「３」に変更する。即ち、ＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７の値がＮＢＳＴＡＴ（０ｘ００２１）である場合には、図６のＳ５８で受信したパケットに対する応答処理を、メインＣＰＵ２０が実行する。これに代えて、ＱＵＥＳＴＩＯＮ＿ＴＹＰＥ２４７の値がＮＢＳＴＡＴ（０ｘ００２１）である場合、サブＣＰＵ３０が、図６のＳ５８で受信したパケットに対する応答処理を実行してもよい。
【００９０】
（４）本実施例では、プリンタ１０について説明したが、本明細書の技術は、例えば、サーバ、スキャナ、多機能機等の通信装置に利用することができる。
【符号の説明】
【００９１】
１０：プリンタ、１２：ＡＳＩＣ、２０：メインＣＰＵ、２２：パケット解析部、２４：第２応答実行部、３０：サブＣＰＵ、３２：判断部、３４：確認部、３６：第２応答実行部、６０：ＳＲＡＭ、６８：判断処理用プログラム、８０：フラッシュメモリ、８４：基本プログラム、８６：確認処理用プログラム、１００：ＳＤＲＡＭ、２００：パケット
【図１】
2011205580.tif 000003
【図２】
2011205580.tif 000004
【図３】
2011205580.tif 000005
【図４】
2011205580.tif 000006
【図５】
2011205580.tif 000007
【図６】
2011205580.tif 000008
【図７】
2011205580.tif 000009
【図８】
2011205580.tif 000010
【図９】
2011205580.tif 000011
【図１０】
2011205580.tif 000012