(実施の形態1)
以下、本発明の一実施の形態に係るデバイスサーバシステムについて、図面を参照しながら説明する。
本実施の形態に係るデバイスサーバシステムは、クライアント装置と、USBキーボードのようなHID(Human Interface Device)クラスのUSBデバイスが接続され且つクライアント装置と無線通信可能なデバイスサーバと、を備える。ユーザが、デバイスサーバに接続されたキーボートを操作すると、クライアント装置が、キーボードの操作に応じた処理を実行する。
図1に示すように、本実施の形態に係るデバイスサーバシステム1は、デバイスサーバ11と、クライアント装置12と、キーボード13と、ディスプレイ14と、を備える。キーボード13は、データ転送方式として、インタラプト(インタラプトイン)転送を利用するものである。キーボード13は、HIDクラスのUSBデバイスであり、クライアント装置12で実行される処理に関連する処理情報(例えばキーボード13のキーが押下されたことを通知する情報)を転送する。キーボード13は、デバイスサーバ11を介してクライアント装置12に接続されると、インタラプト応答パケットの構造およびインタラプト要求情報を出力する周期に関する情報を含むUSBコンフィギュレーション情報およびディスクリプタ情報を、デバイスサーバ11を介してクライアント装置12へ送信する。
デバイスサーバ11は、図2に示すように、CPU(Central Processing Unit)111と主記憶部112と補助記憶部113と無線モジュール115とUSBインターフェース(以下、「I/F」と称する。)116とこれらを互いに接続するバス117とを有する。主記憶部112は、揮発性メモリから構成され、CPU111の作業領域として使用される。補助記憶部113は、不揮発性のメモリから構成される。無線モジュール115は、無線LANコントローラを含んで構成されている。無線モジュール115は、クライアント装置12との間で通信リンクを確立し、無線通信を行う。無線モジュール115は、無線信号を生成する信号生成回路とアンテナとを有する。無線モジュール115は、例えばIEEE802.11a,b,g,n等の無線LAN規格に適合する通信方式で通信する。USBI/F116は、キーボード13に接続され、キーボード13との間で情報を送受信する。
デバイスサーバ11では、CPU111が、補助記憶部113が記憶するプログラムを主記憶部112に読み込んで実行することにより、図3に示すように、キーボード13とクライアント装置12との間の通信を制御する変換部1111として機能する。変換部1111は、クライアント装置12から受信したインタラプト要求パケットまたはキーボード13から受信したインタラプト応答情報のプロトコル変換を実行する。変換部1111は、クライアント装置12から受信したインタラプト要求パケットからそれに含まれるインタラプト要求情報を抽出してキーボード13へ送信する。また、変換部1111は、キーボード13から受信したインタラプト応答情報をカプセル化することによりインタラプタ応答パケットを生成してクライアント装置12へ送信する。
図2に戻って、クライアント装置12は、CPU121と主記憶部122と補助記憶部123と無線モジュール125と映像I/F126とこれらを互いに接続するバス127とを有する。主記憶部122は、揮発性メモリから構成され、CPU121の作業領域として使用される。補助記憶部123は、不揮発性のメモリから構成される。無線モジュール125は、無線LANコントローラを含んで構成されている。無線モジュール125は、デバイスサーバ11との間で通信リンクを確立し、無線通信を行う。無線モジュール125は、無線モジュール115と同様に、信号生成回路とアンテナとを有する。無線モジュール125も、例えばIEEE802.11a,b,g,n等の無線LAN規格に適合する通信方式で通信する。映像I/F126は、ディスプレイ14に接続され、ディスプレイ14へ映像信号を送信する。
クライアント装置12では、CPU121が、補助記憶部123が記憶するプログラムを主記憶部122に読み込んで実行することにより、図3に示すように、処理部1211とUSBドライバ1212と通信制御部1213と計時部1214として機能する。また、主記憶部122は、通信制御部1213がキー押下を示すダミーのインタラプト応答情報に対応するインタラプト要求情報を記憶する要求記憶部1221を有する。補助記憶部123は、キーボード13から受信するインタラプト応答パケットの構造およびキーボード13に対応するインタラプト要求情報の送信周期に関する情報を記憶する。
処理部1211は、USBドライバ1212から入力されるキー入力情報に応じた処理を実行する。処理部1211は、USBドライバ1212から入力されるキー入力情報に応じた処理を実行することにより生成される映像情報をディスプレイ14へ出力する。処理部1211は、キーボード13からキー押下を示すインタラプタ応答情報が転送された後、キー解放を示すインタラプト応答情報が転送されるまで、キーが押下され続けていると認識してキー押下に応じた処理を継続する。
USBドライバ1212は、通信制御部1213からキーが押下されたことを示すインタラプト応答情報が入力されると、キーが押下されたことを通知するキー押下通知情報を生成して処理部1211へ出力する。また、USBドライバ1212は、キーボード13向けのインタラプト要求情報を生成して通信制御部1213へ送信する。
通信制御部1213は、USBドライバ1212から入力されるインタラプト要求情報を含むインタラプト要求パケットを生成してデバイスサーバ11へ送信する。また、通信制御部1213は、デバイスサーバ11から受信したインタラプト応答パケットに含まれるキーステータス情報を抽出してUSBドライバ1212へ出力する。また、通信制御部1213は、キーボード13から転送されたUSBコンフィギュレーション情報およびディスクリプタ情報を受信すると、それらに含まれるインタラプト応答パケットの構造およびインタラプト要求情報を出力する周期に関する情報を取得する。そして、通信制御部1213は、取得したインタラプト応答パケットの構造およびインタラプト要求情報を出力する周期に関する情報を仕様情報記憶部1231に記憶させる。
計時部1214は、例えばソフトウェアタイマから構成され、通信制御部1213とデバイスサーバ11の変換部1111との間の通信が遮断された後の経過時間を計時する。
次に、本実施の形態に係るデバイスサーバシステム1の動作を図4乃至図6を参照しながら説明する。なお、図4および図6では、USBドライバ1212からキーボード向けへ送信されるハンドシェイクパケットの授受については図示を省略している。また、通信制御部1213は、キーボード13から受信するインタラプト応答パケットの構造およびキーボード13に対応するインタラプト要求情報の送信周期に関する情報を既に取得しているものとする。図4において、まずインタラプト要求情報が、クライアント装置12のUSBドライバ1212から通信制御部1213へ出力されると(ステップS2)、通信制御部1213は、インタラプト要求情報を含むインタラプト要求パケットを生成する。続いて、生成されたインタラプト要求パケットが、通信制御部1213からデバイスサーバ11へ送信されると(ステップS3)、デバイスサーバ11は、インタラプト要求パケットを受信し、そこに含まれるインタラプト要求情報を抽出する。その後、インタラプト要求情報が、デバイスサーバ11からキーボード13へ転送される(ステップS4)。
次に、インタラプト要求情報を受信した状態でキーボード13が第1キーの押下を受け付けると(ステップS4)、第1キーが押下された状態を示すインタラプト応答情報が、キーボード13からデバイスサーバ11へ転送される(ステップS5)。このインタラプト応答情報は、例えば図5(A)に示すように、複数のキーステータス情報の中の第1キーに対応するキーステータス情報が「1E」に設定され、他のキーに対応するキーステータス情報が、「00」に設定されている。このインタラプト応答情報は、第1キーのみが押下され他のキーは押下されていないことを示している。
図4に戻って、一方、デバイスサーバ11は、インタラプト応答情報をカプセル化することによりインタラプト応答パケットを生成する。生成されたインタラプト応答パケットは、デバイスサーバ11から通信制御部1213へ送信される(ステップS6)。続いて、通信制御部1213は、インタラプト応答パケットを受信すると、そこに含まれるインタラプト応答情報を抽出し、抽出されたインタラプト応答情報が、通信制御部1213からUSBドライバ1212へ出力される(ステップS7)。その後、USBドライバ1212は、例えば前述図5(A)に示すようなインタラプト応答情報に含まれるキーステータス情報に基づいて、第1キーが押下されていることを通知する第1キー押下通知情報を生成する。生成された第1キー押下通知情報は、USBドライバ1212から処理部1211へ出力される(ステップS8)。そして、処理部1211は、第1キー押下通知が入力されると、第1キーの押下に応じた動作を開始する(ステップS9)。
次に、インタラプト応答情報を取得したことを契機として、或いは、ステップS2でインタラプト要求情報を送信した後、予め設定された周期に達すると、再び、インタラプト要求が、USBドライバ1212から通信制御部1213へ出力される(ステップS10)。続いて、インタラプト要求情報を含むインタラプト要求パケットが、通信制御部1213からデバイスサーバ11へ送信される(ステップS11)。その後、インタラプト要求パケットに含まれるインタラプト要求情報が、デバイスサーバ11からキーボード13へ転送される(ステップS12)。
また、通信制御部1213は、デバイスサーバ11へキープアライブ要求パケットを予め設定された周期で繰り返し生成して送信する(ステップS13)。一方、デバイスサーバ11は、キープアライブ要求パケットを受信すると、キープアライブ応答パケットを生成して通信制御部1213へ送信する(ステップS14)。通信制御部1213は、デバイスサーバ11からキープアライブ応答パケットを受信する限り、デバイスサーバ11との間での通信が可能と判定する。
次に、通信制御部1213が、キープアライブ要求パケットを送信後(ステップS15)、デバイスサーバ11からキープアライブ応答パケットを受信せず、デバイスサーバ11との通信が遮断されたと判定したとする(ステップS16)。その後、予め設定された基準時間△T1の間、デバイスサーバ11との間での通信が復帰しなかったとする。この場合、第1キーが解放されたことを示すダミーのインタラプト応答情報が、通信制御部1213からUSBドライバ1212へ送信される(ステップS17)。このときのダミーのインタラプト応答情報は、例えば図5(B)に示すように、複数のキーステータス情報の全てが、「00」に設定されている。このインタラプト応答情報は、キーボード13の全てのキーが押下されていないことを示している。
図4に戻って、USBドライバ1212へ第1キーが解放された状態を示すダミーのインタラプト応答情報が入力されると、それに応じて、インタラプト要求情報が、USBドライバ1212から通信制御部1213へ出力される(ステップS18)。そして、通信制御部1213は、USBドライバ1212から入力されたインタラプト要求情報を要求記憶部1221に記憶させる(ステップS19)。
また、USBドライバ1212は、例えば前述図5(B)に示すようなインタラプト応答情報に含まれるキーステータス情報に基づいて、第1キーが解放されていることを通知する第1キー解放通知情報を生成する。そして、生成された第1キー解放通知情報が、USBドライバ1212から処理部1211へ出力される(ステップS20)。そして、処理部1211は、第1キー解放通知が入力されると、第1キーの解放に応じた動作が実行される(ステップS21)。
その後、図6に示すように、通信制御部1213が、デバイスサーバ11へキープアライブ要求パケットを送信した後(ステップS22)、デバイスサーバ11からキープアライブ応答パケットを受信したとする(ステップS23)。この場合、通信制御部1213は、デバイスサーバ11との間での通信が復帰したと判定する(ステップS24)。この後、要求記憶部1221が記憶するインタラプト要求情報を含むインタラプト要求パケットが、通信制御部1213からデバイスサーバ11へ送信される(ステップS25)。そして、デバイスサーバ11は、インタラプト要求パケットを受信すると、そこに含まれるインタラプト要求情報を抽出する。その後、インタラプト要求情報が、デバイスサーバ11からキーボード13へ転送される(ステップS26)。
ここで、キーボード13が、ユーザによる第1キーの解放操作を受け付けたとする(ステップS27)。この場合、先にキーボード13へ転送されたインタラプト要求情報(ステップS12)に応じて、第1キーが解放された状態を示すインタラプト応答情報が、ステップS5およびS6と同様にして、キーボード13から通信制御部1213へ転送される(ステップS28、S29)。そして、通信制御部1213は、インタラプト応答情報が第1キーが解放された状態を示すものであると判定したとする(ステップS30)。この場合、通信制御部1213は、インタラプト応答情報を破棄する(ステップS31)。つまり、通信制御部1213は、キーボード13からデバイスサーバ11を介して取得される、ダミーのインタラプト応答情報に対応するインタラプト応答情報の内容に応じて、当該インタラプト応答情報を破棄する。
その後、キーボード13が、ユーザによる第2キーの押下操作を受け付けたとする(ステップS32)。この場合、先にキーボード13へ転送されたインタラプト要求情報(ステップS26)に応じて、第2キーが押下された状態を示すインタラプト応答情報が、ステップS5乃至S7と同様にして、キーボード13からUSBドライバ1212へ転送される(ステップS33乃至S35)。このときのインタラプト応答情報は、例えば図5(C)に示すように、複数のキーステータス情報の中の第2キーに対応するキーステータス情報が「1E」に設定され、他のキーに対応するキーステータス情報が、「00」に設定されている。このインタラプト応答情報は、第2キーのみが押下され他のキーは押下されていないことを示している。
図6に戻って、続いて、USBドライバ1212は、例えば前述図5(C)に示すようなインタラプト応答情報に含まれるキーステータス情報に基づいて、第2キーが押下されていることを通知する第2キー押下通知情報を生成する。生成された第2キー押下通知情報は、USBドライバ1212から処理部1211へ出力される(ステップS36)。そして、処理部1211は、第2キー押下通知が入力されると、第2キーの押下に応じた動作を開始する(ステップS37)。
次に、本実施の形態に係るクライアント装置12の通信制御部1213が実行する通信制御処理について図7乃至図9を参照しながら説明する。この通信制御処理は、クライアント装置12およびデバイスサーバ11へ電源が投入された状態で、キーボード13がデバイスサーバ11を介してクライアント装置12へ接続されたことを契機として開始される。ここにおいて、通信制御部1213は、キーボード13からデバイスサーバ11およびネットワークを経由してUSBコンフィギュレーション情報およびディスクリプタ情報を取得することにより、インタラプト応答パケットの構造およびインタラプト要求情報を出力する周期に関する情報を取得して仕様情報記憶部1231に記憶させているものとする。
まず、通信制御部1213は、図7に示すように、USBドライバ1212からUSB要求情報が入力されると、USB要求情報を含むUSB要求パケットを生成してデバイスサーバ11へ送信する(ステップS101)。USB要求情報には、コントロール転送、バルク転送、インタラプト転送およびアイソクロナス転送それぞれにおける要求情報が含まれる。
次に、通信制御部1213は、USB要求パケットに対応するUSB応答パケットを受信する(ステップS102)。USB応答情報には、コントロール転送、バルク転送、インタラプト転送およびアイソクロナス転送それぞれにおける応答情報が含まれる。続いて、通信制御部1213は、USB応答パケットに含まれるUSB応答情報がインタラプト応答情報であり且つ転送元のUSBデバイスがHIDであるか否かを判定する(ステップS103)。通信制御部1213は、USB応答情報がインタラプト応答情報でない、或いは転送元のUSBデバイスがHIDでないと判定すると(ステップS103:No)、USB応答情報をUSBドライバ1212へ出力する(ステップS104)。その後、通信制御部1213は、再びステップS101の処理を実行する。
一方、通信制御部1213は、USB応答情報がインタラプト応答情報であり且つ転送元のUSBデバイスがHIDであると判定すると(ステップS103:Yes)、USB応答情報、即ち、インタラプト応答情報がキー押下を示しているか否かを判定する(ステップS105)。通信制御部1213は、インタラプト応答情報がキー押下を示していないと判定すると(ステップS105:No)、インタラプト応答情報をUSBドライバ1212へ出力してから(ステップS106)、インタラプト要求パケットを生成して送信する(ステップS107)。その後、通信制御部1213は、再び前述のステップS102の処理を実行する。一方、通信制御部1213は、インタラプト応答情報がキー押下を示していると判定すると(ステップS105:Yes)、キーが押下されたことを通知するキー押下通知情報を処理部1211へ出力し(ステップS108)、インタラプト応答情報をUSBドライバ1212へ出力する(ステップS109)。次に、通信制御部1213は、USBドライバ1212から出力されたインタラプト要求情報を含むインタラプト要求パケットを生成してデバイスサーバ11へ送信する(ステップS110)。その後、通信制御部1213は、図8に示すように、デバイスサーバ11の変換部1111との通信状態を判定する通信状態判定処理を実行する(ステップS111)。通信状態判定処理では、通信制御部1213がキープアライブ要求パケットを変換部1111へ送信する。そして、通信制御部1213は、予め設定された判定期間内に変換部1111からキープアライブ応答パケットを受信すると、変換部1111との通信が可能であると判定する。一方、通信制御部1213は、判定期間内に変換部1111からキープアライブ応答パケットを受信しない場合、再度キープアライブ要求パケットを変換部1111へ送信する。そして、通信制御部1213は、キープアライブ要求パケットを予め設定された回数だけ繰り返し送信しても変換部1111からキープアライブ応答パケットを受信しない場合、変換部1111との通信が遮断されたと判定する。
続いて、通信制御部1213は、通信状態判定処理(ステップS111)の結果に基づき、変換部1111との通信が遮断されたか否かを判定する(ステップS112)。通信制御部1213は、変換部1111との通信が可能であると判定すると(ステップS112:No)、デバイスサーバ11からインタラプト応答パケットが受信されたかを判定する(ステップS113)。通信制御部1213は、インタラプト要求パケットを受信していないと判定すると(ステップS113:No)、再度通信状態判定処理を実行する(ステップS111)。一方、通信制御部1213は、インタラプト要求パケットを受信したと判定すると(ステップS113:Yes)、前述のステップS105の処理を実行する。
また、通信制御部1213は、変換部1111との通信が遮断されたと判定すると(ステップS112:Yes)、計時部1214のタイマをスタートさせ、通信遮断状態が予め設定された基準時間△T1だけ経過したか否かを判定する(ステップS114)。ここで、タイマは通信遮断状態が続く限りカウント動作を続ける。そして、通信制御部1213は、通信遮断状態が予め設定された基準時間△T1だけ経過していないと判定すると(ステップS114:No)、再びステップS111の処理を実行する。基準時間△T1は、例えば5sec程度に設定される。
一方、通信制御部1213が、計時部1214のタイマのカウント値に基づいて、通信遮断状態で予め設定された基準時間△T1だけ経過したと判定すると(ステップS114:Yes)、通信制御部1213は、キー解放状態を示すダミーのインタラプト応答情報をUSBドライバ1212へ出力する(ステップS115)。次に、通信制御部1213は、ダミーのインタラプト応答情報に対応するインタラプト要求情報を要求記憶部1221に記憶させる(ステップS116)。続いて、通信制御部1213は、変換部1111との通信状態を判定する通信状態判定処理を実行する(ステップS117)。その後、通信制御部1213は、通信状態判定処理(ステップS117)の結果に基づき、変換部1111との通信が復帰したか否かを判定する(ステップS118)。通信制御部1213は、変換部1111との通信が復帰していないと判定すると(ステップS118:No)、再びステップS117の処理を実行する。
一方、通信制御部1213は、変換部1111との通信が復帰したと判定すると(ステップS118:Yes)、要求記憶部1221に記憶したインタラプト要求情報を基に、インタラプト要求パケットを生成して変換部1111へ送信する(ステップS119)。次に、通信制御部1213は、インタラプト応答パケットを受信する(ステップS120)。なお、ステップS119の処理とステップS120の処理とは順序が逆になってもよい。
その後、通信制御部1213は、図9に示すように、インタラプト応答情報がキー解放状態を示しているか否かを判定する(ステップS121)。通信制御部1213は、インタラプト応答情報がキー解放状態を示していないと判定すると(ステップS121:No)、抽出したインタラプト応答情報をUSBドライバ1212へ出力する(ステップS122)。その後、通信制御部1213は、USBドライバ1212からインタラプト要求情報が入力されたか否かを判定する(ステップS123)。通信制御部1213は、USBドライバ1212からインタラプト要求情報が入力されていないと判定すると(ステップS123:No)、前述のステップS102の処理を実行する。一方、通信制御部1213は、USBドライバ1212からインタラプト要求情報が入力されたと判定すると(ステップS123:Yes)、を破棄してから(ステップS124)、前述のステップS102の処理を実行する。このインタラプト要求情報の破棄は、ステップS115におけるダミーのインタラプト応答情報の送信を行ったことと関係して、インタラプト応答情報とインタラプト要求情報とを一対一で対応させるための処理である。一方、通信制御部1213は、ステップS121において、インタラプト応答情報がキー解放状態を示していると判定すると(ステップS121:Yes)、キー解放状態を示すインタラプト応答情報をUSBドライバ1212に出力せず破棄する(ステップS125)。つまり、通信制御部1213は、キーボード13からデバイスサーバ11を介して取得される、ダミーのインタラプト応答情報に対応するインタラプト応答情報の内容に応じて、当該インタラプト応答情報を破棄する。その後、通信制御部1213は、前述のステップS102の処理を実行する。なお、通信制御部1213は、通信制御処理の実行途中で、例えばユーザがクライアント装置2012のユーザI/F(図示せず)を介して通信制御処理を終了するよう指示する割り込み命令を発行させると、その時点で通信制御処理を終了する。
以上説明したように、本実施の形態に係るデバイスサーバシステム1によれば、通信制御部1213が、クライアント装置12とデバイスサーバ11との間での通信状態を監視する。そして、ユーザによるキーボード13のキーが押下された後、通信制御部1213は、クライアント装置12とデバイスサーバ11との間での通信が遮断された状態で基準時間経過したと判定すると、キーが解放されたことを示すダミーのインタラプト応答情報をUSBドライバ1212へ出力する。これにより、クライアント装置12とデバイスサーバ11との間での通信が遮断されている間、処理部1211がキー押下通知情報に応じた処理を実行できない状態が継続してしまうことが防止される。ここで、キーボード13からキー押下、キー解放の2つのインタラプト応答情報がクライアント装置12へ転送されて処理部1211での処理が完了するとする。この場合、キーボード13からキー押下を示すインタラプト応答情報がクライアント装置12へ転送された直後に通信が遮断されたときでも、通信が遮断されている間、処理部1211での処理が完了せずに放置されることが無い。それ故、クライアント装置12を使用するユーザの利便性が向上する。
ところで、従来技術では、クライアント装置12は、キーボード13からキー押下を示すインタラプタ応答情報を受信した後、キー解放を示すインタラプト応答情報を受信するまで、キーが押下され続けている、即ちキー入力が継続していると認識する。従って、クライアント装置12とデバイスサーバ11との間で無線通信の遮断や遅延等により例えばキーボード13に対応するインタラプト要求情報出力周期よりも長い時間、キー解放を示すインタラプト応答情報を受信できない場合、クライアント装置12は、キー入力が継続していると認識してしまう。これに対して、本実施の形態に係るデバイスサーバシステムでは、通信制御部1213が、キーボード13からキー押下を示すインタラプタ応答情報を受信した後、キー解放を示すインタラプト応答情報を受信しない状態で基準時間△T1だけ経過すると、キー解放を示すダミーのインタラプト応答情報をUSBドライバ1212へ出力する。これにより、ユーザの意図に反してクライアント装置12がキー入力の継続に応じた処理を実行し続けてしまうことを防止できる。
また、本実施の形態に係る通信制御部1213がダミーのインタラプト応答情報をUSBドライバ1212へ出力した後にクライアント装置12とデバイスサーバ11との間での通信が復帰したとする。この場合、通信制御部1213は、キーボード13からデバイスサーバ11を介して取得される、ダミーのインタラプト応答情報に対応するインタラプト応答情報の内容に応じて、当該インタラプト応答情報を破棄する。これにより、クライアント装置12からキーボード13へ転送されるインタラプト要求情報と、キーボード13からクライアント装置12へ転送されるインタラプト応答情報と、を一対一で対応させることができる。従って、インタラプト要求情報とインタラプト応答情報との不整合に起因して、クライアント装置12とキーボード13との間でのインタラプト転送の不具合の発生を抑制できる。
(実施の形態2)
本実施の形態に係るデバイスサーバシステムは、HIDとして、キーボードの代わりにタッチパネルを備える点が実施の形態1に係るデバイスサーバシステム1と相違する。図10に示すように、本実施の形態に係るデバイスサーバシステム2は、デバイスサーバ11と、クライアント装置2012と、タッチパネル2013と、ディスプレイ14と、を備える。なお、図10において、実施の形態1と同様の構成については図1と同一の符号を付している。クライアント装置2012のハードウェア構成は、実施の形態1に係るクライアント装置12と同様である。
クライアント装置2012では、CPU121が、補助記憶部123が記憶するプログラムを主記憶部122に読み込んで実行することにより、図11に示すように、処理部2211とUSBドライバ1212と通信制御部2213と計時部1214として機能する。なお、図11において実施の形態1と同様の構成については図3と同一の符号を付している。
処理部2211は、USBドライバ1212から入力されるタッチ状態通知情報またはタッチ解放情報に応じた処理を実行することにより映像情報を生成してディスプレイ14へ出力する。処理部2211は、タッチパネル2013からタッチ状態を示すインタラプタ応答情報が転送された後、タッチ解放を示すインタラプト応答情報が転送されない状態で予め設定された基準時間が経過するとタッチ状態の解放に応じた処理を実行する。
通信制御部2213は、USBドライバ1212から入力されるインタラプト要求情報を含むインタラプト要求パケットを生成してデバイスサーバ11へ送信する。また、通信制御部2213は、デバイスサーバ11から受信したインタラプト応答パケットに含まれるインタラプト応答情報を抽出してUSBドライバ1212へ出力する。
次に、本実施の形態に係るデバイスサーバシステム2の動作を図12乃至図14を参照しながら説明する。なお、図12および図14では、USBドライバ1212からタッチパネル2013向けへ送信されるハンドシェイクパケットの授受については図示を省略している。また、通信制御部2213は、タッチパネル2013から受信するインタラプト応答パケットの構造およびタッチパネル2013に対応するインタラプト要求情報の送信周期に関する情報を既に取得しているものとする。図12において、まず、タッチパネル2013が、ユーザによりタッチされたことを受け付けたとする(ステップS51)。次に、インタラプト要求情報が、クライアント装置2012のUSBドライバ1212から通信制御部2213へ出力される(ステップS52)。そうすると、インタラプト要求情報を含むインタラプト要求パケットが、通信制御部2213からデバイスサーバ11へ送信される(ステップS53)。そして、インタラプト要求パケットに含まれるインタラプト要求情報が、デバイスサーバ11からタッチパネル2013へ転送される(ステップS54)。
次に、タッチパネル2013がユーザにタッチされた状態(タッチ状態)でインタラプト要求情報を受信すると、タッチ状態を示すインタラプト応答情報が、タッチパネル2013からデバイスサーバ11へ転送される(ステップS55)。このインタラプト応答情報は、例えば図13(A)に示すように、タッチ有無を示すステータス情報が「0x01」に設定され、タッチパネル2013上におけるユーザにタッチされている部分のX座標、Y座標を示す情報が設定されている。このインタラプト応答情報は、タッチパネル2013上における座標(64,−64)に対応する部分がタッチされていることを示している。
図12に戻って、一方、デバイスサーバ11は、インタラプト応答情報をカプセル化することによりインタラプト応答パケットを生成する。生成されたインタラプト応答パケットは、デバイスサーバ11から通信制御部2213へ送信される(ステップS56)。続いて、インタラプト応答パケットに含まれるインタラプト応答情報が、通信制御部2213からUSBドライバ1212へ出力される(ステップS57)。その後、タッチ状態を示すインタラプト応答情報に基づいて、タッチ状態を通知する示すタッチ状態通知情報が、USBドライバ1212から処理部2211へ出力される(ステップS58)。そして、処理部2211は、タッチ状態通知情報が入力されると、タッチ状態に応じた動作を開始する(ステップS59)。
次に、インタラプト応答情報を取得したことを契機として、或いは、ステップS52でインタラプト要求情報を送信した後、予め設定された周期に達すると、再び、インタラプト要求が、USBドライバ1212から通信制御部2213へ出力される(ステップS60)。続いて、インタラプト要求情報を含むインタラプト要求パケットが、通信制御部2213からデバイスサーバ11へ送信される(ステップS61)。その後、インタラプト要求パケットに含まれるインタラプト要求情報が、デバイスサーバ11からタッチパネル2013へ転送される(ステップS62)。以後、通信制御部2213とデバイスサーバ11との間での通信が可能である限り、インタラプト要求情報のUSBドライバ1212からタッチパネル2013への転送、インタラプト応答情報のタッチパネル2013からUSBドライバ1212への転送が予め設定された周期で繰り返し実行される。
また、通信制御部2213とデバイスサーバ11の変換部1111との間では、前述のインタラプト要求パケット、インタラプト応答パケットの送受信と同時に、通信状態判定処理が実行される。この通信状態判定処理では、キープアライブ要求パケットが、通信制御部2213からデバイスサーバ11へ予め設定された周期で繰り返し送信される(ステップS63)。一方、デバイスサーバ11は、キープアライブ要求パケットを受信すると、キープアライブ応答パケットを生成してクライアント装置2012へ送信する(ステップS64)。通信制御部2213は、デバイスサーバ11からキープアライブ応答パケットを受信する限り、デバイスサーバ11との間での通信が可能と判定する。
次に、通信制御部2213が、キープアライブ要求パケットを送信後(ステップS65)、デバイスサーバ11からキープアライブ応答パケットを受信せず、デバイスサーバ11との通信が遮断されたと判定したとする(ステップS66)。その後、予め設定された基準時間△T2の間、デバイスサーバ11との間での通信が復帰しなかったとする。この場合、継続してタッチ状態であることを示すダミーのインタラプト応答情報が、通信制御部2213からUSBドライバ1212へ送信される(ステップS67)。USBドライバ1212へタッチ状態であることを示すダミーのインタラプト応答情報が入力されると、それに応じて、インタラプト要求情報が、USBドライバ1212から通信制御部2213へ出力される(ステップS68)。そして、通信制御部2213は、USBドライバ1212から入力されたインタラプト要求情報を要求記憶部2221に記憶させる(ステップS69)。なお、基準時間△T2は、タッチパネル2013に対応するインタラプタ要求情報の出力周期と略同じ長さに設定され、例えば数msec程度に設定される。
また、USBドライバ1212は、例えば前述図13(A)に示すようなインタラプト応答情報に基づいて、タッチ状態を示すタッチ状態通知情報を生成する。そして、生成されたタッチ状態通知情報が、USBドライバ1212から処理部2211へ出力される(ステップS70)。そして、処理部2211は、タッチ状態通知情報が入力されると、タッチ状態に応じた動作を実行される(ステップS71)。
その後、図14に示すように、通信制御部2213が、デバイスサーバ11へキープアライブ要求パケットを送信した後(ステップS72)、デバイスサーバ11からキープアライブ応答パケットを受信したとする(ステップS73)。この場合、通信制御部2213は、デバイスサーバ11との間での通信が復帰したと判定する(ステップS74)。この場合、先にタッチパネル2013へ転送されたインタラプト要求情報(ステップS62)に応じて、タッチ状態を示すインタラプト応答情報が、ステップS55およびS56と同様にして、タッチパネル2013から通信制御部2213へ転送される(ステップS75、S76)。そして、通信制御部2213へ転送されたインタラプト応答情報が、通信制御部2213からUSBドライバ1212へ出力される(ステップS77)。
また、通信制御部2213とデバイスサーバ11との間での通信が復帰すると、要求記憶部2221が記憶するインタラプト要求情報を含むインタラプト要求パケットが、通信制御部2213からデバイスサーバ11へ送信される(ステップS78)。そして、インタラプト要求パケットに含まれるインタラプト要求情報が、デバイスサーバ11からタッチパネル2013へ転送される(ステップS79)。また、インタラプト要求情報がタッチパネル2013へ転送されると、それに応じて、インタラプト応答情報が、ステップS55乃至S57と同様にして、タッチパネル2013からUSBドライバ1212へ転送される(ステップS80乃至S82)。
ここにおいて、ダミーのインタラプト応答情報が通信制御部2213からUSBドライバ1212へ既に出力されているので(ステップS67)、インタラプト応答情報とインタラプト要求情報とを一対一で対応させるための処理が行われる。具体的には、インタラプト要求情報がUSBドライバ1212から通信制御部2213へ出力されると(ステップS83)、通信制御部2213が、入力されたインタラプト要求情報を破棄する(ステップS84)。ここで、通信制御部2213により破棄されるインタラプト要求情報の数は、ダミーのインタラプト応答情報を出力した回数に相当する。このように、通信制御部2213が、ダミーのインタラプト応答情報をUSBドライバ1212へ出力した後にクライアント装置2012とデバイスサーバ11との間での通信が復帰した場合、USBドライバ1212から入力される、ダミーのインタラプト応答情報に対応するインタラプト要求情報を破棄する。
その後、インタラプト要求情報が、ステップS52乃至S54と同様にして、USBドライバ1212から通信制御部2213およびデバイスサーバ11を介してタッチパネル2013へ転送される(ステップS85乃至S87)。そして、タッチパネル2013が、ユーザによるタッチ解放操作を受け付けたとする(ステップS88)。そうすると、タッチ解放を示すインタラプト応答情報が、ステップS55乃至S57と同様にして、タッチパネル2013からUSBドライバ1212へ転送される(ステップS89乃至S91)。このときのインタラプト応答情報は、例えば図13(B)に示すように、タッチ有無を示すステータス情報が「0x00」に設定されている。
図14に戻って、続いて、USBドライバ1212は、例えば前述図13(B)に示すようなインタラプト応答情報に基づいて、タッチ解放を通知するタッチ解放通知情報を生成する。生成されたタッチ解放通知情報は、USBドライバ1212から処理部2211へ出力される(ステップS92)。そして、処理部2211は、タッチ解放通知情報が入力されると、タッチ解放通知情報に応じた処理を実行する(ステップS93)。
次に、本実施の形態に係るクライアント装置2012の通信制御部2213が実行する通信制御処理について図15および図16を参照しながら説明する。この通信制御処理は、クライアント装置2012およびデバイスサーバ11へ電源が投入された状態で、タッチパネル2013がデバイスサーバ11を介してクライアント装置2012へ接続されたことを契機として開始される。ここにおいて、通信制御部2213は、タッチパネル2013からデバイスサーバ11およびネットワークを経由してUSBコンフィギュレーション情報およびディスクリプタ情報を取得することにより、インタラプト応答パケットの構造およびインタラプト要求情報を出力する周期に関する情報を取得して仕様情報記憶部2231に記憶させているものとする。
まず、通信制御部2213は、図15に示すように、ステップS201乃至S204の処理を実行する。ステップS201乃至S204の処理の内容は、実施の形態1で説明したステップS101乃至S104の処理の内容と同様である。そして、通信制御部1213は、ステップS203の処理において、USB応答情報がインタラプト応答情報であり且つ転送元のUSBデバイスがHIDであると判定すると(ステップS203:Yes)、USB応答情報、即ち、インタラプト応答情報がタッチ状態を示すか否かを判定する(ステップS205)。通信制御部2213は、タッチ状態でないと判定すると(ステップS205:No)、インタラプト応答情報をUSBドライバ1212へ出力してから(ステップS206)、インタラプト要求パケットを生成して送信する(ステップS207)。その後、通信制御部1213は、再び前述のステップS202の処理を実行する。一方、通信制御部2213は、タッチ状態であると判定すると(ステップS205:Yes)、タッチパネル2013がタッチされていることを通知するタッチ状態通知情報を処理部2211へ出力し(ステップS208)、インタラプト応答情報をUSBドライバ1212へ出力する(ステップS209)。次に、通信制御部1213は、USBドライバ1212から出力されたインタラプト要求情報を含むインタラプト要求パケットを生成してデバイスサーバ11へ送信する(ステップS210)。その後、通信制御部2213は、図16に示すように、デバイスサーバ11の変換部1111との間の通信状態判定処理を実行する(ステップS211)。通信状態判定処理は、実施の形態1で説明した通信状態判定処理と同様である。
次に、通信制御部2213は、通信状態判定処理において、変換部1111との通信が遮断されたか否かを判定する(ステップS212)。通信制御部2213は、変換部1111との通信が可能であると判定すると(ステップS212:No)、デバイスサーバ11からインタラプト応答パケットが受信されたか否かを判定する(ステップS213)。通信制御部2213は、インタラプト要求パケットを受信していないと判定すると(ステップS213:No)、再度通信状態判定処理を実行する(ステップS211)。一方、通信制御部2213は、インタラプト要求パケットを受信したと判定すると(ステップS213:Yes)、前述のステップS205の処理を実行する。
また、通信制御部2213が、変換部1111との通信が遮断されたと判定すると(ステップS212:Yes)、計時部1214のタイマをスタートさせ、通信遮断状態が予め設定された基準時間△T2だけ経過したか否かを判定する(ステップS214)。この基準時間は、前述のとおりタッチパネル2013に対応するインタラプタ要求情報の出力周期と略同じ長さに設定され、例えば数msec程度に設定される。ここで、タイマは通信遮断状態が続く限りカウント動作を続ける。そして、通信制御部2213は、通信遮断状態が予め設定された基準時間△T2だけ経過していないと判定すると(ステップS214:No)、再びステップS211の処理を実行する。
一方、通信制御部2213が、計時部1214のタイマのカウント値に基づいて、通信遮断状態で予め設定された基準時間△T2だけ経過したと判定すると(ステップS214:Yes)、通信制御部2213は、タッチ状態を示すダミーのインタラプト応答情報をUSBドライバ1212へ出力する(ステップS215)。次に、通信制御部2213は、インタラプト要求情報を既に要求記憶部2221に記憶させているか否かを判定する(ステップS216)。通信制御部2213は、インタラプト要求情報を既に要求記憶部221に記憶させていると判定すると(ステップS216:Yes)、インタラプト要求情報を破棄してから(ステップS218)、後述のステップS219の処理を実行する。一方、通信制御部2213は、インタラプト要求情報を未だ要求記憶部2221に記憶させていないと判定すると(ステップS216:No)、ダミーのインタラプト応答情報に対応するインタラプト要求情報を要求記憶部2221に記憶させる(ステップS217)。続いて、通信制御部2213は、変換部1111との通信状態を判定する通信状態判定処理を実行する(ステップS219)。その後、通信制御部2213は、通信状態判定処理(ステップS219)の結果に基づき、変換部1111との通信が復帰したか否かを判定する(ステップS220)。
通信制御部2213は、変換部1111との通信が復帰したと判定すると(ステップS220:Yes)、インタラプト応答パケットを受信し(ステップS221)、インタラプト応答パケットからインタラプト応答情報を抽出してUSBドライバ1212へ出力する(ステップS222)。次に、通信制御部2213は、インタラプト要求パケットを生成して変換部1111へ送信する(ステップS223)。なお、ステップS221およびS222の処理とステップS223の処理とは順序が逆になってもよい。
続いて、通信制御部2213は、USBドライバ1212からインタラプト要求情報が入力されたか否かを判定する(ステップS224)。通信制御部2213は、USBドライバ1212からインタラプト要求情報が入力されていないと判定すると(ステップS224:No)、前述のステップS202の処理を実行する。一方、通信制御部2213は、USBドライバ1212からインタラプト要求情報が入力されたと判定すると(ステップS224:Yes)、インタラプト要求情報を破棄する(ステップS225)。つまり、通信制御部2213が、ダミーのインタラプト応答情報をUSBドライバ1212へ出力した後にクライアント装置2012とデバイスサーバ11との間での通信が復帰した場合、USBドライバ1212から入力される、ダミーのインタラプト応答情報に対応するインタラプト要求情報を破棄する。インタラプト応答情報とインタラプト要求情報とを一対一で対応させるための処理である。その後、通信制御部2213は、前述のステップS202の処理を実行する。
また、通信制御部2213は、ステップS220の処理において、変換部1111との通信が復帰していないと判定すると(ステップS220:No)、通信が遮断した状態で予め設定された基準時間△T3だけ経過したか否かを判定する(ステップS226)。ここで、基準時間△T3は、例えば5secに設定される。通信制御部2213は、通信遮断状態で予め設定された基準時間△T3だけ経過したと判定すると(ステップS226:Yes)、タッチ解放を示すダミーのインタラプト応答情報をUSBドライバ1212へ出力する(ステップS227)。その後、通信制御部2213は、変換部1111との通信状態を判定する通信状態判定処理を実行する(ステップS228)。次に、通信制御部2213は、通信状態判定処理(ステップS228)の結果に基づき、変換部1111との通信が復帰したか否かを判定する(ステップS229)。
通信制御部2213は、変換部1111との通信が復帰したと判定すると(ステップS229:Yes)、前述のステップS221の処理を実行する。一方、通信制御部2213は、変換部1111との通信が復帰しないと判定すると(ステップS229:No)、再びステップS228の処理を実行する。また、通信制御部2213は、ステップS226の処理において、通信遮断状態が未だ基準時間△T3だけ経過していないと判定すると(ステップS226:No)、通信が遮断した状態で予め設定された基準時間△T2だけ経過したか否かを判定する(ステップS230)。通信制御部2213は、通信遮断状態で予め設定された基準時間△T2だけ経過したと判定すると(ステップS230:Yes)、前述のステップS215の処理を実行する。一方、通信制御部2213は、通信遮断状態で予め設定された基準時間△T2だけ経過していないと判定すると(ステップS230:No)、前述のステップS219の処理を実行する。 なお、通信制御部2213は、通信制御処理の実行途中で、例えばユーザがクライアント装置2012のユーザI/F(図示せず)を介して通信制御処理を終了するよう指示する割り込み命令を発行させると、その時点で通信制御処理を終了する。
ここで、本実施の形態に係るデバイスサーバシステム2の動作について比較例に係るデバイスサーバシステムの動作と比較しながら説明する。比較例に係るデバイスサーバシステムは、ハードウェア構成はデバイスサーバシステム2と同様である。但し、クライアント装置2012のUSBドライバへのダミーのインタラプト応答情報の入力が実行されない点が相違する。例えば図17(A)の矢印AR1に示すように、ユーザが、ディスプレイ14の画面141を見ながら、ファイルF1をフォルダF2上にドラッグする操作を行っているとする。この場合、比較例に係るデバイスサーバシステムでは、ファイルF1を移動させている途中でクライアント装置2012とデバイスサーバ11との間での通信が遮断されると、フォルダF2に至る途中でファイルF1の指定が解除されてしまう。そうすると、図17(A)に示すように、フォルダF2に至る途中でファイルF1が放置され、ユーザはファイルF1をフォルダF2に移動させる操作を行うことができなくなる。
これに対して、本実施の形態に係るデバイスサーバシステム2では、比較例の場合、ファイルF1を移動させている途中でクライアント装置2012とデバイスサーバ11との間での通信が遮断されると、通信制御部2213が、USBドライバ1212へタッチ状態を示すダミーのインタラプト応答情報を出力する。これにより、クライアント装置2012とデバイスサーバ11との間での通信が遮断されている間もファイルF1の指定が維持されるので、図17(B)に示すように、ユーザはファイルF1をフォルダF2に移動させる操作を行うことができる。
以上説明したように、本実施の形態に係るデバイスサーバシステム2によれば、通信制御部2213が、ダミーのインタラプト応答情報をUSBドライバ1212へ出力した後にクライアント装置2012とデバイスサーバ11との間での通信が復帰した場合、USBドライバ1212から入力される、ダミーのインタラプト応答情報に対応するインタラプト要求情報を破棄する。これにより、クライアント装置2012からタッチパネル2013へ転送されるインタラプト要求情報と、タッチパネル2013からクライアント装置2012へ転送されるインタラプト応答情報と、を一対一で対応させることができる。従って、インタラプト要求情報とインタラプト応答情報との不整合に起因して、クライアント装置2012とタッチパネル2013との間でのインタラプト転送の不具合の発生を抑制できる。
(変形例)
以上、本発明の各実施の形態について説明したが、本発明は各実施の形態の構成に限定されるものではない。例えばユーザがクライアント装置のユーザI/Fまたはキーボード13、タッチパネル2013のユーザI/Fを介して、ダミーのインタラプト応答情報をUSBドライバ1212へ出力しないように設定できるようにしてもよい。
各実施の形態では、クライアント装置とキーボード13またはタッチパネル2013との間でインタラプト転送を行う場合について説明したが、デバイスサーバ11に接続されるHIDは、インタラプト転送を行うものに限定されない。例えば、アイソクロナス入力転送、バルク入力転送を実行するHIDであってもよい。
なお、本発明に係るクライアント装置の各種機能は、専用のシステムによらず、コンピュータシステムを用いて実現可能である。例えば、ネットワークに接続されているコンピュータに、上記動作を実行するためのプログラムを、コンピュータシステムが読み取り可能な非一時的な記録媒体(CD−ROM等)に格納して配布し、当該プログラムをコンピュータシステムにインストールすることにより、前述の通信制御処理を実行するクライアント装置を構成してもよい。また、コンピュータにプログラムを提供する方法は任意である。例えば、プログラムは、通信回線のサーバにアップロードされ、通信回線を介してコンピュータに配信されてもよい。
以上、本発明の実施の形態および変形例(なお書きに記載したものを含む。以下、同様。)について説明したが、本発明はこれらに限定されるものではない。本発明は、実施の形態および変形例が適宜組み合わされたもの、それに適宜変更が加えられたものを含む。