説明

ファームウェアダウンロードドライバシステム、及び外部装置機能拡張アプリケーションシステム

【課題】拡張する外部装置の属性に対応できる属性設定アプリケーションシステムが簡易且つフレキシブルに開発され得るようにする。
【解決手段】ホストコンピュータと接続された外部装置の制御を行い、該ホストコンピュータから該外部装置にダウンロードされるファームウェアに対して、外部装置に係るプロパティ値を設定するホストコンピュータにおける外部装置機能拡張アプリケーションシステムにおいて、システム起動時に、特定のオブジェクトが形成されると呼び出されるフック関数として、所定のプロパティ値の設定のためのシーケンス処理が登録されることを特徴とする外部装置機能拡張アプリケーションシステムを提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、USB(ユニバーサルシリアルバス)制御装置にファームウェアをダウンロードするためのホストコンピュータにおけるファームウェアダウンロードドライバシステム、及びUSB制御装置の外部装置の機能拡張のためのホストコンピュータにおけるUSB機能拡張アプリケーションシステムに関する。
【背景技術】
【0002】
一般に、ホストコンピュータに接続されたUSB制御装置が、USB制御装置として動作するには、接続時にホストコンピュータからファームウェアがダウンロードされなければならない。ここでのUSB制御装置の例として、Webカメラ(ネットワークカメラ、若しくはデジタルカメラ)が挙げられる(図1(1)参照)。
【0003】
ホストコンピュータに接続するUSB制御装置は、ファームウェアのダウンロードを制御するダウンロード制御部(図示せず)及びファームウェアに係るプログラムを記憶するための内部記憶回路(図示せず)を含む。更に、ダウンロード制御部には、CPU(図示せず)が含まれる。このダウンロード制御部及びCPUと、ホストコンピュータとの通信により、ファームウェアが内部記憶回路へダウンロードされる。ファームウェアをダウンロードするためのUSB制御装置側の方法及び装置の例は、特許文献1に開示されている。
【0004】
一方、上記USB制御装置と接続するホストコンピュータが標準的OS「Windows XP」(登録商標)の環境下で稼動するとき、当該ホストコンピュータには通常「Windows XP」(登録商標)のカーネルである「UVC(USB Video Class)標準ドライバ」が稼動する。このドライバの作用により、USB制御装置の標準的な制御が為されている。つまり、UVC標準ドライバは、例えばWebカメラに対するホストコンピュータ側のドライバとして稼動する。
【0005】
ところで、ホストコンピュータからファームウェアをダウンロードする際、オブジェクトであるファームウェアを介してUSB制御装置の機能に関する情報(プロパティ)を設定するページが、ホストコンピュータにおけるアプリケーションの一部の機能として用意されている(プロパティページ)。「Windows XP」(登録商標)におけるこのアプリケーションシステムは通常「キャプチャアプリケーション」と称される。上記プロパティのリソースとして、例えばWebカメラであるならば、「(画像の)明るさ」や「(画像の)コントラスト」などが挙げられる。
【0006】
しかし、USB制御装置としてのWebカメラは、装備する機能が増加することが十分考えられる。また、そもそも、Webカメラが装備する機能に対して、プロパティページで設定するべき属性が十分に対応し切れていないことも想定される。これらのことから、拡張する機能に対応できる属性設定アプリケーションシステムが、簡易且つフレキシブルに開発されることが望まれている。
【特許文献1】特表2002−510416号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、USB制御装置の機能(プロパティ)を拡張し得る状況であるときに、ホストコンピュータで適切にそれら拡張に係る属性を設定可能とし、設定された属性がファームウェアにより随時ダウンロードされ得るUSB制御装置機能拡張アプリケーションシステム、及びファームウェアダウンロードドライバシステムを、ホストコンピュータに構築することを目的とする。更に、ファームウェアダウンロードドライバシステムにおいて、必要に応じて通信バスに関するコマンドを送受信し、又は、付加的にファームウェアの一部若しくは全部を送信することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項1に記載の外部装置機能拡張アプリケーションシステムは、
ホストコンピュータと接続された外部装置の制御を行い、該ホストコンピュータから該外部装置にダウンロードされるファームウェアに対して、外部装置に係るプロパティ値を設定するホストコンピュータにおける外部装置機能拡張アプリケーションシステムであって、
システム起動時に、特定のオブジェクトが形成されると呼び出されるフック関数として、所定のプロパティ値の設定のためのシーケンス処理が登録されることを特徴とする。
【0009】
本発明に係る請求項2に記載の外部装置機能拡張アプリケーションシステムは、
上記特定のオブジェクトが、ウインドウであることを特徴とする請求項1に記載の外部装置機能拡張アプリケーションシステムである。
【0010】
本発明に係る請求項3に記載の外部装置機能拡張アプリケーションシステムは、
上記の所定のプロパティ値の設定のためのシーケンス処理が、
上記所定のプロパティ値を取得するためのページの設定を行うことと、
上記ページにより取得された上記所定のプロパティ値により上記ファームウェアの内容を更新する条件を設定することと
を含むことを特徴とする請求項1又は請求項2に記載の外部装置機能拡張アプリケーションシステムである。
【0011】
本発明に係る請求項4に記載のファームウェアダウンロードドライバシステムは、
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムであって、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる特定関数の設定値に応じて、
(1)通信バスに関するコマンドの内容を決定して送信し、若しくは受信し、又は、
(2)ファームウェアの一部若しくは全部の内容を設定して送信する
ことを特徴とする。
【0012】
本発明に係る請求項5に記載のコンピュータプログラムは、
ホストコンピュータと接続された外部装置の制御を行い、該ホストコンピュータから該外部装置にダウンロードされるファームウェアに対して、外部装置に係るプロパティ値を設定するホストコンピュータにおける外部装置機能拡張アプリケーションシステムにおいて稼動するコンピュータプログラムであって、
外部装置機能拡張アプリケーションシステム起動時に、特定のオブジェクトが形成されると呼び出されるフック関数として、所定のプロパティ値の設定のためのシーケンス処理を登録する工程を、ホストコンピュータに行わせることを特徴とする。
【0013】
本発明に係る請求項6に記載のファームウェアダウンロードドライバシステムは、
上記特定のオブジェクトが、ウインドウであることを特徴とする請求項5に記載のコンピュータプログラムである。
【0014】
本発明に係る請求項7に記載のファームウェアダウンロードドライバシステムは、
上記の所定のプロパティ値の設定のためのシーケンス処理が、
上記所定のプロパティ値を取得するためのページの設定を行う処理と、
上記ページにより取得された上記所定のプロパティ値により上記ファームウェアの内容を更新する条件を設定する処理と
を含むことを特徴とする請求項5又は請求項6に記載のコンピュータプログラムである。
【0015】
本発明に係る請求項8に記載のファームウェアダウンロードドライバシステムは、
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムにおいて稼動するコンピュータプログラムであって、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる特定関数の設定値に応じて、
(1)通信バスに関するコマンドの内容を決定して送信する処理、若しくは受信する処理、又は、
(2)ファームウェアの一部若しくは全部の内容を設定して送信する処理
を、ホストコンピュータに行わせることを特徴とする。
【発明の効果】
【0016】
本発明を利用することにより、拡張する外部装置の属性に対応できる属性設定アプリケーションシステムが簡易且つフレキシブルに開発され得るようになる。また、外部装置へのファームウェアダウンロード時に、ホストコンピュータにおける処理要求を監視することにより、通信バスに関するコマンドを送受信し、又は、付加的にファームウェアの一部若しくは全部を送信することができる。
【発明を実施するための最良の形態】
【0017】
以下、図面を参照して本発明に係る好適な実施形態を説明する。なお、以下の説明では、ホストコンピュータのOSを、「Windows XP」(登録商標)(Microsoft社製)としている。このことは例示に過ぎず、他のOSであっても本発明は勿論適用可能であり、このことが本発明の内容を限定するものではない。また、ホストコンピュータに接続する外部装置であるUSB制御装置の例として、デジタルカメラ(ネットワークカメラ、若しくはWebカメラ)を取り上げている。このことも本発明の内容を限定するものではない。
【0018】
[第1の実施形態]
図1(1)は、USB制御装置としてのデジタルカメラ6がUSB8及びUSBポート10を介してホストコンピュータ4に接続する様子を概略示す。図1(2)は、図1(2)を更に詳細にした図であり、特に本発明の第1の実施形態に係るファームウェアダウンロードドライバ及びカメラ機能拡張アプリケーションの構成を示す図である。
【0019】
ファームウェアダウンロードドライバは、カーネルに含まれるUVC標準ドライバに付属する。ファームウェアダウンロードドライバは、本発明に係るファームウェアダウンロード機能を行う。
【0020】
また、アプリケーションとして、元来装備されているキャプチャアプリケーションだけでなく、本発明に係るカメラ機能拡張アプリケーションが用意されている。図1(2)に示すように、キャプチャアプリケーションは、UVC標準ドライバの内容を規定しており、例えば、プロパティページによるリソースのデータの設定・格納を行う。カメラ機能拡張アプリケーションは、ファームウェアダウンロードドライバの内容を規定しており、例えば次のような機能を実施する。
【0021】
まず、(1)オブジェクトとしてのウインドウ作成の監視を行う。また、(2)拡張プロパティページの追加登録を行う。また、(3)拡張プロパティページ処理を行う。更に、(4)ファームウェアダウンロードドライバ制御を行う(図1(2)参照)。このファームウェアダウンロードドライバ制御には、「USBコマンド送受信」と「ファームウェアアップデート」とが少なくとも含まれる。上記の「拡張プロパティページ」は、本発明により、キャプチャアプリケーションのプロパティページに、追加されるページである。
【0022】
上記の図1(2)におけるファームウェアダウンロードドライバ、及びカメラ機能拡張アプリケーションの処理について、次に説明する。
【0023】
まず、ファームウェアダウンロードドライバの処理の概要を、図2に基づいて示す。概略、ファームウェアダウンロードドライバは、起動直後にファームウェアの送信を行う他、(カメラ機能拡張)アプリケーションからの要求に従って、USBコマンドの送受信と一時的に使用されるファームウェアのアップデートとを行う。また、デジタルカメラなどをUSBデバイス(即ち、USB制御装置)として動作させるように、標準的なUSBデバイスに関する処理(電源管理等)も行う。
【0024】
図2に示すように、ファームウェアダウンロードドライバが起動される(S02)と、USBデバイス(デジタルカメラ)をUSBデバイスとして管理するためのデータを作成し登録する(S04)。次に、USBインタフェースを設定し(S06)、ファームウェアを送信する(S08)。
【0025】
そして、処理要求に対して待機する(S10)。処理要求が無ければ待機を続ける。処理要求が有れば、次に処理要求の内容を判断する(S12)。処理要求の内容の判断では、「Windows XP」(登録商標)のカーネルに備わる標準的関数であって、ドライバに指示を与える関数である「DeviceIoControl」が利用されることが好ましい。従って、S12において、「DeviceIoControl」に処理番号が有るか否かが先ず判断される。
【0026】
S12にて、「DeviceIoControl」に処理番号が無ければ、標準的なUSBデバイスに関する処理を行うということになる(S14)。S14の「該当処理」には、プラグアンドプレイ処理/電源管理処理/ドライバオブジェクトの作成/ドライバオブジェクトの破棄/ドライバのアンロード、などの一般的な処理が含まれる。「該当処理」がなされると、再び処理要求に対する待機状態となる(S10)。
【0027】
S14にて、「DeviceIoControl」に処理番号が有ると判断されれば、更にUSBコマンド送受信の要求か否かが処理要求番号から判断される(S16)。USBコマンド送受信の要求であるならば、処理要求番号に対応するUSBコマンドの送受信が行われる(S18)。USBコマンド送受信の要求で無いならば、一時的に使用されるファームウェアのアップデートのための送信要求であることになり、処理要求番号に対応する(アップデートに関わる)ファームウェア送信が行われる(S20)。
【0028】
USBコマンドの送受信(S18)、若しくは(アップデートに関わる)ファームウェア送信(S20)がなされると、やはり再び処理要求に対する待機状態となる(S10)。
【0029】
以上が、ファームウェアダウンロードドライバの処理の概要である。
【0030】
続いて、カメラ機能拡張アプリケーションの処理の概要を、図3に基づいて示す。カメラ機能拡張アプリケーションは、「Windows XP」(登録商標)におけるウインドウ作成に対するフックへ処理関数(フック関数)を登録することが主な処理となる。ここでのフックとは、任意の処理タイミングに対して呼び出される関数を登録することにより、機能を拡張する機能を示す。
【0031】
まず、カメラ機能拡張アプリケーションが起動される(S30)と、カメラプロパティダイアログ検出シーケンスを初期化する(S32)。カメラプロパティダイアログ検出シーケンスについては後で詳しく説明する。
【0032】
次に、「Windows XP」(登録商標)がウインドウを作成するときに呼び出される関数(フック関数)を登録する(S34)。このフック関数は図4に示すものである。フック関数については後で説明する。
【0033】
カメラ機能拡張アプリケーションは、終了処理がなされるまで、上記フック関数を登録した状態を維持する(S36)。
【0034】
終了処理が為されると、「Windows XP」(登録商標)がウインドウを作成するときに呼び出される関数(フック関数)の登録を破棄し(S38)、処理を終了する。
【0035】
以上が、カメラ機能拡張アプリケーションの処理の概要である。
【0036】
続いて、ウインドウが作成されると呼び出されるように登録される本発明に係るフック関数の処理概要を、図4に基づいて示す。この関数はオブジェクトであるウインドウが作成される度に呼び出される。また、この関数が実行されるプロセスはウインドウが作成されるアプリケーションのプロセスである。
【0037】
フック関数は、ウインドウの作成の検出を待機する(S62)。ウインドウの作成が検出されると(S62・YES)、カメラプロパティダイアログ検出シーケンス処理(S64)を行う。カメラプロパティダイアログ検出シーケンスについては後で詳しく説明する。処理後、再びウインドウの作成の検出を待機する(S62)。
【0038】
以上が、カメラ機能拡張アプリケーションの処理の概要である。
【0039】
次に、「カメラプロパティダイアログ検出シーケンス処理」の内容を説明する。まず、全体を以下の表1〜表4で示す。
【0040】
【表1】

