(57)【要約】【課題】複数のＰＣが効率的にＵＳＢデバイスを共有することができるＵＳＢハブを提供する。【解決手段】ＵＳＢハブにおいて、ＵＳＢホストコントローラとＵＳＢペリフェラルコントローラ間の排他制御部を設け、任意の単位時間毎にＵＳＢペリフェラルコントローラ対し循環的に仮使用権を与え、この仮使用権を取得したＵＳＢペリフェラルコントローラに接続された第１のＰＣからの通信を受信すると、該第１のＰＣの通信先である第１のＵＳＢデバイスが接続されているＵＳＢホストコントローラと第１のＰＣが接続されているＵＳＢペリフェラルコントローラに対して使用権を与え、第１のＰＣ以外から第１のＵＳＢデバイスに対する通信に対してはＮＡＫ応答するように構成する。かかる構成により、ＵＳＢデバイスを利用する複数のＰＣからの要求に対し、効率的に排他制御を行うことができる。【選択図】図１
2008271215.tif 000002
【特許請求の範囲】
【請求項１】
１または複数のＵＳＢデバイスと複数のＰＣとを接続するＵＳＢハブであって、ＵＳＢデバイスに接続される１または複数のＵＳＢホストコントローラと、ＰＣに接続される複数のＵＳＢペリフェラルコントローラと、前記ＵＳＢホストコントローラと前記ＵＳＢペリフェラルコントローラとの通信を制御する排他制御部と、を備え、前記排他制御部は、第１のＰＣから第１のＵＳＢデバイスに対する通信を検出すると、前記第１のＰＣ以外の他のＰＣから前記第１のＵＳＢデバイスへの通信に対して、該他のＰＣへＮＡＫ応答することを特徴とするＵＳＢハブ。
【請求項２】
前記排他制御部は、複数のＵＳＢペリフェラルコントローラに対し仮使用権を与える仮使用権制御手段と、この仮使用権を取得したＵＳＢペリフェラルコントローラに接続された第１のＰＣからの通信を受信すると、前記第１のＰＣの通信先である第１のＵＳＢデバイスが接続されているＵＳＢホストコントローラと前記第１のＰＣが接続されているＵＳＢペリフェラルコントローラに対して使用権を与える使用権制御手段とを備えることを特徴とする請求項１に記載のＵＳＢハブ。
【請求項３】
前記仮使用権制御手段は、時間と共に複数のＵＳＢペリフェラルコントローラ対し循環的に仮使用権を与えることを特徴とする請求項２に記載のＵＳＢハブ。
【請求項４】
前記排他制御部は、使用権の与えられたＵＳＢペリフェラルコントローラおよびＵＳＢホストコントローラ間の通信を監視し、最後に行われた通信からの経過時間が所定の閾値を超えた場合、前記使用権制御手段が前記ＵＳＢペリフェラルコントローラおよび前記ＵＳＢホストコントローラに対する使用権を解放することを特徴とする請求項２又は３に記載のＵＳＢハブ。
【請求項５】
前記排他制御部は、前記使用権の与えられたＵＳＢペリフェラルコントローラおよびＵＳＢホストコントローラ間の通信を監視し、通信のデータサイズが所定のサイズより小さいことを検出した場合、前記使用権制御手段が前記ＵＳＢペリフェラルコントローラおよび前記ＵＳＢホストコントローラに対する使用権を解放することを特徴とする請求項２乃至４いずれか１項に記載のＵＳＢハブ。
【請求項６】
前記ＮＡＫ応答は、エンドポイントのＦＩＦＯバッファを用いて行うことを特徴とする請求項１乃至５いずれか１項に記載のＵＳＢハブ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インタフェースに対応した各種周辺機器を複数接続するためのＵＳＢハブに関し、さらに詳しくは、周辺機器だけでなく複数台のコンピュータを接続できるように構成したＵＳＢハブに関する。
【背景技術】
【０００２】
近年、コンピュータと周辺機器とを接続するインタフェース規格として、ＵＳＢが広く普及している。ＵＳＢの普及に伴い、ＵＳＢインタフェースを有する周辺機器（以下、ＵＳＢデバイス）も広く普及してきた。ところが、通常、コンピュータ（以下では、ＰＣと記載する）の有するＵＳＢポート数は２〜４が一般的であり、キーボードやマウス、その他多くのＵＳＢデバイスを接続するにはポート数が充分ではない。
一般的にこのような場合は、ＵＳＢ集線装置であるＵＳＢハブを使用し、最初から備えられているポート数以上のＵＳＢデバイスをＰＣに接続することとなる。これにより１台のＰＣが数多くのＵＳＢデバイスを制御・利用することができる。ところが、ＵＳＢインタフェースの規格では、複数台のＵＳＢデバイスを接続することはできても、複数台のＰＣを接続することができない。
【０００３】
例えば、ＵＳＢハブには、ＵＳＢデバイスと接続するポート数は２〜６といった数多くのポートが備えられているが、ＰＣと接続するポートは１つしか備えられていない。このため、ＵＳＢハブを利用して複数のＰＣがＵＳＢデバイスを共有することはできなかった。この点、特許文献１に記載されたＵＳＢハブ（以下、ＵＳＢ逆ハブと記載する）は、複数のＰＣとＵＳＢデバイスとを選択的に接続する制御部を備えており、これにより複数のＰＣが同時にＵＳＢデバイスに対し接続可能となっている。
【０００４】
【特許文献１】特開２００２−２９０４２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に開示されているＵＳＢ逆ハブの構成では、１台のＰＣがＵＳＢデバイスを使用すると、ＵＳＢ逆ハブに接続された他のＰＣのＵＳＢ接続が切断されてしまい、そのためＰＣがＵＳＢデバイスを使用する度に、ＰＣ側でデバイスドライバのロード・アンロードが実行されてしまうといった問題がある。
すなわち、ＵＳＢ逆ハブの構成では、複数のＰＣが同時にＵＳＢデバイスを利用することはできず、ＵＳＢデバイスの使用を許可するＰＣを切り換える際に、その都度、制御部を動作（ＰＣにハードウェアの検出処理を実行）させなければならない。このハードウェアの検出処理の際、ＰＣ側ではＵＳＢデバイスのデバイスドライバをロード、アンロードする処理が必要となり、処理に多くの時間を要し、ＵＳＢ逆ハブを利用するユーザの利便性を損なっている。
さらに、このＵＳＢ逆ハブにおいては、接続を許可されたＰＣが占有しているＵＳＢデバイスを解放するタイミングが明確ではなく、実運用時においては、不必要に長い時間ＵＳＢデバイスが占有され、結果として他のＰＣのＵＳＢデバイスの利用を妨げることもある。
【０００６】
また、従来存在するＵＳＢデバイス切り替え装置は、物理的なスイッチなどでＵＳＢデバイスと使用可能なＰＣとを切り替えているため、上記した特許文献１と同様にＰＣ側でデバイスドライバのロード・アンロードが実行されてしまう問題がある。
本発明は、上述した問題点に鑑みてなされたものであり、複数のＰＣが効率的にＵＳＢデバイスを共有することができるＵＳＢハブを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明のＵＳＢハブは、複数のＵＳＢデバイスと複数のＰＣとを接続するＵＳＢハブであって、ＵＳＢデバイスに接続される複数のＵＳＢホストコントローラと、ＰＣに接続される複数のＵＳＢペリフェラルコントローラと、ＵＳＢホストコントローラとＵＳＢペリフェラルコントローラとの通信を制御する排他制御部と、を備え、排他制御部は、第１のＰＣから第１のＵＳＢデバイスに対する通信を検出すると、第１のＰＣ以外の他のＰＣから第１のＵＳＢデバイスへの通信に対して、該他のＰＣへＮＡＫ応答し得る構成とされる。
【０００８】
かかる構成により、複数のＰＣから同時にＵＳＢデバイスを共有することのできるＵＳＢハブが得られることができる。
【０００９】
また、上記の本発明のＵＳＢハブにおいて、排他制御部は、複数のＵＳＢペリフェラルコントローラに対し仮使用権を与える仮使用権制御手段と、この仮使用権を取得したＵＳＢペリフェラルコントローラに接続された第１のＰＣからの通信を受信すると、第１のＰＣの通信先である第１のＵＳＢデバイスが接続されているＵＳＢホストコントローラと第１のＰＣが接続されているＵＳＢペリフェラルコントローラに対して使用権を与える使用権制御手段とを備える構成とされる。
【００１０】
かかる構成により、ＵＳＢハブにおいて、ＵＳＢデバイスを利用する複数のＰＣからの要求に対し、効率的に排他制御を行うことのできるＵＳＢハブが得られることができる。
【００１１】
また、上記の本発明のＵＳＢハブにおいて、仮使用権制御手段は、時間と共に複数のＵＳＢペリフェラルコントローラ対し循環的に仮使用権を与える構成とされる。
【００１２】
かかる構成により、ＵＳＢハブにおいて、ＵＳＢデバイスを利用する複数のＰＣからの要求に対し、効率的に排他制御を行うことのできるＵＳＢハブが得られることができる。
【００１３】
また、上記の本発明のＵＳＢハブにおいて、排他制御部は、使用権の与えられたＵＳＢペリフェラルコントローラおよびＵＳＢホストコントローラ間の通信を監視し、最後に行われた通信からの経過時間が所定の閾値を超えた場合、使用権制御手段がＵＳＢペリフェラルコントローラおよびＵＳＢホストコントローラに対する使用権を解放し得る構成とされる。
【００１４】
かかる構成により、ＵＳＢハブにおいて、複数のＰＣが効率的にＵＳＢデバイスを共有することが可能になる。即ち、ＰＣとＵＳＢデバイスとの間において、最後の通信から一定時間経過後にＵＳＢデバイスの占有が強制的に解放されることにより、実際には通信が行われていないＵＳＢデバイスが、特定のＰＣによって占有されることが無くなる。
【００１５】
また、上記の本発明のＵＳＢハブにおいて、排他制御部は、使用権の与えられたＵＳＢペリフェラルコントローラおよびＵＳＢホストコントローラ間の通信を監視し、通信のデータサイズが所定のサイズより小さいことを検出した場合、使用権制御手段がＵＳＢペリフェラルコントローラおよびＵＳＢホストコントローラに対する使用権を解放し得る構成とされる。
【００１６】
かかる構成により、ＵＳＢハブにおいて、特定のデータサイズのパケットを判断基準としてＵＳＢデバイスの占有を解放するので、上述したように、一定時間必ず待つ必要がなく、より効率的にＵＳＢデバイスを共有することができる。
【００１７】
ここで、ＮＡＫ応答は、好適には、エンドポイントのＦＩＦＯバッファを用いて行う。これにより、排他制御部に特別なハードウェア回路を設けることなく、排他制御機能を実現することができる。
【発明の効果】
【００１８】
本発明によれば、複数のＰＣで複数のＵＳＢデバイスを効率よく共有できるといった効果がある。すなわち、複数のＰＣがＵＳＢデバイスを、個々に手動で切り替えすることなく、且つＰＣ側でデバイスドライバのロード・アンロードを実行することなく共有することができる。さらに適切なタイミングでＵＳＢデバイスの占有を解放することで、ＵＳＢデバイスの稼働率を向上させ、ひいては効率的なＵＳＢデバイスの共有を実現することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施形態について、図面を参照しながら詳細に説明していく。
【実施例１】
【００２０】
（１）ＵＳＢハブを介したＰＣとＵＳＢデバイスとの接続に関する説明
図１は、本発明のＵＳＢハブ１０１を使用した、ＰＣ（１１５Ａ，１１５Ｂ，１１５Ｃ）とＵＳＢデバイス（１０７Ａ，１０７Ｂ，１０７Ｃ）との接続図である。ＵＳＢハブ１０１は、ＵＳＢホストコントローラ（１０３Ａ，１０３Ｂ，１０３Ｃ）と、ＵＳＢペリフェラルコントローラ（１１１Ａ，１１１Ｂ，１１１Ｃ）とを備え、それぞれが排他制御部１０９を介して接続されている。ＵＳＢデバイス１０７（以下、１０７Ａ，１０７Ｂ，１０７Ｃを総称して１０７と記載する）は、ＵＳＢホストインタフェース（１０５Ａ，１０５Ｂ，１０５Ｃ）を介してＵＳＢハブ１０１に接続されている。一方、ＰＣ１１５（以下、１１５Ａ，１１５Ｂ，１１５Ｃを総称して１１５と記載する）は、ＵＳＢデバイスインタフェース（１１３Ａ，１１３Ｂ，１１３Ｃ）を介してＵＳＢハブ１０１に接続されている。
【００２１】
ＵＳＢホストコントローラ１０３（以下、１０３Ａ，１０３Ｂ，１０３Ｃを総称して１０３と記載する）およびＵＳＢペリフェラルコントローラ１１１（以下、１１１Ａ，１１１Ｂ，１１１Ｃを総称して１１１と記載する）は、必要とする数に応じて設けさえすればよく、接続されるＰＣ１１５およびＵＳＢデバイス１０７の最大数は図示する数に限定されるものではない。
【００２２】
また、ＵＳＢホストコントローラ１０３は、ＯＨＣＩ（Ｏｐｅｎ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）およびＥＨＣＩ（Ｅｎｈａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）などのＵＳＢ規格に準拠のホストコントローラチップとデバイスドライバを含み、ＵＳＢペリフェラルコントローラ１１１はＵＳＢ規格に準拠のホストコントローラチップとデバイスドライバを含む。それぞれのコントローラはＵＳＢの転送モードであるコントロール，バルク，インタラプトおよびアイソクロナス転送に対応している。
【００２３】
図１に示すように、排他制御部１０９は、ＵＳＢホストコントローラ１０３とＵＳＢペリフェラルコントローラ１１１間の排他制御を行うものであり、結果として、ＰＣ１１５とＵＳＢデバイス１０７の間の排他制御を行う。なお、排他制御部１０９の実体はプログラムであり、その実体であるプログラムは、後述するハードウェア構成図（図２）に記載のＣＰＵ２０１により実行される。
【００２４】
（２）ハードウェア構成の説明
図２は、本発明にかかるＵＳＢハブ１０１のハードウェア構成図である。ＣＰＵ２０１は、ＵＳＢハブ１０１動作時にＲＡＭ２０５上に展開されるプログラムを実行する。このプログラムは、ＲＯＭ２０３に格納されている。また、ＲＯＭ２０３には、ＵＳＢホストコントローラ１０３、ＵＳＢペリフェラルコントローラ１１１のデバイスドライバおよび排他制御部１０９のプログラムが格納されている。
これらのプログラムは前述の通り、ＵＳＢハブ１０１の動作時にＲＡＭ２０５に展開され、ＣＰＵ２０１により実行される。
なお、既に述べたとおり、ＵＳＢホストコントローラ１０３およびＵＳＢペリフェラルコントローラ１１１の数は、必要とする数に応じて設けさえすればよいので、図示する数に限定されるものではない。
【００２５】
（３）排他制御部１０９の機能の説明
図３に排他制御部１０９の機能ブロック図を示す。排他制御部１０９は使用権制御部３０３、データ制御部３０５およびタイマ部３０７により構成されている。
使用権制御部３０３は、ＰＣ１１５が接続されているＵＳＢペリフェラルコントローラ１１１に対してＵＳＢホストコントローラ１０３の仮使用権の付与・解放を行う仮使用権制御手段（図示せず）および使用権の付与・解放を行う使用権制御手段（図示せず）を備える。ここで、仮使用権とは、使用権制御部３０３とタイマ部３０７との協調動作により、個々のＵＳＢペリフェラルコントローラ１１１に対して単位時間毎に付与される仮の使用権である。
より詳細には、ＵＳＢハブ１０１は、仮使用権が付与されたＵＳＢペリフェラルコントローラ１１１（例えばＵＳＢペリフェラルコントローラ１１１Ａとする）に接続されているＰＣ１１５（ＰＣ１１５Ａ）からの通信のみを受信対象にし、実際にこのＰＣ１１５Ａからの通信を受信すれば、当該ＰＣ１１５Ａに対しＵＳＢデバイス１０７を占有できるようＵＳＢペリフェラルコントローラ１１１ＡおよびこのＵＳＢデバイス１０７が接続されているＵＳＢホストコントローラ１０３に使用権を与える。
仮使用権は、単位時間毎に各ＵＳＢペリフェラルコントローラ１１１に対し循環的に付与されるため、いずれのＰＣ１１５も任意のタイミングにて自ら通信を開始することで、使用権を得ることが可能である。
なお、ここで循環的とは、例えば、次のような動作を示す。ＵＳＢペリフェラルコントローラ１１１Ａ、その次はＵＳＢペリフェラルコントローラ１１１Ｂ、その次はＵＳＢペリフェラルコントローラ１１１Ｃという順に仮使用権が付与され、ＵＳＢペリフェラルコントローラ１１１Ｃの次は、再びＵＳＢペリフェラルコントローラ１１１Ａに付与される動作を繰り返すことである。なお、仮使用権が付与される順序は任意で良く、上記のような順序としても良いし、何らかの意図により変則的なものであっても良い。さらに、仮使用権が付与される時間も、ＵＳＢペリフェラルコントローラ１１１毎に異なったものであっても良い。
【００２６】
なお、上記から明らかな通り，ＵＳＢペリフェラルコントローラ１１１に対する仮使用権、およびＵＳＢペリフェラルコントローラ１１１とＵＳＢホストコントローラ１０３に対する使用権を付与・解放することは、実質的には、それぞれのコントローラに接続されているＰＣ１１５およびＵＳＢデバイス１０７に対して付与・解放することと同義であるため、以下では、双方の記載を用い、特に断りがない限り、その意味に差異はないものとする。
【００２７】
次に、図７−１〜７−３に、ＵＳＢハブ１０１内の排他制御部１０９における一連の動作シーケンスを示す。図７−１は、ＵＳＢハブ１０１がＰＣ１１５Ａに対して、仮使用権を与え、その仮使用権が付与されている間にＰＣ１１５Ａがデータ送信を始め、使用権が付与されるシーケンスを示している。図７−１に示すように、使用権を付与されたＰＣ１１５Ａは、データ送信が行えるが、他のＰＣ１１５Ｂはデータ送信してもＮＡＫ応答が返るだけである。ここでＮＡＫ応答とは、詳細は後述するが、ＵＳＢ規格における否定応答である。
【００２８】
使用権制御部３０３は、使用権の有するＰＣ１１５ＡとＵＳＢデバイス１０７間の通信が完了すると、この使用権を解放し、再度、上記した仮使用権を付与する処理を繰り返すこととなる。これにより、特定のＰＣ１１５とＵＳＢデバイス１０７間との排他制御を実現している。
【００２９】
また、図７−２は、ＵＳＢハブ１０１がＰＣ１１５Ｂに対して、仮使用権を与え、その仮使用権が付与されている間にＰＣ１１５Ｂがデータ送信を始め、使用権が付与されるシーケンスを示している。図７−２に示すように、使用権を付与されたＰＣ１１５Ｂは、データ送信が行えるが、他のＰＣ１１５Ａはデータ送信してもＮＡＫ応答が返るだけである。
【００３０】
さらに、図７−３は、ＵＳＢハブ１０１がＰＣ１１５Ａに対して、仮使用権を与え、その仮使用権が付与されている間にＰＣ１１５Ａがデータ送信を始めず、ＵＳＢハブ１０１が仮使用権中にデータ受信しなかったとして、ＰＣ１１５Ｂに仮使用権を付与するシーケンスを示している。
【００３１】
なお、任意のＰＣ１１５が使用権を得ている間、他のＰＣ１１５からの通信を受信すると、使用権を得ていないＰＣ１１５に対して否定応答であるＮＡＫを返す。これにより使用権を得ていないＰＣ１１５は、他のＰＣ１１５が使用権を得ているＵＳＢデバイスが使用できない状態であってもＵＳＢデバイスのデバイスドライバをアンロードする必要が無くなる。なぜなら、ＵＳＢの規格において、ＮＡＫ応答はデバイスの切断を意味するものではなく、接続を維持した状態で使用される否定応答だからである。また、ＮＡＫ応答はエンドポイントのＦＩＦＯバッファをＮＡＫ応答モードに設定することで行うことができる。
【００３２】
データ制御部３０５は、ＵＳＢホストコントローラ１０３およびＵＳＢペリフェラルコントローラ１１１を制御し、ＰＣ１１５とＵＳＢデバイス１０７間におけるデータの流れを適切に制御する。
タイマ部３０７は、使用権制御部３０３およびデータ制御部３０５と協調して動作し、仮使用権の付与・解放および使用権の解放のタイミングを決定する際に必要となる時間情報を与える。
なお、排他制御部１０９を含むＵＳＢハブ１０１全体の動作は後述するフローチャートにて示す。
【００３３】
（４）ＵＳＢハブの処理フローの説明
図４にＵＳＢハブ１０１全体の動作フローチャートを示す。なお、簡単のため本フローチャートは、ＵＳＢハブ１０１にＵＳＢデバイス１０７が１台のみ接続され、ＰＣ１１５が複数台接続されるケースを想定する。勿論、ＵＳＢデバイス１０７が複数台接続された場合であっても本発明は適用可能であり、この場合に当業者が本フローチャートを拡張することは容易である。
【００３４】
ａ）Ｓ４０１にて、ＵＳＢデバイス１０７がＵＳＢホストインタフェース１０５に接続されたことを、ＵＳＢホストコントローラ１０３が検出する。このとき、ＵＳＢホストコントローラ１０３は接続されたＵＳＢデバイス１０７の検出処理（ＵＳＢデバイスディスクリプタ、コンフィギュレーションディスクリプタの取得）を実行する。この時点において、ＰＣ１１５は、接続されたＵＳＢデバイス１０７を認識することはできない。
【００３５】
ｂ）Ｓ４０３にて、Ｓ４０１で取得したデバイスディスクリプタが各ＵＳＢペリフェラルコントローラ（１１１Ａ，１１１Ｂ，１１１Ｃ）に設定される。これにより、各ＰＣ（１１５Ａ，１１５Ｂ，１１５Ｃ）は、接続されたＵＳＢデバイス１０７を認識する。この時点で、ＰＣ１１５のプラグアンドプレイ処理が起動し、ＵＳＢデバイス１０７のデバイスドライバがロードされることとなる。
【００３６】
以下に説明するＳ４０５からＳ４２５までの処理が、排他制御部１０９の処理フローとなる。
ｃ）Ｓ４０５にて、使用権制御部３０３がＰＣ１１５に対して仮使用権を付与する。なお、仮使用権が付与されるＵＳＢペリフェラルコントローラ１１１は、Ｓ４０５の処理が実行されるたびに、異なったＵＳＢペリフェラルコントローラ１１１が対象となる。前述したように、この順序は任意で良く、１つずつ順番としても良いし、何らかの意図により変則的なものであっても良い。同様に、仮使用権が付与されている時間も一定間隔である必要はなく、変則的なものであっても良い。
ｄ）Ｓ４０６にて、タイマ部３０７は、受信受付カウンタを開始する。ここで受信受付カウンタとは、あるＵＳＢペリフェラルコントローラ１１１に仮使用権を付与している経過時間をカウントするものである。
【００３７】
ｅ）Ｓ４０７にてデータ制御部３０５がＰＣ１１５からデータを受信したかどうかをチェックする。なお、ＰＣ１１５からの受信データとは、後述するが、必ずしもＳ４０５にて仮使用権を付与したＵＳＢペリフェラルコントローラ１１１に接続されているＰＣ１１５からのものである必要はない。Ｓ４０７にて、ＰＣ１１５からのデータを受信すればＳ４０９に、受信していなければＳ４１１に進む。
【００３８】
ｆ）Ｓ４１１にてタイマ部３０７は、受信受付カウント値と閾値を比較し、受信受付カウント値が所定の閾値より大きければＳ４１２に、そうでなければＳ４０７に進む。これにより、受信受付カウント値が閾値以下の場合は、前述したデータ制御部３０５が繰り返しＰＣ１１５からデータを受信したかどうかを確認することができる。一方、受信受付カウント値が閾値より大きければ、Ｓ４１２、Ｓ４０５に進み別のＵＳＢペリフェラルコントローラ１１１に仮使用権を付与する処理を実行することになる。ここで所定の閾値とは、設定アプリケーション等を用いてユーザが手動で設定したり、予め固定値とするなど、任意の値に設定することが可能な値である。
【００３９】
ｇ）Ｓ４１２にて、受信受付カウント値をリセットする。具体的には、カウント値を０に更新する処理となる。
ｈ）Ｓ４１４にて、使用権制御部３０３は、Ｓ４０５で付与した仮使用権を解放し、再び他のＵＳＢペリフェラルコントローラ１１１に仮使用権を付与するべく、処理がＳ４０５に戻る。
【００４０】
ｉ）Ｓ４０９にて、Ｓ４０７で受信したデータがＳ４０５にて仮使用権を付与したＵＳＢペリフェラルコントローラ１１１に接続されたＰＣ１１５からのものかを確認し、そうであればＳ４１５に、そうでなければＳ４１３に進む。
ｊ）Ｓ４１３では、仮使用権を付与していないＵＳＢペリフェラルコントローラ１１１に接続されているＰＣ１１５からのデータに対しＮＡＫ応答をし、Ｓ４０７に進む。即ち、ＵＳＢハブ１０１がＰＣ１１５からのデータを受け付けるのは、Ｓ４０５にて仮使用権を付与したＵＳＢペリフェラルコントローラ１１１に接続されているＰＣ１１５からのデータのみということになる。
【００４１】
ｋ）Ｓ４１５にて、使用権制御部３０３がＵＳＢペリフェラルコントローラ１１１およびＵＳＢホストコントローラ１０３に使用権を付与し、Ｓ４１５とＳ４１７の間にて、受信したデータがＵＳＢデバイス１０７に送信される。なお、使用権とは、ＰＣ１１５がＵＳＢデバイス１０７と独占的に通信することのできる権利であり、即ち、特定のＰＣ１１５が占有している間は、他のＰＣ１１５が当該ＵＳＢデバイス１０７と通信することができない排他的権利である。なお、複数のＵＳＢデバイス１０７が接続されている場合は、ＵＳＢペリフェラルコントローラ１１１および通信先であるＵＳＢデバイス１０７が接続されているＵＳＢホストコントローラ１０３の組み合わせを管理する必要がある。
【００４２】
ｌ）Ｓ４１７にて、データ制御部３０５がＰＣ１１５からデータを受信したかどうかを確認する。この場合も、Ｓ４０７と同様、受信するデータは必ずしもＳ４１５で使用権を付与したＵＳＢペリフェラルコントローラ１１１に接続されたＰＣ１１５からであるとは限らない。データを受信していればＳ４１９に、受信していなければＳ４２３に進む。
ｍ）Ｓ４１９にて、受信したデータがＳ４１５にて使用権を付与したＵＳＢペリフェラルコントローラ１１１に接続されたＰＣ１１５からのものであればＳ４２３に、そうでなければＳ４２１に進む。実際には、Ｓ４１９とＳ４２３の間にて、受信したデータがＵＳＢデバイス１０７に送信される。
【００４３】
ｎ）Ｓ４２１にて、Ｓ４１７においてデータを送信してきたＰＣ１１５に対してＮＡＫ応答をし、再びＳ４１７に戻る。こうすることで、使用権を得ていないＵＳＢペリフェラルコントローラ１１１に接続されたＰＣ１１５に対してデバイスドライバをアンロードさせることなく、接続を維持することができる。
ｏ）Ｓ４２３にて、使用権が付与されているＵＳＢペリフェラルコントローラ１１１に接続されたＰＣ１１５とＵＳＢデバイス１０７との通信が完了したかどうかを判定する。なお、この判定にはどのような基準を用いることも可能であるが、後述する実施例で具体例を説明する。通信が完了したと判定されればＳ４２５に、そうでなければ再びＳ４１７に戻る。
【００４４】
ｐ）Ｓ４２５にて、使用権制御部３０３がＳ４１５にて付与した使用権を解放する。
ｑ）Ｓ４２７にて、ＵＳＢデバイス１０７が切断されたかどうかを判定し、切断されていればＳ４２９に、そうでなければ再びＳ４０７に戻る。
ｒ）Ｓ４２９にて、ＵＳＢデバイス１０７が切断されたことをＰＣ１１５に通知する。なお、通知するＰＣ１１５は、ＵＳＢハブ１０１に接続されている全てのＰＣ１１５が対象である。より詳細には、Ｓ４０３にて設定したＵＳＢデバイス１０７のデバイスディスクリプタを解放する処理であり、この時点で、各ＰＣ１１５はＵＳＢデバイス１０７のデバイスドライバのアンロードが実行される。
【００４５】
以上説明したように、本実施例１のＵＳＢハブ１０１によれば、複数のＰＣ１１５で複数のＵＳＢデバイス１０７を効率よく共有できることがわかる。すなわち、ＵＳＢハブ１０１によって、複数のＰＣ１１５がＵＳＢデバイス１０７を個々に手動で切り替えすることなく、且つＰＣ１１５側でデバイスドライバのロード・アンロードを実行することなく共有することができる。
【実施例２】
【００４６】
次に、実施例２では、上述した実施例１のＵＳＢハブの処理フローにおいて、ＰＣ１１５とＵＳＢデバイス１０７間の通信が完了したかどうかの判定処理を追加した実施形態を示す。
実施例２におけるフローチャートである図５では、図４に示した実施例１のフローチャートに、Ｓ５０１，Ｓ５０３およびＳ５０５が追加されている。その他の処理は実施例１と同じであるため、同一番号を付し説明を省略している。
【００４７】
ｓ）Ｓ５０１にて、タイマ部３０７がタイマのカウントアップを開始する。これは、データ制御部３０５がＳ４１５にて使用権を与えたＵＳＢペリフェラルコントローラ１１１に接続されたＰＣ１１５からのデータをＵＳＢデバイス１０７に送信完了したことに反応して動作する。
【００４８】
ｔ）Ｓ５０３にて、タイマ部３０７がタイマのカウント値をリセットし、再度カウントを開始する。より詳細には、Ｓ５０１にてカウントを開始したカウント値を０に初期化したあと、再びカウントを開始する。Ｓ５０３は、使用権を取得しているＵＳＢペリフェラルコントローラ１１１に接続されたＰＣ１１５から連続して送られるデータをＵＳＢデバイス１０７に送信した後の処理であり、タイマ部３０７はこの都度カウント値を初期化する。これにより、カウント値は最後にＵＳＢデバイス１０７にデータが送信された時点からの経過時間となる。
【００４９】
ｕ）Ｓ５０５にて、タイマ部３０７はカウント値と所定の閾値とを比較し、カウント値が閾値より大きければ最後にＵＳＢデバイス１０７にデータを送信した時点から一定時間が経過しているので、使用権制御部３０３に対して、Ｓ４１５にて付与した使用権を解放するよう依頼する（Ｓ４２５に進む）。該依頼を受けた使用権制御部３０３は、ＵＳＢペリフェラルコントローラ１１１とＵＳＢホストコントローラ１０３に付与されている使用権を解放する。一方、Ｓ５０５において、カウント値が閾値以下の場合はＳ４１７に進む。ここで所定の閾値とは、Ｓ４１１と同様に設定アプリケーション等を用いてユーザが手動で設定したり、予め固定値とするなど、任意の値に設定することが可能な値である。
【００５０】
なお、タイマ部３０７のカウントアップは、カウント開始後は常時行われており、本フローチャートとは別動作（別タスク）にて、例えばミリ秒単位にて行われている。従って、Ｓ５０１およびＳ５０３に示すように、タイマカウントが開始されれば、本フローチャートにてカウントアップ処理の記載がなくても、カウントが常時行われているものとする。
【００５１】
以上説明したように、本実施例２のＵＳＢハブによれば、適切なタイミングでＵＳＢデバイスの占有を解放することで、ＵＳＢデバイスの稼働率を向上させ、ひいては効率的なＵＳＢデバイスの共有を実現することができる。
【実施例３】
【００５２】
実施例３では、上述した実施例２のＵＳＢハブの処理フローにおいて、更に、ＰＣ１１５とＵＳＢデバイス１０７間の通信が完了したかどうかの判定を行う処理を追加した実施形態を示す。なお、本実施例３は、実施例１や実施例２に対し付加的に利用することが可能である。
図６は実施例３に係るＵＳＢハブの処理フローチャートを示している。実施例２を示すフローチャート（図５）に６０１とＳ６０３が追加されている。その他の処理は実施例２と同じであるため、同一番号を付し説明を省略している。
【００５３】
ｖ）Ｓ６０１およびＳ６０３にて、ＰＣ１１５から受信したデータがＵＳＢ規格のショートパケットかどうかを判定している。ここでショートパケットとは、ＵＳＢの転送データのうちエンドポイントに対する通信データが、規格上の最大長ではないサイズのデータが含まれるパケットを意味する。例えば、ＵＳＢ２．０ Ｆｕｌｌ Ｓｐｅｅｄ規格のバルク転送においては、エンドポイントに対するデータの最大長が６４バイトとなっている。即ち、Ｓ６０１およびＳ６０３では、受信したパケットが６４バイト未満のデータが含まれるパケットかどうかを判定することで、ＰＣからのデータ受信が完了したか否かを判定することにしている。
【００５４】
通常ＵＳＢプリンタ等において、印刷データは基本的に印刷用のエンドポイントに設定された最大パケットサイズ毎に送信される。このため、最後の印刷データに関しては端数（最大パケットサイズ未満）即ち、ショートパケットとなることが多く、これを検出することで印刷データの終了を即座に判定できる。
Ｓ６０１およびＳ６０３の何れにおいても、ショートパケットを受信すると、即座に使用権を解放し、Ｓ４２５に処理を移行する。一方、最後のパケットが最大パケット長と同一であることも想定し、この場合にはそれぞれＳ５０１およびＳ５０３の処理へ進むことになる。
【００５５】
また、監視するパケットの転送モードは任意とすることも可能である。例えば、通常、プリンタにおいて印刷データの転送はバルク転送を使用し，コマンド等の転送はインタラプトおよびコントロール転送を使用する。この際、インタラプトおよびコントロール転送はショートパケットとなることが多く、これらの転送モードも監視対象としていると、実際には印刷データの転送が完了していないにも関わらず、誤ったタイミングで転送終了の判断をしてしまうことがある。このような事態を回避するため、監視する転送モードをバルク転送のみにするなど、任意に選択できるようにすることで、転送終了判定の精度をより高めることが可能となる。
【００５６】
以上説明したように、本実施例３のＵＳＢハブによれば、適切なタイミングでＵＳＢデバイスの占有を解放することで、ＵＳＢデバイスの稼働率を向上させ、ひいては効率的なＵＳＢデバイスの共有を実現することができる。
【産業上の利用可能性】
【００５７】
本発明のＵＳＢハブは、複数台のＰＣで複数台のＵＳＢデバイスを共有するシステムに有用である。
【図面の簡単な説明】
【００５８】
【図１】本発明に係るＵＳＢハブを介したＰＣとＵＳＢデバイスとの接続図
【図２】本発明に係るＵＳＢハブのハードウェア構成図
【図３】本発明に係るＵＳＢハブ内の排他制御部の機能ブロック図
【図４】実施例１に係るＵＳＢハブの処理フローチャート
【図５】実施例２に係るＵＳＢハブの処理フローチャート
【図６】実施例３に係るＵＳＢハブの処理フローチャート
【図７−１】排他制御部の動作シーケンス１
【図７−２】排他制御部の動作シーケンス２
【図７−３】排他制御部の動作シーケンス３
【符号の説明】
【００５９】
１０１  ＵＳＢハブ
１０３Ａ，１０３Ｂ，１０３Ｃ  ＵＳＢホストコントローラ
１０７Ａ，１０７Ｂ，１０７Ｃ  ＵＳＢデバイス
１１１Ａ，１１１Ｂ，１１１Ｃ  ＵＳＢペリフェラルコントローラ
１１５Ａ、１１５Ｂ，１１５Ｃ  ＰＣ
【図１】
2008271215.tif 000003
【図２】
2008271215.tif 000004
【図３】
2008271215.tif 000005
【図４】
2008271215.tif 000006
【図５】
2008271215.tif 000007
【図６】
2008271215.tif 000008
【図７−１】
2008271215.tif 000009
【図７−２】
2008271215.tif 000010
【図７−３】
2008271215.tif 000011