以下、本発明の実施例について、図面と共に説明する。
[1.各装置の概略説明]
図1は、本発明が適用されたディジタル複合機1の構成を表すブロック図である。本実施例の複合機1は、コピー機能、プリンタ機能、スキャナ機能、ファクシミリ機能、USBデバイスサーバ機能、及び、コンテンツ収集機能を有し、制御部10にて、各種処理を実行することにより、上述の機能を実現する。
具体的に、複合機1は、制御部10の他、印刷部21、読取部23、FAX通信部25、操作部27、表示部29、USBホストコントローラ31、USBルートハブ33、LANインタフェース35を備え、これらを用い、上述の機能を実現する。
制御部10は、各種プログラムを実行するCPU11、各種プログラムを記憶するROM13、作業用メモリとしてのRAM15、及び、設定情報等を記憶するEEPROM17を備え、CPU11にて、プログラムを実行することにより、装置内各部を統括制御し、各種機能を実現する。
印刷部21は、レーザプリンタ方式又はインクジェット方式にて、用紙に画像を形成するものであり、制御部10に制御されて、給紙部(図示せず)から用紙を取り込み、この用紙に、制御部10から与えられた画像データに対応する画像を印刷する。この印刷部21は、コピー機能、プリンタ機能、ファクシミリ機能を実現する際に用いられる。
また、読取部23は、載置部(図示せず)に載置された原稿を光学的に読み取り、読取画像を表す画像データを生成するものである。この読取部23は、制御部10に制御されて、原稿を読み取り、生成した画像データを制御部10に提供する。この読取部23は、コピー機能、ファクシミリ機能、スキャナ機能を実現する際に用いられる。
また、FAX通信部25は、制御部10から与えられた画像データを、ファクシミリ信号により、公衆電話回線網(PSTN)を通じ、外部のファクシミリ装置に送信すると共に、外部のファクシミリ装置から、公衆電話回線網(PSTN)を通じて送信されてきたファクシミリ信号を、制御部10が取扱い可能な画像データに変換して、ファクシミリ送受信を実現する。
その他、操作部27は、ユーザが操作可能な各種キーを有し、キーを通じてユーザの操作を受け付け、その操作内容を制御部10に通知する構成にされている。また、表示部29は、液晶ディスプレイからなり、制御部10に制御されて、各種情報を、ユーザに向け、文字又は画像の形態で表示する。
また、USBホストコントローラ31及びUSBルートハブ33は、USBインタフェースを構成するものであり、USBホストコントローラ31は、制御部10に制御されて、USB方式の通信信号(物理信号)を生成し、これをUSBルートハブ33に出力すると共に、USBデバイス5からUSBルートハブ33を介して送信されてくる通信信号を受信して、USBルートハブ33に接続された各USBデバイス5と通信し、制御部10から入力されるUSBデータを、このUSBデータが宛先とするUSBデバイス5に送信すると共に、USBデバイス5から受信したUSBデータを、制御部10に入力する。また、USBルートハブ33は、USBホストコントローラ31からの出力を分岐する構成にされ、各分岐先にUSBコネクタCNを備え、このUSBコネクタCNに、複数のUSBデバイス5を接続可能な構成にされている。
尚、本実施例では、上述のコンテンツ収集機能に用いられる音楽プレーヤ50が、USBデバイス5として、USBコネクタCNに接続される。このコンテンツ収集機能に用いられる音楽プレーヤ50は、MPEG方式の音楽データ等を再生可能なディジタルプレーヤであり、音楽データを記憶するための記憶部として、半導体メモリ製や磁気記録型の記憶部50aを備える。また、USBデバイス5としては、音楽プレーヤ50の他、USBメモリ等の携帯型記憶装置を挙げることができ、コンテンツとしては、ウェブページや、サーバ装置から提供されるテキストデータ、音楽データ、音声データ、画像データ、映像データ等を挙げることができる。
その他、複合機1が備えるLANインタフェース35は、複合機1が設置されるオフィスのローカルエリアネットワークNTに接続され、制御部10に制御されて、ネットワークNT内のノードと通信する。具体的に、本実施例のローカルエリアネットワークNTは、IP(インターネットプロトコル)ネットワークとして構成され、このネットワークNT内には、複合機1のUSBデバイス5をネットワークNT経由で制御可能な機能を有するパーソナルコンピュータ(以下、「PC」とする。)70と、ネットワークNTを広域ネットワークとしてのインターネットに接続するルータRTと、が設けられている。
ルータRTより先のインターネットには、周知のように、文字コンテンツや、静止画コンテンツ、動画コンテンツ、音楽(音声)コンテンツ等を配信するサーバ装置SVが設けられており、複合機1は、LANインタフェース35を通じて、インターネット上のサーバ装置SVから、各種コンテンツを取得する構成にされている。
即ち、このLANインタフェース35は、上述のコンテンツ収集機能を実現する際や、USBデバイスサーバ機能を実現する際に用いられる。USBデバイスサーバ機能とは、複合機1に接続されたUSBデバイス5を、ネットワークNT経由で利用可能にする機能のことである。
図2は、USBデバイスサーバ機能に関する説明図である。USBデバイスサーバ機能は、制御部10によりソフトウェア的に実現されるため、図2(a)では、制御部10にて実行される各プログラムの関係、及び、プログラムとハードウェアとの関係を、ブロック図で示す。
本実施例の複合機1は、USBデバイスサーバ機能の他に、制御部10にて実行されるアプリケーションソフトウェアからの指令に従って、USBデバイス5を制御する内部制御機能を有し、各機能は、USB管理プログラム107により切り替えられて実現される。尚、本実施例では、複合機1のアプリケーションソフトウェアとして、サーバ装置SVからコンテンツを収集し音楽プレーヤ50に収集したコンテンツを記録する機能を有したソフトウェア(以下、「コンテンツ収集ソフト」と称する。)109が、複合機1にインストールされている。
具体的に、制御部10は、USBデバイスサーバ機能を実現するに当たって、USBIP101、デバイスブリッジ103a、USBホストコントローラドライバ105の各プログラムを実行する。デバイスブリッジ103aは、USBデバイスサーバ機能を実現する際、USBドライバ103bに代えてロードされ、CPU11により実行される。換言すると、USBデバイスサーバ機能に代えて内部制御機能を実現する際、CPU11は、デバイスブリッジ103aに代えて、USBドライバ103bをロードして実行する。
USBIP101は、LANインタフェース35を通じてネットワークNTから受信したIPパケットが内包するUSBデータを、IPパケットから抽出し、このUSBデータを、USBデータが宛先とするUSBデバイス5に対応するデバイスブリッジ103aに入力すると共に、デバイスブリッジ103aから入力されたUSBデータを、IPパケット化して、これをネットワークNTに送出するプログラム(所謂、USB OVER IP(登録商標)プログラム)である。
このUSBIP101に対しては、USB管理プログラム107により、IPアドレスとUSBデバイス5との対応関係が設定され、これにより、USBデバイス5からデバイスブリッジ103a経由で入力されたUSBデータは、当該USBデバイス5に対応付けられたIPアドレスに対応する外部PC70に送信され、外部PC70からのIPパケット化されたUSBデータは、対応するUSBデバイス5に伝送され、外部PC70−USBデバイス5間のUSBデータの授受が実現される。
また、デバイスブリッジ103aは、USBIP101−USBホストコントローラドライバ105間のUSBデータの中継を行うものであり、USBIP101から入力されたUSBデータを、USBホストコントローラドライバ105に伝送すると共に、USBホストコントローラドライバ105から入力されたUSBデータを、USBIP101に伝送する機能を有する。
この他、USBホストコントローラドライバ105は、入力された送信対象のUSBデータを、USBホストコントローラ31を制御して、USBホストコントローラ31から下流(USBルートハブ33側)の伝送路に物理信号として出力し、上記USBデータが宛先とするUSBデバイス5に、このUSBデータを送信すると共に、USBデバイス5からUSBルートハブ33を通じて送信されてきたUSBデータを、USBホストコントローラ31を介して受信して、USBデータ送信元のUSBデバイス5に対応するUSBドライバ103b又はデバイスブリッジ103aに、受信したUSBデータを伝送する機能を有する。
また、デバイスブリッジ103aに代えて、内部制御機能の実現時にロードされるUSBドライバ103bは、周知のように、USBデバイス5を制御するためのプログラムであり、USBデバイス5を利用する複合機1のアプリケーションソフトウェアからの指令に従って、その指令に対応する操作をUSBデバイス5に加えるためのUSBデータ(制御データ)を生成し、これをUSBホストコントローラドライバ105経由でUSBデバイス5に送信すると共に、USBデバイス5からUSBホストコントローラドライバ105経由で送信されてきたUSBデータを、アプリケーションソフトウェアに提供するものである。
即ち、複合機1では、内部制御機能の実現時、USBドライバ103bがロードされて、図2(b)に示すように、USBドライバ103b、USBホストコントローラドライバ105からなるUSBデバイス5の制御系が構築される。一方、USBデバイスサーバ機能の実現時には、USBドライバ103bではなくデバイスブリッジ103aがロードされて、図2(c)に示すように、USBIP101、デバイスブリッジ103a、USBホストコントローラドライバ105からなるUSBデバイス5の制御系が構築される。
尚、上述したように、デバイスブリッジ103a及びUSBドライバ103bは、USB管理プログラム107によって、USBデバイス5毎に、切り替えられてロードされる。また、切替は、例えば、EEPROM17に記憶されたデバイス共有テーブルTBL1の共有設定情報に基づいて、行われる。図3は、EEPROM17が記憶するデバイス共有テーブルTBL1の構成を表す説明図である。
図3に示すように、EEPROM17が記憶するデバイス共有テーブルTBL1は、USBデバイス毎の共有設定情報からなる。即ち、制御部10は、USBデバイス毎に設けられた共有設定情報dev1〜devNに基づき、各USBデバイス5を、対応USBデバイス5の共有設定情報devi(i=1〜N)が示す設定情報に従って、制御する。
尚、共有設定情報devi(i=1〜N)は、当該共有設定情報に対応するUSBデバイス5に割り当てられたデバイスIDと、USBバージョン番号、デバイスクラス、ベンダID、及び、プロダクトIDを表すデバイス情報と、モード指定情報と、接続許可ホスト情報とからなる。
モード指定情報は、「共有モード」及び「非共有モード」のいずれかの値を採るものであり、モード指定情報が「共有モード」を示す場合、制御部10は、対応するUSBデバイス5に対してUSBデバイスサーバ機能を働かせ、このUSBデバイス5をネットワークNT上の端末装置から利用できるようにする。一方、モード指定情報が「非共有モード」を示す場合、制御部10は、対応するUSBデバイス5に対して内部制御機能を働かせ、このUSBデバイス5を、自装置内でのみ利用可能とする。
また、接続許可ホスト情報は、モード指定情報が「共有モード」の場合にのみ有効に機能するものであり、許可ホスト数情報と、接続許可ホスト毎のアドレスユーザ情報と、からなる。尚、ここでいう接続許可ホストとは、USBデバイスサーバ機能を通じたネットワークNT経由でのUSBデバイス5の利用を許可されたネットワークNT上の端末装置のことである。
許可ホスト数情報は、当該USBデバイス5のネットワークNT経由の利用が許可された接続許可ホストの数を表す情報であり、この数は、アドレスユーザ情報の個数に一致する。また、接続許可ホスト毎のアドレスユーザ情報は、接続許可ホストのMACアドレスと、この接続許可ホストからのUSBデバイス5の利用が許可されたユーザのリストと、からなる。尚、このユーザリストは、USBデバイス5の利用が許可されたユーザの名称が列挙されてなる。
この共有設定情報は、USBデバイスの初回接続時に、USB管理プログラム107によって、EEPROM17が記憶するデバイス共有テーブルTBL1に生成・登録され、その後、操作部27を通じて入力されるユーザからの指示に従って編集され、更新される。
続いて、複合機1に接続されたUSBデバイス5を利用可能なPC70の構成について説明する。図4は、PC70の構成を表すブロック図である。
本実施例のPC70は、周知のPC70と同様のハードウェア構成にされており、制御部80と、各種プログラムを記憶するハードディスク装置91と、液晶ディスプレイ等からなる表示部93と、キーボードやポインティングデバイス等からなる操作部95と、LANインタフェース97と、を備える。
LANインタフェース97は、複合機1と同一のネットワークNTに接続され、複合機1と通信可能な構成にされている。また、制御部80は、各種プログラムを実行するCPU81、ブートプログラム等を記憶するROM83、作業用メモリとしてのRAM85を備え、CPU81にて各種プログラムを実行することにより、装置内各部を統括制御し、各種機能を実現する。例えば、制御部80は、LANインタフェース97を介して、複合機1と通信し、複合機1に画像データを送信して、複合機1に、送信した画像データに基づく画像を、用紙に印刷させる。
その他、制御部80は、自装置にインストールされたアプリケーションソフトウェアからの指令に従って、複合機1に接続されたUSBデバイス5を、ネットワーク経由で制御する。例えば、制御部80は、自装置にインストールされた音楽再生ソフトウェアからの指令に従って、複合機1に接続された音楽プレーヤ50を、ネットワーク経由で制御し、音楽プレーヤ50が記憶するコンテンツを、ネットワーク経由で読み出して、例えば、音楽コンテンツを再生処理する。
図5は、PC70の制御部80が、ネットワーク経由でUSBデバイス5を制御するに当たって、実行するプログラムに関する説明図であり、制御部80が実行する各プログラムの関係、及び、プログラムとハードウェアとの関係をブロック図で示したものである。
具体的に、制御部80は、ネットワーク経由でUSBデバイス5を制御するに当たって、USBドライバ801、仮想USBホストコントローラドライバ803、USBIP805の各プログラムを実行する。
USBIP805は、LANインタフェース97を通じてネットワーク経由で受信したIPパケットが内包するUSBデータを、IPパケットから抽出して、仮想USBホストコントローラドライバ803に入力すると共に、仮想USBホストコントローラドライバ803から入力されたUSBデータを、IPパケット化して、USBデータが宛先とするUSBデバイス5が接続された複合機1に送信するプログラム(所謂、USB OVER IP(登録商標)プログラム)である。
このUSBIP805に対しては、リモートデバイス管理プログラム807により、USBデバイス5と、このUSBデバイス5を有する複合機1のIPアドレスとの対応関係が設定され、これにより、複合機1に接続されたUSBデバイス5と、当該PC70との通信が実現される。
また、仮想USBホストコントローラドライバ803は、USBドライバ801−USBIP805間のUSBデータを中継するプログラムであり、USBIP805から入力されたUSBデータを、送信元のUSBデバイス5に対応するUSBドライバ801に入力すると共に、USBドライバ801から入力されたUSBデータを、USBIP805に入力するものである。
また、USBドライバ801は、USBデバイス5を制御するためのプログラムであり、USBデバイス5を利用するアプリケーションソフトウェアからの指令に従って、その指令に対応する操作をUSBデバイス5に加えるためのUSBデータ(制御データ)を生成し、これを仮想USBホストコントローラドライバ803経由でネットワークNT上のUSBデバイス5に送信すると共に、ネットワークNT上のUSBデバイス5から送信されてきたUSBデータを、仮想USBホストコントローラドライバ803経由で受け取り、これをアプリケーションソフトウェアに提供するものである。
その他、リモートデバイス管理プログラム807は、上記対応関係の設定と共に、USBデバイス5に対する接続要求、接続解除要求等を、ユーザからの指示に従って、複合機1に送信する機能を有する。
以上、PC70及び複合機1に関し、装置構成の概略を説明したが、続いて複合機1で実現される処理を、具体的に説明する。
[2.ディジタル複合機のUSB管理プログラムによって実現される処理]
上述したようにUSB管理プログラム107は、複合機1に接続された各USBデバイス5に対し、USBデバイス毎に、USBデバイスサーバ機能及び内部制御機能のいずれか一方を働かせる機能を有するが、この機能は、以下に説明する処理によって実現される。
図6は、USBコネクタCNにUSBデバイス5が接続されると、USB管理プログラム107に従って、制御部10が実行する接続受付処理を表すフローチャートである。
制御部10は、接続受付処理を開始すると、まず、USBデバイス5からデバイスディスクリプタを取得するためにUSBドライバをロードして(S110)、今回USBコネクタCNに接続されたUSBデバイス5からデバイスディスクリプタを取得する(S120)。その後、S110でロードしたUSBドライバをアンロードする(S125)。周知のように、デバイスディスクリプタは、USBデバイス5のデバイス情報を示すものであり、USBバージョン番号やデバイスクラス、ベンダID、プロダクトID等が記述されてなるものである。
また、S125の処理を終えると、制御部10は、取得したデバイスディスクリプタが示す情報に基づき、EEPROM17が記憶するデバイス共有テーブルTBL1において、今回接続されたUSBデバイス5の共有設定情報を検索し(S130)、対応する共有設定情報がない場合には(S140でNo)、S150に移行し、対応する共有設定情報がある場合には(S140でYes)、S160に移行する。
尚、EEPROM17が記憶するデバイス共有テーブルTBL1に、今回接続されたUSBデバイス5の共有設定情報が存在するか否かは、デバイス共有テーブルTBL1に登録された各共有設定情報が有するデバイス情報に基づいて判断する。即ち、S120で取得したデバイスディスクリプタが示すUSBバージョン番号、デバイスクラス、ベンダID及びプロダクトIDと同一のデバイス情報を示す共有設定情報が、デバイス共有テーブルTBL1に登録されている場合、制御部10は、今回接続されたUSBデバイス5の共有設定情報がデバイス共有テーブルTBL1に存在すると判断し、そうでない場合には、対応する共有設定情報が存在しないと判断する。
S150に移行すると、制御部10は、デバイス共有テーブルTBL1に、今回接続されたUSBデバイス5の共有設定情報を、登録する。具体的には、デバイスIDとして、このUSBデバイス5に割り当てたIDを記述し、デバイス情報として、デバイスディスクリプタが示すUSBバージョン番号、デバイスクラス、ベンダID及びプロダクトIDを記述し、モード指定情報として、「非共有モード」を記述し、接続許可ホスト情報として、空の情報を設定してなる共有設定情報を生成し、これをデバイス共有テーブルTBL1に登録する。また、このようにして共有設定情報を、デバイス共有テーブルTBL1に登録すると、制御部10は、S160に移行する。
S160に移行すると、制御部10は、RAM15が記憶する接続デバイステーブルTBL2に、今回接続されたUSBデバイス5の接続デバイス情報を登録する。図7は、RAM15が記憶する接続デバイステーブルTBL2の構成を表す説明図である。
接続デバイステーブルTBL2は、USBコネクタCNに接続されたUSBデバイス5の情報を管理するものであり、USBコネクタCNに接続されたUSBデバイス毎に、接続デバイス情報を有する。即ち、この接続デバイステーブルTBL2には、S160の処理により、USBコネクタCNにUSBデバイス5が接続される度、接続されたUSBデバイス5の接続デバイス情報が登録される。
具体的に、接続デバイス情報は、接続されたUSBデバイス5のデバイスIDと、このUSBデバイス5に「共有モード」及び「非共有モード」のいずれが設定されているかを表すモード情報と、USBデバイス5への最終アクセス時刻の情報と、接続ホスト情報と、USBデバイス5を前回占有していたネットワークNT上の端末装置のMACアドレスである前接続ホストMACアドレスの情報と、を有する。
尚、接続ホスト情報は、現在において、該当USBデバイス5を占有するネットワークNT上の端末装置のMACアドレス、及び、このUSBデバイス5を利用するユーザ名の情報からなる。
詳述すると、S160において、制御部10は、今回接続されたUSBデバイス5の共有設定情報deviに基づき、共有設定情報が示すモードと同一のモードを表す値(「共有モード」又は「非共有モード」)を、モード情報として記した接続デバイス情報であって、接続ホスト情報、最終アクセス時刻及び前接続ホストMACアドレスの情報を、空情報とした接続デバイス情報を生成し、これを接続デバイステーブルTBL2に登録する。
また、S160での処理を終えると、制御部10は、当該接続受付処理を終了する。
続いて、USBデバイス5に対する接続要求を処理するために、制御部10が、USB管理プログラム107に基づいて実行する接続要求受付処理について説明する。図8は、接続要求が発生すると、制御部10が実行する接続要求受付処理を表すフローチャートである。
接続要求受付処理を開始すると、制御部10は、接続要求元がネットワークNT上の端末装置であるか否かを判断する(S210)。
そして、接続要求元がネットワークNT上の端末装置ではなく自装置のアプリケーションソフトウェアであると判断すると(S210でNo)、S230にて、接続要求されたUSBデバイス5に適合するUSBドライバ103bをロードして、接続要求されたUSBデバイス5の制御系として、USBドライバ103bを用いたUSBデバイス5の制御系を構築する。その後、当該接続要求受付処理を終了する。但し、自装置のアプリケーションソフトウェアから接続要求があった時点で、既に対応するUSBデバイス5のUSBドライバ103b又はデバイスブリッジ103aがロードされ、接続要求されたUSBデバイス5の制御系が構築されている場合には、S230で何ら処理を実行することなく、当該接続要求受付処理を終了する。
一方、S210において、接続要求元がネットワークNT上の端末装置であると判断すると(S210でYes)、制御部10は、接続要求元が、予めUSBデバイス5の利用を許可された接続許可ホスト及びユーザに該当する正当な者であるか否かを判断する(S240)。尚、この判断は、EEPROM17に記録されたデバイス共有テーブルTBL1に基づいて行われる。
即ち、制御部10は、S240において、接続要求されたUSBデバイス5の共有設定情報deviを参照し、参照した共有設定情報が示すモードが「共有モード」であるかを判断する。そして、参照した共有設定情報が示すモードが「共有モード」ではない場合、接続要求元が正当な者ではないと判断する。
一方、参照した共有設定情報が示すモードが「共有モード」である場合には、その共有設定情報が示す接続許可ホスト情報に基づき、接続要求元がUSBデバイス5の利用を許可された接続許可ホスト及びユーザに該当するかを判断する。尚、接続要求には、接続要求元のMACアドレス及びユーザ名の情報が付加されており、上記判断は、接続要求に付加された情報と、接続許可ホスト情報との比較により行う。
但し、本実施例では、共有設定情報が示すモードが「共有モード」であるにも拘わらず、接続許可ホスト情報が空情報である場合、USBデバイス5が全ての端末装置に開放されているとして取り扱い、接続要求に付加されたMACアドレス及びユーザ名の情報によらず、全ての端末装置に対し、接続要求元が正当な者であると判断する。
そして、参照した共有設定情報に基づき、接続要求元が正当な者ではないと判断すると(S240でNo)、制御部10は、当該接続要求受付処理を終了し、正当な者であると判断すると(S240でYes)、S250に移行する。尚、本実施例では、S240での判断時に、接続要求されたUSBデバイス5についての制御系が既に構築されており、USBデバイス5が他の者に占有されている場合、接続要求元が正当なものではないと取り扱って、当該接続要求受付処理を終了する。
また、S250に移行すると、制御部10は、デバイスブリッジ103aをロードして、今回接続要求があったUSBデバイス5の制御系として、デバイスブリッジ103aを用いたUSBデバイス5の制御系(図2(c)参照)を構築する。また、S250でデバイスブリッジ103aをロードした後には、USBIP101に対して、接続要求元のIPアドレスと接続要求されたUSBデバイス5との対応関係を設定し(S260)、接続要求されたUSBデバイス5と接続要求元の端末装置とをUSB通信可能に接続する。
また、S260での処理を終えると、制御部10は、接続要求されたUSBデバイス5の接続デバイス情報を、接続デバイステーブルTBL2において編集し、該当接続デバイス情報を構成する接続ホスト情報を、今回接続要求してきた端末装置のMACアドレスとユーザ名とからなる情報に更新すると共に、最終アクセス時刻を現在時刻に更新する(S270)。その後、当該接続要求受付処理を終了する。
続いて、一度構築されたUSBデバイス5の制御系の解除を要求する接続解除要求を処理するために、制御部10が、USB管理プログラム107に基づいて実行する接続解除要求受付処理について説明する。図9は、接続解除要求が発生すると、制御部10が実行する接続解除要求受付処理を表すフローチャートである。
接続解除要求受付処理を開始すると、制御部10は、接続解除要求が正当な要求であるか否かを判断する(S310)。具体的に、接続解除要求が示す接続解除対象のUSBデバイス5が、非共有モードで動作している場合、制御部10は、自装置内のアプリケーションソフトウェアから発生した接続解除要求を、正当な要求と取り扱い、ネットワークNT経由で受信した接続解除要求を、正当でない要求として取り扱う。
また、接続解除要求が示す接続解除対象のUSBデバイス5が、共有モードで動作している場合、制御部10は、自装置内のアプリケーションソフトウェアから発生した接続解除要求及び接続解除対象のUSBデバイス5に接続中の端末装置から、ネットワークNT経由で受信した接続解除要求を、正当な要求であると取り扱い、非接続中のネットワークNT上の端末装置から受信した接続解除要求を、正当でない要求であるとして取り扱う。
そして、接続解除要求が正当な要求ではないと判断すると(S310でNo)、制御部10は、S330以降の処理を実行することなく、当該接続解除要求受付処理を終了する。
一方、接続解除要求が正当な要求であると判断すると(S310でYes)、制御部10は、接続解除要求が、ネットワークNT上の端末装置が占有するUSBデバイス5に対する接続解除要求であるか否かを判断し(S330)、接続解除要求が、ネットワークNT上の端末装置が占有するUSBデバイス5に対する接続解除要求であると判断すると(S330でYes)、このUSBデバイス5の制御系を構成するデバイスブリッジ103aをアンロードして(S340)、デバイスブリッジ103aを用いたUSBデバイス5の制御系を一旦解除し、当該USBデバイス5を利用していたネットワークNT上の端末装置から、USBデバイス5を使えないようにする。
また、S340での処理を終えると、制御部10は、接続デバイステーブルTBL2における接続解除要求のあったUSBデバイス5の接続デバイス情報が内包する接続ホスト情報をクリアして、接続解除要求のあったUSBデバイス5に対応する接続デバイス情報を更新する(S350)。その後、当該接続解除要求受付処理を終了する。
一方、S330において、接続解除要求が、ネットワークNT上の端末装置が占有するUSBデバイス5に対する接続解除要求ではないと判断すると(S330でNo)、このUSBデバイス5の制御系を構成するUSBドライバ103bをアンロードして(S360)、USBドライバ103bを用いたUSBデバイス5の制御系を一旦解除し、USBデバイス5を利用できないようにする。そして、この処理を終えると、当該接続解除要求受付処理を終了する。
尚、接続解除要求がデバイスブリッジ103aもUSBドライバ103bもロードされていない接続解除済のUSBデバイス5に対する接続要求である場合には、S330でNoと判断して、S360で何ら処理を実行することなく、当該接続解除要求受付処理を終了する。
また、当該複合機1のUSBコネクタCNに接続されたUSBデバイス5は、上述の接続解除を受けて、USBコネクタCNから取外し可能な状態となるわけであるが、制御部10は、USBコネクタCNからUSBデバイス5が外された場合に必要な処理を実行するため、図10に示す取外受付処理も実行する。尚、図10は、複合機1のUSBコネクタCNからUSBデバイス5が取り外されると、制御部10が実行する取外受付処理を表すフローチャートである。
取外受付処理を開始すると、制御部10は、USBコネクタCNより取り外されたUSBデバイス5の接続デバイス情報を特定する(S410)。また、この処理を終えると、S410により特定された接続デバイス情報を、接続デバイステーブルTBL2から削除する(S420)。その後、当該取外受付処理を終了する。
その他、本実施例におけるUSB管理プログラム107は、接続デバイステーブルTBL2の各接続デバイス情報が示す最終アクセス時刻を更新する機能を有する。この機能は、制御部10が、USB管理プログラム107に基づき実行する最終アクセス時刻更新処理にて実現される。尚、図11は、制御部10が実行する最終アクセス時刻更新処理を表すフローチャートである。この最終アクセス時刻更新処理は、USBデバイス5に対するアクセス(書込/読出のアクセス)があると、制御部10により実行される。
最終アクセス時刻更新処理を開始すると、制御部10は、接続デバイステーブルTBL2内で、アクセスのあったUSBデバイス5の接続デバイス情報を特定する(S510)。また、この処理を終えると、S520に移行し、アクセスのあったUSBデバイス5の接続デバイス情報が示す最終アクセス時刻を、現在時刻に更新する。その後、当該最終アクセス時刻更新処理を終了する。制御部10は、このような処理を実行することにより、逐次、最終アクセス時刻を更新し、接続デバイス情報に、各USBデバイス5への最終アクセス時刻を記す。
以上、USB管理プログラム107により実現される処理について説明したが、続いて、コンテンツ収集機能に係る処理について説明する。
[3.ディジタル複合機のコンテンツ収集ソフトによって実現される処理]
上述したコンテンツ収集機能は、複合機1にインストールされたコンテンツ収集ソフト109を、制御部10が実行することにより、実現される。具体的に、この機能は、コンテンツ収集ソフト109に基づいて、制御部10が、図12に示す処理を実行することにより実現される。図12は、制御部10が繰返し実行するコンテンツ更新管理処理を表すフローチャートである。
コンテンツ更新管理処理を開始すると、制御部10は、まず、参照番号kを初期化し、k=0に設定する(S610)。その後、参照番号kが、EEPROM17が記憶するコンテンツ更新情報テーブルTBL3(図13参照)において登録されたコンテンツ更新情報のインデックス番号の最大値Mより大きいか否かを判断し(S620)、大きいと判断すると(S620でYes)、当該コンテンツ更新管理処理を終了する。一方、参照番号が最大値M以下であると判断すると(S620でNo)、S630に移行する。
図13は、EEPROM17が記憶するコンテンツ更新情報テーブルTBL3の構成を表す説明図である。このコンテンツ更新情報テーブルTBL3は、コンテンツ取得先のサーバ装置SVが有するRSSデータのURLが記述されてなるものであり、初回のURL登録時に、EEPROM17に生成される。換言すると、コンテンツ更新管理処理は、このコンテンツ更新情報テーブルTBL3が生成された後、実行される。
図13に示すように、コンテンツ更新情報テーブルTBL3は、RSSデータの取得先URL毎に、コンテンツ更新情報を有する。
コンテンツ更新情報は、RSSデータによる配信コンテンツの書込先USBデバイスを表すデバイスIDの情報と、RSSデータの取得先URLと、最後にRSSデータの配信コンテンツを取得してコンテンツを書込先USBデバイスに書き込んだ時刻である最終更新時刻の情報と、次回RSSデータの配信コンテンツを取得して書込先USBデバイスに書き込むべき時刻である次回更新時刻の情報と、からなる。尚、コンテンツ更新情報テーブルTBL3においては、これらのコンテンツ更新情報のインデックス番号が、コンテンツ更新情報テーブルTBL3に登録されたコンテンツ更新情報の順に、値0から順に割り当てられている。
また、コンテンツ更新情報テーブルTBL3には、ユーザからの指示に基づいて、コンテンツ更新情報が登録されるが、このとき、コンテンツ更新情報は、最終更新時刻及び次回更新時刻が空の状態で生成され、コンテンツ更新情報テーブルTBL3に登録される。
このような構成のコンテンツ更新情報テーブルTBL3を参照して、参照番号kが値M以下であると判断すると(S620でNo)、コンテンツ更新情報テーブルTBL3においては、S630以降の処理が未処理のコンテンツ更新情報が存在するということであるため、制御部10は、S630にて、コンテンツ更新情報テーブルTBL3における参照番号kに一致するインデックス番号kのコンテンツ更新情報を、読み出す。
そして、この処理を終えると、制御部10は、現在時刻が、インデックス番号kのコンテンツ更新情報が示す次回更新時刻を、経過しているか否かを判断する(S640)。そして、現在時刻が、インデックス番号kのコンテンツ更新情報が示す次回更新時刻を経過していると判断すると(S640でYes)、S645に移行し、経過していないと判断すると(S640でNo)、S780に移行する。
S645に移行すると、制御部10は、インデックス番号kのコンテンツ更新情報が示すデバイスIDに対応するコンテンツの書込先USBデバイスが、USBコネクタCNに接続されているか否かを判断し、USBコネクタCNに、書込先USBデバイスが接続されていると判断すると(S645でYes)、S650に移行し、接続されていないと判断すると(S645でNo)、S780に移行する。尚、S645では、接続デバイステーブルTBL2に書込先USBデバイスの接続デバイス情報が登録されているか否かを判断することにより、USBコネクタCNに、書込先USBデバイスが接続されているか否かを判断する。
また、S650に移行すると、制御部10は、インデックス番号kのコンテンツ更新情報が示すデバイスIDに対応する上記書込先USBデバイスが、ネットワークNT上の端末装置に占有されているか否かを判断する。即ち、接続デバイステーブルTBL2を参照して、書込先USBデバイスの接続ホスト情報に、接続中ホストのMACアドレスが登録されているかを判断する。
そして、書込先USBデバイスが、ネットワークNT上の端末装置に占有されていないと判断すると(S650でNo)、制御部10は、S660に移行し、書込先USBデバイスが自装置にて占有されているか否かを判断する。即ち、書込先USBデバイスに対して内部制御機能が働いているか否かを判断する。
そして、書込先USBデバイスが自装置にて占有されていると判断すると(S660でYes)、制御部10は、S700に移行して、図14に示すコンテンツ更新処理を実行することで、インターネット上のサーバ装置SVからコンテンツを取得し、書込先USBデバイスに、コンテンツを書き込む。尚、本実施例における書込先USBデバイスは、音楽再生、静止画・動画再生、及び、テキスト文書の表示が可能な携帯型の音楽プレーヤ50であるものとする。また、S700での処理を終えると、制御部10は、S780に移行する。
一方、S660で、書込先USBデバイスが自装置にて占有されていないと判断すると(S660でNo)、制御部10は、S670に移行し、書込先USBデバイスに対応するUSBドライバ103bをロードして、図2(b)に示す制御系を構築し、自装置と書込先USBデバイスとを論理接続し、コンテンツ収集ソフト109から書込先USBデバイスを利用できるようにする。
また、この処理を終えると、制御部10は、S680に移行し、図14に示すコンテンツ更新処理を実行することで、インターネット上のサーバ装置SVからコンテンツを取得し、書込先USBデバイスに、コンテンツを書き込む。
また、S680においてコンテンツ更新処理を終了すると、制御部10は、S690に移行し、S670で読み出したUSBドライバ103bをアンロードして、書込先USBデバイスの制御系を解除し、自装置と書込先USBデバイスとの論理接続を解除する。また、この処理を終えると、制御部10は、S780に移行する。
この他、制御部10は、S650において、書込先USBデバイスが、ネットワークNT上の端末装置に占有されていると判断すると(S650でYes)、S710に移行して、現時点で、書込先USBデバイスの接続デバイス情報が示す最終アクセス時刻から予め定められた一定時間が経過しているか否かを判断する。そして、最終アクセス時刻から一定時間が経過していないと判断すると(S710でNo)、S780に移行する。
一方、最終アクセス時刻から一定時間が経過していると判断すると(S710でYes)、制御部10は、S720に移行し、現在書込先USBデバイスを占有している接続ホストのMACアドレスを、前接続ホストMACアドレスとして、書込先USBデバイスの接続デバイス情報に書き込む。
また、この処理を終えると、制御部10は、S730に移行して、書込先USBデバイスのデバイスブリッジ103aをアンロードして、書込先USBデバイスの制御系を一旦解除することで、接続ホストと書込先USBデバイスとの接続を解除する。その後、S740に移行する。
また、S740に移行すると、制御部10は、書込先USBデバイスに対応するUSBドライバ103bをロードして、図2(b)に示す書込先USBデバイスの制御系を構築して、自装置と書込先USBデバイスとを論理的に接続する。また、この際には、書込先USBデバイスの接続ホスト情報を、クリアする。
この他、S740での処理を終えると、制御部10は、S750に移行し、図14に示すコンテンツ更新処理を実行することで、インターネット上のサーバ装置SVからコンテンツを取得し、書込先USBデバイスに、コンテンツを書き込む。また、S750での処理を終えると、S760に移行して、S740でロードしたUSBドライバ103bをアンロードし、自装置と書込先USBデバイスとの論理的な接続を解除することで、書込先USBデバイスを開放する。
また、S760での処理を終えると、制御部10は、S770に移行し、S730でアンロードした書込先USBデバイスのデバイスブリッジ103aをロードして、前接続ホストと書込先USBデバイスとを再接続する。その後、S780に移行する。
また、S780に移行すると、制御部10は、参照番号kを1加算し(S780)、加算後の参照番号kが、最大値Mより大きいか否かを判断し(S620)、参照番号kが最大値Mより大きいと判断すると(S620でYes)、当該コンテンツ更新管理処理を終了する。一方、参照番号kが最大値M以下である場合には(S620でNo)、前段階でのS780におけるカウントアップ後の参照番号kに一致するインデックス番号kのコンテンツ更新情報を、読み出し(S630)、S640以降の処理を実行する。
制御部10は、このようにしてコンテンツ更新管理処理を実行するが、このコンテンツ更新管理処理のS680,S700,S750においては、以下に説明する内容のコンテンツ更新処理を実行する。図14は、制御部10が実行するコンテンツ更新処理を表すフローチャートである。
コンテンツ更新処理を開始すると、制御部10は、前段階で読み出したインデックス番号kのコンテンツ更新情報が示すRSSデータ取得先のURLに従い、URLに対応するRSSデータを、ネットワークNTを通じて、サーバ装置SVから取得する(S810)。
また、この処理を終えると、制御部10は、RSSデータを構成するITEM要素を、S830以降にて、全て処理したか否かを判断し、処理していないと判断すると(S820でNo)、S830に移行して、未処理のITEM要素を、一つ処理対象に選択し、選択した処理対象のITEM要素を解釈して(S840)、ITEM要素に対応する配信コンテンツが映像又は音声コンテンツであるか否かを、判断する(S850)。尚、配信コンテンツが映像又は音声コンテンツであるか否かは、例えば、ITEM要素内にenclosure要素が付加されているか否かで判断することができる。
そして、ITEM要素に対応する配信コンテンツが映像又は音声コンテンツであると判断すると(S850でYes)、ITEM要素が示すコンテンツ取得先のURLから、映像又は音声コンテンツを取得し(S860)、この取得コンテンツを、書込先USBデバイスの記憶部50aに書き込む(S865)。
尚、図15は、配信コンテンツが音声コンテンツであるITEM要素を有するRSSデータの一例を示した説明図である。
また、S865での処理を終えると、制御部10は、S820に移行して、再び、RSSデータを構成するITEM要素を、全て処理したか否かを判断する。そして、全ITEM要素を処理したと判断すると(S820でYes)、S900に移行し、全ITEM要素を処理していないと判断すると(S820でNo)、S830に移行する。
この他、S850において、処理対象のITEM要素に対応する配信コンテンツが映像又は音声コンテンツではないと判断すると(S850でNo)、制御部10は、S880に移行し、ITEM要素内のtitle要素及びdescription要素、及び、RSSデータが有するchannel要素内のtitle要素、description要素、copyright要素、及び、pubDate要素等に基づいて、配信コンテンツの要約文を表す印刷用画像データを生成する。尚、図16下段は、RSSデータが図16上段に示す構成にされている場合に、S880で生成する印刷用画像データの例を示した図である。
また、この処理を終えると、制御部10は、S885に移行して、S880で生成した印刷用画像データを印刷処理する。その他、S885での処理を終えると、制御部10は、S890に移行し、印刷用画像データと同様にして、ITEM要素内のtitle要素及びdescription要素、及び、RSSデータが有するchannel要素内のtitle要素、description要素、copyright要素、及び、pubDate要素等に基づいて、配信コンテンツの要約文を表す画面表示用データを生成する。尚、ここで生成する画面表示用データは、書込先USBデバイスの表示画面にコンテンツの要約文を表示するためのデータのことである。
また、この処理を終えると、制御部は、S895に移行して、S890で生成した配信コンテンツの要約文を表す画面表示用データを、書込先USBデバイスの記憶部50aに書き込む。その後、制御部は、S820に移行して、再び、RSSデータを構成するITEM要素を、全て処理したか否かを判断する。そして、全ITEM要素を処理したと判断すると(S820でYes)、S900に移行する。
また、S900に移行すると、制御部10は、コンテンツ更新情報テーブルTBL3におけるインデックス番号kのコンテンツ更新情報において、最終更新時刻を、現在時刻に設定すると共に、次回更新時刻を、現在時刻に当該RSSデータのttl要素が示す時間分を加算した未来の時刻に設定して、インデックス番号kのコンテンツ更新情報を更新する。尚、周知のようにRSSデータのttl要素が示す時間は、当該RSSデータが示す記事の有効期間を表す時間である。本実施例では、このttl要素が示す時間分経過した時刻を、次回更新時刻に設定することで、効率的にRSSデータをチェックする。
また、S900での処理を終えると、制御部10は、当該コンテンツ更新処理を終了する。
[4.まとめ]
以上、本実施例の複合機1の構成について説明したが、この複合機1では、ユーザにより指定されたモードを表すモード指定情報、及び、接続要求に基づいて、制御部10が、各USBデバイスに対し、USBデバイスサーバ機能及び内部制御機能のいずれか一方を働かせる。
そして、USBデバイスサーバ機能では、LANインタフェース35を通じてネットワークNT上の端末装置から入力されるUSBデータ(USBデバイス5に対する制御データ)を、USBホストコントローラ31を介してUSBデバイス5に伝送することで、ネットワークNT上の端末装置からの指令に従い、USBデバイス5を制御する。対して、内部制御機能では、自装置内部の処理主体(アプリケーションソフトウェア)からの指令に従い、USBホストコントローラ31を介してUSBデバイス5を制御する。
また、この複合機1においては、コンテンツ収集ソフト109により、制御部10が、LANインタフェース35を通じて、外部サーバ装置SVからコンテンツを取得し、自装置に接続された音楽プレーヤ50に、これを記録する。また、制御部10は、コンテンツ収集ソフト109により取得したコンテンツを、音楽プレーヤ50に書き込む際、音楽プレーヤ50がネットワークNT上の端末装置に占有されていないかどうか判断し、音楽プレーヤ50がネットワークNT上の端末装置に占有されている場合には、音楽プレーヤ50とネットワークNT上の端末装置の接続を解除して、音楽プレーヤ50と自装置とを論理接続し、コンテンツ収集ソフト109から音楽プレーヤ50への制御系を構築することで、コンテンツ収集ソフト109が収集したコンテンツを音楽プレーヤ50に書き込めるようにする。
従って、本実施例によれば、ネットワークNT上の端末装置が音楽プレーヤ50を長期に占有する環境下でも、サーバ装置SVから取得したコンテンツを、逐次、音楽プレーヤ50に蓄積することができる。
また、本実施例では、コンテンツ収集ソフト109により収集したコンテンツの音楽プレーヤ50への書込が終了次第、自装置と音楽プレーヤ50との接続を解除し、音楽プレーヤ50と前回の接続ホストとを再接続して、コンテンツ収集ソフト109のために変更したUSBデバイス5の制御系を元の状態に戻すので、ネットワークNT上の端末装置に対し、あまり影響を与えることなく、一時的に、コンテンツ収集ソフト109に音楽プレーヤ50を割り当てて、この音楽プレーヤ50にコンテンツを蓄積することができる。
また、本実施例では、コンテンツ更新情報テーブルTBL3に登録されているRSSデータ取得先URLが多数に及ぶなどの理由で、断続的にサーバ装置SVから、コンテンツが収集される場合に、毎度、ネットワークNT上の端末装置とUSBデバイス5との接続を解除すると、端末装置によるUSBデバイス5の使い勝手が悪く可能性があることから、コンテンツの取得タイミングが到来した時点で、コンテンツの書込先のUSBデバイスが最後に使われてから一定時間が経過したか否かを判断し、一定時間が経過していない場合には、端末装置とUSBデバイス5との接続を解除しないようにし、コンテンツの書込を諦めるようにした。
即ち、本実施例では、コンテンツの取得タイミングが到来しても、ネットワークNT上の端末装置が、その時点においてUSBデバイス5を現に実効的に使用している場合には、端末装置とUSBデバイス5との接続を優先するようにした。従って、本実施例によれば、コンテンツの取得タイミングが断続的に到来する場合でも、ネットワークNT上の端末装置に対し、あまり影響を与えることなく、適切に、コンテンツを、音楽プレーヤ50に蓄積することができる。
例えば、ネットワークNT上の端末装置がUSBデバイス5を用いて所定の処理を実行しようとしている場合であって、その処理が長時間に及ぶ場合、コンテンツの取得タイミングが到来する度に、端末装置とUSBデバイス5との接続を解除してしまうと、上記の処理を実現することができなくなってしまうが、本実施例によれば、このようなことがなく、ネットワークNT上の端末装置に対し、あまり影響を与えることなく、適切に、コンテンツを、音楽プレーヤ50に蓄積することができる。
一方、本実施例では、ネットワークNT上の端末装置が有効にUSBデバイス5を使用しておらず単に占有している場合のとき、この接続を解除して、コンテンツの書込を行うので、ネットワークNT上の端末装置が、不必要にUSBデバイスを長期に渡り占有することにより、複合機1のコンテンツ収集ソフト109にてUSBデバイス5が使用できなくなるのを防止することができる。
また、コンテンツの取得タイミングが頻繁に到来する等の理由で、一度、復帰させた端末装置とUSBデバイスとの接続を、再度解除するといった動作を頻繁に行うと、切替に係る処理時間が増えて、音楽プレーヤ50を、コンテンツ収集ソフト109及び端末装置のいずれからも利用できない時間が長くなる。従って、コンテンツの音楽プレーヤ50への書込のために、音楽プレーヤ50を自装置にて占有した場合には、暫くの間、音楽プレーヤ50を自装置から開放しないようにしてもよい(第一変形例)。
[5.第一変形例]
図17は、第一変形例における複合機1の制御部10が、図12に示すコンテンツ更新管理処理に代え、繰返し実行するコンテンツ更新管理処理を表すフローチャートである。また、図18は、第一変形例の制御部10が、コンテンツ収集ソフト109に基づき、繰返し実行する接続時間管理処理を表すフローチャートである。
以下に説明する第一変形例の複合機1は、制御部10が実行するコンテンツ更新管理処理の内容が異なること、及び、制御部10が図18に示す接続時間管理処理を実行することを除けば、上記実施例の複合機1と同一構成であるので、以下では、図17及び図18を用い、制御部10が実行するコンテンツ更新管理処理及び接続時間管理処理を、選択的に説明する。
図17に示すように、第一変形例では、コンテンツ更新管理処理として、図12に示すコンテンツ更新管理処理から、S690、S760及びS770の各ステップを除いた処理を実行する。即ち、第一変形例では、コンテンツを書込先USBデバイスに書き込むために、書込先USBデバイスのUSBドライバ103bをロードし、この書込先USBデバイスと自装置とを論理接続した後(S670,S740)、この接続を解除することなく維持した状態で、S780に移行し、後続の処理を実行する。本変形例におけるコンテンツ更新管理処理の内容は、上述した点以外、図12に示すコンテンツ更新管理処理と同内容である。従って、ここでは、図17において、図12に示す各ステップと同内容の処理を行う各ステップに、同一ステップ番号を付し、これ以上の詳細なコンテンツ更新管理処理の説明を省略する。
続いて、制御部10が繰返し実行する接続時間管理処理について説明する。この接続時間管理処理は、コンテンツ更新管理処理において行われた書込先USBデバイスと自装置との接続を、解除するものである。
図18に示す接続時間管理処理を開始すると、制御部10は、まず参照番号jを初期化し、j=0に設定する(S910)。その後、参照番号jが、接続デバイステーブルTBL2(図7参照)に登録された接続デバイス情報のインデックス番号の最大値Jより大きいか否かを判断し、大きいと判断すると(S920でYes)、当該接続時間管理処理を終了する。一方、参照番号jが最大値J以下であると判断すると(S920でNo)、S930に移行する。
S930に移行すると、制御部10は、接続デバイステーブルTBL2における参照番号jに一致するインデックス番号jの接続デバイス情報を読み出し、現在時刻が、インデックス番号jの接続デバイス情報が示す最終アクセス時刻から一定時間以上経過した時刻であるか否かを判断する(S940)。
そして、現在時刻が、インデックス番号jの接続デバイス情報が示す最終アクセス時刻から一定時間以上経過した時刻であると判断すると(S940でYes)、S950に移行し、最終アクセス時刻から一定時間以上経過していないと判断すると(S940でNo)、S990に移行する。
S950に移行すると、制御部10は、書込先USBデバイスが自装置にて占有されているか否かを判断する。即ち、書込先USBデバイスに対して内部制御機能が働いているか否かを判断する。
そして、書込先USBデバイスが自装置にて占有されていると判断すると(S950でYes)、S955に移行し、書込先USBデバイスが自装置にて占有されていないと判断すると(S950でNo)、S990に移行する。
また、S955に移行すると、制御部10は、読み出したインデックス番号jの接続デバイス情報に、前接続ホストMACアドレスが記されているか否かを判断し、前接続ホストMACアドレスが記されていると判断すると(S955でYes)、S960に移行し、前接続ホストMACアドレスが記されていないと判断すると(S955でNo)、S990に移行する。
S960に移行すると、制御部10は、書込先USBデバイスに対応するUSBドライバ103bをアンロードして、自装置と書込先USBデバイスとの接続を解除する。そして、この処理を終えると、書込先USBデバイスに対応するデバイスブリッジ103aをロードして、デバイスブリッジ103aによるUSBデバイスの制御系を構築し、前接続ホストと書込先USBデバイスとを再接続する(S970)。その後、接続デバイステーブルTBL2におけるインデックス番号jの接続デバイス情報において、前接続ホストMACアドレスの情報をクリアし(S980)、S990に移行する。また、S990に移行すると、制御部10は、参照番号jを1加算した値に変更し、その後、この最新の参照番号jを用いて、S920以降の処理を行う。
以上、第一変形例の複合機1について説明したが、第一変形例によれば、コンテンツ更新管理処理により、USBデバイス5がネットワークNT上の端末装置と接続された状態から複合機1との接続に切り替えられた後、このUSBデバイス5が利用されていない状態が一定時間以上続くと、複合機1が、このUSBデバイス5と自装置との接続を解除し、このUSBデバイス5とネットワークNT上の端末装置の接続を再確立する。換言すると、第一変形例では、USBデバイス5が利用されていない状態で一定時間以上が経過するまでは、複合機1が、USBデバイス5を自装置にて占有する。
従って、第一変形例によれば、コンテンツの取得タイミングが断続的に高頻度で到来する場合に、制御系の切替が頻繁に行われて、切替に係る処理時間が増え、USBデバイス5を、複合機1及びネットワークNT上の端末装置のいずれの装置からも利用できない時間が長くなり、USBデバイス5の使い勝手が悪くなるのを抑制することができる。
尚、第一変形例の接続時間管理処理では、コンテンツ更新管理処理のS670で行った複合機1とUSBデバイス5との論理接続を解除しないが、この接続については、例えば、当該USBデバイス5に対する最終アクセス時刻から一定時間が経過した状態で、ネットワークからの接続要求があったときに、制御部10の処理によって、解除すればよい。
また、上記実施例(第一変形例を含む)では、コンテンツ更新情報を複合機1に対してのみ登録するようにしたが、コンテンツ更新情報を、複合機1のみに登録する程度であると、音楽プレーヤ50を外に持ち出し、外出先の別の複合機1を通じてコンテンツを取得しようとした際に、ユーザが、当該別の複合機1を操作して、改めてコンテンツ更新情報を、当該別の複合機1に登録する必要があり、不便である。
従って、音楽プレーヤ50に取り込むコンテンツについては、それに対応するコンテンツ更新情報を、音楽プレーヤに登録しておき、音楽プレーヤ50が接続されると、音楽プレーヤ50からコンテンツ更新情報を読み出して、この情報に基づき、コンテンツをサーバ装置SVから取得し、これを音楽プレーヤ50に書き込むように、複合機1を構成するとよい(第二変形例)。
[6.第二変形例]
図19は、第二変形例において、複合機1の制御部10が、図6に示す接続受付処理に代えて、実行する接続受付処理を表すフローチャートである。また、図20(a)は、第二変形例において、音楽プレーヤ50が記憶部50aに記憶するコンテンツ更新情報テーブルTBL4の構成を表す説明図である。その他、図20(b)は、複合機1が、EEPROM17に記憶されたコンテンツ更新情報テーブルTBL3と、音楽プレーヤ50から読み出したコンテンツ更新情報テーブルTBL4とに基づき、RAM15に生成するコンテンツ更新情報テーブルTBL5の構成を表す説明図である。
第二変形例は、第一変形例に対して、複合機1に接続される音楽プレーヤ50が一部異なる構成にされ、制御部10が実行する処理の内容が一部変更された程度のものであるため、以下では、第二変形例について、第一変形例と異なる構成(処理の内容)を、選択的に説明することにし、その他の説明については省略するものとする。
第二変形例の複合機1に接続される音楽プレーヤ50は、第一変形例とは異なり、記憶部50aにコンテンツ更新情報テーブルTBL4を記憶し、ユーザ操作に従って、ユーザが所望するコンテンツについてのコンテンツ更新情報を生成し、これをコンテンツ更新情報テーブルTBL4に登録する構成にされている。
このコンテンツ更新情報テーブルTBL4は、複合機1がEEPROM17に記憶するコンテンツ更新情報テーブルTBL3と同様、RSSデータの取得先URL毎に、コンテンツ更新情報を有した構成にされ、コンテンツ更新情報は、RSSデータの取得先URLと、コンテンツの最終更新時刻の情報と、次回更新時刻の情報と、から構成されている。
一方、複合機1は、このコンテンツ更新情報テーブルTBL4を、図19に示す接続受付処理によって、音楽プレーヤ50から読み出し、その後、このコンテンツ更新情報テーブルTBL4の情報に基づき、サーバ装置SVからコンテンツを取得し、取得コンテンツを、音楽プレーヤ50に書き込む構成にされている。
具体的に、複合機1の制御部10は、USBコネクタCNにUSBデバイス5が接続されると、図19に示す接続受付処理を開始し、この接続受付処理を開始すると、まず、USBドライバをロードし(S110)、USBコネクタCNに接続されたUSBデバイス5からデバイスディスクリプタを取得する(S120)。
その後、S123に移行し、接続されたUSBデバイス5から、コンテンツ更新情報テーブルTBL4を読み出し、これをRAM15に生成されたコンテンツ更新情報テーブルTBL5に登録する。その後、S125に移行する。
尚、本変形例では、複合機1の起動時に、制御部10の動作により、EEPROM17のコンテンツ更新情報テーブルTBL3が、RAM15に書き込まれ、コンテンツ更新情報テーブルTBL5が生成される。
コンテンツ更新情報テーブルTBL5は、図20(b)に示すように、コンテンツ更新情報テーブルTBL3,TBL4の集合体として構成され、コンテンツ更新情報テーブルTBL3,TBL4毎に、テーブル取得元情報が付されてなる。即ち、本変形例では、複合機1の起動時、制御部10の動作により、EEPROM17内のコンテンツ更新情報テーブルTBL3が、値「−1」とのテーブル取得元情報と共に、RAM15に書き込まれ、RAM15に、コンテンツ更新情報テーブルTBL5が生成される。尚、テーブル取得元情報は、テーブル取得元デバイスのデバイスIDを表すものであり、図20(b)において、値「−1」は、テーブル取得元が複合機1であることを、値「0」は、テーブル取得元が、現在、複合機1に接続されているデバイスIDが「0」のUSBデバイス5であることを、値「1」は、テーブル取得元が、現在、複合機1に接続されているデバイスIDが「1」のUSBデバイス5であること、を表す。
即ち、S123では、接続されたUSBデバイス5(音楽プレーヤ50)から読み出したコンテンツ更新情報テーブルTBL4に対し、コンテンツの書込先USBデバイスを表す情報及びテーブル取得元情報として、当該USBデバイス5のデバイスIDを付加してなるデータを、RAM15のコンテンツ更新情報テーブルTBL5に追加することによって、上記読み出したコンテンツ更新情報テーブルTBL4を、コンテンツ更新情報テーブルTBL5に登録する。この際には、コンテンツ更新情報テーブルTBL5に追加した各コンテンツ更新情報に対し、シーケンシャルなインテックス番号を付す。
但し、S123では、接続されたUSBデバイス5がコンテンツ更新情報テーブルTBL4を有するUSBデバイス5、即ち、上述の音楽プレーヤ50である場合に限って、USBデバイス5からコンテンツ更新情報テーブルTBL4を読み出し、これをRAM15のコンテンツ更新情報テーブルTBL5に登録する。換言すると、接続されたUSBデバイス5が上述の音楽プレーヤ50でない場合、制御部10は、S123の処理を実質的に実行せずに、S125に移行する。
また、S125に移行すると、制御部10は、S110でロードしたUSBドライバをアンロードし(S125)、その後、上述の実施例と同様に、S130〜S160の処理を実行する。そして、S160での処理を終えると、当該接続受付処理を終了する。このようにして、本変形例では、接続受付処理により、複合機1に接続された音楽プレーヤ50から、コンテンツ更新情報テーブルTBL4を取り込む。
一方、本変形例の複合機1は、図17に示すコンテンツ更新管理処理に代えて、図21に示すコンテンツ更新管理処理を実行することにより、コンテンツ収集機能を実現し、音楽プレーヤ50から取り込んだコンテンツ更新情報テーブルTBL4の内容に従って、コンテンツを取得し、これを対応する音楽プレーヤ50に書き込む。尚、図21は、本変形例の複合機1における制御部10が実行するコンテンツ更新管理処理を表すフローチャートである。本変形例の複合機1における制御部10は、所定時間毎に繰返し、図21に示すコンテンツ更新管理処理を実行する。
制御部10は、このコンテンツ更新管理処理を開始すると、まず、参照番号kを初期化して、k=0に設定し(S1010)、その後、USBコネクタCNに接続されたUSBデバイス5が存在するか否かを判断する(S1015)。そして、USBコネクタCNに接続されたUSBデバイス5が存在しないと判断すると(S1015でNo)、当該コンテンツ更新管理処理を一旦終了し、USBコネクタCNに接続されたUSBデバイス5が存在すると判断すると(S1015でYes)、S1020に移行する。
S1020に移行すると、制御部10は、RAM15のコンテンツ更新情報テーブルTBL5を参照して、参照番号kが、コンテンツ更新情報テーブルTBL5におけるコンテンツ更新情報のインデックス番号の最大値Msより大きいか否かを判断し、最大値Msより大きいと判断すると(S1020でYes)、S1130に移行し、参照番号が最大値Ms以下であると判断すると(S1020でNo)、S1030に移行する。
また、S1030に移行すると、制御部10は、参照番号kに一致するインデックス番号kのコンテンツ更新情報を、コンテンツ更新情報テーブルTBL5から読み出し、現在時刻が、読み出したコンテンツ更新情報が示す次回更新時刻を経過しているか否かを判断する(S1040)。そして、現在時刻が、次回更新時刻を経過していると判断すると(S1040でYes)、S1050に移行し、経過していないと判断すると(S1040でNo)、S1120に移行する。
また、S1050に移行すると、制御部10は、インデックス番号kのコンテンツ更新情報が示す書込先USBデバイスのデバイスIDが値「−1」であるか否かを判断する。
尚、第二変形例における複合機1は、コンテンツの書込先として、ユーザから、全音楽プレーヤ50との指定を受け付けることが可能な構成にされ、全音楽プレーヤ50が指定されると、書込先USBデバイスのデバイスIDを表す情報として、値「−1」を記したコンテンツ更新情報を、コンテンツ更新情報テーブルTBL3に、登録する構成にされている。S1050では、読み出したインデックス番号kのコンテンツ更新情報が、この種のコンテンツ更新情報であるか否かを判断する。
そして、インデックス番号kのコンテンツ更新情報が示す書込先USBデバイスのデバイスIDが値「−1」であると判断すると(S1050でYes)、S1090に移行し、値「−1」でないと判断すると(S1050でNo)、S1060に移行する。
また、S1060に移行すると、制御部10は、インデックス番号kのコンテンツ更新情報が示すコンテンツの書込先USBデバイスを、転送先USBデバイスに設定して、転送先USBデバイスが、USBコネクタCNに接続されているか否かを判断し(S1070)、USBコネクタCNに転送先USBデバイスが接続されていると判断すると(S1070でYes)、S1080に移行し、接続されていないと判断すると(S1070でNo)、S1120に移行する。具体的に、S1070では、接続デバイステーブルTBL2に転送先USBデバイスの接続デバイス情報が登録されているか否かを判断することにより、USBコネクタCNに、転送先USBデバイスが接続されているか否かを判断する。
そして、S1080に移行すると、制御部10は、更新管理メイン処理を実行する。尚、S1080で実行する更新管理メイン処理は、第一変形例におけるS650〜S750(図17参照)の処理と同様である。但し、更新管理メイン処理では、S650〜S750でいう書込先USBデバイス(書込先デバイス)を「転送先USBデバイス」に置き換えて、第一変形例におけるS650〜S750に対応した処理を実行し、S780に移行する代わりに、当該更新管理メイン処理を終了する。
即ち、S1080で実行する更新管理メイン処理では、S1060で設定された転送先USBデバイスが、ネットワークNT上の端末装置に占有されているか否かを判断し(S650)、端末装置に占有されている場合には(S650でYes)、転送先USBデバイスの接続デバイス情報が示す最終アクセス時刻から一定時間が経過しているか否かを判断する(S710)。
そして、転送先USBデバイスの接続デバイス情報が示す最終アクセス時刻から一定時間が経過していると判断するか(S710でYes)、転送先USBデバイスが、ネットワークNT上の端末装置に占有されていないと判断すると(S650でNo)、制御部10は、コンテンツ更新処理(図14参照)を実行して(S680,S700,S750)、インデックス番号kのコンテンツ更新情報が示すURLに従い、当該URLに対応するRSSデータを、ネットワークNTを通じて、サーバ装置SVから取得し、このRSSデータから得られるコンテンツを、転送先USBデバイスに書き込む(S865,S895)。また、コンテンツ更新情報テーブルTBL5におけるインデックス番号kのコンテンツ更新情報を更新する(S900)。このようにして、S1080での処理を終えると、制御部10は、S1120に移行する。
この他、デバイスIDが値「−1」であると判断して(S1050でYes)、S1090に移行すると、制御部10は、接続デバイステーブルTBL2に登録された音楽プレーヤ50の一つを、転送先USBデバイスに選択した後、S1100にて、更新管理メイン処理を実行する。
尚、S1100で実行する更新管理メイン処理は、基本的に、S1080で実行する更新管理メイン処理と同じである。即ち、S1100では、S1090で設定された転送先USBデバイスに関して、S650〜S750の処理を実行することにより、転送先USBデバイスが、ネットワークNT上の端末装置に占有されていない場合(S650でNo)又は転送先USBデバイスの接続デバイス情報が示す最終アクセス時刻から一定時間が経過している場合(S710でYes)には、コンテンツ更新処理(図14参照)を実行し(S680,S700,S750)、インデックス番号kのコンテンツ更新情報が示すURLに従い、当該URLに対応するRSSデータを、ネットワークNTを通じて、サーバ装置SVから取得し、このRSSデータから得られるコンテンツを、転送先USBデバイスに書き込む。また、コンテンツ更新情報テーブルTBL5におけるインデックス番号kのコンテンツ更新情報を更新する(S900)。
また、S1100での処理を終えると、制御部10は、S1110に移行して、接続デバイステーブルTBL2に登録された音楽プレーヤ50の全てをS1090で転送先USBデバイスに選択したか否かを判断し、S1090で音楽プレーヤ50の全てを転送先USBデバイスに選択していないと判断すると(S1110でNo)、S1090に移行し、未選択の音楽プレーヤ50の一つを、転送先USBデバイスに選択して、再び、S1100で更新管理メイン処理を実行する。
このようにして、S1050でデバイスIDが「−1」であると判断した場合には、複合機1に接続された全ての音楽プレーヤ50に対して、同一のコンテンツを書き込む。そして、全音楽プレーヤ50に対して個別の上記更新管理メイン処理を実行し終えると、S1110でYesと判断して、S1120に移行する。尚、この繰返し処理に当っては、毎回、コンテンツをネットワークを通じて取得するのではなく、最初に取得したコンテンツを一時記憶しておき、このコンテンツを各音楽プレーヤ50に書き込むようにしてもよい。また、S1100で実行する更新管理メイン処理に限っては、コンテンツ更新処理におけるS880,S885の処理を実行しないようにしてもよい。
また、S1120に移行すると、制御部10は、参照番号kを1加算した後(k←k+1)、S1020に移行する。そして、加算後の参照番号kが、最大値Msより大きいか否かを判断し、参照番号kが最大値Msより大きい場合には(S1020でYes)、S1130に移行し、参照番号kが最大値Ms以下である場合には(S1020でNo)、S1030で、次のインデックス番号kのコンテンツ更新情報を読み出し、このコンテンツ更新情報について、S1040以降の処理を実行する。
一方、S1130に移行すると、制御部10は、図22に示すテーブル更新処理を実行することにより、S1010〜S1120で更新されたRAM15のコンテンツ更新情報テーブルTBL5の内容を、複合機1に接続された各音楽プレーヤ50のコンテンツ更新情報テーブルTBL4及びEEPROM17に記録されたコンテンツ更新情報テーブルTBL3に反映させる。
具体的に、S1130でテーブル更新処理を開始すると、制御部10は、コンテンツ更新情報テーブルTBL5が有するテーブル取得元情報が値「−1」の各コンテンツ更新情報の内容を、EEPROM17に記憶されたコンテンツ更新情報テーブルTBL3の対応するコンテンツ更新情報にコピーすることにより、コンテンツ更新情報テーブルTBL3が有する各情報を、コンテンツ更新情報テーブルTBL5の対応する情報と一致させるように、更新する(S1131)。
また、この処理を終えると、制御部10は、コンテンツ更新情報テーブルTBL5に記述されたテーブル取得元情報に基づき、テーブル取得元USBデバイスの一つを、更新対象USBデバイスに選択し(S1133)。この更新対象USBデバイスが自装置で占有されているか否かを判断する。即ち、更新対象USBデバイスに対して内部制御機能が働いているか否かを判断する。
そして、更新対象USBデバイスが自装置で占有されていると判断すると(S1135でYes)、制御部10は、S1137に移行し、更新対象USBデバイスが記憶部50aに記憶するコンテンツ更新情報テーブルTBL4を、RAM15のコンテンツ更新情報テーブルTBL5に基づき、更新する。
即ち、更新対象USBデバイスが有するコンテンツ更新情報テーブルTBL4の各情報を、コンテンツ更新情報テーブルTBL5の対応情報、換言すると、テーブル取得元情報が更新対象USBデバイスのデバイスIDとなっているコンテンツ更新情報群と、内容が一致するように、更新する。
また、このようにしてS1137での処理を終えるか、S1135でNoと判断すると、制御部10は、S1139に移行して、コンテンツ更新情報テーブルTBL5が示すテーブル取得元USBデバイスの全てをS1133で更新対象USBデバイスに選択したか否かを判断し、全てを更新対象USBデバイスに選択していないと判断すると(S1139でNo)、S1133に移行して、未選択のテーブル取得元USBデバイスの一つを、更新対象USBデバイスに選択し、選択した更新対象USBデバイスについて、後続の処理を実行する。
一方、S1139にて全てを更新対象USBデバイスに選択したと判断すると(S1139でYes)、制御部10は、当該テーブル更新処理を終了する。このようにして、テーブル更新処理では、EEPROM17のコンテンツ更新情報テーブルTBL3を、コンテンツ更新情報テーブルTBL5の内容に合わせて更新すると共に、RAM15のコンテンツ更新情報テーブルTBL5に取り込まれた各音楽プレーヤ50のコンテンツ更新情報テーブルTBL4を、コンテンツ更新情報テーブルTBL5の内容に合わせて更新する。
また、テーブル更新処理を終了した後には、コンテンツ更新管理処理を一旦終了し、所定時間後、再び、当該コンテンツ更新管理処理をS1010から実行することにより、定期的に、ネットワークからコンテンツを取得し、これを音楽プレーヤ50に書き込む。
尚、複合機1に接続されているUSBデバイス5がUSBコネクタCNから外された場合、制御部10は、図10に示す取外受付処理(S410、S420)を実行すると共に、テーブル取得元情報が示す値が、S410において特定された接続デバイス(USBデバイス5)のデバイスIDに一致するレコードを、RAM15のコンテンツ更新情報テーブルTBL5から削除する。これにより、本変形例では、RAM15の不要なデータがRAM15上に記憶され続けることを防止する。
以上、第二変形例の複合機1について説明したが、この変形例では、音楽プレーヤ50にてコンテンツ更新情報テーブルTBL4を保持するようにし、音楽プレーヤ50が複合機1に接続された場合には、複合機1にて、このコンテンツ更新情報テーブルTBL4を読み出し、読み出したコンテンツ更新情報テーブルTBL4の内容に基づき、コンテンツを外部のサーバ装置SVから取得して、これをテーブル取得元の音楽プレーヤ50に書き込むようにした。
従って、本変形例によれば、ユーザは、外出先のオフィスやホテル等に複合機1が設置してある場合、この複合機1に、持参の音楽プレーヤ50を接続する程度で、外出先の複合機1に細かな設定操作を行わなくても、必要なコンテンツを、音楽プレーヤ50にダウンロードすることができる。よって、この複合機1を普及させれば、ユーザは、複合機1を通じて様々な場所でコンテンツを取得することができ、このコンテンツを移動しながら楽しむことができる。
その他、本変形例によれば、複合機1に対して、全音楽プレーヤ50をコンテンツ書込先USBデバイスに指定してコンテンツ更新情報を登録することができ、複合機1に接続された全ての音楽プレーヤ50に対してコンテンツを書き込むことができるので、複合機1の所有者は、ユーザに対して広告したいコンテンツを配信するURLを記述したコンテンツ更新情報を、全音楽プレーヤ50を書込対象として指定して登録しておく程度で、当該複合機1を利用する不特定ユーザに対し、コンテンツを通じ、商品やサービス等を宣伝することができる。
従って、本変形例によれば、公共の場所への複合機1の設置を促すことができ、複合機1の所有者及び利用者の双方にとって利益のある新しい情報提供システムを提供することができる。
[7.他の実施例]
以上に、第一及び第二変形例を含む本発明の実施例について説明したが、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、ディジタル複合機に本発明を適用した例を示したが、本発明は、その他の通信装置に適用することができる。
また、上記実施例では、配信コンテンツが音声/映像コンテンツでないITEM要素に関して、ITEM要素毎に、コンテンツの要約文を印刷するようにしたが、コンテンツの要約文の印刷は、RSSデータ毎に、該当するITEM要素の一群に対して、まとめて行われても良い。
この他、上記実施例では、定期的に、コンテンツ更新管理処理を実行するようにしたが、ユーザによっては、すぐさまコンテンツの更新が望まれる場合もあるので、複合機1の操作部27には、コンテンツ更新ボタンを設けると共に、制御部10には、図23に示す強制更新処理を実行させて、コンテンツ更新ボタンが押下操作された場合には(S1210でYes)、直ちに、コンテンツ更新管理処理を実行するように(S1220)、複合機1を構成してもよい。
[8.特許請求の範囲に記載の発明と実施例との対応関係]
本発明の第1インタフェースは、LANインタフェース35に相当し、第2インタフェースは、USBホストコントローラ31及びUSBルートハブ33からなるUSBインタフェースに相当し、外部記憶装置は、音楽プレーヤ50に相当する。また、切替手段は、接続受付処理及び接続要求受付処理並びに接続解除要求受付処理により実現され、データ取得手段及びデータ記録手段は、コンテンツ更新処理により実現され、判断手段は、S650,S660,S710より実現されている。また、自動切替手段は、S720〜S740により実現され、復帰手段は、S760〜S770又は接続時間管理処理により実現されている。
1…複合機、5…USBデバイス、10,80…制御部、11,81…CPU、13,83…ROM、15,85…RAM、17…EEPROM、21…印刷部、23…読取部、25…FAX通信部、27,95…操作部、29,93…表示部、31…USBホストコントローラ、33…USBルートハブ、35,97…LANインタフェース、50…音楽プレーヤ、50a…記憶部、70…PC、101,805…USBIP、103a…デバイスブリッジ、103b,801…USBドライバ、105…USBホストコントローラドライバ、107…USB管理プログラム、109…コンテンツ収集ソフト、803…仮想USBホストコントローラドライバ、807…リモートデバイス管理プログラム、NT…ネットワーク、SV…サーバ装置