【0041】
【表2】

【0042】
【表3】

【0043】
【表4】

【0044】
[シーケンス1について]
シーケンス1は、前提条件が無く処理される。シーケンス1では、以下の条件に基づき処理を分ける。
(1)新しいウインドウが「SysTabControl32」クラスである。
(2)親ウインドウがダイアログウインドウである。
(3)兄弟ウインドウが「OK」「Cancel」「Apply」「Help」の各IDを持つボタンウインドウである。
【0045】
ここでの「SysTabControl32」クラスは、「Windows XP」(登録商標)が備えるウインドウのクラスであり、タブを作成し管理するウインドウのクラスである。
【0046】
上記条件が全て「正」であれば、以下の処理を行う。
(4)「画像の調整」プロパティページのリソース情報を取得する。
(5)プロセスIDを取得する。
(6)シーケンス2へ移行する。
【0047】
ここでの「「画像の調整」プロパティページ」とは、デジタルカメラの画像調整のためのプロパティのページの例である。リソース情報とは、そのページ例における調整項目であり、前述の「(画像の)明るさ」や「(画像の)コントラスト」が含まれる。また、「プロセスID」とはアプリケーションに付される固有番号である。シーケンス1では、リソース情報及びプロセスIDの取得が主たる処理となる。
【0048】
また、上記条件のいずれかでも「否」であれば、
(7)シーケンス1を続行することになる。
【0049】
[シーケンス2について]
シーケンス2は、
(1)シーケンス1で取得されたプロセスIDと同一のプロセスである
という前提条件の下で、シーケンス1を受けて行われる。
【0050】
シーケンス2では、以下の条件に基づき処理を分ける。
(2)新しいウインドウがダイアログウインドウ(ダイアログに関するウインドウ)である。
【0051】
上記条件が「正」であれば、以下の処理を行う。
(3)シーケンス3へ移行する。
【0052】
上記条件が「否」であれば、以下の処理を行う。
(4)シーケンス1へ移行する。
【0053】
つまり、シーケンス2では、プロセスIDが同じという状況の下で、作成されたウインドウが「ダイアログウインドウ(ダイアログに関するウインドウ)」となったならば、シーケンス3へ移行する、という処理を行うことになる。
【0054】
[シーケンス3について]
シーケンス3は、
(1)シーケンス1で取得されたプロセスIDと同一のプロセスである
という前提条件の下で、シーケンス2を受けて行われる。
【0055】
シーケンス3では、以下の条件(条件3−1)に基づき処理を分ける。
(2)新しいウインドウが「画像の調整」プロパティページのリソースであり、ウインドウの種類/タイトル/サイズについて一致するか判定を行う
【0056】
上記条件(条件3−1)が「否」であれば、
(3)シーケンス1へ移行する。
【0057】
上記条件(条件3−1)が「正」であれば、更に以下の条件(条件3−2)に基づいて処理を分ける。
(4)(「画像の調整」プロパティページの)全リソースに対応するウインドウ作成が完了している。
【0058】
つまり、全リソースに対応するウインドウ作成が完了している状況で、シーケンス3の主たる処理が行われることになる。
【0059】
上記条件(条件3−2)が「正」であれば、以下の処理を行う。
(5)拡張プロパティページを追加する。
(6)シーケンス1で取得した親ウインドウのメッセージ処理「ウインドウ破棄」に当シーケンスのリセット処理を追加する。
(7)「Apply」ボタンのメッセージ処理「左マウスボタン押下」に選択中のプロパティが拡張プロパティの場合、更新要求メッセージを送信する処理を追加する。
(8)シーケンス4へ移行する。
【0060】
拡張プロパティページは、デジタルカメラの拡張機能に対応するプロパティの値を具体的に設定するためのページである。キャプチャアプリケーションが元来提供するプロパティページに、付加的に追加される。また、「Apply」ボタンは、プロパティページに具体的に設定された内容につき、メッセージ処理「左マウスボタン押下」により更新要求メッセージを送信するウインドウ(オブジェクト)である。
【0061】
上記条件が「否」であれば、以下の処理を行う。
(9)判定対象のリソースを1つ進める。
(10)シーケンス3を続行する。
【0062】
[シーケンス4について]
シーケンス4は、
(1)シーケンス1で取得されたプロセスIDと同一のプロセスである、
(2)新しいウインドウがダイアログウインドウである、
(3)新しいウインドウの親ウインドウがシーケンス1で取得された親ウインドウと同一である、
という前提条件の下で、シーケンス3を受けて行われる。
【0063】
シーケンス3では以下の処理を行う。
(4)作成されるウインドウのサイズを全プロパティページの最大サイズに調整する。
このことにより、拡張されたページも含めて全てのウインドウが、正しく表示されることになる。
【0064】
[その他の実施形態]
以上において、本発明の第1の実施形態に係るファームウェアダウンロードドライバ及びカメラ機能拡張アプリケーションの内容を示した。本発明は上記実施形態に限定されるものではない。例えば、USB制御装置として、デジタルカメラ以外の機器にも利用できる。また、ホストコンピュータのOSが「Windows XP」(登録商標)以外のものであっても、勿論本発明は適用可能である。
【図面の簡単な説明】
【0065】
【図1】USB制御装置としてのデジタルカメラ6がUSBバス8及びUSBポート10を介してホストコンピュータ4に接続する様子を概略示す図(図1(1))と、本発明の第1の実施形態に係るファームウェアダウンロードドライバ及びカメラ機能拡張アプリケーションの構成を示す図(図1(2))である。
【図2】本発明の第1の実施形態に係るファームウェアダウンロードドライバの処理の概要である。
【図3】本発明の第1の実施形態に係るカメラ機能拡張アプリケーションの処理の概要である。
【図4】本発明の第1の実施形態に係るフック関数の処理概要である。
【符号の説明】
【0066】
4・・・ホストコンピュータ、6・・・デジタルカメラ、8・・・USB、10・・・USBポート。


