(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて物理的な周辺機器デバイスをエミュレートするエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスであって、
構成記述子を格納するメモリと、
ＵＳＢ−シリアルインターフェイスチップと、
入力および出力デバイスを含む異なる種類のＵＳＢデバイスのための複数のＵＳＢプロファイルをサポートすることにより、複数の物理的なＵＳＢ周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能である、ＵＳＢサポートを有する１つ以上のマイクロコントローラと、を含み、
前記１つ以上のマイクロコントローラは、
エミュレートされる特定の物理的なＵＳＢ周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、当該特定の記述子から特定される前記特定の物理的なＵＳＢ周辺機器デバイスのモデルのインスタンスをエミュレートする手段と、
テスト対象のコンピュータデバイスにＵＳＢプロトコルによって応答する手段と、
第２のプロトコルを使用して、前記物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートするテスト実行コンピュータデバイスと通信する手段とを備える、エミュレートＵＳＢハードウェアデバイス。
【請求項２】
前記１つ以上のマイクロコントローラはさらに、前記テスト実行コンピュータデバイスとインタラクションするデバイスエミュレーションアプリケーションを実行する手段を備え、前記デバイスエミュレーションアプリケーションは、前記マイクロコントローラ上に格納されるファームウェアを書換えることなく異なる物理的なＵＳＢ周辺機器デバイスをエミュレートするよう、前記エミュレートＵＳＢハードウェアデバイスが前記テスト実行コンピュータデバイスによって再構成されることを可能にする、請求項１に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項３】
前記エミュレートＵＳＢハードウェアデバイスのために付加的な機能を提供する、前記１つ以上のマイクロコントローラ上の１つ以上の入出力ポートをさらに含む、請求項１または２に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項４】
前記１つ以上の入出力ポートは、前記エミュレートＵＳＢハードウェアデバイスへの電力を制御する、請求項３に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項５】
前記１つ以上の入出力ポートは非ＵＳＢ周辺機器デバイスのためのシリアルポートである、請求項３または４に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項６】
前記１つ以上の入出力ポートは、ＰＯＳキャッシュドロアと通信するポイントオブセール（ＰＯＳ： Point of Sale）キャッシュドロアポートである、請求項３または４に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項７】
前記１つ以上の入出力ポートは、前記エミュレートＵＳＢハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項３から６のいずれか１項に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項８】
前記１つ以上のマイクロコントローラはさらに、スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、前記テスト対象のコンピュータデバイスに前記特定の物理的なＵＳＢ周辺機器デバイスまたは前記エミュレートされたＵＳＢハードウェアデバイスのいずれかを接続する手段を備える、請求項１から７のいずれか１項に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項９】
周辺機器デバイスインタラクションをテストするためのコンピュータシステムであって、
テストフレームワーク、デバイスエミュレーション、および、エミュレートＵＳＢハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、
テスト対象のコンピュータデバイスと、
入力および出力デバイスを含む異なる種類のＵＳＢデバイスのための複数のＵＳＢプロファイルをサポートすることによって複数の物理的なＵＳＢ周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能であり、かつ、前記テスト対象のコンピュータデバイスとの第１の物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートする少なくとも１つのエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスと、
第２の物理的なＵＳＢ周辺機器デバイスをエミュレートし、かつ、前記テスト対象のコンピュータデバイスとの前記第２の物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートする付加的なエミュレートＵＳＢハードウェアデバイスと、を備え、
前記テスト実行コンピュータデバイスは、
前記付加的なエミュレートＵＳＢハードウェアデバイスと前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスとの間を協調させる手段を、備え、
前記協調させる手段は、前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスからのデータを入力すると、前記付加的なエミュレートＵＳＢハードウェアデバイスからの当該データに対する応答の時間をはかる、または送信すべき当該応答を選択し、
前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスは、
エミュレートされる特定の物理的なＵＳＢ周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、前記特定の物理的なＵＳＢ周辺機器デバイスをエミュレートする手段と、
テスト対象のコンピュータデバイスにＵＳＢプロトコルによって応答する手段と、
第２のプロトコルを使用して、前記物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートする前記テスト実行コンピュータデバイスと通信する手段と、
を備える、コンピュータシステム。
【請求項１０】
前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスはさらに、ファームウェアを書換えることなく第２の物理的なＵＳＢ周辺機器デバイスをエミュレートするよう特定の記述子のセットを受け取る手段を備える、請求項９に記載のコンピュータシステム。
【請求項１１】
前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスはさらに、前記テスト実行コンピュータデバイスからのインタラクションを必要とすることなく、前記テスト対象のコンピュータデバイスから受け取られるあるメッセージに自動的に応答する手段を備える、請求項９または１０に記載のコンピュータシステム。
【請求項１２】
前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスはさらに、少なくとも１つの前記エミュレートＵＳＢハードウェアデバイスのために付加的な機能を提供する１つ以上のマイクロコントローラ上の１つ以上の入出力ポートを有するように構成される、請求項９から１１のいずれか１項に記載のコンピュータシステム。
【請求項１３】
前記１つ以上の入出力ポートは、前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスへの電力を制御する、請求項１２に記載のコンピュータシステム。
【請求項１４】
前記１つ以上の入出力ポートは非ＵＳＢ周辺機器デバイスのためのシリアルポートである、請求項１２または１３に記載のコンピュータシステム。
【請求項１５】
前記１つ以上の入出力ポートは、ＰＯＳキャッシュドロアと通信するポイントオブセール（ＰＯＳ： Point of Sale）キャッシュドロアポートである、請求項１２または１３に記載のコンピュータシステム。
【請求項１６】
前記１つ以上の入出力ポートは、前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項１２から１５のいずれか１項に記載のコンピュータシステム。
【請求項１７】
前記テスト実行コンピュータデバイスの前記テストフレームワークは、プレテストデータキャプチャ、テストケース実行、ならびに、ポストテストデータキャプチャおよび検証を含む、請求項９から１６のいずれか１項に記載のコンピュータシステム。
【請求項１８】
前記テスト対象のコンピュータデバイスとのＵＳＢ接続が、前記エミュレートＵＳＢハードウェアデバイスと、前記エミュレートＵＳＢハードウェアデバイスがエミュレートしている前記特定の物理的なＵＳＢ周辺機器デバイスとの間でスイッチングされることを可能にするＵＳＢスイッチングデバイスをさらに含む、請求項９から１７のいずれか１項に記載のコンピュータシステム。
【請求項１９】
入力および出力デバイスを含む異なる種類のＵＳＢデバイスのためにコンピュータシステムにおいてＵＳＢデバイスのＵＳＢプロトコルによるホスト接続をエミュレートするエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスであって、
構成記述子を格納するメモリと、
ＵＳＢ−シリアルインターフェイスチップと、
ソフトウェアを受け取ることによって物理的なＵＳＢデバイスのホスト接続をエミュレートするよう、ソフトウェアでプログラム可能である、ＵＳＢサポートを有する１つ以上のマイクロコントローラと、を含み、前記ソフトウェアは、前記１つ以上のマイクロコントローラにより実行されると、前記１つ以上のマイクロコントローラに、
ＵＳＢホストモードバス信号を構成することと、
シリアルバス上でＵＳＢフレームを開始することと、
デバイスエミュレーションプロセスにデバイス接続ステータスを示すことと、
物理的なＵＳＢデバイスと前記デバイスエミュレーションプロセスとの間でパケットを中継することと、
第２のプロトコルを使用して、前記物理的なＵＳＢデバイスのＵＳＢインタラクションをシミュレートするテスト実行コンピュータデバイスと通信することと、
スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、物理的なＵＳＢホストデバイスまたは前記エミュレートされるＵＳＢハードウェアデバイスのいずれかを前記物理的なＵＳＢデバイスに接続することを行なわせる、エミュレートＵＳＢハードウェアデバイス。
【請求項２０】
前記エミュレートＵＳＢハードウェアデバイスのために付加的な機能を提供する、１つ以上のマイクロコントローラ上の１つ以上の入出力ポートをさらに含む、請求項１９に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項２１】
前記１つ以上の入出力ポートは、前記エミュレートＵＳＢハードウェアデバイスへの電力を制御する、請求項２０に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項２２】
前記１つ以上の入出力ポートは非ＵＳＢ周辺機器デバイスのためのシリアルポートである、請求項２０または２１に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項２３】
前記１つ以上の入出力ポートは、ＰＯＳキャッシュドロアと通信するポイントオブセール（ＰＯＳ： Point of Sale）キャッシュドロアポートである、請求項２０または２１に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項２４】
前記１つ以上の入出力ポートは、前記エミュレートＵＳＢハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項２０から２３のいずれか１項に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項２５】
前記ソフトウェアは、前記１つ以上のマイクロコントローラにより実行されると、前記１つ以上のマイクロコントローラに、ファームウェアを書換えることなく物理的なＵＳＢ周辺機器デバイスをエミュレートするよう特定の記述子のセットを受け取ることを行なわせる、請求項１９から２４のいずれか１項に記載のエミュレートＵＳＢハードウェアデバイス。
【請求項２６】
周辺機器デバイスインタラクションおよびホスト接続をテストするためのコンピュータシステムであって、
テストフレームワーク、ホスト接続、および、エミュレートＵＳＢハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、
テスト対象のコンピュータデバイスと、
物理的なＵＳＢ周辺機器デバイスと、
入力および出力デバイスを含む異なる種類のＵＳＢデバイスのために物理的なＵＳＢデバイスのＵＳＢプロトコルによるホスト接続をエミュレートするようソフトウェアでプログラム可能である少なくとも１つのエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスと、を含み、
前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスは、
ＵＳＢホストモードバス信号を構成する手段と、
シリアルバス上でＵＳＢフレームを開始する手段と、
デバイスエミュレーションプロセスにデバイス接続ステータスを示す手段と、
前記物理的なＵＳＢ周辺機器デバイスと前記デバイスエミュレーションプロセスとの間でパケットを中継する手段と、
エミュレートされる特定の物理的なＵＳＢ周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、当該特定の記述子から特定される前記特定の物理的なＵＳＢ周辺機器デバイスのモデルのインスタンスをエミュレートする手段とを備える、コンピュータシステム。
【請求項２７】
前記テスト実行コンピュータデバイスは受け取られるデータを監視し、前記受け取られるデータをフィルタリングおよび表示する、請求項９に記載のコンピュータシステム。
【請求項２８】
前記物理的なＵＳＢ周辺機器デバイスとのＵＳＢ接続が、前記エミュレートＵＳＢハードウェアデバイスと前記エミュレートＵＳＢハードウェアデバイスがエミュレートしている物理的なホストとの間でスイッチングされることを可能にするＵＳＢスイッチングデバイスをさらに含む、請求項２６に記載のコンピュータシステム。
【請求項２９】
前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスはさらに、少なくとも１つの前記エミュレートＵＳＢハードウェアデバイスのために付加的な機能を提供する、前記１つ以上のマイクロコントローラ上の１つ以上の入出力ポートを有するように構成される、請求項２６に記載のコンピュータシステム。
【請求項３０】
前記１つ以上の入出力ポートは、前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスへの電力を制御する、請求項２９に記載のコンピュータシステム。
【請求項３１】
前記１つ以上の入出力ポートは非ＵＳＢ周辺機器デバイスのためのシリアルポートである、請求項２９または３０に記載のコンピュータシステム。
【請求項３２】
前記１つ以上の入出力ポートは、ＰＯＳキャッシュドロアと通信するポイントオブセール（ＰＯＳ： Point of Sale）キャッシュドロアポートである、請求項２９または３０に記載のコンピュータシステム。
【請求項３３】
前記１つ以上の入出力ポートは、前記少なくとも１つのエミュレートＵＳＢハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続する、請求項２９から３２のいずれか１項に記載のコンピュータシステム。
【請求項３４】
入力および出力デバイスを含む異なる種類のＵＳＢデバイスのための複数のＵＳＢプロファイルをサポートすることにより、複数の物理的なＵＳＢ周辺機器デバイスをエミュレートする方法をコンピュータに実行させるためのプログラムであって、
前記方法は、
エミュレートされる特定の物理的なＵＳＢ周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取るステップと、
受け取った当該特定の記述子から特定される前記特定の物理的なＵＳＢ周辺機器デバイスのモデルのインスタンスをエミュレートするステップと、
テスト対象のコンピュータデバイスにＵＳＢプロトコルによって応答するステップと、
第２のプロトコルを使用して、前記物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートするテスト実行コンピュータデバイスと通信するステップとを備える、プログラム。
【請求項３５】
入力および出力デバイスを含む異なる種類のＵＳＢデバイスのためにコンピュータシステムにおいてＵＳＢデバイスのＵＳＢプロトコルによるホスト接続をエミュレートする方
法をコンピュータに実行させるためのプログラムであって、
前記方法は、
ＵＳＢホストモードバス信号を構成するステップと、
シリアルバス上でＵＳＢフレームを開始するステップと、
デバイスエミュレーションプロセスにデバイス接続ステータスを示すステップと、
物理的なＵＳＢデバイスと前記デバイスエミュレーションプロセスとの間でパケットを中継するステップと、
エミュレートされる特定の物理的なＵＳＢデバイスと関係するデバイス識別子を含む特定の記述子を受け取るステップと、
受け取った当該特定の記述子から特定される前記特定の物理的なＵＳＢデバイスのモデルのインスタンスをエミュレートするステップを備える、プログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
コンピュータデバイスは、コンピュータデバイスと周辺機器デバイスとの間の通信プロトコルを定義する業界標準であるユニバーサルシリアルバス（ＵＳＢ）を介して、マウス、キーボード、プリンタ、スピーカ、スキャナ、マイクロフォンおよびウェブカメラといった周辺機器デバイスに接続し得る。ＵＳＢにより、ホストコンピュータデバイス（１０５）に（またはホストコンピュータデバイス（１０５）上に）接続されるＵＳＢポートにＵＳＢデバイス（１０７）が取り付けられる場合、または、そこから取り除かれる場合、ホストコンピュータデバイス（１０５）は、ＵＳＢデバイス（１０７）の状態を識別および管理するためにバスエニュメレーションプロセス（bus enumeration process）を使用する。ホスト／デバイス関係が図１ａに示される。各デバイス（１０７）は、エニュメレーションプロセスにおいて一連の記述子メッセージを使用して自身を識別する。記述子メッセージは、良好に定義されたプロトコルを使用しており、図１ｂの（１０１）において示されるように、ＵＳＢアナライザを使用して記録され得る。図１ｂは、通信するためにＵＳＢデバイスとホストコンピュータデバイスとの間で送信されるさまざまなコマンドを示す。典型的に、デバイス記述子は、デバイスＩＤ、ストリングおよびレポート記述子を含む。例示的なデバイス記述子が図４ａの（４０１）において示される。付加的なメッセージが、デバイスの入力、出力およびステータスを定義し得る。
【０００２】
ポイントオブセール（ＰＯＳ： point of sale）システムのような多くの従来のコンピュータシステムは、適切に機能するために複数のＵＳＢ周辺機器デバイスを必要とする。たとえば、コンピュータシステムは、ＵＳＢキーボード、ＵＳＢマウスおよびＵＳＢスキャナ／プリンタを含み得る。コンピュータシステムが正しく作動しているかどうか判定するために、コンピュータシステムおよびすべての周辺機器デバイスとのインタラクションをテストすることは重要である。これらのシステムは、ＵＳＢデバイス／ホストインタラクションをテストするために、ＵＳＢデバイスとコンピュータデバイスとの間の物理的な接続を必要とし得る。
【０００３】
テストは、テスト対象のコンピュータデバイスまたはシステムが周辺機器にどのように応答するか検証するべきであり、また、特定の周辺機器を必要とするアプリケーションおよび／またはシステムが適切に機能することを検証するべきである。周辺機器とのシステムのインタラクションをテストおよび検証するために、システムに接続され得る各周辺機器デバイスについて手動のデータ入力および検証プロシージャを実行することが慣習的である。各デバイスが自身を一意のＵＳＢ識別で提示し、また、単純な一般的なインターフェイステストでは各デバイスの特定の特徴が検証されないので、手動の入力が各デバイスについて必要とされる。さらに、特別なキーボードのような特定のＵＳＢ周辺機器を必要とするシステムまたはアプリケーションをテストする場合、フルシステムを使用して手動のテストおよび検証を実行することが慣習的である。これらのテスト方法は、エラーが起きやすく、正確さを保証するために繰り返される必要があり得る。
【０００４】
本発明者らによって認識されるように、エラーを最小化し精度を保証しつつ、テストされるべきシステムにおける周辺機器デバイスを自動的にエミュレートする方法が存在するべきである。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
この明細書は、一般に、コンピュータシステム内でのＵＳＢ周辺機器デバイスのインタラクションをテストすることに関する技術を記載しており、具体的には、コンピュータデバイスおよび／またはシステムをテストする際に複数のＵＳＢ周辺機器をエミュレートすることが可能である方法およびシステムに関する技術を記載する。さらに、明細書は、一般に、コンピュータシステム内でのＵＳＢハードウェアデバイスのインタラクションをテストすることに関する技術を記載しており、具体的には、コンピュータデバイスおよび／またはシステムをテストする際に、複数のＵＳＢホスト接続をエミュレートすることが可能である方法およびシステムに関する技術を記載する。
【０００６】
一般に、この明細書に記載される主題の１つの局面は、コンピュータシステムにおける物理的な周辺機器デバイスをエミュレートするエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスと、周辺機器デバイスインタラクションをテストするためのコンピュータシステムとにおいて具現化され得る。
【０００７】
例示的なエミュレートＵＳＢハードウェアデバイスは、構成記述子を格納するメモリと、ＵＳＢ−シリアルインターフェイスチップと、複数のＵＳＢプロファイルをサポートすることにより、複数の物理的なＵＳＢ周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能である、ＵＳＢサポートを有する１つ以上のマイクロコントローラとを含む。１つ以上のマイクロコントローラは、エミュレートされる特定の物理的なＵＳＢ周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、特定の物理的なＵＳＢ周辺機器デバイスをエミュレートすることと、テスト対象のコンピュータデバイスにＵＳＢプロトコルによって応答することと、第２のプロトコルを使用して、物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートするテスト実行コンピュータデバイスと通信することとを行うように構成される。
【０００８】
例示的なコンピュータシステムは、テストフレームワーク、デバイスエミュレーション、および、エミュレートＵＳＢハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、テスト対象のコンピュータデバイスと、複数のＵＳＢプロファイルをサポートすることによって複数の物理的なＵＳＢ周辺機器デバイスをエミュレートするようソフトウェアでプログラム可能であり、かつ、テスト対象のコンピュータデバイスとの第１の物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートする少なくとも１つのエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスとを含む。少なくとも１つのエミュレートＵＳＢハードウェアデバイスは、エミュレートされる特定の物理的なＵＳＢ周辺機器デバイスと関係するデバイス識別子を含む特定の記述子を受け取ることによって、特定の物理的なＵＳＢ周辺機器デバイスをエミュレートすることと、テスト対象のコンピュータデバイスにＵＳＢプロトコルによって応答することと、第２のプロトコルを使用して、物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートするテスト実行コンピュータデバイスと通信することとを行うように構成される。
【０００９】
これらおよび他の実施形態は随意に以下の特徴の１つ以上を含み得る。１つ以上のマイクロコントローラは、デバイスエミュレーションアプリケーションを実行するように構成され得、当該デバイスエミュレーションアプリケーションは、テスト実行コンピュータデバイスとインタラクションし、マイクロコントローラ上に格納されるファームウェアを書換えることなく異なる物理的なＵＳＢ周辺機器デバイスをエミュレートするよう、エミュレートＵＳＢハードウェアデバイスがテスト実行コンピュータデバイスによって再構成されることを可能にする。１つ以上のマイクロコントローラはさらに、スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、テスト対象のコンピュータデバイスに特定の物理的なＵＳＢ周辺機器デバイスまたはエミュレートされたＵＳＢハードウェアデバイスのいずれかを接続するように構成され得る。例示的なハードウェアデバイスは、エミュレートＵＳＢハードウェアデバイスのために付加的な機能を提供する、１つ以上のマイクロコントローラ上の１つ以上の入出力ポートを含み得る。１つ以上の入出力ポートは、エミュレートＵＳＢハードウェアデバイスへの電力を制御し得る。１つ以上の入出力ポートは非ＵＳＢ周辺機器デバイスのためのシリアルポートであり得る。１つ以上の入出力ポートは、ＰＯＳキャッシュドロアと通信するポイントオブセール（ＰＯＳ： Point of Sale）キャッシュドロアポートであり得る。１つ以上の入出力ポートは、エミュレートＵＳＢハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続し得る。例示的なエミュレートＵＳＢハードウェアデバイスは、ファームウェアを書換えることなく第２の物理的なＵＳＢ周辺機器デバイスをエミュレートするよう特定の記述子のその後のセットを受け取るように構成され得る。例示的なエミュレートＵＳＢハードウェアデバイスは、テスト実行コンピュータデバイスからのインタラクションを必要とすることなく、テスト対象のコンピュータデバイスから受け取られるあるメッセージに自動的に応答するように構成され得る。例示的なコンピュータシステムは、第２の物理的なＵＳＢ周辺機器デバイスをエミュレートし、かつ、テスト対象のコンピュータデバイスとの第２の物理的なデバイスのＵＳＢインタラクションをシミュレートする第２のエミュレートＵＳＢハードウェアデバイスを含み得る。第１のエミュレートＵＳＢハードウェアデバイスからのデータは、第２のエミュレートＵＳＢハードウェアデバイスからの応答の時間をはかるまたは応答を選択するように使用され得る。テスト実行コンピュータデバイスのテストフレームワークは、プレテストデータキャプチャ、テストケース実行、ならびに、ポストテストデータキャプチャおよび検証を含み得る。ＵＳＢスイッチングデバイスは、テスト対象のコンピュータデバイスとのＵＳＢ接続が、エミュレートＵＳＢハードウェアデバイスと、エミュレートＵＳＢデバイスがエミュレートしている特定の物理的なＵＳＢ周辺機器デバイスとの間でスイッチングされることを可能にし得る。
【００１０】
この明細書に記載される主題の付加的な局面は、コンピュータシステムにおけるＵＳＢデバイスのホスト接続をエミュレートするエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスと、周辺機器デバイスインタラクションおよびホスト接続をテストするためのコンピュータシステムとにおいて具現化され得る。
【００１１】
例示的なエミュレートＵＳＢハードウェアデバイスは、構成記述子を格納するメモリと、ＵＳＢ−シリアルインターフェイスチップと、ソフトウェアを受け取ることによって物理的なＵＳＢデバイスのホスト接続をエミュレートするよう、ソフトウェアでプログラム可能である、ＵＳＢサポートを有する１つ以上のマイクロコントローラとを含み、ソフトウェアは、ＵＳＢホストモードバス信号を構成することと、シリアルバス上でＵＳＢフレームを開始することと、デバイスエミュレーションプロセスにデバイス接続ステータスを示すことと、物理的なＵＳＢデバイスとデバイスエミュレーションプロセスとの間でパケットを中継することとを行う。
【００１２】
周辺機器デバイスインタラクションおよびホスト接続をテストするための例示的なコンピュータシステムは、テストフレームワーク、ホスト接続、および、エミュレートＵＳＢハードウェアデバイス通信ドライバを実行するように構成されるテスト実行コンピュータデバイスと、テスト対象のコンピュータデバイスと、物理的なＵＳＢ周辺機器デバイスと、物理的なＵＳＢデバイスのホスト接続をエミュレートするようソフトウェアでプログラム可能である少なくとも１つのエミュレートユニバーサルシリアルバス（ＵＳＢ）ハードウェアデバイスとを含み、少なくとも１つのエミュレートユニバーサルシリアルバスハードウェアデバイスは、ＵＳＢホストモードバス信号を構成することと、シリアルバス上でＵＳＢフレームを開始することと、デバイスエミュレーションプロセスにデバイス接続ステータスを示すことと、物理的なＵＳＢ周辺機器デバイスとデバイスエミュレーションプロセスとの間でパケットを中継することとを行うように構成される。
【００１３】
これらおよび他の実施形態は随意に以下の特徴の１つ以上を含み得る。例示的なエミュレートＵＳＢハードウェアデバイスは、エミュレートＵＳＢハードウェアデバイスのために付加的な機能を提供する、１つ以上のマイクロコントローラ上の１つ以上の入出力ポートを含み得る。１つ以上の入出力ポートは、エミュレートＵＳＢハードウェアデバイスへの電力を制御し得る。１つ以上の入出力ポートは非ＵＳＢ周辺機器デバイスのためのシリアルポートであり得る。１つ以上の入出力ポートは、ＰＯＳキャッシュドロアと通信するポイントオブセール（ＰＯＳ： Point of Sale）キャッシュドロアポートであり得る。１つ以上の入出力ポートは、エミュレートＵＳＢハードウェアデバイスに付加的な機能を追加することが可能である拡張カードに接続し得る。１つ以上のマイクロコントローラは、スイッチングデバイスの状態を規定する制御信号をセットするようソフトウェアコマンドを受け取り、物理的なＵＳＢホストデバイスまたはエミュレートされたＵＳＢハードウェアデバイスのいずれかを物理的なＵＳＢデバイスに接続するように構成され得る。エミュレートＵＳＢハードウェアデバイスは、ファームウェアを書換えることなく物理的なＵＳＢ周辺機器デバイスをエミュレートするよう特定の記述子のセットを受け取るように構成され得る。テスト実行コンピュータデバイスは受け取られるデータを監視し、受け取られるデータをフィルタリングおよび表示し得る。物理的なＵＳＢ周辺機器デバイスとのＵＳＢ接続が、エミュレートＵＳＢハードウェアデバイスと、エミュレートＵＳＢデバイスがエミュレートしている物理的なホスト接続との間でスイッチングされることを可能にするＵＳＢスイッチングデバイスがコンピュータシステムに含まれ得る。
【００１４】
本発明の１つ以上の実施形態の詳細が、例示のみとして与えられる添付の図面と、以下の記載とにおいて説明される。本発明の他の機能、局面および利点は、明細書、図および請求の範囲から明白になるであろう。さまざまな図における同様の参照番号および指定は同様の要素を示す。
【図面の簡単な説明】
【００１５】
【図１ａ】ホストコンピュータデバイスと物理的なＵＳＢ周辺機器デバイスとの間での慣習的なエニュメレーションプロセスを示すブロック図である。
【図１ｂ】通信するためにＵＳＢデバイスとホストコンピュータデバイスとの間で送信されるさまざまなコマンドを示す図である。
【図２】例示的なエミュレートされたＵＳＢハードウェアデバイスの概略図である。
【図３】ＵＳＢスイッチングデバイスを有する例示的なエミュレートされたＵＳＢハードウェアデバイスの概略図である。
【図４ａ】特定のＵＳＢ周辺機器デバイスをエミュレートするために例示的なマイクロコントローラをプログラムするために使用される例示的な擬似コードを示す図である。
【図４ｂ】特定のＵＳＢ周辺機器デバイスをエミュレートするための例示的なマイクロコントローラをプログラムする例示的な擬似コードの図４ａからの継続である。
【図５ａ】ユニバーサルシリアルバス周辺機器デバイスをエミュレートするための例示的な方法のフロー図である。
【図５ｂ】ユニバーサルシリアルバス接続をエミュレートするための例示的な方法のフロー図である。
【図６ａ】ＰＯＳテストケースの例を示す図である。
【図６ｂ】ＰＯＳテストのためのコンポーネントの例示的なブロック図である。
【図７】ＵＳＢ接続のホスト側をエミュレートする例示的なエミュレートされたＵＳＢハードウェアデバイスの概略図である。
【図８】例示的なコンピュータデバイスを示すブロック図である。
【発明を実施するための形態】
【００１６】
詳細な説明
例示的な実施形態に従うと、少なくとも１つのＵＳＢ周辺機器デバイスを必要とするシステムをテストするために、周辺機器および／またはホスト接続をエミュレートするよう、エミュレートされたＵＳＢ周辺機器（ＥＵＰ： emulated USB peripheral）ハードウェアデバイスが存在し得る。例示的なハードウェアデバイスは、「エミュレートされたＵＳＢ周辺機器（ＥＵＰ）デバイス」、「エミュレートされたＵＳＢ周辺機器ハードウェアデバイス」、および、「エミュレートされたＵＳＢハードウェアデバイス」といったいくつかの用語によって言及され得る。これらの用語はすべて、デバイスの構成に依存してホストモードまたはデバイスモードで動作する能力を有し得る同じデバイスを指す。
【００１７】
例示的なＥＵＰデバイスは、デバイスモードおよびホストモードといった２つのモードの間でスイッチングすることが可能であり得る。デバイスモードでは、ＥＵＰデバイスは、多くの異なる周辺機器をエミュレートすることが可能であり得る。ホストモードでは、ＥＵＰデバイスは、ＵＳＢ接続のホスト側をエミュレートし得る。ＥＵＰデバイスと、テストスクリプトを実行するテスト実行コンピュータデバイスと、周辺機器インタラクションがテストされているシステム（たとえばテスト対象のコンピュータデバイス）とを含む、エミュレートされたＵＳＢ周辺機器検証フレームワーク（emulated USB peripheral validation framework）がさらに存在し得る。
【００１８】
デバイスモードでのＥＵＰデバイス
例示的なエミュレートされたＵＳＢ周辺ハードウェアデバイス（ＥＵＰ）は、図２に示されるように、ＵＳＢサポートを有する１つ以上のマイクロコントローラ（２０３）と、ＵＳＢ−シリアルインターフェイスチップ（２０２）とを含み得る。ＵＳＢサポートは、ビルトインされ得るか、または、外部チップを使用し得る。ＥＵＰデバイスは１つのＵＳＢチャンネルにつき１つのマイクロコントローラを有し得るが、複数のマイクロコントローラおよびＵＳＢチャンネルを有してもよい。シリアルチップ（２０２）は、テスト実行コンピュータデバイス（２０１）との接続を作り出し得る。テスト実行コンピュータデバイス（２０１）は、ＥＵＰデバイスがテスト対象のコンピュータデバイス（２０４）とインタラクションし得るように、テストアプリケーションおよびＥＵＰドライバを実行しているデバイスである。
【００１９】
いくつかの実施形態において、デバイスモードにあるＥＵＰデバイスは、テスト目的のために単独で使用されない場合がある。たとえば、ＥＵＰデバイスは、容易に入手可能でない周辺機器デバイス、または、レガシーコンピュータデバイスとインターフェイス接続し得ない周辺機器デバイスをエミュレートするために使用され得る。これらの場合において、コマンドを受け取り、コンピュータデバイスに接続するために、ＥＵＰデバイスは、テスト実行コンピュータデバイスにそれでも接続され得る。その後、ＥＵＰデバイスは、入手不可能もしくは容易に入手可能でない周辺機器デバイスとして、または、レガシーコンピュータデバイスへのインターフェイスとして、コンピュータデバイスとインタラクションする。
【００２０】
マイクロコントローラにおけるＵＳＢサポートによって、マイクロコントローラが、ＵＳＢに対して着脱すること、リセットを検出すること、要求またはメッセージを受け取ること、および、メッセージを送ることが可能になり得る。デバイスモードにおいて、各マイクロコントローラは、一度にＵＳＢ周辺機器デバイスの１つのインスタンスをエミュレートし得る。ＵＳＢインターフェイスはＥＵＰデバイスに宛先が設定されたパケットのみを自動的に受け取り、エンドポイントによって着信パケットを分解し得る。慣習的なＵＳＢデバイスにおいて、すべての命令および応答は、ファームウェアにおいてプログラムされ、メッセージの選択された部分が、テスト対象のコンピュータデバイスにおよびテスト対象のコンピュータデバイスから転送される。例示的な実施形態において、ＥＵＰデバイスは、所与のＵＳＢ物理デバイスをエミュレートするよう、テスト対象のコンピュータデバイスとインタラクションするアプリケーションを実行する。ＥＵＰデバイスがファームウェア上でアプリケーションを実行しているので、ＥＵＰデバイスは、マイクロコントローラ上に格納されたファームウェアを書換えることなく、異なるデバイスをエミュレートするように構成され得る。
【００２１】
いくつかの実施形態において、図３に示されるようにＥＵＰデバイス（３１０）によって制御されるＵＳＢスイッチングデバイス（３００）が存在し得る。例示的なスイッチングデバイス（３００）は、物理的な周辺機器デバイス（３０５）を例示的なシステムに接続または例示的なシステムから切断するハードウェアコンポーネントとして実現され得る。このスイッチングデバイス（３００）によって、ＥＵＰデバイス（エミュレートされたＵＳＢ周辺機器デバイス）（３１０）と、コンピュータシステム内での両方のインタラクションをテストするためにＥＵＰデバイスが表わしている物理デバイス（３０５）（ＵＳＢ周辺機器デバイス）との間で、ＵＳＢ接続が変更されることが可能になり得る。例示的なスイッチングデバイス（３００）は、物理デバイス（３０５）のための給電されたＵＳＢコネクタと、テストシステムに接続する電力入力コネクタとを有し得る。スイッチングデバイス（３００）はＵＳＢ信号接続をスイッチングするのみであり得る。テストアプリケーションからのソフトウェアコマンドは、物理的なＵＳＢ周辺機器またはエミュレートされた周辺機器が所定の時間に接続されているかどうか示すようスイッチングデバイスの状態を規定する制御信号をセットするために、ＥＵＰデバイス（３１０）のマイクロコントローラ（３０３）に送信され得る。例示的なスイッチングデバイス（３００）は、ＥＵＰテスト実行コンピュータデバイス（３０１）が接続されない場合にデフォルトで物理デバイス（３０５）に接続され得、または、デフォルトでテストに使用され得ない。ＥＵＰデバイス（３１０）が使用のために構成されると、ＥＵＰドライバソフトウェアはＥＵＰデバイス（３１０）をシステム内にスイッチングし得る。テストアプリケーションがスイッチングデバイス（３００）を制御するためにソフトウェアを実行していないか、または、ＥＵＰデバイス（３１０）が給電されていない場合、スイッチングデバイス（３００）は、通過ソケット（pass through socket）への接続を通るように戻る。
【００２２】
例示的なＥＵＰデバイスは、テスト対象のコンピュータデバイスまたはシステムへの電力を管理するとともに非ＵＳＢ周辺機器デバイスのテストのためにシリアルポートを提供するといった機能を提供するために、マイクロコントローラ上に付加的な入出力（ＩＯ）ポートを含み得る。各ＥＵＰマイクロコントローラは、所与の時間にて１つの物理的なＵＳＢ周辺機器デバイスをエミュレートし得る。さらに、物理的なＵＳＢ周辺機器デバイスをエミュレートしている間、マイクロコントローラはさらに、１つ以上のシリアルデバイスのエミュレーションと、１つ以上の物理的なコンタクトスイッチングデバイスとを提供し得る。いくつかの実施形態において、たとえば、入出力ポートは、ドロアを開くことを要求する信号を感知し、ドロアが開いていることを示す信号を生成するＰＯＳキャッシュドロア（POS cash drawer）をエミュレートし得る。さらに、入出力ポートは、まだ定義されていない付加的な機能を提供するために、ＥＵＰデバイスに拡張カードを追加するよう使用され得る。
【００２３】
ＥＵＰデバイスが周辺機器デバイスをエミュレートするために、例示的なＥＵＰデバイスのマイクロコントローラは、テスト対象のコンピュータデバイスとインタラクションするための標準的なＵＳＢプロトコルと、テスト実行デバイスとインタラクションするためのシリアルプロトコルとを解釈および応答し得る一般的なソフトウェアでプログラムされ得る。マイクロコントローラを構成するために使用される例示的なコードが図４ａおよび図４ｂに示される。テスト実行コンピュータデバイスはこのコードを使用して、特定のＵＳＢ周辺機器デバイスに関係する特定の記述子を含む任意のＵＳＢプロファイルをＥＵＰマイクロコントローラ上にロードし得る。特定の記述子は、デバイスＩＤ、ストリングおよびレポート記述子を含み得るので、ＥＵＰデバイスは、特定のデバイスの特定のモデルおよびインスタンスをエミュレートし得る。たとえば、図４ａの（４０１）において示されるように、テスト実行コンピュータデバイスは、特定のキーボードモデルのためのＥＵＰデバイスに特定の記述子情報を提供し得る。記述子情報がＥＵＰデバイスにロードされると、ＥＵＰデバイスは、それについて記述子がロードされた特定のキーボードモデルの機能をエミュレートする。テスト実行コンピュータデバイスとＥＵＰデバイスとの間には、デバイスが自動的に応答するかまたはテスト実行コンピュータデバイスに転送することになるパケットを定義する通信プロトコルが存在し得る。物理デバイスはすべてのコマンドに応答しない場合もあるので、特定されない任意のコマンドは応答を発しない。
【００２４】
テスト実行コンピュータデバイスは、マイクロコントローラがあるメッセージに自動的に応答することを特定し得る。テスト実行コンピュータデバイスはさらに、テスト実行コンピュータデバイス上で実行されるデバイスエミュレーションプロセスによって返答が計算され得るように、自身に送られるあるＵＳＢパケットを構成し得る。テスト実行コンピュータデバイス上でデバイスエミュレーションプロセスを使用することによって、複雑なエミュレーションがデバイス上で行われることを可能にする。
【００２５】
ＥＵＰデバイスは、実際のＵＳＢ周辺機器デバイスが通常動作で送信する任意のメッセージをエミュレートし得る。記述子情報はＥＵＰデバイスにロードされるので、エニュメレーションプロセスは、テスト実行コンピュータデバイスインタラクションなしで完了され得る。ＵＳＢ規格は、デバイスが１０ミリ秒といったある時間量内でエニュメレーションを実行することを要求する。例示的なＥＵＰデバイスのメモリにエニュメレーションデータをロードすることによって、テスト実行アプリケーションが期待される時間フレーム内で応答することに依存することなく、ＥＵＰデバイスは、必要なタイムアウト期間内でエニュメレーションを完了することが可能である。より長い応答タイムアウトを有する他のメッセージが、テスト実行コンピュータデバイス上で実行されるデバイスエミュレーションプロセスによって生成され得る。
【００２６】
標準的なＵＳＢバスエニュメレーションはいくつかのステップを含む。まず、ＵＳＢデバイスが取り付けられるポートは、ＵＳＢデバイスが接続されたことと、ＵＳＢデバイスが給電状態であることとをホストコンピュータデバイスに報知する。次に、ＵＳＢホストはポートへコマンドを送信し、ＵＳＢデバイスにユニークアドレスを割り当てる。ＵＳＢデバイスの状態は、アドレス付与状態に変化する。ＵＳＢホストはＵＳＢデバイスから構成情報を読み出し、ＵＳＢデバイスがどのように使用されるかを決定する。その後、ＵＳＢホストはデバイスに構成値を割り当て、デバイスの状態を「構成済（Configured）」にセットする。
【００２７】
ＥＵＰデバイスは、テスト実行コンピュータデバイスによって以前に格納されたデータを使用して、テストエニュメレーションの対象のコンピュータデバイスからのエニュメレーションコマンドに応答する。エニュメレーションプロセスは、実際の物理的な周辺機器デバイスのエニュメレーションプロセスと同様であり得る。
【００２８】
エニュメレーションの後、テストアプリケーションからＥＵＰデバイスを通じてテスト対象のコンピュータデバイスまたはシステムにコマンドが送信される。テスト対象のコンピュータデバイスからの応答はＥＵＰデバイスに返され、次いで、ＥＵＰデバイスは当該応答をテストアプリケーションに返す。このプロセスを使用して、テストアプリケーションは適切に応答し続け得、ＥＵＰデバイスを通じて、テストされるデバイスをエミュレートする。
【００２９】
いくつかの実施形態において、例示的なエミュレートされたＵＳＢの周辺機器検証フレームワークは、テスト実行コンピュータデバイスに存在し得る。このフレームワークは、周辺機器ＵＳＢデバイスをエミュレートするよう少なくとも１つのＥＵＰデバイスを構成し得る。その後、フレームワークは、テストケースのシーケンスを実行し、可能であればテストケースからの予期されない出力を扱い、予期される結果が各テストケースから生成されたことを検証し、各テストケースの成功または失敗を示し得る。たとえば、例示的な検証フレームワークは、ポイントオブセール（ＰＯＳ）システムをエミュレートするために提供され得る。ＰＯＳシステムテストを行なうために、例示的な実施形態はさらに、いくつかのＥＵＰデバイスとともに、キーボードおよびスキャナのような周辺機器をエミュレートするよう、ポイントオブセール（ＰＯＳ）端末と、ＰＯＳコントローラとを含み得る。いくつかの場合において、端末およびコントローラは同じシステムであり得る。さらに、複数の端末および複数のコントローラが存在し得る。さらに、ＡＰＩシミュレーションサーバが、エンドツーエンドテスト環境を作り出すために使用され得る。テストは、テストアプリケーションが、提供される入力に基づいたテスト対象のシステムの挙動と、システム上のアプリケーションの挙動とを検証して、行なわれ得る。
【００３０】
フレームワークはシステム構成を読み出し、実行するべきテストを選択する。その後、ＰＯＳターミナルは初期化され得る。テストはシーケンスされ、次いで、実行され得る。テストが実行されると、ログはトランザクションおよび応答を記録し得る。その後、テストプログラムは、収集されたデータを取得し、当該データを容易な検証のための形式に変換し得る。収集されたデータおよび結果は、その後の調査のためにログされ得る。いくつかの場合において、テストが正確に実行されなかった場合、システムに関する問題を修正するために手動介入が許可され得る。
【００３１】
例示的な方法は、ＵＳＢサポートおよびＵＳＢ−シリアルインターフェイスチップを有するエミュレートされたＵＳＢ周辺機器デバイス（ＥＵＰ）上のマイクロコントローラにテスト実行コンピュータデバイスを接続することにより、テスト実行コンピュータデバイスにおいて開始する。マイクロコントローラは、図５ａにおいて示されるように、複数のＵＳＢプロファイルをサポートすることによって複数の物理的なＵＳＢ周辺機器デバイスをエミュレートし得る、デバイスエミュレーションアプリケーションのようなソフトウェアにより構成され得る（５０１）。デバイス固有でないＵＳＢアプリケーションがマイクロコントローラのフラッシュメモリに格納され得る。ソフトウェアは、テスト対象のコンピュータデバイスとインタラクションするための標準的なＵＳＢプロトコルと、テスト実行コンピュータデバイスとインタラクションするためのシリアルプロトコルとを解釈および応答し得る。マイクロコントローラはシリアルプロトコルを使用して、エミュレートされる特定の物理的なＵＳＢ周辺機器デバイスのＵＳＢインタラクションをシミュレートするテスト実行コンピュータデバイスと通信し得る（５０２）。ＵＳＢプロファイルを定義する特定の記述子は、ＥＵＰデバイスのマイクロコントローラにロードされる（５０３）。特定の記述子によって定義されるデバイス構成は、マイクロコントローラのＲＡＭに格納され得る。これらの記述子は、マイクロコントローラがエミュレートするべき実際のＵＳＢデバイスに関係するデバイス識別子を含む。この例示的な場合において、マイクロコントローラにＰＯＳスキャナのデバイスＩＤがロードされる。その後、実際のＵＳＢ周辺機器デバイスとテスト対象のコンピュータデバイスとの間の実際のメッセージをエミュレートするよう、エミュレートされたデバイスからテスト対象のコンピュータデバイスにメッセージが送信され得る。周辺機器デバイスについての出力は、マイクロコントローラによってテスト対象のコンピュータデバイスから受け取られ得、テスト実行コンピュータデバイスへ転送され得る。
【００３２】
図６ａは、ＰＯＳシステムのための例示的なテストケースを示す。このテストケースでは、ロイヤルティーカード（loyalty card）が、スキャンされたとしてシミュレートされ、また、２つのユニバーサルプロダクトコード（ＵＰＣ： Universal Product Codes）が、アイテムが購入される際にスキャンされたとしてシミュレートされる。図６ｂは例示的なシステムを示す。テスト実行コンピュータデバイス（６０１）は、テストフレームワーク、デバイスエミュレーション、およびＥＵＰデバイス通信ドライバを含む１つのプロセスを実行し得る。代替的には、テスト実行コンピュータデバイス（６０１）は、当該フレームワーク、エミュレーションおよび通信ドライバについて、異なるプロセスを実行し得る。例示的なテストフレームワークは、プレテストデータキャプチャ、テストケース実行、ならびに、ポストテストデータキャプチャおよび検証を含み得る。図６ｂに示されるような例示的なシステムにおいて、所与の時間にてシステムにおける複数の周辺機器デバイスをエミュレートするよう、１つより多いＥＵＰデバイス（６１０ａ，６１０ｂ）が存在し得る。たとえば、図６ｂにおいて示されるように、１つのＥＵＰデバイスはバーコードスキャナＵＳＢデバイス（６１０ａ）をエミュレートし得、別のＥＵＰデバイスはＰＯＳキーボード（６１０ｂ）をエミュレートし得る。デバイスエミュレーションは、テスト実行コンピュータデバイスを介して格納および送信され得る。テスト実行コンピュータデバイス（６０１）は、ＥＵＰデバイスと通信するためにＥＵＰデバイス通信ドライバを有する。各ＥＵＰデバイスについて実行のスレッドが存在し得、入出力データを使用してＥＵＰデバイス間で協調／通信が存在し得る。いくつかの実施形態において、１つのＥＵＰデバイスは、第２のＥＵＰデバイスからの応答の時間をはかるまたは応答を選択するために使用されるデータを出力し得る。たとえば、例示的なＰＯＳシステムにおいて、アクティベートされると、スキャナがこれ以上スキャンを受け付けるのを停止させる待機（ＷＡＩＴ）ライトがキーボード上に存在し得る。ソフトウェアはこの関係を利用して、ＰＯＳ入力バッファが超過することを回避する。代替的には、例示的な実施形態は、エラーメッセージまたはプロンプトが存在した場合に送信するべき次のキーを判定するよう、ＰＯＳシステムの表示を読み出し得る。
【００３３】
このテストケースにおいて、スキャナ（６１０ａ）をエミュレートするＥＵＰデバイスは、数値識別子とスキャンされた２つのプロダクトの識別子とによってロイヤルティーカードを識別するメッセージを正確に送信すると予想される。キーボード（６１０ｂ）をエミュレートするＥＵＰデバイスは、キーボードキーが「ＱＴＹ」および「ＴＯＴＡＬ」について押圧および解放されるに対応する入力ストリングを正確に送信すると予想される。キャッシュアウト（CashOut）は、表示を見てその後キーボードを通じて正しいエントリを送信するスマートなルーチンであり得る。検証は、テストが予想通りに行なわれたことを判定し得る。検証は、トランザクションが予想通りに発生したこと、適用されたクーポンの数が正しいこと、または、周辺機器デバイスによって認識された顧客番号が正しいことを検証することを含み得る。
【００３４】
ＥＵＰデバイスは、所与の時間にて、１つのマイクロコントローラ当たり１つの周辺機器デバイスをエミュレートし得る。ＥＵＰデバイスが１つより多いマイクロコントローラを含む場合、ＥＵＰデバイスは同時に異なる周辺機器デバイスをエミュレートし得、各マイクロコントローラに１つの周辺機器デバイスを割り当てる。
【００３５】
ＰＯＳシステムの例において論じられるように、コンピュータシステムは、複数の周辺機器デバイスインタラクションをテストする必要があり得る。コンピュータシステムは、マウス、キーボードおよびプリンタを用いて、機能をテストする必要があり得る。一実施形態において、１つのＥＵＰデバイスは、連続する態様で各デバイスをテストするように使用され得る。ＥＵＰデバイスは、異なる時間にて、各周辺機器をエミュレートするようにプログラムされ得る。たとえば、ＥＵＰデバイスはまず、マウスをエミュレートし、次にキーボードをエミュレートし、次にプリンタをエミュレートし得る。代替的には、複数のＥＵＰデバイスが、コンピュータシステム内の複数の周辺機器デバイスをエミュレートするために使用され得る。たとえば、３つのＥＵＰデバイスが、マウス、キーボードおよびプリンタをそれぞれエミュレートするために使用され得る。その後、コンピュータシステムは、周辺機器デバイスとの複数のインタラクションの並列テストを実行し得る。複数の周辺機器をエミュレートすることによって、ステータスランプのような、テスト対象のコンピュータデバイスのオペレーティングシステムからのインジケータが、キーボードまたはスキャナのような他の周辺機器にセットされる情報のレートを調節するために使用され得る。
【００３６】
ホストモードでのＥＵＰデバイス
いくつかの実施形態において、ＥＵＰデバイスは、図７に示されるように、ＵＳＢ接続のホスト側をエミュレートし得る。ＥＵＰデバイスは、デバイスモードに関して上で論じられたすべての機能を組み込み得る。さらに、ＥＵＰデバイスのマイクロコントローラポートは、デバイスがデバイスモードの周辺機器として動作し得るか、または、ホストモードのＵＳＢデバイスのホストエンドとして動作し得るように、USB on the goを実現し得る。
【００３７】
ホスト接続をエミュレートするために、ＥＵＰマイクロコントローラは、図５ｂに示されるように、ＵＳＢホストモードバス信号を構成し（５１０）、バス上でＵＳＢフレームを開始し（５１２）、エミュレーションプロセスにデバイスステータス（接続または切断）を示し（５１３）、デバイスとエミュレーションプロセスとの間でパケットを中継する（５１６）ソフトウェアを受け取り得る。ホストモードバス信号線Ｄ＋およびＤ−が、１５ｋの抵抗によりプルダウンされ得、ＵＳＢフレームパケットが１ｋｈｚまたは８ｋｈｚにて生成され得る。ホストモードのＥＵＰデバイスのＵＳＢインターフェイスは、特定のデバイスおよびエンドポイントへパケットを送信し得る。したがって、パケットバッファは、ホストモードにおいては、デバイスモードである場合とは異なって扱われ得る。例示的なＥＵＰデバイスでは、マイクロコントローラは、各エンドポイント（各デバイス）または発信パケット（ホスト）について使用されるメモリをトラッキングするよう、バッファ記述子テーブル（ＢＤＴ： buffer descriptor table）を有し得る。パケットが送信中であり、かつ、固定データである場合、パケットは、ＲＡＭの代わりにプログラムスペースにおけるテーブルから送信され得る。また、デバイスはさらに、デバイスモードとホストモードとの間で動的に変化することが可能であり得る。
【００３８】
スイッチングデバイスは、物理的なＵＳＢ周辺機器デバイスに接続されるべき特定の物理的なＵＳＢホストデバイスまたはエミュレートされたＵＳＢハードウェアデバイスのいずれかのスイッチングを可能にし得る。このスイッチングデバイスは、物理的なＵＳＢ周辺機器デバイスをエミュレートするＥＵＰデバイスに関して上で論じたスイッチングデバイスと類似または同じであり得る。
【００３９】
ＵＳＢホストモードにおいて構成されるＥＵＰデバイスに物理的な周辺機器を接続するよう、付加的なスイッチングデバイスが存在し得る。図７に示されるように、ＥＵＰデバイスの１つのマイクロコントローラは、ホストモードであり得、ＵＳＢデバイス（デバイスモード）をエミュレートしているＥＵＰデバイスの第２のマイクロコントローラにさらに接続されるテスト実行コンピュータデバイスに接続され得る。デバイスモードにおけるＥＵＰデバイスのマイクロコントローラは、テスト対象のコンピュータデバイスに接続され得る。この構成は、バスアナライザに類似したシステムを通じてデータが追跡されることを可能にし得る。新しいデバイスをエミュレートするためのデータは、任意の付加的なハードウェアなしで、ＥＵＰデバイスを介して収集され得る。テスト実行コンピュータデバイスは、受け取られるデータを監視し、当該受け取られるデータをフィルタリングおよび表示する。図７のシステム構成はさらに、ＵＳＢ周辺機器デバイスからのデータが、ＥＵＰデバイスを実行するソフトウェアによって修正されることを可能にし得る。たとえば、エミュレートＵＳＢデバイスは、マウスが逆さにされてトラックボールとして使用され得るように、ＵＳＢマウスの報告された移動方向を反転し得る。付加的または代替的には、２つのマイクロコントローラ（または２つのＥＵＰデバイス）の組合せは、意図した機能に依存してデータを選択的に通すよう使用され得る。図７は、１つがデバイスモードであり１つがホストモードである２つのマイクロコントローラを有する１つのＥＵＰデバイスを示すが、２つのＥＵＰデバイスまたはより多くのマイクロコントローラを有するＥＵＰデバイスを使用して、同様の構成が実現され得る。たとえば、１つのＥＵＰデバイスはホストモードで構成され得、また、他のＥＵＰデバイスはデバイスモードで構成され得る。代替的には、ＥＵＰデバイスは１つのチャンネル当たり１つのマイクロコントローラを有する４つのチャネルを有し得る。この例示的なデバイスは、バスアナライザモードの２つのインスタンスを提供し得、各インスタンスはホストおよびデバイスチャンネルを必要とする。
【００４０】
ホストモードとデバイスモードとの間のスイッチング
ＵＳＢインターフェイスがホストモードについて構成される場合、適切なＵＳＢプルダウン抵抗が構成され、ＵＳＢフレームがバス上に生成される。デバイスが接続されると、メッセージが実行側に送信され、その後、エニュメレーションプロセスを開始する。実行側からのソフトウェアコマンドは、マイクロコントローラにデバイスモードまたはホストモードにあるべきであるかどうかを指示し得る。
【００４１】
ハイレベルブロック図
図８は、テストされるべきコンピュータシステムにおいて、ユニバーサルシリアルバスデバイスをエミュレートするために構成される例示的なコンピュータ（８００）のハイレベルブロック図である。非常に基本的な構成（８０１）において、コンピュータデバイス（８００）は典型的に、１つ以上のプロセッサ（８１０）およびシステムメモリ（８２０）を含む。メモリバス（８３０）は、プロセッサ（８１０）とシステムメモリ（８２０）との間で通信するために使用され得る。
【００４２】
所望の構成に依存して、プロセッサ（８１０）は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）またはその任意の組合せを含むがこれらに限定されない任意のタイプのプロセッサであり得る。プロセッサ（８１０）は、レベル１キャッシュ（８１１）およびレベル２キャッシュ（８１２）のような１つ以上のレベルのキャッシングと、プロセッサコア（８１３）と、レジスタ（８１４）とを含み得る。プロセッサコア（８１３）は、算術論理演算ユニット（ＡＬＵ： arithmetic logic unit）、浮動小数点ユニット（ＦＰＵ：floating point unit）、デジタル信号処理コア（ＤＳＰコア：digital signal processing core）またはその任意の組合せを含み得る。メモリコントローラ（８１５）がさらにプロセッサ（８１０）と共に使用され得るか、または、いくつかの実現例では、メモリコントローラ（８１５）はプロセッサ（７１０）の内部部分であり得る。
【００４３】
所望の構成に依存して、システムメモリ（８２０）は、揮発性メモリ（たとえばＲＡＭ）、不揮発性メモリ（たとえばＲＯＭ、フラッシュメモリなど）、または、その任意の組合せを含むがこれらに限定されない任意のタイプのシステムメモリであり得る。システムメモリ（８２０）は典型的に、オペレーティングシステム（８２１）と、１つ以上のアプリケーション（８２２）と、プログラムデータ（８２４）とを含む。アプリケーション（８２２）は、ユニバーサルシリアルバスハードウェアデバイスをエミュレートするための方法を含み得る。プログラムデータ（８２４）は、１つ以上の処理デバイスによって実行されると、テスト対象のコンピュータデバイスにおいて、ユニバーサルシリアルバスハードウェアデバイスをエミュレートするための方法（８２３）を実現する命令を格納することを含む。いくつかの実施形態において、アプリケーション（８２２）は、オペレーティングシステム（８２１）上でプログラムデータ（８２４）を用いて動作するように構成され得る。
【００４４】
コンピュータデバイス（８００）は、基本的な構成（８０１）と任意の必要とされるデバイスおよびインターフェイスとの間の通信を促進するよう、付加的な特徴または機能および付加的なインターフェイスを有し得る。
【００４５】
システムメモリ（８２０）はコンピュータストレージ媒体の例である。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは、他のメモリ技術か、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、もしくは、他の光学ストレージか、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは、他の磁気ストレージデバイスか、または、所望の情報を格納するために使用され得るとともにコンピュータデバイス８００によってアクセスされ得る任意の他の媒体を含むがこれらに限定されない。任意のそのようなコンピュータストレージ媒体はデバイス（８００）の一部であり得る。
【００４６】
コンピュータデバイス（８００）は、上記の機能のいずれかを含む、携帯電話、スマートフォン、個人用携帯情報端末（ＰＤＡ）、パーソナルメディアプレーヤデバイス、タブレットコンピュータ（タブレット）、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または、ハイブリッドデバイスのようなスモールフォームファクタポータブル（またはモバイル）電子デバイスの部分として実現され得る。コンピュータデバイス（８００）はさらに、ラップトップコンピュータ構成および非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実現され得る。
【００４７】
前述の詳細な説明は、ブロック図、フローチャートおよび／または例の使用を介して、デバイスおよび／またはプロセスのさまざまな実施形態を記載している。その限りにおいて、そのようなブロック図、フローチャートおよび／または例は１つ以上の機能および／または動作を含むので、そのようなブロック図、フローチャートまたは例内の各機能および／または動作が、広い範囲のハードウェア、ソフトウェア、ファームウェア、または、その実質的に任意の組合せによって、個々におよび/または集合的に実現され得るということが当業者によって理解されるであろう。一実施形態において、本願明細書において記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、他の集積フォーマットを介して、または、ウェブサービスとして、実現され得る。しかしながら、当業者は、本願明細書において開示された実施形態のいくつかの局面は、全体的または部分的に、１つ以上のコンピュータ上で実行される１つ以上のコンピュータプログラムとして、１つ以上のプロセッサ上で実行される１つ以上のプログラムとして、ファームウェアとして、または、その実質的には任意の組合せとして、集積回路において同等に実現され得るということを認識するとともに、回路を設計すること、および／または、ソフトウェアもしくはファームウェアのためのコードを記述することは、この開示を考慮した当業者の技能の範囲内であるということを認識するであろう。さらに、当業者は、本願明細書において記載される主題のメカニズムは、さまざまな形態のプログラムプロダクトとして流通されることが可能であるということを認識するとともに、実際に流通を行なうために使用される特定タイプの一時的でない信号担持媒体にかかわらず、本願明細書において記載された主題の例示的な実施形態が適用されるということを認識するであろう。一時的でない信号担持媒体の例は、フロッピーディスク（登録商標）、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリなどといった記録可能なタイプの媒体と、デジタルおよび／またはアナログ通信媒体（たとえばファイバーオプティクスケーブル、導波路、有線通信リンク、無線通信リンクなど）のような送信タイプの媒体とを含むがこれらに限定されない。
【００４８】
本願明細書において実質的に任意の複数形および／または単数形の使用に関して、当業者は、文脈および／または用途に対して適切であるように、複数から単数へおよび／または単数から複数へ変換し得る。明瞭さの目的のためにさまざまな単数／複数の順列が明らかに本願明細書において述べられ得る。
【００４９】
このように、主題の特定の実施形態が記載されている。他の実施形態は添付の請求の範囲の範囲内である。いくつかの場合において、請求項に記載される動作は、異なる順で実行され得、それでも望ましい結果を達成し得る。さらに、添付の図面において示されるプロセスは、望ましい結果を達成するために、示された特定の順番または順序を必ずしも必要としない。ある実現例において、マルチタスキングおよび並列処理が有利であり得る。
【図１ａ】
0006483142.tif 000002
【図１ｂ】
0006483142.tif 000003
【図２】
0006483142.tif 000004
【図３】
0006483142.tif 000005
【図４ａ】
0006483142.tif 000006
【図４ｂ】
0006483142.tif 000007
【図５ａ】
0006483142.tif 000008
【図５ｂ】
0006483142.tif 000009
【図６ａ】
0006483142.tif 000010
【図６ｂ】
0006483142.tif 000011
【図７】
0006483142.tif 000012
【図８】
0006483142.tif 000013