JP2019020851A - デバイス制御装置、デバイス制御方法、およびプログラム - Google Patents
デバイス制御装置、デバイス制御方法、およびプログラム Download PDFInfo
- Publication number
- JP2019020851A JP2019020851A JP2017136484A JP2017136484A JP2019020851A JP 2019020851 A JP2019020851 A JP 2019020851A JP 2017136484 A JP2017136484 A JP 2017136484A JP 2017136484 A JP2017136484 A JP 2017136484A JP 2019020851 A JP2019020851 A JP 2019020851A
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- transfer method
- information
- unit
- control apparatus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】転送帯域が確保されていない転送方式において、複数のUSBデバイスを接続して使用する場合、個々のUSBデバイスで使用できる帯域幅が小さくなり、転送速度が低下してしまうことを防止するデバイス制御装置、デバイス制御方法、およびプログラムを提供する。
【解決手段】デバイス制御装置は、転送速度の低下を防止したいUSBデバイスのデータ転送速度を含むデバイス識別情報を登録し、USBデバイスに対しては転送帯域が確保されていない転送方式から転送帯域が確保された転送方式に切り替えてデータ送受信を行い、デバイスドライバに対しては転送方式を切り替える前のUSBデバイスとして認識させる。
【選択図】図1
【解決手段】デバイス制御装置は、転送速度の低下を防止したいUSBデバイスのデータ転送速度を含むデバイス識別情報を登録し、USBデバイスに対しては転送帯域が確保されていない転送方式から転送帯域が確保された転送方式に切り替えてデータ送受信を行い、デバイスドライバに対しては転送方式を切り替える前のUSBデバイスとして認識させる。
【選択図】図1
Description
本発明は、デバイス制御装置、デバイス制御方法、およびプログラムに関し、特に、USBデバイスを制御する機能を備えたデバイス制御装置、デバイス制御方法、およびプログラムに関する。
近年、複数のUSBデバイスを接続可能なデバイス制御装置や、ネットワークを介してUSBデバイスを共有することが可能なデバイス制御装置が従来技術として知られている。
USBのデータ転送方式にはコントロール転送、アイソクロナス転送、インタラプト転送、バルク転送の4種類あり、それぞれ転送の優先度がある。コントロール転送は、通信の優先度が4種類中で最も高く、転送帯域が確保されている。アイソクロナス転送は、通信の優先度が4種類中で2番目に高く、転送帯域が確保されている。インタラプト転送は、通信の優先度が4種類中で3番目に高く、転送帯域が確保されている。バルク転送は、通信の優先度が4種類中で最も低く、転送帯域が確保されていない。
複数のUSBデバイスがデータ通信する場合、前述した各転送方式を使用し通信を行うが、ホスト(パーソナルコンピュータ)は、各USBデバイスを同時に制御するので、バルク転送の場合は、転送帯域が確保されていないため、USBデバイスの数が多くなると、データの転送速度はUSBデバイスの数分低下する。
図9を用いてバルク転送において転送速度が低下することを説明する。USBデバイスAが1つのみ接続された場合、バルク転送方式で転送できる転送帯域の全部をUSBデバイスAが占有できる。しかし、USBデバイスAとUSBデバイスBが2つ接続された場合は、バルク転送方式で転送できる転送帯域をUSBデバイスAとUSBデバイスBで分け合う。
USBデバイスAのみが接続された場合の帯域幅をBL(バルク転送用の帯域占有率:バルク転送用として使用することが可能な帯域の割合)×α(有効帯域率:BLを1とした際にバルク転送用として実際に使用することが可能な帯域の割合)とした際に、USBデバイスAとUSBデバイスBが2つ接続された場合は、USBデバイスAの帯域幅がBL×α×0.5となり、USBデバイスAのみが接続された場合の帯域幅に比べ、使用できる帯域幅が半分になる。その結果、転送速度が低下する。
この転送速度の低下を防止するいくつかの提案がされている。例えば、USBデータのデータ転送方式に応じて、ネットワーク上に発行するパケットに優先度をつけて転送を行う方法がある(特許文献1参照)。
しかしながら、特許文献1は、転送する各データに優先度をつける場合であっても、データ転送方式がバルク転送方式の際は、図9を参照して説明したように限られた帯域を複数のUSBデバイスで共有するため、USBデバイス個々で使用できる帯域幅が小さくなり、その結果、転送速度は低下する。
そこで、本発明では、転送帯域が確保されていない転送方式(バルク転送)において、複数のUSBデバイスを接続して使用する場合に、特定のUSBデバイスの転送速度が低下することを低減することを目的とする。
上記の課題を解決するために、請求項1に記載のデバイス制御装置は、デバイスがローカル接続されたデバイス制御装置であって、デバイスドライバから前記デバイスへのデータ入出力要求に記述されている第1の転送方式が所定の条件を満たす場合に、当該第1の転送方式を、より転送優先度が高い第2の転送方式に書き換え、当該デバイスから前記デイバスドライバへのデータ入出力応答に記述されている第2の転送方式を、前記第1の転送方式に書き換える転送方式変換手段と、前記転送方式変換手段によって書き換えられた第1の転送方式または第2の転送方式に基づいてデータ送信するデータ送信手段と、を備えることを特徴とする。
本発明によれば、転送速度の低下を防止したいUSBデバイスのデバイス識別情報を登録し、転送帯域が確保されていない転送方式(バルク転送)を転送帯域が確保された転送方式(インタラプト転送)に変換することにより、複数のUSBデバイスを接続して使用する際に、目的とするUSBデバイスの転送速度が低下することを防止することが可能となる。
以下、本発明の実施形態について、デバイス制御システムの一例について図面を参照して説明する。
図1は、本発明の実施形態に係るデバイス制御システムの構成の一例を概略的に示すブロック図である。
図示のデバイス制御システムにおいては、情報処理装置100がローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)などのネットワークを介してデバイス制御装置200に接続されている。ネットワークは有線回線または無線回線などで構成される。そして、デバイス制御装置200には、例えば通信インターフェース(例えば、USBまたはHDMI(登録商標))によってデバイス300がローカル接続されている。
なお、図1に示すデバイス制御システムにおいては、情報処理装置100、デバイス制御装置200、およびデバイス300がそれぞれ1つのみ示されているが、情報処理装置100、デバイス制御装置200、およびデバイス300の台数は図示の例に限定されるものではない。
デバイス300が備える通信インターフェースは、USBまたはHDMI(登録商標)に限定されるものではない。以降の説明ではデバイス300の通信インターフェースをUSBとして説明する。
<情報処理装置100の構成>
情報処理装置100は、例えば、PC等の装置であって、ハードウェア構成として、CPU151、入力部152、表示部153、メモリ154、通信部155、および記憶部110等を備え、これらハードウェアは内部バスで相互に接続されている。
情報処理装置100は、例えば、PC等の装置であって、ハードウェア構成として、CPU151、入力部152、表示部153、メモリ154、通信部155、および記憶部110等を備え、これらハードウェアは内部バスで相互に接続されている。
CPU151は情報処理装置100全体の制御を司る。入力部152は、例えば、キーボードおよびマウスを備えている。表示部153として、例えば、液晶モニタが用いられる。メモリ154はRAMおよびROM等である。
通信部155はLANに接続するためのインターフェースであって、デバイス制御装置200とデータ送受信を行う。これにより、情報処理装置100はデバイス制御装置200にローカル接続されたデバイス300とデータ送受信することが可能となる。
記憶部110には、ソフトウェアであるオペレーティングシステム(以下「OS」と呼ぶ:図示せず)、デバイス識別情報設定部101、アプリケーション102、デバイスドライバ103、仮想化制御部104および通信制御部105が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリ154に読み出されて、CPU151の制御に従い動作する。
デバイス識別情報設定部101は、転送速度の低下を防止したいデバイス300のデータ転送速度を含むデバイス識別情報をデバイス制御装置200に通知する。デバイス識別情報は、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーID(以下「VID」と呼ぶ)、機種を識別するために割り当てられた製品ID(以下「PID」と呼ぶ)などであり、転送速度の低下を防止したいデバイス300を識別できればよい。なお、情報処理装置100からデバイス制御装置200に通知されたデバイス識別情報は、後述するデバイス識別情報209としてデバイス制御装置200に保持・記憶される。
アプリケーション102は、デバイスドライバ103に対してデータ入出力要求を指示することにより、デバイス300を制御するためのソフトウェアである。
デバイスドライバ103は、OSまたはアプリケーション102からのデータ入出力要求を、デバイス300に応じたデータ形式のデータ(以下「制御コマンド」と呼ぶ)に変換して、当該制御コマンドを仮想化制御部104に送る。さらに、デバイスドライバ103は制御コマンドに対する応答をアプリケーション102に通知する。このデバイスドライバ103は、一般に製造会社によって提供されるソフトウェアであって、情報処理装置100は各デバイスに対応したデバイスドライバ103によってデバイス300を制御することができる。
仮想化制御部104は、デバイスドライバ103から送られた制御コマンド(つまり、データ入出力要求)をUSBデータ形式に準拠したパケットデータ(以下「USBデータ」と呼ぶ)に変換する。また、仮想化制御部104は通信制御部105から送られてくるUSBデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ103に送る。
さらに、仮想化制御部104はデバイス300に対するデータ送受信要求に対して、デバイス300が情報処理装置100に直接的に接続(ローカル接続)されている際と同様の振る舞いをシミュレートする機能(以下「仮想化制御機能」と呼ぶ)を備えている。この仮想化制御機能により、情報処理装置100はデバイス300の接続状態が、これらのデバイス300をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
通信制御部105は、仮想化制御部104から送られるUSBデータとLANを介してデバイス制御装置200と通信する際のネットワークパケットとの変換処理を行って、デバイス制御装置200と情報処理装置100の間でデータ送受信の制御を行うソフトウェアである。また、通信制御部105は仮想化制御部104を介してアプリケーション102またはデバイスドライバ103から送られるデータ送受信要求に応じて、デバイス制御装置200と情報処理装置100との間のセッションの開始および終了の制御を行う。
<デバイス制御装置200の構成>
デバイス制御装置200は、例えば、プロジェクタ、プリンタまたは複合機等の周辺機器であって、ハードウェア構成として、CPU251、入力部252、表示部253、メモリ254、通信部255、および記憶部210等を備えている。また、デバイス制御装置200は、オフィス機器に限定されるものではなく、様々な組込み装置、携帯電話機、またはモバイル端末機器であってもよい。
デバイス制御装置200は、例えば、プロジェクタ、プリンタまたは複合機等の周辺機器であって、ハードウェア構成として、CPU251、入力部252、表示部253、メモリ254、通信部255、および記憶部210等を備えている。また、デバイス制御装置200は、オフィス機器に限定されるものではなく、様々な組込み装置、携帯電話機、またはモバイル端末機器であってもよい。
CPU251はデバイス制御装置200全体の制御を司る。入力部252は、例えば、操作ボタン、テンキーを備えている。表示部253として、例えば、液晶モニタが用いられる。メモリ254はRAMおよびROM等である。
通信部255はLANに接続するためのインターフェースであって、情報処理装置100とデータ送受信を行う。
記憶部210には、ソフトウェアであるOS(不図示)、通信制御部201、仮想化制御部202およびデバイス制御部205が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリ254に読み出されて、CPU251の制御に従い動作する。
通信制御部201は、情報処理装置100との間で行われる入出力データ等の送受信を制御するソフトウェアである。
仮想化制御部202は、デバイス制御装置200に接続されたデバイス300があたかも情報処理装置100にローカル接続されているかのように情報処理装置100へ認識させて制御できるようにするため、情報処理装置100の仮想化制御部104からの制御要求に従って(連動して)デバイス300の制御を行う。
また、仮想化制御部202は、デバイス属性情報通知部203と転送方式変換部204を備えている。
デバイス属性情報通知部203は、情報処理装置100がデバイス属性情報208の取得を要求した際に、デバイス情報記憶部207に保持されているデバイス識別情報209と、デバイス識別情報設定部101によって設定した情報処理装置100からのデバイス識別情報との照合をデバイス情報記憶部207に要求し、照合結果が一致した場合、デバイス属性情報208のデバイス属性情報をインタラプト転送からバルク転送に変換した内容を情報処理装置100のデバイスドライバ103に返すための機能部である。なお、デバイス情報記憶部207、デバイス属性情報208およびデバイス識別情報209については、後述する。
また、デバイス属性情報通知部203は、デバイス属性情報208をバルク転送からコントロール転送または、バルク転送からアイソクロナス転送へ変換し、情報処理装置100へ返すことも可能である。しかし、コントロール転送とアイソクロナス転送は、バルク転送とデータ形式が異なる。一方、バルク転送とインタラプト転送のデータ形式は同じである。そのため、本実施形態では、デバイス属性情報208をバルク転送からインタラプト転送または、インタラプト転送からバルク転送に変更する場合について例示する。データ形式が同じ転送方式間の変換であれば、これに限定したものではない。
転送方式変換部204は、情報処理装置100から通知されたデータ入出力要求(転送要求)に含まれる転送方式を変更する機能部であって、デバイス情報記憶部207に保持されたデバイス識別情報209と、情報処理装置100から通知された転送要求の中に含まれるデバイス識別情報との照合をデバイス情報記憶部207に要求し、照合結果が一致した場合、転送要求の中に含まれる転送方式をバルク転送からインタラプト転送に変更する。転送方式変換部204は、このバルク転送からインタラプト転送への転送方式の変更により、転送帯域を確保し転送速度を向上させている。
さらに、転送方式変換部204は、デバイス300から通知された、応答情報またはデータの転送方式を変更する機能部であって、デバイス情報記憶部207に保持されたデバイス識別情報209と、デバイス300から通知された転送結果の中に含まれるデバイス識別情報との照合をデバイス情報記憶部207に要求し、照合結果が一致した場合、応答情報またはデータ内の転送方式をインタラプト転送からバルク転送に変更する。転送方式変換部204は、デバイスからのインタラプト転送の転送結果を、情報処理装置100に対してバルク転送の転送結果として戻すために転送方式の変更を行っている。転送方式変換部204は、バルク転送とインタラプト転送がPacket IDが同一であり、バルク転送のデバイス300はインタラプト転送のデータを授受できることを利用している。
デバイス制御部205は、デバイス属性情報変換部206およびデバイス情報記憶部207を備えており、デバイス300を制御するための機能部であって、デバイス300とデバイス制御装置200との間のデータ送受信を制御する。
デバイス属性情報変換部206は、デバイス300から通知されたデバイス属性情報302を変更する機能部であって、デバイス情報記憶部207に保持されたデバイス識別情報209と、デバイス300から通知されたデバイス識別情報301との照合をデバイス情報記憶部207に要求する。デバイス属性情報変換部206は、照合結果に応じて転送速度の低下を防止したいデバイス300である場合には、デバイス属性情報302をバルク転送からインタラプト転送に変更し、デバイス情報記憶部207にデバイス属性情報208として記憶する。転送方式の変更は、図7を用いて後述するエンドポイントディスクリプタの書き換えにより行う。
デバイス情報記憶部207は、デバイス制御装置200に接続されたデバイス300のデバイス識別情報301、デバイス属性情報302を情報処理装置100から指示・設定に応じて記憶・保持するための機能部である。また、デバイス情報記憶部207は、デバイス識別情報設定部101により設定されたデバイス識別情報209と、デバイス属性情報通知部203、転送方式変換部204、またはデバイス属性情報変換部206から通知されたデバイス識別情報とを照合し、照合結果を通知する機能を有する。
デバイス属性情報208は、デバイス300から通知されたデバイス属性情報302を、上述したデバイス属性情報変換部206の処理を通して、記憶した情報である。
デバイス識別情報209は、情報処理装置100が備えるデバイス識別情報設定部101から通知されたデバイス識別情報である。
<デバイス300の構成>
デバイス300は、例えば、USBメモリ、USBプリンタ、USBカメラなど、バルク転送を行うデバイスであり、デバイス300はデバイス制御装置200にUSBインターフェース等の通信I/Fによって接続される。
デバイス300は、例えば、USBメモリ、USBプリンタ、USBカメラなど、バルク転送を行うデバイスであり、デバイス300はデバイス制御装置200にUSBインターフェース等の通信I/Fによって接続される。
デバイス識別情報301は、VID、PID、シリアル番号、デバイス名など、デバイス300を一意に識別するための情報である。
デバイス属性情報302は、デバイス300のデバイス属性情報を記憶した情報であって、デバイスの種類、USBのデータ転送方式、データ転送速度が含まれている。
<情報処理装置100におけるデバイス300の仮想化制御>
図2は、図1に示す情報処理装置100におけるデバイス300の仮想化制御に係る処理を説明するためのフローチャートである。
図2は、図1に示す情報処理装置100におけるデバイス300の仮想化制御に係る処理を説明するためのフローチャートである。
情報処理装置100内のOS起動中に常に待機および動作しているソフトウェア(以後常駐モジュールと呼ぶ:不図示)は、デバイス制御装置200を介してLAN接続されたデバイス300を知るために、通信制御部105を介して、デバイス制御装置200に対して検索パケットをブロードキャストする。具体的には、UDP(User Datagram Protocol)などのプロトコルを用いて、デバイス制御装置200の検索(問い合わせ)を行なう。
常駐モジュールは、デバイス制御装置200からデバイス識別情報301の受信を待ち(ステップS201)、デバイス制御装置200から受信がない場合には(ステップS401でNo)、仮想化制御は行わず、処理を終了する。
一方、常駐モジュールは、デバイス制御装置200からデバイス識別情報301の受信があると(ステップS201でYes)、デバイス識別情報301の登録を行う(ステップS202)。
常駐モジュールは、取得したデバイス識別情報301のうち、デバイスディスクリプタに記述されたベンダーID(VID)と製品ID(PID)、ストリングディスクリプタに記述されたシリアル番号とデバイス名称によってデバイス300の個体を識別する。また、インターフェースディスクリプタに記述されたインターフェース番号を識別する。このようにして識別されたデバイス300の個体に関する情報に基づいて、仮想化制御部104の生成(ステップS203)、デバイスドライバ103の生成(ステップS204)を動的に行う。
その後、アプリケーション102を起動し、アプリケーション102からドライバソフトウェア部品を制御するためのインターフェース(アプリケーション/ドライバインターフェース)を起動する(ステップS205)。起動が完了したらデバイス制御装置200への通知を行う(ステップS206)。このようにして、情報処理装置100内においてデバイス300の仮想化制御が実行される。
<デバイス300の接続時の処理について>
図3は、デバイス制御装置200にデバイス300が接続された際の処理(接続処理)を説明するためのフローチャートである。
図3は、デバイス制御装置200にデバイス300が接続された際の処理(接続処理)を説明するためのフローチャートである。
ユーザは、デバイス300が接続される前の処理(接続前処理)として、転送速度の低下を防止したい、デバイス300のデータ転送速度を含むデバイス識別情報を、情報処理装置100の入力部152から入力するか、メモリ154などに保存しておく。
情報処理装置100は、ユーザにより指定されたデータ転送速度を含むデバイス識別情報をデバイス識別情報設定部101によりデバイス制御装置200へ通知する。デバイス制御装置200は、デバイス識別情報209としてデバイス情報記憶部207へ記憶する。
ユーザは、デバイス300をデバイス制御装置200に接続する。これにより、デバイス制御装置200のデバイス制御部205がデバイス300のプラグインを検知する(ステップS301)。
デバイス制御部205は、デバイス300へデバイス情報を要求する(ステップS302)。ここでデバイス情報とは、デバイス識別情報301およびデバイス属性情報302を含む情報である。
デバイス300は、デバイス制御装置200からデバイス情報の取得要求を受けるとデバイス識別情報301およびデバイス属性情報302をデバイス制御装置200へ通知する。デバイス制御部205は、デバイス情報を取得し、さらに、デバイス属性情報変換部206にデバイス情報を通知する(ステップS303)。
デバイス属性情報変換部206は、プラグインを検知したデバイス300以外にデバイス300が存在するかを判定する(ステップS304)。プラグインを検知したデバイス300以外のデバイス300が既に存在する場合(ステップS304でYes)、ステップS305に進み、プラグインを検知したデバイス300以外のデバイス300が存在しない場合(ステップS304でNo)、デバイス制御装置200に接続されたデバイス300は一つであり、転送速度が低下しないため、ステップS309に進む。
デバイス属性情報変換部206は、デバイス300から通知されたデバイス情報が、転送速度の低下を防止したい対象デバイス(以下「変更対象デバイス」と呼ぶ)のものかどうか、デバイス情報記憶部207へ照合を要求する(ステップS305)。
デバイス属性情報変換部206は、ステップS305での照合結果をデバイス情報記憶部207から取得する(ステップS306)。
デバイス属性情報変換部206は、ステップS306で取得した照合結果を判定する(ステップS307)。デバイス情報記憶部207から取得した照合結果が、変更対象デバイスの場合(ステップS307でYes)、ステップS308に進む。変更対象デバイスでないデバイスの場合(ステップS307でNo)、ステップS309に進む。
デバイス属性情報変換部206は、デバイス300から取得したデバイス属性情報302のデータ転送方式をバルク転送から転送帯域が確保されたインタラプト転送に変更する(ステップS308)。
デバイス情報記憶部207は、デバイス300から取得し、ステップS308で変更したデバイス属性情報302をデバイス属性情報208としてデバイス情報記憶部207に記憶・保存する(ステップS309)。
<情報処理装置100のデバイス情報取得ついて>
図4は、情報処理装置100がデバイス300のデバイス情報を取得する際のデバイス制御装置200における処理(接続情報通知処理)を説明するためのフローチャートである。
図4は、情報処理装置100がデバイス300のデバイス情報を取得する際のデバイス制御装置200における処理(接続情報通知処理)を説明するためのフローチャートである。
デバイス制御装置200は、情報処理装置100からデバイス情報の要求を受ける(ステップS401)。
デバイス属性情報通知部203は、ステップS401の要求により、変更対象デバイスかどうか、デバイス情報記憶部207へ照合を要求し、デバイス情報記憶部207が照合する(ステップS402)。
デバイス属性情報通知部203は、デバイス情報記憶部207から照合結果を取得する(ステップS403)。
デバイス属性情報通知部203は、ステップS403で通知された照合結果を判定する(ステップS404)。変更対象デバイスである場合(ステップS404でYes)、ステップS405に進む。変更対象デバイスでないデバイスの場合(ステップS404でNo)、ステップS406に進む。
デバイス属性情報通知部203は、転送速度の低下を防止するためにバルク転送からインタラプト転送に書き換えたデバイス300のデバイス属性情報208を、バルク転送を行うデバイス300として情報処理装置100に通知するためにインタラプト転送からバルク転送に変更する(ステップS405)。なお、デバイス属性情報208の変更は、デバイス属性情報208を直接変更するのではなく、情報処理装置100に通知するデバイス情報を変更することであり、デバイス情報記憶部207に保持しているデバイス属性情報208が変更されるわけではない。
デバイス制御装置200は、情報処理装置100へデバイス情報を通知する(ステップS406)。このデバイス情報の通知により、アプリケーション102は、デバイス300がバルク転送を行うデバイス300であると認識し、情報処理装置100は正しいデバイスドライバ103を起動することが可能となる。
<データ出力時の処理について>
図5は、デバイス制御装置200が情報処理装置100から送信されたデータをデバイス300に出力する際の処理を説明するためのフローチャートである。
図5は、デバイス制御装置200が情報処理装置100から送信されたデータをデバイス300に出力する際の処理を説明するためのフローチャートである。
デバイス制御装置200は、情報処理装置100からデバイス300に対するデータ転送要求を受信し、データ転送要求を転送方式変換部204に通知する。転送方式変換部204は、通知された出力データの送信元が、変更対象デバイスかどうか、デバイス情報記憶部207を参照する(ステップS501)。
転送方式変換部204は、デバイス情報記憶部207から照合結果を取得する(ステップS502)。
転送方式変換部204は、ステップS502での照合結果を判定する(ステップS503)。デバイス情報記憶部207から取得した照合結果が、変更対象デバイスの場合(ステップS503でYes)、ステップS504に進む。変更対象デバイスでない場合(ステップS503でNo)、ステップS505に進む。
転送方式変換部204は、エンドポイントディスクリプタの転送方式をバルク転送からインタラプト転送に変更し、データ転送速度もデバイス識別情報設定部101により設定されたものに変更する(ステップS504)。転送方式をバルク転送から、優先度の高いインタラプト転送に変更することで、データ出力における転送速度の低下を低減している。エンドポイントディスクリプタの変更については、図7にて後述する。
転送方式変換部204は、転送方式を含む出力データを、デバイス制御部205に通知する。デバイス制御部205はデバイス300へ出力データを出力する(ステップS505)。
デバイス制御部205は、ステップS505の応答情報をデバイス300から取得する(ステップS506)。
デバイス制御部205は、転送方式変換部204にデバイス300からの応答情報を通知する。転送方式変換部204は、転送速度の低下を防止したい対象デバイスかどうかを確認するため、応答情報内のデバイス識別情報が、変更対象デバイスかどうか、デバイス情報記憶部207へ照合を要求する(ステップS507)
転送方式変換部204は、デバイス情報記憶部207から照合結果を取得する(ステップS508)。
転送方式変換部204は、ステップS508で照合結果を判定する(ステップS509)。デバイス情報記憶部207から取得した照合結果が、変更対象デバイスの場合(ステップS509でYes)、ステップS510に進む。変更対象デバイスでない場合(ステップS509でNo)、ステップS511に進む。
転送方式変換部204は、バルク転送を行うデバイス300としてデータ転送要求を受けているため、応答情報の転送方式をインタラプト転送からバルク転送に変更する(ステップS510)。転送方式をインタラプト転送からバルク転送に変更することで、情報処理装置100(デバイスドライバ103)に対してインタラプト転送ではなく、元々のバルク転送を行っているように認識させている。
転送方式変換部204は、転送方式を含む応答情報を通信制御部201に通知する。通信制御部201は情報処理装置100へ応答情報を通知する(ステップS511)。
<データ入力時の処理について>
図6は、デバイス制御装置200がデバイス300から情報処理装置100へデータを送信するための処理を説明するためのフローチャートである。
図6は、デバイス制御装置200がデバイス300から情報処理装置100へデータを送信するための処理を説明するためのフローチャートである。
デバイス制御装置200は、情報処理装置100からデータの入力を要求され、データ入力要求が通知される。データ入力要求を受信した転送方式変換部204は、受信したデータ入力要求の送信元が、変更対象デバイスかどうか、デバイス情報記憶部207へ照合を要求する(ステップS601)。
転送方式変換部204は、デバイス情報記憶部207から照合結果を取得する(ステップS602)。
転送方式変換部204は、ステップS602での照合結果を判定する(ステップS603)。デバイス情報記憶部207から取得した照合結果が、変更対象デバイスの場合(ステップS603でYes)、ステップS604に進む。変更対象デバイスでない場合(ステップS603でNo)、ステップS605に進む。
転送方式変換部204は、エンドポイントディスクリプタの転送方式をバルク転送からインタラプト転送に変更し、データ転送速度もデバイス識別情報設定部101により設定されたものに変更する(ステップS604)。転送方式をバルク転送から、優先度の高いインタラプト転送に変更することで、データ入力における転送速度の低下を低減している。
転送方式変換部204は、転送方式を含むデータ入力要求を、デバイス制御部205に通知する。デバイス制御部205はデバイス300へデータ入力要求を通知する(ステップS605)。
デバイス制御部205は、デバイス300からデータ入力要求に応じた入力データを受信する(ステップS606)。
デバイス制御部205は、転送方式変換部204にデバイス300からの入力データを通知する。転送方式変換部204は、通知された入力データの送信先が、変更対象デバイスかどうか、デバイス情報記憶部207へ照合を要求する(ステップS607)。
転送方式変換部204は、デバイス情報記憶部207から照合結果を取得する(ステップS608)。
転送方式変換部204は、ステップS608で照合結果を判定する(ステップS609)。デバイス情報記憶部207から取得した照合結果が、変更対象デバイスの場合(ステップS609でYes)、ステップS610に進む。変更対象デバイスでない場合(ステップS609でNo)、ステップS611に進む。
転送方式変換部204は、バルク転送を行うデバイス300としてデータ入力要求を受けているため、入力データの転送方式をインタラプト転送からバルク転送に変更する(ステップS610)。転送方式をインタラプト転送からバルク転送に変更することで、情報処理装置100(デバイスドライバ103)に対してインタラプト転送ではなく、元々のバルク転送を行っているように認識させている。
転送方式変換部204は、転送方式を含む入力データを、通信制御部201に通知する。通信制御部201は情報処理装置100へ、入力データを通知する(ステップS611)。
<エンドポイントディスクリプタの書き換えについて>
図7は、エンドポイントディスクリプタの書き換えを説明するための図である。USBにおけるディスクリプタとは、USBデバイス自体がどのような仕様かを記述した情報である。エンドポイントとはUSBデバイス内部に存在するもので、ホストとデバイス間のデータ転送におけるポートのようなものであり、一般的にある程度のバッファメモリも有している。エンドポイントディスクリプタとはエンドポイント用のディスクリプタであり、エンドポイント番号、転送方式の種類、最大パケットサイズなどの仕様を記述した情報である。
図7は、エンドポイントディスクリプタの書き換えを説明するための図である。USBにおけるディスクリプタとは、USBデバイス自体がどのような仕様かを記述した情報である。エンドポイントとはUSBデバイス内部に存在するもので、ホストとデバイス間のデータ転送におけるポートのようなものであり、一般的にある程度のバッファメモリも有している。エンドポイントディスクリプタとはエンドポイント用のディスクリプタであり、エンドポイント番号、転送方式の種類、最大パケットサイズなどの仕様を記述した情報である。
まず、エンドポイントディスクリプタを構成するbInterval、wMaxPacketSize、bmAttributes、bEndpointAddress、bDescriptorType、bLengthについてそれぞれ説明する。
bIntervalは、データ転送のエンドポイントのポーリング間隔である。ポーリング間隔はμフレーム(125μsec)の整数倍となる。
wMaxPacketSizeは、送受信可能な最大のパケットサイズである。ビット12とビット11はμフレームあたりの追加的なトランザクション数で、ハイスピード対応のアイソクロナス転送およびインタラプト転送時に有効になる。ビット12とビット11が「00」の場合は追加なし、「01」の場合はトランザクションが1つ追加、「10」の場合はトランザクションが2つ追加となる。なお、データ転送速度は、このwMaxPacketSizeの書き換えるための情報として使用される。
bmAttributesは、転送の属性である。ビット1とビット0が「00」の場合がコントロール転送、「01」の場合がアイソクロナス転送、「10」の場合がバルク転送、「11」場合がインタラプト転送となる。
bEndpointAddressは、エンドポイントとアドレスである。ビット3からビット0はエンドポイントの番号、ビット7が方向を示し、「0」の場合は出力用ンドポイント、「1」の場合は入力用エンドポイントになる。
bDescriptorTypeは、ディスクリプタのタイプである。エンドポイントディスクリプタの場合には、「0x05」となる。
bLengthは、ディスクリプタ全体のサイズである。
バルク転送からインタラプト転送へ切り換える場合、デバイス属性情報変換部206がbmAttributesのビット1とビット0を「10」(バルク転送)から「11」(インタラプト転送)に書き換える。インタラプト転送からバルク転送に切り換える場合、bmAttributesのビット1とビット0のデータを「11」(インタラプト転送)から「10」(バルク転送)に書き換える。
また、μフレームあたりの処理数を変更する場合はwMaxPacketSizeのビット12とビット11を「00」、「01」、「10」のいずれかに書き換える。「00」<「01」<「10」の順でμフレームあたりの処理数が増加するので、転送速度が速くなる。
上述のように、本発明の実施形態では、複数のUSBデバイスを接続して使用する場合に、転送帯域が確保されていない転送方式(バルク転送)から、転送帯域が確保され、通信の優先度をバルク転送より高いインタラプト転送に切り換えることで、通信の転送速度の低下を低減することができる。
なお、本発明を適用しない場合は、図9に例示したように、USBデバイスAとUSBデバイスBが2つ接続された場合、バルク転送方式で転送できる転送帯域をUSBデバイスAとUSBデバイスBで分け合い、USBデバイスAは帯域幅がBL×α(有効帯域率)×0.5になる。
一方、本発明を適用した場合は、USBデバイスAを高優先度のデバイスとして登録することで、USBデバイスAとUSBデバイスBが2つ接続された場合でも、優先的にUSBデバイスAの帯域を確保し転送速度の低下を抑制することができる。
具体的には、図10に例示するように、USBデバイスAとUSBデバイスBが2つ接続された場合のUSBデバイスAの帯域幅はBW×0.8×I(インタラプト転送用の帯域占有率)になる。
ここで、BL=BW×0.8×(1−(I+A))である(Aはアイソクロナス転送用の帯域占有率)。また、BW>BLであり、図9と図10を比較した場合、本発明を適用した場合の方が帯域幅は大きくなり、通信の転送速度の低下を低減することができる。
また、仮想化制御により、デバイス制御装置200とデバイス300との間をバルク転送からインタラプト転送に切り換え、さらに、デバイス制御装置200と情報処理装置100との間をインタラプト転送からバルク転送を切り換えることで、情報処理装置100側からは、あたかも元々の転送方式で転送しているように見える。
なお、デバイス情報記憶部207が、デバイス識別情報209を記憶し、照合を行うとして説明したが、デバイス属性情報通知部203やデバイス属性情報変換部206が照合を行ってもよい。
なお、情報処理装置100とデバイス300との間で、仮想化制御を行わずとも本発明は実施可能である。この場合、図8に示すようにネットワークを介さず、PC等の装置であるデバイス制御装置220とデバイス300が接続され、デバイス制御装置220の内部にデバイス識別情報設定部101、アプリケーション102、デバイスドライバ103を具備する。
以上、本発明について上記の各実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
例えば、上記の実施形態の機能の制御方法として、この制御方法をデバイス制御装置に実行させるようにすればよい。また、上述の実施形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムをデバイス制御装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
また、本発明は、以下の処理を実行することによっても実現される。つまり、上述した実施形態の機能を実現するソフトウェア(プログラムコード)を、ネットワークまたは各種の記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムコードを読み出して実行する処理である。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
また、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成してもよい。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
なお、プログラムコードを供給するため、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CDやDVDに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ROM等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
100:情報処理装置
101:デバイス識別情報設定部
102:アプリケーション
103:デバイスドライバ
104:仮想化制御部
105:通信制御部
110:記憶部
151:CPU
152:入力部
153:表示部
154:メモリ
155:通信部
200、220:デバイス制御装置
101:デバイス識別情報設定部
102:アプリケーション
103:デバイスドライバ
201:通信制御部
202:仮想化制御部
203:デバイス属性情報通知部
204:転送方式変換部
205:デバイス制御部
206:デバイス属性情報変換部
207:デバイス情報記憶部
208:デバイス属性情報
209:デバイス識別情報
210:記憶部
251:CPU
252:入力部
253:表示部
254:メモリ
255:通信部
300:デバイス
301:デバイス識別情報
302:デバイス属性情報
101:デバイス識別情報設定部
102:アプリケーション
103:デバイスドライバ
104:仮想化制御部
105:通信制御部
110:記憶部
151:CPU
152:入力部
153:表示部
154:メモリ
155:通信部
200、220:デバイス制御装置
101:デバイス識別情報設定部
102:アプリケーション
103:デバイスドライバ
201:通信制御部
202:仮想化制御部
203:デバイス属性情報通知部
204:転送方式変換部
205:デバイス制御部
206:デバイス属性情報変換部
207:デバイス情報記憶部
208:デバイス属性情報
209:デバイス識別情報
210:記憶部
251:CPU
252:入力部
253:表示部
254:メモリ
255:通信部
300:デバイス
301:デバイス識別情報
302:デバイス属性情報
Claims (5)
- デバイスがローカル接続されたデバイス制御装置であって、
デバイスドライバから前記デバイスへのデータ入出力要求に記述されている第1の転送方式が所定の条件を満たす場合に、当該第1の転送方式を、より転送優先度が高い第2の転送方式に書き換え、当該デバイスから前記デバイスドライバへのデータ入出力応答に記述されている第2の転送方式を、前記第1の転送方式に書き換える転送方式変換手段と、
前記転送方式変換手段によって書き換えられた第1の転送方式または第2の転送方式に基づいてデータ送信するデータ送信手段と、
を備えることを特徴とするデバイス制御装置。 - 前記デバイス制御装置は、ネットワークを介して情報処理装置に接続され、
前記デバイスがあたかも前記情報処理装置にローカル接続されているかのように前記情報処理装置へ認識させて制御できるように前記デバイスを仮想化制御する仮想化制御手段をさらに備えることを特徴とする請求項1に記載のデバイス制御装置。 - 前記第1の転送方式はバルク転送方式であり、前記第2の転送方式はインタラプト転送方式であることを特徴とする請求項1または請求項2に記載のデバイス制御装置。
- デバイスがローカル接続されたデバイス制御装置の制御方法であって、
デバイスドライバから前記デバイスへのデータ入出力要求に記述されている第1の転送方式が所定の条件を満たす場合に、当該第1の転送方式を、より転送優先度が高い第2の転送方式に書き換える第1の転送方式変換ステップと、
当該デバイスから前記デバイスドライバへのデータ入出力応答に記述されている第2の転送方式を、前記第1の転送方式に書き換える第2の転送方式変換ステップと、
前記第1の転送方式変換ステップまたは前記第2の転送方式変換ステップにおいて書き換えられた第1の転送方式または第2の転送方式に基づいてデータ送信するデータ送信ステップと、
を備えることを特徴とするデバイス制御方法。 - 請求項1乃至請求項3の何れか1項に記載のデバイス制御装置の各手段をコンピュータに機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017136484A JP2019020851A (ja) | 2017-07-12 | 2017-07-12 | デバイス制御装置、デバイス制御方法、およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017136484A JP2019020851A (ja) | 2017-07-12 | 2017-07-12 | デバイス制御装置、デバイス制御方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019020851A true JP2019020851A (ja) | 2019-02-07 |
Family
ID=65354269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017136484A Pending JP2019020851A (ja) | 2017-07-12 | 2017-07-12 | デバイス制御装置、デバイス制御方法、およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019020851A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022114517A1 (ko) * | 2020-11-27 | 2022-06-02 | 삼성전자 주식회사 | 전자 디바이스와 통신하는 호스트 디바이스 및 호스트 디바이스의 통신 방법 |
-
2017
- 2017-07-12 JP JP2017136484A patent/JP2019020851A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022114517A1 (ko) * | 2020-11-27 | 2022-06-02 | 삼성전자 주식회사 | 전자 디바이스와 통신하는 호스트 디바이스 및 호스트 디바이스의 통신 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE46488E1 (en) | Direct data transfer between slave devices | |
WO2023284699A1 (zh) | 基于Linux系统的协议栈数据传输方法、计算机设备和存储介质 | |
JP6475256B2 (ja) | コンピュータ、制御デバイス及びデータ処理方法 | |
US8819125B2 (en) | Method of transmitting data of USB device to server, and client terminal performing the method | |
US7568053B2 (en) | USB composite device, USB communication system, and USB communication method | |
JP2007280261A (ja) | ネットワーク上の機器を共有可能とする可搬型仮想記憶装置 | |
JP2015507291A (ja) | 非ネットワークインタフェースとネットワークインタフェースとの橋絡 | |
US20160077986A1 (en) | Electronic apparatus providing real-time switching and sharing of usb electronic devices among hosts | |
JP5581470B2 (ja) | デバイス共有システム、デバイス共有サーバ、デバイス共有クライアント、およびデバイス共有方法 | |
JP2005167965A (ja) | パケット処理方法および装置 | |
US11144305B2 (en) | Method for updating IC firmware | |
US20140149535A1 (en) | Method for transmitting data and mobile storage apparatus using the same | |
JP2008009803A (ja) | 情報記憶装置、および、情報転送方法、情報転送システム、プログラム、並びに、記録媒体 | |
JP2019020851A (ja) | デバイス制御装置、デバイス制御方法、およびプログラム | |
US9565049B2 (en) | Communication apparatus, communication method, and computer product for sharing data | |
JP6623644B2 (ja) | 制御装置および画像形成装置 | |
US9037629B2 (en) | Remote access system, electronic apparatus and method of processing remote access | |
JP6668769B2 (ja) | 情報処理装置、情報処理プログラム、画像形成システム、画像形成システムの制御方法 | |
TWI629638B (zh) | 儲存裝置及其任務執行方法、對應於儲存裝置的主機及其任務執行方法、以及應用於儲存裝置的控制單元 | |
JP4218034B2 (ja) | データ通信システムおよびデータ通信方法、データ通信プログラム | |
JP2006301857A (ja) | 通信装置、通信システム、通信方法及び通信プログラム | |
JP2009199281A (ja) | データ送信装置 | |
JP4900805B2 (ja) | Osイメージのデプロイメントマシン及び方法 | |
JP6115253B2 (ja) | プリントシステム、スプールサーバ、スプール方法、及びプログラム | |
JP7500174B2 (ja) | プリンタ |