(57)【特許請求の範囲】
【請求項１】
ホスト装置と複数のデバイスクラスに対応しているデバイス装置とがシリアルバスを介してデータ通信を行う通信方法であって、
前記デバイス装置が、前記デバイス装置の対応している全てのデバイスクラスについて前記ホスト装置と接続可能か否かを判断する接続確認ステップと、
前記接続確認ステップで前記ホスト装置と接続可能と判断されたデバイスクラスを出力部に出力する出力ステップと、
前記出力部に出力されたデバイスクラスの中から１つのデバイスクラスが選択されたときに、前記選択されたデバイスクラスでデータ通信を開始するステップと、
を含み、
前記接続確認ステップは、
前記デバイス装置から前記ホスト装置へのデバイスクラスの通知から所定の制限時間内に、前記デバイス装置が前記ホスト装置からの接続クラスの指示を受信できるか否かにより、前記通知したデバイスクラスが前記ホスト装置と接続可能か否かを判断し、
前記制限時間は、前記ホスト装置側で前記デバイス装置との物理的な接続を検出した際に発生されるバスリセットから、前記デバイス装置が前記ホスト装置からのデバイスクラスの問い合わせを受信するまでの応答時間に基づいて設定されることを特徴とする通信方法。
【請求項２】
前記制限時間は、１回目の接続確認ステップではドライバのロード時間を加味せずに設定され、２回目以降の接続確認ステップではドライバのロード時間を加味して設定されることを特徴とする請求項１に記載の通信方法。
【請求項３】
前記制限時間は、前記接続確認ステップが再実行されるたびに長くなるように設定されることを特徴とする請求項１又は２に記載の通信方法。
【請求項４】
前記接続確認ステップは、
前記各デバイスクラスについて前記ホスト装置と接続可能か否かの判断が終了した後に、前記ホスト装置と前記デバイス装置とが前記シリアルバスによって接続された状態で、前記デバイス装置が、前記ホスト装置に接続されるＶｂｕｓラインをハイインピーダンス状態に設定するステップと、
前記ハイインピーダンス状態に設定してから所定時間経過後に、前記デバイス装置が前記ハイインピーダンス状態を解除するステップと、
を含むことを特徴とする請求項１〜３のいずれか１つに記載の通信方法。
【請求項５】
前記出力ステップは、
前記接続確認ステップで前記ホスト装置と接続可能と判断されたデバイスクラスを優先度の高い順に並び替えて前記出力部に出力することを特徴とする請求項１〜４のいずれか１つに記載の通信方法。
【請求項６】
シリアルバスを介してホスト装置とデータ通信を行うデバイス装置であって、
前記デバイス装置の対応している全てのデバイスクラスについて前記ホスト装置と接続可能か否かを判断し、前記ホスト装置と接続可能と判断されたデバイスクラスを出力部に出力させる制御手段を備え、
前記制御手段は、前記デバイス装置から前記ホスト装置へのデバイスクラスの通知から所定の制限時間内に、前記デバイス装置が前記ホスト装置からの接続クラスの指示を受信できるか否かにより、前記通知したデバイスクラスが前記ホスト装置と接続可能か否かを判断し、
前記制御手段は、前記制限時間を、前記ホスト装置側で前記デバイス装置との物理的な接続を検出した際に発生されるバスリセットから、前記デバイス装置が前記ホスト装置からのデバイスクラスの問い合わせを受信するまでの応答時間に基づいて設定することを特徴とするデバイス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信方法及びデバイス装置に関するものである。
【背景技術】
【０００２】
近年、ホスト機能を有するコンピュータ（ホスト装置）とそれに接続した周辺機器（デバイス装置）との間で通信を行うためのシリアルインターフェースの一種として、ＵＳＢ（Universal Serial Bus）インターフェース（以下、単にＵＳＢともいう。）が普及している。
【０００３】
このようなＵＳＢによりホスト装置とデバイス装置とが接続されると、ホスト装置側から接続リクエストが実施される。すなわち、図１０に示すように、バスリセット後、ホスト装置はデバイス装置のデバイス種類を確認する（デバイスリクエスト）。デバイス装置からデバイス種類の情報を含むデバイスディスクリプタを受信すると、続いて、ホスト装置はデバイス装置に設定されているデバイスクラスを確認する（コンフィグレーションリクエスト）。デバイス装置からデバイスクラスの情報を含むコンフィグレーションディスクリプタが返送され、そのデバイスクラスがホスト装置の対応しているクラスである場合には、ホスト装置は、そのクラスでデバイス装置と接続するために接続クラスを指定する（セットコンフィグレーション）。その後、デバイス装置から接続結果が返送されると、指定されたデバイスクラスの通信プロトコルで通信が開始される。
【０００４】
ここで、デバイス装置が複数のデバイスクラスに対応している場合には、ユーザがホスト装置側とデバイス装置側の対応を判断して、複数のデバイスクラスの中から１つのデバイスクラスを事前に選択する必要がある。このようなデバイスクラスの選択には、ホスト装置やデバイス装置の知識のみならず、ＵＳＢの知識も必要となる。このため、デバイスクラスを選択することは、不慣れなユーザにとっては判断が難しく煩雑な作業となる。
【０００５】
そこで、このようなデバイスクラスの選択操作におけるユーザの利便性を向上させる様々な方法が提案されている。
例えば第１の従来例としては、ホスト装置がデバイス装置の対応している複数のデバイスクラスの中から１つのデバイスクラスを自動的に選択する方法が提案されている（例えば、特許文献１参照）。
【０００６】
また、第２の従来例としては、デバイス装置がホスト装置との接続状況を判断して自動的に接続クラスを切り替える方法が提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１１３７６８号公報
【特許文献２】再公表特許２００５−００１７０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところが、上述した第１及び第２の従来例にもそれぞれ以下のような問題点がある。
すなわち、第１の従来例では、ホスト装置の都合で接続クラスが選択されるため、ユーザの意図するデバイスクラスで接続できない場合がある。具体的には、コンピュータにMassStorageClass（ＭＳＣ）とPictureTransferProtocol（ＰＴＰ）に対応したデジタルスチルカメラを接続すると、コンピュータ側の都合で常にＭＳＣで接続されることになる。このため、ユーザがＰＴＰで接続したい場合に、ユーザの意図に沿ったデバイスクラスで動作させることができないという問題がある。
【０００９】
また、第２の従来例では、デバイス装置が当該デバイス装置の対応するデバイスクラスを順番にホスト装置と接続可能か否かを判断し、最初に接続可能と判断された接続クラスで接続を行うため、ユーザの意図するデバイスクラスで接続できない場合がある。具体的には、ＭＳＣとPictbridge（登録商標）に対応したプリンタに対して、同様にＭＳＣとPictbridge（登録商標）に対応したデジタルスチルカメラを接続すると、ＭＳＣから接続確認が実行されるため、常にＭＳＣで接続されることになる。このため、ユーザがPictbridge（登録商標）で接続したい場合に、ユーザの意図に沿ったデバイスクラスで動作させることができないという問題がある。
【課題を解決するための手段】
【００１０】
本発明の一観点によれば、デバイス装置が、前記デバイス装置の対応している全てのデバイスクラスについてホスト装置と接続可能か否かを判断する接続確認ステップと、前記接続確認ステップで前記ホスト装置と接続可能と判断されたデバイスクラスを出力部に出力する出力ステップと、前記出力部に出力されたデバイスクラスの中から１つのデバイスクラスが選択されたときに、前記選択されたデバイスクラスでデータ通信を開始するステップと、を含み、前記接続確認ステップは、前記デバイス装置から前記ホスト装置へのデバイスクラスの通知から所定の制限時間内に、前記デバイス装置が前記ホスト装置からの接続クラスの指示を受信できるか否かにより、前記通知したデバイスクラスが前記ホスト装置と接続可能か否かを判断し、前記制限時間は、前記ホスト装置側で前記デバイス装置との物理的な接続を検出した際に発生されるバスリセットから、前記デバイス装置が前記ホスト装置からのデバイスクラスの問い合わせを受信するまでの応答時間に基づいて設定される。
【発明の効果】
【００１１】
本発明の一観点によれば、クラス選択におけるユーザの利便性を向上させつつも、ユーザの意図に沿ったデバイスクラスを選択することができる。
【図面の簡単な説明】
【００１２】
【図１】データ転送システムを示すブロック図。
【図２】デジタルスチルカメラの内部構成例を示すブロック図。
【図３】ＵＳＢ接続解除部の内部構成例を示すブロック回路図。
【図４】（ａ）〜（ｄ）デバイスクラスの選択画面を示すデジタルスチルカメラの背面図。
【図５】デバイスクラスの選択方法を説明するためのフローチャート。
【図６】デバイスクラスの選択方法を説明するためのフローチャート。
【図７】デバイスクラスの選択方法を説明するための説明図。
【図８】（ａ）、（ｂ）クラステーブルを説明するための説明図。
【図９】制限時間の算出方法を説明するための説明図。
【図１０】従来例のデバイスクラスの選択方法を説明するための説明図。
【発明を実施するための形態】
【００１３】
以下、一実施形態を図１〜図９に従って説明する。
図１に示すように、データ転送システムは、デバイス装置としてのデジタルスチルカメラ（ＤＳＣ）１０と、ホスト装置としてのパーソナルコンピュータ（ＰＣ）３０と、ホスト装置としてのプリンタ４０とを含む。
【００１４】
ＤＳＣ１０は、ＵＳＢケーブル５０を介してＰＣ３０又はプリンタ４０に着脱自在に接続される。このＤＳＣ１０は、複数のデバイスクラスに対応したＵＳＢデバイスである。また、ＤＳＣ１０は、複数のデバイスクラスのうちの１つのデバイスクラスを選択してＰＣ３０又はプリンタ４０との間で通信を行うことができる。この複数のデバイスクラスには、例えばMassStorageClass（ＭＳＣ）と、StillImageClass（ＳＩＣ）と、UsbVideoClass（ＵＶＣ）と、UsbAudioClass（ＵＡＣ）とが含まれる。なお、上記ＳＩＣは、PictureTransferProtocol（ＰＴＰ）やPictBridgeが利用するクラスである。
【００１５】
ここで、本実施形態では、ＰＣ３０がＭＳＣ、ＳＩＣ及びＵＶＣに対応しているとともに、プリンタ４０がＭＳＣ及びＳＩＣに対応している。このため、ＤＳＣ１０とＰＣ３０との間では、ＭＳＣ、ＳＩＣ及びＵＶＣのうちの１つのデバイスクラスの通信プロトコルに基づいて通信が行われる。また、ＤＳＣ１０とプリンタ４０との間では、ＭＳＣ及びＳＩＣのうちの１つのデバイスクラスの通信プロトコルに基づいて通信が行われる。
【００１６】
次に、ＤＳＣ１０の内部構成例を図２に従って説明する。
図２に示すように、ＤＳＣ１０は、撮像部１１と、画像処理手段１２と、出力制御手段１３と、表示部１４と、メディア制御手段１６と、メモリメディア１７と、入力部１８と、システム制御手段１９と、ＵＳＢ制御手段２０と、ＵＳＢ接続解除部２２と、ＵＳＢコネクタ２３とを含む。画像処理手段１２と、出力制御手段１３と、メディア制御手段１６と、システム制御手段１９とは、バス２５によって互いに接続されている。なお、このバス２５は、アドレスバス、コントロールバス及びデータバスを含む。
【００１７】
撮像部１１は、対象物を撮像して画像データを生成する。この撮像部１１は、撮像センサとＡ／Ｄ変換回路を含む。なお、撮像センサとしては、ＣＣＤ（Charge Coupled Device）イメージセンサやＣＭＯＳ（Complementary MOS）イメージセンサなどを用いることができる。
【００１８】
画像処理手段１２は、撮像部１１から入力される画像データに対して、例えばガンマ補正、ホワイトバランス調整、及びＲＧＢ−ＹＵＶ変換処理等の各種画像処理を施す。また、画像処理手段１２は、画像処理の施された画像データをＪＰＥＧ方式やＭＰＥＧ方式等により符号化する。そして、画像処理手段１２は、符号化後の画像データを、メディア制御手段１６を介してメモリメディア１７に記録する。また、画像処理手段１２は、メモリメディア１７から読み出される画像データを復号化し、その復号化後の画像データを、出力制御手段１３を介して表示部１４に出力する。
【００１９】
出力制御手段１３は、例えば画像処理手段１２から入力する画像データを、表示部１４が対応し得る形式のデータに変換して該表示部１４に出力する。表示部１４は、出力制御手段１３から入力する画像データに基づく画像や各種設定画面（例えば、図４に示すデバイスクラスの選択画面）を表示する。なお、表示部１４としては、例えば液晶ディスプレイ（Liquid Crystal Display：ＬＣＤ）や有機ＥＬ（Electronic Luminescence）などが用いることができる。
【００２０】
メディア制御手段１６は、メモリメディア１７に対するデータの入出力を実行する。メモリメディア１７には、画像処理手段１２から出力される符号化後の画像データ等がメディア制御手段１６を通じて記憶される。このメモリメディア１７は、ＤＳＣ１０に挿脱自在に設けられている。なお、メモリメディア１７としては、例えばコンパクトフラッシュ（登録商標）やＳＤメモリカード（登録商標）などの携帯型メモリカードを用いることができる。
【００２１】
入力部１８は、ユーザにより操作される各種ボタンを有し、ユーザの操作情報を入力する。なお、入力部１８の各種ボタンとしては、図４（ａ）に示すように、シャッターボタン１８ａと、上矢印キー１８ｂと、下矢印キー１８ｃと、左矢印キー１８ｄと、右矢印キー１８ｅと、矢印キー１８ｂ〜１８ｅの操作によって選択した項目を実行させるための実行ボタン１８ｆと、メニュー画面を表示させるためのメニューボタン１８ｇと、を含む。
【００２２】
図２に示すシステム制御手段１９は、画像処理手段１２、出力制御手段１３、メディア制御手段１６及びＵＳＢ制御手段２０を統括制御するもので、データや画像の解析、解析結果に基づく必要な情報の各回路への設定及びデータの書き込み／読み出し制御等を行う。このシステム制御手段１９は、入力部１８の各種ボタン１８ａ〜１８ｇにより設定・指定された操作情報に基づいて、各手段１２，１３，１６，２０の動作を制御する。なお、システム制御手段１９は、タイマ１９ａを内蔵している。
【００２３】
ＵＳＢ制御手段２０は、システム制御手段１９の制御に基づいて、ＵＳＢ接続状態や通信を制御する。具体的には、ＵＳＢ制御手段２０は、当該ＤＳＣ１０がホスト装置（ＰＣ３０又はプリンタ４０）と接続された際に、当該ＤＳＣ１０の対応しているデバイスクラスの全てについてホスト装置側が対応しているか否かを判断する。そして、ＵＳＢ制御手段２０は、ホスト装置と接続可能（ホスト装置が対応している）と判断されたデバイスクラスをリスト化し、そのリストを上記表示部１４に表示させる。
【００２４】
また、ＵＳＢ制御手段２０は、ＵＳＢコネクタ２３やＵＳＢケーブル５０を介して接続されるＰＣ３０又はプリンタ４０との間でデータの送受信を行うためのＵＳＢインターフェース２１を有する。このＵＳＢインターフェース２１には、ＵＳＢケーブル５０の接続されるＵＳＢコネクタ２３がＵＳＢ接続解除部２２を介して接続されている。
【００２５】
ＵＳＢ接続解除部２２は、ＵＳＢ制御手段２０から入力する制御信号ＣＳに応じて、ＵＳＢコネクタ２３に接続される信号線（図３に示すＶｂｕｓラインＬ１、Ｄ＋ラインＬ２及びＤ−ラインＬ３）を所定時間だけハイインピーダンス状態とするための回路である。
【００２６】
ここで、ＵＳＢ接続解除部２２の内部構成例を図３に従って説明する。
まず、ＵＳＢコネクタ２３には、ホスト装置（ここでは、ＰＣ３０）から所定電圧（例えば、＋５Ｖ）が供給されるＶｂｕｓラインＬ１と、データを伝達するＤ＋ラインＬ２及びＤ−ラインＬ３と、基準電位を与えるＧＮＤラインＬ４との４本の信号線が接続されている。そして、これらの信号線は、ＵＳＢコネクタ２３及びＵＳＢケーブル５０を介してＰＣ３０内のＵＳＢコネクタ３１に接続されている。以下、説明の便宜上、ＤＳＣ１０のＵＳＢコネクタ２３に接続される信号線Ｌ１〜Ｌ３を、ＰＣ３０のＵＳＢコネクタ３１に接続される信号線Ｌ１〜Ｌ３とも言う。
【００２７】
また、上記信号線Ｌ１〜Ｌ３は、ＤＳＣ１０内において、ＵＳＢ接続解除部２２を介してＵＳＢインターフェース２１に接続される信号線Ｌ１１〜Ｌ１３と接続されている。このＵＳＢ接続解除部２２は、ＮチャネルＭＯＳトランジスタＴ１〜Ｔ７と、抵抗Ｒ１〜Ｒ３と、インバータ回路２２ａとを含む。以下、信号線Ｌ１〜Ｌ４と、ＵＳＢ接続解除部２２と、信号線Ｌ１１〜Ｌ１３との接続関係について詳述する。
【００２８】
ＵＳＢコネクタ２３に接続されるＶｂｕｓラインＬ１は、トランジスタＴ１を介してＶｂｕｓラインＬ１１に接続されている。このＶｂｕｓラインＬ１１は、ＵＳＢインターフェース２１のＶｂｕｓ端子に接続されている。また、上記ＶｂｕｓラインＬ１は、トランジスタＴ２を介して抵抗Ｒ１の第１端子に接続されている。この抵抗Ｒ１の第２端子はＧＮＤラインＬ４に接続されている。また、ＵＳＢインターフェース２１のＶｂｕｓ端子（ＶｂｕｓラインＬ１１）には、トランジスタＴ３を介してバイアス電圧ＶＢ（例えば、＋５Ｖ）が供給される。
【００２９】
ＵＳＢコネクタ２３に接続されるＤ＋ラインＬ２は、トランジスタＴ４を介してＤ＋ラインＬ１２に接続されている。このＤ＋ラインＬ１２は、ＵＳＢインターフェース２１のＤ＋端子に接続されている。また、上記Ｄ＋ラインＬ２は、トランジスタＴ５を介して抵抗Ｒ２の第１端子に接続されている。この抵抗Ｒ２の第２端子はＧＮＤラインＬ４に接続されている。
【００３０】
ＵＳＢコネクタ２３のＤ−端子に接続されるＤ−ラインＬ３は、トランジスタＴ６を介してＤ−ラインＬ１３に接続されている。このＤ−ラインＬ１３は、ＵＳＢインターフェース２１のＤ−端子に接続されている。また、上記Ｄ−ラインＬ３は、トランジスタＴ７を介して抵抗Ｒ３の第１端子に接続されている。この抵抗Ｒ３の第２端子はＧＮＤラインＬ４に接続されている。なお、抵抗Ｒ１〜Ｒ３の抵抗値は、ＶｂｕｓラインＬ１、Ｄ＋ラインＬ２及びＤ−ラインＬ３がそれら抵抗Ｒ１〜Ｒ３にそれぞれ接続された際に、各信号線Ｌ１〜Ｌ３をハイインピーダンス状態にすることができる程度の高抵抗値に設定されている。
【００３１】
ＵＳＢコネクタ２３に接続されるＧＮＤラインＬ４は、ＵＳＢインターフェース２１のＧＮＤ端子に接続されている。
上記トランジスタＴ１，Ｔ４，Ｔ６のゲートには、ＵＳＢ制御手段２０から出力される制御信号ＣＳが供給される。また、トランジスタＴ２，Ｔ３，Ｔ５，Ｔ７のゲートには、制御信号ＣＳがインバータ回路２２ａを介してそれぞれ供給される。
【００３２】
このため、Ｈレベルの制御信号ＣＳが入力されると、トランジスタＴ１，Ｔ４，Ｔ６がオンされるとともに、トランジスタＴ２，Ｔ３，Ｔ５，Ｔ７がオフされる。すると、信号線Ｌ１〜Ｌ３が信号線Ｌ１１〜Ｌ１３にそれぞれ接続される。このとき、ＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続されていると、ＰＣ３０のＵＳＢコネクタ３１に接続される信号線Ｌ１〜Ｌ３が信号線Ｌ１１〜Ｌ１３を介してＤＳＣ１０のＵＳＢインターフェース２１に接続されることになる。すなわち、ＤＳＣ１０とＰＣ３０とがＵＳＢ接続された状態となる。
【００３３】
一方、Ｌレベルの制御信号ＣＳが入力されると、トランジスタＴ１，Ｔ４，Ｔ６がオフされるとともに、トランジスタＴ２，Ｔ３，Ｔ５，Ｔ７がオンされる。すると、信号線Ｌ１〜Ｌ３が抵抗Ｒ１〜Ｒ３にそれぞれ接続される。このとき、ＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続されていたとしても、ＰＣ３０のＵＳＢコネクタ３１に接続される信号線Ｌ１〜Ｌ３が抵抗Ｒ１〜Ｒ３に接続されることになる。すなわち、ＰＣ３０のＵＳＢコネクタ３１に接続される信号線Ｌ１〜Ｌ３は、ハイインピーダンス状態となり、ＵＳＢケーブル５０がＤＳＣ１０と物理的に接続されていない場合と同様の状態となる。このため、ＰＣ３０側では、ＤＳＣ１０とのＵＳＢ接続が解除されたと判断される。このとき、ＵＳＢインターフェース２１のＶｂｕｓ端子（ＶｂｕｓラインＬ１１）には、トランジスタＴ３を介してバイアス電圧ＶＢが供給される。これにより、ＤＳＣ１０において、ＰＣ３０とのＵＳＢ接続が解除されたと判断されることを防止することができる。
【００３４】
さらに、制御信号ＣＳがＬレベルからＨレベルに切り替わると、上述の場合と同様に、ＰＣ３０のＵＳＢコネクタ３１に接続される信号線Ｌ１〜Ｌ３が信号線Ｌ１１〜Ｌ１３を介してＤＳＣ１０のＵＳＢインターフェース２１に接続されることになる。このため、ＰＣ３０側では、ＤＳＣ１０とのＵＳＢ接続が検出される。これにより、上述したＰＣ３０側におけるＵＳＢ接続の解除状態をリセットすることができる。
【００３５】
このように、このＵＳＢ接続解除部２２では、ＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続されている状態で、ＰＣ３０のＵＳＢコネクタ３１に接続される信号線Ｌ１〜Ｌ３をハイインピーダンス状態にすることにより、ＰＣ３０側でＵＳＢ接続が解除されたと認識させる。また、ＵＳＢ接続解除部２２では、信号線Ｌ１〜Ｌ３のハイインピーダンス状態を解除して信号線Ｌ１〜Ｌ３をＤＳＣ１０のＵＳＢインターフェース２１に接続することにより、ＰＣ３０側でＵＳＢ接続を検出させる。
【００３６】
次に、このように構成されたＤＳＣ１０とホスト装置３０との通信方法（とくに、デバイスクラスの選択方法）について図４〜図９に従って説明する。
ＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続されると、ＤＳＣ１０内のＵＳＢ制御手段２０は、当該ＤＳＣ１０の対応している全てのデバイスクラスについてＰＣ３０と接続可能か否かを判断する。ここで、ＵＳＢ制御手段２０は、各デバイスクラスについてコンフィグレーションディスクリプタをＰＣ３０に返答した後に、所定の制限時間内にＰＣ３０からセットコンフィグレーションを受信するか否かにより、当該デバイスクラスがＰＣ３０と接続可能か否かを判断する。そこで、ＵＳＢ制御手段２０は、まず制限時間ＴＬを求めるために図５に示すステップＳ１〜Ｓ７（ステップＳ１７、Ｓ１８）の処理を実行する。
【００３７】
すなわち、ＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続されると、ＵＳＢ制御手段２０は、当該ＵＳＢ制御手段２０の有する初期値テーブル２０ａから係数ｎ及びステップ幅Ｓｔ１，Ｓｔ２の値（例えば、ｎ＝２，Ｓｔ１＝１，Ｓｔ＝２）を取得する（ステップＳ１）。次に、ＵＳＢ制御手段２０は、ループ回数Ｌｐを初期値（０回）に設定し、ドライバロード時間ＴＤを初期値（例えば１５秒）に設定し、さらに当該ＵＳＢ制御手段２０の有する登録リスト２０ｂを初期化する（ステップＳ２）。その後、ＵＳＢ制御手段２０は、制限時間ＴＬを０秒に設定する（ステップＳ３）。
【００３８】
次に、ＵＳＢ制御手段２０は、制限時間ＴＬを設定するためのパケット応答時間ＴＰを計測する（ステップＳ４）。ここで、パケット応答時間ＴＰの計測方法について説明する。図７に示すように、ＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続されると、ＰＣ３０側でその物理的な接続（ＵＳＢ接続）が検出され、ＰＣ３０がバスリセットを発生する。そのバスリセット後に、ＰＣ３０は、ＤＳＣ１０のデバイス種類を確認するためにデバイスリクエストをＤＳＣ１０に送信する。すると、ＤＳＣ１０は、デバイスディスクリプタをＰＣ３０に返送する。このデバイスディスクリプタを受信すると、ＰＣ３０は、ＤＳＣ１０に設定されているデバイスクラスを確認するためにコンフィグレーションリクエストをＤＳＣ１０に送信する。このとき、ＤＳＣ１０では、ＵＳＢ接続時に発生するバスリセットから、最初のコンフィグレーションリクエストの受信までの時間をパケット応答時間ＴＰとして計測する。具体的には、バスリセットの発生時を計測開始時間ｔ１とし、コンフィグレーションリクエストの受信時を計測終了時間ｔ２とし、それらの差分の時間（ｔ２−ｔ１）をシステム制御手段１９の内蔵するタイマ１９ａにより計測することで、パケット応答時間ＴＰを計測する。
【００３９】
次に、図５に示すステップＳ５において、ＵＳＢ制御手段２０は、ループ回数Ｌｐが０であるか否かを判断する。ここでは、ループ回数Ｌｐが０であるため、ステップＳ６に移る。続いて、ＵＳＢ制御手段２０は、パケット応答時間ＴＰに係数ｎを乗算した値を制限時間ＴＬに設定する（ステップＳ６）。その後、ＵＳＢ制御手段２０は、係数ｎにステップ幅Ｓｔ１を加算した値を新たな係数ｎとし、ループ回数Ｌｐに「１」を加算する（ステップＳ７）。
【００４０】
次に、ＵＳＢ制御手段２０は、上記設定した制限時間ＴＬを利用して、当該ＤＳＣ１０の対応している全てのデバイスクラスについてＰＣ３０と接続可能か否かを図６に示すステップＳ８〜Ｓ１３の処理により判断する（接続確認）。
【００４１】
具体的には、まず、ＵＳＢ制御手段２０は、ＰＣ３０と接続可能か否かを確認していないデバイスクラスを選択する（ステップＳ８）。なお、ここでは、ＤＳＣ１０に対応している全てのデバイスクラス（ＭＳＣ、ＳＩＣ、ＵＶＣ及びＵＡＣ）が未確認クラスであるため、例えばＭＳＣを選択する。
【００４２】
続いて、ＵＳＢ制御手段２０は、上記選択したデバイスクラス（ＭＳＣ）についてＰＣ３０と接続可能なクラスであるか否かを判断する（ステップＳ９）。ここで、この接続確認の方法について図７に従って説明する。図７に示すように、ＵＳＢ制御手段２０は、上述したようにＰＣ３０からコンフィグレーションリクエストを受けると、上記選択したデバイスクラス（ＭＳＣ）の情報を含むコンフィグレーションディスクリプタをＰＣ３０に送信する。このとき、ＰＣ３０がそのデバイスクラスに対応している場合には、ＰＣ３０からセットコンフィグレーションがＤＳＣ１０に返送される。このため、ＵＳＢ制御手段２０は、コンフィグレーションディスクリプタの送信後、上記設定した制限時間ＴＬ内にＰＣ３０からのセットコンフィグレーションを受信した場合には、そのデバイスクラスがＰＣ３０と接続可能であると判断する。
【００４３】
一方、コンフィグレーションディスクリプタの送信後に、
（１）上記設定した制限時間ＴＬ内にＰＣ３０からのセットコンフィグレーションを受信できない場合
（２）バスリセットが発生した場合
（３）ＰＣ３０からデバイスリクエストを受信した場合
のいずれかに該当する場合には、ＵＳＢ制御手段２０は、そのデバイスクラスがＰＣ３０と接続不可であると判断する。
【００４４】
なお、上記選択したデバイスクラスであるＭＳＣについては、コンフィグレーションディスクリプタの送信後に、制限時間ＴＬ内にＰＣ３０からセットコンフィグレーションが受信され、ＰＣ３０と接続可能であると判断されたものとする。
【００４５】
次に、ＵＳＢ制御手段２０は、ＰＣ３０と接続可能と判断されたデバイスクラスを、上記登録リスト２０ｂに登録し（ステップＳ１０）、ステップＳ１１に移る。これにより、ＭＳＣが登録リスト２０ｂに登録される。一方、上記ステップＳ９において、デバイスクラスがＰＣ３０と接続不可であると判断された場合には、ステップＳ１０を省略してステップＳ１１に移る。
【００４６】
続いて、ステップＳ１１において、ＵＳＢ制御手段２０は、通常動作時にＨレベルに設定されている制御信号ＣＳをＬレベルに遷移させる。すると、ＵＳＢ接続解除部２２内のトランジスタＴ１，Ｔ４，Ｔ６がオフされるとともに、トランジスタＴ２，Ｔ３，Ｔ５，Ｔ７がオンされる。これにより、ＰＣ３０のＵＳＢコネクタ３１に接続される信号線Ｌ１〜Ｌ３が抵抗Ｒ１〜Ｒ３に接続されるため、ＰＣ３０側の信号線Ｌ１〜Ｌ３がハイインピーダンス状態となる。これに伴って、ＰＣ３０側では、ＤＳＣ１０とのＵＳＢ接続が解除されたと判断される（図７のステップＳ１１ａ参照）。一方、ＤＳＣ１０内のＵＳＢインターフェース２１のＶｂｕｓ端子には、トランジスタＴ３を介してバイアス電圧ＶＢが供給される。このため、ＤＳＣ１０において、ＰＣ３０とのＵＳＢ接続が解除されたと判断されることが回避される。これにより、ＤＳＣ１０のＵＳＢ制御手段２０が次のステップＳ１２の処理を続けることができる。
【００４７】
次に、ＵＳＢ制御手段２０は、制御信号ＣＳをＬレベルに遷移させてから所定時間経過後に、その制御信号ＣＳをＬレベルからＨレベルに遷移させる（ステップＳ１２）。すると、ＵＳＢ接続解除部２２内のトランジスタＴ１，Ｔ４，Ｔ６がオンされるとともに、トランジスタＴ２，Ｔ３，Ｔ５，Ｔ７がオフされる。これにより、ＰＣ３０側の信号線Ｌ１〜Ｌ３がＤＳＣ１０のＵＳＢインターフェース２１に接続されることになる。これに伴って、ＰＣ３０側では、上記ステップＳ１１によるＵＳＢ接続の解除状態がリセットされ、ＤＳＣ１０とのＵＳＢ接続が再度検出される（図７のステップＳ１２ａ参照）。
【００４８】
次いで、ＵＳＢ制御手段２０は、ＤＳＣ１０の対応している全てのデバイスクラスに対して、ＰＣ３０との接続確認が完了したかを判断する（ステップＳ１３）。ここで、ＰＣ３０との接続確認が完了していないデバイスクラスが残っている場合には（ステップＳ１３でＮＯ）、ステップＳ８に戻り、ステップＳ８〜Ｓ１３の処理を繰り返す。
【００４９】
具体的には、図７に示すように、上記ステップＳ１１の処理によってＰＣ３０がＵＳＢ接続の解除を検出した後、ステップＳ１２の処理によってＰＣ３０がＤＳＣ１０とのＵＳＢ接続を再度検出すると、バスリセットが発生する。その後、ＤＳＣ１０とＰＣ３０とをＵＳＢケーブル５０により接続した初回と同様に、デバイスリクエスト送信、デバイスディスクリプタ送信、コンフィグレーションリクエスト送信が行われる。なお、この場合には、パケット応答時間ＴＰの計測は行わない。
【００５０】
次に、図６に示すステップＳ８において、ＵＳＢ制御手段２０は、ＰＣ３０との接続確認が未確認なデバイスクラス（例えばＳＩＣ）を選択する。続いて、ＵＳＢ制御手段２０は、制限時間ＴＬを利用して、その選択したデバイスクラスがＰＣ３０と接続可能か否かを判断し（ステップＳ９）、接続可能であれば登録リスト２０ｂに登録する（ステップＳ１０）。そして、ＤＳＣ１０とＰＣ３０との間のＵＳＢ接続をＰＣ３０側だけで擬似的に解除し（ステップＳ１１）、所定時間経過後にＤＳＣ１０とＰＣ３０との間のＵＳＢ接続を元の状態に戻す（ステップＳ１２）。このような処理が全てのデバイスクラスに対して実行される。
【００５１】
そして、ＤＳＣ１０の対応している全てのデバイスクラスに対して、ＰＣ３０との接続確認が完了すると（ステップＳ１３でＹＥＳ）、ステップＳ１４に移る。ここでは、例えばＤＳＣ１０の対応している全てのデバイスクラスのうちＭＳＣ、ＳＩＣ及びＵＶＣがＰＣ３０と接続可能と判断され、登録リスト２０ｂに登録されたものとする。
【００５２】
次に、ステップＳ１４において、ＵＳＢ制御手段２０は、登録リスト２０ｂに登録されたデバイスクラスを優先順位の高い順に並び替える。ここで、デバイスクラスの優先順位は、ＵＳＢ制御手段２０が有するクラステーブル２０ｃ（図８参照）に定義されたデバイスクラスの重み付けの重い順とする。以下に、クラステーブル２０ｃに基づく登録リスト２０ｂの並べ替え処理について説明する。
【００５３】
まず、クラステーブル２０ｃは、図８に示すように、デバイスクラスと重みと優先順位とが対応付けられたテーブルである。ここで、図８（ａ）は、初期設定時のクラステーブル２０ｃを示す図である。すなわち、初期設定では、ＵＶＣ、ＵＡＣ、ＳＩＣ及びＭＳＣの重みが「１０」、「８」、「６」、「４」にそれぞれ設定されている。このため、優先順位は、高い順にＵＶＣ、ＵＡＣ、ＳＩＣ、ＭＳＣの順番となる。なお、上記初期設定時の重みは、想定される使用頻度やクラス定義等を考慮して設定される。また、仮にＤＳＣ１０に対して新たなデバイスクラスが追加された場合には、そのデバイスクラスに対して適切な重み付けがされてクラステーブル２０ｃに追加される（破線参照）。
【００５４】
この図８（ａ）に示すクラステーブル２０ｃに基づいて、登録リスト２０ｂに登録されたデバイスクラス（ＭＳＣ、ＳＩＣ及びＵＶＣ）を並び替えると、ＵＶＣ→ＳＩＣ→ＭＳＣの順に並び替えられることになる。
【００５５】
ところで、ＵＳＢ制御手段２０は、上記クラステーブル２０ｃの重みを、ユーザの使用履歴（使用回数や直前の使用状況）に応じて変更する。例えばＵＳＢ制御手段２０は、ユーザがクラス選択する度に、その選択されたデバイスクラスの重みに「１」を加算する。この場合、例えばユーザによってＳＩＣが５回連続で選択されると、図８（ｂ）に示すように、ＳＩＣの重みが「６」から「１１」に変更される。このため、このときの優先順位は、高い順にＳＩＣ、ＵＶＣ、ＵＡＣ、ＭＳＣの順番に変更されることになる。
【００５６】
この図８（ｂ）に示すクラステーブル２０ｃに基づいて、登録リスト２０ｂに登録されたデバイスクラス（ＭＳＣ、ＳＩＣ及びＵＶＣ）を並び替えると、ＳＩＣ→ＵＶＣ→ＭＳＣの順に並び替えられる。なお、以下の説明では、上記ステップＳ１４において、図８（ｂ）に示すクラステーブル２０ｃに基づいて登録リスト２０ｂが並べ替えられたものとする。
【００５７】
次に、図６に示すステップＳ１５において、ＵＳＢ制御手段２０は、登録リスト２０ｂの内容をクラス選択画面として表示部１４に表示させる（図４参照）。ここで、この表示方法について図４に従って説明する。
【００５８】
図４（ａ）は、クラス選択画面の最初の画面が表示部１４に表示されたときのＤＳＣ１０の背面図である。この図４（ａ）に示すように、クラス選択画面の上部には、登録リスト２０ｂの最初のデバイスクラス（登録リスト２０ｂの中で最も優先順位の高いデバイスクラス）の名前、すなわち「StillImageClass」が選択候補として表示されている。このデバイスクラスの名前の隣（図４（ａ）では左側）には、「登録リスト２０ｂ内の番号／全体数」、ここでは「１／３」が表示されている。この表示によって、ユーザは選択候補の全体数と、現在表示されている選択候補が何番目の選択候補（何番目に優先順位の高い選択候補）であるかを確認することができる。
【００５９】
また、クラス選択画面には、デバイスクラスの名前の下部に下方向を指す矢印が表示され、デバイスクラスの名前の上部に上方向を指す矢印が表示されている。これらの表示は、下矢印キー１８ｃを操作することによって登録リスト２０ｂの内容（デバイスクラスの選択候補）の表示を順送りに変更することができることを示し、上矢印キー１８ｂを操作することによって登録リスト２０ｂの内容の表示を逆戻しに変更することができることを示している。
【００６０】
ここで、ユーザによって下矢印キー１８ｃが操作されると、図４（ｂ）に示すようなクラス選択画面に切り替わる。すなわち、選択候補として表示されるデバイスクラスの名前が登録リスト２０ｂの２番目のデバイスクラスである「UsbVideoClass」に切り替わり、そのデバイスクラスの名前の左側には「２／３」が表示される。さらに、図４（ｂ）に示すクラス選択画面において、ユーザによって下矢印キー１８ｃが操作されると、図４（ｃ）に示すようなクラス選択画面に切り替わる。すなわち、選択候補として表示されるデバイスクラスの名前が登録リスト２０ｂの３番目のデバイスクラスである「MassStorageClass」に切り替わり、そのデバイスクラスの名前の左側には「３／３」が表示される。なお、図４（ａ）に示すクラス選択画面において、ユーザによって上矢印キー１８ｂが操作された場合には、図４（ｃ）に示すクラス選択画面に切り替わる。このように、登録リスト２０ｂに登録されたデバイスクラスの名前は、サイクリックリストとして１行ずつで表示され、且つステップＳ１４で並び替えられた順で表示される。このため、ユーザは、上矢印キー１８ｂと下矢印キー１８ｃとの操作によって登録リスト２０ｂの内容（デバイスクラスの選択候補）の表示を順送り又は逆戻しして１行ずつずらすことによって、ＰＣ３０と接続可能なデバイスクラスの内容を確認することができる。
【００６１】
そして、図４（ａ）〜（ｃ）のいずれかのクラス選択画面において、実行ボタン１８ｆが操作されると、その選択画面に表示されているデバイスクラスが接続クラスとして選択される。
【００６２】
また、図４（ａ）〜（ｃ）に示すように、クラス選択画面の下部には、デバイスクラスの選択候補の表示変更に関わらず固定的に、ＰＣ３０との接続確認の再実行に対応した文字列「リトライ」とその文字列の右隣に右方向を指す矢印が表示されている。さらに、その「リトライ」の下部には、デバイスクラスの選択候補の表示変更に関わらず固定的に、通信接続の中止に対応した文字列「中止」とその文字列の右隣に左方向を指す矢印が表示されている。これらの表示は、右矢印キー１８ｅを操作することによって「リトライ」が選択されることを示し、左矢印キー１８ｄを操作することによって「中止」が選択されることを示している。
【００６３】
なお、上記ステップＳ１〜Ｓ１４の処理によって作成された登録リスト２０ｂにデバイスクラスが１つも登録されていない場合には、表示部１４には図４（ｄ）に示すようなクラス選択画面が表示される。すなわち、このときのクラス選択画面には、ＰＣ３０と接続可能なデバイスクラスが１つもないことを示す文字列「接続できません」が表示される。この場合にも、図４（ａ）〜（ｃ）と同様に、「リトライ」及び「中止」等が表示される。
【００６４】
そして、図６に示すステップＳ１６において、当該ＤＳＣ１０のユーザは、上述したクラス選択画面を用いて、「接続クラスの選択」、「リトライ」又は「通信接続の中止」のいずれかの処理を選択する。以下に、それぞれの処理が選択された場合の以後の処理を説明する。
【００６５】
第１に、ステップＳ１６において、「リトライ」が選択された場合の以後の処理について説明する。
例えばユーザは、接続したい所望のデバイスクラスが登録リスト２０ｂに入っていないことを上記クラス選択画面で確認した場合に、他に接続可能なデバイスクラスがないかを確認するために、右矢印キー１８ｅを操作して「リトライ」を選択する。このようにユーザによって右矢印キー１８ｅが操作されて「リトライ」が選択された場合には、図５のステップＳ３に戻る。すると、ＵＳＢ制御手段２０は、制限時間ＴＬを０（ゼロ）にリセットし（ステップＳ３）、上記説明と同様にパケット応答時間ＴＰを計測する（ステップＳ４）。なお、上記ステップＳ１２の処理によってＰＣ３０側でＤＳＣ１０とのＵＳＢ接続が再検出されると、バスリセットが発生するため、そのバスリセットからコンフィグレーションリクエストまでの時間をパケット応答時間ＴＰとして計測すればよい。
【００６６】
次に、ＵＳＢ制御手段２０は、ループ回数Ｌｐが１以上であるため（ステップＳ５でＹＥＳ）、パケット応答時間ＴＰに係数ｎ（＝ｎ＋Ｓｔ１）を乗算した値にドライバロード時間ＴＤを加算した値を、制限時間ＴＬとして設定する（ステップＳ１７）。続いて、ＵＳＢ制御手段２０は、ドライバロード時間ＴＤにステップ幅Ｓｔ２を加算した値を新たなドライバロード時間ＴＤとする（ステップＳ１８）。さらに、ＵＳＢ制御手段２０は、係数ｎにステップ幅Ｓｔ１を加算した値を新たな係数ｎとし、ループ回数Ｌｐに「１」を加算する（ステップＳ７）。
【００６７】
これらの処理（ステップＳ５〜Ｓ７及びステップＳ１７，Ｓ１８参照）によって、リトライが実行される度に制限時間ＴＬが徐々に長くなるように設定される。具体的には、図９に示すように、初回の接続確認（Ｌｐ＝０）では、ドライバロード時間ＴＤを計算に入れずに、パケット応答時間ＴＰに係数ｎが乗算された時間のみに基づいて制限時間ＴＬが設定される。また、最初のリトライ（２回目の接続確認：Ｌｐ＝１）では、ステップ幅Ｓｔ１の加算された係数ｎがパケット応答時間ＴＰに乗算され、さらにドライバロード時間ＴＤが加味されて制限時間ＴＬが設定される。さらに、２回目のリトライ（３回目の接続確認）以降では、ステップ幅Ｓｔ１の加算された係数ｎがパケット応答時間ＴＰに乗算され、さらにステップ幅Ｓｔ２の加算されたドライバロード時間ＴＤが加味されて制限時間ＴＬが設定される。このように、２回目のリトライ以降では、リトライの回数が増加するたびに、パケット応答時間ＴＰに乗算される係数ｎがステップ幅Ｓｔ１ずつ増加し、ドライバロード時間ＴＤがステップ幅Ｓｔ２ずつ増加する。
【００６８】
次に、図６のステップＳ８において、ＵＳＢ制御手段２０は、登録リスト２０ｂを参照して、登録リスト２０ｂに登録されていないデバイスクラス、すなわち前回の接続確認でＰＣ３０と接続不可と判断されたデバイスクラスを選択する。続いて、ＵＳＢ制御手段２０は、その選択したデバイスクラスについてＰＣ３０と接続可能か否かを判断し（ステップＳ９）、接続可能であれば登録リスト２０ｂに登録する（ステップＳ１０）。
【００６９】
ここで、１回目の接続確認ではＰＣ３０と接続不可と判断されたにも関わらず、２回目の接続確認でＰＣ３０と接続可能と判断される理由について以下に説明する。１回目の接続確認では、制限時間ＴＬにドライバロード時間ＴＤが考慮されていない。このため、例えばコンフィグレーションディスクリプタの送信後にドライバのロードが発生すると、そのドライバロード時間が制限時間ＴＬよりも長い場合には、制限時間ＴＬ内にＰＣ３０からのセットコンフィグレーションを受信することができない。これに対し、２回目の接続確認では、制限時間ＴＬがドライバロード時間ＴＤを加味して設定される。このため、コンフィグレーションディスクリプタの送信後にドライバのロードが発生しても、制限時間ＴＬ内にＰＣ３０からのセットコンフィグレーションを受信できるようになる場合がある。
【００７０】
続いて、上述と同様にステップＳ１１〜Ｓ１３が実行され、さらに前回の接続確認で登録リストに登録されなかったデバイスクラスの全てについての接続確認が完了されるまでステップＳ８〜Ｓ１３が繰り返し実行される。その後、登録リスト２０ｂの並び替え（ステップＳ１４）とその並び替え後の登録リスト２０ｂの表示部１４への表示（ステップＳ１５）が実行され、再びステップＳ１６に戻る。このように、ステップＳ１６において「リトライ」が選択されるたびにステップＳ３〜Ｓ１５，Ｓ１７，Ｓ１８の処理が実行される。換言すると、ステップＳ１６において「リトライ」が選択されるたびに、前回の接続確認でＰＣ３０と接続不可と判断されたデバイスクラスについて、制限時間ＴＬを増加させた上で接続確認が実行される。
【００７１】
第２に、ステップＳ１６において、「接続クラスの選択」が選択された場合の以後の処理を説明する。
例えばユーザは、ＰＣ３０と接続したいデバイスクラス（例えばＳＩＣ）が登録リスト２０ｂ内にあることを確認した場合に、その名前「StillImageClass」が表示された状態（図４（ａ）参照）で実行ボタン１８ｆを操作して該デバイスクラスを選択する。このようにユーザによってＰＣ３０と接続するデバイスクラス（接続クラス）が選択された場合には、ステップＳ１９に移る。すると、ＵＳＢ制御手段２０は、クラステーブル２０ｃの更新を実行する。具体的には、ＵＳＢ制御手段２０は、ステップＳ１６で選択されたデバイスクラス（ここではＳＩＣ）の重みに「１」を加算し、その重みの変化に伴う優先順位の変更を実行する。
【００７２】
その後、選択されたデバイスクラスに基づく通信接続が確立される（ステップＳ２０）。具体的には、図７に示すように、上記ステップＳ１２の処理によってＰＣ３０側でＤＳＣ１０とのＵＳＢ接続が再検出されると（ステップＳ１２ａ）、バスリセットの発生からコンフィグレーションリクエストまでの一連の処理が実行される。ここで、接続クラスが確定しているため（ステップＳ２０ａでＹＥＳ）、ＵＳＢ制御手段２０は、上記ステップＳ１６で選択したＳＩＣの情報を含むコンフィグレーションディスクリプタをＰＣ３０に送信する。その後、ＰＣ３０からのセットコンフィグレーションを受信すると、ＵＳＢ制御手段２０は、接続結果をＰＣ３０に送信する。そして、ＵＳＢ制御手段２０は、ステップＳ１６で選択したＳＩＣの通信プロトコルでＰＣ３０との間で通信を開始する。なお、ステップＳ１６で選択されるデバイスクラスは、登録リスト２０ｂに登録されたデバイスクラス、すなわちＰＣ３０と接続可能と判断されたデバイスクラスであるため、本ステップＳ２０では確実に通信接続を確立することができる。
【００７３】
第３に、ステップＳ１６において、ユーザによって「中止」が選択された場合には、デバイスクラスの選択処理が強制的に中止される。なお、例えば「リトライ」を実行しても所望のデバイスクラスが登録リスト２０ｂに入っていない場合や図４（ｄ）に示すように「接続できません」が表示された場合などに、上記「中止」が選択される。
【００７４】
以上説明した本実施形態によれば、以下の効果を奏することができる。
（１）ＤＳＣ１０のＵＳＢ制御手段２０が、自装置の対応している全てのデバイスクラスについてＰＣ３０と接続可能か否かを判断し、ＰＣ３０と接続可能と判断されたデバイスクラスを表示部１４に表示させるようにした。そして、その表示部１４に表示させたデバイスクラスの中から１つのデバイスクラスをユーザに選択させるようにした。このようにユーザが所望のデバイスクラスを選択するため、ユーザの意図に沿ったデバイスクラスを選択することができる。
【００７５】
さらに、ユーザが接続クラスを選択するときに、ＰＣ３０と接続可能なデバイスクラスのみが表示部１４に表示されるため、クラス選択におけるユーザの利便性が向上する。すなわち、ユーザは、ＤＳＣ１０の対応している全てのデバイスクラスが表示部１４に表示される場合よりも簡単に所望のデバイスクラスを選択することができる。また、ＵＳＢ等の知識が乏しい不慣れなユーザであっても、表示部１４に表示されたデバイスクラスのいずれかを選択すれば、ＰＣ３０との間で通信接続を必ず確立することができ、ＰＣ３０との間で接続エラーとなることを防止できる。
【００７６】
（２）ＤＳＣ１０の対応している全てのデバイスクラスについてＰＣ３０と接続可能か否かという判断をＤＳＣ１０（デバイス装置）側で行うようにした。このため、ＰＣ３０やプリンタ４０に対してアプリケーション等を追加する必要がない。
【００７７】
とくに、プリンタ４０のようにアプリケーション等の手段を後から追加することのできないホスト装置とＤＳＣ１０とを接続する場合には、上述した効果はより顕著なものとなる。
【００７８】
（３）ＤＳＣ１０がコンフィグレーションディスクリプタを送信してから制限時間ＴＬ内に、ＰＣ３０からのセットコンフィグレーションをＤＳＣ１０が受信できるか否かにより、ＰＣ３０側に通知したデバイスクラスがＰＣ３０と接続可能か否かを判断するようにした。さらに、ＤＳＣ１０とＰＣ３０との間の実際のパケット応答時間ＴＰに基づいて制限時間ＴＬを設定するようにした。このため、例えばハブをはさんで他装置が接続されている場合に、この他装置との応答によりＰＣ３０からＤＳＣ１０へのリクエストが遅延すると、その応答遅延に伴ってパケット応答時間ＴＰも長くなる。従って、この場合の制限時間ＴＬは上記応答遅延が反映されて設定されることになる。また、４８０Ｍｂｐｓでデータ転送を行うハイスピード（High-Speed）モードと、５Ｇｂｐｓでデータ転送を行うスーパースピード（SuperSpeed）モードとでは転送スピードが約１０倍も異なるが、計測されるパケット応答時間ＴＰは転送スピードに応じた時間となる。従って、この場合の制限時間ＴＬは転送スピードが反映されて設定されることになる。このように転送スピードや応答遅延が反映されて制限時間ＴＬが設定されるため、ＰＣ３０と接続可能か否かの判定精度を向上させることができる。
【００７９】
（４）１回目の接続確認ではドライバロード時間ＴＤを加味せずに制限時間ＴＬを設定し、２回目以降の接続確認ではドライバロード時間ＴＤを加味して制限時間ＴＬを設定するようにした。これにより、ドライバのロードが発生しないデバイスクラスについては迅速に接続確認を行うことができる。例えばＤＳＣ１０をプリンタ４０に接続した場合には、基本的にドライバのロードが発生しないため、この効果はより顕著なものとなる。
【００８０】
具体的には、１回目の接続確認では、係数ｎをマージンをとった値（例えばｎ＝１０）に設定しても、実際のパケット応答時間ＴＰが遅くとも数十ミリ秒である。このため、プリンタ４０側が対応していないデバイスクラスの接続確認であっても１秒以下で完了する。従って、本実施形態の例のようにＤＳＣ１０が４つのデバイスクラスに対応している場合であれば、４秒以下で全てのデバイスクラスの接続確認を完了することができる。
【００８１】
これに対し、１回目の接続確認からドライバロード時間ＴＤ（例えば１５秒）を加味して制限時間ＴＬに設定する場合には、プリンタ４０の対応しているＭＳＣ及びＳＩＣについては各々１秒以下で接続確認が終了するものの、プリンタ４０の対応していないＵＶＣ及びＵＡＣの接続確認には各々１５秒以上かかる。このため、全てのデバイスクラスの接続確認が完了するには、３０秒以上の時間がかかってしまう。
【００８２】
さらに言えば、上述したようにＤＳＣ１０をプリンタ４０に接続する場合にはドライバのロードが発生しないため、ドライバロード時間ＴＤを加味するか否かに関わらず、登録リスト２０ｂに登録されるデバイスクラスはほとんど変わらない。換言すると、本実施形態のように制限時間ＴＬを設定することにより、ホスト装置が対応していないデバイスクラスを接続不可と判定するための１回目の確認時間を短くすることができる。
【００８３】
（５）登録リスト２０ｂに登録されたデバイスクラスを、重みによる優先順位の高い順に並び替えて表示部１４に表示させるようにした。これにより、優先度の高いデバイスクラス（選択候補）を優先して表示部１４に表示させることができる。また、ユーザの選択回数に応じて重みを加重することで優先順位が変更されるため、利用頻度の高いデバイスクラスほど優先順位が高くなり、表示部１４に優先して表示されることになる。このため、利用頻度の高いデバイスクラスを選択するための操作ボタンの操作回数を少なくすることができる。
【００８４】
（６）登録リスト２０ｂの内容をサイクリックリストとして１行ずつ表示部１４に表示するようにした。これにより、ＤＳＣ１０が小型であっても、そのＤＳＣ１０の表示部１４に無理なく表示することができ、１行ずつ表示をずらしていくことで登録リスト２０ｂの全ての内容を確認することができる。また、デバイスリストの名前と併せて「登録リスト２０ｂ内の番号／全体数」を表示するようにしたため、ユーザは選択候補の全体数と、現在表示されている選択候補が何番目の選択候補であるかを把握することができる。
【００８５】
（７）ステップＳ１６において「リトライ」を選択できるようにした。このため、ユーザの判断でデバイスクラスの接続確認を繰り返し実行することができる。これにより、ユーザの意図に沿った接続確認を実行することができる。なお、リトライが実行されるたびに制限時間ＴＬが長くなるように変更されるため、登録リスト２０ｂに登録されるデバイスクラスが徐々に増える可能性がある。
【００８６】
（８）１つのデバイスクラスについての接続確認が終了すると、ＰＣ３０に接続される信号線Ｌ１〜Ｌ３をハイインピーダンス状態に設定し、所定時間経過後にそのハイインピーダンス状態を解除するようにした。これにより、ＤＳＣ１０とＰＣ３０とをＵＳＢケーブル５０によって接続した状態で、ＰＣ３０側でＵＳＢ接続の解除検出とＵＳＢ接続の再検出をさせることができ、バスリセットを発生させることができる。その後に、次の未確認のデバイスクラスについての接続確認を開始することができる。これによって、ＤＳＣ１０の対応する全てのデバイスクラスについての接続確認を実行することができる。
【００８７】
（９）登録リスト２０ｂにデバイスクラスが１つも登録されていない場合には、表示部１４に「接続できません」と表示するようにした。これにより、ＰＣ３０と接続可能なクラスが１つも無いことを明示することができる。
【００８８】
（他の実施形態）
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記実施形態におけるパケット応答時間ＴＰの計測期間を適宜変更してもよい。例えばホスト装置へのデバイスディスクリプタの送信から、ホスト装置からのコンフィグレーションリクエストの受信までの時間をパケット応答時間ＴＰとして計測するようにしてもよい。
【００８９】
・上記実施形態では、図６のステップＳ１６で「リトライ」が選択されると、ステップＳ３に戻った後にパケット応答時間ＴＰを再度計測する（ステップＳ４）ようにしたが、このパケット応答時間ＴＰの再計測を省略してもよい。すなわち、この場合には、１回目の接続確認の際に計測したパケット応答時間ＴＰを、２回目以降の接続確認でも利用する。
【００９０】
・上記実施形態では、ユーザの選択回数に応じてクラステーブル２０ｃ内の重みを加重するようにしたが、例えばユーザの直前の使用状況に応じてクラステーブル２０ｃ内の重みを変更するようにしてもよい。この場合には、例えばユーザが直前に使用したデバイスクラスの優先順位が一番高くなるようにクラステーブル２０ｃ内の重みを変更するようにしてもよい。
【００９１】
・上記実施形態のクラステーブル２０ｃにおける重み付けの初期設定をユーザが設定するようにしてもよい。
・上記実施形態における制限時間ＴＬの設定方法を適宜変更してもよい。すなわち、リトライ回数が増えるたびに制限時間ＴＬが長くなるように設定されれば、その設定方法は特に制限されない。例えば２回目の接続確認における制限時間ＴＬを、１回目の接続確認時の制限時間ＴＬに対して単にドライバロード時間ＴＤを加算するだけにしてもよい。
【００９２】
あるいは、１回目の接続確認からドライバロード時間ＴＤを加味して制限時間ＴＬを設定するようにしてもよい。
・上記実施形態では、登録リスト２０ｂに登録されたデバイスクラスの名前を１行ずつ表示部１４に表示するようにした。これに限らず、登録リスト２０ｂに登録されたデバイスクラスの名前を２行以上ずつ表示部１４に表示するようにしてもよい。なお、デバイスクラスの名前を１行〜３行程度ずつ表示部１４に表示させることにより、上記実施形態の（６）の作用効果を奏することができる。
【００９３】
・上記実施形態では、デバイスクラスの選択操作を、ＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続されたときに実行するようにした。これだけに限らず、例えばＤＳＣ１０とＰＣ３０とがＵＳＢケーブル５０によって接続された状態で、ユーザが接続クラスを変更したい等の場合にメニューボタン１８ｇなどの操作ボタンを操作することによってデバイスクラスの選択が指示された場合に、図５及び図６のフローチャートに示す処理を実行するようにしてもよい。
【００９４】
・上記実施形態におけるデバイス装置はＤＳＣ１０に特に制限されない。また、デバイス装置が対応するデバイスクラスも特に制限されない。
・上記実施形態におけるホスト装置はＰＣ３０及びプリンタ４０に特に制限されない。また、ホスト装置が対応するクラスも特に制限されない。
【００９５】
上記各実施形態に関し、以下の付記を開示する。
（付記１）
ホスト装置と複数のデバイスクラスに対応しているデバイス装置とがシリアルバスを介してデータ通信を行う通信方法であって、
前記デバイス装置が、該デバイス装置の対応している全てのデバイスクラスについて前記ホスト装置と接続可能か否かを判断する接続確認ステップと、
前記接続確認ステップで前記ホスト装置と接続可能と判断されたデバイスクラスを出力部に出力する出力ステップと、
前記出力部に出力されたデバイスクラスの中から１つのデバイスクラスが選択されたときに、そのデバイスクラスでデータ通信を開始するステップと、
を含むことを特徴とする通信方法。
（付記２）
前記接続確認ステップは、
前記デバイス装置から前記ホスト装置へのデバイスクラスの通知から所定の制限時間内に、前記デバイス装置が前記ホスト装置からの接続クラスの指示を受信できるか否かにより、前記通知したデバイスクラスが前記ホスト装置と接続可能か否かを判断することを特徴とする付記１に記載の通信方法。
（付記３）
前記制限時間は、前記デバイス装置と前記ホスト装置との間における応答時間に基づいて設定されることを特徴とする付記２に記載の通信方法。
（付記４）
前記制限時間は、前記ホスト装置側で前記デバイス装置との物理的な接続を検出した際に発生されるバスリセットから、前記デバイス装置が前記ホスト装置からのデバイスクラスの問い合わせを受信するまでの応答時間に基づいて設定されることを特徴とする付記２又は３に記載の通信方法。
（付記５）
前記制限時間は、１回目の接続確認ステップではドライバのロード時間を加味せずに設定され、２回目以降の接続確認ステップではドライバのロード時間を加味して設定されることを特徴とする付記３又は４に記載の通信方法。
（付記６）
前記制限時間は、前記接続確認ステップが再実行されるたびに長くなるように設定されることを特徴とする付記２〜５のいずれか１つに記載の通信方法。
（付記７）
前記接続確認ステップは、
前記各デバイスクラスについて前記ホスト装置と接続可能か否かの判断が終了した後に、前記ホスト装置と前記デバイス装置とが前記シリアルバスによって接続された状態で、前記デバイス装置が、前記ホスト装置に接続されるＶｂｕｓラインをハイインピーダンス状態に設定するステップと、
前記ハイインピーダンス状態に設定してから所定時間経過後に、前記デバイス装置が前記ハイインピーダンス状態を解除するステップと、
を含むことを特徴とする付記２〜６のいずれか１つに記載の通信方法。
（付記８）
前記Ｖｂｕｓラインをハイインピーダンス状態に設定するときに、前記デバイス装置のＵＳＢインターフェースのＶｂｕｓ端子には所定の電圧を供給することを特徴とする付記７に記載の通信方法。
（付記９）
前記出力ステップは、
前記接続確認ステップで前記ホスト装置と接続可能と判断されたデバイスクラスを優先度の高い順に並び替えて前記出力部に出力することを特徴とする付記１〜８のいずれか１つに記載の通信方法。
（付記１０）
前記優先度は、前記デバイスクラスの使用履歴に基づいて設定されることを特徴とする付記９に記載の通信方法。
（付記１１）
前記出力ステップは、
前記接続確認ステップで前記ホスト装置と接続可能と判断されたデバイスクラスの名前を１行乃至３行ずつ前記出力部に表示させ、且つ前記デバイスクラスの名前と併せて（全体の中での番号／全体数）の情報を前記出力部に表示させることを特徴とする付記１〜１０のいずれか１つに記載の通信方法。
（付記１２）
シリアルバスを介してホスト装置とデータ通信を行うデバイス装置であって、
自装置の対応している全てのデバイスクラスについて前記ホスト装置と接続可能か否かを判断し、前記ホスト装置と接続可能と判断されたデバイスクラスを出力部に出力させる制御手段を備えることを特徴とするデバイス装置。
【符号の説明】
【００９６】
１０  デジタルスチルカメラ（デバイス装置）
１４  表示部（出力部）
２０  ＵＳＢ制御手段（制御手段）
２１  ＵＳＢインターフェース
２２  ＵＳＢ接続解除部
３０  パーソナルコンピュータ（ホスト装置）
４０  プリンタ（ホスト装置）
５０  ＵＳＢケーブル（シリアルバス）
Ｌ１  Ｖｂｕｓライン
【図１】
0005581836.tif 000002
【図２】
0005581836.tif 000003
【図３】
0005581836.tif 000004
【図４】
0005581836.tif 000005
【図５】
0005581836.tif 000006
【図６】
0005581836.tif 000007
【図７】
0005581836.tif 000008
【図８】
0005581836.tif 000009
【図９】
0005581836.tif 000010
【図１０】
0005581836.tif 000011