(57)【要約】【課題】ＵＳＢインタフェースを用いてＯＴＧ規格に則った情報のやり取りをするＯＴＧシステムにおいて、ＵＳＢデバイス側に搭載するハードウェア資源を少なく保ったまま、ユーザの特別な操作なしに複数のＵＳＢクラス機能を実現できるようにする。【解決手段】ＵＳＢデバイスとして動作する際に、第１のデバイス及び第２のデバイスが協調動作することで、順々に前記ＵＳＢデバイス側のＵＳＢクラス機能を切り替えながらＵＳＢホスト側が要求するＵＳＢクラスを動作させるようにすることによって、ＵＳＢデバイス側に搭載するハードウェア資源を少なく保ったまま、ユーザの特別な操作なしに複数のＵＳＢクラス機能を実現できるようにする。【選択図】図１
2007323316.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢインタフェースを用いてＯＴＧ規格に則った情報のやり取りをする通信装置であって、
ＵＳＢデバイスとして動作する際に、第１のデバイス及び第２のデバイスが協調動作することで、順々に前記ＵＳＢデバイス側のＵＳＢクラス機能を切り替えながらＵＳＢホスト側が要求するＵＳＢクラスを動作させることを特徴とする通信装置。
【請求項２】
前記協調動作は、前記ＵＳＢホスト側に搭載されるenumeration機構及び接続エラー判定機構であり、
前記ＵＳＢデバイス側は、ホスト制御機構及びクラス切り替え機構であることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記ＵＳＢホスト側に搭載するenumeration機構は、前記ＵＳＢデバイス側のクラスが前記ＵＳＢホスト側が要求するクラスでない場合に、ＨＮＰにより一旦ホスト機能を交代する機能を有していることを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記ＵＳＢホスト側に搭載する接続エラー判定機構は、前記ＵＳＢデバイス側のクラスが前記ＵＳＢホスト側が要求するクラスでない場合に、クラス切り替え処理を繰り返し、前記繰り返した回数によって前記ＵＳＢデバイス側を接続できないＵＳＢ機器であると判断し、エラー処理を行う機能を有していることを特徴とする請求項１〜３の何れか１項に記載の通信装置。
【請求項５】
前記ＵＳＢホスト側に搭載する接続エラー判定機構は、前記ＵＳＢデバイス側のクラスが前記ＵＳＢホスト側が要求クラスでない場合に、クラス切り替え処理を繰り返す際に、前記ＵＳＢデバイス側の最初のクラスを記憶しておき、繰り返している間に同一のクラスが出現した時点で前記ＵＳＢデバイス側を接続できないＵＳＢ機器であると判断し、エラー処理を行う機能を有していることを特徴とする請求項１〜３の何れか１項に記載の通信装置。
【請求項６】
前記ＵＳＢホスト側に搭載する接続エラー判定機構は、前記ＵＳＢデバイス側のクラスが前記ＵＳＢホスト側が要求するクラスでない場合に、クラス切り替え処理を繰り返す際に、前記ＵＳＢデバイス側の全てのクラスを記憶しておき、繰り返している間に以前に出現したクラスを検知した時点で前記ＵＳＢデバイス側を接続できないＵＳＢ機器であると判断し、エラー処理を行う機能を有していることを特徴とする請求項１〜３の何れか１項に記載の通信装置。
【請求項７】
前記ＵＳＢデバイス側に搭載するホスト制御機構は、前記ＵＳＢデバイス側がＨＮＰによって前記ＵＳＢホストの役割を担った場合に、前記クラス切り替え機構を発動する間、前記ＵＳＢバスにはＳＯＦを発行し、その後ＵＳＢバスサスペンド状態にすることで前記ＵＳＢデバイスの役割に戻す機能を有していることを特徴とする請求項１〜６の何れか１項に記載の通信装置。
【請求項８】
前記ＵＳＢデバイス側に搭載するホスト制御機構は、前記ＵＳＢデバイス側がＨＮＰによって前記ＵＳＢホストの役割を担った場合に、前記クラス切り替え機構を発動する間、前記ＵＳＢバスにはバスリセットを発行し、その後前記ＵＳＢバスサスペンド状態にすることで前記ＵＳＢデバイスの役割に戻す機能を有していることを特徴とする請求項１〜７の何れか１項に記載の通信装置。
【請求項９】
前記ＵＳＢデバイス側に搭載するクラス切り替え機構は、前記ＵＳＢデバイス側が起動した際、または接続の初期段階で最初に起動するＵＳＢクラスを設定し、前記ホスト制御機構が制御した時点で起動するＵＳＢクラスを切り替えていく機能を有していることを特徴とする請求項１〜８の何れか１項に記載の通信装置。
【請求項１０】
前記ＵＳＢホスト側は、A-typeレセプタクルを搭載していることを特徴とする請求項１〜９の何れか１項に記載の通信装置。
【請求項１１】
前記ＵＳＢホスト側は、AB-typeレセプタクルを搭載していることを特徴とする請求項１〜９の何れか１項に記載の通信装置。
【請求項１２】
前記ＵＳＢデバイス側は、B-typeレセプタクルを搭載していることを特徴とする請求項１〜９の何れか１項に記載の通信装置。
【請求項１３】
前記ＵＳＢデバイス側は、AB-typeレセプタクルを搭載していることを特徴とする請求項１〜９の何れか１項に記載の通信装置。
【請求項１４】
ＵＳＢインタフェースを用いてＯＴＧ規格に則った情報のやり取りをする通信方法であって、
ＵＳＢデバイスとして動作する際に、第１のデバイス及び第２のデバイスが協調動作する際に、順々に前記ＵＳＢデバイス側のＵＳＢクラス機能を切り替える切替工程と、
ＵＳＢホスト側が要求するＵＳＢクラスを動作させる制御工程とを有することを特徴とする通信方法。
【請求項１５】
請求項１４記載の方法の各工程をコンピュータにて実施させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信装置、通信方法及びプログラムに関し、例えばＵＳＢホスト側が要求するＵＳＢクラスを動作させるために用いて好適な技術に関する。
【背景技術】
【０００２】
近年、プリンタ、デジタルカメラ等をＰＣと接続する規格としてほぼ全ての機器はＵＳＢ（Universal serial Bus）インタフェースを保持するようになっている。ＵＳＢは、まさにＰＣと周辺機器を接続するために制定された規格であり、ＵＳＢホストと、ＵＳＢデバイスと役割を明確に分けている。
【０００３】
役割を分けることで、ＵＳＢホストであるＰＣが全ての制御権を握り、その為にＵＳＢデバイスである周辺機器側のハードウェア／ソフトウェアの規模を少なく抑え、安価に周辺機器を実装することが出来るように配慮されている。
【０００４】
しかし、明確に役割をわけることによって周辺機器は常にＰＣを介して情報をやり取りする必要があった。つまり、周辺機器であるデジタルカメラに保存されている画像を、同じく周辺機器であるプリンタに印刷する際には、デジタルカメラの画像を一旦ＰＣにＵＳＢ接続により移し、さらにその画像をＵＳＢ接続によってＰＣからプリンタに渡す必要があった。そこで周辺機器側にもＵＳＢホスト機能を持たせることによって、周辺機器同士を直接接続することでＵＳＢ通信を可能にする機器が登場した。
【０００５】
しかし、もともとＵＳＢホストの仕様はＰＣのような高速、大容量記憶媒体を持ったことを前提とされており、周辺機器のコストを増加させてしまったり、機能の中途半端なＵＳＢホストが搭載されてしまったりするような状況であった。そこで、従来のＵＳＢの仕様をそのまま継承した上で、周辺機器同士の接続も可能とし、且つ周辺機器がＵＳＢホストの役割を担う場合でもＰＣ程のコストを必要としないＵＳＢ−ＯＴＧ（On-The-Go）規格が策定された。
【０００６】
ＵＳＢ−ＯＴＧでは、ＵＳＢホストはＵＳＢデバイスに供給すべき電力を少なくすることが許されている。また、対応できないＵＳＢデバイスが接続された場合の動作を明確にすることでＵＳＢホストの機能を搭載する場合でもＰＣ程のコストを強いない規格となっている。
【０００７】
現在、ＵＳＢ規格およびＵＳＢ−ＯＴＧ規格はUSB Implementers Forum,Inc.によって策定、管理されており、非特許文献１及び非特許文献２がＵＳＢ仕様、およびＵＳＢ−ＯＴＧ仕様として公開されている。
【０００８】
【非特許文献１】Universal Serial Bus Specification Revision 2.0（Apr. 27, 2000）
【非特許文献２】On-The-Go Supplement to the USB2.0 Specification Revision 1.0（Dec. 18, 2001）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ＵＳＢ−ＯＴＧでは、周辺機器同士を接続するために貧弱な資源でＵＳＢホストを構築していることが多く、１つまたは数種類のクラス機能しか制御できない可能性が高い。また、ＵＳＢデバイス側機能についても、必要な機能に対応する複数のクラスを同時に動作するように機器を構築するためには、エンドポイントやＦＩＦＯと言ったハードウェア資源を複数実装しなければならない。このため、大規模なハードウェア資源を搭載することとなってしまう。
【００１０】
これらの問題に対してこれまでは、一度に動作するクラスは１つかあるいは数種類に留めておき、動作する機能はＵＳＢ接続以前にユーザが明示的に機器に設定をすることで少量のハードウェアで実現できるようにするなどの工夫がなされてきた。しかしながら前記の対応では人間の手を介するので、設定クラスの間違いによる誤操作、誤動作や、操作の手間等による使い勝手の悪さがある。
【００１１】
本発明は前述の問題点に鑑み、ＵＳＢインタフェースを用いてＯＴＧ規格に則った情報のやり取りをするＯＴＧシステムにおいて、ＵＳＢデバイス側に搭載するハードウェア資源を少なく保ったまま、ユーザの特別な操作なしに複数のＵＳＢクラス機能を実現するためのＵＳＢ−ＯＴＧシステム装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
本発明の通信装置は、ＵＳＢインタフェースを用いてＯＴＧ規格に則った情報のやり取りをする通信装置であって、ＵＳＢデバイスとして動作する際に、第１のデバイス及び第２のデバイスが協調動作することで、順々に前記ＵＳＢデバイス側のＵＳＢクラス機能を切り替えながらＵＳＢホスト側が要求するＵＳＢクラスを動作させることを特徴とする。
【００１３】
本発明の通信方法は、ＵＳＢインタフェースを用いてＯＴＧ規格に則った情報のやり取りをする通信方法であって、ＵＳＢデバイスとして動作する際に、第１のデバイス及び第２のデバイスが協調動作する際に、順々に前記ＵＳＢデバイス側のＵＳＢクラス機能を切り替える切替工程と、ＵＳＢホスト側が要求するＵＳＢクラスを動作させる制御工程とを有することを特徴とする。
【００１４】
本発明のプログラムは、前記の方法の各工程をコンピュータにて実施させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ＵＳＢデバイスとして動作する際に、第１のデバイス及び第２のデバイスが協調動作することで、順々に前記ＵＳＢデバイス側のＵＳＢクラス機能を切り替えながらＵＳＢホスト側が要求するＵＳＢクラスを動作させるようにした。これにより、ＵＳＢデバイス側に搭載するハードウェア資源を少なく保ったまま、ユーザの特別な操作なしに複数のＵＳＢクラス機能を実現するためのＵＳＢ−ＯＴＧシステム装置を提供できる。
【発明を実施するための最良の形態】
【００１６】
（第１の実施形態）
以下、本発明の実施形態を図面に基づき説明する。
まず、本実施形態を図１〜図５に基づき説明する。
図１は、本実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス及びデュアルロールＢデバイス機器内の機能構成例を示すブロック図である。
【００１７】
図１において、１０１はデュアルロールＡデバイスであり、１０２はＵＳＢ接続で提供するクラス機能を実現するＵＳＢホストクラスドライバである。１０３はＵＳＢデバイス接続時にＵＳＢデバイスのアドレス付けから構成を読み込み、動作する構成をホストが指定するまでの一連の動作を実現するenumeration機構である。
【００１８】
１０４は、本実施形態の自動クラス切り替えによって正しく接続できない機器が接続されていることを判断し、エラー状態の処理を行う接続エラー判定機構である。１０５はデュアルロールＡデバイス１０１に搭載されているAまたはAB-typeのケーブルを接続することが出来るＡ or ＡＢレセプタクルであり、１０６はデュアルロールＡデバイス１０１に接続されるA-typeプラグである。
【００１９】
１０７はデュアルロールＢデバイス１０８に接続されるB-typeプラグである。１０８はデュアルロールＢデバイスであり、１０９はデュアルロールＢデバイス１０８に搭載されているＢレセプタクルである。１１０はＵＳＢホスト状態に遷移した際に本実施形態のクラス切り替え処理を行い、すぐさまＵＳＢバスリセットを発行することでＵＳＢデバイス状態に遷移するホスト制御機構である。１１１は本実施形態のクラス切り替えを実現するクラス切り替え機構である。また、１１２はＵＳＢ接続で提供するクラス機能を実現するＵＳＢデバイスクラスドライバを示している。
【００２０】
デュアルロールＡデバイス１０１は、Ａ or ＡＢレセプタクル１０５を具備しており、デュアルロールＢデバイス１０８が接続された際にはenumeration機構１０３によって一連の接続処理が行われる。これによりデュアルロールＢデバイス１０８がＵＳＢホストクラスドライバ１０２とやり取りできる機能を保持している場合、デュアルロールＡデバイス１０１とデュアルロールＢデバイス１０８との間で通信が成立する。
【００２１】
逆にデュアルロールＢデバイス１０８がＵＳＢホストクラスドライバ１０２とやり取りできない場合、本実施形態によってクラスを切り替えて接続を試みる。ところが、接続エラー判定機構１０４にてそれがある規定の条件に合致した場合にはエラーとして接続処理を中断し、それ以上の通信を行わない。
【００２２】
デュアルロールＢデバイス１０８は、Ｂレセプタクル１０９を具備しており、クラス切り替え機構１１１によってその時のＵＳＢデバイスとしてＵＳＢデバイスクラスドライバ１１２のどのクラスが有効になるかを決定する。デュアルロールＢデバイス１０８がＵＳＢホスト状態に遷移した際には、ホスト制御機構１１０によってクラス切り替え機構１１１を起動し、同時にＵＳＢバスを制御する。図１に示された概念構成を取ることで本実施形態を実現することが出来る。
【００２３】
図２は、本実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス及びデュアルロールＢデバイスの接続を示す概念図である。
図２において、２０１はデュアルロールＡデバイス、２０２はA-typeプラグ、２０３はＵＳＢケーブル、２０４はB-typeプラグ、２０５はデュアルロールＢデバイスを示している。
【００２４】
デュアルロールＡデバイス２０１及びデュアルロールＢデバイス２０５はＵＳＢケーブル２０３によって接続されている。このときデュアルロールＡデバイス２０１にはA-typeプラグ２０２側が接続され、デュアルロールＢデバイス２０４にはB-typeプラグ２０４側が接続される。本実施形態は図２に示す状態のまま、ユーザの余計な操作なしに機能するＵＳＢクラスを自動的に選択して動作することを目的としている。
【００２５】
図３は、本実施形態に係るデュアルロールＡデバイス及びデュアルロールＢデバイス機器の構成を具備した情報処理装置のハードウェア構成例を示すブロック図である。
図３において、３０１はＣＰＵ（中央演算処理装置）であり、３０２はＲＡＭ（ランダムアクセスメモリ）であり、３０３はＲＯＭ（リードオンリメモリ）である。３０４はＵＳＢ−ＯＴＧデュアルロールコントローラであり、３０５はＩ／Ｏコントローラである。また、３０６はバスである。
【００２６】
本実施形態は図３に示すように構成されるハードウェアで構成される。また必要なモジュールを自由に組み合わせることができ、例えばＩ／Ｏコントローラ３０４の機構等を介して他のハードウェアを付加することが出来る。また、図３はあくまでも本実施形態に係るハードウェアの構成の例である。各モジュールを単一バスで接続しない構成や、Ｉ／Ｏコントローラ３０４を介してＵＳＢ−ＯＴＧデュアルロールコントローラ３０５を接続する等、他のモジュールを介してモジュールを接続する等、形態は様々なものが他に考えられる。
【００２７】
図４は、本実施形態に係るデュアルロールＡデバイス２０１側の接続処理手順の一例を示すフローチャートである。
ステップＳ４０１において、デュアルロールＢデバイス２０５がＵＳＢケーブル２０３を用いて物理的に接続されたか否かを判断する。この判断の結果、接続されていない場合は接続されるまで待機し、接続された場合はステップＳ４０２へ進む。
【００２８】
次に、ステップＳ４０２において、接続されたデュアルロールＢデバイス２０５に対する接続時のenumerationによってデュアルロールＢデバイス２０５のＵＳＢクラスがデュアルロールＡデバイス２０１と合致するか否かを判断する。この判断の結果、合致していればデュアルロールＡデバイス２０１側の接続処理を終了し、合致していなければステップＳ４０３へ進む。
【００２９】
次に、ステップＳ４０３において、接続されたデュアルロールＢデバイス２０５に対する接続時のenumerationによってデュアルロールＢデバイス２０５がＨＮＰ可能であるか否かを判断する。この判断の結果、不可能であればデュアルロールＡデバイス２０１側の接続処理を終了し、可能であればステップＳ４０４へ進む。
【００３０】
次に、ステップＳ４０４において、ＵＳＢ−ＯＴＧ規格に定められているＵＳＢホスト機能をデュアルロールＢデバイス２０５に遷移させる処理を行い、ステップＳ４０５へ進む。ステップＳ４０５において、ＵＳＢデバイスとして動作し、ステップＳ４０６へ進む。ステップＳ４０６において、ＵＳＢホスト機能が再びデュアルロールＡデバイス２０１に遷移したか否かを判断する。この判断の結果、遷移した場合はステップＳ４０７へ進み、遷移していない場合はステップＳ４０５に戻る。
【００３１】
ステップＳ４０７において、システムで決められたエラー条件を満しているか否かを判断する。この判断の結果、エラー条件を満している場合はデュアルロールＡデバイス２０１側の接続処理を終了し、エラー条件を満していない場合はステップＳ４０２に戻る。
【００３２】
本処理の発火の条件は、デュアルロールＡデバイス２０１が起動した際、または幾つかの機器の初期設定が済んだ際、ユーザによりＵＳＢ通信を開始する為の何らかの操作が行われた際、ＵＳＢ通信を開始した後等が考えられる。一方、この発火条件をどのようにするかは本実施形態に関わることではない。
【００３３】
ステップＳ４０７において判断するシステムで決められたエラー条件は、ステップＳ４０２でＵＳＢクラスが合致しなかった回数を計測してある一定回数を上回る、または、最初にデュアルロールＢデバイス２０５がenumeration時に通知したＵＳＢクラスを記憶しておき、再び同じＵＳＢクラスを持ってenumerationが行われた、またはデュアルロールＢデバイス２０５がenumeration時に通知した全てのＵＳＢクラスを記憶しておき、同じＵＳＢクラスがenumeration時に２度現れた、等をエラーの条件とすることが出来る。
【００３４】
図５は、本実施形態に係るデュアルロールＢデバイス２０５側の接続処理手順の一例を示すフローチャートである。
ステップＳ５０１において、ＵＳＢデバイスとして起動するＵＳＢクラスを一つ選択し接続された時にＵＳＢデバイスとしてそのＵＳＢクラスが有効になるように設定し、ステップＳ５０２へ進む。
【００３５】
ステップＳ５０２において、デュアルロールＡデバイス２０１がＵＳＢケーブル２０３を用いて物理的に接続されたか否かを判断する。この判断の結果、接続された場合はステップＳ５０３へ進み、接続されていない場合は接続されるまで待機する。
【００３６】
次に、ステップＳ５０３において、接続時のenumerationによってデュアルロールＡデバイス２０１の保持するクラスと合致しており、ＵＳＢ通信が正常に行われるか否かを判断する。この判断の結果、正常に行われていればデュアルロールＢデバイス２０５側の接続処理を終了し、正常に行われていなければステップＳ５０４へ進む。
【００３７】
次に、ステップＳ５０４において ＵＳＢホスト状態が切り替えられてデュアルロールＢデバイス２０５に遷移したか否かを判断する。この判断の結果、デュアルロールＢデバイス２０５がＵＳＢホスト状態に遷移していればステップＳ５０５へ、遷移していなければ、遷移するまで待機する。
【００３８】
次に、ステップＳ５０５において、ＵＳＢデバイスとして接続された場合に起動するＵＳＢクラスを他のクラスへ切り替えてステップＳ５０６へ進む。ステップＳ５０６において、ＵＳＢバスサスペンドを発行し再びデュアルロールＡデバイス２０１をＵＳＢホスト状態に遷移させてステップＳ５０３に戻る。
【００３９】
本処理の発火の条件としては、デュアルロールＢデバイス２０５が起動した際、または幾つかの機器の初期設定が済んだ際、ユーザによりＵＳＢ通信を開始するための何らかの操作が行われた際、ＵＳＢ通信を開始した後等が考えられる。ところが、この発火条件をどのようにするかは本実施形態に関わることではない。
【００４０】
また、ステップＳ５０１やステップＳ５０５で設定するＵＳＢクラスを１つとして本実施形態を説明したが、これを幾つかのクラスを同時に起動する形態で実装することも可能である。本実施形態の目的は搭載すべきハードウェア資源を抑制することから、最小構成となると考えられる単一のクラスの場合について説明をしているのであって、複数ＵＳＢクラスで本実施形態を実現することが不可能である訳ではない。
【００４１】
さらに、ステップＳ５０５にて、幾つかのＵＳＢクラスがデュアルロールＢデバイス２０５の機能として存在する際に、それらをどのような順番にて起動するかは本実施形態に関わることではない。システム構成によってはＵＳＢクラスの起動順序によって、そのメリットデメリットが生じる可能性があるが、これらをどのように実装するかは本実施形態の定めるところではなく、どのような実装であっても本実施形態は実現可能である。
【００４２】
ただし、デュアルロールＡデバイス２０１側のエラー判定条件として同じＵＳＢクラスの出現をエラー判定条件とした場合、当然であるが同じクラスが複数回設定されなければならない。さらに、いずれかのＵＳＢクラスが複数回設定された時点でデュアルロールＢデバイス２０５が保持する全てのＵＳＢクラスが１度ずつ設定されてデュアルロールＡデバイス２０１とenumeration処理が行われた状態でなければならない。
【００４３】
以上のように実装することで、ＵＳＢインタフェースを用いてＯＴＧ規格に則った情報をやり取りするシステムにおいて、ＵＳＢデバイスとして動作する際にデュアルロールＡデバイス２０１とデュアルロールＢデバイス２０５とが自動的に協調動作する。これにより、順々にＵＳＢデバイス側のＵＳＢクラス機能を切り替えながらＵＳＢホスト側が要求するＵＳＢクラスを動作させるＵＳＢ−ＯＴＧシステム装置を構築できる。
【００４４】
（第２の実施形態）
本実施形態として、前述した第１の実施形態においてデュアルロールＢデバイス２０５がＵＳＢホスト状態の際に、実際のＵＳＢホストとして動作することも可能である。以下、本実施形態を図６、７に基づき説明する。
【００４５】
図６は、本実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス及びデュアルロールＢデバイス機器内の機能構成例を示すブロック図である。
図６において、６０１はデュアルロールＡデバイスであり、６０２はＵＳＢ接続で提供するクラス機能を実現するＵＳＢホストクラスドライバである。６０３はＵＳＢデバイス接続時にＵＳＢデバイスのアドレス付けから構成を読み込み、動作する構成をホストが指定するまでの一連の動作を実現するenumeration機構である。
【００４６】
６０４は、本実施形態の自動クラス切り替えによって正しく接続できない機器が接続されていることを判断し、エラー状態の処理を行う接続エラー判定機構である。６０５はデュアルロールＡデバイス６０１に搭載されているAまたはAB-typeのケーブルを接続することが出来るＡ or ＡＢレセプタクルであり、６０６はデュアルロールＡデバイス６０１に接続されるA-typeプラグである。
【００４７】
６０７はデュアルロールＢデバイス６０８に接続されるB-typeプラグであり、６０８はデュアルロールＢデバイスである。６０９はデュアルロールＢデバイス６０８に搭載されているＢレセプタクルである。
【００４８】
６１０はデュアルロールＢデバイス６０８がＵＳＢホスト状態に遷移した際にＵＳＢホストの動作を制御するホスト制御機構である。６１１はデュアルロールＢデバイス６０８がＵＳＢホスト状態に遷移した際に動作する機能を提供するＵＳＢホストクラスドライバである。また、６１２は本実施形態のクラス切り替えを実現するクラス切り替え機構であり、６１３はＵＳＢ接続で提供するクラス機能を実現するＵＳＢデバイスクラスドライバである。
【００４９】
デュアルロールＡデバイス６０１は、Ａ or ＡＢレセプタクル６０５を具備しており、デュアルロールＢデバイス６０８が接続された際にはenumeration機構６０３によって一連の接続処理が行われる。これによりデュアルロールＢデバイス６０８がＵＳＢホストクラスドライバ６０２とやり取りできる機能を保持している場合、デュアルロールＡデバイス６０１とデュアルロールＢデバイス６０８との間で通信が成立する。
【００５０】
逆にデュアルロールＢデバイス６０８がＵＳＢホストクラスドライバ６０２とやり取りできない場合、本実施形態によってクラスを切り替えて接続を試みる。ところが、接続エラー判定機構６０４にてそれがある規定の条件に合致した場合にはエラーとして接続処理を中断し、それ以上の通信を行わない。
【００５１】
デュアルロールＢデバイス６０８は、Ｂレセプタクル６０９を具備しており、クラス切り替え機構６１２によってその時のＵＳＢデバイスとしてＵＳＢデバイスクラスドライバ６１３のどのクラスが有効になるかが決定される。
【００５２】
デュアルロールＢデバイス６０８がＵＳＢホスト状態に遷移した際にはホスト制御機構６１０によって、ＵＳＢホストクラスドライバ６１１の機能がＵＳＢデバイスに提供される。同時にクラス切り替え機構６１２が起動され、次回ＵＳＢホスト状態がデュアルロールＡデバイス６０１に遷移した際のクラスを切り替える。図６に示された概念構成を取ることで本実施形態を実現することが出来る。
【００５３】
図７は、本実施形態に係るデュアルロールＢデバイス６０８側の接続処理手順の一例を示すフローチャートである。
ステップＳ７０１において、ＵＳＢデバイスとして起動するＵＳＢクラスを一つ選択し接続された時にＵＳＢデバイスとしてそのＵＳＢクラスが有効になるように設定し、ステップＳ７０２へ進む。
【００５４】
次に、ステップＳ７０２において、デュアルロールＡデバイス６０１がＵＳＢケーブルを用いて物理的に接続されたか否かを判断する。この判断の結果、接続された場合はステップＳ７０３へ進み、接続されていない場合は接続されるまで待機する。次に、ステップＳ７０３において、接続時のenumerationによってデュアルロールＡデバイス６０１の保持するクラスと合致しており、ＵＳＢ通信が正常に行われるか否かを判断する。
【００５５】
この判断の結果、正常に行われていれば、デュアルロールＢデバイス６０８側の接続処理を終了し、正常に行われていなければステップＳ７０４へ進む。次に、ステップＳ７０４において、ＵＳＢホスト状態が切り替えられてデュアルロールＢデバイス６０８に遷移したか否かを判断する。この判断の結果、デュアルロールＢデバイス６０８がＵＳＢホスト状態に遷移していればステップＳ７０５へ進み、遷移していなければ遷移するまで待機する。
【００５６】
次に、ステップＳ７０５において、クラスの切換をおこない、ステップＳ７０６に進む。次に、ステップＳ７０６において、ＵＳＢホストとして動作するか否かを判断する。この判断の結果、ＵＳＢホストとして動作する場合は、ＵＳＢホストの動作を行いつつＵＳＢホストとしての動作をしない、またはＵＳＢホストとしての動作を終了するまで繰り返す。
【００５７】
一方、ＵＳＢホストとしての動作をしない、またはＵＳＢホストとしての動作を終了する場合はステップＳ７０７へ進む。次に、ステップＳ７０６において、ＵＳＢバスサスペンドを発行し、デュアルロールＡデバイス６０１をＵＳＢホスト状態に遷移させてステップＳ７０３に戻る。
【００５８】
本処理の発火の条件としては、デュアルロールＢデバイス６０８が起動した際、または幾つかの機器内の初期設定が済んだ際、ユーザによりＵＳＢ通信を開始するための何らかの操作が行われた際、ＵＳＢ通信を開始した後等が考えられる。ところが、この発火条件をどの様にするかは本実施形態に関わることではない。
【００５９】
また、ステップＳ７０１やステップＳ７０５で設定するＵＳＢクラスを一つとして本実施形態を説明したが、これを幾つかのクラスを同時に起動する形態で実装することも可能である。なお、本実施形態の目的が搭載すべきハードウェア資源を抑制することであることから最小構成となると考えられる単一のクラスの場合について説明をしているのであって、複数のＵＳＢクラスで本実施形態を実現することが不可能である訳ではない。
【００６０】
さらに、ステップＳ７０５において、幾つかのＵＳＢクラスがデュアルロールＢデバイス６０８の機能として存在する際に、それらをどのような順番にて起動するかは本実施形態に関わることではない。また、システム構成によってはＵＳＢクラスの起動順序によって、そのメリットデメリットが生じる可能性があるが、これらをどのように実装するかは本実施形態の定めるところではなく、どの様な実装であっても本実施形態は実現可能である。
【００６１】
ただし、デュアルロールＡデバイス６０１側のエラー判定条件として同じＵＳＢクラスの出現をエラー判定の条件とした場合、当然であるが同じクラスが複数回設定されなければならない。さらに、いずれかのＵＳＢクラスが複数回設定された時点でデュアルロールＢデバイス６０８が保持する全てのＵＳＢクラスが１度ずつ設定されてデュアルロールＡデバイス６０１とenumeration処理が行われた状態でなければならない。
【００６２】
ステップＳ７０６において、ＵＳＢホストとして動作するか否かをどのような判断基準で判断するかは本実施形態に関わることではない。なお、デュアルロールＢデバイス６０８内部でアプリケーションがホストとして動作するか否かを保持する、または、デュアルロールＢデバイス６０８にユーザがホスト起動の可否を設定するように実装することも可能である。
【００６３】
以上のように実装することで、デュアルロールＢデバイス６０８がＵＳＢホスト状態の際に、実際のＵＳＢホストとして動作することが可能である。なお、本実施形態に係るその他の構成及び動作は、前述した第１の実施形態と同じであることから、その説明は省略する。
【００６４】
（第３の実施形態）
また、本発明の第３の実施形態として、前述した第１の実施形態においてデュアルロールＡデバイス２０１で動作するＵＳＢデバイスのＵＳＢクラスを切り替えることも可能である。以下、本実施形態を図８〜１０に基づき説明する。
【００６５】
図８は、本実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス及びデュアルロールＢデバイス機器内の機能構成例を示すブロック図である。
図８において、８０１はデュアルロールＢデバイスであり、８０２はＵＳＢ接続で提供するクラス機能を実現するＵＳＢホストクラスドライバである。８０３はＵＳＢデバイス接続時にＵＳＢデバイスのアドレス付けから構成を読み込み、動作する構成をＵＳＢホストが指定するまでの一連の動作を実現するenumeration機構である。
【００６６】
８０４は、本実施形態の自動クラス切り替えによって正しく接続できない機器が接続されていることを判断し、エラー状態の処理を行う接続エラー判定機構であり、８０５はデュアルロールＢデバイス８０１に搭載されているＢ or ＡＢレセプタクルである。８０６はデュアルロールＢデバイス８０１に接続されているB-typeプラグである。
【００６７】
８０７はデュアルロールＡデバイス８０８に接続されるA-typeプラグであり、８０８はデュアルロールＡデバイスである。８０９はデュアルロールＡデバイス８０８に搭載されているＡレセプタクルである。８１０はデュアルロールＡデバイス８０８がＵＳＢホスト状態に遷移した際にＵＳＢホストの動作を制御するホスト制御機構である。８１１はデュアルロールＡデバイス８０８がＵＳＢホスト状態に遷移した際に動作する機能を提供するＵＳＢホストクラスドライバである。
【００６８】
８１２は本実施形態のクラス切り替えを実現するクラス切り替え機構であり、８１３はデュアルロールＡデバイス８０８がＵＳＢデバイスとして動作する際に提供するクラス機能を実現するＵＳＢデバイスクラスドライバである。
【００６９】
デュアルロールＢデバイス８０１は、Ｂレセプタクル６０５を具備しており、デュアルロールＡデバイス８０８が接続された際にはＵＳＢデバイスとして動作する。ＵＳＢホスト状態が遷移してデュアルロールＢデバイス８０１がＵＳＢホスト状態になるとenumeration機構８０３によってＵＳＢデバイスへ一連の接続処理が行われる。これによりデュアルロールＡデバイス８０８がＵＳＢホストクラスドライバ８０２とやり取りできる機能を保持している場合、デュアルロールＢデバイス８０１とデュアルロールＡデバイス８０８との間で通信が成立する。
【００７０】
逆にＵＳＢホストクラスドライバ８０２とやり取りできない場合、本実施形態によってクラスを切り替えて接続を試みる。ところが、接続エラー判定機構８０４にてそれがある規定の条件に合致した場合にはエラーとして接続処理を中断し、それ以上の通信を行わない。
【００７１】
デュアルロールＡデバイス８０８は、Ａレセプタクル８０９を具備しており、デュアルロールＢデバイス８０１と接続された際にはホスト機構８１０とＵＳＢホストクラスドライバ８１１によってＵＳＢホストとして動作する。ＵＳＢホスト状態が遷移しデュアルロールＡデバイス８０８がＵＳＢデバイスとして振る舞う時、クラス切り替え機構８１２によってＵＳＢデバイスクラスドライバ８１３のうち一つのＵＳＢクラスがデュアルロールＢデバイス８０１とやり取りを試みる。
【００７２】
ホスト状態が遷移する度にクラス切り替え機構８１２によって起動されるＵＳＢクラスが切り替えられデュアルロールＢデバイス８０１を満足するクラスが自動的に検出される。図８に示された概念構成を取ることで本実施形態を実現することが出来る。
【００７３】
図９は、本実施形態に係るデュアルロールＢデバイス８０１側の接続処理手順の一例を示すフローチャートである。
ステップＳ９０１において、デュアルロールＡデバイス８０８がＵＳＢケーブルを用いて物理的に接続されたか否かを判断する。この判断の結果、接続された場合はステップＳ９０２に進み、接続されていない場合は接続されるまで待機する。
【００７４】
次に、ステップＳ９０２において、デュアルロールＡデバイス８０８からなされるenumerationに応答し、ステップＳ９０３へ進む。次に、ステップＳ９０３において、ＵＳＢバスサスペンドが発行されたか否かを判断する。この判断の結果、ＵＳＢバスサスペンドが発行されたらステップＳ９０４へ進み、発行されていなければ発行されるまで待機する。
【００７５】
次に、ステップＳ９０４においてＵＳＢ−ＯＴＧ規格に則ってホスト切り替えの処理を行い、ステップＳ９０５へ進み。ステップＳ９０５において、デュアルロールＡデバイス８０８へＵＳＢデバイス接続の一連の処理としてenumerationを行い、ステップＳ９０６へ進む。
【００７６】
次に、ステップＳ９０６において、デュアルロールＡデバイス８０８のＵＳＢクラスが適合しているか否かを判断する。この判断の結果、ＵＳＢクラスが適合していればデュアルロールＢデバイス８０１側の接続処理を終了し、適合していなければステップＳ９０７へ進む。
【００７７】
次に、ステップＳ９０７において、システムで決められたエラー条件を満しているか否かを判断する。この判断の結果、エラー条件を満している場合はデュアルロールＢデバイス８０１側の接続処理を終了し、満していない場合はステップＳ９０２へ戻る。
【００７８】
本処理の発火の条件は、デュアルロールＢデバイス８０１が起動した際、または幾つかの機器内の初期設定が済んだ際、ユーザによりＵＳＢ通信を開始する為の何らかの操作が行われた際、ＵＳＢ通信を開始した後等が考えられる。ところが、この発火条件をどのようにするかは本実施形態に関わることではない。
【００７９】
また、ステップＳ９０７において判断するシステムで決められたエラー条件は、ステップＳ９０２でＵＳＢクラスが合致しなかった回数を計測しある一定回数を上回る、最初にデュアルロールＢデバイス８０１がenumeration時に通知したＵＳＢクラスを記憶しておき、再び同じＵＳＢクラスを持ってenumerationが行われた、またはデュアルロールＡデバイス８０８がenumeration時に通知した全てのＵＳＢクラスを記憶しておき、同じＵＳＢクラスがenumeration時に２度現れた等をエラーの条件とすることが出来る。
【００８０】
図１０は、本実施形態に係るデュアルロールＡデバイス８０８側の接続処理手順の一例を示すフローチャートである。
ステップＳ１００１において接続されたデュアルロールＢデバイス８０１に対してenumerationを行い、ステップＳ１００２へ進む。
【００８１】
次に、ステップＳ１００２において、enumerationの結果からデュアルロールＢデバイス８０１はＨＮＰが可能であるか否かを判断する。この判断の結果、ＨＮＰが可能であればステップＳ１００３へ進み、不可能であればデュアルロールＡデバイス８０８側の接続処理を終了する。
【００８２】
次に、ステップＳ１００３において、ＵＳＢデバイスとして起動するクラスを切り替えて、ステップＳ１００４へ進む。ステップＳ１００４において、ＵＳＢバスサスペンドを発行し、ステップＳ１００５へ進む。そして、ステップＳ１００５において、ＵＳＢホスト状態が遷移したか否かを判断する。この判断の結果、ＵＳＢホスト状態が遷移したらステップＳ１００６へ進み、遷移していなければ遷移するまで待機する。
【００８３】
次に、ステップＳ１００６において、起動したクラスがデュアルロールＢデバイス８０１のＵＳＢホストクラスと合致したか否かを判断する。この判断の結果、合致していればデュアルロールＡデバイス８０８側の接続処理を終了し、合致していなければステップＳ１００３へ戻る。
【００８４】
本処理の発火の条件としては、デュアルロールＡデバイス８０８が起動した際、または幾つかの機器の初期設定が済んだ際、ユーザによりＵＳＢ通信を開始するための何らかの操作が行われた際、ＵＳＢ通信を開始した後等が考えられる。ところが、この発火条件をどのようにするかは本実施形態に関わることではない。
【００８５】
以上のように実装することで、デュアルロールＡデバイス８０８で動作するＵＳＢデバイスのＵＳＢクラスを切り替えることが可能である。なお、本実施形態に係るその他の構成及び動作は、前述した第１の実施形態と同じであることから、その説明は省略する。
【００８６】
（本発明に係る他の実施形態）
前述した本発明の実施形態における通信装置を構成する各手段、並びに通信方法の各工程は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００８７】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００８８】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図４、５、７、９、１０に示すフローチャートに対応したプログラム）を、システムまたは装置に直接、または遠隔から供給する。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００８９】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００９０】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００９１】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などもある。
【００９２】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【００９３】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００９４】
また、その他の方法として、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００９５】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００９６】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００９７】
【図１】本発明の第１の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス及びデュアルロールＢデバイス機器内の機能構成例を示すブロック図である。
【図２】本発明の第１の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイスとデュアルロールＢデバイスとの接続例を示す概念図である。
【図３】本発明の第１の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス及びデュアルロールＢデバイス機器の構成を具備した情報処理装置のハードウェア構成例を示すブロック図である。
【図４】本発明の第１の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス側の接続処理手順の一例を示すフローチャートである。
【図５】本発明の第１の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＢデバイス側の接続処理手順の一例を示すフローチャートである。
【図６】本発明の第２の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、 デュアルロールＡデバイス及びデュアルロールＢデバイス機器内の機能構成例を示すブロック図である。
【図７】本発明の第２の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、Ｂデバイス側の接続処理手順の一例を示すフローチャートである。
【図８】本発明の第３の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス及びデュアルロールＢデバイス機器内の機能構成例を示すブロック図である。
【図９】本発明の第３の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＢデバイス側の接続処理手順の一例を示すフローチャートである。
【図１０】本発明の第３の実施形態に係るＵＳＢ−ＯＴＧシステム装置において、デュアルロールＡデバイス側の接続処理手順の一例を示すフローチャートである。
【符号の説明】
【００９８】
１０１  デュアルロールＡデバイス
１０２  ＵＳＢホストクラスドライバ
１０３  enumeration機構
１０４  接続エラー判定機構
１０５  Ａ or ＡＢレセプタクル
１０６  A-typeプラグ
１０７  B-typeプラグ
１０８  デュアルロールＢデバイス
１０９  Ｂレセプタクル
１１０  ホスト制御機構
１１１  クラス切り替え機構
１１２  ＵＳＢデバイスクラスドライバ
２０１  デュアルロールＡデバイス
２０２  A-typeプラグ
２０３  ＵＳＢケーブル
２０４  B-typeプラグ
２０５  デュアルロールＢデバイス
３０１  ＣＰＵ
３０２  ＲＡＭ
３０３  ＲＯＭ
３０４  ＵＳＢ−ＯＴＧデュアルロールコントローラ
３０５  Ｉ／Ｏコントローラ
３０６  バス
６０１  デュアルロールＡデバイス
６０２  ＵＳＢホストクラスドライバ
６０３  enumeration機構
６０４  接続エラー判定機構
６０５  Ａ or ＡＢレセプタクル
６０６  A-typeプラグ
６０７  B-typeプラグ
６０８  デュアルロールＢデバイス
６０９  Ｂレセプタクル
６１０  ホスト制御機構
６１１  ＵＳＢホストクラスドライバ
６１２  クラス切り替え機構
６１３  ＵＳＢデバイスクラスドライバ
８０１  デュアルロールＢデバイス
８０２  ＵＳＢホストクラスドライバ
８０３  enumeration機構
８０４  接続エラー判定機構
８０５  Ｂ or ＡＢレセプタクル
８０６  B-typeプラグ
８０７  A-typeプラグ
８０８  デュアルロールＡデバイス
８０９  Ａレセプタクル
８１０  ホスト制御機構
８１１  ＵＳＢホストクラスドライバ
８１２  クラス切り替え機構
８１３  ＵＳＢデバイスクラスドライバ
【図１】
2007323316.tif 000003
【図２】
2007323316.tif 000004
【図３】
2007323316.tif 000005
【図４】
2007323316.tif 000006
【図５】
2007323316.tif 000007
【図６】
2007323316.tif 000008
【図７】
2007323316.tif 000009
【図８】
2007323316.tif 000010
【図９】
2007323316.tif 000011
【図１０】
2007323316.tif 000012