ワイヤレスUSBシステム、デバイスワイヤアダプタ及び有線USBデバイスの制御方法
【課題】無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、システムの消費電力を削減することができるワイヤレスUSBシステムを提供すること。
【解決手段】本発明に係るワイヤレスUSBシステム1は、無線USB規格に従ってデータ通信を行うホスト4と、有線USBデバイス3と接続され、該有線USBデバイス3とホスト4の間のデータ通信を中継するデバイスワイヤアダプタ2を有するワイヤレスUSBシステム1であって、デバイスワイヤアダプタ2が、有線USBデバイス3と前記ホスト4の間のデータ通信状況に応じて、有線USBデバイス3を通常の動作状態から低消費電力状態へと設定する。
【解決手段】本発明に係るワイヤレスUSBシステム1は、無線USB規格に従ってデータ通信を行うホスト4と、有線USBデバイス3と接続され、該有線USBデバイス3とホスト4の間のデータ通信を中継するデバイスワイヤアダプタ2を有するワイヤレスUSBシステム1であって、デバイスワイヤアダプタ2が、有線USBデバイス3と前記ホスト4の間のデータ通信状況に応じて、有線USBデバイス3を通常の動作状態から低消費電力状態へと設定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイスワイヤアダプタの下流側に有線接続される有線USBデバイスを低消費電力状態へと設定するワイヤレスUSBシステム、デバイスワイヤアダプタ及び有線USBデバイスの制御方法に関する。
【背景技術】
【0002】
従来の有線USBシステムが非特許文献1等に開示されている。図7に従来の有線USB(Wired−USB)システムを示す(非特許文献1等)。図7のドライバスタック構成図に示すように、有線USBシステムは、ハードウェア61に加えて、ドライバソフトウェア62及びアプリケーション63を有する。ドライバソフトウェア63は、以下に示すドライバスタック(ホストコントローラドライバ621、USBバスクラスドライバ622及びUSBハブドライバ623)で構成され、それぞれの機能を担う。
【0003】
ホストコントローラドライバ621は、PCIなどを介して、ハードウェア(ホストコントローラ)との通信を行う。USBバスクラスドライバ622(USBD.SYS)は、USBトランザクション処理、バス・エニュメレーション管理、電力管理を行う。USBハブドライバ623(USBHUB.SYS)は、ポートの初期化、ハブ(HUB)トランザクションの管理、特定ハブ上のダウンストリームデバイスの初期化、ハブに接続されたデバイスの管理を行う。
【0004】
有線USBシステムは、PCIなどに接続されたハードウェア61(ホストコントローラ)を認識してハードウェア61に対応した「ホストコントローラドライバ621」をロードし、その上に「USBバスクラスドライバ622」及び「USBハブドライバ623」をロードする。このドライバスタックにおいて、接続されたUSBデバイスを含めた有線USBシステム6の電力管理機能は「USBバスクラスドライバ622」及び「USBハブドライバ623」により担われる。
【0005】
図8(a)は、有線USBシステムにおける下流ポート有線USBデバイスのサスペンド/レジューム動作を説明するための図である。尚、ここでは、USBハブ711において、USBデバイス712、713が接続される側を下流側と呼び、USBホスト72が接続される側を上流側という。有線USBシステムにおけるホスト71のドライバスタックでは、下流ポート有線USBデバイスがどこに接続されているのかを把握している。ドライバはこの情報に基づいて、USBデバイス712、713を省電力状態にすることが必要となった場合に、該当USBデバイスが接続されているハブ711のポート(Port)に対してSet Port Feature(PORT_SUSPEND)要求を発行して処理する。これにより、該当デバイスをサスペンド(Suspend)状態に遷移させると共に、再び該当のデバイスの動作を要求する場合には、Clear Port Feature(PORT_SUSPEND)要求により該当デバイスをレジューム(Resume)する。
【非特許文献1】「最新技術解説 入門USB」、技術評論社、p.161、3.1.4 USBドライバスタック
【非特許文献2】「USBコンプリート 第2版」、株式会社エスアイビー・アクセス、p.193、10−2 Win32ドライバモデル
【発明の開示】
【発明が解決しようとする課題】
【0006】
USB2.0規格に基づく有線USBデバイスでは、3msecの期間、ホスト或いはハブからパケットが来ないことを検出すると、サスペンドの状態となり消費電力を削減する。また、ホスト或いはハブからのレジューム信号の検出によりウェイクアップ(Wakeup)して動作状態へと復帰する。有線USBシステムは、デバイスの制御をホストに集約したホストセントリックなシステムであり、これらサスペンドやレジュームといった各デバイスの動作状態の制御についてもホスト(一般的にはPC)上で動作するドライバにより管理・制御が行われる。
【0007】
無線USBシステム(Wireless USB(WUSB))においても、基本的にこのドライバ構成は引き継がれている。ただし、無線USBシステムにおける「USBバスクラスドライバ」に相当する部分では無線USBデバイスの管理のみを行う。デバイスワイヤアダプタ(DeviceWireAdapter(DWA))下に接続された有線USBデバイスの管理は、無線USBシステムのドライバスタック上にデバイスワイヤアダプタクラスのドライバがロードされ、このドライバが上述の有線USBドライバスタックを構成することで同様にして機能する。このため、デバイスワイヤアダプタにおいても、原則として、デバイスワイヤアダプタは下流ポートに接続されたどのデバイスをサスペンド及びレジュームするのかを関知しておらず、下流ポートに接続されるデバイスの管理については、無線により接続されたホスト上のドライバにより管理・制御される。
【0008】
しかしながら、無線USBシステムでは、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合には、下流ポートに接続されている有線USBデバイスが動作状態のまま電力を消費し続けてしまうという問題点がある。以下、問題点について図を用いて説明する。
【0009】
図8(b)に示すように、デバイスワイヤアダプタ(DWA)81は、上流ポート側は無線84である無線USBによりホストコントローラ83と接続される。デバイスワイヤアダプタ81は無線接続されているホストコントローラ83からの要求によって、下流ポートに接続された有線USBデバイス82に対する転送処理を行う。このため、下流ポートに接続されている有線USBデバイス82をサスペンド状態とするには、無線接続されているホストコントローラ83からの指示が必要となるものの、有線の場合とは異なり、無線の場合には常に通信可能な状態であることが保障されているわけではない。各種機器が出すノイズなど、周辺環境の変化により無線通信の状態が悪化したことにより接続が消失した場合や、ホストコントローラ83を突然停止された場合にはサスペンドの指示を受けることができず、下流のデバイス82をサスペンド状態に遷移させることができないため、動作状態のまま電力を消費し続けることになる。
【0010】
例えばデバイスワイヤアダプタ81の近くにノイズ源が存在する場合を想定する。ノイズ源によって通信不能となる期間が非常に長い場合には、デバイスワイヤアダプタ81はホスト83からのフレームを一切受信できずに切断される。一方で、ホスト83からのフレームを極僅かでも受信可能な状態であり、それに対して応答が可能である場合には切断されないものの、このような環境では、フレームサイズの増加によりエラーとなる確率が増大し、極めて小さなフレームを除外しては頻繁にエラーとなり再送が繰り返される。このとき、上述したように、デバイスワイヤアダプタ81はホストコントローラ83からの要求に従い下流ポートに対して転送処理を行うため、このように頻繁にエラーが発生して再送を繰り返す状況においては、下流ポートに対する通信処理は非常に散発的なものとなる。そして、下流ポートに接続されている有線USBデバイス82はホストとの状態とは無関係であり、サスペンドするための処理もされることがないために、動作状態のままとなり電力を消費し続けてしまう。
【課題を解決するための手段】
【0011】
上述した課題を解決するために、本発明に係るワイヤレスUSBシステムは、無線USB規格に従ってデータ通信を行うホストと、有線USBデバイスと接続され、該有線USBデバイスと前記ホストの間のデータ通信を中継するデバイスワイヤアダプタを有するワイヤレスUSBシステムであって、前記デバイスワイヤアダプタが、前記有線USBデバイスと前記ホストの間のデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定することを特徴とする。
【0012】
このような構成により、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、デバイスワイヤアダプタ自身により、下流に接続された有線USBデバイスを通常の動作状態から低消費電力状態へと設定することで、システムの消費電力を削減することができる。
【0013】
上述した課題を解決するために、本発明に係るデバイスワイヤアダプタは、所定の無線通信プロトコルに従って上流ポートが無線接続され、下流ポートに接続される有線USBデバイスに対してデータ転送処理を行うデバイスワイヤアダプタであって、前記デバイスワイヤアダプタが、前記有線USBデバイスへ転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定することを特徴とする。
【0014】
このような構成により、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、デバイスワイヤアダプタ自身により、下流に接続された有線USBデバイスを通常の動作状態から低消費電力状態へと設定することで、消費電力を削減することができる。
【0015】
上述した課題を解決するために、本発明に係る有線USBデバイスの制御方法は、所定の無線通信プロトコルに従ってデータを入出力するデバイスワイヤアダプタを介してデータ転送処理を行い、当該デバイスワイヤアダプタの下流ポートに接続される有線USBデバイスを制御する有線USBデバイスの制御方法であって、前記有線USBデバイスへと転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定することを特徴とする。
【0016】
このような構成により、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、データのデータ通信状況に応じて、下流に接続された有線USBデバイスを通常の動作状態から低消費電力状態へと設定することで、有線USBデバイスの消費電力を削減することができる。
【発明の効果】
【0017】
本発明にかかるワイヤレスUSBシステムによれば、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、システムの消費電力を削減することができる。
【発明を実施するための最良の形態】
【0018】
実施の形態1.
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態にかかるデバイスワイヤアダプタ(DeviceWireAdapter(以下DWAという))は、所定の無線通信プロトコルに従って上流ポートが無線接続される。また、DWAは、下流ポート(DownPort)に接続される有線USBデバイスに対してデータ転送処理を行うと共に、有線USBデバイスへ転送するデータのデータ通信状況に応じて、有線USBデバイスを通常の動作状態から低消費電力状態へと設定する。
【0019】
図1に本実施の形態にかかるDWAのブロック図を示す。図1に示すDWA2は、Wireless USB 転送処理制御部21と、RPipe Descriptor処理部22と、TransferRequest制御部23と、Wired−USB転送処理制御部24と、RPipe情報25と、TransferRequestバッファ26と、Device List Table27を有する。
【0020】
続いて、各機能ブロックについて詳細に説明する。Wireless USB 転送処理制御部21は、WiMedia及び無線USBに準拠した転送プロトコル処理を行うMedia Access Controller(MAC)及びEndpoint Controller(EPC)を含む。Wireless USB 転送処理制御部21は、無線物理層であるPHYに対して送受信データの受け渡しを行う。RPipe Descriptor処理部22は、WireAdapterに規定されているRemote Pipe(RPipe)に対するリクエスト(Request)の応答を行う。
【0021】
TransferRequest制御部23は、WireAdapterに規定されるトランスファリクエスト(TransferRequest)を受信して、有線USBへの転送処理を行い、その結果としてトランスファリザルト(TransferResult)を生成する。Wired−USB転送処理制御部24は、USB2.0規格に準拠した転送プロトコル処理を行うものであり、プロトコル処理、パラシリ変換処理を行い、有線USBとして転送するためのデータの受け渡しを行う。
【0022】
RPipe情報25は、RPipe毎における各種Descriptor情報を保持するレジスタ群である。TransferRequestバッファ26は、受信したトランスファリクエスト情報を保持し、TransferRequest制御ブロック23による処理に伴って、その処理結果を更新・保持するためのレジスタ群である。Device List Table27は、DWA2の下流ポートに接続された有線USBデバイスのバス構成及び状態(Status)を更新・保持するためのレジスタ群である。
【0023】
次に、TransferRequest制御部23の構成について詳細に説明する。TransferRequest制御部23は、TransferRequest受信処理部231と、Device List Table生成処理部232と、Suspend/Resume処理部233と、DownPort側転送処理部234と、Timer値セット処理部235と、TransferResult生成処理部236と、TransferResult送信処理部237を有する。
【0024】
TransferRequest受信処理部231は、トランスファリクエストフレームを受信してその内容を解釈し、トランスファリクエストをレジスタに格納するためのモジュールである。Device List Table生成処理部232は、受信した(コントロール)リスクエスト及び/又はトランスファリクエストの内容から、新規USBデバイスの認識処理、及び既存デバイスに対するサスペンド或いはレジューム要求を検出し、下流ポートに接続された有線USBデバイスのバス構成及び状態をDevice List Table27に格納するためのモジュールである。
【0025】
Suspend/Resume処理部233は、所定の周期毎にDevice List Table27を検索し、予め定めた期間を超えて無線USBホストからのトランスファリクエストが来ていないと思われるデバイスを検出する。そして、検出されたデバイスに対して、無線USBホストに代わって、検出されたデバイスをサスペンド或いはレジュームさせるためのトランスファリクエストを生成処理するモジュールである。DownPort側転送処理部234は、トランスファリクエストの内容を、RPipe Descriptorにおいて指定されたパラメータに基づいてUSB2.0に従った転送として分割して、Wired−USB転送処理制御部24に対して処理要求を出すモジュールである。このトランスファリクエストにて指定されたデータを処理することによって、トランスファリクエストを完了する。
【0026】
Timer値セット処理部235は、まず、トランスファリクエストに対するトランスファリザルトの生成に伴い、該当のデバイスに対するコントロールリクエストが全て処理されたか否かを判定する。次いで、全て処理された場合には、Device List Table27のIdle Timerフィールドに値をセットすることにより、リクエストが無い期間の判定を行う。TransferResult生成処理部236は、DownPort側転送処理部234において処理された結果に基づいて、無線USBホストに返すデータ(トランスファリザルト)を生成するモジュールである。TransferResult送信処理部237は、転送結果であるトランスファリザルトを無線USBホストに対し送信するためのモジュールである。
【0027】
尚、従来のDWAは、無線USBにて受信したトランスファリクエストを下流ポート側の有線USB(USB2.0)への転送として処理するため、機能ブロック(TransferRequest制御部23)を備える。このTransferRequest制御部23は、TransferRequest受信処理部231と、DownPort側転送処理部234と、TransferResult生成処理部236と、TransferResult送信処理部237とから構成される。上述したように、TransferRequest受信処理部231は、無線USBにより送信されるトランスファリクエストフレームを受信し、Remote Pipe(RPipe)情報を結び付けて下流ポート側への転送要求として内部バッファに格納する。DownPort側転送処理部234は、保持されているトランスファリクエストにより、下流ポートに対して有線USBとしての転送処理を分割して実行し、処理結果の判定を行う。TransferResult生成処理部236は、下流ポート側の転送処理により完了した結果に基づいて、無線USBホストに対して返すトランスファリザルトを生成する。TransferResult送信処理部237は、トランスファリザルトを無線USBにより送信する。図9に、従来のDWAのブロック図の一例を示す。
【0028】
これに対し、本実施形態におけるDWA2では、下流ポートに接続されたUSBデバイスのバス構成を解析して保持するための「Device List Table生成処理部232」と、下流ポートに接続されているUSBデバイスを自立的にサスペンド或いはレジュームさせるための判定部分である「Suspend/Resume処理部233」と、トランスファリザルトの生成に伴い該当のデバイスに対する処理要求が無くなったことを判定するための「Timer値セット処理部235」と、バス構成を保持しておく「Device List Table27」のレジスタ群を追加して構成するものである。
【0029】
次に、下流ポートに接続された有線USBデバイスのバス構成及び状態を格納する、デバイスリストテーブル(Device List Table)27について説明する。図2は、Device List Table27によって保持される情報の構成を示す表である。Dev Addressは、該当デバイスのアドレスを示し、Set Address Requestにより指定されたDev Addressをセットする。Hub Addressは、該当デバイスが接続されているハブのアドレスを示し、Set Port Feature(PORT_RESET)時のハブのデバイスアドレスをセットする。Hub Portは、該当デバイスが接続されているハブのポート番号を示し、Set Port Feature(PORT_RESET)時のハブのポートをセットする。Idle Timerは、該当デバイスに対する最後のトランスファリクエストの処理完了時刻からの経過時間を示す。Suspend bitは、DWA2が自立的にサスペンドさせている状態か否かを示す(Acitive/Supend)。Host Statは、該当デバイスに対して、無線USBホストからサスペンドされたか否かを示す(Acitive/Supend)。
【0030】
次に、本実施の形態にかかるDWA2を有するワイヤレスUSBシステムについて、図3を用いてその動作の概要を説明する。ワイヤレスUSBシステム1は、無線USB規格に従ってデータ通信を行うホスト4と、有線USBデバイス3と接続され、有線USBデバイス3とホスト4の間のデータ通信を中継するDWA2を有する。DWA2は、受信したトランスファリクエストに従い転送を制御するTransferRequest制御部23内部に、自立的なサスペンド/レジューム制御の機能を追加することにより、一定期間ホストとの通信が途絶えた場合や、未使用デバイスに対するサスペンド或いはレジューム制御機能を持つ。
【0031】
より詳細には、まず、RPipe/TransferRequest情報から、ホストコントローラによりPORT_RESET要求されたハブのアドレス、その後に割り当てられたデバイスアドレス、及び接続ポートを取得することによりバス構成を保持する。そして、RPipe/TransferRequest情報を継続的に監視し、以下の条件に合致するデバイスを検出する。まず、サスペンド状態で無く、ペンディング(待ち状態)中のトランスファリクエストが存在しないデバイスに対しては、該当デバイスが接続されているハブに対してサスペンド指示を出す。一方、サスペンド状態で、新たにトランスファリクエストを受信したデバイスに対しては、該当デバイスが接続されているハブに対してレジューム指示を出す。尚、PORT_RESET時の処理を取得する方法に代えて、ベンダ固有リクエスト定義して、独自のドライバソフトウェアからバス構成情報を取得し、DWA2へと与える方式としてもよい。
【0032】
次に、本実施の形態にかかるDWA2の動作について図4に示すフローチャートを用いて説明する。DWA2は無線USBホスト4(以下、ホスト4という)からのWire Adapter Class Request(リクエスト)やTransferRequest(トランスファリクエスト)を解釈し、それに応じて下流ポートに対する処理を行う。まず、ホスト4は、DWA2の下流ポートに有線USBデバイス3が接続されたことを検出した場合、デバイス3が接続されたDWA2もしくはハブ31のポートに対してSet Port Feature(PORT_RESET)を発行する。これにより、接続されたデバイス3をリセットする。次いで、Set Addressにより、接続されたデバイス3に対するアドレスを割り当てる。
【0033】
TransferRequest制御部23では、このトランスファリクエストの内容を解釈する。ここで、Set Port Feature(PORT_RESET)を認識した場合には、その要求がされたハブ(DWA2自身も含む)のアドレス及びポート番号を、Device List Table27のHub Address及びHub Portにそれぞれ記憶する(図4(a)におけるステップS602)。次いで、ホスト4はデバイス3の能力などを把握するため、幾つかのDescriptor情報をデバイス3から読み出す。そして、該当デバイス3に対するSet Addressによって、該当デバイス3のアドレスを割り当てるためのトランスファリクエストを送信する。このSet Addressが発行されたことを認識すると、Device List Table27のDev Addressにセットする(図4(a)におけるステップS603)。これにより、下流ポートに接続されたデバイス3の構成を把握することができる。
【0034】
また、デバイス3は、通常、ホスト4からの要求によりサスペンド或いはレジュームされる。このため、Device List Table生成処理部232において、前述のバス構成の生成処理に加えて、ホスト4からデバイス3をサスペンド状態にするSet Port Feature(PORT_SUSPEND)及びClear Port Feature (PORT_SUSPEND)を検出して、Device List Table27におけるHost Statを更新する(図4(a)におけるステップS604、S605)。これにより、Suspend/Resume処理部233がサスペンドさせるデバイス3を検出する場合には、Host Statに既にサスペンド状態としてあるデバイス3を除外することができる。更に、Get Port Statusリクエストを検出することにより、下流ポートのデバイス3が接続を解除(Disconnect)された場合には、Device List Table27から該当のデバイス情報を削除するものとする(図4(a)におけるステップS606)。
【0035】
通常の転送処理に伴うトランスファリクエストを受信した場合には(図4(a)におけるステップS607)、Device List Table27の該当Device AddressのIdle Timerを参照し、Idle Timerがセットされている場合にはそれをクリアする。また、DownPort側転送処理部234によって処理をするため、トランスファリクエストバッファに登録する(図4(b)におけるステップS702)。次いで、Device List Table27を参照した際に、自発的にサスペンド状態に入れたことを示すSuspend bitがセットされていた場合には、受信したトランスファリクエストの処理を行う前に、そのデバイス3が接続されているHub Address、Portに対して、Clear Port Feature(PORT_SUSPEND)を発行することによりデバイス3をレジュームすると共に、Suspend bitをクリアする(図4(b)におけるステップS703乃至S706)。
【0036】
DownPort側転送処理部234は、RPipe情報を参照して、トランスファリクエストバッファに登録された要求をUSB2.0のパケット構成に分割してWired−USB転送処理制御部24へと渡す。これにより、下流ポートへの転送処理を起動する。トランスファリクエストで指定されたデータの送受信が完了するまでこの処理を繰り返し(図4(c)におけるステップS801、S802)、処理が完了した後、Timer値セット処理部235・TransferResult生成処理部236へと引き渡す。トランスファリクエストに対する処理が完了した後、転送結果に基づいて、ホスト4に対して返すデータ(トランスファリザルト)を生成する(図4(c)におけるステップS803)。また、同一デバイス3宛に他のトランスファリクエストが存在しているかをチェックする(図4(c)におけるステップS804、S805)。いずれのRPipeにも存在しない場合、ここでDevice List Table27の該当デバイス3におけるIdle Timerに現在のタイマー値をセットする(図4(c)におけるステップS807)。生成されたトランスファリザルトは、TransferResult送信処理部237を介して、ホスト4へ送信され、一連の転送処理が完了する。
【0037】
Suspend/Resume処理部233は、これらの処理の期間、Device List Table27に記録されているIdle Timer値を所定の周期で順番に繰り返しチェックする。この値は上述したように、トランスファリクエストの受信でクリアされ、トランスファリザルトの生成時に処理待ちのトランスファリクエストが無い場合にセットされる。このため、この値がセットされている期間は、該当デバイス3宛ての待機中のトランスファリクエストが存在していないもと判断することができる。そこで、セットされているタイマー値と現在値とを比較する(図4(d)におけるステップS901)。比較の結果、一定の期間以上経過しているデバイス3に対して、Device List Table27に記録されているHub Address、Port宛としてSet Port Feature(PORT_SUSPEND)を発行し(ステップS904)、それに対するトランスファリザルトの生成処理をマスク(遮断)する。Set Port Feature処理が完了したところでDevice List Table27のSuspend bitをセットし(図4(d)におけるステップS906)、該当デバイス3を内部的にサスペンド状態にしたことを記録する。この動作により、所望のデバイス3を低消費電力状態であるサスペンドの状態にすることができる。
【0038】
図5は、上述したUSB2.0における各リクエストの値を示す表である。それぞれのリクエストを検出した場合の処理内容を以下に説明する。Set Addressを検出した場合は、Device List Table27のDev Addressにデバイスアドレスをセットする。Set Port Feature(PORT_RESET)を検出した場合は、このリクエストの対象RPipeのアドレスをHub Addressに、Port_IndexをHub PortとしてDevice List Table27にセットする。Set Port Feature(PORT_SUSPEND)を検出した場合は、Device List Table27において、Port_Indexで指定されたポートに接続されたことになっているデバイス3のHost StatをSuspendにセットして更新する。Clear Port Feature(PORT_SUSPEND)を検出した場合は、Device List Table27において、Port_Indexで指定されたポートに接続されたことになっているデバイス3のHost StatをActiveにセットして更新する。Get Port Statusを検出した場合は、受信したデータのbit−0(Current Connect Status)がクリアされている場合、Port_Indexにて指定されたポートに接続されたことになっているデバイス3の情報を、Device List Table27から削除する。
【0039】
次に、本実施の形態にかかるDWA2の動作について図6に示すタイミングチャートを用いて説明する。まず、ホスト4とDWA2との接続を確立する(ステップS101)DWA2からの接続要求に応じて、エニュメレーション処理を起動する。そして、DWA2に対してWireAdapterEnable(下流ポートの有効化)を行い、下流ポートデバイス3に対してStart Of Frame(SOF)を送出開始して下流ポートデバイス3の接続を検出すると共に、下流ポートデバイス3が動作を開始する。ホスト4は、DWA2からの下流ポートデバイス3接続検出通知を受信すると、RPipe(Address0)セットを行う。
【0040】
次いで、下流ポートデバイス3のエニュメレーション処理を行う(ステップS102)。DWA2はホスト4からの(コントロール)リクエストやトランスファリクエストを解釈し、下流ポートに接続されたデバイス3の構成を把握する。接続されたデバイス3に対するエニュメレーション処理が起動され、各種ディスクリプタの取得、デバイスアドレスの設定のほか、必要に応じてコンフィグレーションの設定などが行われる。まず、ホスト4は、デバイス3が接続されたDWA2に対してリクエストとしてSet Port Feature(PORT_RESET)を発行する。これにより、接続されたデバイス3をリセットする。また、Set Port Feature(PORT_RESET)を認識した場合には、その要求がされたハブ(DWA2自身も含む)のHub Address及びHub Port情報を取得する(ステップS103)。次いで、ホスト4はデバイス3の能力などを把握するため、幾つかのDescriptor情報をデバイス3から読み出す。そして、トランスファリクエストとしてSet Addressを発行し、接続されたデバイス3に対するアドレスを割り当てる。このSet Addressが発行されたことを認識した場合には、デバイス3のDev Address情報を取得する(ステップS104)。
【0041】
下流ポートデバイス3のエニュメレーション処理の終了後、下流ポートデバイス3に対するRPipe(Address0)セットを行うことにより、下流ポートデバイス3の接続を確立する(ステップS105)。次いで、下流ポートデバイス3に対するデータ転送処理を開始する(ステップS106)。このとき、通常の転送処理に伴うトランスファリクエストを受信した場合には、Device List Table27の該当Device AddressのIdle Timerを参照し、Idle Timerがセットされている場合にはそれをクリア(例えば0に設定)する(ステップS107)。無線状態が悪化しておらず、通常の状態においては、このようにして転送処理を行う(ステップS108乃至S109)。トランスファリクエストで指定されたデータの送受信が完了するまでこの処理を繰り返してゆき、トランスファリクエストに対する処理が完了した後、転送結果に基づいて、ホスト4に対して返すデータ(トランスファリザルト)を生成する。このとき、同一デバイス3宛に他のトランスファリクエストが存在しているかをチェックする。いずれのRPipeにも存在しない場合、ここでDevice List Table27の該当デバイス3におけるIdle Timerに現在のタイマー値をセットする(ステップS111)。
【0042】
ここで、無線状態の悪化などにより、ホスト4からの要求を受信しにくい状況となった場合には、通信エラーが発生し再送が繰り返されることになる。DWA2では、Device List Table27に記録されているIdle Timer値を所定の周期で順番に繰り返しチェックする。DWA2がセットされているタイマー値と現在の値とを比較チェックした結果、Idle Timer値セットから一定の期間以上経過しているデバイス3が存在している場合には、該当デバイス3に対して、Set Port Feature(PORT_SUSPEND)を発行し(ステップS112)、それに対するトランスファリザルトの生成処理をマスクする。そして、下流ポートデバイス3に対してSOF送出を停止することによって、下流ポートデバイスをサスペンド状態にする。即ち、下流ポートデバイスは、DWA2から3msの間パケットを受信しない場合には、サスペンド状態へと遷移する。また、Set Port Feature処理が完了したところでDevice List Table27のSuspend bitをセットし(ステップS113)、該当デバイス3を内部的にサスペンド状態にしたことを記録する。この動作により、所望のデバイス3をサスペンドの状態にすることができる。
【0043】
次いで、無線状態が回復して、再びホスト4からのトランスファリクエストを受信可能な状態となった場合には、Device List Table27を参照した際に、自発的にサスペンド状態に入れたことを示すSuspend bitがセットされていた場合には、受信したトランスファリクエストの処理を行う前に、そのデバイス3が接続されているHub Address、Portに対して、Clear Port Feature(PORT_SUSPEND)を発行することによりデバイス3をレジュームすると共に、Suspend bitをクリアする(ステップS114)。そして、トランスファリクエストに対する処理が完了した後、転送結果に基づいて、生成されたトランスファリザルトが、ホスト4へ送信され、一連の転送処理が完了する。
【0044】
以上説明したように、本実施の形態では、DWA2内部において下流ポートに接続されたデバイス3の構成を把握した上で、処理待ちのトランスファリクエストが無くなった時点で、必要に応じ下流ポートデバイス3をサスペンド状態とする。これにより、ホスト4からトランスファリクエストを受信することが難しい状態においても、下流ポートのデバイス3をサスペンドの状態に入れることが可能となる。このため、無線状態が回復して、再びホスト4からのトランスファリクエストを受信可能な状態となるまでの期間、無駄に動作状態のままでいることが無くなり、下流ポートに接続されたデバイス3が消費する電力を削減することが可能となる。
【0045】
従来のDWAは、ホストからのトランスファリクエストに従い、下流ポートへの転送処理、及び下流ポートに接続されたデバイスのサスペンド/レジューム処理などを行うものである。しかしながら、ホストとの接続は無線であるため、その接続は常に安定しているものとは限らない。ホストからの要求を受信しにくい状況となった場合には、当然ながら、下流ポートデバイスをサスペンドするための要求なども受信しにくい状況となり、ホストによりデバイスを制御することができない。
【0046】
他方、本実施の形態に係るDWA2によれば、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、DWA2自身により、下流に接続された有線USBデバイス3を通常の動作状態から低消費電力状態へと設定することで、システムの消費電力を削減することができる。
【0047】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【0048】
【図1】本発明の実施の形態1にかかるデバイスワイヤアダプタを示すブロック図である。
【図2】本発明の実施の形態1にかかるDevice List Tableによって保持される情報の構成を示す表である。
【図3】本発明のワイヤレスUSBシステムの動作概要を示す図である。
【図4(a)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図4(b)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図4(c)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図4(d)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図5】本発明のワイヤレスUSBシステムにおける各リクエストの値を示す表である。
【図6(a)】本発明のワイヤレスUSBシステムの動作を示すタイミングチャートである。
【図6(b)】本発明のワイヤレスUSBシステムの動作を示すタイミングチャートである。
【図7】従来の有線USB(Wired−USB)システムを示すブロック図である。
【図8】USBシステムにおける下流ポートデバイスのサスペンド/レジューム動作を説明するための図である。
【図9】従来のデバイスワイヤアダプタを示すブロック図である。
【符号の説明】
【0049】
1 無線USBシステム
2 DWA
3 有線USBデバイス
4 ホスト
21 Wireless USB 転送処理制御部
22 RPipe Descriptor処理部
23 TransferRequest制御部
231 TransferRequest受信処理部
232 Device List Table生成処理部
233 Suspend/Resume処理部
234 DownPort側転送処理部
235 Timer値セット処理部
236 TransferResult生成処理部
237 TransferResult送信処理部
24 Wired−USB転送処理制御部
25 RPipe情報
26 TransferRequestバッファ
27 Device List Table
【技術分野】
【0001】
本発明は、デバイスワイヤアダプタの下流側に有線接続される有線USBデバイスを低消費電力状態へと設定するワイヤレスUSBシステム、デバイスワイヤアダプタ及び有線USBデバイスの制御方法に関する。
【背景技術】
【0002】
従来の有線USBシステムが非特許文献1等に開示されている。図7に従来の有線USB(Wired−USB)システムを示す(非特許文献1等)。図7のドライバスタック構成図に示すように、有線USBシステムは、ハードウェア61に加えて、ドライバソフトウェア62及びアプリケーション63を有する。ドライバソフトウェア63は、以下に示すドライバスタック(ホストコントローラドライバ621、USBバスクラスドライバ622及びUSBハブドライバ623)で構成され、それぞれの機能を担う。
【0003】
ホストコントローラドライバ621は、PCIなどを介して、ハードウェア(ホストコントローラ)との通信を行う。USBバスクラスドライバ622(USBD.SYS)は、USBトランザクション処理、バス・エニュメレーション管理、電力管理を行う。USBハブドライバ623(USBHUB.SYS)は、ポートの初期化、ハブ(HUB)トランザクションの管理、特定ハブ上のダウンストリームデバイスの初期化、ハブに接続されたデバイスの管理を行う。
【0004】
有線USBシステムは、PCIなどに接続されたハードウェア61(ホストコントローラ)を認識してハードウェア61に対応した「ホストコントローラドライバ621」をロードし、その上に「USBバスクラスドライバ622」及び「USBハブドライバ623」をロードする。このドライバスタックにおいて、接続されたUSBデバイスを含めた有線USBシステム6の電力管理機能は「USBバスクラスドライバ622」及び「USBハブドライバ623」により担われる。
【0005】
図8(a)は、有線USBシステムにおける下流ポート有線USBデバイスのサスペンド/レジューム動作を説明するための図である。尚、ここでは、USBハブ711において、USBデバイス712、713が接続される側を下流側と呼び、USBホスト72が接続される側を上流側という。有線USBシステムにおけるホスト71のドライバスタックでは、下流ポート有線USBデバイスがどこに接続されているのかを把握している。ドライバはこの情報に基づいて、USBデバイス712、713を省電力状態にすることが必要となった場合に、該当USBデバイスが接続されているハブ711のポート(Port)に対してSet Port Feature(PORT_SUSPEND)要求を発行して処理する。これにより、該当デバイスをサスペンド(Suspend)状態に遷移させると共に、再び該当のデバイスの動作を要求する場合には、Clear Port Feature(PORT_SUSPEND)要求により該当デバイスをレジューム(Resume)する。
【非特許文献1】「最新技術解説 入門USB」、技術評論社、p.161、3.1.4 USBドライバスタック
【非特許文献2】「USBコンプリート 第2版」、株式会社エスアイビー・アクセス、p.193、10−2 Win32ドライバモデル
【発明の開示】
【発明が解決しようとする課題】
【0006】
USB2.0規格に基づく有線USBデバイスでは、3msecの期間、ホスト或いはハブからパケットが来ないことを検出すると、サスペンドの状態となり消費電力を削減する。また、ホスト或いはハブからのレジューム信号の検出によりウェイクアップ(Wakeup)して動作状態へと復帰する。有線USBシステムは、デバイスの制御をホストに集約したホストセントリックなシステムであり、これらサスペンドやレジュームといった各デバイスの動作状態の制御についてもホスト(一般的にはPC)上で動作するドライバにより管理・制御が行われる。
【0007】
無線USBシステム(Wireless USB(WUSB))においても、基本的にこのドライバ構成は引き継がれている。ただし、無線USBシステムにおける「USBバスクラスドライバ」に相当する部分では無線USBデバイスの管理のみを行う。デバイスワイヤアダプタ(DeviceWireAdapter(DWA))下に接続された有線USBデバイスの管理は、無線USBシステムのドライバスタック上にデバイスワイヤアダプタクラスのドライバがロードされ、このドライバが上述の有線USBドライバスタックを構成することで同様にして機能する。このため、デバイスワイヤアダプタにおいても、原則として、デバイスワイヤアダプタは下流ポートに接続されたどのデバイスをサスペンド及びレジュームするのかを関知しておらず、下流ポートに接続されるデバイスの管理については、無線により接続されたホスト上のドライバにより管理・制御される。
【0008】
しかしながら、無線USBシステムでは、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合には、下流ポートに接続されている有線USBデバイスが動作状態のまま電力を消費し続けてしまうという問題点がある。以下、問題点について図を用いて説明する。
【0009】
図8(b)に示すように、デバイスワイヤアダプタ(DWA)81は、上流ポート側は無線84である無線USBによりホストコントローラ83と接続される。デバイスワイヤアダプタ81は無線接続されているホストコントローラ83からの要求によって、下流ポートに接続された有線USBデバイス82に対する転送処理を行う。このため、下流ポートに接続されている有線USBデバイス82をサスペンド状態とするには、無線接続されているホストコントローラ83からの指示が必要となるものの、有線の場合とは異なり、無線の場合には常に通信可能な状態であることが保障されているわけではない。各種機器が出すノイズなど、周辺環境の変化により無線通信の状態が悪化したことにより接続が消失した場合や、ホストコントローラ83を突然停止された場合にはサスペンドの指示を受けることができず、下流のデバイス82をサスペンド状態に遷移させることができないため、動作状態のまま電力を消費し続けることになる。
【0010】
例えばデバイスワイヤアダプタ81の近くにノイズ源が存在する場合を想定する。ノイズ源によって通信不能となる期間が非常に長い場合には、デバイスワイヤアダプタ81はホスト83からのフレームを一切受信できずに切断される。一方で、ホスト83からのフレームを極僅かでも受信可能な状態であり、それに対して応答が可能である場合には切断されないものの、このような環境では、フレームサイズの増加によりエラーとなる確率が増大し、極めて小さなフレームを除外しては頻繁にエラーとなり再送が繰り返される。このとき、上述したように、デバイスワイヤアダプタ81はホストコントローラ83からの要求に従い下流ポートに対して転送処理を行うため、このように頻繁にエラーが発生して再送を繰り返す状況においては、下流ポートに対する通信処理は非常に散発的なものとなる。そして、下流ポートに接続されている有線USBデバイス82はホストとの状態とは無関係であり、サスペンドするための処理もされることがないために、動作状態のままとなり電力を消費し続けてしまう。
【課題を解決するための手段】
【0011】
上述した課題を解決するために、本発明に係るワイヤレスUSBシステムは、無線USB規格に従ってデータ通信を行うホストと、有線USBデバイスと接続され、該有線USBデバイスと前記ホストの間のデータ通信を中継するデバイスワイヤアダプタを有するワイヤレスUSBシステムであって、前記デバイスワイヤアダプタが、前記有線USBデバイスと前記ホストの間のデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定することを特徴とする。
【0012】
このような構成により、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、デバイスワイヤアダプタ自身により、下流に接続された有線USBデバイスを通常の動作状態から低消費電力状態へと設定することで、システムの消費電力を削減することができる。
【0013】
上述した課題を解決するために、本発明に係るデバイスワイヤアダプタは、所定の無線通信プロトコルに従って上流ポートが無線接続され、下流ポートに接続される有線USBデバイスに対してデータ転送処理を行うデバイスワイヤアダプタであって、前記デバイスワイヤアダプタが、前記有線USBデバイスへ転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定することを特徴とする。
【0014】
このような構成により、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、デバイスワイヤアダプタ自身により、下流に接続された有線USBデバイスを通常の動作状態から低消費電力状態へと設定することで、消費電力を削減することができる。
【0015】
上述した課題を解決するために、本発明に係る有線USBデバイスの制御方法は、所定の無線通信プロトコルに従ってデータを入出力するデバイスワイヤアダプタを介してデータ転送処理を行い、当該デバイスワイヤアダプタの下流ポートに接続される有線USBデバイスを制御する有線USBデバイスの制御方法であって、前記有線USBデバイスへと転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定することを特徴とする。
【0016】
このような構成により、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、データのデータ通信状況に応じて、下流に接続された有線USBデバイスを通常の動作状態から低消費電力状態へと設定することで、有線USBデバイスの消費電力を削減することができる。
【発明の効果】
【0017】
本発明にかかるワイヤレスUSBシステムによれば、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、システムの消費電力を削減することができる。
【発明を実施するための最良の形態】
【0018】
実施の形態1.
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態にかかるデバイスワイヤアダプタ(DeviceWireAdapter(以下DWAという))は、所定の無線通信プロトコルに従って上流ポートが無線接続される。また、DWAは、下流ポート(DownPort)に接続される有線USBデバイスに対してデータ転送処理を行うと共に、有線USBデバイスへ転送するデータのデータ通信状況に応じて、有線USBデバイスを通常の動作状態から低消費電力状態へと設定する。
【0019】
図1に本実施の形態にかかるDWAのブロック図を示す。図1に示すDWA2は、Wireless USB 転送処理制御部21と、RPipe Descriptor処理部22と、TransferRequest制御部23と、Wired−USB転送処理制御部24と、RPipe情報25と、TransferRequestバッファ26と、Device List Table27を有する。
【0020】
続いて、各機能ブロックについて詳細に説明する。Wireless USB 転送処理制御部21は、WiMedia及び無線USBに準拠した転送プロトコル処理を行うMedia Access Controller(MAC)及びEndpoint Controller(EPC)を含む。Wireless USB 転送処理制御部21は、無線物理層であるPHYに対して送受信データの受け渡しを行う。RPipe Descriptor処理部22は、WireAdapterに規定されているRemote Pipe(RPipe)に対するリクエスト(Request)の応答を行う。
【0021】
TransferRequest制御部23は、WireAdapterに規定されるトランスファリクエスト(TransferRequest)を受信して、有線USBへの転送処理を行い、その結果としてトランスファリザルト(TransferResult)を生成する。Wired−USB転送処理制御部24は、USB2.0規格に準拠した転送プロトコル処理を行うものであり、プロトコル処理、パラシリ変換処理を行い、有線USBとして転送するためのデータの受け渡しを行う。
【0022】
RPipe情報25は、RPipe毎における各種Descriptor情報を保持するレジスタ群である。TransferRequestバッファ26は、受信したトランスファリクエスト情報を保持し、TransferRequest制御ブロック23による処理に伴って、その処理結果を更新・保持するためのレジスタ群である。Device List Table27は、DWA2の下流ポートに接続された有線USBデバイスのバス構成及び状態(Status)を更新・保持するためのレジスタ群である。
【0023】
次に、TransferRequest制御部23の構成について詳細に説明する。TransferRequest制御部23は、TransferRequest受信処理部231と、Device List Table生成処理部232と、Suspend/Resume処理部233と、DownPort側転送処理部234と、Timer値セット処理部235と、TransferResult生成処理部236と、TransferResult送信処理部237を有する。
【0024】
TransferRequest受信処理部231は、トランスファリクエストフレームを受信してその内容を解釈し、トランスファリクエストをレジスタに格納するためのモジュールである。Device List Table生成処理部232は、受信した(コントロール)リスクエスト及び/又はトランスファリクエストの内容から、新規USBデバイスの認識処理、及び既存デバイスに対するサスペンド或いはレジューム要求を検出し、下流ポートに接続された有線USBデバイスのバス構成及び状態をDevice List Table27に格納するためのモジュールである。
【0025】
Suspend/Resume処理部233は、所定の周期毎にDevice List Table27を検索し、予め定めた期間を超えて無線USBホストからのトランスファリクエストが来ていないと思われるデバイスを検出する。そして、検出されたデバイスに対して、無線USBホストに代わって、検出されたデバイスをサスペンド或いはレジュームさせるためのトランスファリクエストを生成処理するモジュールである。DownPort側転送処理部234は、トランスファリクエストの内容を、RPipe Descriptorにおいて指定されたパラメータに基づいてUSB2.0に従った転送として分割して、Wired−USB転送処理制御部24に対して処理要求を出すモジュールである。このトランスファリクエストにて指定されたデータを処理することによって、トランスファリクエストを完了する。
【0026】
Timer値セット処理部235は、まず、トランスファリクエストに対するトランスファリザルトの生成に伴い、該当のデバイスに対するコントロールリクエストが全て処理されたか否かを判定する。次いで、全て処理された場合には、Device List Table27のIdle Timerフィールドに値をセットすることにより、リクエストが無い期間の判定を行う。TransferResult生成処理部236は、DownPort側転送処理部234において処理された結果に基づいて、無線USBホストに返すデータ(トランスファリザルト)を生成するモジュールである。TransferResult送信処理部237は、転送結果であるトランスファリザルトを無線USBホストに対し送信するためのモジュールである。
【0027】
尚、従来のDWAは、無線USBにて受信したトランスファリクエストを下流ポート側の有線USB(USB2.0)への転送として処理するため、機能ブロック(TransferRequest制御部23)を備える。このTransferRequest制御部23は、TransferRequest受信処理部231と、DownPort側転送処理部234と、TransferResult生成処理部236と、TransferResult送信処理部237とから構成される。上述したように、TransferRequest受信処理部231は、無線USBにより送信されるトランスファリクエストフレームを受信し、Remote Pipe(RPipe)情報を結び付けて下流ポート側への転送要求として内部バッファに格納する。DownPort側転送処理部234は、保持されているトランスファリクエストにより、下流ポートに対して有線USBとしての転送処理を分割して実行し、処理結果の判定を行う。TransferResult生成処理部236は、下流ポート側の転送処理により完了した結果に基づいて、無線USBホストに対して返すトランスファリザルトを生成する。TransferResult送信処理部237は、トランスファリザルトを無線USBにより送信する。図9に、従来のDWAのブロック図の一例を示す。
【0028】
これに対し、本実施形態におけるDWA2では、下流ポートに接続されたUSBデバイスのバス構成を解析して保持するための「Device List Table生成処理部232」と、下流ポートに接続されているUSBデバイスを自立的にサスペンド或いはレジュームさせるための判定部分である「Suspend/Resume処理部233」と、トランスファリザルトの生成に伴い該当のデバイスに対する処理要求が無くなったことを判定するための「Timer値セット処理部235」と、バス構成を保持しておく「Device List Table27」のレジスタ群を追加して構成するものである。
【0029】
次に、下流ポートに接続された有線USBデバイスのバス構成及び状態を格納する、デバイスリストテーブル(Device List Table)27について説明する。図2は、Device List Table27によって保持される情報の構成を示す表である。Dev Addressは、該当デバイスのアドレスを示し、Set Address Requestにより指定されたDev Addressをセットする。Hub Addressは、該当デバイスが接続されているハブのアドレスを示し、Set Port Feature(PORT_RESET)時のハブのデバイスアドレスをセットする。Hub Portは、該当デバイスが接続されているハブのポート番号を示し、Set Port Feature(PORT_RESET)時のハブのポートをセットする。Idle Timerは、該当デバイスに対する最後のトランスファリクエストの処理完了時刻からの経過時間を示す。Suspend bitは、DWA2が自立的にサスペンドさせている状態か否かを示す(Acitive/Supend)。Host Statは、該当デバイスに対して、無線USBホストからサスペンドされたか否かを示す(Acitive/Supend)。
【0030】
次に、本実施の形態にかかるDWA2を有するワイヤレスUSBシステムについて、図3を用いてその動作の概要を説明する。ワイヤレスUSBシステム1は、無線USB規格に従ってデータ通信を行うホスト4と、有線USBデバイス3と接続され、有線USBデバイス3とホスト4の間のデータ通信を中継するDWA2を有する。DWA2は、受信したトランスファリクエストに従い転送を制御するTransferRequest制御部23内部に、自立的なサスペンド/レジューム制御の機能を追加することにより、一定期間ホストとの通信が途絶えた場合や、未使用デバイスに対するサスペンド或いはレジューム制御機能を持つ。
【0031】
より詳細には、まず、RPipe/TransferRequest情報から、ホストコントローラによりPORT_RESET要求されたハブのアドレス、その後に割り当てられたデバイスアドレス、及び接続ポートを取得することによりバス構成を保持する。そして、RPipe/TransferRequest情報を継続的に監視し、以下の条件に合致するデバイスを検出する。まず、サスペンド状態で無く、ペンディング(待ち状態)中のトランスファリクエストが存在しないデバイスに対しては、該当デバイスが接続されているハブに対してサスペンド指示を出す。一方、サスペンド状態で、新たにトランスファリクエストを受信したデバイスに対しては、該当デバイスが接続されているハブに対してレジューム指示を出す。尚、PORT_RESET時の処理を取得する方法に代えて、ベンダ固有リクエスト定義して、独自のドライバソフトウェアからバス構成情報を取得し、DWA2へと与える方式としてもよい。
【0032】
次に、本実施の形態にかかるDWA2の動作について図4に示すフローチャートを用いて説明する。DWA2は無線USBホスト4(以下、ホスト4という)からのWire Adapter Class Request(リクエスト)やTransferRequest(トランスファリクエスト)を解釈し、それに応じて下流ポートに対する処理を行う。まず、ホスト4は、DWA2の下流ポートに有線USBデバイス3が接続されたことを検出した場合、デバイス3が接続されたDWA2もしくはハブ31のポートに対してSet Port Feature(PORT_RESET)を発行する。これにより、接続されたデバイス3をリセットする。次いで、Set Addressにより、接続されたデバイス3に対するアドレスを割り当てる。
【0033】
TransferRequest制御部23では、このトランスファリクエストの内容を解釈する。ここで、Set Port Feature(PORT_RESET)を認識した場合には、その要求がされたハブ(DWA2自身も含む)のアドレス及びポート番号を、Device List Table27のHub Address及びHub Portにそれぞれ記憶する(図4(a)におけるステップS602)。次いで、ホスト4はデバイス3の能力などを把握するため、幾つかのDescriptor情報をデバイス3から読み出す。そして、該当デバイス3に対するSet Addressによって、該当デバイス3のアドレスを割り当てるためのトランスファリクエストを送信する。このSet Addressが発行されたことを認識すると、Device List Table27のDev Addressにセットする(図4(a)におけるステップS603)。これにより、下流ポートに接続されたデバイス3の構成を把握することができる。
【0034】
また、デバイス3は、通常、ホスト4からの要求によりサスペンド或いはレジュームされる。このため、Device List Table生成処理部232において、前述のバス構成の生成処理に加えて、ホスト4からデバイス3をサスペンド状態にするSet Port Feature(PORT_SUSPEND)及びClear Port Feature (PORT_SUSPEND)を検出して、Device List Table27におけるHost Statを更新する(図4(a)におけるステップS604、S605)。これにより、Suspend/Resume処理部233がサスペンドさせるデバイス3を検出する場合には、Host Statに既にサスペンド状態としてあるデバイス3を除外することができる。更に、Get Port Statusリクエストを検出することにより、下流ポートのデバイス3が接続を解除(Disconnect)された場合には、Device List Table27から該当のデバイス情報を削除するものとする(図4(a)におけるステップS606)。
【0035】
通常の転送処理に伴うトランスファリクエストを受信した場合には(図4(a)におけるステップS607)、Device List Table27の該当Device AddressのIdle Timerを参照し、Idle Timerがセットされている場合にはそれをクリアする。また、DownPort側転送処理部234によって処理をするため、トランスファリクエストバッファに登録する(図4(b)におけるステップS702)。次いで、Device List Table27を参照した際に、自発的にサスペンド状態に入れたことを示すSuspend bitがセットされていた場合には、受信したトランスファリクエストの処理を行う前に、そのデバイス3が接続されているHub Address、Portに対して、Clear Port Feature(PORT_SUSPEND)を発行することによりデバイス3をレジュームすると共に、Suspend bitをクリアする(図4(b)におけるステップS703乃至S706)。
【0036】
DownPort側転送処理部234は、RPipe情報を参照して、トランスファリクエストバッファに登録された要求をUSB2.0のパケット構成に分割してWired−USB転送処理制御部24へと渡す。これにより、下流ポートへの転送処理を起動する。トランスファリクエストで指定されたデータの送受信が完了するまでこの処理を繰り返し(図4(c)におけるステップS801、S802)、処理が完了した後、Timer値セット処理部235・TransferResult生成処理部236へと引き渡す。トランスファリクエストに対する処理が完了した後、転送結果に基づいて、ホスト4に対して返すデータ(トランスファリザルト)を生成する(図4(c)におけるステップS803)。また、同一デバイス3宛に他のトランスファリクエストが存在しているかをチェックする(図4(c)におけるステップS804、S805)。いずれのRPipeにも存在しない場合、ここでDevice List Table27の該当デバイス3におけるIdle Timerに現在のタイマー値をセットする(図4(c)におけるステップS807)。生成されたトランスファリザルトは、TransferResult送信処理部237を介して、ホスト4へ送信され、一連の転送処理が完了する。
【0037】
Suspend/Resume処理部233は、これらの処理の期間、Device List Table27に記録されているIdle Timer値を所定の周期で順番に繰り返しチェックする。この値は上述したように、トランスファリクエストの受信でクリアされ、トランスファリザルトの生成時に処理待ちのトランスファリクエストが無い場合にセットされる。このため、この値がセットされている期間は、該当デバイス3宛ての待機中のトランスファリクエストが存在していないもと判断することができる。そこで、セットされているタイマー値と現在値とを比較する(図4(d)におけるステップS901)。比較の結果、一定の期間以上経過しているデバイス3に対して、Device List Table27に記録されているHub Address、Port宛としてSet Port Feature(PORT_SUSPEND)を発行し(ステップS904)、それに対するトランスファリザルトの生成処理をマスク(遮断)する。Set Port Feature処理が完了したところでDevice List Table27のSuspend bitをセットし(図4(d)におけるステップS906)、該当デバイス3を内部的にサスペンド状態にしたことを記録する。この動作により、所望のデバイス3を低消費電力状態であるサスペンドの状態にすることができる。
【0038】
図5は、上述したUSB2.0における各リクエストの値を示す表である。それぞれのリクエストを検出した場合の処理内容を以下に説明する。Set Addressを検出した場合は、Device List Table27のDev Addressにデバイスアドレスをセットする。Set Port Feature(PORT_RESET)を検出した場合は、このリクエストの対象RPipeのアドレスをHub Addressに、Port_IndexをHub PortとしてDevice List Table27にセットする。Set Port Feature(PORT_SUSPEND)を検出した場合は、Device List Table27において、Port_Indexで指定されたポートに接続されたことになっているデバイス3のHost StatをSuspendにセットして更新する。Clear Port Feature(PORT_SUSPEND)を検出した場合は、Device List Table27において、Port_Indexで指定されたポートに接続されたことになっているデバイス3のHost StatをActiveにセットして更新する。Get Port Statusを検出した場合は、受信したデータのbit−0(Current Connect Status)がクリアされている場合、Port_Indexにて指定されたポートに接続されたことになっているデバイス3の情報を、Device List Table27から削除する。
【0039】
次に、本実施の形態にかかるDWA2の動作について図6に示すタイミングチャートを用いて説明する。まず、ホスト4とDWA2との接続を確立する(ステップS101)DWA2からの接続要求に応じて、エニュメレーション処理を起動する。そして、DWA2に対してWireAdapterEnable(下流ポートの有効化)を行い、下流ポートデバイス3に対してStart Of Frame(SOF)を送出開始して下流ポートデバイス3の接続を検出すると共に、下流ポートデバイス3が動作を開始する。ホスト4は、DWA2からの下流ポートデバイス3接続検出通知を受信すると、RPipe(Address0)セットを行う。
【0040】
次いで、下流ポートデバイス3のエニュメレーション処理を行う(ステップS102)。DWA2はホスト4からの(コントロール)リクエストやトランスファリクエストを解釈し、下流ポートに接続されたデバイス3の構成を把握する。接続されたデバイス3に対するエニュメレーション処理が起動され、各種ディスクリプタの取得、デバイスアドレスの設定のほか、必要に応じてコンフィグレーションの設定などが行われる。まず、ホスト4は、デバイス3が接続されたDWA2に対してリクエストとしてSet Port Feature(PORT_RESET)を発行する。これにより、接続されたデバイス3をリセットする。また、Set Port Feature(PORT_RESET)を認識した場合には、その要求がされたハブ(DWA2自身も含む)のHub Address及びHub Port情報を取得する(ステップS103)。次いで、ホスト4はデバイス3の能力などを把握するため、幾つかのDescriptor情報をデバイス3から読み出す。そして、トランスファリクエストとしてSet Addressを発行し、接続されたデバイス3に対するアドレスを割り当てる。このSet Addressが発行されたことを認識した場合には、デバイス3のDev Address情報を取得する(ステップS104)。
【0041】
下流ポートデバイス3のエニュメレーション処理の終了後、下流ポートデバイス3に対するRPipe(Address0)セットを行うことにより、下流ポートデバイス3の接続を確立する(ステップS105)。次いで、下流ポートデバイス3に対するデータ転送処理を開始する(ステップS106)。このとき、通常の転送処理に伴うトランスファリクエストを受信した場合には、Device List Table27の該当Device AddressのIdle Timerを参照し、Idle Timerがセットされている場合にはそれをクリア(例えば0に設定)する(ステップS107)。無線状態が悪化しておらず、通常の状態においては、このようにして転送処理を行う(ステップS108乃至S109)。トランスファリクエストで指定されたデータの送受信が完了するまでこの処理を繰り返してゆき、トランスファリクエストに対する処理が完了した後、転送結果に基づいて、ホスト4に対して返すデータ(トランスファリザルト)を生成する。このとき、同一デバイス3宛に他のトランスファリクエストが存在しているかをチェックする。いずれのRPipeにも存在しない場合、ここでDevice List Table27の該当デバイス3におけるIdle Timerに現在のタイマー値をセットする(ステップS111)。
【0042】
ここで、無線状態の悪化などにより、ホスト4からの要求を受信しにくい状況となった場合には、通信エラーが発生し再送が繰り返されることになる。DWA2では、Device List Table27に記録されているIdle Timer値を所定の周期で順番に繰り返しチェックする。DWA2がセットされているタイマー値と現在の値とを比較チェックした結果、Idle Timer値セットから一定の期間以上経過しているデバイス3が存在している場合には、該当デバイス3に対して、Set Port Feature(PORT_SUSPEND)を発行し(ステップS112)、それに対するトランスファリザルトの生成処理をマスクする。そして、下流ポートデバイス3に対してSOF送出を停止することによって、下流ポートデバイスをサスペンド状態にする。即ち、下流ポートデバイスは、DWA2から3msの間パケットを受信しない場合には、サスペンド状態へと遷移する。また、Set Port Feature処理が完了したところでDevice List Table27のSuspend bitをセットし(ステップS113)、該当デバイス3を内部的にサスペンド状態にしたことを記録する。この動作により、所望のデバイス3をサスペンドの状態にすることができる。
【0043】
次いで、無線状態が回復して、再びホスト4からのトランスファリクエストを受信可能な状態となった場合には、Device List Table27を参照した際に、自発的にサスペンド状態に入れたことを示すSuspend bitがセットされていた場合には、受信したトランスファリクエストの処理を行う前に、そのデバイス3が接続されているHub Address、Portに対して、Clear Port Feature(PORT_SUSPEND)を発行することによりデバイス3をレジュームすると共に、Suspend bitをクリアする(ステップS114)。そして、トランスファリクエストに対する処理が完了した後、転送結果に基づいて、生成されたトランスファリザルトが、ホスト4へ送信され、一連の転送処理が完了する。
【0044】
以上説明したように、本実施の形態では、DWA2内部において下流ポートに接続されたデバイス3の構成を把握した上で、処理待ちのトランスファリクエストが無くなった時点で、必要に応じ下流ポートデバイス3をサスペンド状態とする。これにより、ホスト4からトランスファリクエストを受信することが難しい状態においても、下流ポートのデバイス3をサスペンドの状態に入れることが可能となる。このため、無線状態が回復して、再びホスト4からのトランスファリクエストを受信可能な状態となるまでの期間、無駄に動作状態のままでいることが無くなり、下流ポートに接続されたデバイス3が消費する電力を削減することが可能となる。
【0045】
従来のDWAは、ホストからのトランスファリクエストに従い、下流ポートへの転送処理、及び下流ポートに接続されたデバイスのサスペンド/レジューム処理などを行うものである。しかしながら、ホストとの接続は無線であるため、その接続は常に安定しているものとは限らない。ホストからの要求を受信しにくい状況となった場合には、当然ながら、下流ポートデバイスをサスペンドするための要求なども受信しにくい状況となり、ホストによりデバイスを制御することができない。
【0046】
他方、本実施の形態に係るDWA2によれば、無線状態の悪化などにより接続が消失した場合や、ホストが突然停止された場合においても、DWA2自身により、下流に接続された有線USBデバイス3を通常の動作状態から低消費電力状態へと設定することで、システムの消費電力を削減することができる。
【0047】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【0048】
【図1】本発明の実施の形態1にかかるデバイスワイヤアダプタを示すブロック図である。
【図2】本発明の実施の形態1にかかるDevice List Tableによって保持される情報の構成を示す表である。
【図3】本発明のワイヤレスUSBシステムの動作概要を示す図である。
【図4(a)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図4(b)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図4(c)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図4(d)】本発明のワイヤレスUSBシステムにおける動作を示すフローチャートである。
【図5】本発明のワイヤレスUSBシステムにおける各リクエストの値を示す表である。
【図6(a)】本発明のワイヤレスUSBシステムの動作を示すタイミングチャートである。
【図6(b)】本発明のワイヤレスUSBシステムの動作を示すタイミングチャートである。
【図7】従来の有線USB(Wired−USB)システムを示すブロック図である。
【図8】USBシステムにおける下流ポートデバイスのサスペンド/レジューム動作を説明するための図である。
【図9】従来のデバイスワイヤアダプタを示すブロック図である。
【符号の説明】
【0049】
1 無線USBシステム
2 DWA
3 有線USBデバイス
4 ホスト
21 Wireless USB 転送処理制御部
22 RPipe Descriptor処理部
23 TransferRequest制御部
231 TransferRequest受信処理部
232 Device List Table生成処理部
233 Suspend/Resume処理部
234 DownPort側転送処理部
235 Timer値セット処理部
236 TransferResult生成処理部
237 TransferResult送信処理部
24 Wired−USB転送処理制御部
25 RPipe情報
26 TransferRequestバッファ
27 Device List Table
【特許請求の範囲】
【請求項1】
無線USB規格に従ってデータ通信を行うホストと、
有線USBデバイスと接続され、該有線USBデバイスと前記ホストの間のデータ通信を中継するデバイスワイヤアダプタを有するワイヤレスUSBシステムであって、
前記デバイスワイヤアダプタが、前記有線USBデバイスと前記ホストの間のデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とするワイヤレスUSBシステム。
【請求項2】
前記デバイスワイヤアダプタが、
前記有線USBデバイスと前記ホストの間のデータ通信が予め定めた期間以上行われていない場合に、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とする請求項1記載のワイヤレスUSBシステム。
【請求項3】
前記デバイスワイヤアダプタが、
前記ホストから前記有線USBデバイスに対する全てのコントロールリクエストが処理されている場合に、当該有線USBデバイスに対するコントロールリクエストが無い期間を測定し、前記デバイスワイヤアダプタの下流側に接続された前記有線USBデバイスのうち、前記測定期間が予め定めた期間を超えた有線USBデバイスが存在する場合に、当該有線USBデバイスをサスペンド状態とするためのトランスファリクエストを生成処理する
ことを特徴とする請求項1又は2いずれか1項記載のワイヤレスUSBシステム。
【請求項4】
前記デバイスワイヤアダプタが、
前記ホストから受信したコントロールリクエスト及び/又はトランスファリクエストから、前記有線USBデバイスに対するサスペンド/レジューム要求を検出することで、接続された前記有線USBデバイスの状態を記憶部に格納し、格納された前記有線USBデバイスの前記状態がアクティブ状態である前記有線USBデバイスをサスペンド状態とするためのトランスファリクエストを生成処理する
ことを特徴とする請求項1乃至3いずれか1項記載のワイヤレスUSBシステム。
【請求項5】
前記デバイスワイヤアダプタが、
当該デバイスワイヤアダプタの下流側に接続された前記有線USBデバイスのバス構成及び状態を格納するデバイスリストテーブルと、
前記ホストから受信したコントロールリクエスト及び/又はトランスファリクエストから、前記デバイスワイヤアダプタに新規に接続される有線USBデバイスの認識処理を行うと共に、既存の有線USBデバイスに対するサスペンド/レジューム要求を検出することで、接続された有線USBデバイスのバス構成及び状態を前記デバイスリストテーブルに格納するデバイスリストテーブル生成処理部と、
前記USBデバイスから前記ホストに対するトランスファリザルトを生成するときに、前記ホストから当該有線USBデバイスに対する全てのコントロールリクエストが処理されている場合に、当該有線USBデバイスに対するコントロールリクエストが無い期間を測定するためのタイマー値を前記デバイスリストテーブルにセットして格納するタイマー値セット処理部と、
所定の周期毎に前記デバイスリストテーブルを検索して、前記有線USBデバイスのうち、前記タイマー値が予め定めた期間を超えた有線USBデバイスが存在する場合に、当該有線USBデバイスをサスペンド状態とするためのトランスファリクエストを生成処理するサスペンド/レジューム処理部と
を有することを特徴とする請求項1乃至4いずれか1項記載のワイヤレスUSBシステム。
【請求項6】
所定の無線通信プロトコルに従って上流ポートが無線接続され、下流ポートに接続される有線USBデバイスに対してデータ転送処理を行うデバイスワイヤアダプタであって、
前記デバイスワイヤアダプタが、前記有線USBデバイスへ転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とするデバイスワイヤアダプタ。
【請求項7】
所定の無線通信プロトコルに従ってデータを入出力するデバイスワイヤアダプタを介してデータ転送処理を行い、当該デバイスワイヤアダプタの下流ポートに接続される有線USBデバイスを制御する有線USBデバイスの制御方法であって、
前記有線USBデバイスへと転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とする有線USBデバイスの制御方法。
【請求項1】
無線USB規格に従ってデータ通信を行うホストと、
有線USBデバイスと接続され、該有線USBデバイスと前記ホストの間のデータ通信を中継するデバイスワイヤアダプタを有するワイヤレスUSBシステムであって、
前記デバイスワイヤアダプタが、前記有線USBデバイスと前記ホストの間のデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とするワイヤレスUSBシステム。
【請求項2】
前記デバイスワイヤアダプタが、
前記有線USBデバイスと前記ホストの間のデータ通信が予め定めた期間以上行われていない場合に、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とする請求項1記載のワイヤレスUSBシステム。
【請求項3】
前記デバイスワイヤアダプタが、
前記ホストから前記有線USBデバイスに対する全てのコントロールリクエストが処理されている場合に、当該有線USBデバイスに対するコントロールリクエストが無い期間を測定し、前記デバイスワイヤアダプタの下流側に接続された前記有線USBデバイスのうち、前記測定期間が予め定めた期間を超えた有線USBデバイスが存在する場合に、当該有線USBデバイスをサスペンド状態とするためのトランスファリクエストを生成処理する
ことを特徴とする請求項1又は2いずれか1項記載のワイヤレスUSBシステム。
【請求項4】
前記デバイスワイヤアダプタが、
前記ホストから受信したコントロールリクエスト及び/又はトランスファリクエストから、前記有線USBデバイスに対するサスペンド/レジューム要求を検出することで、接続された前記有線USBデバイスの状態を記憶部に格納し、格納された前記有線USBデバイスの前記状態がアクティブ状態である前記有線USBデバイスをサスペンド状態とするためのトランスファリクエストを生成処理する
ことを特徴とする請求項1乃至3いずれか1項記載のワイヤレスUSBシステム。
【請求項5】
前記デバイスワイヤアダプタが、
当該デバイスワイヤアダプタの下流側に接続された前記有線USBデバイスのバス構成及び状態を格納するデバイスリストテーブルと、
前記ホストから受信したコントロールリクエスト及び/又はトランスファリクエストから、前記デバイスワイヤアダプタに新規に接続される有線USBデバイスの認識処理を行うと共に、既存の有線USBデバイスに対するサスペンド/レジューム要求を検出することで、接続された有線USBデバイスのバス構成及び状態を前記デバイスリストテーブルに格納するデバイスリストテーブル生成処理部と、
前記USBデバイスから前記ホストに対するトランスファリザルトを生成するときに、前記ホストから当該有線USBデバイスに対する全てのコントロールリクエストが処理されている場合に、当該有線USBデバイスに対するコントロールリクエストが無い期間を測定するためのタイマー値を前記デバイスリストテーブルにセットして格納するタイマー値セット処理部と、
所定の周期毎に前記デバイスリストテーブルを検索して、前記有線USBデバイスのうち、前記タイマー値が予め定めた期間を超えた有線USBデバイスが存在する場合に、当該有線USBデバイスをサスペンド状態とするためのトランスファリクエストを生成処理するサスペンド/レジューム処理部と
を有することを特徴とする請求項1乃至4いずれか1項記載のワイヤレスUSBシステム。
【請求項6】
所定の無線通信プロトコルに従って上流ポートが無線接続され、下流ポートに接続される有線USBデバイスに対してデータ転送処理を行うデバイスワイヤアダプタであって、
前記デバイスワイヤアダプタが、前記有線USBデバイスへ転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とするデバイスワイヤアダプタ。
【請求項7】
所定の無線通信プロトコルに従ってデータを入出力するデバイスワイヤアダプタを介してデータ転送処理を行い、当該デバイスワイヤアダプタの下流ポートに接続される有線USBデバイスを制御する有線USBデバイスの制御方法であって、
前記有線USBデバイスへと転送するデータのデータ通信状況に応じて、前記有線USBデバイスを通常の動作状態から低消費電力状態へと設定する
ことを特徴とする有線USBデバイスの制御方法。
【図1】
【図2】
【図3】
【図4(a)】
【図4(b)】
【図4(c)】
【図4(d)】
【図5】
【図6(a)】
【図6(b)】
【図7】
【図8】
【図9】
【図2】
【図3】
【図4(a)】
【図4(b)】
【図4(c)】
【図4(d)】
【図5】
【図6(a)】
【図6(b)】
【図7】
【図8】
【図9】
【公開番号】特開2009−37387(P2009−37387A)
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【出願番号】特願2007−200607(P2007−200607)
【出願日】平成19年8月1日(2007.8.1)
【出願人】(302062931)NECエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【出願日】平成19年8月1日(2007.8.1)
【出願人】(302062931)NECエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]