(57)【要約】【課題】エラー発生時にデバイスとの論理的な接続を、デバイスの物理的な再接続を必要とせずに確立する「ホスト装置」を提供する。【解決手段】ホスト装置１は、ＵＳＢデバイス３との物理的接続を検出すると（Ｓ３５１）、リセット信号を送信した上で（Ｓ３５２）、コンフィギュレーションのシーケンス（Ｓ３５３）の実行を開始する。そして、コンフィギュレーションのシーケンス（Ｓ３５３）中にエラー発生が検出されたならば（Ｓ３５４）、ＵＳＢ２の給電線Ｖｂｕｓへの給電を停止（Ｓ３５５）した後に、当該給電を再開することにより（Ｓ３５６）、ＵＳＢデバイス３の接続制御機能部を初期化した上で、再度、リセット信号を送信し（Ｓ３５７）、コンフィギュレーションのシーケンス（Ｓ３５８）を実行する。【選択図】図３
2012137918.tif 000002
【特許請求の範囲】
【請求項１】
物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置であって、
前記物理的に接続されたデバイスへの給電の有無を制御する給電制御部と、
前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立部と、
前記物理的に接続されたデバイスとの間の前記接続制御手順中において発生した当該デバイスの動作のエラーを検出するエラー検出部と、
前記エラー検出部が前記エラーを検出した場合に、前記給電制御部に、前記物理的に接続されたデバイスへの給電を一旦停止させた後に再開させると共に、当該給電が再開された後に、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行させる接続再試行制御動作を行う、接続再試行制御部とを有することを特徴とするホスト装置。
【請求項２】
請求項１記載のホスト装置であって、
前記接続再試行制御部は、前記エラー検出部がエラーを検出したときに、直ちには前記接続再試行制御動作を行わずに、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を、当該接続制御手順中における前記エラーが前記エラー検出部によって検出されなくなるまで繰り返し実行させ、前記接続制御手順を所定回数実行しても当該接続制御手順中における前記エラーが前記エラー検出部によって検出されなくならなかったときに、前記接続再試行制御動作を行うことを特徴とするホスト装置。
【請求項３】
物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置であって、
前記物理的に接続されたデバイスへの給電の有無を制御する給電制御部と、
前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立部と、
前記物理的に接続されたデバイスとの間のデータ通信中において発生した当該デバイスの動作のエラーを検出するエラー検出部と、
前記エラー検出部が前記エラーを検出した場合に、前記給電制御部に、前記物理的に接続されたデバイスへの給電を一旦停止させた後に再開させると共に、当該給電が再開された後に、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行させる接続再試行制御動作を行う、接続再試行制御部とを有することを特徴とするホスト装置。
【請求項４】
請求項１、２または３記載のホスト装置であって、
前記デバイスはＵＳＢデバイスであって、
前記ＵＳＢデバイスとの物理的な接続を介した給電は、ＵＳＢ上の給電線への給電により実現され、
前記接続制御手順は、ＵＳＢデバイスへのリセット信号の送信とＵＳＢデバイスのコンフィギュレーションとを含むエメレーションであることを特徴とするホスト装置。
【請求項５】
物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置において、前記デバイスとの論理的な接続を制御する接続制御方法であって、
前記ホスト装置が、前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立ステップと、
前記ホスト装置が、前記物理的に接続されたデバイスとの間の前記接続制御手順中において発生した当該デバイスの動作のエラーを検出するエラー検出ステップと、
前記ホスト装置が、前記エラーを検出した場合に、前記物理的に接続されたデバイスへの給電を一旦停止した後に再開すると共に、当該給電が再開された後に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行する接続再試行制御動作を行う接続再試行制御ステップとを有することを特徴とする接続制御方法。
【請求項６】
請求項１記載の接続制御方法であって、
前記接続再試行制御ステップにおいて、前記エラー検出部がエラーを検出したときに、直ちには前記接続再試行制御動作を行わずに、前記物理的に接続されたデバイスとの間の前記接続制御手順を、当該接続制御手順中における前記エラーが検出されなくなるまで繰り返し実行し、前記接続制御手順を前記所定回数実行しても当該接続制御手順中における前記エラーが検出されなくならなかったときに、前記接続再試行制御動作を行うことを特徴とする接続制御方法。
【請求項７】
物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置において、前記デバイスとの論理的な接続を制御する接続制御方法であって、
前記ホスト装置が、前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立ステップと、
前記ホスト装置が、前記物理的に接続されたデバイスとの間のデータ通信中において発生した当該デバイスの動作のエラーを検出するエラー検出ステップと、
前記ホスト装置が、前記エラーを検出した場合に、前記物理的に接続されたデバイスへの給電を一旦停止した後に再開すると共に、当該給電が再開された後に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行する接続再試行制御動作を行う接続再試行制御ステップとを有することを特徴とする接続制御方法。
【請求項８】
請求項５、６または７記載の接続制御方法であって、
前記デバイスはＵＳＢデバイスであって、
前記ＵＳＢデバイスとの物理的な接続を介した給電は、ＵＳＢ上の給電線への給電により実現され、
前記接続制御手順は、ＵＳＢデバイスへのリセット信号の送信とＵＳＢデバイスのコンフィギュレーションとを含むエメレーションであることを特徴とする接続制御方法。
【請求項９】
コンピュータによって読み取られ実行されるコンピュータプログラムであって、
当該コンピュータを、物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置として機能させるコンピュータプログラムであって、
前記ホスト装置は、
前記物理的に接続されたデバイスへの給電の有無を制御する給電制御部と、
前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立部と、
前記物理的に接続されたデバイスとの間の前記接続制御手順中において発生した当該デバイスの動作のエラーを検出するエラー検出部と、
前記エラー検出部が前記エラーを検出した場合に、前記給電制御部に、前記物理的に接続されたデバイスへの給電を一旦停止させた後に再開させると共に、当該給電が再開された後に、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行させる接続再試行制御動作を行う、接続再試行制御部とを有することを特徴とするコンピュータプログラム。
【請求項１０】
請求項９記載のコンピュータプログラムであって、
前記接続再試行制御部は、前記エラー検出部がエラーを検出したときに、直ちには前記接続再試行制御動作を行わずに、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を、当該接続制御手順中における前記エラーが前記エラー検出部によって検出されなくなるまで繰り返し実行させ、前記接続制御手順を前記所定回数実行しても当該接続制御手順中における前記エラーが前記エラー検出部によって検出されなくならなかったときに、前記接続再試行制御動作を行うことを特徴とするコンピュータプログラム。
【請求項１１】
コンピュータによって読み取られ実行されるコンピュータプログラムであって、
当該コンピュータを、物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置として機能させるコンピュータプログラムであって、
前記ホスト装置は、
前記物理的に接続されたデバイスへの給電の有無を制御する給電制御部と、
前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立部と、
前記物理的に接続されたデバイスとの間のデータ通信中において発生した当該デバイスの動作のエラーを検出するエラー検出部と、
前記エラー検出部が前記エラーを検出した場合に、前記給電制御部に、前記物理的に接続されたデバイスへの給電を一旦停止させた後に再開させると共に、当該給電が再開された後に、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行させる接続再試行制御動作を行う、接続再試行制御部とを有することを特徴とするコンピュータプログラム。
【請求項１２】
請求項９、１０、１１記載のコンピュータプログラムであって、
前記デバイスはＵＳＢデバイスであって、
前記ＵＳＢデバイスとの物理的な接続を介した給電は、ＵＳＢ上の給電線への給電により実現され、
前記接続制御手順は、ＵＳＢデバイスへのリセット信号の送信とＵＳＢデバイスのコンフィギュレーションとを含むエメレーションであることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト装置におけるデバイスの接続制御の技術に関するものである。
【背景技術】
【０００２】
ホスト装置におけるデバイスの接続制御の技術としては、ＵＳＢ(Universal Serial Bus）におけるホスト装置のＵＳＢデバイスのエニュメレーションの技術が知られている（たとえば、特許文献１）。
ホスト装置のＵＳＢデバイスのエニュメレーションは、ホスト装置において、ＵＳＢデバイスの物理的な接続が検出されると実行されるものであり、このエニュメレーションにおいて、ホスト装置は、まず、ＵＳＢ装置にリセット信号を送信する。そして、その後、ホスト装置はＵＳＢデバイスとの間で、各種ディスクリプタ等の所定のコンフィギュレーションデータを送受しながら、ＵＳＢデバイスにＵＳＢアドレスを割り当てると共に、ＵＳＢデバイスの各種使用設定を行うコンフィギュレーションを行う。
【０００３】
そして、このコンフィギュレーションが成功したならば、エニュメレーションは完了し、ホスト装置とＵＳＢデバイスが論理的に接続された状態となり、両者間で相互のデータ通信が可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６-２４４０５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
現実のＵＳＢデバイスによっては、ホスト装置とＵＳＢデバイスとの間のエニュメレーション中にエラーを発生してしまうことがある。
そして、このようなエラーが、ＵＳＢデバイスのホスト装置との接続制御を担う機能部のバグなどにより発生した、フリーズ/ハングアップによるものである場合には、ホスト装置においてエラーを検知して、リセット信号の送信からのエニュメレーションを再実行することにより、当該エラーをリカバリーしようとしても、再度エラーが発生するだけで、エニュメレーションを完了することができず、ＵＳＢデバイスをホスト装置に論理的に接続することができない。
【０００６】
一方で、このようなエラーが発生した場合に、ＵＳＢデバイスのホスト装置との物理的な接続を一旦解除した後に、ＵＳＢデバイスをホスト装置に物理的に再接続すれば、当該物理的な接続の解除または再接続によって、ＵＳＢデバイスのホスト装置との接続制御を担う機能部の状態が一旦初期化されるために、その後のエミューレーションを正常に行えることがある。しかし、このようなＵＳＢデバイスデバイスのホスト装置への物理的な接続の解除及び再接続によって、ＵＳＢデバイスのホスト装置との論理的な接続のエラーに対処する手法による場合には、ＵＳＢデバイスデバイスのホスト装置への物理的な接続の解除及び再接続という、ユーザの煩雑な作業が必要となるのみならず、ホスト装置への不当な不信をユーザに抱かせてしまうことともなる。
【０００７】
また、ホスト装置とＵＳＢデバイスとの間のデータ通信の開始後に、ＵＳＢデバイスのホスト装置とのデータ通信に関わる機能部のフリーズ/ハングアップによるデータ通信のエラーが発生した場合も同様である。
そこで、本発明は、ホスト装置に物理的に接続されたデバイスの動作に、ホスト装置とデバイス間の正常のデータ通信の遂行を妨げるエラーが発生した場合でも、ユーザのデバイスのホスト装置への物理的な接続の解除及び再接続の作業を要することなく、正常にデバイスとホスト装置の状態を正常にデータ通信を行えるように制御できるホスト装置を提供することを課題とする。
【課題を解決するための手段】
【０００８】
前記課題達成のために、本発明は、物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置に、前記物理的に接続されたデバイスへの給電の有無を制御する給電制御部と、前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立部と、前記物理的に接続されたデバイスとの間の前記接続制御手順中において発生した当該デバイスの動作のエラーを検出するエラー検出部と、前記エラー検出部が前記エラーを検出した場合に、前記給電制御部に、前記物理的に接続されたデバイスへの給電を一旦停止させた後に再開させると共に、当該給電が再開された後に、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行させる接続再試行制御動作を行う、接続再試行制御部とを備えたものである。
【０００９】
ここで、このようなホスト装置は、前記接続再試行制御部において、前記エラー検出部がエラーを検出したときに、直ちには前記接続再試行制御動作を行わずに、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を、当該接続制御手順中における前記エラーが前記エラー検出手段によって検出されなくなるまで繰り返し実行させ、前記接続制御手順を所定回数実行しても当該接続制御手順中における前記エラーが前記エラー検出手段によって検出されなくならなかったときに、前記接続再試行制御動作を行うように構成してもよい。
【００１０】
また、前記課題達成のために、本発明は、物理的に接続されたデバイスに当該デバイスとの物理的な接続を介して給電すると共に、当該物理的に接続されたデバイスと論理的な接続を確立して当該デバイスとデータ通信を行うホスト装置に、前記物理的に接続されたデバイスへの給電の有無を制御する給電制御部と、前記デバイスが物理的に接続されたときに、当該デバイスとの間で前記論理的な接続を確立するための接続制御手順を実行する論理的接続確立部と、前記物理的に接続されたデバイスとの間のデータ通信中において発生した当該デバイスの動作のエラーを検出するエラー検出部と、前記エラー検出部が前記エラーを検出した場合に、前記給電制御部に、前記物理的に接続されたデバイスへの給電を一旦停止させた後に再開させると共に、当該給電が再開された後に、前記論理的接続確立部に、前記物理的に接続されたデバイスとの間の前記接続制御手順を実行させる接続再試行制御動作を行う、接続再試行制御部とを備えたものである。
【００１１】
ここで、ホスト装置に接続されるデバイスがホスト装置からの給電の有無によってホスト装置との物理的な接続の有無を検出するものである場合、デバイスのホスト装置との接続制御やデータ通信に関わる機能部は、ホスト装置との物理的な接続が検出されたとき、または、ホスト装置との物理的な接続が解除されたときに状態が初期化されることが一般的である。
【００１２】
よって、以上のようなホスト装置によって、デバイスが、接続制御手順やデータ通信中にエラーを発生してしまった場合に、デバイスへの給電を一時的に停止させることにより、デバイスに、ホスト装置との物理的接続の解除、再接続が成されたものと認識させて、当該デバイスの接続制御やデータ通信に関わる機能部の状態を初期化することができることとなる。
【００１３】
したがって、エラー発生時に、デバイスへの給電を所定期間だけ一時停止した上で接続制御手順を実行する本発明に係るホスト装置によれば、発生したエラーが、デバイスのホスト装置との接続制御やデータ通信に関わる機能部のバグを原因とするフリーズ/ハングアップ等による、デバイスとホスト装置との物理的接続の解除、再接続を行ってデバイスの当該機能部の状態を初期化すれば解決される類のものである場合には、ユーザのデバイスのホスト装置への物理的な接続の解除及び再接続の作業を要することなく、ホスト装置とデバイスの論理的な接続を確立して、データ通信を正常に行えるようにすることができるようになる。
【００１４】
ここで、以上のホスト装置において、前記デバイスはＵＳＢデバイスであってよく、この場合、前記ＵＳＢデバイスとの物理的な接続を介した給電は、ＵＳＢ上の給電線への給電により実現されるものであり、前記接続制御手順は、ＵＳＢデバイスへのリセット信号の送信とＵＳＢデバイスのコンフィギュレーションとを含むエメレーションとなる。
【発明の効果】
【００１５】
以上のように、本発明によれば、ホスト装置に物理的に接続されたデバイスの動作に、ホスト装置とデバイス間の正常のデータ通信の遂行を妨げるエラーが発生した場合でも、ユーザのデバイスのホスト装置への物理的な接続の解除及び再接続の作業を要することなく、正常にデバイスとホスト装置の状態を正常にデータ通信を行えるように制御できるホスト装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るホスト装置の構成を示す図である。
【図２】本発明の実施形態に係るＵＳＢデバイス接続制御処理を示すフローチャートである。
【図３】本発明の実施形態に係るＵＳＢデバイス接続制御処理による動作例を示す図である。
【図４】本発明の実施形態に係る通信エラーリカバリー処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について説明する。
図１に本実施形態に係るホスト装置の構成を示す。
図示するように、ホスト装置１には、ＵＳＢコネクタ１０、ＵＳＢを介してＵＳＢデバイスとのデータ転送を行うＵＳＢコントローラ１１、オペレーティングシステム１２、ＵＳＢデバイスを利用した処理を行うＵＳＢ利用アプリケーション１３とを備えている。
また、オペレーティングシステム１２には、ＵＳＢコントローラ１１を制御するＵＳＢドライバ１２１が組み込まれている。
また、ＵＳＢコネクタ１０にはＵＳＢ２を接続可能であり、ＵＳＢデバイス３が接続されたＵＳＢ２がＵＳＢコネクタ１０に接続されることにより、または、ＵＳＢコネクタ１０に接続されたＵＳＢ２にＵＳＢデバイス３が接続されることにより、ＵＳＢデバイス３はホスト装置１に物理的に接続される。
なお、ここで、ホスト装置１は、ハードウエア構成としては、ＣＰＵやメモリや上述したＵＳＢコントローラ１１や記憶装置やその他の周辺デバイスを備えたコンピュータとして構成を備えている。そして、ＵＳＢドライバ１２１、オペレーティングシステム１２、ＵＳＢ利用アプリケーション１３等は、記憶装置に予め記憶されたコンピュータをＣＰＵが実行することにより実現されるものである。そして、ＵＳＢ利用アプリケーション１３は、オペレーティングシステム１２上で実行されるアプリケーションであり、オペレーティングシステム１２の各種資源、機能を利用して、その処理を行うことができる。
【００１８】
さて、次に、ＵＳＢコントローラ１１は、ＵＳＢ２のデータ信号線であるＤ+、Ｄ-とのアナログ信号の入出力を担うＡＦＥ１１１（Analog Front End１１１）、ＵＳＢ２を介した通信の物理層の処理を担い、ＡＦＥ１１１を介してＵＳＢ２との間のシリアルデータ転送を行うＰＨＹ１１２、ＵＳＢドライバ１２１とＵＳＢコントローラ１１の各部との間のインタフェースを構成するホストコントローラ１１３、ＵＳＢ２の給電線であるＶｂｕｓへの給電を制御する給電制御部１１４を備えている。ここで、給電制御部１１４のＶｂｕｓへの給電の制御状態の初期設定値は、Ｖｂｕｓへの給電を行う制御状態に設定される。
【００１９】
ここで、ホスト装置１とＵＳＢデバイス３とが論理的に接続された状態において、ホスト装置１におけるＵＳＢデバイス３との間のデータ通信は以下のように行われる。すなわち、ＵＳＢ利用アプリケーション１３は、オペレーティングシステム１２を介してＵＳＢドライバ１２１にＵＳＢデバイス３に送信するデータを送信データとして引き渡す。ＵＳＢドライバ１２１は、送信データをホストコントローラ１１３を介して、ＰＨＹ１１２に送り、ＰＨＹ１１２はＡＦＥ１１１を介して送信データをシリアルに、ＵＳＢ２のデータ信号線であるＤ+、Ｄ-に出力する。また、ＰＨＹ１１２は、ＵＳＢデバイス３がＵＳＢ２のデータ信号線であるＤ+、Ｄ-にシリアルに出力したデータをＡＦＥ１１１を介して受信データとして受信し、受信データをホストコントローラ１１３を介してＵＳＢドライバ１２１に送信し、ＵＳＢドライバ１２１は、受信データの宛先のＵＳＢ利用アプリケーション１３に受信データを引き渡す。
【００２０】
以下、このような構成のホスト装置１において、ＵＳＢドライバ１２１が行うＵＳＢデバイス接続制御処理について説明する。
このＵＳＢデバイス接続制御処理は、ＵＳＢデバイス３がホスト装置１に物理的に接続されると、その実行が開始される。ＵＳＢデバイス３がホスト装置１に物理的に接続されたことは、ＵＳＢ２のデータ信号線であるＤ+、Ｄ-の双方がＬである状態から一方がＨに変化したことをもって検出することができる。ＵＳＢコントローラ１１のＡＦＥ１１１は、この変化を検出したならば、ホストコントローラ１１３を介して、ＵＳＢデバイス３の物理的な接続の検出を、ＵＳＢドライブに通知し、ＵＳＢドライブは当該通知より、ＵＳＢデバイス３がホスト装置１に物理的に接続されたことを検出する。
【００２１】
さて、図２に、このＵＳＢデバイス接続制御処理の手順を示す。
図示するように、この処理では、まず、以下で使用するパラメータのｎ、ｍを０に初期化する（ステップ２０２）。
そして、ホストコントローラ１１３を介して、ＡＦＥ１１１に、リセット信号をＵＳＢ２に所定期間送信させる（ステップ２０４）。リセット信号の送信は、ＵＳＢ２のデータ信号線であるＤ+、Ｄ-の双方がＬである状態を10ｍｓ以上継続することによって実現される。
次に、ＵＳＢドライバ１２１は、ホストコントローラ１１３、ＰＨＹ１１２、ＡＦＥ１１１を介して、ＵＳＢデバイス３との間で、各種ディスクリプション等の所定のコンフィギュレーションデータを送受しながら、ＵＳＢデバイス３にＵＳＢアドレスを割り当てると共に、ＵＳＢデバイス３の各種使用設定を行うコンフィギュレーションのシーケンスを開始する（ステップ２０６）。
【００２２】
そして、コンフィギュレーションのシーケンスを実行しながら、エラーの発生と（ステップ２０８）、コンフィギュレーションの正常な完了（ステップ２１０）とを監視する。なお、エラーとしては、ＵＳＢデバイス３からの所定期間内の応答無しや、異常応答の受信を検出する。
【００２３】
そして、コンフィギュレーションが正常に完了したならば（ステップ２１０）、処理を終了する。ここで、このコンフィギュレーションの正常完了により、ホスト装置１とＵＳＢデバイス３との間で相互のデータ通信を行えるようになる。
一方、エラーが発生したならば（ステップ２０８）、ｍが所定のしきい値Ｔｈｍ（Ｔｈｍは、たとえば３とする）未満であるかどうかを判定し（ステップ２１２）、ｍがしきい値Ｔｈｍ未満であれば、ｍが０であるかどうかをさらに判定する（ステップ２１６）、そして、ｍが０であれば、ｎが所定のしきい値Ｔｈｎ未満（Ｔｈｎは、たとえば、０や２とする）未満であるかどうかを調べ、ｎがしきい値Ｔｈｎ未満であれば（ステップ２２２）、ｎを１増加し（ステップ２２４）、ステップ２０４のリセット信号の送信からの処理を繰り返す。
【００２４】
一方、ｎがしきい値Ｔｈｎ以上であれば、ホストコントローラ１１３を介して給電制御部１１４に、ＵＳＢ２の給電線Ｖｂｕｓへの給電を所定期間（たとえば、0.5ｓ）だけ一時停止させた後に（ステップ２１８）再開し、ｍを１増加し（ステップ２２０）、ステップ２０４のリセット信号の送信からの処理を繰り返す。
【００２５】
一方、ステップ２１６でｍが０でないと判定された場合にも、ホストコントローラ１１３を介して給電制御部１１４に、ＵＳＢ２の給電線Ｖｂｕｓへの給電を所定期間（たとえば、0.5ｓ）だけ一時停止させた上で（ステップ２１８）、ｍを１増加し（ステップ２２０）、ステップ２０４のリセット信号の送信からの処理を繰り返す。
【００２６】
また、ステップ２１２において、ｍがしきい値Ｔｈｍ未満でなければ、ユーザに対して、たとえば接続されたＵＳＢデバイス３が正常に応答しない旨のメッセージを表示することにより、エラー報告を行い（ステップ２１４）、処理を終了する。
以上、ＵＳＢドライバ１２１が行うＵＳＢデバイス接続制御処理について説明した。
このようなＵＳＢデバイス接続制御処理によれば、ホスト装置１が行う、リセット信号の送信とコンフィギュレーションシーケンスの実行とより構成されるエニュメレーション動作中にエラーが発生すると、リセット信号送信からのエニュメレーション動作が、エニュメレーションが成功するまでＴｈｎ回繰り返される。
【００２７】
そして、エニュメレーション動作をＴｈｎ回繰り返しても、エニュメレーションが成功しない場合には、ＵＳＢデバイス３への給電を一旦停止した後にエニュメレーション動作を行う処理が、エニュメレーションが成功するまで、Ｔｈｍ回繰り返される。
そして、ＵＳＢデバイス３への給電を一旦停止した後にエニュメレーション動作を行う処理をＴｈｍ回繰り返してもエニュメレーションが成功しなかった場合には、ユーザに対してエラー報告が行われる。
ここで、ＵＳＢデバイス３はＵＳＢ２の給電線Ｖｂｕｓの給電の有無によってホスト装置１との物理的な接続の有無を検出し、ホスト装置１との物理的な接続を検出すると、ホスト装置１との接続制御を担う機能部において、ＵＳＢデバイス３側の接続制御処理を開始する。ここで、ＵＳＢデバイス３のホスト装置１との接続制御を担う機能部は、ホスト装置１との物理的な接続が検出されたとき、または、ホスト装置１との物理的な接続が解除されたときに状態が初期化される。すなわち、たとえば、ＵＳＢデバイス３のホスト装置１との接続制御を担う機能部は、ホスト装置１との物理的な接続が検出されたときに起動され、初期化状態からその処理を行う。
【００２８】
よって、ホスト装置１とＵＳＢデバイス３との間のエニュメレーション中にエラーを発生してしまった場合に、ＵＳＢ２の給電線Ｖｂｕｓへの給電を所定期間（たとえば、0.5ｓ）だけ一時停止させることにより、ＵＳＢデバイス３に、ホスト装置１との物理的接続の解除、再接続が成されたものと認識させて、当該ＵＳＢデバイス３のホスト装置１の接続制御を担う機能部の状態を初期化することができることとなる。
【００２９】
したがって、エメレーションのエラー発生時に、ＵＳＢ２の給電線Ｖｂｕｓへの給電を所定期間だけ一時停止した上で、エミューレーションを再実行する本実施形態によれば、エミューレーション中に発生したエラーが、ＵＳＢデバイス３のホスト装置１との接続制御を担う機能部のバグを原因とするフリーズ/ハングアップ等による、ＵＳＢデバイス３とホスト装置１との物理的接続の解除、再接続を行ってＵＳＢデバイス３のホスト装置１との接続制御を担う機能部の状態を初期化すれば解決される類のものである場合には、ユーザのデバイスのホスト装置１への物理的な接続の解除及び再接続の作業を要することなく、ホスト装置１とＵＳＢデバイス３の論理的な接続を確立することができるようになる。
【００３０】
ここで、以下に、上述した、ＵＳＢデバイス接続制御処理の動作例を示す。
図３ａは、Ｔｈｎを２としたときの動作例を示したものである。
図示するように、ＵＳＢデバイス３が物理的にホスト装置１に接続されると（Ｓ３００）、ホスト装置１はＵＳＢデバイス３との物理的接続を検出し（Ｓ３０１）ＵＳＢデバイス３はホスト装置１との物理的接続を検出する（Ｓ４０１）。
次に、ＵＳＢデバイス物理的接続を検出したホスト装置１は、リセット信号を送信し（Ｓ３０２）、その後、コンフィギュレーションのシーケンス（Ｓ３０３）の実行を開始する。
そして、コンフィギュレーションのシーケンス（Ｓ３０３）中に一度目のエラー発生が検出されたならば（Ｓ３０４）、まだ、エラー発生回数がＴｈｎ=２以上でないので、再度、リセット信号を送信し（Ｓ３０５）、その後、コンフィギュレーションのシーケンス（Ｓ３０６）の実行を開始する。
そして、コンフィギュレーションのシーケンス（Ｓ３０６）中に二度目のエラー発生が検出されたならば（Ｓ３０７）、エラー発生回数がＴｈｎ=２以上となっているので、一旦、ＵＳＢ２の給電線Ｖｂｕｓへの給電を停止（Ｓ３０８）した後に、当該給電を再開する（Ｓ３０９）。一方、ＵＳＢデバイス３は、このＵＳＢ２の給電線Ｖｂｕｓへの給電の停止（Ｓ３０８）により、ホスト装置１との物理的な接続の解除を検出し（Ｓ４０２）、その後のＵＳＢ２の給電線Ｖｂｕｓへの給電の再開（Ｓ３０９）よりホスト装置１との接続を検出する（Ｓ４０３）。そして、この間に、ＵＳＢデバイス３のホスト装置１との接続制御を担う機能部の状態は初期化される。
【００３１】
そして、ホスト装置１は、ＵＳＢ２の給電線Ｖｂｕｓへの給電を再開したならば（Ｓ３０９）、リセット信号を送信し（Ｓ３１０）、その後、コンフィギュレーションのシーケンス（Ｓ３１１）の実行を開始する。
そして、ホスト装置１は、コンフィギュレーションの正常な完了を検出したならば（Ｓ３１２）、ＵＳＢデバイス接続制御処理を終了する。
このコンフィギュレーションの正常な完了によって、ホスト装置１とＵＳＢデバイス３とは論理的に接続され、以降相互にデータ通信を行えるようになる。
次に、図３ｂにＴｈｎを０としたときの動作例を示す。
この場合、図示するように、ＵＳＢデバイス３が物理的にホスト装置１に接続されると（Ｓ３５０）、ホスト装置１はＵＳＢデバイス３との物理的接続を検出し（Ｓ３５１）ＵＳＢデバイス３はホスト装置１との物理的接続を検出する（Ｓ４５１）。
【００３２】
次に、ＵＳＢデバイス物理的接続を検出したホスト装置１は、リセット信号を送信し（Ｓ３５２）、その後、コンフィギュレーションのシーケンス（Ｓ３５３）の実行を開始する。
そして、コンフィギュレーションのシーケンス（Ｓ３５３）中に一度目のエラー発生が検出されたならば（Ｓ３５４）、エラー発生回数がＴｈｎ=０以上であるので、一旦、ＵＳＢ２の給電線Ｖｂｕｓへの給電を停止（Ｓ３５５）した後に、当該給電を再開する（Ｓ３５６）。一方、ＵＳＢデバイス３は、このＵＳＢ２の給電線Ｖｂｕｓへの給電の停止により、ホスト装置１との物理的な接続の解除を検出し（Ｓ４５２）、その後のＵＳＢ２の給電線Ｖｂｕｓへの給電の再開よりホスト装置１との接続を検出する（Ｓ４５３）。そして、この間に、ＵＳＢデバイス３のホスト装置１との接続制御を担う機能部の状態は初期化される。
【００３３】
そして、ホスト装置１は、ＵＳＢ２の給電線Ｖｂｕｓへの給電を再開したならば（Ｓ３５６）、リセット信号を送信し（Ｓ３５７）、その後、コンフィギュレーションのシーケンス（Ｓ３５８）の実行を開始する。
そして、ホスト装置１は、コンフィギュレーションの正常な完了を検出したならば（Ｓ３５９）、ＵＳＢデバイス接続制御処理を終了する。
このコンフィギュレーションの正常な完了によって、ホスト装置１とＵＳＢデバイス３とは論理的に接続され、以降相互にデータ通信を行えるようになる。
次に、以上のようにして、ホスト装置１とＵＳＢデバイス３とが論理的に接続されてデータ通信が開始された後に、ホスト装置１において、ＵＳＢドライバ１２１が行う通信エラーリカバリー処理について説明する。
ここで、この通信エラーリカバリー処理は、ＵＳＢドライバ１２１において、ＵＳＢデバイス３との間のデータ通信にエラーが検出された場合に、その実行が開始される。このデータ通信のエラーとしては、前記データ通信を用いたホスト装置１からの要求に対する、ＵＳＢデバイス３からの規定時間中の前記データ通信を用いた応答無しなどのエラーを検出する。
【００３４】
図４に、この通信エラーリカバリー処理の手順を示す。
図示するように、この通信エラーリカバリー処理では、まず、パラメータのｍを０に初期化する（ステップ４０２）。
そして、ホストコントローラ１１３を介して給電制御部１１４に、ＵＳＢ２の給電線Ｖｂｕｓへの給電を所定期間（たとえば、0.5ｓ）だけ一時停止させた後に（ステップ４０２）再開させる（ステップ４０４）。
次に、ホストコントローラ１１３を介して、ＡＦＥ１１１に、リセット信号をＵＳＢ２に所定期間送信させた後に（ステップ４０６）、ＵＳＢデバイス３との間のコンフィギュレーションのシーケンスを開始する（ステップ４０８）。
そして、コンフィギュレーションのシーケンスを実行しながら、エラーの発生と（ステップ４１０）、コンフィギュレーションの正常な完了（ステップ４１２）とを監視する。
そして、コンフィギュレーションが正常に完了したならば（ステップ４１２）、処理を終了する。
一方、エラーが発生したならば、ｍが所定のしきい値Ｔｈｍ（たとえば、３）未満であるかどうかを判定し（ステップ４１４）、ｍがしきい値Ｔｈｍ未満であれば、ｍを１増加し（ステップ４１８）、ステップ４０４からの処理をくり返す。
一方、ｍがしきい値Ｔｈｍ未満でなければ、ユーザに対して、たとえば接続されたＵＳＢデバイス３が正常に応答しない旨のメッセージを表示することにより、エラー報告を行い（ステップ４１６）、処理を終了する。
以上、通信エラーリカバリー処理について説明した。
ここで、ＵＳＢデバイス３のデータ通信に関わる各機能部は、ホスト装置１との物理的な接続が検出されたとき、または、ホスト装置１との物理的な接続が解除されたときに状態が初期化されることが期待できる。
よって、このような、給電線Ｖｂｕｓの給電の一時オフの手順を含む本実施形態に係る通信エラーリカバリー処理によれば、データ通信開始後にＵＳＢドライバ１２１との間でエラーが発生した場合に、ＵＳＢデバイス３に、ホスト装置１との物理的な接続の解除と再接続が成されたものと認識せしめて、データ通信に関わる各機能部を、一旦初期化させた上で、当該ＵＳＢデバイス３の間の論理的な接続を再確立して、ＵＳＢデバイス３との間のデータ通信を正常に行える状態に復帰させることができるようになる。
【００３５】
以上、本発明の実施形態について説明した。
ところで、以上の実施形態は、ＵＳＢデバイス３以外の、ホスト装置１からの給電を受け、当該給電の有無によってホスト装置１との物理的な接続の検出を行う任意のデバイスに対する、ホスト装置１の接続制御に同様に適用することができる。
【符号の説明】
【００３６】
１…ホスト装置、２…ＵＳＢ、３…ＵＳＢデバイス、１０…ＵＳＢコネクタ、１１…ＵＳＢコントローラ、１２…オペレーティングシステム、１３…ＵＳＢ利用アプリケーション、１１１…ＡＦＥ、１１２…ＰＨＹ、１１３…ホストコントローラ、１１４…給電制御部、１２１…ＵＳＢドライバ。
【図１】
2012137918.tif 000003
【図２】
2012137918.tif 000004
【図３】
2012137918.tif 000005
【図４】
2012137918.tif 000006