(57)【要約】  【課題】  複数の機能をサポートするＵＳＢファンクション装置がＵＳＢホスト装置と接続されたときに確実に通信が可能となること。  【解決手段】  コネクタ１４０にＵＳＢケーブルが差し込まれたときにＶＢＵＳ検出部１４１がＵＳＢを介したＵＳＢホスト装置の接続を検出する。そして、ＵＳＢホスト装置からのディスクリプタ読み出し要求に対して、ＵＳＢファンクションドライバ１４２が現在のＵＳＢディスクリプタを応答しても、所定時間内に現在のＵＳＢディスクリプタに従った通信がＵＳＢホスト装置から開始されないときには、ＣＰＵ１０１によってＵＳＢファンクションドライバ１４２の保持するＵＳＢディスクリプタを切り替え、バスリセット発生手段１４３によってバスリセットを発生させるように構成した。【選択図】  図５
2005078304.tif 000002
【特許請求の範囲】
【請求項１】
複数のＵＳＢディスクリプタをサポートし、ＵＳＢを介してホスト装置と接続されてＵＳＢファンクションとして動作するＵＳＢファンクション装置において、
前記複数のＵＳＢディスクリプタの中から前記ホスト装置に送信するＵＳＢディスクリプタを切り替えるディスクリプタ切替手段と、
前記ホスト装置との通信を初期化するためのバスリセットを発生させるバスリセット発生手段と、
前記ホスト装置のディスクリプタ要求に対して現在のＵＳＢディスクリプタを応答しても該ＵＳＢディスクリプタに従った通信が前記ホスト装置から開始されないときには、前記ディスクリプタ切替手段によってＵＳＢディスクリプタを切り替えて、前記バスリセット発生手段によってバスリセットを発生させる制御手段と、
を備えたことを特徴とするＵＳＢファンクション装置。
【請求項２】
前記ＵＳＢを介して前記ホスト装置が接続されたことを検出するホスト接続検出手段と、
前記ホスト接続検出手段で前記ホスト装置の接続を検出したとき又は前記バスリセット発生手段でバスリセットを発生させたときに計時を開始するタイマと、
を備え、
前記制御手段は、前記ホスト装置の接続を検出してから又はバスリセットがされてから所定時間内に現在のＵＳＢディスクリプタに従った通信が前記ホスト装置から開始されないときには、ＵＳＢディスクリプタを切り替えてバスリセットを発生させることを特徴とする請求項１に記載のＵＳＢファンクション装置。
【請求項３】
前記ホスト装置からのＵＳＢディスクリプタ要求を検出するディスクリプタ要求検出手段と、
前記ディスクリプタ要求検出手段で前記ホスト装置からのディスクリプタ要求を検出したとき計時を開始するタイマと、
を備え、
前記制御手段は、前記ホスト装置からのディスクリプタ要求を検出してから所定時間内に現在のＵＳＢディスクリプタに従った通信が前記ホスト装置から開始されないときには、ＵＳＢディスクリプタを切り替えてバスリセットを発生させることを特徴とする請求項１に記載のＵＳＢファンクション装置。
【請求項４】
前記ディスクリプタ切替手段によってＵＳＢディスクリプタの切り替えを行うか否かを設定するディスクリプタ切替設定手段を備えたことを特徴とする請求項１、２又は３に記載のＵＳＢファンクション装置。
【請求項５】
前記ディスクリプタ切替手段によって切り替わる複数のＵＳＢディスクリプタの前記ホスト装置に応答する優先順位を設定する優先順位設定手段を備えたことを特徴とする請求項１、２、３又は４に記載のＵＳＢファンクション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＵＳＢファンクション装置に係り、特に複数のＵＳＢディスクリプタをサポートするＵＳＢファンクション装置に関する。
【背景技術】
【０００２】
複数の機能にそれぞれ対応する複数のＵＳＢディスクリプタをサポートするＵＳＢファンクション装置であって、ユーザが複数の機能の中からひとつの機能を選択した場合に、ユーザが選択した機能に対応したＵＳＢディスクリプタをＵＳＢホスト装置に送信するようにしたものが提案されている（特許文献１を参照）。例えば、カメラ（ＵＳＢファンクション装置である）がマスストレージクラスの機能（外部記憶装置としてカメラを扱うための機能である）とスチールイメージクラスの機能（静止画を画像単位にカメラから転送可能にする機能である）とを持つ場合に、ユーザがカメラ側でマスストレージクラスの機能を選択したときには、マスストレージクラスの機能を表現するＵＳＢディスクリプタがＵＳＢを介してパーソナルコンピュータ（ＵＳＢホスト装置である）に送信されることになる。
【０００３】
また、ディスクリプタの切り替えを要求するベンダユニークなコマンドをＵＳＢホスト装置からＵＳＢファンクション装置に送り、このベンダユニークなコマンドを受信したＵＳＢファンクション装置が、ＵＳＢホストに送信するＵＳＢディスクリプタをＵＳＢホスト装置の想定するＵＳＢディスクリプタに切り替えるようにしたものも提案されている（特許文献２を参照）。例えば、パーソナルコンピュータ（ＵＳＢホスト装置である）がマスストレージクラスの機能にのみ対応しており、このパーソナルコンピュータにＵＳＢを介して接続されるカメラ（ＵＳＢファンクション装置である）がマスストレージクラスの機能とスチールイメージクラスの機能とを持つとする。ここで、パーソナルコンピュータからカメラにベンダユニークなコマンドを送信したとき、カメラからパーソナルコンピュータに送信されるディスクリプタがマスストレージクラスの機能を表現するＵＳＢディスクリプタに切り替わる。
【特許文献１】特開２００１−２０２３２５号公報
【特許文献２】特開２００１−２２２５０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されたものは、ＵＳＢホスト装置の対応する機能とＵＳＢファンクション装置でユーザが選択した機能とが異なっている場合には、ＵＳＢファンクション装置からＵＳＢホスト装置にＵＳＢディスクリプタを送信しても、その後の通信がＵＳＢホスト装置とＵＳＢファンクション装置との間で開始されないことになる。例えば、パーソナルコンピュータ（ＵＳＢホスト装置である）がマスストレージクラスの機能にのみ対応しており、このパーソナルコンピュータにＵＳＢを介して接続されるカメラ（ＵＳＢファンクション装置である）がマスストレージクラスの機能とスチールイメージクラスの機能を持つとする。そうすると、カメラ側でユーザがスチールイメージクラスの機能を選択したとき、パーソナルコンピュータとカメラとの間がＵＳＢケーブルで接続され、カメラからパーソナルコンピュータにスチールイメージクラスの機能を表現するＵＳＢディスクリプタを送信しても、カメラは動作できないことになる。
【０００５】
また、特許文献２に記載されたものは、ＵＳＢホスト装置とＵＳＢファンクション装置とでベンダが異なるなどの理由により、ベンダユニークなコマンド（ＵＳＢディスクリプタの切り替えを要求するコマンド）をＵＳＢファンクション装置が解釈不可能な場合には、ＵＳＢホスト装置とＵＳＢファンクション装置とをＵＳＢケーブルで接続しても、ＵＳＢファンクション装置のＵＳＢディスクリプタがＵＳＢホスト装置の想定するＵＳＢディスクリプタ、即ちＵＳＢホスト装置でのコンフィグレーションに対応するＵＳＢディスクリプタに切り替わらず、ＵＳＢファンクション装置は何も動作することができないという問題があった。
【０００６】
本発明はこのような事情に鑑みてなされたもので、複数のＵＳＢディスクリプタをサポートするＵＳＢファンクション装置において、ＵＳＢホスト装置と接続されたときに確実に通信が可能となるＵＳＢファンクション装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記目的を達成するために、請求項１に記載の発明は、複数のＵＳＢディスクリプタをサポートし、ＵＳＢを介してホスト装置と接続されてＵＳＢファンクションとして動作するＵＳＢファンクション装置において、前記複数のＵＳＢディスクリプタの中から前記ホスト装置に送信するＵＳＢディスクリプタを切り替えるディスクリプタ切替手段と、前記ホスト装置との通信を初期化するためのバスリセットを発生させるバスリセット発生手段と、前記ホスト装置のディスクリプタ要求に対して現在のＵＳＢディスクリプタを応答しても該ＵＳＢディスクリプタに従った通信が前記ホスト装置から開始されないときには、前記ディスクリプタ切替手段によってＵＳＢディスクリプタを切り替えて、前記バスリセット発生手段によってバスリセットを発生させる制御手段とを備えた構成となっている。
【０００８】
この構成によって、ホスト装置のディスクリプタ要求（「ディスクリプタ読み出し要求」ともいう）に対して現在のＵＳＢディスクリプタを応答してもホスト装置からの通信が開始されないときには、ＵＳＢファンクション装置側の制御手段によってＵＳＢディスクリプタが切り替わってバスリセットが発生されるので、ＵＳＢホスト装置とＵＳＢファンクション装置との間の通信が確実に可能になる。
【０００９】
また、請求項２に記載の発明は、請求項１に記載の発明において、前記ＵＳＢを介して前記ホスト装置が接続されたことを検出するホスト接続検出手段と、前記ホスト接続検出手段で前記ホスト装置の接続を検出したとき又は前記バスリセット発生手段でバスリセットを発生させたときに計時を開始するタイマとを備え、前記制御手段は、前記ホスト装置の接続を検出してから又はバスリセットがされてから所定時間内に現在のＵＳＢディスクリプタに従った通信が前記ホスト装置から開始されないときには、ＵＳＢディスクリプタを切り替えてバスリセットを発生させる構成となっている。
【００１０】
また、請求項３に記載の発明は、請求項１に記載の発明において、前記ホスト装置からのＵＳＢディスクリプタ要求を検出するディスクリプタ要求検出手段と、前記ディスクリプタ要求検出手段で前記ホスト装置からのディスクリプタ要求を検出したとき計時を開始するタイマとを備え、前記制御手段は、前記ホスト装置からのディスクリプタ要求を検出してから所定時間内に現在のＵＳＢディスクリプタに従った通信が前記ホスト装置から開始されないときには、ＵＳＢディスクリプタを切り替えてバスリセットを発生させる構成となっている。
【００１１】
また、請求項４に記載の発明は、請求項１、２又は３に記載の発明において、前記ディスクリプタ切替手段によってＵＳＢディスクリプタの切り替えを行うか否かを設定するディスクリプタ切替設定手段を備えた構成となっている。
【００１２】
この構成によって、ＵＳＢディスクリプタの自動的な切り替えを行うか否かが設定可能になる。ＵＳＢディスクリプタの自動的な切り替えを行わない設定の場合には固定のＵＳＢディスクリプタが送信される。
【００１３】
また、請求項５に記載の発明は、請求項１、２、３又は４に記載の発明において、前記ディスクリプタ切替手段によって切り替わる複数のＵＳＢディスクリプタの前記ホスト装置に応答する優先順位を設定する優先順位設定手段を備えた構成となっている。
【発明の効果】
【００１４】
本発明によれば、複数のＵＳＢディスクリプタをサポートするＵＳＢファンクション装置において、ＵＳＢホスト装置と接続されたときに確実に通信が可能となる。
【発明を実施するための最良の形態】
【００１５】
以下添付図面に従って本発明に係るＵＳＢファンクション装置の好ましい実施の形態について詳説する。
【００１６】
（第１の実施の形態）  本発明をカメラに適用した場合について以下説明する。このカメラは、ＵＳＢ（Universal Serial Bus）を介して、パーソナルコンピュータ（以下単に「ＰＣ」を称する）やプリンタ等のＵＳＢホストと接続されて、ＵＳＢファンクションとして機能する。
【００１７】
図１は、カメラ１０がＵＳＢケーブル４０を介してＰＣ２０と接続された状態を示す。図１において、ＰＣ２０がＵＳＢホスト、カメラ１０がマスストレージクラス（ＭＳＣ）のＵＳＢファンクションとして機能する。即ち、ＵＳＢホストのＰＣ２０に対して、カメラ１０は外部記憶装置として動作する。また、ＰＣ２０がＵＳＢホスト、カメラ１０がＰＣカメラのＵＳＢファンクションとして動作した場合には、テレビ会議を可能とするために、カメラ１０は撮像中の画像を動画像として連続的にＰＣ２０に転送するようになっている。
【００１８】
図２は、カメラ１０がＵＳＢケーブル４０を介してプリンタ３０と接続された状態を示す。図２において、プリンタ３０がＵＳＢホスト、カメラ１０がスチールイメージクラス（ＳＩＣ）のＵＳＢファンクションとして動作する。プリンタ３０とカメラ１０との間のＵＳＢを介した通信は、スチールイメージクラスとして行われる。このようなスチールイメージクラスのＵＳＢファンクションとしてカメラ１０が動作した場合には、ユーザがカメラ１０のユーザインタフェース（後述する液晶表示装置及び操作スイッチ）によって画像の選択操作及び印刷の指示操作を行うと、このユーザの操作に応じてカメラ１０内の画像が画像単位でプリンタ３０にダイレクトに転送されて、この転送された画像がプリンタ３０で印刷される。即ち、ダイレクトプリントが行われる。
【００１９】
図３は、カメラ１０を背面側から見た斜視図である。カメラ１０のボディには、液晶表示装置（ＬＣＤ）１２１と、電源スイッチ１２２１、撮影指示を入力するためのレリーズボタン１２２２、各種のモードを設定するためのモードダイヤル１２２３、上、下、左、右矢印キーからなる十字ボタン１２２４、メニューの表示を指示するためのメニューボタン１２２５、所定の処理の実行を開始するための実行ボタン１２２６、所定の処理の取消しをするためのキャンセルボタン１２２７などの操作スイッチ１２２とが配置されている。
【００２０】
図４は、図３のモードダイヤル１２２３の例を示す。図４のモードダイヤル１２２３では、各種の設定を行うためのセットアップモード、ＵＳＢホストと通信を行うためのＵＳＢモード、静止画を撮影して記録するための静止画撮影モード、動画を撮影して記録するための動画撮影モード、及び、記録された画像を再生するための再生モードが設定可能になっている。尚、図４では、ダイヤル位置（図中の矢印の位置）にＵＳＢモードが合わせられている。このＵＳＢモードでは、カメラ１０がＵＳＢを介してＰＣ２０やプリンタ３０と通信可能である。
【００２１】
図５は、カメラ１０の内部構成を示す要部ブロック図である。
【００２２】
中央処理装置（ＣＰＵ）１０１は、所定のプログラムに従ってカメラ１０の各部を制御する制御手段として機能する。システムメモリ１０２は、プログラムや各種の定数等を記憶したＲＯＭと、プログラム実行時の動作領域になるとともに、画像データの一時記憶が可能なＲＡＭによって構成されている。圧縮伸長部１０３は画像データの圧縮及び伸長を行う。不揮発性メモリ１０４は、ＵＳＢに関する設定情報を含む各種の設定情報を記憶する。タイマ１０５は所定の時間をカウントする。カレンダ及び時計１０６は年月日及び日時を管理する。バッテリ１１０は、カメラ１０の各部へ電源を供給する。
【００２３】
撮像部１１１は、被写体の像を受光面に結像させて光電変換し、画像信号として出力する。この撮像部１１１から出力された画像信号は、信号処理部１１２によって所定の信号処理が施され、Ａ／Ｄ変換部１１３によってアナログからデジタルに変換されて、システムメモリ１０２内のＲＡＭに画像データとして一時記憶される。また、ストロボ１１４は、ストロボ制御部１１５の制御により必要に応じて発光する。尚、システムメモリ１０２のＲＡＭ内に一時記憶された画像データは、ＣＰＵ１０１等によって所定の画像処理が施され、圧縮伸長部１０３でＪＰＥＧ（Joint Photograph Expert Group）規格等に代表される所定の手法で圧縮された後に、カードインタフェース１３２を介して、メモリカードスロット１３１に装着されたメモリカード１３０に記録される。
【００２４】
操作スイッチ１２２は、ユーザが各種の指示や各種の設定を入力するものである。入力された情報は、入出力回路（Ｉ／Ｏ）１３６を介してＣＰＵ１０１に通知されるようになっている。
【００２５】
ＬＣＤ１２１は、画像を表示可能になっている。具体的には、メモリカードスロット１３１に装着したメモリカード１３０からカードインタフェース１３２を介して画像データが読み出され、圧縮伸長部１０３でＪＰＥＧ規格等に代表される所定の手法で伸長され、フレームメモリ１３３に一時記憶された後に、ＬＣＤ制御部１３４の制御によりＬＣＤ１２１に表示される。また、ＬＣＤ１２１は、ＯＳＤ（On Screen Display）制御部１３５の制御により、画像以外にも文字やアイコンを表示可能になっている。ＬＣＤ１２１に文字やアイコンを表示するためのデータ変換はＯＳＤ制御部１３５によって行われるようになっている。例えば、ＬＣＤ１２１は、モードダイヤル１２２３でセットアップモードが設定されたとき、文字やアイコンを用いたセットアップ画面を表示可能になっている。このセットアップ画面での設定の内容は、不揮発性メモリ１０４に記憶されるようになっている。
【００２６】
コネクタ１４０には、ＵＳＢケーブル４０の一端が差し込まれる。このＵＳＢケーブルの他端はＵＳＢホスト側のコネクタ（図示を省略）に差し込まれる。カメラ１０がＵＳＢファンクションとして動作するため、ＵＳＢコネクタ１４０はｍｉｎｉ―Ｂコネクタで構成されている。
【００２７】
ＶＢＵＳ検出部１４１は、ＵＳＢのＶＢＵＳを監視することにより、ＵＳＢホストの接続の有無を検出する。具体的には、他端がＵＳＢホストに接続されたＵＳＢケーブルの一端がコネクタ１４０に差し込まれたとき、ＵＳＢホストからのＶＢＵＳが供給されたことを検出可能になっている。
【００２８】
ＵＳＢファンクションドライバ１４２は、カメラ１０がＵＳＢファンクションとしてＵＳＢホストとＵＳＢを介して通信するためのものであり、ＵＳＢホストから受信した各種のコマンドをＣＰＵ１０１に通知する。ＵＳＢホストから受信したディスクリプタ読み出し要求の有無もＣＰＵ１０１に通知される。
【００２９】
また、ＵＳＢファンクションドライバ１４２は、ＵＳＢホストからのディスクリプタ読み出し要求に対して応答するＵＳＢディスクリプタがＣＰＵ１０１からセットされるようになっている。ＵＳＢファンクションドライバ１４２は、ＵＳＢホストからディスクリプタ読み出し要求を受信したとき、ＣＰＵ１０１からセットされたＵＳＢディスクリプタ（現在のＵＳＢディスクリプタ）をＵＳＢホストに応答するようになっている。このように、ＵＳＢファンクションドライバ１４２がＵＳＢホストからのディスクリプタ読み出し要求に対して自動で応答するような態様の場合には、ＣＰＵ１０１でのディスクリプタ読み出し要求のチェック処理及びその応答処理を省略することも可能である。
【００３０】
バスリセット発生部１４３は、ホスト装置との通信を初期化するためのバスリセットを発生させる。バスリセットの具体的な態様としては、例えば、通常時はプルアップされているＵＳＢのＤ＋信号線を、バスリセットを発生させる際には一時的に停止させるようにした態様がある。
【００３１】
尚、前述のタイマ１０５におけるカウントの態様には、周知のようにインクリメントの態様とデクリメントの態様とがある。タイマ１０５で所定の時間のカウントが終了したとき、ＣＰＵ１０１がタイムアウトを検知する。
【００３２】
本実施の形態では、ＶＢＵＳ検出部１４１によってＵＳＢホストの接続が検出されたときにタイマ１０５が計時を開始し、ＣＰＵ１０１がタイムアウトを検知するようになっている。また、ＵＳＢホストが接続された状態でバスリセット発生部１４３によってバスリセットを発生させたときにもタイマ１０５が計時を開始し、ＣＰＵ１０１がタイムアウトを検知するようになっている。
【００３３】
図６は、システムメモリ１０２のＲＯＭに予め記憶されたＵＳＢディスクリプタのリストである。このＵＳＢディスクリプタリストに登録されたＵＳＢディスクリプタは、必要に応じてＣＰＵ１０１によってシステムメモリ１０２のＲＯＭから読み出され、ＵＳＢファンクションドライバ１４２に設定される。各ＵＳＢディスクリプタには機能番号が付与されており、機能番号１はマスストレージクラス（ＭＳＣ）、機能番号２はスチールイメージクラス（ＳＩＣ）、機能番号３はベンダユニークのＰＣカメラにそれぞれ対応している。
【００３４】
図７は、ＬＣＤ１２１に表示されるセットアップ画面７００の例を示す。このセットアップ画面７００は、モードダイヤル１２２３でセットアップモードが設定されているときに表示されるようになっている。
【００３５】
このセットアップ画面７００では、メモリカード１３０に画像を記録する際の記録モード７０１として、ＪＰＥＧの規格に基づく圧縮を行って記録するＪＰＥＧモード（JPG/FINEモード又はJPG/Basicモード）、及び、圧縮を行わないで画像を記録する非圧縮モード（CCD-rawモード）の何れかを設定可能である。ＪＰＥＧに基づく圧縮を行ってメモリカード１３０に画像を記録する際の画素数７０２として、１６００×１２００画素、１２８０×９６０画素、及び、６４０×４８０画素の何れかを設定可能である。また、画像のシャープネス７０３として、ハード、標準、及び、ソフトの何れかを設定可能である。ビープ音７０４としては、大、標準、小、及び、オフの何れかを設定可能である。
【００３６】
ＵＳＢモード７０５は、ＵＳＢホストに送信するディスクリプタの選択態様を示す。「ＡＵＴＯ」（ディスクリプタ自動切替モード）を設定した場合には、ＵＳＢホストに送信するＵＳＢディスクリプタをＣＰＵ１０１が選択し切り替える。即ち、図６に示すＵＳＢディスクリプタリスト６００の中からＵＳＢホストに送信するＵＳＢディスクリプタがＣＰＵ１０１によって選択される。「カードドライブ」を設定した場合には、マスストレージクラスに対応したＵＳＢディスクリプタ６０１に固定される。即ち、ＵＳＢファンクションドライバ１４２には、マスストレージクラスの機能を表現するディスクリプタ６０１が固定的にセットされる。「プリンタ接続」を設定した場合には、スチールイメージクラスに対応したＵＳＢディスクリプタ６０２に固定される。即ち、ＵＳＢファンクションドライバ１４２には、スチールイメージクラスの機能を表現するディスクリプタ６０２が固定的にセットされる。「ＰＣカメラ」を設定した場合には、ＰＣ２０への画像のリアルタイム転送機能に対応したＵＳＢディスクリプタに固定される。即ち、ＵＳＢファンクションドライバ１４２には、「ＰＣカメラ」を表現するディスクリプタ６０３が固定的にセットされる。
【００３７】
また、ＵＳＢ切替周期７０６では、ＵＳＢモード７０５で「ＡＵＴＯ」を設定した場合、ＣＰＵ１０１によるＵＳＢディスクリプタの切替周期を設定可能である。即ちタイマ１０５でタイムアウトする時間（秒）が設定可能になっている。
【００３８】
尚、カメラ１０がスチールイメージクラスとして機能する場合の通信プロトコルアーキテクチャとしては、例えば、ＣＩＰＡ（カメラ映像機器工業会）で策定されたPictBridge（CIPA-DC-001-2003）の通信プロトコルアーキテクチャがある。この通信プロトコルアーキテクチャでは、ＵＳＢ物理層の上のトランスポート層に、通信プロトコルとしてＰＴＰ（Picture Transfer Protocol）を用いる。このＰＴＰを有したトランスポート層（ＰＴＰトランスポート層）とＤＰＳ（Direct Print System）のためのアプリケーション層（ＤＰＳアプリケーション層）との間には、変換レイヤであるＤＰＳ（Direct Print System）層が設けられている。
【００３９】
このような通信プロトコルアーキテクチャの実装には各種の態様がある。例えば、アプリケーション層、ＤＰＳ層及びトランスポート層をＣＰＵ１０１で構成する。
【００４０】
図９のフローチャートを用いて本実施の形態のカメラ１０の動作について説明する。このフローチャートの各ステップは、ＣＰＵ１０１の統括制御により、システムメモリ１０２のＲＯＭに予め記憶されたプログラムに従って実行される。
【００４１】
尚、図６に示すように、ディスクリプタリスト６００には、機能番号「１」が付与されたマスストレージクラスのディスクリプタ６０１、機能番号「２」が付与されたスチールイメージクラスのディスクリプタ６０２、機能番号「３」が付与されたＰＣカメラ（ベンダユニークの機能である）のディスクリプタ６０３の順に、カメラ１０がサポートする３種のディスクリプタ６０１、６０２、６０３が登録されている。また、図７のセットアップ画面７００で、ＵＳＢモード７０５として「ＡＵＴＯ」モードが予め設定されている。この「ＡＵＴＯ」モードでは、以下に詳説するように、ＣＰＵ１０１の制御によりＵＳＢホストに送信するディスクリプタが切り替わる。
【００４２】
図９において、最初に、現在の機能番号ｎをデフォルトの「１」に初期化して（Ｓ１０２）、図６のディスクリプタリスト６００に基づいて、機能番号「１」が付与されたディスクリプタ６０１（マスストレージクラスである）を、図８（ａ）に示すようにＵＳＢファンクションドライバ１４２にセットする（Ｓ１０４）。そして、ＶＢＵＳ検出部１４１によってＵＳＢのＶＢＵＳを監視することにより、ＵＳＢを介してＵＳＢホストが接続されたか否かを検出する（Ｓ１０６）。
【００４３】
ここで、図２に示すように、ＵＳＢケーブル４０の一端がプリンタ３０に接続され、このＵＳＢケーブル４０の他端がカメラ１０のコネクタ１４０に差し込まれたとする。即ち、プリンタ３０がＵＳＢホストとして接続されたとする。そうするとＶＢＵＳ検出部１４１によりＵＳＢホストの接続が検出されて、このときにタイマ１０５のカウンタをクリアすることにより計時を開始する（Ｓ１０８）。この時点で、ＣＰＵ１０１は、何らかのＵＳＢホストがＵＳＢを介して接続されたことを検知する（ＵＳＢホストが現在のディスクリプタをサポートしているか否かは後述のステップで判断される）。そして、ＵＳＢホストからのディスクリプタ読み出し要求を待つ（Ｓ１１０）。ＵＳＢホストとしてプリンタ３０が接続されているので、プリンタ３０からディスクリプタ読み出し要求を受信し、この要求に対して、ＵＳＢファンクションドライバ１４２にセットされている現在のディスクリプタ（ここではマスストレージクラスのディスクリプタ６０１である）をＵＳＢホストに送信する（Ｓ１１２）。そして、ＵＳＢホストからの通信が開始されるか否かを判定する（Ｓ１１４）。
【００４４】
尚、プリンタ３０は、スチールイメージクラスをサポートしているが、マスストレージクラスをサポートしておらず、したがって、ディスクリプタ読み出し要求に対してマスストレージクラスのディスクリプタ６０１を応答しても、通信を開始しない。このようにＵＳＢホストからの通信が開始されない場合には、タイマ１０５のタイムアウト検出ステップ（Ｓ１１６）でタイムアウトを検出する。即ち、ＵＳＢホストの接続を検出してから一定時間内に現在のディスクリプタに従ったＵＳＢホストからの通信が開始されないので、ＵＳＢホストは現在のＵＳＢディスクリプタをサポートしていないと判断する。
【００４５】
このようにＵＳＢを介した通信が始まらないときには、現在の機能番号ｎをインクリメントし（Ｓ１２０）、現在の機能番号ｎが最大値（ここでは「３」である）を超えたか否かを判定する（Ｓ１２２）。ここで、インクリメント後の現在の機能番号ｎは「２」であるから、現在の機能番号ｎをデフォルトの「１」に循環的に再初期化するステップ（Ｓ１２４）をスキップして、機能番号「２」が付与されたディスクリプタ６０２（スチールイメージクラスである）を、図８（ｂ）に示すようにＵＳＢファンクションドライバ１４２にセットする（Ｓ１２６）。そして、バスリセット発生部１４３によって、ＵＳＢホストとのＵＳＢを介した通信を初期化するためのバスリセットを発生させる（Ｓ１２８）。
【００４６】
ここで、図２に示すように、プリンタ３０がＵＳＢホストとして既に接続されているから、ＶＢＵＳ検出部１４１によりＵＳＢホストの接続が直ちに検出されて（Ｓ１０６）、タイマ１０５により計時を開始する（Ｓ１０８）。そして、ディスクリプタ読み出し要求をプリンタ３０から受信して（Ｓ１１０）、この応答として、ＵＳＢファンクションドライバ１４２にセットされている現在のディスクリプタ（ここではスチールイメージクラスのディスクリプタ６０２である）をＵＳＢホストに送信する。尚、プリンタ３０はスチールイメージクラスに対応しているから、スチールイメージクラスのディスクリプタ６０２に従ったプリンタ３０からの通信が開始される（Ｓ１１４）。このように、バスリセットがされてから一定時間内に現在のディスクリプタに従ったＵＳＢホストからの通信が開始されるので、ＵＳＢホストは現在のディスクリプタ（スチールイメージクラスのディスクリプタ６０２である）をサポートしていると判断される。そして、所定の通信処理が行われる（Ｓ１１８）。具体的には、カメラ１０のユーザインタフェース（ＬＣＤ１２１及び操作スイッチ１２２）での操作に応じて、カメラ１０のメモリカードスロット１３１に装着されたメモリカード１３０内の画像が、カードインタフェース１３２、ＵＳＢファンクションドライバ１４２、コネクタ１４０、及び、ＵＳＢケーブル４０を介して、プリンタ３０に転送され、この転送された画像がプリンタ３０で印刷される、即ち、ダイレクトプリントが実行される。
【００４７】
尚、ステップＳ１１６でタイムアウトを検出してからバスリセット発生（Ｓ１２８）までの間にＵＳＢホストから通信開始される可能性を排除するために、タイムアウトしたら、ＵＳＢホストからの通信開始に対して応答しないようにしておくのが望ましい。
【００４８】
以上、ダイレクトプリントを行うために図２のようにプリンタ３０がＵＳＢホストとして接続された場合について説明した。
【００４９】
次に、図１のようにＰＣ２０がＵＳＢホストとして接続されて、このＰＣがマスストレージクラスのディスクリプタ６０１をサポートしている場合について説明する。
【００５０】
図９において、現在の機能番号ｎを「１」に初期化し（Ｓ１０２）、この機能番号「１」が付与されたマスストレージクラスのディスクリプタ６０１がＵＳＢファンクションドライバ１４２にセットされる（Ｓ１０４）。図２のようにＰＣ２０がＵＳＢホストとして接続されたとき、ＶＢＵＳ検出部１４１によりＵＳＢホストの接続が検出されて（Ｓ１０６）、このときにタイマ１０５により計時を開始し（Ｓ１０８）、ＵＳＢホストからのディスクリプタ読み出し要求を待つ（Ｓ１１０）。ここで、ＰＣ２０からディスクリプタ読み出し要求を受信するので、現在のディスクリプタとしてマスストレージクラスのディスクリプタ６０１をＵＳＢホストに送信する（Ｓ１１２）。
【００５１】
ＰＣ２０はマスストレージクラスのディスクリプタ６０１をサポートしているから、マスストレージクラスのディスクリプタ６０１に従ったＰＣ２０からの通信が開始される（Ｓ１１８）。このように、ＵＳＢホストの接続を検出してから一定時間内に現在のディスクリプタに従ったＵＳＢホストからの通信が開始されるので、ＵＳＢホストは現在のディスクリプタ（マスストレージクラスのディスクリプタ６０１である）をサポートしていると判断される。そして、所定の通信処理が行われる（Ｓ１１８）。具体的には、カメラ１０は外部記憶装置として機能し、ＰＣ２０からのコマンドに従って、メモリカードスロット１３１に装着されたメモリカード１３０のリード及びライトが行われる。
【００５２】
また、図１のように接続されるＰＣ２０がＰＣカメラのディスクリプタ６０３のみをサポートしている場合には、ディスクリプタ読み出し要求に対して、機能番号「１」が付与されたマスストレージのディスクリプタ６０１、及び、機能番号「２」が付与されたスチールイメージクラスのディスクリプタ６０２をカメラ１０から応答（Ｓ１１２）しても、ＰＣ２０から通信が開始されないことになる。従って、ホスト接続の検出（Ｓ１０６）から一定時間経過時、又は、バスリセット（Ｓ１２８）から一定時間経過時に、タイムアウトを検出することになる（Ｓ１１６）。
【００５３】
また、機能番号ｎが「３」までインクリメントされて（Ｓ１２０）、ディスクリプタ読み出し要求に対して、機能番号「３」が付与されたＰＣカメラのディスクリプタ６０３をカメラ１０から応答したとき（Ｓ１１２）、ＰＣ２０からの通信が開始されて（Ｓ１１４）、所定の通信処理が行われる（Ｓ１１８）。具体的には、撮像部１１１で撮像して得られた画像が、信号処理部１１２、ＡＤ変換部１１３、システムメモリ１０２、ＵＳＢファンクションドライバ１４２、コネクタ１４０、及び、ＵＳＢケーブル４０を介して、ＰＣ２０にリアルタイムで転送される。
【００５４】
尚、ディスクリプタリスト６００に従って、全てのディスクリプタについて通信が開始されなかった場合でも、機能番号ｎをデフォルトの「１」に再初期化し（Ｓ１２４）、現在のＵＳＢディスクリプタに従った通信がＵＳＢホスト装置から開始されるまで、即ちＵＳＢホストが期待するＵＳＢディスクリプタに現在のディスクリプタが一致するまで、循環的にＵＳＢディスクリプタを切り替えてリトライを行うようになっている。ここで、機能番号ｎの再初期化（Ｓ１２４）の回数、即ちリトライ回数をカウントして、所定の閾値（例えば２回）を超えた場合には、ディスクリプタの自動切替処理を終了するようにしてもよい。
【００５５】
また、図７のセットアップ画面７００において、ＵＳＢモード７０５として「カードドライブ」モード、「プリンタ接続」モード及び「ＰＣカメラ」モードの何れかが設定されている場合には、図９に示すようなＵＳＢディスクリプタの自動切替は実行されず、ＵＳＢホストからのディスクリプタ読み出し要求に対して、それぞれ固定のＵＳＢディスクリプタがカメラ１０から応答される。「カードドライブ」モードでは、ＵＳＢファンクションドライバ１４２にマスストレージクラスのＵＳＢディスクリプタ６０１がセットされ、ディスクリプタ読み出し要求に対して、マスストレージクラスのＵＳＢディスクリプタ６０１が応答される。「プリンタ接続」モードでは、ＵＳＢファンクションドライバ１４２にスチールイメージクラスのＵＳＢディスクリプタ６０２がセットされ、ディスクリプタ読み出し要求に対して、スチールイメージクラスのＵＳＢディスクリプタ６０２が応答される。「ＰＣカメラ」モードでは、ＵＳＢファンクションドライバ１４２にＰＣカメラのディスクリプタ６０３がセットされ、ディスクリプタ読み出し要求に対して、ＰＣカメラのＵＳＢディスクリプタ６０３が応答される。
【００５６】
（第２の実施の形態）  第２の実施の形態では、第１の実施の形態と異なり、ＣＰＵ１０１は、ＵＳＢファンクションドライバ１４２によってＵＳＢホストからのディスクリプタ読み出し要求が検出されたときに、タイマ１０５に計時を開始させるようになっている。そして、ＣＰＵ１０１は、タイムアウトを検出したときには、ＵＳＢファンクションドライバ１４２にセットされている現在のＵＳＢディスクリプタを切り替えるようになっている。
【００５７】
図１０のフローチャートを用いて本実施の形態のカメラ１０の動作について説明する。
【００５８】
尚、図６に示すようにＵＳＢディスクリプタリスト６００に３種のＵＳＢディスクリプタ６０１、６０２、６０３が予め登録されており、図７のセットアップ画面７００で、「ＡＵＴＯ」モードが予め設定された場合について説明する。
【００５９】
図１０において、最初に、現在の機能番号ｎをデフォルトの「１」に初期化して（Ｓ２０２）、図６のディスクリプタリスト６００に基づいて、機能番号「１」が付与されたディスクリプタ６０１（マスストレージクラスである）を、図８（ａ）に示すようにＵＳＢファンクションドライバ１４２にセットする（Ｓ２０４）。そして、ＶＢＵＳ検出部１４１によってＵＳＢのＶＢＵＳを監視することにより、ＵＳＢを介してＵＳＢホストが接続されたか否かを検出する（Ｓ２０６）。
【００６０】
ここで、図２に示すようにプリンタ３０がＵＳＢホストとして接続されたとする。そうするとＶＢＵＳ検出部１４１によりＵＳＢホストの接続が検出される。ここで、ＵＳＢホストからのディスクリプタ読み出し要求を待つ（Ｓ２０８）。ＵＳＢホストとしてプリンタ３０が接続されているので、プリンタ３０からディスクリプタ読み出し要求を受信し、この要求に対して、ＵＳＢファンクションドライバ１４２にセットされている現在のディスクリプタ（ここではマスストレージクラスのディスクリプタ６０１である）をＵＳＢホストに送信するとともに（Ｓ２１０）、タイマ１０５による計時を開始する（Ｓ２１２）。この時点で、ＣＰＵ１０１は、何らかのＵＳＢホストがＵＳＢを介して接続されたことを検知する（ＵＳＢホストが現在のディスクリプタをサポートしているか否かは後述のステップで判断される）。そして、ＵＳＢホストからの通信が開始されるか否かを判定する（Ｓ２１４）。
【００６１】
尚、プリンタ３０は、スチールイメージクラスをサポートしているが、マスストレージクラスをサポートしておらず、したがって、ディスクリプタ読み出し要求に対してマスストレージクラスのディスクリプタ６０１を応答しても、通信を開始しない。このようにＵＳＢホストからの通信が開始されない場合には、タイマ１０５のタイムアウト検出ステップ（Ｓ２１６）でタイムアウトを検出する。即ち、ＵＳＢホストからのディスクリプタ読み出し要求を検出してから一定時間内に現在のディスクリプタに従ったＵＳＢホストからの通信が開始されないので、ＵＳＢホストは現在のディスクリプタをサポートしていないと判断する。このようにＵＳＢを介した通信が始まらないときには、現在の機能番号ｎをインクリメントし（Ｓ２２０）、現在の機能番号ｎが最大値（ここでは「３」である）を超えたか否かを判定する（Ｓ２２２）。ここで、インクリメント後の現在の機能番号ｎは「２」であるから、現在の機能番号ｎをデフォルトの「１」に循環的に再初期化するステップ（Ｓ２２４）をスキップして、機能番号「２」が付与されたディスクリプタ６０２（スチールイメージクラスである）を、図８（ｂ）に示すようにＵＳＢファンクションドライバ１４２にセットする（Ｓ２２６）。そして、バスリセット発生部１４３によって、ＵＳＢホストとのＵＳＢを介した通信を初期化するためのバスリセットを発生させる（Ｓ２２８）。ここで、ＶＢＵＳ検出部１４１によりＵＳＢホストの接続が直ちに検出されて（Ｓ２０６）、ディスクリプタ読み出し要求をプリンタ３０から受信して（Ｓ２０８）、この応答として、ＵＳＢファンクションドライバ１４２にセットされている現在のディスクリプタ（ここではスチールイメージクラスのディスクリプタ６０２である）をＵＳＢホストに送信する。ここで、タイマ１０５により計時を開始する（Ｓ２１０）。尚、プリンタ３０はスチールイメージクラスに対応しているから、スチールイメージクラスのディスクリプタ６０２に従ったプリンタ３０からの通信が開始される（Ｓ２１４）。このように、ディスクリプタ読み出し要求を検出してから一定時間内に現在のディスクリプタに従ったＵＳＢホストからの通信が開始されるので、ＵＳＢホストは現在のディスクリプタ（スチールイメージクラスのディスクリプタ６０２である）をサポートしていると判断される。そして、所定の通信処理が行われる（Ｓ２１８）。即ち、ダイレクトプリントが実行される。
【００６２】
以上、ダイレクトプリントを行うために図２のようにプリンタ３０がＵＳＢホストとして接続された場合について説明した。
【００６３】
尚、前述の第１及び第２の実施の形態では、図８（ａ）及び（ｂ）を用いて説明したように、ＵＳＢファンクションドライバ１４２にひとつのディスクリプタのみ設定する場合について説明したが、ＵＳＢファンクションドライバ１４２に複数のディスクリプタを設定し、ＵＳＢファンクションドライバ１４２がディスクリプタを切り替えるように構成してもよい。
【００６４】
例えば、図１１（ａ）に示すように、ＵＳＢファンクションドライバ１４２に、第１順位のディスクリプタとしてマスストレージクラスのディスクリプタ６０１をセットするとともに、第２順位のディスクリプタとしてスチールイメージクラスのディスクリプタ６０２をセットする。これらの優先順位付けされた複数のディスクリプタ６０１、６０２を受け付けたＵＳＢファンクションドライバ１４２は、この優先順位に基づいて、ディスクリプタ読み出し要求の応答としてＵＳＢホストに送信するディスクリプタを切り替える。具体的には、ＵＳＢホストのディスクリプタ読み出し要求に対して第１順位のディスクリプタ６０１で応答してもＵＳＢホストから通信が開始されずにタイムアウトになったとき、ディスクリプタを第２順位のディスクリプタ６０２に切り替えてバスリセットを発生する。そして、バスリセット後のディスクリプタ読み出し要求に対して、第２順位のディスクリプタ６０２で応答する。
【００６５】
また、ユーザインタフェース（ＬＣＤ１２１及び操作スイッチ１２２）を用いて、ディスクリプタの優先順位を設定可能に構成してもよい。
【００６６】
例えば、図１１（ａ）では、第１順位がマスストレージクラスのディスクリプタ６０１、第２順位がスチールイメージクラスのディスクリプタ６０２であるが、ユーザインタフェース（１２１、１２２）によって優先順位の入れ替え指示が入力されることにより、図１１（ｂ）に示すように、第１順位がスチールイメージクラスのディスクリプタ６０２、第２順位がマスストレージクラスのディスクリプタ６０１になる。これらの優先順位情報は、不揮発性メモリ１０４に記憶され、カメラ１０の起動時には、不揮発性メモリ１０４に優先順位情報がある場合、ＣＰＵ１０１は、不揮発性メモリ１０４の優先順位情報に基づいてＵＳＢファンクションドライバ１４２に優先順位が付与された複数のディスクリプタを設定する。
【００６７】
尚、本発明のＵＳＢファンクション装置をカメラに適用した場合について説明したが、本発明はカメラに限定されるものではなく、その他のＵＳＢファンクション装置に適用可能なことは言うまでもない。例えば、画像等のデータを記憶するストレージデバイスや、画像等を印刷可能なプリンタ等に適用してもよい。
【００６８】
また、ＵＳＢホスト装置とのＵＳＢの接続態様は、ケーブルによる接続態様に限るものではない。例えば、ＵＳＢホストのコネクタとＵＳＢファンクションとのコネクタとが直接接続される接続態様であってもよい。
【００６９】
また、ＵＳＢディスクリプタが表現する機能として、マスストレージクラス、スチールイメージクラス、及びＰＣカメラを例に説明したが、これらは例示に過ぎない。
【図面の簡単な説明】
【００７０】
【図１】本発明を適用したカメラとホスト装置としてのパーソナルコンピュータとの接続を示す図
【図２】本発明を適用したカメラとホスト装置としてのプリンタとの接続を示す図
【図３】本発明を適用したカメラの外観図
【図４】カメラのモードダイヤルの例を示す図
【図５】本発明に係る第１の実施の形態のＵＳＢファンクション装置としてのカメラの内部構成を示すブロック図
【図６】ディスクリプタのリストを示す図
【図７】セットアップ画面を示す図
【図８】ディスクリプタの切り替えを説明するための説明図
【図９】本発明に係る第１の実施の形態のカメラの動作を示すフローチャート
【図１０】本発明に係る第２の実施の形態のカメラの動作を示すフローチャート
【図１１】複数のＵＳＢディスクリプタの優先順位の入れ替えを説明するための説明図
【符号の説明】
【００７１】
１０…カメラ、２０…パーソナルコンピュータ（ＰＣ）、３０…プリンタ、４０…ＵＳＢケーブル、１０１…ＣＰＵ（制御手段、ディスクリプタ切替手段）、１０２…システムメモリ、１０４…不揮発性メモリ、１０５…タイマ、１１１…撮像部、１２１…ＬＣＤ、１２２…操作スイッチ（ディスクリプタ切替設定手段、優先順位設定手段）、１３０…メモリカード、１３１…メモリカードスロット、１４０…ＵＳＢコネクタ、１４１…ＶＢＵＳ検出部（ホスト接続検出手段）、１４２…ＵＳＢファンクションドライバ（ディスクリプタ要求検出手段）、１４３…バスリセット発生部、
【図１】
2005078304.tif 000003
【図２】
2005078304.tif 000004
【図３】
2005078304.tif 000005
【図４】
2005078304.tif 000006
【図５】
2005078304.tif 000007
【図６】
2005078304.tif 000008
【図７】
2005078304.tif 000009
【図８】
2005078304.tif 000010
【図９】
2005078304.tif 000011
【図１０】
2005078304.tif 000012
【図１１】
2005078304.tif 000013