(57)【要約】【課題】  ＵＳＢ２．０に対応するＵＳＢ信号を少ない中継負担と遅延で中継する。【解決手段】  ＯＵＴトランザクションにおいて、ＣＰＵ（２６）は、ホスト（１０）からデバイス（１２）へのＯＵＴ，ＤＡＴＡ０／１パケットを下りバッファ（２４）を介してデバイス（１２）に転送すると共に、ＮＡＫ，ＡＣＫパケット生成装置（３４）によりＮＡＫ信号を生成させてホスト（１０）に送信する。その後、ＣＰＵ（２６）は、デバイス（１２）からの応答を受信する前のホスト（１０）からのＰＩＮＧ信号に対して、ＮＡＫ，ＡＣＫパケット生成装置（３４）によりＮＡＫ信号を生成させてホスト（１０）に送信する。デバイス（１２）からの応答を受信した直後のホスト（１０）からのＰＩＮＧ信号に対して、ＣＰＵ（２６）は、デバイス（１２）からの応答の内容に応じた内容の通信をホスト（１０）と行う。【選択図】  図１
2011198047.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢホストとＵＳＢデバイス間のＵＳＢ通信を中継するＵＳＢ中継装置であって、
当該ＵＳＢホストから当該ＵＳＢデバイスへの下り信号を一時保管する下りバッファと、
当該ＵＳＢデバイスから当該ＵＳＢホストへの上り信号を一時保管する上りバッファと、
当該ＵＳＢホストに送信すべきＡＣＫ信号及びＮＡＫ信号を生成する応答パケット生成手段と、
当該下り信号及び当該上り信号に従い、当該下りバッファ、当該上りバッファ及び当該応答パケット生成手段を制御する制御手段であって、（１）当該ＵＳＢデバイスへのデータを搬送するデータ信号を当該下りバッファを介して当該ＵＳＢデバイスに転送すると共に、当該応答パケット生成手段によりＮＡＫ信号を生成させて当該ＵＳＢホストに送信し、（２）当該ＵＳＢデバイスからの応答を受信する前の当該ＵＳＢホストからのＰＩＮＧ信号に対して、当該応答パケット生成手段によりＮＡＫ信号を生成させて当該ＵＳＢホストに送信し、（３）当該ＵＳＢデバイスからの応答を受信した直後の当該ＵＳＢホストからのＰＩＮＧ信号に対して、当該ＵＳＢデバイスからの応答の内容に応じた内容の通信を当該ＵＳＢホストと行う制御手段
とを具備することを特徴とするＵＳＢ中継装置。
【請求項２】
ＵＳＢホストとＵＳＢデバイス間のＵＳＢ通信を中継する方法であって、
当該ＵＳＢホストからの当該ＵＳＢデバイスへのデータを搬送するデータ信号を当該ＵＳＢデバイスに転送すると共に、ＮＡＫ信号を当該ＵＳＢホストに送信するステップと、
当該ＵＳＢデバイスからの応答を受信する前の当該ＵＳＢホストからのＰＩＮＧ信号に対して、ＮＡＫ信号を当該ＵＳＢホストに送信するステップと、
当該ＵＳＢデバイスからの応答を受信した直後の当該ＵＳＢホストからのＰＩＮＧ信号に対して、当該ＵＳＢデバイスからの応答の内容に応じた内容の通信を当該ＵＳＢホストと行うステップ
とを具備することを特徴とするＵＳＢ中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユニバーサルシリアルバス（ＵＳＢ）信号を中継するＵＳＢ中継装置及び方法に関する。
【背景技術】
【０００２】
ＵＳＢインタフェースを、有線ＬＡＮ、無線ＬＡＮ及び赤外線等のＵＳＢとは異なる通信媒体で中継する場合、ＵＳＢ通信で規定される応答時間ＴＡＴ（ターンアラウンドタイム）の制約を克服する必要がある。
【０００３】
特許文献１〜５には、ＵＳＢホストとＵＳＢデバイスの間に配置される中継装置がＵＳＢデバイスの代わりにＵＳＢホストに応答パケットを送信する代理応答方式が記載されている（特許文献１〜５）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−１１２５２４号公報
【特許文献２】特開２０００−２８４８７２号公報
【特許文献３】特開２００６−２４３８６６号公報
【特許文献４】特開２００５−１２９００８号公報
【特許文献５】特開２００５−１２９０１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＵＳＢ２．０では、新たにＰＩＮＧパケットが導入され、中継装置はこのＰＩＮＧパケットにも対応する必要があり、更には、少ない遅延でデータ伝送を中継する必要がある。
【０００６】
本発明は、ＯＵＴトランザクションにおいて、このような要望を満たすＵＳＢ中継装置及び方法を提示することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るＵＳＢ中継装置は、ＵＳＢホストとＵＳＢデバイス間のＵＳＢ通信を中継するＵＳＢ中継装置であって、当該ＵＳＢホストから当該ＵＳＢデバイスへの下り信号を一時保管する下りバッファと、当該ＵＳＢデバイスから当該ＵＳＢホストへの上り信号を一時保管する上りバッファと、当該ＵＳＢホストに送信すべきＡＣＫ信号及びＮＡＫ信号を生成する応答パケット生成手段と、当該下り信号及び当該上り信号に従い、当該下りバッファ、当該上りバッファ及び当該応答パケット生成手段を制御する制御手段であって、（１）当該ＵＳＢデバイスへのデータを搬送するデータ信号を当該下りバッファを介して当該ＵＳＢデバイスに転送すると共に、当該応答パケット生成手段によりＮＡＫ信号を生成させて当該ＵＳＢホストに送信し、（２）当該ＵＳＢデバイスからの応答を受信する前の当該ＵＳＢホストからのＰＩＮＧ信号に対して、当該応答パケット生成手段によりＮＡＫ信号を生成させて当該ＵＳＢホストに送信し、（３）当該ＵＳＢデバイスからの応答を受信した直後の当該ＵＳＢホストからのＰＩＮＧ信号に対して、当該ＵＳＢデバイスからの応答の内容に応じた内容の通信を当該ＵＳＢホストと行う制御手段とを具備することを特徴とする。
【０００８】
本発明に係るＵＳＢ中継方法は、ＵＳＢホストとＵＳＢデバイス間のＵＳＢ通信を中継する方法であって、当該ＵＳＢホストからの当該ＵＳＢデバイスへのデータを搬送するデータ信号を当該ＵＳＢデバイスに転送すると共に、ＮＡＫ信号を当該ＵＳＢホストに送信するステップと、当該ＵＳＢデバイスからの応答を受信する前の当該ＵＳＢホストからのＰＩＮＧ信号に対して、ＮＡＫ信号を当該ＵＳＢホストに送信するステップと、当該ＵＳＢデバイスからの応答を受信した直後の当該ＵＳＢホストからのＰＩＮＧ信号に対して、当該ＵＳＢデバイスからの応答の内容に応じた内容の通信を当該ＵＳＢホストと行うステップとを具備することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、少ない中継負担と遅延でＵＳＢ信号を中継できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施例の概略構成ブロック図を示す。
【図２】ホスト側中継装置２０のＣＰＵ２６のメインフローを示す。
【図３】ＯＵＴトランザクション中継処理のフローチャートを示す。
【図４】図３の応答待機処理の詳細なフローチャートを示す。
【図５】図４のＡＣＫ応答待機処理の詳細なフローチャートを示す。
【図６】デバイス１２がＤＡＴＡパケットに対してＡＣＫパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。
【図７】デバイス１２がＤＡＴＡパケットに対してＮＡＫパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。
【図８】デバイス１２がＤＡＴＡパケットに対してＮＹＥＴパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。
【図９】デバイス１２がＤＡＴＡパケットに対してＳＴＡＬＬパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。
【図１０】ＩＮトランザクションの中継処理のフローチャートを示す。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明の実施例を詳細に説明する。
【実施例１】
【００１２】
図１は、本発明の一実施例の概略構成ブロック図を示す。ＵＳＢホスト（以下、「ホスト」と略す）１０とＵＳＢデバイス（以下、「デバイス」と略す。）１２の間にホスト側中継装置２０とデバイス側中継装置４０を配置する。ホスト１０は、ＵＳＢバス（又はＵＳＢケーブル）１４を介してホスト側中継装置２０と接続し、デバイス１２は、ＵＳＢバス（又はＵＳＢケーブル）１６を介してデバイス側中継装置４０に接続する。ホスト側中継装置２０とデバイス側中継装置４０は、周知の赤外線通信方式で相互に通信する。赤外線通信の代わりに、有線ＬＡＮ又は無線ＬＡＮを使用しても良い。なお、この明細書では、ホスト１０からデバイス１２に向かう信号の流れを下りと表現し、デバイス１２からホスト１０に向かう信号の流れを上りと表現する。
【００１３】
本実施例のＯＵＴトランザクションの場合を例に、本実施例の基本的な信号の流れを説明する。ＯＵＴトランザクションでは、ホスト１０がデバイス１２に宛てて、ＯＵＴパケット、ＤＡＴＡ０／１パケット及びＰＩＮＧパケットを出力する。ＯＵＴパケットはＯＵＴトランザクションの開始を宣言するパケットである。ＤＡＴＡ０／１パケットはデータを搬送するパケットである。ＰＩＮＧパケットはデバイスの動作状況を確認する問い合わせのパケットであり、デバイスに応答を許可するパケットでもある。他方、デバイス１２がＯＵＴトランザクションでホスト１０に向けるパケットは、ＡＣＫパケット、ＮＡＫパケット、ＮＹＥＴパケット及びＳＴＡＬＬパケットの何れかである。ＡＣＫパケットはパケットの受信を示す。ＮＡＫパケットはパケットの受信の失敗を示す。ＮＹＥＴパケットは、データ受信の準備未完、例えば受信用バッファに空きが無い状態を示す。ＳＴＡＬＬは、通信を阻害するトラブルが起きていることを意味し、例えば、デバイスがホストからのデバイス・リクエストを理解できない場合などに、デバイスがＳＴＡＬＬパケットをホストに送信する。ホストは、ＳＴＡＬＬパケットをデバイスから受信すると、以後、当該デバイスへの通信を中止する。
【００１４】
ホスト１０がＵＳＢバス１４に出力したパケットは、ホスト側中継装置２０に入力する。ホスト側中継装置２０のＵＳＢ送受信装置２２は、ＵＳＢバス１４からのパケットを受信し、下りバッファ２４とＣＰＵ２６に供給する。下りバッファ２４は、ＵＳＢ送受信装置２２からのパケットを取り込み、ＣＰＵ２６の制御下で、無線変換装置３０に出力するか、破棄する。破棄されるパケットは、ＯＵＴトランザクションでは、デバイス１２に転送する必要のないＰＩＮＧパケットと、デバイス１２にとって重複するＤＡＴＡ０／１パケットであり、ＣＰＵ２６がこれらのパケットを下りバッファ２４から消去する。下りバッファ２４がリングバッファ構成の場合、読み出しアドレスポインタを修正することで、不要データを下りバッファ２４から消去できる。
【００１５】
ＣＰＵ２６は、動作するプログラムにより実現される機能として、ホスト１０からのトークンの種類を識別するトークン識別機能２６Ａ、受信したトークンからヘッダを分離するヘッダ分離機能２６Ｂ、同一デバイス向けのトークンかを識別するためにヘッダを比較する比較機能２６Ｃを具備する。これら機能２６Ａ，２６Ｂ，２６Ｃの詳細は後述する。比較機能２６Ｃによる比較のために、ＣＰＵ２６は、ヘッダ分離機能で分離したＯＵＴパケットのヘッダ情報、ＤＡＴＡ０／１パケットのパケットＩＤ（識別情報）及びＰＩＮＧパケットのヘッダ情報をメモリ２８に格納する。ヘッダ情報で、対比に必要なデータは、ＵＳＢデバイス１２のアドレスとエンドポイントであり、いずれも、ホスト１０からのＩＮパケット、ＯＵＴパケット及びＰＩＮＧパケットに含まれる。
【００１６】
無線変換装置３０は下りバッファ２４からのパケットに無線通信に適した符号変換、例えば、８Ｂ／１０Ｂ変換を施し、赤外線信号に変換して、デバイス側中継装置４０に送信する。
【００１７】
デバイス側中継装置４０は、基本的に、ホスト側中継装置２０からの無線信号をＵＳＢパケット形式に変換してデバイス１２に転送し、デバイス１２からのＵＳＢパケットを無線信号に変換してホスト側中継装置２０に転送するだけである。すなわち、デバイス側中継装置４０の無線変換装置４２は、ホスト側中継装置２０の無線変換装置３０からの赤外線信号を受信し、１０Ｂ／８Ｂ変換し、無線変換装置３０での変換前のパケット構造に戻して、下りバッファ４４に供給する。下りバッファ４４は、無線変換装置４２からのパケットをそのままＵＳＢ送受信装置４８に供給する。ＵＳＢ送受信装置４８は、無線変換装置３０からのパケットにＵＳＢパケット送信に必要なシンクコード等を付加してＵＳＢパケット構造を作り、ＵＳＢバス１６を介してデバイス１２に供給する。
【００１８】
デバイス側中継装置４０のＣＰＵ４６は、デバイス側中継装置４０の初期化と、ホスト側中継装置２０との無線通信のリンクの確立を制御する。
【００１９】
デバイス１２がホスト１０に向けたパケットは、ＵＳＢバス１６を介してデバイス側中継装置４０のＵＳＢ送受信装置４８に入力する。ＵＳＢ送受信装置４８は、ＵＳＢバス１６からのパケットを受信し、上りバッファ５０に供給する。上りバッファ５０は、ＵＳＢ送受信装置４８からのパケットを取り込み、そのまま無線変換装置４２に出力する。
【００２０】
無線変換装置４２は上りバッファ５０からのパケットに無線通信に適した符号変換、例えば、８Ｂ／１０Ｂ変換を施し、赤外線信号に変換して、ホスト側中継装置２０に送信する。
【００２１】
ホスト側中継装置２０の無線変換装置３０は、デバイス側中継装置４０からのからの赤外線信号を受信し、１０Ｂ／８Ｂ変換し、無線変換装置４２での変換前のパケット構造に戻して、上りバッファ３２に供給する。上りバッファ３２は、無線変換装置３０からのパケットをバッファリングし、ＣＰＵ２６の制御下で、ＵＳＢ送受信装置２２に読み出す。ＣＰＵ２６は、上りバッファ３２に格納されたデバイス１２からの応答の種類を常時監視する。
【００２２】
ＵＳＢ送受信装置２２は、上りバッファ３２からのパケットにＵＳＢパケット送信に必要なシンクコード等を付加してＵＳＢパケット構造を作り、ＵＳＢバス１４を介してホスト１０に供給する。
【００２３】
また、ＮＡＫ，ＡＣＫパケット生成装置３４は、ＣＰＵ２６の制御下で、ＮＡＫパケット又はＡＣＫパケットを生成し、ＵＳＢ送受信装置２２に供給する。ＵＳＢ送受信装置２２は、ＮＡＫ，ＡＣＫパケット生成装置３４からのパケットにＵＳＢパケット送信に必要なシンクコード等を付加してＵＳＢパケット構造を作り、ＵＳＢバス１４を介してホスト１０に供給する。
【００２４】
図２は、ホスト側中継装置２０のＣＰＵ２６のメインフローを示す。先に説明したように、ホスト１０から出力され、ホスト側中継装置２０に入力したＵＳＢパケットは、下りバッファ２４に格納されると共に、ＣＰＵ２６に取り込まれる（Ｓ１）。ＣＰＵ２６のトークン識別機能２６Ａは、そのＵＳＢパケットがＯＵＴ、ＩＮ及びＳＥＴＵＰの何れであるかを識別し（Ｓ２，Ｓ４，Ｓ６）、ＣＰＵ２６は、それぞれに応じて中継処理を実行する（Ｓ３，Ｓ５，Ｓ７）。すなわち、ＣＰＵ２６は、ＯＵＴパケットに対しＯＵＴトランザクションの中継処理を実行し（Ｓ２，Ｓ３）、ＩＮパケットに対してＩＮトランザクションの中継処理を実行し（Ｓ４，Ｓ５）、ＳＥＴＵＰパケットに対しＳＥＴＵＰトランザクションの中継処理を実行する（Ｓ６，Ｓ７）。
【００２５】
図３乃至図５は、ステップＳ３に示すＯＵＴトランザクション中継処理のフローチャートを示す。図６は、デバイス１２がＤＡＴＡパケットに対してＡＣＫパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。図７は、デバイス１２がＤＡＴＡパケットに対してＮＡＫパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。図８はデバイス１２がＤＡＴＡパケットに対してＮＹＥＴパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。図９はデバイス１２がＤＡＴＡパケットに対してＳＴＡＬＬパケットで応答する場合の、本実施例におけるＯＵＴトランザクションのシーケンス例を示す。図６乃至図９には、図３乃至図５に示すフローの対応するステップを付記してある。
【００２６】
ＵＳＢ２．０では高速化への対応からＰＩＮＧパケットが導入された。中継装置２０，４０間で使用する通信媒体の伝送レートが、ＵＳＢ２．０のレートを大幅に超えない限り、ホスト側中継装置２０は、デバイス１２に代わる応答、すなわち代理応答をホスト１０に返信する必要がある。本実施例では、ＣＰＵ２６はホスト１０から同じデバイス１２に向けて出力されるＯＵＴパケット及びＰＩＮＧパケットに対して、以下のように処理する。なお、同じデバイス１２に向けたパケットか否かは、各パケットのヘッダ、より具体的には、デバイス１２を示す目的アドレスとエンドポイント（ＥＰ）からなる部分を対比し、同じであれば、同じデバイスに向けたパケットであると判断する。データパケットの種別、すなわち、ＤＡＴＡ０かＤＡＴＡ１かを判別するには、そのパケット識別子（ＩＤ）を対比する。
【００２７】
本実施例では、ホスト側中継装置２０は、ＯＵＴトランザクションの中継処理として、データ転送ステージ、応答待機ステージ、終了ステージ、データ再送ステージ、通信停止ステージを具備する。データ転送ステージは、ホスト１０からのデータをデバイス１２に転送するステージである。応答待機ステージはデバイスからの応答を待機するステージである。終了ステージはデバイスからのＡＣＫパケットに対して、次のデータ転送に移行するためのステージである。データ再送ステージは、デバイス１２からのＮＡＫ又はＮＹＥＴパケットに対して、データの再送に向けたステージである。通信停止ステージは、デバイス１２からのＳＴＡＬＬパケットをホスト１０に転送するステージである。
【００２８】
図３において、まず、データ転送ステージとして、ＣＰＵ２６のヘッダ分離機能２６Ｂが、ホスト１０からのＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットの識別情報を分離し、メモリ２８に格納する（Ｓ１１）。ここでの識別機能は、ＯＵＴパケットのヘッダ情報の少なくともデバイスアドレスとエンドポイントの情報、並びに、ＤＡＴＡ０／１パケットのパケット識別子からなる。
【００２９】
ＣＰＵ２６は下りバッファ２４に格納されているＯＵＴパケット及びＤＡＴＡ０／１パケットを無線変換装置３０に読み出す（Ｓ１２）。これにより、先に説明したように、ＯＵＴパケット及びＤＡＴＡ０／１パケットが、デバイス１２に転送される。この読み出しと同時又は前後して、ＣＰＵ２６は、ＮＡＫ，ＡＣＫパケット生成装置３４によりホスト１０にＮＡＫパケットを送信する（Ｓ１３）。
【００３０】
以上のデータ転送（Ｓ１２）及びＮＡＫ応答（Ｓ１３）の後、ＣＰＵ２６は、応答待機処理（Ｓ１４）に移行する。図４は、応答待機処理（Ｓ１４）の詳細なフローチャートを示す。ホスト側中継装置２０は、ホスト１０からの同じデバイス１２に向けたＰＩＮＧパケットを待機する（Ｓ２１）。ＰＩＮＧパケットかどうかは、トークン識別機能２６Ａでホスト１０からのトークンのパケット識別子を調べることで判別できる。また、同じデバイス向けかどうかは、比較機能２６Ｃを使って、ホスト１０からのトークンのヘッダに格納されるデバイスアドレス及びエンドポイントを、メモリ２８に記憶したＯＵＴパケットのヘッダの対応する情報と対比することで判別できる。受信されたＰＩＮＧパケットは、先に説明したように、下りバッファ２４に格納され、ＣＰＵ２６に供給される。
【００３１】
同じデバイス１２向けのＰＩＮＧを受信したら（Ｓ２１）、ＣＰＵ２６は、デバイス１２に転送しないので、下りバッファ２４からこのＰＩＮＧパケットを消去し（Ｓ２２）、デバイス１２からの応答信号を受信済みかどうか、すなわち上りバッファ３２に格納済みかどうかを判断する（Ｓ２３）。ＰＩＮＧを無闇に中継しないことで、無線伝送部分及びデバイス側中継装置４０の負担を軽減できる。
【００３２】
デバイス１２からの応答を受信していない場合（Ｓ２３）、ＣＰＵ２６は、ＮＡＫ，ＡＣＫパケット生成装置３４によりホスト１０にＮＡＫパケットを送信し（Ｓ２４）、次のＰＩＮＧの受信を待機する（Ｓ２１）。ＰＩＮＧパケットをデバイス１２に転送せずに破棄することで、デバイス１２の無用な受信処理を軽減する。また、ホスト１０は、このＮＡＫパケットに対して、一定時間間隔でＰＩＮＧパケットを同じデバイス１２に向けて送信する。
【００３３】
デバイス１２からの応答を受信済みの場合（Ｓ２３）、その応答がＡＣＫ、ＮＡＫ、ＮＹＥＴ及びＳＴＡＬＬの何れであるかにより、分岐する（Ｓ２５）。
【００３４】
デバイス１２からの応答としてＡＣＫパケットが上りバッファ３２に格納された場合（Ｓ２５）、これは、先のＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットにより、データがデバイス１２に格納されたことを意味する。この状況では、ＣＰＵ２６は、上りバッファ３２のＡＣＫパケットを読み出してホスト１０に返信する（Ｓ２６）。このＡＣＫパケットは、ホスト１０からのＰＩＮＧパケットに対する受信承認信号となる。
【００３５】
ホスト１０は、ＵＳＢの規約上、ＰＩＮＧパケットに対するＡＣＫパケットに対し、先にＯＵＴパケット及びＤＡＴＡ０／１パケットでデバイス１２に向けて送信したデータと同じデータを、再びデバイス１２に向けて送信する。例えば、最初のＤＡＴＡパケットがＤＡＴＡ０パケットである場合、再送されるデータパケットは、同じ種類のＤＡＴＡ０パケットになる。
【００３６】
ホスト側中継装置２０は、ホスト１０から同じデバイス１２に向けたＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットを待機する（Ｓ２７）。ＣＰＵ２６は、ＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットを受信したら、比較機能２６Ｃを使って、ＯＵＴパケットのヘッダ情報及びＤＡＴＡ０／１パケットのパケットＩＤを、先にメモリ２８に記憶した最初のＯＵＴパケットのヘッダ情報及びＤＡＴＡ０／１パケットのパケットＩＤと比較する。この比較により、同じデバイスに向けた、転送済みのデータか否か、すなわち、同じデータの再送か否かを判別できる。
【００３７】
具体的には、ＯＵＴパケットのヘッダ情報の比較で同一デバイス向けか否かを判別できる。また、ホスト１０は、最初のＤＡＴＡパケットに対してＮＡＫパケットを受信しているので、このステージで送信するＤＡＴＡパケットは、同じ種類のＤＡＴＡパケット（最初のＤＡＴＡパケットがＤＡＴＡ０パケットである場合、このステージで送信する最初のＤＡＴＡパケットもＤＡＴＡ０パケット）になる。ＤＡＴＡパケットのパケット識別子を対比することで、同種か否かを判別できる。
【００３８】
転送ステージでデバイス１２に転送済みのデータであることを確認したら、受信したＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットを、デバイス１２に転送せずに下りバッファ２４から削除し、ホスト１０にはＡＣＫパケットを送信する（Ｓ２８）。ＣＰＵ２６は、最初のＯＵＴパケットのヘッダ情報及びＤＡＴＡ０／１パケットのパケットＩＤの記憶をメモリ２８から消去する。
【００３９】
ステップＳ２８により、ＯＵＴトランザクションを正常に終了したことになり、ホスト１０は、次のデータを転送するためのＯＵＴトランザクションを開始できる。
【００４０】
デバイス１２からの応答がＮＡＫパケットであった場合（Ｓ２５）、これは、デバイス１２が、先のＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットによるデータを受信していないことを意味し、ホスト側中継装置２０は、デバイス１２がデータを受信できる状態になるのを待機する必要がある。そのため、ＣＰＵ２６は、上りバッファ３２のＮＡＫパケットを読み出してホスト１０に返信する（Ｓ２９）。もちろん、上りバッファ３２のＮＡＫパケットを破棄し、ＮＡＫ，ＡＣＫパケット生成装置３４にＮＡＫパケットを生成させても良い。
【００４１】
ステップＳ２９でホスト１０に送信されるＮＡＫパケットは、ホスト１０にとって、ホスト１０からのＰＩＮＧパケットに対する受信失敗の応答信号となり、ホスト１０は、デバイス１２がＡＣＫパケットを返信するようになるまで、ＰＩＮＧパケットを繰り返し送信することになる。これに対応するため、ＣＰＵ２６は、デバイス１２からのＡＣＫ応答待機プロセスに入る（Ｓ３０）。
【００４２】
図５は、ＡＣＫ応答待機処理（Ｓ３０）の詳細なフローチャートを示す。ホスト側中継装置２０は、ホスト１０からデバイス１２に向けたＰＩＮＧパケットの受信を待機する（Ｓ４１）。ＣＰＵ２６は、受信したＰＩＮＧパケットの識別情報（具体的にはデバイスアドレスとエンドポイント）をメモリ２８に格納する（Ｓ４２）。ＯＵＴパケット及びＤＡＴＡ０／１パケットに対してデバイス１２からＮＡＫパケットを受信したので、ＯＵＴトランザクションをリセットする必要があり、そのために、最初のＯＵＴパケット及びＤＡＴＡ０／１パケットに対して記憶したヘッダ情報及びＰＩＤをメモリ２８から消去する。
【００４３】
ＣＰＵ２６はまた、受信したＰＩＮＧパケットを下りバッファ２４から読み出してデバイス１２に向け転送し（Ｓ４３）、ホスト１０にＮＡＫパケットを送信する（Ｓ４４）。
【００４４】
以後、ホスト１０から同じデバイス１２に向けたＰＩＮＧパケットを受信するのを待機する（Ｓ４５）。同じデバイス１２向けか否かは、受信したＰＩＮＧパケットの識別情報を、ステップＳ４２でメモリ２８に記憶した識別情報と比較することで、判別できる。同じデバイス１２向けのＰＩＮＧパケットを受信したら（Ｓ４５）、ＣＰＵ２６は、デバイス１２から応答を受信しているかどうかを調べる（Ｓ４６）。
【００４５】
応答を受信している場合（Ｓ４６）、ＣＰＵ２６は、応答がＡＣＫパケットかどうかを調べる（Ｓ４７）。デバイス１２からＡＣＫパケットを受信している場合に限り（Ｓ４７）、ＣＰＵ２６は、下りバッファ２４に格納されるＰＩＮＧパケットを破棄し、上りバッファ３２に格納されるＡＣＫパケットを読み出してホスト１０に送信して（Ｓ４８）、図５に示すフローを終了する。もちろん、上りバッファ３２に格納されるＡＣＫパケットを破棄し、ＮＡＫ，ＡＣＫパケット生成装置３４にＡＣＫパケットを生成させ、ＵＳＢ送受信装置２２に出力させてもよい。
【００４６】
応答がＡＣＫ以外の場合（Ｓ４７）、先に受信し、下りバッファ２４に格納されるＰＩＮＧパケットを読み出して、デバイス１２に向け送信し（Ｓ４３）、ホスト１０にはＮＡＫパケットを送信する（Ｓ４４）。これにより、デバイス１２がＡＣＫパケットを応答するようになるまで、ホスト１０は待機することになる。
【００４７】
デバイス１２からの応答を受信していない場合（Ｓ４６）、ＣＰＵ２６は、下りバッファ２４に格納されるＰＩＮＧパケットを破棄し（Ｓ４９）、ＮＡＫパケットをホスト１０に送信する（Ｓ５０）。すなわち、ＣＰＵ２６は、ＮＡＫ，ＡＣＫパケット生成装置３４にＮＡＫパケットを生成させ、ＵＳＢ送受信装置２２を介してホスト１０に送信させる。以後、ステップＳ４５に戻り、次のＰＩＮＧパケットを待機する。
【００４８】
本実施例では、ステップＳ４９を設けることで、デバイス１２からの応答前に複数のＰＩＮＧパケットを送信しないようにしている。これにより、徒にデバイス１２を多忙にさせることを防止し、また、中継装置２０，４０間の無線伝送路の帯域の浪費を防止している。
【００４９】
ステップＳ４８でホスト１０に送信されるＡＣＫパケットは、ホスト１０にとって、ＰＩＮＧパケットに対する応答であり、デバイス１２がデータを受信できる状態にあることを意味する。ホスト１０は、このＡＣＫパケットに対して、改めて、ステップＳ１１で送信したデータと同じデータを搬送するＯＵＴトランザクションを再開することになる。この意味で、図５に示すＡＣＫ待機プロセスは、ホスト１０にデータ再送を促すプロセスでもある。
【００５０】
デバイス１２からの応答としてＮＹＥＴパケットが上りバッファ３２に格納された場合（Ｓ２５）、これは、デバイス１２が、先のＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットによるデータを受信する準備ができていないことを意味し、ホスト１０に対しＮＹＥＴパケットを送信する必要がある。図８は、この場合のシーケンス例を示す。
【００５１】
ＵＳＢのプロトコル上、デバイスがＮＹＥＴパケットを返信できるのは、ＯＵＴパケット及びＤＡＴＡ０／１パケットに対してのみであるので、ＣＰＵ２６は、ＮＡＫ，ＡＣＫパケット生成装置３４にＡＣＫパケットを生成させ、ＵＳＢ送受信装置２２を介してホスト１０に送信させる（Ｓ３１）。
【００５２】
ホスト１０は、ＵＳＢの規約上、ＰＩＮＧパケットに対するＡＣＫパケットに対し、先にＯＵＴパケット及びＤＡＴＡ０／１パケットでデバイス１２に向けて送信したデータと同じデータを、再びデバイス１２に向けて送信する。例えば、最初のＤＡＴＡパケットがＤＡＴＡ０パケットである場合、再送されるデータパケットは、同じ種類のＤＡＴＡ０パケットになる。
【００５３】
ホスト側中継装置２０は、ホスト１０から同じデバイス１２に向けたＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットを待機する（Ｓ３２）。ＣＰＵ２６は、ＯＵＴパケット及びこれに続くＤＡＴＡ０／１パケットを受信したら、比較機能２６Ｃを使って、ＯＵＴパケットのヘッダ情報及びＤＡＴＡ０／１パケットのパケットＩＤを、先にメモリ２８に記憶した最初のＯＵＴパケットのヘッダ情報及びＤＡＴＡ０／１パケットのパケットＩＤと比較する。この比較により、同じデバイスに向けた、転送済みのデータか否か、すなわち、同じデータの再送か否かを判別できる。
【００５４】
具体的には、ＯＵＴパケットのヘッダ情報の比較で同一デバイス向けか否かを判別できる。また、ホスト１０は、最初のＤＡＴＡパケットに対してＮＡＫパケットを受信しているので、このステージで送信するＤＡＴＡパケットは、同じ種類のＤＡＴＡパケット（最初のＤＡＴＡパケットがＤＡＴＡ０パケットである場合、このステージで送信する最初のＤＡＴＡパケットもＤＡＴＡ０パケット）になる。ＤＡＴＡパケットのパケット識別子を対比することで、同種か否かを判別できる。
【００５５】
デバイス１２がデータを受信できる状態にないので、ＣＰＵ２６は、ホスト１０から再送されたＯＵＴパケット及びＤＡＴＡ０／１パケットを下りバッファ２４から消去し、上りバッファ３２からＮＹＥＴパケットを読み出してホスト１０に送信する（Ｓ３３）。
【００５６】
ホスト１０は以後、デバイス１２がデータ受信可能になったことを確認するために、ＰＩＮＧパケットを繰り返し又は定期的にデバイス１２に送信する。また、ホスト側中継装置２０は、ＡＣＫ待機プロセス（Ｓ３０）を実行して、デバイス１２がデータ受信可能な状態になるのを待機する。ＡＣＫ待機プロセスでのシーケンスは図７に図示したものと同じであるので、図８では、ＡＣＫ待機プロセスの詳細を省略してある。
【００５７】
デバイス１２からの応答としてＳＴＡＬＬパケットが上りバッファ３２に格納された場合（Ｓ２５）、これは、デバイス１２の通信機能又はデバイス１２との間の通信路に障害があることを意味する。このとき、ＣＰＵ２６は、上りバッファ３２のＳＴＡＬＬパケットを読み出してホスト１０に返信する（Ｓ３４）。ホスト１０は、通常、ＳＴＡＬＬパケットに対し、デバイス１２との以後の通信を中止する。図９は、この場合のシーケンス例を示す。
【００５８】
図１０は、ＩＮトランザクションの処理（Ｓ５）のフローチャートを示す。ＣＰＵ２６のヘッダ分離機能２６Ｂが、ホスト１０からのＩＮパケットの識別情報を分離し、メモリ２８に格納する（Ｓ６１）。ここでの識別機能は、ＩＮパケットのヘッダ情報の少なくともデバイスアドレスとエンドポイントの情報からなる。
【００５９】
ＣＰＵ２６は下りバッファ２４に格納されているＩＮパケットを無線変換装置３０に読み出す（Ｓ６２）。これにより、先に説明したように、ＩＮパケットが、デバイス１２に転送される。この読み出しと同時又は前後して、ＣＰＵ２６は、ＮＡＫ，ＡＣＫパケット生成装置３４によりホスト１０にＮＡＫパケットを送信する（Ｓ６３）。
【００６０】
以後、ホスト側中継装置２０は、ホスト１０からの同じデバイス１２に向けたＩＮパケットを待機する（Ｓ６４）。ＩＮパケットかどうかは、トークン識別機能２６Ａでホスト１０からのトークンのパケット識別子を調べることで判別できる。また、同じデバイス向けかどうかは、比較機能２６Ｃを使って、ホスト１０からのトークンのヘッダに格納されるデバイスアドレス及びエンドポイントを、メモリ２８に記憶したＩＮパケットのヘッダの対応する情報と対比することで判別できる。受信されたＩＮパケットは、先に説明したように、下りバッファ２４に格納され、ＣＰＵ２６に供給される。
【００６１】
同じデバイス１２向けのＩＮパケットを受信したら（Ｓ６４）、ＣＰＵ２６は、デバイス１２に転送しないので、下りバッファ２４からこのＩＮパケットを消去し（Ｓ６５）、デバイス１２からの応答信号を受信済みかどうかを判断する（Ｓ６６）。デバイス１２からの応答は、ＤＡＴＡ０／１パケット、ＮＡＫパケット、又はＳＴＡＬＬパケットである。
【００６２】
デバイス１２からの応答を受信していない場合（Ｓ６６）、ＣＰＵ２６は、ＮＡＫ，ＡＣＫパケット生成装置３４によりホスト１０にＮＡＫパケットを送信し（Ｓ６７）、次のＩＮパケットの受信を待機する（Ｓ６４）。ＩＮパケットをデバイス１２に転送せずに破棄することで、デバイス１２の無用な受信処理を軽減する。また、ホスト１０は、ステップＳ６７のＮＡＫパケットに対して、ＩＮパケットを同じデバイス１２に向けて送信する。
【００６３】
デバイス１２からの応答を受信済みの場合（Ｓ２３）、ＣＰＵ２６は、デバイス１２からの応答を上りバッファ３２から読み出してホスト１０に転送し（Ｓ６８）、図２のステップＳ１に戻る。
【００６４】
図２のＳＥＴＵＰ処理（Ｓ７）では、ホスト側中継装置２０は、ホスト１０からのＳＥＴＵＰパケット及びこれに続くＤＡＴＡ０／１パケットをデバイス１２に転送し、ホスト１０にはＡＣＫパケットを送信する。なぜなら、ＳＥＴＵＰパケットに対する返信はＡＣＫパケットに限定されているからである。ホスト側中継装置２０からのＳＥＴＵＰパケット及びＤＡＴＡ０／１パケットは、デバイス側中継装置４０を介してデバイス１２に入力する。デバイス１２は、応答としてＡＣＫパケットを返信する。デバイス側中継装置４０はデバイス１２からのＡＣＫパケットをホスト側中継装置２０に転送する。ホスト側中継装置２０は、デバイス側中継装置４０を介して入力するデバイス１２からのＡＣＫパケットを破棄する。既にホスト１０に送信済みだからである。
【００６５】
特定の説明用の実施例を参照して本発明を説明したが、特許請求の範囲に規定される本発明の技術的範囲を逸脱しないで、上述の実施例に種々の変更・修整を施しうることは、本発明の属する分野の技術者にとって自明であり、このような変更・修整も本発明の技術的範囲に含まれる。
【符号の説明】
【００６６】
１０：ＵＳＢホスト（又はホスト）
１２：ＵＳＢデバイス（又はデバイス）
１４、１６：ＵＳＢバス（又はＵＳＢケーブル）
２０：ホスト側中継装置
２２：ＵＳＢ送受信装置
２４：下りバッファ
２６：ＣＰＵ
２６Ａ：トークン識別機能
２６Ｂ：ヘッダ分離機能
２６Ｃ：比較機能
２８：メモリ
３０：無線変換装置
３２：上りバッファ
３４：ＮＡＫ，ＡＣＫパケット生成装置
４０：デバイス側中継装置
４２：無線変換装置
４４：下りバッファ
４６：ＣＰＵ
４８：ＵＳＢ送受信装置
５０：上りバッファ
【図１】
2011198047.tif 000003
【図２】
2011198047.tif 000004
【図３】
2011198047.tif 000005
【図４】
2011198047.tif 000006
【図５】
2011198047.tif 000007
【図６】
2011198047.tif 000008
【図７】
2011198047.tif 000009
【図８】
2011198047.tif 000010
【図９】
2011198047.tif 000011
【図１０】
2011198047.tif 000012