(57)【要約】【課題】ＵＳＢデバイスインタフェースに接続されているＵＳＢホストから、ＵＳＢホストインタフェースに接続されているＵＳＢデバイスの状態を正常に監視できる電子機器および応答転送方法を提供する。【解決手段】ＵＳＢホストに接続するためのＵＳＢデバイスインタフェースと、ＵＳＢデバイスを接続するためのＵＳＢホストインタフェースと、前記ＵＳＢデバイスインタフェースが前記ＵＳＢホストからコマンドを受信すると、前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスに送信したコマンドに対する応答を前記ＵＳＢデバイスインタフェースに転送する転送手段と、前記応答を転送すると次に転送する応答が通信手順に整合しなくなる可能性があるかを判定し、整合しなくなる可能性がない場合は前記転送手段に前記応答を転送させ、整合しなくなる可能性がある場合は整合しなくなる可能性がなくなるまで前回転送した応答を再転送させ、整合しなくなる可能性がなくなった後に前記応答を転送させる判定手段と、を備える電子機器。【選択図】図１
2008027213.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢホストに接続するためのＵＳＢデバイスインタフェースと、
ＵＳＢデバイスを接続するためのＵＳＢホストインタフェースと、
前記ＵＳＢデバイスインタフェースが前記ＵＳＢホストからコマンドを受信すると、前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスに送信したコマンドに対する応答を前記ＵＳＢデバイスインタフェースに転送する転送手段と、
前記応答を転送すると次に転送する応答が通信手順に整合しなくなる可能性があるかを判定し、整合しなくなる可能性がない場合は前記転送手段に前記応答を転送させ、整合しなくなる可能性がある場合は整合しなくなる可能性がなくなるまで前回転送した応答を再転送させ、整合しなくなる可能性がなくなった後に前記応答を転送させる判定手段と、
を備える電子機器。
【請求項２】
前記転送手段は、前記ＵＳＢホストインタフェースが前記ＵＳＢホストから前回転送した応答の次の応答を未だ受信していない場合は前回転送した応答を再転送し、
前記判定手段は、前記応答が連続して送信できない応答であり且つ前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスから前記応答の次の応答を未だ受信していない場合は前記通信手順に整合しなくなる可能性があると判定し、前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスから次の応答を受信するまで前回転送した応答を再転送させ、前記ＵＳＢホストインタフェースが次の応答を受信した後に前記応答を転送させる請求項１に記載の電子機器。
【請求項３】
前記ＵＳＢホストはＵＳＢマスストレージ・ホストであり、
前記ＵＳＢデバイスはＵＳＢマスストレージ・デバイスであり、
前記コマンドは、前記ＵＳＢマスストレージ・デバイスの状態を問い合わせる問い合わせコマンドである請求項２に記載の電子機器。
【請求項４】
前記連続して送信できない応答は、記憶メディアの状態が変化した可能性があることを示す応答である請求項３に記載の電子機器。
【請求項５】
前記転送手段は、転送対象の応答が記憶メディアを起動中でアクセスできないことを示す応答である場合は転送せずに読み飛ばす請求項３又は４に記載の電子機器。
【請求項６】
前記転送手段は、転送対象の応答の後に記憶メディアがセットされていないことを示す応答を受信済みの場合は、前記記憶メディアがセットされていないことを示す応答の前に受信した応答を転送せずに読み飛ばす請求項３、４又は５に記載の電子機器。
【請求項７】
前記ＵＳＢマスストレージ・デバイスの記憶メディアはリムーバブルメディアである請求項３〜６のいずれか一項に記載の電子機器。
【請求項８】
前記ＵＳＢマスストレージ・デバイスに記憶されている画像データを前記ＵＳＢホストインタフェースを介して取得し、取得した前記画像データを印刷媒体に印刷する印刷手段を更に備える請求項３〜７のいずれか一項に記載の電子機器。
【請求項９】
原稿に形成されている画像を読み取って画像データを生成し、生成した前記画像データを前記ＵＳＢホストインタフェースを介して前記ＵＳＢマスストレージ・デバイスに書き込む画像読み取り手段を更に備える請求項３〜８のいずれか一項に記載の電子機器。
【請求項１０】
ＵＳＢホストに接続するためのＵＳＢデバイスインタフェースと、ＵＳＢデバイスを接続するためのＵＳＢホストインタフェースとを備える電子機器を用いた応答転送方法であって、
前記ＵＳＢデバイスインタフェースが前記ＵＳＢホストからコマンドを受信すると、前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスに送信したコマンドに対する応答を前記ＵＳＢデバイスインタフェースに転送する転送段階と、
前記応答を転送すると次に転送する応答が通信手順に整合しなくなる可能性があるかを判定し、整合しなくなる可能性がない場合は前記転送手段に前記応答を転送させ、整合しなくなる可能性がある場合は整合しなくなる可能性がなくなるまで前回転送した応答を再転送させ、整合しなくなる可能性がなくなった後に前記応答を転送させる判定段階と、
を含む応答転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器および応答転送方法に関する。
【背景技術】
【０００２】
ＵＳＢホストに接続するためのＵＳＢデバイスインタフェースを備えるプリンタ（電子機器）が知られている（例えば特許文献１参照）。
ところで、ＵＳＢホストに接続するためのＵＳＢデバイスインタフェースとＵＳＢデバイスを接続するためのＵＳＢホストインタフェースとを電子機器に備えると、電子機器をＵＳＢホストに対してＵＳＢデバイスとして動作させることができるとともに、電子機器をＵＳＢデバイスに対してＵＳＢホストとして動作させることができる。
【０００３】
電子機器をこのように構成した場合、ＵＳＢホストから受信したコマンドをＵＳＢデバイスに転送するとともに、ＵＳＢデバイスから受信した応答をＵＳＢホストに転送することにより、ＵＳＢホストに対してあたかもＵＳＢデバイスが直に接続されているかのように見せかけることができる。これにより、電子機器に加えてＵＳＢホストもＵＳＢデバイスを利用することが可能になる。
【０００４】
上述した構成の場合、ＵＳＢホストは電子機器を介してＵＳＢデバイスの状態を監視することになる。しかしながら、電子機器が単にＵＳＢホストとＵＳＢデバイスとの間でコマンドとそれに対する応答とを転送するのみでは、ＵＳＢホストはＵＳＢデバイスの状態を正常に監視できないという問題がある。
【０００５】
【特許文献１】特開２００２−２３６５６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、上述の問題に鑑みて創作されたものであって、ＵＳＢデバイスインタフェースに接続されているＵＳＢホストから、ＵＳＢホストインタフェースに接続されているＵＳＢデバイスの状態を正常に監視できる電子機器および応答転送方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
（１）上記目的を達成するための電子機器は、ＵＳＢホストに接続するためのＵＳＢデバイスインタフェースと、ＵＳＢデバイスを接続するためのＵＳＢホストインタフェースと、前記ＵＳＢデバイスインタフェースが前記ＵＳＢホストからコマンドを受信すると、前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスに送信したコマンドに対する応答を前記ＵＳＢデバイスインタフェースに転送する転送手段と、前記応答を転送すると次に転送する応答が通信手順に整合しなくなる可能性があるかを判定し、整合しなくなる可能性がない場合は前記転送手段に前記応答を転送させ、整合しなくなる可能性がある場合は整合しなくなる可能性がなくなるまで前回転送した応答を再転送させ、整合しなくなる可能性がなくなった後に前記応答を転送させる判定手段と、を備える。
本発明によると、応答を転送するとき、その応答を転送すると次に転送する応答が通信手順に整合しなくなる可能性があるかを判定し、整合しなくなる可能性がある場合は整合しなくなる可能性がなくなるまで前回転送した応答を再転送させ、整合しなくなる可能性がなくなった後に前記応答を転送させるので、通信手順に整合しなくなることを確実に防止できる。よって本発明によると、ＵＳＢデバイスインタフェースに接続されているＵＳＢホストから、ＵＳＢホストインタフェースに接続されているＵＳＢデバイスの状態を正常に監視できる。
【０００８】
（２）前記転送手段は、前記ＵＳＢホストインタフェースが前記ＵＳＢホストから前回転送した応答の次の応答を未だ受信していない場合は前回転送した応答を再転送してもよい。前記判定手段は、前記応答が連続して送信できない応答であり且つ前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスから前記応答の次の応答を未だ受信していない場合は前記通信手順に整合しなくなる可能性があると判定し、前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスから次の応答を受信するまで前回転送した応答を再転送させ、前記ＵＳＢホストインタフェースが次の応答を受信した後に前記応答を転送させてもよい。
本発明によると、電子機器はＵＳＢホストからコマンドを受信したとき、前回転送した応答の次の応答をＵＳＢデバイスから未だ受信していない場合は前回転送した応答を再転送するので、受信したコマンドに対して確実に応答を返すことができる。
また、本発明では転送対象の応答が連続して送信できない応答であり且つＵＳＢホストインタフェースがＵＳＢデバイスから当該転送対象の応答の次の応答を未だ受信していない場合は、ＵＳＢホストインタフェースが次の応答を受信した後に当該転送対象の応答を転送させる。このため、連続して送信できない応答を転送した後、ＵＳＢデバイスインタフェースがＵＳＢホストから次のコマンドを受信したときに、ＵＳＢホストインタフェースがＵＳＢデバイスから次の応答を未だ受信していないという状況は起き得ない。従って、連続して送信できない応答が再転送されることを確実に防止できる。これにより、連続して送信できない応答を連続して送信してしまうことによって通信手順に整合しなくなることを防止できる。
【０００９】
（３）前記ＵＳＢホストはＵＳＢマスストレージ・ホストであり、前記ＵＳＢデバイスはＵＳＢマスストレージ・デバイスであり、前記コマンドは、前記ＵＳＢマスストレージ・デバイスの状態を問い合わせる問い合わせコマンドであってもよい。
【００１０】
（４）前記連続して送信できない応答は、記憶メディアの状態が変化した可能性があることを示す応答であってもよい。
【００１１】
（５）前記転送手段は、転送対象の応答が記憶メディアを起動中でアクセスできないことを示す応答である場合は転送せずに読み飛ばしてもよい。
記憶メディアを起動中でアクセスできない場合はいずれ別の状態に変化するので、読み飛ばしても問題はなく、読み飛ばすことによって通信量を低減できる。
【００１２】
（６）前記転送手段は、転送対象の応答の後に記憶メディアがセットされていないことを示す応答を受信済みの場合は、前記記憶メディアがセットされていないことを示す応答の前に受信した応答を転送せずに読み飛ばしてもよい。
記憶メディアがセットされていないことを示す応答を受信している場合は、記憶メディアがセットされていないことを示す応答の前に受信した応答を転送しても無意味である。従って、それらの応答を読み飛ばすことによって通信量を低減できる。
【００１３】
（７）前記記憶メディアはリムーバブルメディアであってもよい。
【００１４】
（８）前記ＵＳＢマスストレージ・デバイスに記憶されている画像データを前記ＵＳＢホストインタフェースを介して取得し、取得した前記画像データを印刷媒体に印刷する印刷手段を更に備えてもよい。
【００１５】
（９）原稿に形成されている画像を読み取って画像データを生成し、生成した前記画像データを前記ＵＳＢホストインタフェースを介して前記ＵＳＢマスストレージ・デバイスに書き込む画像読み取り手段を更に備えてもよい。
【００１６】
（１０）上記目的を達成するための応答転送方法は、ＵＳＢホストに接続するためのＵＳＢデバイスインタフェースと、ＵＳＢデバイスを接続するためのＵＳＢホストインタフェースとを備える電子機器を用いた応答転送方法であって、前記ＵＳＢデバイスインタフェースが前記ＵＳＢホストからコマンドを受信すると、前記ＵＳＢホストインタフェースが前記ＵＳＢデバイスに送信したコマンドに対する応答を前記ＵＳＢデバイスインタフェースに転送する転送段階と、前記応答を転送すると次に転送する応答が通信手順に整合しなくなる可能性があるかを判定し、整合しなくなる可能性がない場合は前記転送手段に前記応答を転送させ、整合しなくなる可能性がある場合は整合しなくなる可能性がなくなるまで前回転送した応答を再転送させ、整合しなくなる可能性がなくなった後に前記応答を転送させる判定段階と、を含む。
本発明によると、ＵＳＢデバイスインタフェースに接続されているＵＳＢホストから、ＵＳＢホストインタフェースに接続されているＵＳＢデバイスの状態を正常に監視できる。
【００１７】
尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア
資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせに
より実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハ
ードウェア資源で実現されるものに限定されない。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を実施例に基づいて説明する。
図２は、本発明の一実施例に係る電子機器としてのマルチファンクションプリンタ（ＭＦＰ）１０のハードウェア構成を示すブロック図である。ＭＦＰ１０は、ＵＳＢマスストレージ・デバイス１１、原稿に形成されている画像を読み取って画像データを生成し、ＰＣ（Personal Computer）１２やＵＳＢマスストレージ・デバイス１１に出力するスキャンユニット１３、ＰＣ１２から入力される画像データやＵＳＢマスストレージ・デバイス１１に記憶されている画像データを印刷媒体に印刷するプリントユニット１４などを有している。ＭＦＰ１０は、ＰＣ１２に制御されて動作することも、ＰＣ１２に制御されずに単体で動作することも可能に構成されている。
【００１９】
スキャンユニット１３は、照明部１５、イメージセンサ１７、スキャン処理部１６、キャリッジ駆動部１８などを備える。イメージセンサ１７は、照明部１５によって照明され図示しない結像光学系により受光面に結像される原稿の光学像の濃淡に相関する電気信号を出力する。スキャン処理部１６はイメージセンサ１７を駆動するとともにイメージセンサ１７から出力されるアナログ信号をディジタル化してＲＡＭ２６に出力する。キャリッジ駆動部１８は、主走査方向に垂直にイメージセンサ１７又は結像光学系を往復移動させる。
【００２０】
プリントユニット１４は、インクジェット方式の印字ヘッド２１、ヘッドキャリッジ駆動部２０、送紙部２２、これらを制御する印刷制御部１９などを備える。印刷制御部１９は、ＲＡＭ２６に格納された印刷データに基づいて、送紙部２２に用紙を印字ヘッド２１の移動方向軸線と垂直な方向に搬送させ、ヘッドキャリッジ駆動部２０に用紙の搬送方向と垂直に印字ヘッド２１を往復移動させ、印字ヘッド２１からインクを噴射させることにより、用紙に画像を形成する。
【００２１】
ディジタル画像処理部２３は、解像度変換、アンシャープ処理、階調補正、二値化、分版処理等の画像処理をＣＰＵ２８と協働して実行し、印刷対象の画像データから印刷データを生成するＤＳＰなどの専用プロセッサである。
操作部２４は、メニューを表示するための表示装置や、メニューを操作するためのボタン、印刷や原稿の読み取りを指示するための指示ボタンなどのユーザがＭＦＰ１０を操作するための各種の操作ボタンを備えている。
【００２２】
ＵＳＢデバイスインタフェース２９は、ＰＣ１２などの外部のＵＳＢマスストレージ・ホストにＵＳＢ接続するための通信インタフェース回路である。ＵＳＢデバイスインタフェース２９には、アップストリームポート３２（図３参照）やＵＳＢバスインタフェースなどのＵＳＢプロトコルにおけるハードウェア層と、プリンタファンクション・ドライバ４５（図３参照）やマスストレージファンクション・ドライバ４６（図３参照）などのソフトウェア層とが実装されている。なお、ソフトウェア層の一部は制御部２５で実行されてもよい。アップストリームポート３２は例えばＰＣ１２のＵＳＢホストインタフェース４２（図３参照）に設けられているダウンストリームポート３３（図３参照）にＵＳＢケーブル３４で接続される。
【００２３】
ＵＳＢホストインタフェース３１は、ＵＳＢマスストレージ・デバイス１１にＵＳＢ接続するための通信インタフェース回路である。ＵＳＢホストインタフェース３１には、ＵＳＢホストコントローラやＵＳＢバスインタフェースなどのＵＳＢプロトコルにおけるハードウェア層と、マスストレージクラス・ドライバ４７（図３参照）などのソフトウェア層とが実装されている。なお、ソフトウェア層の一部は制御部２５で実行されてもよい。
【００２４】
ＵＳＢマスストレージ・デバイス１１は、ＵＳＢマスストレージ・ホストに接続するためのＵＳＢデバイスインタフェース５１（図３参照）、およびマスストレージ５０（図３参照）を備えている。
ＵＳＢマスストレージ・デバイス１１が備えるＵＳＢデバイスインタフェース５１は、ＭＦＰ１０の内部でＵＳＢホストインタフェース３１に固定でＵＳＢ接続されている。
【００２５】
マスストレージ５０としては、リムーバブルメディアを記憶メディアとして用いるリムーバブルメディアドライブ、内蔵ハードディスクを記憶メディアとして用いるハードディスクドライブなどを用いることができる。
ＵＳＢマスストレージ・デバイス１１は記憶メディアから読み出したデータをＲＡＭ２６に転送するとともに、ＲＡＭ２６から転送されたデータを記憶メディアに書き込む。
【００２６】
記憶メディアとしてリムーバブルメディアを用いる場合、カード型フラッシュメモリ（以下「リムーバブルメモリ」という）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＡＴ、フレキシブルディスクなどの脱着可能な任意のリムーバブルメディアを用いることができる。本実施例ではＵＳＢマスストレージ・デバイス１１としてカード型フラッシュメモリを記憶メディアとして用いるリムーバブルメモリドライブを例に説明する。
【００２７】
転送手段および判定手段としての仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９に対して仮想のマスストレージとして動作するとともに、ＵＳＢホストインタフェース３１に対して上位アプリケーションとして動作するＡＳＩＣである。なお、仮想マスストレージ３０を制御部２５で実行するプログラムとして構成してもよい。また、本実施例では転送手段と判定手段とを仮想マスストレージ３０として一体に構成しているが、転送手段と判定手段とは物理的に互いに独立に構成されていてもよい。
【００２８】
制御部２５は、ＲＡＭ２６、フラッシュメモリ２７及びＣＰＵ２８を備える。ＣＰＵ２８はフラッシュメモリ２７に格納されている制御プログラムを実行してＭＦＰ１０の各部を制御する。フラッシュメモリ２７は、制御プログラムを格納している不揮発性メモリである。ＲＡＭ２６は、ＰＣ１２、リムーバブルメモリドライブ１１、スキャンユニット１３などから入力される画像データや制御プログラムが一時的に格納される揮発性メモリである。制御プログラムは遠隔地のサーバからネットワークを経由してフラッシュメモリ２７に格納してもよいし、リムーバブルメモリ等のコンピュータ読み取り可能な記録媒体を経由してフラッシュメモリ２７に格納してもよい。
【００２９】
次に、ＭＦＰ１０の論理的な構成と代表的な作動とについて説明する。
図３は、ＭＦＰ１０の論理的な構成を示すブロック図である。図示する例ではＵＳＢが備えるマルチインタフェース機能を利用することによりＭＦＰ１０はＰＣ１２に対してＵＳＢプリンタ・デバイスおよびＵＳＢマスストレージ・デバイスとしてＵＳＢ接続されている。ここでマルチインタフェース機能とは、物理的に一つのＵＳＢを論理的に複数のＵＳＢとして用いる機能である。なお、ＭＦＰ１０はＰＣ１２に対して更にＵＳＢスキャナ・デバイスとしてＵＳＢ接続されることもできる。
【００３０】
（１）ＰＣ１２がＭＦＰ１０をプリンタとして用いる場合
ＰＣ１２のＵＳＢホストインタフェース４２に実装されているプリンタクラス・ドライバ４３は、プリンタドライバ４１からの命令に応じたコマンドをＭＦＰ１０に送信する。ＭＦＰ１０のＵＳＢデバイスインタフェース２９に実装されているプリンタファンクション・ドライバ４５は、受信したコマンドをプリントユニット１４に転送する。プリントユニット１４からの応答はこの経路を逆に辿ってＰＣ１２に転送される。
ＰＣ１２は、ＭＦＰ１０をプリンタとして用いることにより、ＭＦＰ１０に画像データを印刷させることができる。
【００３１】
（２）ＰＣ１２がＭＦＰ１０をリムーバブルメモリドライブとして用いる場合
ＰＣ１２のＵＳＢホストインタフェース４２に実装されているマスストレージクラス・ドライバ４４は、ファイルシステム４０からの命令に応じたコマンドをＭＦＰ１０に送信する。ＭＦＰ１０のＵＳＢデバイスインタフェース２９に実装されているマスストレージファンクション・ドライバ４６は、受信したコマンドを仮想マスストレージ３０に転送する。仮想マスストレージ３０は、転送されたコマンドをＵＳＢホストインタフェース３１に実装されているマスストレージクラス・ドライバ４７に転送する。マスストレージクラス・ドライバ４７は、転送されたコマンドをリムーバブルメモリドライブ１１のＵＳＢデバイスインタフェース５１に実装されているマスストレージファンクション・ドライバ４９に転送する。マスストレージファンクション・ドライバ４９は、転送されたコマンドをマスストレージ５０に転送する。マスストレージ５０からの応答はこの経路を逆に辿ってファイルシステム４０に転送される。
【００３２】
この転送において、仮想マスストレージ３０はＵＳＢデバイスインタフェース２９から受信するコマンドを通信手順に整合するように適宜修正してＵＳＢホストインタフェース３１に変換して転送する。ＵＳＢホストインタフェース３１は仮想マスストレージ３０から受信したコマンドのコマンド番号をＵＳＢホストインタフェース３１で管理する番号に書き換える等の処理を行う。逆に、仮想マスストレージ３０はＵＳＢホストインタフェース３１から受信する応答を通信手順に整合するように適宜修正してＵＳＢデバイスインタフェース２９に転送する。
【００３３】
仮想マスストレージ３０がＵＳＢデバイスインタフェース２９から受信したコマンドをＵＳＢホストインタフェース３１に転送し、ＵＳＢホストインタフェース３１から受信した応答をＵＳＢデバイスインタフェース２９に転送することにより、ＰＣ１２に対してリムーバブルメモリドライブ１１があたかもＰＣ１２に直に接続されているかのように見せかけることができる。これにより、ＰＣ１２は例えばリムーバブルメモリドライブ１１に記憶されている画像データを取得することや、任意のデータをリムーバブルメモリドライブ１１に記憶させることができる。
【００３４】
ＰＣ１２がリムーバブルメモリドライブ１１を用いる場合、ＰＣ１２はリムーバブルメモリドライブ１１の状態を常時監視する必要がある。このため、ＰＣ１２はリムーバブルメモリドライブ１１の状態を問い合わせる問い合わせコマンドを繰り返し送信する。ＵＳＢデバイスインタフェース２９はこの問い合わせコマンドを受信して仮想マスストレージ３０に送信する。しかしながら、仮想マスストレージ３０はＵＳＢデバイスインタフェース２９からこの問い合わせコマンドを受信してもＵＳＢホストインタフェース３１に転送しない。問い合わせコマンドはＰＣ１２のマスストレージクラス・ドライバ４４とＭＦＰ１０のマスストレージクラス・ドライバ４７とがそれぞれ非同期に自発的に繰り返し送信するコマンドであり、転送しなくてもマスストレージクラス・ドライバ４７からリムーバブルメモリドライブ１１に送信されるからである。
【００３５】
マスストレージクラス・ドライバ４７は、リムーバブルメモリドライブ１１から問い合わせコマンドに対する応答を受信すると、受信した応答を仮想マスストレージ３０に送信する。
仮想マスストレージ３０は、マスストレージクラス・ドライバ４７から応答を受信すると、受信した応答を受信順に蓄積する。この蓄積にはＲＡＭ２６を用いてもよいし、仮想マスストレージ３０に記憶用のＲＡＭを設けて蓄積してもよい。
【００３６】
仮想マスストレージ３０は、ＰＣ１２が送信した一の問い合わせコマンドをＵＳＢデバイスインタフェース２９から受信すると、マスストレージクラス・ドライバ４７から受信した一の応答をＵＳＢデバイスインタフェース２９に転送する。応答が転送される順序は受信順である。ＵＳＢデバイスインタフェース２９に転送した応答はＵＳＢデバイスインタフェース２９からＰＣ１２に送信される。各応答はＵＳＢデバイスインタフェース２９に転送されるとＲＡＭから破棄される。
【００３７】
（３）ＭＦＰ１０がリムーバブルメモリドライブ１１を用いる場合
ＭＦＰ１０のＵＳＢホストインタフェース３１に実装されているマスストレージクラス・ドライバ４７は、ファイルシステム４８からの命令に応じたコマンドを、リムーバブルメモリドライブ１１のＵＳＢデバイスインタフェース５１に実装されているマスストレージファンクション・ドライバ４９に転送する。ここでファイルシステム４８は制御部２５によって実行されている上位アプリケーションプログラムである。マスストレージファンクション・ドライバ４９は、転送されたコマンドをマスストレージ５０に転送する。マスストレージ５０からの応答はこの経路を逆に辿ってファイルシステム４８に転送される。
【００３８】
次に、ＰＣ１２がリムーバブルメモリドライブ１１の状態を問い合わせるために送信する問い合わせコマンドと、それに対してリムーバブルメモリドライブ１１が返信する応答とについて説明する。ここではリムーバブルメモリドライブ１１を制御するコマンドのコマンド体系としてＳＣＳＩコマンド体系を例に説明する。本実施例ではＳＣＳＩコマンド体系で規定されている通信手順に従ってコマンドや応答の送受信を行う。
なお、ＵＳＢではＳＣＳＩコマンド体系の他にもＡＴＡＰＩ、ＵＦＩ、ＳＦＦ−８０７０ｉなどのコマンド体系を用い得る。これらのコマンド体系はＳＣＳＩコマンド体系に類似したコマンド体系であり、以下に説明する内容はこれらのコマンド体系に置き換えることもできる。
【００３９】
ＰＣ１２は、リムーバブルメモリドライブ１１の状態を監視するため、状態を問い合わせる「Test Unit Ready」コマンドを繰り返し送信する。リムーバブルメモリドライブ１１は「Test Unit Ready」を受信すると、リムーバブルメモリドライブ１１の状態に応じた応答を返信する。以下に応答の一例を示す。応答（１）〜（４）は連続して送信できる応答であり、応答（５）は連続して送信できない応答である。
（１）No Sense
（２）Medium Not Present
（３）Medium Not Ready
（４）エラーコード
（５）Medium May Have Changed
【００４０】
「No Sense」は、リムーバブルメモリ３２に直ぐにアクセス可能な状態であることを示す応答である。
「Medium Not Present」は、リムーバブルメモリ３２にアクセス不可能な状態であることを示す応答である。例えばリムーバブルメモリ３２がセットされていなければ「Medium Not Present」を送信する。
【００４１】
「Medium Not Ready」は、リムーバブルメモリ３２を起動中でアクセスできないことを示す応答である。リムーバブルメモリ３２にアクセスできない点では「Medium Not Present」と同じであるが、リムーバブルメモリ３２自体はセットされているので「Medium Not Present」とは区別される。
エラーコードは、リムーバブルメモリドライブ１１に何等かのエラーが発生したときに返信される応答であり、発生したエラーに対応するエラーコードが返信される。
【００４２】
「Medium May Have Changed」は、リムーバブルメモリドライブ１１の状態が変化した可能性があることを示す応答である。例えば、前回の「Test Unit Ready」を受信したときには「Medium Not Present」の状態であり、今回の「Test Unit Ready」を受信したときには「No Sense」の状態であるとする。この場合、今回の「Test Unit Ready」に対して直ぐに「No Sense」を送信するのではなく、今回の「Test Unit Ready」に対しては「Medium May Have Changed」を送信し、次回の「Test Unit Ready」に対して「No Sense」を送信する。
【００４３】
次に、ＰＣ１２がリムーバブルメモリドライブ１１の状態を監視するときのＭＦＰ１０の作動の一例を説明する。
図１は、ＭＦＰ１０のコマンド転送の流れを示すシーケンスチャートである。図示する例は、ＵＳＢデバイスインタフェース２９がＰＣ１２から「Test Unit Ready」を受信する周期よりも、ＵＳＢホストインタフェース３１がリムーバブルメモリドライブ１１に「Test Unit Ready」を送信する周期の方が長い場合の例である。
【００４４】
仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」５１を受信する。この場合、仮想マスストレージ３０はＵＳＢホストインタフェース３１から最初に受信した応答である「Medium Not Present」７４をＵＳＢデバイスインタフェース２９に転送する。
【００４５】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」５３を受信する。この時、仮想マスストレージ３０は前回転送した「Medium Not Present」７４の次の応答をＵＳＢホストインタフェース３１から未だ受信していない。この場合、仮想マスストレージ３０は前回転送した「Medium Not Present」７４をＵＳＢデバイスインタフェース２９に再転送する。「Test Unit Ready」５５についても同様である。
【００４６】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」５７を受信する。この場合、仮想マスストレージ３０はＵＳＢホストインタフェース３１から「Medium Not Present」７６を受信しているので、「Medium Not Present」７６を転送する。「Test Unit Ready」５９および６１については前回転送した「Medium Not Present」７６をＵＳＢデバイスインタフェース２９に再転送する。
【００４７】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」６３を受信する。この場合、受信順からすると次の転送対象の応答は「Medium May Have Changed」７８である。しかしながら、このとき仮想マスストレージ３０はＵＳＢホストインタフェース３１から「Medium May Have Changed」７８の次の応答を未だ受信していない。
【００４８】
この場合、仮想マスストレージ３０は「Medium May Have Changed」７８を転送すると次に転送する応答が通信手順に整合しなくなる可能性があると判定する。なぜなら、「Medium May Have Changed」７８を転送した後に、ＵＳＢホストインタフェース３１から次の応答を受信するより前にＵＳＢデバイスインタフェース２９から「Test Unit Ready」を受信してしまう可能性があり、その場合には連続して送信できない応答である「Medium May Have Changed」を再転送することになってしまうからである。「Medium May Have Changed」を再転送すると、通信手順に整合せず、ＰＣ１２で通信エラーが発生してしまうからである。
【００４９】
そこで、仮想マスストレージ３０は通信手順に整合しなくなる可能性がなくなるまで前回転送した応答を再転送させる。具体的には、ＵＳＢホストインタフェース３１から次の応答を受信するまで「Medium May Have Change」７８の転送を保留し、前回転送した応答である「Medium Not Present」７６を再転送する。次の応答を受信するまで「Medium May Have Change」７８の転送を保留する理由は、ＵＳＢホストインタフェース３１から次の応答を受信すれば、「Medium May Have Change」７８を送信した後に「Test Unit Ready」を受信したときに、確実に「Medium May Have Changed」以外の応答を転送できるので、「Medium May Have Change」の再転送を防止できるからである。すなわち、ＵＳＢホストインタフェース３１から次の応答を受信すれば、通信手順に整合しなくなる可能性がなくなるからである。ここで「Medium Not Present」は連続して送信できる応答なので、「Medium Not Present」を再転送しても通信手順に整合しなくなることはない。
【００５０】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」６５を受信する。この場合も仮想マスストレージ３０はＵＳＢホストインタフェース３１から「Medium May Have Changed」７８の次の応答を未だ受信していないので、「Medium May Have Change」７８の転送を保留し、代わりに「Medium Not Present」７６をＵＳＢデバイスインタフェース２９に転送する。
【００５１】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」６７を受信する。この時、仮想マスストレージ３０はＵＳＢホストインタフェース３１から「Medium May Have Changed」７８の次の応答「No Sense」８０を受信している。この場合、仮想マスストレージ３０は通信手順に整合しなくなる可能性はなくなったと判定し、保留していた「Medium May Have Change」７８をＵＳＢデバイスインタフェース２９に転送する。
【００５２】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」６９を受信する。この場合、仮想マスストレージ３０は転送順を本来の受信順に戻し、前回送信した応答「Medium May Have Changed」７８の次の応答「No Sense」８０をＵＳＢデバイスインタフェース２９に転送する。
【００５３】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」７１を受信する。この場合、仮想マスストレージ３０は前回転送した応答「No Sense」８０の次の応答「No Sense」８２をＵＳＢデバイスインタフェース２９に転送する。
【００５４】
なお、上記の例ではＵＳＢホストインタフェース３１から「No Sense」を受信した場合を例に説明したが、ＵＳＢホストインタフェース３１から「Medium Not Present」または「エラーコード」を受信した場合も同様である。ただし、「Medium Not Ready」の場合は仮想マスストレージ３０の対応が異なる。「Medium Not Ready」の場合、仮想マスストレージ３０は「Medium Not Ready」を読み飛ばして転送せず、その次に受信した応答を転送する。リムーバブルメモリ３２を起動中でアクセスできない場合はいずれ別の状態に変化するので、読み飛ばしても問題はなく、読み飛ばすことによって通信量を低減できる。
【００５５】
次に、ＰＣ１２がリムーバブルメモリドライブ１１の状態を監視するときのＭＦＰ１０の作動の別の例を説明する。
図４は、ＭＦＰ１０のコマンド転送の流れを示すシーケンスチャートである。図示する例は、ＵＳＢデバイスインタフェース２９がＰＣ１２から「Test Unit Ready」を受信する周期の方が、ＵＳＢホストインタフェース３１がリムーバブルメモリドライブ１１に「Test Unit Ready」を送信する周期よりも長い場合の例である。
【００５６】
仮想マスストレージ３０はＵＳＢデバイスインタフェース２９から「Test Unit Ready」８５を受信する。この場合、仮想マスストレージ３０はＵＳＢホストインタフェース３１から最初に受信した応答である「Medium Not Present」９０をＵＳＢデバイスインタフェース２９に転送する。
【００５７】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」８６を受信する。この場合、仮想マスストレージ３０はＵＳＢホストインタフェース３１から「Medium Not Present」９２を受信しているので、「Medium Not Present」９２を転送する転送する。
【００５８】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」８７を受信する。この場合、転送の順序からすると転送対象の応答は「Medium May Have Changed」９４である。この時、仮想マスストレージ３０はＵＳＢホストインタフェース３１から既に次の応答「No Sense」を受信している。この場合、仮想マスストレージ３０は「Medium May Have Changed」９４を転送しても次に転送する応答が通信手順に整合しなくなる可能性はないと判定する。そこで、仮想マスストレージ３０は「Medium May Have Change」９４の転送を保留せず、ＵＳＢデバイスインタフェース２９に「Medium May Have Change」９４を転送する。
【００５９】
次に仮想マスストレージ３０は、ＵＳＢデバイスインタフェース２９から「Test Unit Ready」８８を受信する。この場合、次の応答「No Sense」９６をＵＳＢデバイスインタフェース２９に転送する。
上記の例においても「Medium May Have Change」は連続して送信されないので、「Medium May Have Change」を連続して送信してしまうことによる通信エラーの発生を防止できる。
【００６０】
次に、仮想マスストレージ３０がＵＳＢホストインタフェース３１から「Test Unit Ready」を受信したときの処理の詳細について説明する。
図５は、仮想マスストレージ３０の処理の流れを示すフローチャートである。
Ｓ１０５では、仮想マスストレージ３０はＵＳＢホストインタフェース３１から受信した応答のうち前回ＵＳＢデバイスインタフェース２９に転送した応答の次の応答を転送対象の応答として取得する。ただし、前回転送した応答の後に次の応答を受信していなければ前回転送した応答を再び転送対象の応答とする。
【００６１】
Ｓ１１０では、仮想マスストレージ３０は転送対象の応答が「Medium Not Ready」であれば転送せずに読み飛ばす。
Ｓ１１５では、仮想マスストレージ３０は転送対象の応答の後に「Medium Not Present」を受信済みであるかを判定する。仮想マスストレージ３０は転送対象の応答の後に「Medium Not Present」を受信済みであればＳ１２０に進み、受信していなければＳ１２５に進む。
【００６２】
Ｓ１２０では、仮想マスストレージ３０は「Medium Not Present」までの応答を読み飛ばし、「Medium Not Present」を送信対象の応答とする。「Medium Not Present」を受信している場合は、「Medium Not Present」の前に受信した応答を転送しても無意味だからである。具体的には、例えば「Medium Not Present」の前に「No Sense」を受信していた場合、その後にリムーバブルメモリ３２にアクセスできなくなっているので、「No Sense」を送信しても実際にはアクセスすることはできず、「No Sense」を送信することに意味がなくなるからである。この場合、「Medium Not Present」の前に受信していた応答を全て読み飛ばすことにより、通信量を低減できる。
【００６３】
Ｓ１２５では、仮想マスストレージ３０は転送対象の応答が「Medium May Have Changed」であるか否かを判定する。仮想マスストレージ３０は転送対象の応答が「Medium May Have Changed」でなければ当該転送対象の応答を転送しても次に転送する応答が通信手順に整合しなくなる可能性はないと判定してＳ１３０に進み、「Medium May Have Changed」であればＳ１３５に進む。
【００６４】
Ｓ１３０では、仮想マスストレージ３０はＵＳＢデバイスインタフェース２９に転送対象の応答を転送する。
Ｓ１３５では、仮想マスストレージ３０は「Medium May Have Changed」の後に次の応答を受信しているかを判定する。仮想マスストレージ３０は、次の応答を受信している場合は、「Medium May Have Changed」を転送しても次に転送する応答が通信手順に整合しなくなる可能性はないと判定し、Ｓ１４０に進む。次の応答を受信していない場合は、「Medium May Have Changed」を転送すると次に転送する応答が通信手順に整合しなくなる可能性があると判定し、Ｓ１４５に進む。
【００６５】
Ｓ１４０では、仮想マスストレージ３０はＵＳＢデバイスインタフェース２９に「Medium May Have Changed」を転送する。
Ｓ１４５では、仮想マスストレージ３０は「Medium May Have Changed」の転送を保留し、前回転送した応答をＵＳＢデバイスインタフェース２９に再転送する。ただし、「Medium May Have Changed」を送信する直前には必ず「Medium Not Present」の状態になるので、実質的には「Medium May Have Changed」の保留中に再転送される応答は常に「Medium Not Present」である。
【００６６】
以上説明した本発明の一実施例に係るＭＦＰ１０によると、通信手順に整合しなくなることを確実に防止できるので、ＵＳＢデバイスインタフェースに接続されているＵＳＢホストから、ＵＳＢホストインタフェースに接続されているＵＳＢデバイスの状態を正常に監視できる。
なお、本実施例では電子機器としてＭＦＰ１０を例に説明したが、本発明はＵＳＢデバイスインタフェースとＵＳＢホストインタフェースとを備える任意の機器に適用可能である。
【００６７】
また、本発明は上記の実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施例に適用可能である。
【図面の簡単な説明】
【００６８】
【図１】本発明の一実施例に係るシーケンスチャート。
【図２】本発明の一実施例に係る電子機器のブロック図。
【図３】本発明の一実施例に係る電子機器の論理構成を示すブロック図。
【図４】本発明の一実施例に係るシーケンスチャート。
【図５】本発明の一実施例に係るフローチャート。
【符号の説明】
【００６９】
１０  マルチファンクションプリンタ（電子機器）、１１  リムーバブルメモリドライブ（ＵＳＢマスストレージ・デバイス）、１２  ＰＣ（ＵＳＢマスストレージ・ホスト）、１３  スキャンユニット（画像読み取り手段）、１４  プリントユニット（印刷手段）、２９  ＵＳＢデバイスインタフェース、３０  仮想マスストレージ（転送手段、判定手段）、３１  ＵＳＢホストインタフェース、３２  リムーバブルメモリ（記憶メディア）
【図１】
2008027213.tif 000003
【図２】
2008027213.tif 000004
【図３】
2008027213.tif 000005
【図４】
2008027213.tif 000006
【図５】
2008027213.tif 000007