(57)【要約】【課題】ＯＴＧ規格に則ったＤＲＤ同士の接続において通常の手順では通信できないときに、ユーザにケーブルの接続のし直しなどの手間をかけたり、あるいは煩雑な仕様を意識させたりせずに、自動的に通信可能な状態に移行にする。【解決手段】Ａデバイスは、自分がＢデバイスをサポートしていないとき、Ｂデバイスに対しホスト／デバイスの役割交替が許可されたことを通知する。そして、ＡデバイスがＢデバイスから肯定応答を受けると、ＡデバイスとＢデバイスは通信を停止し、双方でＨＮＰによるホスト／デバイスの役割交替を行ない、Ａデバイスはデバイスに、Ｂデバイスはホストにそれぞれ役割を切り替える。【選択図】  図４
2009009210.tif 000002
【特許請求の範囲】
【請求項１】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上において複数の通信装置がデータ伝送を行なう通信システムであって、前記所定の通信インターフェースに接続された第１及び第２の通信装置が前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記第１の通信装置が前記ホストに決定された場合において、
前記第１の通信装置が前記ホストとして前記所定の通信インターフェース上での前記第２の通信装置のデータ伝送を制御可能であるかどうかを判断する判断手段と、
前記判断手段による判断結果が否定的であるときに、前記所定の通信プロトコルに従って、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手段と、
を具備することを特徴とする通信システム。
【請求項２】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置であって、前記ホスト及び前記デバイスのいずれとしても動作することができるとともに前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記所定の通信プロトコルに従って、前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手段と、
前記所定の通信インターフェース上でのデータ伝送を前記ホストとして制御可能であるかどうかを判断する判断手段を備え、
前記所定の通信インターフェース上には前記ホスト及び前記デバイスのいずれとしても動作することができる他の通信装置が少なくとも１台存在し、且つ、自らは前記ホストとして動作する場合において、前記判断手段による判断結果が否定的であるときに、前記交替手続実行手段が前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する、
ことを特徴とする通信装置。
【請求項３】
前記通信インターフェースはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェースであり、前記所定のプロトコルはＵＳＢ  ＯＴＧ（Ｏｎ−Ｔｈｅ−Ｇｏ）で用意されているＨＮＰ（Ｈｏｓｔ  Ｎｅｇｏｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）である、
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
自らは前記デバイスとして動作するときに、前記交替手続実行手段は、前記ホストとして動作する前記他の通信装置からの交替要求に応じて、前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する、
ことを特徴とする請求項２に記載の通信装置。
【請求項５】
初期状態で自らは前記デバイスとして動作することが決定された前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替した後、前記デバイスとして動作しているときに、
前記交替手続実行手段は、前記他の通信装置からの前記ホスト及び前記デバイスの役割の交替要求に応じない、
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
初期状態で自らは前記デバイスとして動作することが決定された前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替した後、前記デバイスとして動作しているときに、
前記交替手続実行手段は、前記他の通信装置からの前記ホスト及び前記デバイスの役割の交替要求に応じて再度ホストの役割に交替するが、それ以降の役割交替に応じない、
ことを特徴とする請求項４に記載の通信装置。
【請求項７】
初期状態で自らは前記デバイスとして動作することが決定され、初期状態で前記ホストとして動作することが決定された前記他の通信装置からの交替要求に応じて前記ホストに交替したが、前記判断手段が前記所定の通信インターフェース上でのデータ伝送を前記ホストとして制御可能でないと判断したときには、所定のエラー表示を行なう、
ことを特徴とする請求項４に記載の通信装置。
【請求項８】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置の制御方法であって、当該通信装置は前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記所定の通信インターフェース上には前記ホスト及び前記デバイスのいずれとしても動作することができる他の通信装置が少なくとも１台存在し、且つ、当該通信装置自らは前記ホストとして動作する場合において、
前記所定の通信インターフェース上での他の通信装置のデータ伝送を前記ホストとして制御可能であるかどうかを判断する判断ステップと、
前記判断ステップにおける判断結果が否定的であるときに、前記所定の通信プロトコルに従って、前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行ステップと、
を具備することを特徴とする通信方法。
【請求項９】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置の制御をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、当該通信装置は前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記所定の通信インターフェース上には前記ホスト及び前記デバイスのいずれとしても動作することができる他の通信装置が少なくとも１台存在し、且つ、当該通信装置自らは前記ホストとして動作する場合において、前記コンピュータ・プログラムは前記コンピュータに対し、
前記所定の通信インターフェース上での他の通信装置のデータ伝送を前記ホストとして制御可能であるかどうかを判断する判断手順と、
前記判断手順を実行して得られた判断結果が否定的であるときに、前記所定の通信プロトコルに従って、前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手順と、
を実行させることを特徴とするコンピュータ・プログラム。
【請求項１０】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上において複数の通信装置がデータ伝送を行なう通信システムであって、前記所定の通信インターフェースに接続された第１及び第２の通信装置が前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記第１の通信装置が前記ホストに決定され、前記第２の通信装置が前記デバイスに決定された場合において、
前記第２の通信装置が前記ホストとして前記所定の通信インターフェース上でのデータ伝送を制御可能な通信装置に関する制御可能装置情報を、前記第１の通信装置に通知する制御可能装置情報通知手段と、
前記第１の通信装置が前記ホストとして前記所定の通信インターフェース上での前記第２の通信装置のデータ伝送を制御可能でないときに、前記第２の通信装置が前記ホストとして前記所定の通信インターフェース上での前記第１の通信装置のデータ伝送を制御可能であるか否かを、前記通知手段により通知された制御可能装置情報に基づいて判断する判断手段と、
前記判断手段による判断結果が肯定的であるときに、前記所定の通信プロトコルに従って、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手段と、
を具備することを特徴とする通信システム。
【請求項１１】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置であって、前記ホスト及び前記デバイスのいずれとしても動作することができるとともに前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記所定の通信プロトコルに従って、前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手段と、
当該通信装置が前記デバイスに決定されたときに、当該通信装置が前記ホストとして前記所定の通信インターフェース上でのデータ伝送を制御可能な通信装置に関する制御可能装置情報を、前記ホストとして動作する他の通信装置に通知する制御可能装置情報通知手段と、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置から制御可能装置情報を受け取る制御可能装置情報受取手段と、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置のデータ伝送を制御可能であるかどうかを判断する第１の判断手段と、
前記第１の判断手段による判断結果が否定的であるときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置が前記ホストとして当該装置のデータ伝送を制御可能であるか否かを該他の通信装置から受け取った制御可能装置情報に基づいて判断する第２の判断手段を備え、
前記第２の判断手段による判断結果が肯定的であるときに、前記交替手続実行手段が前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する、
ことを特徴とする通信装置。
【請求項１２】
前記通信インターフェースはＵＳＢインターフェースであり、前記所定のプロトコルはＵＳＢ  ＯＴＧで用意されているＨＮＰである、
ことを特徴とする請求項１１に記載の通信装置。
【請求項１３】
前記制御可能装置情報受取手段が前記他の通信装置から制御可能装置情報を受け取ることができなかったときに、前記交替手続実行手段が前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する、
ことを特徴とする請求項１１に記載の通信装置。
【請求項１４】
前記第１及び第２の判断手段による判断結果がいずれも否定的であるときには、所定のエラー表示を行なう、
ことを特徴とする請求項１１に記載の通信装置。
【請求項１５】
前記他の通信装置が前記交替手続実行手段を備えていないと推定されるときには、前記交替手続実行手段は前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行しない、
ことを特徴とする請求項１１に記載の通信装置。
【請求項１６】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置の制御方法であって、当該通信装置は前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
当該通信装置が前記デバイスに決定されたときに、当該通信装置が前記ホストとして前記所定の通信インターフェース上でのデータ伝送を制御可能な通信装置に関する制御可能装置情報を、前記ホストとして動作する他の通信装置に通知する制御可能装置情報通知ステップと、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置から制御可能装置情報を受け取る制御可能装置情報受取ステップと、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置のデータ伝送を制御可能であるかどうかを判断する第１の判断ステップと、
前記第１の判断ステップにおける判断結果が否定的であるときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置が前記ホストとして当該装置のデータ伝送を制御可能であるか否かを該他の通信装置から受け取った制御可能装置情報に基づいて判断する第２の判断ステップと、
前記第２の判断ステップにおける判断結果が肯定的であるときに、前記所定の通信プロトコルに従って、前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行ステップと、
を具備することを特徴とする通信方法。
【請求項１７】
１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置の制御をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、当該通信装置は前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
当該通信装置が前記デバイスに決定されたときに、当該通信装置が前記ホストとして前記所定の通信インターフェース上でのデータ伝送を制御可能な通信装置に関する制御可能装置情報を、前記ホストとして動作する他の通信装置に通知する制御可能装置情報通知手順と、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置から制御可能装置情報を受け取る制御可能装置情報受取手順と、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置のデータ伝送を制御可能であるかどうかを判断する第１の判断手順と、
前記第１の判断手順を実行して得られた判断結果が否定的であるときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置が前記ホストとして当該装置のデータ伝送を制御可能であるか否かを該他の通信装置から受け取った制御可能装置情報に基づいて判断する第２の判断手順と、
前記第２の判断手順を実行して得られた判断結果が肯定的であるときに、前記所定の通信プロトコルに従って、前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手順と、
を実行させることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の通信インターフェースを介して複数の機器がデータ伝送を行なう通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムに係り、特に、１台の機器が「ホスト」として通信インターフェース上のデータ伝送を制御するとともに、その他の機器が「デバイス」としてホストの制御に従って通信インターフェース上でデータ伝送を行なう通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムに関する。
【０００２】
さらに詳しくは、本発明は、ＰＣなどの固定的なホストが存在しない環境下で、ホスト及びデバイスの双方の役割が可能な通信機器が互いにホストとデバイスの役割を簡易に分担する通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムに係り、特に、初期状態でそれぞれホスト及びデバイスに決定された通信機器間において所定の通信プロトコルに従ってホスト及びデバイスの役割を交替する通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００３】
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）は、シリアルポート（ＲＳ−２３２Ｃ）やパラレルポートなどのレガシーポートに代替される、プラグアンドプレイに対応した汎用バス・インターフェース規格である。ＵＳＢは、当初米インテル社を始めとする４社で仕様が策定されたが、現在はＮＰＯであるＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ，Ｉｎｃ．（ＵＳＢ−ＩＦ）によって仕様の策定や管理が行なわれている。規格上ＩＥＥＥ１３９４（最大４００Ｍｂｐｓ）を越える速度で高速転送できるＨｉｇｈ  Ｓｐｅｅｄモード（最大４８０Ｍｂｐｓ）を実現したＵＳＢ２．０が広く普及している。
【０００４】
ＵＳＢでは、周辺機器の機能に応じてグループ分けされたＵＳＢクラスと呼ばれる仕様群が定義されている。それぞれのクラス仕様に従って作成されたデバイスは同じ機能を提供していることから、クラス準拠のデバイスはクラス・ドライバによって動作することができ、デバイス毎に個別のドライバ・ソフトウェアを用意する必要がない。
【０００５】
ＵＳＢは、本来は有線ケーブルを利用した伝送方式であり、共通のシリアル通信バスを介して複数の機器を接続して１つのＵＳＢ通信システムが構成される。また最近では、有線の安全性と通信速度と無線の使い易さを融合してＵＳＢを無線通信に拡張した“Ｗｉｒｅｌｅｓｓ  ＵＳＢ”（ＷＵＳＢ）の開発が進められている。ＷＵＳＢは、超広帯域を用いる無線技術であるＵＷＢ（Ｕｌｔｒａ  Ｗｉｄｅ  Ｂａｎｄ）を応用したもので、物理層及びＭＡＣ層の規格としてはＷｉＭｅｄｉａ  Ａｌｌｉａｎｃｅが推進するマルチバンドＯＦＤＭ方式を採用している。ＷＵＳＢによれば、通信範囲３メートルで最高４８０Ｍｂｐｓ、１０メートルで最高１１０Ｍｂｐｓの速度での通信が可能で、また、スタートポロジを使用して１台のホストに対し最大１２７台のデバイスを接続することができる。
【０００６】
ＵＳＢの通信システムは、ＵＳＢ接続される複数の機器のうちの１つが「ホスト（Ｈｏｓｔ）」、その他の機器が「デバイス」と称される機能をそれぞれ果たす（なお、デバイスについては、「ファンクション（Ｆｕｎｃｔｉｏｎ）」あるいは「ペリフェラル（Ｐｅｒｉｐｈｅｒａｌ）」と呼ぶこともあるが、本明細書では「デバイス」に統一して表記することにする）。有線ＵＳＢシステムの場合、ＵＳＢケーブルは、その一端にホスト接続用の「Ａプラグ」、他端にデバイス接続用の「Ｂプラグ」がそれぞれ配設された非対称な構造である。この場合、Ａプラグが差し込まれた機器がホストとして動作するとともにＢプラグが差し込まれた機器がデバイスとして動作し、ホストとデバイスの関係が固定的である。
【０００７】
ホストはＵＳＢインターフェース上のデータの伝送の全般を制御する役目を有しており、通常はパーソナル・コンピュータ（ＰＣ）がホストになる。ホスト機器は例えば新しくＵＳＢ接続されたデバイス機器を検出する処理や、バス上におけるデータの流れを管理する処理などを行なう。他方のデバイスは、ホストの制御下で通信を行なう。デバイスの接続相手は常にホストとなる。
【０００８】
ＵＳＢを利用した通信は、基本的に、ホスト側でスケジューリングが行なわれ、常にホスト側から通信が開始され、デバイスがこれに応答するという形態をとる。すなわち、ホストからデバイスに対して要求が伝えられ、デバイスがこの要求に対して応答を返すという方法により通信を行なう。デバイスが自らの情報をホストに通知する動作や、ホストとの間でデータを送受信する動作は、いずれもホストからの要求に対しデバイスが応答する動作として実行される。
【０００９】
ＵＳＢは、例えばホストとして動作するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）と、デバイスとして動作するプリンタなどの周辺機器とを接続する技術として既に広く普及しており、事実上の業界標準の地位を確立している。また、最近では、ＵＳＢに準拠したさまざまな周辺機器が出現してきたことに伴い、ＰＣを介さない周辺機器同士の接続への要求が高まっている。
【００１０】
このような要求に応えるべく、ＵＳＢ２．０の追加規格として、ＵＳＢ  Ｏｎ−Ｔｈｅ−Ｇｏ（以下、「ＯＴＧ」と表記する）が策定されている。これにより、本来はホストでないデジタルカメラなどの機器に対してＵＳＢ２．０のホスト・コントローラ機能を限定的に追加して、周辺機器の間で直接データを伝送することが可能になった。
【００１１】
ＯＴＧを導入すると、デジタルカメラやスキャナとプリンタ、携帯電話と携帯音楽プレーヤやメモリカード・リーダ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）とハード・ディスクやＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ）ドライブなどの組み合わせで、ＰＣを介さずに周辺機器同士が直接にデータのやり取りをできるようになる。例えば、デジタルカメラとプリンタ間をＵＳＢケーブルで直接接続して「ダイレクトプリント」を行なうことができる。また、ＰＤＡと携帯電話機をＵＳＢ接続してＰＤＡをインターネット接続することができ、携帯音楽プレーヤ徒携帯電話機をＵＳＢ接続してインターネットから携帯音楽プレーヤに楽曲をダウンロードすることができる。
【００１２】
ＵＳＢをＰＣの周辺機器接続用のインターフェースとして使用する場合には、ＰＣがホストとなり周辺機器がデバイスとなる関係は固定的であり、ＵＳＢケーブルのプラグ形状からもホスト／デバイス関係が一義に決められる（前述）。これに対し、周辺機器同士の直接接続を考慮した場合、例えばデジタルカメラは、ＰＣに接続されているときはデバイスとして動作し、プリンタにダイレクトプリントするときにはホストとして動作するという具合に、ＵＳＢ接続された機器間においてホストとデバイスの役割を柔軟に決定することが望ましい。
【００１３】
そこで、ＯＴＧでは、ホストとデバイスの両方の機能を有する機器として、デュアル・ロール・デバイス（Ｄｕａｌ  Ｒｏｌｅ  Ｄｅｖｉｃｅ）（以下では、「ＤＲＤ」と表記する）が規定されている。ＤＲＤは、接続されるＵＳＢケーブルのプラグの型に応じて、初期状態の機能（ホストとデバイスの分担）を決定する。すなわち、ＯＴＧ対応のＵＳＢケーブルは、その一端がＭｉｎｉ−Ａと称されるプラグで他端がＭｉｎｉ−Ｂと称されるプラグを持つ非対称構造であり、Ｍｉｎｉ−Ａとプラグに接続された機器が初期状態においてホストになるとともに、Ｍｉｎｉ−Ｂプラグに接続された機器が初期状態においてデバイスになる。Ｍｉｎｉ−Ａプラグに接続される機器は「Ａデバイス」、Ｍｉｎｉ−Ｂプラグに接続される機器は「Ｂデバイス」と呼ばれる。
【００１４】
また、ＯＴＧでは、ＵＳＢ２．０の通信プロトコルに加えて、ＳＲＰ（Ｓｅｓｓｉｏｎ  Ｒｅｑｕｅｓｔ  Ｐｒｏｔｏｃｏｌ）、及び、ＨＮＰ（Ｈｏｓｔ  Ｎｅｇｏｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）と称される通信プロトコルが用意されている。
【００１５】
ＯＴＧで規定されるＡデバイスは、未通信時にＵＳＢバスへの電流供給を停止することが許されている。ＳＲＰは、その電流供給停止時に、ＢデバイスからＡデバイスへ電流供給の再開を促すための通信プロトコルである。Ａデバイスは、ＳＲＰを用いればＢデバイスから要求されるまではＵＳＢバスへの電流供給を停止することができ、未通信時における消費電力を低減することができる。
【００１６】
また、ＯＴＧ対応のＵＳＢケーブルを介して接続される２つのＤＲＤは、それぞれに差し込まれたプラグの型に応じて、初期状態におけるホスト及びデバイスの役割分担が決定される（前述）。ＨＮＰは、一方がホスト、他方がデバイスとして動作しているときに、プラグの挿し替えを行なうことなく、ホストとデバイスの役割を交替するための通信プロトコルである。これにより、プラグの差し替えの手間が省けるため、ユーザの利便性が向上する。
【００１７】
ところで、このＯＴＧに準拠するＵＳＢ通信装置は、主にデジタルカメラやＰＤＡ、携帯電話などのモバイル機器への搭載が想定されている。一般にモバイル機器は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や主記憶装置、２次記憶装置、その他のハードウェアなどのリソースが制限されており、ＤＲＤであってもホストとしてあらゆる種類のデバイスをサポートすること（言い換えれば、さまざまなデバイスのデータ伝送を制御するためのデバイス・ドライバをあらかじめシステムにインストールしておくこと）は現実的に困難である。また、ＰＣの場合は、適宜デバイス・ドライバを追加してホストとしてサポートするデバイスを柔軟に増やすことが可能であるのに対し、一般的なモバイル機器は新規にデバイス・ドライバを簡単に追加する手段を備えおらず、デバイス・ドライバの新規インストールによる対応も難しい。
【００１８】
要するに、ＤＲＤに搭載されるホスト・コントロール機能は制限されたものであり、ＵＳＢ接続されることが想定されるすべてのデバイスをホストとしてサポートしていないため、物理的にはＵＳＢケーブル越しに通信装置を接続できたとしてもその使用が不可能なことが多いと思料される。
【００１９】
ここで、ＤＲＤにＵＳＢ接続された通信装置がホスト・コントローラ機能を持つＤＲＤである場合、すなわちＤＲＤ同士の接続の場合について考察してみる。
【００２０】
２台のＤＲＤをそれぞれ機器１並びに機器２とすると、機器１がホストとしてサポートしているデバイス群と、機器２がホストとしてサポートしているデバイス群は一般に異なる。このため、これらの機器間を接続するＵＳＢケーブルの接続方向（いずれの機器にＭｉｎｉ−Ａプラグ並びにＭｉｎｉ−Ｂプラグを差し込むか）によって、言い換えれば初期状態において機器１、機器２のいずれをＡデバイスにするかによって通信の可否が変化する可能性がある。
【００２１】
例えば、機器１と機器２が相互にホストとして他方の機器をサポートしているときには、いずれをＡデバイスに選択してもＵＳＢ接続しても、問題なく通信が可能である。また、機器１と機器２の双方が相手の機器をホストとしてサポートしていない場合には、いずれをＡデバイスに選択してＵＳＢ接続しても機器の使用はできない。すなわち、これらの各機器の他の機器に対するサポート状況が対称的となる２つの場合には、いずれをＡデバイスに選択しても、通信の可否は変化しない。
【００２２】
続いて、例えば機器２はホストとして機器１をサポートしているが、機器１はホストとして機器２をサポートしていないという、各機器の他の機器に対するサポート状況が対称的とならない状況を考える。機器２をＡデバイスに選択した場合には問題なく通信可能であるのに対し、機器１をＡデバイスに選択した場合には通信が不可能になるから、ＵＳＢケーブルの接続方向（いずれの機器にＭｉｎｉ−Ａプラグを差し込むか）に応じて、通信の可否が変化することになる。
【００２３】
このため、ＵＳＢケーブルの接続方向によっては、機器の使用ができないという不都合が生じる可能性がある。また、一般のユーザはＵＳＢに対する専門知識は無いため、ＵＳＢケーブルの接続方向毎に通信動作が異なると、ユーザの混乱を招くことになり、大きな問題になる。
【００２４】
例えば、ＤＲＤ同士の接続において相互の通信性能に基づいて、ホストとデバイスの役割を交換することによって通信性能を向上させる通信システムについて提案がなされている（例えば、特許文献１を参照のこと）。しかしながら、同通信システムは、ＵＳＢ接続されたＤＲＤの間でホストとデバイスの役割を交替することで消費電力や通信速度の改善することを目的としたものであるが、ＵＳＢ接続された各ＤＲＤがそれぞれサポートするデバイス群の相違のためにＵＳＢケーブルの接続方向に応じて通信の可否が変化するという上記の問題を解決することはできない。
【００２５】
また、ＵＳＢ接続されたカメラとプリンタにおいて、両機器の性能や機種、電源状態に応じてホストとデバイスの役割を交替する電子機器について提案がなされているが（例えば、特許文献２を参照のこと）、同電子機器は、ＵＳＢ接続された各ＤＲＤがそれぞれサポートするデバイス群の相違のためにＵＳＢケーブルの接続方向に応じて通信の可否が変化するという上記の問題を解決するものではない。
【００２６】
また、２台のＤＲＤをＵＳＢ接続したときにその接続方向に誤りがあるときにＨＮＰに従ってホストとデバイスの役割を交替する画像出力システムについて提案がなされているが（例えば、特許文献３を参照のこと）、同システムは、ＵＳＢ接続された各ＤＲＤがそれぞれサポートするデバイス群の相違のためにＵＳＢケーブルの接続方向に応じて通信の可否が変化するという上記の問題を解決するものではない。
【００２７】
【特許文献１】特開２００５−２５０６７１号公報
【特許文献２】特開２００４−１１８２６１号公報
【特許文献３】特開２００４−３１６０７２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２８】
本発明の目的は、１台の機器がホストとして通信インターフェース上のデータ伝送を制御するとともに、その他の機器がデバイスとしてホストの制御に従って通信インターフェース上で好適にデータ伝送を行なうことができる、を提供することにある。
【００２９】
本発明のさらなる目的は、ＰＣなどの固定的なホストが存在しない環境下で、ホスト及びデバイスの双方の役割が可能な通信機器が互いにホストとデバイスの役割を簡易に分担することができる、優れた通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムを提供することにある。
【００３０】
本発明のさらなる目的は、初期状態でそれぞれホスト及びデバイスに決定された通信機器間において所定の通信プロトコルに従ってホスト及びデバイスの役割を適宜交替することができる、優れた通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００３１】
本発明は、上記課題を参酌してなされたものであり、その第１の側面は、１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上において複数の通信装置がデータ伝送を行なう通信システムであって、前記所定の通信インターフェースに接続された第１及び第２の通信装置が前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記第１の通信装置が前記ホストに決定された場合において、
前記第１の通信装置が前記ホストとして前記所定の通信インターフェース上での前記第２の通信装置のデータ伝送を制御可能であるかどうかを判断する判断手段と、
前記判断手段による判断結果が否定的であるときに、前記所定の通信プロトコルに従って、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手段と、
を具備することを特徴とする通信システムである。
【００３２】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない（以下、同様）。
【００３３】
ＵＳＢは、ＰＣと周辺機器とを接続する通信インターフェースとして、事実上の業界標準の地位を確立している。また、最近では、ＰＣを介さずに周辺機器同士をＵＳＢ接続するという要求に応えるべく、ＵＳＢ２．０の追加規格としてＯＴＧが策定されている。
【００３４】
ＯＴＧでは、ホストとデバイスの両方の機能を有する機器として、デュアル・ロール・デバイス（ＤＲＤ）が規定されている。ＤＲＤ同士をＵＳＢ接続した場合、ＵＳＢケーブルの接続方向（互いの機器に差し込んだプラグ形状）に応じて初期状態でのホストとデバイスの関係が決定するが、その後はＨＮＰ（Ｈｏｓｔ  Ｎｅｇｏｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）に従って、ホストとデバイスの役割を交替することができる。
【００３５】
ここで、ＤＲＤの多くは、ハードウェアなどのリソースが制限されたモバイル機器であり、ホストとしてあらゆる種類のデバイスをサポートすることは現実的でない。このため、ＵＳＢ接続される２台のＤＲＤがそれぞれサポートするデバイス群が一致しないときには、ＵＳＢケーブルの接続方向に応じて通信の可否が変化するという問題がある。一般のユーザはＵＳＢに対する専門知識は無いため、ＵＳＢケーブルの接続方向毎に通信動作が異なると、ユーザの混乱を招くことになりかねない。
【００３６】
これに対し、本発明の第１の側面に係る通信システムでは、それぞれＤＲＤに相当する第１及び第２の通信装置がＵＳＢ接続され、且つ、ＵＳＢケーブルの接続方向などに応じて第１の通信装置が例えば初期状態でホストに決定されたときに、判断手段は、第１の装置がＵＳＢインターフェースを介した第２の通信装置のデータ伝送を制御可能であるか、言い換えれば、第１の通信装置が第２の通信装置のデバイス・ドライバを備えているかどうかを判断するようになっている。そして、この判断結果が否定的であるときには、ＨＮＰに従って第１及び前記第２の通信装置間でホストとデバイスの役割を交替するようになっている。
【００３７】
したがって、本発明の第１の側面によれば、ＵＳＢ接続された各ＤＲＤがそれぞれサポートするデバイス群の相違のために、ＵＳＢケーブルの接続方向によっては機器の使用ができない場合であっても、ユーザにＵＳＢケーブルの接続のし直しを強いることなく、通信が可能な状態に自動で移行させることができる。
【００３８】
ここで、第１及び第２の通信装置間で一度ホストとデバイスの役割を行なった後、ホストとなった第２の通信装置が同様の理由などによって、役割の交替を要求してきたときには、第１の通信装置は、役割交替が際限なく続く事態に陥らないようにするために、この要求に応じないようにしてもよい。
【００３９】
あるいは、第１の通信装置は、再度ホストに役割を交替することを許容するが、それ以降の役割交替に応じないようにしてもよい。
【００４０】
また、第２の通信装置は、初期状態ではデバイスに決定されたが、第１の通信装置からの役割交替の要求に応じてホストに移行したものの、自らもデバイスとしての第１の通信装置のデータ伝送を制御することができないとき（すなわち、第１の通信装置のデバイス・ドライバを備えていないとき）には、ホストとデバイスの役割を元に戻すための要求を行なうのではなく、例えば出力装置にエラー情報の出力を行なって、ユーザにエラーを通知するようにしてもよい。
【００４１】
また、本発明の第２の側面は、１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上において複数の通信装置がデータ伝送を行なう通信システムであって、前記所定の通信インターフェースに接続された第１及び第２の通信装置が前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記第１の通信装置が前記ホストに決定され、前記第２の通信装置が前記デバイスに決定された場合において、
前記第２の通信装置が前記ホストとして前記所定の通信インターフェース上でのデータ伝送を制御可能な通信装置に関する制御可能装置情報を、前記第１の通信装置に通知する制御可能装置情報通知手段と、
前記第１の通信装置が前記ホストとして前記所定の通信インターフェース上での前記第２の通信装置のデータ伝送を制御可能でないときに、前記第２の通信装置が前記ホストとして前記所定の通信インターフェース上での前記第１の通信装置のデータ伝送を制御可能であるか否かを、前記通知手段により通知された制御可能装置情報に基づいて判断する判断手段と、
前記判断手段による判断結果が肯定的であるときに、前記所定の通信プロトコルに従って、前記第１及び前記第２の通信装置間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手段と、
を具備することを特徴とする通信システムである。
【００４２】
本発明の第２の側面に係る通信システムでは、それぞれＤＲＤに相当する第１及び第２の通信装置がＵＳＢ接続され、且つ、ＵＳＢケーブルの接続方向などに応じて初期状態では第１の通信装置と第２の通信装置がそれぞれホスト並びにデバイスに決定されたとき、デバイスである第２の通信装置は、自分がホストとなったときに制御可能である（言い換えれば、デバイス・ドライバを備えている）デバイス群に関する制御可能装置情報を第１の通信装置に通知するようになっている。
【００４３】
ホストとなった第１の装置は、デバイスとしての第２の通信装置のデータ伝送を制御できないとき、言い換えれば、第１の通信装置が第２の通信装置のデバイス・ドライバを備えていないときには、さらに、第２の通信装置から受け取った制御可能装置情報に基づいて、第２の通信装置がホストであれば第１の通信装置のデータ伝送を制御可能であるか否かを判断する。そして、この判断結果が肯定的であるときには、ＨＮＰに従って第１及び前記第２の通信装置間でホストとデバイスの役割を交替するようになっている。
【００４４】
したがって、本発明の第２の側面によれば、ＵＳＢ接続された各ＤＲＤがそれぞれサポートするデバイス群の相違のために、ＵＳＢケーブルの接続方向によっては、機器の使用ができない場合であっても、ユーザにＵＳＢケーブルの接続のし直しを強いることなく、通信が可能な状態に自動で移行することができる。
【００４５】
ここで、第１の通信装置は、デバイスとしての第２の通信装置から制御可能情報を受け取ることができなかったときであっても、ＨＮＰに従って第１及び前記第２の通信装置間でホストとデバイスの役割を交替するようにしてもよい。何故ならば、第１の通信装置は、第２の通信装置がホストとして自分をサポートしているかどうか不明であるが、ホスト／デバイスの役割交換によって通信が可能になる場合があるからである。
【００４６】
また、ＵＳＢインターフェースに接続される第１及び第２の通信装置のいずれもが、ＤＲＤであるものの相互にホストとして他の通信装置のデータ伝送を制御することができない場合には、ホスト／デバイスの役割交換を行なう代わりに、所定のエラー表示を行なうようにしてもよい。
【００４７】
また、第１の通信装置は、ＵＳＢケーブルの接続方向などに応じて初期状態でホストに決定されたものの、デバイスとしての第２の通信装置のデータ伝送を制御することができない場合であっても、第２の通信装置がＤＲＤでない、若しくはＨＮＰなどの通信プロトコルに従ってホスト／デバイスの役割交替を行なうことができない場合には、役割交替のための手続を起動しない。
【００４８】
また、本発明の第３の側面は、１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置の制御をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、当該通信装置は前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
前記所定の通信インターフェース上には前記ホスト及び前記デバイスのいずれとしても動作することができる他の通信装置が少なくとも１台存在し、且つ、当該通信装置自らは前記ホストとして動作する場合において、前記コンピュータ・プログラムは前記コンピュータに対し、
前記所定の通信インターフェース上での他の通信装置のデータ伝送を前記ホストとして制御可能であるかどうかを判断する判断手順と、
前記判断手順を実行して得られた判断結果が否定的であるときに、前記所定の通信プロトコルに従って、前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手順と、
を実行させることを特徴とするコンピュータ・プログラムである。
【００４９】
また、本発明の第４の側面は、１台の通信装置がホストとしてデータ伝送を制御するとともにそれ以外の通信装置がデバイスとして前記ホストの制御に従ってデータ伝送を行なう所定の通信インターフェース上で通信動作を行なう通信装置の制御をコンピュータ上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、当該通信装置は前記ホスト及び前記デバイスのいずれとしても動作することができるとともに、前記所定の通信インターフェースには通信装置間で前記ホスト及び前記デバイスの役割を交換するための所定の通信プロトコルが適用されており、
当該通信装置が前記デバイスに決定されたときに、当該通信装置が前記ホストとして前記所定の通信インターフェース上でのデータ伝送を制御可能な通信装置に関する制御可能装置情報を、前記ホストとして動作する他の通信装置に通知する制御可能装置情報通知手順と、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置から制御可能装置情報を受け取る制御可能装置情報受取手順と、
当該通信装置が前記ホストに決定されたときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置のデータ伝送を制御可能であるかどうかを判断する第１の判断手順と、
前記第１の判断手順を実行して得られた判断結果が否定的であるときに、前記所定の通信インターフェース上で前記デバイスとして動作する他の通信装置が前記ホストとして当該装置のデータ伝送を制御可能であるか否かを該他の通信装置から受け取った制御可能装置情報に基づいて判断する第２の判断手順と、
前記第２の判断手順を実行して得られた判断結果が肯定的であるときに、前記所定の通信プロトコルに従って、前記他の通信装置との間で前記ホスト及び前記デバイスの役割を交替するための手続を実行する交替手続実行手順と、
を実行させることを特徴とするコンピュータ・プログラムである。
【００５０】
本発明の第３乃至第４の各側面に係るコンピュータ・プログラムは、コンピュータ上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第３乃至第４の各側面に係るコンピュータ・プログラムをコンピュータにインストールすることによってコンピュータ上では協働的作用が発揮され、第１若しくは第２の通信装置として動作する。このような通信装置同士をＵＳＢなどの所定の通信インターフェースを介して接続することによって、本発明の第１乃至第２の各側面に係る通信システムと同様の作用効果を得ることができる。
【発明の効果】
【００５１】
本発明によれば、ＰＣなどの固定的なホストが存在しない環境下で、ホスト及びデバイスの双方の役割が可能な通信機器が互いにホストとデバイスの役割を簡易に分担することができる、優れた通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムを提供することができる。
【００５２】
また、本発明によれば、初期状態でそれぞれホスト及びデバイスに決定された通信機器間において所定の通信プロトコルに従ってホスト及びデバイスの役割を適宜交替することができる、優れた通信システム、通信装置及びその制御方法、並びにコンピュータ・プログラムを提供することができる。
【００５３】
本発明によれば、ＯＴＧ規格に則ったＤＲＤ同士の接続において通常の手順では通信できない場合であっても、ユーザにケーブルの接続のし直しなどの手間をかけたり、あるいは煩雑な仕様を意識させたりせずに、自動的に通信可能な状態に移行にすることができる。
【００５４】
また、本発明によれば、特定の判断に基づいて通信装置同士のホストとデバイスの役割交替を行なうが、２つの機器が互いに相手機器をサポートしていないときにも、無限に役割交替の処理が繰り返し行なわれて、通信システムがデッドロックに陥ることがないようになっている。
【００５５】
本発明に係る通信システムでは、ＵＳＢ２．０やＯＴＧの規格に準拠した方法に従って制御を行なうように構成することができ、これらの規格に準拠する機器へ容易に適用することが可能である。また、これらの制御はコンピュータ上で所定のソフトウェア・プログラムを実行することによっても実現可能であることから、機器のハードウェアに変更を加えることなくプログラムの修正のみによって、本発明に係る機能を実装することも可能である。
【００５６】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【発明を実施するための最良の形態】
【００５７】
以下、図面を参照しながら本発明の実施形態について詳解する。
【００５８】
図１には、本発明の一実施形態に係る通信システムの構成を模式的に示している。図示のシステムは、通信ケーブル５０と、通信装置１０１及び１０２で構成される。
【００５９】
通信装置１０１及び１０２は、ＵＳＢ２．０の追加規格であるＯＴＧにおいて規定されているデュアル・ロール・デバイス（ＤＲＤ）であるとする。また、本実施形態では、通信装置１０１及び１０２がモバイル機器であることを想定しており、ＰＣと比較してハードウェアなどのリソースが制限されているので、ホストとしてすべてのデバイスをサポートしている訳ではない。
【００６０】
通信装置１０１及び１０２がそれぞれホストとしてサポートしているデバイス群が一致しているとは限らない。このため、例えば、通信装置１０１側がＡデバイスとなるときには通信可能だが、通信装置１０２側がＡデバイスとなるときには通信できないといった具合に、通信ケーブルの接続方向５０に応じて通信の可否が変化する可能性がある。本発明は、ユーザに通信ケーブル５０の接続のし直しを強いることなく、通信が可能な状態に自動で移行するようになっているが、かかる機能の詳細については後述に譲る。
【００６１】
図１に示すように、通信装置１０１は、通信処理部１１と、制御部２１と、記憶部３１と、レセプタクル端子４１を備えている。また、通信装置１０２は、通信処理部１２と、制御部２２と、記憶部３２と、レセプタクル端子４２を備えている。以下、各部について説明する。
【００６２】
通信ケーブル５０は、ＯＴＧに準拠した通信ケーブルであり、一方の端にはＭｉｎｉ−Ａプラグ端子５１を有するとともに、他方の端にＭｉｎｉ−Ｂプラグ端子５２を有している。また、通信装置１０１及び１０２は、ＯＴＧにおいて規定されているデュアル・ロール・デバイスＤＲＤであり、レセプタクル端子４１又は４２に対して、Ｍｉｎｉ−Ａプラグ端子５１が接続されたときには初期状態でＡデバイスすなわちホストとして動作し、Ｍｉｎｉ−Ｂプラグ端子５２が接続されたときには初期状態でＢデバイスすなわちデバイスとして動作する。
【００６３】
図１に示した例では、通信装置１０１のレセプタクル端子４１にはＭｉｎｉ−Ａプラグ端子５１が差し込まれ、通信装置１０２のレセプタクル端子４２にはＭｉｎｉ−Ｂプラグ端子５２が差し込まれている。したがって、図示の例では、通信装置１０１はＡデバイスすなわち初期状態においてホストとなり、通信装置１０２はＢデバイスすなわち初期状態においてデバイスとなる。
【００６４】
通信処理部１１は、制御部２１の指示に従って、ＵＳＢ及びＯＴＧに準拠した種々の通信処理を行なう。例えば、ＵＳＢの規定に従ったデータ送受信処理や、ＯＴＧの規定に従ったホスト／デバイスの役割の交替などの処理を、制御部２１の指示に従って実行する。また、通信処理部１２は、通信装置１０２において通信処理部１１と同様な機能を有する。すなわち、制御部２２の指示に従って、ＵＳＢ及びＯＴＧに準拠した種々の通信処理を行なう。
【００６５】
図２には、通信装置１０１内の通信処理部１１の内部構成をさらに詳細に示している。同図に示すように、通信処理部１１は、ＯＴＧ部１１１と、ホスト部１１２と、デバイス部１１３を備えている。なお、他方の通信装置１０２内の通信処理部１２もこれと同様の構成を備えるものとする。
【００６６】
ＯＴＧ部１１１は、ＯＴＧにおいて規定されている種々の通信処理を行なう。例えば、ＳＲＰを使ってＡデバイスに電流供給の再開を促す処理や、ＨＮＰを使って他方の通信装置１０２との間でホスト／デバイスの役割を交替する処理などを実行する。また、ＯＴＧ部１１１は、レセプタクル端子４１に差し込まれたプラグ端子の型（Ｍｉｎｉ−Ａプラグ端子又はＭｉｎｉ−Ｂプラグ端子）、すなわちＵＳＢケーブル５０の接続方向に応じて、初期状態でのホスト又はデバイスの役割を決定する処理や、ホスト部１１２及びデバイス部１１３へのクロックの供給を制御する処理も行なう。
【００６７】
ホスト部１１２は、通信装置１０１がホストとして動作するときの通信処理を実行する。すなわち、通信ケーブル５０接続されている他の機器を検出する処理や、通信ケーブル５０上におけるデータの伝送を制御する処理など、ＵＳＢホストとしての通信処理を実行する。
【００６８】
デバイス部１１３は、通信装置がデバイスとして動作するときの通信処理を実行する。すなわち、ＵＳＢデバイスとして、ホストの制御に従った通信処理を実行する。
【００６９】
ＯＴＧ部１１１は、ホスト部１１２又はデバイス部１１３のいずれか一方にクロックを排他的に供給する。通信処理部１１は、ホスト部１１２にクロックが供給されたときにはホストとして動作し、デバイス部１１３にクロックが供給されたときにはデバイスとして動作することになる。すなわち、通信装置１０１はＤＲＤであり、通信処理部１１内でＯＴＧ部１１１からのクロックの供給先がホスト部１１２又はデバイス部１１３のいずれであるかによって、ホスト／デバイスの役割を切り替えることができる。通信装置１０２についても同様である。
【００７０】
図３には、通信処理部１１及び１２の間でホストとデバイスの役割を交替する様子を示している。
【００７１】
図１に示した例では、初期状態において、通信装置１０１がホストとして動作し、通信装置１０２がデバイスとして動作する。このとき、通信処理部１１では、図３Ａに示すようにＯＴＧ部１１１の制御によって、ホスト部１１２へのクロック供給が行なわれ、デバイス部１１３へのクロック供給が停止される。逆に、通信処理部１２では、デバイス部へのクロック供給が行なわれ、ホスト部へのクロック供給が停止される。
【００７２】
この状態で、ＨＮＰによるホスト／デバイスの役割交替を実施すると、図３Ｂに示すように通信処理部１１では、ＯＴＧ部１１１の制御によって、ホスト部１１２へのクロック供給が停止され、代わってデバイス部１１３へのクロック供給が開始される。逆に、通信処理部１２では、デバイス部へのクロック供給が停止され、ホスト部へのクロック供給が開始される。これにより、通信装置１０１がデバイス部として動作し、通信装置１０２がホストとして動作するように遷移する。すなわち、通信ケーブル５０のプラグ５１及び５２を差し替えることなく、通信装置１０１及び１０２の間でホスト／デバイスの役割交替が行なわれる。
【００７３】
以上の説明は通信装置１０１がＡデバイスの場合の例であるが、通信装置１０２がＡデバイスの場合も、上述と同様の手順によってホスト／デバイスの役割交替が行なわれる。
【００７４】
制御部２１は、通信装置１０１の全体的な動作の制御に関わる種々の処理を行なう。例えば、制御部２１は、通信処理部１１がホストとして動作するときに、デバイスとして動作する通信相手と通信を開始する際に必要となる種々の情報を取得するための処理を行なう。具体的には、ＵＳＢにおいて規定された種々のリクエストを通信処理部１１からデバイスに送信させ、これに応じたデバイスからの応答を通信処理部１１において受信させることにより、デバイスの情報を取得する。必要な情報が得られた後は、この情報に基づいて通信処理部１１を制御して、デバイスとの間で通信を行なう。
【００７５】
また、制御部２１は、通信処理部１１がデバイスとして動作するときに、ホストとして動作する通信相手の制御に従って通信を行なうように、通信処理部１１を制御する。すなわち、ホストからのリクエストを通信処理部１１において受信させ、このリクエストに対するＵＳＢで規定された応答を生成して、通信処理部１１からホスト機器へ送信させる。
【００７６】
また、御部２２は、通信装置１０２において制御部２１と同様な機能を有する。すなわち、通信装置１０２の全体的な動作の制御に関わる種々の処理として、上述と同様の処理を行なう。
【００７７】
通信装置１０１及び１０２はともにＤＲＤであるが、それぞれホストとしてサポートしているデバイス群が一致しているとは限らないため、通信ケーブルの接続方向５０に応じて通信の可否が変化する可能性がある。本発明では、ユーザに通信ケーブル５０の接続のし直しを強いることなく、通信が可能な状態に自動で移行するようになっており、制御部２１並びに２２はかかる機能を実現するための中心的な役割を担っているが、その詳細については後述に譲る。
【００７８】
記憶部３１は、通信処理部１１において送受信されるデータや、通信処理に必要とされる種々の情報を記憶する。記憶部３１に記憶される情報には、例えば、ディスクリプタ（ｄｅｓｃｒｉｐｔｏｒ）が含まれる。ディスクリプタは、ホストがデバイスについての情報を得るためのデータであり、ＵＳＢにおいて規定された所定のデータ構造（後述）を有する。
【００７９】
記憶部３２は、記憶部３１と同様な機能を有する。すなわち、通信装置１０２において、通信処理部１２で送受信されるデータや、通信処理に必要とされる種々の情報を記憶する。
【００８０】
レセプタクル端子４１並びに４２は、ＯＴＧにおいて規定されているＤＲＤ側の端子であり、Ｍｉｎｉ−Ａプラグ端子とＭｉｎｉ−Ｂプラグ端子を何れも装着することができる構造を備えた、いわゆる「Ｍｉｎｉ−ＡＢレセプタクル端子」である。
【００８１】
図１に示した通信システムにおいて、通信装置１０１及び１０２はともにデュアル・ロール・デバイス（ＤＲＤ）であるが、モバイル機器であることを想定しており、ホストとしてすべてのデバイスをサポートしている訳ではない。このような場合、通信装置１０１及び１０２がそれぞれホストとしてサポートしているデバイス群が一致しているとは限らない。このため、通信ケーブルの接続方向５０に応じて通信の可否が変化する可能性がある。本発明は、通信ケーブル５０の接続方向に応じて通信の可否が変化するという問題を解決するものであり、以下では、その２つの実施形態について説明する。
【００８２】
なお、いずれの実施形態においても、各通信装置１０１及び１０２内の制御部２１及び２２が中心的な役割を担っている。このことは、コンピュータ上で所定のソフトウェア・プログラムを実行することによって本発明を実現可能であることを意味し、機器のハードウェアに変更を加えることなくプログラムの修正のみによって本発明に係る機能を実装することも可能である。
【００８３】
第１の実施形態：
図４には、Ａデバイスとして動作する通信装置１０１が実行する動作手順をフローチャートの形式で示している。この動作手順は、制御部２１が所定のプログラム・コードを実行するという形態で実現される。また、通信ケーブル５０の接続方向が逆転し、通信装置１０２がＡデバイスとなったときの動作手順も同様であると理解されたい。
【００８４】
通信装置１０１の通信処理部１１は、起動時において、レセプタクル端子４１に装着されているプラグの型を検出して、制御部２１に通知する。図１に示した例では、レセプタクル端子４１にはＭｉｎｉ−Ａプラグ端子５１が装着されているので、制御部２１は、ＯＴＧ部１１１に対してホスト部１１２へのクロックの供給を指示し、通信装置１０１のＡデバイスとしての制御を開始する。同様に、通信相手である通信装置１０２側では、レセプタクル端子４２にＭｉｎｉ−Ｂプラグ端子が装着されていることを検出し、制御部２２はＢデバイスとしての制御を開始する。
【００８５】
まず、制御部２１は、エニュメレーションの過程において、デバイスである通信装置１０２から、ディスクリプタを取得する（ステップＳ１１）。ここで言うエニュメレーションとは、ホストとデバイスとが通信を開始する際に実行する、ＵＳＢで規定された通信手順のことである。エニュメレーションにおいて、ホストは、デバイスの種々の情報を収集して、デバイスとの接続を確立する処理を行なう。
【００８６】
そして、制御部２１は、エニュメレーションによって通信処理部１１が通信装置１０２から取得した各種のディスクリプタを記憶部３１に格納する（ステップＳ１２）。
【００８７】
次いで、制御部２１は、通信装置１０２との通信をサポートしているか否か、具体的には通信装置１０２を制御するためのデバイス・ドライバを自分が保有しているか否かを判定する（ステップＳ１３）。この判定処理は、通信装置１０２から取得したディスクリプタと、自身が保有しているサポートしているデバイスのリスト、あるいは保有するデバイス・ドライバのリストと照合することによって行なわれる。
【００８８】
ここで、通信装置１０２をサポートしていると判定されたときには（ステップＳ１３のＹｅｓ）、制御を続行し目的の通信を行なう（ステップＳ１４）。
【００８９】
一方、制御部２１が通信装置１０２をサポートしていないと判断されたときには（ステップＳ１３のＮｏ）、制御部２１は、ＨＮＰによって通信装置１０２との間でホスト／デバイスの役割を交替するように、通信処理部１１を制御する。具体的には、まずホスト機能交替の許可をデバイスである通信装置１０２側に通知し（ステップＳ１５）、その後に実際のホスト機能の交替の動作を行なって（ステップＳ１６）、本処理ルーチンを終了する。
【００９０】
続いて、Ａデバイスとしての通信装置１０１が、図４に示した動作手順に従ってＢデバイスとしての通信装置１０２との間で実施する通信手順の一例について説明する。
【００９１】
Ａデバイスは、Ｂデバイスがバスに接続されたことを検出すると、上述したエニュメレーションを実行する。エニュメレーションにおいて、Ａデバイスは、ＵＳＢで規定されている標準リクエスト‘Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）’をＢデバイスに送信する。
【００９２】
‘Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ’は、デバイス機器の情報を含んだディスクリプタを、デバイスからホストへ送信させるためのリクエストである。‘Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）’は、ホストがデバイスに要求するディスクリプタであり、特に‘コンフィグレーション・ディスクリプタ’と称される、機器の能力や機能に関する情報を含んだディスクリプタを指定するリクエストである。
【００９３】
ＯＴＧの規定では、ＤＲＤは、‘Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）’によってホストから‘コンフィグレーション・ディスクリプタ’を要求されたことに応答して‘ＯＴＧディスクリプタ’と称されるディスクリプタを‘コンフィグレーション・ディスクリプタ’に追加してホストに送信するようになっている。‘ＯＴＧディスクリプタ’は、ＤＲＤがＳＲＰやＨＮＰに対応しているか否かを示す情報を含んだディスクリプタである。
【００９４】
したがって、ＢデバイスがＤＲＤであれば、‘Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）’のリクエストをホストから受け取ると、‘コンフィグレーション・ディスクリプタ’とこれに関連するディスクリプタに加えて、‘ＯＴＧディスクリプタ’をＡデバイスに送信する。
【００９５】
Ａデバイスは、自分がＢデバイスをサポートしていない（すなわちＢデバイス用のデバイス・ドライバを備えていない）と判断したときには、ＯＴＧで追加された、標準リクエストの‘Ｓｅｔ  Ｆｅａｔｕｒｅ（ｂ＿ｈｎｐ＿ｅｎａｂｌｅ）’をＢデバイスに送信する。Ｂデバイスは、このリクエストを受けると、ホスト／デバイスの役割交替が許可されたことを認識し、Ａデバイスへ肯定応答を返す。
【００９６】
Ａデバイスは、Ｂデバイスから肯定応答を受けると、Ｂデバイスとの通信状態をサスペンド状態に設定して、通信を停止する。Ｂデバイスにおいてこのサスペンド状態が認識されると、ＡデバイスとＢデバイスの双方でＨＮＰによるホスト／デバイスの役割交替が行なわれ、Ａデバイスはデバイスに、Ｂデバイスはホストに、それぞれ役割を切り替える。
【００９７】
なお、図４には示していないが、Ａデバイスは、Ｂデバイスから取得した‘ＯＴＧディスクリプタ’においてＨＮＰに対応していないという情報が含まれていたときには、ＨＮＰに関する制御は行なわず、何らかの出力装置（図示しない）にエラーを出力して、ユーザに接続が失敗したことを通知する。
【００９８】
続いて、Ｂデバイスとして動作する通信装置１０２の動作について説明する。通信装置１０１がＢデバイスとして動作する場合も同様であると理解されたい。
【００９９】
通信装置１０２の通信処理部１２は、起動時において、レセプタクル端子４２に装着されているプラグの型を検出して、制御部２２に通知する。図１に示した例では、レセプタクル端子４２にはＭｉｎｉ−Ｂプラグ端子５２が装着されているので、制御部２２はＢデバイスとしての制御を開始する。同様に、通信相手である通信装置１０１側では、レセプタクル端子４１にＭｉｎｉ−Ａプラグ端子が装着されていることを検出し、制御部２１はＡデバイスとしての制御を開始する。
【０１００】
このとき、制御部２２は、ホストとして動作する通信装置１０１の制御に従って通信を行なうように、通信処理部１２を制御する。
【０１０１】
そして、通信装置１０１が通信装置１０２との通信をサポートしている（すなわち、通信装置１０２用のデバイス・ドライバを備えている）場合には、通信装置１０１に従って制御を続行し目的の通信を行なう。
【０１０２】
一方、通信装置１０１が通信装置１０２をサポートしていない場合には、ＨＮＰに従って通信装置１０１とホスト／デバイスの役割を交替するように、通信処理部１２を制御する。その後、通信装置１０２はホストに切り替わる。
【０１０３】
図５には、Ｂデバイスである通信装置１０２がＨＮＰによってホストに切り替わったときに実行する動作手順をフローチャートの形式で示している。この動作手順は、制御部２２が所定のプログラム・コードを実行するという形態で実現される。また、通信ケーブル５０の接続方向が逆転し、Ｂデバイスとなった通信装置１０１がホストに切り替わったときの動作手順も同様であると理解されたい。
【０１０４】
まず、制御部２２は、エニュメレーション（前述）の過程において、デバイスである通信装置１０２から、ディスクリプタを取得する（ステップＳ２１）。
【０１０５】
そして、ホストとしての通信装置１０２は、デバイスとしての通信装置１０１から種々の情報を収集して、デバイスとの接続を確立する処理を行なう。また、制御部２２は、エニュメレーションによって通信処理部１２が通信装置１０１から取得した各種のディスクリプタを記憶部３２に格納する（ステップＳ２２）。
【０１０６】
次いで、制御部２２は、通信装置１０１との通信をサポートしているか否か、具体的には通信装置１０１を制御するためのデバイス・ドライバを自分が保有しているか否かを判定する（ステップＳ２３）。この判定処理は、通信装置１０１から取得したディスクリプタと、自身が保有しているサポートしているデバイスのリスト、あるいは保有するデバイス・ドライバのリストと照合することによって行なわれる。
【０１０７】
ここで、通信装置１０１をサポートしていると判定されたときには（ステップＳ２３のＹｅｓ）、制御を続行し目的の通信を行なう（ステップＳ２４）。
【０１０８】
一方、通信装置１０１をサポートしていないと判断されたときには（ステップＳ２３のＮｏ）、制御部２２は、ＨＮＰによって通信装置１０１とホスト／デバイスの役割交替は行なわず、何らかの出力装置にエラーを出力し、ユーザに接続が失敗したことを通知して（ステップＳ２５）、本処理ルーチンを終了する。
【０１０９】
Ｂデバイスとしての通信装置１０２がＡデバイスとしての通信装置１０１をサポートしていないと判断された場合は、要するに通信装置１０１と通信装置１０２がお互いにデバイスとしてサポートしていない場合である。このとき、ＡデバイスがＢデバイスをサポートしていないときとは相違して、ＨＮＰによるホスト／デバイスの役割交替を行なわないのは、ホスト／デバイスの役割交替が無限に続いてしまうことを防ぐためである。
【０１１０】
無限にホスト／デバイスの役割交替が行なわれないようにするための別の解決方法として、ステップＳ２３においてホストとしての通信装置１０２がデバイスとしての通信装置１０１をサポートしていないと判断されたときに、同様にＨＮＰを行ないホスト／デバイスの役割交替を行なった上で、その後のエニュメレーションの過程において‘ＯＴＧディスクリプタ’へＨＮＰに対応しないという情報を設定して応答するようにしてもよい。これによりＡデバイスが再びホストに戻るものの、それ以降はＨＮＰによるホスト／デバイスの役割交替が行なわれることはなくなる。
【０１１１】
なお、Ｂデバイスとしての通信装置１０２がＨＮＰによってホストに切り替わった以降の通信手順は、Ａデバイスとしての通信装置１０１が図４に示した動作手順に従って実施する前述の通信手順とほぼ同様である。
【０１１２】
すなわち、ホストとしてのＢデバイスは、エニュメレーションにおいて、デバイスとしてのＡデバイスに‘Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）’を送信し、これに対し、Ａデバイスは、コンフィグレーション・ディスクリプタ’とこれに関連するディスクリプタに加えて、‘ＯＴＧディスクリプタ’を返信する。そして、ＢデバイスがＡデバイスをサポートしていないときでホスト／デバイスの役割交替を再度行なうときには、ＢデバイスはＡデバイスに‘Ｓｅｔ  Ｆｅａｔｕｒｅ（ｂ＿ｈｎｐ＿ｅｎａｂｌｅ）’を送信し、Ａデバイスは肯定応答を返す。
【０１１３】
以上説明したように、本実施形態では、通信装置１０１は、ホストとして起動したとき、制御部２１の制御によって、デバイスとして動作する通信相手から、ホスト及びデバイスにおける通信相手のディスクリプタが取得される。制御部２１では、この取得された通信相手のディスクリプタと、自らがサポートするデバイスの情報に基づいて、通信相手をサポートしているか否かの判断を行なう。そして、この判断結果により、通信相手をサポートしていないと判定されたときには、制御部２１の指示によって、ＨＮＰに従いホスト／デバイスの役割交替の許可が通信相手に通知され、ＨＮＰによるホスト／デバイスの役割交替が実行される。
【０１１４】
このような役割交替の動作を経ることによって、通信ケーブル５０の接続方向に応じて一意に決定される初期状態のホスト／デバイスの役割分担では通信が不可能な場合であっても、自動的にホスト／デバイスの役割交替を実施することによって、通信が可能になる機会が与えられることになる。また、ホスト／デバイスの役割交替を実施しても、通信装置１０１及び１０２がともに相手をサポートしていない場合には通信が不可能であるが、そのような状況下ではホスト／デバイスの役割交替が無限に続けられないような処理が施される。
【０１１５】
また、第１の実施形態では、ＵＳＢ２．０やＯＴＧの規格に準拠した通信手順により通信相手に対するサポート状況の判断、及びホスト／デバイスの役割交替を行なうので、これらの規格に準拠する機器へ容易に適用することが可能である。
【０１１６】
さらに、上述したホスト／デバイスの役割交替に関わる処理は主に制御部２１及び２２によって実行されるが、このことは同処理がコンピュータによって実現可能であることを意味する。したがって、通信処理の全体動作をコンピュータで制御している従来の通信装置については、そのハードウェア構成に特段の変更を加えることなく、プログラムの修正によって本実施形態に係る機能を実装することも可能である。
【０１１７】
第２の実施形態：
図６には、通信装置１０１がＡデバイスとして動作する通信装置１０１が実行する動作手順をフローチャートの形式で示している。この動作手順は、制御部２１が所定のプログラム・コードを実行するという形態で実現される。また、通信ケーブル５０の接続方向が逆転し、通信装置１０２がＡデバイスとなったときの動作手順も同様であると理解されたい。
【０１１８】
通信装置１０１の通信処理部１１は、起動時において、レセプタクル端子４１に装着されているプラグの型を検出して、制御部２１に通知する。図１に示した例では、レセプタクル端子４１にはＭｉｎｉ−Ａプラグ端子５１が装着されているので、制御部２１は、ＯＴＧ部１１１に対してホスト部１１２へのクロックの供給を指示し、通信装置１０１のＡデバイスとしての制御を開始する。同様に、通信相手である通信装置１０２側では、レセプタクル端子４２にＭｉｎｉ−Ｂプラグ端子が装着されていることを検出し、制御部２２はＢデバイスとしての制御を開始する。
【０１１９】
まず、制御部２１は、エニュメレーションの過程において、デバイスである通信装置１０２から、ディスクリプタを取得する（ステップＳ３１）。ここで言うエニュメレーションとは、ホストとデバイスとが通信を開始する際に実行する、ＵＳＢで規定された通信手順のことである。エニュメレーションにおいて、ホストは、デバイスの種々の情報を収集して、デバイスとの接続を確立する処理を行なう。
【０１２０】
そして、制御部２１は、エニュメレーションによって通信処理部１１が通信装置１０２から取得した各種のディスクリプタを記憶部３１に格納する（ステップＳ３２）。
【０１２１】
次いで、制御部２１は、通信装置１０２との通信をサポートしているか否か、具体的には通信装置１０２を制御するためのデバイス・ドライバを自分が保有しているか否かを判定する（ステップＳ３３）。この判定処理は、通信装置１０２から取得したディスクリプタと、自身が保有しているサポートしているデバイスのリスト、あるいは保有するデバイス・ドライバのリストと照合することによって行なわれる。
【０１２２】
ここで、通信装置１０２をサポートしていると判定されたときには（ステップＳ３３のＹｅｓ）、制御を続行し目的の通信を行なう（ステップＳ３４）。
【０１２３】
一方、通信装置１０２をサポートしていないと判断されたときには（ステップＳ３３のＮｏ）、制御部２１は、通信相手から取得したディスクリプタの中に、ホストとしてサポートするデバイスの情報を含んだ所定のディスクリプタが存在するか否かを調べる（ステップＳ３５）。
【０１２４】
ここでは、ホストとしてサポートするデバイスの情報を含む所定のディスクリプタを、‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタと呼ぶことにする。‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタは、通信装置が第１のモードで動作するときに対応しているすべてのＵＳＢクラスとその通信速度の情報を格納する。
【０１２５】
図７には、‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタのデータ構造の一例を示している。図示のように、データ・フィールドとして、先頭から順に‘ディスクリプタ長’、‘ディスクリプタ・タイプ’、‘ディスクリプタ・インデックス’、‘サポートするクラス数（ロースピード）Ｎｃ＿ｌｓ’、‘サポートするクラス数（フルピード）Ｎｃ＿ｆｓ’、‘サポートするクラス数（ハイスピード）Ｎｃ＿ｈｓ’を有しており、以降は、ロースピード、フルスピード、ハイスピードの順で、‘サポートするクラスコード／サブクラスコード’を有する。
【０１２６】
ここで、‘ディスクリプタ長’には、本ディスクリプタの全体のバイト数が格納される。また、‘ディスクリプタ・タイプ’には、本ディスクリプタを識別するための識別子が格納される。また、‘ディスクリプタ・インデックス’には、本ディスクリプタが複数ある場合のインデックスが格納される。また、‘サポートするクラス数’には、それぞれの通信速度で通信可能なクラスの数が格納される。例えば、‘サポートするクラス数（ロースピード）Ｎｃ＿ｌｓ’には、ロースピードで通信可能なクラスの数が格納される。また、‘サポートするクラスコード／サブクラスコード’には、通信装置がホストで動作するときに対応しているクラスコード及びサブクラスコードが格納される。クラスコード並びにサブクラスコードは、ＵＳＢにおいて通信仕様が類似する機器毎に与えられた固有のコードである。
【０１２７】
このような‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタが通信相手である通信装置１０２から得られた場合（ステップＳ３５のＹｅｓ）、制御部２１は、取得した通信相手の‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタの‘サポートするクラスコード／サブクラスコード’を調べて、自分自身（通信装置１０１）のクラスのコードがこの中に含まれているか否かを調べる（ステップＳ３６）。
【０１２８】
ここで、‘サポートするクラスコード／サブクラスコード’に自分自身のクラスのコードが含まれていないときには（ステップＳ３６のＮｏ）、制御部２１は、出力装置（図示しない）にエラーを出力し、ユーザに接続が失敗したことを通知して（ステップＳ３７）、本処理ルーチンを終了する。
【０１２９】
一方、‘サポートするクラスコード／サブクラスコード’に自分自身のクラスのコードが含まれている場合には（ステップＳ３６のＹｅｓ）、ＨＮＰによって通信装置１０２とホスト／デバイスの役割交替を実施するように、通信処理部１１を制御する。具体的には、まずホスト機能交換の許可をデバイスに通知し（ステップＳ３８）、その後に実際のホスト機能の交換の動作を行なって（ステップＳ３９）、本処理ルーチンを終了する。
【０１３０】
なお、ステップＳ３５において通信相手から取得したディスクリプタに‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタが含まれていない場合も（ステップＳ３５のＮｏ）、ＨＮＰによって通信装置１０２と動作モードを交換するように、通信処理部１１を制御する。これは、通信相手（通信装置１０２）が自分自身（通信装置１０１）をサポートしているかどうか不明ではあるが、ホスト／デバイスの役割交替によって通信相手が自分自身をサポートしていた場合に通信が可能になる場合があるからであり、第１の実施形態と同様の処理である。
【０１３１】
続いて、Ａデバイスとしての通信装置１０１が、図６に示した動作手順に従ってＢデバイスとしての通信装置１０２との間で実施する通信手順の一例について説明する。但し、説明の簡素化のため、通信装置１０１が通信装置１０２をサポートしていない場合、すなわちステップＳ３３における判断結果がＮｏである場合を前提とする。
【０１３２】
エニュメレーションにおいて、Ａデバイスは、ＵＳＢの標準リクエスト‘Ｇｅｔ  Ｄｅｓｃｒｉｐｔｏｒ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）’をＢデバイスに送信する。
【０１３３】
Ｂデバイスは、このリクエストを受けると、‘コンフィグレーション・ディスクリプタ’とこれに関連するディスクリプタ、並びに‘ＯＴＧディスクリプタ’をＡデバイスに送信する。本実施形態では、この‘ＯＴＧディスクリプタ’に加えて、さらに上述の‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタをＡデバイスに送信する。‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタは、ＵＳＢ２．０及びＯＴＧの規格に準拠した方法で、ＢデバイスからＡデバイスへ送信される。
【０１３４】
Ａデバイスは、Ｂデバイスから取得した‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタと自らのクラスコードの情報に基づいて、Ｂデバイスが自分をサポートしていると判断した場合には、標準リクエストの‘Ｓｅｔ  Ｆｅａｔｕｒｅ（ｂ＿ｈｎｐ＿ｅｎａｂｌｅ）’をＢデバイスに送信する。このリクエストを受けると、Ｂデバイスは、動作モードの交換が許可されたことを認識し、Ａデバイスへ肯定応答を返す。
【０１３５】
Ａデバイスは、Ｂデバイスから肯定応答を受けると、Ｂデバイスとの通信状態をサスペンド状態に設定して、通信を停止する。Ｂデバイスにおいてバスのサスペンド状態が認識されると、ＡデバイスとＢデバイスの双方でＨＮＰによるホスト／デバイスの役割交替が行なわれ、Ａデバイスはデバイスに、Ｂデバイスはホストに、それぞれ役割を切り替える。
【０１３６】
以上説明したように、本実施形態では、通信装置１０１は、ホストとして起動したとき、制御部２１の制御によって、デバイスとして動作する通信相手から、ホストとして動作したときにサポートする通信相手の情報（例えば‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタ）を取得する。そして、制御部２１は、取得された通信相手の‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタと、記憶部３１に記憶される自らのクラスコードに基づいて、通信相手が自分自身をサポートしているか否かの判定を行なう。そして、通信相手が自分自身をサポートしていると判定されたときには、制御部２１の指示によって、ＨＮＰによる動作モードの交替の許可が通信相手に通知され、ＨＮＰによるホスト／デバイスの役割交替が実行される。
【０１３７】
このような役割交替の動作を経ることによって、通信ケーブル５０の接続方向に応じて一意に決定される初期状態のホスト／デバイスの役割分担では通信が不可能な場合であっても、自動的にホスト／デバイスの役割交替を実施することによって、通信が可能になる機会が与えられることになる。
【０１３８】
また、上述した第１の実施形態とは異なり、各通信装置１０１及び１０２が‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタのような情報の送信に対応している必要があるものの、通信相手が自分自身をサポートしていることを確認してからホスト／デバイスの役割交替の処理を行なうので、無駄に同処理を行なうことが無いため、消費電力の削減が可能である。また本質的に無限にホスト／デバイスの役割交替が行なわれる可能性がないことも特徴である。
【０１３９】
また、第２の実施形態では、ＵＳＢ２．０やＯＴＧの規格に準拠した通信手順により通信相手に対するサポート状況の判断、及びホスト／デバイスの役割交替を行なうので、これらの規格に準拠する機器へ容易に適用することが可能である。
【産業上の利用可能性】
【０１４０】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
【０１４１】
本明細書では本発明の好ましい幾つかの実施形態について述べたが、本発明の要旨はこれらの実施形態に限定されるものではなく、この他にも種々のバリエーションを含む。
【０１４２】
例えば、通信装置の構成や、ＨＮＰによるホスト／デバイスの役割交替の動作、ディスクリプタの内容などについては、上述した以外にもさまざまな形態が可能である。また、既述のフローチャートや通信手順も一例に過ぎず、適宜修正又は変形して実装することができる。
【０１４３】
ＵＳＢでは、種々の機能の利用やデータ伝送の主導権をホスト側が有している。このため、ユーザの意向も考慮しながらホスト／デバイスの役割交替を行なうか否かの判定を行なうことが必要な場合が生じ得る。そこで、ホスト／デバイスの役割交替を行なう際に、所定のユーザ・インターフェース装置を通じて、ユーザの承認を事前に得るようにしても良い。
【０１４４】
例えば、上述したホスト／デバイスの役割交替の条件が成立した場合、制御部は、ユーザ・インターフェース装置を通じてユーザに動作モードの交換を行なうか否かの確認を求める通知を行なう。そして、この確認の通知に対する許可の応答がユーザ・インターフェース装置に入力されたときに、ホスト／デバイスの役割交替を実行するようにしても良い。
【０１４５】
また、本願の明細書及び図面に示した通信装置の構成要素のうち少なくとも一部をコンピュータとソフトウェア・プログラムの協働的作用によって実現してもよいし、ソフトウェアとハードウェアの組み合わせによって実現してもよいし、あるいはすべての構成要素をハードウェアで実現してもよい。
【０１４６】
また、本明細書では、ＵＳＢ２．０の追加規格であるＯＴＧに準拠した通信システムに適用した実施形態を中心に説明してきたが、本発明の要旨はこれに限定されるものではない。通信インターフェース上においてホストの役割を持つ１台の機器がデバイスとして動作する他の機器のデータ伝送動作を制御し、且つ、少なくとも一部の機器がホスト及びデバイスの双方の役割が可能である、さまざまな通信インターフェース若しくは通信プロトコルに対しても、同様に本発明を適用することができる。
【０１４７】
また、本明細書では、ホスト及びデバイスの双方の役割が可能な通信装置同士がＵＳＢケーブルを介して接続される場合の実施形態につい説明してきたが、本発明の要旨は特定の通信媒体に限定される訳ではない。例えばＷＵＳＢのような無線インターフェースで構成される通信インターフェースに対しても同様に本発明を適用することができる。
【０１４８】
要するに、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【図面の簡単な説明】
【０１４９】
【図１】図１は、本発明の一実施形態に係る通信システムの構成を模式的に示した図である。
【図２】図２は、通信装置１０１内の通信処理部１１の内部構成を詳細に示した図である。
【図３Ａ】図３Ａは、通信処理部１１及び１２の間でホストとデバイスの役割を交替する様子（但し、通信装置１０１がホスト、通信装置１０２がデバイスとなる場合）を示した図である。
【図３Ｂ】図３Ｂは、通信処理部１１及び１２の間でホストとデバイスの役割を交替する様子（但し、通信装置１０１がデバイス、通信装置１０２がホストなる場合）を示した図である。
【図４】図４は、Ａデバイスとして動作する通信装置１０１が実行する動作手順（第１の実施形態）を示したフローチャートである。
【図５】図５は、Ｂデバイスである通信装置１０２がＨＮＰによってホストに切り替わったときに実行する動作手順を示したフローチャートである。
【図６】図６は、通信装置１０１がＡデバイスとして動作する通信装置１０１が実行する動作手順（第２の実施形態）を示したフローチャートである。
【図７】図７は、‘ＯＴＧ  Ｓｕｐｐｏｒｔ  Ｄｅｖｉｃｅ’ディスクリプタのデータ構造の一例を示した図である。
【符号の説明】
【０１５０】
５０…通信ケーブル
１１、１２…通信処理部
２１、２２…制御部
３１、３２…記憶部
４１、４２…レセプタクル端子
５１…Ｍｉｎｉ−Ａプラグ端子
５２…Ｍｉｎｉ−Ｂプラグ端子
１０１、１０２…通信装置
１１１…ＯＴＧ部
１１２…ホスト部
１１３…デバイス部
【図１】
2009009210.tif 000003
【図２】
2009009210.tif 000004
【図３Ａ】
2009009210.tif 000005
【図３Ｂ】
2009009210.tif 000006
【図４】
2009009210.tif 000007
【図５】
2009009210.tif 000008
【図６】
2009009210.tif 000009
【図７】
2009009210.tif 000010