(57)【特許請求の範囲】
【請求項１】
所定のインタフェースのルートハブを備え、前記ルートハブに階層的に接続されるノードを管理するノード管理装置であって、
管理情報を記憶するためのメモリと、
前記管理情報の備えるｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）に、前記ノードについての前記接続の階層の深さを示す情報を格納する第１の情報格納手段と、
前記第１のデータフィールドのうち、前記下位ｋビットを除く部分の少なくとも一部に、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を格納する第２の情報格納手段と
を備えるノード管理装置。
【請求項２】
請求項１に記載のノード管理装置であって、
前記所定のハブは、前記ルートハブである、ノード管理装置。
【請求項３】
請求項１または２に記載のノード管理装置であって、
前記管理情報の備える第２のデータフィールドに、前記ノードについての割り当てられたアドレスを格納する第３の情報格納手段
を備えるノード管理装置。
【請求項４】
請求項１ないし３のいずれかに記載のノード管理装置であって、
前記第１のデータフィールドに格納された情報を一括して前記ノードに通知する通知手段を備えるノード管理装置。
【請求項５】
所定のインタフェースのルートハブに階層的に接続されるノードを管理するノード管理装置から通知された情報を受けるノードであって、
前記情報を構成する、前記ノードについての前記接続の階層の深さを示す情報を記憶するためのｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）を除く部分の少なくとも一部から、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を抽出する情報抽出手段と、
前記情報抽出手段により抽出された情報に基づいて、前記ノードにおける動作を制限する動作制限手段と
を備えるノード。
【請求項６】
メモリに管理情報を格納して、所定のインタフェースのルートハブに階層的に接続されるノードを管理するノード管理方法であって、
前記管理情報の備えるｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）に、前記ノードについての前記接続の階層の深さを示す情報を格納する第１の工程と、
前記第１のデータフィールドのうち、前記下位ｋビットを除く部分の少なくとも一部に、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を格納する第２の工程と
を備えるノード管理方法。
【請求項７】
所定のインタフェースのルートハブと、メモリとを備えるコンピュータにおいて、前記ルートハブに階層的に接続されるノードを管理するためのコンピュータプログラムにおいて、
前記メモリに記憶されている管理情報の備えるｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）に、前記ノードについての前記接続の階層の深さを示す情報を格納する第１の機能と、
前記第１のデータフィールドのうち、前記下位ｋビットを除く部分の少なくとも一部に、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を格納する第２の機能と
を前記コンピュータに実現させるコンピュータプログラム。
【請求項８】
請求項７に記載のコンピュータプログラムであって、
前記第１のデータフィールドに格納された情報を一括して前記ノードに通知する第３の機能
をさらにコンピュータに実現させるコンピュータプログラム。
【請求項９】
所定のインタフェースのルートハブに階層的に接続されるノードを管理するノード管理装置から通知された情報を受けるノードにおいて実行するためのコンピュータプログラムであって、
前記情報を構成する、前記ノードについての前記接続の階層の深さを示す情報を記憶するためのｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）を除く部分の少なくとも一部から、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を抽出する機能と、
前記抽出された情報に基づいて、前記ノードにおける動作を制限する機能と
を前記ノードに実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルートハブに階層的に接続されるノードを管理する技術と、そのノードについての技術とに関する。
【背景技術】
【０００２】
パソコンに周辺機器を接続するためのインタフェースの１つとして、ＵＳＢ（ユニバーサル・シリアル・バス）の規格がある。ＵＳＢによれば、ホストコントローラに対して、ハブを設けることによってツリー状に、すなわち階層的に最大１２７台までの機器を増設することができる。
【０００３】
ハブおよび機器は「ノード」と呼ばれる。ホストコントローラは、内部に管理情報を備えることにより、ノードがどのようなトポロジ（接続形態）で接続されているかを管理している。具体的な一例としては、特許文献１に示すように、ノードの接続時に割り当てられたアドレスに加えて、階層の深さを示す段数を把握することにより上記管理を行っている。ホストコントローラは、ノードに対してアドレスを通知するとともに、必要に応じて段数を通知する。
【０００４】
【特許文献１】特開２００２−７３０７号公報
【０００５】
ホストコントローラのルートハブには２以上のポートが設けられている。近年、周辺機器によっては、この２以上のポートのうちの予め定めた特定のポートに接続した場合に特別な動作を実行する仕様とすることがある。上記段数およびアドレスを管理しているだけでは、周辺機器がルートハブのどのポートにつながっているかを容易に認識することができないことから、上記仕様を満たす構成とするには、多大の設計変更を行う必要があり、構成が複雑化する問題があった。設計変更としては、ノードに専用のエンドポイントを設ける等の回路的な変更、あるいは、内部管理情報を見直し、内部管理情報を新たに通知するなどのソフトウェア的な変更が考えられるが、いずれにしろ構成が複雑化した。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、上記した従来の課題の少なくとも一部を解決するためになされた発明であり、所定のハブの所定のポートに接続されたデバイスのみが特別な動作をする仕様を簡単な構成でもって実現することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００８】
［適用例１］
所定のインタフェースのルートハブを備え、前記ルートハブに階層的に接続されるノードを管理するノード管理装置であって、
管理情報を記憶するためのメモリと、
前記管理情報の備えるｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）に、前記ノードについての前記接続の階層の深さを示す情報を格納する第１の情報格納手段と、
前記第１のデータフィールドのうち、前記下位ｋビットを除く部分の少なくとも一部に、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を格納する第２の情報格納手段と
を備えるノード管理装置。
【０００９】
適用例１のノード管理装置によれば、ノードについての接続の階層の深さを示す情報を記憶するための第１のデータフィールドに、本来格納すべき前記階層の深さを示す情報と共に、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を記憶させることができる。このために、所定のインタフェースの規格に準拠した形で、ノードの接続元である所定のハブにおける当該ノードにつながるポートを示す情報を管理することができる。
【００１０】
したがって、適用例１のノード管理装置によれば、ノードが当該ノードよりも上の階層に位置する所定のハブのどのポートにつながっているかを容易に認識することができることから、前記所定のハブに備えられた所定のポートに接続されたノードのみが特別な動作をする仕様を簡単な構成でもって実現することが可能となる。
【００１１】
［適用例２］
適用例１に記載のノード管理装置であって、前記所定のハブは、前記ルートハブである、ノード管理装置。この構成によれば、ルートハブに備えられた所定のポートに接続されたノードのみが特別な動作をする仕様を簡単な構成でもって実現することができる。
【００１２】
［適用例３］
適用例１または２に記載のノード管理装置であって、前記管理情報の備える第２のデータフィールドに、前記ノードについての割り当てられたアドレスを格納する第３の情報格納手段を備えるノード管理装置。この構成によれば、管理情報の１つとして、各ノードに割り当てられたアドレスも得ることができる。
【００１３】
［適用例４］
適用例１ないし３のいずれかに記載のノード管理装置であって、前記第１のデータフィールドに格納された情報を一括して前記ノードに通知する通知手段を備えるノード管理装置。この構成によれば、ＵＳＢに準拠して第１のデータフィールドに格納された情報をノードに通知することができる。
【００１４】
［適用例５］
所定のインタフェースのルートハブに階層的に接続されるノードを管理するノード管理装置から通知された情報を受けるノードであって、
前記情報を構成する、前記ノードについての前記接続の階層の深さを示す情報を記憶するためのｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）を除く部分の少なくとも一部から、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を抽出する情報抽出手段と、
前記情報抽出手段により抽出された情報に基づいて、前記ノードにおける動作を制限する動作制限手段と
を備えるノード。
【００１５】
適用例５のノードによれば、当該ノードよりも上の階層に位置する所定のハブに備えられた所定のポートに接続されたノードについての動作の制限を容易に行うことができる。
【００１６】
［適用例６］
メモリに管理情報を格納して、所定のインタフェースのルートハブに階層的に接続されるノードを管理するノード管理方法であって、
前記管理情報の備えるｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）に、前記ノードについての前記接続の階層の深さを示す情報を格納する第１の工程と、
前記第１のデータフィールドのうち、前記下位ｋビットを除く部分の少なくとも一部に、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を格納する第２の工程と
を備えるノード管理方法。
【００１７】
［適用例７］
所定のインタフェースのルートハブと、メモリとを備えるコンピュータにおいて、前記ルートハブに階層的に接続されるノードを管理するためのコンピュータプログラムにおいて、
前記管理情報の備えるｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）に、前記ノードについての前記接続の階層の深さを示す情報を格納する第１の機能と、
前記第１のデータフィールドのうち、前記下位ｋビットを除く部分の少なくとも一部に、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を格納する第２の機能と
を前記コンピュータに実現させるコンピュータプログラム。
【００１８】
適用例６のノード管理方法および適用例７のコンピュータプログラムによれば、適用例１のノード管理装置と同様に、ノードが当該ノードよりも上の階層に位置する所定のハブのどのポートにつながっているかを容易に認識することができることから、前記所定のハブに備えられた所定のポートに接続されたノードのみが特別な動作をする仕様を簡単な構成でもって実現することが可能となる。
【００１９】
［適用例８］
適用例７に記載のコンピュータプログラムであって、前記第１のデータフィールドに格納された情報を一括して前記ノードに通知する第３の機能をさらにコンピュータに実現させるコンピュータプログラム。
【００２０】
［適用例９］
所定のインタフェースのルートハブに階層的に接続されるノードを管理するノード管理装置から通知された情報を受けるノードにおいて実行するためのコンピュータプログラムであって、
前記情報を構成する、前記ノードについての前記接続の階層の深さを示す情報を記憶するためのｎビット（ｎは整数）の第１のデータフィールドのうち、下位ｋビット（ｋはｎより小さな整数）を除く部分の少なくとも一部から、前記ノードの上の階層に位置する所定のハブにおける当該ノードにつながるポートを示す情報を抽出する機能と、
前記抽出された情報に基づいて、前記ノードにおける動作を制限する機能と
を前記ノードに実現させるコンピュータプログラム。
【００２１】
適用例９のノード用のコンピュータプログラムによれば、適用例５のノードと同様に、当該ノードよりも上の階層に位置する所定のハブに備えられた所定のポートに接続されたノードについての動作の制限を容易に行うことができる。
【００２２】
本発明は、上記以外の種々の適用例又は形態で実現可能であり、例えば、適用例であるノード管理装置およびノードを含むシステムの形態、適用例であるノード管理装置を備える各種の装置（例えばプロジェクタ）としての形態等で実現することが可能である。
【発明を実施するための最良の形態】
【００２３】
以下、本発明に係るノード管理装置、ノード、ノード管理方法およびコンピュータプログラムについて、図面を参照しつつ、実施例に基づいて説明する。
【００２４】
１．ハードウェアの構成：
図１は、本発明の一実施例としてのプロジェクタシステムの概略構成を示す説明図である。図示するように、プロジェクタシステム１は、プロジェクタ１０と、このプロジェクタ１０に接続される５台の周辺機器、すなわち、第１の周辺機器（以下、「機器Ａ」と呼ぶ）２１、第２の周辺機器（以下、「機器Ｂ」と呼ぶ）２２、第３の周辺機器（以下、「機器Ｃ」と呼ぶ）２３、第４の周辺機器（以下、「機器Ｄ」と呼ぶ）２４および第５の周辺機器（以下、「機器Ｅ」と呼ぶ）２５とを備える。プロジェクタ１０と機器Ａ２１〜機器Ｅ２５との間は、ＵＳＢインタフェースを利用して接続されている。詳細には、ハブ（集線装置）３０を設けることによってプロジェクタ１０に対してツリー状に、すなわち階層的に機器Ａ２１〜機器Ｅ２５が接続されている。
【００２５】
プロジェクタ１０は、画像や映像を大型スクリーンなどに投影することにより表示を行う装置である。プロジェクタ１０は、本発明に係るノード管理装置に相当する。機器Ａ２１〜機器Ｅ２５は、キーボード、マウス、モニタ、記憶デバイス、通信デバイスである。なお、機器Ａ２１〜機器Ｅ２５はこれら以外のデバイス、すなわちＵＳＢを搭載したデバイスとすることもできる。機器Ａ２１〜機器Ｅ２５は、本発明に係るノードに相当する。
【００２６】
図２は、プロジェクタシステムの電気的な構成を示すブロック図である。プロジェクタ１０は、内部にＣＰＵ１１、メモリ１２、ホストコントローラ１４、ルートハブ１６等を備える。ＣＰＵ１１は中央演算処理装置である。メモリ１２は、各種データや各種プログラム等を記憶し、ＣＰＵ１１の作業領域となる。ホストコントローラ１４はＵＳＢインタフェースユニットである。ルートハブ１６は、最初のＵＳＢハブの接続部であり、ホストコントローラ１４に一体化されている。本実施例では、ルートハブ１６は３つのポート１６ａ，１６ｂ，１６ｃを備える。ＣＰＵ１１とメモリ１２とホストコントローラ１４との間はバス１７により相互に接続されている。
【００２７】
また、プロジェクタ１０の背面には２つのＵＳＢコネクタ１８ａ，１８ｂが設けられており、プロジェクタ１０の側面には１つのＵＳＢコネクタ１８ｃが設けられている。ルートハブ１６の第１のポート１６ａはＵＳＢコネクタ１８ａに、ルートハブ１６の第２のポート１６ｂはＵＳＢコネクタ１８ｂに、ルートハブ１６の第３のポート１６ｃはＵＳＢコネクタ１８ｃにそれぞれ結線されている。なお、第１のポート１６ａはポート番号が１であり、第２のポート１６ｂはポート番号が２であり、第３のポート１６ｃはポート番号が３であるものとする。
【００２８】
プロジェクタ１０の背面に設けられた一のＵＳＢコネクタ１８ａには、ハブ３０が接続されている。詳細には、ＵＳＢコネクタ１８ａとハブ３０のアップポート（入力側のＵＳＢコネクタ）３２との間がＵＳＢケーブル４１により接続されている。
【００２９】
ハブ３０は、４つのダウンポート（出力側のＵＳＢコネクタ）３４ａ，３４ｂ，３４ｃ，３４ｄを備えている。第１のダウンポート３４ａにはＵＳＢケーブル４２を介して機器Ａ２１が接続され、第２のダウンポート３４ｂにはＵＳＢケーブル４３を介して機器Ｂ２２が接続され、第３のダウンポート３４ｃにはＵＳＢケーブル４４を介して機器Ｃ２３が接続されている。第４のダウンポート３４ｄは空きの状態である。
【００３０】
一方、プロジェクタ１０の背面に設けられた他のＵＳＢコネクタ１８ｂには、ＵＳＢケーブル４５を介して機器Ｄ２４が接続されている。また、プロジェクタ１０の側面に設けられたＵＳＢコネクタ１８ｃには、ＵＳＢケーブル４６を介して機器Ｅ２５が接続されている。
【００３１】
上述してきた接続の結果、階層の深さを示す段数が０である第０段目にルートハブが備えられ、段数が１である第１段目にハブ３０と機器Ｄ２４と機器Ｅ２５とが備えられ、段数が２である第２段目に機器Ａ２１と機器Ｂ２２と機器Ｃ２３とが備えられるトポロジが構築されたことになる。上記構築したトポロジは、あくまでも一例であり、実現すべきシステムの内容に併せて適宜に設計される。なお、ハブ３０および機器Ａ２１〜機器Ｅ２５は、以下、必要に応じて「ノード」と呼ぶ。また、プロジェクタ１０は、必要に応じて「ホスト」あるいは「コンピュータ」と呼ぶ。
【００３２】
２．内部管理情報の構成：
プロジェクタ１０の備えられるメモリ１２には、上記トポロジを示す内部管理情報ＭＮが記憶されている（図２参照）。
【００３３】
図３は、内部管理情報ＭＮを概念的に示す説明図である。内部管理情報ＭＮは、テーブル形式のデータであり、ノード毎にデータの集合の一単位（以下、「レコード」と呼ぶ）を備える。各レコードＲ１〜Ｒ６は、該当するノードについての接続の階層の深さを示す段数を記憶するための［段数］データフィールドＤＦ１と、該当するノードのアドレスを記憶するための［アドレス］データフィールドＤＦ２等を備える。
【００３４】
［段数］データフィールドＤＦ１は、８ビットのサイズであり、下位の４ビットに上記段数が格納され、上位の４ビットに、ルートハブ１６における当該ノードにつながる（ここでいう「つながる」は直接に接続される場合と、ハブを介して間接的に接続される場合とを含む、以下同じ）ポートを示すポート番号が格納されている。なお、この段数が格納される部位と前記ポート番号が格納される部位との区分けは、上記に限る必要はなく、上記段数とポート番号がそれぞれ格納可能なサイズであればどのような区分けとしてもよい。ＵＳＢでは、ハブの従属接続は５段までと制限されていることから、段数は２進数表記で３ビットあれば済む。このために、下位の３ビットに段数が格納され、上位の５ビットにポート番号が格納される構成を一例とすることができる。また、必ずしも８ビットの全体を使用する必要はなく、下位の３ビットに段数が格納され、上から第２番目から第５番目までの４ビットにポート番号が格納される構成としてもよい。なお、段数が格納される部位は、右詰めとされている必要がある。［段数］データフィールドＤＦ１を含めた内部管理情報ＭＮのデータ構造は、ＵＳＢの規格にもともと準拠したものであり、本実施例では、その規格により規定された［段数］データフィールドＤＦ１を利用するようにしているためである。
【００３５】
上記［段数］データフィールドＤＦ１は、換言すれば、ｎ（ｎは整数）＝８、ｋ（ｋはｎより小さな整数）＝４として、ｎビットの［段数］データフィールドＤＦ１のうち、下位ｋビットに上記段数が格納され、下位ｋビットを除く部分の少なくとも一部に、上記ポート番号が格納されていることになる。そして、ｎとｋは、上記段数とポート番号がそれぞれ格納可能なサイズであればどのような値とすることもできる。
【００３６】
［アドレス］データフィールドＤＦ２は、７ビットのサイズであり、ノードのアドレスが格納されている。なお、アドレスは、ノードの接続時に割り当てられた、システム内でユニークなものである。
【００３７】
以上のように構成された内部管理情報ＭＮは、プロジェクタ１０に新たなノードが接続される毎に、その接続後のトポロジを表す内容に更新される。この内部管理情報ＭＮの更新を含めた新たなノード接続時の処理について、次に詳述する。
【００３８】
３．ホストドライバによる処理：
図４は、ノード接続時に実行されるエニュメレーションの処理を示すフローチャートである。このエニュメレーションの処理は、メモリ１２に予め記憶されたホストドライバＨＤ（図２参照）に従ってＣＰＵ１１により実行される処理である。作業者によって、新たなデバイス（機器）がハブのポートに接続されると、ハブはデバイスの接続を検出して、ホストコントローラ１４からの通信待ち状態になる。ＣＰＵ１１は、処理が開始されると、そのデバイスが接続されたポートを開くようにハブに指示することでデバイスに潜入する（ステップＳ１０）。
【００３９】
次いで、ＣＰＵ１１は、デバイスディスクリプタをデバイスに対して要求して、デバイスディスクリプタを取得する（ステップＳ２０）。続いて、デバイスに対して、プロジェクタシステム１内でユニークなアドレスを割り当てる（ステップＳ３０）とともに、そのアドレスデバイスディスクリプタ（クラスコードやＶＩＤ／ＰＩＤなどの）の情報を頼りに、関連するクラスドライバやその他のクライアントドライバなどをロードする（ステップＳ４０）。その後、ステップＳ３０で割り当てたアドレス等に基づいて内部管理情報ＭＮを更新する処理を行い（ステップＳ５０）、このエニュメレーションの処理を一旦終了する。これにより、新たなデバイスは使用可能となる。
【００４０】
図５は、ステップＳ５０で実行される内部管理情報の更新処理の詳細を示すフローチャートである。この更新処理に処理が移行すると、ＣＰＵ１１は、まず、ルートハブ１６において上記新たに接続されたノードにつながるポートのポート番号と、段数を求める処理を行う（ステップＳ５２）。上記エニュメレーションの処理は、ハブを含めた新たなノードが接続される毎に繰り返し行われることから、プロジェクタ（ホスト）１０は、新たなノードが既に接続されたどのノードのどのポートに接続されたかを理解している。この接続の形態は、ＵＳＢに準拠する形で、内部管理情報ＭＮに含まれるパラメータにより記憶されている。ステップＳ５２では、このパラメータに基づいて、前記ポート番号と段数とを求めている。
【００４１】
次いで、ＣＰＵ１１は、内部管理情報ＭＮに１レコードを付加する（ステップＳ５３）。続いて、ＣＰＵ１１は、その１レコードに備えられる［段数］データフィールドＤＦ１のうちの上位の４ビットにステップＳ５２で求められたポート番号を書き込む（格納する）とともに（ステップＳ５６）、［段数］データフィールドＤＦ１の下位の４ビットにステップＳ５２で求められた段数を書き込む（格納する）（ステップＳ５８）。
【００４２】
ステップＳ５８の実行後、ＣＰＵ１１は、ステップＳ５９に処理を進めて、ステップＳ５３で付加した１レコードに備えられる［アドレス］データフィールドＤＦ２にステップＳ３０で割り当てたアドレスを書き込む（格納する）。その後、「リターン」に抜けて、この内部管理情報の更新処理を一旦終了する。
【００４３】
上記ステップＳ５８の処理は、本発明のノード管理装置が備える「第１の情報格納手段」に相当する。ステップＳ５６の処理は、本発明のノード管理装置が備える「第２の情報格納手段」に相当する。なお、ステップＳ５６とステップＳ５８の実行順序は、この順に限る必要はなく反転させた順に実行する構成としてもよい。また、ステップＳ５９の処理についても、ステップＳ５４以降であれば、いずれのタイミングで実行してもよい。
【００４４】
なお、エニュメレーションは上述したノード接続時ばかりではなく、ノードを取り外した場合にも実行される。このノード取り外し時におけるエニュメレーションでは、そのノードについての情報やそのノードの下流に位置するノードについての情報を削除するように内部管理情報の更新を行なっている。
【００４５】
図３に例示した各［段数］データフィールドＤＦ２の値は、図２に示したトポロジに対応したものとなっている。すなわち、ハブ３０は、ルートハブ１６におけるポート番号が１のポートにつながれた第１段目のノードであることから、ハブ３０に対応したレコードＲ１が備える［段数］データフィールドＤＦ２の値は、２進数表記で“０００１０００１“となり、１６進数表記で”１１“となる。機器Ａは、ルートハブ１６におけるポート番号が１のポートにつながれた第２段目のノードであることから、機器Ａに対応したレコードＲ２が備える［段数］データフィールドＤＦ２の値は、２進数表記で“０００１００１０“となり、１６進数表記で”１２“となる。同様に、機器Ｂ、Ｃも、ハブ３０に対応したレコードＲ３，Ｒ４が備える［段数］データフィールドＤＦ２の値は、２進数表記で“０００１００１０“となり、１６進数表記で”１２“となる。
【００４６】
機器Ｄは、ルートハブ１６におけるポート番号が２のポートにつながれた第１段目のノードであることから、機器Ｄ２４に対応したレコードＲ５が備える［段数］データフィールドＤＦ２の値は、２進数表記で“００１００００１“となり、１６進数表記で”２１“となる。機器Ｅ２５は、ルートハブ１６におけるポート番号が３のポートにつながれた第１段目のノードであることから、機器Ｅ２５に対応したレコードＲ６が備える［段数］データフィールドＤＦ２の値は、２進数表記で“００１１０００１“となり、１６進数表記で”３１“となる。
【００４７】
内部管理情報ＭＮの少なくとも一部を構成する上記［段数］データフィールドＤＦ２の値は、ＵＳＢに準拠した形で適当な時期に、ホスト１０から該当するノードに対して通知される。この通知はパケット単位で送信される。
【００４８】
図６は、ホスト１０からノードに対して通知されるパケットの一例を示す説明図である。第１のパケットＰＫ１は、送信先のノード内のエンドポイントを特定するためのもので、［アドレス］データフィールドＤＦ１１と［エンドポイント］データフィールドＤＦ１２等を備える。［アドレス］データフィールドＤＦ１１は、内部管理情報ＭＮの［アドレス］データフィールドＤＦ２の値が格納されている。［エンドポイント］データフィールドＤＦ１２は、エンドポイントの番号が格納されている。
【００４９】
第２のパケットＰＫ２は、［段数］データフィールドＤＦ１３等を備える。段数］データフィールドＤＦ１３には、内部管理情報ＭＮの［段数］データフィールドＤＦ１の値が格納されている。第１および第２のパケットＰＫ２を含めた複数のパケットは、［ＳＹＮＣ］データフィールドＤＦ１０の値で１つにくくられる。このケットの集合の形で、プロジェクタ１０のホストコントローラ１４は、内部管理情報ＭＮの［段数］データフィールドＤＦ２の値を送信する。
【００５０】
４．デバイスドライバによる処理：
前述したノードとしてのハブ３０および機器Ａ２１〜Ａ２５は、ＣＰＵとメモリ等を有するマイクロコンピュータを備える。メモリには、このノードの動作を制御するプログラム（以下、「デバイスドライバ」と呼ぶ）が予め記憶されており、ＣＰＵはそのデバイスドライバに従って制御処理を実行する。
【００５１】
図７は、デバイスドライバに従う制御処理を示すフローチャートである。図示するように、処理が開始されると、ノードのＣＰＵは、ホストコントローラ１４から送られてくる前述したパケットの集合を受信する（ステップＳ１００）。ホストコントローラ１４は、パケットをブロードキャストで発行し、ノードは、自身宛のものであることを第１のパケットＰＫ１が備える［アドレス］データフィールドＤＦ１１の値で判定して、選択的に受信を行う。
【００５２】
次いで、ノードのＣＰＵは、ステップＳ１００で受信したパケットが備える［段数］データフィールドＤＦ１の値が、１６進数表記で“３０”以上で、かつ１６進数表記で“３Ｆ”以下であるか否かを判定する（ステップＳ１１０）。この条件を満たすのは、ノードが、ルートハブ１６のポート番号が３のポートにつながれたものである場合、すなわち、プロジェクタ１０の側面に設けられたＵＳＢコネクタ１８ｃに直接、もしくはハブを介して間接的に接続されたものである。換言すれば、ステップＳ１１０では、ノードが、ルートハブ１６のポート番号が３のポートにつながれたものであるか否かを判定している。ここで、［段数］データフィールドＤＦ１の値が“３０”以上で、かつ“３Ｆ”以下であると判定された場合には、ステップＳ１２０に処理を進めて、ノードの行うべき所定の処理を実行する。その処理の実行を終えると、「リターン」に抜けてこのルーチンを終了する。
【００５３】
一方、ステップＳ１１０で、［段数］データフィールドＤＦ１の値が“３０”を下回るか、または“３Ｆ”を上回るかした場合には、「ＮＧ」であるものとして、上記所定の処理の実行を行うことなく（ステップＳ１３０）、「リターン」に抜けてこのルーチンを終了する。
【００５４】
５．実施例効果：
以上説明したように、本実施例のプロジェクタシステム１によれば、ＵＳＢに準拠した、段数を記憶するための［段数］データフィールドＤＦ１に、本来格納すべき段数と共に、ルートハブ１６におけるノードにつながるポートを示すポート番号を記憶させることができる。このために、ＵＳＢに準拠した形で、ノードの接続元であるルートハブにおける当該ノードにつながるポートのポート番号を内部管理情報ＭＮにより管理することができる。
【００５５】
したがって、プロジェクタシステム１によれば、ノードが、ＵＳＢに準拠した形で、すなわち、専用のエンドポイントを設ける等の回路的な変更を行うことなく、ルートハブ１６におけるどのポートにつながっているかを容易に認識することができる。特に、本実施例では、ルートハブ１６の第３のポート（ポート番号＝３）１６ｃに結線されたプロジェクタ１０側面のＵＳＢコネクタ１８ｃに接続された機器Ｅ２５を認識することができることから、この機器Ｅ２５のみに動作を実行させるような仕様を簡単な構成でもって実現することが可能となる。
【００５６】
６．実施例の変形例：
前記実施例では、ノードがルートハブ１６のどのポートにつながっているかを、［段数］データフィールドＤＦ１により管理する構成としていたが、これに換えて、ノードが所定のハブ、すなわち当該ノードの上の階層に位置する所定のハブのどのポートにつながっているかを管理する構成としてもよい。すなわち、前記実施例で説明したトポロジ（図２参照）においては、機器Ａ、機器Ｂまたは機器Ｃがハブ３０の３４ａ，３４ｂ，３４ｃ，３４ｄのいずれにつながっているかを管理する構成としてもよい。
【００５７】
詳細には、第１実施例で説明した［段数］データフィールドＤＦ１のうち、下位の４ビットに上記段数が格納され、上位の４ビットに、ハブ３０における当該ノードにつながるポートを示すポート番号が格納される構成とする。すなわち、［段数］データフィールドは、ｎ（ｎは整数）ビットのサイズとして、［段数］データフィールドのうち、下位ｋビット（ｋはｎより小さな整数）に上記段数が格納され、下位ｋビットを除く部分の少なくとも一部に、ノードの上の階層に位置するハブ３０における当該ノードにつながるポート番号が格納される構成とする。
【００５８】
この変形例によれば、ルートハブ以外の所定のハブに直接、もしくはハブを介して間接的に接続されたノードをＵＳＢに準拠した形で容易に認識することができる。したがって、ルートハブ以外の所定のハブに備えられた所定のポートにノードが接続された場合に、そのノードのみが特殊な動作をするような構成を簡単に実現することが可能となる。
【００５９】
７．他の実施形態：
（１）上記実施例および変形例では、ルートハブもしくは所定のハブの特定のポートにノードが接続された場合に、そのノードのみが所定の動作を実行し、そのノードが他のポートに接続された場合には動作を実行しないように構成したが、必ずしも、実行と非実行の択一的な選択とする必要はなく、その特定のポートに接続された場合には第１の動作を実行し、他のポートに接続された場合には第２の動作を実行する構成としてもよい。第１の動作と第２の動作との関係は、全く相違する動作であってもよいし、一部機能を制限したものとしてもよい。機能の制限は、第１の動作、第２の動作のいずれに施す構成としてもよい。
【００６０】
（２）上記実施例および変形例では、ホストとノードとの間のインタフェースをＵＳＢとしたが、これに換えて、ＨＤＭＩ（High-Definition Multimedia Interface）等に応用することができる。要は、階層構造のトポロジを構築することのできるインタフェースであればどのようなものにも応用することができる。例えば、10BASE-T、100BASE-TXなどのスター型のインタフェースに換えることもできる。
【００６１】
（３）上記実施例および変形例では、ルートハブを備えるホストをプロジェクタとして構成したが、プロジェクタに換えて、プリンタ、パーソナルコンピュータ、表示装置、ビデオ装置等の種々の装置として構成してもよい。
【００６２】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【図面の簡単な説明】
【００６３】
【図１】本発明の一実施例としてのプロジェクタシステムの概略構成を示す説明図である。
【図２】プロジェクタシステムの電気的な構成を示すブロック図である。
【図３】内部管理情報ＭＮを概念的に示す説明図である。
【図４】ノード接続時に実行されるエニュメレーションの処理を示すフローチャートである。
【図５】内部管理情報の更新処理の詳細を示すフローチャートである。
【図６】ホストからノードに対して通知されるパケットの一例を示す説明図である。
【図７】デバイスドライバに従う制御処理を示すフローチャートである。
【符号の説明】
【００６４】
１…プロジェクタシステム
１０…プロジェクタ
１１…ＣＰＵ
１２…メモリ
１４…ホストコントローラ
１６…ルートハブ
１６ａ…第１のポート
１６ｂ…第２のポート
１６ｃ…第３のポート
１６ｃ…第３のポート
１７…バス
２１…機器Ａ
２２…機器Ｂ
２３…機器Ｃ
２４…機器Ｄ
２５…機器Ｅ
３０…ハブ
３２…アップポート
３４ａ…第１のダウンポート
３４ｂ…第２のダウンポート
３４ｃ…第３のダウンポート
３４ｄ…第４のダウンポート
ＤＦ１…［段数］データフィールド
ＤＦ２…［アドレス］データフィールド
ＨＤ…ホストドライバ
ＭＮ…内部管理情報
【図１】
0005029379.tif 000002
【図２】
0005029379.tif 000003
【図３】
0005029379.tif 000004
【図４】
0005029379.tif 000005
【図５】
0005029379.tif 000006
【図６】
0005029379.tif 000007
【図７】
0005029379.tif 000008