(57)【要約】【課題】デバイスがローカル接続されたデバイスサーバにおけるアイソクロナス出力転送において、ネットワークの遅延によるデータ転送量の起伏に伴う転送エラーを回復でき、またアイソクロナス転送で保証すべきデータ転送量を維持でき、アイソクロナス出力転送のネットワーク耐性を向上するデバイスサーバおよびその制御方法を提供する。【解決手段】クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバにおいて、クライアントからアイソクロナス出力転送要求を受信すると、要求された転送データをバッファリングし、ローカル接続されたデバイスに対してアイソクロナス出力転送を行い、アイソクロナス出力転送結果が正常完了または回復不能なエラーの何れでもない場合に、バッファリングされた転送データを再びアイソクロナス出力転送する。【選択図】図１
2015069324.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバであって、
クライアントからアイソクロナス出力転送要求を受信すると要求された転送データをバッファリングするデータバッファ部を備え、
ローカル接続されたデバイスに対してアイソクロナス出力転送を行う際、アイソクロナス出力転送結果が正常完了または回復不能なエラーの何れでもない場合に、前記データバッファ部にバッファリングされた転送データを前記デバイスに対して再びアイソクロナス出力転送することを特徴とするデバイスサーバ。
【請求項２】
前記データバッファ部にバッファリングされた転送データを再びアイソクロナス出力転送するタイミングは、直前のアイソクロナス出力転送結果が正常完了したとき、または、クライアントから次のアイソクロナス出力転送要求を受信したとき、であることを特徴とする請求項１に記載のデバイスサーバ。
【請求項３】
直前のアイソクロナス出力転送要求の転送が正常完了してから所定時間内に次のアイソクロナス出力転送要求を受信しないとき、直前の転送要求時に前記データバッファ部にバッファリングされた転送データをダミーデータとして、デバイスに対してアイソクロナス出力転送を行うことを特徴とする請求項１又は２に記載のデバイスサーバ。
【請求項４】
クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、
クライアントからアイソクロナス出力転送要求を受信する転送要求受信ステップと、
要求された転送データをバッファリングする転送データ保存ステップと、
ローカル接続されたデバイスに対してアイソクロナス出力転送を行う出力転送ステップと、
アイソクロナス出力転送結果が正常完了または回復不能なエラーの何れでもない場合に、前記転送データ保存ステップにおいてバッファリングされた転送データをデバイスに対して再びアイソクロナス出力転送する再転送ステップ、を備えることを特徴とするデバイスサーバ制御方法。
【請求項５】
再転送ステップにおいて、
バッファリングされた転送データを再びアイソクロナス出力転送するタイミングは、直前のアイソクロナス出力転送結果が正常完了したとき、または、クライアントから次のアイソクロナス出力転送要求を受信したとき、であることを特徴とする請求項４に記載のデバイスサーバ制御方法。
【請求項６】
直前のアイソクロナス出力転送要求の転送が正常完了してから所定時間内に次のアイソクロナス出力転送要求を受信しないとき、直前の転送要求時にバッファリングされた転送データをダミーデータとして、デバイスに対してアイソクロナス出力転送を行うダミー転送ステップを更に備えたことを特徴とする請求項４又は５に記載のデバイスサーバ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントとデバイスとの間で、ネットワークを介してアイソクロナス転送を行うデバイスサーバおよびその制御方法に関するものである。
【背景技術】
【０００２】
有線ＬＡＮ（Ｌｏｃａｌ
Ａｒｅａ Ｎｅｔｗｏｒｋ）または無線ＬＡＮなどのネットワークを通じて、コンピュータ周辺機器であるＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ Ｂｕｓ）デバイスを当該ネットワークに接続しているコンピュータ端末（クライアント）から利用することのできるデバイスサーバシステムが知られている（特許文献１、非特許文献１を参照）。
【０００３】
デバイスサーバシステムでは、クライアントのデバイスドライバが発行したコマンド等のデータがネットワークパケット（トンネリングパケットと呼ぶ）に変換され、これがクライアントからデバイスサーバに向けて送信される。当該トンネリングパケットを受信したデバイスサーバは、受信したトンネリングパケットに含まれるコマンド等のデータを取り出し、ＵＳＢ通信に変換して自身にローカル接続されているＵＳＢデバイスに転送する。
【０００４】
デバイスサーバとＵＳＢデバイスとの間における通信は、ＵＳＢ規格の通信に準じている。例えば、クライアントからＵＳＢデバイスへの送信の場合、クライアントからデバイスサーバを経由してＵＳＢデバイスにデータを送信するとともに、随時、ＵＳＢデバイスのステータスに関する応答をクライアントはデバイスサーバ経由で受信する。
【０００５】
ＵＳＢデバイスがスピーカやディスプレイの場合、クライアントからＵＳＢデバイスに対して音声や映像などリアルタイム性を必要とするストリーミングデータを転送する。この場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス方式によるデータ転送（アイソクロナス転送）を行うことにより、途切れることなくデータを転送することができる。
【０００６】
デバイスサーバを介してクライアントとＵＳＢデバイス間でアイソクロナス転送を行う場合、クライアントとＵＳＢデバイスはローカル接続されているのではなく、ネットワーク経由で接続されていることから、ネットワークトラフィックが高くなり、ネットワーク区間のデータ転送速度が低下するため、アイソクロナス転送で保証する最低限のデータ転送量を維持する必要がある。
【０００７】
クライアントからＵＳＢデバイスに対してアイソクロナス転送する場合、ネットワークで生じるデータ転送速度低下の影響をできる限りなくして、アイソクロナス出力転送を維持できるようにすることを目的として、クライアントは、クライアント内でアイソクロナス転送要求に対する（デバイスサーバ経由で）ＵＳＢデバイスからの応答情報を擬制して処理することで、応答情報を受信したものと判断して、ＵＳＢデバイスからの応答情報を待たずに次のアイソクロナス転送要求を送出し、デバイスサーバは、ＵＳＢデバイスからの応答情報を破棄してクライアントへ返送しないように制御する制御方法が知られている（特許文献２）。
特許文献２に開示された制御方法によれば、クライアントは、ＵＳＢデバイスからの応答情報の遅延（受信待ち）によって、次のアイソクロナス転送要求の処理が停滞することがなくなるため、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができ、また、デバイスサーバからネットワーク上に応答情報が送出されなくなるので、ネットワークトラフィックの低減を図ることができる。
【０００８】
上記の特許文献２に開示された制御方法は、クライアントの内部処理において、応答情報を擬製し、応答情報を受信したものと判断して、ＵＳＢデバイスからの応答情報を待たずに次のアイソクロナス転送要求を送出することで、アイソクロナス転送で保証する最低限のデータ転送量を維持するものである。
しかしながら、デバイスサーバは、ＵＳＢデバイスからの応答情報を破棄してクライアントへ返送しないように制御することから、ＵＳＢデバイスからの応答情報が回復不能なエラー（致命的なエラー）の場合であっても、クライアントは次のアイソクロナス転送要求を送出することになり、好ましくないという問題がある。
【０００９】
また、デバイスサーバの内部処理において、アイソクロナス転送要求に対するＵＳＢデバイスからの応答情報を擬製してダミー応答データをクライアントに送信するデバイスサーバの制御方法が知られている（特許文献３）。
特許文献３に開示された制御方法によれば、クライアントは、ＵＳＢデバイスからの応答情報の遅延（受信待ち）によって、次のアイソクロナス転送要求の処理が停滞することがなくなるため、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができる。
【００１０】
しかしながら、特許文献３に開示された制御方法を実行するデバイスサーバは、所定時間経過してもＵＳＢデバイスからの応答情報を受け取らなかった場合には、ＵＳＢデバイスからの応答情報を擬製してダミー応答データをクライアントに送信することから、ＵＳＢデバイス自体が回復不能なステータス（致命的なステータス）の場合であっても、クライアントは次のアイソクロナス転送要求を送出することになり、好ましくないという問題がある。また、特許文献３に開示された制御方法を実行するデバイスサーバは、所定時間内に受け取ったＵＳＢデバイスからの応答情報をそのままクライアントに送信するので、応答情報にエラーがあった場合に、クライアントがデバイスサーバとの通信セッションをすぐに切断してしまうという問題がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００８−２８７４５３号公報
【特許文献２】特開２０１２−１３８６９４号公報
【特許文献３】特許第４６１７４４０号公報
【非特許文献】
【００１２】
【非特許文献１】サイレックス・テクノロジー株式会社ホームページ＜http://www.silex.jp/products/usbdeviceserver/sx3000gb.html＞
【発明の概要】
【発明が解決しようとする課題】
【００１３】
従来、クライアントは数百ミリ秒先読みしてアイソクロナス転送要求し、ネットワークの遅延を担保している。デバイスサーバでは、クライアントよりスケジューリングされたアイソクロナス転送要求をそのままに、ＵＳＢデバイスに対してアイソクロナス転送を行っている。
しかし、特に無線ＬＡＮの場合は電波状況によりネットワークのリンク切れやアグリゲーションの弊害によってネットワーク転送が滞り、クライアントによる数百ミリ秒の先読みだけでは担保できないことがある。
【００１４】
一旦、無線ＬＡＮレベルでリンクが切れて復帰した場合に、クライアントから一度に複数のアイソクロナス転送要求が出されて、大量のデータが転送される場合がある。デバイスサーバでは、クライアントのアイソクロナス転送要求をそのままに、ＵＳＢデバイスに対してアイソクロナス転送を行っているため、アイソクロナス転送のスケジューリングができない現象が発生する。この場合、ＵＳＢ規格の通信エラー（スケジューラのバッファ空きが無いためにデータフローを生じたというスタックレベルのエラー）として応答される。
クライアントは、ＵＳＢデバイスのステータスに関する応答をデバイスサーバ経由で受信するため、こうした回復不能でないエラーにも関わらず、クライアントはデバイスサーバとのセッションを切断してしまい、アイソクロナス転送は終了してしまう。
【００１５】
このように、従来のデバイスサーバにおけるアイソクロナス転送では、ネットワークの遅延によるデータ転送量の起伏に伴う転送エラーを回復することができない。また従来のデバイスサーバでは、クライアントのアイソクロナス転送要求をそのままに、ＵＳＢデバイスに対してアイソクロナス転送を行っているためにアイソクロナス転送で保証すべきデータ転送量を維持できない。すなわち、従来のデバイスサーバにおけるアイソクロナス転送方式では、ネットワーク耐性が弱いという問題がある。
【００１６】
上記状況に鑑みて、本発明は、デバイスがローカル接続されたデバイスサーバにおけるアイソクロナス出力転送において、ネットワークの遅延によるデータ転送量の起伏に伴う転送エラーを回復でき、またアイソクロナス転送で保証すべきデータ転送量を維持でき、アイソクロナス出力転送のネットワーク耐性を向上するデバイスサーバおよびデバイスサーバ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成すべく、本発明のデバイスサーバは、クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバにおいて、クライアントからアイソクロナス出力転送要求を受信すると、要求された転送データをバッファリングするデータバッファ部を備え、ローカル接続されたデバイスに対してアイソクロナス出力転送を行い、アイソクロナス出力転送結果が正常完了または回復不能なエラーの何れでもない場合に、データバッファ部にバッファリングされた転送データをデバイスに対して再びアイソクロナス出力転送する。
【００１８】
ここで、クライアントとは、パーソナルコンピュータなどの一般的なコンピュータ端末を意味し、ネットワークに接続され、デバイスサーバにローカル接続されたデバイスに対してアイソクロナス出力転送を行う装置である。またデバイスとは、デバイスサーバにローカル接続され、ＵＳＢ通信規格などのデータ通信方式によって、デバイスサーバとデータ通信できる装置である。
また、アイソクロナス出力転送結果において回復不能なエラーとは、デバイスの故障や電源ＯＦＦによるデータ通信プロトコルのエラーであり、一方、回復不能ではないエラーとは、前述のようにデータ転送スケジューラのバッファに空きがないためのデータフローによるエラーである。
【００１９】
本発明のデバイスサーバは、アイソクロナス出力転送結果が正常完了または回復不能なエラーの場合、クライアントに転送結果を送付する一方、アイソクロナス出力転送結果が回復不能ではないエラーの場合、バッファリングされた転送データをデバイスに対して再びアイソクロナス出力転送することにより、クライアントとデバイスサーバのセッションを継続し、アイソクロナス転送で保証すべきデータ転送量を維持する。
本発明のデバイスサーバは、スケジューリングできなかったアイソクロナス出力データをデバイスサーバ内でバッファリングしておき、先のアイソクロナス出力転送完了時に再スケジュールすることで、出力データを途切れなく転送する。無線ＬＡＮのようにネットワークのリンク切れやアグリゲーションの弊害でデータ転送が滞るような事象が発生する場合に、特に効果を期待することができる。
【００２０】
本発明のデバイスサーバにおいて、バッファリングされた転送データを再びアイソクロナス出力転送するタイミングは、「直前のアイソクロナス出力転送結果が正常完了したとき」、または、「クライアントから次のアイソクロナス出力転送要求を受信したとき」である。
【００２１】
バッファリングされた転送データを再びアイソクロナス出力転送するタイミングとして、「直前のアイソクロナス出力転送結果が正常完了したとき」とするのは、データ転送スケジューラのバッファに空きがないためのデータフローによる回復不能ではないエラーの場合、後にバッファに空きができエラーが解消することが推測できるためである。
また、バッファリングされた転送データを再びアイソクロナス出力転送するタイミングとして、「クライアントから次のアイソクロナス出力転送要求を受信したとき」とするのは、クライアントのアイソクロナス出力転送のスケジュールと同期させるためである。
【００２２】
本発明のデバイスサーバにおいて、直前のアイソクロナス出力転送要求の転送が正常完了してから所定時間内に次のアイソクロナス出力転送要求を受信しないとき、直前の転送要求時にバッファリングされた転送データをダミーデータとして、デバイスに対してアイソクロナス出力転送を行うことが好ましい。
【００２３】
アイソクロナス出力転送要求の転送が正常完了してから所定時間内に次のアイソクロナス出力転送要求を受信しないとき、デバイスに対してアイソクロナス転送で保証すべきデータ転送量を維持することができない。
デバイスに対してアイソクロナス転送で保証すべきデータ転送量を維持するために、バッファリングされた転送データをダミーデータとして、デバイスに対してアイソクロナス出力転送を行う。
【００２４】
また、本発明のデバイスサーバの制御方法は、クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、下記１）〜３）のステップを備える。
１）クライアントからアイソクロナス出力転送要求を受信する転送要求受信ステップと、要求された転送データをバッファリングする転送データ保存ステップ
２）ローカル接続されたデバイスに対してアイソクロナス出力転送を行う出力転送ステップ
３）アイソクロナス出力転送結果が正常完了または回復不能なエラーの何れでもない場合に、バッファリングされた転送データをデバイスに対して再びアイソクロナス出力転送する再転送ステップ
【００２５】
本発明のデバイスサーバの制御方法における再転送ステップにおいて、バッファリングされた転送データを再びアイソクロナス出力転送するタイミングは、直前のアイソクロナス出力転送結果が正常完了したとき、または、クライアントから次のアイソクロナス出力転送要求を受信したときである。
【００２６】
本発明のデバイスサーバの制御方法において、直前のアイソクロナス出力転送要求の転送が正常完了してから所定時間内に次のアイソクロナス出力転送要求を受信しないとき、直前の転送要求時にバッファリングされた転送データをダミーデータとして、デバイスに対してアイソクロナス出力転送を行うダミー転送ステップを更に備えることが好ましい。
【発明の効果】
【００２７】
本発明は、デバイスがローカル接続されたデバイスサーバにおけるアイソクロナス出力転送において、ネットワークの遅延によるデータ転送量の起伏に伴う転送エラーを回復でき、またアイソクロナス転送で保証すべきデータ転送量を維持でき、アイソクロナス出力転送のネットワーク耐性を向上するといった効果を奏する。
【図面の簡単な説明】
【００２８】
【図１】デバイスサーバシステムの機能ブロック図
【図２】アイソクロナス出力転送を行うデバイスサーバシステムの概念図
【図３】従来のデバイスサーバの制御フロー図
【図４】ネットワークを介したアイソクロナス出力転送のエラー発生の説明図
【図５】従来のデバイスサーバシステムのデータフロー図
【図６】本発明のデバイスサーバシステムのデータフロー図（１）
【図７】本発明のデバイスサーバの制御フローチャート（１）
【図８】本発明のデバイスサーバの制御フローチャート（２）
【図９】本発明のデバイスサーバシステムのデータフロー図（２）
【図１０】本発明のデバイスサーバシステムのデータフロー図（３）
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施形態について、図面を参照しながら詳細に説明していく。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
【実施例１】
【００３０】
図１は、デバイスサーバシステムの機能ブロックの一例を示している。
図１に示すデバイスサーバシステムでは、クライアント２０からネットワーク４０経由でデバイスサーバ１０にローカル接続されているＵＳＢデバイス３０を制御する。
なお、ネットワーク４０は、有線もしくは無線のネットワークである。また図１では、クライアント２０とデバイスサーバ１０は１：１で接続されているが、それぞれ複数存在し、Ｎ：１、１：Ｎ、Ｎ：Ｍ（Ｎ，Ｍは２以上の自然数）で接続されるものでもよい。また、デバイスサーバ１０にローカル接続されるＵＳＢデバイスは２台以上でもよい。
【００３１】
ここで、クライアント２０は、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、図示しないＣＰＵ、入力部、表示部、メモリ、外部記憶部、図示する通信インタフェース２５などが内部バスで接続されている。
このクライアント２０には、外部記憶部に格納され、実行時にメモリに搭載されるアプリケーション２１とデバイスドライバ２２とＵＳＢクラスドライバ２３とトンネリングドライバ２４がソフトウェア部品として存在する。
この他、ソフトウェア部品として、ＯＳ（Operating
System）、常駐モジュール、データ通信制御プログラムなどがあり、制御に必要な各種データと共に外部記憶部に格納されている。これらソフトウェア部品及び各種データは、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御が実行される。
【００３２】
常駐モジュールは、ＯＳが起動している間、常に待機及び動作しているソフトウェア部品であり、ネットワーク４０を介してデバイスサーバ１０とデータ送受信を行う。またデバイスサーバ１０にローカル接続されているＵＳＢデバイス３０を認識して識別するためのＵＳＢデバイス情報を受信する。受信したＵＳＢデバイス情報に基づいて、ＵＳＢデバイス３０とのデータ送受信に必要となるデバイスドライバ２２、ＵＳＢクラスドライバ２３を生成し、ＵＳＢデバイス３０を制御できる状態にする。
【００３３】
デバイスドライバ２２は、ＯＳやアプリケーション２１、常駐モジュールなど上位プログラムからのデータ入出力要求を、データ入出力対象のＵＳＢデバイス３０に応じたデータ形式に変換し、また、ＵＳＢデバイス３０からの応答を上位プログラムへ渡す。
上位プログラムからのアイソクロナス転送によるデータ出力要求（以下、アイソクロナス出力要求）についても、同様に、アイソクロナス出力対象のＵＳＢデバイス３０に応じたデータ形式に変換される。
【００３４】
ＵＳＢクラスドライバ２３は、デバイスドライバ２２によって、ＵＳＢデバイス３０に応じたデータ形式に変換されたデータ入出力要求を、ＵＳＢのデータ形式に準拠したパケットデータに変換してトンネリングドライバ２４に渡し、またトンネリングドライバ２４から送られてくるＵＳＢのデータ形式に準拠したパケットデータを、データ形式変換してデバイスドライバ２２へ渡す。
【００３５】
またトンネリングドライバ２４は、ＵＳＢクラスドライバ２３から渡されたパケットデータをネットワークパケットにカプセル化する。その一方で、デバイスサーバ１０からネットワークパケットを受信すると、このネットワークパケットから応答パケットデータを取り出し（デカプセルして）、ＵＳＢクラスドライバ２３，デバイスドライバ２２に受け渡す。
【００３６】
一方、デバイスサーバ１０には、通信インタフェース１１とトンネリングドライバ１２とＵＳＢドライバ１３、およびデータバッファ部１４が搭載されている。
トンネリングドライバ１２では、クライアント２０からネットワークパケットを受信すると、このネットワークパケットからＵＳＢのデータ形式に準拠したパケットデータを取り出し（デカプセルして）、ＵＳＢドライバ１３に送る。また、ＵＳＢドライバ１３からＵＳＢのデータ形式に準拠したパケットデータを受け取って、ネットワークパケットにカプセル化する。
【００３７】
図２に示すように、クライアント２０にマイク２８が接続され、ＵＳＢデバイスとしてスピーカ３２がＵＳＢ接続ケーブル３１を介してデバイスサーバ１０に接続されているシステムでは、クライアント２０のマイク２８からネットワークを介してスピーカ３２に対して音声データをストリーミングデータとして転送する。この場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス出力転送によって、音声データが途切れることなくスピーカに転送される。
【００３８】
図３は従来のデバイスサーバの制御フローを示している。従来のデバイスサーバは、クライアントからアイソクロナス出力転送要求を受信した場合（Ｓ３１）、受信データをＵＲＢ（USB Request Block）単位でＵＳＢドライバに転送する（Ｓ３３）。そして、デバイスサーバは、ＵＳＢドライバから転送結果を受け取り、転送結果を判別する。転送結果としてエラーを受け取ると（Ｓ３５）、クライアントに転送結果（エラー）を送付する（Ｓ３７）。
【００３９】
図４はネットワークを介したアイソクロナス出力転送におけるデータ転送量のグラフである。アイソクロナス出力転送では、常に一定量のデータ流量が要求される。正常時は、図４に示すように、データ転送量は一定値１０００（bps）となっている。一方、異常時は、２００〜４００（ms）の間でネットワークに遅延が発生し、復旧した瞬間（500ms目）にて想定外にデータが流れている。想定外にデータが流れている状況下で、ＵＳＢドライバにデータ転送要求するとエラーとなる。
【００４０】
図５は従来のデバイスサーバシステムのデータフローを示している。図５のデータフローは、クライアント２０がデバイスサーバ１０とネットワークで接続され、デバイスサーバ１０とＵＳＢデバイス３０がＵＳＢ接続されている状況下で、クライアント２０からアイソクロナス出力転送要求が出され、ＵＳＢドライバ１３がエラー応答する場合を示している。先ず、クライアント２０からアイソクロナス出力転送要求（Isoc−out転送要求Ｃ１）があり、デバイスサーバ１０のトンネリングドライバ１２がそれを受けてＵＳＢドライバ１３にアイソクロナス出力転送要求（Isoc−out転送要求Ｃ２）を行う。ＵＳＢドライバ１３はＵＳＢデバイス３０に対してＵＲＢ単位でアイソクロナス出力転送要求（Isoc−out転送要求Ｃ３〜Ｃ６，Ｃ８）を行う。アイソクロナス出力転送が無事完了すると、転送応答（ＯＫ）Ｃ９がＵＳＢドライバ１３から出され、トンネリングドライバ１２によってクライアント２０に転送完了応答Ｃ１０が送られる。
【００４１】
しかしながら、ネットワークレベルでリンクが切れて復帰した際に、クライアントから一度に複数のアイソクロナス転送要求が出されて、大量のデータが転送される場合がある。
この場合、例えば、クライアント２０からアイソクロナス出力転送要求（Isoc−out転送要求Ｃ１）に続いて、次のアイソクロナス出力転送要求（Isoc−out転送要求Ｃ７）が出され、デバイスサーバ１０のトンネリングドライバ１２がそれを受けてＵＳＢドライバ１３にアイソクロナス出力転送要求（Isoc−out転送要求Ｃ１１）を行うものの、アイソクロナス転送のスケジューリングができない現象が発生し、ＵＳＢドライバ１３から転送応答Ｃ１３としてエラーが返される場合がある。トンネリングドライバ１２は、クライアント２０に転送エラー応答Ｃ１４を送る。これにより、アイソクロナス出力転送のセッションが切断となる。
すなわち、従来のデバイスサーバでは、ＵＳＢドライバ１３のスケジューラがスケジューリングできないほどのアイソクロナス出力転送要求が出されると、ＵＳＢドライバ１３はエラー応答を返し、そのエラーはそのままクライアント２０まで返ってしまうため、クライアントとデバイスサーバの間の通信セッションが切断されてしまうことになる。
【００４２】
図６は、本発明のデバイスサーバシステムのデータフローを示している。
図６に示すように、本発明のデバイスサーバシステムの場合、アイソクロナス転送のスケジューリングができない現象が発生し、ＵＳＢドライバ１３から転送応答Ｃ１３としてエラーが返された際に、データバッファ部１４にバッファリングされた転送データをＵＳＢデバイス３０に対して再びアイソクロナス出力転送要求（Isoc−out転送要求Ｃ１５）することにより、クライアント２０とデバイスサーバ１０のセッションを継続し、アイソクロナス転送で保証すべきデータ転送量を維持する。
【００４３】
アイソクロナス出力転送において、ＵＳＢドライバ１３が転送応答としてエラーを返す場合は、回復不能なエラーと回復不能ではないエラーに分類できる。回復不能なエラーは、デバイスの故障や電源ＯＦＦによるデータ通信プロトコルのエラーである。また回復不能ではないエラーとは、データ転送スケジューラのバッファに空きがないためのデータフローによるエラーである。
【００４４】
データ転送スケジューラのバッファに空きがないためのデータフローによるエラーの場合、後にバッファに空きができエラーが解消することが推測できることから、デバイスサーバ１０内のトンネリングドライバ１２の処理により、直前の転送データがデータバッファ部１４にバッファリングされ、そのバッファリングされた転送データを再びアイソクロナス出力転送要求する。ＵＳＢドライバ１３はＵＳＢデバイス３０に対してＵＲＢ単位でアイソクロナス出力転送要求（Isoc−out転送要求Ｃ１６〜Ｃ２０）を行う。アイソクロナス出力転送が無事完了すると、転送応答（ＯＫ）Ｃ２１がＵＳＢドライバ１３から出され、トンネリングドライバ１２によってクライアント２０に転送完了応答Ｃ２２が送られる。
【００４５】
図７は、本発明のデバイスサーバの制御フローチャートである。
デバイスサーバ１０、クライアント２０からアイソクロナス出力転送要求を受信した場合（Ｓ１０１）、データバッファ部１４に転送データを保存し（Ｓ１０３）、ＵＲＢ単位でＵＳＢデバイスにデータ転送する（Ｓ１０５）。そして、ＵＳＢドライバから転送結果を受信し、その結果が正常終了（ＯＫ）であった場合（Ｓ１０７）、クライアント２０に転送結果（ＯＫ）を応答し（Ｓ１０９）、クライアント２０から次のアイソクロナス出力転送要求を待つ。
【００４６】
一方、ＵＳＢドライバから転送結果を受信し、その結果がエラーであった場合（Ｓ１０７）、そのエラーが致命的なエラーか否かを判別する（Ｓ１１１）。転送結果が致命的なエラーであった場合、クライアントに転送結果（エラー）を応答し（Ｓ１１３）、クライアント２０から次のアイソクロナス出力転送要求を待つ。
一方、転送結果のエラーが致命的なエラーでない場合、一過性のエラーと判断し、バッファ上のいずれかのデータをＵＲＢ単位で転送完了している場合（Ｓ１１５においてＹｅｓの場合）、データバッファ部１４の転送データをＵＳＢデバイスに再転送する（Ｓ１１７）。転送完了しない場合（Ｓ１１５においてＮｏの場合）、クライアントから次の転送要求を受信したか否かを判断し、受信したと判断する場合（Ｓ１１９においてＹｅｓの場合）、バッファ上の転送データをＵＳＢデバイスに再転送する（Ｓ１１７）。一方、クライアントから次の転送要求を受信しない場合（Ｓ１１９においてＮｏの場合）、一過性のエラーが継続していると判断し、バッファ上のいずれかのデータをＵＲＢ単位で転送完了しているか（Ｓ１１５）の判断フローへ戻る。
【００４７】
また、本発明のデバイスサーバは、図８に示す制御フローを行う。すなわち、直前のアイソクロナス出力転送要求の転送完了（結果ＯＫ）から所定時間内に次の転送要求を受信していない場合（Ｓ２１）、バッファ上のデータをダミーデータとして転送（ＵＲＢ単位）する（Ｓ２３）。
本発明のデバイスサーバは、図８に示す制御フローを行うことにより、直前のアイソクロナス出力転送要求に基づくデータ転送が正常完了してから所定時間内に次のアイソクロナス出力転送要求を受信しないとき、直前の転送要求時にバッファリングされた転送データをダミーデータとして、ＵＳＢデバイスに対してアイソクロナス出力転送を行うことにより、アイソクロナス転送で保証すべきデータ転送量を維持することができる。
図８に示す制御フローを行った場合のデータフローについて、図９，１０を参照して説明する。
【００４８】
図９に示すように、トンネリングドライバ１２によってクライアント２０に転送完了応答Ｃ９が送られた後、所定時間内に次のアイソクロナス出力転送要求を受信しないとき（Ｃ１０）、デバイスサーバ１０はダミーデータ（直前の転送要求時にバッファリングされた転送データ）をアイソクロナス出力転送要求し（Ｃ１１）、ＵＳＢドライバ１３はＵＳＢデバイス３０に対してＵＲＢ単位でアイソクロナス出力転送要求（Isoc−out転送要求Ｃ１２、Ｃ１５〜Ｃ１８）を行う。アイソクロナス出力転送が無事完了すると、転送応答（ＯＫ）Ｃ１９がＵＳＢドライバ１３から出され、トンネリングドライバ１２によってクライアント２０に転送完了応答Ｃ２０が送られる。
このダミーデータをアイソクロナス出力転送している途中で、クライアント２０からアイソクロナス出力転送要求があった場合（Ｃ１３），デバイスサーバ１０はその要求を破棄する（Ｃ１４）。
【００４９】
デバイスサーバ１０は、所定時間内に次のアイソクロナス出力転送要求を受信しないときに、直前の転送要求時にバッファリングされた転送データをダミーデータとしてアイソクロナス出力転送要求することで、図１０に示すようにＵＳＢデバイス３０に一定間隔でデータ転送することが可能になる。
【００５０】
なお、これまでの実施例では、クライアントがネットワークを介してＵＳＢデバイスを利用するデバイスサーバシステムを例に説明したが、本発明の適用範囲はこれに限定されず、ＵＳＢ通信規格と同等の通信方式、例えば、ＩＥＥＥ１３９４など別のインタフェースに準拠したものであってもよい。
【産業上の利用可能性】
【００５１】
本発明は、ＵＳＢデバイスなどの周辺デバイスの利便性を高めるデバイスサーバシステムに有用である。
【符号の説明】
【００５２】
１０  デバイスサーバ
２０  クライアント
２８  マイク
３０  ＵＳＢデバイス
３１  ＵＳＢ接続ケーブル
３２  スピーカ
４０  ネットワーク
【図１】
2015069324.tif 000003
【図２】
2015069324.tif 000004
【図３】
2015069324.tif 000005
【図４】
2015069324.tif 000006
【図５】
2015069324.tif 000007
【図６】
2015069324.tif 000008
【図７】
2015069324.tif 000009
【図８】
2015069324.tif 000010
【図９】
2015069324.tif 000011
【図１０】
2015069324.tif 000012