(57)【要約】【課題】Ｔｒｙ．ＳＲＣまたはＴｒｙ．ＳＮＫを採用した場合に生じ得る新たな課題を解決する。【解決手段】コントローラは、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰに対応したデバイスを実現するために用いられる。コントローラは、接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが受電側を意味するＳｉｎｋに決定されると、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する第１の処理と、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えて、対向デバイスとのシーケンスを継続する第２の処理とを実行可能に構成される。【選択図】図６
2020087149.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰ（Dual Role Power）に対応したデバイスを実現するためのコントローラであって、
接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが受電側を意味するＳｉｎｋに決定されると、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する第１の処理と、
前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えて、前記対向デバイスとのシーケンスを継続する第２の処理とを実行可能に構成される、コントローラ。
【請求項２】
前記第２の処理は、前記対向デバイスと電気的に接続された通信ラインをオープンする処理を含む、請求項１に記載のコントローラ。
【請求項３】
前記第１の処理は、自デバイスのＰｏｗｅｒ  ＲｏｌｅがＳｉｎｋに決定されるまでのステート遷移パスに基づいて、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する処理を含む、請求項１に記載のコントローラ。
【請求項４】
前記ステート遷移パスに基づいて判断する処理は、自デバイスのＰｏｗｅｒ  ＲｏｌｅがＳｉｎｋに決定されるまでのステート遷移パスが、Ａｔｔａｃｈｅｄ．ＳＲＣステート、ＴｒｙＷａｉｔ．ＳＮＫステートおよびＡｔｔａｃｈｅｄ．ＳＮＫステートの順序であるか否かを判断する処理を含む、請求項３に記載のコントローラ。
【請求項５】
前記コントローラは、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙではない場合に、前記第２の処理を実行する、請求項１に記載のコントローラ。
【請求項６】
前記第１の処理は、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであると判断された後、予め定められた時間だけ待機する処理を含む、請求項１に記載のコントローラ。
【請求項７】
前記第１の処理は、前記対向デバイスがＵＳＢ  Ｐｏｗｅｒ  Ｄｅｌｉｖｅｒｙをサポートしているか否かを判断する処理を含み、
前記コントローラは、前記対向デバイスがＵＳＢ  Ｐｏｗｅｒ  Ｄｅｌｉｖｅｒｙをサポートしていない場合に、前記第２の処理を実行する、請求項１に記載のコントローラ。
【請求項８】
前記第１の処理は、
前記対向デバイスに対してＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔを送信する処理と、
前記対向デバイスからＲｅｊｅｃｔを受信するか否かを判断する処理とを含み、
前記コントローラは、前記対向デバイスからＲｅｊｅｃｔを受信すると、前記第２の処理を実行する、請求項７に記載のコントローラ。
【請求項９】
ＵＳＢ（Universal Serial Bus）  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰ（Dual Role Power）に対応したデバイスを実現するためのコントローラであって、
接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが給電側を意味するＳｏｕｒｃｅに決定されると、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであるか否かを判断する第１の処理と、
前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫ  ｏｎｌｙに切り替えて、前記対向デバイスとのシーケンスを継続する第２の処理とを実行可能に構成される、コントローラ。
【請求項１０】
ＵＳＢ（Universal Serial Bus）  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰ（Dual Role Power）に対応したデバイスで実行される制御方法であって、
接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが受電側を意味するＳｉｎｋに決定されると、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断するステップと、
前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えて、前記対向デバイスとのシーケンスを継続するステップとを備える、制御方法。
【請求項１１】
ＵＳＢ（Universal Serial Bus）  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰ（Dual Role Power）に対応したデバイスで実行される制御方法であって、
接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが給電側を意味するＳｏｕｒｃｅに決定されると、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであるか否かを判断するステップと、
前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫ  ｏｎｌｙに切り替えて、前記対向デバイスとのシーケンスを継続するステップとを備える、制御方法。
【請求項１２】
ＵＳＢ（Universal Serial Bus）  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰ（Dual Role Power）に対応したデバイスを実現するためのコントローラのプロセッサで実行される制御プログラムであって、前記制御プログラムは、前記プロセッサに、
接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが受電側を意味するＳｉｎｋに決定されると、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断するステップと、
前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えて、前記対向デバイスとのシーケンスを継続するステップとを実行させる、制御プログラム。
【請求項１３】
ＵＳＢ（Universal Serial Bus）  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰ（Dual Role Power）に対応したデバイスを実現するためのコントローラのプロセッサで実行される制御プログラムであって、前記制御プログラムは、前記プロセッサに、
接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが給電側を意味するＳｏｕｒｃｅに決定されると、前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであるか否かを判断するステップと、
前記対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫ  ｏｎｌｙに切り替えて、前記対向デバイスとのシーケンスを継続するステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コントローラに関し、例えば、ＵＳＢ（Universal Serial Bus）規格に従うシーケンスを実行して接続先との間で受給電動作を実行するために用いられる。
【背景技術】
【０００２】
ＵＳＢ規格として、ＵＳＢ  Ｔｙｐｅ−Ｃ規格が規定され、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＵＳＢ  Ｔｙｐｅ−Ｃ型インターフェースが普及しつつある（例えば、非特許文献１など参照）。ＵＳＢ  Ｔｙｐｅ−Ｃ型インターフェースでは、給電および受電は同一形状のポートが用いられることになる。そのため、単一のポートで給電および受電の両方に対応することになる。
【０００３】
ＵＳＢ  Ｔｙｐｅ−Ｃ規格においては、電力を供給するデバイス（給電側）を「Ｓｏｕｒｃｅ」あるいは「ＳＲＣ」と称し、電力を受電するデバイス（受電側）を「Ｓｉｎｋ」あるいは「ＳＮＫ」と称する。さらに、給電および受電の両方に対応するデバイスを「ＤＲＰ（Dual Role Power）」と称する。ＤＲＰを採用することで、従来では別々に２つ必要だったポートが一つで済み、コストおよびスペースを削減できる。
【０００４】
このような利点により、モバイルバッテリなどのＰｏｗｅｒ  Ｂａｎｋをはじめとして、スマートフォン、タブレット、ラップトップパソコンなどのモバイルデバイスにおいて、ＵＳＢ  Ｔｙｐｅ−Ｃ型インターフェースが採用される場合には、１つのポートで給電および受電の両方に対応できるように、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅとしてＤＲＰが採用されることが予想される。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】"Universal Serial Bus Type-C Cable and Connector Specification", Release 1.3, July 14, 2017
【非特許文献２】"Universal Serial Bus Type-C (USB Type-C) Functional Test Specification", Revision:0.79, May 28, 2018
【非特許文献３】"Universal Serial Bus Power Delivery Specification", Revision:3.0, Version:1.2, June 21 2018
【発明の概要】
【発明が解決しようとする課題】
【０００６】
Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅとしてＤＲＰを有するデバイス同士を接続した場合、Ｐｏｗｅｒ  Ｒｏｌｅ（すなわち、どちらのデバイスがＳＲＣ／ＳＮＫになるか）は一意には決まらない。そこで、非特許文献１に示されるＵＳＢ  Ｔｙｐｅ−Ｃ規格においては、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅとして、「Ｔｒｙ．ＳＲＣ」（ＳＲＣを志向するＤＲＰ）および「Ｔｒｙ．ＳＮＫ」（ＳＮＫを志向するＤＲＰ）が規定されている。
【０００７】
例えば、Ｔｒｙ．ＳＲＣ（ＳＲＣを志向するＤＲＰ）とＤＲＰ（純粋なＤＲＰ）と接続した場合、Ｔｒｙ．ＳＲＣ側のデバイスがＳＲＣとなる。同様に、Ｔｒｙ．ＳＮＫ（ＳＮＫを志向するＤＲＰ）とＤＲＰ（純粋なＤＲＰ）とを接続した場合、Ｔｒｙ．ＳＮＫ側のデバイスがＳＮＫとなる。
【０００８】
本願発明者は、このようなＴｒｙ．ＳＲＣまたはＴｒｙ．ＳＮＫを採用した場合に、新たな課題が生じる得ることを見出した。
【０００９】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
ある実施の形態に従うコントローラは、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従う、給電側および受電側のいずれにもなり得るＤＲＰに対応したデバイスを実現するために用いられる。コントローラは、接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが受電側を意味するＳｉｎｋに決定されると、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する第１の処理と、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えて、対向デバイスとのシーケンスを継続する第２の処理とを実行可能に構成される。
【発明の効果】
【００１１】
ある実施の形態によれば、Ｔｒｙ．ＳＲＣまたはＴｒｙ．ＳＮＫを採用した場合に生じ得る新たな課題を解決できる。
【図面の簡単な説明】
【００１２】
【図１】ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＰｏｗｅｒ  Ｒｏｌｅを決定する一例を説明するための図である。
【図２】ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うデバイス接続に係るＰｏｗｅｒ  Ｒｏｌｅの決定例を示す図である。
【図３】本発明の各実施の形態に従うＰｏｗｅｒ  Ｂａｎｋのハードウェア構成例を示す模式図である。
【図４】図３に示すコントローラ１１０の回路構成の一例を示す模式図である。
【図５】実施の形態１に従うデバイスにおけるＰｏｗｅｒ  Ｒｏｌｅの決定例を示す図である。
【図６】実施の形態１に従うデバイスのステートマシンの一例を示す図である。
【図７】実施の形態１に従うデバイスがＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣである対向デバイスと接続された場合のシーケンス（Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替えなし）の一例を示す図である。
【図８】実施の形態１に従うデバイスがＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣである対向デバイスと接続された場合のシーケンス（Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替えあり）の一例を示す図である。
【図９】実施の形態１に従うデバイスがＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙである対向デバイスと接続された場合のシーケンスの一例を示す図である。
【図１０】図７〜図９に示す各シーケンスに対応するステートマシンを示す図である。
【図１１】実施の形態１に従うデバイス同士が接続された場合のシーケンスの一例を示す図である。
【図１２】実施の形態２に従うデバイスのステートマシンの一例を示す図である。
【図１３】実施の形態２に従うデバイスと実施の形態１に従うデバイスとが接続された場合のシーケンスの一例を示す図である。
【図１４】実施の形態３に従うデバイスにおいて採用される切替条件ＳＲを説明するための図である。
【図１５】実施の形態４に従うデバイスにおいて採用される切替条件ＳＲを説明するための図である。
【図１６】実施の形態４の変形例に従うデバイスにおいて採用される切替条件ＳＲを説明するための図である。
【図１７】実施の形態５に従うデバイスにおけるＰｏｗｅｒ  Ｒｏｌｅの決定例を示す図である。
【図１８】実施の形態５に従うデバイスのステートマシンの一例を示す図である。
【図１９】実施の形態５に従うデバイスのステートマシンの要部を示す図である。
【図２０】実施の形態５に従うデバイスにおいて採用される切替条件ＳＮを説明するための図である。
【発明を実施するための形態】
【００１３】
いくつかの実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一の参照符号を付してその説明は繰り返さない。
【００１４】
［Ａ．背景技術］
まず、ＵＳＢ  Ｔｙｐｅ−Ｃ規格におけるＰｏｗｅｒ  Ｒｏｌｅについて説明する。
【００１５】
ＵＳＢ  Ｔｙｐｅ−Ｃ規格においては、電力を供給するデバイス（給電側）である「Ｓｏｕｒｃｅ」あるいは「ＳＲＣ」、ならびに、電力を受電するデバイス（受電側）である「Ｓｉｎｋ」あるいは「ＳＮＫ」に加えて、給電および受電の両方に対応するデバイスである「ＤＲＰ」が規定されている。
【００１６】
ＤＲＰとして構成されたデバイス同士を接続した場合、Ｐｏｗｅｒ  Ｒｏｌｅ（すなわち、どちらのデバイスがＳＲＣ／ＳＮＫになるか）は一意には決まらない。そこで、ＵＳＢ  Ｔｙｐｅ−Ｃ規格においては、「Ｔｒｙ．ＳＲＣ」（ＳＲＣを志向するＤＲＰ）および「Ｔｒｙ．ＳＮＫ」（ＳＮＫを志向するＤＲＰ）が規定されている。
【００１７】
図１は、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＰｏｗｅｒ  Ｒｏｌｅを決定する一例を説明するための図である。図１には、Ｐｏｗｅｒ  Ｂａｎｋ１００と、スマートフォン２００と、ラップトップパソコン３００とを示す。これらのデバイスは、いずれもＤＲＰとして構成されているとする。
【００１８】
図１（ａ）に示すように、Ｐｏｗｅｒ  Ｂａｎｋ１００とスマートフォン２００とを接続した場合には、通常、Ｐｏｗｅｒ  Ｂａｎｋ１００からスマートフォン２００へ電力が供給されることが予定される。すなわち、Ｐｏｗｅｒ  Ｂａｎｋ１００がＳＲＣとなり、スマートフォン２００がＳＮＫとなることが好ましい。
【００１９】
また、図１（ｂ）に示すように、ラップトップパソコン３００とスマートフォン２００とを接続した場合には、ラップトップパソコン３００がより大きなバッテリを搭載していることを考えると、ラップトップパソコン３００スマートフォン２００へ電力が供給されることが予定される。すなわち、ラップトップパソコン３００がＳＲＣとなり、スマートフォン２００がＳＮＫとなることが好ましい。
【００２０】
図１（ａ）および図１（ｂ）に示すような使用形態を想定すると、Ｐｏｗｅｒ  Ｂａｎｋ１００およびラップトップパソコン３００は、いずれもＴｒｙ．ＳＲＣとして構成し、スマートフォン２００は、Ｔｒｙ．ＳＮＫとして構成することが好ましい。
【００２１】
ここで、図１（ｃ）に示すように、Ｐｏｗｅｒ  Ｂａｎｋ１００とラップトップパソコン３００とを接続した場合を想定する。この場合、通常、Ｐｏｗｅｒ  Ｂａｎｋ１００からラップトップパソコン３００へ電力が供給されることが期待される。そのため、Ｐｏｗｅｒ  Ｂａｎｋ１００はＳＲＣとなり、ラップトップパソコン３００はＳＮＫとなることが好ましい。
【００２２】
しかしながら、図１（ａ）および図１（ｂ）に示されるような使用形態を想定して、Ｐｏｗｅｒ  Ｂａｎｋ１００およびラップトップパソコン３００をＴｒｙ．ＳＲＣとして構成した場合には、Ｐｏｗｅｒ  Ｂａｎｋ１００およびラップトップパソコン３００の間のＰｏｗｅｒ  Ｒｏｌｅは一意には決まらない、という新たな課題を見出した。
【００２３】
すなわち、Ｔｒｙ．ＳＲＣ同士を接続した場合には、Ｐｏｗｅｒ  Ｒｏｌｅ（すなわち、どちらのデバイスがＳＲＣ／ＳＮＫになるか）は一意には決まらない。同様に、Ｔｒｙ．ＳＮＫ同士を接続した場合にも、Ｐｏｗｅｒ  Ｒｏｌｅ（すなわち、どちらのデバイスがＳＲＣ／ＳＮＫになるか）は一意には決まらない。
【００２４】
図２は、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うデバイス接続に係るＰｏｗｅｒ  Ｒｏｌｅの決定例を示す図である。図２に示すように、デバイスに設定される役割を示すＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅとしては、「ＳＲＣ  ｏｎｌｙ」、「Ｔｒｙ．ＳＲＣ」、「ＤＲＰ」、「Ｔｒｙ．ＳＮＫ」、「ＳＮＫ  ｏｎｌｙ」の５種類が存在する。また、接続状態におけるデバイスの各ポートの役割を示すＰｏｗｅｒ  Ｒｏｌｅとしては、「ＳＮＫ」および「ＳＲＣ」の２種類が存在する。
【００２５】
なお、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅおよびＰｏｗｅｒ  Ｒｏｌｅは、デバイスが有しているポート毎にそれぞれ独立して設定されることになる。説明の便宜上、以下では、各デバイスの単一のポートに注目して説明する。
【００２６】
図２を参照して、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣである場合には、接続先のデバイスである対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるときには、接続後の自デバイスのＰｏｗｅｒ  Ｒｏｌｅは一意には決まらない。
【００２７】
同様に、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫである場合には、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであるときには、接続後の自デバイスのＰｏｗｅｒ  Ｒｏｌｅは一意には決まらない。
【００２８】
本発明の各実施の形態によれば、このようなＰｏｗｅｒ  Ｒｏｌｅが一意には決まらないという新たな課題に対して解決手段が提供される。
【００２９】
［Ｂ．ハードウェア構成例］
まず、本発明の各実施の形態に従うコントローラのハードウェア構成例について説明する。後述する各実施の形態は、以下に示すようなコントローラを用いて実現できる。説明の便宜上、Ｐｏｗｅｒ  Ｂａｎｋ１００のハードウェア構成例について説明するが、他のデバイスについても同様のハードウェア構成を採用できる。
【００３０】
図３は、本発明の各実施の形態に従うＰｏｗｅｒ  Ｂａｎｋ１００のハードウェア構成例を示す模式図である。図３を参照して、Ｐｏｗｅｒ  Ｂａｎｋ１００は、主たる構成要素として、コネクタ１０２と、電源管理部（Ｐｏｗｅｒ  Ｍａｎａｇｅｒ）１０４と、バッテリ１０６と、コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）１１０とを含む。コネクタ１０２は、ＵＳＢ  Ｔｙｐｅ−Ｃ型インターフェースのポートを含む。
【００３１】
電源管理部１０４は、コントローラ１１０からの指示に従って、バッテリ１０６の充放電を制御する。具体的には、電源管理部１０４は、外部電源から供給される電力をバッテリ１０６に蓄える第１充電動作、外部デバイスから供給される電力をバッテリ１０６に蓄える第２充電動作、および、バッテリ１０６に蓄えられた電力を外部デバイスへ供給する放電動作を選択的に実行可能になっている。
【００３２】
バッテリ１０６は、充放電可能に構成された蓄電池であり、例えば、リチウムイオン二次電池、リチウムイオンポリマー二次電池、ニッケル・水素充電池などが用いられる。
【００３３】
コントローラ１１０は、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従う、給電側（ＳＲＣ）および受電側（ＳＮＫ）のいずれにもなり得るＤＲＰに対応したデバイスを実現する。コントローラ１１０は、ＤＲＰとして機能するポートを提供し、後述するような制御方法を実行することで、ＵＳＢケーブル２を介した対向デバイスとの通信および受給電動作を管理する。より具体的には、コントローラ１１０は、プロセッサ１１２と、ＣＣ１／ＣＣ２制御・接続検出モジュール（ＰＨＹ＆ＬＧＣ）１１６とを含む。プロセッサ１１２は、ＣＣ１／ＣＣ２制御・接続検出モジュール１１６および電源管理部１０４に接続されている。
【００３４】
プロセッサ１１２は、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うシーケンスを実行する。プロセッサ１１２は、制御プログラムの一例であるファームウェア１１４を実行することで、以下に示すような制御方法の実行および機能の提供を実現する。すなわち、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うステート管理に係るシーケンス（制御手順）は、プロセッサ１１２が制御プログラムの一例であるファームウェア１１４を実行することで実現されてもよい。プロセッサ１１２およびファームウェア１１４を用いて実装することで、シーケンスの修正やバージョンアップなどをより容易に実現できる。なお、プロセッサ１１２を用いたソフトウェア実装ではなく、後述するようなハードウェア実装を採用してもよい。
【００３５】
ＣＣ１／ＣＣ２制御・接続検出モジュール１１６は、プロセッサ１１２からの指示に従って、ＵＳＢケーブル２内の通信ライン（第１通信ライン（ＣＣ１）２１および第２通信ライン（ＣＣ２）２２）を制御して、対向デバイスと接続を検出する。なお、第１通信ライン２１および第２通信ライン２２を、まとめて「通信ライン」と総称することもある。ＣＣ１／ＣＣ２制御・接続検出モジュール１１６の詳細な構成については、後述する。
【００３６】
プロセッサ１１２は、バッテリ１０６の充放電を制御するための電源管理部１０４に結合されている。プロセッサ１１２と電源管理部１０４との間には、任意の制御インターフェースを設けてもよい。このような制御インターフェースは、プロセッサ１１２から指示に従って、電源管理部１０４による充放電を制御するための制御指令の送信を仲介する。例えば、プロセッサ１１２と電源管理部１０４との間では、Ｉ２Ｃインターフェースに従って制御信号を遣り取りするようにしてもよい。
【００３７】
バッテリ１０６と外部デバイスとの間の電力の遣り取りは、ＵＳＢケーブル２内の電力ライン（ＶＢＵＳ）２３を介して行われる。なお、ＵＳＢケーブル２は、図示していないシールド線を含んでいてもよい。
【００３８】
図４は、図３に示すコントローラ１１０の回路構成の一例を示す模式図である。図４を参照して、コントローラ１１０のＣＣ１／ＣＣ２制御・接続検出モジュール１１６は、第１通信ライン２１（ＣＣ１）および第２通信ライン２２（ＣＣ２）を制御して、対向デバイスとの接続を検出する。
【００３９】
より具体的には、ＣＣ１／ＣＣ２制御・接続検出モジュール１１６は、第１接続検出ブロック１１６１および第２接続検出ブロック１１６２を有している。
【００４０】
第１接続検出ブロック１１６１は、第１通信ライン２１の電位によって対向デバイスの接続状態を検出し、その検出結果をプロセッサ１１２へ出力する。同様に、第２接続検出ブロック１１６２は、第２通信ライン２２の電位によって対向デバイスの接続状態を検出し、その検出結果をプロセッサ１１２へ出力する。
【００４１】
ＣＣ１／ＣＣ２制御・接続検出モジュール１１６は、対向デバイスの接続を検出するために、通信ライン（第１通信ライン２１および第２通信ライン２２）と電源電位Ｖｓおよびグランド電位ＧＮＤとの間にそれぞれ接続された抵抗を有している。
【００４２】
具体的には、第１通信ライン２１には、電源電位Ｖｓとの間に抵抗値Ｒｐをもつプルアップ抵抗１１６５が接続されており、また、グランド電位ＧＮＤとの間に抵抗値Ｒｄをもつプルダウン抵抗１１６６が接続されている。同様に、第２通信ライン２２には、電源電位Ｖｓとの間に抵抗値Ｒｐをもつプルアップ抵抗１１６７が接続されており、また、グランド電位ＧＮＤとの間に抵抗値Ｒｄをもつプルダウン抵抗１１６８が接続されている。
【００４３】
スイッチ１１６３，１１６４は、通信ライン（第１通信ライン２１および第２通信ライン２２）から電源電位Ｖｓおよびグランド電位ＧＮＤへ繋がる経路を電気的に接続／遮断する。より具体的には、スイッチ１１６３は、プロセッサ１１２からの制御信号に従って、プルアップ抵抗１１６５またはプルダウン抵抗１１６６と第１通信ライン２１とを電気的に接続／遮断する。同様に、スイッチ１１６４は、プロセッサ１１２からの制御信号に従って、プルアップ抵抗１１６７またはプルダウン抵抗１１６８と第２通信ライン２２とを電気的に接続／遮断する。
【００４４】
第１通信ライン２１および第２通信ライン２２に生じる抵抗値Ｒｐ，Ｒｄに応じた電圧をそれぞれ検出することで、Ｐｏｗｅｒ  Ｂａｎｋ１００と対向デバイスとの接続が確立される。
【００４５】
［Ｃ．実施の形態１］
次に、実施の形態１として、図１（ｃ）に示すような状況において、Ｐｏｗｅｒ  Ｂａｎｋ１００のＰｏｗｅｒ  Ｒｏｌｅを一意にＳＲＣと決めることができるシーケンスを例示する。
【００４６】
より具体的には、実施の形態１に従うデバイスは、初期状態のＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅとしてＴｒｙ．ＳＲＣが設定されており、接続後のＰｏｗｅｒ  ＲｏｌｅをＳＲＣに固定しなければならない状況である場合（所定の切替条件ＳＲが成立した場合）になると、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを動的にＳＲＣ  ｏｎｌｙに切り替える。このようなＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの動的な切り替えによって、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるデバイス同士を接続した場合であっても、予め定められたデバイスをＳＲＣに固定できる。
【００４７】
（ｃ１：Ｐｏｗｅｒ  Ｒｏｌｅの決定例）
図５は、実施の形態１に従うデバイスにおけるＰｏｗｅｒ  Ｒｏｌｅの決定例を示す図である。図５を参照して、初期状態において、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅはＴｒｙ．ＳＲＣであるとする。対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣである場合には、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙに切り替える。これによって、自デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＲＣに一意に定まる。
【００４８】
上述したような、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙに切り替えるための切替条件ＳＲとして、実施の形態１においては、対向デバイスと接続する際のステート遷移パスを利用する。より具体的には、自デバイスがＰｏｗｅｒ  ＲｏｌｅをＳＮＫとして接続した場合に、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであると判断されると、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えて再接続する。なお、対向デバイスとの接続が切断されたことを検出すると、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを再度Ｔｒｙ．ＳＲＣに戻す。
【００４９】
このように、実施の形態１に従うデバイスは、接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが受電側を意味するＳＮＫに決定されると、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する処理を実行する。そして、実施の形態１に従うデバイスは、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えて、対向デバイスとのシーケンスを継続する処理を実行する。
【００５０】
Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを動的に切り替えることで、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであったとしても、接続後の自デバイスのＰｏｗｅｒ  ＲｏｌｅをＳＲＣに固定できる。
【００５１】
（ｃ２：ステートマシン）
図６は、実施の形態１に従うデバイスのステートマシンの一例を示す図である。図６を参照して、実施の形態１に従うデバイスは、Ｔｒｙ．ＳＲＣおよびＳＲＣ  ｏｎｌｙの両方のステートマシンを有することになる。
【００５２】
初期状態において、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅはＴｒｙ．ＳＲＣであるので、Ｔｒｙ．ＳＲＣのステートマシンで動作を開始する。ステートマシンの遷移によって、切替条件ＳＲが成立すると、ＳＲＣ  ｏｎｌｙのステートマシンでの動作に遷移する。
【００５３】
そして、ＳＲＣ  ｏｎｌｙでの動作において、対向デバイスとの接続が切断されたことを検出すると（Ｓｉｎｋ  Ｒｅｍｏｖｅｄ）、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３１）へ遷移するのではなく、Ｔｒｙ．ＳＲＣのステートマシンに戻る。すなわち、デバイスは、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣに戻して、初期状態に復帰する。
【００５４】
なお、図６に示すステートマシンにおいては、ＳＲＣ  ｏｎｌｙからＴｒｙ．ＳＲＣに復帰するにあたって、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）からＵｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）へ直接遷移する例を示すが、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）からＵｎａｔｔａｃｈｅｄＷａｉｔ．ＳＲＣステート（ＳＴ３４）を経てＵｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）へ遷移するようにしてもよい。
【００５５】
（ｃ３：切替条件ＳＲ）
次に、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙに切り替えるための切替条件ＳＲについて説明する。切替条件ＳＲとしては、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）に至るステート遷移パスを用いる。すなわち、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを判断する処理は、自デバイスのＰｏｗｅｒ  ＲｏｌｅがＳｉｎｋに決定されるまでのステート遷移パスに基づいて、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する処理を含む。
【００５６】
Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）は、デバイスのＰｏｗｅｒ  ＲｏｌｅがＳＮＫとなった状態に相当するが、ここで、対向デバイスがＳＲＣ  ｏｎｌｙであれば図５の規定に沿った動作となるが、対向デバイスがＳＲＣ  ｏｎｌｙではなくＴｒｙ．ＳＲＣであれば、図５の規定に沿った動作ではなく、デバイスのＰｏｗｅｒ  ＲｏｌｅをＳＲＣに切り替える必要がある。
【００５７】
すなわち、実施の形態１に従うデバイスのコントローラ１１０は、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙではない場合に、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替える。
【００５８】
より具体的には、自デバイスがＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ遷移した場合には、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅは、ＳＲＣ  ｏｎｌｙまたはＴｒｙ．ＳＲＣである。そこで、自デバイスがＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ遷移した後に、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙおよびＴｒｙ．ＳＲＣのいずれであるかを判断する。
【００５９】
図６に示すように、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙである場合には、Ｔｒｙ．ＳＲＣステート（ＳＴ１４）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）というステート遷移パスをとる。一方、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣである場合には、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）というステート遷移パスをとる。
【００６０】
このようなＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）に至るステート遷移パスの相違に基づいて、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えるべきか否かを示す切替条件ＳＲを定めることができる。すなわち、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）というステート遷移パスが生じた場合に、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙへ切り替える。
【００６１】
つまり、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する処理は、自デバイスのＰｏｗｅｒ  ＲｏｌｅがＳｉｎｋに決定されるまでのステート遷移パスが、Ａｔｔａｃｈｅｄ．ＳＲＣステート、ＴｒｙＷａｉｔ．ＳＮＫステートおよびＡｔｔａｃｈｅｄ．ＳＮＫステートの順序であるか否かを判断する処理を含む。
【００６２】
（ｃ４：シーケンス）
次に、実施の形態１に従うデバイスのシーケンスの一例について説明する。
【００６３】
図７は、実施の形態１に従うデバイスがＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣである対向デバイスと接続された場合のシーケンス（Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替えなし）の一例を示す図である。図８は、実施の形態１に従うデバイスがＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣである対向デバイスと接続された場合のシーケンス（Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替えあり）の一例を示す図である。
【００６４】
図９は、実施の形態１に従うデバイスがＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙである対向デバイスと接続された場合のシーケンスの一例を示す図である。
【００６５】
図１０は、図７〜図９に示す各シーケンスに対応するステートマシンを示す図である。
図７〜図９に示すシーケンスにおいて、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅはＴｒｙ．ＳＲＣである。また、図７〜図９に示す「ＣＣ制御」は、第１通信ライン２１（ＣＣ１）および第２通信ライン２２（ＣＣ２）（図３および図４参照）に現れる抵抗値を示す。
【００６６】
まず、図７に示すシーケンスの例は、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを動的にＳＲＣ  ｏｎｌｙに切り替えることなく、Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣに設定される例を示す。図７を参照して、初期状態において、自デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）であり、対向デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２１）であるとする。なお、自デバイスおよび対向デバイスとも、未接続状態においては、Ｕｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）とＵｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２１）との間を交互に遷移するトグル動作を行う。
【００６７】
自デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＮＫステート（ＳＴ１２）へ遷移する（シーケンスＳＱ１１）。一方、対向デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ２２）へ遷移し（シーケンスＳＱ２１）、さらに、対向デバイスは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）へ遷移する（シーケンスＳＱ２２）。Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）への遷移に伴って、対向デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。
【００６８】
対向デバイスによるＶＢＵＳ  ＯＮを検出することで、自デバイスは、Ｔｒｙ．ＳＲＣステート（ＳＴ１４）へ遷移し（シーケンスＳＱ１２）、さらに、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）へ遷移する（シーケンスＳＱ１３）。そして、自デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。
【００６９】
一方、対向デバイスは、ＶＢＵＳ  ＯＮに対してＳＮＫを検出できないので、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）へ遷移し（シーケンスＳＱ２３）、ここで、自デバイスによるＶＢＵＳ  ＯＮを検出することで、対向デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ遷移する（シーケンスＳＱ２４）。
【００７０】
以上のシーケンスによって、自デバイスと対向デバイスとの接続後においては、自デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＲＣとなり、対向デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＮＫとなる。
【００７１】
次に、図８に示すシーケンスの例は、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを動的にＳＲＣ  ｏｎｌｙに切り替えることで、Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣに設定される例を示す。図８を参照して、初期状態において、自デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２１）であり、対向デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）であるとする。
【００７２】
自デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ２２）へ遷移する（シーケンスＳＱ２１）。さらに、自デバイスは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）へ遷移する（シーケンスＳＱ２２）。Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）への遷移に伴って、自デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。自デバイスは、ＶＢＵＳ  ＯＮに対してＳＮＫを検出できないので、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）へ遷移し（シーケンスＳＱ２３）、ここで、対向デバイスによるＶＢＵＳ  ＯＮを検出することで、自デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ遷移する（シーケンスＳＱ２４）。
【００７３】
一方、対向デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＮＫステート（ＳＴ１２）へ遷移する（シーケンスＳＱ１１）。ここで、自デバイスによるＶＢＵＳ  ＯＮを検出することで、対向デバイスは、Ｔｒｙ．ＳＲＣステート（ＳＴ１４）へ遷移し（シーケンスＳＱ１２）、さらに、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）へ遷移する（シーケンスＳＱ１３）。そして、対向デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。
【００７４】
自デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において、切替条件ＳＲが成立したか否かを判断する。上述したように、切替条件ＳＲは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）というステート遷移パスが生じたか否かである。図８に示す例では、切替条件ＳＲが成立したと判断されて、自デバイスは、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙへ切り替える。そして、自デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３１）へ遷移する（シーケンスＳＱ２５）。ここで、対向デバイスは、ＶＢＵＳ  ＯＮに対してＳＮＫを検出できなくなるので、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）へ遷移する（シーケンスＳＱ１４）。
【００７５】
また、自デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ３２）へ遷移し（シーケンスＳＱ２６）、さらに、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）へ遷移する（シーケンスＳＱ２７）。
【００７６】
Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）への遷移に伴って、自デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。すると、対向デバイスは、自デバイスによるＶＢＵＳ  ＯＮを検出することで、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）からＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ遷移する（シーケンスＳＱ１５）。
【００７７】
以上のシーケンスによって、自デバイスと対向デバイスとの接続後においては、自デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＲＣとなり、対向デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＮＫとなる。
【００７８】
次に、図９に示すシーケンスの例は、実施の形態１に従うデバイスがＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙのデバイスと接続された場合であっても、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に沿ったシーケンスが実行される例を示す。
【００７９】
図９を参照して、初期状態において、自デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）であり、対向デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３１）（ＳＲＣ  ｏｎｌｙステートマシン）であるとする。
【００８０】
自デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＮＫステート（ＳＴ１２）へ遷移する（シーケンスＳＱ１１）。そして、対向デバイスによるＶＢＵＳ  ＯＮを検出することで、自デバイスは、Ｔｒｙ．ＳＲＣステート（ＳＴ１４）へ遷移し（シーケンスＳＱ１２）、さらに、自デバイスは、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）へ遷移する（シーケンスＳＱ１６）。ここで、対向デバイスによるＶＢＵＳ  ＯＮを検出することで、自デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ遷移する（シーケンスＳＱ１５）。
【００８１】
自デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において、切替条件ＳＲが成立したか否かを判断する。上述したように、切替条件ＳＲは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）というステート遷移パスが生じたか否かである。図９に示す例では、切替条件ＳＲが成立していないと判断されて、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）が維持される。
【００８２】
一方、対向デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ３２）へ遷移し（シーケンスＳＱ２６）、さらに、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）へ遷移する（シーケンスＳＱ２７）。
【００８３】
Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）への遷移に伴って、対向デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。この時点において、対向デバイスは、ＶＢＵＳ  ＯＮに対してＳＮＫを検出できないので、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３１）へ戻る（シーケンスＳＱ２９）。
【００８４】
そして、対向デバイスは、先に実行したシーケンスと同様に、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ３２）へ遷移し（シーケンスＳＱ２６）、さらに、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）へ遷移する（シーケンスＳＱ２７）。Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）への遷移に伴って、対向デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。この時点において、自デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＮＫに決定されているので、対向デバイスが接続先のＳＮＫを検出することで、最終的に、自デバイスと対向デバイスとの接続後においては、自デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＮＫとなり、対向デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＲＣとなる。
【００８５】
（ｃ５：小括）
実施の形態１に従うデバイスによれば、自デバイスおよび接続先の対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがいずれもＤＲＰの一種であるＴｒｙ．ＳＲＣであっても、自デバイスのＰｏｗｅｒ  ＲｏｌｅをＳＲＣに確実に決定できる。これによって、Ｐｏｗｅｒ  Ｒｏｌｅに関連付けて実行される各種処理についても確実な実行を保証できる。
【００８６】
［Ｄ．実施の形態２］
上述の実施の形態１においては、実施の形態１に従うデバイスとＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うデバイスとを接続した場合の処理について説明した。実施の形態２においては、実施の形態１に従うデバイス同士を接続した場合の改良について説明する。
【００８７】
図１１は、実施の形態１に従うデバイス同士が接続された場合のシーケンスの一例を示す図である。図１１には、実施の形態１に従うデバイス同士を接続して所定のシーケンスが実行された後の状態を示す。
【００８８】
図１１を参照して、例えば、対向デバイスは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）であるとする。一方、自デバイスは、シーケンスに従って、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）遷移したとする。すると、自デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において、切替条件ＳＲが成立したか否かを判断する。
【００８９】
図１１に示す例では、切替条件ＳＲが成立したと判断されて、自デバイスは、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙへ切り替える。そして、自デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３１）へ遷移する。そして、自デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ３２）へ遷移し、さらに、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）へ遷移する。
【００９０】
Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）への遷移に伴って、自デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。
【００９１】
一方、対向デバイスは、ＶＢＵＳ  ＯＮに対してＳＮＫを検出できないので、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）へ遷移し、さらに、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ遷移する。すると、対向デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において、切替条件ＳＲが成立したか否かを判断する。
【００９２】
図１１に示す例では、切替条件ＳＲが成立したと判断されて、対向デバイスは、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙへ切り替える。そして、対向デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３１）へ遷移する。すると、自デバイスは、ＶＢＵＳ  ＯＮに対してＳＮＫを検出できなくなるので、対向デバイスとの接続が切断されたと検出し（Ｓｉｎｋ  Ｒｅｍｏｖｅｄ）、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙからＴｒｙ．ＳＲＣへ切り替え、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２１）へ遷移する。
【００９３】
このように、実施の形態１に従うデバイス同士を接続した場合には、両デバイスにおいて、切替条件ＳＲが成立したと判断されるので、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替えが両デバイスでそれぞれ生じることになり、特定のステートに落ち着くことがない。すなわち、実施の形態１に従うデバイス同士を接続した場合には、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであると互いのデバイスがそれぞれ判断し、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替える。すると、デバイス同士がいずれもＳＲＣとなり、各デバイスは対向デバイスとの接続が切断されたと検出し（Ｓｉｎｋ  Ｒｅｍｏｖｅｄ）、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣに戻して、再接続のシーケンスを実行するという処理のループに陥る可能性もある。
【００９４】
実施の形態２においては、上述したような課題が生じないデバイスについて説明する。
図１２は、実施の形態２に従うデバイスのステートマシンの一例を示す図である。図１２を参照して、実施の形態２に従うデバイスのステートマシンは、図１０に示す実施の形態１に従うデバイスのステートマシンと比較して、新たに、ＣＣ．Ｏｐｅｎステート（ＳＴ３５）が追加されている。
【００９５】
ＣＣ．Ｏｐｅｎステート（ＳＴ３５）は、第１通信ライン（ＣＣ１）２１および第２通信ライン（ＣＣ２）２２をオープンにするステートを意味する。すなわち、デバイスがＣＣ．Ｏｐｅｎステート（ＳＴ３５）へ遷移すると、第１通信ライン（ＣＣ１）２１および第２通信ライン（ＣＣ２）２２に接続され得る抵抗値Ｒｐおよび抵抗値Ｒｄの両方を電気的に切断する。これによって、対向デバイスからは、対象のデバイスとの接続が切断されたように見える。
【００９６】
このように、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替える際に、ＣＣ．Ｏｐｅｎステート（ＳＴ３５）を経由することで、対向デバイスは、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＲＣ  ｏｎｌｙであると判断する。すなわち、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙへ切り替える処理は、対向デバイスと電気的に接続された通信ライン（第１通信ライン（ＣＣ１）２１および第２通信ライン（ＣＣ２）２２）をオープンする処理を含む。
【００９７】
これによって、互いのデバイスが対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣであるとそれぞれ判断することを回避できる。すなわち、実施の形態１に従うデバイス同士がＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替えを繰り返すことを防止できる。
【００９８】
図１３は、実施の形態２に従うデバイスと実施の形態１に従うデバイスとが接続された場合のシーケンスの一例を示す図である。
【００９９】
図１２および図１３を参照して、例えば、実施の形態１に従うデバイスである対向デバイスは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）であるとする。一方、実施の形態２に従うデバイスである自デバイスは、シーケンスに従って、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）遷移したとする。すると、自デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において、切替条件ＳＲが成立したか否かを判断する。
【０１００】
図１３に示す例では、切替条件ＳＲが成立したと判断されて、自デバイスは、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＲＣからＳＲＣ  ｏｎｌｙへ切り替える。そして、自デバイスは、ＣＣ．Ｏｐｅｎステート（ＳＴ３５）へ遷移する（シーケンスＳＱ２５Ａ）。その後、エラー復帰時間ｔＥｒｒｏｒＲｅｃｏｖｅｒｙの経過後に、自デバイスは、Ｕｎａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３１）へ遷移する（シーケンスＳＱ２５Ｂ）。
【０１０１】
そして、自デバイスは、シーケンスに従って、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ３２）へ遷移し、さらに、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）へ遷移する。
【０１０２】
Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ３３）への遷移に伴って、自デバイスは、電力ライン（ＶＢＵＳ）２３に所定電圧を印加する（ＶＢＵＳ  ＯＮ）。
【０１０３】
一方、対向デバイスは、ＶＢＵＳ  ＯＮに対してＳＮＫを検出できないので、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）へ遷移する（シーケンスＳＱ２３）。ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）において、対向デバイスは、ＳＲＣを検出できない（Ｓｏｕｒｃｅ  ｎｏｔ  Ｄｅｔｅｃｔｅｄ）ので、Ｕｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）へ遷移する（シーケンスＳＱ１７）。
【０１０４】
そして、対向デバイスは、シーケンスに従って、Ｕｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１１）からＡｔｔａｃｈＷａｉｔ．ＳＮＫステート（ＳＴ１２）へ遷移する（シーケンスＳＱ１１）。続いて、自デバイスによるＶＢＵＳ  ＯＮを検出することで、対向デバイスは、Ｔｒｙ．ＳＲＣステート（ＳＴ１４）へ遷移し（シーケンスＳＱ１２）、さらに、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ順次遷移する（シーケンスＳＱ１６およびＳＱ１５）。
【０１０５】
対向デバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において、切替条件ＳＲが成立したか否かを判断する。上述したように、切替条件ＳＲは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）というステート遷移パスが生じたか否かである。図１３に示す例では、切替条件ＳＲが成立していないと判断されて、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）が維持される。
【０１０６】
最終的に、自デバイスと対向デバイスとの接続後においては、自デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＲＣとなり、対向デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＮＫとなる。
【０１０７】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１と同様であるので、詳細な説明は繰り返さない。
【０１０８】
実施の形態２によれば、実施の形態１に従うデバイス同士が接続された場合であっても、Ｐｏｗｅｒ  Ｒｏｌｅを決定できず処理が繰り返されるといった事態を回避できる。
【０１０９】
［Ｅ．実施の形態３］
上述の実施の形態１および２においては、切替条件ＳＲとして、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）に至るステート遷移パスが予め定められたステート遷移パスと一致するか否かという条件を用いた。
【０１１０】
ところで、上述の非特許文献２などに規定されるＵＳＢ  Ｔｙｐｅ−Ｃ規格に適合するか否かのテスト（Ｔｙｐｅ−Ｃ  Ｃｏｍｐｌｉａｎｃｅ  Ｔｅｓｔ）においては、テスト対象機器（自デバイスのポート）がＵＳＢ  Ｔｙｐｅ−Ｃ規格で定義されたステートに正しく遷移するか否かが判断される。
【０１１１】
実施の形態１および２に従うデバイスは、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において切替条件ＳＲが成立したと判断されると、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを動的にＳＲＣ  ｏｎｌｙに切り替えるため、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）に留まらず、別のステートへ遷移することになる。その結果、「Ｔｅｓｔ  Ｆａｉｌ」と判定される可能性がある。
【０１１２】
上述の実施の形態１および２に従うデバイスがＴｙｐｅ−Ｃ  Ｃｏｍｐｌｉａｎｃｅ  Ｔｅｓｔにおいて「Ｔｅｓｔ  Ｐａｓｓ」との判定結果を得るために、切替条件ＳＲに「予め定められた時間だけ待機する」という条件を追加してもよい。
【０１１３】
図１４は、実施の形態３に従うデバイスにおいて採用される切替条件ＳＲを説明するための図である。図１４を参照して、切替条件ＳＲとしては、まず、予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ到達したか否かが判断される（ステップＳ２）。ここで、予め定められたステート遷移パスは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）の順でのステート遷移である。
【０１１４】
予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ到達していなければ（ステップＳ２においてＮＯ）、切替条件ＳＲは不成立と決定される。
【０１１５】
これに対して、予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ到達していれば（ステップＳ２においてＹＥＳ）、予め定められた時間だけ待機（ステップＳ４）した後に、切替条件ＳＲは成立と決定される。
【０１１６】
このように、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する処理は、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであると判断された後、予め定められた時間だけ待機する処理を含む。
【０１１７】
実施の形態３に従うデバイスによれば、図１４に示すような切替条件ＳＲを採用することで、実施の形態１および２に示すような機能を実装したデバイスであっても、Ｔｙｐｅ−Ｃ  Ｃｏｍｐｌｉａｎｃｅ  Ｔｅｓｔにおいて「Ｔｅｓｔ  Ｐａｓｓ」との判定結果を得ることができる。
【０１１８】
なお、非特許文献３などに規定されるＵＳＢ  Ｐｏｗｅｒ  Ｄｅｌｉｖｅｒｙ（以下、単に「ＰＤ」とも称す。）を対象のデバイスがサポートするか否かによらず、上述の実施の形態３に従う切替条件ＳＲを適用できる。
【０１１９】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１と同様であるので、詳細な説明は繰り返さない。
【０１２０】
［Ｆ．実施の形態４］
非特許文献３などに規定されるＵＳＢ  Ｐｏｗｅｒ  Ｄｅｌｉｖｅｒｙ（ＰＤ）においては、デバイス間のＰｏｗｅｒ  Ｒｏｌｅを切り替えるために、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令が用意されている。接続される両デバイスがいずれもＰＤをサポートしている場合には、通常動作として、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令を用いたＰｏｗｅｒ  Ｒｏｌｅの決定あるいは切り替え処理が実行される。
【０１２１】
すなわち、ＰＤをサポートしているデバイス間では、上述の実施の形態１および２に従うＵＳＢ  Ｔｙｐｅ−Ｃ規格のレベルで実行されるＰｏｗｅｒ  Ｒｏｌｅの決定処理ではなく、ＰＤのレベルで実行されるＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令を用いたＰｏｗｅｒ  Ｒｏｌｅの決定処理が優先されることが好ましい。
【０１２２】
このようなＰＤをサポートするデバイス間でのＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令の遣り取りを阻害しないようにするために、Ａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）において判断される切替条件ＳＲに「対向デバイスがＰＤをサポートしていない」という条件を追加してもよい。
【０１２３】
図１５は、実施の形態４に従うデバイスにおいて採用される切替条件ＳＲを説明するための図である。図１５を参照して、切替条件ＳＲとしては、まず、予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ到達したか否かが判断される（ステップＳ２）。ここで、予め定められたステート遷移パスは、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ２３）、ＴｒｙＷａｉｔ．ＳＮＫステート（ＳＴ１５）およびＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）の順でのステート遷移である。
【０１２４】
予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ到達していなければ（ステップＳ２においてＮＯ）、切替条件ＳＲは不成立と決定される。
【０１２５】
これに対して、予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ１３）へ到達していれば（ステップＳ２においてＹＥＳ）、自デバイスがＰＤをサポートしているか否かが判断される（ステップＳ６）。自デバイスがＰＤをサポートしていなければ（ステップＳ６においてＮＯ）、切替条件ＳＲは成立と決定される。すなわち、自デバイスはＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令の遣り取りができないので、実施の形態１および２に示すようなＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの動的な切り替えを実行しても問題は生じないと判断できる。
【０１２６】
自デバイスがＰＤをサポートしていれば（ステップＳ６においてＹＥＳ）、自デバイスは、対向デバイスに対してＰＤメッセージを送信する（ステップＳ８）。送信されるＰＤメッセージは、ＰＤ規格において規定されるＰｏｌｉｃｙ  Ｅｎｇｉｎｅのステートの問い合わせメッセージを用いることができる。そして、自デバイスは、送信したＰＤメッセージに対する応答を対向デバイスから受信したか否かを判断する（ステップＳ１０）。
【０１２７】
ＰＤメッセージに対する応答を受信しなければ（ステップＳ１０においてＮＯ）、切替条件ＳＲは成立と決定される。すなわち、対向デバイスがＰＤをサポートしていないと判断できるので、実施の形態１および２に示すようなＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの動的な切り替えを実行しても問題は生じないと判断できる。
【０１２８】
これに対して、ＰＤメッセージに対する応答を受信すれば（ステップＳ１０においてＹＥＳ）、切替条件ＳＲは不成立と決定される。すなわち、対向デバイスもＰＤをサポートしていると判断できるので、実施の形態１および２に示すようなＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの動的な切り替えは実行されない。
【０１２９】
このように、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する処理は、対向デバイスがＵＳＢ  Ｐｏｗｅｒ  Ｄｅｌｉｖｅｒｙをサポートしているか否かを判断する処理を含む。そして、実施の形態４に従うデバイスのコントローラ１１０は、対向デバイスがＵＳＢ  Ｐｏｗｅｒ  Ｄｅｌｉｖｅｒｙをサポートしていない場合に、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替える処理を実行する。
【０１３０】
実施の形態４に従うデバイスによれば、図１５に示すような切替条件ＳＲを採用することで、実施の形態１および２に示すような機能を実装したデバイスがＰＤをサポートする場合であっても、Ｔｙｐｅ−Ｃ  Ｃｏｍｐｌｉａｎｃｅ  Ｔｅｓｔにおいて「Ｔｅｓｔ  Ｐａｓｓ」との判定結果を得ることができる。
【０１３１】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１と同様であるので、詳細な説明は繰り返さない。
【０１３２】
［Ｇ．実施の形態４の変形例］
上述の実施の形態４においては、ＰＤにおいて規定されているＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令を用いるＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの動的な切り替えについて説明した。しかしながら、対向デバイスのＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐポリシーに依存して、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令を用いることができない場合がある。
【０１３３】
すなわち、Ｐｏｗｅｒ  Ｒｏｌｅの動的な切り替えを指示する、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔに対して、対向デバイスがＡｃｃｅｐｔを応答する場合には、Ｐｏｗｅｒ  Ｒｏｌｅを切り替えることができるので、動作に問題は生じない。これに対して、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔに対して、対向デバイスがＲｅｊｅｃｔを応答する場合には、自デバイスは、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令によるＰｏｗｅｒ  Ｒｏｌｅの切り替えができない。
【０１３４】
なお、ＰＤにおいては、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔ（ＰＲ＿Ｓｗａｐ  Ｍｅｓｓａｇｅ）を受信したデバイスは、当該デバイスのポリシーに従って、ＡｃｃｅｐｔまたはＲｅｊｅｃｔを応答する。例えば、現在のＰｏｗｅｒ  Ｒｏｌｅが所望するＲｏｌｅではない場合にＰＲ＿Ｓｗａｐ  Ｍｅｓｓａｇｅを受信すると、当該デバイスはＡｃｃｅｐｔを応答する。これに対して、現在のＰｏｗｅｒ  Ｒｏｌｅが所望するＲｏｌｅである場合にＰＲ＿Ｓｗａｐ  Ｍｅｓｓａｇｅを受信すると、当該デバイスはＲｅｊｅｃｔを応答する。
【０１３５】
このような対向デバイスのＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐポリシーに依存せず、予定されたＰｏｗｅｒ  Ｒｏｌｅを一意に決定できるように、対向デバイスからの応答に基づいて、切替条件ＳＲの成立または不成立を判断するようにしてもよい。より具体的には、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔに対して、対向デバイスからＲｅｊｅｃｔが応答された場合には、切替条件ＳＲが成立したと判断し、実施の形態１および２に従って、ＵＳＢ  Ｔｙｐｅ−Ｃ規格レベルで、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替えるようにしてもよい。
【０１３６】
図１６は、実施の形態４の変形例に従うデバイスにおいて採用される切替条件ＳＲを説明するための図である。図１６に示す切替条件ＳＲは、図１５に示す切替条件ＳＲに対してさらに処理を追加したものである。そのため、図１５に示す切替条件ＳＲと同一のステップについては詳細な説明は繰り返さない。
【０１３７】
図１６を参照して、ＰＤメッセージに対する応答を受信すれば（ステップＳ１０においてＹＥＳ）、自デバイスは、対向デバイスに対して、Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫに切り替えることを指示するＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔを送信する（ステップＳ１２）。
【０１３８】
そして、自デバイスは、送信したＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔに対して、対向デバイスがＲｅｊｅｃｔを応答したか否かを判断する（ステップＳ１４）。対向デバイスがＡｃｃｅｐｔを応答すれば（ステップＳ１４においてＮＯ）、切替条件ＳＲは不成立と決定される。
【０１３９】
これに対して、対向デバイスがＲｅｊｅｃｔを応答すれば（ステップＳ１４においてＹＥＳ）、切替条件ＳＲは成立と決定される。すなわち、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令ではなく、ＵＳＢ  Ｔｙｐｅ−Ｃ規格レベルでのＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替え処理が実行されることになる。
【０１４０】
このように、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＲＣであるか否かを判断する処理は、対向デバイスに対してＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔを送信する処理と、対向デバイスからＲｅｊｅｃｔを受信するか否かを判断する処理とを含む。そして、実施の形態４の変形例に従うデバイスのコントローラ１１０は、対向デバイスからＲｅｊｅｃｔを受信すると、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＲＣ  ｏｎｌｙに切り替える処理を実行する。
【０１４１】
上述したように、接続される両デバイスがいずれもＰＤをサポートしている場合には、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令を用いてＰｏｗｅｒ  Ｒｏｌｅを切り替えることができる。しかしながら、対向デバイスのポリシーに依存して、Ｐｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ  Ｒｅｑｕｅｓｔに対して、対向デバイスがＲｅｊｅｃｔを応答することがあり、このような場合には所望のＰｏｗｅｒ  Ｒｏｌｅを設定できないことになる。実施の形態４の変形例においては、このような場合でも、ＵＳＢ  Ｔｙｐｅ−Ｃ規格レベルで、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを切り替えることで、強制的に所望のＰｏｗｅｒ  Ｒｏｌｅに設定できる。
【０１４２】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１および４と同様であるので、詳細な説明は繰り返さない。
【０１４３】
［Ｈ．実施の形態５］
次に、実施の形態５として、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであるデバイスのＰｏｗｅｒ  Ｒｏｌｅを一意にＳＮＫと決めることができるシーケンスを例示する。
【０１４４】
より具体的には、実施の形態５に従うデバイスは、初期状態のＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅとしてＴｒｙ．ＳＮＫが設定されており、接続後のＰｏｗｅｒ  ＲｏｌｅをＳＮＫに固定しなければならない状況である場合（所定の切替条件ＳＮが成立した場合）になると、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを動的にＳＮＫ  ｏｎｌｙに切り替える。このようなＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの動的な切り替えによって、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであるデバイス同士を接続した場合であっても、予め定められたデバイスをＳＮＫに固定できる。
【０１４５】
（ｈ１：Ｐｏｗｅｒ  Ｒｏｌｅの決定例）
図１７は、実施の形態５に従うデバイスにおけるＰｏｗｅｒ  Ｒｏｌｅの決定例を示す図である。図１７を参照して、初期状態において、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅはＴｒｙ．ＳＮＫであるとする。対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫである場合には、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＮＫからＳＮＫ  ｏｎｌｙに切り替える。これによって、自デバイスのＰｏｗｅｒ  ＲｏｌｅはＳＮＫに一意に定まる。
【０１４６】
上述したような、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＮＫからＳＮＫ  ｏｎｌｙに切り替えるための切替条件ＳＮとして、実施の形態５においては、対向デバイスと接続する際のステート遷移パスを利用する。より具体的には、自デバイスがＰｏｗｅｒ  ＲｏｌｅをＳＲＣとして接続した場合に、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであると判断されると、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫ  ｏｎｌｙに切り替えて再接続する。なお、対向デバイスとの接続が切断されたことを検出すると、Ｐｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを再度Ｔｒｙ．ＳＮＫに戻す。
【０１４７】
このように、実施の形態５に従うデバイスは、接続先のデバイスである対向デバイスとのシーケンスに従って、自デバイスのＰｏｗｅｒ  Ｒｏｌｅが給電側を意味するＳＲＣに決定されると、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであるか否かを判断する処理を実行する。そして、実施の形態５に従うデバイスは、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであれば、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫ  ｏｎｌｙに切り替えて、対向デバイスとのシーケンスを継続する処理を実行する。
【０１４８】
このようなＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを動的に切り替えることで、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫであったとしても、接続後の自デバイスのＰｏｗｅｒ  ＲｏｌｅをＳＮＫに固定できる。
【０１４９】
（ｈ２：ステートマシン）
図１８は、実施の形態５に従うデバイスのステートマシンの一例を示す図である。図１８を参照して、実施の形態５に従うデバイスは、Ｔｒｙ．ＳＮＫおよびＳＮＫ  ｏｎｌｙの両方のステートマシンを有することになる。
【０１５０】
初期状態において、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅはＴｒｙ．ＳＲＣであるので、Ｔｒｙ．ＳＲＣのステートマシンで動作を開始する。ステートマシンの遷移によって、切替条件ＳＮが成立すると、ＳＮＫ  ｏｎｌｙのステートマシンでの動作に遷移する。
【０１５１】
そして、ＳＮＫ  ｏｎｌｙでの動作において、対向デバイスとの接続が切断されたことを検出すると（ＶＢＵＳ  Ｒｅｍｏｖｅｄ）、Ｕｎａｔｔａｃｈｅｄ．ＳＮＫステート（ＳＴ５１）へ遷移するのではなく、Ｔｒｙ．ＳＮＫのステートマシンに戻る。すなわち、デバイスは、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＮＫに戻して、初期状態に復帰する。
【０１５２】
（ｈ３：切替条件ＳＮ）
次に、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＮＫからＳＮＫ  ｏｎｌｙに切り替えるための切替条件ＳＮについて説明する。切替条件ＳＮとしては、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）に至るステート遷移パスを用いる。
【０１５３】
Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）は、デバイスのＰｏｗｅｒ  ＲｏｌｅがＳＲＣとなった状態に相当するが、ここで、対向デバイスがＳＮＫ  ｏｎｌｙであれば図１７の規定に沿った動作となるが、対向デバイスがＳＮＫ  ｏｎｌｙではなくＴｒｙ．ＳＮＫであれば、図１７の規定に沿った動作ではなく、デバイスのＰｏｗｅｒ  ＲｏｌｅをＳＮＫに切り替える必要がある。
【０１５４】
すなわち、自デバイスがＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へ遷移した場合には、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅは、ＳＮＫ  ｏｎｌｙまたはＴｒｙ．ＳＮＫである。そこで、自デバイスがＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へ遷移した後に、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＮＫ  ｏｎｌｙおよびＴｒｙ．ＳＮＫのいずれであるかを判断する。
【０１５５】
図１７に示すステートマシンにおいては、自デバイスがＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へのステート遷移パスは、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＮＫ  ｏｎｌｙおよびＴｒｙ．ＳＮＫのいずれであっても同一である。より具体的には、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へのステート遷移パスは、いずれも、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ４７）、Ｔｒｙ．ＳＮＫステート（ＳＴ４４）、ＴｒｙＷａｉｔＳＲＣステート（ＳＴ４５）およびＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）となる。
【０１５６】
そのため、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＴｒｙ．ＳＮＫのステートマシンでは、対向デバイスをＳＮＫ  ｏｎｌｙおよびＴｒｙ．ＳＮＫのいずれであるかを判断することはできない。そこで、実施の形態５に従うデバイスは、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＴｒｙ．ＳＮＫのステートマシンを少し変更したＴｒｙ．ＳＮＫのステートマシンを採用する。
【０１５７】
図１９は、実施の形態５に従うデバイスのステートマシンの要部を示す図である。図１９を参照して、実施の形態５において採用されるＴｒｙ．ＳＮＫのステートマシンは、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＴｒｙ．ＳＮＫのステートマシンにおけるＴｒｙ．ＳＮＫステート（ＳＴ４４）に代えて、２つのステート（Ｔｒｙ．ＳＮＫ．１ステート（ＳＴ４４Ａ）およびＴｒｙ．ＳＮＫ．２ステート（ＳＴ４４Ｂ））を有している。
【０１５８】
Ｔｒｙ．ＳＮＫ．１ステート（ＳＴ４４Ａ）は、対向デバイスのＰｏｗｅｒ  ＲｏｌｅがＳＲＣになることを待つ（Ｓｏｕｒｃｅ検出待ち）ステートである。一方、Ｔｒｙ．ＳＮＫ．２ステート（ＳＴ４４Ｂ）は、対向デバイスによるＶＢＵＳ  ＯＮを待つ（ＶＢＵＳ検出待ち）ステートである。
【０１５９】
このように、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＴｒｙ．ＳＮＫのステートマシンにおけるＴｒｙ．ＳＮＫステート（ＳＴ４４）を２つのステートに分解することで、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＮＫ  ｏｎｌｙおよびＴｒｙ．ＳＮＫのいずれかに応じて、ステート遷移パスが異なることになる。切替条件ＳＮとしては、このようなステート遷移パスの相違に基づいて、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅを判断する。
【０１６０】
図１９を参照して、より具体的には、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＮＫ  ｏｎｌｙである場合には、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ４７）からＴｒｙ．ＳＮＫ．１ステート（ＳＴ４４Ａ）へ遷移（シーケンスＳＱ４１）した後、ＴｒｙＷａｉｔＳＲＣステート（ＳＴ４５）へ直接遷移し（シーケンスＳＱ４２）、最終的にＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へ到達する（シーケンスＳＱ４３）。
【０１６１】
これに対して、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫである場合には、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ４７）からＴｒｙ．ＳＮＫ．１ステート（ＳＴ４４Ａ）へ遷移（シーケンスＳＱ４１）した後、Ｓｏｕｒｃｅを検出できるので、Ｔｒｙ．ＳＮＫ．２ステート（ＳＴ４４Ｂ）へ遷移する（シーケンスＳＱ４４）。そして、ＴｒｙＷａｉｔＳＲＣステート（ＳＴ４５）へ直接遷移し（シーケンスＳＱ４５）、最終的にＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へ到達する（シーケンスＳＱ４６）。
【０１６２】
このように、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＮＫ  ｏｎｌｙである場合には、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ４７）、Ｔｒｙ．ＳＮＫ．１ステート（ＳＴ４４Ａ）、ＴｒｙＷａｉｔＳＲＣステート（ＳＴ４５）、およびＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）というステート遷移パスをとる。一方、対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＴｒｙ．ＳＮＫである場合には、ＡｔｔａｃｈＷａｉｔ．ＳＲＣステート（ＳＴ４７）、Ｔｒｙ．ＳＮＫ．１ステート（ＳＴ４４Ａ）、Ｔｒｙ．ＳＮＫ．２ステート（ＳＴ４４Ｂ）、ＴｒｙＷａｉｔＳＲＣステート（ＳＴ４５）、およびＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）というステート遷移パスをとる。
【０１６３】
このようなＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）に至るステート遷移パスの相違に基づいて、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫ  ｏｎｌｙに切り替えるべきか否かを示す切替条件ＳＮを定めることができる。
【０１６４】
図２０は、実施の形態５に従うデバイスにおいて採用される切替条件ＳＮを説明するための図である。図２０を参照して、切替条件ＳＮとしては、まず、予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へ到達したか否かが判断される。予め定められたステート遷移パスは、Ｔｒｙ．ＳＮＫ．１ステート（ＳＴ４４Ａ）、Ｔｒｙ．ＳＮＫ．２ステート（ＳＴ４４Ｂ）、ＴｒｙＷａｉｔＳＲＣステート（ＳＴ４５）、およびＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）というステート遷移パスである。
【０１６５】
予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へ到達していれば、切替条件ＳＮは成立と決定される。切替条件ＳＮが成立と決定されると、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅはＳＮＫ  ｏｎｌｙへ切り替えられる。
【０１６６】
（ｈ４：小括）
実施の形態５に従うデバイスによれば、自デバイスおよび接続先の対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがいずれもＤＲＰの一種であるＴｒｙ．ＳＲＣであっても、自デバイスのＰｏｗｅｒ  ＲｏｌｅをＳＲＣに確実に決定できる。これによって、Ｐｏｗｅｒ  Ｒｏｌｅに関連付けて実行される各種処理についても確実な実行を保証できる。
【０１６７】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１と同様であるので、詳細な説明は繰り返さない。
【０１６８】
［Ｉ．実施の形態６］
上述の実施の形態２において説明したような構成を実施の形態５に対しても適用可能である。すなわち、実施の形態５に従うデバイス同士を接続した場合に、最終的なＰｏｗｅｒ  Ｒｏｌｅが決定しない可能性があり、この場合には、Ｐｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＳＮＫ  ｏｎｌｙへ切り替える際に、ＣＣ．Ｏｐｅｎステートを経由するようにしてもよい。これにより、対向デバイスは、自デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅがＳＮＫ  ｏｎｌｙであると判断する。これによって、互いのデバイスが対向デバイスのＰｏｒｔ  Ｐｏｗｅｒ  ＲｏｌｅをＴｒｙ．ＳＮＫであるとそれぞれ判断することを回避できる。すなわち、実施の形態５に従うデバイス同士がＰｏｒｔ  Ｐｏｗｅｒ  Ｒｏｌｅの切り替えを繰り返すことを防止できる。
【０１６９】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１および５と同様であるので、詳細な説明は繰り返さない。
【０１７０】
［Ｊ．実施の形態７］
上述の実施の形態３において説明したような構成を実施の形態５に対しても適用可能である。すなわち、上述の非特許文献２などに規定されるＵＳＢ  Ｔｙｐｅ−Ｃ規格に適合するか否かのテスト（Ｔｙｐｅ−Ｃ  Ｃｏｍｐｌｉａｎｃｅ  Ｔｅｓｔ）において「Ｔｅｓｔ  Ｐａｓｓ」との判定結果を確実に得ることができるように、切替条件ＳＮに「予め定められた時間だけ待機する」という条件を追加してもよい。
【０１７１】
より具体的には、図２０に示すように、予め定められたステート遷移パスでＡｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）へ到達していれば、予め定められた時間だけ待機した後に、切替条件ＳＮは成立と決定されるようにしてもよい。
【０１７２】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１および５と同様であるので、詳細な説明は繰り返さない。
【０１７３】
［Ｋ．実施の形態８］
上述の実施の形態４において説明したような構成を実施の形態５に対しても適用可能である。すなわち、上述の非特許文献３などに規定されるＵＳＢ  Ｐｏｗｅｒ  Ｄｅｌｉｖｅｒｙ（ＰＤ）において用意されているＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐ命令の決定処理が優先するために、Ａｔｔａｃｈｅｄ．ＳＲＣステート（ＳＴ４８）において判断される切替条件ＳＮに「対向デバイスがＰＤをサポートしていない」という条件を追加してもよい。切替条件ＳＮの具体的な処理手順は、図１５に示す切替条件ＳＲと同様であるので、詳細な説明は繰り返さない。
【０１７４】
実施の形態８に従う切替条件ＳＲを採用することで、実施の形態５および６に示すような機能を実装したデバイスがＰＤをサポートする場合であっても、Ｔｙｐｅ−Ｃ  Ｃｏｍｐｌｉａｎｃｅ  Ｔｅｓｔにおいて「Ｔｅｓｔ  Ｐａｓｓ」との判定結果を得ることができる。
【０１７５】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１および５と同様であるので、詳細な説明は繰り返さない。
【０１７６】
［Ｌ．実施の形態８の変形例］
上述した実施の形態８に従うデバイスにおいて、対向デバイスのＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐポリシーに依存せず、予定されたＰｏｗｅｒ  Ｒｏｌｅを一意に決定できるように、対向デバイスからの応答に基づいて、切替条件ＳＮの成立または不成立を判断するようにしてもよい。切替条件ＳＮの具体的な処理手順は、図１６に示す切替条件ＳＮと同様であるので、詳細な説明は繰り返さない。
【０１７７】
実施の形態８の変形例に従う切替条件ＳＲを採用することで、実施の形態５および６に示すような機能を実装したデバイスがＰＤをサポートする場合において、対向デバイスのＰｏｗｅｒ  Ｒｏｌｅ  Ｓｗａｐポリシーに依存せず、予定されたＰｏｗｅｒ  Ｒｏｌｅを一意に決定できる。
【０１７８】
上述した処理および構成を除いた点は、いずれも上述の実施の形態１および５と同様であるので、詳細な説明は繰り返さない。
【０１７９】
［Ｍ．実施の形態９］
上述の実施の形態１〜４および変形例については、互いに適宜組合せることもできるし、任意の変形を加えることもできる。同様に、上述の実施の形態５〜８および変形例については、互いに適宜組合せることもできるし、任意の変形を加えることもできる。
【０１８０】
［Ｎ．実施の形態１０］
上述の実施の形態１〜８および変形例においては、プロセッサ１１２がファームウェア１１４を実行することで、上述したようなコントローラ１１０に係る処理の実行および機能の提供を実現する。
【０１８１】
プロセッサ１１２が実行するファームウェア１１４は、制御プログラムであり、外部からインストールまたは更新が可能になっている。ファームウェア１１４は、例えば、非一時的（non-transitory）な記録媒体に格納された状態で流通し、コントローラ１１０内の記憶領域にインストールまたは更新（アップデート）されてもよい。非一時的な記録媒体としては、光学ディスクなどの光学記録媒体、フラッシュメモリなどの半導体記録媒体、ハードディスクまたはストレージテープなどの磁気記録媒体、ＭＯ（Magneto-Optical disk）などの光磁気記録媒体を用いてもよい。すなわち、本実施の形態は、上述したような処理および機能を実現するためのコンピュータ読取可能な制御プログラム、および、当該制御プログラムを格納した記録媒体も含み得る。
【０１８２】
別の形態として、インターネットまたはイントラネットを介してサーバ装置からファームウェア１１４をダウンロードするようにしてもよい。
【０１８３】
当業者であれば、本実施の形態が実装される時代に応じた技術を適宜用いて、本実施の形態に従うコントローラおよびコントローラを含むデバイスを設計するであろう。
【０１８４】
［Ｏ．実施の形態１１］
上述の実施の形態１〜８および変形例においては、プロセッサ１１２がファームウェア１１４を実行することで、上述したようなコントローラ１１０に係る処理の実行および機能の提供を実現する。但し、このようなソフトウェア実装ではなく、一部または全部をハードウェア実装としてもよい。ハードウェア実装とする場合には、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）といったハードワイヤードなデバイスを採用してもよい。
【０１８５】
当業者であれば、本実施の形態が実装される時代に応じた技術を適宜用いて、本実施の形態に従うコントローラおよびコントローラを含むデバイスを設計するであろう。
【０１８６】
［Ｐ．まとめ］
本実施の形態によれば、ＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＴｒｙ．ＳＲＣであるデバイスまたはＵＳＢ  Ｔｙｐｅ−Ｃ規格に従うＴｒｙ．ＳＮＫであるデバイス同士を接続した場合に、ＳＲＣまたはＳＮＫのいずれか一方にＰｏｗｅｒ  Ｒｏｌｅが決定しないという新たな課題を解決できる。
【０１８７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【０１８８】
２  ＵＳＢケーブル、２１  第１通信ライン、２２  第２通信ライン、１００  Ｐｏｗｅｒ  Ｂａｎｋ、１０２  コネクタ、１０４  電源管理部、１０６  バッテリ、１１０  コントローラ、１１２  プロセッサ、１１４  ファームウェア、１１６  ＣＣ１／ＣＣ２制御・接続検出モジュール、２００  スマートフォン、３００  ラップトップパソコン、１１６１  第１接続検出ブロック、１１６２  第２接続検出ブロック、１１６３，１１６４  スイッチ、１１６５，１１６７  プルアップ抵抗、１１６６，１１６８  プルダウン抵抗、ＧＮＤ  グランド電位、Ｒｄ，Ｒｐ  抵抗値、Ｖｓ  電源電位、ｔＥｒｒｏｒＲｅｃｏｖｅｒｙ  エラー復帰時間。
【図１】
2020087149.tif 000003
【図２】
2020087149.tif 000004
【図３】
2020087149.tif 000005
【図４】
2020087149.tif 000006
【図５】
2020087149.tif 000007
【図６】
2020087149.tif 000008
【図７】
2020087149.tif 000009
【図８】
2020087149.tif 000010
【図９】
2020087149.tif 000011
【図１０】
2020087149.tif 000012
【図１１】
2020087149.tif 000013
【図１２】
2020087149.tif 000014
【図１３】
2020087149.tif 000015
【図１４】
2020087149.tif 000016
【図１５】
2020087149.tif 000017
【図１６】
2020087149.tif 000018
【図１７】
2020087149.tif 000019
【図１８】
2020087149.tif 000020
【図１９】
2020087149.tif 000021
【図２０】
2020087149.tif 000022