(57)【要約】【課題】  簡便な接続手順で、高速なデータ転送が可能であるとともにデータ転送の確実性が保証できる通信システムを提供する。【解決手段】  ユニット間のアシンクロナスコネクションを確立するためのコマンドに、ユニット内のサブユニットプラグを指定するためのフィールドを拡張して追加し、ユニット間におけるアシンクロナスコネクション、およびユニット内でのサブユニットプラグとユニットが備えるポートとの間におけるコネクションを単一のコマンドにより、同時に接続あるいは切断することができるようにする。【選択図】  図３６
2005123739.tif 000002
【特許請求の範囲】
【請求項１】
シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムであって、
任意の制御データを出力する制御手段を備え、
上記送信ノードは、上記シリアルバスを介してデータを送信するための送信手段と、
上記送信手段にデータを出力可能な出力手段を有するとともに、上記制御手段からの制御データにより制御可能な所定の機能を有する機能動作手段と、
上記送信手段と上記出力手段との接続状態を制御する通信路制御手段とを備え、
上記制御データは、単一の制御命令を用いて送信可能な上記送信手段と上記出力手段との接続状態を制御するための制御データを含むことを特徴とする通信システム。
【請求項２】
上記制御データは、上記送信手段を識別するデータおよび上記出力手段を識別するためのデータを含むことを特徴とする請求項１に記載の通信システム。
【請求項３】
上記制御データは、さらに上記送信手段と上記出力手段との接続状態の制御にて排他制御を行うためのデータを含むことを特徴とする請求項１または２に記載の通信システム。
【請求項４】
上記機能動作手段は、データを記録するための記録手段であり、
上記送信手段は、上記記録手段に記録されたデータを送信可能であることを特徴とする請求項１〜３の何れか１項に記載の通信システム。
【請求項５】
上記記録手段は、ファイルデータおよびファイル属性データを記録することを特徴とする請求項４に記載の通信システム。
【請求項６】
シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムであって、
任意の制御データを出力する制御手段を備え、
上記受信ノードは、上記シリアルバスを介してデータを受信するための受信手段と、
上記受信手段で受信したデータを入力可能な入力手段を有するとともに、上記制御手段からの制御データにより制御可能な所定の機能を有する機能動作手段と、
上記受信手段と上記入力手段との接続状態を制御する通信路制御手段とを備え、
上記制御データは、単一の制御命令を用いて送信可能な上記受信手段と上記入力手段との接続状態を制御するための制御データを含むことを特徴とする通信システム。
【請求項７】
上記制御データは、上記受信手段を識別するデータおよび上記入力手段を識別するためのデータを含むことを特徴とする請求項６に記載の通信システム。
【請求項８】
上記制御データは、さらに上記受信手段と上記入力手段との接続状態の制御にて排他制御を行うためのデータを含むことを特徴とする請求項６または７に記載の通信システム。
【請求項９】
上記シリアルバスは、ＩＥＥＥ１３９４規格に準拠したシリアルバスであり、上記送信ノードと上記受信ノードとの間でのデータの送受信はアシンクロナス転送により行われることを特徴とする請求項１〜８の何れか１項に記載の通信システム。
【請求項１０】
任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、
上記送信ノードは、上記制御データの一部により制御可能であるとともに、データを出力するための出力手段をそれぞれ備えた所定の機能を有するｎ個（ｎは自然数）の機能動作手段と、
上記シリアルバスを介してアシンクロナス転送によりデータを送信するための送信手段とを具備し、
上記受信ノードは、上記シリアルバスを介してアシンクロナス転送により上記データを受信するための受信手段を具備し、
上記制御ノードは、単一のデータ送信により上記出力手段と上記送信手段との間のデータ送信路を確保するためのデータを含む上記制御データを上記送信ノードに送信することを特徴とする通信システム。
【請求項１１】
上記制御ノードは、上記出力手段と上記送信手段との間のデータ送信路の確保に関する排他制御を行うためのデータを含む上記制御データを上記送信ノードに送信することを特徴とする請求項１０に記載の通信システム。
【請求項１２】
任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、
上記送信ノードは、上記シリアルバスを介してアシンクロナス転送によりデータを送信するための送信手段を具備し、
上記受信ノードは、上記制御データの一部により制御可能であるとともに、データを入力するための入力手段をそれぞれ備えた所定の機能を有するｍ個（ｍは自然数）の機能動作手段と、
上記シリアルバスを介してアシンクロナス転送により上記データを受信するための受信手段とを具備し、
上記制御ノードは、単一のデータ送信により上記入力手段と上記受信手段との間のデータ受信路を確保するためのデータを含む上記制御データを上記受信ノードに送信することを特徴とする通信システム。
【請求項１３】
上記制御ノードは、上記入力手段と上記受信手段との間のデータ受信路の確保に関する排他制御を行うためのデータを含む上記制御データを上記受信ノードに送信することを特徴とする請求項１２に記載の通信システム。
【請求項１４】
任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、
上記送信ノードは、データを記録するための記録手段と、
上記記録手段に記録されているデータを上記シリアルバスを介してアシンクロナス転送により送信するための送信手段とを具備し、
上記受信ノードは、上記送信ノードから送信されたデータを受信するための受信手段を具備し、
上記制御データは、単一のデータ送信により上記記録手段と上記送信手段との論理的な接続を行うための制御データを含むことを特徴とする通信システム。
【請求項１５】
上記記録手段は、ファイルデータおよびファイル属性データを記録することを特徴とする請求項１４に記載の通信システム。
【請求項１６】
上記制御データは、上記記録手段と上記送信手段と上記受信ノードとの接続制御にて排他制御を行うための制御データを含むことを特徴とする請求項１４または１５に記載の通信システム。
【請求項１７】
任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、
上記送信ノードは、ファイルシステムを具備するとともに、当該ファイルシステムを上記シリアルバスを介してアシンクロナス転送により上記受信ノードに提供し、
上記制御データは、単一のデータ送信により上記ファイルシステムとの論理的な接続を行うための制御データを含むことを特徴とする通信システム。
【請求項１８】
上記制御データは、上記ファイルシステムと上記受信ノードとの接続制御にて排他制御を行うための制御データを含むことを特徴とする請求項１７に記載の通信システム。
【請求項１９】
上記制御ノードと上記受信ノードとが、同一のノードであることを特徴とする請求項１０〜１８の何れか１項に記載の通信システム。
【請求項２０】
シリアルデータを送受信可能なシリアルバスを介して、データを受信する受信ノードに接続された端末装置であって、
上記シリアルバスを介してデータを送信するための送信手段と、
上記送信手段にデータを出力可能な出力手段を有するとともに、制御データに基づいて制御可能な所定の機能を有する機能動作手段と、
上記送信手段と上記出力手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御可能な通信路制御手段とを備えることを特徴とする端末装置。
【請求項２１】
上記単一の制御命令を用いて送信される制御データは、上記送信手段と上記出力手段との接続状態の制御にて排他制御を行うためのデータを含むことを特徴とする請求項２０に記載の端末装置。
【請求項２２】
シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードに接続された端末装置であって、
上記シリアルバスを介してデータを受信するための受信手段と、
上記受信手段で受信したデータを入力可能な入力手段を有するとともに、制御データに基づいて制御可能な所定の機能を有する機能動作手段と、
上記受信手段と上記入力手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御可能な通信路制御手段とを備えることを特徴とする端末装置。
【請求項２３】
上記単一の制御命令を用いて送信される制御データは、上記受信手段と上記入力手段との接続状態の制御にて排他制御を行うためのデータを含むことを特徴とする請求項２２に記載の端末装置。
【請求項２４】
シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムの制御方法であって、
上記送信ノードが備える、所定の機能を有する機能動作手段からデータを出力するための出力手段と、上記シリアルバスを介してデータを外部に送信するための送信手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御することを特徴とする通信システムの制御方法。
【請求項２５】
上記送信手段と上記出力手段との接続状態の制御にて、上記単一の制御命令を用いて送信された制御データに基づき排他制御を行うことを特徴とする請求項２４に記載の通信システムの制御方法。
【請求項２６】
シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムの制御方法であって、
上記受信ノードが備える、所定の機能を有する機能動作手段にデータを入力するための入力手段と、上記シリアルバスを介してデータを外部から受信するための受信手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御することを特徴とする通信システムの制御方法。
【請求項２７】
上記受信手段と上記入力手段との接続状態の制御にて、上記単一の制御命令を用いて送信された制御データに基づき排他制御を行うことを特徴とする請求項２６に記載の通信システムの制御方法。
【請求項２８】
シリアルデータを送受信可能なシリアルバスを介してデータを受信する受信ノードに接続された送信ノードが備える、所定の機能を有する機能動作手段からデータを出力するための出力手段と、上記シリアルバスを介してデータを外部に送信するための送信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させるためのプログラム。
【請求項２９】
上記単一の制御命令を用いて送信された制御データに基づいて、さらに上記送信手段と上記出力手段との接続状態の排他制御をコンピュータに実行させるための請求項２８に記載のプログラム。
【請求項３０】
シリアルデータを送受信可能なシリアルバスを介してデータを送信する送信ノードに接続された受信ノードが備える、所定の機能を有する機能動作手段にデータを入力するための入力手段と、上記シリアルバスを介してデータを外部から受信するための受信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させるためのプログラム。
【請求項３１】
上記単一の制御命令を用いて送信された制御データに基づいて、さらに上記受信手段と上記入力手段との接続状態の排他制御をコンピュータに実行させるための請求項３０に記載のプログラム。
【請求項３２】
シリアルデータを送受信可能なシリアルバスを介してデータを受信する受信ノードに接続された送信ノードが備える、所定の機能を有する機能動作手段からデータを出力するための出力手段と、上記シリアルバスを介してデータを外部に送信するための送信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項３３】
上記単一の制御命令を用いて送信された制御データに基づいて、さらに上記送信手段と上記出力手段との接続状態の排他制御をコンピュータに実行させるためのプログラムを記録したことを特徴とする請求項３２に記載のコンピュータ読み取り可能な記録媒体。
【請求項３４】
シリアルデータを送受信可能なシリアルバスを介してデータを送信する送信ノードに接続された受信ノードが備える、所定の機能を有する機能動作手段にデータを入力するための入力手段と、上記シリアルバスを介してデータを外部から受信するための受信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項３５】
上記単一の制御命令を用いて送信された制御データに基づいて、さらに上記受信手段と上記入力手段との接続状態の排他制御をコンピュータに実行させるためのプログラムを記録したことを特徴とする請求項３４に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、端末装置、通信システムの制御方法、記録媒体およびプログラムに関し、特に、制御信号とデータとを混在させて通信可能なデータ通信バスを介して、複数の電子機器を通信可能なように接続し、各機器間でデータ通信を行う通信システムに用いて好適なものである。
【背景技術】
【０００２】
パーソナル・コンピュータ（以下、「ＰＣ」と称す。）の周辺機器の中で、ハードディスクやプリンタは利用頻度が高く、小型コンピュータ用汎用型インターフェースで代表的なデジタルインターフェース（以下、「デジタルＩ／Ｆ」と称す。）であるＳＣＳＩ（Small Computer System Interface）等を用いてＰＣに対して接続され、データ通信が行われている。また、デジタルカメラやデジタルビデオカメラ等の画像記録再生装置も、ＰＣとの間でデータ通信可能な周辺機器の１つであり、近年、画像記録再生装置により撮影した映像（静止画像や動画像）をＰＣに取り込んで、ハードディスクに記憶保存したり、またはＰＣを用いて編集した後、プリンタでカラー印刷したりする技術が発達し、画像記録再生装置により撮影した映像を保存、編集するユーザーも増加している。
【０００３】
上述のように、取り込んだ画像データをＰＣからプリンタやハードディスクに出力する際などには、上記ＳＣＳＩ等のデジタルＩ／Ｆを介してデータ通信が行われるので、画像データのようにデータ量が多い情報を送るためにも、転送データレートが高く、かつ汎用性を有するデジタルＩ／Ｆが必要とされる。このような要望に応えるものとして、ＩＥＥＥ１３９４規格に準拠したデータ通信バス（以下、「１３９４シリアルバス」と称す。）がある。
【０００４】
以下に、１３９４シリアルバスの概要について説明する。
家庭用デジタルＶＴＲやＤＶＤの登場に伴い、ビデオデータやオーディオデータ等のリアルタイム性が要求され、かつ情報量が多いデータを、リアルタイムで転送して、ＰＣに取り込んだり、その他のデジタル機器に転送したりするには、高速データ転送可能なデジタルＩ／Ｆが必要である。そのような観点から開発されたデジタルＩ／Ｆ規格の１つが、ＩＥＥＥ１３９４−１９９５規格（High Performance Serial Bus）である。
【０００５】
１３９４シリアルバスにおける各機器間の接続方式は、デイジーチェーン方式とノード分岐方式とを混在可能としたものであり、高い自由度で各機器を接続することができる。また、各機器は、固有のノードＩＤをそれぞれ有し、互いに認識し合うことによって、１３９４シリアルバスを介して接続された範囲において１つのネットワークを構成する。各機器間をそれぞれ１本の１３９４シリアルバスケーブルで順次接続するだけで、それぞれの機器が中継の役割を担い、全体として１つのネットワークを構成するものである。
【０００６】
また、機器の電源を入れたままケーブルを抜き差しできる、いわゆるホットスワップ機能や、１３９４シリアルバスのケーブルを機器に接続した時点で、機器や接続状況等を自動的に認識する、いわゆるプラグ・アンド・プレイ機能を有している。
【０００７】
１３９４シリアルバスは、全体としてレイヤ（階層）構造で構成されている。１３９４シリアルバスにおいて、最もハードウェア的であるのが１３９４シリアルバスのケーブルであり、そのケーブルのコネクタが接続されるコネクタポートがある。その上階層には、ハードウェアとして物理レイヤとリンク・レイヤとがある。さらに、その上には、通常はソフトウェアとして構成されるトランザクション・レイヤおよびアプリケーション・レイヤがある。
【０００８】
１３９４シリアルバスの接続ケーブルは、２組のツイストペア信号線に加え、電源線を設けている。これにより、電源を備えない機器や、故障等により電源電圧が低下した機器等にも電力を供給することが可能になっている。電源線内を流れる電源の電圧は８〜４０Ｖ、電流は最大電流ＤＣ１．５Ａと規定されている。
【０００９】
１３９４シリアルバスにおけるハードウェア部は、実質的なインターフェースチップ（ＩＣ等）の部分であり、ハードウェア部の物理レイヤは、符号化やコネクタ関連の制御等を行い、リンク・レイヤはパケット転送やサイクルタイムの制御等を行う。また、ファームウェア部のトランザクション・レイヤは、転送（トランザクション）すべきデータの管理を行い、読み出し（Read）や書き込み（Write）等の命令を出す。シリアルバスマネージメントは、接続されている各機器の接続状況やノードＩＤの管理を行い、ノード制御やネットワーク構成を管理する部分である。
【００１０】
また、データ転送速度は１００／２００／４００Ｍｂｐｓが規定されており、データ転送速度が機器間で異なる場合には、上位の転送速度を有する機器が下位の転送速度をサポートして互換をとる。データ転送モードは、制御信号（制御データ）等のアシンクロナスデータを転送するアシンクロナス（Asynchronous）転送モード、およびリアルタイムなビデオデータやオーディオデータ等のアイソクロナスデータを転送するアイソクロナス（Isochronous）転送モードがある。アシンクロナスデータとアイソクロナスデータとは、各サイクル（通常１サイクルは１２５μｓ）の開始を示すサイクル・スタート・パケット（ＣＳＰ）の転送に続いて、アイソクロナスデータの転送を優先しつつ各サイクル内で混在して転送可能である。
【００１１】
上述したように１３９４シリアルバスでは、接続されている各機器（ノード）はノードＩＤを与えられ、ネットワーク構成として認識されている。ここで、例えば、ケーブルの挿抜や電源のＯＮ／ＯＦＦ操作等によるノード数の増減などによりネットワーク構成に変化が生じ、ネットワーク構成を新たに認識する必要が生じたとする。このとき、変化を検知したノードは１３９４シリアルバス上にバスリセット信号を送信し、新たなネットワーク構成を認識する動作モードに入る。なお、ネットワーク構成の変化の検知方法は、１３９４ポート基板上でのバイアス電圧の変化を検知することにより行われる。
【００１２】
各ノードの物理レイヤは、１３９４シリアルバスを介してあるノードから伝達されたバスリセット信号を受信すると同時にリンク・レイヤにバスリセットの発生を伝達するとともに、他のノードにバスリセット信号を伝達する。最終的に、すべてのノードがバスリセット信号を検知した後、バスリセットが起動となる。
【００１３】
バスリセットは、上述したようなケーブルの挿抜や通信異常等のハードウェア検出による起動に限らず、プロトコルからのホスト制御等により物理レイヤに対して命令を直接出すことによっても起動する。また、バスリセットが起動すると、１３９４シリアルバスを介したデータ転送は、一時中断されてバスリセットの間のデータ転送は待たされる。そして、バスリセット終了後に、新しいネットワーク構成のもとでデータ転送が再開される。以上がバスリセットのシーケンスである。
【非特許文献１】IEEE Std 1394-1995, IEEE Standard for a High Performance Serial Bus, Institute of Electrical and Electronics Engineers, Inc.
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ここで、上述した従来例においては、記録または記憶されたファイルや、ファイルの持つ属性データを、アイソクロナスデータを用いて高速に転送することが可能である。しかしながら、このアイソクロナス転送の場合にはデータ転送の確実性は保証されない。また、データ転送の確実性が保証されているアシンクロナスデータを用いたアシンクロナス転送では、記録または記憶されたファイルや、ファイルの持つ属性データを転送するためのメカニズムが定義されていないという問題点があった。
【００１５】
本出願人は、上記問題点を解決するための１つの方法を提案しているが、上記方法においては、機器内部の複数の機能ブロックと当該機器の入出カポートとの接続手順、および機器間の接続手順を別にそれぞれ設ける必要があり、接続手順が煩雑であった。また、上記方法においては、上記機器内部の複数の機能ブロックと当該機器の入出カポートとの接続、および機器間の接続に関して、排他制御が不可能であった。
【００１６】
本発明は、上記問題点に鑑みて成されたものであり、簡便な接続手順で、高速なデータ転送が可能であるとともにデータ転送の確実性が保証できる通信システムを提供することを目的とする。また、機器内部の複数の機能ブロックと当該機器の入出カポートとの接続、および機器間の接続にて排他制御できるようにすることを目的とする。
【課題を解決するための手段】
【００１７】
本発明の通信システムは、シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムであって、任意の制御データを出力する制御手段を備え、上記送信ノードは、上記シリアルバスを介してデータを送信するための送信手段と、上記送信手段にデータを出力可能な出力手段を有するとともに、上記制御手段からの制御データにより制御可能な所定の機能を有する機能動作手段と、上記送信手段と上記出力手段との接続状態を制御する通信路制御手段とを備え、上記制御データは、単一の制御命令を用いて送信可能な上記送信手段と上記出力手段との接続状態を制御するための制御データを含むことを特徴とする。
【００１８】
本発明の通信システムの他の特徴とするところは、シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムであって、任意の制御データを出力する制御手段を備え、上記受信ノードは、上記シリアルバスを介してデータを受信するための受信手段と、上記受信手段で受信したデータを入力可能な入力手段を有するとともに、上記制御手段からの制御データにより制御可能な所定の機能を有する機能動作手段と、上記受信手段と上記入力手段との接続状態を制御する通信路制御手段とを備え、上記制御データは、単一の制御命令を用いて送信可能な上記受信手段と上記入力手段との接続状態を制御するための制御データを含むことを特徴とする。
【００１９】
本発明の通信システムのその他の特徴とするところは、任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、上記送信ノードは、上記制御データの一部により制御可能であるとともに、データを出力するための出力手段をそれぞれ備えた所定の機能を有するｎ個（ｎは自然数）の機能動作手段と、上記シリアルバスを介してアシンクロナス転送によりデータを送信するための送信手段とを具備し、上記受信ノードは、上記シリアルバスを介してアシンクロナス転送により上記データを受信するための受信手段を具備し、上記制御ノードは、単一のデータ送信により上記出力手段と上記送信手段との間のデータ送信路を確保するためのデータを含む上記制御データを上記送信ノードに送信することを特徴とする。
【００２０】
本発明の通信システムのその他の特徴とするところは、任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、上記送信ノードは、上記シリアルバスを介してアシンクロナス転送によりデータを送信するための送信手段を具備し、上記受信ノードは、上記制御データの一部により制御可能であるとともに、データを入力するための入力手段をそれぞれ備えた所定の機能を有するｍ個（ｍは自然数）の機能動作手段と、上記シリアルバスを介してアシンクロナス転送により上記データを受信するための受信手段とを具備し、上記制御ノードは、単一のデータ送信により上記入力手段と上記受信手段との間のデータ受信路を確保するためのデータを含む上記制御データを上記受信ノードに送信することを特徴とする。
【００２１】
本発明の通信システムのその他の特徴とするところは、任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、上記送信ノードは、データを記録するための記録手段と、上記記録手段に記録されているデータを上記シリアルバスを介してアシンクロナス転送により送信するための送信手段とを具備し、上記受信ノードは、上記送信ノードから送信されたデータを受信するための受信手段を具備し、上記制御データは、単一のデータ送信により上記記録手段と上記送信手段との論理的な接続を行うための制御データを含むことを特徴とする。
【００２２】
本発明の通信システムのその他の特徴とするところは、任意の制御データを送信する制御ノードと、上記制御データを受信する送信ノードおよび受信ノードとがシリアルデータを送受信するためのシリアルバスを介して接続された通信システムであって、上記送信ノードは、ファイルシステムを具備するとともに、当該ファイルシステムを上記シリアルバスを介してアシンクロナス転送により上記受信ノードに提供し、上記制御データは、単一のデータ送信により上記ファイルシステムとの論理的な接続を行うための制御データを含むことを特徴とする。
【００２３】
本発明の端末装置は、シリアルデータを送受信可能なシリアルバスを介して、データを受信する受信ノードに接続された端末装置であって、上記シリアルバスを介してデータを送信するための送信手段と、上記送信手段にデータを出力可能な出力手段を有するとともに、制御データに基づいて制御可能な所定の機能を有する機能動作手段と、上記送信手段と上記出力手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御可能な通信路制御手段とを備えることを特徴とする。
【００２４】
本発明の端末装置の他の特徴とするところは、シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードに接続された端末装置であって、上記シリアルバスを介してデータを受信するための受信手段と、上記受信手段で受信したデータを入力可能な入力手段を有するとともに、制御データに基づいて制御可能な所定の機能を有する機能動作手段と、上記受信手段と上記入力手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御可能な通信路制御手段とを備えることを特徴とする。
【００２５】
本発明の通信システムの制御方法は、シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムの制御方法であって、上記送信ノードが備える、所定の機能を有する機能動作手段からデータを出力するための出力手段と、上記シリアルバスを介してデータを外部に送信するための送信手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御することを特徴とする。
【００２６】
本発明の通信システムの制御方法の他の特徴とするところは、シリアルデータを送受信可能なシリアルバスを介して、データを送信する送信ノードと、上記送信ノードから送信されたデータを受信する受信ノードとが接続された通信システムの制御方法であって、上記受信ノードが備える、所定の機能を有する機能動作手段にデータを入力するための入力手段と、上記シリアルバスを介してデータを外部から受信するための受信手段との接続状態を、単一の制御命令を用いて送信された制御データに基づいて制御することを特徴とする。
【００２７】
本発明のプログラムは、シリアルデータを送受信可能なシリアルバスを介してデータを受信する受信ノードに接続された送信ノードが備える、所定の機能を有する機能動作手段からデータを出力するための出力手段と、上記シリアルバスを介してデータを外部に送信するための送信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させることを特徴とする。
【００２８】
本発明のプログラムの他の特徴とするところは、シリアルデータを送受信可能なシリアルバスを介してデータを送信する送信ノードに接続された受信ノードが備える、所定の機能を有する機能動作手段にデータを入力するための入力手段と、上記シリアルバスを介してデータを外部から受信するための受信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させることを特徴とする。
【００２９】
本発明のコンピュータ読み取り可能な記録媒体は、シリアルデータを送受信可能なシリアルバスを介してデータを受信する受信ノードに接続された送信ノードが備える、所定の機能を有する機能動作手段からデータを出力するための出力手段と、上記シリアルバスを介してデータを外部に送信するための送信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させるためのプログラムを記録したことを特徴とする。
【００３０】
本発明のコンピュータ読み取り可能な記録媒体の他の特徴とするところは、シリアルデータを送受信可能なシリアルバスを介してデータを送信する送信ノードに接続された受信ノードが備える、所定の機能を有する機能動作手段にデータを入力するための入力手段と、上記シリアルバスを介してデータを外部から受信するための受信手段との接続状態の制御を、単一の制御命令を用いて送信された制御データに基づいてコンピュータに実行させるためのプログラムを記録したことを特徴とする。
【発明の効果】
【００３１】
本発明によれば、単一のデータ送信によりノード内部の接続を制御する制御データを含む制御データを送信するようにしたので、単一のデータ送信で機器間の接続および機器内部での接続を同時に制御することができ、簡単な接続手順で、高速なデータ転送が可能であるとともにデータ転送の確実性が保証できる通信システムを実現することができる。
【００３２】
また、単一のデータ送信により機器間の接続および機器内部での接続に関し排他制御を行うための制御データを送信するようにしたので、機器間の接続および機器内部での接続の双方の制御に関して、効率良く排他制御を行うことができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施形態を図面に基づいて説明する。
図１は、本発明の一実施形態による通信システムの一構成例を示すブロック図であり、各機能ブロックの電気的接続構成をも示している。図１において、１００はプリンタ、２００は電子スチルカメラであり、ＩＥＥＥ１３９４シリアルバスのケーブル（以下、「１３９４ケーブル」とも称す。）１０を介して通信可能なように接続されている。
【００３４】
各機器の構成について説明する。プリンタ１００は、通信部１０１、通信補助部１０２、画像処理部１０３、着脱可能記録部１０４、表示部１０５、制御部１０６、操作部１０７、メモリ１０８および印刷出力部１０９により構成され、各ブロックは制御を行うためのコントロールバス１１０とデータを伝送するためのデータバス１１１とにより接続されている。
【００３５】
通信部１０１は、ＩＥＥＥ１３９４規格に準拠した通信方式により１３９４ケーブル１０を介して外部の機器（例えば、電子スチルカメラ２００）等との間で通信を行うためのものである。通信補助部１０２は、ＩＥＥＥ１３９４規格準拠の通信方式にプリンタ１００内部の情報を変換するためのものである。
【００３６】
画像処理部１０３は、１３９４ケーブル１０を介してプリンタ１００に送られてきたデータや、着脱可能記録部１０４に記録されているデータを印刷出力できるように、上記データに画像処理を施す。着脱可能記録部１０４は、プリンタ１００に限らず、別の機器に接続してデータを記録したり、読み出したりすることも可能であり、表示部１０５は、ユーザーがプリンタ１００を操作する際に操作の補助になる情報を提示する。
【００３７】
制御部１０６は、プリンタ１００全体の制御を行う。操作部１０７は、ユーザーがプリンタ１００を実際に操作するためのものであり、メモリ１０８は画像処理部１０３にて印刷出力用に画像処理が施されたデータを一時的に記録しておき、印刷出力部１０９は、画像処理が施されたデータを印刷出力する。
【００３８】
電子スチルカメラ２００は、通信部２０１、通信補助部２０２、画像処理部２０３、着脱可能記録部２０４、表示部２０５、制御部２０６、操作部２０７、メモリ２０８および撮像部２０９により構成され、各ブロックは制御を行うためのコントロールバス２１０とデータを伝送するためのデータバス２１１とにより接続されている。
【００３９】
通信部２０１は、ＩＥＥＥ１３９４規格に準拠した通信方式により１３９４ケーブル１０を介して外部の機器（例えば、プリンタ１００）等との間で通信を行うためのものである。通信補助部２０２は、ＩＥＥＥ１３９４規格準拠の通信方式に電子スチルカメラ２００内部の情報を変換するためのものである。
【００４０】
画像処理部２０３は、撮像部２０９によって得られたデータに画像処理を施し、画像として認識できる状態にする。着脱可能記録部２０４は、電子スチルカメラ２００に限らず、別の機器に接続してデータを記録したり、読み出したりすることが可能であり、表示部２０５は、ユーザーが電子スチルカメラ２００を操作する際に操作の補助になる情報を提示する。
【００４１】
制御部２０６は、電子スチルカメラ２００全体の制御を行う。操作部２０７は、ユーザーが電子スチルカメラ２００を実際に操作するためのものであり、メモリ２０８は画像処理が施されたデータを一時的に記録するためのものである。撮像部２０９は、被写体像を撮影し電気的信号として得るためのものである。
【００４２】
次に、１３９４シリアルバスを介して電子スチルカメラ２００からプリンタ１００に画像データを転送し、プリンタ１００にて印刷出力する際の各機器の動作について説明する。
【００４３】
電子スチルカメラ２００にて、ユーザーが表示部２０５で被写体像を確認しながら操作部２０７によって撮影を促す操作を行うと、制御部２０６は被写体像を撮影するように撮像部２０９を制御する。撮像部２０９により得られた画像データは、データバス２１１を介してメモリ２０８に一時的に記録される。さらに、メモリ２０８に記録された画像データは、画像処理部２０３にて画像処理が施された後、データバス２１１を介して着脱可能記録部２０４にファイルとして記録される。
【００４４】
着脱可能記録部２０４に記録された画像データに係る画像は、ユーザーが操作部２０７により再生操作を行うことで表示部２０５に表示することも可能であるし、電子スチルカメラ２００から着脱可能記録部２０４を切り離してＰＣ等に接続することで再生（表示）することも可能である。
【００４５】
また、着脱可能記録部２０４に記録された画像データは、通信部２０１を介して１３９４シリアルバス経由でプリンタ１００に送信して印刷出力することも可能である。この場合には、電子スチルカメラ２００は、データ伝送を保証するためにＩＥＥＥ１３９４規格に準拠した通信方式で通信を行わなければならない。本実施形態では、ＡＶ／Ｃ Compatible Asynchronous Serial Bus Connections規格（1394 Trade Association）、およびＡＶ／Ｃ Commands for Management of Asynchronous Serial Bus Connections規格（1394 Trade Association）を利用してデータ転送を行う。以下、上記二つの転送方法（規格）を総称して「アシンクロナスコネクション（Asynchronous Connection）」と称す。通信部２０１は、上記アシンクロナスコネクションを行う手段を有しており、これによりデータ転送が保証される。
【００４６】
プリンタ１００に転送し印刷する画像の画像データは、電子スチルカメラ２００の表示部２０５に表示される着脱可能記録部２０４に記録された画像データの中から操作部２０７を用いて選択される。選択された画像データは、１３９４シリアルバス経由でプリンタ１００に伝送されるが、画像データを伝送する前に、プリンタ１００を制御するためのコマンドが電子スチルカメラ２００からプリンタ１００に送信される。
【００４７】
送信されたコマンドは、プリンタ１００の通信部１０１を介して制御部１０６に転送され、制御部１０６はプリンタ１００をデータ受信待ち状態に制御する。その後、選択された画像データが電子スチルカメラ２００の通信部２０１を介してアシンクロナスコネクションによりプリンタ１００に伝送される。データ受信待ち状態のプリンタ１００は、電子スチルカメラ２００から送信されてくる画像データを受信すると、データバス１１１を介してメモリ１０８に一時的に記録する。メモリ１０８に記録された画像データは、画像処理部１０３にて印刷出力用に画像処理が施され、印刷出力部１０９によって出力される。
【００４８】
上述した説明は、電子スチルカメラ２００からプリンタ１００に画像データを伝送して印刷するプッシュモデルである。
以下に、プリンタ１００が電子スチルカメラ２００に記録された画像を選択して、１３９４シリアルバス経由で取得し印刷する際の動作について説明する。
【００４９】
電子スチルカメラ２００の通信補助部２０２は、着脱可能記録部２０４にファイルとして記録されている画像データに関するファイル情報を読み出し、所定のファイルシステムにマッピングを行う。通信補助部２０２により表現される上記ファイルシステムは、１３９４シリアルバスを介して外部の機器から参照することができる。すなわち、１３９４シリアルバスを介して接続された各機器は、通信補助部２０２を各機器に実装しておくことで、各機器における記録媒体の記録方式が異なっていたとしても１３９４シリアルバス上では同様のファイルシステムとして取り扱うことが可能になる。
【００５０】
図２は、本実施形態における上記ファイルシステムの構成例を示す図である。なお、この図２において、図１に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。
【００５１】
電子スチルカメラ２００にて撮影された画像が、上記図１に示した着脱可能記録部２０４に記録形式Ａ２−１で記録されている。通信補助部２０２は、記録形式Ａ２−１で記録されているファイル情報を、図２に示すような予め定められた形式の情報形態（ファイルフォーマット）に変換して、変換により得られたファイル情報２−５を内部メモリ２−６に一時的に記録しておく。
【００５２】
そして、プリンタ１００の操作部１０７にて所定の操作を行い、電子スチルカメラ２００が有するファイル情報を取得するためのコマンドをプリンタ１００から電子スチルカメラ２００に送信する。これにより、プリンタ１００は、通信補助部２０２の内部メモリ２−６に保持するファイル情報２−５を１３９４シリアルバス経由で取得することができる。また、仮に記録形式Ａ２−１とは異なる記録形式Ｂ２−２、記録形式Ｃ２−３、もしくは記録形式Ｄ２−４で電子スチルカメラ２００の着脱可能記録部２０４にファイル情報が記録されていたとしても、プリンタ１００は同一のファイルフォーマットのファイル情報２−５として認識することができる。
【００５３】
上述のようにして取得したファイル情報は、プリンタ１００の表示部１０５に表示され、ユーザーは操作部１０７を用いて印刷したい画像を選択する。上記選択に応じて、プリンタ１００は、選択された画像の画像データを取得するためのコマンドを電子スチルカメラ２００に送信する。同時に、プリンタ１００内部では、１３９４シリアルバス経由で画像データを受信し印刷するためにデータ受信待ち状態になる。
【００５４】
電子スチルカメラ２００は、上記画像データの取得を要求するコマンドを受信すると、アシンクロナスコネクションによりプリンタ１００に対して画像データの伝送を行う。プリンタ１００は、電子スチルカメラ２００からの画像データを受信すると、当該画像データをメモリ１０８に一時的に記録し、画像処理部１０３にて印刷出力用に画像処理を施した後、印刷出力部１０９によって出力する。
【００５５】
次に、上記図１に示した着脱可能記録部１０４、２０４のような記録デバイス（記録媒体）に記録されたファイルヘのアクセス手段について説明する。
【００５６】
＜ファイルシステムのデータ構造＞
本実施形態における記録デバイスでは、指定されたファイルにアクセスする際にファイルパス（file_path）を用いる。上記ファイルパスは、可変長のデータであり、例えば、ルートディレクトリからのフルパス名である。また、上記ファイルパスでは、例えば、ディレクトリのデリミタとして”／”の文字（“5C16”）（下付の添え字“16”は１６進数表記であることを示す。以下についても同様である。）を用いるとともに、ターミネータとしてＮＵＬＬ（ヌル）文字（“0016”）を用いる。
【００５７】
上記ファイルパスのデータ長は、ファイルパス長（file_path_length）により示され、当該ファイルパス長には、最後のＮＵＬＬ文字の長さは含まれない。
上記ファイルパスデータおよびファイルパス長データは、後述するファイルアクセスコマンドセットにて使用される。
【００５８】
本実施形態における記録デバイスからファイルの情報を取得する側のデバイス（以下、「コントローラ」と称す。）は、ファイルの情報を取得するために、記録デバイスに対してファイルリストを要求する。上記ファイルリストは、上記ファイルリストを要求するコマンドのレスポンスとして、記録デバイスからコントローラに転送される。ここで、ファイルリストは、複数のディレクトリエントリと、各ディレクトリエントリが保持しているファイルあるいはディレクトリの情報とを含む。また、ファイルリストのディレクトリエントリは、例えばサイズが２０バイトであり、図３に示すようなデータ構造を有する。
【００５９】
図３は、本実施形態におけるディレクトリエントリのデータ構造の一例を示す図である。図３に示したディレクトリエントリの各フィールドは、例えば、ＤＯＳ（disk operating system）−ＦＡＴ（file allocation table）システムとして知られているデータ構造と同様のデータ構造を有している。しかしながら、上記図３に示したディレクトリエントリでは、ＤＯＳ−ＦＡＴシステムのようなカレントディレクトリおよび親ディレクトリ情報は保持していない。
【００６０】
図３において、最初の１１バイト（アドレスオフセット値“0016”〜“0A16”）のフィールドは、名前（name）フィールド３０１および拡張子（extension）フィールド３０２であり、ファイルの名前を示す。上記２つのフィールド３０１、３０２により、例えば、上述したＤＯＳ−ＦＡＴシステムにおけるファイル名８文字と拡張子３文字とを形成することができる。上記記録デバイスに保持されているファイルの名前または拡張子が、上記２つのフィールド長よりも小さい場合には、例えば、パディングバイト（padding byte）が詰められる。上記パディングバイトの値は、例えば“2016”である。
【００６１】
次の１バイト（アドレスオフセット値“0B16”）のフィールドは、属性（attribute_byte）フィールド３０３であり、ファイルの属性情報を示す。属性フィールド３０３は、図４に示すようなビットフィールドを含む。
【００６２】
図４は、属性フィールド３０３の構成を示す図であり、ディレクトリ（directory）ビット４０１は、当該ディレクトリエントリがサブディレクトリか否かを示す。例えば、ディレクトリビット４０１が“１”にセットされている時には、当該ディレクトリエントリはサブディレクトリである。また、リード・オンリ（read_only）ビット４０２は、当該ディレクトリエントリ内のファイルに対して読み出しのみが可能であり、書き込み／消去が不可能であるか否かを示す。例えば、リード・オンリビット４０２が“１”にセットされている時には、ファイルは読み出し専用である。なお、図４において、複数のイグノア（ignored）ビットは、当該記録デバイスがいかなる値を書き込んでも、コントローラに無視されるようになっている。
【００６３】
図３に戻り、更新時間（modification_time）フィールド３０４（アドレスオフセット値“0C16”、“0D16”）、および更新日付（modification_date）フィールド３０５（アドレスオフセット値“0E16”、“0F16”）は、ファイルの最新更新日時を示す。また、ファイルサイズ（file_size）フィールド３０６（アドレスオフセット値“1016”〜“1316”）は、ファイル長（単位はバイト）を示す。
【００６４】
本実施形態においては、複数の記録メディアと、当該記録メディア上の複数に分割されたいわゆるパーティションとを取り扱うことができる。上記記録メディアを、例えば「物理ボリューム」と称すると共に、上記パーティションを、例えば「論理ボリューム」と称する。
【００６５】
本実施形態では、上記物理ボリュームの指定を物理ボリューム番号（physical_volume_number）データにて行い、上記論理ボリュームの指定を論理ボリューム番号（logical_volume_number）データにて行う。コントローラは、上記物理ボリューム番号および論理ボリューム番号により記録デバイス上の特定エリアを指定することができる。上記物理ボリューム番号および論理ボリューム番号は、後述するファイルアクセスコマンドセットにて使用される。
【００６６】
上記物理ボリューム番号データは、例えば“0016”から“FE16”の値をとり、最初の物理ボリューム番号は“0016”の値をとる。“FF16”の値は、例えば特別であり、上記物理ボリューム番号値は後述するファイルアクセスコマンドセットに応じて意味付けが異なる。
【００６７】
上記論理ボリューム番号データは、例えば“0016”から“FE16”の値をとり、最初の論理ボリューム番号は“0016”の値をとる。“FF16”の値は、例えば特別であり、上記論理ボリューム番号値は後述するファイルアクセスコマンドセットに応じて意味付けが異なる。
【００６８】
なお、本実施形態では、上記物理ボリューム番号および論理ボリューム番号の値が“FF16”の場合を例外としているが、“0016”から“FF16”の値をとるように構成しても良い。
【００６９】
本実施形態の記録デバイスでは、記録メディアの交換を通知するのにメディア・カウント（media_generation_count）を用い、記録メディアが記録デバイスに挿入された時に、メディア・カウントの値が“１”だけ増加される。なお、記録デバイスが複数の物理ボリュームをサポートしている場合には、各物理ボリュームに対して固有のメディア・カウントを有する。
【００７０】
電源投入等により記録デバイスが初期化された時には、上記メディア・カウントは初期化される。なお、メディア・カウントの初期値は、記録デバイスに固有の値であり、例えば、零であっても良く、乱数であっても良い。また、記録デバイスが、電源切断時等にフラッシュメモリやその他の不揮発性メモリ等にメディア・カウントの値を記憶させることができる場合には、次の初期化の際の初期値として記憶したメディア・カウントの値を使用するようにしても良い。本実施形態では、上記メディア・カウントは１バイトのデータであり、バスリセットが発生した場合にはメディア・カウントの値は保持されるようになっている。
【００７１】
コントローラは、記録デバイスに記録メデイアが挿入され、メディア・カウントの値が増加したことを検出すると、上述したファイルリストを再取得する。本実施形態における記録デバイスでは、記録メデイアの抜去によりメディア・カウントの値が増加することがないので、記録メディアの抜去により新たなファイルリストの取得を行う必要がなく、不要なトランザクションを発生させることがない。
【００７２】
＜ファイルアクセスコマンドセット＞
次に、本実施形態のファイルシステムに関するコマンドについて説明する。本実施形態では、コマンドを用いることで、ファイル属性の取得やファイルの転送などのファイルに関する様々な制御を行うことが可能である。
本実施形態のファイルシステムに関するコマンドは、例えば、ＩＥＥＥ１３９４規格で定義されているＦＣＰ（Function Control Protocol）を用いている。
【００７３】
以下、図５を参照してＦＣＰについて説明する。
図５は、ＦＣＰを説明するための概念図である。ＦＣＰは、１３９４シリアルバスを介して接続されたデバイスを制御するためにＩＥＥＥ１３９４規格に基づいて設計されており、種々のコマンドセットとコマンドトランザクションとが、ＦＣＰ上で利用可能である。また、ＦＣＰではコマンドおよびレスポンスを送信する際に、ＩＥＥＥ１３９４規格のアシンクロナスパケット（Asynchronous packet）が用いられる。
【００７４】
ＦＣＰにおいて、他の（複数の）ノードを制御するノードを“コントローラ”と呼び、制御されるノードを“ターゲット”と呼ぶ。図５においては、５００はコントローラ、５１０はターゲットとして動作するようになっている。
【００７５】
また、ＦＣＰにおいては、コントローラからターゲットに送られるＦＣＰフレームを“コマンドフレーム”と呼び、ターゲットからコントローラに送られるＦＣＰフレームを“レスポンスフレーム”と呼ぶ。上記コマンドフレームを受け取る準備をしたレジスタを“コマンドレジスタ”と呼び、上記レスポンスフレームを受け取る準備をしたレジスタを“レスポンスレジスタ”と呼ぶ。図５においては、５０１および５０２は、コントローラ５００上のコマンドレジスタおよびレスポンスレジスタであり、５１１および５１２は、ターゲット５１０上のコマンドレジスタおよびレスポンスレジスタである。
【００７６】
ＦＣＰフレームを用いて送出されるアシンクロナスパケットのデータ構造を図６に示す。
図６において、６０１はデスティネーションＩＤフィールド、６０２はトランザクション・ラベル（tl）フィールド、６０３はリトライコード（rt）フィールド、６０４はトランザクション・コード（tcode）フィールド、６０５はプライオリティ（pri）フィールド、６０６はソースＩＤフィールド、６０７はデスティネーションオフセットフィールド、６０８はデータ長フィールド、６０９は拡張トランザクション・コードフィールド、６１０はヘッダＣＲＣ（header_CRC）フィールド、６１１はデータフィールド（ＦＣＰフレーム）、６１２はデータＣＲＣ（data_CRC）フィールドである。上記アシンクロナスパケットは、例えば４バイト（３２ビット、以下「クアッドレッド」と称す。）を単位とするデータパケットである。
【００７７】
図６に示したアシンクロナスパケットにおいて、最初の１６ビットのフィールドが、デスティネーションＩＤフィールド６０１であり、受信側（送信先）のノードＩＤを示す。次の６ビットのフィールドが、トランザクション・ラベルフィールド６０２であり、各トランザクション固有のタグである。次の２ビットのフィールドが、リトライコードフィールド６０３であり、パケットがリトライを試みるか否かを指定する。
【００７８】
次の４ビットのフィールドが、トランザクション・コードフィールド６０４であり、パケットのフォーマットや実行しなければならないトランザクションのタイプを指定する。本実施形態では、例えば、このフィールドの値が“00012”（下付の添え字“2”は２進数表記であることを示す。以下についても同様である。）である、データブロックの書き込みリクエストのトランザクションを用いる。
【００７９】
次の４ビットのフィールドが、プライオリティフィールド６０５であり、優先順位を指定する。本実施形態ではアシンクロナスパケットを用いているので、このフィールドの値は、例えば“00002”である。
【００８０】
次の１６ビットのフィールドが、ソースＩＤフィールド６０６であり、送信側（送信元）のノードＩＤを示す。次の４８ビットのフィールドが、デスティネーションオフセットフィールド６０７であり、パケットの受信側ノードアドレスの下位４８ビットがこのフィールドによって指定される。
【００８１】
次の１６ビットのフィールドが、データ長フィールド６０８であり、後述するデータフィールド６１１の長さをバイト単位で示す。次の１６ビットのフィールドが、拡張トランザクション・コードフィールド６０９であり、本実施形態にて用いられるデータブロックの書き込みリクエストのトランザクションにおいては、この値は、例えば“000016”である。
【００８２】
次の３２ビットのフィールドが、ヘッダＣＲＣフィールド６１０であり、パケットヘッダ（上述したデスティネーションＩＤフィールド６０１から拡張トランザクション・コードフィールド６０９まで）のエラー検出に用いられる。
【００８３】
次の可変長のフィールドが、データフィールド６１１であり、後述するＣＴＳ（Command／Transaction Set）にて用いられるコマンドフレームおよびレスポンスフレームが詰められる。上記データフィールド６１１を「ペイロード」と称する。本実施形態では、上記データフィールド６１１にてクアッドレットの倍数に満たないビットには、“０”の値が詰められるようになっている。つまり、上記データ長フィールド６０８に格納されるデータ長がバイト（８ビット）単位で示されるとき、当該データ長フィールド６０８の値が“４”の倍数でない場合には、上記データフィールドは、クアッドレットを満たすまで“0016”の値のデータによって埋められる。
【００８４】
最後の３２ビットのフィールドが、データＣＲＣフィールド６１２であり、上述したヘッダＣＲＣフィールド６１０と同様に、上記データフィールド６１１のエラー検出に用いられる。
【００８５】
ＦＣＰにおいて、データブロックの書き込みリクエスト（“Write request for data block packet”）のペイロードであるデータフィールド６１１は、“ＦＣＰフレーム”と呼ばれ、コマンドフレームは、ターゲット上のコマンドレジスタに書き込まれるとともに、レスポンスフレームは、コントローラ上のレスポンスレジスタに書き込まれる。ここで、コマンドレジスタとレスポンスレジスタとは切り離されており、これらのレジスタのデスティネーションオフセットアドレスは、図７に示すようにＦＣＰで規定されている。
【００８６】
本実施形態においては、デスティネーションオフセットアドレスとして、“FFFF F000 0B0016”、および“FFFF F000 0D0016”を含むライトトランザクション（Write transaction）のみが許されている。
【００８７】
ＣＴＳは、コマンドセット、コマンドフィールドとレスポンスフィールドとの構造、およびコマンドとレスポンスとを送出する際に用いられるトランザクションの規則を指定したＦＣＰフレームの一つのコンポーネントである。
【００８８】
ＣＴＳで用いられるＦＣＰフレームのデータ構造を図８に示す。
図８において、８０１はＣＴＳフィールドである。ＣＴＳフィールド８０１は、４ビットのフィールドであり、ＣＴＳフィールド８０１の符号化の一例を図９に示す。本実施形態において、ＣＴＳフィールド８０１の値は、例えば“00002”を用いる。
【００８９】
図１０は、本実施形態におけるコマンドフレームおよびレスポンスフレームのデータ構造を示す図である。
図１０（ａ）は、コマンドフレームのデータ構造を示しており、図１０（ａ）において、１００１はコマンドタイプ（ctype）フィールド、１００２はサブユニットタイプ（subunit_type）フィールド、１００３はサブユニットＩＤ（subunit_ID）フィールド、１００４はオペコード（opcode）である。また、図１０（ａ）において、オペコード１００４以降は、１バイト毎に（ｎ＋１）個（ｎは整数）のオペランド（operand[0]、operand[1]、…、operand[n]）が続く。
【００９０】
４ビットからなるコマンドタイプフィールド１００１は、コマンドのタイプを示す。
図１１は、コマンドタイプフィールド１００１の値とコマンドタイプとの関係の一例を示す図である。
【００９１】
図１１に示すように、コマンドタイプフィールド１００１の値が“00002”（コマンドタイプが“CONTROL”）のコマンドフレームは、コントローラが、ターゲットの制御を行うために用いる。制御内容は、後述するオペコードやオペランドによって指定される。また、コマンドタイプフィールド１００１の値が“00012”（コマンドタイプが“STATUS”）のコマンドフレームは、コントローラが、ターゲットの現在の状態を問い合わせるために用いる。状態の指定は、後述するオペコードやオペランドによって行う。
【００９２】
また、上記コマンドタイプフィールド１００１の値が“00112”（コマンドタイプが“NOTIFY”）のコマンドフレームは、コントローラが、ターゲットの状態が変化したことをターゲットから通知させるために用いる。後述するオペコードやオペランドによって状態の指定を行うことは、上述した“STATUS”コマンドと同様である。
【００９３】
さらに、コマンドタイプフィールド１００１の値が“00102”あるいは“01002”（コマンドタイプが“SPECIFIC INQUIRY”あるいは“GENERAL INQUIRY”）のコマンドフレームは、同じオペコードを有する“CONTROL”コマンドが、ターゲットに実装されているか否かを確認するために用いる。ここで、“SPECIFIC INQUIRY”コマンドの場合には、オペコードと全てのオペランドとを指定しなければならないが、“GENERAL INQUIRY”コマンドの場合には、オペコードのみを指定する。これが、“SPECIFIC INQUIRY”コマンドと“GENERAL INQUIRY”コマンドとの相違点である。
【００９４】
５ビットからなるサブユニットタイプフィールド１００２と、３ビットからなるサブユニットＩＤフィールド１００３とで、コマンドフレームが送られるサブユニット（subunit）を識別する。サブユニットは、ＡＶ／Ｃ Digital Interface Command Set General Specification（March 1998, 1394 Trade Association）規格（以下、「ＡＶ／Ｃコマンドセット規格」と称す。）等で定義されており、ＡＶユニット（以下、単に「ユニット」とも称す。）の中で唯一つに識別されるとともに、首尾一貫した機能のセットを提供する仮想的なエントリーである。上記ユニットも、ＡＶ／Ｃコマンドセット規格にて同様に、定義されている。ＡＶユニットは、１３９４シリアルバスに対して接続されているノードを有する電子デバイスを示す。
【００９５】
上記ＡＶ／Ｃコマンドセット規格によれば、ユニットは、複数のサブユニットを有することができるようになっている。そこで、サブユニットタイプフィールド１００２とサブユニットＩＤフィールド１００３とは、１３９４インターフェースに接続されるユニット中のサブユニットを識別するためのアドレスを示すようになっている。サブユニットタイプフィールド１００２の値とサブユニットのタイプとの関係の一例を図１２に示す。
【００９６】
上記サブユニットタイプフィールド１００２とサブユニットＩＤフィールド１００３とを総合して、「サブユニットアドレス」または「ＡＶ／Ｃアドレス」と称す。なお、上記サブユニットタイプフィールド１００２の値が“111112”で、かつサブユニットＩＤフィールド１００３の値が“0112”の場合には、サブユニットアドレスは、ユニットを示すようになっている。
【００９７】
本実施形態において、プリンタ１００にコマンドフレームを送信する場合には、例えば、サブユニットタイプフィールド１００２に“000102”の値を、サブユニットＩＤフィールド１００３に“0002”の値を指定する。また、本実施形態において、電子スチルカメラ２００のカメラサブユニットにコマンドフレームを送信する場合には、例えば、サブユニットタイプフィールド１００２に“001112”の値を、サブユニットＩＤフィールド１００３に“0002”の値を指定する。
【００９８】
さらに、本実施形態において、電子スチルカメラ２００のファイルシステムを形成する通信補助部２０２は、図１２におけるカメラ・ストレージ・サブユニット（Camera Storage Subunit）として動作する。このため、当該サブユニットにコマンドフレームを送信する場合には、例えば、サブユニットタイプフィールド１００２に“010112”の値を、サブユニットＩＤフィールド１００３に“0002”の値を指定する。
【００９９】
オペコード１００４は、制御内容や後述するレスポンスフレームによって返される状態を定義する。オペコード１００４の後に続く、オペランドの数と意味付けは、上述したコマンドタイプ、サブユニットタイプ、あるいはオペコードに応じて異なる。
【０１００】
図１０（ｂ）は、レスポンスフレームのデータ構造を示す図である。図１０（ｂ）において、図１０（ａ）に示したフィールドと同一の機能を有するフィールドには同一の符号を付し、重複する説明は省略する。図１０（ｂ）において、１００５はレスポンス（response）フィールドであり、レスポンスのタイプを示す。
図１３は、レスポンスフィールド１００５の値とレスポンスタイプとの関係の一例を示す図である。
【０１０１】
本実施形態では、ターゲットとなるサブユニットは、コマンドタイプ、サブユニットアドレス、オペコード、およびオペランドにより構成されるコントローラから送出されたコマンドフレームに対して、適切なレスポンスフレームを発生させてコントローラに返すようになっている。上記レスポンスフレームは、受信したコマンドフレームに応じたレスポンスタイプ、サブユニットアドレス、オペコード、およびオペランドにより構成される。
【０１０２】
次に、本実施形態におけるカメラ・ストレージ・サブユニットのコマンドについて説明する。図１４は、カメラ・ストレージ・サブユニットのコマンドと、カメラ・ストレージ・サブユニットのオペコード値との関係の一例を示す図である。
【０１０３】
カメラ・ストレージ・サブユニットのコマンドは、コントローラからコマンドフレームとして発行される時、およびレスポンスフレームとしてコントローラに返される時に、共通のヘッダ領域（“common frame header”、以下、「共通フレームヘッダ」と称す。）を有する。制御コマンド（control command）（以下、単に「コマンド」とも称す。）における共通フレームヘッダのフォーマットを図１５に示す。なお、図１５においては、コマンドフレーム（command frame）における共通フレームヘッダのフォーマットを一例として示している。
【０１０４】
図１５において、オペコード（opcode）には、上記図１４に示したオペコード値が入力される。また、レスポンスフレーム（response frame）におけるオペコードには、コマンドフレームのオペコードの値と同じ値が入力される。
【０１０５】
第０のオペランド（operand[0]）は、１バイトのサブファンクション（subfunction）フィールドであり、制御コマンドの動作モードを指定する。上記制御コマンドの動作モードとサブファンクションフィールド値との関係を図１６に示す。カメラ・ストレージ・サブユニットが無効なサブファンクションフィールド値が入力されたコマンドフレームを受信した場合には、“NOT IMPLEMENTED”のレスポンス値（レスポンスフィールドの値が“10002”）を有するレスポンスフレームを返す。また、レスポンスフレームにおける第０のオペランドには、コマンドフレームの第０のオペランドの値と同じ値が入力される。
【０１０６】
第１のオペランド（operand[1]）は、１バイトのフィールドであり、固定値“FF16”が入力される。また、レスポンスフレームにおける第１のオペランドには結果コード（result code）が入力されて返される。上記結果コードの符号化の一例を図１７に示す。ここで、カメラ・ストレージ・サブユニットが複数の理由により“REJECTED”レスポンスフレーム（レスポンスフィールドの値が“10102”）を返す場合には、図１７に示した最も小さい値のデータが上記結果コードとして第１のオペランドに入力される。また、カメラ・ストレージ・サブユニットが“INTERIM”レスポンスフレーム（レスポンスフィールドの値が“11112”）を返す場合には、コントローラが発行した固定値と同じ“FF16”が結果コードとして入力される。
【０１０７】
第２のオペランド（operand[2]）は、物理ボリューム番号フィールドであり、物理ボリュームの指定を行う。第３のオペランド（operand[3]）は、論理ボリューム番号フィールドであり、論理ボリュームの指定を行う。また、上述したようにコントローラがこれらのフィールドを用いないことを示す場合には、値“FF16”が入力される。
【０１０８】
ここで、コマンドフレーム内の物理ボリューム番号フィールドの値または論理ボリューム番号フィールドの値が無効な場合には、カメラ・ストレージ・サブユニットは“REJECTED”レスポンスフレームあるいは“NOT IMPLEMENTED”レスポンスフレームを返す。このとき本実施形態では、例えば、以下のように動作する。
【０１０９】
・コマンドフレームで指定された物理ボリューム番号（物理ボリューム番号フィールド値）の記録メディアが存在しない場合には、カメラ・ストレージ・サブユニットは、結果コードとして“no media”（A016）の値が第１のオペランドに入力された“REJECTED”レスポンスフレームを返す。
【０１１０】
・コマンドフレームで指定された論理ボリューム番号（論理ボリューム番号フィールド値）が物理ボリューム内に存在しない場合には、カメラ・ストレージ・サブユニットは、結果コードとして“invalid volume number”（9116）の値が第１のオペランドに入力された“REJECTED”レスポンスフレームを返す。
【０１１１】
・カメラ・ストレージ・サブユニット内に存在しない物理ボリューム番号がコマンドフレームにより指定された場合には、カメラ・ストレージ・サブユニットは“NOT IMPLEMENTED”レスポンスフレームを返す。
【０１１２】
第４のオペランド（operand[4]）は、メディア・カウントフィールドであり、記録メディアの交換を通知するために用いられる。コントローラが上記図１４に示したメディア情報（“MEDIA INFO”）コマンドフレームおよびボリューム情報（“VOLUME INFO”）コマンドフレーム以外のコマンドフレームを発行する場合には、コントローラが保持しているメディア・カウントの値が上記メディア・カウントフィールドに設定される。また、コントローラがメディア情報コマンドフレーム、あるいはボリューム情報コマンドフレームを発行する場合には、上記メディア・カウントフィールドに“FF16”の値が設定される。
【０１１３】
カメラ・ストレージ・サブユニットは、上記メディア情報コマンドフレーム以外のコマンドフレームに対し、自らが保持しているメディア・カウント値を第４のオペランドに設定したレスポンスフレームを返す。このとき、受信したコマンドフレームがメディア情報コマンドフレーム、ボリューム情報コマンドフレーム以外のコマンドフレームであった場合には、カメラ・ストレージ・サブユニットは、自らが保持しているメディア・カウント値とコマンドフレーム内のメディア・カウント値とを比較する。その結果、メディア・カウント値が異なる場合には、カメラ・ストレージ・サブユニットは、結果コードとして“invalid generation count”（9016）の値が第１のオペランドに入力された“REJECTED”レスポンスフレームを返す。
【０１１４】
また、通常は、コントローラがカメラ・ストレージ・サブユニットに任意の制御コマンドフレームを最初に送信する以前に、コントローラはボリューム情報コマンドフレームを発行して現在のメディア・カウント値を取得する。
【０１１５】
図１８は、ファイルリストコマンド（FILE LIST control command）フレームのフォーマットを示す図である。
ファイルリストコマンドフレームにおいて、最初の６バイトのフィールドは、上述した共通フレームヘッダである。
【０１１６】
第５のオペランド（operand[5]）は、ファイルタイプ（file_type）フィールドであり、取得するディレクトリエントリのファイル型を指定する。ファイルタイプフィールド値の定義を図１９に示す。ファイルタイプフィールド値が“0016”（ファイルタイプ“any”）の場合には、返されるディレクトリエントリは任意のファイルあるいはディレクトリを含む。また、ファイルタイプフィールド値が“0116”（ファイルタイプ“still image”）の場合には、返されるディレクトリエントリは静止画像ファイルのみを含む。
【０１１７】
第６のオペランド（operand[6]）の下位２ビットは、属性（attribute）フィールドであり、取得するディレクトリエントリの型を指定する。属性フィールドの定義を図２０に示す。
属性フィールドの下位ビット（“bit0”）が“１”に設定されている時には、カメラ・ストレージ・サブユニットはサブディレクトリを含んだディレクトリエントリを返す。一方、属性フィールドの下位ビットが“０”にクリアされている時には、カメラ・ストレージ・サブユニットはサブディレクトリを含んだディレクトリエントリを返さない。
【０１１８】
また、属性フィールドの上位ビット（“bit1”）が“１”に設定されている時には、カメラ・ストレージ・サブユニットはファイルを含んだディレクトリエントリを返す。一方、属性フィールドの上位ビットが“０”にクリアされている時には、カメラ・ストレージ・サブユニットはファイルを含んだディレクトリエントリを返さない。
さらに、属性フィールドの双方のビットがともに“１”に設定されている時には、カメラ・ストレージ・サブユニットはファイルとサブディレクトリとを含んだディレクトリエントリを返す。
【０１１９】
第７および第８のオペランド（operand[7]およびoperand[8]）は、開始番号（start_number）フィールドを構成し、開始番号フィールドは、取得するディレクトリエントリの開始位置を指定する。開始番号フィールド値は、“０”から始まり、開始番号フィールド値により後述するページングパラメータを指定する。
【０１２０】
第９のオペランド（operand[9]）の最上位ビット（MSB）は、エンド・オブ・リスト（“eol”：end of list）ビットである。レスポンスフレーム内のエンド・オブ・リストビットは、レスポンスフレーム内の最後のディレクトリエントリが、コマンドフレームで指定されたディレクトリの中の最後のディレクトリエントリであるか否かを示す。
【０１２１】
具体的には、レスポンスフレームのエンド・オブ・リストビットの値が“０”にクリアされている場合には、レスポンスフレーム内の最後のディレクトリエントリが、コマンドフレームで指定されたディレクトリの最後のディレクトリエントリでないことを示す。一方、レスポンスフレームのエンド・オブ・リストビットの値が“１”に設定されている場合には、レスポンスフレーム内の最後のディレクトリエントリがコマンドフレームで指定されたディレクトリの最後のディレクトリエントリであることを示す。
【０１２２】
また、コントローラは、エンド・オブ・リストビットを“０”にクリアしてコマンドフレームを発行する。
【０１２３】
第９のオペランドの下位５ビットは、エントリ数（number_of_entries）フィールドであり、コマンドフレームでは取得するディレクトリエントリ数を指定し、レスポンスフレームではレスポンスフレーム内に実際に含まれるディレクトリエントリ数を示す。コマンドフレーム内のエントリ数フィールド値と、その応答としてのレスポンスフレーム内のエントリ数フィールド値とは一致しないことがあり得るが、レスポンスフレーム内のエントリ数フィールド値は、それに対応するコマンドフレーム内のエントリ数フィールド値以下になることが保証されている。
【０１２４】
上記開始番号フィールド、エンド・オブ・リストビット、およびエントリ数フィールドの値に基づいて、ページング機構が提供される。ここで、ページングは、カメラ・ストレージ・サブユニットがレスポンスフレームにより一度に返すことが可能なデータ長に制限があるため、複数のコマンド、レスポンストランザクションによりデータを授受する仕組みである。
【０１２５】
図２１は、ページング動作を示すフローチャートである。なお、図２１においては、コントローラにおけるファイルリスト取得時のページング動作の一例を示している。
図２１において、ステップｓｔｅｐ１にて、本実施形態におけるページング動作が開始されると、ステップｓｔｅｐ２にて、コントローラは、上記開始番号の値を初期化する（例えば、開始番号の値に“０”を入力する）。
【０１２６】
次のステップｓｔｅｐ３にて、コントローラは、上記エントリ数の値を初期化する。ここで、エントリ数の初期値は、コマンドフレームおよびレスポンスフレームの最大バイト数に応じて十分大きな値が入力される。例えば、コマンドフレームおよびレスポンスフレームの最大バイト数が２５６バイトの場合には、エントリ数の初期値として“１２８”等が入力される。
【０１２７】
次に、コントローラは、ステップｓｔｅｐ４にて、ファイルリストコマンドフレームを送信し、ステップｓｔｅｐ５にて、カメラ・ストレージ・サブユニットからのレスポンスフレームを受信する。コントローラは、レスポンスフレーム内の開始番号フィールド、エンド・オブ・リストビット、およびエントリ数フィールドの値をそれぞれ解析して、後に続く動作を決定する。
【０１２８】
まずステップｓｔｅｐ６にて、エンド・オブ・リストビットが検査される。エンド・オブ・リストビットの値が“０”のときには、上述したようにディレクトリエントリが最後に達していないので、さらにディレクトリエントリを取得するために次のステップｓｔｅｐ７に進む。ステップｓｔｅｐ７では、開始番号フィールドの値と、レスポンスフレーム中のエントリ数フィールドの値とを加算して、新たな開始番号値を生成する。
【０１２９】
次のステップｓｔｅｐ８にて、レスポンスフレームから抽出したエントリ数フィールドの値をコマンドフレーム中のエントリ数フィールドに入力する。上述したように、レスポンスフレーム内のエントリ数フィールドの値は、それに対応するコマンドフレーム内のエントリ数フィールドの値以下となることが保証されているとともに、上記ステップｓｔｅｐ３ではコマンドフレーム中のエントリ数フィールドの値に十分に大きな値が入力されているので、ステップｓｔｅｐ８にてエントリ数フィールドに入力される値はレスポンスフレームにて返すことができる最大エントリ数である確率が高い。
【０１３０】
上記ステップｓｔｅｐ４〜ｓｔｅｐ８はループを構成しており、全てのディレクトリエントリを取得するまでステップｓｔｅｐ４〜ｓｔｅｐ８が実行される。一方、ステップｓｔｅｐ６にて、エンド・オブ・リストビットの値が“１”のときには、ディレクトリエントリが最後に達しているので、ステップｓｔｅｐ９に進み、ディレクトリエントリ取得動作を終了する。
上述したページング動作により、コントローラは着目したディレクトリに対して効率良くディレクトリエントリを取得することができる。
【０１３１】
図１８に戻り、第１０および第１１のオペランド（operand[10]およびoperand[11]）は、リザーブ（reserved）フィールドであり、当該フィールドにいかなる値を設定してもカメラ・ストレージ・サブユニットに無視される。コントローラは、当該フィールドに、例えば“FF16”の値を設定してコマンドフレームを送信する。
【０１３２】
第１２のオペランド（operand[12]）は、リクエストパス長（request_path_length）フィールドであり、後に続くリクエストパス（request_path）フィールドのバイト長を示す。第１３のオペランド（operand[13]）以降は、可変長のリクエストパスフィールドであり、所望のディレクトリまたはファイルのパス名を指定する。上記リクエストパス長およびリクエストパスは、上述したファイルパス長およびファイルパスにそれぞれ相当する。
【０１３３】
上述したファイルリストコマンドフレームに対する応答としてのレスポンスフレームにおいては、ファイルリスト（file_list）フィールドが上述したリクエストパスフィールドの領域に設定される。ファイルリストフィールドは、可変長フィールドであり、上述したディレクトリエントリが保持されている。ファイルリストフィールドには複数のディレクトリエントリを含むことが可能であり、ファイルリストフィールドに含まれるディレクトリエントリ数は、上述したレスポンスフレーム内のエントリ数フィールドにより指示される。また、図３に示したように、各ディレクトリエントリのサイズは２０バイトである。
【０１３４】
図２２は、メディア情報コマンド（MEDIA INFO control command）フレームのフォーマットを示す図である。メディア情報コマンドは、カメラ・ストレージ・サブユニット内の記録メディアの情報を取得するために使用される。
メディア情報コマンドフレームにおいて、最初の６バイトのフィールドは、上述した共通フレームヘッダであり、物理ボリューム番号フィールド、論理ボリューム番号フィールド、およびメディア・カウントフィールドには固定値“FF16”をそれぞれ指定する。
【０１３５】
図２３は、メディア情報コマンドフレームに対するレスポンスフレームのフォーマットを示す図であり、最初の６バイトのフィールドは共通フレームヘッダに対する応答部分である。
第５のオペランド（operand[5]）は、物理ボリューム数（number_of_physical_volume）フィールドであり、カメラ・ストレージ・サブユニット内の記録メディア数、すなわち物理ボリューム数が入力される。なお、記録メディアが着脱可能であって記録メディアが挿入されていない時にも、当該記録メディアが物理ボリューム数に加えられている。
【０１３６】
第６のオペランド（operand[6]）以降は、論理ボリューム数（number_of_logical_volume）フィールドであり、物理ボリューム毎の論理ボリューム数が入力される。論理ボリューム数フィールドの総数は、上記物理ボリューム数フィールドの値に応じて異なり、物理ボリューム数フィールドの値がｎ（ｎは自然数）の場合には、第０の論理ボリューム数フィールド（number_of_logical_volume[0]）から第（ｎ−１）のボリューム数フィールド（number_of_logical_volume[n-1]）までのｎ個の論理ボリューム数フィールドが存在する。なお、記録メディアが着脱可能であって記録メディアが挿入されていない時には、当該記録メディアに関連付けられている論理ボリューム数フィールドには“0016”の値が入力される。
【０１３７】
図２４は、ファイル受信コマンド（RECEIVE FILE control command）フレームのフォーマットを示す図である。ファイル受信コマンドは、カメラ・ストレージ・サブユニット内の記録メディアにサブユニット・デスティネーションプラグ（subunit destination plug）から受信したファイルを記録するために使用される。
【０１３８】
ファイル受信コマンドフレームにおいて、最初の６バイトのフィールドは、上述した共通フレームヘッダであり、物理ボリューム番号フィールドおよび論理ボリューム番号フィールドには記録される受信ファイルのボリュームを指定する。コントローラは、当該フィールドに“FF16”（“any available volume”）の値を設定して、カメラ・ストレージ・サブユニットが選択した任意の記録可能な物理ボリュームおよび論理ボリュームにファイルを記録することができる。そして、カメラ・ストレージ・サブユニットは、記録時に選択した物理ボリューム番号および論理ボリューム番号を、上記物理ボリューム番号フィールドおよび論理ボリューム番号フィールドにそれぞれ設定してレスポンスフレームを返す。
【０１３９】
なお、コントローラがコマンドフレームの物理ボリューム番号フィールドに“FF16”の値を設定した場合には、カメラ・ストレージ・サブユニットは、コマンドフレーム内のメディア・カウントフィールドを無視するととも、選択した物理ボリュームのメディア・カウント値をメディア・カウントフィールドに設定したレスポンスフレームを返す。
【０１４０】
第５〜第８のオペランド（operand[5]〜operand[8]）の４バイトは、受信サイズ（receive_size）フィールドであり、記録するファイルのバイト数を指定する。コントローラが、記録するファイルのバイト数を予め決定できない場合には、コントローラは受信サイズフィールドに零（“00 00 00 0016”）の値を設定して、カメラ・ストレージ・サブユニットにファイルを記録させることができる。
【０１４１】
第９のオペランド（operand[9]）は、デスティネーションプラグ（destination_plug）フィールドであり、ファイルデータを入力するためのサブユニット・デスティネーションプラグを指定する。通常、コントローラは、ファイル受信コマンドフレームを発行するのに先立ち、カメラ・ストレージ・サブユニットのサブユニット・デスティネーションプラグと、ユニットプラグ（unit plug）または同じユニット内の他のサブユニットのサブユニット・ソースプラグ（subunit source plug）とのコネクションを確立する。
【０１４２】
ここで、コントローラがデスティネーションプラグフィールドにて指定するサブユニット・デスティネーションプラグが既に使用されている場合には、カメラ・ストレージ・サブユニットは、結果コードとして“busy”（“8016”）の値が第１のオペランドに入力された“REJECTED”レスポンスフレームを返す。
【０１４３】
第１０のオペランド（operand[10]）は、受信モード（receive_mode）フィールドであり、第１３のオペランド（operand[13]）以降のファイルパスフィールドで指定されたファイルパス名と同じファイルパス名のファイルが既に存在するときの動作を指定する。受信モードフィールドの符号化の一例を図２５に示す。
【０１４４】
第１１のオペランド（operand[11]）は、ファイルタイプフィールドであり、受信されるファイルの型を指定する。ファイルタイプフィールドの符号化の一例を図２６に示す。
【０１４５】
ファイル受信コマンドフレームに対する応答としてのレスポンスフレームでは、例えば、上記受信サイズフィールド、デスティネーションプラグフィールド、受信モードフィールド、およびファイルタイプフィールドには、コマンドフレームと同じ値が入力されて返される。
【０１４６】
第１２のオペランド（operand[12]）は、ファイルパス長フィールド、第１３のオペランド以降は可変長のファイルパスフィールドであり、上述したファイルパス長およびファイルパスに相当する。上述したように記録された結果のファイルパス名は、上記ファイルパスフィールドに設定され、レスポンスフレームによりコントローラに返される。なお、ファイル受信コマンドフレームに対して“REJECTED”レスポンスフレームが返されるときは、ファイルパスフィールドには零の値が設定される。
【０１４７】
図２７は、ファイル送信コマンド（SEND FILE control command）フレームのフォーマットを示す図である。ファイル送信コマンドフレームは、ファイルデータの送信トリガとして使用される。
ファイル送信コマンドフレームにおいて、最初の６バイトの領域は、上述した共通フレームヘッダである。また、第５〜第８のオペランド（operand[5]〜operand[8]）には固定値“FF16”が設定される。
【０１４８】
第９のオペランド（operand[9]）は、ソースプラグ（source_plug）フィールドであり、ファイルデータの送信に使用されるサブユニット・ソースプラグを指定する。通常、コントローラは、ファイル送信コマンドフレームを発行するのに先立ち、カメラ・ストレージ・サブユニットのサブユニット・ソースプラグと、ユニットプラグまたは同じユニット内の他のサブユニットのサブユニット・デスティネーションプラグとのコネクションを確立する。
【０１４９】
ここで、カメラ・ストレージ・サブユニットがファイル送信コマンドフレームを受信したとき、当該コマンドフレームのソースプラグフィールドで指定されたサブユニット・ソースプラグが既に使用されている場合には、カメラ・ストレージ・サブユニットは、結果コードとして“busy”（“8016”）の値が第１のオペランドに入力された“REJECTED”レスポンスフレームを返す。
【０１５０】
また、ファイル送信コマンドで指定されたサブユニット・ソースプラグに接続されているユニットプラグまたは同じユニット内の他のサブユニットのサブユニット・デスティネーションプラグが指定されたファイルを受信できない場合には、カメラ・ストレージ・サブユニットは、結果コードとして“invalid file type”（“A616”）の値が第１のオペランドに入力された“REJECTED”レスポンスフレームを返す。
【０１５１】
上述したファイル受信コマンドフレームと同様に、第１２のオペランド（operand[12]）はファイルパス長フィールド、第１３のオペランド（operand[13]）以降は可変長のファイルパスフィールドであり、上述したファイルパス長およびファイルパスに相当する。上述したように記録された結果のファイルパス名は、上記ファイルパスフィールドに設定され、レスポンスフレームによりコントローラに返される。なお、ファイル送信コマンドフレームに対して“REJECTED"レスポンスフレームが返されるときは、ファイルパスフィールドには零の値が設定される。
【０１５２】
図２８は、ボリューム情報コマンド（VOLUME INFO control command）フレームのフォーマットを示す図であり、図２９は、ボリューム情報コマンドフレームに対するレスポンスフレームのフォーマットを示す図である。ボリューム情報コマンドは、指定されたボリュームの情報を取得するために使用される。
【０１５３】
上記図２８に示したボリューム情報コマンドフレームにおいて、最初の６バイトのフィールドは、上述した共通フレームヘッダであり、物理ボリューム番号フィールドおよび論理ボリューム番号フィールドには、情報を取得する物理ボリュームおよび論理ボリュームをそれぞれ指定する。
【０１５４】
第４のオペランド（operand[4]）は、ボリューム情報コマンドフレームにおいては固定値“FF16”が設定され、レスポンスフレームにおいてはメディア・カウント値が設定される。
【０１５５】
第５のオペランド（operand[5]）は、ボリューム情報コマンドフレームにおいては固定値“FF16”が設定され、レスポンスフレームにおいては属性（attributes）フィールドである。属性フィールドは、指定されたボリュームの状態を示す属性がビットアサインされる。
【０１５６】
属性フィールドのフォーマットを図３０に示す。図３０において、最上位ビットから６ビットのフィールドは、リザーブビットであり、当該領域に指定した値はカメラ・ストレージ・サブユニットにて無視される。最下位ビットから２ビット目のビット（“bit1”）は、書き込み禁止指示（write_protected）ビットであり、指定されたボリュームが書き込み禁止の場合には“１”に設定される。最下位ビット（“bit0”）は、読み出し専用指示（read_only_media）ビットであり、指定されたボリュームが読み出し専用の場合には、“１”に設定される。
【０１５７】
ボリューム情報コマンドフレームにおいて、第９〜第１６のオペランド（operand[9]〜operand[16]）および第１７〜第２４のオペランド（operand[17]〜operand[24]）には、固定値“FF FF FF FF FF FF FF FF16”が設定される。
ボリューム情報コマンドフレームに対するレスポンスフレームにおいて、第９〜第１６のオペランド（operand[9]〜operand[16]）は、最大容量（maximum_capacity）フィールドであり、指定されたボリュームの最大容量がバイト単位で設定される。また、第１７〜第２４のオペランド（operand[17]〜operand[24]）は、空き容量（free_space）フィールドであり、指定されたボリュームの現在の空き容量がバイト単位で設定される。
【０１５８】
＜ファイル転送＞
次に、コントローラとカメラ・ストレージ・サブユニットとの間での標準的な通信手順について説明する。図３１は、コントローラとカメラ・ストレージ・サブユニットとの間でのコマンドの発行手順の概要を示す図である。
【０１５９】
まず、コントローラは、カメラ・ストレージ・サブユニットに対してメディア情報コマンドを発行して、カメラ・ストレージ・サブユニットが有する記録メディアのボリューム数の情報を取得する（Ｓ１１）。コントローラは、メディア情報コマンドによりボリューム数の情報を取得した後、１つのボリュームを選択する。
【０１６０】
コントローラは、選択したボリュームにアクセスする前にボリューム情報コマンドを発行して、カメラ・ストレージ・サブユニットから現在のメディア・カウント値を取得する（Ｓ１２）。当該ボリューム情報コマンドにより取得した値は、コントローラが選択したボリュームにアクセスするための各コマンドのコマンドフレームを発行する際に、メディア・カウントフィールドに設定される。
【０１６１】
その後、コントローラは、ファイルリストコマンドを発行して、カメラ・ストレージ・サブユニットからファイルリストを取得する（Ｓ１３）。コントローラは、ファイルリストを取得した後、ファイル送信コマンドあるいはファイル受信コマンドを発行し、コントローラとカメラ・ストレージ・サブユニットとの間でのファイル転送を開始させる（Ｓ１４）。
【０１６２】
次に、カメラ・ストレージ・サブユニットからのファイル（データ）転送手順について説明する。上記図３１に示した通信手順により、ファイルリストを取得したコントローラは、ファイル送信コマンドを発行してデータ送信要求を行う。
このとき、コントローラは、ファイル送信コマンドの発行に先立って、カメラ・ストレージ・サブユニットのサブユニット・ソースプラグと、送信先（受信側）の装置であるデスティネーションとの間に、例えば上述したアシンクロナスコネクション（Asynchronous Connection）により、コネクションを確立する。なお、上記デスティネーションはコントローラであっても良いし、他の装置であっても良い。
【０１６３】
図３２は、カメラ・ストレージ・サブユニットからファイルを転送させる際のコマンドフローの一例を示す図であり、縦方向（Ｔ軸方向）は概念的な時間経過を示している。
【０１６４】
図３２において、例えばコントローラとカメラ・ストレージ・サブユニットとの間に、アシンクロナスコネクションによりコネクションを確立する（Ｓ２１）。次に、コントローラは、カメラ・ストレージ・サブユニットに対してファイル送信コマンドを発行して（Ｓ２２）、カメラ・ストレージ・サブユニットからのデータの転送（Ｓ２３）を開始させる。本実施形態では、コントローラは、図３２に示したように上記コネクションが確立されている間において、複数のファイル送信コマンドを発行して、複数のトランザクションを発生させることが可能である（Ｓ２４、Ｓ２５）。コントローラは、データ転送が終了すると上記ステップＳ２１にて確立したコネクションを切断する（Ｓ２６）。
【０１６５】
次に、カメラ・ストレージ・サブユニットにファイルを受信させる手順について説明する。図３３は、カメラ・ストレージ・サブユニットにファイルを受信させる際のコマンドフローの一例を示す図であり、上記図３２と同様に縦方向（Ｔ軸方向）は概念的な時間経過を示している。上記図３１に示した通信手順により、ボリュームに関する情報を取得したコントローラは、ファイル受信コマンドを発行してファイルデータの受信要求を行う。
【０１６６】
このとき、コントローラは、ファイル受信コマンドの発行に先立って、カメラ・ストレージ・サブユニットのサブユニット・デスティネーションプラグと、送信元（送信側）の装置であるソースとの間にアシンクロナスコネクションによりコネクションを確立する（Ｓ３１）。なお、上記ソースは、コントローラであっても良いし、他の装置であっても良く、例えば図３３においては、コントローラをソースとしてコネクションを確立している。
【０１６７】
次に、コントローラは、カメラ・ストレージ・サブユニットに対してファイル受信コマンドを発行して（Ｓ３２）、カメラ・ストレージ・サブユニットにファイルデータの受信（Ｓ３３）を開始させる。図３３に示したように上記コネクションが確立している間において、コントローラは、複数のファイル受信コマンドを発行して、複数のファイルを受信させることが可能である（Ｓ３４、Ｓ３５）。コントローラは、ファイルデータ転送が終了すると上記ステップＳ３１にて確立したコネクションを切断する（Ｓ３６）。
【０１６８】
上述したファイル転送の手順において、コネクションは確立されているが、コントローラからファイル転送のトリガになるコマンド、例えばファイル送信コマンドあるいはファイル受信コマンドが発行されていないにもかかわらずファイルデータが送受信された場合には、カメラ・ストレージ・サブユニットは当該ファイルデータを破棄する。
【０１６９】
以上説明したように、データの送信側であるプロデューサノード（以下、「プロデューサ」と称す。）と、データの受信側であるコンシューマノード（以下、「コンシューマ」と称す。）とのコネクションを管理するコントローラノード（以下、「コントローラ」と称す。）が、プロデューサとコンシューマとを制御する場合には、コントローラは次の手順に従ってコマンドを発行する。
1)コントローラは、コネクションを確立するコマンドをコンシューマおよびプロデューサに発行する。
2)コントローラは、トリガコマンド（例えば、ファイル受信コマンド）をコンシューマに発行する。
3)コントローラは、コンシューマからのレスポンスを受け取った後、トリガコマンド（例えば、ファイル送信コマンド）をプロデューサに発行する。
【０１７０】
＜アシンクロナスコネクション（Asynchronous Connection）＞
上述したように本実施形態におけるファイルシステムでは、アシンクロナスコネクションにより、ファイルデータの転送およびファイル属性データの転送が行われる。アシンクロナスコネクションによりデータを送受信する通信システムは、例えば図３４に示すように、データの送信側であるプロデューサ３４０１、データの受信側であるコンシューマ３４０２、およびプロデューサとコンシューマとのコネクションを管理するコントローラ３４０３から構成される。なお、図３４においては、プロデューサ３４０１、コンシューマ３４０２、およびコントローラ３４０３をそれぞれ異なるノードとして示しているが、コントローラ３４０３を設けずに、プロデューサ３４０１がコントローラ３４０３の機能を有するようにしても良いし、コンシューマ３４０２がコントローラ３４０３の機能を有するようにしても良い。
【０１７１】
プロデューサ３４０１およびコンシューマ３４０２は、データの送受信を行うためのアシンクロナスプラグレジスタ（Asynchronous Plug Register）をそれぞれ所有する。上記アシンクロナスプラグレジスタは、図３５に示すように構成されており、１つのアシンクロナス入力ポートレジスタ（iAPR：input Asynchronous Port Register）と、複数のアシンクロナス出力ポートレジスタ（oAPR：output Asynchronous Port Register）（図３５に示した例においては、第１〜第１４のアシンクロナス出力ポートレジスタ（oAPR[1]〜oAPR[14]））とで構成される。また、１つのアシンクロナス入力ポートレジスタおよび複数のアシンクロナス出力ポートレジスタは、ＩＥＥＥ１３９４インターフェースのアドレス空間にそれぞれ割り当てられる。
【０１７２】
ここで、プロデューサとしての機能のみを有するノードは、アシンクロナス出力ポートレジスタだけを備え、コンシューマとしての機能のみを有するノードは、アシンクロナス入力ポートレジスタとデータ受信用のセグメントバッファ（segment buffer）とを備える。また、プロデューサおよびコンシューマの双方の機能を有するノードは、アシンクロナス入力ポートレジスタとアシンクロナス出力ポートレジスタとセグメントバッファとを備える。
【０１７３】
ここで、プロデューサは、１つのコネクションで複数のコンシューマに対してデータを送信することができる場合には、そのデータ送信能力に応じて複数のアシンクロナス出力ポートレジスタを備え、１つのコンシューマにのみデータを送信することができない場合には、１つのアシンクロナス出力ポートレジスタだけを備えていれば良い。
【０１７４】
また、複数のコネクションを同時に形成することができるノードは、上記図３５に示したアシンクロナスプラグレジスタを複数備える。このようにノードによっては複数のアシンクロナスプラグを有する場合もあり、各アシンクロナスプラグはプラグＩＤ（plug_id）により識別される。
【０１７５】
例えば、プロデューサ３４０１がライトトランザクションによりコンシューマ３４０２が備えるセグメントバッファに画像データ等を書き込むとする。このとき、書き込まれるデータをフレームと呼び、フレームのサイズがセグメントバッファのサイズより大きい場合には、複数回のセッションに分けて書き込みが行われる。この１回のセッションで書き込まれるデータをセグメントと呼ぶ。
【０１７６】
コントローラ３４０３は、コンシューマ３４０２のノードＩＤ、コネクションに使用するコンシューマ３４０２のプラグアドレス、プラグ番号等の情報をプロデューサ３４０１に対して送信する。同様に、コントローラ３４０３は、プロデューサ３４０１のノードＩＤ、コネクションに使用するプロデューサ３４０１のプラグアドレス、プラグ番号等の情報をコンシューマ３４０２に対して送信する。コントローラ３４０３からの情報を受信したプロデューサ３４０１およびコンシューマ３４０２は、受信した情報に基づいてデータの通信を開始し、プロデューサ３４０１からコンシューマ３４０２にデータが送信される。
【０１７７】
上述したコントローラ３４０３からプロデューサ３４０１あるいはコンシューマ３４０２に対しての通信、およびプロデューサ３４０１とコンシューマ３４０２との間でのデータの通信は、アシンクロナストランザクションを用いて行われる。このアシンクロナストランザクションに用いられるパケットフォーマットは、上記図６に示したデータ構造と同様である。
【０１７８】
上記アシンクロナスコネクションに用いられるコマンドフレームのフォーマットは、例えば図３６に示すように構成されている。なお、コントローラ３４０３からプロデューサ３４０１あるいはコンシューマ３４０２に送信されるコマンドフレームと、プロデューサ３４０１あるいはコンシューマ３４０２からコントローラ３４０３に送信されるレスポンスフレームとは、同じフォーマットである。
【０１７９】
オペコード（opcode）３６０１は、コマンドの種類を示しており、アシンクロナスコネクションのコマンドフレームであることを示すコード値“2616”が設定される。
サブファンクションフィールド３６０２は、当該コマンドによりプロデューサやコンシューマが行う動作（プラグリソースの確保、コネクションの設定／解除等）を指定する。サブファンクションフィールドの符号化について図３７に示す。
【０１８０】
なお、以下の説明では、アシンクロナスコネクションコマンド（ASYNCHRONOUS CONNECTION control command）フレームは、サブファンクションフィールドに基づいて呼称する。例えば、アシンクロナスコネクションコマンドフレームのサブファンクションフィールドの値が“E116”（EX_ALLOCATE）の場合には、“EX_ALLOCATE”コマンドフレームと称する。
【０１８１】
ステータス（status）フィールド３６０３は、コマンド実行結果の状態を表すフィールドであり、レスポンスフレームにおいてデータが設定され、コントローラに状態が通知される。
【０１８２】
プラグＩＤ（plug_id）フィールド３６０４は、コネクションに使用するプラグ番号を指定する。プラグＩＤフィールドの符号化の一例を図３８に示す。図３８において、値“BF16”は特別であり、コントローラが、カメラ・ストレージ・サブユニットのようなアシンクロナスコネクションをサポートしたデバイスに対して、現在使用していないプラグＩＤを用いてコネクションを確立するように指示するために使用される。
【０１８３】
プラグオフセット（plug_offset）フィールド３６０５は、４２ビットのフィールドであり、プラグの先頭アドレス（図３５に示したアシンクロナス入力ポートレジスタに相当するアドレス）が設定される。
【０１８４】
ポートＩＤ（port_id）フィールド３６０６は、プラグ内のどのポートが選択されているかを示す。ポートＩＤフィールドの符号化の一例を図３９に示す。図３９において、コンシューマポート（Consumer Port[0]）は、図３５に示したアシンクロナス入力ポートレジスタ（iAPR）に対応し、第１〜第１４のプロデューサポート（Producer Port[1]〜Producer Port[14]）は、図３５に示した第１〜第１４のアシンクロナス出力ポート（oAPR[1]〜oAPR[14]）にそれぞれ対応する。また、値“0F16”は特別であり、コントローラが、カメラ・ストレージ・サブユニットのようなアシンクロナスコネクションをサポートしたデバイスに対して、現在使用していないプロデューサポートを用いてコネクションを確立するように指示するために使用される。
【０１８５】
したがって、コネクションに使用されるポートレジスタのオフセットアドレスは、例えば次式（１）により計算される。
（オフセットアドレス）＝（plug_offset）≪６｜（port_id）≪２  …（１）
ここで、上記式（１）において、“≪”は左ビットシフト演算を示し、“｜”はビット毎の論理和（OR）演算を示す（以下についても同様である。）。
【０１８６】
ポートビット（port_bits）フィールド３６０７は、選択されているポートの能力を示す。ポートビットフィールドの符号化の一例を図４０に示す。なお、図４０において“Ｘ”は、考慮しないビット（Don't Care）であることを示す。
接続ノードＩＤ（connected_node_id）フィールド３６０８は、コネクションを設定する相手のノード（以下、「接続ノード」と称す。）を示す。コントローラは、コンシューマに対しては接続されるプロデューサのノードＩＤを設定してコマンドフレームで通知し、プロデューサに対しては接続されるコンシューマのノードＩＤを設定してコマンドフレームで通知する。
【０１８７】
接続プラグオフセット（connected_plug_offset）フィールド３６０９は、接続ノードが有するプラグのアドレスを示す。
接続ポートＩＤ（connected_port_ID）フィールド３６１０は、コネクションに使用する接続ノードのポート番号を示す。
【０１８８】
したがって、接続ノードのポートレジスタのオフセットアドレスは、次式（２）により計算される。
（オフセットアドレス）
＝（connected_plug_offset）≪６｜（connected_port_id）≪２  …（２）
【０１８９】
接続ポートビット（connected_port_bits）フィールド３６１１は、接続ノードのポートの能力を示す。
接続プラグＩＤ（connected_plug_id）フィールド３６１２は、コネクションに使用される接続ノードのプラグ番号を示す。
【０１９０】
排他制御（ex：exclusive）ビット３６１３は、コントローラが、内部コネクションとユニットから他のユニットへの接続との双方の制御に関して、他のコントローラを排除することを指定するビットである。
【０１９１】
具体的には、排他制御ビット３６１３が“１”に設定されたアシンクロナスコネクションコマンドフレームを受け入れたターゲットノード（コントローラからのコマンドフレームを受信するノード）は、その後に発行され、受信したアシンクロナスコネクションコマンドフレームを調べ、受信したアシンクロナスコネクションコマンドフレームを発行したコントローラのノードＩＤと、排他制御ビット３６１３が“１”に設定されたアシンクロナスコネクションコマンドフレームを発行したコントローラのノードＩＤとが一致するか否かを検出する。その結果、ノードＩＤが不一致の場合には、ターゲットノードは受信したコマンドフレームに対して“REJECTED”レスポンスフレームを返す。
【０１９２】
また、排他制御ビット３６１３が“１”に設定されたアシンクロナスコネクションコマンドフレームは、次の場合にターゲットノードに受けつけられる。
・指定されたプラグがコンシューマのプラグの場合
・指定されたプロデューサのプラグが使用されていない場合
上述の場合には、ターゲットノードは、当該アシンクロナスコネクションコマンドフレームを発行したコントローラに対して、“ACCEPTED”レスポンスフレームを返す。
【０１９３】
コネクションカウント（connection_count）フィールド３６１４は、コンシューマのポートがいくつのプロデューサポートに接続されているかを示す。
ライトインターバル（write_interval）フィールド３６１５は、プロデューサがコンシューマのセグメントバッファにライトトランザクションを行う際のトランザクションの最小間隔を示す。
【０１９４】
リトライカウント（retry_count）フィールド３６１６は、シリアルバストランザクションに失敗した場合に必要になるリトライ（再実行）回数の値を示す。リトライカウントフィールドの値は、コンシューマからのレスポンスフレームで設定される。
サブユニットタイプ（subunit_type）フィールド３６１７とサブユニットＩＤ（subunit_id）フィールド３６１８とで、ソースまたはデスティネーションになるサブユニットを指定する。サブユニットタイプフィールド３６１７とサブユニットＩＤフィールド３６１８の定義は、上述したサブユニットアドレスと同様である。
サブユニットプラグ（subunit_plug）フィールド３６１９は、データを授受するための入出力プラグであるサブユニットプラグ番号を指定する。
【０１９５】
次に、上述したアシンクロナスコネクションにおけるコネクション確立手順について説明する。図４１は、アシンクロナスコネクションにおけるコネクション確立手順を示す図である。
図４１において、４１００はプロデューサ、４１０１はプロデューサ４１００が有する第１のサブユニット、４１０２はソースプラグ、４１０３はプロデューサポート、４１１０はコントローラ、４１２０はコンシューマ、４１２１はコンシューマ４１２０が有する第２のサブユニット、４１２２はデスティネーションプラグ、４１２３はコンシューマポートである。
【０１９６】
図４１に示すように、本実施形態では、コントローラ４１１０は、まず、“EX_ALLOCATE”コマンド（EX_ALLOCATE control command）フレームをコンシューマ４１２０に対して発行する（１ａ）。このとき、図４１に示した例では、コンシューマ４１２０内における第２のサブユニット４１２１のデスティネーションプラグ４１２２とコンシューマポート４１２３との内部コネクションが確立される。
【０１９７】
なお、デスティネーションプラグ４１２２とコンシューマポート４１２３との内部コネクションは、最初の“EX_ALLOCATE”コマンドフレームの発行後、後述する“EX_ATTACH”コマンド（EX_ATTACH control command）フレームが発行されるまでの間、当該内部コネクションが変更されないように排他的にロックされる。
【０１９８】
上記図３７に示したように、“EX_ALLOCATE”コマンドフレームは、アシンクロナスコネクションにおけるコンシューマポートの取得要求、サブユニット・デスティネーションプラグの取得要求、およびコンシューマポートとサブユニット・デスティネーションプラグとの間の接続要求を行う。コンシューマ４１２０は、サブユニットプラグＩＤとコンシューマポートのアドレスとを、上記“EX_ALLOCATE”コマンドフレームに対する“EX_ALLOCATE”レスポンスフレームとしてコントローラ４１１０に返す（１ｂ）。
【０１９９】
次に、コントローラ４１１０は、“EX_ALLOCATE_ATTACH”コマンド（EX_ALLOCATE_ATTACH control command）フレームをプロデューサ４１００に対して発行し（２ａ）、サブユニット・ソースプラグの取得要求、プロデューサポートの取得要求、およびサブユニット・ソースプラグとプロデューサポートとの接続要求を行う。
【０２００】
これにより、プロデューサ４１００内における第１のサブユニット４１０１のソースプラグ４１０２とプロデューサポート４１０３との内部コネクションが確立される。また、プロデューサ４１００は、上記“EX_ALLOCATE_ATTACH”コマンドフレームに対する“EX_ALLOCATE_ATTACH”レスポンスフレームをコントローラ４１１０に返す（２ｂ）。
【０２０１】
さらに、コントローラ４１１０は、“EX_ATTACH”コマンド（EX_ATTACH control command）フレームをコンシューマ４１２０に対して発行し（３ａ）、プロデューサポート４１０３とコンシューマポート４１２３との接続要求を行う。コンシューマ４１２０は、上記“EX_ATTACH”コマンドフレームに対する“EX_ATTACH”レスポンスフレームをコントローラ４１１０に返す（３ｂ）。
【０２０２】
コンシューマ４１２０は、プロデューサ４１００内のアシンクロナス出力ポートレジスタを更新して受信準備が終了したことを示す（４）。なお、プロデューサポート４１０３は、コンシューマ４１２０がプロデューサ４１００内のアシンクロナス出力ポートレジスタを更新するまでの間、インアクティブ状態（非動作状態）に留まる。
【０２０３】
上述のようにしてコネクションの確立手順に従って動作することにより、本実施形態では、第１のサブユニット４１０１と第２のサブユニット４１２１との間でのアシンクロナスコネクションが確立される。
【０２０４】
次に、上述したアシンクロナスコネクションにおけるコネクション切断手順について説明する。図４２は、アシンクロナスコネクションにおけるコネクション切断手順を示す図である。なお、この図４２において、図４１に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。
【０２０５】
図４２に示すように、まず、コントローラ４１１０が“EX_DETACH”コマンド（EX_DETACH control command）フレームをコンシューマ４１２０に対して発行し（１ａ’）、コネクション切断手順が開始される。当該“EX_DETACH”コマンドフレームは、コネクションカウント値を減少させる。
【０２０６】
コンシューマ４１２０が、上記“EX_DETACH”コマンドフレームに対する応答として、コントローラ４１１０に返す“EX_DETACH”レスポンスフレーム（１ｂ’）にて通知されるコネクションカウント値が零であるときには、コンシューマ４１２０が滞りなくコネクション切断手順に入ったことを示す。
【０２０７】
一方、上記“EX_DETACH”レスポンスフレームにて通知されるコネクションカウント値が零でないときには、コンシューマ４１２０は、まだ少なくとも１つのコネクションを有していることを示す。コネクションカウント値が零でない場合には、コントローラ４１１０は、後述する“EX_DETACH_RELEASE”コマンド（EX_DETACH_RELEASE control command）フレームを発行しないようになっている。
【０２０８】
上述のように、上記“EX_DETACH”レスポンスフレームにて通知されるコネクションカウント値が零のとき、コンシューマ４１２０内の第２のサブユニット４１２１のデスティネーションプラグ４１２２とコンシューマポート４１２３とがインアクティブ状態になったままである。このインアクティブ状態のとき、コンシューマポート４１２３は、プロデューサ４１００からのレジスタ更新、およびセグメントバッファへの書き込みを受け付ける。
【０２０９】
次に、コントローラ４１１０は、“EX_DETACH_RELEASE”コマンドフレームをプロデューサ４１００に対して発行し、（２ａ’）、プロデューサ４１００内の第１のサブユニット４１０１のソースプラグ４１０２とプロデューサポート４１０３とのコネクションが切断される。また、プロデューサ４１００は、上記“EX_DETACH_RELEASE”コマンドフレームに対する“EX_DETACH_RELEASE”レスポンスフレームをコントローラ４１１０に返す（２ｂ’）。
【０２１０】
最後に、コントローラ４１１０は、“EX_RELEASE”コマンド（EX_RELEASE control command）フレームをコンシューマ４１２０に対して発行し（３ａ’）、コンシューマ４１２０内における内部コネクションが切断される。コンシューマ４１２０は、上記“EX_RELEASE”コマンドフレームに対する“EX_RELEASE”レスポンスフレームをコントローラ４１１０に返す（３ｂ’）。
【０２１１】
上述のようにしてコネクションの切断手順に従って動作することにより、本実施形態では、第１のサブユニット４１０１と第２のサブユニット４１２１との間でのアシンクロナスコネクションが切断される。
【０２１２】
以上、説明したように本実施形態によれば、アシンクロナスコネクションによりコネクションを確立するための既存のコマンドに加え、ユニット（プロデューサやコンシューマ）内のサブユニットプラグ（サブユニット・ソースプラグ、サブユニット・デスティネーションプラグ）を指定するためのフィールドを拡張して追加する。これにより、ユニット間におけるアシンクロナスコネクション、およびユニット内でのサブユニットプラグとユニットが備えるポートとの間におけるコネクションを単一のコマンドにより、同時に接続あるいは切断することができ、簡単な接続手順で、高速なデータ転送が可能であるとともに、データ転送の確実性が保証できる通信システムを実現することができる。
【０２１３】
また、アシンクロナスコネクションにおける排他制御ビットを設けることで、当該排他制御ビットの値に応じて、ユニット内部でのコネクションと、ユニットから他のユニットへの接続との双方の制御に関して他のコントローラを排除し、効率良く排他制御を行うことができる。
【０２１４】
なお、上述したアシンクロナスコネクションコマンドにおいては、ＡＶ／Ｃ Commands for Management of Asynchronous Serial Bus Connection規格と同じオペコード値（“2616”）を用いているが、他の任意の値を用いても良い。
【０２１５】
［他の実施形態］
本発明は、単一の機器からなる装置にも適用可能であるとともに、例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなどの複数の機器から構成されるシステムにも適用可能である。
また、上述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、上記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給し、そのシステムあるいは装置のコンピュータ（ＣＰＵあるいはＭＰＵ）に格納されたプログラムに従って上記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【０２１６】
また、この場合、上記ソフトウェアのプログラムコード自体が上述した実施形態の機能を実現することになり、そのプログラムコード自体、およびそのプログラムコードをコンピュータに供給するための手段、例えばかかるプログラムコードを格納した記録媒体は本発明を構成する。かかるプログラムコードを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ（プログラムＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなど）等を用いることができる。
【０２１７】
また、コンピュータが供給されたプログラムコードを実行することにより、上述の実施形態の機能が実現されるだけでなく、そのプログラムコードがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
【０２１８】
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【図面の簡単な説明】
【０２１９】
【図１】本発明の実施形態による通信システムの一構成例を示すブロック図である。
【図２】ファイルシステムの構成例を示す図である。
【図３】ディレクトリエントリのデータ構造の一例を示す図である。
【図４】属性フィールドの構成を示す図である。
【図５】ＦＣＰを説明するための概念図である。
【図６】アシンクロナスパケットのデータ構造を示す図である。
【図７】コマンドレジスタおよびレスポンスレジスタのデスティネーションオフセットアドレスを示す図である。
【図８】ＦＣＰフレームのデータ構造を示す図である。
【図９】ＣＴＳフィールドの符号化の一例を示す図である。
【図１０】コマンドフレームおよびレスポンスフレームのデータ構造を示す図である。
【図１１】コマンドタイプフィールドの値とコマンドタイプとの関係の一例を示す図である。
【図１２】サブユニットタイプフィールドの値とサブユニットのタイプとの関係の一例を示す図である。
【図１３】レスポンスフィールドの値とレスポンスタイプとの関係の一例を示す図である。
【図１４】カメラ・ストレージ・サブユニットのコマンドと、カメラ・ストレージ・サブユニットのオペコード値との関係の一例を示す図である。
【図１５】共通フレームヘッダのフォーマットを示す図である。
【図１６】制御コマンドの動作モードとサブファンクションフィールド値との関係を示す図である。
【図１７】結果コードの符号化の一例を示す図である。
【図１８】ファイルリストコマンドフレームのフォーマットを示す図である。
【図１９】ファイルタイプフィールド値の定義を示す図である。
【図２０】属性フィールドの定義を示す図である。
【図２１】ページング動作を示すフローチャートである。
【図２２】メディア情報コマンドフレームのフォーマットを示す図である。
【図２３】メディア情報コマンドフレームに対するレスポンスフレームのフォーマットを示す図である。
【図２４】ファイル受信コマンドフレームのフォーマットを示す図である。
【図２５】受信モードフィールドの符号化の一例を示す図である。
【図２６】ファイルタイプフィールドの符号化の一例を示す図である。
【図２７】ファイル送信コマンドフレームのフォーマットを示す図である。
【図２８】ボリューム情報コマンドフレームのフォーマットを示す図である。
【図２９】ボリューム情報コマンドフレームに対するレスポンスフレームのフォーマットを示す図である。
【図３０】属性フィールドのフォーマットを示す図である。
【図３１】コントローラとカメラ・ストレージ・サブユニットとの間でのコマンドの発行手順の概要を示す図である。
【図３２】カメラ・ストレージ・サブユニットからファイルを転送させる際のコマンドフローの一例を示す図である。
【図３３】カメラ・ストレージ・サブユニットにファイルを受信させる際のコマンドフローの一例を示す図である。
【図３４】アシンクロナスコネクションによりデータを送受信する通信システムの構成例を示す図である。
【図３５】アシンクロナスプラグレジスタの構成例を示す図である。
【図３６】アシンクロナスコネクションに用いられるコマンドフレームのフォーマットを示す図である。
【図３７】サブファンクションフィールドの符号化の一例を示す図である。
【図３８】プラグＩＤフィールドの符号化の一例を示す図である。
【図３９】ポートＩＤフィールドの符号化の一例を示す図である。
【図４０】ポートビットフィールドの符号化の一例を示す図である。
【図４１】アシンクロナスコネクションにおけるコネクション確立手順を示す図である。
【図４２】アシンクロナスコネクションにおけるコネクション切断手順を示す図である。
【符号の説明】
【０２２０】
１０  ケーブル
１００  プリンタ
１０１、２０１  通信部
１０２、２０２  通信補助部
１０３、２０３  画像処理部
１０４、２０４  着脱可能記録部
１０５、２０５  表示部
１０６、２０６  制御部
１０７、２０７  操作部
１０８、２０８  メモリ
１０９  印刷出力部
１１０、２１０  コントロールバス
１１１、２１１  データバス
２００  電子スチルカメラ
２０９  撮像部
【図１】
2005123739.tif 000003
【図２】
2005123739.tif 000004
【図３】
2005123739.tif 000005
【図４】
2005123739.tif 000006
【図５】
2005123739.tif 000007
【図６】
2005123739.tif 000008
【図７】
2005123739.tif 000009
【図８】
2005123739.tif 000010
【図９】
2005123739.tif 000011
【図１０】
2005123739.tif 000012
【図１１】
2005123739.tif 000013
【図１２】
2005123739.tif 000014
【図１３】
2005123739.tif 000015
【図１４】
2005123739.tif 000016
【図１５】
2005123739.tif 000017
【図１６】
2005123739.tif 000018
【図１７】
2005123739.tif 000019
【図１８】
2005123739.tif 000020
【図１９】
2005123739.tif 000021
【図２０】
2005123739.tif 000022
【図２１】
2005123739.tif 000023
【図２２】
2005123739.tif 000024
【図２３】
2005123739.tif 000025
【図２４】
2005123739.tif 000026
【図２５】
2005123739.tif 000027
【図２６】
2005123739.tif 000028
【図２７】
2005123739.tif 000029
【図２８】
2005123739.tif 000030
【図２９】
2005123739.tif 000031
【図３０】
2005123739.tif 000032
【図３１】
2005123739.tif 000033
【図３２】
2005123739.tif 000034
【図３３】
2005123739.tif 000035
【図３４】
2005123739.tif 000036
【図３５】
2005123739.tif 000037
【図３６】
2005123739.tif 000038
【図３７】
2005123739.tif 000039
【図３８】
2005123739.tif 000040
【図３９】
2005123739.tif 000041
【図４０】
2005123739.tif 000042
【図４１】
2005123739.tif 000043
【図４２】
2005123739.tif 000044