(57)【要約】ＵＳＢスマートハブは、高度バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを提供し得る。本スマートハブは、上流ポートと、複数の下流ポートと、プロセッサと、ＵＳＢホストスタックコードおよび構成パラメータを記憶するためにプロセッサに結合されるメモリとを含んでもよい。本スマートハブは、標準的ＵＳＢハブインターフェースを実装するためのコアを有する、ＵＳＢハブコアを含んでもよい。本スマートハブは、下流ポート、コア下流ポート、およびプロセッサ間に結合される複数の２：１マルチプレクサを含んでもよい。プロセッサは、２：１マルチプレクサを制御してもよい。プロセッサは、ＵＳＢデバイスが下流ポートに結合され、ＵＳＢホストスタックコードを起動し、ＵＳＢデバイスを列挙するときを検出するように構成されてもよい。
2018514871.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢハブであって、
ハブ上流ポートと、
複数のハブ下流ポートと、
プロセッサと、
ＵＳＢホストスタックコードおよび複数の構成パラメータを記憶するために前記プロセッサに通信可能に結合される、メモリと、
コア上流ポートおよび複数のコア下流ポートを有する、ＵＳＢハブコアであって、ＵＳＢハブインターフェースを前記コア上流ポートと前記複数のコア下流ポートとの間に実装するように動作可能である、ＵＳＢハブコアと、
複数のマルチプレクサであって、各マルチプレクサは、
前記ハブ下流ポートのうちの１つに通信可能に結合される、第１のポートと、
前記複数のコア下流ポートのうちの１つに通信可能に結合される、第２のポートと、
前記プロセッサに通信可能に結合される、第３のポートと、
前記プロセッサに通信可能に結合され、前記第１のポートを、前記第２のポート、前記第３のポート、または前記第２のポートおよび前記第３のポートの両方に通信可能に結合するように動作可能である、選択入力と、
を有する、複数のマルチプレクサと
を備え、
前記プロセッサは、
ＵＳＢデバイスが前記複数のハブ下流ポートの第１のものに結合されるときを検出することと、
前記第１のポートが前記第３のポートに接続されるように、前記第１のハブ下流ポートに対応する第１のマルチプレクサの前記選択入力を制御することと、
前記ＵＳＢホストスタックコードを起動することと、
前記ＵＳＢデバイスを列挙することと
を行うように構成される、
ＵＳＢハブ。
【請求項２】
前記ＵＳＢデバイスを列挙した後、前記プロセッサはさらに、前記ＵＳＢデバイスを、前記ハブ上流ポートに結合される上流ＵＳＢホストによって列挙させるように構成される、請求項１に記載のＵＳＢハブ。
【請求項３】
前記プロセッサが、前記ＵＳＢデバイスを前記上流ＵＳＢホストによって列挙させることは、
前記プロセッサが、前記第１のポートが前記第２のポートに接続されるように、前記第１のマルチプレクサの選択入力を制御することと、
前記プロセッサが、リセットを前記ＵＳＢデバイスに信号伝達することと
を含む、請求項１または請求項２に記載のＵＳＢハブ。
【請求項４】
前記複数の構成パラメータは、複数のフィールドを有する複数の記録を含有するデータベースを備え、各記録は、前記ＵＳＢハブによってハンドリングされる特定のＵＳＢデバイスに対応する、前記請求項のいずれか１項に記載のＵＳＢハブ。
【請求項５】
前記プロセッサはさらに、
製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）を前記ＵＳＢデバイスから得ることと、
前記ＰＩＤおよび前記ＶＩＤを使用して、前記ＵＳＢデバイスのためのカスタムバッテリ充電プロトコルを判定することと、
前記ＵＳＢハブに、前記ＵＳＢデバイスに対応する具体的バッテリ充電プロトコルを使用して、前記ＵＳＢデバイスを充電させることと
を行うように構成される、前記請求項のいずれか１項に記載のＵＳＢハブ。
【請求項６】
前記具体的バッテリ充電プロトコルは、カスタム電気ハンドシェイクおよびカスタムメッセージベースのハンドシェイクのうちの１つである、請求項５に記載のＵＳＢハブ。
【請求項７】
前記プロセッサはさらに、
情報を前記ＵＳＢデバイスから得ることと、
前記得られた情報を使用して、前記ＵＳＢデバイスがブロックされるべきであることを判定することと、
前記ＵＳＢハブに、前記ＵＳＢデバイス接続をブロックさせることと
を行うように構成される、前記請求項のいずれか１項に記載のＵＳＢハブ。
【請求項８】
前記得られた情報は、デバイスクラスコードである、請求項７に記載のＵＳＢハブ。
【請求項９】
前記ＵＳＢデバイス接続は、前記ＵＳＢデバイスを低速デバイスとして構成することによってブロックされる、前記請求項のいずれか１項に記載のＵＳＢハブ。
【請求項１０】
前記プロセッサはさらに、
情報を前記ＵＳＢデバイスから得ることと、
前記得られた情報を使用して、前記ＵＳＢハブがＵＳＢ間ブリッジを前記ＵＳＢデバイスと上流ＵＳＢホストとの間に確立すべきであることを判定することと、
前記ＵＳＢ間ブリッジを実装することと
を行うように構成される、前記請求項のいずれか１項に記載のＵＳＢハブ。
【請求項１１】
前記得られた情報は、デバイスクラスコードである、請求項１０に記載のＵＳＢハブ。
【請求項１２】
前記ＵＳＢ間ブリッジを実装することは、前記第１のハブ下流ポートを前記上流ＵＳＢホストへのエミュレーションデバイスとして列挙することを含む、請求項１０に記載のＵＳＢハブ。
【請求項１３】
前記プロセッサはさらに、
製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）を前記ＵＳＢデバイスから得ることと、
前記ＰＩＤおよび前記ＶＩＤを使用して、前記ＵＳＢデバイスが選択肢デバイスのベンダではないことを判定することと、
前記ＵＳＢデバイスが選択肢デバイスのベンダではないことの判定に基づいて、前記ＵＳＢデバイスに、準最適構成で列挙させることと
を行うように構成される、前記請求項のいずれかに記載のＵＳＢハブ。
【請求項１４】
前記準最適構成は、準最適電力構成および準最適速度構成のうちの１つまたはそれを上回るものである、請求項１３に記載のＵＳＢハブ。
【請求項１５】
前記プロセッサはさらに、
製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）を前記ＵＳＢデバイスから得ることと、
前記ＰＩＤおよび前記ＶＩＤを使用して、前記ＵＳＢデバイスが認証を要求することを判定することと、
前記ＵＳＢデバイスが認証を要求することの判定に基づいて、認証チャレンジを前記ＵＳＢデバイスに発行することと、
認証チャレンジ応答を前記ＵＳＢデバイスから得ることと、
前記応答が正しくないことの判定に応じて、前記ＵＳＢデバイス接続をブロックすることと
を行うように構成される、前記請求項のうちの１項に記載のＵＳＢハブ。
【請求項１６】
前記プロセッサはさらに、前記ＵＳＢバス上の具体的トランザクションの検出に応じて、所定の応答を伝送するように構成される、前記請求項のうちの１項に記載のＵＳＢハブ。
【請求項１７】
前記プロセッサはさらに、発信元ハブ下流ポートから宛先ハブ下流ポートにデータを反映させるように構成される、前記請求項のうちの１項に記載のＵＳＢハブ。
【請求項１８】
前記発信元ハブ下流ポートおよび宛先ハブ下流ポートは、１つまたはそれを上回る物理的スイッチに基づいて判定される、請求項１７に記載のＵＳＢハブ。
【請求項１９】
前記プロセッサはさらに、
製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）を前記ＵＳＢデバイスから得ることと、
前記ＰＩＤおよび前記ＶＩＤを使用して、前記ＵＳＢデバイスが前記ＦｌｅｘＣｏｎｎｅｃｔ役割スイッチングプロトコルをサポートすることを判定することと、
前記ＵＳＢデバイスがＦｌｅｘＣｏｎｎｅｃｔをサポートすることの判定に基づいて、前記ハブ上流ポートに接続されるＵＳＢホストが存在しない、または前記ハブ上流ポートに接続されるＵＳＢホストが前記ＦｌｅｘＣｏｎｎｅｃｔ役割スイッチングプロトコルをサポートしないとき、前記ＵＳＢデバイスに、役割をスイッチさせ、ＵＳＢホストにならせることと
を行うように構成される、前記請求項のうちの１項に記載のＵＳＢハブ。
【請求項２０】
複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内において、高度バッテリ充電を提供するための方法であって、
前記プロセッサが、ＵＳＢデバイスが前記複数のハブ下流ポートの第１のものに結合されていることを検出するステップと、
前記プロセッサが、前記ＵＳＢデバイスを列挙するステップと、
前記プロセッサが、製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）を前記ＵＳＢデバイスから得るステップと、
前記プロセッサが、前記ＰＩＤおよび前記ＶＩＤを使用して、前記ＵＳＢデバイスのためのカスタムバッテリ充電プロトコルを判定するステップと、
前記プロセッサが、前記ＵＳＢハブに、前記ＵＳＢデバイスに対応する具体的バッテリ充電プロトコルを使用して、前記ＵＳＢデバイスを充電させるステップと
を含む、方法。
【請求項２１】
前記プロセッサは、前記ＵＳＢハブに、カスタム電気ハンドシェイクプロトコルおよびカスタムメッセージベースのハンドシェイクプロトコルのうちの１つを使用して、前記ＵＳＢデバイスを充電させる、請求項２０に記載の方法。
【請求項２２】
前記ＵＳＢハブはさらに、メモリを含み、前記プロセッサは、前記カスタム電気ハンドシェイクプロトコルおよびカスタムメッセージベースのハンドシェイクプロトコルのうちの１つのための仕様を前記メモリ内に記憶される構成ファイルから得る、請求項２０または２１に記載の方法。
【請求項２３】
複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内において、データセキュリティを提供するための方法であって、
前記プロセッサが、ＵＳＢデバイスが前記複数のハブ下流ポートの第１のものに結合されていることを検出するステップと、
前記プロセッサが、前記ＵＳＢデバイスを列挙するステップと、
前記プロセッサが、情報を前記ＵＳＢデバイスから得るステップと、
前記プロセッサが、前記得られた情報を使用して、前記ＵＳＢデバイスがブロックされるべきであることを判定するステップと、
前記プロセッサが、前記ＵＳＢデバイスがブロックされるべきであることの判定に応じて、前記ＵＳＢハブに、前記ＵＳＢデバイス接続をブロックさせるステップと
を含む、方法。
【請求項２４】
前記得られた情報は、デバイスクラスコードである、請求項２３に記載の方法。
【請求項２５】
前記プロセッサは、前記ＵＳＢハブに、前記ＵＳＢデバイスを低速デバイスとして構成することによって、前記ＵＳＢデバイス接続をブロックさせる、請求項２３または２４に記載の方法。
【請求項２６】
複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内において、データセキュリティを提供するための方法であって、
前記プロセッサが、ＵＳＢデバイスが前記複数のハブ下流ポートの第１のものに結合されていることを検出するステップと、
前記プロセッサが、前記ＵＳＢデバイスを列挙するステップと、
前記プロセッサが、情報を前記ＵＳＢデバイスから得るステップと、
前記プロセッサが、前記得られた情報を使用して、前記ＵＳＢハブがＵＳＢ間ブリッジを前記ＵＳＢデバイスと上流ＵＳＢホストとの間に確立すべきであることを判定するステップと、
前記プロセッサが、前記ＵＳＢ間ブリッジを実装するステップと
を含む、方法。
【請求項２７】
前記得られた情報は、デバイスクラスコードである、請求項２６に記載の方法。
【請求項２８】
前記プロセッサが前記ＵＳＢ間ブリッジを実装するステップは、前記第１のハブ下流ポートを前記上流ＵＳＢホストへのエミュレーションデバイスとして列挙するステップを含む、請求項２６または２７に記載の方法。
【請求項２９】
複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内において、ベンダデバイス選好を提供するための方法であって、
前記プロセッサが、ＵＳＢデバイスが前記複数のハブ下流ポートの第１のものに結合されていることを検出するステップと、
前記プロセッサが、前記ＵＳＢデバイスを列挙するステップと、
前記プロセッサが、製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）を前記ＵＳＢデバイスから得るステップと、
前記プロセッサが、前記ＰＩＤおよび前記ＶＩＤを使用して、前記ＵＳＢデバイスが選択肢デバイスのベンダではないことを判定するステップと、
前記プロセッサが、前記ＵＳＢデバイスが選択肢デバイスのベンダではないことの判定に応じて、前記ＵＳＢデバイスに、準最適構成で列挙させるステップと
を含む、方法。
【請求項３０】
前記準最適構成は、準最適電力構成および準最適速度構成のうちの１つまたはそれを上回るものである、請求項２９に記載の方法。
【請求項３１】
複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内において、デバイス認証を提供するための方法であって、
前記プロセッサが、ＵＳＢデバイスが前記複数のハブ下流ポートの第１のものに結合されていることを検出するステップと、
前記プロセッサが、前記ＵＳＢデバイスを列挙するステップと、
前記プロセッサが、製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）を前記ＵＳＢデバイスから得るステップと、
前記プロセッサが、前記ＰＩＤおよび前記ＶＩＤを使用して、前記ＵＳＢデバイスが認証を要求することを判定するステップと、
前記プロセッサが、前記ＵＳＢデバイスが認証を要求することの判定に応じて、認証チャレンジを前記ＵＳＢデバイスに発行するステップと、
前記プロセッサが、認証チャレンジ応答を前記ＵＳＢデバイスから得るステップと、
前記プロセッサが、前記応答が正しくないことの判定に応じて、前記ＵＳＢデバイス接続をブロックするステップと
を含む、方法。
【請求項３２】
複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内において、データ反映を提供するための方法であって、
前記プロセッサが、発信元ポートを前記複数のハブ下流ポートから判定するステップと、
前記プロセッサが、宛先ポートを前記複数のハブ下流ポートから判定するステップと、
前記プロセッサが、前記発信元ポートにおけるデータを前記宛先ポートにおいて反映させるステップと
を含む、方法。
【請求項３３】
前記ＵＳＢハブはさらに、前記プロセッサに結合される物理的発信元スイッチと、前記プロセッサに結合される物理的宛先スイッチとを含み、
前記プロセッサは、発信元ポート構成値および前記物理的発信元スイッチのうちの１つに基づいて、前記発信元ポートを判定し、
前記プロセッサは、宛先ポート構成値および前記物理的宛先スイッチのうちの１つに基づいて、前記宛先ポートを判定する、
請求項３２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ユニバーサルシリアルバス（ＵＳＢ）ハブと併用するためのシステムおよび方法に関し、より具体的には、ＵＳＢハブデバイスにおけるバッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを高度化させるための改良されたシステムおよび方法に関する。
【背景技術】
【０００２】
ＵＳＢハブは、現代の電子機器デバイス（例えば、パーソナルコンピュータ（「ＰＣ」）、タブレットＰＣ、携帯電話、自動車インフォテインメントシステム、パーソナルゲームシステム、玩具等）に遍在する。これは、キーボード、モニタ、プリンタ、記憶デバイス、カメラ、電話、玩具、ゲーム、および多数の他の電子デバイスが、単一インターフェース上で作用することを可能にする、「汎用」インターフェースである。汎用であることは、とりわけ、認証、検証、セキュリティ、およびカスタムデータハンドリングに関連するものを含む、その独自の一連の課題をもたらす。ベンダは、オペレーティングシステムおよび／またはＵＳＢスタック／ドライバをカスタマイズすることによって、これらの課題を克服しようとしている。これらのタイプのカスタマイズは、コストがかかる可能性があり、ＵＳＢインターフェースに接続される電子デバイス間に準最適互換性をもたらし得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
したがって、オペレーティングシステムまたはＵＳＢスタック／ドライバへの変更を要求することなく、高度バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを提供することができる、改良されたＵＳＢハブの必要性がある。
【０００４】
ある実施形態によると、ハブ上流ポートと、複数のハブ下流ポートと、プロセッサと、ＵＳＢホストスタックコードおよび複数の構成パラメータを記憶するためにプロセッサに通信可能に結合される、メモリとを含み得る、ＵＳＢハブが、提供される。ＵＳＢハブはさらに、コア上流ポートと、複数のコア下流ポートとを有する、ＵＳＢハブコアを含んでもよい。ＵＳＢハブコアは、ＵＳＢハブインターフェースをコア上流ポートと複数のコア下流ポートとの間に実装するように動作可能であってもよい。ＵＳＢハブはさらに、複数のマルチプレクサを含んでもよく、各マルチプレクサは、ハブ下流ポートのうちの１つに通信可能に結合される、第１のポートと、複数のコア下流ポートのうちの１つに通信可能に結合される、第２のポートと、プロセッサに通信可能に結合される、第３のポートと、プロセッサに通信可能に結合され、第１のポートを、第２のポート、第３のポート、または第２のポートおよび第３のポートの両方と通信可能に結合するように動作可能である、選択入力とを有してもよい。プロセッサは、ＵＳＢデバイスが複数のハブ下流ポートの第１のものに結合されるときを検出するように構成されてもよい。プロセッサはさらに、第１のポートが第３のポートに接続されるように、第１のハブ下流ポートに対応する第１のマルチプレクサの選択入力を制御するように構成されてもよい。加えて、プロセッサは、ＵＳＢホストスタックコードを起動し、ＵＳＢデバイスを列挙するように構成されてもよい。
【０００５】
さらなる実施形態によると、複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内における、高度バッテリ充電のための方法が、提供される。プロセッサは、ＵＳＢデバイスが複数のハブ下流ポートの第１のものに結合されるときを検出してもよく、ＵＳＢデバイスを列挙してもよい。プロセッサはさらに、製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）をＵＳＢデバイスから得て、ＰＩＤおよびＶＩＤを使用して、ＵＳＢデバイスのためのカスタムバッテリ充電プロトコルを判定してもよい。プロセッサは、次いで、ＵＳＢハブに、ＵＳＢデバイスに対応する具体的バッテリ充電プロトコルを使用して、ＵＳＢデバイスを充電させてもよい。
【０００６】
さらなる実施形態によると、複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内におけるデータセキュリティのための方法が、提供される。プロセッサは、ＵＳＢデバイスが複数のハブ下流ポートの第１のものに結合されるときを検出してもよく、ＵＳＢデバイスを列挙してもよい。プロセッサはさらに、情報（例えば、デバイスクラスコード、記述子情報等）をＵＳＢデバイスから得て、デバイスクラスコードを使用して、ＵＳＢデバイスがブロックされるべきであることを判定してもよい。プロセッサは、次いで、ＵＳＢハブに、ＵＳＢデバイス接続をブロックさせてもよい。
【０００７】
さらなる実施形態によると、複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内におけるデータセキュリティのための方法が、提供される。プロセッサは、ＵＳＢデバイスが複数のハブ下流ポートの第１のものに結合されるときを検出してもよく、ＵＳＢデバイスを列挙してもよい。プロセッサはさらに、情報（例えば、デバイスクラスコード、記述子情報等）をＵＳＢデバイスから得て、デバイスクラスコードを使用して、ＵＳＢハブがＵＳＢ間ブリッジをＵＳＢデバイスと上流ＵＳＢホストとの間に確立すべきであることを判定してもよい。プロセッサは、次いで、ＵＳＢ間ブリッジをＵＳＢデバイスと上流ＵＳＢホストとの間に実装してもよい。
【０００８】
さらなる実施形態によると、複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内におけるベンダデバイス選好のための方法が、提供される。プロセッサは、ＵＳＢデバイスが複数のハブ下流ポートの第１のものに結合されるときを検出してもよく、ＵＳＢデバイスを列挙してもよい。プロセッサはさらに、製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）をＵＳＢデバイスから得て、ＰＩＤおよびＶＩＤを使用して、ＵＳＢデバイスが選択肢デバイスのベンダではないことを判定してもよい。プロセッサは、次いで、ＵＳＢデバイスが選択肢デバイスのベンダではないことの判定に応じて、ＵＳＢデバイスに、準最適構成で列挙させてもよい。
【０００９】
さらなる実施形態によると、複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内におけるデバイス認証のための方法が、提供される。プロセッサは、ＵＳＢデバイスが複数のハブ下流ポートの第１のものに結合されるときを検出してもよく、ＵＳＢデバイスを列挙してもよい。プロセッサはさらに、製品ＩＤ（ＰＩＤ）およびベンダＩＤ（ＶＩＤ）をＵＳＢデバイスから得て、ＰＩＤおよびＶＩＤを使用して、ＵＳＢデバイスが認証を要求することを判定してもよい。プロセッサは、次いで、ＵＳＢデバイスが認証を要求することの判定に応じて、認証チャレンジをＵＳＢデバイスに発行してもよい。プロセッサはさらに、認証チャレンジ応答をＵＳＢデバイスから得てもよく、応答が正しくないことの判定に応じて、ＵＳＢデバイス接続をブロックしてもよい。
【００１０】
別の実施形態によると、複数のハブ下流ポートと、ＵＳＢホストスタックコードを起動するプロセッサとを含む、ＵＳＢハブ内におけるデータ反映のための方法が、提供される。プロセッサは、発信元ポートを複数のハブ下流ポートから判定してもよい。プロセッサはまた、宛先ポートを複数のハブ下流ポートから判定してもよい。プロセッサはさらに、発信元ポートにおけるデータを宛先ポートにおいて反映させてもよい。
【図面の簡単な説明】
【００１１】
本開示のより完全な理解は、付随の図面と関連して検討される以下の説明を参照することによって取得され得る。
【００１２】
【図１】図１は、本開示のある実施形態による、高度バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを提供することができる、例示的ＵＳＢハブのブロック図を図示する。
【図２】図２は、本開示のある実施形態による、ＵＳＢハブ内における高度バッテリ充電、ベンダマッチング、およびデバイス認証を提供するための例示的データベースのテーブルを図示する。
【図３】図３は、本開示のある実施形態による、高度バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを提供するための例示的構成オプションを図示する。
【図４】図４は、本開示のある実施形態による、ＵＳＢハブ内における、高度バッテリ充電を提供するための例示的方法のフロー図を図示する。
【図５】図５は、本開示のある実施形態による、ＵＳＢハブ内における高度データ記憶セキュリティを提供するための例示的方法のフロー図を図示する。
【図６】図６は、本開示のある実施形態による、ＵＳＢハブ内における高度ベンダマッチングを提供するための例示的方法のフロー図を図示する。
【図７】図７は、本開示のある実施形態による、ＵＳＢハブ内における高度デバイス認証を提供するための例示的方法のフロー図を図示する。
【図８】図８は、本開示のある実施形態による、データ捕捉／デバッグを提供することができる、例示的ＵＳＢハブのブロック図を図示する。
【図９】図９は、本開示のある実施形態による、ＵＳＢハブ内における高度役割スイッチングを提供するための例示的方法のフロー図を図示する。
【発明を実施するための形態】
【００１３】
本開示は、種々の修正および代替形態を被るが、その具体的例示的実施形態が、図面に示され、本明細書に詳細に説明される。しかしながら、具体的例示的実施形態の本明細書の説明は、本開示を本明細書に開示される特定の形態に限定することを意図するものではなく、対照的に、本開示は、添付の請求項によって定義される全修正および均等物を網羅するものであることを理解されたい。
【００１４】
種々の実施形態によると、オペレーティングシステムまたはＵＳＢスタック／ドライバへの変更を要求することなく、高度バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを提供し得る、ＵＳＢハブが、提供されることができる。
【００１５】
ここで図面を参照すると、例示的実施形態の詳細が、図式的に図示される。図面における同一要素は、同一番号によって表され、類似要素は、異なる小文字添え字を伴う同一数字によって表されるであろう。
【００１６】
図１は、本開示のある実施形態による、高度バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを提供することができる、例示的ＵＳＢハブのブロック図を図示する。図１に描写されるように、ＵＳＢハブ１００は、ＵＳＢハブコア１０２と、上流ポート１０４と、制御プロセッサ１０６と、ＵＳＢホストスタック＋ミニスケジューラ＋メッセージパイプ１０８と、下流ポート１１６ａ−ｄと例えばＵＳＢハブコア１０２出力信号１１０ａ−ｄおよび信号１１２ａ−ｄとを通信可能に結合する、２：１マルチプレクサ／デマルチプレクサ１１４ａ−ｄとを備えてもよい。上流ポート１０４および下流ポート１１６ａ−ｄは、ＵＳＢハブ１００と上流／下流ポートとの間でＵＳＢ対応信号伝達を搬送可能であってもよい。図１に描写される実施形態は、４−ポートＵＳＢハブを含むが、代替実施形態は、任意の数のポート（例えば、２、３、１０、１６等）を含んでもよい。
【００１７】
制御プロセッサ１０６は、プログラム命令および／またはプロセスデータを解釈および／または実行するように動作可能である、任意のシステム、デバイス、または装置を備えてもよく、限定ではないが、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、またはプログラム命令および／またはプロセスデータを解釈および／または実行するように構成される、任意の他のデジタルまたはアナログ回路を含んでもよい。制御プロセッサ１０６は、ＵＳＢハブコア１０２に通信可能に結合され、本開示の種々の実施形態によって提供されるＵＳＢハブならびに付加的特徴を実装／制御するために適切な信号伝達を提供してもよい。制御プロセッサ１０６はまた、ＵＳＢホストスタック１０８（ミニスケジューラおよびメッセージパイプを含む）に通信可能に結合されてもよい（例えば、実装する、制御する等）。制御プロセッサ１０６はまた、マルチプレクサ／デマルチプレクサ１１４ａ−ｄに通信可能に結合され、例えば、信号１１２ａ−ｄを伝送または受信する、および／または選択信号伝達（図示せず）をマルチプレクサ／デマルチプレクサ１１４ａ−ｄに提供してもよい。制御プロセッサはまた、メモリ（例えば、揮発性、不揮発性等）、記憶媒体（例えば、フラッシュ、ＥＥＰＲＯＭ、固体記憶媒体等）等を含む、他のリソース（図示せず）に通信可能に結合されてもよい。
【００１８】
ＵＳＢハブコア１０２は、ＵＳＢハブインターフェースを実装するように動作可能である、任意のシステム、デバイス、または装置を備えてもよく、限定ではないが、特定用途向け集積回路（ＡＳＩＣ）、またはＵＳＢハブインターフェースを実装するように構成される、任意の他のデジタルまたはアナログ回路（および必要ソフトウェア／ファームウェア）を含んでもよい。ある実施形態では、ＵＳＢハブコアは、ＵＳＢ  Ｏｎ  ｔｈｅ  Ｇｏ（ＯＴＧ）信号伝達をサポートしてもよい。同一または付加的実施形態では、ＵＳＢハブコア１０２は、ＭｉｃｒｏｃｈｉｐのＦｌｅｘＣｏｎｎｅｃｔ特徴をサポートするＭｉｃｒｏｃｈｉｐ  Ｔｅｃｈｎｏｌｏｇｙ，  Ｉｎｃ．（Ｍｉｃｒｏｃｈｉｐ）によって提供される、ハブコントローラであってもよい。ＦｌｅｘＣｏｎｎｅｃｔ特徴は、ハブが、上流および下流ポートとして作用する、物理的ポートを動的に変更することを可能にしてもよい。これらの特徴は、２つの専用コネクタの要件を伴わずに、ＵＳＢホストおよびＵＳＢデバイスの両方として作用する、複数の製品への接続を可能にしてもよい。
【００１９】
ＵＳＢホストスタック１０８は、ＵＳＢホストコントローラを実装するように動作可能である、任意のソフトウェア、ハードウェア、またはソフトウェア／ハードウェアの組み合わせを備えてもよい。ある実施形態では、ＵＳＢホストスタック１０８は、完全ＵＳＢ対応であって、ＵＳＢ仕様のいずれかによって定義された全有効トランザクションをサポートしてもよい。代替実施形態では、ＵＳＢホストスタック１０８は、例えば、（ｉ）ある周辺デバイスおよび／またはデバイスのクラスのみをサポートする、（ｉｉ）サポートされるデバイスによって要求されるある転送タイプのみをサポートする、（ｉｉｉ）緩和電力要件を有する、（ｉｖ）等によって、ＵＳＢ仕様のある側面のみを実装してもよい。一実施形態では、ＵＳＢホストスタック１０８は、Ｍｉｃｒｏｃｈｉｐマイクロコントローラと併用するためのＭｉｃｒｏｃｈｉｐによって提供されるロイヤリティフリー内蔵ホストスタックであってもよい。
【００２０】
動作時、ＵＳＢハブ１００は、バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチング等の高度ＵＳＢ特徴を提供してもよい。制御プロセッサ１０６は、本開示のある実施形態によると、概して、ＵＳＢハブコア１０２と相互作用し、ＵＳＢホストスタック＋ミニスケジューラ＋メッセージパイプ１０８を実装するように動作可能である、ソフトウェアおよび／またはファームウェアを実行してもよい。ある実施形態では、制御プロセッサ１０６は、概して、限定ではないが、図２−３に図示されるものに類似するデータベーステーブルおよび／または構成情報を含む、情報を記憶および読み出すように動作可能である、ソフトウェアおよび／またはファームウェアを実行してもよい。
【００２１】
図２は、本開示のある実施形態による、ＵＳＢハブ内における高度バッテリ充電、ベンダマッチング、およびデバイス認証を提供するための例示的データベース２００のテーブルを図示する。データベース２００は、限定ではないが、テキストファイル、バイナリファイル、関係データベース等を含む、多くの異なるフォーマットで実装されてもよい。データベース２００の各行は、ＵＳＢハブ１００によってサポートされる、ＵＳＢデバイスに関連するエントリを含有してもよく、サポートされるデバイスを伴うトランザクションにおいてＵＳＢハブ１００によって使用される情報を記憶してもよい。ある例示的実施形態では、データベース２００は、ベンダＩＤ（「ＶＩＤ」）（列Ａ）と、製品ＩＤ（「ＰＩＤ」）（列Ｂ）と、高度充電インジケータ（列Ｃ）と、充電タイプ（列Ｄ）と、充電仕様（列Ｅ）と、選択肢ベンダインジケータ（列Ｆ）と、要求される認証インジケータ（列Ｇ）と、認証仕様（列Ｈ）と、ＦｌｅｘＣｏｎｎｅｃｔインジケータ（列Ｉ）とを記憶してもよい。ＵＳＢ仕様に従って、各ＵＳＢ構成要素（デバイス、ホスト、ハブ等）は、ＶＩＤおよびＰＩＤが割り当てられ、例えば、構成要素の容易な識別を可能にしてもよい。データベース２００のＶＩＤおよびＰＩＤ列は、これらの事前に割り当てられたＶＩＤ／ＰＩＤ値に対応してもよい。このように、ＵＳＢハブ１００は、ＵＳＢハブ１００に接続され得る異なるＵＳＢ構成要素に特有の高度バッテリ充電、ベンダマッチング、およびデバイス認証を提供してもよい。
【００２２】
動作時、ＵＳＢ構成要素がＵＳＢハブ１００に接続されると、制御プロセッサ１０６は、ＶＩＤ／ＰＩＤ情報をデバイスから得てもよい。一実施形態では、ＵＳＢハブ１００は、ＵＳＢホストスタック＋ミニスケジューラ＋メッセージパイプ１０８を利用して、ＵＳＢホストとして作用し、デバイスを列挙し、デバイス記述子（ＶＩＤ／ＰＩＤ情報を含む）を得てもよい。代替実施形態では、制御プロセッサは、ＵＳＢハブコア１０２（標準的ＵＳＢプロトコル）を介して、新しくアタッチされたデバイスを列挙する上流ポート１０４に接続されるホストとして列挙プロセスを「リッスン」することによって、ＶＩＤ／ＰＩＤ情報をデバイスから得てもよい。前者の実施形態では、制御プロセッサ１０６は、ＵＳＢハブコア１０２がデバイスアタッチイベントを認識しないように、マルチプレクサ／デマルチプレクサ１１４ａ−ｄを構成してもよい。デバイスを列挙後、ＵＳＢハブ１００は、デバイスが上流ホストによって適切に列挙されるように、新しくアタッチされたデバイスと上流ポート１０４におけるＵＳＢホストとの間の接続を管理してもよい。ＵＳＢハブ１００は、ＵＳＢプロトコルの当業者に公知の任意の数の方法でこれを遂行してもよい。例えば、ＵＳＢハブ１００は、デバイスがアタッチされた下流ポート上で切断イベントを強制し、その後、上流ホストによる列挙を可能にしてもよい。代替実施形態では、ＵＳＢハブ１００は、デバイスをリセットし、その後、上流ホストによる列挙を可能にしてもよい。代替実施形態では、ＵＳＢハブ１００は、上流ホストへの新しいアタッチイベントをエミュレートし、デバイスの記述子を上流ポート１０４上のＵＳＢホストに転送し、次いで、通常ハブ信号伝達を適切な時間に再開してもよい（すなわち、エミュレーションを中止する）。これらの実施形態では、制御プロセッサ１０６は、信号伝達が、（１）ＵＳＢハブコアまたは（２）ＵＳＢホストスタックを起動する制御プロセッサのいずれかに適切にルーティングされるように、マルチプレクサ／デマルチプレクサ１１４ａ−ｄを制御する。ある実施形態では、マルチプレクサ／デマルチプレクサ１１４ａ−ｄが、下流ポート信号を制御プロセッサにルーティングしているとき、ＵＳＢハブコアに接続される信号１１０ａ−ｄは、アタッチされたデバイスを反映しないように構成されてもよい。したがって、マルチプレクサ／デマルチプレクサ１１４ａ−ｄ上の選択入力を変更する（すなわち、ＵＳＢハブコアへのルーティングをもたらす）ことによって、ＵＳＢハブコアは、デバイスアタッチイベントが生じたことを判定してもよい。
【００２３】
ＵＳＢハブ１００がＶＩＤ／ＰＩＤ情報を得る様式にかかわらず、その後、ＵＳＢハブ１００は、次いで、マッチングＶＩＤ／ＰＩＤに関してデータベース２００を検索してもよい。ＶＩＤ／ＰＩＤがデータベース２００内で見出される場合、制御プロセッサ１０６は、接続されるＵＳＢ構成要素がＵＳＢハブ１００によってサポートされることを判定し、そのＵＳＢ構成要素に対応するデータベース２００内に記憶される他のパラメータに応じて、ある高度特徴を提供してもよい。例えば、高度充電インジケータ（列Ｃ）が、マッチングＶＩＤ／ＰＩＤに関してイネーブルにされている（例えば、行２）場合、ＵＳＢハブ１００は、そのＵＳＢポート上における高度バッテリ充電を提供してもよい。この場合、データベース２００内の充電タイプ（列Ｄ）および充電仕様（列Ｅ）エントリは、ＵＳＢ構成要素が充電されるべき方法に関連する付加的情報を提供してもよい。（高度充電に関連するさらなる詳細は、図４の議論に提供される。）別の実施例として、選択肢ベンダインジケータ（列Ｆ）が、マッチングＶＩＤ／ＰＩＤに関してイネーブルにされている（例えば、行４）場合、ＵＳＢハブ１００は、高度ベンダマッチング特徴を提供してもよい。（高度ベンダマッチング特徴に関連するさらなる詳細は、図３および６の議論に提供される。）さらに別の実施例では、要求される認証インジケータ（列Ｇ）が、マッチングＶＩＤ／ＰＩＤに関してイネーブルにされている（例えば、行６）場合、ＵＳＢハブ１００は、ＵＳＢ構成要素に完全に接続する前に、認証を要求してもよい。この場合、データベース２００内の認証仕様（列Ｈ）エントリは、ＵＳＢ構成要素が認証されるべき方法に関連する付加的詳細を提供してもよい。（認証特徴に関連するさらなる詳細は、図７の議論に提供される。）さらに別の実施例では、ＦｌｅｘＣｏｎｎｅｃｔインジケータ（列Ｉ）が、マッチングＶＩＤ／ＰＩＤに関してイネーブルにされている（例えば、行１）場合、ＵＳＢハブ１００は、デバイスに初期役割スイッチングのオプションを提供し、ＵＳＢホストとして作用してもよい。（役割スイッチング特徴に関連するさらなる詳細は、図９の議論に提供される。）
【００２４】
データベース２００内に記憶される値は、ハードコードされる、構成可能である、またはそれらの２つのある組み合わせであってもよい。ある実施形態では、ＵＳＢハブ１００の製造業者は、データベースが修正されることができないように、ＵＳＢハブ１００の販売に先立って、データベース２００の値をハードコードすることを所望し得る。例えば、データベース２００は、メモリの読取専用セクション内に記憶される、または書込保護されてもよい。他の実施形態では、製造業者は、デフォルト値データベース２００を提供してもよいが、ユーザによる後の修正を可能にしてもよい。例えば、ＵＳＢハブ１００のユーザは、ハブをＵＳＢホストの中に差し込み、ＵＳＢホスト上でソフトウェアを使用して、データベースを更新する（例えば、新しいベンダ／製品情報をインターネットからダウンロードする、テーブルを手動で編集することによって等）ことによって、データベース２００を修正可能であってもよい。ある実施形態では、データベース２００の修正は、ＵＳＢハブ１００の任意のユーザがデータベースを修正し得るように、非セキュアな様式で、行われてもよい。他の実施形態では、データベース２００の修正は、正しい証明書（例えば、パスワード等）を伴うユーザのみによって行われてもよい。
【００２５】
図３は、本開示のある実施形態による、データ記憶セキュリティ、ベンダマッチング、データ捕捉／デバッグ、および役割スイッチングを提供するための例示的構成オプションテーブル３００を図示する。いくつかの実施形態では、構成オプションテーブル３００は、限定ではないが、テキストファイル、バイナリファイル、関係データベース等を含む、ソフトウェアで記憶されてもよい。他の実施形態では、構成オプションテーブル３００は、ハードウェアでハードワイヤされてもよい（例えば、ローにつながれる（ディスエーブルにされる）、ハイにつながれる（イネーブルにされている）、制御プロセッサ１０６上のＧＰＩＯピンに接続される等）。構成オプションテーブル３００内の第１の列は、本開示の例示的実施形態において利用可能であり得る、構成オプションに対応してもよい。他の実施形態では、より多いまたはより少ない列が、特定のＵＳＢハブ１００によってサポートされる特徴に応じて、存在してもよい。構成オプションテーブル３００内の第２の列は、ＵＳＢハブ１００のベンダまたはユーザによって判定されるような構成値に対応してもよい。
【００２６】
構成オプションテーブル３００内に記憶される値は、ハードコードされる、構成可能である、またはその２つのある組み合わせであってもよい。ある実施形態では、ＵＳＢハブ１００の製造業者は、構成オプションが修正されることができない（すなわち、構成不可能である）ように、ＵＳＢハブ１００の販売に先立って、構成オプションテーブル３００の値をハードコードすることを所望し得る。例えば、構成オプションテーブル３００の値は、メモリの読取専用セクション内に記憶されてもよい。他の実施形態では、製造業者は、構成オプションテーブル３００のためのデフォルト値を提供してもよいが、ユーザによる後の修正を可能にしてもよい。例えば、ＵＳＢハブ１００のユーザは、ハブをＵＳＢホストの中に差し込み、ＵＳＢホスト上のソフトウェアを使用して、値を設定することによって、構成テーブル３００内の値を修正可能であってもよい。ある実施形態では、本修正は、ＵＳＢハブ１００の任意のユーザが値を修正し得るように、非セキュアな様式で、行われてもよい。他の実施形態では、構成テーブル３００内の値の修正は、正しい証明書（例えば、パスワード等）を伴うユーザのみによって行われてもよい。
【００２７】
図３に描写される実施形態では、構成オプションテーブル３００は、以下の構成オプションを含有する。「データセキュリティ？」オプションは、データセキュリティ特徴がイネーブルにされているかどうかを判定するために使用される。「データセキュリティレベル２？」オプションは、データセキュリティレベル２特徴がイネーブルにされているかどうかを判定するために使用される。「データセキュリティ仕様」エントリは、ＵＳＢハブ１００がデータセキュリティ特徴を実装すべき方法に関連する付加的情報を提供する。（データセキュリティ特徴に関連するさらなる詳細は、図５の議論に提供される。）「選択肢ベンダ」オプションは、選択肢ベンダ特徴がイネーブルにされているかどうかを判定するために使用される。「選択肢ベンダ仕様」エントリは、ＵＳＢハブ１００が選択肢ベンダ特徴を実装すべき方法に関連する付加的情報を提供する。（高度ベンダマッチング特徴に関連するさらなる詳細は、図３および６の議論に提供される。）「自動応答？」オプションは、自動応答特徴がイネーブルにされているかどうかを判定するために使用される。「自動応答仕様」エントリは、ＵＳＢハブ１００が自動応答特徴を実装すべき方法に関連する付加的情報を提供する。「データ反映？」オプションは、データ反映特徴がイネーブルにされているかどうかを判定するために使用される。「データ反映仕様」エントリは、ＵＳＢハブ１００がデータ反映特徴を実装すべき方法に関連する付加的情報を提供する。（自動応答およびデータ反映特徴に関連するさらなる詳細は、図８の議論に提供される。）「Ｆｌｅｘｃｏｎｎｅｃｔスイッチング？」オプションは、Ｆｌｅｘｃｏｎｎｅｃｔスイッチング特徴がイネーブルにされているかどうかを判定するために使用される。（Ｆｌｅｘｃｏｎｎｅｃｔスイッチング特徴に関連するさらなる詳細は、図９の議論に提供される。）
バッテリ充電
【００２８】
ＵＳＢコネクタは、限定ではないが、スマートフォン、タブレット、ゲーム、玩具、および同等物を含む、あらゆるタイプの電子機器デバイスを充電するために使用される。ＵＳＢ仕様は、ＵＳＢ接続を経由してＵＳＢデバイスを充電するためのプロトコルを定義する。しかしながら、多くのＵＳＢデバイスは、本プロトコルに従わず、代わりに、カスタム電気ハンドシェイクまたはカスタムＵＳＢメッセージベースのハンドシェイク等のベンダまたは製品特有の充電プロトコルを実装する。これは、これらのデバイスを充電するための標準的ＵＳＢ充電プロトコル（すなわち、一般的ＵＳＢハブによって使用される方法）を使用するとき、準最適充電率につながり得る。ベンダおよび／または製品特有の充電情報を記憶することによって、ＵＳＢハブ１００は、ＵＳＢハブ１００に接続される任意のデバイスのための最適充電プロトコルを実装し得る。
【００２９】
図４は、本開示のある実施形態による、ＵＳＢハブ内における高度バッテリ充電を提供するための例示的方法４００のフロー図を図示する。一実施形態によると、方法４００は、好ましくは、ステップ４０２から開始する。前述のように、本開示の教示は、ＵＳＢハブ１００の種々の構成において実装されてもよい。したがって、方法４００のための好ましい初期化点および方法４００を構成するステップ４０２−４１８の順序は、選定される実装に依存してもよい。
【００３０】
ステップ４０２では、ＵＳＢハブ１００は、初期化してもよい。例えば、ＵＳＢハブ１００は、電源がオンにされてもよく（電源またはＵＳＢホストへの接続を介して）、ＵＳＢハブコア１０２は、初期化してもよい。ステップ４０４では、ＵＳＢハブ１００は、持続的にチェックし、下流デバイスが、例えば、下流ポート１１６ａ−ｄのうちの１つにアタッチされたかどうかを判定してもよい。下流デバイスがアタッチされていない場合、ＵＳＢハブ１００は、ステップ４０４に戻って、下流デバイスが検出されるまで、このように継続してもよい。下流デバイス接続の検出に応じて、ＵＳＢハブ１００は、ステップ４０６において、検出されたデバイスに接続してもよく、ステップ４０８において、デバイスを列挙してもよい。列挙の間、ＵＳＢハブ１００は、新しくアタッチされたデバイスのＶＩＤおよびＰＩＤを読み取ってもよい。
【００３１】
ステップ４１０では、ＵＳＢハブ１００は、新しくアタッチされたデバイスが非標準的充電プロトコルを実装するかどうかを判定してもよい。例えば、ＶＩＤ／ＰＩＤは、制御プロセッサ１０６に提供されてもよく、制御プロセッサ１０６は、データベース２００にクエリし、新しくアタッチされたデバイスのＶＩＤ／ＰＩＤにマッチするエントリ（行）を含有するかどうかと、任意のマッチングエントリが、デバイスがベンダまたは製品特有の充電プロトコルに従う（すなわち、列Ｃ「充電する？」がイネーブルにされている）ことを示すかどうかとを判定してもよい。データベース２００内にＶＩＤ／ＰＩＤマッチが存在しない場合、方法４００は、ステップ４１０からステップ４１２に進んでもよく、標準的ＵＳＢ充電プロトコルを使用して、新しくアタッチされたデバイスの充電を試みてもよい。同様に、データベース２００内にＶＩＤ／ＰＩＤマッチが存在するが、マッチング行に関する「充電する？」列がイネーブルにされていない場合、方法４００は、ステップ４１０からステップ４１２に進んでもよく、標準的ＵＳＢ充電プロトコルを使用して、新しくアタッチされたデバイスの充電を試みてもよい。データベース２００内にＶＩＤ／ＰＩＤマッチが存在し、そのマッチング行に関する「充電する？」列がイネーブルにされている場合、方法４００は、ステップ４１４に進んでもよい。
【００３２】
ステップ４１４では、ＵＳＢハブ１００は、マッチングデータベースエントリがカスタム電気ハンドシェイク充電プロトコルを示すかどうかを判定してもよい。図２に描写される実施例では、「充電タイプ」列内のゼロ（０）は、カスタム電気ハンドシェイク充電プロトコル（例えば、行２）を示してもよい一方、「充電タイプ」列内の１（１）は、カスタムメッセージベースのハンドシェイク充電プロトコル（例えば、行３）を示してもよい。本実施形態によると、ＵＳＢハブ１００が、ステップ４１４において、「充電タイプ」がゼロ（０）に設定され、カスタム電気ハンドシェイクを示すことを判定する場合、方法４００は、ステップ４１８に進んでもよい。ＵＳＢハブ１００が、代わりに、ステップ４１４において、「充電タイプ」が１（１）に設定され、カスタムメッセージベースのハンドシェイクを示すことを判定する場合、方法４００は、ステップ４１６に進んでもよい。
【００３３】
ステップ４１６では、ＵＳＢハブ１００は、カスタムメッセージベースのハンドシェイクプロトコルを使用して、新しくアタッチされたデバイスを充電してもよい。ある実施形態では、本プロトコルの詳細は、「充電仕様」列内の「メッセージベースのハンドシェイク仕様」（例えば、行３）としてデータベース２００内に保存されてもよい。メッセージベースのハンドシェイク仕様は、ＵＳＢ構成要素によって実装されるカスタムメッセージベースのハンドシェイクプロトコルを記述する、命令、記述子、または複数の命令／記述子を備えてもよい。必要とされる命令／記述子の数は、実装依存であってもよく、ＵＳＢハブ１００によってサポートされるデバイスの数に基づいて変動してもよい。制御プロセッサ１０６は、任意のサポートされるデバイスのためのメッセージベースのハンドシェイク仕様をデコードするように動作可能であってもよく、情報を使用して、下流ポート上のプロトコルを制御してもよい。このように、ＵＳＢハブ１００は、最適ベンダまたは製品特有のメッセージベースのハンドシェイク充電プロトコルを実装してもよい。
【００３４】
ステップ４１８では、ＵＳＢハブ１００は、例えば、下流ポートのための具体的抵抗、電圧、または電流を設定することによって、カスタム電気ハンドシェイクプロトコルを使用して、新しくアタッチされたデバイスを充電してもよい。ある実施形態では、本プロトコルの詳細は、「充電仕様」列内の「電気信号伝達仕様」（例えば、行３）としてデータベース２００内に保存されてもよい。電気信号伝達仕様は、ＵＳＢ構成要素によって実装されるカスタム電気ハンドシェイクプロトコルを記述する、命令、記述子、または複数の命令／記述子を備えてもよい。必要とされる命令／記述子の数は、実装依存であってもよく、ＵＳＢハブ１００によってサポートされるデバイスの数に基づいて変動してもよい。制御プロセッサ１０６は、任意のサポートされるデバイスのための電気信号伝達仕様をデコードするように動作可能であってもよく、情報を使用して、下流ポート上のプロトコルを制御してもよい。このように、ＵＳＢハブ１００は、最適ベンダまたは製品特有の電気ハンドシェイク充電プロトコルを実装してもよい。
データセキュリティ
【００３５】
セキュアな設備では、セキュアなデータの窃盗は、主要な懸念である。キーボード、マウス、またはプリンタを接続するために使用される、ＵＳＢポートは記憶デバイスに接続するためにまた、使用されることができ、そこで、大量のデータが、非常に短時間でダウンロードされることができる。不正データアクセスを禁止するために、ＵＳＢハブ１００のある実施形態は、データセキュリティ特徴を実装してもよい。例えば、ＵＳＢハブ１００は、デバイスが、例えば、キーボード、マウス、または記憶デバイスであるかどうかを判定してもよい。ＵＳＢハブ１００は、デバイスのクラスを認めることによって、列挙の間、本情報を得てもよい。ＵＳＢハブ１００は、次いで、データが記憶デバイスに転送され得ないように、記憶デバイスを選択的にブロックしてもよい。ある実施形態では、ＵＳＢハブ１００は、デバイスが完全に列挙しないように、接続プロセスを停止することによって、記憶デバイスをブロックしてもよい。他の実施形態では、ＵＳＢハブ１００は、デタッチイベントを強制することによって、記憶デバイスをブロックしてもよい。さらに他の実施形態では、ＵＳＢハブ１００は、非常に低速における通信への接続を強制することによって、記憶デバイスをブロックしてもよい。本後者の特徴は、接続を完全にブロックし得ないが、大量のデータが短時間でダウンロードされることを可能にしないことによって、データセキュリティを提供し得る。ＵＳＢハブ１００は、記憶デバイスが接続を試みるとき、これらの異なるブロッキングスキームを実装してもよい。同一または異なる実施形態では、全てのプリンタクラスデバイスは、ブロックされてもよい。同一またはさらに他の実施形態では、ＢＵＬＫ  ＯＵＴエンドポイント（すなわち、発信データ）を伴う全てのデバイスは、ブロックされてもよい。したがって、ＵＳＢハブ１００は、接続を潜在的に危険なデバイスタイプからブロックすることによって、データセキュリティを提供してもよい。逆に言えば、ＵＳＢハブ１００は、キーボードまたはマウスデバイスが、列挙し、正常に動作することを可能にし得る。
【００３６】
他の実施形態では、ＵＳＢハブ１００は、ＵＳＢ間ブリッジとして作用することによって、データセキュリティを提供してもよい。例えば、デバイスがＵＳＢハブ１００の下流ポート１１６ａ−ｄのうちの１つへの接続を試みるとき、ＵＳＢハブ１００は、接続を試みるデバイスのタイプを判定してもよい。本実施形態では、ＵＳＢハブ１００は、キーボードおよびマウス以外の全デバイスをブロックしてもよい。キーボードまたはマウスが下流ポート１１６ａ−ｄのうちの１つへの接続を試みるとき、ＵＳＢハブ１００は、それぞれ、ポートをエミュレーションキーボードまたはエミュレーションマウスとして列挙してもよい。本シナリオでは、制御プロセッサ１０６は、ＵＳＢキーボードまたはＵＳＢマウスをエミュレートするソフトウェアを実装してもよく、ＵＳＢハブ１００は、次いで、ホストまたはデバイスのいずれもＵＳＢ間ブリッジについて把握することなく、上流ホストポートとキーボード／マウスデバイスとの間のトラフィックを管理してもよい。例えば、制御プロセッサ１０６は、マルチプレクサ／デマルチプレクサ１１４ａ−ｄを制御し、デバイスからホストに送信されるデータを、ＵＳＢハブコア１０２にではなく、制御プロセッサ１０６にダイレクトさせてもよい。制御プロセッサ１０６は同様に、上流ポート１０４を介して、ホストからの伝送を受信可能であろう。マウス／キーボードデバイスをエミュレートすることによって、制御プロセッサ１０６は、安全データトラフィックのみを可能にし得る。したがって、データトラフィックは、一方向であってもよく、双方向トラフィックは、ブリッジによって終了されてもよい。ある実施形態によると、特殊ドライバを要求し得る、新世代デバイスの特殊モードまたは機能は、ＵＳＢ間ブリッジによってブロックされてもよい。
【００３７】
図５は、本開示のある実施形態による、ＵＳＢハブ内における高度データ記憶セキュリティを提供するための例示的方法５００のフロー図を図示する。一実施形態によると、方法５００は、好ましくは、ステップ５０２から開始する。前述のように、本開示の教示は、ＵＳＢハブ１００の種々の構成において実装されてもよい。したがって、方法５００のための好ましい初期化点および方法５００を構成するステップ５０２−５２６の順序は、選定される実装に依存してもよい。
【００３８】
ステップ５０２では、ＵＳＢハブ１００は、初期化してもよい。例えば、ＵＳＢハブ１００は、電源がオンにされてもよく（電源またはＵＳＢホストへの接続を介して）、ＵＳＢハブコア１０２は、初期化してもよい。ステップ５０４では、ＵＳＢハブ１００は、持続的にチェックし、下流デバイスが、例えば、下流ポート１１６ａ−ｄのうちの１つにアタッチされたかどうかを判定してもよい。下流デバイスがアタッチされていない場合、ＵＳＢハブ１００は、ステップ５０４に戻って、下流デバイスが検出されるまで、このように継続してもよい。下流デバイス接続の検出に応じて、ＵＳＢハブ１００は、ステップ５０６において、検出されたデバイスに接続してもよく、ステップ５０８において、デバイスを列挙してもよい。列挙の間、ＵＳＢハブ１００は、新しくアタッチされたデバイスのＶＩＤ、ＰＩＤ、およびデバイスクラスを読み取ってもよい。
【００３９】
ステップ５１０では、ＵＳＢハブ１００は、例えば、構成テーブル３００内の「データセキュリティ？」値をチェックすることによって、データセキュリティ特徴がイネーブルにされているかどうかを判定してもよい。「データセキュリティ？」値がイネーブルにされていない場合、方法５００は、ステップ５１２に進み、標準的ＵＳＢプロトコルに従って、デバイスを列挙してもよい。「データセキュリティ？」値がイネーブルにされている場合、方法５００は、ステップ５１４に進み、例えば、構成テーブル３００内の「データセキュリティレベル２？」値をチェックすることによって、データセキュリティレベル２特徴（すなわち、ＵＳＢ間ブリッジ特徴）がイネーブルにされているかどうかを判定してもよい。イネーブルにされていない場合、方法５００は、ステップ５１６に進んでもよく、ＵＳＢハブ１００にアタッチを試みるデバイスがデータセキュリティ特徴によってブロックされるべきであるクラスまたはタイプであるかどうかを判定してもよい。一実施形態では、ＵＳＢハブ１００は、データセキュリティ特徴がイネーブルにされているとき、構成テーブル３００内の「データセキュリティ仕様」値（ＤＳ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ）を使用して、ブロックされるべきであるデバイスのクラスまたはタイプを判定してもよい。例えば、限定ではないが、ＤＳ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、ブロックされるべきであるデバイスクラス（例えば、大容量記憶、プリンタ等）またはデバイスのタイプ（例えば、ＢＵＬＫＯＵＴエンドポイントを伴うデバイス等）のリストを含有してもよい。
【００４０】
方法５００は、ステップ５１６において、ＤＳ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ内の本情報を使用して、ＵＳＢハブ１００への接続を試みるデバイスがブロックされるべきであるかどうかを判定してもよい。ＵＳＢハブ１００への接続を試みるデバイスがＤＳ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ内でリスト化されたそれらのデバイス内にない場合、方法５００は、ステップ５１２に進み、標準的ＵＳＢプロトコルに従って、デバイスを列挙してもよい。そうでなければ、方法５００は、ステップ５１８に進み、データセキュリティ特徴が前述の「低速」ブロッキング特徴を実装するかどうかを判定してもよい。ある実施形態では、本構成オプションは、ＤＳ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ構成値内に提供される（ブロックされるべきであるデバイスクラス／タイプとともに）。代替実施形態では、構成テーブル３００は、別個の「低速ブロッキング？」構成オプションを含有してもよい。ステップ５１８において、ＵＳＢハブ１００が、低速ブロッキング特徴がイネーブルにされていることを判定する場合、方法５００は、ステップ５２２に進んでもよく、そこで、デバイスは、列挙してもよく、低速デバイスとして構成されてもよい。ステップ５１８において、ＵＳＢハブ１００が、低速ブロッキング特徴がイネーブルにされていないことを判定する場合、方法５００は、ステップ５２０に進み、そこで、デバイス接続は、ブロックされてもよい。
【００４１】
ステップ５１４に戻って、ＵＳＢハブ１００が、レベル２セキュリティ特徴がイネーブルにされていることを判定する場合、方法５００は、ステップ５２４に進んでもよく、ＵＳＢハブ１００にアタッチを試みるデバイスがレベル２セキュリティ特徴によってブロックされるべきであるクラスまたはタイプであるかどうかを判定してもよい。方法５００は、ステップ５２４において、ステップ５１６に関して議論されるものと類似様式で、判定を行ってもよい。ＵＳＢハブ１００は、アタッチを試みるデバイスがブロックされるべきであることを判定する場合、方法５００は、ステップ５１２に進んでもよく、そこで、デバイス接続は、ブロックされてもよい。そうでなければ、方法５００は、ステップ５２６に進んでもよく、そこで、ＵＳＢハブ１００は、ＵＳＢ間ブリッジを確立してもよい（前述のように）。
ベンダマッチング
【００４２】
ＵＳＢハブ１００は、１つまたはそれを上回るベンダによって製造されるデバイスへの選好を与える、ベンダマッチング特徴を提供してもよい。例えば、好ましいベンダによって製造されるデバイスは、最高帯域幅接続または利用可能な最大電力が与えられてもよい。対照的に、好ましくないベンダによって製造されるデバイスは、より低い帯域幅接続またはより低い電力接続が与えられてもよい。このように、好ましいベンダによって提供されるデバイスは、優れた性能を有すると考えられ得る。
【００４３】
図６は、本開示のある実施形態による、ＵＳＢハブ内における高度ベンダマッチングを提供するための例示的方法６００のフロー図を図示する。一実施形態によると、方法６００は、好ましくは、ステップ６０２から開始する。前述のように、本開示の教示は、ＵＳＢハブ１００の種々の構成において実装されてもよい。したがって、方法６００のための好ましい初期化点および方法６００を構成するステップ６０２−６１６の順序は、選定される実装に依存してもよい。
【００４４】
ステップ６０２では、ＵＳＢハブ１００は、初期化してもよい。例えば、ＵＳＢハブ１００は、電源がオンにされてもよく（電源またはＵＳＢホストへの接続を介して）、ＵＳＢハブコア１０２は、初期化してもよい。ステップ６０４では、ＵＳＢハブ１００は、持続的にチェックし、下流デバイスが、例えば、下流ポート１１６ａ−ｄのうちの１つにアタッチされたかどうかを判定してもよい。下流デバイスがアタッチされていない場合、ＵＳＢハブ１００は、ステップ６０４に戻って、下流デバイスが検出されるまで、このように継続してもよい。下流デバイス接続の検出に応じて、ＵＳＢハブ１００は、ステップ６０６において、検出されたデバイスに接続してもよく、ステップ６０８において、デバイスを列挙してもよい。列挙の間、ＵＳＢハブ１００は、新しくアタッチされたデバイスのＶＩＤおよびＰＩＤを読み取ってもよい。
【００４５】
ステップ６１０では、ＵＳＢハブ１００は、例えば、構成テーブル３００内の「選択肢ベンダ？」値をチェックすることによって、選択肢ベンダ特徴がイネーブルにされているかどうかを判定してもよい。「選択肢ベンダ？」値がイネーブルにされていない場合、方法６００は、ステップ６１２に進み、標準的ＵＳＢプロトコルに従って、デバイスを列挙してもよい。「選択肢ベンダ？」値がイネーブルにされている場合、方法６００は、ステップ６１４に進み、接続を試みるデバイスが選択肢ベンダによって提供されるかどうかを判定してもよい。一実施形態によると、ＵＳＢハブ１００は、構成テーブル３００内の「選択肢ベンダ仕様」値（ＶｏＣ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ）を使用して、好ましいベンダであるベンダ（または複数のベンダ）を判定してもよい。例えば、限定ではないが、ＶｏＣ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、好ましいベンダに対応する、１つまたはそれを上回るベンダＩＤ（ＶＩＤ）のリストを含有してもよい。本実施形態では、ＵＳＢハブ１００は、単に、接続を試みるデバイスのＶＩＤがＶｏＣ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎリスト内のＶＩＤにマッチするかどうかを判定してもよい。代替実施形態では、ＵＳＢハブ１００は、マッチングＶＩＤ／ＰＩＤ組み合わせに関してデータベース２００を検索し、マッチが見出される場合、データベース２００のマッチング行内の「選択肢ベンダ？」列がイネーブルにされているかどうかを判定することによって、接続を試みるデバイスが好ましいベンダによって提供されるかどうかを判定してもよい。ステップ６１４において、ＵＳＢハブ１００が、デバイスが好ましいベンダによって提供されることを判定する場合、方法６００は、ステップ６１２に進み、標準的（または高度、例えば、より多くの電力等）ＵＳＢプロトコルに従って、デバイスを列挙してもよい。ステップ６１４において、ＵＳＢハブ１００が、デバイスが好ましいベンダによって提供されないことを判定する場合、方法６００は、ステップ６１６に進んでもよく、準最適電力および／または速度構成でデバイスを列挙してもよい。一実施形態では、構成テーブル３００内のＶｏＣ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、好ましくないベンダによって提供されるデバイスに割り当てられるべき設定を提供する（例えば、デバイスを準最適電力、速度、または両方で構成するかどうか）。
デバイス認証
【００４６】
ＵＳＢハブ１００は、デバイスが適切な証明書を伴わない上流ＵＳＢホストにアタッチすることを防止する、デバイス認証特徴を提供してもよい。一実施形態では、デバイスがＵＳＢハブ１００へのアタッチを試みるとき、ＵＳＢハブ１００は、ＵＳＢホストスタック＋ミニスケジューラ＋メッセージパイプ１０８を利用してもよく、デバイスを列挙してもよく、ＵＳＢハブ１００は、ＵＳＢホストとして、デバイスに接続する。本実施形態では、ＵＳＢハブ１００は、認証チャレンジを含む、トランザクションを開始してもよい。デバイスが、認証チャレンジに応答しない、または正しくなく応答する場合、ＵＳＢハブ１００は、接続をブロックしてもよい。いくつかの実施形態では、ＵＳＢハブ１００は、デバイスが第１のチャレンジに正しくなく応答する場合、１つを上回る認証チャレンジを発行するように構成されてもよい。
【００４７】
図７は、本開示のある実施形態による、ＵＳＢハブ内における高度デバイス認証を提供するための例示的方法７００のフロー図を図示する。一実施形態によると、方法７００は、好ましくは、ステップ７０２から開始する。前述のように、本開示の教示は、ＵＳＢハブ１００の種々の構成において実装されてもよい。したがって、方法７００のための好ましい初期化点および方法７００を構成するステップ７０２−７１８の順序は、選定される実装に依存してもよい。
【００４８】
ステップ７０２では、ＵＳＢハブ１００は、初期化してもよい。例えば、ＵＳＢハブ１００は、電源がオンにされてもよく（電源またはＵＳＢホストへの接続を介して）、ＵＳＢハブコア１０２は、初期化してもよい。ステップ７０４では、ＵＳＢハブ１００は、持続的にチェックし、下流デバイスが、例えば、下流ポート１１６ａ−ｄのうちの１つにアタッチされたかどうかを判定してもよい。下流デバイスがアタッチされていない場合、ＵＳＢハブ１００は、ステップ７０４に戻って、下流デバイスが検出されるまで、このように継続してもよい。下流デバイス接続の検出に応じて、ＵＳＢハブ１００は、ステップ７０６において、検出されたデバイスに接続してもよく、ステップ７０８において、デバイスを列挙してもよい。一実施形態では、ＵＳＢハブ１００は、ＵＳＢハブ１００がＵＳＢホストとしてデバイスに接続するように、ＵＳＢホストスタック＋ミニスケジューラ＋メッセージパイプ１０８を利用して、デバイスを列挙してもよい。列挙の間、ＵＳＢハブ１００は、新しくアタッチされたデバイスのＶＩＤおよびＰＩＤを読み取ってもよい。
【００４９】
ステップ７１０では、ＵＳＢハブ１００は、新しくアタッチされたデバイスが認証を要求するかどうかを判定してもよい。例えば、ＶＩＤ／ＰＩＤが、制御プロセッサ１０６に提供されてもよく、制御プロセッサ１０６は、データベース２００にクエリし、新しくアタッチされたデバイスのＶＩＤ／ＰＩＤにマッチするエントリ（行）を含有するかどうかと、任意のマッチングエントリが、デバイスが認証を要求する（すなわち、列Ｇ「認証要求？」がイネーブルにされている）ことを示すかどうかとを判定してもよい。データベース２００内にＶＩＤ／ＰＩＤマッチが存在しない場合、方法７００は、ステップ７１０からステップ７１２に進んでもよく、ＵＳＢハブ１００がＵＳＢホストとしてデバイスに接続するインスタンスに関連する前述の任意の様式で、デバイスが上流ＵＳＢポート１０４に接続することを可能にしてもよい。ＵＳＢハブ１００が、ステップ７１０において、データベース２００内にＶＩＤ／ＰＩＤマッチが存在することを判定する場合、方法７００は、ステップ７１０からステップ７１４に進んでもよい。
【００５０】
ステップ７１４では、ＵＳＢハブ１００は、認証チャレンジをデバイスに発行してもよい。認証チャレンジは、当業者に公知の任意の数の形態をとってもよく、概して、新しくアタッチされたデバイスＶＩＤ／ＰＩＤに対応するデータベース２００内の認証仕様（列Ｈ）内に定義されてもよい。例えば、認証仕様は、デバイスが、特定のピン番号またはパスワードで認証チャレンジに応答すべきであることを示してもよい。他の実施形態では（すなわち、ＵＳＢハブ１００がインターネットに接続される）、認証仕様は、限定ではないが、遠隔認証等を含む、より複雑な認証方法を提供してもよい。
【００５１】
ステップ７１６では、ＵＳＢハブ１００は、デバイスが認証チャレンジに正しく応答したかどうかを判定してもよい。デバイスが正しい応答を提供した場合、方法７００は、ステップ７１６からステップ７１２に進んでもよく、ＵＳＢハブ１００がＵＳＢホストとしてデバイスに接続したインスタンスに関連する前述の任意の様式で、デバイスが上流ＵＳＢポート１０４に接続することを可能にしてもよい。デバイスが正しくない応答を提供した場合、ＵＳＢハブ１００は、認証仕様が再試行を可能にする場合、ステップ７１４に戻ることによって（点線７２０）、チャレンジの再発行を試みてもよい。そうでなければ、方法７００は、ステップ７１８に進んでもよく、デバイスは、上流ポート１０４においてＵＳＢホストに接続することが不可能にされる。
データ捕捉／デバッグ
【００５２】
ＵＳＢハブ１００は、データ捕捉および／またはデバッグ特徴を提供してもよい。例えば、ＵＳＢハブ１００は、ある様式で、あるＵＳＢトラフィックに応答するようにプログラムされてもよい。代替として、または加えて、ＵＳＢハブ１００は、ある下流ポートから別の下流ポートにトラフィックを反映させるようにプログラムされてもよい。
【００５３】
一実施形態によると、ＵＳＢハブ１００は、あるタイプのＵＳＢトラフィックに自動応答を提供してもよい。ＵＳＢハブ１００は、例えば、構成テーブル３００内の「自動応答？」値をチェックすることによって、自動応答特徴がイネーブルにされているかどうかを判定してもよい。一実施形態では、ＵＳＢハブ１００は、構成テーブル３００内の「自動応答仕様」値（ＡＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ）を使用して、自動応答を要求するトランザクションおよび行われるべき応答を判定してもよい。例えば、限定ではないが、ＡＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、あるタイプのトラフィックに関して監視されるべき下流ポート、デバイスクラス（例えば、大容量記憶、プリンタ等）、またはデバイスのタイプ（例えば、ＢＵＬＫ  ＩＮエンドポイントを伴うデバイス等）のリストを含有してもよい。同様に、ＡＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、自動応答を受信すべきトラフィックのタイプ（例えば、ＢＵＬＫ  ＩＮパケット、ＣＯＮＴＲＯＬ  ＲＥＡＤ等）のリストを含有してもよい。さらに、ＡＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、規定されたトラフィックに遭遇すると、ＵＳＢハブ１００が提供すべき応答を提供してもよい。非限定的実施例として、ＡＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、下流ポート１１６ｃ上のＢＵＬＫ  ＩＮトランザクションのデータ位相がＮＡＫハンドシェイクを受信すべきであることを規定してもよい。本実施例では、ＵＳＢハブ１００は、下流ポート１１６ｃを監視してもよく、デバイスによるＢＵＬＫ  ＩＮデータの転送後、ＵＳＢホスト１００は、そうでなければ上流ホストから伝送されるであろう（信号１１０ｃを介してＵＳＢハブコア１０２に接続される、マルチプレクサ／デマルチプレクサ１１４ｃ入力を介して）応答ではなく、マルチプレクサ／デマルチプレクサ１１４ｃにＮＡＫハンドシェイクを制御プロセッサ１０６から下流ポート１１６ｃにパスさせてもよい。マルチプレクサ／デマルチプレクサ１１４ａ−ｄを制御することによって、ＵＳＢ制御プロセッサ１０６は、自動応答をいずれかの方向（すなわち、上流または下流）に提供してもよい。
【００５４】
同一または代替実施形態によると、ＵＳＢハブ１００は、ある下流ポートから別の下流ポートにデータ反映を提供してもよい（ＵＳＢ仕様に従って、上流ポート１０４において発生する全てのトラフィックは、全下流デバイスにブロードキャストされる）。ＵＳＢハブ１００は、例えば、構成テーブル３００内の「データ反映？」値をチェックすることによって、データ反映特徴がイネーブルにされているかどうかを判定してもよい。一実施形態では、ＵＳＢハブ１００は、構成テーブル３００内の「データ反映仕様」値（ＤＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎ）を使用して、データ反映を要求するトランザクションを判定してもよい。例えば、限定ではないが、ＤＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、データが反映されるべき下流ポート、デバイスクラス（例えば、大容量記憶、プリンタ等）、またはデバイスのタイプ（例えば、ＢＵＬＫ  ＩＮエンドポイントを伴うデバイス等）のリストを含有してもよい。さらに、ＤＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、データが反映されるべき宛先ポートを規定してもよい。
【００５５】
図８は、本開示のある実施形態による、データ反映特徴を使用したＵＳＢハブ８００内の例示的データ反映のブロック図を図示する。本実施例では、ＤＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎは、下流ポートＤからの信号８１０が下流ポートＡ上の信号８１２として反映されるべきであることを規定してもよい。マルチプレクサ／デマルチプレクサ８１４ａおよび８１４ｄを制御することによって、ＵＳＢ制御プロセッサ１０６は、信号８１０から８１２へのデータ反映（点線）を提供してもよい。同時に、下流ポート８１０上の信号伝達８１０は、接続８１６を介して、ＵＳＢハブコア８０２まで（続いて、上流ポート８１８に）パスされる。本実施形態によると、下流ポートＡは、例えば、デバッグまたは他の目的のために、反映されたデータを監視可能なデバイスに接続されてもよい。
【００５６】
代替実施形態では、データ反映は、ＵＳＢハブ８００上の物理的入力を介して、制御されてもよい。そのような実施形態では、制御プロセッサは、物理的スイッチに接続される、汎用Ｉ／Ｏピンを備えてもよい。ＤＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎと同様に、これらの物理的スイッチは、（１）データ反映がイネーブルにされているかどうかと、（２）データ反映特徴のための発信元および宛先ポートの一方または両方を規定してもよい。例えば、本開示の４−ポートハブ実施形態（図８等に示されるように）は、物理的「ＤＲオン／オフ」ボタンと、４−位置「ＤＲ発信元」スイッチと、４−位置「ＤＲ宛先」スイッチとを提供してもよい。ＵＳＢハブ８００のユーザは、「ＤＲ発信元」スイッチを下流ポートＤに設定し、「ＤＲ宛先」スイッチを下流ポートＡに設定してもよく、「ＤＲオン／オフ」スイッチをオン位置にすることによって、データ反映をイネーブルにしてもよい。これらの設定を用いることで、ＵＳＢハブ８００は、下流ポートＤからのデータが下流ポートＡに反映されるであろうという点において、図８に関して説明されるように挙動するであろう。本開示のある実施形態は、ＤＲ＿Ｓｐｅｃｉｆｉｃａｔｉｏｎとともに、物理的スイッチの使用を組み合わせ、データ反映特徴の種々のレベルの物理的対ソフトウェア制御を提供してもよい。
役割スイッチング
【００５７】
ＦｌｅｘＣｏｎｎｅｃｔは、Ｍｉｃｒｏｃｈｉｐ  ＵＳＢハブに一意の特徴である。本特徴は、ハブが、上流および下流ポートとして作用する、物理的ポートを動的に変更することを可能にする。これは、システム設計者が、２つの専用コネクタの要件を伴わずに、ＵＳＢホストおよびＵＳＢデバイスとして作用する製品を開発することを可能にする。これはまた、本能力を１つのポート上に有するシステムが、そのポートに接続されるデバイスをＦｌｅｘＣｏｎｎｅｃｔハブを通して拡張させることを可能にする。ＭｉｃｒｏｃｈｉｐのＦｌｅｘＣｏｎｎｅｃｔ特徴はさらに、ＭｉｃｒｏｃｈｉｐアプリケーションノートＡＮ１７００に説明されており、その全体は、参照することによって本明細書に組み込まれる。現在、ＦｌｅｘＣｏｎｎｅｃｔ特徴は、デバイスおよびホストの両方がＦｌｅｘＣｏｎｎｅｃｔアウェアであることを要求する。
【００５８】
ＵＳＢハブ１００は、ＵＳＢハブ１００の上流ポート１０４に接続されるＵＳＢホストは、ＦｌｅｘＣｏｎｎｅｃｔアウェアではない、または上流ＵＳＢホストが存在しない場合、ＵＳＢハブ１００に接続されるＦｌｅｘＣｏｎｎｅｃｔデバイスが役割をスイッチさせ、ＵＳＢホストとして作用することを可能にする、役割スイッチング特徴を実装してもよい。
【００５９】
図９は、本開示のある実施形態による、ＵＳＢハブ内における高度役割スイッチングを提供するための例示的方法９００のフロー図を図示する。一実施形態によると、方法９００は、好ましくは、ステップ９０２から開始する。前述のように、本開示の教示は、ＵＳＢハブ１００の種々の構成において実装されてもよい。したがって、方法９００のための好ましい初期化点および方法９００を構成するステップ９０２−９１８の順序は、選定される実装に依存してもよい。
【００６０】
ステップ９０２では、ＵＳＢハブ１００は、初期化してもよい。例えば、ＵＳＢハブ１００は、電源がオンにされてもよく（電源またはＵＳＢホストへの接続を介して）、ＵＳＢハブコア１０２は、初期化してもよい。ステップ９０４では、ＵＳＢハブ１００は、持続的にチェックし、下流デバイスが、例えば、下流ポート１１６ａ−ｄのうちの１つにアタッチされたかどうかを判定してもよい。下流デバイスがアタッチされていない場合、ＵＳＢハブ１００は、ステップ９０４に戻って、下流デバイスが検出されるまで、このように継続してもよい。下流デバイス接続の検出に応じて、ＵＳＢハブ１００は、ステップ９０６において、検出されたデバイスに接続してもよく、ステップ９０８において、デバイスを列挙してもよい。ＵＳＢハブ１００は、ＵＳＢホストスタック＋ミニスケジューラ＋メッセージパイプ１０８を利用して、ＵＳＢハブ１００がＵＳＢホストとしてデバイスに接続するように、デバイスを列挙してもよい。列挙の間、ＵＳＢハブ１００は、新しくアタッチされたデバイスのＶＩＤおよびＰＩＤを読み取ってもよい。
【００６１】
ステップ９１０では、ＵＳＢハブ１００は、新しくアタッチされたデバイスがＦｌｅｘＣｏｎｎｅｃｔアウェアであるかどうかを判定してもよい。例えば、ＶＩＤ／ＰＩＤが、制御プロセッサ１０６に提供されてもよく、制御プロセッサ１０６は、データベース２００にクエリし、新しくアタッチされたデバイスのＶＩＤ／ＰＩＤにマッチするエントリ（行）を含有するかどうかと、任意のマッチングエントリが、デバイスがＦｌｅｘＣｏｎｎｅｃｔアウェアである（すなわち、列Ｉ「ＦｌｅｘＣｏｎｎｅｃｔ？」がイネーブルにされている）ことを示すかどうかとを判定してもよい。データベース２００内にＶＩＤ／ＰＩＤマッチが存在しない場合、方法９００は、ステップ９１０からステップ９１２に進んでもよく、ＵＳＢハブ１００がＵＳＢホストとしてデバイスに接続するインスタンスに関連する前述の任意の様式で、デバイスが上流ＵＳＢポート１０４に接続することを可能にしてもよい。ＵＳＢハブ１００が、ステップ９１０において、データベース２００内にＶＩＤ／ＰＩＤマッチが存在し、マッチがＦｌｅｘＣｏｎｎｅｃｔアウェアデバイスを示すことを判定する場合、方法９００は、ステップ９１０からステップ９１４に進んでもよい。
【００６２】
ステップ９１４では、ＵＳＢハブ１００は、ＦｌｅｘＣｏｎｎｅｃｔアウェアデバイスがＵＳＢホストになることを所望するかどうかを判定してもよい。例えば、ＵＳＢハブ１００は、ＣＯＮＴＲＯＬ  ＲＥＡＤトランザクションを開始し、デバイスによって提供される応答に基づいて、役割スイッチングが行われるべきであることを判定してもよい。ある実施形態では、デバイスは、常時、役割スイッチングを生じさせるように構成されてもよい。他の実施形態では、デバイスは、デバイスのユーザが、デバイスがＵＳＢホストとなることを要求し得るように、ユーザインターフェースを含んでもよい。例えば、デバイスは、ＵＳＢホストとしてＵＳＢハブ１００の上流ポート１０４に接続される自動車インフォテインメントシステムのヘッドユニットを伴うＵＳＢハブ１００に接続される、スマートフォンであってもよい。スマートフォンは、ユーザがスマートフォンからインフォテインメントシステムを制御することを選定し得るように、ユーザにスイッチを提示してもよい。ステップ９１４において、方法９００が、役割スイッチングが要求されないことを判定する場合、方法９００は、ステップ９１０からステップ９１２に進んでもよく、ＵＳＢハブ１００がＵＳＢホストとしてデバイスに接続したインスタンスに関連する前述の任意の様式で、デバイスが上流ＵＳＢポート１０４に接続することを可能にしてもよい。
【００６３】
ステップ９１４において、方法９００が、役割スイッチングが要求されることを判定する場合、方法９００は、ステップ９１６に進んでもよい。ステップ９１６では、ＵＳＢハブ１００は、現在のＵＳＢホスト（存在する場合）をデバイスモードにスイッチさせてもよい。例えば、ＵＳＢハブ１００は、ＵＳＢ  ＯＴＧホストネゴシエーションプロトコルまたはセッション要求プロトコルを使用して、方向の変更を開始してもよい。代替として、ＵＳＢハブ１００は、パケットをＵＳＢホストに送信し、ホストが役割をスイッチすべきであることを示してもよい。ステップ９１８では、ＵＳＢハブは、新しくアタッチされたデバイスをホストモードにスイッチさせてもよい。例えば、ＵＳＢハブ１００は、ＵＳＢ  ＯＴＧホストネゴシエーションプロトコルまたはセッション要求プロトコルまたはＭｉｃｒｏｃｈｉｐ  ＦｌｅｘＣｏｎｎｅｃｔプロトコルを使用して、方向の変更を開始してもよい。代替として、ＵＳＢハブ１００は、パケットをデバイスに送信し、役割スイッチを示してもよい。ステップ９１８では、ＵＳＢハブ１００はまた、バッテリ充電のために引き出すことができる電力の量をデバイスに知らせてもよい。新しいホストは、それらを制御することができるように、バス上の全デバイスを列挙してもよい。スマートフォンおよび自動車インフォテインメントシステムを含む、前述の実施例では、本役割スイッチングは、スマートフォンが、例えば、音楽を再生する、自動車内の音量を調節する等によって、インフォテインメントシステムを制御することを可能にしてもよい。新しいホスト（例えば、スマートフォン）が切断される場合、ＵＳＢハブ１００は、古いホスト（存在する場合）に役割をスイッチすることを知らせ、再び、ＵＳＢホストとして作用してもよい。
【００６４】
図４−７および９は、その中に描写される方法に関して行われるべき特定の数のステップを開示するが、それらの方法は、描写されるものより多いまたはより少ないステップで実行されてもよい。加えて、図４−７および９は、そこで描写される方法に関して行われるステップのある順序を開示するが、ステップは、任意の好適な順序で完了されてもよい。
【００６５】
本明細書に開示される方法およびシステムを使用して、オペレーティングシステムまたはＵＳＢスタック／ドライバへの変更を要求せず、高度バッテリ充電、データ記憶セキュリティ、ベンダマッチング、デバイス認証、データ捕捉／デバッグ、および役割スイッチングを提供することができる、ＵＳＢハブが、提供されることができる。
【００６６】
本開示は、詳細に説明されたが、種々の変更、代用、および改変が、添付の請求項によって定義される本開示の精神および範囲から逸脱することなく、そこに成され得ることを理解されたい。
【図１】
2018514871.tif 000003
【図２】
2018514871.tif 000004
【図３】
2018514871.tif 000005
【図４】
2018514871.tif 000006
【図５】
2018514871.tif 000007
【図６】
2018514871.tif 000008
【図７】
2018514871.tif 000009
【図８】
2018514871.tif 000010
【図９】
2018514871.tif 000011
【国際調査報告】
2018514871.tif 000012
2018514871.tif 000013