図1は実施の形態に係る通信システム1の構成を示す図である。本実施の形態に係る通信システム1は、例えば、アプリケーションを実行する情報処理システムであって、情報処理装置2と、当該情報処理装置2と無線通信を行う無線通信端末3とを備えている。以後、通信システム1を「情報処理システム1」と呼ぶことがある。
<情報処理装置について>
情報処理装置2は、コントローラ20と、データ処理装置21とを備えている。コントローラ20は、情報処理システム1全体の動作を統括的に管理する。コントローラ20は、データ処理装置21と有線接続されており、データ処理装置21と有線通信を行う。またコントローラ20は、テレビ受像機100と接続される。コントローラ20は、テレビ受像機100に対して、アプリケーションについての映像信号及び音声信号を送信する。テレビ受像機100は、受信した映像信号及び音声信号に基づいて、アプリケーションについての画像(静止画像及び動画像)を表示するとともに、アプリケーションについての音声等の音を出力する。
データ処理装置21は、データ変換部210と、無線通信端末3と無線通信を行う無線通信部212と、記憶部213とを備えている。記憶部213は、例えば、不揮発性の半導体メモリを備えている。
データ変換部210は、コントローラ20と有線通信を行う。コントローラ20とデータ変換部210とは、例えば、USB(Universal Serial Bus)に準拠した通信(以後、「USB通信」と呼ぶことがある)を行う。また、無線通信部212は、無線通信端末3と、例えばWi−Fi(Wireless Fidelity)に準拠した無線通信を行う。
データ変換部210は、USBコントローラ211を備えており、このUSBコントローラ211によって、コントローラ20とUSB通信を行う。つまり、USBコントローラ211は、コントローラ20と有線通信を行う有線通信部として機能する。本実施の形態では、コントローラ20がUSBホストであって、データ変換部210がUSBデバイスとなっている。
データ変換部210は、コントローラ20から送信される、USBに準拠したデータ(パケット)を、Wi−Fiに準拠したデータ(パケット)に変換し、それによって得られたデータ(パケット)を無線通信部212に出力する。また、データ変換部210は、無線通信部212が無線通信端末3から受信する、Wi−Fiに準拠したデータ(パケット)を、USBに準拠したデータ(パケット)に変換し、それによって得られたデータ(パケット)をコントローラ20に送信する。
無線通信部212は、データ変換部210から出力されるデータを含む送信信号を生成する。そして、無線通信部212は、生成した送信信号を無線送信する。また無線通信部212は、無線通信端末3から無線通信によって送信される送信信号を受信し、当該送信信号に含まれるデータを取得する。そして、無線通信部212は、取得したデータをデータ変換部210に出力する。
<無線通信端末について>
無線通信端末3は、端末制御部30と、表示部31と、無線通信部32と、カメラ33と、マイク34と、入力部35と、記憶部36と、スピーカ37とを備えている。記憶部36は、例えば、不揮発性の半導体メモリを備えている。端末制御部30は、無線通信端末3全体の動作を統括的に管理する。
無線通信部32は、情報処理装置2の無線通信部212と、例えばWi−Fiに準拠した無線通信を行う。無線通信部32は、端末制御部30から出力されるデータを含む送信信号を生成し、当該送信信号を無線通信部212に送信する。また無線通信部32は、無線通信部212が送信する送信信号を受信し、当該送信信号に含まれるデータを取得して端末制御部30に出力する。なお、無線通信部32と無線通信部212とは、他の無線通信規格、例えばBluetooth(登録商標)に準拠して無線通信を行っても良い。
カメラ33は、静止画像及び動画像を撮像することが可能である。カメラ33は、撮像した画像を示す画像データ(静止画像データあるいは動画像データ)を端末制御部30に出力する。
マイク34は、無線通信端末3の外部から入力される音声等の音を音データに変換し、当該音データを端末制御部30に出力する。
入力部35は、ユーザの入力を受け付けて、当該入力に応じたデータを端末制御部30に出力する。入力部35は、例えば、タッチパネルと、それ以外のセンサーと、押下式の操作ボタンとを備えている。
表示部31は、例えば、液晶表示ディスプレイであって、端末制御部30から入力される画像データに基づいて、当該画像データが示す画像を表示する。表示部31は、静止画像及び動画像を表示する。
スピーカ37は、端末制御部30から入力される音データを音に変換し、当該音を外部に出力する。
端末制御部30は、無線通信部32から出力されるデータのうち、音データについてはスピーカ37に出力し、画像データについては表示部31に出力する。また端末制御部30は、カメラ33、マイク34及び入力部35から出力されるデータを無線通信部32に出力する。また端末制御部30は、カメラ33から出力される画像データを表示部31に出力する。
なお、カメラ33から出力される画像データは、端末制御部30及び無線通信部32を通じて、情報処理装置2に入力されることがある。情報処理装置2では、入力された画像データが、データ処理装置21を通じてコントローラ20に入力される。コントローラ20は、入力された画像データを使用してアプリケーションに応じた画像データ(映像信号)を生成して、当該画像データをデータ処理装置21を通じて無線通信端末3に入力する。無線通信端末3では、入力された画像データが無線通信部32及び端末制御部30を通じて表示部31に入力される。
記憶部36には、カメラ33及びマイク34についてのすべての設定値が記憶されている。端末制御部30は、記憶部36内の設定値に基づいて、カメラ33及びマイク34を制御する。カメラ33の設定値としては、例えば、電源のオン/オフを示す設定値、撮像モードが白黒モード及びカラーモードのどちらであるかを示す設定値、露光時間、解像度、ホワイトバランスの設定値、γ値などがある。またマイク34の設定値としては、例えば、電源のオン/オフを示す設定値、音量、ミュートにするか否かを示す設定値などがある。
以上のような構成を有する情報処理システム1においては、ユーザがアプリケーションを楽しむ場合には、無線通信端末3を手に持った状態で、無線通信端末3の表示部31の表示あるいはテレビ受像機100の表示を見ながら、無線通信端末3の入力部35に対して入力を行う。
<コントローラとデータ処理装置と無線通信端末との間での通信について>
本実施の形態に係る情報処理システム1では、データ処理装置21が、一種の制御装置であるコントローラ20と、一種の入力装置(入力端末)である無線通信端末3との通信を仲介する通信仲介装置として機能する。コントローラ20は、データ処理装置21を通じて、無線通信端末3を制御する。
また本実施の形態に係る情報処理システム1では、無線通信端末3のカメラ33、マイク34及び入力部35は、実際にはUSB通信することはできないものの、データ処理装置21の働きにより、仮想のUSBデバイスとして取り扱われる。これにより、コントローラ20は、無線通信部212と無線通信部32との間の無線通信を意識することなく、カメラ33、マイク34及び入力部35がUSBデバイスとして有線接続された場合と同様にして、カメラ33、マイク34及び入力部35と通信することが可能となっている。
情報処理システム1においては、USBでのデバイスクラス(単に「クラス」と呼ばれることもある)として、CDC(communication device class)、HID(human interface device)、UAC(USB audio class)及びUVC(USB video class)が使用される。そして、情報処理システム1では、CDCに応じたエンドポイント(以後、「CDCエンドポイント」と呼ぶ)と、HIDに応じたエンドポイント(以後、「HIDエンドポイント」と呼ぶ)と、UACに応じたエンドポイント(「UACエンドポイント」と呼ぶ)と、UVCに応じたエンドポイント(「UVCエンドポイント」と呼ぶ)とが用意されている。コントローラ20と、データ処理装置21、詳細にはデータ変換部210との間においては、これらのエンドポイントが使用されてデータ転送が行われる。以後、当該データ転送を「USBデータ転送」と呼ぶ。
<USBデータ転送について>
CDCエンドポイントを用いたデータ転送では、バルク転送が使用される。バルク転送とは、データ保証型の非同期な転送方式である。本実施の形態では、コントローラ20からデータ処理装置21のデータ変換部210に向けた制御データ、コントローラ20から無線通信端末3の端末制御部30に向けた制御データ、データ変換部210からコントローラ20に向けた制御データ及び端末制御部30からコントローラ20に向けた制御データが、CDCエンドポイントを用いてデータ転送される。なお、制御対象装置であるカメラ33及びマイク34を制御するための制御データは、CDCエンドポイントを用いてデータ転送されず、後述のクラスリクエストによってデータ転送される。
HIDエンドポイントを用いたデータ転送では、インターラプト転送が使用される。インターラプト転送とは、少量データを周期的に転送する転送方式である。本実施の形態では、入力部35から出力されるデータが、HIDエンドポイントを用いてデータ転送される。
UACエンドポイントを用いたデータ転送では、アイソクロナス転送が使用される。アイソクロナス転送とは、リアルタイム性を重視した転送方式である。本実施の形態では、マイク34から出力される音データが、UACエンドポイントを用いてデータ転送される。
UVCエンドポイントを用いたデータ転送では、アイソクロナス転送が使用される。本実施の形態では、カメラ33から出力される画像データが、UVCエンドポイントを用いてデータ転送される。
図2はUSBデータ転送の様子を示す図である。コントローラ20は、データ変換部210向けの制御データをUSB送信する場合には、CDCエンドポイントを用いてデータ変換部210に送信する。また、コントローラ20は、無線通信端末3の端末制御部30向けの制御データをUSB送信する場合には、CDCエンドポイントを用いてデータ変換部210に送信する。データ変換部210は受信した、端末制御部30向けの制御データを無線通信部212に入力する。無線通信部212は、入力された制御データを含む送信信号を無線通信端末3に無線通信によって送信する。無線通信端末3では、無線通信部32が無線通信部212からの送信信号を受信し、当該送信信号に含まれる制御データを取得する。そして、無線通信部32は、取得した制御データを端末制御部30に出力する。
無線通信端末3から情報処理装置2に制御データが転送される際には、端末制御部30は、当該制御データを無線通信部32に入力する。無線通信部32は、入力された制御データを含む送信信号を無線通信にて送信する。情報処理装置2では、データ処理装置21の無線通信部212が無線通信部32からの送信信号を受信し、当該送信信号に含まれる制御データを取得する。そして、無線通信部212は取得した制御データをデータ変換部210に出力する。データ変換部210は、入力された制御データをCDCエンドポイントを用いてコントローラ20に送信する。
無線通信端末3から、入力部35から出力されるデータが情報処理装置2に転送される際には、端末制御部30は、入力部35から出力されるデータを無線通信部32に出力する。無線通信部32は、端末制御部30からのデータを含む送信信号を無線通信にて送信する。情報処理装置2では、無線通信部212が無線通信部32からの送信信号を受信し、当該送信信号に含まれるデータを取得する。そして、無線通信部212は取得したデータをデータ変換部210に出力する。データ変換部210は、入力されたデータをHIDエンドポイントを用いてコントローラ20に送信する。
無線通信端末3から、マイク34から出力される音データが情報処理装置2に転送される際には、端末制御部30は、マイク34から出力される音データを無線通信部32に出力する。無線通信部32は、端末制御部30からの音データを含む送信信号を無線通信にて送信する。情報処理装置2では、無線通信部212が無線通信部32からの送信信号を受信し、当該送信信号に含まれる音データを取得する。そして、無線通信部212は取得した音データをデータ変換部210に出力する。データ変換部210は、入力された音データをUACエンドポイントを用いてコントローラ20に送信する。
無線通信端末3から、カメラ33から出力される画像データが情報処理装置2に転送される際には、端末制御部30は、カメラ33ら出力される画像データを無線通信部32に出力する。無線通信部32は、端末制御部30からの画像データを含む送信信号を無線通信にて送信する。情報処理装置2では、無線通信部212が無線通信部32からの送信信号を受信し、当該送信信号に含まれる画像データを取得する。そして、無線通信部212は取得した画像データをデータ変換部210に出力する。データ変換部210は、入力された画像データをUVCエンドポイントを用いてコントローラ20に送信する。
このように、コントローラ20と無線通信端末3との間に、コントローラ20とはUSB通信を行い、無線通信端末3とは無線通信を行うことが可能なデータ処理装置21を設けることによって、コントローラ20は、USB通信を行うことができない無線通信端末3との間でデータ通信が可能となる。
<クラスリクエストについて>
情報処理システム1では、コントローラ20は、デバイスクラスに固有のクラスリクエストを使用して、カメラ33及びマイク34のそれぞれを個別に制御することが可能となっている。クラスリクエストは、エンドポイント0が用いられたコントロール転送によって実施される。
クラスリクエストには、大別すると、Get系クラスリクエストとSet系クラスリクエストの2種類が存在する。Get系クラスリクエストは、USBデバイスの設定値の取得要求である。本実施の形態では、コントローラ20は、仮想USBデバイスであるカメラ33の設定値を取得したいときに、カメラ33の設定値の取得要求を示すGet系クラスリクエストを出力する。またコントローラ20は、仮想USBデバイスであるマイク34の設定値を取得したいときに、マイク34の設定値の取得要求を示すGet系クラスリクエストを出力する。
一方で、Set系クラスリクエストは、USBデバイスの設定要求である。本実施の形態では、コントローラ20は、仮想USBデバイスであるカメラ33を設定したいときに、カメラ33の設定値を含むSet系クラスリクエストを出力する。またコントローラ20は、仮想USBデバイスであるマイク34を設定したいときに、マイク34の設定値を含むSet系クラスリクエストを出力する。
データ処理装置21のデータ変換部210は、機能ブロックとして、リクエスト処理タスクを実行するリクエスト処理部210aと、同期タスクを実行する同期処理部210bとを備えている。リクエスト処理タスクでは、コントローラ20からのクラスリクエストが処理される。同期タスクでは、コントローラ20からのSet系クラスリクエストに含まれる設定値が記憶部213に記憶されるとともに、当該設定値が無線通信端末3に送信される。また同期タスクでは、コントローラ20からのGet系クラスリクエストに応じて、記憶部213内の設定値が読み出される。
<Get系クラスリクエストシーケンスについて>
図3はコントローラ20がGet系クラスリクエストを出力する場合の情報処理システム1の動作を説明するための図である。本実施の形態では、カメラ33及びマイク34についての設定値のすべてが、無線通信端末3の記憶部36だけではなく、情報処理装置2のデータ処理装置21の記憶部213にも記憶されている。そして、コントローラ20からGet系クラスリクエストが出力されると、データ処理装置21が記憶部213内に存在する、当該Get系クラスリクエストに応じた設定値をコントローラ20に出力する。以下にGet系クラスリクエストシーケンスについて図3を参照して詳細に説明する。
図3に示されるように、コントローラ20は、設定値の取得対象の仮想USBデバイスについての設定値の取得要求を示すGet系クラスリクエストを、USB通信によってデータ処理装置21のデータ変換部210に送信する。データ変換部210では、USBコントローラ211がコントローラ20からのGet系クラスリクエストを受信する。USBコントローラ211においてGet系クラスリクエストが受信されると、リクエスト処理部210aが、同期処理部210bに対して、当該Get系クラスリクエストが受信されたことを通知する。同期処理部210bは、受信されたGet系クラスリクエストに応じた設定値を記憶部213から読み出してリクエスト処理部210aに渡す。例えば、受信されたGet系クラスリクエストがカメラ33のγ値の取得要求を示す場合には、同期処理部210bは、記憶部213からカメラ33のγ値を読み出してリクエスト処理部210aに渡す。リクエスト処理部210aは受け取った設定値をUSBコントローラ211からコントローラ20に送信する。
このように、本実施の形態に係るデータ処理装置21では、記憶部213に無線通信端末3の設定値、具体的には無線通信端末3のカメラ33等の仮想USBデバイスの設定値が記憶されている。したがって、データ処理装置21では、有線通信部として機能するUSBコントローラ211は、コントローラ20から設定値の取得要求を受信すると、記憶部213内の当該設定値を送信することができる。よって、コントローラ20は、取得要求を送信すると、すぐに所望の設定値を取得することができる。
これに対して、本実施の形態とは異なり、記憶部213内に仮想USBデバイスの設定値が記憶されていない場合には、コントローラ20からGetクラスリクエストが送信されると、無線通信端末3の記憶部36内の設定値がコントローラ20に送信される必要がある。この場合には、コントローラ20は、所望の設定値をすぐに取得することが困難となる。図4は、この場合の情報処理システム1の動作を説明するための図である。
図4に示される例では、コントローラ20が、設定値の取得対象の仮想デバイスについての設定値の取得要求を示すGet系クラスリクエストを送信すると、データ処理装置21では、リクエスト処理部210aが、同期処理部210bに対して、当該Get系クラスリクエストが受信されたことを通知する。同期処理部210bは、Get系クラスリクエストが受信されたことが通知されると、無線通信端末3に対して、当該Get系クラスリクエストに応じた設定値の取得要求を無線通信にて送信する。Get系クラスリクエストに応じた設定値の取得要求を無線通信部32で受信した無線通信端末3では、端末制御部30が記憶部36から当該設定値を読み出して無線通信部32に出力する。無線通信部32は、無線通信によって、入力された設定値をデータ処理装置21に送信する。データ処理装置21では、同期処理部210bが、無線通信端末3から送信されてきた設定値をリクエスト処理部210aに渡す。リクエスト処理部210aは、同期処理部210bから設定値を受け取ると、USBコントローラ211から当該設定値を送信する。これにより、コントローラ20は、送信したGet系クラスリクエストに応じた設定値を取得することができる。
このように、データ処理装置21に設定値が記憶されていない場合には、コントローラ20からGet系クラスリクエストが送信されると、無線通信端末3の記憶部36内の設定値が読み出されて無線通信によってデータ処理装置21に送信される。そして、データ処理装置21が、受信した設定値をUSB通信によってコントローラ20に送信する。したがって、データ処理装置21が設定値を記憶する本実施の形態と比較して、コントローラ20が設定値の取得要求を送信してから、当該設定値を取得するまでに必要な時間が大きくなる。よって、コントローラ20は、すぐに所望の設定値を取得することが困難となる。さらに、無線通信端末3からデータ処理装置21への設定値の送信には、有線通信よりも不安定な無線通信が使用されていることから、有線通信が使用される場合と比較して、データ処理装置21が、無線通信端末3から設定値を適切に受信できる可能性が低くなる。その結果、取得要求を送信したコントローラ20が、所望の設定値を適切に取得することができる可能性が低くなる。
これに対して、本実施の形態では、データ処理装置21の記憶部213内に設定値が記憶されていることから、コントローラ20から設定値の取得要求が送信された場合に、無線通信端末3の記憶部36内の設定値を読み出す必要がなくなる。したがって、コントローラ20は、すぐに所望の設定値を取得することができる。さらに、データ処理装置21からコントローラ20への設定値の送信には有線通信が使用されていることから、コントローラ20が、データ処理装置21から設定値を適切に受信できる可能性が高くなる。よって、コントローラ20は所望の設定値を確実に取得することができる。
<Set系クラスリクエストシーケンスについて>
図5はコントローラ20がSet系クラスリクエストを出力する場合の情報処理システム1の動作を説明するための図である。図5に示されるように、コントローラ20は、設定対象の仮想USBデバイスの設定値を含むSet系クラスリクエスト(設定要求)をUSB通信によってデータ処理装置21のデータ変換部210に送信する。データ変換部210では、USBコントローラ211がコントローラ20からのSet系クラスリクエストを受信する。USBコントローラ211においてSet系クラスリクエストが受信されると、リクエスト処理部210aが、同期処理部210bに対して、当該Set系クラスリクエストに含まれる設定値を記憶部213に記憶することを通知する。同期処理部210bは、受信されたSet系クラスリクエストに含まれる設定値を記憶部213に記憶する。このとき、同期処理部210bは、記憶部213内に同じ種類の古い設定値が存在する場合には、当該古い設定値の代わりに、受信されたSet系クラスリクエストに含まれる新しい設定値を記憶する。これにより、記憶部213内の設定値が更新される。
同期処理部210bは、設定値を記憶部213に記憶すると、リクエスト処理部210aに応答を返す。リクエスト処理部210aは、同期処理部210bから応答を受け取ると、同期処理部210bに対して無線通信端末3に設定要求を送信することを命令するためのイベントフラグを設定する。その後、リクエスト処理部210aは、受信されたSet系クラスリクエストに対する応答をUSBコントローラ211からコントローラ20に送信する。コントローラ20は、送信したSet系クラスリクエストに対する応答を受信すると、次のSet系クラスリクエストを送信することが可能となる。
リクエスト処理部210aが、Set系クラスリクエストに対する応答を送信すると、同期処理部210bは、イベントフラグの設定に従って、無線通信端末3に対して、当該Set系クラスリクエストに含まれる設定値を含む設定要求を無線通信部212から送信する。
無線通信端末3では、無線通信部32が、無線通信部212から送信された設定要求を受信して端末制御部30に出力する。端末制御部30は、入力された設定要求に含まれる設定値を記憶部36に記憶する。このとき、端末制御部30は、記憶部36内に同じ種類の古い設定値が存在する場合には、当該古い設定値の代わりに、入力された設定要求に含まれる新しい設定値を記憶する。これにより、記憶部36内の設定値が更新される。
このように、Set系クラスリクエストに含まれる設定値をデータ処理装置21の記憶部213に記憶するとともに、無線通信端末3の記憶部36に記憶することによって、記憶部213内の設定値と、記憶部36内の設定値とが同期する。
無線通信端末3では、端末制御部30は、記憶部36に記憶した設定値に基づいて、当該設定値に対応する仮想USBデバイスを設定する。コントローラ20から送信されたSet系クラスリクエストが、例えば、マイク34の音量の設定値を含むSet系クラスリクエストであれば、無線通信端末3の記憶部36には、マイク34の音量の設定値が記憶される。端末制御部30は、マイク34の音量が記憶部36に記憶された設定値となるように、マイク34の音量を設定する。
端末制御部30は、記憶部36に記憶した設定値に基づいて仮想USBデバイスを設定すると、データ処理装置21からの設定要求に対する肯定的な応答を無線通信部32に送信させる。また、端末制御部30は、記憶部36に記憶した設定値が異常であるなどの何らかの理由により、当該設定値に基づいて仮想USBデバイスを設定できない場合には、データ処理装置21からの設定要求に対する否定的な応答を無線通信部32に送信させる。無線通信部32から送信された応答(肯定的な応答あるいは否定的な応答)はデータ処理装置21の無線通信部212で受信される。これにより、同期処理部210bは、自身が送信した設定要求に含まれる設定値に基づいて仮想USBデバイスが設定されたか否かを把握することができる。
コントローラ20が、送信したSet系クラスリクエストに対する応答を受信した後に、次のSet系クラスリクエストを送信すると、以後、情報処理システム1は上記と同様に動作する。
以上のように、本実施の形態に係るデータ処理装置21では、USBコントローラ211は、無線通信端末3から送信される、データ処理装置21からの設定要求に対する応答が無線通信部212で受信される前に、コントローラ20からのSet系クラスリクエスト(設定要求)に対する応答をコントローラ20に送信する。したがって、コントローラ20は、送信した無線通信端末3の設定要求に対する応答をすぐに受信することができる。よって、コントローラ20は、無線通信端末3についての次の設定要求をすぐに送信することができる。つまり、コントローラ20は、無線通信端末3に対して、設定を行ってからすぐに次の設定を行うことができる。その結果、無線通信端末3に対する制御のリアルタイム性が向上する。
これに対して、図6に示されるように、USBコントローラ211が、無線通信端末3から送信される、データ処理装置21からの設定要求に対する応答が無線通信部212で受信された後に、コントローラ20からのSet系クラスリクエストに対する応答をコントローラ20に送信する場合には、コントローラ20は、送信した設定要求に対する応答をすぐに受信することが困難となる。よって、コントローラ20は次の設定要求をすぐに送信することが難しくなる。その結果、無線通信端末3に対する制御のリアルタイム性を向上することが困難となる。
さらに、無線通信端末3からの応答は、有線通信よりも通信が不安定な無線通信によってデータ処理装置21に送信されることから、データ処理装置21は、無線通信端末3から応答を受信できない可能性がある。したがって、USBコントローラ211が、無線通信端末3から送信される応答が無線通信部212で受信された後に、コントローラ20からのSet系クラスリクエストに対する応答をコントローラ20に送信する場合には、コントローラ20は、送信したSet系クラスリクエストに対する応答を受信することができない可能性がある。コントローラ20は、Set系クラスリクエストに対する応答を、当該Set系クラスリクエストの送信から所定時間経過するまでに受信できない場合には(タイムオーバ)、当該所定時間が経過した後になってはじめて次のSet系クラスリクエストを送信することが可能となることから、コントローラ20は、無線通信端末3についての次の設定要求をすぐに送信することが難しくなる。
本実施の形態では、USBコントローラ211は、無線通信端末3から送信される、データ処理装置21からの設定要求に対する応答が無線通信部212で受信される前に、コントローラ20からのSet系クラスリクエストに対する応答をコントローラ20に送信することから、無線通信端末3からの応答がデータ処理装置21で受信されない場合であっても、コントローラ20は、Set系クラスリクエストに対する応答を受信することが可能となる。さらに、データ処理装置21からの応答は、無線通信よりも通信が安定な有線通信よってコントローラ20に送信されることから、コントローラ20は、当該応答を確実に受信することができる。よって、コントローラ20は、無線通信端末3に対して、設定を行ってからすぐに次に設定を行うことができ、その結果、無線通信端末3に対する制御のリアルタイム性が向上する。
<各種変形例>
<第1変形例>
仮想USBデバイスは、コントローラ20からの設定要求に応じて記憶部36内の設定値を更新するのではなく、記憶部36内の設定値を自動的に更新して、自身の設定を自動的に更新する場合がある。例えば、カメラ33は、露光時間を自動的に調整したり、ホワイトバランスの設定値を自動的に調整したりすることがある。このような場合には、無線通信端末3は、データ処理装置21からの設定要求に対する応答を送信する際に、自動的に更新した記憶部36内の設定値(自動的に調整した設定値)をすべてデータ処理装置21に送信する。そして、データ処理装置21は、無線通信端末3から受信した各設定値を、同じ種類の古い設定値に代えて記憶部213に記憶する。これにより、無線通信端末3が記憶部36内の設定値を自動的に変化させる場合であっても、無線通信端末3の記憶部36内の設定値と、データ処理装置21の記憶部213内の設定値とを同期させることができる。なお、仮想USBデバイスが記憶部36内の設定値を自動的に更新するか否かについては、コントローラ20から送信されるSet系クラスリクエストに含まれる設定値によって決定される。
<第2変形例>
データ処理装置21では、無線通信部212は、USBコントローラ211においてSet系クラスリクエストが受信されない間は、記憶部213内の設定値を含む設定要求を無線通信端末3に繰り返し送信しても良い。図7はその様子を示す図である。
図7に示されるように、本変形例に係るデータ処理装置21では、無線通信端末3に送信した設定要求に対する応答が無線通信部212で受信されると、その受信タイミングからT秒後に、イベントフラグが設定される。Tは例えば1秒に設定される。イベントフラグが設定されると、同期処理部210bは、記憶部213内のすべての設定値を含む設定要求を無線通信部212から送信する。
無線通信部212から送信された設定要求は無線通信部32で受信される。無線通信部32は受信した設定要求を端末制御部30に出力する。端末制御部30は、入力された設定要求に含まれる各設定値を記憶部36に記憶する。そして、端末制御部30は、記憶部36に記憶した各設定値に基づいて、無線通信端末3、具体的に仮想USBデバイスを設定する。
端末制御部30は、記憶部36に記憶した各設定値に基づいて仮想USBデバイスを設定すると、データ処理装置21からの設定要求に対する肯定的な応答を無線通信部32に送信させる。また、端末制御部30は、記憶部36に記憶した設定値に基づいて仮想USBデバイスを設定できない場合には、その設定値を特定するための特定情報とともに、データ処理装置21からの設定要求に対する否定的な応答を無線通信部32に送信させる。無線通信部32から送信された応答及び特定情報はデータ処理装置21の無線通信部212で受信される。
データ処理装置21では、無線通信端末3に送信した設定要求に対する応答が無線通信部212で受信されると、その受信タイミングからT秒後に、イベントフラグが設定される。イベントフラグが設定されると、同期処理部210bは、記憶部213内のすべての設定値を含む設定要求を無線通信部212から送信する。以後、コントローラ20からSet系クラスリクエストが送信されない間、情報処理システム1は同様に動作する。
このように、無線通信部212が、USBコントローラ211においてSet系クラスリクエストが受信されない間、記憶部213内の設定値を含む設定要求を無線通信端末3に繰り返し送信することによって、データ処理装置21から無線通信端末3に対して通信が不安定な無線通信によって設定値が送信される場合であっても、コントローラ20から送信された設定値を確実に無線通信端末3に届けることができる。よって、無線通信端末3に対して、コントローラ20からの指示に応じた設定を確実に行うことができる。
<第3変形例>
データ処理装置21では、無線通信部212が、無線通信端末3との無線接続が切断された後、復帰したときに、記憶部213内の設定値を含む設定要求を無線通信端末3に送信しても良い。図8はその様子を示す図である。
例えば、ユーザによって無線通信端末3が情報処理装置2から離れたところに持ち運ばれると、データ処理装置21の無線通信部212と、無線通信端末3の無線通信部32との間の無線接続が切断される。また、無線通信端末3の電源がオフにされると、データ処理装置21の無線通信部212と、無線通信端末3の無線通信部32との間の無線接続が切断される。
無線通信部212と無線通信部32との間の無線接続が切断されている間に、コントローラ20が、設定対象の仮想USBデバイスの設定値を含むSet系クラスリクエストをデータ処理装置21に送信すると、データ処理装置21では、上記のように、リクエスト処理部210aが、同期処理部210bに対して、当該Set系クラスリクエストに含まれる設定値を記憶部213に記憶することを通知する。同期処理部210bは、受信されたSet系クラスリクエストに含まれる設定値を記憶部213に記憶(更新)する。同期処理部210bは、設定値を記憶部213に記憶すると、リクエスト処理部210aに応答を返す。リクエスト処理部210aは、同期処理部210bから応答を受信するとイベントフラグを設定する。その後、リクエスト処理部210aは、受信されたSet系クラスリクエストに対する応答をUSBコントローラ211からコントローラ20に送信する。
リクエスト処理部210aが、Set系クラスリクエストに対する応答を送信すると、同期処理部210bは、イベントフラグが設定されていることを確認するものの、無線通信部212と無線通信部32との間の無線接続は切断されていることから、受信されたSet系クラスリクエストに含まれる設定値を含む設定要求を無線通信部212から送信しない。
その後、情報処理装置2から離れていた無線通信端末3が情報処理装置2に近づくなどして、無線通信部212と無線通信部32との間の無線接続が復帰すると、イベントフラグが設定され、同期処理部210bは、記憶部213内のすべての設定値を含む設定要求を無線通信部212から送信する。
無線通信部212から送信された設定要求は無線通信部32で受信される。無線通信部32は受信した設定要求を端末制御部30に出力する。端末制御部30は、入力された設定要求に含まれる各設定値を記憶部36に記憶する。そして、端末制御部30は、記憶部36に記憶した各設定値に基づいて、無線通信端末3、具体的に仮想USBデバイスを設定する。
端末制御部30は、記憶部36に記憶した各設定値に基づいて仮想USBデバイスを設定すると、データ処理装置21からの設定要求に対する肯定的な応答を無線通信部32に送信させる。また、端末制御部30は、記憶部36に記憶した設定値に基づいて仮想USBデバイスを設定できない場合には、その設定値を特定するための特定情報とともに、データ処理装置21からの設定要求に対する否定的な応答を無線通信部32に送信させる。無線通信部32から送信された応答及び特定情報はデータ処理装置21の無線通信部212で受信される。
このように、本変形例では、無線通信部212が、無線通信端末3との無線接続が切断された後、復帰したときに、記憶部213内の設定値を含む設定要求を無線通信端末3に送信している。したがって、無線通信部212と無線通信端末3との間の無線接続が切断されている間に、記憶部213内の設定値が更新された場合であっても、当該無線接続が復帰した際に、最新の設定値を無線通信端末3に送信することができる。よって、無線通信端末3に対してコントローラ20からの指示に応じた設定を適切に行うことができる。
なお、無線通信部212と無線通信端末3との間の無線接続が復帰した際に、データ処理装置21は、記憶部213内の設定値を含む設定要求を送信した後、Set系クラスリクエストを受信しない間は、上記の第2変形例のように、記憶部213内の設定値を含む設定要求を無線通信端末3に繰り返し送信しても良い。
<第4変形例>
上記の例では、データ処理装置21は、無線通信端末3に対して設定要求を送信する前にSet系クラスリクエストに対する応答をコントローラ20に送信していたが、図9に示されるように、無線通信端末3に対して設定要求を送信した後であって、無線通信端末3からの応答を受信する前に、Set系クラスリクエストに対する応答をコントローラ20に送信しても良い。この場合であっても、上述の図6に示されるように、データ処理装置21が、無線通信端末3からの応答を受信した後に、Set系クラスリクエストに対する応答をコントローラ20に送信する場合と比較して、コントローラ20は、送信したSet系クラスリクエストに対する応答をすぐに受信することができる。したがって、無線通信端末3に対して、設定を行ってからすぐに次の設定を行うことができる。その結果、無線通信端末3に対する制御のリアルタイム性が向上する。
なお、データ処理装置21が、無線通信端末3に対して設定要求を送信する前にSet系クラスリクエストに対する応答を送信する方が、無線通信端末3に対して設定要求を送信した後に、Set系クラスリクエストに対する応答を送信する場合よりも、コントローラ20は、送信したSet系クラスリクエストに対する応答をすぐに受信することができる。したがって、前者の方が後者の場合よりも、無線通信端末3に対する制御のリアルタイム性を向上させることができる。
<第5変形例>
コントローラ20が、Set系クラスリクエストに対する応答を受信した後にすぐに次のSet系クラスリクエストを送信する場合には、図10に示されるように、データ処理装置21は、あるタイミングでSet系クラスリクエストを受信した後、無線通信端末3に設定要求を送信するまでに、少なくとも一つの新たなSet系クラスリクエストを受信することがある。図10の例では、データ処理装置21は、あるタイミングでSet系クラスリクエストRQ1を受信した後、無線通信端末3に設定要求を送信するまでに、2つの新たなSet系クラスリクエストRQ2,RQ3を受信している。ここで、Set系クラスリクエストRQ1〜RQ3には、同じ種類の設定値が含まれている。例えば、Set系クラスリクエストRQ1〜RQ3には、カメラ33についてのホワイトバランスの設定値が含まれている。あるいは、Set系クラスリクエストRQ1〜RQ3には、例えば、カメラ33についてのγ値が含まれている。このような場合には、データ処理装置21は、受信したSet系クラスリクエストRQ1〜RQ3に含まれる設定値のうち、最新のSet系リクエストRQ3に含まれる設定値だけを含む設定要求を無線通信端末3に送信しても良い。以下に図10の例について詳細に説明する。
コントローラ20が、Set系クラスリクエストRQ1をデータ処理装置21に送信すると、データ処理装置21では、リクエスト処理部210aが、同期処理部210bに対して、Set系クラスリクエストRQ1に含まれる設定値を記憶部213に記憶することを通知する。同期処理部210bは、受信されたSet系クラスリクエストRQ1に含まれる設定値を記憶部213に記憶する。このとき、同期処理部210bは、受信されたSet系クラスリクエストRQ1に含まれる設定値と同じ種類の古い設定値が記憶部213内に存在する場合には、当該古い設定値の代わりに、受信されたSet系クラスリクエストRQ1に含まれる新しい設定値を記憶する。
同期処理部210bは、設定値を記憶部213に記憶すると、リクエスト処理部210aに応答を返す。リクエスト処理部210aは、同期処理部210bから応答を受信するとイベントフラグを設定する。その後、リクエスト処理部210aは、受信されたSet系クラスリクエストRQ1に対する応答をUSBコントローラ211からコントローラ20に送信する。
リクエスト処理部210aがSet系クラスリクエストRQ1に対する応答を送信した後、同期処理部210bがイベントフラグの設定に従って設定要求を無線通信部212から送信する前に、データ処理装置21が次のSet系クラスリクエストRQ2をコントローラ20から受信すると、リクエスト処理部210aが、同期処理部210bに対して、Set系クラスリクエストRQ2に含まれる設定値を記憶部213に記憶することを通知する。同期処理部210bは、受信されたSet系クラスリクエストRQ2に含まれる設定値を記憶部213に記憶する。このとき、同期処理部210bは、受信されたSet系クラスリクエストRQ2に含まれる設定値を、記憶部213内のSet系クラスリクエストRQ1に含まれる設定値の代わりに記憶部213に記憶する。つまり、同期処理部210bは、受信されたSet系クラスリクエストRQ2に含まれる設定値を用いて、記憶部213内の同じ種類の設定値を更新する。同期処理部210bは、記憶部213内の設定値を更新すると、リクエスト処理部210aに応答を返す。リクエスト処理部210aは、同期処理部210bから応答を受信するとイベントフラグを設定する。その後、リクエスト処理部210aは、Set系クラスリクエストRQ2に対する応答をUSBコントローラ211からコントローラ20に送信する。
データ処理装置21は、Set系クラスリクエストRQ2に対する応答を送信した後、無線通信端末3に設定要求を送信する前に、さらに次のSet系クラスリクエストRQ3をコントローラ20から受信すると、リクエスト処理部210aが、同期処理部210bに対して、Set系クラスリクエストRQ3に含まれる設定値を記憶部213に記憶することを通知する。同期処理部210bは、受信されたSet系クラスリクエストRQ3に含まれる設定値を記憶部213に記憶する。このとき、同期処理部210bは、受信されたSet系クラスリクエストRQ3に含まれる設定値を用いて、記憶部213内の同じ種類の設定値を更新する。同期処理部210bは、記憶部213内の設定値を更新すると、リクエスト処理部210aに応答を返す。リクエスト処理部210aは、同期処理部210bから応答を受け取ると、イベントフラグを設定し、その後、USBコントローラ211から、Set系クラスリクエストRQ3に対する応答を送信する。
データ処理装置21が、Set系クラスリクエストRQ3に対する応答を送信した後、さらに次のSet系クラスリクエストをコントローラ20から受信しない場合には、同期処理部210bは、イベントフラグの設定に従って、無線通信端末3に対して、記憶部213内の、Set系クラスリクエストRQ3に含まれる設定値を含む設定要求を、無線通信部212から送信する。以後、情報処理システム1は同様に動作する。
このように、データ処理装置21が、あるタイミングでSet系クラスリクエストを受信した後、無線通信端末3に設定要求を送信するまでに、少なくとも一つの新たなSet系クラスリクエストを受信する場合に、当該あるタイミングで受信されたSet系クラスリクエストと当該少なくとも一つの新たなSet系クラスリクエストに含まれる設定値のうち、最新の設定値だけを含む設定要求を送信することによって、無線通信端末3に対して最新の設定値を渡すことができる。よって、コントローラ20からの最新の設定値に基づいて無線通信端末3を設定することができる。
なお、データ処理装置21が、あるタイミングでSet系クラスリクエストを受信した後、無線通信端末3に設定要求を送信するまでに、少なくとも一つの新たなSet系クラスリクエストを受信する場合には、上記とは異なり、当該あるタイミングで受信されたSet系クラスリクエストと当該少なくとも一つの新たなSet系クラスリクエストに含まれる設定値のすべてを含む設定要求を無線通信端末3に送信しても良い。図10の例では、データ処理装置21は、Set系クラスリクエストRQ1〜RQ3に含まれる設定値をすべて含む設定要求を無線通信端末3に送信しても良い。この場合には、記憶部213には、当該あるタイミングで受信されたSet系クラスリクエストと当該少なくとも一つの新たなSet系クラスリクエストに含まれる設定値のすべてが記憶される。図10の例では、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のそれぞれが独立して記憶部213に記憶される。
このように、データ処理装置21が、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のすべてを含む設定要求を無線通信端末3に送信することによって、無線通信端末3は、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のそれぞれに基づいて、順番に仮想USBデバイスを設定することができる。したがって、無線通信端末3は、Set系クラスリクエストRQ1〜RQ3に含まれる設定値に基づいて、仮想USBデバイスの設定を徐々に変化させることができる。例えば、Set系クラスリクエストRQ1〜RQ3にカメラ33のγ値が含まれ、Set系クラスリクエストRQ1〜RQ3に含まれるγ値が徐々に変化している場合には、Set系クラスリクエストRQ1〜RQ3に含まれるγ値に基づいてカメラ33を設定することによって、カメラ33の撮像においてフェードインを実行したり、フェードアウトを実行したりすることができる。なお、この場合には、無線通信端末3の記憶部36内においても、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のそれぞれが独立して記憶される。
<第6変形例>
無線通信部212と無線通信端末3との間の無線接続が切断している間においては、図11に示されるように、データ処理装置21は、複数のSet系クラスリクエストを受信することがある。図11の例では、データ処理装置21は、3つのSet系クラスリクエストRQ1〜RQ3を受信している。このような場合には、無線通信部212と無線通信端末3との間の無線接続が復帰した際には、データ処理装置21は、当該複数のSet系クラスリクエストに含まれる設定値のうちの最新の設定値だけを含む設定要求を無線通信端末に送信しても良い。図11の例では、データ処理装置21は、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のうち、Set系クラスリクエストRQ3に含まれる設定値だけを含む設定要求を無線通信端末に送信しても良い。以下に図11の例について詳細に説明する。
データ処理装置21の無線通信部212と、無線通信端末3の無線通信部32との間の無線接続が切断されている間に、コントローラ20が、Set系クラスリクエストRQ1をデータ処理装置21に送信すると、データ処理装置21は、上記の図10の例と同様に動作する。
リクエスト処理部210aが、Set系クラスリクエストRQ1に対する応答を送信した後、データ処理装置21が次のSet系クラスリクエストRQ2をコントローラ20から受信すると、データ処理装置21は上記の図10の例と同様に動作する。リクエスト処理部210aが、Set系クラスリクエストRQ2に対する応答を送信した後、データ処理装置21が次のSet系クラスリクエストRQ3をコントローラ20から受信すると、データ処理装置21は上記の図10の例と同様に動作する。
リクエスト処理部210aが、Set系クラスリクエストRQ3に対する応答を送信した後、無線通信部212と無線通信部32との間の無線接続が復帰すると、イベントフラグが設定され、同期処理部210bは、記憶部213内のすべての設定値を含む設定要求を無線通信部212から送信する。このとき、記憶部213内には、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のうち、最新の設定値、つまり最後に受信されたSet系クラスリクエストRQ3に含まれる設定値だけが記憶されていることから、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のうち、Set系クラスリクエストRQ3に含まれる設定値だけを含む設定要求が無線通信端末3に送信される。
このように、データ処理装置21が、無線通信部212と無線通信部32との間の無線接続が切断されている間に受信した複数のSet系クラスリクエストに含まれる設定値のうちの最新の設定値だけを含む設定要求を送信することによって、無線通信端末3に対して最新の設定値を渡すことができる。よって、コントローラ20からの最新の設定値に基づいて無線通信端末3を設定することができる。
なお、データ処理装置21は、無線通信部212と無線通信部32との間の無線接続が切断されている間に、複数のSet系クラスリクエストを受信する場合には、当該複数のSet系クラスリクエストに含まれる設定値のそれぞれを独立して記憶部213に記憶しても良い。図11の例では、データ処理装置21は、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のそれぞれを独立して記憶部213に記憶しても良い。この場合において、無線通信部212と無線通信部32との間の無線接続が復帰したときに、記憶部213内の設定値のすべてを含む設定要求が無線通信端末3に送信されることによって、上記とは異なり、無線通信部212と無線通信部32との間の無線接続が切断されている間に受信した複数のSet系クラスリクエストに含まれる設定値のすべてを含む設定要求が無線通信端末3に送信される。図11の例では、Set系クラスリクエストRQ1〜RQ3に含まれる設定値をすべて含む設定要求が無線通信端末3に送信される。
このように、記憶部213内に、Set系クラスリクエストRQ1〜RQ3に含まれる設定値のすべてを記憶させることによって、言い換えれば、同じ種類の設定値についての最新の値(Set系クラスリクエストRQ3に含まれる設定値)と、当該最新の値よりも前の値(Set系クラスリクエストRQ1,RQ2に含まれる設定値)を記憶させることによって、無線通信部212と無線通信部32との間の無線接続が復帰した際には、当該最新の値及び当該前の値を無線通信端末3に送信することができる。よって、無線通信端末3は、設定値についての前の値と最新の値のそれぞれに基づいて、順番に仮想USBデバイスを設定することができる。したがって、上記と同様に、無線通信端末3は仮想USBデバイスの設定を徐々に変化させることができる。
なお、上記の例では、無線通信端末3に記憶部36が設けられていたが、カメラ33及びマイク34のそれぞれが、自身に関する設定値を保持できる場合には、記憶部36は不要である。
また、本願発明については、上記の情報処理システム1以外の通信システム、例えば監視システムやテレビ電話システムにも適用することができる。図12は、本願発明が適用された監視システム1Aを示すブロック図である。
図12に示される監視システム1Aは、パーソナルコンピュータ300と、通信装置310と、カメラ装置320とを備えている。カメラ装置320は、カメラ321と無線装置322とを備えている。パーソナルコンピュータ300と通信装置310とは、例えばUSBに準拠した有線通信を行う。パーソナルコンピュータ300がUSBホストとして機能し、通信装置310がUSBデバイスとして機能する。通信装置310とカメラ装置320とは、例えばWi−Fiに準拠した無線通信を行う。監視システム1Aでは、通信装置310が、パーソナルコンピュータ300とカメラ装置320との通信を仲介する通信仲介装置として機能する。パーソナルコンピュータ300は、通信装置310を通じて、カメラ装置320を制御する。
カメラ321は、画像を撮像し、当該画像を示す画像データを出力する。無線装置322は、カメラ321から出力される画像データを通信装置310に無線送信する。通信装置310は、無線装置322から受信した画像データをパーソナルコンピュータ300にUSB通信にて送信する。パーソナルコンピュータ300は、インターネット等のネットワークを通じて監視装置に接続されている。パーソナルコンピュータ300は受信した画像データを監視装置に送信する。監視装置は、受信した画像データを表示する。
監視システム1Aにおいては、パーソナルコンピュータ300が上記のコントローラ20に相当し、通信装置310が上記のデータ処理装置21に相当し、カメラ装置320が上記の無線通信端末3に相当する。監視システム1Aでは、カメラ321が仮想USBデバイスとして、上記と同様にして、パーソナルコンピュータ300によって制御される。
以上のように、通信システム1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。