特許第6233652号(P6233652)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サイレックス・テクノロジー株式会社の特許一覧

<>
  • 特許6233652-デバイスサーバとその制御方法 図000002
  • 特許6233652-デバイスサーバとその制御方法 図000003
  • 特許6233652-デバイスサーバとその制御方法 図000004
  • 特許6233652-デバイスサーバとその制御方法 図000005
  • 特許6233652-デバイスサーバとその制御方法 図000006
  • 特許6233652-デバイスサーバとその制御方法 図000007
  • 特許6233652-デバイスサーバとその制御方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6233652
(24)【登録日】2017年11月2日
(45)【発行日】2017年11月22日
(54)【発明の名称】デバイスサーバとその制御方法
(51)【国際特許分類】
   G06F 13/38 20060101AFI20171113BHJP
【FI】
   G06F13/38 330Z
   G06F13/38 310D
   G06F13/38 350
【請求項の数】6
【全頁数】14
(21)【出願番号】特願2014-176516(P2014-176516)
(22)【出願日】2014年8月29日
(65)【公開番号】特開2016-51347(P2016-51347A)
(43)【公開日】2016年4月11日
【審査請求日】2017年4月27日
【早期審査対象出願】
(73)【特許権者】
【識別番号】500112146
【氏名又は名称】サイレックス・テクノロジー株式会社
(74)【代理人】
【識別番号】110000822
【氏名又は名称】特許業務法人グローバル知財
(72)【発明者】
【氏名】林 栄植
(72)【発明者】
【氏名】山地 新介
(72)【発明者】
【氏名】西原 健太
【審査官】 田名網 忠雄
(56)【参考文献】
【文献】 特許第4617440(JP,B2)
【文献】 特開2008−287453(JP,A)
【文献】 特開2012−138694(JP,A)
【文献】 国際公開第2014/008280(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/38−13/42
H04L 12/28−12/417
H04L 12/44−12/46
(57)【特許請求の範囲】
【請求項1】
クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバであって、
データバッファ部と、
前記デバイスからフィードバックデータ(FBD)を受信して解析するFBD解析部と、
を備え、
前記クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信すると前記クライアントから送信されたアイソクロナス出力転送データを前記データバッファ部に蓄積し、
前記データバッファ部の保持データ量が上限閾値に到達した場合に、前記データバッファ部に蓄積された前記アイソクロナス出力転送データを、前記デバイスに対してアイソクロナス出力転送し、
前記デバイスから前記フィードバックデータを受信し、
前記FBD解析部による前記フィードバックデータの解析の結果、前記デバイス内のバッファメモリの使用領域のデータ量が適量よりも少ないと判別した場合で、かつ、前記データバッファ部の前記保持データ量が下限閾値に到達していない場合に、前記データバッファ部に蓄積された前記アイソクロナス出力転送データを、前記デバイスに対して前記アイソクロナス出力転送する、ことを特徴とするデバイスサーバ。
【請求項2】
前記クライアントから前記アイソクロナス入力転送要求を受信すると、前記フィードバックデータを受信していれば、最新の前記フィードバックデータを前記クライアントに対する転送完了応答として返し、前記フィードバックデータを受信していなければ、前記クライアントに対してダミーデータを前記転送完了応答として返す、ことを特徴とする請求項1に記載のデバイスサーバ。
【請求項3】
前記クライアントから前記アイソクロナス入力転送要求を受信すると、
(a)前記フィードバックデータに依拠することなく前記デバイスに前記アイソクロナス入力転送要求を行うモード(通常モード)と、
(b)前記クライアントから送信されたアイソクロナス出力転送データを前記データバッファ部に蓄積して、前記フィードバックデータを解析しながら前記アイソクロナス入力転送要求を行う、フィードバックデータ制御モード(FBD制御モード)と
の間で切替し得る、ことを特徴とする請求項1又は2に記載のデバイスサーバ。
【請求項4】
クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、
前記クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信する転送要求受信ステップと、
前記クライアントから前記アイソクロナス入力転送要求を受信すると前記クライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積する転送データ保存ステップと、
前記データバッファ部の保持データ量が上限閾値に到達した場合に、前記データバッファ部に蓄積された前記アイソクロナス出力転送データを、前記デバイスに対してアイソクロナス出力転送する転送ステップと、
前記デバイスからフィードバックデータを受信し解析するFBD解析ステップと、
前記FBD解析ステップによる前記フィードバックデータの解析の結果、前記デバイス内のバッファメモリの使用領域のデータ量が適量よりも少ないと判別した場合で、かつ、前記データバッファ部の前記保持データ量が下限閾値に到達していない場合に、前記データバッファ部に蓄積されたアイソクロナス出力転送データを、前記デバイスに対して前記アイソクロナス出力転送する出力転送ステップと、
を備えたことを特徴とするデバイスサーバ制御方法。
【請求項5】
前記転送要求受信ステップにおいて、前記クライアントから前記アイソクロナス入力転送要求を受信した際、前記デバイスから前記フィードバックデータを受信していれば、最新の前記フィードバックデータを前記クライアントに対する転送完了応答として返し、前記フィードバックデータを受信していなければ、前記クライアントに対してダミーデータを前記転送完了応答として返すクライアント応答ステップを、
更に備えたことを特徴とする請求項4に記載のデバイスサーバ制御方法。
【請求項6】
請求項に記載のデバイスサーバと、
前記デバイスサーバにローカル接続された前記デバイスと、
前記デバイスサーバとネットワークを介して接続され前記デバイスに前記アイソクロナス転送を行うクライアントから構成され、
前記クライアントは、
USBデバイスドライバが発行したアイソクロナス入出力転送データを受け取り、該アイソクロナス入出力転送データをIPパケットに変換して通信制御ドライバに引き渡す手段と、
前記通信制御ドライバを介して、前記デバイスサーバから転送完了応答を受け取った場合に、前記転送完了応答を前記USBデバイスドライバに返し、前記デバイスサーバから前記転送完了応答を受け取っていない場合にはダミーデータを前記USBデバイスドライバに返す手段と、を備えることを特徴とするシステム
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クライアントとデバイス(特に、オーディオデバイス)との間で、ネットワークを介してアシンクロナス(非同期)モードのアイソクロナス転送を行うデバイスサーバおよびその制御方法に関するものである。
【背景技術】
【0002】
近年、有線LAN(Local Area Network)または無線LANなどのIPネットワークはますます広がり、人々の生活のインフラとなっている。ネットワークI/F(インタフェース)の低価格化も進んでいる。
また、コンピュータにローカル接続されていた周辺機器は、IPネットワークが周辺機器の制御データの送受信に十分耐えるほど高速化した現在において、コンピュータとIPネットワークを介して周辺機器の制御が可能になっている。
このような状況下、IPネットワークを通じて、コンピュータの周辺機器であるUSB(Universal Serial Bus)デバイスを当該ネットワークに接続しているコンピュータから利用することのできるデバイスサーバシステムが知られている(特許文献1、非特許文献1を参照)。
【0003】
デバイスサーバシステムでは、クライアントのUSBデバイスドライバが発行した制御コマンド等のUSBデータがIPパケットに変換され(カプセル化)、これがクライアントからデバイスサーバに向けて送信される。IPパケットを受信したデバイスサーバは、受信したIPパケットに含まれる制御コマンド等のUSBデータを取り出し(デカプセル化)、USB通信に変換してデバイスサーバ自身にローカル接続されているUSBデバイスに転送する。
【0004】
デバイスサーバとUSBデバイスとの間における通信は、USB規格の通信に準じている。例えば、クライアントからUSBデバイスへの送信の場合、クライアントからデバイスサーバを経由してUSBデバイスにデータを送信するとともに、随時、USBデバイスのステータスに関する応答をクライアントはデバイスサーバ経由で受信する。
【0005】
USBデバイスがスピーカの場合、クライアントからUSBデバイスに対して音声などリアルタイム性を必要とするストリーミングデータを転送する。この場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス方式によるデータ転送(アイソクロナス転送)を行うことにより、途切れることなくデータを転送することができる。
【0006】
デバイスサーバを介してクライアントとUSBデバイス間でアイソクロナス転送を行う場合、クライアントとUSBデバイスはローカル接続されているのではなく、ネットワーク経由で接続されていることから、ネットワークトラフィックが高くなり、ネットワーク区間のデータ転送速度が低下しても、アイソクロナス転送で保証する最低限のデータ転送量を維持する必要がある。
【0007】
デバイスサーバの内部処理において、アイソクロナス転送要求に対するUSBデバイスからの応答情報をダミー応答してクライアントのデバイスドライバに送信するデバイスサーバの制御方法が知られている(特許文献2)。
特許文献2に開示された制御方法によれば、クライアントは、USBデバイスからの応答情報の遅延(受信待ち)によって、次のアイソクロナス転送要求の処理が停滞することがなくなるため、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができる。
【0008】
しかしながら、特許文献2に開示されたデバイスサーバの制御方法では、所定時間経過してもUSBデバイスからの応答情報を受け取らなかった場合には、USBデバイスからの応答情報を擬製してダミー応答データをクライアントのデバイスドライバに送信することから、ネットワーク自体が回復不能なステータス(致命的なステータス)の場合であっても、クライアントは次のアイソクロナス転送要求を送出する一方、デバイスサーバはこれを受け取れず、デバイスに渡せないことになり、好ましくないという問題がある。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2008−287453号公報
【特許文献2】特許第4617440号公報
【非特許文献】
【0010】
【非特許文献1】サイレックス・テクノロジー株式会社ホームページ<http://www.silex.jp/products/usbdeviceserver/sx3000gb.html>
【発明の概要】
【発明が解決しようとする課題】
【0011】
従来、クライアントは数百ミリ秒先読みしてアイソクロナス転送要求し、ネットワークの遅延を担保している。デバイスサーバでは、クライアントよりスケジューリングされたアイソクロナス転送要求をそのままに、USBデバイスに対してアイソクロナス転送を行っている。
しかし、特に無線LANの場合は電波状況によりネットワークのリンク切れやアグリゲーションの弊害によってネットワーク転送が滞り、クライアントによる数百ミリ秒の先読みだけでは担保できないことがある。
【0012】
一旦、無線LANレベルでリンクが切れて復帰した場合に、クライアントから一度に複数のアイソクロナス転送要求が出されて、大量のデータが転送される場合がある。デバイスサーバでは、クライアントのアイソクロナス転送要求をそのままに、USBデバイスに対してアイソクロナス転送を行っているため、アイソクロナス転送のスケジューリングができない現象が発生する。この場合、通信エラー(例えば、スケジューラのバッファ空きが無いためにオーバーフローを生じたというスタックレベルのエラーなど)として応答される。
クライアントは、USBデバイスのステータスに関する応答をデバイスサーバ経由で受信するため、こうした回復不能でないエラーにも関わらず、クライアントはデバイスサーバとのセッションを切断してしまい、アイソクロナス転送は終了してしまう。
【0013】
このように、従来のデバイスサーバにおけるアイソクロナス転送では、ネットワークの遅延によるデータ転送量の起伏に伴う影響を回避できず、クライアントのアイソクロナス転送要求をそのままに、USBデバイスに対してアイソクロナス転送を行っているためにアイソクロナス転送で保証すべきデータ転送量を維持できない。すなわち、従来のデバイスサーバにおけるアイソクロナス転送方式では、ネットワーク耐性が弱いという問題がある。
【0014】
特に、USBで接続されるスピーカなどのUSBオーディオ機器の場合、音声データを扱うためデータが途切れ途切れになると問題となる。そのため、アイソクロナス転送方式を利用する。アイソクロナス転送方式には、音声データと一緒にそれに関連付いたクライアントPC側のクロック信号とUSB−DAC側のUSBホストコントローラを同期させるシンクロナス(同期)モードと、クライアントPC側のクロック信号に同期して動作するアダプティブモードと、USB−DAC或はUSB−DACを内蔵するUSBオーディオ機器の内部にある高精度なクロックによって独自に動作するアシンクロナス(非同期)モードに分かれる。
【0015】
アシンクロナス(非同期)モードの場合、フィードバックデータ(以下、FBDと略する)と呼ばれるデバイスからクライアントPC側へ向けて送られるデバイスのバッファメモリの状態ステータスによって、デバイス側のバッファメモリが常に適量に保たれるように、クライアントPCへフィードバック制御が行われる。ここで、バッファメモリとは、情報を一時保存する記憶領域のことであり、デバイス内に備わるRAM(Random Accsess Memory)などに確保されるメモリ領域である。デバイス側のバッファメモリにデータ量が適量よりも増加した場合、クライアントPCへ転送データ量を減らすという情報を返し、一方、データ量が適量よりも減少した場合、転送データ量を増やすという情報を返して、デバイス側のバッファメモリを適量に維持する。すなわち、アシンクロナス(非同期)モードでは、デバイスは、バッファメモリのデータ量の増減などをコントロールする応答をクライアントPCに返すことにより、デバイス側のバッファメモリが常に一定のデータ量に保たれるように制御するモードである。アシンクロナス(非同期)モードでは、クライアントPC側のクロックを使わず、デバイス側の固定クロックを使うことが可能となるため、クライアントPCに実装されている水晶発振器が発するジッターの影響を受け難く、高音質(ハイレゾ音源など)をデバイス(スピーカー)から出力することができる。
【0016】
デバイスがローカル接続されたデバイスサーバにおけるアイソクロナス出力転送のアシンクロナス(非同期)モードにおいても、ネットワークの遅延によるデータ転送量の起伏に伴う影響を無くし、アイソクロナス転送で保証すべきデータ転送量を維持でき、アイソクロナス出力転送のネットワーク耐性を向上することが求められている。
上記状況に鑑みて、本発明は、デバイスがローカル接続されたデバイスサーバにおけるアイソクロナス出力転送のアシンクロナス(非同期)モードにおいて、ネットワークの遅延によるデータ転送量の起伏に伴う影響を無くし、アイソクロナス転送で保証すべきデータ転送量を維持でき、アイソクロナス出力転送のネットワーク耐性を向上するデバイスサーバおよびデバイスサーバ制御方法を提供することを目的とする。
【課題を解決するための手段】
【0017】
上記目的を達成すべく、本発明のデバイスサーバは、クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバにおいて、データバッファ部と、デバイスからFBDを受信して解析するFBD解析部を備える。
クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信すると前記クライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積する。そして、データバッファ部の保持データ量が上限閾値に到達した場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する。
【0018】
また、デバイスからFBDを受信する。FBD解析部によるFBDの解析の結果、デバイス内のバッファメモリが適量よりも少ないと判別した場合で、かつ、データバッファ部の保持データ量が下限閾値に到達していない場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する。
FBD解析部が行うFBDの解析処理は、デバイスサーバの中の何らかのプログラムモジュールの処理の一部として解析処理が埋め込まれていても構わない。
【0019】
ここで、クライアントとは、パーソナルコンピュータ(PC)などの一般的なコンピュータ端末を意味し、ネットワークに接続され、デバイスサーバにローカル接続されたデバイスに対してアイソクロナス出力転送を行う装置である。またデバイスとは、デバイスサーバにローカル接続され、USB通信規格などのデータ通信方式によって、デバイスサーバとデータ通信できる装置である。デバイスサーバがアイソクロナス出力転送を行うデバイスとしては、USBスピーカなどのオーディオデバイスなどが挙げられる。
【0020】
デバイスサーバ内のデータバッファ部の保持データ量が上限閾値に到達した状態から、データバッファ部に蓄積されたアイソクロナス出力転送データのアイソクロナス出力転送が開始される。また、データバッファ部の保持データ量が下限閾値に到達した状態になるまで、データバッファ部に蓄積されたアイソクロナス出力転送データのアイソクロナス出力転送を行う。
保持データ量が上限閾値に到達するとは、保持データ量が上限閾値と一致するか、上限閾値を超えることを意味する。データバッファ部のバッファサイズは、バッファオーバフローを回避するために、上限閾値よりも大きく確保すべきである。上限閾値は、データバッファ部の物理的なバッファサイズに1未満の係数を乗じた値とするのが良い。一方、下限閾値は、0(ゼロ)、或は、上限閾値より小さい所定の値である。下限閾値は、実質的にデータバッファ部が空の状態の値であり、0(ゼロ)とするのでも良い。
【0021】
本発明のデバイスサーバは、クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信すると、FBDを受信していれば、最新のFBDをクライアントに対する転送完了応答として返し、FBDを受信していなければ、クライアントに対して転送完了応答を返す。
上記構成によれば、クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信すると、即座にクライアントに対して転送完了応答を返すことができ、アイソクロナス出力転送データの先読みを行える。先読みを行い、受信した転送データをデータバッファ部に蓄積し、データバッファ部の保持データ量を十分に確保して、デバイスに対してアイソクロナス出力転送を開始することにより、アイソクロナス転送で保証すべきデータ転送量を維持できる。これによりネットワーク環境が不安定になった場合でも、デバイスに対して安定したデータ出力を行える。無線LANのようにネットワークのリンク切れやアグリゲーションの弊害でデータ転送が滞るような事象が発生する場合に、特に効果を期待することができる。
例えば、デバイスがUSBスピーカである場合、デバイスサーバにデータバッファ部を設けることにより、無線LAN使用時などでネットワーク環境が不安定になっても、ネットワーク環境が回復するまで、データバッファ部にバッファリング(蓄積)された音声転送データをUSBスピーカに出力することにより、安定した音声出力を行うことができる。
【0022】
上記の本発明のデバイスサーバのFBD解析部によるFBDの解析の結果、デバイス内のバッファメモリが適量よりも少ないと判別した場合に、少ない度合いに応じて、デバイスに対してアイソクロナス出力転送を行うデータ転送量を加減調整することでも良い。
これにより、デバイスのバッファメモリが、バッファアンダーフロー又はオーバーフローしないように調整できる。
【0023】
上記の本発明のデバイスサーバは、更に、クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信すると、(a)フィードバックデータに依拠することなくデバイスにアイソクロナス入力転送要求を行うモード(通常モード)を備えると共に、(b)クライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積して、FBDを解析しながらアイソクロナス入力転送要求を行うフィードバックデータ制御モード(FBD制御モード)を備える。そして、通常モードとFBD制御モードとの間で切替えできることでも良い。
【0024】
これにより、接続されるデバイスの品質レベルに応じて、通常モードとFBD制御モードとの間で切替できるようにし、ユーザの使用における自由度を高めることができる。
【0025】
次に、デバイスサーバの制御方法を説明する。
本発明のデバイスサーバの制御方法は、クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、下記1)〜5)のステップを備える。
1)クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信する転送要求受信ステップ
2)クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信するとクライアントから送信されたアイソクロナス出力転送データをデータバッファ部に蓄積する転送データ保存ステップ
3)データバッファ部の保持データ量が上限閾値に到達した場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する転送ステップ
4)デバイスからFBDを受信し解析するFBD解析ステップ
5)FBD解析ステップによるFBDの解析の結果、デバイス内のバッファメモリが適量よりも少ないと判別した場合で、かつ、データバッファ部の保持データ量が下限閾値に到達していない場合に、データバッファ部に蓄積されたアイソクロナス出力転送データを、デバイスに対してアイソクロナス出力転送する出力転送ステップ
【0026】
本発明のデバイスサーバ制御方法は、転送要求受信ステップにおいてクライアントからアイソクロナス入力転送要求を受信した際、デバイスからFBDを受信していれば、最新のFBDをクライアントに対する転送完了応答として返し、FBDを受信していなければ、クライアントに対して転送完了応答を返すクライアント応答ステップを更に備えることでも良い。
上記構成によれば、クライアントからアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受信すると、即座にクライアントに対して転送完了応答を返すことができ、アイソクロナス出力転送データの先読みを行え、データバッファ部の保持データ量を十分に確保して、アイソクロナス転送で保証すべきデータ転送量を維持できる。これによりネットワーク耐性を向上する。
【0027】
また、本発明のデバイスサーバ制御方法の出力転送ステップにおいて、デバイス内のバッファメモリが適量よりも少ないと判別した場合に、少ない度合いに応じて、デバイスに対してアイソクロナス出力転送を行うデータ転送量を加減調整することでも良い。
デバイスのバッファメモリのバッファアンダーフロー又はオーバーフローを避けるためである。
【0028】
次に、本発明のクライアントについて説明する。
本発明のクライアントは、上述した本発明のデバイスサーバとネットワークを介して接続され、デバイスサーバにローカル接続されたデバイスにアイソクロナス転送を行う。本発明のクライアントは、USBデバイスドライバが発行したアイソクロナス入出力転送データを受け取り、アイソクロナス入出力転送データをIPパケットに変換して通信制御ドライバに引き渡す手段を備える。また、通信制御ドライバを介して、デバイスサーバから転送完了応答を受け取った場合に、その転送完了応答をUSBデバイスドライバに返し、デバイスサーバから転送完了応答を受け取っていない場合にはダミーデータをUSBデバイスドライバに返す手段を備える。
USBデバイスドライバでは、USBデバイスからの応答情報の遅延(受信待ち)によって、次のアイソクロナス転送要求の処理が停滞することがなくなる。これによって、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができる。
【発明の効果】
【0029】
本発明によれば、アイソクロナス転送方式のアシンクロナスモードにおけるUSB Audioデータが、ネットワークを介しデバイスサーバを経由する場合に、デバイスサーバは、アイソクロナス転送で保証すべきデータ転送量を維持でき、ネットワーク(特に、無線通信ネットワーク)の遅延によるデータ転送量の起伏に対応でき、ネットワーク耐性の向上が図れるといった効果を奏する。
【図面の簡単な説明】
【0030】
図1】デバイスサーバシステムの機能ブロック図
図2】アイソクロナス転送を行うデバイスサーバシステムの概念図
図3】デバイスサーバシステムのシステム構成図
図4】デバイスサーバシステムのデータフロー図
図5】デバイスサーバの処理フロー図(1)
図6】デバイスサーバの処理フロー図(2)
図7】クライアントの処理フロー図
【発明を実施するための最良の形態】
【0031】
以下、本発明の実施形態について、図面を参照しながら詳細に説明していく。なお、本発明の範囲は、以下の実施例や図示例に限定されるものではなく、幾多の変更及び変形が可能である。
【実施例1】
【0032】
図1は、デバイスサーバシステムの機能ブロックの一例を示している。
図1に示すデバイスサーバシステムでは、クライアント20からネットワーク40経由でデバイスサーバ10にローカル接続されているUSBデバイス30を制御する。
なお、ネットワーク40は、有線もしくは無線のネットワークである。また図1では、クライアント20とデバイスサーバ10は1:1で接続されているが、それぞれ複数存在し、N:1、1:N、N:M(N,Mは2以上の自然数)で接続されるものでもよい。また、デバイスサーバ10にローカル接続されるUSBデバイスは2台以上でもよい。
【0033】
ここで、クライアント20は、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、図示しないCPU、入力部、表示部、メモリ、外部記憶部、図示する通信インタフェース26などが内部バスで接続されている。
このクライアント20には、外部記憶部に格納され、CPUによる実行時にメモリに搭載されるアプリケーション21とデバイスドライバ22とUSBクラスドライバ23とトンネリングドライバ24と通信制御ドライバ25がソフトウェア部品として存在する。
この他、ソフトウェア部品として、OS(Operating System)、常駐モジュール、データ通信制御プログラムなどがあり、制御に必要な各種データと共に外部記憶部に格納されている。これらソフトウェア部品及び各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。
【0034】
常駐モジュールは、OSが起動している間、常に待機及び動作しているソフトウェア部品であり、ネットワーク40を介してデバイスサーバ10とデータ送受信を行う。またデバイスサーバ10にローカル接続されているUSBデバイス30を認識して識別するためのUSBデバイス情報を受信する。受信したUSBデバイス情報に基づいて、USBデバイス30とのデータ送受信に必要となるデバイスドライバ22、USBクラスドライバ23を生成し、USBデバイス30をネットワーク越しに制御できる状態にする。
【0035】
デバイスドライバ22は、OSやアプリケーション21、常駐モジュールなど上位プログラムからのデータ入出力要求を、データ入出力対象のUSBデバイス30に応じたデータ形式に変換し、また、USBデバイス30からの応答を上位プログラムへ渡す。
上位プログラムからのアイソクロナス転送によるデータ出力要求についても、同様に、アイソクロナス出力対象のUSBデバイス30に応じたデータ形式に変換される。
【0036】
USBクラスドライバ23は、デバイスドライバ22によって、USBデバイス30に応じたデータ形式に変換されたデータ入出力要求を、USBのデータ形式に準拠したパケットデータに変換してトンネリングドライバ24に渡し、またトンネリングドライバ24から送られてくるUSBのデータ形式に準拠したパケットデータを、データ形式変換してデバイスドライバ22へ渡す。
【0037】
またトンネリングドライバ24は、USBクラスドライバ23から渡されたパケットデータをIPパケットにカプセル化する。その一方で、デバイスサーバ10からIPパケットを受信すると、このIPパケットから応答パケットデータを取り出し(デカプセルして)、USBクラスドライバ23,デバイスドライバ22に受け渡す。
【0038】
通信制御ドライバ25は、トンネリングドライバ24からIPパケットを受け取り、通信インタフェース26へ引き渡す。また、通信インタフェース26から受け取ったIPパケットをトンネリングドライバ24へ引き渡す。このように、ネットワークを介して、クライアント20とデバイスサーバ10との間でIPパケットの送受信や通信制御を行っている。
【0039】
一方、デバイスサーバ10には、通信インタフェース16と通信制御ドライバ11とトンネリングドライバ12とUSBドライバ13、データバッファ部14、およびFBD解析部15が搭載されている。
トンネリングドライバ12では、クラインアント20からネットワークを介し、IPパケットを受信すると、このIPパケットからUSBのデータ形式に準拠したパケットデータを取り出し(デカプセルして)、USBドライバ13に送る。また、トンネリングドライバ12は、USBドライバ13からUSBのデータ形式に準拠したパケットデータを受け取って、IPパケットにカプセル化する。
【0040】
FBD解析部15では、クライアント20からアシンクロナス(非同期)モードのアイソクロナス入力転送要求を受け取る。また、FBD解析部15はUSBデバイス30からFBDを受け取り、受け取ったFBDの解析処理を行う。ここで、FBD解析部15が行うFBDの解析処理は、デバイスサーバ10のトンネリングドライバ12の処理の一部として含まれてもよく、またはデータバッファ部14の処理の一部として含まれていてもよい。その他、デバイスサーバの中の何らかのプログラムモジュールの処理の一部としてFBD解析部15が行う解析処理が埋め込まれていても構わない。
【0041】
図2に示すように、USBオーディオ機器のスピーカ32がUSB接続ケーブル31を介してデバイスサーバ10に接続され、クライアント20とデバイスサーバ10とが無線ネットワーク40を介して接続されているシステムでは、クライアント20から無線ネットワーク40を介してスピーカ32に対して音声や音楽などの音データをストリーミングデータとして転送できる。この場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス転送によって、音声データが途切れることなくスピーカに転送される。アシンクロナス(非同期)モードの場合、USBオーディオ機器のスピーカ32からクライアント20へ向けて、FBDが返される。
【0042】
また、図3に、デバイスサーバを利用した音声および音源を出力するシステムのシステム構成例を示す。図3は、デバイスサーバがアイソクロナス転送方式のアシンクロナスモードに対応し、ネットワークを介して、クライアントPCからデバイスサーバを経由して、USBスピーカを制御する構成を示している。図3(1)は、USBスピーカが自身にUSB−DACを内蔵している場合を示し、図3(2)は、USB−DACを内蔵したアンプを経由して、アンプがスピーカとケーブル接続されている場合を示している。つまり、図3(1)、(2)は、本発明の実施形態の図2に示したデバイスサーバ10とUSBオーディオ機器のスピーカ32との間を接続する形態を示した一例である。
【0043】
図4は、デバイスサーバシステムのデータフローの一例を示している。クライアント20内のUSBクラスドライバ23から、USBデバイス30に対し、アシンクロナス(非同期)モードのアイソクロナス入力転送要求(以下、“ISOC−IN要求”と呼ぶ)およびアイソクロナス出力転送するデータ(例えば、音声、音源のパケットデータ)が出されると、クライアント20内のトンネリングドライバが、ISOC−IN要求およびアイソクロナス出力転送(以下、“ISOC−OUT転送”と呼ぶ)するデータをカプセル化して、デバイスサーバ10に送る。デバイスサーバ10では、クライアント20からカプセル化されネットワーク経由で送られたISOC−IN要求およびISOC−OUT転送されたデータを受信すると、デカプセル処理の後、ISOC−IN要求をFBD解析部で受信し、ISOC−OUT転送されたデータをデバイスサーバ10自身のデータバッファ部14にバッファリング(蓄積)していく。データバッファ部14の保持データ量が上限閾値に到達するまで蓄積を繰り返し、保持データ量が上限閾値に到達した場合に、データバッファ部14に蓄積されたアイソクロナス出力転送データを、USBデバイス30に対してISOC−OUT転送を開始する。
【0044】
クライアント20のトンネリングドライバ24は、USBクラスドライバ23からISOC−IN要求を受信すると、その後の動作はUSBデバイス30から新たなFBDを受信しているか否かで異なる。新たなFBDを受信していない場合は、USBデバイス30への転送完了の有無に関わらず、クライアント20のトンネリングドライバ24は、USBクラスドライバ23に対してダミーデータを転送完了応答として返す。即座にクライアント20のUSBクラスドライバ23に対してダミーデータを転送完了応答として返すことで、アイソクロナス出力転送データの先読みを行う。先読みを行うことにより、受信したISOC−OUT転送データをデバイスサーバ10内のデータバッファ部14に十分に蓄積することができ、このことにより、データバッファ部14の保持データ量を十分に確保できるため、アイソクロナス転送で保証すべきデータ転送量を維持することができる。
【0045】
ここで、ダミーデータとは、転送が正常完了した旨の転送完了応答データであり、その時点における最新のFBDに相当するデータをコピーしたものである。具体的には、ダミーデータは、デバイスサーバ10がUSBデバイス30から受け取って保持している現時点の最新のFBDをコピーして、ネットワークを介してクライアント20のトンネリングドライバ24へ送信した転送完了応答である。あるいは、ダミーデータは、クライアント20のトンネリングドライバ24が保持しているFBD(あるいは前述のダミーデータ)で、過去にデバイスサーバ10からネットワークを介して受け取ったもののうち最新のものである。
一方、USBデバイス30からデバイスサーバ経由で新たなFBDを受信している場合は、これをクライアント20のUSBクラスドライバ23に対し、転送完了応答として返す。
【0046】
次に、デバイスサーバの処理フローについて、図5および図6を参照して説明する。
デバイスサーバ10は、クライアント20のトンネリングドライバ24からUSB転送要求を受信すると(ステップS01)、USB転送方式がアイソクロナス方式か否かを判定する(ステップS03)。判定の結果、USB転送方式がアイソクロナス方式の要求であれば(ISOC−IN要求であれば)、さらに制御モードがFBD制御モード(アシンクロナスモード)であるか否かを判定し(ステップS05)、制御モードがFBD制御モードの場合は、後述するFBD制御を実行する(ステップS07)。
一方、USB転送方式の判定(ステップS03)においてUSB転送方式がアイソクロナス方式以外であるか、または制御モードの判定(ステップS05)においてアシンクロナスモード以外である場合には、通常処理(本実施形態に記載するようなFBDの解析を行わず、FBDに依拠しないでデバイスにアイソクロナス入力転送要求を行う処理)を実行する(ステップS09)。
【0047】
図5のFBD制御モードにおけるFBD制御(ステップS07)の詳細フローについて、図6を参照して説明する。FBD制御では、FBDを受信していない場合、ISOC−IN要求をトリガーとして、デバイスサーバ10が保持している、現時点における最新のFBDをコピーし、クライアント20に対して転送完了応答を返し、データバッファ部14にISOC−OUT転送データをバッファリング(蓄積)する。そして、データバッファ部14の保持データ量が上限閾値に達した場合、USBデバイス30へデータバッファ部14に蓄積したデータをデータ転送して処理を終える。データバッファ部14の保持データ量が上限閾値に達していない場合は、データ転送しないで処理を終える。
【0048】
ここで、デバイスサーバ10のFBD解析部15は、当該FBD制御を担っており、予めデータバッファ部14の保持データ量にそれぞれデータ量に応じた閾値を設け、USB転送方式の判定とデバイスのFBDの有無をもとに動作する。これにより、デバイスサーバ10が自律的に動作し、クライアント20からの転送されるアイソクロナス出力転送データをアイソクロナス転送で保証すべきデータ転送量を維持することができる。
【0049】
一方、FBDを受信した場合(受信済)、FBDの解析処理(FBD解析処理)を行う。FBD解析処理は、USBデバイス30内のバッファメモリが適量より少ない場合であって、さらにデータバッファ部14の保持データ量が下限閾値に達していない場合には、USBデバイス30へデータバッファ部14に蓄積したデータをデータ転送して処理を終える。また、USBデバイス30内のバッファメモリが適量より多い(少なくない)場合、或は、データバッファ部14の保持データ量が下限閾値に達している場合は、データ転送しないで処理を終える。クライアントがFBDからUSBデバイス内のバッファメモリ量を判断してUSBデバイスへのテータ転送量を制御することは、アシンクロナスモードで従来から行われていることであるが、本実施例では、デバイスサーバがFBDからUSBデバイス内のバッファメモリ量を判断してUSBデバイスへのデータ転送量を制御することとなり、さらに制御に際してデバイスサーバにおけるデータバッファ部の保持データ量も勘案している。
【0050】
図7は、クライアントの処理フローを示している。
トンネリングドライバ24は、USBクラスドライバ23からISOC−IN要求発生すると(ステップS21)、ISOC−IN要求を自律制御する場合には(ステップS23)、さらにデバイスサーバ10からFBDを受信済である場合(ステップS25)、受信した最新のFBDをUSBクラスドライバ23に返す(ステップS27)。
一方、ISOC−IN要求を自律制御しない場合には(ステップS23)、そのまま処理を終了し、自律制御しない通常のISOC−IN要求処理を行う。また、デバイスサーバ10からFBDを受信していない場合(ステップS25)、デバイスサーバ10から受け取るダミーデータをUSBクラスドライバ23に返す(ステップS27)。
【0051】
なお、上述の実施例では、クライアントがネットワークを介してUSBデバイスを利用するデバイスサーバシステムを例に説明したが、本発明の適用範囲はこれに限定されず、USB通信規格と同等の通信方式、例えば、IEEE1394など別のインタフェースに準拠したものであってもよい。
【産業上の利用可能性】
【0052】
本発明は、USBデバイスなどの周辺デバイスの利便性を高めるデバイスサーバシステムに有用である。
【符号の説明】
【0053】
10 デバイスサーバ
20 クライアント
30 USBデバイス
31 USB接続ケーブル
32 スピーカ
40 ネットワーク
図1
図2
図3
図4
図5
図6
図7