(57)【特許請求の範囲】
【請求項１】
各ノードに対してノード識別子が割り当てられ各ノード間でそれぞれ通信を行うことが可能なシリアルバスにおいて、
制御ノードが第１のノードに対して、第２のノードのノード識別子を含むデータ送信命令を発行した後、前記制御ノードが前記第２のノードに対して、前記第１のノードのノード識別子を含むデータ受信命令を発行することで、前記第１のノードから前記第２のノードにデータを１以上のデータブロックに分割して転送する際に、
前記第１のノードから前記第２のノードへの転送は、
（１）前記第２のノードがデータ受信可能な状態を表す通知を前記第１のノードに送信する第１のステップ、
（２）前記第１のノードが送信データブロックの準備が完了した時点で、前記第２のノードへデータブロックを転送する動作を行う第２のステップ、
（３）前記第１のノードが前記第２のノードに前記データブロックの転送の終了を表す通知を送信する第３のステップ、
の上記ステップを繰り返すことで行われ、
第１のステップでの通知には、第２のノードが第２のステップで受信可能な最大データブロックデータ長を含み、
第２のステップでのデータブロック転送が、１個以上のパケットに分割されて転送されるものであり、第１のステップでの通知には、第２のノードが１個のパケットで受信可能な最大パケットデータ長を含み、
第３のステップでの通知には、第１のノードが第２のステップで送信したデータブロックデータ長を含むことを特徴とするデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、静止画像データや文書データ等のリアルタイム処理を必要としないデータを複数の機器間で転送する際に用いられるデータ転送方法に関する。
【０００２】
【従来の技術】
近年、デジタルスチルカメラやプリンタなど静止画像を取り扱う機器の市場拡大が進んでいる。これらの機器は従来パーソナルコンピュータの存在する環境で使用されていたが、近年、これらの機器をコンピュータのない環境で簡単に取り扱いたいというニーズが高まっている。
【０００３】
従来では、このような静止画や文書データに代表される、リアルタイム処理を必要としないデータの送受信を２個の機器間で行う場合には、一方の機器がもう一方の機器に対してコマンドを発行することで、データの送信または受信を行うのが一般的であった。
図１５は、従来のデータ転送方法による静止画データシステムの第１の例を表すブロック図である。図１５において、１００は画像入力機器であるデジタルスチルカメラ、１０１は画像出力機器であるプリンタである。ユーザはデジタルスチルカメラ１００の操作ボタンにより、内部の画像を選択し、これをプリンタ１０１に出力するよう指示を行う。するとデジタルスチルカメラ１００がプリンタ１０１に対して、データ受信コマンド１０２を発行することでプリンタ１０１を受信可能状態とし、続いてデータ１０３の転送を行う。
【０００４】
次に、従来のデータ転送方法による静止画データシステムの第２の例を図１６に示す。図１６においては、プリンタ１０１の操作パネルをユーザが操作することで、デジタルスチルカメラ１００の画像を出力する場合を説明する。ユーザはプリンタ１０１の操作ボタンにより、デジタルスチルカメラ１００上の画像データの出力する指示を行う。するとプリンタ１０１はデジタルスチルカメラ１００に対してデータ送信コマンド１０４を出力し、このデータ送信コマンド１０４を受信したデジタルスチルカメラ１００はプリンタ１０１に対してデータ１０３の転送処理を行う。
【０００５】
さらに、従来のデータ転送方法による静止画データシステムの第３の例を図１７に示す。図１７においては、パーソナルコンピュータやデジタルテレビ用セットトップボックスなど、第３の機器の命令によって画像データをデジタルスチルカメラ１００からプリンタ１０１に転送する場合を説明する。
図１７において、１０５はパーソナルコンピュータを現している。まず、パーソナルコンピュータ１０５がデジタルスチルカメラ１００に対してデータ入力用コマンド１０４を発行することで、データ１０３が一旦パーソナルコンピュータ１０５内に格納される。次に、パーソナルコンピュータ１０５はプリンタ１０１に対してデータ出力コマンド１０２を発行し、先ほどデジタルスチルカメラ１００から受信、格納しておいたデータ１０３をプリンタに送信する処理を行う。すなわち、同じデータ１０３を（１）デジタルスチルカメラ１００からパーソナルコンピュータ１０５に転送、（２）パーソナルコンピュータ１０５からプリンタ１０１に転送、という２段階の処理が必要であり、また同じデータを２回転送する必要が生じるため処理時間がかかる上に、パーソナルコンピュータ１０５にデータ１０３を格納するだけの格納領域が必要となり、効率が悪いシステムとなってしまう。
【０００６】
そこで、この従来の一般的なデータ転送方法の効率向上を目的としたデータ転送方法として、ANSI X3.131-1986, Small Computer System Interface記載の「ＣＯＰＹ  コマンド」が提案されている。
図１８は、この従来の改良されたデータ転送方法を用いた静止画データシステムの例の動作を説明するものである。
【０００７】
図１８において、１０６はパーソナルコンピュータがデジタルスチルカメラ１００に対して画像データの転送を指示するＣＯＰＹコマンド、１０７はプリンタ１０１で発生したエラーをデジタルカメラ１００に転送する第１のエラー通知、１０８はデジタルスチルカメラ１００がパーソナルコンピュータ１０５に、プリンタ１０１のエラーを転送する第２のエラー通知を表している。
【０００８】
まず、パーソナルコンピュータ１０５はデジタルスチルカメラ１００に対して、「プリンタ１０１に対して画像を転送せよ」という指示を含むＣＯＰＹコマンド１０６を発行する。このＣＯＰＹコマンド１０６には、図１５で説明したデータ受信コマンド１０２の内容が含まれており、同時にプリンタ１０１の識別子（ＳＣＳＩ  ＩＤ）も含んでいる。
【０００９】
デジタルスチルカメラ１００はＣＯＰＹコマンド１０６を受信すると、その中に含まれているプリンタ１０１の識別子とデータ受信コマンド１０２の内容を解釈し、プリンタ１０１に対してデータ受信コマンド１０２を発行し、それに続いてデータ１０３をプリンタ１０１に対して送信する。
このように改良されたデータ転送方法によれば、第３の制御機器がデータ転送を指示しているにもかかわらず、データ１０３の転送は、デジタルスチルカメラ１００からプリンタ１０１への１回だけであるので、処理の効率が確かに向上している。
【００１０】
しかしながら、プリンタ１０１においてデータ転送中に、用紙切れや紙詰まりなどのエラーが発生し、データ受信を継続することができなくなったときは、図１８の第１のエラー通信１０７に示すように、プリンタ１０１は、これらのエラー状態をデジタルスチルカメラ１００に対して通知する。次に、プリンタ１０１からのエラー状態の通知を受けたデジタルスチルカメラ１００は、図１８の第２のエラー通信１０８に示すように、次は、パーソナルコンピュータ１０５に対してプリンタ１０１でのエラーの発生を通知することで、初めてパーソナルコンピュータ１０５はプリンタ１０１でのエラー発生を知ることができることになる。
【００１１】
すなわち、前記したようなエラー状況において、エラーの発生した機器から直接エラー発生の通知を受けることができず、システム内でエラー通知の伝播を行わなければならないという非効率性を有していた。さらには、パーソナルコンピュータ１０５はデジタルスチルカメラ１００から通知されるエラーが、デジタルスチルカメラ１００で発生したものなのか、プリンタ１０１で発生したものなのかを必ず識別しなければならず、処理内容が複雑であるという課題を有していた。
【００１２】
さらに、このようなＣＯＰＹコマンド１０６は、先に説明したデータ受信コマンド１０２やデータ送信コマンド１０４などとは異なり、第３の制御機器が存在するときのみに利用されるものであるため、さまざまな機器接続環境あるいはシステム構成に対応するためには、それぞれの機器がこれらの異なる２つの処理体系のコマンドをサポートする必要があった。
【００１３】
【発明が解決しようとする課題】
以上説明した通り、従来から一般的である、「一方の機器がもう一方の機器に対してコマンドを発行することでデータの送信または受信を行う」転送方法を用いて、静止画データの転送を行うシステムを考えると、第３の制御機器の介在する環境においては、効率が悪く処理時間が必要以上にかかるシステムとなるという課題を有していた。
【００１４】
また、従来の改良されたデータ転送方法を用いた場合でも、エラーが発生したときの処理が非効率的であり、さらには１対１の接続の時に用いられる処理体系と異なるコマンド処理体系の２つの体系をサポートする必要があり、機器に搭載されるソフトウエアの容量が不必要に大きくなり、複雑化するという課題を有していた。
【００１５】
本発明は、これらの点に鑑みて、様々なシステム構成に柔軟に対応可能で、処理の効率が良く、エラー処理が簡単なデータ転送方法を提供することを第１の目的とする。
さらに本発明は、データ転送の終了判断を簡単に行え、データ転送開始時にデータ長が分からないデータを転送可能なデータ転送方法を提供することを第２の目的とする。
【００１６】
さらに本発明は、制御機器が転送すべきデータのデータ長を計算することなく、簡単な制御でデータを転送可能なデータ転送方法を提供することを第３の目的とする。
さらに本発明は、エラー発生時のデータ再送を簡単に処理可能なデータ転送方法を提供することを第４の目的とする。
【００１７】
さらに本発明は、同一のデータを複数の機器に対して効率良く転送するデータ転送方法を提供することを第５の目的とする。
さらに本発明は、同一のデータを複数の機器に送信する時にもデータ送信側の機器の処理が簡単かつ高速に行えるデータ転送方法を提供することを第６の目的とする。
【００１８】
さらに本発明は、制御機器のコマンド発行数が最小限とすることで簡単な制御でデータ転送が可能であり、さまざまな処理速度のデータ送信側の機器とデータ受信側の機器との組み合わせに容易に対応可能なデータ転送方法を提供することを第７の目的とする。
さらに本発明は、制御機器がデータブロックのデータ長を管理する必要がないデータ転送方法を提供することを第８の目的とする。
【００１９】
さらに本発明は、データ送信側の機器が、受信側の機器の処理能力に応じた転送データブロックのパケット分割を容易に実現可能なデータ転送方法を提供することを第９の目的とする。
さらに本発明は、受信側の機器が内部処理状況に応じて１度に受信するデータ量を可変可能なデータ転送方法を提供することを第１０の目的とする。
【００２０】
さらに本発明は、非常に速度の遅いデータ送信側の機器やデータ受信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することが可能なデータ転送方法を提供することを第１１の目的とする
【００２１】
【課題を解決するための手段】
各ノードに対してノード識別子が割り当てられるバスシステム上の第１のノードから第２のノードにデータを複数個のデータブロックに分割して転送するに際し、１個のデータブロック転送に先立って、制御ノードは第２のノードに対してデータブロック受信命令を発行し、次に第１のノードに対して、第２のノードのノード識別子を含むデータブロック送信命令を発行することで、第１のノードから第２のノードへのデータブロック転送が実行され、データブロック転送が終了した後に、第１のノードはデータブロック送信処理の実行結果を制御ノードに対して通知し、第２のノードはデータブロック受信処理の実行結果を制御ノードに対して通知するようにしたものである。
【発明の詳細な説明】
【００２２】
これにより、様々なシステム構成に柔軟に対応可能で、処理の効率が良く、エラー処理が簡単なデータ転送方法を得ることができる。
【００２３】
【発明の実施の形態】
本発明の第１の発明は、各ノードに対してノード識別子が割り当てられるバスシステム上の第１のノードから第２のノードにデータをＮ個（Ｎは自然数）のデータブロックに分割して転送するに際し、１個のデータブロック転送に先立って、制御ノードは第２のノードに対してデータブロック受信命令を発行し、次に第１のノードに対して、第２のノードのノード識別子を含むデータブロック送信命令を発行することで、第１のノードから第２のノードへのデータブロック転送が実行され、前記データブロック転送が終了した後に、第１のノードは前記データブロック送信処理の実行結果を制御ノードに対して通知し、第２のノードは前記データブロック受信処理の実行結果を制御ノードに対して通知するものである。これにより、第１のノードから第２のノードのデータ転送を制御する制御ノードを定義し、データを送出する第１のノードに対してデータ送出先のノードの識別子を含む命令を発行することにより、機器の１対１接続の場合だけでなく、第３の制御機器が存在した場合のどちらでも、同一のコマンド体系で、高効率のデータ転送を可能とするものである。さらに、データ転送終了後それぞれのノードから制御ノードに対してデータ送受信処理の実行結果を通知することで、効率よく機器で発生したエラー条件を検出することを可能とする。
【００２４】
また、本発明の第２の発明は、１回のデータブロック転送が終了した後、第１のノードが、制御ノードにデータブロック送信処理の実行結果とともに次に転送すべきデータブロックのデータ長を通知するものである。これにより、第１のノードが、制御ノードに次に転送すべきデータブロックのデータ長を通知することにより、制御機器が転送すべきデータのデータ長を計算することなく、簡単な制御でのデータ転送を可能とする。
【００２５】
また、本発明の第３の発明は、第１のノードが、データブロック転送の際にエラーを検出したときに、制御ノードにデータブロック送信処理の実行結果とともに、エラーの発生したデータブロックの再送要求を通知するものである。これにより、第１のノードが、データブロック転送の際にエラーを検出したときに、制御ノードにデータブロック送信処理の実行結果とともに、エラーの発生したデータブロックの再送要求を通知することにより、エラー発生時のデータ再送を簡単に処理可能とする。
【００２６】
また、本発明の第４の発明は、制御ノードが第１のノードにデータブロック送信指示命令を発行したのち、データブロック転送に先立って、前記第１のノードが前記第２のノードに対して、転送が行われるデータブロックのデータ長を通知するものである。これにより、制御ノードが第１のノードにデータブロック送信指示命令を発行したのち、データブロック転送に先立って、前記第１のノードが前記第２のノードに対して、転送が行われるデータブロックのデータ長を通知することにより、制御機器がそれぞれのデータ長を知らなくともデータ転送制御が行えるため、制御機器の転送処理の簡略化が可能である。
【００２７】
また、本発明の第５の発明は、第１のノードからＭ個（Ｍは自然数）のノードに対して同一のデータを転送するにあたり、制御ノードは、前記第１のノードに対して、同一のデータブロックの送信指示命令を、データブロックを受信するノードの識別子を変化させながらＭ回発行し、これらの処理を前記データブロックの数Ｎ回（Ｎは自然数）繰り返す制御を行うものである。これにより、制御ノードが第１のノードに対して、同一のデータブロックの送信指示命令を、データブロックを受信するノードの識別子を変化させながらＭ回発行し、これらの処理を前記データブロックの数Ｎ回（Ｎは自然数）繰り返す制御を行うことにより、１台から複数台の機器にほぼ同時に同一のデータを配送するシステムを容易に実現可能とする。
【００２８】
また、本発明の第６の発明は、前記制御ノードが前記第１のノードに対してデータブロック送信指示命令を発行する際に、その次に発行する予定のデータブロック送信指示命令が、（ａ）同一のデータブロックを指示するのか、（ｂ）その次のデータブロックを指示するのか、のどちらであるかをあらわすフラグを含むものである。これにより、制御ノードが前記第１のノードに対してデータブロック送信指示命令を発行する際に、その次に発行する予定のデータブロック送信指示命令が、（ａ）同一のデータブロックを指示するのか、（ｂ）その次のデータブロックを指示するのか、のどちらであるかをあらわすフラグを含むことにより、第１のノードが同じデータブロックを保持した状態でとどまるのか、次のデータブロックを準備する必要があるのかをあらかじめ検出できるため、第１のノードにおける内部処理の効率化が可能である。
【００２９】
また、本発明の第７の発明は、１回のデータブロック転送が終了した後、第１のノードは、制御ノードに発行するデータブロック送信処理の実行結果とともに次に転送すべきデータブロックが最後のデータブロックであることを通知するものである。これにより、１回のデータブロック転送が終了した後、第１のノードは、制御ノードに発行するデータブロック送信処理の実行結果とともに次に転送すべきデータブロックが最後のデータブロックであることを通知することにより、データ転送開始時には、全データ長が不明な不定長データの転送を可能とする。
【００３０】
また、本発明の第８の発明は、第１のノードから第２のノードへのデータ転送を、（１）前記第２のノードがデータ受信可能な状態を表す通知を前記第１のノードに送信する第１のステップ、（２）前記第１のノードが送信データブロックの準備が完了した時点で、前記第２のノードへデータブロックを転送する動作を行う第２のステップ、（３）前記第１のノードが前記第２のノードに前記データブロックの転送の終了を表す通知を送信する第３のステップ、の上記ステップを繰り返して実行するものである。すなわち、制御ノードから見るとデータの分割が行われない、すなわちＮ＝１となるので、制御ノードが第１のノードおよび第２のノードへ発行するコマンドの発行数が減少するため、制御ノードの処理を簡単にすることが可能である。さらには、第１の機器が送信しようとするデータブロックの準備完了と第２の機器がデータブロック受信の準備完了をそれぞれ相手に通知することにより、さまざまな処理速度のデータ送信側の機器とデータ受信側の機器との組み合わせに容易に対応することが可能となる。
【００３１】
また、本発明の第９の発明は、第１のステップでの通知に、第２のノードが第３のステップで受信可能な最大データ長を含むものであり、この情報を元に第１のノードが第２のノードが受信可能なデータブロック長を第２のノードから直接検出できるため、コマンドを発行する制御ノードが、データブロックのデータ長を管理する必要がない簡単なデータ転送が可能となる。
【００３２】
また、本発明の第１０の発明は、第２のステップでのデータブロック転送が、１個以上のパケットに分割されて転送される場合に、第１のステップでの応答は、第２のノードが１個のパケットで受信可能な最大データ長を含むものであり、この情報を元に第１のノードが第２のステップで転送するデータを、第２のノードの受信能力に応じた最適なパケット分割を容易に行えるため、さまざまなパケット受信能力を持つ機器に容易に対応することが可能となる。
【００３３】
また、本発明の第１１の発明は、第１のステップでの応答に含まれる、第２のノードが第２のステップで受信可能な最大データ長を、第２のノードの内部処理状況に応じて可変の値を返すことにより、第２のノードのメモリなどの内部資源の最適な管理・活用が可能となる。
また、本発明の第１２の発明は、第３のステップのデータブロック長の通知が終了した後、所定時間ａを経過した後に、第１のノードが第２のノードからの通知を受信しなかったときは、前記第１のノードはデータ転送を中止する処理を行うものであり、または、ａ＞ｂである所定時間ｂ以内に前記第２のノードが受信可能な状態にならなかった場合に、前記第２のノードが前記第１のノードに対して、受信不可能な状態を表す通知を送信することで、前記第１のノードは前記第２のノードからの通知待ち状態に移行すると共に、所定時間ａの計測をやりなおすことにより、非常に速度の遅いデータ受信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することを可能とするものである。
【００３４】
また、本発明の第１３の発明は、第１のステップの通知が終了した後、所定時間ｃを経過した後に、第２のノードが第１ノードからのデータブロックを受信しなかったときは、前記第２のノードはデータ転送を中止する処理を行うものであり、または、ｃ＞ｄである所定時間ｄ以内に前記第１のノードが送信可能な状態にならなかった場合に、前記第１のノードが前記第２のノードに対して、送信不可能な状態を表す通知を送信することで、前記第２のノードは前記第１のノードからの通知待ち状態に移行すると共に、所定時間ｃの計測をやりなおすことにより、非常に速度の遅いデータ送信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することを可能とするものである。
【００３５】
以下、本発明の実施の形態について実施例として、図面を参照し説明する。
【００３６】
【実施例】
（第１の実施例）
図１は、本発明のデータ転送方法の第１の実施例であるシステムのブロック図である。図１において、１はデジタルスチルカメラなどの画像を送出する機器であるデータ送信ノード（第１のノード）、２はプリンタなど画像を受信する機器であるデータ受信ノード（第２のノード）、３はパーソナルコンピュータやセットトップボックスなどの制御ノードであり、これらの機器は同一のバスシステムに接続されている。
【００３７】
本実施例ではバスシステムとしてIEEE Std 1394-1995, Standard for a High Performance Serial Bus（以下、IEEE 1394-1995と記述する）を用い、これに接続された機器間でデータ転送を行う場合を例にとって説明する。
また、４は制御ノード３がデータ受信ノード２に対して発行するデータ受信命令、５は制御ノード３がデータ送信ノード１に対して発行するデータ送信命令であり、６はデータ送信ノード１からデータ受信ノード２に転送されるデータを表している。また、７はデータ送信ノード１がデータ送信命令５の実行結果を制御ノード３に報告するものであるデータ送信命令応答、８はデータ受信ノード２がデータ受信命令４の実行結果を制御ノード３に報告するデータ受信命令応答を表している。
【００３８】
ここで、これらのデータ受信命令４、データ送信命令５、データ送信命令応答７、データ受信命令応答８は、IEC-61883, Proposed standard for Digital Interface for Consumer Electronic Audio/Video Equipmentで定義されているFunction Control Protocol（以下、FCPと記述する）を用いてコマンドとレスポンスの伝送を行うものであり、AV/C Digital Interface Command Set（以下、AV/Cコマンドと記述する）の規約に従って実行される。
【００３９】
図２は、前記データ送信命令５およびデータ送信命令応答７のデータフォーマットを示すものである。図２において、１０はパケットヘッダ部、１１はデータブロック（コマンドフレーム）部、１２はCRC部であり、これらの１０、１１、１２によりIEEE 1394-1995で定義される非同期ライトパケットを構成する。また、１３は１６ビットのパケット送出先ノード識別子、１４はパケット送出元ノード識別子であり、これらについてもIEEE 1394-1995で定義されているものである。
【００４０】
AV/Cコマンドでは、データブロック部１１にノードへの命令または命令応答のデータが含まれる。ここで、データ送信命令５とデータ送信命令応答７は、共通のデータ形式を有するもので、データ送信ノード１はデータ送信命令５を受信し、処理を実行した後で、先に受け取っていたデータブロック送信命令５の特定フィールドの値を必要に応じて書き換えた後、このパケットをデータ送信命令応答７として制御ノード３に転送する処理を行うものである。
【００４１】
ここで、１５はデータ送信指示コマンド、１６はデータブロック再送要求ビット、１７はエラーコード格納領域、１８は最終データブロック通知ビット、１９はデータ送信先ノード識別子、２０はデータブロック番号、２１はデータブロックデータ長をそれぞれ表している。
また、図３は、前記データ受信命令４およびデータ受信命令応答８のデータフォーマットを示すものである。図３の構成要素は、図２のデータ形式と共通部分が多いので、同様の意味を持つデータフィールドの説明は省略する。図３において、２２はデータブロック受信を指示するデータブロック受信コマンドコード、２３はデータ送信元ノード識別子である。
【００４２】
以下、制御ノード３の制御のもとでデータをデータ送信ノード１からデータ受信ノード２に転送する際の動作について説明する。なお、本実施例では、一枚の静止画データを複数のデータブロックに分割して、それぞれを順次転送する場合を例にとって説明する。
図４は、静止画データの分割方法を表すものである。図４において、２４は送信ノード１の内部に記憶されている、容量が１５０kBの静止画データであり、この静止画データ２４は最大容量が３２kBである５個のデータブロックに分割される。図４において、２５は０番のデータブロック、２６は１番のデータブロック、２７は２番のデータブロック、２８は３番のデータブロックであり、これらデータブロック２５〜２８のデータ長は、３２kBである。また、２９は最後のデータブロックに相当する４番のデータブロックであり、データブロック２９のデータ長は２２kBとなる。
【００４３】
次に、図１を用いて、０番のデータブロック２５を送信ノード１から受信ノード２に転送する処理を例にとってその動作を説明する。
まず、制御ノード３は受信ノード２に対して、図３のパケット形式を持つ、データ受信命令４を発行する。このときに発行されるパケットの各データフィールドの値を（表１）に示す。ここでは、データブロック番号２０に０を設定し、０番データブロック２５の転送を命令していることを表しており、そのデータブロックデータ長２１は３２kBと設定されている。また、エラーコード格納領域１７については、データ受信ノード２が制御ノード３にデータ受信命令応答８を発行するときに、このフィールドに発生したエラーを表すエラーコードを設定するために設けられている。したがって、データ受信命令４においては、このフィールドの値が無効であることを表す、１６進数のＦＦが格納される。
【００４４】
【表１】
0003714341.tif 000002
【００４５】
データ受信命令４を受信したデータ受信ノード２は、制御ノード３に対してデータ受信命令４の発行が成功したことを通知した後、データ送信ノード１からのデータ送信待ち状態になる。
次に、制御ノード３は、データ受信命令４の発行が成功したことを確認した後、データ送信ノード１に対して、図２のパケット形式を持つ、データ送信命令５を発行する。このときに発行されるパケットの各データフィールドの値を（表２）に示す。ここでデータ受信命令４と同様の意味を持つフィールドについては説明を省略する。
【００４６】
【表２】
0003714341.tif 000003
【００４７】
ここで、データブロック再送要求ビット１６は０に設定されており、このデータブロックの転送が正常終了したら、次のデータブロック（この場合は１番のデータブロック２６）の転送が行われる予定であることを表している。また、最終データブロック通知ビット１８は、指示されたデータブロックの転送が終了した後、データ送信ノード１が制御ノード３にデータ送信命令応答８を発行するときに、次の処理で転送する予定のデータブロックが最後のデータブロックであったときに１にセットされ、そうでなければ０にセットされるものであるので、データ送信命令５においては、このフィールドの値が無効であることを表すため、ビットを１にセットしておく。
【００４８】
データ送信命令５を受信したデータ送信ノード１は、制御ノード３に対してデータ送信命令５の発行が成功したことを通知した後、データ受信ノード２に対して、０番データブロック２５の転送を開始する。
ここでのデータブロックの転送は、連続して発行される１個以上の、IEEE 1394-1995の非同期ライトパケットに分割されて送信される。
【００４９】
なお、IEEE 1394-1995では、非同期ライトパケットに対して、ACKパケットが受信側から返されるので、非同期ライトパケットが受信側に正しく送信できたかどうかを送信側が確認することが可能であり、正しく送信できていなかった場合には、前記パケットの再送処理を行うことが可能である。
さらに、IEEE 1394-1995の非同期ライトパケットは、パケット送信ノードのノード識別子をそのパケットヘッダ部に含むので、ここでデータ受信ノード２に対して、データ送信ノード１以外の他のノードからのデータ転送が行われても、データ受信ノード２はこれらのデータを無視する処理を行う。
【００５０】
また、これらの非同期ライトパケットには、受信ノード２のアドレス空間に含まれるデータ受信バッファ領域を指し示すオフセットアドレスを含む。
このデータ受信バッファ領域の先頭アドレスは、これらの処理に先立って発行されるAV/Cコマンドにより取得され、データ送信ノード１にあらかじめ通知されているものとする。ここで送信される１つ以上の非同期ライトパケットの最初のパケットに含まれるオフセットアドレスは、前記データ受信バッファ領域の先頭アドレスであり、その次のパケットに含まれるオフセットアドレスは、前記データ受信バッファ領域の先頭アドレスに、最初のデータパケットのデータ長を加えたアドレスに設定される。
【００５１】
このように、１個のデータブロックは、データ受信ノード２のデータ受信バッファ領域の先頭から順にアドレスを増加させていった形のオフセットアドレスを含むものであり、パケットの再送とは、同一のオフセットアドレスを持つパケットを複数回送信することで実現することができる。
次に、０番のデータブロック２５の転送を成功裏に終了したデータ送信ノード１は、すでに受信しているデータ送信命令５のデータブロック再送要求ビット１６が０に設定されていたことを確認し、次回に要求されるデータブロックは、０番のデータブロック２５の、次のデータブロックにあたる、１番のデータブロック２６であることを認識する。そこで１番のデータブロック２６のデータブロックデータ長が３２kBであり、これが最後のデータブロックではないことも認識する。
【００５２】
そこで、データ送信ノード１はこれらの情報を含む、データ送信命令応答７を制御ノード３に対して発行する。
ここで、データ送信命令応答は、図２のパケット形式からなり、その主要なデータフィールドの値を（表３）に示す。これらの値の内容については、基本的には（表２）の値がそのまま返されるが、パケット送信ノード識別子とパケット受信ノード識別子が入れ替わっており、データ送信ノード１から制御ノード３へのパケットであることを表している。また、データ転送中にエラーが発生していなかったので、エラーコード格納領域１７にはエラーなしのコードが設定されている。また、次に送るべきデータブロックは、３２kBのデータブロック長を持つ、１番データブロック２６であるので、データブロック番号２０には１が、データブロックデータ長２１には３２kBがそれぞれ設定されている。
【００５３】
【表３】
0003714341.tif 000004
【００５４】
一方で、０番のデータブロック２５を成功裏に受信完了したデータ受信ノード２は、受信した０番のデータブロック２５の処理を開始する。たとえば、データ受信ノード２がプリンタ機器であった場合は、受信ブロックデータを内部のプリンタエンジンに転送し、印刷処理を開始する。
０番のデータブロック２５の処理を完了した時点で、データ受信ノード２はデータ受信命令応答８７を制御ノード３に対して発行する。
【００５５】
ここで、データ受信命令応答８は図３のパケット形式からなり、その主要なデータフィールドの値を（表４）に示す。これらの値の内容については、基本的には（表１）の値がそのまま返されるが、パケット送信ノード識別子とパケット受信ノード識別子が入れ替わっており、データ受信ノード２から制御ノード３へのパケットであることを表している。また、データ転送中にエラーが発生していなかったので、エラーコード格納領域１７にはエラーなしのコードが設定されている。
【００５６】
【表４】
0003714341.tif 000005
【００５７】
なお、データ送信ノード１から制御ノード３に返されるデータ送信命令応答７と、データ受信ノード２から制御ノード３に返されるデータ受信命令応答８は、どちらが先に発行されるかは、データ送信ノード１とデータ受信ノード２の処理速度に応じて変化するため、制御ノード３は、これら２つのノードからの応答を待つ必要がある。
【００５８】
制御ノード３が、双方のノードから応答を受信した時点で、０番のデータブロック２５の転送が完了する。
次に、制御ノード３は、次のデータブロックである、１番データブロック２６の転送処理を開始するが、先にデータ送信ノード１から受信しているデータ送信命令応答７のデータブロック番号２０に、次に送るべきデータブロック番号である１が、データブロックデータ長２１には１番データブロック２６のデータブロックデータ長である３２kBの値がそれぞれ格納されているので、これらの値を用いて、１番データブロック２６の転送処理を開始することができる。
【００５９】
このように、毎回データ送信ノード１に対して次のデータブロックの長さを確認する必要がないので、制御ノード３がデータ転送処理を簡単に行うことができる。
次に、図１を用いて、データブロックの転送中に、データ受信ノード２でエラーが発生した場合の処理について説明する。ここでは、プリンタ機器であるデータ受信ノード２で紙詰まりが発生した場合を例として説明する。
【００６０】
０番データブロック２５を転送中に、データ受信ノード２で紙詰まりが発生したため、データ受信ノード２がデータの受信を継続できなくなったと判断した。
すると、データ受信ノード２は、制御ノード３に対して、エラーが発生したことを通知するデータ受信命令応答８を発行する。そのパケット形式は図３の形式をとるが、エラーコード格納領域１７に紙詰まりエラーのエラーコードが設定される。
【００６１】
一方、データ送信ノード１は、突然データ受信ノード２がデータ受信を行わなくなったことを検出し、データブロックの送信を中止して、制御ノード３に対して、エラーが発生したことを通知するデータ送信命令応答７を発行する。そのパケット形式は図２の形式をとり、図２の各データフィールドに設定される値を（表５）に示す。
【００６２】
【表５】
0003714341.tif 000006
【００６３】
エラーコード格納領域１７には、伝送タイムアウトエラーのエラーコードが設定される。さらに、エラーが発生したため０番データブロック２５の転送が失敗したため、図２のデータブロック番号２０のフィールドには０が、データブロックデータ長２１のフィールドには３２kBがそれぞれ設定され、次の転送は０番データブロック２５を行うよう、制御ノード３に要求していることを意味している。
【００６４】
そこで、制御ノード３が、データ受信ノード２での紙詰まりエラーの解除を検出したあと、先にデータ送信ノード１から送られたデータブロック番号２０とデータブロックデータ長２１の値を用いて転送を再開する。
このように、データの送受信を行っているノードで何らかのエラーが発生した場合でも、これらのエラーの通知は、直接制御ノード３に発行される。
【００６５】
また、エラーが発生したときに、データ送信ノード１がエラーの発生したデータブロックの番号とそのデータブロックデータ長を制御ノード３に通知するため、制御ノード３はこれらの情報を元にデータブロックの転送のやり直しを簡単な処理で行うことができる。
以上説明した手順を繰り返すことで、データブロックをデータ送信ノード１からデータ受信ノード２に順次転送していく。
【００６６】
次に、データ転送の終了時の動作について説明する。
データ送信ノード１が、３番のデータブロック２８の送信を成功裏に終了した時点で、データ送信ノード１は、すでに受信しているデータ送信命令５のデータブロック再送要求ビット１６が０に設定されていたことを確認し、次回に要求されるデータブロックは、３番のデータブロック２８の、次のデータブロックにあたる、４番のデータブロック２９であることを認識する。さらに、４番のデータブロック２９のデータブロックデータ長が２２kBであり、これが最後のデータブロックであることも認識する。
【００６７】
そこで、データ送信ノード１は、これらの情報を含む、データ送信命令応答７を制御ノード３に対して発行する。
ここで、データ送信命令応答は、図２のパケット形式からなり、その主要なデータフィールドの値を（表６）に示す。これらの値の内容については、基本的には（表２）の値がそのまま返されるが、次に送るべきデータブロックは、２２kBのデータブロック長を持つ、４番データブロック２９であるので、データブロック番号２０には４が、データブロックデータ長２１には２２kBがそれぞれ設定されている。さらに、次に転送する予定のデータブロックである、４番のデータブロック２９は最後のデータブロックであるので、最終データブロック通知ビット１８が１にセットされる。
【００６８】
【表６】
0003714341.tif 000007
【００６９】
前記データ送信命令応答７を受信した制御ノード３は、次のデータブロックの転送が最後の転送処理であることを、最終データブロック通知ビット１８のビットが１にセットされていることから検出し、次の４番のデータブロック２９の転送処理を行った後、全体の処理を終了する。
ここで、制御ノード３は、全体のデータ転送の回数を意識することなく、データ送信ノード１から発行されるデータ送信命令応答７の最終データブロック通知ビット１８が０であれば次々とデータブロック転送処理を行い、１であればその次のデータブロック転送処理で処理を終了すれば良いため、制御ノード３があらかじめデータブロックの数を計算しておく必要がないため、制御処理が非常に簡単である。さらには、データの転送開始時にはそのデータ長がわからないような不定長データの転送も容易に実現可能である。
【００７０】
（第２の実施例）
次に、本発明の第２の実施例について説明する。図５は本発明のデータ転送方法の第２の実施例であるシステムのブロック図である。なお、本実施例は、図１に示した第１の実施例と基本的には同等であるので、システムの構成要素およびその動作に関する詳細な説明は省略する。
【００７１】
図５に示した第２の実施例が、先に説明した第１の実施例と異なる点は、制御ノード３がデータ送信ノード１と同一のノードである点である。
図５においては、図１で図示されていた、データ送信命令５およびデータ送信命令応答７については、内部的に処理されるため、バス上にこれらのパケットデータは送信されない。
【００７２】
一方で、データ受信ノード２に対して発行されるデータ受信命令４は、図３で説明した第１の実施例の場合のパケット形式とまったく同じ形式をとる。ここで第１の実施例と本実施例の相違点は、パケット送出元ノード識別子１３の値とデータ送信元ノード識別子２３の値が同じ値となる点のみである。
この点を除けば、この第２の実施例の動作およびデータ受信ノード２の制御方法に関しては、先に説明した第１の実施例とまったく同じ処理でデータ転送処理を行うことが可能である。
【００７３】
（第３の実施例）
次に、本発明の第３の実施例について説明する。図６は本発明のデータ転送方法の第３の実施例であるシステムのブロック図である。なお、本実施例は、図１に示した第１の実施例と基本的には同等であるので、システムの構成要素およびその動作に関する詳細な説明は省略する。
【００７４】
図６に示した第３の実施例が、先に説明した第１の実施例と異なる点は、制御ノード３がデータ受信ノード２と同一のノードである点である。
図６においては、図１で図示されていた、データ受信命令４およびデータ受信命令応答８については、内部的に処理されるため、バス上にこれらのパケットデータは送信されない。
【００７５】
一方で、データ送信ノード１に対して発行されるデータ受信命令５は、図２で説明した第１の実施例の場合のパケット形式とまったく同じ形式をとる。ここで第１の実施例と本実施例の相違点は、パケット送出先ノード識別子１３の値とデータ送信先ノード識別子１９の値が同じ値となる点のみである。
この点を除けば、この第３の実施例の動作およびデータ送信ノード１の制御方法に関しては、先に説明した第１の実施例とまったく同じ処理でデータ転送処理を行うことが可能である。
【００７６】
以上、本発明の第１〜第３の実施例を比較することで、制御ノード３の制御の元で、データ送信ノード１からデータ送信ノード２へデータを転送するデータ転送方法を定義することで、様々なシステム構成に柔軟に対応可能で、かつ処理効率の良いシステムを構築することが可能となることがわかる。
（第４の実施例）
次に、本発明の第４の実施例について説明する。図７は、本発明の第４の実施例を説明するブロック図であり、１つのデータを複数のノードに並列に転送するシステムを表している。図７において、１はデータ送信ノード、３は制御ノード、５はデータ送信命令、７はデータ送信命令応答、２００は第１のデータ受信ノード、２０１は第２のデータ受信ノード、２０２は第３のデータ受信ノードである。また、３００は第１のデータ受信ノードに転送されるデータブロック、３０１は第２のデータ受信ノードに転送されるデータブロック、３０２は第３のデータ受信ノードに転送されるデータブロックである。
【００７７】
次に、図７を用いて、本発明の第４の実施例の動作について説明する。なお、図７では説明を簡単にするために、制御ノード３からデータ受信ノードに発行されるデータ受信指示命令およびデータ受信ノードから制御ノード３に発行されるデータ受信指示命令応答を省略している。
ここでは、データ送信ノード１に存在する３番のデータブロック２８を２００から２０２までの３つのデータ受信ノードへ転送する処理を表している。
【００７８】
まず、制御ノード３はデータ送信ノード１に３番目のデータブロックを第１のデータ受信ノード２００に送信するデータ送信命令５を発行する。第１のデータ受信ノード２００へのデータブロックの転送が完了したら、次に制御ノード３は送信ノード１に同じ３番目のデータブロックを第２のデータ受信ノード２０１に送信するデータ送信命令５を発行する。第２のデータ受信ノード２０１へのデータブロックの転送が完了したら、最後に制御ノード３は送信ノード１に同じ３番目のデータブロックを第３のデータ受信ノード２０２に送信するデータ送信命令５を発行する。第３のデータ受信ノード２０２へのデータブロックの転送が完了したら、次は第４のデータブロックについて、転送命令を順次発行する処理を行う。
【００７９】
このような制御ノード３の動作により、単一のデータを並列に複数のデータ受信ノードに転送することが可能であり、データ送信ノード１がテープ機器のような、送信用データブロックを準備するのに長い時間がかかる機器や、データ転送速度の遅い機器である場合には、データブロックを準備する回数が直列処理を行う場合に比べて少なくなるため、トータルの処理時間が少なくなるという利点がある。
【００８０】
また、図７で制御ノード３がデータ送信ノード１に発行するデータ送信命令のパケットのデータフィールドの値を（表７）に示す。（表７）には第１のデータ受信ノード２００へのデータ送信命令と、第２のデータ受信ノード２０１へのデータ送信命令と、第３のデータ受信ノード２０２へのデータ送信命令のそれぞれのデータフィールドの値を説明している。ここでデータブロック再送要求ビット１６の値が第１のデータ送信命令と第２のデータ送信命令では１にセットされており、第３のデータ送信命令では０が設定されている。（表８）にこれらのデータ送信命令に対するデータ送信指示命令応答のパケットのデータフィールドの値を示す。（表８）において、データブロック再送要求ビット１６が１の状態でデータ送信指示命令が発行されていたため、第１のデータ受信ノードおよび第２のデータ受信ノードの場合はデータブロック番号は命令と同じ３が返っており、データブロックデータ長は３２kBが返っている。一方、第３のデータ受信ノードではデータブロック再送要求ビット１６が０の状態でデータ送信指示命令が発行されていたため、データブロック番号は４が返っており、データブロックデータ長は２２kBが返っている。また、最終データブロック通知ビットに１がセットされ、次が最後のデータブロックであることを示している。
【００８１】
【表７】
0003714341.tif 000008
【００８２】
【表８】
0003714341.tif 000009
【００８３】
ここで、データ送信ノード１は、データブロック再送要求ビット１６に１がセットされているときは、次のデータブロックの転送準備を行わず、直前に転送したデータブロックを保持し、データブロック再送要求ビット１６に０がセットされているときは、次のデータブロックの転送準備を行う動作をする。
すなわち、データブロック再送要求ビット１６を設けることにより、本実施例のように同一のデータを複数のデータ受信ノードに送信する時にもデータ送信ノードの処理を簡単かつ高速に行うことができる。
【００８４】
（第５の実施例）
次に、本発明の第５の実施例について説明する。図８は、本発明の第５の実施例の動作を説明する図であり、１つのデータを転送する際に、データブロックの分割を行わないシステムの動作を表している。ここでは、図４に示すような、容量が１５０ＫＢの一枚の静止画データを転送する場合を例にとって説明する。本実施例では、データ送信ノード１とデータ受信ノード２との間でデータブロックへの分割処理が行われるものであり、制御ノード３はデータブロックへの分割に関与しない。なお、本実施例のシステム構成要素は、基本的には図１で説明したものと同一であるので、その説明を省略する。以下、図８を用いて本発明の第５の実施例の動作を説明する。
【００８５】
まず、制御ノード３は、送信ノード１に対してデータ送信命令５を発行することで、データ送信処理の準備を指示する。次に制御ノード３は、データ受信ノード２に対してデータ受信命令４を発行することで、データ送信処理の開始を指示する。ここでデータ送信ノード１からデータ送信ノード２へのデータ転送処理６が実行され、一枚の静止画データが転送される。なお、データ転送処理６の詳細については後述する。
【００８６】
データ転送処理６を終了した送信ノード１は、データの転送処理の実行結果を含む、データ送信命令応答７を制御ノード３に送信する。また、データ転送処理６を終了した受信ノード２は、データ転送処理の実行結果を含む、データ受信命令応答８を制御ノードに転送する。以上の手順により１枚の静止画データが転送される。
【００８７】
なお、データ送信命令応答７およびデータ受信命令応答８のどちらが先に発行されるかは、データ送信ノード１の処理速度とデータ受信ノード２の処理速度とのバランスにより決定されるものであり、本実施例とその順番が入れ替わることもありうる。
図９は、本実施例のデータ送信命令５およびデータ送信命令応答７のデータフォーマットを示すものである。図９の構成要素は、図２に示した本発明の第１の実施例と共通部分が多いので、同様の意味を持つデータフィールドの説明は省略する。図９において、１０はパケットヘッダ部、１１はデータブロック（コマンドフレーム）部、１２はCRC部である。また、１３は１６ビットのパケット送出先ノード識別子、１４はパケット送出先ノード識別子であり、これらにより、IEEE 1394-1995の非同期ライトパケットを構成する。
【００８８】
また、１５はデータ送信指示コマンド、１７はエラーコード格納領域、１９はデータ送信先ノード識別子をそれぞれ表しているものである。
ここで、図９の本実施例のデータ送信命令と、図２の第１の実施例のデータ送信命令とを比較すると、データブロック再送要求ビット１６、最終データブロック通知ビット１８、データブロック番号２０、データブロックデータ長２１の情報を含んでおらず、より簡単なフォーマットになっていることがわかる。
【００８９】
また、図１０は、本実施例の前記データ受信命令４およびデータ受信命令応答８のデータフォーマットを示すものである。図１０の構成要素は、図３のデータ形式と共通部分が多いので、同様の意味を持つデータフィールドの説明は省略する。図１０において、２２はデータブロック受信を指示するデータブロック受信コマンドコード、２３はデータ送信元ノード識別子である。
【００９０】
ここで、図１０の本実施例のデータ受信指示命令と、図３の第１の実施例のデータ受信指示命令を比較すると、データブロック番号２０およびデータブロックデータ長２１の情報を含んでおらず、より簡単なフォーマットになっていることがわかる。
次に、本実施例のデータ転送処理の詳細を説明する。図１１は、本発明の第５の実施例のデータ転送処理の動作の一部を表す図であり、図８のデータ転送処理６の先頭部分の処理内容を説明するものである。
【００９１】
なお、本実施例のデータ受信ノード２は、受信用のデータバッファを内蔵しており、その容量は２５６ｋバイトであるとする。また、データ受信ノード２が受信可能な、IEEE 1394-1995の非同期ライトパケットの最大データ長は２５６バイトであり、データ送信ノード１が送信可能な、IEEE 1394-1995の非同期ライトパケットの最大データ長は３２ｋバイトであるとする。
【００９２】
また、本実施例では、データ受信ノード２からデータ送信ノード１への通知およびデータ受信ノード１からデータ送信ノード２への通知を行うにあたり、３２ビット長のデータを含む、IEEE 1394-1995の非同期ライトパケットを発行する。
データ受信ノード２からデータ送信ノード１への通知に用いられるのパケットの３２ビットのデータの形式は、以下の（表９）の通りである。
【００９３】
【表９】
0003714341.tif 000010
【００９４】
ここで、「状態フィールド」に設定される値とその意味は以下の（表１０）の通りである。
【００９５】
【表１０】
0003714341.tif 000011
【００９６】
データ送信ノード１からデータ受信ノード２への通知に用いられるのパケットの３２ビットのデータの形式は、以下の（表１１）の通りである。
【００９７】
【表１１】
0003714341.tif 000012
【００９８】
ここで、「状態フィールド」に設定される値とその意味は以下の（表１２）の通りである。
【００９９】
【表１２】
0003714341.tif 000013
【０１００】
ここで、図１１を用いて本実施例のデータ転送処理の動作について説明する。図１１において、まず、Ａに示すように、制御ノード３からのデータ送信指示命令を受信したデータ送信ノード１は、送信しようとするデータブロックの準備を開始する。また一方で、Ｂに示すように、制御ノード３からのデータ受信指示命令を受信したデータ受信ノード２は、データ送信ノード１からのデータ受信の準備を行う。
【０１０１】
次に、ステップ１に示すとおり、データ受信ノード２は、データ受信の準備が完了した時点で、データ送信ノード１に対してデータ受信ノード２が受信可能なデータのサイズを通知する。
ここで、ステップ１で送信されるパケットの値は、以下の通りである。
【０１０２】
【表１３】
0003714341.tif 000014
【０１０３】
次に、ステップ１の通知をデータ受信ノード２から受け取ったデータ送信ノード１は、送信データブロックの準備が完了した（図１１中のＣ）後に、ステップ２に示すとおりデータブロック転送を開始する。ここで、データ送信ノード１は、データ受信ノード２が受信可能なデータブロックデータ長が６４Ｋバイトであることから、転送を行うデータブロックデータ長をこの値以下に設定する。この場合には、データ送信ノード１が送信可能な最大データパケットのデータ長が３２ＫＢであり、データ送信ノード２は１回のデータブロック転送で３２Ｋバイトを転送しようとしていることになる。
【０１０４】
次に、ステップ３に示すように、データ送信ノード１はデータ受信ノード２のバッファ領域に対する非同期ライトパケットを連続して送信することで、データブロック転送を開始する。
このステップ３において、データブロックは複数のパケットに分割して送信される。ここでデータ送信ノード１は、先のステップ１での通知から、データ受信ノード２は、最大パケットのデータ長が２５６バイトであることがあらかじめ分かっているので、３２Ｋバイトのデータブロックをそれぞれ２５６バイトのパケットに分割する。すなわち本実施例では１２８個のパケットが送信される。
【０１０５】
また、これらの非同期ライトパケットには、データ受信ノード２のアドレス空間に含まれるデータ受信バッファ領域を指し示すオフセットアドレスを含み、これらのオフセットアドレスは、データ受信バッファ領域の先頭アドレスから、順にインクリメントされるものであることは、第１の実施例と同様である。
次に、データブロック転送が終了したら、ステップ３に示すとおり、データ送信ノード１は、転送したデータ長を含むパケットを送信することで、データブロック転送の終了をデータ受信ノード２に通知する。
【０１０６】
この時のパケットに含まれる情報は以下の通りである。
【０１０７】
【表１４】
0003714341.tif 000015
【０１０８】
ステップ３の通知が終了したら、データ送信ノード１は、Ｄに示すように、次のデータブロック転送に備えた準備を開始する。一方、データ受信ノード２は、Ｅに示すように、先ほど受信したデータブロックの処理を開始する。本実施例ではデータ受信ノード２はプリンタユニットであるので、図示しないバッファ領域に格納されたデータブロックを、プリンタ印写エンジンに送出する処理を開始する。
【０１０９】
次に、データ受信ノード２がデータブロックの処理を終了した段階で、ステップ１ａに示すように、次のデータブロックを受信する準備ができたことを通知する。なお、ここでの通知においては、ステップ１と同様のパケットが送信される。
また、Ｆに示すように、次のデータブロックの準備が完了した段階で、データ送信ノード１はステップ２ａに示すように、次のデータブロックのデータブロックの転送を開始する。
【０１１０】
ここで、再びデータブロックが複数のパケットに分割され送信されるが、これらのパケットに含まれる受信ノード２のオフセットアドレスもまた、前回のデータブロック転送と同様に、データ受信バッファ領域の先頭アドレスから順にインクリメントされるものである。
このように、以上説明したステップ１からステップ３の動作を繰り返すことで、１枚の静止画データが複数のデータブロックに分割されて転送される。
【０１１１】
次に、最後のデータブロックの処理を説明する。図１２は、最後のデータブロックの転送処理が終わった後の終了動作を説明する図である。
ステップ３のデータブロックの転送が終了した後、データ送信ノード１は次のデータブロックの準備を始めるが、Ｇで表されるように、送信するデータがないことがわかる。
【０１１２】
次に、データ受信ノード２は、ステップ１の通り受信可能サイズの通知を送信してくるので、これに応答してステップ３ｂで、データ送信ノード１は、転送終了指示を送信する。
この時のパケットに含まれる情報は以下の通りである。
【０１１３】
【表１５】
0003714341.tif 000016
【０１１４】
次に、ステップ３ｂの通知を受けたデータ受信ノード２は、ステップ１ｂに示されるように、転送終了の受領の通知を送信する。
このときのパケットに含まれる情報は以下のとおりである。
【０１１５】
【表１６】
0003714341.tif 000017
【０１１６】
そこで、Ｈに示されるように、ステップ１ｂの通知を受信したデータ送信ノード１は、制御ノード３に対してデータ送信指示命令の応答を通知することで、１枚の画像の送信処理を終了する。なおこのＨは、図８のデータ送信命令応答７に相当する。
また、Ｉに示されるように、ステップ１ｂの通知を送信したデータ受信ノード２は、制御ノード３に対してデータ受信指示命令の応答を通知することで、一枚の画像の受信処理を終了する。なおこのＩは、図８のデータ受信命令応答８に相当する。
【０１１７】
このように、データ送信ノード１からデータ受信ノード２へのデータ転送を、（１）前記第２のノードがデータ受信可能な状態を表す通知を前記第１のノードに送信する第１のステップ、
（２）前記第１のノードが送信データブロックの準備が完了した時点で、前記第２のノードへデータブロックを転送する動作を行う第２のステップ、
（３）前記第１のノードが前記第２のノードに前記データブロックの転送の終了を表す通知を送信する第３のステップ、
の上記ステップを繰り返して実行することにより、制御ノードがデータ送信ノードおよびデータ受信ノードのそれぞれへ発行するコマンドの発行数が１個ずつで済むため、制御ノードの処理を簡単にすることが可能である。さらには、データ送信ノードが送信しようとするデータブロックの準備の完了と、データ受信ノードがデータブロック受信の準備完了をそれぞれ相手に通知することにより、さまざまな処理速度のデータ送信機器とデータ受信機器との組み合わせに容易に対応することが可能となる。
【０１１８】
また、第１のステップでの通知に、データ受信ノードが第２のステップで受信可能な最大データブロックデータ長を含むことにより、この情報を元にデータ送信ノードがデータ受信ノードが受信可能なデータブロック長を直接検出できるため、コマンドを発行する制御ノードが、データブロックのデータ長を管理する必要がない簡単なデータ転送が可能となる。
【０１１９】
また、第２のステップでのデータブロック転送が、１個以上のパケットに分割されて転送される場合に、第１のステップでの通知が、データ受信ノードが１個のパケットで受信可能な最大データ長を含むことにより、データ送信ノードが第２のステップで転送するデータを、データ受信ノードの受信能力に応じてパケット分割を容易に行えるため、さまざまなパケット受信能力を持つ機器に容易に対応することが可能となる。
【０１２０】
なお、本実施例では、データ受信ノード２の最大データブロックサイズおよび最大パケットデータ長が変化しない場合を例にとって説明したが、データ受信ノード２の内部処理状況に応じて、これらの値を可変とすることも可能である。
例えば、データ送信ノード１が、最大２５６Ｋバイトのデータブロックを送信するだけの能力を有しており、一方、データ受信ノード２は最大２５６Ｋバイトの最大データブロックを受信するだけの能力を有しているにもかかわらず、データ受信処理を同時に２つ処理していたため、データ送信ノード１には、１２８Ｋバイトの処理能力であるという応答を返している。この場合は、データブロックサイズが１２８Ｋバイトのデータ転送処理が行われる。
【０１２１】
ここで、データ受信ノード２が処理していたもう１つのデータ受信処理が完了した時点で、いままで利用できなかった１２８Ｋバイトのメモリが利用できるようになった後に、データ受信ノード２は、通知する最大データブロックサイズを１２８Ｋバイトから２５６Ｋバイトに変更する。次にデータ送信ノード１は、データ受信ノード２が２５６Ｋバイトの受信が可能になったことを検出すると、データ受信ノード２は２５６Ｋバイトのデータブロックのデータ転送処理を開始することができる。
【０１２２】
また、同様にデータ受信ノード２が最大パケットデータ長を変化させることにより、データ送信ノード１が、もっとも大きいデータ長を持つデータパケットを送信することにより、より効率の良いデータ転送を実現することができることは、いうまでもない。
このように、第１のステップでの通知に含まれる、第２のノードが第２のステップで受信可能な最大データ長を、第２のノードの内部処理状況に応じて可変の値を返すことにより、第２のノードのメモリなどの内部資源の最適な管理・活用が可能となる。
【０１２３】
次に、データ受信ノード２が非常にデータ処理速度の遅い機器であったときの動作およびデータ受信ノード２が反応不可能になった場合のエラー処理について、図１３を用いて説明する。
図１３において、ステップ３で表されるデータブロック長の通知が行われ、データブロックの転送が終了した後、データ受信ノード２はデータブロックの処理を開始する。これと同時に、データ送信ノード１は、内部のタイマーをスタートさせ、時間計測を開始する。データ送信ノード１は時間ａを経過しても、データ受信ノード２からの応答がないときには、データ受信ノード２が、反応不可能なエラー状態になったと判断する処理を行う。
【０１２４】
ここでデータ受信ノード２が、ａ＞ｂである、時間ｂが経過した後も、データの処理を完了できなかったときは、ステップ１ｃ−１で表される受信不可能状態の通知を発行する。このステップ１ｃ−１で送信されるパケットに含まれる情報は以下の通りである。
【０１２５】
【表１７】
0003714341.tif 000018
【０１２６】
ステップ１ｃ−１の通知を受信したデータ送信ノード１は、タイマーの値をリセットさせ、再び時間計測を開始する。
ここで、ステップ１ｃ−１の通知から時間ｂが経過するまえに、データ受信ノード２がデータ受信準備完了状態になった場合には、図１１のステップ１で表される受信可能サイズの通知を行い、以降は図１１の手順に従って処理を継続する。
【０１２７】
しかしながら、さらに時間ｂが経過しても、まだデータの処理が完了していないときには、ステップ１ｃ−２に示されるような受信不可能状態の通知を発行する。なお、ここで発行されるパケットは、ステップ１ｃ−１と同等のものである。
ここで再びデータ送信ノード１は、タイマーをリセットして、時間計測をやり直す。
【０１２８】
ここで、Ｊに示すような、ステップ１ｃ−２の通知を行った後、データ受信ノード２が反応不可能になるような致命的エラーが発生した場合には、データ送信ノード１はステップ１ｃ−２の通知から時間ａが経過した後、データ受信ノード２が反応不可能な状況になったことを検出し、Ｋに示すように、制御ノード３に送信処理が失敗したことを通知し、データ転送処理が中止される。
【０１２９】
Ｋの通知を受け取った制御ノード３は、データ受信ノード２の状態を調査し、必要なエラー状態を取得する。また、制御ノード３がデータ受信ノード２の状態を調査しようとしても、データ受信ノード２が、やはり反応しないような場合には、ユーザに対してデータ受信ノード２が無反応状態のエラーになったことを通知するなどの処理を行う。
【０１３０】
なお、図には示していないが、Ｊの段階で、データ受信ノード２がエラー発生を検出し、かつデータ送信ノード１への応答が可能であったときには、以下に示すようなパケットを送信することで、データ転送を中断することも可能である。
【０１３１】
【表１８】
0003714341.tif 000019
【０１３２】
このような場合には、データ送信ノード１とデータ受信ノード２の両方が、制御ノード３に対して、エラーの発生を通知する処理を行う。
以上説明したように、第３のステップのデータブロック長の通知が終了した後、所定時間ａを経過した後に、第１のノードが第２のノードからの通知を受信しなかったときは、前記第１のノードはデータ転送を中止する処理を行うものであり、または、ａ＞ｂである所定時間ｂ以内に前記第２のノードが受信可能な状態にならなかった場合に、前記第２のノードが前記第１のノードに対して、受信不可能な状態を表す通知を送信することで、前記第１のノードは前記第２のノードからの通知待ち状態に移行すると共に、所定時間ａの計測をやりなおすことにより、非常に速度の遅いデータ受信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することが可能となる。
【０１３３】
次に、データ送信ノード１が非常にデータ処理速度の遅い機器であったときの動作およびデータ送信ノード１が反応不可能になった場合のエラー処理について、図１４を用いて説明する。
図１４において、ステップ３で表されるデータ転送長の通知が終了した後、データ受信ノード２は、受信したデータブロックの処理を行い、ステップ１に示されるとおり、受信可能サイズの通知および受信準備完了の通知を行う。
【０１３４】
一方、データ送信ノード１はステップ３のデータブロックの転送が終了した後、次のデータブロックの準備を開始する。ステップ１の通知を受信したと同時に、データ送信ノード１は、内部のタイマーをスタートさせ、時間計測を開始する。データ受信ノード２は時間ｃを経過しても、データ送信ノード１からの応答がないときには、データ送信ノード１が、反応不可能なエラー状態になったと判断する処理を行う。
【０１３５】
ここでデータ送信ノード１が、ｃ＞ｄである、時間ｄが経過した後も、データの準備を完了できなかったときは、ステップ２ｃ−１で表される送信不可能状態の通知を発行する。このステップ２ｃ−１で送信されるパケットに含まれる情報は以下のとおりである。
【０１３６】
【表１９】
0003714341.tif 000020
【０１３７】
ステップ２ｃ−１の通知を受信したデータ受信ノード２は、タイマーの値をリセットさせ、再び時間計測を開始する。
ここで、ステップ２ｃ−１の通知から時間ｄが経過する前に、データ送信ノード１がデータ送信準備完了状態になった場合には、図１１のステップ２で表される転送データ長の通知を行い、以降は図１１の手順に従って処理を継続する。
【０１３８】
しかしながら、さらに時間ｄが経過しても、まだデータの準備が完了していないときには、ステップ２ｃ−２に示されるような送信不可能状態の通知を発行する。なお、ここで発行されるパケットは、ステップ２ｃ−１と同等のものである。
ここで再びデータ受信ノード２は、タイマーをリセットして、時間計測をやり直す。
【０１３９】
ここで、Ｌに示すような、ステップ２ｃ−２の通知を行った後、データ送信ノード１が反応不可能になるような致命的エラーが発生した場合には、データ受信ノード２はステップ２ｃ−２の通知から時間ｃが経過した後、データ送信ノード１が反応不可能な状況になったことを検出し、Ｍに示すように、制御ノード３に受信処理が失敗したことを通知し、データ転送処理が中止される。
【０１４０】
Ｍの通知を受け取った制御ノード３は、データ送信ノード１の状態を調査し、必要なエラー状態を取得する。また、制御ノード３がデータ送信ノード１の状態を調査しようとしても、データ送信ノード１が、やはり反応しないような場合には、ユーザに対してデータ送信ノード１が無反応状態のエラーになったことを通知するなどの処理を行う。
【０１４１】
なお、図には示していないが、Ｌの段階で、データ送信ノード１がエラー発生を検出し、かつデータ受信ノード２への応答が可能であったときには、以下に示すようなパケットを送信することで、データ転送を中断することも可能である。
【０１４２】
【表２０】
0003714341.tif 000021
【０１４３】
このような場合には、データ送信ノード１とデータ受信ノード２の両方が、制御ノード３に対して、エラーの発生を通知する処理を行う。
以上説明したように、第１のステップの通知が終了した後、所定時間ｃを経過した後に、第２のノードが第１ノードからの通知を受信しなかったときは、前記第２のノードはデータ転送を中止する処理を行うものであり、または、ｃ＞ｄである所定時間ｄ以内に前記第１のノードが送信可能な状態にならなかった場合に、前記第１のノードが前記第１のノードに対して、送信不可能な状態を表す通知を送信することで、前記第２のノードは前記第１のノードからの通知待ち状態に移行すると共に、所定時間ｃの計測をやりなおすことにより、非常に速度の遅いデータ送信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することが可能となる。
【０１４４】
なお、以上の実施例では、AV/Cコマンドを用いて命令および応答の伝送を行う場合を例にとって説明したが、これ以外のコマンド伝送方式を用いても良い。
また、ノードが接続されるバスとして、IEEE 1394-1995を用いた場合を例にとって説明したが、これに限定されるものではなく、複数の機器が同時に接続可能なバスであれば良い。
【０１４５】
また、データブロックデータ長が、最後のデータブロックを除いて同じになる場合を例にとって説明したが、必ずしもこれに限定されるものではなく、たとえばすべてのデータブロックのデータ長が異なっても良い。このような場合は、送信されるデータブロックのデータ長は、第１のステップで送信される受信可能サイズ以下に設定され、これを超えるデータパケットは、データ受信ノード２によって無視または拒絶される。
【０１４６】
また、制御ノードが、データ送受信を行うノードと独立して存在する場合と、データ送信ノードに含まれる場合と、データ受信ノードに含まれる場合について説明したが、実際のシステム構成では、独立した制御ノードと、制御ノードを含むデータ送信ノードと、制御ノードを含むデータ受信ノードの３つの機器でシステムを構成することも可能である。このような場合では、ユーザがボタンを操作するなどのオペレーションを行った機器が制御ノードの機能を果たす。
【０１４７】
また、データ送信ノードとデータ受信ノードは、必ずしもそれぞれがデータの送信と受信という固定された機能を持つことを表しているのではなく、制御ノードにより発行されるコマンドの種類によって、あるノードがデータ送信ノードになったり、データ受信ノードになったりする構成も可能である。たとえば２台のデジタルスチルカメラを接続し、相互にデータを交換するようなシステムが実現可能可能であることはいうまでもない。
【０１４８】
【発明の効果】
本発明のデータ転送方法を用いることにより、様々なシステム構成に柔軟に対応可能で、処理の効率が良く、エラー処理が簡単なシステムを実現することが可能である。
【図面の簡単な説明】
【図１】本発明の第１の実施例によるデータ転送方法を用いたシステムのブロック図
【図２】同実施例によるデータ送信命令およびデータ送信命令応答のデータフォーマットを示す図
【図３】同実施例によるデータ受信命令およびデータ受信命令応答のデータフォーマットを示す図
【図４】同実施例による静止画データの分割方法を表す図
【図５】本発明の第２の実施例によるデータ転送方法を用いたシステムのブロック図
【図６】同第３の実施例によるデータ転送方法を用いたシステムのブロック図
【図７】同第４の実施例によるデータ転送方法を用いたシステムのブロック図
【図８】同第５の実施例によるデータ転送方法を用いたシステムの動作を表す図
【図９】同実施例によるデータ送信命令およびデータ送信命令応答のデータフォーマットを示す図
【図１０】同実施例によるデータ受信命令およびデータ受信命令応答のデータフォーマットを示す図
【図１１】同実施例によるデータ転送処理の動作の一部を表す図
【図１２】同実施例によるデータ転送処理の終了動作を表す図
【図１３】同実施例によるデータ送信処理が遅れた場合およびデータ送信処理が不可能になった場合の動作を表す図
【図１４】同実施例によるデータ受信処理が遅れた場合およびデータ受信処理が不可能になった場合の動作を表す図
【図１５】従来のデータ転送方法による静止画データシステムの第１の例を表すブロック図
【図１６】従来のデータ転送方法による静止画データシステムの第２の例を表すブロック図
【図１７】従来のデータ転送方法による静止画データシステムの第３の例を表すブロック図
【図１８】従来の改良されたデータ転送方法を用いた静止画データシステムの例を表すブロック図
【符号の説明】
１  データ送信ノード
２  データ受信ノード
３  制御ノード
４  データ受信命令
５  データ送信命令
６  データ
７  データ送信命令応答
８  データ受信命令応答
【図１】
0003714341.tif 000022
【図２】
0003714341.tif 000023
【図３】
0003714341.tif 000024
【図４】
0003714341.tif 000025
【図５】
0003714341.tif 000026
【図６】
0003714341.tif 000027
【図７】
0003714341.tif 000028
【図８】
0003714341.tif 000029
【図９】
0003714341.tif 000030
【図１０】
0003714341.tif 000031
【図１１】
0003714341.tif 000032
【図１２】
0003714341.tif 000033
【図１３】
0003714341.tif 000034
【図１４】
0003714341.tif 000035
【図１５】
0003714341.tif 000036
【図１６】
0003714341.tif 000037
【図１７】
0003714341.tif 000038
【図１８】
0003714341.tif 000039