次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.システムの概要:
B.複合機の構成:
C.ファームウェアの更新:
D.変形例:
A.システムの概要:
図1は、本発明の一実施例としてのネットワークシステム100の構成を示す説明図である。このネットワークシステム100は、デジタルテレビ110と、ルータ120と、複合機200とがローカルエリアネットワーク(LAN)を介して相互に接続された構成を有している。LANに接続されたルータ120は、インターネットINETを介して、ファームウェア保管サーバ130に接続されている。LANは、IEEE802.3のような有線ネットワークでも、IEEE802.11b/g/aなどの無線ネットワークでもよい。
デジタルテレビ110は、LANを介してHTML(HyperText Markup Language)で記述されたHTMLデータを取得し、ブラウザを用いてこのHTMLデータで表されるWebページを表示する機能を有している。
複合機200は、ネットワークユニット300と、デバイスユニット400とを有している。ネットワークユニット300は、LAN上の他の装置とデバイスユニット400との間で交換されるメッセージを仲介するネットワークプロトコル制御部302としての機能を有している。
ネットワークユニット300は、HTTPサーバおよびHTTPクライアントとしての機能を有している。後述するように、ネットワークユニット300は、LANから転送されるHTTPに基づいたメッセージのヘッダを解釈してデバイスユニット400に転送し、デバイスユニット400から転送されるメッセージにHTTPに基づいたヘッダを付加してLANに転送する。なお、ネットワークユニット300は、ネットワークに関する種々の制御を行う一種の制御部である。
デバイスユニット400は、サービスデバイスとしてのプリンタ404及びスキャナ406と、これらを制御するデバイス制御部402とを備えている。また、プリンタ404及びスキャナ406以外のサービスも追加することができる。サービスデバイスとしては、プリンタ404やスキャナ406を単独で、あるいはその他のサービスデバイス単独で存在させることも可能である。ネットワークユニット300とデバイスユニット400との間は、USB(Universal Serial Bus)で接続されている。但し、両者の間をUSB以外の他の物理的インタフェースで接続することも可能である。なお、デバイスユニット400は、プリンタ404やスキャナ406等の複合機200の主要な機能を実行する一種の制御部である。
なお、デジタルテレビ110及び複合機200は、UPnP(Universal Plug and Play。UPnPは、UPnP Implementers Corporationの商標)対応のネットワーク装置として構成することも可能である。この場合、複合機200のネットワークユニット300は、UPnPで使用される種々のネットワークプロトコルを解釈しデバイスユニット400に転送する。これにより、複合機200は、UPnPで使用可能な各種機能をデジタルテレビ110に提供することができる。
デジタルテレビ110及び複合機200がUPnP対応のネットワーク装置となっている場合、デジタルテレビ110は、UPnPの機能によりHTMLデータである複合機200のプレゼンテーションページを取得することができる。このプレゼンテーションページをデジタルテレビ110のブラウザに表示させることにより、複合機200の各種設定を行うユーザインタフェースが表示される。
なお、UPnPでは、外部からの要求に応じて印刷や画像スキャン等のサービスを実行するネットワーク装置は「サービスデバイス」あるいは単に「デバイス」とも呼ばれる。また、デバイスによって提供されるサービスを利用するネットワーク装置は「コントロールポイント」とも呼ばれる。図1に示すネットワークシステム100において、デジタルテレビ110と複合機200とがUPnP対応のネットワーク装置として構成されている場合には、複合機200が備えるプリンタ404とスキャナ406とが「デバイス」に相当し、デジタルテレビ110が「コントロールポイント」に相当する。
ファームウェア保管サーバ130には、複合機200の制御ソフトウェア(「ファームウェア」と呼ばれる)の更新に使用されるファームウェアデータ(制御ソフトウェア更新データ)が格納されている。この複合機200のファームウェアの更新については、後述する。ファームウェア保管サーバ130に格納されたファームウェアデータは、インターネットINETを介してファームウェアデータを提供する。ファームウェアデータの提供は、HTTP(Hypertext Transfer Protocol)に従ってファームウェアデータの送出をファームウェア保管サーバ130のHTTPサーバに要求することにより行われる。なお、本実施例では、ファームウェア保管サーバ130は、HTTPに従ってファームウェアの送出を行っているが、FTP(File Transfer Protocol)等の他のプロトコルに従ってファームウェアの送出を行うことも可能である。
B.複合機の構成:
図2は、複合機200の内部構成を示すブロック図である。複合機200は、ネットワークユニット300と、デバイスユニット400と、ネットワークユニット300およびデバイスユニット400に電力を供給する電源回路210と、を備えている。
ネットワークユニット300は、中央制御部(CPU)310と、RAM320と、電気的に書込可能なROM(EPROM)330と、ネットワーク制御部340と、USBホスト制御部350とを有している。EPROM330には、ネットワークユニット300のファームウェアが格納されている。このファームウェアは、複合機200の起動時に中央制御部310によりRAM320に転送される。そして、RAM320に転送されたファームウェアを実行することにより、中央制御部310は、ネットワークユニット300が有する種々の機能を実現する。なお、EPROM330としては、フラッシュメモリ等、電気的に書換が可能な任意のEPROMを使用することができる。
ネットワーク制御部340は、コネクタ342を介して有線ネットワークに接続される。USBホスト制御部350は、ルートハブ352を有しており、ルートハブ352には2つのUSBコネクタ354,356が設けられている。第1のUSBコネクタ354は、USBケーブルを介してデバイスユニット400のUSBコネクタ462に接続されている。第2のUSBコネクタ356には、追加のデバイス(例えば無線LANネットワークへ通信するための無線通信回路や他のデバイスユニット)を接続可能である。
デバイスユニット400は、中央制御部(CPU)410と、RAM420と、EPROM430と、印刷エンジン440と、スキャンエンジン450と、2つのUSBデバイス制御部460,470と、PCカードインタフェース480と、操作パネル制御部490と、ビューワ制御部500と、USBホスト制御部510と、電源回路210を制御する電源制御部520とを有している。EPROM430には、デバイスユニット400のファームウェアが格納されている。中央制御部410は、EPROM430に格納されたファームウェアを実行することにより、デバイスユニット400が有する種々の機能を実現する。なお、EPROM430としては、フラッシュメモリ等、電気的に書換が可能な任意のEPROMを使用することができる。
印刷エンジン440は、与えられた印刷データに応じて印刷を実行する印刷機構である。スキャンエンジン450は、画像をスキャンして画像データを生成する機構である。なお、本発明は、複合機200のファームウェア更新に関するものであり、これらの印刷エンジン440とスキャンエンジン450との構成や機能などには影響しないので、その説明を省略する。
デバイスユニット400の第1のUSBデバイス制御部460は、USBコネクタ462を介してネットワークユニット300のUSBホスト制御部350に接続されている。第2のUSBデバイス制御部470は、USBコネクタ472を有しており、ここにパーソナルコンピュータなどの任意のUSBホストを接続することが可能である。PCカードインタフェース480は、PCカード用のスロット482を有している。操作パネル制御部490には、入力手段としての操作パネル492が接続されている。ビューワ制御部500には、画像表示手段としてのビューワ502が接続されている。ユーザは、ビューワ502上に表示された画像やメニューを観察しながら、操作パネル492を用いて種々の指示を入力することができる。USBホスト制御部510は、ルートハブ512を有しており、ルートハブ512にはUSBコネクタ514が設けられている。このコネクタ514には、デジタルカメラやハードディスクドライブ(HDD)等のUSBデバイスを接続することが可能である。
ネットワークユニット300の中央制御部310とネットワーク制御部340とUSBホスト制御部350は、図1におけるネットワークプロトコル制御部302としての機能を実現する。より具体的には、ネットワーク制御部340は、各種のネットワークプロトコルに従ってメッセージの送受信を行う。また、中央制御部310は、ネットワークプロトコルを解釈して転送先を決定する。USBホスト制御部350は、デバイスユニット400との間でメッセージを転送する。なお、これらの制御部310,340,350は、メッセージボディの解釈や処理は行わずにメッセージを転送している。
デバイスユニット400のUSBデバイス制御部460及び中央制御部410は、図1におけるデバイス制御部402としての機能を実現する。より具体的には、USBデバイス制御部460は、USBの転送プロトコルに従ってメッセージの送受信を行う。また、中央制御部410は、ネットワークユニット300を介して転送されたメッセージの内容を解釈し、メッセージの内容に応じた処理を実行して、印刷エンジン440やスキャンエンジン450を動作させる。印刷エンジン440は図1のプリンタ404に相当し、スキャンエンジン450は図1のスキャナ406に対応する。
図3は、ネットワークユニット300とデバイスユニット400のファームウェア更新に関する機能の階層構造を示すブロック図である。ネットワークユニット300は、ネットワークプロトコルであるHTTPプロトコルをネットワークユニット300とデバイスユニット400との間の通信に使用されるD4プロトコルに変換するプロトコル変換部1000を備えている。なお、D4プロトコルとは、IEEE1284.4に規定されたパケット(D4パケット)を用いた通信プロトコルである。
プロトコル変換部1000は、HTTPプロトコル処理部とD4プロトコル処理部1100の上部の階層において機能する。HTTPプロトコル処理部よりも下部の階層には、下から順番にネットワークインタフェースと、ドライバと、TCP/IPプロトコル処理部とが設けられている。また、D4プロトコル処理部1100よりも下部の階層には、下から順番に、USBホストインタフェース(ハードウェア)と、USBシステムソフトウェアと、プリンタクラス論理インタフェースとが設けられている。
デバイスユニット400は、ファームウェアの更新のためのメッセージを解釈し、解釈の結果に応じた処理を実行するためのファームウェア更新処理部2000を備えている。ファームウェア更新処理部2000よりも下部の構造としては、下から順番に、USBデバイスインタフェース(ハードウェア)と、USB論理デバイスと、プリンタクラス論理インタフェースと、D4プロトコル処理部2100とが設けられている。なお、プリンタクラス論理インタフェースとは、プリンタクラスのUSB論理デバイスと上位のプロトコルを仲介するためのインタフェースである。なお、図3の例では、印刷エンジン440やスキャンエンジン450に関連する構成は省略している。
図3において、ネットワークユニット300とデバイスユニット400の間には、種々の通信チャンネルが描かれている。これらは、ネットワークユニット300とデバイスユニット400の同一階層間における論理的な接続を示している。D4プロトコル処理部1100,2100の間の5つのチャンネルは、USB転送における論理的なチャンネルである。以下ではまず、USB転送用のチャンネルについて説明する。
図4は、USBのインタフェース/エンドポイント構成と論理チャンネルの構成とを示す説明図である。一般に、USBデバイスは、インタフェースとエンドポイントとを有している。USBの転送は、USBのホストとエンドポイントとの間で行われる。すなわち、「エンドポイント」とは、ホストと通信を行う論理的なリソースである。図4(a)の例では、5つのエンドポイントEP#0〜EP#4が示されている。コントロールエンドポイントEP#0は、標準デバイスリクエストの送受信を行うためのエンドポイントである。「標準デバイスリクエスト」とは、すべてのUSBでサポートする必要がある基本的なリクエストである。従って、コントロールエンドポイントEP#0は、1つのUSBデバイスに必ず1つ設けられている。
プリンタ用のバルクアウトエンドポイントEP#1とバルクインエンドポイントEP#2は、印刷エンジン440用のメッセージの受信と送信を行うためのエンドポイントである。同様に、スキャナ用のバルクアウトエンドポイントEP#3とバルクインエンドポイントEP#4は、スキャンエンジン450用のメッセージの受信と送信を行うためのエンドポイントである。一般に、USBデバイスでは、コントロールエンドポイントEP#0以外のエンドポイントは、論理的なインタフェース(「デバイスクラス」と呼ばれる)によって区分されている。図4(a)の例では、論理的なインタフェースとして、プリンタインタフェースIF#0とスキャナインタフェースIF#1とが設けられている。
本実施例では、図4(b)に示すように、プリンタインタフェースIF#0に7つの論理的なチャンネルが設けられている。これらの論理チャンネルは、いずれもバルクアウトエンドポイントEP#1とバルクインエンドポイントEP#2の両方を利用して双方向通信を行うことができる。論理チャンネルの識別情報は、D4パケットのヘッダに登録される。但し、論理チャンネルの数や区分としては、これ以外の任意のものを採用することができる。
図5は、USB転送に用いられるD4パケットの構成を示す説明図である。D4パケットは、6バイトのヘッダ(D4ヘッダ)とボディ部分とを有している。D4ヘッダは、プライマリソケットID(PSID)と、セカンダリソケットID(SSID)と、パケット長と、クレジットと、制御情報とを含んでいる。通常、プライマリソケットIDとセカンダリソケットIDとには、同一の図4(b)に示す論理チャンネルを識別するIDが設定される。D4ヘッダのパケット長には、D4ヘッダを含むD4パケット全体の長さが登録される。クレジットと制御情報には、D4プロトコルにおけるデータの伝送制御を行うための情報が登録される。ボディ部分のデータには、論理チャンネルに応じて種々の情報が格納される。
図6は、図4(b)に示した各論理チャンネルで転送されるD4パケットのボディ部分に格納される情報を示す表である。図6の表の第1列には、図4(b)の各論理チャンネルが示されている。図6の表の第2列には、各論理チャンネルのデータ転送方向を示している。第2列の「N」から「D」に向いた矢印は、ネットワークユニット300からデバイスユニット400にデータが転送されることを示しており、「D」から「N」に向いた矢印は、デバイスユニット400からネットワークユニット300にデータが転送されることを示している。図6の表の第3列には、各論理チャンネルで転送されるD4パケットのボディ部分に格納される情報を示している。
図6の表に示すように、制御コマンドとそのパラメータは、LOCAL-CONTROLチャンネルとLOCAL-EVENTチャンネルとにより転送される。また、HTMLデータは、UP-PRESENTATIONチャンネルとDOWN-PRESENTATIONチャンネルとにより転送される。これらの4つのチャンネルは、データの内容毎に、ネットワークユニット300からデバイスユニット400への転送を行うチャンネル(LOCAL-CONTROLおよびDOWN-PRESENTATION)と、デバイスユニット400からネットワークユニット300への転送を行うチャンネル(LOCAL-EVENTおよびUP-PRESENTATION)と、に区分されている。
DOWN-CONTENTチャンネルは、ネットワークユニット300からデバイスユニット400に種々のデータを転送するために設けられている。PRINT-DATAチャンネルとPRINT-STATUSチャンネルとは、印刷エンジン440とネットワークユニット300との間のデータ転送を行うチャンネルである。
図7は、ネットワークユニット300を介したデータ転送処理の一例を示すシーケンス図である。図7の例は、デジタルテレビ110がそのブラウザ上で表示するためのHTMLデータを取得する様子を示している。このとき、デジタルテレビ110と、ネットワークユニット300と、デバイスユニット400との間で種々のメッセージが転送される。
ステップ[1]では、デジタルテレビ110がHTTPのリクエストメッセージF1をネットワークユニット300に送信する。メッセージF1のヘッダには、リクエスト命令(GETやPOSTなどのメソッド)と、取得するHTMLデータのデバイスユニット400における固有の位置を示す識別子URI(Uniform Resource Identifier)と、複合機200のIPアドレス(この例では192.168.123.123)とが記述されている。以下、本明細書において、このようにリクエスト命令GETを含むHTTPのリクエストメッセージを単に「GETリクエスト」とも呼び、他のリクエスト命令(POST等)についても同様に呼ぶ。なお、HTTPのリクエスト命令の種類によっては、メッセージF1には送信データが含まれる。
ステップ[2]では、ネットワークユニット300が、リクエストメッセージF1を解析する。図7の例では、ネットワークユニット300は、リクエストメッセージF1を解析することにより、HTTPのリクエスト命令がURIで示されるHTMLデータを取得するためのGETリクエストであると判定する。なお、ネットワークユニット300は、リクエストメッセージF1が送信データを含んでいても、送信データの内容の解釈は行わない。
ステップ[3]において、ネットワークユニット300は、LOCAL-CONTROLチャンネルを介して、リクエストID(RequestID)を取得するコマンド(GetRequestID)をデバイスユニット400に送出する。送出されるGetRequestIDコマンドには、そのパラメータとして、HTTPのリクエスト命令の種類(GET)と、取得されるHTMLデータのURIとが付加される。なお、リクエストIDとは、GetRequestIDコマンドに応じてネットワークユニット300とデバイスユニット400との間で送受信されるデータを識別するための識別コードである。
ステップ[4]において、デバイスユニット400は、GetRequestIDコマンドに対して応答(Reply)を行う。この応答には、ステップ[3]のGetRequestIDコマンドに応じてデバイスユニット400が送信するHTMLデータ(返信データ)を識別するためのリクエストIDが含まれている。
ステップ[5]では、デバイスユニット400が、GetRequestIDコマンドに応じて返信データを準備する。具体的には、デバイスユニット400は、GetRequestIDコマンドのパラメータとして与えられたURIに従って種々の処理を行い、その結果としてHTMLデータを生成する。
ステップ[6]において、デバイスユニット400は、UP-PRESENTATIONチャンネルを介して、返信メッセージR1をネットワークユニット300に送出する。なお、返信メッセージR1中には、送信されるHTMLデータがステップ[3]で転送された要求に対応することを示すリクエストIDが含まれる。
ステップ[7]において、ネットワークユニット300は、返信メッセージR1からHTMLデータを抽出する。そして、抽出されたHTMLデータにHTTPヘッダを付加する。このHTTPヘッダは、HTTPリクエストの処理結果を示すステータスコードを含んでいる。例えば、処理結果がOKであればステータスコードが”200”に設定され、エラーであれば”500”に設定される。
ステップ[8]では、こうして作成されたHTTPのレスポンスメッセージR2がネットワークユニット300からデジタルテレビ110に送信される。
C.ファームウェアの更新:
図8は、複合機200のファームウェアの更新の際にデジタルテレビ110のブラウザ上に表示される表示画面を示す説明図である。ユーザは、デジタルテレビ110のブラウザを用いて複合機200のメンテナンスページをブラウザ上に表示させることができる。具体的には、デジタルテレビ110は、メンテナンスページを表すHTMLデータの送信を要求するGETリクエストを複合機200のネットワークユニット300に送信する。デジタルテレビ110は、ネットワークユニット300から返信されるHTTPレスポンス中のHTMLデータで表されるメンテナンスページをブラウザ上に表示する。
デジタルテレビ110が、メンテナンスページをブラウザ上に表示することにより、ブラウザには複合機200の各種設定を行うためのユーザインタフェースが表示される。なお、デジタルテレビ110と複合機200とのいずれもがUPnP対応ネットワークデバイスとして構成されている場合、複合機200がコントロールポイントに通知するプレゼンテーションページを用いて、デジタルテレビ110は、メンテナンスページをブラウザ上に表示することができる。
図8(a)は、複合機200のメンテナンスページがデジタルテレビ110のブラウザ上に表示されている様子を示している。図8(a)に示すように、メンテナンスページにより形成されるユーザインタフェースUI1には、プリンタのノズルの状態をチェックを指示するためのボタンBEX1と、プリンタのノズルのクリーニングを指示するためのボタンBEX2と、複合機200のファームウェアの更新を指示するためのボタンBEX3と、メンテナンスの処理の中止を指示するための中止ボタンBCN1とが、表示されている。
ユーザがユーザインタフェースUI1に表示されたボタンBEX1を操作すると、デジタルテレビ110は、複合機200のネットワークユニット300にプリンタのノズル状態をチェックするためのページの送信を要求するHTTPリクエストを送信する。複合機200は、このHTTPリクエストに応じて、プリンタのノズル状態をチェックし、その結果を表すページをデジタルテレビ110に返信する。同様に、ボタンBEX2の操作により、デジタルテレビ110は、複合機200のネットワークユニット300にプリンタのノズルをクリーニングするためのページの送信を要求するHTTPリクエストを送信する。複合機200は、このHTTPリクエストに応じて、ノズルのクリーニングのためのページをデジタルテレビ110に返信する。
ユーザがユーザインタフェースUI1に表示されたボタンBEX3を操作すると、デジタルテレビ110は、複合機200のネットワークユニット300にファームウェア更新のためのページの送信を要求するHTTPリクエストを送信する。
図9は、デジタルテレビ110が複合機200のネットワークユニット300にファームウェア(FW)更新のためのページの送信を要求するHTTPリクエストを送信する際の処理の様子を示すシーケンス図である。
ステップ[CF1]において、デジタルテレビ110は、ネットワークユニット300にファームウェア更新ページの送信を要求する。具体的には、デジタルテレビ110は、ページの送信を要求する内容を表すGETメソッドと、ファームウェア更新ページを指定するURIとを含むHTTPのリクエストメッセージをネットワークユニット300に送信する。
ステップ[CF1]でHTTPリクエストがネットワークユニット300に送信されると、ステップ[CF2]において、ネットワークユニット300は、LOCAL-CONTROLチャンネルを介して、GetRequestIDコマンドをデバイスユニット400に送出する。図9の例では、GetRequestIDコマンドには、リクエスト命令がHTMLデータの送信を要求するGETリクエストであることと、送信が要求されているHTMLデータがファームウェア更新ページを示すURIであることを表すパラメータが付加されている。ステップ[CF2]のGetRequestIDコマンドに対して、デバイスユニット400は、ステップ[CF3]において、リクエストIDを含む応答を行うとともに、デバイスユニット400をファームウェアの更新以外の処理要求を受け付けない状態にする。
ステップ[CF4]において、デバイスユニット400は、ファームウェア更新ページの送信要求に対して、返信するHTMLデータを生成する。本実施例において、ステップ[CF4]では、ユーザにファームウェアの更新の実行可否を確認する更新確認ページを表すHTMLデータが生成される。更新確認ページを表すHTMLデータは、ステップ[CF5]でネットワークユニット300に送出される。ネットワークユニット300は、ステップ[CF6]において、更新確認ページを表すHTMLデータにHTTPヘッダを付加した後、HTTPレスポンスとしてメッセージをデジタルテレビ110に送信する。
図8(b)は、図9のステップ[CF6]においてデジタルテレビ110に送信された更新確認ページがデジタルテレビ110のブラウザ上に表示されている様子を示している。更新確認ページにより、デジタルテレビ110のブラウザ上には、ファームウェアの更新の実行可否を確認するためのユーザインタフェースUI2が表示される。
図8(b)に示すユーザインタフェースUI2には、ファームウェア更新の開始を指示する開始ボタンBSTと、ファームウェア更新の中止を指示する中止ボタンBCN2とが表示されている。ユーザが、中止ボタンBCNを操作すると、デジタルテレビ110は、メンテナンスページを表示するため、メンテナンスページを表すHTMLデータ送信を要求するHTTPリクエストを複合機200に送信する。これにより、デジタルテレビ110のブラウザには、図8(a)に示すメンテナンスページが表示される。
ユーザが、開始ボタンBSTを操作すると、デジタルテレビ110は、複合機200のネットワークユニット300に対してファームウェア更新を開始する指示を送信する。本実施例においては、このファームウェア更新開始の指示も、HTTPのリクエストとして複合機200のネットワークユニット300に送信される。
図10は、デジタルテレビ110が複合機200のネットワークユニット300にファームウェア更新を開始する指示をHTTPリクエストとして送信する際の処理の様子を示すシーケンス図である。
ステップ[ST1]において、デジタルテレビ110は、ネットワークユニット300にユーザによる指示を送信する。具体的には、デジタルテレビ110は、ファームウェア更新CGI(Common Gateway Interface)にユーザの指示に関する情報を含むHTMLデータ(ファームウェア更新指示フォーム)を渡すように、HTTPのPOSTリクエストをネットワークユニット300に送信する。このPOSTリクエストには、ファームウェア更新指示フォームが含まれている。ここで、ファームウェア更新CGIとは、デバイスユニット400上でユーザの指示を解析し、解析内容に応じて処理を実行する一種のコンピュータプログラムである。
ステップ[ST2]において、ネットワークユニット300は、LOCAL-CONTROLチャンネルを介して、GetRequestIDコマンドをデバイスユニット400に送出する。図10の例では、GetRequestIDコマンドには、デジタルテレビ110からのHTTPリクエストがPOSTリクエストであることと、実行されるファームウェア更新CGIを示すURIとがパラメータとして付加されている。ステップ[ST2]のGetRequestIDコマンドに対して、デバイスユニット400は、ステップ[ST3]において、リクエストIDを含む応答を行う。
ステップ[ST4]において、デバイスユニット400は、ファームウェア更新CGIの実行を開始する。デバイスユニット400は、ステップ[ST5]において、ネットワークユニット300からファームウェア更新指示フォームを取得する。取得されたファームウェア更新指示フォームは、ファームウェア更新CGIにより解析される。ファームウェア更新指示フォームの解析により、ユーザの指示がファームウェア更新を中止する指示であると判定された場合には、処理は中止される。なお、ファームウェア更新処理が中止されると、デバイスユニット400は、デバイスユニット400をファームウェアの更新以外の処理要求を受け付ける状態にする。
一方、ユーザの指示がファームウェア更新を実行する指示であると判定された場合には、処理が続行される。この場合、デバイスユニット400は、ユーザにファームウェア更新を開始したことを通知する更新開始ページを生成するとともに、ファームウェアの更新処理を開始する。なお、HTMLで記述された更新開始ページには、ブラウザに定期的(例えば、1秒ごと)にファームウェア更新ページを取得させるための指示が含まれている。
ステップ[ST6]において、デバイスユニット400は、生成された更新開始ページをネットワークユニット300に送出する。そして、ステップ[ST7]において、ネットワークユニット300は、HTTPヘッダが付加された更新開始ページをデジタルテレビ110に送信する。
図8(c)は、図10のステップ[ST7]においてデジタルテレビ110に送信された更新開始ページがデジタルテレビ110のブラウザ上に表示されている様子を示している。図8(c)に示すように、デジタルテレビ110のブラウザ上には、ファームウェアの更新を開始したことをユーザに通知するユーザインタフェースUI3が表示される。
図11は、更新開始ページに含まれる指示により、デジタルテレビ110のブラウザが定期的にファームウェア更新ページを取得する際のシーケンス図である。図11に示すシーケンスは、ステップ[SM4]においてデバイスユニット400で生成されるデジタルテレビに返信されるHTMLデータが更新確認ページから状態表示ページとなっている点で、図9に示すシーケンスと異なっている。他の点は、図9に示すシーケンスと同じであるので、ここではその説明は省略する。
図12は、図11に示すシーケンスにおいてデジタルテレビ110のブラウザに表示される状態表示ページを示している。ファームウェアの更新が開始されると、デジタルテレビ110のブラウザには、図12(a)に示すファームウェアの更新中であることをユーザに通知するユーザインタフェースUI4がデジタルテレビ110のブラウザに表示される。なお、図12(b)に示す複合機200の電源をオフにすることをユーザに通知するユーザインタフェースUI5がデジタルテレビ110のブラウザに表示される場合については、後述する。
図13は、ファームウェアの更新を実行するファームウェア更新実行ルーチンを示すフローチャートである。なお、図13に示すフローチャートの左側の各ステップS110〜S140は、デバイスユニット400が実行を制御するステップを示し、右側のステップS220は、ネットワークユニット300が実行を制御するステップを示している。
ステップS110において、デバイスユニット400は、ファームウェア保管サーバ130(図1)からネットワークユニット300のファームウェアデータを取得し、デバイスユニット400のRAM420(図2)に格納する。
図14は、ステップS110においてネットワークユニット300のファームウェアデータを取得する様子を示すシーケンス図である。図14に示すように、ステップS110では、ファームウェア保管サーバ130と、ネットワークユニット300と、デバイスユニット400と、の間でデータの転送が行われる。
ステップ[GN1]において、デバイスユニット400は、LOCAL-EVENTチャンネルを介してネットワークユニット300にGetRequestIDコマンドを送出する。ステップ[GN1]で送出されるGetRequestIDコマンドには、取得するネットワークユニット300のファームウェアデータの所在を示すURIと、ネットワークユニット300のファームウェアデータを取得するためのリクエスト命令(GET)が付加されている。
ステップ[GN2]において、ネットワークユニット300は、ステップ[GN1]で受け取ったコマンドGetRequestIDに応答する。そして、ステップ[GN3]において、ネットワークユニット300のファームウェアデータの送出を要求するGETリクエストをファームウェア保管サーバ130に送信する。通常、ネットワークユニット300が稼働しているときのRAM320(図2)の空き容量は、ネットワークユニット300のファームウェアデータよりも小さい。そのため、ステップ[GN3]で送信されるGETリクエストでは、レンジリクエストヘッダ(Range:bytes=xxxx-yyyy)により転送されるファームウェアデータの範囲が指定され、転送されるデータの大きさが制限されている。ファームウェア保管サーバ130は、ネットワークユニット300のファームウェアデータのうちレンジリクエストヘッダで指定された範囲のデータを送信する。なお、本実施例では、ネットワークユニット300がレンジリクエストヘッダをGETリクエストに付加することにより送信されるファームウェアデータの範囲を指定しているが、ファームウェア保管サーバ130が送信範囲を指定するものとしてもよい。
ステップ[GN4]において、ファームウェア保管サーバ130は、ステップ[GN3]で受け取ったHTTPリクエストに応じたHTTPレスポンスとして、ネットワークユニット300のファームウェアデータをネットワークユニット300に送信する。
ステップ[GN5]において、ネットワークユニット300は、ステップ[GN4]でファームウェア保管サーバ130から受信したネットワークユニット300のファームウェアデータをDOWN-CONTENTチャンネルを介してデバイスユニット400に転送する。転送されたネットワークユニット300のファームウェアデータは、ステップ[GN6]において、デバイスユニット400のRAM420(図2)に格納される。
上述のように、ステップ[GN3]でファームウェア保管サーバ130に送信されるGETリクエストでは、レンジリクエストヘッダにより送信されるファームウェアデータの範囲が指定されている。ネットワークユニット300は、ファームウェアデータの全体を順次デバイスユニット400に転送するため、レンジリクエストヘッダのパラメータを適宜変更するとともに、ステップ[GN3]ないしステップ[GN5]を複数回繰り返し実行する。そのため、ファームウェアデータ全体は、複数に分割されて順次デバイスユニット400に転送される。デバイスユニット400は、ステップ[GN5]で転送されるデータを順次RAM420に格納する。これにより、デバイスユニット400のRAM420には、ネットワークユニット300のファームウェアデータ全体が格納される。
図13のステップS120において、デバイスユニット400は、RAM420に格納されたネットワークユニット300のファームウェアデータをネットワークユニット300に転送する。ステップS220において、ネットワークユニット300は、ステップS120で転送されるファームウェアデータにより、ネットワークユニット300のEPROM330(図2)を更新する。なお、2つのステップS120,S220は、デバイスユニット400とネットワークユニット300とで並列に実行される。
図15は、2つのステップS120,S220におけるネットワークユニット300のファームウェアデータの転送と、EPROM330の更新の様子を示すシーケンス図である。
ステップ[WN1]において、デバイスユニット400は、LOCAL-EVENTチャンネルを介してネットワークユニット300にファームウェアの更新を指示するコマンドを送出する。ネットワークユニット300は、ステップ[WN2]において、ステップ[WN1]で受け取ったコマンドに対する応答として、ファームウェアの更新が可能か否かをデバイスユニット400に通知する。デバイスユニット400は、ステップ[WN2]で受け取った応答から、ネットワークユニット300のファームウェアの更新が不可能と判断した場合、ファームウェアの更新処理は終了する。
ネットワークユニット300は、ファームウェアの更新が可能な場合、ステップ[WN3]において、ファームウェア更新デーモンの実行を開始する。ここで、ファームウェア更新デーモンとは、USBのcontrol IN/OUTパイプ(図3)を介したデバイスユニット400とのデータ転送と、転送されたデータによりEPROM330の書き換えと、を行うコンピュータプログラムである。なお、control IN/OUTパイプを介したデータの転送は、一般に、コントロール転送と呼ばれる。なお、コントロール転送によるファームウェアの転送には、上述した標準デバイスリクエストとは異なるベンダリクエスト(Vendor Request)が使用される。
デバイスユニット400は、ネットワークユニット300のファームウェアの更新が可能と判断した場合、ステップ[WN4]において、ネットワークユニット300のファームウェアデータをコントロール転送によりネットワークユニット300に送出する。ステップ[WN5]において、ネットワークユニット300は、ネットワークユニット300のEPROM330をステップ[WN4]で転送されたファームウェアデータに順次更新する。なお、EPROM330のデータの更新は、EPROM330のうちデータを書き込む領域を消去した後、消去した領域に新しいデータを記録することによって行われる。
ステップ[WN5]におけるデータの更新が終了すると、ステップ[WN6]において、ネットワークユニット300は、ネットワークユニット300のファームウェアの更新の終了をコントロール転送によりデバイスユニット400に通知する。
図13のステップS130において、デバイスユニット400は、ファームウェア保管サーバ130(図1)からデバイスユニット400のファームウェアデータを取得し、デバイスユニット400のRAM420(図2)に格納する。なお、図13のステップS130が終了すると、図11のステップ[SM4]で生成される状態表示ページは、複合機200の電源をオフにすることをユーザに通知するHTMLデータとなる。そのため、デジタルテレビ110(図1)のブラウザには、図12(b)に示すユーザインタフェースUI5が表示される。
図16は、ステップS130においてデバイスユニット400のファームウェアデータを取得する様子を示すシーケンス図である。なお、図16に示すシーケンスは、取得するファームウェアデータがネットワークユニット300のファームウェアデータからデバイスユニット400のファームウェアデータに置き換えられている点で図14に示すシーケンスと異なっている。他の点は、図14に示すネットワークユニット300のファームウェアデータ取得のシーケンスと同じである。
図13のステップS140において、デバイスユニット400は、RAM420に格納されたデバイスユニット400のファームウェアデータにより、デバイスユニット400のEPROM430(図2)を更新する。
図17は、図13のステップS140において、デバイスユニット400のEPROM430を更新する様子を示すシーケンス図である。
ステップ[WD1]において、デバイスユニット400は、LOCAL-EVENTチャンネルを介してネットワークユニット300に停止コマンドを送出する。ネットワークユニット300は、ステップ[WD2]において、ステップ[WD1]で受け取った停止コマンドに応答する。
ステップ[WD3]では、ネットワークユニット300は、ネットワークユニット300のシャットダウンの準備を行う。具体的には、ネットワークユニット300によって実行される種々のネットワークプロトコルの処理機能を停止する。ネットワーププロトコルの処理機能が停止し、ネットワークユニット300のシャットダウンが可能になると、ネットワークユニット300は、ステップ[WD4]において、デバイスユニット400にシャットダウンコマンドを送出する。デバイスユニット400は、ステップ[WD5]において、ステップ[WD4]で受け取ったシャットダウンコマンドに対して応答する。
ステップ[WD6]において、デバイスユニット400は、RAM420からの再起動を行う。具体的には、デバイスユニット400で実行される制御ソフトウェアが、EPROM430に記録されたファームウェアから、図16のステップ[GD6]においてRAM420に格納されたファームウェアに切り替えられる。
RAM420からの再起動により、ステップ[WD7]では、USBの切断処理が行われる。ステップ[WD7]でUSBの切断処理が行われると、ネットワークユニット300は、ステップ[WD8]においてシャットダウンされてその機能が停止する。一方、デバイスユニット400は、ステップ[WD9]において、EPROM430の更新を行う。
ステップ[WD9]でのEPROM430の更新が完了すると、ステップ[WD10]において、デバイスユニット400は、デバイスユニット400自体のシャットダウン処理を行うとともに、電源制御部520(図2)から電源回路210(図2)にネットワークユニット300およびデバイスユニット400への電力の供給を停止する指示を送出する。電力供給停止の指示により、電源回路210は、ステップ[WD11]において、ネットワークユニット300およびデバイスユニット400への電力供給を停止し、複合機200は電源OFFの状態となる。
このように、本実施例では、複合機200がLANを介してファームウェアデータを取得する際に、ネットワークユニット300は、ファームウェアデータの一部を取得し、デバイスユニット400に転送する。そのため、更新のためのファームウェアデータの全てを格納するためにネットワークユニット300のRAM320の容量が増大することを抑制することができる。
D.変形例:
なお、この発明は上記実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
D1.変形例1:
上記実施例では、デバイスユニット400は、ファームウェア更新ページの最初のGETリクエストに応答する図9のステップ[CF3]において、デバイスユニット400をファームウェアの更新以外の処理要求を受け付けない状態にしているが、他のタイミングでファームウェアの更新以外の処理要求を受け付けない状態にするものとしてもよい。処理要求の受付可否の状態変更は、ネットワークユニット300のファームウェア更新を開始する図15のステップ[WN1]や、ネットワークユニット300に停止コマンドを送出する図17のステップ[WD1]等の、ファームウェア更新シーケンスの所定のタイミングで行うことができる。
D2.変形例2:
上記実施例では、複合機200のファームウェアの更新処理に関する指示が、ユーザが操作するデジタルテレビ110(図1)から提供されているが、更新処理に関する指示は、他の方法によって提供されるものしても良い。ファームウェアの更新処理に関する指示は、例えば、操作パネル制御部490(図2)がユーザによる操作パネル492(図2)の操作に応じて提供するものとしてもよく、ユーザによる第2のUSBデバイス制御部472(図2)に接続されたパーソナルコンピュータPCの操作に応じてパーソナルコンピュータPCが提供するものとしてもよい。この場合、ビューワ502(図2)やパーソナルコンピュータPCの画面上には、ユーザによる指示を取得し、ユーザに複合機200の状態を通知するためのユーザインタフェースUI1〜UI5(図8,図12)が表示される。
ファームウェアの更新処理に関する指示を第2のUSBデバイス制御部472に接続されたパーソナルコンピュータPCが提供する際、パーソナルコンピュータPCが更新に使用されるファームウェアデータを複合機200に送出することが可能である。この場合、
ユーザによる指示の取得(図9,図10)と、ユーザへの通知と(図11)、ファームウェアデータの転送(図14,図16)とは、第1のUSBデバイス制御部460に換えて第2のUSBデバイス制御部470を用いて行われるが、これらはいずれもUSBデバイス制御部であることには変わりがない。そのため、複合機200は、使用するデバイス制御部を変更し上記実施例と同一の処理(プロトコル)を実行することでファームウェアの更新をすることができる。なお、パーソナルコンピュータPCから複合機200に送出されるファームウェアデータとしては、パーソナルコンピュータPCがLANを介して取得したデータを順次転送するものとしてもよく、パーソナルコンピュータPCが備える記録媒体に予め格納されたデータを転送するものとしてもよい。
D3.変形例3:
上記実施例では、本発明のファームウェアの更新を複合機200(図2)に適用しているが、本発明は、他のネットワーク装置にも適用することができる。一般に、本発明は、互いに通信チャンネルにより接続された複数の制御部を備え、複数の制御部のうち少なくとも1つの制御部によりネットワークに接続されるネットワーク装置に適用することができる。本発明は、ネットワークプリンタやネットワークスキャナ等の単独でサービスを提供しうるネットワーク装置と、ネットワーク処理機能を持たない装置を接続しその装置の機能をサービスとしてLANに提供するネットワーク装置(例えば、UPnPブリッジ)と、のいずれにも適用することができる。