(57)【要約】  複数機能に対応したＵＳＢデバイスの機能の選択を可能にする。デバイス制御方法であって、ＵＳＢデバイスからデバイス情報を取得するステップと、前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、前記デバイスリスト情報をメモリ領域に保存するステップとを有する。
2009125586.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）デバイスからデバイス情報を取得するステップと、
前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、
前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、
前記デバイスリスト情報をメモリ領域に保存するステップとを備える
デバイス制御方法。
【請求項２】
請求項１に記載のデバイス制御方法において、
前記デバイスリスト情報を用いて前記ＵＳＢデバイスの機能を表示するステップと、
入力情報に基づいて、前記ＵＳＢデバイスの機能を選択するステップと、
前記選択されたＵＳＢデバイスの機能を有効にするステップとを更に備える
デバイス制御方法。
【請求項３】
請求項２に記載のデバイス制御方法において、
前記選択されたＵＳＢデバイスの機能を示すデータを、前記選択されたＵＳＢデバイスの機能が対応するクラス情報に変換するステップを更に備える
デバイス制御方法。
【請求項４】
請求項３に記載のデバイス制御方法において、
前記ＵＳＢデバイスに選択された機能の設定を行い制御する、クラス処理を行うステップを更に備える
デバイス制御方法。
【請求項５】
請求項１に記載のデバイス制御方法において、
前記コマンド処理を行うステップは、前記取得されたデバイス情報のクラス情報からは検出できない機能を前記ＵＳＢデバイスが有する場合に、前記コマンド処理を行う
デバイス制御方法。
【請求項６】
請求項１に記載のデバイス制御方法において、
前記デバイスリストでは、前記ＵＳＢデバイスの機能を表示するための情報と管理情報とが対応付けられている
デバイス制御方法。
【請求項７】
ＵＳＢデバイスからデバイス情報を取得するステップと、
前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、
前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、
前記デバイスリスト情報をメモリ領域に保存するステップとを有し、
コンピュータで実行可能なデバイス制御プログラム。
【請求項８】
演算装置と、
ＵＳＢデバイスと前記演算装置との間のデータ転送を行うＵＳＢホストコントローラとを備え、
前記演算装置は、
前記ＵＳＢデバイスからデバイス情報を取得し、
前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行い、
前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成し、
前記デバイスリスト情報をメモリ領域に保存する
デバイス選択装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス制御プログラムおよびデバイス選択装置に関し、特に、ＵＳＢ（Universal Serial Bus）ホスト機能を有するデバイス選択装置、およびデバイス選択装置の制御技術に関する。
【背景技術】
【０００２】
近年、ＵＳＢホスト機能を有したインタフェース（以下、ＵＳＢホストＩ／Ｆ）は、パーソナルコンピュータ（以下、ＰＣ）だけでなく、ＡＶ（Audiovisual）機器などのマルチメディア機器にも標準のインタフェースとして搭載され普及が進んでいる。そのため、ＵＳＢデバイスは、マルチメディア機器にも接続されるようになってきている。これまでＰＣやマルチメディア機器には、単一の機能のみに対応したＵＳＢデバイスが接続され使用されていた。例えば、ストレージ機能のみに対応したＵＳＢメモリデバイスをＰＣに接続し、データの読み込み書き込みをＰＣとＵＳＢメモリデバイスとの間で行ったり、ＵＳＢメモリデバイスをマルチメディア機器に接続し、ＵＳＢメモリデバイス内の音楽データの再生や編集を行ったりしていた。【０００３】
しかし、ＵＳＢデバイスの多機能化により、１つのデバイスで複数の機能に対応したＵＳＢデバイスが主流となり、ＰＣやマルチメディア機器にも複数の機能を有したＵＳＢデバイスが接続されるようになってきている。例えば、ＵＳＢデバイスとして、ストレージ機能とストリーム再生機能を有したデジタルオーディオプレーヤーをマルチメディア機器に接続し、デジタルオーディオプレーヤー内に格納されている音楽データのストリーム再生を行ったり、デジタルオーディオプレーヤーに音楽データを書き込んだりすることが可能になっている。関連する技術が、例えば、特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１８５２１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような複数機能に対応したＵＳＢデバイスをマルチメディア機器に接続する場合には、接続時に有効となる機能が予め決定されていることが多く、接続時にユーザが使用したい機能が必ずしも選択できるとは限らない。【０００６】
また、複数機能に対応したＵＳＢデバイスを、ＵＳＢホストＩ／Ｆを搭載したＰＣに接続した場合には、ユーザが使いたい機能のみが選択されるのではなく、ＰＣが対応している機能すべてが有効となる。よって、ユーザが使用したくない機能も使用可能な状態となっていることが多く、ユーザが使用したくない機能を誤って操作してしまうこともあり誤動作の原因となりかねない。【０００７】
上記の問題を解決するために、ＰＣに接続して利用されるＵＳＢデバイスの機能を制限する方法として、許可リストを使用した方法が用いられている。図１は、従来の許可リストの構成例を示す図である。許可リストは、デバイスの数を示すデバイス数１０１、各許可デバイスを規定する許可デバイス１０２、例外情報１０３の領域を有する。ＵＳＢデバイスが接続されると、ＰＣはＵＳＢデバイスのデバイス情報を解析し、前記許可リストの情報と照合を行う。照合の結果、ユーザが接続を望む機能を有したＵＳＢデバイスであればＰＣへの接続を許可し、ユーザが接続を望まない機能を有したデバイスであれば接続を制限する仕組みである（例えば、特許文献１参照）。【０００８】
しかし、特許文献１では、許可リストを使用したデバイスの機能判別を使用しているため、許可リストの接続条件を細かに作れば、よりユーザが使いたい機能の条件を詳細に設定できるが、許可リストの条件が細かくなると、許可デバイス１０２や、例外情報１０３の情報量が増加し、許可リストを保存するメモリ領域が多く必要となる。【０００９】
また、特許文献１では、ＵＳＢデバイス接続時にユーザが使いたい機能を変更するためには、予めシステムに組み込まれている許可リストの自体の更新が必要となる。許可リストの変更は、個々のユーザごとに変更を行うことが可能であるが、ユーザごとの許可リストの更新を行うためには、専用のソフトウェアによる更新が必要となる。よって、ＰＣのようなリソースが限られていない環境では、許可リストを使用した制御プログラムの実現が可能であるが、リソースが限られているマルチメディア機器のような組込み環境の制御プログラムでは実現が困難なことが課題として考えられる。【００１０】
特許文献１の別の課題として、接続されたＵＳＢデバイスが対応している機能の検出を、１種類のクラス情報のみを使用し、１機能しかないという前提で行っているということが挙げられる。特許文献１では、ＵＳＢデバイスの機能を検出している情報は、接続時にＵＳＢデバイスから取得したＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報を使用している。【００１１】
図２は、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造を示す図である。ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲは９バイトのデータで構成され、ｂＩｎｔｅｒｆａｃｅＣｌａｓｓ２０１にクラス情報が含まれている。特許文献１では、ｂＩｎｔｅｒｆａｃｅＣｌａｓｓ２０１のクラス情報のみを使用して、デバイスの対応している機能が検出される。例えば、複数の種類のクラス情報が組み合わさって１つの機能になるＵＳＢデバイスが接続された場合や、クラス情報と機能を検出するためのコマンド処理結果を考慮して機能が検出されるＵＳＢデバイスが接続された場合は、特許文献１では、ＵＳＢデバイスの機能を誤認してしまう可能性がある。【００１２】
そこで、許可リストを使わずにユーザが使いたい機能を選べること、およびＵＳＢデバイスが対応している機能を、クラス情報だけで検出しないことが望まれる。【００１３】
本発明は、リソースが限られた環境においても、複数機能に対応したＵＳＢデバイスの機能の選択を可能にすることを目的とする。
【課題を解決するための手段】
【００１４】
本発明の実施形態によるデバイス制御方法は、ＵＳＢデバイスからデバイス情報を取得するステップと、前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、前記デバイスリスト情報をメモリ領域に保存するステップとを有する。【００１５】
これによると、必要に応じてＵＳＢデバイスに対してコマンドが発行されるので、クラス情報のみによることなく、ＵＳＢデバイスの機能を誤りなく認識することが可能になる。【００１６】
本発明の実施形態によるコンピュータで実行可能なデバイス制御プログラムは、ＵＳＢデバイスからデバイス情報を取得するステップと、前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、前記デバイスリスト情報をメモリ領域に保存するステップとを有する。【００１７】
本発明の実施形態によるデバイス選択装置は、演算装置と、ＵＳＢデバイスと前記演算装置との間のデータ転送を行うＵＳＢホストコントローラとを有する。前記演算装置は、前記ＵＳＢデバイスからデバイス情報を取得し、前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行い、前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成し、前記デバイスリスト情報をメモリ領域に保存する。
【発明の効果】
【００１８】
本発明の実施形態によると、複数機能に対応したＵＳＢデバイスの機能の選択が可能になる。機能の選択のために専用のソフトウェアを実行する必要もないので、リソースの限られた環境でも機能の選択が可能になる。
【図面の簡単な説明】
【００１９】
【図１】図１は、従来の許可リストの構成例を示す図である。
【図２】図２は、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造を示す図である。
【図３】図３は、本発明の実施形態によるデバイス選択装置の構成を示すブロック図である。
【図４】図４は、図３のデバイス選択装置の処理の例を示すフローチャートである。
【図５】図５は、デバイス情報処理ブロックの処理を示すフローチャートである。
【図６】図６は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造の例を示す図である。
【図７】図７（ａ）は、デバイスが１つのコンフィグレーションで構成されている場合の構成情報の例を示す図である。図７（ｂ）は、デバイスが複数のコンフィグレーションで構成されている場合の構成情報の例を示す図である。
【図８】図８は、パターン情報の例を示す図である。
【図９】図９は、デバイスリスト情報を作成するまでのリスト処理ブロックの処理を示すフローチャートである。
【図１０】図１０は、デバイスリスト情報の例を示す図である。
【図１１】図１１は、ユーザに、接続されたＵＳＢデバイスが対応している機能を提示し、ユーザが選択した機能をデバイス選択装置が制御するまでの処理を示すフローチャートである。
【図１２】図１２は、ユーザに提示される画面表示情報の例である。
【図１３】図１３は、デバイスリスト情報が作成された後のリスト処理ブロックの処理を示すフローチャートである。
【図１４】図１４は、クラス処理ブロックの処理を示すフローチャートである。
【発明を実施するための形態】
【００２０】
（概要）
デバイス選択装置に複数機能に対応したＵＳＢデバイスが接続されると、デバイス選択装置が制御プログラムを実行することにより、以下のステップａ，ｂ，ｃおよびｄの処理が行われる。
【００２１】
ＵＳＢデバイスが接続された場合、ＵＳＢデバイスが対応している機能を検出するために、ＵＳＢデバイスからデバイス情報を取得する。デバイス選択装置は、取得したデバイス情報より、ＵＳＢデバイスが対応している機能の情報が、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみで検出できる情報か、複数の種類のクラス情報を組み合わせなければ機能として検出できない情報か、クラス情報と機能を検出するためのコマンド処理が必要な情報なのか、デバイスの機能を識別するためのパターン情報を基に判別を行う。判別の結果、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみで機能が検出できない場合に関しては、機能を検出するためのコマンド処理をＵＳＢデバイスに対して行う（ステップａ）。
【００２２】
次に、取得したデバイス情報とコマンド処理の結果を考慮して、デバイスが対応している機能を検出する。検出された機能は、ユーザに提示する情報と制御プログラム内部で管理する情報が対応付けられたデバイスリスト情報としてデバイス選択装置内のメモリ領域に作成される(ステップｂ)。
【００２３】
デバイスリスト情報が正常に作成された場合、デバイス選択装置は、デバイスリスト情報からユーザに提示する情報を取得し、ＵＳＢデバイスが対応している機能の種類をデバイス選択装置の出力装置を使用してユーザに提示する。ユーザは提示されたデバイスの機能から、ユーザが使用したい機能をデバイス選択装置の入力装置を使用して選択する(ステップｃ)。
【００２４】
選択された情報は、制御プログラムにより、デバイスリスト情報から内部管理の情報に変換され、ユーザが選択したデバイスの機能を制御するために必要なクラス処理が選択される。クラス処理が選択された後、デバイス選択装置は、ＵＳＢデバイスに対して、使用する機能を決定するための設定処理を行う。ＵＳＢデバイスに対して設定処理が完了した後は、デバイス選択装置は、クラス処理を使用してＵＳＢデバイスの制御を行う（ステップｄ）。
【００２５】
ステップaおよびｂの処理を行うことにより、ＵＳＢデバイスの機能はＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみでは検出されないので、ＵＳＢデバイスが対応している機能を誤認することなく認識することが可能になる。また、ステップｃおよびｄの処理を行うことにより、ユーザが使用したいデバイスの機能をユーザに提示し、ユーザが機能を選択して、ＵＳＢデバイスの選択された機能だけを制御することが可能となる。
【００２６】
以上の処理によると、管理する情報はデバイスリスト情報のみであり、使用するＵＳＢデバイスの機能はユーザが選択するので、ユーザが接続したい機能の条件を細かく設定した許可リストの作成、および許可リストを変更するための専用ソフトウェアの実装が必要でなくなる。そのためリソースの節約が可能であり、リソースが限られた組込み環境でも実装が可能である。
【００２７】
ＵＳＢのデバイスの機能選択については、ＵＳＢデバイスが接続された時に、対応している機能を明示的にユーザに提示できるため、ユーザに使いたい機能を選択させることが可能になる。また、ＵＳＢデバイス接続時にユーザが使いたい機能のみが選択され有効になるため、ユーザが使いたくない機能が操作されることがなくなり、ユーザ操作による誤動作を予防することが可能である。
【００２８】
ＵＳＢデバイスの機能判別については、複数の種類のクラス情報が組み合わさって１つの機能を示すＵＳＢデバイスや、クラス情報と機能を特定するためのコマンド処理結果を考慮して機能が決定されるＵＳＢデバイスのように、ＵＳＢデバイスの機能がクラス情報のみで検出できない場合についても、ＵＳＢデバイスの機能を誤認することなく判別することが可能になる。
【００２９】
（実施形態）
以下、本発明の実施形態を図面に基づいて詳細に説明する。
【００３０】
図３は、本発明の実施形態によるデバイス選択装置の構成を示すブロック図である。デバイス選択装置３０１は、ＵＳＢホストコントローラ３０２、データ制御装置３０３、演算装置３０４、メモリ領域３０５、入出力装置３０６、内部情報格納領域３０７、画像・音声再生録音装置３０８、およびＵＳＢコネクタ３１５を含む。ＵＳＢデバイスの接続と切断は、デバイス選択装置３０１のＵＳＢコネクタ３１５を介して行われる。
【００３１】
図３に示すデバイス選択装置３０１の各構成要素の主機能を説明する。ＵＳＢホストコントローラ３０２は、ＵＳＢデバイスがＵＳＢコネクタ３１５と接続された場合、ＵＳＢデバイスへのデータ送受信処理、データ制御装置３０３へのデータ送受信処理を行う。
【００３２】
メモリ領域３０５にはデバイス選択装置３０１を制御する制御プログラム３０９が格納され、接続されたＵＳＢデバイスの対応している機能を一時的に保存するためのデバイスリスト情報３１４、制御プログラムの処理で一時的に保存されるデータのためのデータ領域３１０としても使用される。
【００３３】
入出力装置３０６は、ユーザに対してＵＳＢデバイスが対応している機能を提示し、ユーザによりＵＳＢデバイスの機能を選択させるための処理を行う。内部情報格納領域３０７は、ＵＳＢデバイスから送られてくるデータやＵＳＢデバイスに送るデータを保存する場合に使用されるメモリ領域となる。画像・音声再生録音装置３０８は、ＵＳＢデバイスから送られてくるデータの解析を行い、画像・音声データとしてデバイス選択装置３０１内で再生録音処理を行う。
【００３４】
演算装置（コンピュータ）３０４は、メモリ領域３０５内の制御プログラム３０９を実行してデータ制御装置３０３を始めデバイス選択装置３０１内のすべての装置の制御、およびデータの保存領域に対するアクセス処理を行う。
【００３５】
データ制御装置３０３は、演算装置３０４によって制御され、ＵＳＢホストコントローラ３０２のデータ制御、メモリ領域３０５へのデータアクセス、画像・音声再生録音装置３０８の制御、内部情報格納領域３０７へのデータアクセス、入出力装置３０６のデータ制御を行う。
【００３６】
制御プログラム３０９は、主にデバイス情報処理ブロック３１１、リスト処理ブロック３１２、クラス処理ブロック３１３の３つの処理ブロックによって構成される。デバイス情報処理ブロック３１１は、ＵＳＢデバイスが接続された時に、デバイス情報取得処理、機能判別のためのコマンド処理を実行する処理ブロックである。リスト処理ブロック３１２はＵＳＢデバイスより取得したデバイス情報からデバイスリスト情報３１４の作成、ユーザへのデバイスリスト情報３１４の出力処理、ユーザが選択した機能から対応するクラス情報を決定する処理ブロックである。クラス処理ブロック３１３は、ＵＳＢデバイスに対して使用する機能の設定処理ルーチンと、ユーザが選択した機能を動作させるためのクラスドライバ処理ルーチンとを有し、クラスドライバ処理を制御する処理ブロックである。
【００３７】
本実施形態では、デバイス選択装置３０１は、デバイス選択装置３０１とＵＳＢデバイスが接続された際に、ＵＳＢデバイスが対応している機能を取得し、取得した情報を基にＵＳＢデバイスの機能をリスト化しデバイスリスト情報３１４として保存し、保存したデバイスリスト情報３１４を基にユーザにＵＳＢデバイスが対応している機能を提示し、ユーザが選択した機能でデバイス選択装置３０１がＵＳＢデバイスの機能の制御を行う。
【００３８】
ＵＳＢデバイスとデバイス選択装置３０１が接続された際の、ＵＳＢデバイスが対応している機能をリスト化しデバイスリスト情報３１４として保存するまでの接続デバイス装置３０１の動作と、ユーザにＵＳＢデバイスの対応している機能を提示し、ユーザが選択した機能でデバイス選択装置３０１がＵＳＢデバイスの機能の制御を行うまでの動作を分けて説明する。
【００３９】
図４は、図３のデバイス選択装置３０１の処理の例を示すフローチャートである。図４では、ＵＳＢデバイスがデバイス選択装置３０１に接続され、ＵＳＢデバイスが対応している機能がリスト化されるまでの処理が示されている。ステップＡ４１では、演算装置３０４は、制御プログラム３０９内のデバイス情報処理ブロック３１１を実行する。これにより、演算装置３０４は、ＵＳＢデバイスがデバイス選択装置３０１に接続された場合に、ＵＳＢデバイスからデバイス情報の取得を行う。
【００４０】
次に、ステップＡ４２では、演算装置３０４は、制御プログラム３０９内のリスト処理ブロック３１２を実行する。これにより、演算装置３０４は、取得されたデバイス情報からＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報３１４を作成し、メモリ領域３０５に保存する。
【００４１】
図５は、デバイス情報処理ブロック３１１の処理を示すフローチャートである。図５は、図４のデバイス情報の取得を行うステップＡ４１の処理に相当する。図６は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造の例を示す図である。ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲは、１８バイトのデータで構成され、メーカーのＩＤを示すｉｄＶｅｎｄｏｒ６０１、製品のＩＤを示すｉｄＰｒｏｄｕｃｔ６０２、デバイスの構成可能な数を示すｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３を含んでいる。
【００４２】
ＵＳＢデバイスがデバイス選択装置３０１に接続された場合、ＵＳＢホストコントローラ３０２は、ＵＳＢデバイスと通信可能な状態となり、ＵＳＢデバイスの構成情報を取得するため、最初にＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲを取得する（ステップＢ５１）。
【００４３】
演算装置３０４は、取得したＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲに含まれるｉｄＶｅｎｄｏｒ６０１、ｉｄＰｒｏｄｕｃｔ６０２、およびｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３をデータ領域３１０に保存する（ステップＢ５２）。
【００４４】
次に、ＵＳＢホストコントローラ３０２は、ＵＳＢデバイスの詳細な構成情報を取得するために、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得する（ステップＢ５３）。
【００４５】
ＵＳＢデバイスの詳細な構成情報は、コンフィグレーションという情報で構成されており、ＵＳＢデバイスは、ｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３が示す数だけコンフィグレーションを保有している。コンフィグレーションは１つの場合もあれば、複数の場合もある。コンフィグレーションは、ＵＳＢデバイスから、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得することで得られる。ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得することにより、ＵＳＢデバイスの詳細な構成情報を取得することができる。
【００４６】
図７（ａ）は、デバイスが１つのコンフィグレーションで構成されている場合の構成情報の例を示す図である。図７（ｂ）は、デバイスが複数のコンフィグレーションで構成されている場合の構成情報の例を示す図である。図７（ａ）の構成情報７０１、図７（ｂ）の構成情報７０２の例のように、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得することにより、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲの情報も取得することができるため、コンフィグレーションを構成しているインタフェースの数とクラス情報の取得が行える。
【００４７】
ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲの取得が完了すると、演算装置３０４は、ステップＢ５２で取得したｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３の値を使用して、すべてのコンフィグレーションをＵＳＢデバイスから取得したか否かの判定を行う（ステップＢ５４）。
【００４８】
ＵＳＢデバイスが構成情報７０２のように複数のコンフィグレーションで構成されていて、すべてのコンフィグレーションを取得することができていないと判定された場合には、ステップＢ５３に戻る。この場合、ＵＳＢホストコントローラ３０２は、残りのコンフィグレーションを取得するためにＵＳＢデバイスから再度ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得する。
【００４９】
すべてのコンフィグレーションが取得できていると判定された場合には、演算装置３０４は、取得したすべてのコンフィグレーションを解析し、クラス情報のみでは検出できない機能（以下では、特殊機能と称する）をＵＳＢデバイスが有している可能性があるか否かを調べる（ステップＢ５５）。ステップＢ５５の解析は、デバイス情報処理ブロック３１１が有している特殊機能のパターン情報に基づいて行われる。
【００５０】
図８は、パターン情報の例を示す図である。パターン情報８０１は、特殊機能の名前を表す特殊機能名と、特殊機能を決定するための特殊条件で構成されている。特殊条件には、特殊機能を決定するための条件が記載され、特殊条件は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲとＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲから取得できる情報と、ＵＳＢデバイスの特殊機能を検出するためのコマンド処理を示す情報とで構成されている。パターン情報８０１はデバイス選択装置３０１で対応する特殊機能に応じてデバイス情報処理ブロック３１１内に予め含まれている。
【００５１】
ステップＢ５５の解析処理の結果を用いて、演算装置３０４は、クラス情報のみからは検出できない特殊機能をＵＳＢデバイスが有するか否か、言い換えると、特殊機能を検出するために、ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行う（ステップＢ５６）。
【００５２】
コマンド処理が必要でないと判定された場合には、図５の処理フローは終了する。コマンド処理が必要であると判定された場合、すなわち、クラス情報からは検出できない機能をＵＳＢデバイスが有する場合には、演算装置３０４は、パターン情報８０１に記載されている特殊条件からコマンド処理を選択してＵＳＢデバイスにコマンド処理を行い、処理結果をデータ領域３１０に保存する（ステップＢ５７）。ステップＢ５７の処理が行われた後に、図５の処理フローは終了する。以上が、演算装置３０４によって実行され、ＵＳＢデバイスからデバイス情報を取得する、デバイス情報処理ブロック３１１の処理フローである。
【００５３】
図９は、デバイスリスト情報３１４を作成するまでのリスト処理ブロック３１２の処理を示すフローチャートである。図９は、図４のステップＡ４２の処理に相当する。演算装置３０４は、図５の処理で取得したデバイス情報から、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ情報を解析する（ステップＣ９１）。演算装置３０４は、解析したＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ情報からクラス情報であるｂＩｎｔｅｒｆａｃｅＣｌａｓｓ２０１の情報を取得する（ステップＣ９２）。
【００５４】
演算装置３０４は、ステップＣ９２で取得したクラス情報が、デバイス情報処理ブロック３１１内のパターン情報８０１の特殊条件に該当するクラス情報か否かの判定を行う（ステップＣ９３）。
【００５５】
ステップＣ９２で取得したクラス情報が特殊条件に該当するクラス情報であると判定された場合は、演算装置３０４は、データ領域３１０に保存されているｉｄＶｅｎｄｏｒ６０１、ｉｄＰｒｏｄｕｃｔ６０２、コマンド処理結果およびクラス情報を使用して、パターン情報８０１から特殊機能を選択してＵＳＢデバイスの機能を検出する（ステップＣ９４）。
【００５６】
ステップＣ９２で取得したクラス情報が特殊条件に該当しないと判定された場合は、演算装置３０４は、クラス情報のみでＵＳＢデバイスの機能を検出する（ステップＣ９５）。
【００５７】
ステップＣ９４またはステップＣ９５の処理の後、演算装置３０４は、ＵＳＢデバイスの機能をまとめたデバイスリスト情報３１４を作成し、メモリ領域３０５に保存する（ステップＣ９６）。
【００５８】
図１０は、デバイスリスト情報３１４の例を示す図である。メモリ領域３０５に保存されるデバイスリスト情報３１４について図１０を用いて説明する。デバイスリスト情報３１４は、制御プログラム３０９内部で管理する内部管理情報と、入出力装置３０６を使用してユーザのためにＵＳＢデバイスが対応している機能を表示するためのユーザ提示情報で構成されている。
【００５９】
内部管理情報は、ＵＳＢデバイスの各機能に割り当てられたＩＤ１００１と、デバイスの機能制御に必要なクラス処理ブロック３１３内のクラスドライバ処理ルーチンのクラス情報１００２とを含み、ＩＤ１００１とクラス情報１００２とは関連づけて管理される。ＩＤ１００１は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報とで構成される。よって、ＩＤ１００１を解析することにより、構成情報７０１や構成情報７０２で示したようなコンフィグレーションの数やインタフェースの数などの、デバイスの構成情報が把握できるようになっている。
【００６０】
ユーザ提示情報は、ＵＳＢデバイスが対応している機能名１００３で構成されている。内部管理情報とユーザ提示情報は、ＩＤ１００１、クラス情報１００２、機能名１００３の３つの情報で対応付けられているため、内部管理情報からユーザ提示情報の検索、ユーザ提示情報から内部管理情報の検索が行える。
【００６１】
デバイスリスト情報３１４は、デバイス選択装置３０１にＵＳＢデバイスが接続された時に、ＵＳＢデバイスの機能に対応してリスト処理ブロック３１２の処理によりメモリ領域３０５に作成される。ＵＳＢデバイスが切断された場合には、そのＵＳＢデバイスに対応するデバイスリスト情報３１４がメモリ領域３０５から削除される。
【００６２】
ステップＣ９６でデバイスリスト情報３１４の作成を行った後に、演算装置３０４は、メモリ領域３０５の容量チェックを行い、メモリ容量チェックの結果、メモリ領域３０５に空き領域があれば次の処理を行い、メモリ領域３０５に空き領域がない場合は図９の処理フローを終了する（ステップＣ９７）。
【００６３】
デバイスリスト情報３１４を保存するメモリ領域３０５のサイズについては、システム仕様に応じて調整する必要がある。ＵＳＢデバイスの機能を多く検索する必要がある場合は、予めデバイスリスト情報３１４を保存するメモリ領域３０５を多く確保し、ＵＳＢデバイスの機能を多く検索する必要がなく、使用するメモリを少なく抑えたい場合は、メモリ領域３０５を少なく確保する。ステップＣ９７の処理で、メモリ領域３０５に空き領域があると判定された場合には、演算装置３０４は、すべてのＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ情報の解析は完了したか否かの判定を行う（ステップＣ９８）。
【００６４】
まだ、すべてのＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ検索が終わっていないと判定された場合には、演算装置３０４は、ステップＣ９１に戻って、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲの解析処理を行い、ＵＳＢデバイスが対応している機能をデバイスリスト情報３１４に追加する。すべてのＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲの解析が終わっていると判定された場合には、演算装置３０４は、図９の処理フローを終了する。以上が、演算装置３０４によって実行され、ＵＳＢデバイスから取得した情報に基づいてデバイスリスト情報３１４を作成する、リスト処理ブロック３１２の処理フローである。
【００６５】
これまで、ＵＳＢデバイスがデバイス選択装置３０１に接続された際の、ＵＳＢデバイスが対応している機能をリスト化するまでのデバイス選択装置３０１の動作を図４、図５、図９を用いて説明を行った。ＵＳＢデバイスの機能がＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみでは検出されない場合であっても、図４、図５、図９に示す処理フローを行うことにより、機器が対応している機能を誤認することなく検出することができる。
【００６６】
次に、図１１の処理が行われる。図１１は、ユーザに、接続されたＵＳＢデバイスが対応している機能を提示し、ユーザが選択した機能をデバイス選択装置３０１が制御するまでの処理を示すフローチャートである。デバイスリスト情報３１４の作成が完了した場合、ＵＳＢデバイスが対応している機能がユーザに提示される。すなわち、デバイスリスト情報３１４内の機能名１００３を使用して、ＵＳＢデバイスが対応している機能の情報を、入出力装置３０６が表示する（ステップＤ１１０１）。
【００６７】
図１２は、ユーザに提示される画面表示情報１２０１の例である。図１２のように、演算装置３０４は、ＵＳＢデバイスが対応している機能の情報として、デバイスリスト情報３１４内の機能名１００３の情報のみを表示させる。ユーザは提示された画面表示情報１２０１から、入出力装置３０６を使用して機能を選択する（ステップＤ１１０２）。演算装置３０４は、入出力装置３０６から入力された、選択された機能を示す入力情報を、デバイスリスト情報３１４を用いてクラス情報１００２に置き換え、クラス情報１００２に対応する機能を制御するためのクラス処理ブロック３１３内のクラスドライバ処理ルーチンを選択する（ステップＤ１１０３）。すなわち、演算装置３０４は、入力情報に基づいてＵＳＢデバイスの機能を選択する。
【００６８】
クラスドライバ処理ルーチンが選択されると、演算装置３０４は、ＵＳＢデバイスに使用するコンフィグレーション情報の設定を行い、選択されたＵＳＢデバイスの機能を有効にする（ステップＤ１１０４）。ＵＳＢデバイスに使用するコンフィグレーション情報の設定が完了した後、演算装置３０４は、ユーザが選択した機能を制御するためにクラスドライバ処理を開始し、ＵＳＢデバイスの機能を制御する（ステップＤ１１０５）。ステップＤ１１０１〜Ｄ１１０３の処理は、演算装置３０４が制御プログラム３０９内のリスト処理ブロック３１２を実行することによって行われ、ステップＤ１１０４〜Ｄ１１０５の処理は、演算装置３０４がクラス処理ブロック３１３を実行することによって行われる。
【００６９】
図１３は、デバイスリスト情報３１４が作成された後のリスト処理ブロック３１２の処理を示すフローチャートである。リスト処理ブロック３１２は、ユーザにＵＳＢデバイスの機能を提示し、ユーザに動的にデバイスの機能を選択させる処理を行う。
【００７０】
まず、演算装置３０４は、デバイスリスト情報３１４から機能名１００３を取得する（ステップＥ１３０１）。取得された機能名１００３はデータ制御装置３０３より入出力装置３０６に転送され、入出力装置３０６が取得された機能名１００３を画面表示情報１２０１としてユーザに提示する（ステップＥ１３０２）。処理ステップＥ１３０２により、ユーザは提示された画面表示情報１２０１からデバイスの機能を動的に選択することができる。ステップＥ１３０２の処理の後、演算装置３０４は、入出力装置３０６によりユーザが機能を選択したか否かの判定を行う（ステップＥ１３０３）。
【００７１】
ユーザからの機能の選択がないと判定された場合には、処理ステップＥ１３０２を再び行う。ユーザからの機器の機能選択が入出力装置３０６に行われたと判定された場合には、データ制御装置３０３は、ユーザが選択した機能データを、入出力装置３０６から演算装置３０４に転送する（ステップＥ１３０４）。
【００７２】
演算装置３０４は、ユーザに選択された機能を示す機能データとデバイスリスト情報３１４の機能名１００３の解析を行い、機能データをデバイスリスト情報３１４のクラス情報１００２に変換する。演算装置３０４は、ユーザが選択した機能を制御するためのクラス処理ブロック３１３内のクラスドライバ処理ルーチンを、クラス情報１００２に従って選択する（ステップＥ１３０５）。ステップＥ１３０１〜Ｅ１３０４の処理は、演算装置３０４が制御プログラム３０９内のリスト処理ブロック３１２を実行することによって行われ、ステップＥ１３０５の処理は、演算装置３０４がクラス処理ブロック３１３を実行することによって行われる。
【００７３】
図１４は、クラス処理ブロック３１３の処理を示すフローチャートである。クラス処理ブロック３１３は、ＵＳＢデバイスにユーザが選択した機能の設定を行い、ＵＳＢデバイスを制御する、クラス処理を行う。図１４の処理は、図１３の処理が完了した後に行われる。
【００７４】
まず、演算装置３０４は、デバイスリスト情報３１４のクラス情報１００２に従ってクラス処理ブロック３１３内のクラスドライバ処理ルーチンを取得した後、クラス情報１００２に対応しているＩＤ１００１から、ユーザが選択した機能を含むコンフィグレーションを特定する。ＩＤ１００１は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報とで構成されるため、ユーザが選択したＵＳＢデバイスの機能を含むコンフィグレーションを検索することが可能である（ステップＦ１４０１）。
【００７５】
ユーザが選択した、ＵＳＢデバイスの機能を含むコンフィグレーションの検索が完了すると、ＵＳＢホストコントローラ３０２は、ユーザが使用したい機能を含むコンフィグレーションに関して、クラス処理ブロック３１３内のＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮをＵＳＢデバイスに対して発行する（ステップＦ１４０２）。ＵＳＢデバイスに対してＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮを発行することにより、ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮで指定されたコンフィグレーションがＵＳＢデバイス側で有効となる。ステップＦ１４０２の処理の後、演算装置３０４は、ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮの発行が成功したか否かの判定を行う（ステップＦ１４０３）。
【００７６】
ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮの発行が失敗したと判定された場合には、演算装置３０４は、エラー処理を行いユーザにＵＳＢデバイスが使用できないことを入出力装置３０６を使用してユーザに通知し、クラス処理ブロック３１３の処理フローは終了する（ステップＦ１４０５）。ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮの発行が成功したと判定された場合には、演算装置３０４は、クラス処理ブロック３１３が有しているＵＳＢデバイスの機能に対応したクラスドライバ処理ルーチンを使用して、ＵＳＢデバイスの機能の制御を開始する（ステップＦ１４０４）。
【００７７】
ＵＳＢデバイスの制御が開始されると、ユーザが選択したＵＳＢデバイスの機能により、ＵＳＢデバイス内の画像・音声情報を画像・音声再生録音装置３０８が再生・録音したり、ＵＳＢデバイス内のデータが内部情報格納領域３０７に格納されたり、内部情報格納領域３０７に格納されているデータをＵＳＢデバイスに転送するなどの制御が、デバイス選択装置３０１で可能となる。図１４の処理は、演算装置３０４がクラス処理ブロック３１３を実行することによって行われる。
【００７８】
このように、図１１、図１３、図１４の処理を行うことにより、デバイス選択装置３０１は、リスト化したＵＳＢデバイスの機能をユーザに提示し、ＵＳＢデバイスの、ユーザによって選択された機能を制御する。したがって、ユーザは、提示された機能を動的に選択することが可能となる。
【００７９】
本発明の多くの特徴及び優位性は、記載された説明から明らかであり、よって添付の特許請求の範囲によって、本発明のそのような特徴及び優位性の全てをカバーすることが意図される。更に、多くの変更及び改変が当業者には容易に可能であるので、本発明は、図示され記載されたものと全く同じ構成及び動作に限定されるべきではない。したがって、全ての適切な改変物及び等価物は本発明の範囲に入るものとされる。
【産業上の利用可能性】
【００８０】
以上説明したように、本発明の実施形態によると、ＵＳＢデバイスの機能の選択が可能になるので、本発明は、デバイス選択方法等について有用である。コンポーネントステレオ、ＤＶＤ（Digital Versatile Disc）プレーヤー、ＨＤＤ（Hard Disk Drive）レコーダー、デジタルテレビジョン受像機等のマルチメディア機器としても有用である。
【符号の説明】
【００８１】
３０１  デバイス選択装置
３０２  ＵＳＢホストコントローラ
３０３  データ制御装置
３０４  演算装置
３０５  メモリ領域
３０６  入出力装置
３０９  制御プログラム
３１４  デバイスリスト情報
１００２  クラス情報
１００３  機能名
【図１】
2009125586.tif 000003
【図２】
2009125586.tif 000004
【図３】
2009125586.tif 000005
【図４】
2009125586.tif 000006
【図５】
2009125586.tif 000007
【図６】
2009125586.tif 000008
【図７】
2009125586.tif 000009
【図８】
2009125586.tif 000010
【図９】
2009125586.tif 000011
【図１０】
2009125586.tif 000012
【図１１】
2009125586.tif 000013
【図１２】
2009125586.tif 000014
【図１３】
2009125586.tif 000015
【図１４】
2009125586.tif 000016
【手続補正書】
【提出日】平成22年9月13日(2010.9.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス制御プログラムおよびデバイス選択装置に関し、特に、ＵＳＢ（Universal Serial Bus）ホスト機能を有するデバイス選択装置、およびデバイス選択装置の制御技術に関する。
【背景技術】
【０００２】
近年、ＵＳＢホスト機能を有したインタフェース（以下、ＵＳＢホストＩ／Ｆ）は、パーソナルコンピュータ（以下、ＰＣ）だけでなく、ＡＶ（Audiovisual）機器などのマルチメディア機器にも標準のインタフェースとして搭載され普及が進んでいる。そのため、ＵＳＢデバイスは、マルチメディア機器にも接続されるようになってきている。これまでＰＣやマルチメディア機器には、単一の機能のみに対応したＵＳＢデバイスが接続され使用されていた。例えば、ストレージ機能のみに対応したＵＳＢメモリデバイスをＰＣに接続し、データの読み込み書き込みをＰＣとＵＳＢメモリデバイスとの間で行ったり、ＵＳＢメモリデバイスをマルチメディア機器に接続し、ＵＳＢメモリデバイス内の音楽データの再生や編集を行ったりしていた。
【０００３】
しかし、ＵＳＢデバイスの多機能化により、１つのデバイスで複数の機能に対応したＵＳＢデバイスが主流となり、ＰＣやマルチメディア機器にも複数の機能を有したＵＳＢデバイスが接続されるようになってきている。例えば、ＵＳＢデバイスとして、ストレージ機能とストリーム再生機能を有したデジタルオーディオプレーヤーをマルチメディア機器に接続し、デジタルオーディオプレーヤー内に格納されている音楽データのストリーム再生を行ったり、デジタルオーディオプレーヤーに音楽データを書き込んだりすることが可能になっている。関連する技術が、例えば、特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１８５２１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような複数機能に対応したＵＳＢデバイスをマルチメディア機器に接続する場合には、接続時に有効となる機能が予め決定されていることが多く、接続時にユーザが使用したい機能が必ずしも選択できるとは限らない。
【０００６】
また、複数機能に対応したＵＳＢデバイスを、ＵＳＢホストＩ／Ｆを搭載したＰＣに接続した場合には、ユーザが使いたい機能のみが選択されるのではなく、ＰＣが対応している機能すべてが有効となる。よって、ユーザが使用したくない機能も使用可能な状態となっていることが多く、ユーザが使用したくない機能を誤って操作してしまうこともあり誤動作の原因となりかねない。
【０００７】
上記の問題を解決するために、ＰＣに接続して利用されるＵＳＢデバイスの機能を制限する方法として、許可リストを使用した方法が用いられている。図１は、従来の許可リストの構成例を示す図である。許可リストは、デバイスの数を示すデバイス数１０１、各許可デバイスを規定する許可デバイス１０２、例外情報１０３の領域を有する。ＵＳＢデバイスが接続されると、ＰＣはＵＳＢデバイスのデバイス情報を解析し、前記許可リストの情報と照合を行う。照合の結果、ユーザが接続を望む機能を有したＵＳＢデバイスであればＰＣへの接続を許可し、ユーザが接続を望まない機能を有したデバイスであれば接続を制限する仕組みである（例えば、特許文献１参照）。
【０００８】
しかし、特許文献１では、許可リストを使用したデバイスの機能判別を使用しているため、許可リストの接続条件を細かに作れば、よりユーザが使いたい機能の条件を詳細に設定できるが、許可リストの条件が細かくなると、許可デバイス１０２や、例外情報１０３の情報量が増加し、許可リストを保存するメモリ領域が多く必要となる。
【０００９】
また、特許文献１では、ＵＳＢデバイス接続時にユーザが使いたい機能を変更するためには、予めシステムに組み込まれている許可リストの自体の更新が必要となる。許可リストの変更は、個々のユーザごとに変更を行うことが可能であるが、ユーザごとの許可リストの更新を行うためには、専用のソフトウェアによる更新が必要となる。よって、ＰＣのようなリソースが限られていない環境では、許可リストを使用した制御プログラムの実現が可能であるが、リソースが限られているマルチメディア機器のような組込み環境の制御プログラムでは実現が困難なことが課題として考えられる。
【００１０】
特許文献１の別の課題として、接続されたＵＳＢデバイスが対応している機能の検出を、１種類のクラス情報のみを使用し、１機能しかないという前提で行っているということが挙げられる。特許文献１では、ＵＳＢデバイスの機能を検出している情報は、接続時にＵＳＢデバイスから取得したＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報を使用している。
【００１１】
図２は、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造を示す図である。ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲは９バイトのデータで構成され、ｂＩｎｔｅｒｆａｃｅＣｌａｓｓ２０１にクラス情報が含まれている。特許文献１では、ｂＩｎｔｅｒｆａｃｅＣｌａｓｓ２０１のクラス情報のみを使用して、デバイスの対応している機能が検出される。例えば、複数の種類のクラス情報が組み合わさって１つの機能になるＵＳＢデバイスが接続された場合や、クラス情報と機能を検出するためのコマンド処理結果を考慮して機能が検出されるＵＳＢデバイスが接続された場合は、特許文献１では、ＵＳＢデバイスの機能を誤認してしまう可能性がある。
【００１２】
そこで、許可リストを使わずにユーザが使いたい機能を選べること、およびＵＳＢデバイスが対応している機能を、クラス情報だけで検出しないことが望まれる。
【００１３】
本発明は、リソースが限られた環境においても、複数機能に対応したＵＳＢデバイスの機能の選択を可能にすることを目的とする。
【課題を解決するための手段】
【００１４】
本発明の実施形態によるデバイス制御方法は、ＵＳＢデバイスからデバイス情報を取得するステップと、前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、前記デバイスリスト情報をメモリ領域に保存するステップとを有する。
【００１５】
これによると、必要に応じてＵＳＢデバイスに対してコマンドが発行されるので、クラス情報のみによることなく、ＵＳＢデバイスの機能を誤りなく認識することが可能になる。
【００１６】
本発明の実施形態によるコンピュータで実行可能なデバイス制御プログラムは、ＵＳＢデバイスからデバイス情報を取得するステップと、前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、前記デバイスリスト情報をメモリ領域に保存するステップとを有する。
【００１７】
本発明の実施形態によるデバイス選択装置は、演算装置と、ＵＳＢデバイスと前記演算装置との間のデータ転送を行うＵＳＢホストコントローラとを有する。前記演算装置は、前記ＵＳＢデバイスからデバイス情報を取得し、前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行い、前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成し、前記デバイスリスト情報をメモリ領域に保存する。
【発明の効果】
【００１８】
本発明の実施形態によると、複数機能に対応したＵＳＢデバイスの機能の選択が可能になる。機能の選択のために専用のソフトウェアを実行する必要もないので、リソースの限られた環境でも機能の選択が可能になる。
【図面の簡単な説明】
【００１９】
【図１】従来の許可リストの構成例を示す図である。
【図２】ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造を示す図である。
【図３】本発明の実施形態によるデバイス選択装置の構成を示すブロック図である。
【図４】図３のデバイス選択装置の処理の例を示すフローチャートである。
【図５】デバイス情報処理ブロックの処理を示すフローチャートである。
【図６】ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造の例を示す図である。
【図７】（ａ）は、デバイスが１つのコンフィグレーションで構成されている場合の構成情報の例を示す図である。（ｂ）は、デバイスが複数のコンフィグレーションで構成されている場合の構成情報の例を示す図である。
【図８】パターン情報の例を示す図である。
【図９】デバイスリスト情報を作成するまでのリスト処理ブロックの処理を示すフローチャートである。
【図１０】デバイスリスト情報の例を示す図である。
【図１１】ユーザに、接続されたＵＳＢデバイスが対応している機能を提示し、ユーザが選択した機能をデバイス選択装置が制御するまでの処理を示すフローチャートである。
【図１２】ユーザに提示される画面表示情報の例である。
【図１３】デバイスリスト情報が作成された後のリスト処理ブロックの処理を示すフローチャートである。
【図１４】クラス処理ブロックの処理を示すフローチャートである。
【発明を実施するための形態】
【００２０】
（概要）
デバイス選択装置に複数機能に対応したＵＳＢデバイスが接続されると、デバイス選択装置が制御プログラムを実行することにより、以下のステップａ，ｂ，ｃおよびｄの処理が行われる。
【００２１】
ＵＳＢデバイスが接続された場合、ＵＳＢデバイスが対応している機能を検出するために、ＵＳＢデバイスからデバイス情報を取得する。デバイス選択装置は、取得したデバイス情報より、ＵＳＢデバイスが対応している機能の情報が、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみで検出できる情報か、複数の種類のクラス情報を組み合わせなければ機能として検出できない情報か、クラス情報と機能を検出するためのコマンド処理が必要な情報なのか、デバイスの機能を識別するためのパターン情報を基に判別を行う。判別の結果、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみで機能が検出できない場合に関しては、機能を検出するためのコマンド処理をＵＳＢデバイスに対して行う（ステップａ）。
【００２２】
次に、取得したデバイス情報とコマンド処理の結果を考慮して、デバイスが対応している機能を検出する。検出された機能は、ユーザに提示する情報と制御プログラム内部で管理する情報が対応付けられたデバイスリスト情報としてデバイス選択装置内のメモリ領域に作成される(ステップｂ)。
【００２３】
デバイスリスト情報が正常に作成された場合、デバイス選択装置は、デバイスリスト情報からユーザに提示する情報を取得し、ＵＳＢデバイスが対応している機能の種類をデバイス選択装置の出力装置を使用してユーザに提示する。ユーザは提示されたデバイスの機能から、ユーザが使用したい機能をデバイス選択装置の入力装置を使用して選択する(ステップｃ)。
【００２４】
選択された情報は、制御プログラムにより、デバイスリスト情報から内部管理の情報に変換され、ユーザが選択したデバイスの機能を制御するために必要なクラス処理が選択される。クラス処理が選択された後、デバイス選択装置は、ＵＳＢデバイスに対して、使用する機能を決定するための設定処理を行う。ＵＳＢデバイスに対して設定処理が完了した後は、デバイス選択装置は、クラス処理を使用してＵＳＢデバイスの制御を行う（ステップｄ）。
【００２５】
ステップaおよびｂの処理を行うことにより、ＵＳＢデバイスの機能はＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみでは検出されないので、ＵＳＢデバイスが対応している機能を誤認することなく認識することが可能になる。また、ステップｃおよびｄの処理を行うことにより、ユーザが使用したいデバイスの機能をユーザに提示し、ユーザが機能を選択して、ＵＳＢデバイスの選択された機能だけを制御することが可能となる。
【００２６】
以上の処理によると、管理する情報はデバイスリスト情報のみであり、使用するＵＳＢデバイスの機能はユーザが選択するので、ユーザが接続したい機能の条件を細かく設定した許可リストの作成、および許可リストを変更するための専用ソフトウェアの実装が必要でなくなる。そのためリソースの節約が可能であり、リソースが限られた組込み環境でも実装が可能である。
【００２７】
ＵＳＢのデバイスの機能選択については、ＵＳＢデバイスが接続された時に、対応している機能を明示的にユーザに提示できるため、ユーザに使いたい機能を選択させることが可能になる。また、ＵＳＢデバイス接続時にユーザが使いたい機能のみが選択され有効になるため、ユーザが使いたくない機能が操作されることがなくなり、ユーザ操作による誤動作を予防することが可能である。
【００２８】
ＵＳＢデバイスの機能判別については、複数の種類のクラス情報が組み合わさって１つの機能を示すＵＳＢデバイスや、クラス情報と機能を特定するためのコマンド処理結果を考慮して機能が決定されるＵＳＢデバイスのように、ＵＳＢデバイスの機能がクラス情報のみで検出できない場合についても、ＵＳＢデバイスの機能を誤認することなく判別することが可能になる。
【００２９】
（実施形態）
以下、本発明の実施形態を図面に基づいて詳細に説明する。
【００３０】
図３は、本発明の実施形態によるデバイス選択装置の構成を示すブロック図である。デバイス選択装置３０１は、ＵＳＢホストコントローラ３０２、データ制御装置３０３、演算装置３０４、メモリ領域３０５、入出力装置３０６、内部情報格納領域３０７、画像・音声再生録音装置３０８、およびＵＳＢコネクタ３１５を含む。ＵＳＢデバイスの接続と切断は、デバイス選択装置３０１のＵＳＢコネクタ３１５を介して行われる。
【００３１】
図３に示すデバイス選択装置３０１の各構成要素の主機能を説明する。ＵＳＢホストコントローラ３０２は、ＵＳＢデバイスがＵＳＢコネクタ３１５と接続された場合、ＵＳＢデバイスへのデータ送受信処理、データ制御装置３０３へのデータ送受信処理を行う。
【００３２】
メモリ領域３０５にはデバイス選択装置３０１を制御する制御プログラム３０９が格納され、接続されたＵＳＢデバイスの対応している機能を一時的に保存するためのデバイスリスト情報３１４、制御プログラムの処理で一時的に保存されるデータのためのデータ領域３１０としても使用される。
【００３３】
入出力装置３０６は、ユーザに対してＵＳＢデバイスが対応している機能を提示し、ユーザによりＵＳＢデバイスの機能を選択させるための処理を行う。内部情報格納領域３０７は、ＵＳＢデバイスから送られてくるデータやＵＳＢデバイスに送るデータを保存する場合に使用されるメモリ領域となる。画像・音声再生録音装置３０８は、ＵＳＢデバイスから送られてくるデータの解析を行い、画像・音声データとしてデバイス選択装置３０１内で再生録音処理を行う。
【００３４】
演算装置（コンピュータ）３０４は、メモリ領域３０５内の制御プログラム３０９を実行してデータ制御装置３０３を始めデバイス選択装置３０１内のすべての装置の制御、およびデータの保存領域に対するアクセス処理を行う。
【００３５】
データ制御装置３０３は、演算装置３０４によって制御され、ＵＳＢホストコントローラ３０２のデータ制御、メモリ領域３０５へのデータアクセス、画像・音声再生録音装置３０８の制御、内部情報格納領域３０７へのデータアクセス、入出力装置３０６のデータ制御を行う。
【００３６】
制御プログラム３０９は、主にデバイス情報処理ブロック３１１、リスト処理ブロック３１２、クラス処理ブロック３１３の３つの処理ブロックによって構成される。デバイス情報処理ブロック３１１は、ＵＳＢデバイスが接続された時に、デバイス情報取得処理、機能判別のためのコマンド処理を実行する処理ブロックである。リスト処理ブロック３１２はＵＳＢデバイスより取得したデバイス情報からデバイスリスト情報３１４の作成、ユーザへのデバイスリスト情報３１４の出力処理、ユーザが選択した機能から対応するクラス情報を決定する処理ブロックである。クラス処理ブロック３１３は、ＵＳＢデバイスに対して使用する機能の設定処理ルーチンと、ユーザが選択した機能を動作させるためのクラスドライバ処理ルーチンとを有し、クラスドライバ処理を制御する処理ブロックである。
【００３７】
本実施形態では、デバイス選択装置３０１は、デバイス選択装置３０１とＵＳＢデバイスが接続された際に、ＵＳＢデバイスが対応している機能を取得し、取得した情報を基にＵＳＢデバイスの機能をリスト化しデバイスリスト情報３１４として保存し、保存したデバイスリスト情報３１４を基にユーザにＵＳＢデバイスが対応している機能を提示し、ユーザが選択した機能でデバイス選択装置３０１がＵＳＢデバイスの機能の制御を行う。
【００３８】
ＵＳＢデバイスとデバイス選択装置３０１が接続された際の、ＵＳＢデバイスが対応している機能をリスト化しデバイスリスト情報３１４として保存するまでの接続デバイス装置３０１の動作と、ユーザにＵＳＢデバイスの対応している機能を提示し、ユーザが選択した機能でデバイス選択装置３０１がＵＳＢデバイスの機能の制御を行うまでの動作を分けて説明する。
【００３９】
図４は、図３のデバイス選択装置３０１の処理の例を示すフローチャートである。図４では、ＵＳＢデバイスがデバイス選択装置３０１に接続され、ＵＳＢデバイスが対応している機能がリスト化されるまでの処理が示されている。ステップＡ４１では、演算装置３０４は、制御プログラム３０９内のデバイス情報処理ブロック３１１を実行する。これにより、演算装置３０４は、ＵＳＢデバイスがデバイス選択装置３０１に接続された場合に、ＵＳＢデバイスからデバイス情報の取得を行う。
【００４０】
次に、ステップＡ４２では、演算装置３０４は、制御プログラム３０９内のリスト処理ブロック３１２を実行する。これにより、演算装置３０４は、取得されたデバイス情報からＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報３１４を作成し、メモリ領域３０５に保存する。
【００４１】
図５は、デバイス情報処理ブロック３１１の処理を示すフローチャートである。図５は、図４のデバイス情報の取得を行うステップＡ４１の処理に相当する。図６は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲのデータ構造の例を示す図である。ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲは、１８バイトのデータで構成され、メーカーのＩＤを示すｉｄＶｅｎｄｏｒ６０１、製品のＩＤを示すｉｄＰｒｏｄｕｃｔ６０２、デバイスの構成可能な数を示すｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３を含んでいる。
【００４２】
ＵＳＢデバイスがデバイス選択装置３０１に接続された場合、ＵＳＢホストコントローラ３０２は、ＵＳＢデバイスと通信可能な状態となり、ＵＳＢデバイスの構成情報を取得するため、最初にＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲを取得する（ステップＢ５１）。
【００４３】
演算装置３０４は、取得したＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲに含まれるｉｄＶｅｎｄｏｒ６０１、ｉｄＰｒｏｄｕｃｔ６０２、およびｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３をデータ領域３１０に保存する（ステップＢ５２）。
【００４４】
次に、ＵＳＢホストコントローラ３０２は、ＵＳＢデバイスの詳細な構成情報を取得するために、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得する（ステップＢ５３）。
【００４５】
ＵＳＢデバイスの詳細な構成情報は、コンフィグレーションという情報で構成されており、ＵＳＢデバイスは、ｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３が示す数だけコンフィグレーションを保有している。コンフィグレーションは１つの場合もあれば、複数の場合もある。コンフィグレーションは、ＵＳＢデバイスから、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得することで得られる。ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得することにより、ＵＳＢデバイスの詳細な構成情報を取得することができる。
【００４６】
図７（ａ）は、デバイスが１つのコンフィグレーションで構成されている場合の構成情報の例を示す図である。図７（ｂ）は、デバイスが複数のコンフィグレーションで構成されている場合の構成情報の例を示す図である。図７（ａ）の構成情報７０１、図７（ｂ）の構成情報７０２の例のように、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得することにより、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲの情報も取得することができるため、コンフィグレーションを構成しているインタフェースの数とクラス情報の取得が行える。
【００４７】
ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲの取得が完了すると、演算装置３０４は、ステップＢ５２で取得したｂＮｕｍＣｏｎｆｉｇｕｒａｔｉｏｎｓ６０３の値を使用して、すべてのコンフィグレーションをＵＳＢデバイスから取得したか否かの判定を行う（ステップＢ５４）。
【００４８】
ＵＳＢデバイスが構成情報７０２のように複数のコンフィグレーションで構成されていて、すべてのコンフィグレーションを取得することができていないと判定された場合には、ステップＢ５３に戻る。この場合、ＵＳＢホストコントローラ３０２は、残りのコンフィグレーションを取得するためにＵＳＢデバイスから再度ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲを取得する。
【００４９】
すべてのコンフィグレーションが取得できていると判定された場合には、演算装置３０４は、取得したすべてのコンフィグレーションを解析し、クラス情報のみでは検出できない機能（以下では、特殊機能と称する）をＵＳＢデバイスが有している可能性があるか否かを調べる（ステップＢ５５）。ステップＢ５５の解析は、デバイス情報処理ブロック３１１が有している特殊機能のパターン情報に基づいて行われる。
【００５０】
図８は、パターン情報の例を示す図である。パターン情報８０１は、特殊機能の名前を表す特殊機能名と、特殊機能を決定するための特殊条件で構成されている。特殊条件には、特殊機能を決定するための条件が記載され、特殊条件は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲとＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲから取得できる情報と、ＵＳＢデバイスの特殊機能を検出するためのコマンド処理を示す情報とで構成されている。パターン情報８０１はデバイス選択装置３０１で対応する特殊機能に応じてデバイス情報処理ブロック３１１内に予め含まれている。
【００５１】
ステップＢ５５の解析処理の結果を用いて、演算装置３０４は、クラス情報のみからは検出できない特殊機能をＵＳＢデバイスが有するか否か、言い換えると、特殊機能を検出するために、ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行う（ステップＢ５６）。
【００５２】
コマンド処理が必要でないと判定された場合には、図５の処理フローは終了する。コマンド処理が必要であると判定された場合、すなわち、クラス情報からは検出できない機能をＵＳＢデバイスが有する場合には、演算装置３０４は、パターン情報８０１に記載されている特殊条件からコマンド処理を選択してＵＳＢデバイスにコマンド処理を行い、処理結果をデータ領域３１０に保存する（ステップＢ５７）。ステップＢ５７の処理が行われた後に、図５の処理フローは終了する。以上が、演算装置３０４によって実行され、ＵＳＢデバイスからデバイス情報を取得する、デバイス情報処理ブロック３１１の処理フローである。
【００５３】
図９は、デバイスリスト情報３１４を作成するまでのリスト処理ブロック３１２の処理を示すフローチャートである。図９は、図４のステップＡ４２の処理に相当する。演算装置３０４は、図５の処理で取得したデバイス情報から、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ情報を解析する（ステップＣ９１）。演算装置３０４は、解析したＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ情報からクラス情報であるｂＩｎｔｅｒｆａｃｅＣｌａｓｓ２０１の情報を取得する（ステップＣ９２）。
【００５４】
演算装置３０４は、ステップＣ９２で取得したクラス情報が、デバイス情報処理ブロック３１１内のパターン情報８０１の特殊条件に該当するクラス情報か否かの判定を行う（ステップＣ９３）。
【００５５】
ステップＣ９２で取得したクラス情報が特殊条件に該当するクラス情報であると判定された場合は、演算装置３０４は、データ領域３１０に保存されているｉｄＶｅｎｄｏｒ６０１、ｉｄＰｒｏｄｕｃｔ６０２、コマンド処理結果およびクラス情報を使用して、パターン情報８０１から特殊機能を選択してＵＳＢデバイスの機能を検出する（ステップＣ９４）。
【００５６】
ステップＣ９２で取得したクラス情報が特殊条件に該当しないと判定された場合は、演算装置３０４は、クラス情報のみでＵＳＢデバイスの機能を検出する（ステップＣ９５）。
【００５７】
ステップＣ９４またはステップＣ９５の処理の後、演算装置３０４は、ＵＳＢデバイスの機能をまとめたデバイスリスト情報３１４を作成し、メモリ領域３０５に保存する（ステップＣ９６）。
【００５８】
図１０は、デバイスリスト情報３１４の例を示す図である。メモリ領域３０５に保存されるデバイスリスト情報３１４について図１０を用いて説明する。デバイスリスト情報３１４は、制御プログラム３０９内部で管理する内部管理情報と、入出力装置３０６を使用してユーザのためにＵＳＢデバイスが対応している機能を表示するためのユーザ提示情報で構成されている。
【００５９】
内部管理情報は、ＵＳＢデバイスの各機能に割り当てられたＩＤ１００１と、デバイスの機能制御に必要なクラス処理ブロック３１３内のクラスドライバ処理ルーチンのクラス情報１００２とを含み、ＩＤ１００１とクラス情報１００２とは関連づけて管理される。ＩＤ１００１は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報とで構成される。よって、ＩＤ１００１を解析することにより、構成情報７０１や構成情報７０２で示したようなコンフィグレーションの数やインタフェースの数などの、デバイスの構成情報が把握できるようになっている。
【００６０】
ユーザ提示情報は、ＵＳＢデバイスが対応している機能名１００３で構成されている。内部管理情報とユーザ提示情報は、ＩＤ１００１、クラス情報１００２、機能名１００３の３つの情報で対応付けられているため、内部管理情報からユーザ提示情報の検索、ユーザ提示情報から内部管理情報の検索が行える。
【００６１】
デバイスリスト情報３１４は、デバイス選択装置３０１にＵＳＢデバイスが接続された時に、ＵＳＢデバイスの機能に対応してリスト処理ブロック３１２の処理によりメモリ領域３０５に作成される。ＵＳＢデバイスが切断された場合には、そのＵＳＢデバイスに対応するデバイスリスト情報３１４がメモリ領域３０５から削除される。
【００６２】
ステップＣ９６でデバイスリスト情報３１４の作成を行った後に、演算装置３０４は、メモリ領域３０５の容量チェックを行い、メモリ容量チェックの結果、メモリ領域３０５に空き領域があれば次の処理を行い、メモリ領域３０５に空き領域がない場合は図９の処理フローを終了する（ステップＣ９７）。
【００６３】
デバイスリスト情報３１４を保存するメモリ領域３０５のサイズについては、システム仕様に応じて調整する必要がある。ＵＳＢデバイスの機能を多く検索する必要がある場合は、予めデバイスリスト情報３１４を保存するメモリ領域３０５を多く確保し、ＵＳＢデバイスの機能を多く検索する必要がなく、使用するメモリを少なく抑えたい場合は、メモリ領域３０５を少なく確保する。ステップＣ９７の処理で、メモリ領域３０５に空き領域があると判定された場合には、演算装置３０４は、すべてのＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ情報の解析は完了したか否かの判定を行う（ステップＣ９８）。
【００６４】
まだ、すべてのＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ検索が終わっていないと判定された場合には、演算装置３０４は、ステップＣ９１に戻って、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲの解析処理を行い、ＵＳＢデバイスが対応している機能をデバイスリスト情報３１４に追加する。すべてのＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲの解析が終わっていると判定された場合には、演算装置３０４は、図９の処理フローを終了する。以上が、演算装置３０４によって実行され、ＵＳＢデバイスから取得した情報に基づいてデバイスリスト情報３１４を作成する、リスト処理ブロック３１２の処理フローである。
【００６５】
これまで、ＵＳＢデバイスがデバイス選択装置３０１に接続された際の、ＵＳＢデバイスが対応している機能をリスト化するまでのデバイス選択装置３０１の動作を図４、図５、図９を用いて説明を行った。ＵＳＢデバイスの機能がＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲ内のクラス情報のみでは検出されない場合であっても、図４、図５、図９に示す処理フローを行うことにより、機器が対応している機能を誤認することなく検出することができる。
【００６６】
次に、図１１の処理が行われる。図１１は、ユーザに、接続されたＵＳＢデバイスが対応している機能を提示し、ユーザが選択した機能をデバイス選択装置３０１が制御するまでの処理を示すフローチャートである。デバイスリスト情報３１４の作成が完了した場合、ＵＳＢデバイスが対応している機能がユーザに提示される。すなわち、デバイスリスト情報３１４内の機能名１００３を使用して、ＵＳＢデバイスが対応している機能の情報を、入出力装置３０６が表示する（ステップＤ１１０１）。
【００６７】
図１２は、ユーザに提示される画面表示情報１２０１の例である。図１２のように、演算装置３０４は、ＵＳＢデバイスが対応している機能の情報として、デバイスリスト情報３１４内の機能名１００３の情報のみを表示させる。ユーザは提示された画面表示情報１２０１から、入出力装置３０６を使用して機能を選択する（ステップＤ１１０２）。演算装置３０４は、入出力装置３０６から入力された、選択された機能を示す入力情報を、デバイスリスト情報３１４を用いてクラス情報１００２に置き換え、クラス情報１００２に対応する機能を制御するためのクラス処理ブロック３１３内のクラスドライバ処理ルーチンを選択する（ステップＤ１１０３）。すなわち、演算装置３０４は、入力情報に基づいてＵＳＢデバイスの機能を選択する。
【００６８】
クラスドライバ処理ルーチンが選択されると、演算装置３０４は、ＵＳＢデバイスに使用するコンフィグレーション情報の設定を行い、選択されたＵＳＢデバイスの機能を有効にする（ステップＤ１１０４）。ＵＳＢデバイスに使用するコンフィグレーション情報の設定が完了した後、演算装置３０４は、ユーザが選択した機能を制御するためにクラスドライバ処理を開始し、ＵＳＢデバイスの機能を制御する（ステップＤ１１０５）。ステップＤ１１０１〜Ｄ１１０３の処理は、演算装置３０４が制御プログラム３０９内のリスト処理ブロック３１２を実行することによって行われ、ステップＤ１１０４〜Ｄ１１０５の処理は、演算装置３０４がクラス処理ブロック３１３を実行することによって行われる。
【００６９】
図１３は、デバイスリスト情報３１４が作成された後のリスト処理ブロック３１２の処理を示すフローチャートである。リスト処理ブロック３１２は、ユーザにＵＳＢデバイスの機能を提示し、ユーザに動的にデバイスの機能を選択させる処理を行う。
【００７０】
まず、演算装置３０４は、デバイスリスト情報３１４から機能名１００３を取得する（ステップＥ１３０１）。取得された機能名１００３はデータ制御装置３０３より入出力装置３０６に転送され、入出力装置３０６が取得された機能名１００３を画面表示情報１２０１としてユーザに提示する（ステップＥ１３０２）。処理ステップＥ１３０２により、ユーザは提示された画面表示情報１２０１からデバイスの機能を動的に選択することができる。ステップＥ１３０２の処理の後、演算装置３０４は、入出力装置３０６によりユーザが機能を選択したか否かの判定を行う（ステップＥ１３０３）。
【００７１】
ユーザからの機能の選択がないと判定された場合には、処理ステップＥ１３０２を再び行う。ユーザからの機器の機能選択が入出力装置３０６に行われたと判定された場合には、データ制御装置３０３は、ユーザが選択した機能データを、入出力装置３０６から演算装置３０４に転送する（ステップＥ１３０４）。
【００７２】
演算装置３０４は、ユーザに選択された機能を示す機能データとデバイスリスト情報３１４の機能名１００３の解析を行い、機能データをデバイスリスト情報３１４のクラス情報１００２に変換する。演算装置３０４は、ユーザが選択した機能を制御するためのクラス処理ブロック３１３内のクラスドライバ処理ルーチンを、クラス情報１００２に従って選択する（ステップＥ１３０５）。ステップＥ１３０１〜Ｅ１３０４の処理は、演算装置３０４が制御プログラム３０９内のリスト処理ブロック３１２を実行することによって行われ、ステップＥ１３０５の処理は、演算装置３０４がクラス処理ブロック３１３を実行することによって行われる。
【００７３】
図１４は、クラス処理ブロック３１３の処理を示すフローチャートである。クラス処理ブロック３１３は、ＵＳＢデバイスにユーザが選択した機能の設定を行い、ＵＳＢデバイスを制御する、クラス処理を行う。図１４の処理は、図１３の処理が完了した後に行われる。
【００７４】
まず、演算装置３０４は、デバイスリスト情報３１４のクラス情報１００２に従ってクラス処理ブロック３１３内のクラスドライバ処理ルーチンを取得した後、クラス情報１００２に対応しているＩＤ１００１から、ユーザが選択した機能を含むコンフィグレーションを特定する。ＩＤ１００１は、ＤＥＶＩＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＩＮＴＥＲＦＡＣＥ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報と、ＣＯＮＦＩＧＵＲＡＴＩＯＮ＿ＤＥＳＣＲＩＰＴＯＲで取得できる情報とで構成されるため、ユーザが選択したＵＳＢデバイスの機能を含むコンフィグレーションを検索することが可能である（ステップＦ１４０１）。
【００７５】
ユーザが選択した、ＵＳＢデバイスの機能を含むコンフィグレーションの検索が完了すると、ＵＳＢホストコントローラ３０２は、ユーザが使用したい機能を含むコンフィグレーションに関して、クラス処理ブロック３１３内のＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮをＵＳＢデバイスに対して発行する（ステップＦ１４０２）。ＵＳＢデバイスに対してＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮを発行することにより、ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮで指定されたコンフィグレーションがＵＳＢデバイス側で有効となる。ステップＦ１４０２の処理の後、演算装置３０４は、ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮの発行が成功したか否かの判定を行う（ステップＦ１４０３）。
【００７６】
ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮの発行が失敗したと判定された場合には、演算装置３０４は、エラー処理を行いユーザにＵＳＢデバイスが使用できないことを入出力装置３０６を使用してユーザに通知し、クラス処理ブロック３１３の処理フローは終了する（ステップＦ１４０５）。ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮの発行が成功したと判定された場合には、演算装置３０４は、クラス処理ブロック３１３が有しているＵＳＢデバイスの機能に対応したクラスドライバ処理ルーチンを使用して、ＵＳＢデバイスの機能の制御を開始する（ステップＦ１４０４）。
【００７７】
ＵＳＢデバイスの制御が開始されると、ユーザが選択したＵＳＢデバイスの機能により、ＵＳＢデバイス内の画像・音声情報を画像・音声再生録音装置３０８が再生・録音したり、ＵＳＢデバイス内のデータが内部情報格納領域３０７に格納されたり、内部情報格納領域３０７に格納されているデータをＵＳＢデバイスに転送するなどの制御が、デバイス選択装置３０１で可能となる。図１４の処理は、演算装置３０４がクラス処理ブロック３１３を実行することによって行われる。
【００７８】
このように、図１１、図１３、図１４の処理を行うことにより、デバイス選択装置３０１は、リスト化したＵＳＢデバイスの機能をユーザに提示し、ＵＳＢデバイスの、ユーザによって選択された機能を制御する。したがって、ユーザは、提示された機能を動的に選択することが可能となる。
【００７９】
本発明の多くの特徴及び優位性は、記載された説明から明らかであり、よって添付の特許請求の範囲によって、本発明のそのような特徴及び優位性の全てをカバーすることが意図される。更に、多くの変更及び改変が当業者には容易に可能であるので、本発明は、図示され記載されたものと全く同じ構成及び動作に限定されるべきではない。したがって、全ての適切な改変物及び等価物は本発明の範囲に入るものとされる。
【産業上の利用可能性】
【００８０】
以上説明したように、本発明の実施形態によると、ＵＳＢデバイスの機能の選択が可能になるので、本発明は、デバイス選択方法等について有用である。コンポーネントステレオ、ＤＶＤ（Digital Versatile Disc）プレーヤー、ＨＤＤ（Hard Disk Drive）レコーダー、デジタルテレビジョン受像機等のマルチメディア機器としても有用である。
【符号の説明】
【００８１】
３０１  デバイス選択装置
３０２  ＵＳＢホストコントローラ
３０３  データ制御装置
３０４  演算装置
３０５  メモリ領域
３０６  入出力装置
３０９  制御プログラム
３１４  デバイスリスト情報
１００２  クラス情報
１００３  機能名
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus）デバイスからデバイス情報を取得するステップと、
前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、
前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、
前記デバイスリスト情報をメモリ領域に保存するステップとを備える
デバイス制御方法。
【請求項２】
請求項１に記載のデバイス制御方法において、
前記デバイスリスト情報を用いて前記ＵＳＢデバイスの機能を表示するステップと、
入力情報に基づいて、前記ＵＳＢデバイスの機能を選択するステップと、
前記選択されたＵＳＢデバイスの機能を有効にするステップとを更に備える
デバイス制御方法。
【請求項３】
請求項２に記載のデバイス制御方法において、
前記選択されたＵＳＢデバイスの機能を示すデータを、前記選択されたＵＳＢデバイスの機能が対応するクラス情報に変換するステップを更に備える
デバイス制御方法。
【請求項４】
請求項３に記載のデバイス制御方法において、
前記ＵＳＢデバイスに選択された機能の設定を行い制御する、クラス処理を行うステップを更に備える
デバイス制御方法。
【請求項５】
請求項１に記載のデバイス制御方法において、
前記コマンド処理を行うステップは、前記取得されたデバイス情報のクラス情報からは検出できない機能を前記ＵＳＢデバイスが有する場合に、前記コマンド処理を行う
デバイス制御方法。
【請求項６】
請求項１に記載のデバイス制御方法において、
前記デバイスリストでは、前記ＵＳＢデバイスの機能を表示するための情報と管理情報とが対応付けられている
デバイス制御方法。
【請求項７】
ＵＳＢデバイスからデバイス情報を取得するステップと、
前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行うステップと、
前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成するステップと、
前記デバイスリスト情報をメモリ領域に保存するステップとを有し、
コンピュータで実行可能なデバイス制御プログラム。
【請求項８】
演算装置と、
ＵＳＢデバイスと前記演算装置との間のデータ転送を行うＵＳＢホストコントローラとを備え、
前記演算装置は、
前記ＵＳＢデバイスからデバイス情報を取得し、
前記取得されたデバイス情報から、前記ＵＳＢデバイスの機能を検出するために前記ＵＳＢデバイスにコマンドを発行するコマンド処理が必要か否かの判定を行い、前記コマンド処理が必要であると判定された場合に前記コマンド処理を行い、
前記取得されたデバイス情報および前記コマンド処理の結果に基づいて、前記ＵＳＢデバイスの機能の情報をリスト化したデバイスリスト情報を作成し、
前記デバイスリスト情報をメモリ領域に保存する
デバイス選択装置。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009125586.tif 000017
【図２】
2009125586.tif 000018
【図３】
2009125586.tif 000019
【図４】
2009125586.tif 000020
【図５】
2009125586.tif 000021
【図６】
2009125586.tif 000022
【図７】
2009125586.tif 000023
【図８】
2009125586.tif 000024
【図９】
2009125586.tif 000025
【図１０】
2009125586.tif 000026
【図１１】
2009125586.tif 000027
【図１２】
2009125586.tif 000028
【図１３】
2009125586.tif 000029
【図１４】
2009125586.tif 000030
【国際調査報告】
2009125586.tif 000031
2009125586.tif 000032