【特許請求の範囲】
【請求項1】
ホストコンピュータと接続された外部装置の制御を行い、該ホストコンピュータから該外部装置にダウンロードされるファームウェアに対して、外部装置に係るプロパティ値を設定するホストコンピュータにおける外部装置機能拡張アプリケーションシステムにおいて、
システム起動時に、特定のオブジェクトが形成されると呼び出されるフック関数として、所定のプロパティ値の設定のためのシーケンス処理が登録されることを特徴とする外部装置機能拡張アプリケーションシステム。
【請求項2】
上記特定のオブジェクトが、ウインドウであることを特徴とする請求項1に記載の外部装置機能拡張アプリケーションシステム。
【請求項3】
上記の所定のプロパティ値の設定のためのシーケンス処理が、
上記所定のプロパティ値を取得するためのページの設定を行うことと、
上記ページにより取得された上記所定のプロパティ値により上記ファームウェアの内容を更新する条件を設定することと
を含むことを特徴とする請求項1又は請求項2に記載の外部装置機能拡張アプリケーションシステム。
【請求項4】
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムにおいて、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる特定関数の設定値に応じて、
(1)通信バスに関するコマンドの内容を決定して送信し、若しくは受信し、又は、
(2)ファームウェアの一部若しくは全部の内容を設定して送信する
ことを特徴とするファームウェアダウンロードドライバシステム。
【請求項5】
ホストコンピュータと接続された外部装置の制御を行い、該ホストコンピュータから該外部装置にダウンロードされるファームウェアに対して、外部装置に係るプロパティ値を設定するホストコンピュータにおける外部装置機能拡張アプリケーションシステムにおいて稼動するコンピュータプログラムであって、
外部装置機能拡張アプリケーションシステム起動時に、特定のオブジェクトが形成されると呼び出されるフック関数として、所定のプロパティ値の設定のためのシーケンス処理を登録する工程を、ホストコンピュータに行わせることを特徴とするコンピュータプログラム。
【請求項6】
上記特定のオブジェクトが、ウインドウであることを特徴とする請求項5に記載のコンピュータプログラム。
【請求項7】
上記の所定のプロパティ値の設定のためのシーケンス処理が、
上記所定のプロパティ値を取得するためのページの設定を行う処理と、
上記ページにより取得された上記所定のプロパティ値により上記ファームウェアの内容を更新する条件を設定する処理と
を含むことを特徴とする請求項5又は請求項6に記載のコンピュータプログラム。
【請求項8】
ホストコンピュータと接続された外部装置の制御を行うファームウェアを、該ホストコンピュータから該外部装置にダウンロードするための、ホストコンピュータに搭載されたファームウェアダウンロードドライバシステムにおいて稼動するコンピュータプログラムであって、
ファームウェアをダウンロードする際に、オペレーティングシステムのカーネルにて発せられる特定関数の設定値に応じて、
(1)通信バスに関するコマンドの内容を決定して送信する処理、若しくは受信する処理、又は、
(2)ファームウェアの一部若しくは全部の内容を設定して送信する処理
を、ホストコンピュータに行わせることを特徴とするコンピュータプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2007−213505(P2007−213505A)
【公開日】平成19年8月23日(2007.8.23)
【国際特許分類】
【出願番号】特願2006−35420(P2006−35420)
【出願日】平成18年2月13日(2006.2.13)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】