(57)【要約】【課題】アイソクロナス転送のアシンクロナス（非同期）モードにおいて、アイソクロナス転送で保証すべきデータ転送量を維持できるデバイスサーバを提供する。【解決手段】データバッファ部と、デバイスからフィードバックデータ（ＦＢＤ）を受信し解析するＦＢＤ解析部を備え、クライアントからアイソクロナス入力転送要求を受信すると、アイソクロナス出力転送データをデータバッファ部に蓄積する。データバッファ部の保持データ量が上限閾値に到達したら、データバッファ部に蓄積されたアイソクロナス出力転送データをデバイスに対してアイソクロナス出力転送する。デバイスからＦＢＤを受信し、ＦＢＤ解析部によるＦＢＤの解析の結果、デバイス内のバッファメモリが適量よりも少ないと判別し、かつ、保持データ量が下限閾値に到達していない場合、データバッファ部に蓄積された転送データをデバイスに対してアイソクロナス出力転送する。【選択図】図３
2016051347.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバであって、
データバッファ部と、
前記デバイスからフィードバックデータ（ＦＢＤ）を受信して解析するＦＢＤ解析部と、
を備え、
前記クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信すると前記クライアントから送信されたアイソクロナス出力転送データを前記データバッファ部に蓄積し、
前記データバッファ部の保持データ量が上限閾値に到達した場合に、前記データバッファ部に蓄積された前記アイソクロナス出力転送データを、前記デバイスに対してアイソクロナス出力転送し、
前記デバイスから前記フィードバックデータを受信し、
前記ＦＢＤ解析部による前記フィードバックデータの解析の結果、前記デバイス内のバッファメモリが適量よりも少ないと判別した場合で、かつ、前記データバッファ部の前記保持データ量が下限閾値に到達していない場合に、前記データバッファ部に蓄積された前記アイソクロナス出力転送データを、前記デバイスに対して前記アイソクロナス出力転送する、ことを特徴とするデバイスサーバ。
【請求項２】
前記クライアントから前記アイソクロナス入力転送要求を受信すると、前記フィードバックデータを受信していれば、最新の前記フィードバックデータを前記クライアントに対する転送完了応答として返し、前記フィードバックデータを受信していなければ、前記クライアントに対してダミーデータを前記転送完了応答として返す、ことを特徴とする請求項１に記載のデバイスサーバ。
【請求項３】
前記クライアントから前記アイソクロナス入力転送要求を受信すると、
（ａ）前記フィードバックデータに依拠することなく前記デバイスに前記アイソクロナス入力転送要求を行うモード（通常モード）と、
（ｂ）前記クライアントから送信されたアイソクロナス出力転送データを前記データバッファ部に蓄積して、前記フィードバックデータを解析しながら前記アイソクロナス入力転送要求を行う、フィードバックデータ制御モード（ＦＢＤ制御モード）と
の間で切替し得る、ことを特徴とする請求項１又は２に記載のデバイスサーバ。
【請求項４】
クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、
前記クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信する転送要求受信ステップと、
前記クライアントから前記アイソクロナス入力転送要求を受信すると前記クライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積する転送データ保存ステップと、
前記データバッファ部の保持データ量が上限閾値に到達した場合に、前記データバッファ部に蓄積された前記アイソクロナス出力転送データを、前記デバイスに対してアイソクロナス出力転送する転送ステップと、
前記デバイスから前記フィードバックデータを受信し解析するＦＢＤ解析ステップと、
前記ＦＢＤ解析ステップによる前記フィードバックデータの解析の結果、前記デバイス内のバッファメモリが適量よりも少ないと判別した場合で、かつ、前記データバッファ部の前記保持データ量が下限閾値に到達していない場合に、前記データバッファ部に蓄積されたアイソクロナス出力転送データを、前記デバイスに対して前記アイソクロナス出力転送する出力転送ステップと、
を備えたことを特徴とするデバイスサーバ制御方法。
【請求項５】
前記転送要求受信ステップにおいて、前記クライアントから前記アイソクロナス入力転送要求を受信した際、前記デバイスから前記フィードバックデータを受信していれば、最新の前記フィードバックデータを前記クライアントに対する転送完了応答として返し、前記フィードバックデータを受信していなければ、前記クライアントに対してダミーデータを前記転送完了応答として返すクライアント応答ステップを、
更に備えたことを特徴とする請求項４に記載のデバイスサーバ制御方法。
【請求項６】
請求項１〜３の何れかに記載のデバイスサーバと、ネットワークを介して接続され、前記デバイスサーバにローカル接続された前記デバイスに前記アイソクロナス転送を行うクライアントであって、
ＵＳＢデバイスドライバが発行したアイソクロナス入出力転送データを受け取り、該アイソクロナス入出力転送データをＩＰパケットに変換して通信制御ドライバに引き渡す手段と、
前記通信制御ドライバを介して、前記デバイスサーバから転送完了応答を受け取った場合に、前記転送完了応答を前記ＵＳＢデバイスドライバに返し、前記デバイスサーバから前記転送完了応答を受け取っていない場合にはダミーデータを前記ＵＳＢデバイスドライバに返す手段と、を備えることを特徴とするクライアント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントとデバイス（特に、オーディオデバイス）との間で、ネットワークを介してアシンクロナス（非同期）モードのアイソクロナス転送を行うデバイスサーバおよびその制御方法に関するものである。
【背景技術】
【０００２】
近年、有線ＬＡＮ（Ｌｏｃａｌ Ａｒｅａ Ｎｅｔｗｏｒｋ）または無線ＬＡＮなどのＩＰネットワークはますます広がり、人々の生活のインフラとなっている。ネットワークＩ／Ｆ（インタフェース）の低価格化も進んでいる。
また、コンピュータにローカル接続されていた周辺機器は、ＩＰネットワークが周辺機器の制御データの送受信に十分耐えるほど高速化した現在において、コンピュータとＩＰネットワークを介して周辺機器の制御が可能になっている。
このような状況下、ＩＰネットワークを通じて、コンピュータの周辺機器であるＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ Ｂｕｓ）デバイスを当該ネットワークに接続しているコンピュータから利用することのできるデバイスサーバシステムが知られている（特許文献１、非特許文献１を参照）。
【０００３】
デバイスサーバシステムでは、クライアントのＵＳＢデバイスドライバが発行した制御コマンド等のＵＳＢデータがＩＰパケットに変換され（カプセル化）、これがクライアントからデバイスサーバに向けて送信される。ＩＰパケットを受信したデバイスサーバは、受信したＩＰパケットに含まれる制御コマンド等のＵＳＢデータを取り出し（デカプセル化）、ＵＳＢ通信に変換してデバイスサーバ自身にローカル接続されているＵＳＢデバイスに転送する。
【０００４】
デバイスサーバとＵＳＢデバイスとの間における通信は、ＵＳＢ規格の通信に準じている。例えば、クライアントからＵＳＢデバイスへの送信の場合、クライアントからデバイスサーバを経由してＵＳＢデバイスにデータを送信するとともに、随時、ＵＳＢデバイスのステータスに関する応答をクライアントはデバイスサーバ経由で受信する。
【０００５】
ＵＳＢデバイスがスピーカの場合、クライアントからＵＳＢデバイスに対して音声などリアルタイム性を必要とするストリーミングデータを転送する。この場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス方式によるデータ転送（アイソクロナス転送）を行うことにより、途切れることなくデータを転送することができる。
【０００６】
デバイスサーバを介してクライアントとＵＳＢデバイス間でアイソクロナス転送を行う場合、クライアントとＵＳＢデバイスはローカル接続されているのではなく、ネットワーク経由で接続されていることから、ネットワークトラフィックが高くなり、ネットワーク区間のデータ転送速度が低下しても、アイソクロナス転送で保証する最低限のデータ転送量を維持する必要がある。
【０００７】
デバイスサーバの内部処理において、アイソクロナス転送要求に対するＵＳＢデバイスからの応答情報をダミー応答してクライアントのデバイスドライバに送信するデバイスサーバの制御方法が知られている（特許文献２）。
特許文献２に開示された制御方法によれば、クライアントは、ＵＳＢデバイスからの応答情報の遅延（受信待ち）によって、次のアイソクロナス転送要求の処理が停滞することがなくなるため、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができる。
【０００８】
しかしながら、特許文献２に開示されたデバイスサーバの制御方法では、所定時間経過してもＵＳＢデバイスからの応答情報を受け取らなかった場合には、ＵＳＢデバイスからの応答情報を擬製してダミー応答データをクライアントのデバイスドライバに送信することから、ネットワーク自体が回復不能なステータス（致命的なステータス）の場合であっても、クライアントは次のアイソクロナス転送要求を送出する一方、デバイスサーバはこれを受け取れず、デバイスに渡せないことになり、好ましくないという問題がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−２８７４５３号公報
【特許文献２】特許第４６１７４４０号公報
【非特許文献】
【００１０】
【非特許文献１】サイレックス・テクノロジー株式会社ホームページ＜http://www.silex.jp/products/usbdeviceserver/sx3000gb.html＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
従来、クライアントは数百ミリ秒先読みしてアイソクロナス転送要求し、ネットワークの遅延を担保している。デバイスサーバでは、クライアントよりスケジューリングされたアイソクロナス転送要求をそのままに、ＵＳＢデバイスに対してアイソクロナス転送を行っている。
しかし、特に無線ＬＡＮの場合は電波状況によりネットワークのリンク切れやアグリゲーションの弊害によってネットワーク転送が滞り、クライアントによる数百ミリ秒の先読みだけでは担保できないことがある。
【００１２】
一旦、無線ＬＡＮレベルでリンクが切れて復帰した場合に、クライアントから一度に複数のアイソクロナス転送要求が出されて、大量のデータが転送される場合がある。デバイスサーバでは、クライアントのアイソクロナス転送要求をそのままに、ＵＳＢデバイスに対してアイソクロナス転送を行っているため、アイソクロナス転送のスケジューリングができない現象が発生する。この場合、通信エラー（例えば、スケジューラのバッファ空きが無いためにオーバーフローを生じたというスタックレベルのエラーなど）として応答される。
クライアントは、ＵＳＢデバイスのステータスに関する応答をデバイスサーバ経由で受信するため、こうした回復不能でないエラーにも関わらず、クライアントはデバイスサーバとのセッションを切断してしまい、アイソクロナス転送は終了してしまう。
【００１３】
このように、従来のデバイスサーバにおけるアイソクロナス転送では、ネットワークの遅延によるデータ転送量の起伏に伴う影響を回避できず、クライアントのアイソクロナス転送要求をそのままに、ＵＳＢデバイスに対してアイソクロナス転送を行っているためにアイソクロナス転送で保証すべきデータ転送量を維持できない。すなわち、従来のデバイスサーバにおけるアイソクロナス転送方式では、ネットワーク耐性が弱いという問題がある。
【００１４】
特に、ＵＳＢで接続されるスピーカなどのＵＳＢオーディオ機器の場合、音声データを扱うためデータが途切れ途切れになると問題となる。そのため、アイソクロナス転送方式を利用する。アイソクロナス転送方式には、音声データと一緒にそれに関連付いたクライアントＰＣ側のクロック信号とＵＳＢ−ＤＡＣ側のＵＳＢホストコントローラを同期させるシンクロナス（同期）モードと、クライアントＰＣ側のクロック信号に同期して動作するアダプティブモードと、ＵＳＢ−ＤＡＣ或はＵＳＢ−ＤＡＣを内蔵するＵＳＢオーディオ機器の内部にある高精度なクロックによって独自に動作するアシンクロナス（非同期）モードに分かれる。
【００１５】
アシンクロナス（非同期）モードの場合、フィードバックデータ（以下、ＦＢＤと略する）と呼ばれるデバイスからクライアントＰＣ側へ向けて送られるデバイスのバッファメモリの状態ステータスによって、デバイス側のバッファメモリが常に適量に保たれるように、クライアントＰＣへフィードバック制御が行われる。ここで、バッファメモリとは、情報を一時保存する記憶領域のことであり、デバイス内に備わるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｓｅｓｓ  Ｍｅｍｏｒｙ）などに確保されるメモリ領域である。デバイス側のバッファメモリにデータ量が適量よりも増加した場合、クライアントＰＣへ転送データ量を減らすという情報を返し、一方、データ量が適量よりも減少した場合、転送データ量を増やすという情報を返して、デバイス側のバッファメモリを適量に維持する。すなわち、アシンクロナス（非同期）モードでは、デバイスは、バッファメモリのデータ量の増減などをコントロールする応答をクライアントＰＣに返すことにより、デバイス側のバッファメモリが常に一定のデータ量に保たれるように制御するモードである。アシンクロナス（非同期）モードでは、クライアントＰＣ側のクロックを使わず、デバイス側の固定クロックを使うことが可能となるため、クライアントＰＣに実装されている水晶発振器が発するジッターの影響を受け難く、高音質（ハイレゾ音源など）をデバイス（スピーカー）から出力することができる。
【００１６】
デバイスがローカル接続されたデバイスサーバにおけるアイソクロナス出力転送のアシンクロナス（非同期）モードにおいても、ネットワークの遅延によるデータ転送量の起伏に伴う影響を無くし、アイソクロナス転送で保証すべきデータ転送量を維持でき、アイソクロナス出力転送のネットワーク耐性を向上することが求められている。
上記状況に鑑みて、本発明は、デバイスがローカル接続されたデバイスサーバにおけるアイソクロナス出力転送のアシンクロナス（非同期）モードにおいて、ネットワークの遅延によるデータ転送量の起伏に伴う影響を無くし、アイソクロナス転送で保証すべきデータ転送量を維持でき、アイソクロナス出力転送のネットワーク耐性を向上するデバイスサーバおよびデバイスサーバ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成すべく、本発明のデバイスサーバは、クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバにおいて、データバッファ部と、デバイスからＦＢＤを受信して解析するＦＢＤ解析部を備える。
クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信すると前記クライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積する。そして、データバッファ部の保持データ量が上限閾値に到達した場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する。
【００１８】
また、デバイスからＦＢＤを受信する。ＦＢＤ解析部によるＦＢＤの解析の結果、デバイス内のバッファメモリが適量よりも少ないと判別した場合で、かつ、データバッファ部の保持データ量が下限閾値に到達していない場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する。
ＦＢＤ解析部が行うＦＢＤの解析処理は、デバイスサーバの中の何らかのプログラムモジュールの処理の一部として解析処理が埋め込まれていても構わない。
【００１９】
ここで、クライアントとは、パーソナルコンピュータ（ＰＣ）などの一般的なコンピュータ端末を意味し、ネットワークに接続され、デバイスサーバにローカル接続されたデバイスに対してアイソクロナス出力転送を行う装置である。またデバイスとは、デバイスサーバにローカル接続され、ＵＳＢ通信規格などのデータ通信方式によって、デバイスサーバとデータ通信できる装置である。デバイスサーバがアイソクロナス出力転送を行うデバイスとしては、ＵＳＢスピーカなどのオーディオデバイスなどが挙げられる。
【００２０】
デバイスサーバ内のデータバッファ部の保持データ量が上限閾値に到達した状態から、データバッファ部に蓄積されたアイソクロナス出力転送データのアイソクロナス出力転送が開始される。また、データバッファ部の保持データ量が下限閾値に到達した状態になるまで、データバッファ部に蓄積されたアイソクロナス出力転送データのアイソクロナス出力転送を行う。
保持データ量が上限閾値に到達するとは、保持データ量が上限閾値と一致するか、上限閾値を超えることを意味する。データバッファ部のバッファサイズは、バッファオーバフローを回避するために、上限閾値よりも大きく確保すべきである。上限閾値は、データバッファ部の物理的なバッファサイズに１未満の係数を乗じた値とするのが良い。一方、下限閾値は、０（ゼロ）、或は、上限閾値より小さい所定の値である。下限閾値は、実質的にデータバッファ部が空の状態の値であり、０（ゼロ）とするのでも良い。
【００２１】
本発明のデバイスサーバは、クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信すると、ＦＢＤを受信していれば、最新のＦＢＤをクライアントに対する転送完了応答として返し、ＦＢＤを受信していなければ、クライアントに対して転送完了応答を返す。
上記構成によれば、クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信すると、即座にクライアントに対して転送完了応答を返すことができ、アイソクロナス出力転送データの先読みを行える。先読みを行い、受信した転送データをデータバッファ部に蓄積し、データバッファ部の保持データ量を十分に確保して、デバイスに対してアイソクロナス出力転送を開始することにより、アイソクロナス転送で保証すべきデータ転送量を維持できる。これによりネットワーク環境が不安定になった場合でも、デバイスに対して安定したデータ出力を行える。無線ＬＡＮのようにネットワークのリンク切れやアグリゲーションの弊害でデータ転送が滞るような事象が発生する場合に、特に効果を期待することができる。
例えば、デバイスがＵＳＢスピーカである場合、デバイスサーバにデータバッファ部を設けることにより、無線ＬＡＮ使用時などでネットワーク環境が不安定になっても、ネットワーク環境が回復するまで、データバッファ部にバッファリング（蓄積）された音声転送データをＵＳＢスピーカに出力することにより、安定した音声出力を行うことができる。
【００２２】
上記の本発明のデバイスサーバのＦＢＤ解析部によるＦＢＤの解析の結果、デバイス内のバッファメモリが適量よりも少ないと判別した場合に、少ない度合いに応じて、デバイスに対してアイソクロナス出力転送を行うデータ転送量を加減調整することでも良い。
これにより、デバイスのバッファメモリが、バッファアンダーフロー又はオーバーフローしないように調整できる。
【００２３】
上記の本発明のデバイスサーバは、更に、クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信すると、（ａ）フィードバックデータに依拠することなくデバイスにアイソクロナス入力転送要求を行うモード（通常モード）を備えると共に、（ｂ）クライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積して、ＦＢＤを解析しながらアイソクロナス入力転送要求を行うフィードバックデータ制御モード（ＦＢＤ制御モード）を備える。そして、通常モードとＦＢＤ制御モードとの間で切替えできることでも良い。
【００２４】
これにより、接続されるデバイスの品質レベルに応じて、通常モードとＦＢＤ制御モードとの間で切替できるようにし、ユーザの使用における自由度を高めることができる。
【００２５】
次に、デバイスサーバの制御方法を説明する。
本発明のデバイスサーバの制御方法は、クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、下記１）〜５）のステップを備える。
１）クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信する転送要求受信ステップ
２）クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信するとクライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積する転送データ保存ステップ
３）データバッファ部の保持データ量が上限閾値に到達した場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する転送ステップ
４）デバイスからＦＢＤを受信し解析するＦＢＤ解析ステップ
５）ＦＢＤ解析ステップによるＦＢＤの解析の結果、デバイス内のバッファメモリが適量よりも少ないと判別した場合で、かつ、データバッファ部の保持データ量が下限閾値に到達していない場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する出力転送ステップ
【００２６】
本発明のデバイスサーバ制御方法は、転送要求受信ステップにおいてクライアントからアイソクロナス入力転送要求を受信した際、デバイスからＦＢＤを受信していれば、最新のＦＢＤをクライアントに対する転送完了応答として返し、ＦＢＤを受信していなければ、クライアントに対して転送完了応答を返すクライアント応答ステップを更に備えることでも良い。
上記構成によれば、クライアントからアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受信すると、即座にクライアントに対して転送完了応答を返すことができ、アイソクロナス出力転送データの先読みを行え、データバッファ部の保持データ量を十分に確保して、アイソクロナス転送で保証すべきデータ転送量を維持できる。これによりネットワーク耐性を向上する。
【００２７】
また、本発明のデバイスサーバ制御方法の出力転送ステップにおいて、デバイス内のバッファメモリが適量よりも少ないと判別した場合に、少ない度合いに応じて、デバイスに対してアイソクロナス出力転送を行うデータ転送量を加減調整することでも良い。
デバイスのバッファメモリのバッファアンダーフロー又はオーバーフローを避けるためである。
【００２８】
次に、本発明のクライアントについて説明する。
本発明のクライアントは、上述した本発明のデバイスサーバとネットワークを介して接続され、デバイスサーバにローカル接続されたデバイスにアイソクロナス転送を行う。本発明のクライアントは、ＵＳＢデバイスドライバが発行したアイソクロナス入出力転送データを受け取り、アイソクロナス入出力転送データをＩＰパケットに変換して通信制御ドライバに引き渡す手段を備える。また、通信制御ドライバを介して、デバイスサーバから転送完了応答を受け取った場合に、その転送完了応答をＵＳＢデバイスドライバに返し、デバイスサーバから転送完了応答を受け取っていない場合にはダミーデータをＵＳＢデバイスドライバに返す手段を備える。
ＵＳＢデバイスドライバでは、ＵＳＢデバイスからの応答情報の遅延（受信待ち）によって、次のアイソクロナス転送要求の処理が停滞することがなくなる。これによって、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができる。
【発明の効果】
【００２９】
本発明によれば、アイソクロナス転送方式のアシンクロナスモードにおけるＵＳＢ  Ａｕｄｉｏデータが、ネットワークを介しデバイスサーバを経由する場合に、デバイスサーバは、アイソクロナス転送で保証すべきデータ転送量を維持でき、ネットワーク（特に、無線通信ネットワーク）の遅延によるデータ転送量の起伏に対応でき、ネットワーク耐性の向上が図れるといった効果を奏する。
【図面の簡単な説明】
【００３０】
【図１】デバイスサーバシステムの機能ブロック図
【図２】アイソクロナス転送を行うデバイスサーバシステムの概念図
【図３】デバイスサーバシステムのシステム構成図
【図４】デバイスサーバシステムのデータフロー図
【図５】デバイスサーバの処理フロー図（１）
【図６】デバイスサーバの処理フロー図（２）
【図７】クライアントの処理フロー図
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明していく。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
【実施例１】
【００３２】
図１は、デバイスサーバシステムの機能ブロックの一例を示している。
図１に示すデバイスサーバシステムでは、クライアント２０からネットワーク４０経由でデバイスサーバ１０にローカル接続されているＵＳＢデバイス３０を制御する。
なお、ネットワーク４０は、有線もしくは無線のネットワークである。また図１では、クライアント２０とデバイスサーバ１０は１：１で接続されているが、それぞれ複数存在し、Ｎ：１、１：Ｎ、Ｎ：Ｍ（Ｎ，Ｍは２以上の自然数）で接続されるものでもよい。また、デバイスサーバ１０にローカル接続されるＵＳＢデバイスは２台以上でもよい。
【００３３】
ここで、クライアント２０は、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、図示しないＣＰＵ、入力部、表示部、メモリ、外部記憶部、図示する通信インタフェース２６などが内部バスで接続されている。
このクライアント２０には、外部記憶部に格納され、ＣＰＵによる実行時にメモリに搭載されるアプリケーション２１とデバイスドライバ２２とＵＳＢクラスドライバ２３とトンネリングドライバ２４と通信制御ドライバ２５がソフトウェア部品として存在する。
この他、ソフトウェア部品として、ＯＳ（Operating System）、常駐モジュール、データ通信制御プログラムなどがあり、制御に必要な各種データと共に外部記憶部に格納されている。これらソフトウェア部品及び各種データは、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御が実行される。
【００３４】
常駐モジュールは、ＯＳが起動している間、常に待機及び動作しているソフトウェア部品であり、ネットワーク４０を介してデバイスサーバ１０とデータ送受信を行う。またデバイスサーバ１０にローカル接続されているＵＳＢデバイス３０を認識して識別するためのＵＳＢデバイス情報を受信する。受信したＵＳＢデバイス情報に基づいて、ＵＳＢデバイス３０とのデータ送受信に必要となるデバイスドライバ２２、ＵＳＢクラスドライバ２３を生成し、ＵＳＢデバイス３０をネットワーク越しに制御できる状態にする。
【００３５】
デバイスドライバ２２は、ＯＳやアプリケーション２１、常駐モジュールなど上位プログラムからのデータ入出力要求を、データ入出力対象のＵＳＢデバイス３０に応じたデータ形式に変換し、また、ＵＳＢデバイス３０からの応答を上位プログラムへ渡す。
上位プログラムからのアイソクロナス転送によるデータ出力要求についても、同様に、アイソクロナス出力対象のＵＳＢデバイス３０に応じたデータ形式に変換される。
【００３６】
ＵＳＢクラスドライバ２３は、デバイスドライバ２２によって、ＵＳＢデバイス３０に応じたデータ形式に変換されたデータ入出力要求を、ＵＳＢのデータ形式に準拠したパケットデータに変換してトンネリングドライバ２４に渡し、またトンネリングドライバ２４から送られてくるＵＳＢのデータ形式に準拠したパケットデータを、データ形式変換してデバイスドライバ２２へ渡す。
【００３７】
またトンネリングドライバ２４は、ＵＳＢクラスドライバ２３から渡されたパケットデータをＩＰパケットにカプセル化する。その一方で、デバイスサーバ１０からＩＰパケットを受信すると、このＩＰパケットから応答パケットデータを取り出し（デカプセルして）、ＵＳＢクラスドライバ２３，デバイスドライバ２２に受け渡す。
【００３８】
通信制御ドライバ２５は、トンネリングドライバ２４からＩＰパケットを受け取り、通信インタフェース２６へ引き渡す。また、通信インタフェース２６から受け取ったＩＰパケットをトンネリングドライバ２４へ引き渡す。このように、ネットワークを介して、クライアント２０とデバイスサーバ１０との間でＩＰパケットの送受信や通信制御を行っている。
【００３９】
一方、デバイスサーバ１０には、通信インタフェース１６と通信制御ドライバ１１とトンネリングドライバ１２とＵＳＢドライバ１３、データバッファ部１４、およびＦＢＤ解析部１５が搭載されている。
トンネリングドライバ１２では、クラインアント２０からネットワークを介し、ＩＰパケットを受信すると、このＩＰパケットからＵＳＢのデータ形式に準拠したパケットデータを取り出し（デカプセルして）、ＵＳＢドライバ１３に送る。また、トンネリングドライバ１２は、ＵＳＢドライバ１３からＵＳＢのデータ形式に準拠したパケットデータを受け取って、ＩＰパケットにカプセル化する。
【００４０】
ＦＢＤ解析部１５では、クライアント２０からアシンクロナス（非同期）モードのアイソクロナス入力転送要求を受け取る。また、ＦＢＤ解析部１５はＵＳＢデバイス３０からＦＢＤを受け取り、受け取ったＦＢＤの解析処理を行う。ここで、ＦＢＤ解析部１５が行うＦＢＤの解析処理は、デバイスサーバ１０のトンネリングドライバ１２の処理の一部として含まれてもよく、またはデータバッファ部１４の処理の一部として含まれていてもよい。その他、デバイスサーバの中の何らかのプログラムモジュールの処理の一部としてＦＢＤ解析部１５が行う解析処理が埋め込まれていても構わない。
【００４１】
図２に示すように、ＵＳＢオーディオ機器のスピーカ３２がＵＳＢ接続ケーブル３１を介してデバイスサーバ１０に接続され、クライアント２０とデバイスサーバ１０とが無線ネットワーク４０を介して接続されているシステムでは、クライアント２０から無線ネットワーク４０を介してスピーカ３２に対して音声や音楽などの音データをストリーミングデータとして転送できる。この場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス転送によって、音声データが途切れることなくスピーカに転送される。アシンクロナス（非同期）モードの場合、ＵＳＢオーディオ機器のスピーカ３２からクライアント２０へ向けて、ＦＢＤが返される。
【００４２】
また、図３に、デバイスサーバを利用した音声および音源を出力するシステムのシステム構成例を示す。図３は、デバイスサーバがアイソクロナス転送方式のアシンクロナスモードに対応し、ネットワークを介して、クライアントＰＣからデバイスサーバを経由して、ＵＳＢスピーカを制御する構成を示している。図３（１）は、ＵＳＢスピーカが自身にＵＳＢ−ＤＡＣを内蔵している場合を示し、図３（２）は、ＵＳＢ−ＤＡＣを内蔵したアンプを経由して、アンプがスピーカとケーブル接続されている場合を示している。つまり、図３（１）、（２）は、本発明の実施形態の図２に示したデバイスサーバ１０とＵＳＢオーディオ機器のスピーカ３２との間を接続する形態を示した一例である。
【００４３】
図４は、デバイスサーバシステムのデータフローの一例を示している。クライアント２０内のＵＳＢクラスドライバ２３から、ＵＳＢデバイス３０に対し、アシンクロナス（非同期）モードのアイソクロナス入力転送要求（以下、“ＩＳＯＣ−ＩＮ要求”と呼ぶ）およびアイソクロナス出力転送するデータ（例えば、音声、音源のパケットデータ）が出されると、クライアント２０内のトンネリングドライバが、ＩＳＯＣ−ＩＮ要求およびアイソクロナス出力転送（以下、“ＩＳＯＣ−ＯＵＴ転送”と呼ぶ）するデータをカプセル化して、デバイスサーバ１０に送る。デバイスサーバ１０では、クライアント２０からカプセル化されネットワーク経由で送られたＩＳＯＣ−ＩＮ要求およびＩＳＯＣ−ＯＵＴ転送されたデータを受信すると、デカプセル処理の後、ＩＳＯＣ−ＩＮ要求をＦＢＤ解析部で受信し、ＩＳＯＣ−ＯＵＴ転送されたデータをデバイスサーバ１０自身のデータバッファ部１４にバッファリング（蓄積）していく。データバッファ部１４の保持データ量が上限閾値に到達するまで蓄積を繰り返し、保持データ量が上限閾値に到達した場合に、データバッファ部１４に蓄積されたアイソクロナス出力転送データを、ＵＳＢデバイス３０に対してＩＳＯＣ−ＯＵＴ転送を開始する。
【００４４】
クライアント２０のトンネリングドライバ２４は、ＵＳＢクラスドライバ２３からＩＳＯＣ−ＩＮ要求を受信すると、その後の動作はＵＳＢデバイス３０から新たなＦＢＤを受信しているか否かで異なる。新たなＦＢＤを受信していない場合は、ＵＳＢデバイス３０への転送完了の有無に関わらず、クライアント２０のトンネリングドライバ２４は、ＵＳＢクラスドライバ２３に対してダミーデータを転送完了応答として返す。即座にクライアント２０のＵＳＢクラスドライバ２３に対してダミーデータを転送完了応答として返すことで、アイソクロナス出力転送データの先読みを行う。先読みを行うことにより、受信したＩＳＯＣ−ＯＵＴ転送データをデバイスサーバ１０内のデータバッファ部１４に十分に蓄積することができ、このことにより、データバッファ部１４の保持データ量を十分に確保できるため、アイソクロナス転送で保証すべきデータ転送量を維持することができる。
【００４５】
ここで、ダミーデータとは、転送が正常完了した旨の転送完了応答データであり、その時点における最新のＦＢＤに相当するデータをコピーしたものである。具体的には、ダミーデータは、デバイスサーバ１０がＵＳＢデバイス３０から受け取って保持している現時点の最新のＦＢＤをコピーして、ネットワークを介してクライアント２０のトンネリングドライバ２４へ送信した転送完了応答である。あるいは、ダミーデータは、クライアント２０のトンネリングドライバ２４が保持しているＦＢＤ（あるいは前述のダミーデータ）で、過去にデバイスサーバ１０からネットワークを介して受け取ったもののうち最新のものである。
一方、ＵＳＢデバイス３０からデバイスサーバ経由で新たなＦＢＤを受信している場合は、これをクライアント２０のＵＳＢクラスドライバ２３に対し、転送完了応答として返す。
【００４６】
次に、デバイスサーバの処理フローについて、図５および図６を参照して説明する。
デバイスサーバ１０は、クライアント２０のトンネリングドライバ２４からＵＳＢ転送要求を受信すると（ステップＳ０１）、ＵＳＢ転送方式がアイソクロナス方式か否かを判定する（ステップＳ０３）。判定の結果、ＵＳＢ転送方式がアイソクロナス方式の要求であれば（ＩＳＯＣ−ＩＮ要求であれば）、さらに制御モードがＦＢＤ制御モード（アシンクロナスモード）であるか否かを判定し（ステップＳ０５）、制御モードがＦＢＤ制御モードの場合は、後述するＦＢＤ制御を実行する（ステップＳ０７）。
一方、ＵＳＢ転送方式の判定（ステップＳ０３）においてＵＳＢ転送方式がアイソクロナス方式以外であるか、または制御モードの判定（ステップＳ０５）においてアシンクロナスモード以外である場合には、通常処理（本実施形態に記載するようなＦＢＤの解析を行わず、ＦＢＤに依拠しないでデバイスにアイソクロナス入力転送要求を行う処理）を実行する（ステップＳ０９）。
【００４７】
図５のＦＢＤ制御モードにおけるＦＢＤ制御（ステップＳ０７）の詳細フローについて、図６を参照して説明する。ＦＢＤ制御では、ＦＢＤを受信していない場合、ＩＳＯＣ−ＩＮ要求をトリガーとして、デバイスサーバ１０が保持している、現時点における最新のＦＢＤをコピーし、クライアント２０に対して転送完了応答を返し、データバッファ部１４にＩＳＯＣ−ＯＵＴ転送データをバッファリング（蓄積）する。そして、データバッファ部１４の保持データ量が上限閾値に達した場合、ＵＳＢデバイス３０へデータバッファ部１４に蓄積したデータをデータ転送して処理を終える。データバッファ部１４の保持データ量が上限閾値に達していない場合は、データ転送しないで処理を終える。
【００４８】
ここで、デバイスサーバ１０のＦＢＤ解析部１５は、当該ＦＢＤ制御を担っており、予めデータバッファ部１４の保持データ量にそれぞれデータ量に応じた閾値を設け、ＵＳＢ転送方式の判定とデバイスのＦＢＤの有無をもとに動作する。これにより、デバイスサーバ１０が自律的に動作し、クライアント２０からの転送されるアイソクロナス出力転送データをアイソクロナス転送で保証すべきデータ転送量を維持することができる。
【００４９】
一方、ＦＢＤを受信した場合（受信済）、ＦＢＤの解析処理（ＦＢＤ解析処理）を行う。ＦＢＤ解析処理は、ＵＳＢデバイス３０内のバッファメモリが適量より少ない場合であって、さらにデータバッファ部１４の保持データ量が下限閾値に達していない場合には、ＵＳＢデバイス３０へデータバッファ部１４に蓄積したデータをデータ転送して処理を終える。また、ＵＳＢデバイス３０内のバッファメモリが適量より多い（少なくない）場合、或は、データバッファ部１４の保持データ量が下限閾値に達している場合は、データ転送しないで処理を終える。クライアントがＦＢＤからＵＳＢデバイス内のバッファメモリ量を判断してＵＳＢデバイスへのテータ転送量を制御することは、アシンクロナスモードで従来から行われていることであるが、本実施例では、デバイスサーバがＦＢＤからＵＳＢデバイス内のバッファメモリ量を判断してＵＳＢデバイスへのデータ転送量を制御することとなり、さらに制御に際してデバイスサーバにおけるデータバッファ部の保持データ量も勘案している。
【００５０】
図７は、クライアントの処理フローを示している。
トンネリングドライバ２４は、ＵＳＢクラスドライバ２３からＩＳＯＣ−ＩＮ要求発生すると（ステップＳ２１）、ＩＳＯＣ−ＩＮ要求を自律制御する場合には（ステップＳ２３）、さらにデバイスサーバ１０からＦＢＤを受信済である場合（ステップＳ２５）、受信した最新のＦＢＤをＵＳＢクラスドライバ２３に返す（ステップＳ２７）。
一方、ＩＳＯＣ−ＩＮ要求を自律制御しない場合には（ステップＳ２３）、そのまま処理を終了し、自律制御しない通常のＩＳＯＣ−ＩＮ要求処理を行う。また、デバイスサーバ１０からＦＢＤを受信していない場合（ステップＳ２５）、デバイスサーバ１０から受け取るダミーデータをＵＳＢクラスドライバ２３に返す（ステップＳ２７）。
【００５１】
なお、上述の実施例では、クライアントがネットワークを介してＵＳＢデバイスを利用するデバイスサーバシステムを例に説明したが、本発明の適用範囲はこれに限定されず、ＵＳＢ通信規格と同等の通信方式、例えば、ＩＥＥＥ１３９４など別のインタフェースに準拠したものであってもよい。
【産業上の利用可能性】
【００５２】
本発明は、ＵＳＢデバイスなどの周辺デバイスの利便性を高めるデバイスサーバシステムに有用である。
【符号の説明】
【００５３】
１０  デバイスサーバ
２０  クライアント
３０  ＵＳＢデバイス
３１  ＵＳＢ接続ケーブル
３２  スピーカ
４０  ネットワーク
【図１】
2016051347.tif 000003
【図２】
2016051347.tif 000004
【図３】
2016051347.tif 000005
【図４】
2016051347.tif 000006
【図５】
2016051347.tif 000007
【図６】
2016051347.tif 000008
【図７】
2016051347.tif 000009