(57)【要約】【課題】ホストとデバイスの区別なく、機能切替えリクエストによる設定機能の変更によりホストになったり、デバイスになったりできるようにすること。【解決手段】ホスト１１にはホスト機能以外にデバイス機能が、デバイス１３にはデバイス機能以外にホスト機能が具備された上、ホスト１１には、定期的にデバイス１３に対しデータ転送要求の有無の問合せを行い、その問合せの結果如何に応じて、デバイス１３から設定機能を取得して、設定機能の変更が必要か否かを判断し、設定機能の変更が必要な場合に、デバイス１３に機能切替えリクエストを発行するデバイスドライバ１１２を具備させるようにした。【選択図】      図１
2004348589.tif 000002
【特許請求の範囲】
【請求項１】
ホストからデバイスへの機能切替えリクエストによる設定機能の変更により、ホストとデバイスの区別なく、ホストになったり、デバイスになったりできるようにされ、アプリケーションから見て、ホスト、デバイスの区別なく、データ転送が可能とされているインタフェース装置であって、
ホストにはホスト機能以外にデバイス機能が、
デバイスにはデバイス機能以外にホスト機能が
具備されてなるインタフェース装置。
【請求項２】
請求項１記載のインタフェース装置において、
上記ホストには、定期的にデバイスに対しデータ転送要求の有無の問合せを行い、該問合せの結果如何に応じて、上記デバイスから該デバイスでの設定機能を取得して、設定機能の変更が必要か否かを判断し、設定機能の変更が必要な場合に、上記デバイスに機能切替えリクエストを発行するデバイスドライバが具備されてなるインタフェース装置。
【請求項３】
請求項２記載のインタフェース装置において、
上記デバイスドライバは、インタフェースが１つとして振舞うインタフェース装置。
【請求項４】
ホストからデバイスへの機能切替えリクエストによる設定機能の変更により、ホストとデバイスの区別なく、ホストになったり、デバイスになったりできるようにされ、アプリケーションから見て、ホスト、デバイスの区別なく、データ転送を可能ならしめるようにしたインタフェース制御方法。
【請求項５】
請求項４記載のインタフェース制御方法において、
ホストから、定期的にデバイスに対しデータ転送要求の有無の問合せを行う問合せステップと、
該問合せステップで得られた問合せの結果如何に応じて、上記デバイスから該デバイスでの設定機能を取得する設定機能取得ステップと、
該設定機能取得ステップで取得された設定機能に基づき、設定機能の変更が必要か否かを判断の上、設定機能の変更が必要な場合に、上記デバイスに機能切替えリクエストを発行する機能切替えリクエスト発行ステップと
を含むインタフェース制御方法。
【請求項６】
請求項５記載のインタフェース制御方法において、
上記機能切替えリクエスト発行ステップでは、デバイスでホスト機能を利用したデータ転送要求が発生した場合、ホスト機能を利用していたアプリケーションがデバイス機能を利用してデータ転送要求を発生させる場合、またはデバイス機能を利用していたアプリケーションがホスト機能を利用してデータ転送要求を発生させる場合に、機能切替えリクエストが発行されるインタフェース制御方法。
【請求項７】
ホストからデバイスの機能切替えリクエストによる設定機能の変更によりインタフェースを制御するためのインタフェース制御プログラムであって、
ホストから、定期的にデバイスに対しデータ転送要求の有無の問合せを行う問合せステップと、
該問合せステップで得られた問合せの結果如何に応じて、上記デバイスから該デバイスでの設定機能を取得する設定機能取得ステップと、
該設定機能取得ステップで取得された設定機能に基づき、設定機能の変更が必要か否かを判断の上、設定機能の変更が必要な場合に、上記デバイスに機能切替えリクエストを発行する機能切替えリクエスト発行ステップと
を含むインタフェース制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストからデバイスへの機能切替えリクエストによる設定機能の変更により、ホストとデバイスの区別なく、ホストになったり、デバイスになったりできるようにされたインタフェース装置及びインタフェース制御方法、並びにインタフェース制御プログラムに関する。
【０００２】
【従来の技術】
コンピュータと各種周辺装置とを接続するためのバスとして、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が知られている。このＵＳＢは、２本の信号線と２本の電源線とが内包されたケーブルバスとされ、最近提供されている、多くのパーソナルコンピュータやその周辺装置には、このＵＳＢに対応したインタフェースが装備されている。ＵＳＢインタフェースでは、１つのホストコンピュータ（以下、単にＵＳＢホストと称す）に対し、１以上の周辺装置がバス接続されるシステムが想定されている。このＵＳＢを介しＵＳＢホストに接続される周辺装置は一般的にＵＳＢデバイスと称されている。
【０００３】
ＵＳＢホストにＵＳＢデバイスが接続されれば、ＵＳＢホストからそのＵＳＢデバイスに対しては、一意的なアドレスが割り当てられるようになっている。また、ＵＳＢデバイスには、ＵＳＢホストとの間の通信を終端するためのエンドポイント（Ｅｎｄｐｏｉｎｔ）が複数備えられている。このエンドポイントは具体的にデータ格納用のＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）バッファとして構成されており、ＵＳＢホストとＵＳＢデバイスとの間で通信が行われるに際しては、そのエンドポイントを介し通信が行われるようになっている。
【０００４】
因みに、特許文献１には、ＵＳＢデバイスとしてのハードディスクドライブ装置やＦＤ（フレキシブル磁気ディスク）ドライブ装置、キーボード、ポインティングデバイス等を物理的に取外すことなく、外部のコンピュータ装置で兼用することができるコンピュータ装置が記載されている。
【０００５】
【特許文献１】
特開２００２―３６６２６８号公報
【０００６】
【発明が解決しようとする課題】
ところで、ＵＳＢの通信規格では、１つのＵＳＢデバイスにはただ１つのディスクリプタ（ｄｅｓｃｒｉｐｔｏｒ）（ＵＳＢ通信規格において、どのような機能のデバイスが接続されているかを示す記述子）を持つようにされている。そのため、これまでのＵＳＢデバイスでは、そのデバイスが複数の機能を持つ場合には、複数のディスクリプタを持つことが不可とされていたことから、１つのディスクリプタに対し複数のインタフェース（ＵＳＢ通信規格では、接続手段を示す）を実装せざるを得なかった。
【０００７】
また、ＵＳＢデバイスはＵＳＢホストからのリクエストに応じてデータ転送を行うことから、ＵＳＢデバイスから主体的にデータ転送を行うことは不可とされ、必然的にそのような形態でデータ転送が行われるように、ＵＳＢデバイスが設計されていた。このような不具合を回避するには、ＵＳＢホストコントローラとＵＳＢデバイスコントローラを同一機器上に実装するか、ＵＳＢ―ＯＴＧ規格に沿ったＵＳＢコントローラを実装するしかなかった。
【０００８】
本発明の目的は、ホストとデバイスの区別なく、機能切替えリクエストによる設定機能の変更によりホストになったり、デバイスになったりできるようにすることにある。
【０００９】
【課題を解決するための手段】
ホストにはホスト機能以外にデバイス機能が、デバイスにはまた、デバイス機能以外にホスト機能が具備されるようにして、ホストからデバイスへの機能切替えリクエストによる設定機能の変更により、ホストとデバイスの区別なく、デバイスがホストになったり、ホストがデバイスになったりできるようすることで、アプリケーションから見て、ホスト、デバイスの区別なく、データ転送が行われるようにしたものである。
【００１０】
これまでにあっては、デバイスはホストからのリクエストに応じてデータ転送を行い、デバイスから主体的にデータ転送を行うことは不可とされていたが、ホストでの設定機能は自律的に変更可能とされ、また、その設定機能の変更に伴い、以上のように、デバイスでの設定機能がホストからの機能切替えリクエストにより変更可能とされる場合には、デバイスからも主体的にデータ転送を行うことが可能となる。
【００１１】
【発明の実施の形態】
以下、本発明の一実施の形態をインタフェースはＵＳＢであるとして、図１から図５により説明する。
先ず本発明に係るＵＳＢシステムについて説明すれば、その一例でのシステム構成を図１に示す。図示のように、そのＵＳＢシステムは、ＵＳＢホスト１１とＵＳＢデバイス１３とがＵＳＢケーブル１２により接続された状態として構成されている。このうち、先ずＵＳＢホスト１１について説明すれば、そのソフトウェアとハードウェアの構成は、ＵＳＢホストコントローラ１１１とそれを制御するデバイスドライバ１１２、更には、そのデバイスドライバ１１２を利用するアプリケーション１１３により構成される。そのデバイスドライバ１１２はまた、使用される機能毎に分けられている。即ち、デバイスドライバ１１２は、ホスト機能デバイスドライバ１１２１とデバイス機能デバイスドライバ１１２２から構成されている。
【００１２】
以上のような事情はＵＳＢデバイス１３側でも同様であり、そのソフトウェアとハードウェアの構成は、ＵＳＢデバイスコントローラ１３１とそれを制御するデバイスドライバ１３２、更には、そのデバイスドライバ１３２を利用するアプリケーション１３３により構成される。そのデバイスドライバ１３２はまた、使用される機能毎に分けられている。即ち、デバイスドライバ１３２は、ホスト機能デバイスドライバ１３２１とデバイス機能デバイスドライバ１３２２から構成されている。このＵＳＢデバイス１３側では、ＵＳＢの機能としては物理的に１つであるが、１つのインタフェース上に、少なくとも２つの機能（ホスト機能及びデバイス機能）が区別された状態として存在している。上述のように、デバイスドライバ１１２，１３２各々には、それら機能に対応したデバイスドライバが実装されている。
【００１３】
ここで、ＵＳＢデバイス１３がホスト機能及びデバイス機能を有していることについて説明すれば、一般的に、ＵＳＢの機能を表現するためにディスクリプタが使用される。複数の機能を表現するためには、インタフェースディスクリプタが複数記述されるが、本発明では、インタフェースを１つに見せるためにインタフェースディスクリプタは１つとし、その上に２つの機能が実装されていることを示す。図２にはディスクリプタの階層構成が示されているが、これからも判るように、インタフェースディスクリプタは１つであり、代替設定としてのディスクリプタが記述されることで、別の機能が存在していることを示している。そして、各々のインタフェース、代替設定に対してエンドポイントディスクリプタが関連付けられている。
【００１４】
その図２について詳細に説明すれば、図２に示す例では、ディスクリプタ階層として、ＵＳＢホスト１１、ＵＳＢデバイス１３各々について以下の構成が成立するものとする。先ずデバイスディスクリプタ（Ｄｅｖｉｃｅ）２１が存在する。このデバイスディスクリプタ２１にデバイス固有の情報とエンドポイント０（コントロールエンドポイント）情報が含まれている。このエンドポイント０情報には、デフォルトコントロールパイプ（ｄｅｆａｕｌｔ  ｃｏｎｔｒｏｌ  ｐｉｐｅ）における最大パケットサイズが記述される。また、そのデバイスディスクリプタ２１に関連付けされて、コンフィギュレーションディスプリクタ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ０）２２が存在する。このコンフィギュレーションディスクリプタ２２には、インタフェースの数や電源特性が記述される。図２においては、インタフェースの数は１である。
【００１５】
更に、１つのインターフェィスディスクリプタ（Ｉｎｔｅｒｆａｃｅ０）２３が存在しているが、代替設定として、オルターネート０（Ａｌｔｅｒｎａｔｅ０）２４のディスクリプタが記述されることで、別の機能が存在していることを示している。そして、各々のインタフェース、代替設定に対してエンドポイントディスクリプタが関連付けられている。インタフェース０に関連付けられているエンドポイント情報は、図２に示す例においては、３つ存在している。エンドポイント１（Ｅｎｄｐｏｉｎｔ１）２３１、エンドポイント２（Ｅｎｄｐｏｉｎｔ２）２３２、エンドポイント３（Ｅｎｄｐｏｉｎｔ３）２３３各々のエンドポイント情報であり、デフォルトコントロールパイプ用として存在しているエンドポイント０（Ｅｎｄｐｏｉｎｔ０）２２１のエンドポイント情報とは別の、バルク（Ｂｕｌｋ）転送、インタラプト（Ｉｎｔｅｒｒｕｐｔ）転送、アイソクロナス（Ｉｓｏｃｈｒｏｎｏｕｓ）転送のエンドポイント情報が記述される。図２に示す例においては、エンドポイント１、エンドポイント２、エンドポイント３各々には、Ｂｕｌｋ  ＩＮ転送、Ｂｕｌｋ  ＯＵＴ転送、Ｉｎｔｅｒｒｕｐｔ  ＩＮ転送の情報と、各エンドポイントにおける最大パケットサイズが記述される。
【００１６】
また、オルターネート０に関連付けられているエンドポイント情報も、図２に示す例においては、３つ存在している。エンドポイント１（Ｅｎｄｐｏｉｎｔ１）２４１、エンドポイント２（Ｅｎｄｐｏｉｎｔ２）２４２、エンドポイント３（Ｅｎｄｐｏｉｎｔ３）２４３各々のエンドポイント情報であり、このオルターネート０のインタフェース固有のエンドポイント情報には、インタフェース０と同様の情報が記述されており、エンドポイントディスクリプタはインタフェースディスクリプタとその代替設定においては同一の構成にしておく。但し、インタフェース０とオルターネート０のインタフェース情報における違いは、ＵＳＢ  Ｈｏｓｔ機能を有しているか、ＵＳＢ  Ｄｅｖｉｃｅ機能を有しているかの違いになる。
【００１７】
インタフェースディスクリプタ内にＵＳＢ  Ｄｅｖｉｃｅ機能を保有していることの情報を入れ、代替設定のディスクリプタ内にＵＳＢ  Ｈｏｓｔ機能を有していることの情報を入れることで、ＵＳＢデバイス１３として、ＵＳＢ  Ｈｏｓｔ機能及びＵＳＢ  Ｄｅｖｉｃｅ機能を有していることを表す。以降の説明において、ディスクリプタの構成は上記の通りであるとする。図２に示す例において、インタフェース０においては、ＵＳＢ  Ｄｅｖｉｃｅとしてのストレージ機能が、また、オルターネート０においては、ＵＳＢ  Ｈｏｓｔとしてのデバッグ機能が有効になるように記載される。この情報は、インタフェースディスクリプタ内のＣｌａｓｓ／ＳｕｂＣｌａｓｓの組合せにて決定される。因みに、これらの機能を入れ替えて設定しておくことは基本的に不可能である。つまり、インタフェースディスクリプタ内にＵＳＢ  Ｈｏｓｔ機能を有していることの情報を入れ、代替設定のディスクリプタ内にＵＳＢ  Ｄｅｖｉｃｅ機能を有していることの情報をいれるという設定は不可とされる。
【００１８】
以上の構成において、インタフェースディスクリプタに設定された機能が初期状態で有効な機能として設定されることになる。つまり、インタフェースディスクリプタ内にＵＳＢ  Ｄｅｖｉｃｅ機能の設定が、また、代替設定のディスクリプタ内にＵＳＢ  Ｈｏｓｔ機能の設定がされていれば、初期状態においては、ＵＳＢ  Ｄｅｖｉｃｅ機能が有効になるように、システム設定されることになる。
【００１９】
したがって、ＵＳＢホスト１１では、それらディスクリプタ情報をＵＳＢデバイス１３から受け取ることで、ＵＳＢデバイス１３の機能を認識するようになる。１つのインタフェース上に、少なくとも２つの機能が区別された状態として存在していること知る手段として、ディスクリプタ構成に全てを記述する必要はなく、例えばベンダ定義のコマンドを用いるようにして、別の手段を用いることでも可能である。
【００２０】
また、ＵＳＢホスト１１も同様のディスクリプタ情報を保持しており、インタフェースディスクリプタ内にＵＳＢ  Ｈｏｓｔ機能の設定が、また、代替設定のディスクリプタ内にＵＳＢ  Ｄｅｖｉｃｅ機能の設定がされていれば、初期状態においては、ＵＳＢ  Ｈｏｓｔ機能が有効になるように、システム設定される。そして、これらの機能を入れ替えて設定しておくことは基本的に不可とされる。このようにして、初期状態のＵＳＢシステムにおいては、ＵＳＢホスト１１とＵＳＢデバイス１３は一意に区別されることになる。
【００２１】
ここで、ＵＳＢデバイス１３がＵＳＢホスト１１に接続された際に、ＵＳＢホスト１１とＵＳＢデバイス１３との間で行われるセットアップの手順について説明すれば、ＵＳＢデバイス１３が接続されたことを検知すると、ＵＳＢホスト１１によりデフォルトコントロールパイプが形成される。デフォルトコントロールパイプが形成されれば、このデフォルトコントロールパイプを介し、ＵＳＢホスト１１によりＵＳＢデバイス１３のセットアップが開始される。先ずＵＳＢホスト１１は、ＵＳＢデバイス１３に対してコントロール転送を開始し、そのセットアップステージにおいて、Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（ＤＥＶＩＣＥ指定）リクエストを送信することで、デバイスディスクリプタをＵＳＢホスト１１に送信することが要求される。
【００２２】
この要求に対する応答として、ＵＳＢデバイス１３からは、コントロール転送のデータステージにおいて、デバイスディスクリプタがＵＳＢホスト１１宛てに送信される。このデバイスディスクリプタが受信されれば、ＵＳＢホスト１１からは、ステータスステージにおいて、ＵＳＢデバイス１３のエンドポイント０宛てに長さ０のデータパケットが送信されることにより、正常にディスクリプタが受信されたことが通知される。このようにして、デバイスディスクリプタがＵＳＢホスト１１に送信されることで、ＵＳＢホスト１１はＵＳＢデバイス１３に関する一般情報を有するようになる。この一般情報には、ＵＳＢデバイス１３のプロトコルコードやエンドポイント０の最大パケットサイズ等が含まれている。
【００２３】
ＵＳＢホスト１１ではまた、デバイスディスクリプタが受信されれば、ＵＳＢデバイス１３に対して一意のアドレス（以下、単にデバイスアドレスと称す）を割り当てるが、このデバイスアドレスの割当てが完了すれば、ＵＳＢデバイス１３に対し、Ｓｅｔ  Ａｄｄｒｅｓｓリクエストが送信されることによって、デバイスアドレスの割り当てが報告される。このようにして、ＵＳＢデバイス１３に対して、デバイスアドレスが設定される。
【００２４】
以上のようにして、デバイスアドレスの設定が完了すれば、ＵＳＢホスト１１からは、再度、セットアップステージにおいて、Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（ＣＮＦＩＧＵＲＡＴＩＯＮ指定）リクエストがＵＳＢデバイス１３に送信されることによって、コンフィギュレーションディスクリプタ等をＵＳＢホスト１１に送信することが、ＵＳＢデバイス１３に要求される。ＵＳＢデバイス１３からは、その要求に応答して、データステージにおいて、コンフィギュレーションディスクリプタ、インタフェースディスクリプタ、代替設定及びそれらに付随するエンドポイントディスクリプタがＵＳＢホスト１１に送信される。これに対する応答として、ＵＳＢホスト１１からはまた、ステータスステージにおいて、ＵＳＢデバイス１３のエンドポイント０宛てに長さ０のデータパケットが送信されることで、正常にそれらディスクリプタが受信されたことが通知される。
【００２５】
以上のようにして、ＵＳＢデバイス１３からＵＳＢホスト１１へ送られるコンフィギュレーションディスクリプタ等には、ＵＳＢデバイス１３が有する情報が含まれている。この際に、ＵＳＢホスト１１が受け取るディスクリプタの構成は、インタフェースディスクリプタ内にはＵＳＢ  Ｄｅｖｉｃｅ機能の設定が、また、代替設定のディスクリプタ内にはＵＳＢ  Ｈｏｓｔ機能が設定されている。
【００２６】
ＵＳＢホスト１１では、図２に示すディスクリプタ情報を全て受け取ると、各エンドポイントの番号とインタフェース番号との関係を把握するとともに、ＵＳＢデバイス１３の構成が以下のように設定される。
即ち、インタフェースディスクリプタ及びその代替設定にＵＳＢデバイス１３の機能が記述されているが、インタフェースディスクリプタに記述された機能であるところのストレージ機能が最初に有効になるように、ＵＳＢデバイス１３のエンドポイント及びインタフェース構成が設定される。これは、後述する機能変更のリクエストがくるまでは、デバッグ機能に対する要求を全てＳｔａｌｌ（停止）させるようにするためである。
【００２７】
そして、エンドポイント情報のコンフィギュレーションを行い、図２に記載されたエンドポイント情報に基づき、Ｂｕｌｋ転送やＩｎｔｅｒｒｕｐｔ転送等の転送モード、更には、ＩＮ／ＯＵＴの方向、最大パケットサイズが決定される。その際、代替設定に記述されたデバッグ機能もセットアップ後にも使用できるように、デバッグ機能を有することと、ディスクリプタ階層の情報を保持しておく。
【００２８】
その後、ＵＳＢホスト１１からは、コントロール転送のセットアップステージにおいて、Ｓｅｔ  ＣｏｎｆｉｇｕｒａｔｉｏｎリクエストＵＳＢデバイス１３に送信されることによって、設定通りにインタフェース機能を設定することが要求される。ＵＳＢデバイス１３では、そのＳｅｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎコマンドに従って、インタフェース設定が行われる。このようにして、ＵＳＢデバイス１３のセットアップは完了される。このセットアップ作業以降、ＵＳＢデバイス１３は、インタフェースディスクリプタに設定された機能であるところのＵＳＢ  Ｄｅｖｉｃｅとして機能するようになる。この時点では、代替設定に記述されたＵＳＢ  Ｈｏｓｔ機能は有効にはならないが、ＵＳＢ  Ｈｏｓｔ機能を有することをＵＳＢホスト１１は理解していることになる。
【００２９】
更に、その後、ＵＳＢホスト１１からＵＳＢデバイス１３に対しては、コンフィギュレーションが行われる。この際でのデータ転送には、先ほどコンフィギュレーションされたデバイスアドレスが使用される。ＵＳＢホスト１１は、先ほどと逆方向にディスクリプタ情報が転送されるように、Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（ＤＥＶＩＣＥ指定）とＧｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ指定）を行うことで、ＵＳＢホスト１１からディスクリプタ情報がＵＳＢデバイス１３に転送される。その後、ＵＳＢホスト１１が逆方向のＳｅｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎを行うことで、ＵＳＢデバイス１３はＵＳＢホスト１１のセットアップを完了する。
【００３０】
以上の一連の作業が行われることで、ＵＳＢシステムのセットアップが完了される。これにより、ＵＳＢホスト１１では、ＵＳＢデバイス１３がＵＳＢ  Ｈｏｓｔ／ＵＳＢ  Ｄｅｖｉｃｅの両機能を有しており、ＵＳＢ  Ｄｅｖｉｃｅが有効であることが判る。一方、ＵＳＢデバイス１３では、ＵＳＢホスト１１がＵＳＢ  Ｈｏｓｔ／ＵＳＢ  Ｄｅｖｉｃｅの両機能を有しており、ＵＳＢ  Ｈｏｓｔが有効であることが判る。
【００３１】
さて、図１に示すＵＳＢシステムにおいて、ＵＳＢ  ＨｏｓｔとＵＳＢ  Ｄｅｖｉｃｅの機能を切替る方法について具体的に説明すれば、機能の切替えは、インタラプト転送及びＳＥＴ ＩＮＴＥＲＦＡＣＥのコマンドを利用して行われる。これらのコマンドはＵＳＢの規格上で定義されているコマンドであり、機能の切り替えは、ＵＳＢホスト１１上においてアプリケーションが切替わるとき、あるいはＵＳＢデバイス１３において、データ転送要求が発生した場合に起こる。因みに、ＵＳＢホスト１１上においてアプリケーションが切替わるときとは、１）ＵＳＢホスト機能を利用していたアプリケーションがＵＳＢデバイス機能を利用してデータ転送を発生させる場合や、２）ＵＳＢデバイス機能を利用していたアプリケーションがＵＳＢホスト機能を利用してデータ転送を発生させる場合を指す。
【００３２】
図３に、その切替えの際に、現在の機能から別の機能の使用要求がなされた場合での動作シーケンスを示す。これによる場合、先ずＵＳＢホスト１１は、インタラプト転送を利用して、ＳＯＦ（スタートオブフレーム）の発生するタイミングで、ＵＳＢデバイス１３に対しＵＳＢ  Ｈｏｓｔ機能が主体となってのデータ転送要求が発生しているか否かを定期的に確認する（処理３０１，３０２）。ＵＳＢデバイス１３でＵＳＢ  Ｈｏｓｔ機能を利用したデータ転送要求が発生している場合、あるいはＵＳＢホスト１１でＵＳＢ  Ｄｅｖｉｃｅ機能を利用したデータ転送要求が発生している場合には、データ転送要求がありとして、機能の切替えが行われることになる（処理３０３）。
【００３３】
そのＵＳＢ  Ｈｏｓｔ／ＵＳＢ  Ｄｅｖｉｃｅ機能の機能切替えに先立っては、先ずＵＳＢホスト１１は、ＵＳＢデバイス１３のエンドポイント０宛てのコントロール転送を開始し、そのセットアップステージにおいて、そのエンドポイント０に対しては、ＧＥＴ ＩＮＴＥＲＦＡＣＥ（ベンダ定義のコマンド）が送信される（処理３０４）。このＧＥＴ ＩＮＴＥＲＦＡＣＥは、現在、ＵＳＢデバイス１３側では如何なる機能が設定された上、実行されているのか、その設定機能情報を要求する旨のコマンドである。その要求に応答して、ＵＳＢデバイス１３からは、データステージにおいて、現在設定されている機能に対応したデータがＵＳＢホスト１１側に送信される（処理３０５）。この場合、ＵＳＢデバイス１３には、ＵＳＢ  Ｄｅｖｉｃｅ機能が設定されているので、その旨の情報がＵＳＢホスト１１に送信される。その情報を受け取れば、ＵＳＢホスト１１からは、ステータスステージにおいて、正常に情報の受信が行われた旨がＵＳＢデバイス１３側に通知される（処理３０６）。
【００３４】
以上のようにして、ＵＳＢホスト１１では、ＵＳＢデバイス１３に現に設定されている機能が確認されているが、果して、その機能がＵＳＢホスト１１が要求している機能と一致しているか否かが判定される（処理３０７）。もしも、一致していれば、その後に機能切替えのための設定機能変更要求は発生されることはないが、一致していなければ、その後に、設定機能変更要求が発生されるようになっている。この場合、ＵＳＢホスト１１からＵＳＢデバイス１３に対しては、デバッグ機能への切替えが要求されているが、ＵＳＢデバイス１３での設定機能はＵＳＢ  Ｄｅｖｉｃｅ機能であることから、設定機能変更要求が発生されることになる。
【００３５】
その設定機能変更要求の発生に際しては、それに先立って、先ずＵＳＢホスト１１はＵＳＢ  Ｈｏｓｔ機能からＵＳＢ  Ｄｅｖｉｃｅ機能に仮切替えされる（処理３０８）。その後、ＵＳＢホスト１１は、ＵＳＢデバイス１３のエンドポイント０宛てのコントロール転送を開始し、そのセットアップステージにおいて、設定機能変更要求としてのＳＥＴ ＩＮＴＥＲＦＡＣＥ（ベンダ定義のコマンド）が送信される（処理３０９）。このＳＥＴ ＩＮＴＥＲＦＡＣＥは、現在、ＵＳＢデバイス１３側に設定されている機能を指定機能に変更することを要求する旨のコマンドである。このコマンドにはＵＳＢ  Ｈｏｓｔ機能への切替えの情報が埋め込まれている。したがって、ＵＳＢデバイス１３では、そのコマンドを受信後、指定機能への切替えが行われる（処理３１０）。この場合、ＵＳＢデバイス１３には、それまでＵＳＢ  Ｄｅｖｉｃｅ機能が設定されていたが、設定機能はＵＳＢ  Ｈｏｓｔ機能に変更されることになる。この設定機能の変更後、コントロール転送のステータスステージで、機能切替えの成否がＵＳＢデバイス１３からＵＳＢホスト１１に送信される（処理３１１）。
【００３６】
機能の切替えに成功した場合には、ＵＳＢホスト１１側での機能はＵＳＢ  Ｈｏｓｔ機能からＵＳＢ  Ｄｅｖｉｃｅ機能に最終的に切替えされ、後述のように、新機能であるＵＳＢ  Ｈｏｓｔ機能とＵＳＢ  Ｄｅｖｉｃｅとの間でデータ通信が開始される。しかしながら、機能の切替えに失敗した場合、新機能であるＵＳＢ  Ｈｏｓｔ機能はＵＳＢデバイス１３側では有効とならず、また、ＵＳＢホスト１１はＵＳＢ  Ｈｏｓｔ機能に戻され、以前の機能でデータ通信が行われる。代替設定の機能からインタフェースディスクリプタの機能への機能切替えも同様な動作で行われる。
【００３７】
引き続き、設定機能変更後でのデータ転送動作を図４に示すシーケンスに従って説明すれば、ＵＳＢホスト１１側のＵＳＢ  Ｄｅｖｉｃｅ機能からベンダ定義によるコマンド発行リクエストが出される（処理３１２）。そのリクエストにＵＳＢデバイス１３側のＵＳＢ  Ｈｏｓｔ機能が応答し、コマンドがＵＳＢホスト１１のＵＳＢ  Ｄｅｖｉｃｅ機能に発行される（処理３１３）。そのコマンドを受信したＵＳＢホスト１１のＵＳＢ  Ｄｅｖｉｃｅ機能はコマンド内容を解釈した上、ステータスをＵＳＢデバイス１３のＵＳＢ  Ｈｏｓｔ機能に返答する（処理３１４）。この後は、コマンドに従って、Ｂｕｌｋ転送やＩｎｔｅｒｒｕｐｔ転送、Ｉｓｏｃｈｒｏｎｏｕｓ転送によるデータ転送が行われる（処理３１５）。
【００３８】
更に、データ転送終了後での機能変更動作シーケンスを図５により説明すれば、ＵＳＢホスト１１は、インタラプト転送を利用して、ＳＯＦ（スタートオブフレーム）の発生するタイミングで、ＵＳＢデバイス１３に対しＵＳＢ  Ｈｏｓｔ機能が主体となってのデータ転送要求が発生しているか否かを確認する（処理３１６，３３１７）。ＵＳＢデバイス１３でＵＳＢ  Ｈｏｓｔ機能を利用したデータ転送が発生しない場合、あるいはＵＳＢホスト１１でＵＳＢ  Ｈｏｓｔ機能を利用したデータ転送が発生する場合には、以降、図３での機能変更の場合と同様のシーケンスに従って、機能切替えが行われることになる。この機能変更が終了すれば、初期状態、即ち、ＵＳＢホスト１１側はＵＳＢ  Ｈｏｓｔ機能を、また、ＵＳＢデバイス１３側はＵＳＢ  Ｄｅｖｉｃｅ機能を有するようになる。
【００３９】
以上、説明したように、ＵＳＢホスト／ＵＳＢデバイスにおいて、機能切替えベンダリクエストを発行する機能を備えたデバイスドライバを有することにより、これらの機能全てに必要なコンフィギュレーションやインタフェース、エンドポイントを持つことなく、必要最低限のコンフィギュレーションやインタフェース、エンドポイントで通信路を確保することができる。同時に、ＵＳＢホストコントローラ、あるいはＵＳＢデバイスコントローラの何れか１つしか有さないシステムにおいて、ＵＳＢデバイスの機能、あるいはＵＳＢホストの機能を実現することができる。
【００４０】
上記効果に加え、複数の機能を同時に使用することにより、ホストアプリケーションからは複数のアプリケーションの同時利用が可能になり、ユーザの利便性が向上されることになる。それとともに、ＵＳＢシステムのユーザーアプリケーションからは、ＵＳＢホストコントローラ及びＵＳＢデバイスコントローラの存在を意識することなく、データ転送を行うことが可能になる。
【００４１】
因みに、本発明に係るＵＳＢシステムでの特徴としては、以下のような内容（１）〜（８）が考えられる。
即ち、
（１）：ホストコンピュータと周辺機器をＵＳＢにより接続するＵＳＢ制御システムであって、ＵＳＢホスト及びＵＳＢデバイス上のアプリケーションからはそれらの機能の違いを意識することなく、データ転送が可能とされているＵＳＢ制御システム。
（２）：（１）に記載のＵＳＢ制御システムにおいて、ホストコンピュータと周辺機器各々がホスト機能とデバイス機能を持つことを特徴とするＵＳＢ制御システム。
（３）：（１）に記載のＵＳＢ制御システムにおいて、ホストが機能取得・切替えリクエストを発行する機能を備えたデバイスドライバを有し、前記ＵＳＢホストは定期的にＵＳＢデバイスにデータ転送の有無を問い合わせることを特徴とするＵＳＢ制御システム。
（４）：（１）に記載のＵＳＢ制御システムにおいて、デバイスドライバはホスト機能、デバイス機能ごとに有するが、デバイスドライバはインタフェースが１つとして振舞うことを特徴とするＵＳＢ制御システム。
【００４２】
（５）：（１）に記載のＵＳＢ制御システムにおいて、前記機能切替えベンダリクエストを受信する機能を備えた制御部は、機能切替えベンダリクエストの受信時に、シームレスに指定された機能の内容に従った動作状態へ移行させることを特徴とするＵＳＢ制御システム。
（６）：（１）に記載のＵＳＢ制御システムにおいて、前記機能切替えのために周辺機器の機能の情報をホストコンピュータに送る（ホストコンピュータは機能の情報を受信する）ことを特徴とするＵＳＢ制御システム。
（７）：（１）に記載のＵＳＢ制御システムにおいて、前記機能切替えのためにＵＳＢホストの機能の情報を周辺機器に送ることを特徴とするＵＳＢ制御システム。（８）：（１）に記載のＵＳＢ制御システムにおいて、（２）に記載された問い合わせ機能はホストコントローラを保有するＵＳＢホストから問い合わせが送られることを特徴とするＵＳＢ制御システム。
【００４３】
以上、本発明者によってなされた発明を実施の形態に基づき、具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変更可能であることはいうまでもない。
【００４４】
【発明の効果】
ホストとデバイスの区別なく、機能切替えリクエストによる設定機能の変更によりホストになったり、デバイスになったりできる。
【図面の簡単な説明】
【図１】本発明に係るＵＳＢシステムの一例でのシステム構成を示す図である。
【図２】ＵＳＢデバイスのディスクリプタの階層構成を示す図である。
【図３】現在の機能から別の機能の使用要求が行われた場合での動作シーケンスを示す図である。
【図４】設定機能変更後でのデータ転送動作シーケンスを示す図である。
【図５】データ転送終了後での機能変更動作シーケンスを示す図である。
【符号の説明】
１１…ＵＳＢホスト、１２…ＵＳＢケーブル、１３…ＵＳＢデバイス、１１１…ＵＳＢホストコントローラ、１１２，１３２…デバイスドライバ、１１３，１３３…アプリケーション、１１２１，１３２１…ホスト機能デバイスドライバ、１１２２，１３２２…デバイス機能デバイスドライバ、１３１…ＵＳＢデバイスコントローラ
【図１】
2004348589.tif 000003
【図２】
2004348589.tif 000004
【図３】
2004348589.tif 000005
【図４】
2004348589.tif 000006
【図５】
2004348589.tif 000007