はじめに、本発明の通信システムの概要について、図21から図30を参照しながら説明すると以下の通りである。
〔概要〕
(通信層)
後述する各実施の形態では、本発明に係る通信システムの送信機および受信機の構成および動作について、OSI7層モデルに基づいて詳細に説明する。ここで、OSI7層モデルとは、いわゆる「OSI基本参照モデル」「OSI階層モデル」とも呼ばれているものである。
OSI7層モデルでは、異機種間のデータ通信を実現するために、コンピュータの持つべき通信機能が7階層に分割され、各層ごとに標準的な機能モジュールが定義されている。
具体的には、第1層(物理層)は、データを通信回線に送出するための電気的な変換や機械的な作業を受け持つ。第2層(データリンク層)は、物理的な通信路を確保し、通信路を流れるデータのエラー検出などを行う。第3層(ネットワーク層)は、通信経路の選択や通信経路内のアドレスの管理を行う。第4層(トランスポート層)は、データ圧縮や誤り訂正、再送制御などを行う。第5層(セッション層)は、通信プログラム同士がデータの送受信を行うための仮想的な経路(コネクション)の確立や解放を行う。第6層(プレゼンテーション層)は、第5層から受け取ったデータをユーザが分かりやすい形式に変換したり、第7層から送られてくるデータを通信に適した形式に変換したりする。第7層(アプリケーション層)は、データ通信を利用した様々なサービスを人間や他のプログラムに提供する。
各実施の形態に係る通信システムの各通信層も、上記OSI7層モデルの対応する階層と同等の機能を有する。ただし、各実施の形態では、上記通信システムは、セッション層とプレゼンテーション層とを1つにした、6階層の構造となっている。また、アプリケーション層については、説明を省略する。
本発明は、送信機および受信機が複数の通信層の接続を確立して通信を行う通信システムに広く適用可能である。すなわち、通信機能の分割はOSI7層モデルに従っていなくてもよい。また、通信層の数は、接続すべき通信層が複数であれば、任意に選択できる。
また、本発明は、フレームに通し番号を付与して、フレーム単位の再送を一括送信データごとに行うことを可能とするものであるため、エラーの少ない通信においては、通信効率が高く、また仮にエラーが発生した場合でも、再送により通信の信頼性を確保することができる。よって、本発明は、短時間に大量のデータを送信を行いたい通信、例えば赤外線による無線通信に特に適している。ただし、本発明は、他の無線通信、および、有線通信においても効果的である。
各実施の形態では、説明の便宜上、本発明の一適用例であるIrSimpleに基づいて説明する。しかし、本発明はIrSimpleに限定されるものではない。なお、IrSimpleとは、従来のIrDAの一部機能を改良したものである。
各実施の形態では、IrSimpleに則って、データリンク層、ネットワーク層、トランスポート層、セッション層+プレゼンテーション層を、それぞれ、LAP、LMP、SMP、OBEXと表記することがある。また、通信層を送信機、受信機で区別する場合には、送信機に“P”、受信機に“S”と付記する。例えば、“LAP(P)”とは、送信機のデータリンク層を意味する。
(IrDAとIrSimpleとの比較)
以下、本発明の従来技術であるIrDAと、本発明の一適用例であるIrSimpleとを比較する。
1.IrDAにおけるデータ転送の流れ
図21に、従来IrDAでのデータ転送の流れを示す。なお、以下の説明においては、IrDAプロトコルスタックとして、IrLAP、IrLMP、TinyTP(図中でのTTP)、OBEXが存在するものとする。
(1)IrLAP層は、データ転送において、エラー時に再送を行うことで、上位層に対して、データの信頼性を保証するモードと、エラー時に再送を行わず、上位層に対して、データの信頼性を保証しないモードが存在する。本説明においては、前述の信頼性を保証するモードでのデータ転送を行うこととする。また、信頼性を保証するために、IrLAPでは、I(Information)フレームを用いてデータ転送を行う。
図22(a)に、IrLAPにおけるIフレームのフレームフォーマットを示す。
Iフレームには、フレームを受信する機器において、フレームの抜けを検出できるようにするために、通し番号が振られる。この通し番号は、図22(a)のNsフィールド領域に割り当てられる。
IrLAPでは、Iフレームを用いてデータ転送を行う場合、一度に送信可能なフレーム数(ウィンドウサイズ)に制限を設けており、ウィンドウサイズは最大7となる。このウィンドウサイズは、接続時に、一次局と二次局が、それぞれ自機器が一度に受信可能なフレーム数(ウィンドウサイズ)を対向局に通知する。そして、対向局のウィンドウサイズを超えるフレームを連続して送信してはいけないこととなっている。本説明においては、一次局のウィンドウサイズは1、二次局のウィンドウサイズは2としている。
また、フレームを受信した機器が受信成功が否かを通知するために、Nrフィールドが存在する。連続して受信したフレームが全て正常であった場合は、次に送信して欲しい通し番号をNrフィールドに設定して、送信する。例えば、Nsが1、2のフレームを連続受信して、いずれも正常受信した場合は、Nrフィールドに3を設定して送信する。
一方、受信フレームに誤りがあった場合は、再送して欲しいフレームの通し番号をNrフィールドに設定して送信する。例えば、Nsが1、2のフレームを連続受信して、2のフレームにエラーがあったと判別された場合、Nrフィールドに2を設定して送信する。
フレームを送信した機器は、フレームを連続送信後、受信フレームのNrフィールドを監視し、Nrフィールドが自機器の送信したフレームの内、最後に送信したフレームのNsの値より1だけ大きい値である場合は、前回のフレーム連続送信がすべて正常に完了したことを認識し、次のフレーム送信を開始する。また、受信フレームのNrフィールドが自機器の送信したフレームの内のいくつかの通し番号の値である場合は、その通し番号から再送を行うこととなる。このとき、Nsフィールドも、Nrフィールドの値から振り直す。
上述の手順により、IrLAP層におけるIフレームを用いた再送が可能となる。IrLAPの再送を用いる場合、ウィンドウサイズはIrLAPの規格上、最大7であるため、8以上のフレームを連続送信することは不可能である。
(2)IrLMP層は、アプリケーションごとの論理的なチャネル(LSAP:Link Service Access Point)を上位層に提供する層である。
図23に、IrLMPのフレームフォーマットを示す。
フレームを送信する側のIrLMP層では、上位層(TinyTP層)からのデータとIrLMPフレームに配置するとともに、送信先の論理的なチャネル(DLSAP:Destination Link Service Access Point)と送信元の論理的なチャネル(SLSAP:Source Link Service Access Point)をIrLMPヘッダとして、配置する。
一方、フレームを受信する側のIrLMP層では、下位層からの受信フレームのDLSAPフィールドを監視することにより、どの上位層アプリケーションのデータであるかを判別し、対応する上位層アプリケーションに対して、受信フレーム内データを渡す。
(3)TinyTP層は、上位層(OBEX層)データの分割・結合およびフロー制御を行う層である。
図24に、TinyTP層のフレームフォーマットを示す。
TinyTP層は、上位層から送信データが渡されると、下位層(LAP層)の最大フレーム長を超えない範囲で、送信データを分割して、下位層(LMP層)にデータを渡す。また、受信する側においては、下位層(IrLMP層)からの受信フレーム内のデータを結合し、上位層(OBEX層)に渡す。また、受信バッファがあふれるのを未然に防ぐために、自局が受信可能なフレーム数をクレジットという形で、対向局に通知する。そして、対向局のクレジットを超えるフレームを連続して送信してはいけないことになっている。
(4)OBEX層は、オブジェクト交換用のプロトコルである。
図25に、OBEX層のフレームフォーマットを示す。
図25(a)がOBEX層のPutコマンドのフォーマットである。OBEX層は、ファイルの送信を行う場合は、Putコマンドを用いて送信を行う。また、送信するファイルのファイル名、ファイルサイズなどの情報も合わせて付加される。
また、図25(b)および(c)が、CONTINUEレスポンスおよびSUCCESSレスポンスのフレームフォーマットである。ファイルの受信を行う側は、Putコマンド受信ごとに、レスポンスを返す必要がある。最終でないPutコマンドを受信した場合は、CONTINUEレスポンスを、また最終のPutコマンドを受信した場合は、SUCCESSレスポンスをそれぞれ返信する。
つづいて、従来のIrDAにおける、OBEXのPutコマンドを用いたデータ転送の手順について説明する。
一次局のOBEXにおいてファイル送信要求が発生すると、一次局のOBEX層(以下、OBEX(P))は、下位層である一次局のTinyTP層(以下、TTP(P))に対して、Putコマンドを送信データとして渡す。本説明においては、Putコマンドが、dataP0、dataP1、dataP2、dataP3で構成されているものとする。
これを受けたTTP(P)は、下位層であるLAP層の最大データ長に送信データを分割する。本説明においては、TTP(P)において、dataP0、dataP1、dataP2、dataP3に分割されるものとする。また、TTP(P)の受信可能クレジット数は1であるため、クレジットを1とする。前記クレジットおよび分割データを用いて、TTPフレームとして生成し、下位層である一次局のIrLMP層(以下、LMP(P))に渡す。
これを受けたLMP(P)は、論理チャネル情報(LSAPヘッダ)を付加して、LMPフレームを生成し、下位層である一次局のIrLAP層(以下、LAP(P))に渡す。
これを受けたLAP(P)は、Iフレームを用いて、データ転送を行う。本説明においては、二次局のウィンドウサイズが2であることから、Nsが0、1のIフレームを連続送信している。
一方、二次局のIrLAP層(以下、LAP(S))では、前述のIフレームを連続受信すると、Nsフィールドを監視しながら、フレームの抜けを検出するとともに、Iフレーム内の上位層データを上位層である二次局のIrLMP層(以下、LMP(S))に渡す。また、Iフレームの連続受信成功通知を行う必要があるが、本説明においては、この段階では、Nrフィールドを2にした連続受信成功通知フレームは、送信しない。
前述のフレーム受信通知を受けたLMP(S)は、LSAPヘッダを除去した後、上位層データを上位層である二次局のTinyTP層(以下、TTP(S))に渡す。
これを受けたTTP(S)は、受信フレーム内の上位層データを結合する。本説明においては、OBEX層に渡すデータの単位をdataP0、dataP1、dataP2、dataP3を結合したデータサイズ相当としているため、dataP0、dataP1を結合し終わった時点では、OBEX層に対してデータ受信の通知は行っていない。また、TTP(S)の受信可能クレジット数2分のデータ処理(dataP0、dataP1の結合処理)が完了したため、対向局に対して、クレジットを2として、自機器が、2つのフレームを受信可能であることを通知するために下位層にTinyTPフレームを渡す。
これを受けたLMP(S)は、LSAP情報をLMPヘッダとして付加し、LAP(S)に渡す。
これを受けたLAP(S)は、Iフレームを用いて、データ転送を行う。このとき、前述で送信を保留していたLAPのIフレーム連続受信成功通知のためのNrフィールドに、次に送信して欲しいNsフィールドの値2を設定して送信する。また、Nsフィールドには、二次局の送信フレームの通し番号を合わせて設定する。
これを受けたLAP(P)は、Nrフィールドを監視することにより、前回のIフレームの連続送信が正常に終了しているかどうかを確認する。本説明の場合、Nrフィールドが2であるため、前回送信したNsフィールドが0および1のIフレームを二次局が正常に受信できたことを認識する。また、受信Iフレーム内に上位層データが入っているため、LMP(P)に上位層データを渡す。
これを受けたLMP(P)は、LSAPヘッダを除去した後、上位層データをTTP(P)に渡す。
これを受けたTTP(P)は、受信フレーム内の対向局のクレジットが2であることから、対向局のTTP(S)が2つのフレームを受信可能であると認識し、上位層からの送信データの内、残りの分割データdataP2、dataP3にそれぞれ一次局のクレジット情報を付加し、LMP(P)に渡す。
これを受けたLMP(P)は、LSAPヘッダを付加し、LAP(P)に渡す。
これを受けたLAP(P)は、2つのIフレームを用いて、上位層からの2つの送信データをそれぞれ送信する。このとき、前述の二次局からのIフレームの受信が正常に行えたことを通知するためにNrフィールドに次の二次局のNsフィールドの値を設定するとともに、Nsフィールドには、前回一次局が最後に送信したIフレームのNsフィールドの値に1だけ足した値を設定する。
これを受けたLAP(S)は、Nrフィールドを監視することにより、前回二次局が送信したIフレームを一次局が正常に受信したことを認識するとともに、受信Iフレーム内の上位層データをLMP(S)に渡す。
これを受けたLMP(S)は、LSAPヘッダを除去し、TTP(S)に渡す。
これを受けたTTP(S)は、受信フレーム内の上位層データを結合する。前述の結合された上位層データ(dataP0、dataP1)に今回受信したdataP2、dataP3を結合する。この時点で、上位層OBEX層に渡すデータサイズに達しているため、上位層である二次局のOBEX層(以下、OBEX(S))に上位層データを渡す。また、この時点で、受信データの処理が完了しているため、クレジットを2として、下位層に渡してもよいが、本発明においては、この送信処理は保留する。
これを受けたOBEX(S)は、下位層からのデータを解析し、Putコマンドであることを確認すると、一次局のOBEXに対して応答を返すために、応答フレームを生成し、TTP(S)に渡す。本説明の場合、受信したコマンドが最終でないPutコマンドであるため、CONTINUEコマンドを生成することとなる。
これを受けたTTP(S)は、前述のクレジットと上位層からのデータを合わせてTinyTPフレームを生成し、LMP(S)に渡す。
これを受けたLMP(S)は、LSAPヘッダを付加し、LAP(S)に渡す。
これを受けたLAP(S)は、Iフレームを用いて、データ転送を行う。また、このときNrフィールドに前回のIフレーム受信成功の旨を設定し、またNsフィールドには通し番号を設定する。
これを受けたLAP(P)は、Nrフィールドの監視により、前回送信した2つのIフレームが二次局で正常に受信できたことを認識するとともに、受信Iフレーム内の上位層データをLMP(P)に渡す。
これを受けたLMP(P)は、LSAPヘッダを除去し、上位層データをTTP(P)に渡す。
これを受けたTTP(P)は、受信フレーム内のデータをOBEX(P)に渡す。
これを受けたOBEX(P)は、受信フレームを解析する。本説明においては、CONTINUEレスポンスを受信しているため、前回のPutコマンドによるデータ転送(dataP0からdataP3)が正常に二次局に転送できたことを認識する。
以上により、最終でないPutコマンドの場合の通信が終了する。
最終のPutコマンドの通信の場合は、前述のOBEX(S)から返信されるレスポンスがSUCCESSレスポンスに変わるだけで、その他の通信の流れは基本的に同じである。
上記のとおり、本説明の条件においては、通信路を流れるフレーム数は12個となる。
2.IrSimpleの双方向通信におけるデータ転送の流れ
図26に、本発明の適用例であるIrSimpleの双方向通信でのデータ転送の流れを示す。なお、以下の説明においては、一次局と二次局は、それぞれIrLAP層、IrLMP層、IrSMP層(Infrared Sequence Management Protocol)、OBEX層をサポートしているものとする。
(1)IrLAP層においては、UIフレームを用いて、データ転送を行う。前述のとおり、UIフレームを用いると、ウィンドウサイズの制限がなくなるため、Iフレームを用いた場合に一度に連続送信可能なフレーム数7よりも多くのフレームを連続送信することが可能となる。このことにより、フレーム受信後、送信を開始するまでに待たなければならない時間(Min Turn Around Time)の累積によるデータ転送効率の削減が期待できる。
図22(b)に、LAP層のUIフレームのフレームフォーマットを示す。
図22(b)に示すように、UIフレームには、Iフレーム(図22(a)に)に存在していたNr、Nsフィールドが存在していない。これは、フレームに通し番号が振られていないことを示しており、LAP層レベルでのフレーム抜けの検出が行えず、また、再送要求すべきフレームの通し番号の設定を行うこともできないことを示している。すなわち、UIフレームを用いた転送の場合は、LAP層レベルでの上位層データの信頼性は保証していない。
(2)IrLMP層は、アプリケーションごとの論理的なチャネル(LSAP:Link Service Access Point)を上位層に提供する層である。
図23に示したように、フレームを送信する側のIrLMP層では、上位層(TinyTP層)からのデータとIrLMPフレームに配置するとともに、送信先の論理的なチャネル(DLSAP:Destination Link Service Access Point)と送信元の論理的なチャネル(SLSAP:Source Link Service Access Point)をIrLMPヘッダとして、配置する。
一方、フレームを受信する側のIrLMP層では、下位層からの受信フレームのDLSAPフィールドを監視することにより、どの上位層アプリケーションのデータであるかを判別し、対応する上位層アプリケーションに対して、受信フレーム内データを渡す。
(3)IrSMP層は、上位層のデータを分割・結合する。また、前述のとおり、IrLAP層にてUIフレームを用いて、データ転送を行い、IrLAP層での再送制御を行わないため、このIrSMP層にて再送制御を行う。
具体的には、一次局のIrSMP層(以下、SMP(P))では、上位層データを下位層のUIフレームの最大データ長以下に分割した後、分割データを複数のフレーム内に配置して、LMP(P)に渡す。その際、通し番号、一括送信終了フラグ、データ終了フラグをSMPヘッダとして付加する。
図27(a)に、IrSimpleの双方向通信の場合のSMPフレームのフレームフォーマットを示す。
通し番号(Sequence Number)は、フレームごとに1ずつ増えていく。通信中にエラーが発生した場合には、二次局から送られてくる再送要求通し番号に番号を振り直して、再びSMPフレームを送信する。
一括送信終了フラグ(図中のBL:Block Last)は、接続時に二次局から通知された受信バッファサイズを元に、二次局の受信バッファのサイズを超えない範囲で、SMPフレームを連続送信する際に、最終のフレーム送信時に、一括送信終了を示す値(図中ではBL=1)に設定する。二次局は、受信フレームの通し番号を監視し、フレームの抜けを検出する。二次局がBL=1のフレームを受信するとそれまでに受信したフレームにフレーム抜けやエラーが検出されなければ、エラー無しを示すフラグ(RS:Receive Status)をエラー無しの意味(図中ではRS=1)として、下位層に渡す。また、エラーが発生している場合は、通し番号に再送して欲しい通し番号を設定する。
データ終了フラグ(DL:Data Last)は、上位層データの最終データがフレームに含まれているかどうかを示すフラグである。含まれている場合は、その旨を示す値(図中ではDL=1)に設定する。また、二次局のIrSMP層(以下、SMP(S))は、受信した上位層データを結合し、二次局の上位層であるOBEX層(以下、OBEX(S))との間で予め定められたデータのサイズまで、受信データが結合されると、結合データを上位層に渡す。
(4)OBEX層は、オブジェクト交換用のプロトコルである。ファイルの送信を行う場合は、Putコマンドを用いて送信を行う。前述と同様、Putコマンドにより、ファイル転送を行う。
また、ファイルの受信を行う側では、本発明の方式においては、OBEX(S)は、Putコマンド受信を受信した際に、最終のPutコマンドのみSUCCESSレスポンスを返し、最終でないPutコマンド受信時には、CONTINUEレスポンスを返信しない。また、一次局のOBEX層(以下、OBEX(P))においては、最終でないPutコマンド送信時には、二次局からのCONTINUEレスポンスを待たず、次のPutコマンドの送信を行い、最終のPutコマンド送信時のみ二次局からのSUCCESSレスポンウを待ち、二次局がPutコマンドによるデータ送信を正常受信できたかどうかを判別する。上述の通り、CONTINUEレスポンスのやり取りを省略することで、LAP層でのフレーム数削減が期待できる。
つづいて、本発明の方式による双方向通信でのデータ転送の流れを説明する。
一次局のOBEXでファイル送信要求が発生すると、OBEX(P)はTTP(P)に対して、Putコマンドを送信データとして渡す。本説明においては、最終でないPutコマンドが、dataP0、dataP1、dataP2、dataP3で構成され、また最終のPutコマンドがdataP4、dataP5、dataP6、dataP7で構成されているものとする。OBEX(P)は、最終でないPutコマンドに対するCONTINUEレスポンス受信を待たないため、SMP(P)の送信バッファに空きがある場合、連続してPutコマンドをSMP(P)に渡す。
これを受けたSMP(P)は、下位層であるLAP層の最大データ長以下で送信データを分割する。本説明においては、SMP(P)において、dataP0、dataP1、dataP2、dataP3に分割されるものとする。また、SMP(P)において、再送制御を行うために、Seq,BLが設定される。本説明においては、接続時に二次局のSMP(S)から得られる受信バッファのサイズが、dataP0からdataP5までの和であることをSMP(P)が認識しているものとし、dataP5までのフレームを連続送信し、dataP5のフレーム送信時にBLを1としている。本説明においては、受信バッファのサイズがフレーム6個分となっているが、これよりも大きな値、例えばフレーム128個分(LAP層の最大データ長を2KBとして、256KB)としてもよい。この場合は、dataP7のフレーム送信時のみ、BL=1(DL=1)とすることとなる。SMP(P)により、SMPヘッダ(DL,BL,SEQ)が付加されたSMPフレームは、LMP(P)に渡される。
これを受けたLMP(P)では、LSAPヘッダが付加されて、LAP(P)に渡される。
これを受けたLAP(P)では、UIフレームでのデータ転送が行われる。
これを受けたLAP(S)では、UIフレーム内の上位層データをLMP(S)に渡す。
これを受けたLMP(S)では、LSAPヘッダを除去して、上位層データをSMP(S)に渡す。
これを受けたSMP(S)では、通し番号を監視することにより、SMPフレームの抜けを検出するとともに、フレーム抜けのない上位層データに関しては、結合を行う。本説明においては、OBEX(S)との間で予め定められた上位層のデータサイズの単位が、dataP0からdataP3を結合したデータのサイズであったため、dataP3を結合完了した時点で、上位層に対して結合データを渡す。DL=0、BL=1のフレームを受信した時点で、それまでの受信フレームにフレームぬけやエラーが検出されていないため、エラー無しフラグRSを1にして、下位層に渡す。
前述のSMP(S)からの受信データを受けたOBEX(S)では、受信データの解析を行う。本説明においては、最終でないPutコマンドであるため、CONTINUEレスポンスを一次局に返信しない。
また、前述のRS=1のSMPフレームを受けたLMP(S)は、LSAPヘッダを付加して、LAP(S)に渡す。
これを受けたLAP(S)は、UIフレームでのデータ転送を行う。
これを受けたLAP(P)は、UIフレーム内の上位層データをLMP(P)に渡す。
これを受けたLMP(P)は、LSAPヘッダを除去し、SMP(P)に上位層データを渡す。
これを受けたSMP(P)は、受信フレーム内のRSフィールドが1であることより、前回の一括送信が正常に行えたことを認識し、上位層の分割データの内、残りの分割データdataP6、dataP7を送信する。また、dataP7を送信時には、BL=1とするとともに、DL=1として、このフレームが上位層データの最終フレームであることを通知する。
これを受けたLMP(P)は、LSAPヘッダを付加して、LAP(P)に渡す。
これを受けたLAP(P)は、UIフレームでのデータ転送を行う。
これを受けたLAP(S)は、UIフレーム内の上位層データをLMP(S)に渡す。
これを受けたLMP(S)は、LSAPヘッダを除去し、SMP(S)に上位層データを渡す。
これを受けたSMP(S)は、受信フレーム内の通し番号を監視することにより、フレームの抜けを検出するとともに、エラーのないフレームについては、フレーム内の上位層データを結合し、結合データを上位層に渡す。また、本説明においては、dataP7を含むフレームのBLが1であると同時にDLが1であるため、SMP層での受信結果を通知するためのフレーム(RSを含むフレーム)をこの時点では、送信しない。
これを受けたOBEX(S)は、受信データ内を解析するとともに、受信データが最終のPutコマンドであると認識した場合は、それまでの受信コマンドが正常であった場合は、SUCCESSレスポンスを生成し、SMP(S)に渡す。
これを受けたSMP(S)は、前述のSMP層での受信結果(RS)を1にし、上位層データと合わせて、LMP(S)に渡す。
これを受けたLMP(S)は、LSAPヘッダを付加し、LAP(S)に渡す。
これを受けたLAP(S)は、UIフレームでのデータ転送を行う。
これを受けたLAP(P)は、UIフレーム内の上位層データをLMP(P)に渡す。
これを受けたLMP(P)は、LSAPヘッダを除去し、上位層データをSMP(P)に渡す。
これを受けたSMP(P)は、受信フレーム内のRSフィールドが1であることで、前回の一括送信が正常に行えたことを認識するとともに、上位層データをOBEX(P)に渡す。
これを受けたOBEX(P)は、受信データを解析し、受信データがSUCCESSレスポンスであることを認識すると、それまでの最終でないPutコマンドおよび最終のPutコマンドでのデータ転送が全て正常に終了したことを認識することとなる。
上記により、IrLAP層でUIフレームを用いた場合でも、SMP層で再送制御を行うことにより、信頼性が確保された通信を行うことが可能となる。また、UIフレームを用いることにより、Iフレームを用いた場合のウィンドウサイズの制限がなくなり、二次局の受信バッファサイズに最適化された通信を行うことが可能となる。
上記のとおり、本説明の条件においては、通信路を流れるフレーム数は、10個となり、従来のIrDAについて前述したIフレームを用いた通信と比べて、少ないフレーム数での通信が可能となる。
また、本説明においては、SMP層での一括送信可能なフレーム数が6として説明を行っているが、この値は、再送のための一次局の送信バッファおよび二次局の受信バッファのサイズが許す限り、いくつにでも設定可能であり、通信系の持っている最大の能力での通信を実現することが可能となる。これに対して、Iフレームを用いた通信においては、一次局、二次局がそれぞれ大量のバッファを保有していたとしても、ウィンドウサイズの制限(LAPにおける7)により、通信効率の向上を達成するのは困難である。
3.IrSimpleの片方向通信におけるデータ転送の流れ
図28に、本発明の適用例であるIrSimpleの片方向通信でのデータ転送の流れを示す。なお、以下の説明においては、一次局と二次局は、それぞれIrLAP層、IrLMP層、IrSMP層(Infrared Sequence Management Protocol)、OBEX層をサポートしているものとする。
(1)IrLAP層においては、UIフレーム(図22(b))を用いて、データ転送を行う。前述のとおり、UIフレームを用いると、ウィンドウサイズの制限がなくなるため、Iフレームを用いた場合に一度に連続送信可能なフレーム数7よりも多くのフレームを連続送信することが可能となる。このことにより、フレーム受信後、送信を開始するまでに待たなければならない時間(Min Turn Around Time)の累積によるデータ転送効率の削減が期待できる。
図22(b)に示すように、UIフレームには、Iフレームに存在していたNr、Nsフィールドが存在していない。これは、フレームに通し番号が振られていないことを示しており、LAP層レベルでのフレーム抜けの検出が行えず、また、再送要求すべきフレームの通し番号の設定を行うこともできないことを示している。すなわち、UIフレームを用いた転送の場合は、LAP層レベルでの上位層データの信頼性は保証していない。
(2)IrLMP層は、アプリケーションごとの論理的なチャネル(LSAP:Link Service Access Point)を上位層に提供する層である。
フレームを送信する側のIrLMP層では、上位層(TinyTP層)からのデータとIrLMPフレームに配置するとともに、送信先の論理的なチャネル(DLSAP:Destination Link Service Access Point)と送信元の論理的なチャネル(SLSAP:Source Link Service Access Point)をIrLMPヘッダとして、配置する。
一方、フレームを受信する側のIrLMP層では、下位層からの受信フレームのDLSAPフィールドを監視することにより、どの上位層アプリケーションのデータであるかを判別し、対応する上位層アプリケーションに対して、受信フレーム内データを渡す。
(3)IrSMP層は、上位層のデータを分割・結合する。また、前述のとおり、IrLAP層にてUIフレームを用いて、データ転送を行い、IrLAP層でフレームに通し番号が振られないいため、このIrSMP層にてフレームに通し番号が振られる。
具体的には、一次局のIrSMP層(以下、SMP(P))では、上位層データを下位層のUIフレームの最大データ長以下に分割した後、分割データを複数のフレーム内に配置して、LMP(P)に渡す。その際、通し番号、データ終了フラグをSMPヘッダとして付加する。
図27(b)に、IrSimpleの片方向通信の場合のSMPフレームのフレームフォーマットを示す。
通し番号(Sequence Number)は、フレームごとに1ずつ増えていく。二次局は、受信フレームの通し番号を監視し、フレームの抜けを検出する。フレーム抜けやエラーが検出されれば、検出された時点で、OBEX(S)に対して、その旨を通知する。
データ終了フラグ(DL:Data Last)は、上位層データの最終データがフレームに含まれているかどうかを示すフラグである。含まれている場合は、その旨を示す値(図中ではDL=1)に設定する。また、二次局のIrSMP層(以下、SMP(S))は、受信した上位層データを結合し、二次局の上位層であるOBEX層(以下、OBEX(S))との間で予め定められたデータのサイズまで、受信データが結合されると、結合データを上位層に渡す。
(4)OBEX層は、オブジェクト交換用のプロトコルである。ファイルの送信を行う場合は、Putコマンドを用いて送信を行う。前述と同様、Putコマンドにより、ファイル転送を行う。
また、ファイルの受信を行う側は、本発明の方式においては、OBEX(S)は、Putコマンド受信を受信した際に、Putコマンドに対するレスポンス(CONTINUEレスポンスおよびSUCCESSレスポンス)を返信しない。
また、一次局のOBEX層(以下、OBEX(P))においては、Putコマンド送信時には、二次局からのレスポンスを必要としない。
つづいて、本発明の方式による片方向通信でのデータ転送の流れを説明する。
一次局のOBEXでファイル送信要求が発生すると、OBEX(P)はTTP(P)に対して、Putコマンドを送信データとして渡す。本説明においては、最終でないPutコマンドが、dataP0、dataP1、dataP2、dataP3で構成され、また最終のPutコマンドがdataP4、dataP5、dataP6、dataP7で構成されているものとする。OBEX(P)は、Putコマンドに対するレスポンス受信を待たないため、SMP(P)の送信バッファに空きがある場合、連続してPutコマンドをSMP(P)に渡す。OBEX(P)は、最終のPutコマンドをSMP(P)に渡した時点で、Putコマンドによるデータ転送を終了する。
これを受けたSMP(P)は、下位層であるLAP層の最大データ長以下で送信データを分割する。本説明においては、SMP(P)において、dataP0、dataP1、dataP2、dataP3に分割されるものとする。また、SMP(P)において、二次局でのフレーム抜け検出のために、通し番号(Seq)が設定される。また、上位層の最終データ送信時には、DLを1として送信する。SMP(P)により、SMPヘッダ(DL,SEQ)が付加されたSMPフレームは、LMP(P)に渡される。
これを受けたLMP(P)では、LSAPヘッダが付加されて、LAP(P)に渡される。
これを受けたLAP(P)では、UIフレームでのデータ転送が行われる。
これを受けたLAP(S)では、UIフレーム内の上位層データをLMP(S)に渡す。
これを受けたLMP(S)では、LSAPヘッダを除去して、上位層データをSMP(S)に渡す。
これを受けたSMP(S)では、通し番号を監視することにより、SMPフレームの抜けを検出するとともに、フレーム抜けのない上位層データに関しては、結合を行う。本説明においては、OBEX(S)との間で予め定められた上位層のデータサイズの単位が、dataP0からdataP3を結合したデータのサイズであったため、dataP3を結合完了した時点で、上位層に対して結合データを渡す。また、DL=1のフレームを受信した時点で、一次局OBEXの送信データを全て受信したことを認識し、dataP4からdataP7を受信データとして上位層に通知する。
これを受けたOBEX(S)では、受信データの解析を行う。本説明においては、一次局がPutコマンドに対するレスポンスを必要としないため、CONTINUEレスポンスおよびSUCCESSレスポンスを一次局に返信しない。最終のPutコマンドを受信した時点で、OBEXでのPutコマンドによるデータ転送が完了することとなる。
上述の通り、本発明の通信方式における片方向通信においては、再送制御は行えないものの、OBEX層にて、Putコマンドに対するレスポンスを必要としないことを予め一次局と二次局の間で定めておけば、問題なく通信を行うことが可能となる。また、IrSMP層において、通し番号を付加することにより、通し番号がないUIフレームを用いた場合でも、フレームの抜け検出が可能となり、ユーザに受信エラーの通知などを適切に行うことが可能となる。
(データ終了フラグ受信時の受信機の処理)
データ終了フラグ受信時の受信機の処理について説明する。
図29は、上位層としてOBEXが存在し、OBEXのPutコマンドによるデータ転送を示すシークエンス図である。
図29では、送信機がOBEXデータの最終が含まれていることを示すPut Finalコマンドにより、data0からdata3を一括で送信している。そして、Put Finalコマンドの最終データであるdata3を含むフレーム送信時に、一括送信終了フラグを1にするとともに、データ終了フラグも1としている。
一方、受信機は、一括送信終了フラグおよびデータ終了フラグが1のフレームを受信したとき、上位層に受信データを渡すとともに、それまでの受信データにエラーがなかったため、エラー無しフラグをエラー無しの意味として、返信している。その後、受信機では下位層が、上位層のOBEXから受信成功の意味のSUCCESSレスポンスの通知を受けるが、通知受信時点では、受信機に送信権がないため、送信を保留している。
次に、送信機は、エラー無しフラグがエラー無しを示すフレームを受信し、受信機がエラーなく通信できたことを認識するが、対向局からのSUCCESSレスポンスを受信しないといけないため、再び受信機に送信権を渡すために、フレームを送信する。図29では、この時点で、送信機から送信すべきデータが存在しないため、一括送信終了フラグを1として、ユーザデータ領域には何もデータを配置せず(data=NULL)、フレームを送信している。
次に、受信機がこれを受信すると、送信を保留していたSUCCESSレスポンスを送信する。
その後、送信機がこれを受信して、上位層のOBEXに受信したデータ(SUCCESSレスポンス)を渡すことで、上位層のOBEXレベルでの通信が完了する。
ここで、上記と同じ条件において、エラー無しフラグを含むフレームとSUCCESSを含むフレームとを1つにまとめて送信する通信例について説明する。
図30は、受信機がエラー無しフラグを含むフレームとSUCCESSを含むフレームとを1つにまとめて送信する通信例を示すシークエンス図である。
図30に示すように、受信機においては、一括送信終了フラグおよびデータ終了フラグが1のフレームを受信したとき、下位層が上位層に受信データを渡した後、直ちにエラー無しフラグをエラー無しとして、フレームを生成、送信せずに、下位層は上位層からのSUCCESSレスポンスを待って、前述のエラー無しフラグとSUCCESSレスポンスをまとめて1つのフレーム内に配置し、送信している。
こうすることにより、図29に示したように、受信機がエラー無しフラグのみを含むフレームを送信した後に、送信権移動のためのフレームを送信機が送信する必要がない。また、受信機では、上位層がSUCCESSレスポンス送信要求を発生した後、下位層が直ちにSUCCESSフレームを送信できるため、通信の効率化を図ることが可能となる。また、送信権移動のためのフレームがなくなることとなり、送信権移動のためのフレームで発生したエラーの処理等を考える必要がなくなるため、処理が簡単化できる。
つづいて、本発明の通信システムにおける実施の各形態について図1から図8、図31から図67(ただし、図52、図53、図58、図59は従来技術の説明図である)に基づいて説明すると以下の通りである。すなわち、本発明は、画像データや文書データなどのような、所定の容量を一塊として一定の情報を表し、かつ、転送すべき転送データを送受信するような一次局および二次局を有する通信システムに適用できる。ここで、所定のデータ容量は、転送データによって可変である。
以下の実施の各形態では、赤外線により転送データを転送するIrDAに準拠した転送方式(伝送方式)を例にとり本発明を説明する。
〔実施の第一形態〕
本発明の実施の第一形態に係る転送データの転送システム(通信システム)について、図1および図2に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
図1は、本実施の形態における一次局の構成を示すブロック図である。図1に示すように、一次局(送信装置)1は、CPU11と、メモリ12と、コントローラ13と、送信器14と、受信器15とを備えている。
CPU11は、図示しない操作部に入力された利用者の指示に応じて、所定の演算処理を行うものである。所定の演算処理としては、転送データの転送処理がある。CPU11は、操作部から転送データの転送指示を受けると、転送すべき転送データをメモリ12に格納するとともに、コントローラ13に対して転送要求を行う。また、CPU11は、コントローラ13から転送データの送信終了を表す送信終了通知を受けると、転送処理を完了する。
メモリ12は、転送すべき転送データを一時記憶するものであり、CPU11により転送データが書き込まれる。コントローラ13は、CPU11からの転送要求に応じて、転送データの転送を制御するものであり、また、受信フレームの解析結果をCPU11に通知するものである。コントローラ13は、制御部131、送信フレーム生成部132、および受信フレーム解析部133を備えている。
また、送信フレーム生成部132は、データ読み出し部1321、フレーム通し番号付加部(通し番号付加手段)1322、送信権委譲フラグ付加部(送信権委譲フラグ付与手段)1323、フレーム構築部1324および誤り検出または訂正符号付加部1325を備えている。
また、受信フレーム解析部133は、再送要求判定部1331およびフレーム通し番号抽出部1332を備えている。
制御部131は、CPU11から転送要求を受けると、データ読み出し部1321に対して、データの読み出し要求を行うとともに、フレーム通し番号付加部1322に通し番号の通知、送信権委譲フラグ付加部1323に相手局に送信権を委譲するか否かの通知を行う。このとき、制御部131は、データ読み出し部1321が読み出すデータ長や、読み出す間隔を制御することにより、フレーム長やフレーム間隔を制御する。なお、制御部131は、後述する誤り検出または訂正符号付加部1325において検出できるデータ容量から求められる最大フレーム長以下となるようにフレーム長を制御する。
また、制御部131は、メモリ12から読み出した転送データに対応する全てのフレームが送信器14から送信されたことを検知して、転送データの送信が終了したことを表す送信終了通知をCPU11に送る。
フレーム構築部1324は、データ読み出し部1321から受けたデータと、フレーム通し番号付加部1322から通知されたフレーム通し番号と、送信権委譲フラグ付加部1323から通知された送信権委譲行うかどうかの情報を基にフレームを生成する。なお、フレーム構築部1324が生成したフレームの転送速度は、制御部131により制御される。
また、フレーム構築部1324は、生成したフレームを順次誤り検出または訂正符号付加部1325に送る。このとき、フレーム構築部1324は、各フレーム間の時間間隔を、制御部131から受けたフレーム間隔になるようにする。
誤り検出または訂正符号付加部1325は、フレーム構築部1324で生成されたフレームに対して、誤り検出符号(または訂正符号)を付加して、後段の送信器14に送る。誤り検出または訂正符号付加部1325は、誤り検出符号(または訂正符号)をフレーム内のFCSに含ませる。
なお、誤り検出符号は、例えば、CRC(Cyclic Redundancy Check)符号などの巡回符号であり、訂正符号は、例えば、パリティ検査符号、ハミング符号、リードソロモン符号などのBCH符号などである。なお、CRC符号は例えば4バイトにて設定されており、該4バイトで検出できるようにデータ容量が限られる。
送信器14は、赤外線通信路を介して、コントローラ13から受信した複数のフレームを所定の時間間隔で外部に送信する。また、受信器15は、二次局から受信したレスポンスフレームを順次、コントローラ13内の受信フレーム解析部133に送る。
受信フレーム解析部133では、受信器15から受信したフレームを、再送要求判定部1331およびフレーム通し番号抽出部1332においてそれぞれ、二次局が再送を要求しているか、およびどのフレームに誤りがあったかをフレーム番号を抽出することにより、制御部131へそれぞれ通知を行う。
ここで、制御部131は、CPU11に対して、送信したフレームに誤りがあったか否かと、誤りがあった場合には、どのフレームに誤りがあったかをそれぞれ通知する。
CPU11では、エラーが発生しなかった場合には、所定のフレーム数を再度二次局に対し送信できるように、二次局から一次局に送信権の委譲を行うよう指示を二次局に対して行っていく。このようにして、すべてのファイルデータを送信し終わるまで同様の手順を繰り返す。
また、エラーが発生した旨の通知を受けた場合には、上記と同様の手順で、送信権の委譲を行うまでに送信したフレーム数を再度送信する。また、ここで、CPU11は、エラーが発生したフレーム番号の通知を受けた場合には、その番号フレームから再送を行ってもよい。
次に、本実施の形態の二次局について、図2を参照しながら説明する。図2は、二次局の構成を示すブロック図である。図2に示されるように、本実施の形態の二次局(受信装置)は、CPU21と、メモリ22と、コントローラ23と、受信器24と、送信器(送信手段)25とを備えている。
受信器24は、赤外線通信路を介して、一次局から送信されたフレームを受信し、受信したフレームをコントローラ23に送る。コントローラ23は、受信器24から受けたフレームを基に、所定の制御処理を行うものである。コントローラ23は、制御部231、フレーム処理部232、誤り検出または訂正回路233、エラーフレーム番号保持部234、レスポンスフレーム生成部(レスポンスフレーム生成手段)235および誤り検出または訂正符号付加部236を備えている。
フレーム処理部232は、受信器24からフレームを受け、データフィールド、送信権委譲フラグ、フレーム通し番号およびFCS部分を抽出する。すなわち、フレーム処理部232は、受信器24が受信したフレームのデータフィールドに含まれる情報と、送信権委譲フラグ、受信したフレームのフレーム通し番号、該情報に対する誤り検出符号(または訂正符号)とを抽出する。フレーム処理部232は、抽出した情報および誤り検出符号(または訂正符号)を、制御部231、誤り検出または訂正回路233およびエラーフレーム番号保持部234に送る。
例えば、フレーム処理部232は、フレームを受けると、該フレームに含まれる送信データ、送信権委譲フラグ、フレームの通し番号および誤り検出符号(または訂正符号)とを抽出し、抽出した送信データ、送信権委譲フラグ、フレームの通し番号および誤り検出符号(または訂正符号)を、制御部231、誤り検出または訂正回路233およびエラーフレーム番号保持部234に送る。誤り検出または訂正回路233は、受けた情報に対して誤り検出(または訂正)を行い、その結果を制御部231、エラーフレーム番号保持部234に送る。
制御部231は、誤り検出または訂正回路233から送られる結果に応じて、所定の処理を行う。すなわち、誤り検出または訂正回路233からの結果が受信データに誤り(エラー)がないことを示している場合、制御部231は、該受信データをメモリ22に書き込み、CPU21に対して受信完了通知を行う。
一方、誤り検出または訂正回路233からの結果が受信データにエラーがあることを示している場合、制御部231は、該受信データを破棄して、エラーフレーム番号保持部234からエラーが発生したフレーム番号を読み出し、CPU21に対して受信エラーがある旨とエラーが発生したフレームの番号の通知を行う。また、制御部231は、フレーム処理部232で抽出された送信権委譲フラグを基に、送信権の委譲が行われたか否かの通知も合わせて行う。
メモリ22は、受信器24が受信データを記憶するものであり、制御部231により誤りがなかった受信データが書き込まれる。
CPU21は、制御部231からの通知に応じた処理を行う。すなわち、制御部231送信権の委譲が行われた旨の通知を受けた場合、それまで受信したすべてのフレームについて誤りがなかったときには、メモリ22に格納されたすべての受信データを基に、所定の受信データ後処理を行い、制御部231へは、すべてのフレームを正常受信した旨のレスポンスフレームを一次局へ返信する旨の送信通知を行う。また、制御部231から送信権の委譲が行われた旨の通知を受けた場合、それまで受信したフレーム中にエラーが発生した旨の通知を受けていた場合には、制御部231へ、エラーが発生したので再送を要求する旨の送信通知を行う。また、ここで、合わせてエラーが発生したフレームのフレーム番号の通知も行う。
制御部231では、CPU21から送信要求を受けると、レスポンスフレーム生成部235に対して、レスポンスフレーム生成する旨の通知を行う。ここで、受信したフレームにエラーがあったか否かの情報と、エラーがあった場合についてはそのエラーフレームのフレーム番号の通知も合わせて行う。
レスポンスフレーム生成部235では、制御部231からの通知を基に、レスポンスフレームを生成し、誤り検出または訂正符号付加部236へフレームを送る。誤り検出または訂正符号付加部236では、レスポンスフレーム生成部235で生成されたフレームに誤り検出または訂正符号を付加して、送信器25に送る。送信器25は、赤外線通信路を介して、誤り検出または訂正符号付加部236から受信したフレームを外部に送信する。
図3に、UIフレームおよびUIフレームに対するレスポンス(応答)フレームにフレームの通し番号、相手局に送信権を委譲するか否かを示すフラグ、およびそれまで受信したフレーム中にエラーまたはフレーム抜けがあったかどうかを示すフラグを付与した場合のフレーム構成を示す。ただし、ここで示すフレーム構成は一例であって、これに限るものではない。
ここでは、UIフレームおよびUIフレームに対するレスポンスフレームに3バイトのパラメータを付与し、相手局に送信権を委譲するか否かを示すフラグ、二次局が使用する受信フレームにエラーがあったかどうかを示すフラグ、および残り22ビットをフレームの通し番号で構成される。
以下、相手局に送信権を委譲するか否かを示すフラグをBL、二次局が使用する受信フレームにエラーがあったかどうかを示すフラグをRS、フレームの通し番号をSとする。以下、このフレーム構成を用いて、一次局とに二次局との間にて、どのようにしてデータ転送が行われるかについて説明する。
一次局および二次局におけるデータ転送処理の手順について図4、図5の信号シーケンス図を参照しながら説明する。なお、図4は、双方向通信においてすべての受信データについてエラーが発生しなかった場合を示している。
まず、一次局において、操作部からの転送指示を受けたCPU11は、転送すべき転送データをメモリ12に格納し、コントローラ13に対して、転送要求を出力する。ここでは、nフレーム単位で二次局に送信権の委譲が行われるとする。また図4、図5に示すS、BL、RSはそれぞれ、フレームの通し番号、送信権の委譲を行うかどうかを示すフラグ、再送が必要であるかどうかを示すフラグである。
一次局では、まずn個のフレーム(通し番号がS=0からS=n−1まで)を、赤外線通信路を介して二次局に送信する。ここではnフレーム単位で送信権の委譲が行われるため、S=n−1のフレームについては、BL=1にしてフレームの送信を行う。
二次局では、一次局が送信したフレームS=0からS=n−1を順に受信する。その後受信したn個のフレーム中にエラーがなく受信完了した場合には、一次局に対しては、受信フレーム中にエラーがなく、再送が必要でないことを意味するよう、RS=1にしてレスポンスフレームを送信する。
一次局では、二次局から送信したn個のフレームを正常に受信した旨のレスポンスフレームを受信すると、上記処理と同様の処理を行う。また二次局でも上記処理と同様の処理を行い、すべての受信フレームにエラーがなく受信完了通知を受けたCPUは、該受信データを基に所定の受信データ後処理を行う。
次に、一次局および二次局におけるデータ転送処理の手順について図5の信号シーケンス図を参照しながら説明する。なお、図5は、双方向通信においてフレーム通信中にエラーが発生した場合を示している。
ここでは、nフレーム単位で二次局に送信権の委譲が行われるとする。また、図4と同様、S、BL、RSはそれぞれ、フレームの通し番号、送信権の委譲を行うかどうかを示すフラグ、再送が必要であるかどうかを示すフラグである。
一次局では、まずn個のフレーム(通し番号がS=0からS=n−1まで)を、赤外線通信路を介して二次局に送信する。ここではnフレーム単位で送信権の委譲が行われるため、S=n−1のフレームについては、BL=1にしてフレームの送信を行う。
ここで、二次局は、フレーム0についてエラーがなく、フレーム1についてエラーがあることを検出したとする。二次局では、一次局から送信権の委譲を示すフラグが委譲を意味するフレームを受信すると、一次局に対して、受信したフレームにエラーが発生したことを意味するフラグを有効にしてフレーム送信を行う。一次局では、二次局からのエラーが発生した旨のフレームを受信し、エラーが発生したことを検知し、エラーが発生したフレームの再送を行う。
〔実施の第二形態〕
本実施の形態では、上記実施の第一形態の変形例について説明する。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
上記実施の第一形態では、一次局が二次局との間での送信権の委譲をnフレーム毎に行う構成としたが、ここではIrDA通信方式で行われる接続確立時に、接続確立時に、前記一次局である自局から送信される接続要求フレームと前記二次局である相手局から自局へ送信される接続応答フレームにそれぞれ、各局の一度に送受信可能なフレーム数を意味するフィールドを付与してフレーム交換を行い、各局において受信した相手局の一度に受信可能なフレーム数を参照して最適なフレーム数を算出し、該フレーム数に応じて送信権の委譲を行う場合について説明を行う。上記フレーム数については任意数に設定できるものである。
IrDA通信方式では、一次局が二次局に対して、データ転送状態の確立を求めて、まず、SNRMフレームを送信する。これを受信した二次局は、通信不可能である場合にはDMフレームを返信し、通信可能である場合には承諾を意味するUAフレームを一次局に対し返信する。SNRMフレーム、DMフレーム、UAフレームは、いずれもUフレームの形態である。二次局がUAフレームを返信すると両局はデータ転送状態が確立され、データ転送が可能となる。
本実施の形態では、上記SNRMフレームまたはUAフレームに、自局の再送可能データサイズを示すパラメータを付与して接続確立を行うようにしたものである。
上記の構成によれば、一次局と二次局との両局間でサポートされているフレーム数毎に必ず送信権の委譲が行われるので、各局に搭載されたメモリ容量に応じたフレーム交換を行うことができる。
図6は、本実施の形態に係る通信システムに使用される送受信回路の構成を示すブロック図である。図6に示すように、本実施の形態の送受信回路は、CPU61と、コントローラ62と、送信器63と、受信器64とを備えている。
CPU61は、図示しない操作部に入力された利用者の相手局との接続指示を受けると、コントローラ62に対して接続要求を行う。コントローラ62は、CPU61からの接続要求に応じて、接続処理を制御するものである。コントローラ62は、制御部621、送信フレーム生成部622および受信フレーム解析部623を備えている。
また、送信フレーム生成部622は、接続確立フレーム生成部6221および再送可能フレーム数付加部6222を備えている。CPU61から接続要求および、再送可能フレーム数の通知を受けた制御部621は、接続確立フレーム生成部6221に対して、接続要求フレームの生成を要求し、再送可能フレーム数付加部6222へCPU61から通知を受けた再送可能フレーム数を通知する。
接続確立フレーム生成部6221では、接続要求フレームを生成し、再送可能フレーム数付加部6222は、生成された接続要求フレームに再送可能フレームを示すフィールドを付加し、送信器63に送る。送信器63では、送信フレーム生成部622から受けたフレームを赤外線通信路により送信を行う。
本送受信回路では、接続要求フレームを送信後、相手局である二次局からの接続応答(レスポンス)フレームを受信器64が受信する。接続応答フレームを受信した受信器64は、受信フレームをコントローラ62内の受信フレーム解析部623に送る。
受信フレーム解析部623は、フレーム解析部6231および再送可能フレーム数検出部6232を備えている。フレーム解析部6231は、受信フレームの解析を行い、自局の接続要求に対する相手局の応答結果を制御部621へ通知する。
また、再送可能フレーム数検出部6232は、受信フレームから、再送可能フレーム数を示すフィールドの抽出を行い、制御部621へ通知する。
制御部621では、受信フレーム解析部623からの通知結果と、自局の再送可能フレーム数を比較することにより、両局での最大再送可能フレーム数を知ることができ、その結果をCPU61に通知する。
CPU61では、その結果を受けて、データ転送を行う際には、両局での最大再送可能フレーム数毎に実施の第一形態で前述した方法で、相手局への送信権の委譲を行えばよいことになる。
また、ここでは、一次局が両局の最大再送可能フレーム数を知るまでの手順を述べたが、二次局でも同様に、一次局から受信した接続要求フレーム中の再送可能フレーム数と、自局の再送可能フレーム数を比較することにより、両局の最大再送可能フレーム数を知ることができるので、ここでは、説明を割愛する。
図7に、SNRMフレームまたはUAフレームに自局の再送可能データサイズを示すパラメータを付与した場合のフレーム構成を示す。ただし、ここで示すフレーム構成は一例であって、これに限るものではない。
ここでは、1バイトのパラメータを付与し、各ビットがそれぞれ自局の再送可能データサイズを示しており、各局は自局がサポートしているデータサイズを示すビットをすべて1にして、フレームの交換を行う。ここで示す例では、ビット0が1Byte、ビット1が2Byte、ビット2が3Byte、ビット3が4Byte、ビット4が8Byte、ビット5が16Byte、ビット6が32Byte、ビット7が64Byteを意味するものとする。
両局では、それぞれ受信したフレームを基に、対向局のパラメータから得られる対向局の受信可能データサイズ以内で、フレームの送信権の委譲を行えばよいこととなる。
図8に、本発明の実施の形態におけるフレームのやり取りを信号シークエンス図にて示す。ここでは一次局は再送可能データサイズが4Byteであり、二次局では3Byteであるとする。一次局では、再送可能データサイズが4Byteであるため、図7に示すフレーム構成では、“00001111”のデータをSNRMフレームに付与してSNRMフレームの送信を行う。
また、二次局では、再送可能データサイズが3Byteであるため、図7に示すフレーム構成では、“00000111”のデータをUAフレームに付与してUAフレームの送信を行う。一次局では、二次局の最大受信可能データサイズが3Byteであることが分かるので、これ以降のフレームの送信では、実施の第一形態で前述した方法を用いることにより、一次局では3フレームを送信するごとに相手局に送信権の委譲を行う。
〔実施の第三形態〕
本実施の第三形態に係るデータの転送システム(通信システム)は、階層構造の各通信プロトコルを用いて通信を行うシステムに関するものである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態に係るデータの転送システムについて、図12から図17に基づいて説明すると以下の通りである。
図12は、本実施の形態における局(一次局(送信装置)または二次局(受信装置))の構成を示すブロック図である。また、図13に、本発明におけるデータ転送システムのプロトコルスタックを示す。図13ではIrDAのプロトコルスタックのTinyTP層に位置する通信プロトコル層で本実施の形態の機能を実現することとし、以下、該通信プロトコル層をSMP(Sequence Management Protocol)層と呼ぶこととする。もちろん、本発明に係る通信システムを実現するためのプロトコルスタックはこれに限るものではない。
図12に示すように、一次局または二次局である局12は、アプリケーション層処理部121と、OBEX層処理部122と、SMP層処理部123と、IrLMP層処理部124と、IrLAP層処理部125と、送信器126と、受信器127とを備えている。
アプリケーション層処理部121と、OBEX層処理部122と、SMP層処理部123と、IrLMP層処理部124と、IrLAP層処理部125とは、この順番にて階層構造を備えた、複数種類の各通信プロトコルの機能を実現するブロックである。
一次局における二次局に対する要求フレーム送信時の各ブロックの機能について説明すると以下の通りである。
アプリケーション層処理部121は、図示しない操作部に入力された利用者の指示に応じて、OBEX層処理部122に対して、外部との通信のための要求フレームの発行を行うよう通知(制御)する。また、アプリケーション層処理部121は、OBEX層処理部122から応答フレームを受信した旨の通知を受けると、受信した応答フレームに応じて、所定の処理を行う。
OBEX層処理部122は、アプリケーション層処理部121からの要求に応じて、要求フレームの生成およびSMP層処理部123への要求フレームの発行を行うよう通知(制御)する。また、SMP層処理部123からの応答フレームを受けて、アプリケーション層処理部121に対して受信結果の通知を行う。
SMP層処理部123は、制御部1231と、送信フレーム生成部1232と、受信フレーム解析部1233とを備えている。
また、送信フレーム生成部1232は、応答フレーム要求フラグ付加部12321と、フレーム通し番号付加部(通し番号付加手段)12322と、送信権委譲フラグ付加部(送信権委譲フラグ付与手段)12323と、再送要求フラグ付加部(レスポンスフレーム生成手段)12324と、フレーム構築部12325とを備える。
また、受信フレーム解析部1233は、応答フレーム要求フラグ判定部12331、フレーム通し番号解析部12332と、送信権委譲フラグ判定部12333と、再送要求判定部12334と、上位層データ抽出部12335とを備える。
制御部1231は、OBEX層処理部122からの転送要求を受けると、フレーム通し番号付加部12322に送信フレームの通し番号の通知、送信権委譲フラグ付加部12323に相手局に送信権を委譲するか否かの通知を行う。また、OBEX層処理部122からの転送要求が応答フレームを要求しているか否かに応じて、制御部1231は、応答フレーム要求フラグ付加部12321を制御する。また、本実施の形態では、一次局において再送要求を行わないため、再送要求フラグ付加部12324は、特に制御を行う必要はない。なお、一次局において再送要求を行う場合は、再送要求フラグ付加部12324にて再送要求フラグを付加することとなる。
フレーム構築部12325では、OBEX層処理部122から受けた要求フレームに対して、応答フレーム要求フラグ付加部12321から通知された、上位層が送信フレームに対して応答フレームが要求されているか否かを示す情報と、フレーム通し番号付加部12322から通知されたフレームの通し番号と、送信権委譲フラグ付加部12323から通知された、送信権の委譲を行うか否かを示す情報と、再送要求フラグ付加部12324からの再送要求を行うか否かを示す情報(ただし、一次局では再送要求を行わないので常に固定値)とに基づいてヘッダ情報を生成し、そのヘッダ情報を付加してフレームを構築する。そして、フレーム構築部12325は、構築したフレームを下位層であるIrLMP層処理部124へ出力する。
IrLMP層処理部124では受信した要求フレームに所定のヘッダ情報を付加して、フレームを生成し、下位層であるIrLAP層処理部125へフレームを出力する。
同様に、IrLAP層処理部125では、受信した要求フレームに所定のヘッダ情報を付加してフレームを生成し、送信器126へ出力する。
送信器126は、赤外線通信路を介して、IrLAP層処理部125から受信した複数のフレームを所定の時間間隔で外部に送信する。
次に、一次局における二次局から送信される応答フレーム受信時の各ブロックの動作について説明すると以下の通りである。
受信器127が、赤外線通信路を介して、二次局から送信される応答フレームを受信すると、受信した応答フレームをIrLAP層処理部125へ出力する。
IrLAP層処理部125、IrLMP層処理部124では、それぞれ受信した応答フレームからヘッダ情報の解析を行い、ヘッダ情報に基づいて所定の処理を行い、ヘッダ情報の除去を行い上位層に対して応答フレームが渡されていく。
SMP層処理部123では、下位層であるIrLMP層処理部124から応答フレームを受信し、受信フレーム解析部1233において応答フレームの解析を行う。
送信権委譲フラグ判定部12333では、受信フレームのBL(後述する)ビットを参照し、送信権の委譲が行われているか否かの判定結果を制御部1231へ通知する。
また、再送要求判定部12334では、受信フレームのRS(後述する)ビットを参照し、相手局からの再送要求が行われているか否かの判定結果を制御部1231へ通知する。
また、フレーム通し番号解析部12332において、受信フレームからフレーム番号を抽出し、制御部1231へ出力する。
制御部1231では、再送要求判定部12331からの判定結果の通知を受けて、相手局が再送を要求している場合には、フレーム通し番号解析部12332より通知された通し番号のフレームから再送を行うように送信フレーム生成部1232を制御する。また、再送要求判定部12331からの判定結果が相手局が再送を要求していないことを示している場合には、送信完了していないフレームを順次送信していく。
また、上位層データ抽出部12335では、下位層(ここではIrLMP層処理部124)から受信したフレームから、SMP層のヘッダ情報の除去を行い、上位層(ここではOBEX層処理部122)へデータを出力する。
こうして、一次局では、転送データが送信完了するまで上記の手順で二次局へデータ転送を行っていく。
次に、二次局における一次局から送信される要求フレーム受信時の各ブロックの動作について説明すると以下の通りである。
一次局と同様、二次局においても受信器127が一次局から送信される要求フレームを受信し、IrLAP層処理部125およびIrLMP層処理部124において、それぞれヘッダ情報の解析、ヘッダ情報の除去が行われ、上位層に要求フレームが渡されていく。
SMP層処理部123では、IrLMP層処理部124から要求フレームを渡されると、
受信フレーム解析部1233において受信フレームの解析を行う。
フレーム通し番号解析部12332では、受信フレームからフレーム通し番号の抽出を行い、受信したフレームの通し番号のチェックを行い、正常であるか異常が(フレーム抜け等)あるかの判定結果を制御部1231に通知する。また、異常があった場合には合わせてエラーがあったフレームの通し番号(再送してほしいフレーム番号)を制御部1231へ通知する。
また、送信権委譲フラグ判定部12333では、受信フレームのBL(後述する)ビットを参照し、送信権の委譲が行われているか否かの判定結果を制御部1231へ通知する。
また、応答フレーム要求フラグ判定部12331では、受信フレームのDL(後述する)ビットを参照し、DLビットが上位層の応答フレームを要求しているか否かの判定結果を制御部1231へ通知する。
制御部1231では、送信権委譲フラグ判定部12333から通知される判定結果をもとに、判定結果が相手局から送信権の委譲が行われていることを示している場合には、送信フレーム生成部1232に対して、応答フレームの生成および送信を行うよう制御(通知)する。
この時、フレーム通し番号解析部12332の解析結果を基にフレーム通し番号のエラーが発生していた場合には、制御部1231は、再送要求フラグ付加部12324に再送要求を行うことを示すようフラグを設定することを通知し、フレーム通し番号付加部12322に対しては、フレーム通し番号解析部12332から通知されたエラーが発生したフレーム通し番号を通知する。
また、フレーム通し番号解析部12332の解析結果がエラーが発生していないことを示している場合には、制御部1231は、再送フラグ付加部12324に対して再送要求は行わず正常に受信が完了していることを示すようフラグを設定することを通知する。
ただし、制御部1231では、応答フレーム要求フラグ判定部12331の判定結果が上位層の応答フレームを要求していること示している場合には、OBEX層処理部122が応答フレームの準備が完了するまで、応答フレームを返信せず、OBEX層処理部122から応答フレームの準備が完了した旨の通知を受けた時点で、送信フレーム生成部1232へ応答フレームの生成を指示する。送信フレーム生成部1232では、OBEX層処理部122から受信した応答フレームに、所定のヘッダ情報を付加してフレームを構築し、下位層であるIrLMP層処理部124へ出力する。
また、OBEX層処理部122が応答フレームの準備が完了するまでに、SMP層処理部123において応答フレームを生成して送信しておいてもよい。ただし、この場合には、制御部1231は、送信権委譲フラグ付加部12323に対して、一次局に送信権の委譲を行わないように制御して、送信フレームを生成するように制御する。そして、OBEX層処理部122から応答フレームの準備が完了した旨の通知を受けた時点で、送信フレーム生成部1232へ応答フレームの生成を指示する。また、このとき送信権委譲フラグ付加部12323に対して一次局に送信権の委譲を行うようフラグを設定するように制御する。送信フレーム生成部1232では、OBEX層処理部122から受信した応答フレームに、所定のヘッダ情報を付加してフレームを構築し、下位層であるIrLMP層処理部124へ出力する。
送信フレーム生成部1232では、制御部1231からの制御に応じて応答フレームを生成し、下位層であるIrLMP層処理部124へ生成した応答フレームを出力する。
こうして、二次局においては、一次局からの要求フレームに対する応答フレームの送信を、一次局から送信権の委譲が行われる毎に行っていく。
図14にUIフレーム及びUIフレームに対するレスポンス(応答)フレームに、フレームの通し番号、相手局に送信権を委譲するか否かを示すフラグ、それまで受信したフレーム中にエラーまたはフレーム抜けがあったか否かを示すフラグ、および一次局の上位層が要求フレームに対する応答フレームを要求しているか否かを示すフラグを付与した場合のフレーム構成を示す。ただし、ここで示すフレーム構成は一例であって、これに限るものではない。
ここでは、UIフレームおよびUIフレームに対するレスポンスフレームに3バイトのヘッダを付与し、相手局に送信権を委譲するか否かを示すフラグ、一次局の上位層が要求フレームに対する応答フレームを要求しているか否かを示すフラグ、二次局が使用する受信フレームにエラーがあったか否かを示すフラグ、および残り21ビットが送信フレームの通し番号として構成される。
以下、一次局の上位層が要求フレームに対する応答フレームを要求しているか否かを示すフラグをDL、相手局に送信権を委譲するか否かを示すフラグをBL、二次局が使用する受信フレームにエラーがあったか否かを示すフラグをRS、フレームの通し番号をSとする。
以下、このフレーム構成を用いて、本実施の形態によって構成される一次局と二次局との間にて、どのようにしてデータ転送が行われるかについて図15を用いて説明する。
なお、図15は、双方向通信においてすべての受信データについてエラーが発生しなかった場合を示す。
まず、一次局において、図示しない操作部に入力された利用者の指示に応じて、アプリケーション層処理部121から要求フレーム転送要求が通知され、OBEX層処理部122は下位層であるSMP層に対して要求フレームを出力する。
ここでは、nフレーム単位で二次局に送信権の委譲が行われるとする。また、図15に示すS、DL、BL、RSはそれぞれ、フレームの通し番号、一次局の上位層が要求フレームに対する応答フレームを要求しているか否かを示すフラグ、送信権の委譲を行うか否かを示すフラグ、再送要求を行うか否かを示すフラグである。
SMP層は、上位層であるOBEX層から受け渡された転送データを所定のデータサイズに分割し、通し番号を付けて下位層であるIrLMP層に出力する。ここでは、nフレーム単位で送信権の委譲を行うこととしているので、S=n−1のフレームはBL=1にして下位層にデータを出力する。
SMP層の下位層であるIrLMP層およびIrLAP層は、SMP層から受けたフレームに対してそれぞれ順次ヘッダを付加していき、赤外線通信路を介して二次局にフレームの送信を行う。
一方、二次局では、赤外線通信路を介して一次局からフレームを受信する。二次局は、SMP層の下位層であるIrLAP層、IrLMP層においてそれぞれ受信フレームから順次ヘッダ情報の解析を行い、ヘッダ情報を除去して上位層に対してデータを出力していく。
SMP層は、下位層であるIrLMP層からフレームの受信を行い、受信フレームのヘッダ情報(ここでは3Byte)の解析を行う。そして、ヘッダ情報内のフレーム通し番号を元にフレーム抜けなどのエラーが発生していないかをチェックし、エラーが発生していない場合は、ヘッダ情報の除去を行い、OBEX層(上位層)に順次データを渡していく。ただし、S=n−1のフレームについては、BL=1、DL=0であるので、一次局から送信権の委譲が行われており、かつ上位層であるOBEX層の応答が必要でないので、SMP層は、受信したn個のフレーム中にエラーがなく、再送が必要でないことを意味するよう、RS=1にしてレスポンスフレームを送信する。
一次局は、二次局から送信したn個のフレームを正常に受信した旨のレスポンスフレームを受信すると、上記処理と同様の処理を行い、次のn個のフレームを送信する。また、二次局も同様に、次のn個のフレームを受信し、BL=1のフレーム(図ではS=m−1)のフレームを受信すると、n個のフレームを正常に受信した旨のレスポンスフレームを一次局に対して返信する。
こうして、一次局は、順次n個のフレーム単位毎に二次局に送信権の委譲を行いながら、フレーム送信を行っていくが、転送データの最終フレームではBL=1、DL=1として、一次局の上位層が要求フレームに対する応答フレームを要求するようにして送信を行う。ここでは、DLビットを一次局の上位層が要求フレームに対する応答フレームを要求していることを示すためのフラグとして利用しているが、他の意味のフラグと兼用して利用することも可能である。例えば、図15で示す例の場合、転送データの最終フレームを意味するフラグとして扱うことも可能である。
BL=1、DL=1のフレームを受信した二次局のSMP層は、DL=1のため上位層であるOBEX層に対して、受信した要求フレームに対する応答フレームが要求されている旨の通知を行う。OBEX層では、SMP層からの通知を受けて、正常にすべてのデータ受信が完了したので、SMP層に対して応答フレームの送信要求を行い、応答フレームを渡す。SMP層は、OBEX層からの応答フレーム送信要求を受けて、OBEX層から受け渡された応答フレームにヘッダ情報(ここでは、再送が必要でないことを示すようにRS=1にし、BL=1、DL=1にする)を付加して、下位層であるIrLMP層にデータを渡す。下位層であるIrLMP層、およびIrLAP層は、それぞれ上位層から受け渡されたデータに所定のヘッダ情報を付加して、下位層に応答フレームを渡していき、IrLAP層では赤外線通信路を介して一次局に対して応答フレームの送信を行う。
二次局から送信された応答フレームを受信した一次局は、下位層から順次ヘッダ情報の解析および除去を行い、上位層に対してデータが受け渡していく。そして、SMP層の上位層であるOBEX層は、二次局から送信されたOBEX応答フレームを受信し、一次局のSMP層の上位層もデータ転送が正常に完了したことを認識できることになる。
また、図16、図17は、認証時などに上位層から認証要求が発行される場合のデータ転送の手順を示す信号シークエンス図である。
図16に示されるように、上位層から受け渡された認証用フレームに対して、SMP層においてDL=0、BL=1のヘッダ情報を付加して、二次局にデータ転送を行った場合には、二次局は、受信したフレームがBL=1のため送信権が一次局から委譲されており、DL=0であるので上位層からの応答を待つことなくレスポンスを返信するので、二次局の上位層の応答フレームが返信できないため、両局間で認証が完了しないことになる。
一方、本実施の形態による構成で、DL=1にして認証フレームを二次局に送信した場合には、二次局のSMP層においてDL=1であるため、上位層が応答フレームを準備完了した時点で、上位層から渡される応答フレームにヘッダ情報を付加して認証フレームに対するレスポンスフレームの返信を行うので、両局間の上位層間の認証が完了することになる。
また、図17に示すように、DL=1、BL=1のパケットを受信した場合に、SMP層は、上位層であるOBEX層に対して受信した要求フレームに対する応答フレームが要求されている旨の通知を行い、SMP層レベルでの応答フレームを先に返信してもよい。ただし、この場合には、BL=0で返信を行い、相手局に送信権を委譲しないようにしておく。そして、OBEX層で応答フレームの送信準備が完了した時点で、再度OBEXの応答フレームにSMP層のヘッダ情報を付加して応答フレームを返信する。
こうすることにより、一次局のSMP層は、二次局のOBEX層において応答フレームが準備されてから応答フレームが返信されてくる前に、SMP層レベルの応答フレーム(OBEX層の応答フレームが包含されていない)を受信することができる。これにより、一次局のSMP層は、OBEX層からの応答フレームが返信される前に、相手局が正常にフレームを受信できたか否かを知ることができるので、あらかじめ次のデータ転送の準備などを行っておくことができる。
なお、上記各実施の形態では、送信機(一次局)および受信機(二次局)がCPUを備える構成としたが、CPUに限らず、マイコンなどの演算処理機能を有するものであってもよい。
また、上記各実施の形態では、CPUからの指示を受けて、コントローラが転送データの転送を行うものとした。しかしながら、CPUを介さずに、DMA(ダイレクトメモリアクセス)によって、コントローラが転送データの転送を行ってもよい。この場合、CPUからの指示を受けることなく、メモリから転送データの転送を行うことができる。これにより、CPUの負担を低減することができる。
〔実施の第四形態〕
本実施の第四形態に係る転送データの転送システム(通信システム)について、図31から図33に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、送信機のブロック図として図31、受信機のブロック図として図32、信号のシークエンス図として図33を用いて説明する。
図31は、本実施の形態に係る送信機2001のブロック図である。なお、図31は、送信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
送信機2001は、送信データを送信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。
図31に示すように、送信機(一次局、クライアント機器)2001は、制御部(制御手段)2002、メモリ(記憶手段)2003、一括送信最終フラグ生成回路(一括送信最終フラグ生成手段)2004、通し番号生成回路(通し番号生成手段)2005、送信フレーム生成回路(送信フレーム生成手段)2006、送信部(送信手段)2007、受信部(受信手段)2008、受信フレーム解析回路(受信フレーム解析手段)2009、エラー無しフラグ解析回路(エラー無しフラグ解析手段)2010、エラー検出回路(エラー検出手段)2011、通し番号解析回路(通し番号解析手段)2012を備えて構成されている。
制御部2002は、送信機2001の各構成要素の制御を行う。
メモリ2003には送信データが蓄えられる。このメモリ2003は、揮発性のメモリ(例えばSDRAMなど)であっても、不揮発性のメモリ(例えばフラッシュメモリ、HDD、DVDなど)であってもよい。また、図31では、メモリ2003は、送信機2001内に配置されているが、必ずしも送信機2001内に存在する必要はなく、送信機2001の外部メモリとして送信機2001に接続されていても構わない。
一括送信最終フラグ生成回路2004は、送信機2001があるまとまった単位でデータ転送を行うときに、前記あるまとまった単位の最終データを含むフレームを送信する際に、それを意味する値として設定する回路である。本実施の形態においては、BL(Block Last)という略語を定義し、BLが1である場合は、前記あるまとまった単位の最終データを含むフレームであり、BLが0である場合は、前記あるまとまった単位の最終データがフレームに含まれていないものとする。
後述する図33のシークエンス図においても、同様の意味でBLという略語を用いている。また、本実施の形態においては、一括送信最終フラグと表現しているが、例えば通信確認要求フラグなどであっても、本質的には本実施の形態における一括送信最終フラグと同様の意味を持つため、一括送信最終フラグと必ずしも同一の意味を持ったフラグでなくても、同様の動作を行うフラグであれば、これに限らない。
通し番号生成回路2005は、予め定められたルールに従って、通し番号を増減し、各送信フレームに付与する回路である。本実施の形態においては、SEQ(Sequence number)という略語を定義し、SEQが1である場合は、通し番号が1であることを示している。図33のシークエンス図においても、同様の意味でSEQという略語を用いている。
送信フレーム生成回路2006は、予め定められたフォーマットにより、送信フレームを生成する回路である。前述の一括送信最終フラグBL、通し番号SEQ、送信データを予め定められたフォーマットに従って配置し、送信フレームを生成する。なお、本発明においては、ウィンドウサイズの制限がない通信方式を用いているため、ウィンドウサイズの制限がないフレームフォーマットでの送信フレームを生成する。例として、IrLAP(Infrared Link Access Protocol)におけるUI(Unnumbered Information)フレームがあげられるがこれに限らない。また、対向局がエラー検出を行うためのエラー検出符号も合わせて付加される。エラー検出符号としては、例えばCRC(Cyclic Redundancy Check)などがあるがこれに限らない。また、エラー訂正符号が付加されてもよい。
送信部2007は、送信フレーム生成回路2006によって生成された送信フレームを送信する回路である。例えば、通信媒体として赤外線を用いるならば、LED(発光ダイオード)やLD(レーザダイオード)となるが、これに限らない。また、他の通信媒体を用いる場合は、その通信媒体に応じた送信部となる。
受信部2008は、対向局が送信したフレームを受信する回路である。例えば、通信媒体として赤外線を用いるならば、PD(フォトダイオード)となるが、これに限らない。また、他の通信媒体を用いる場合は、その通信媒体に応じた受信部となる。
受信フレーム解析回路2009は、受信部2008により受信した受信フレームの解析を行う。具体的には、受信フレーム内のエラー無しフラグを抽出し、エラー無しフラグ解析回路2010に渡す。また、受信フレーム内の通し番号を抽出し、通し番号解析回路2012に渡す。また、受信フレーム内にデータが存在する場合は、データを抽出し、制御部2002を介して、メモリ2003に保存する。なお、メモリ2003にデータを保存する場合は、必ずしも制御部2003を介さなくてもよい。
エラー無しフラグ解析回路2010は、予め定められたフォーマットにより対向局に設定されたエラー無しフラグを解析し、解析結果を制御部に通知する。本実施の形態では、エラー無しフラグと表現しているが、例えばエラーありフラグや再送要求フラグ、再送要求無しフラグであっても構わない。
エラー検出回路2011は、受信フレームに付与されているエラー検出用の符号を解析し、受信フレームにエラーがないかどうかを判別し、解析結果を制御部に通知する。エラー検出用の符号として、例えば、CRC(Cyclic Redundancy Check)符号などの巡回符号があげられるが、これに限らない。また、エラー訂正符号が付与されている場合は、エラー訂正を行うこととなる。
通し番号解析回路2012は、受信した通し番号を解析し、解析結果を制御部2002に通知する。
図32は、本実施の形態に係る受信機2101のブロック図である。なお、図32は、受信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
受信機2101は、対向機器からの送信データを受信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。
図32に示すように、受信機(二次局、サーバ機器)2101は、制御部(制御手段)2102、メモリ(記憶手段)2103、エラー無しフラグ生成回路(エラー無しフラグ生成手段)2104、通し番号生成回路(通し番号生成手段)2105、送信フレーム生成回路(送信フレーム生成手段)2106、送信部(送信手段)2107、受信部(受信手段)2108、受信フレーム解析回路(受信フレーム解析手段)2109、一括送信最終フラグ解析回路(一括送信最終フラグ解析手段)2110、エラー検出回路(エラー検出手段)2111、通し番号解析回路(通し番号解析手段)2112を備えて構成されている。
制御部2102は、受信機2101の各構成要素の制御を行う。
メモリ2103には、受信データが蓄えられる。このメモリ2103は、揮発性のメモリ(例えばSDRAMなど)であっても、不揮発性のメモリ(例えばフラッシュメモリ、HDD、DVDなど)であってもよい。また、図32では、メモリ2103は、受信機2101に配置されているが、必ずしも受信機2101内に存在する必要はなく、受信機2101の外部メモリとして受信機2101に接続されていても構わない。
エラー無しフラグ生成回路2104は、対向局から受信したフレーム内にエラーがあったかどうかを対向局に通知するためのエラー無しフラグを予め定められたフォーマットにより生成する回路である。本実施の形態では、エラー無しフラグと表現しているが、例えばエラーありフラグや再送要求フラグ、再送要求無しフラグであっても、本質的には、エラー無しフラグと同様の意味を持つため、エラー無しフラグと同一の意味を持たないフラグであっても同様の動作をするものであるフラグならばこれに限らない。
通し番号生成回路2105は、それまでに受信したフレームにエラーが検出された場合に、対向局に再送要求を行う際に、再送して欲しい通し番号を設定する回路である。
送信フレーム生成回路2106は、前述のエラー無しフラグ、通し番号を予め定められたフォーマットに従って配置し、送信フレームを生成する回路である。例として、IrLAP(Infrared Link Access Protocol)におけるUI(Unnumbered Information)フレームがあげられるがこれに限らない。
送信部2107は、送信フレーム生成回路2106によって生成された送信フレームを送信する回路である。例えば、通信媒体として赤外線を用いるならば、LED(発光ダイオード)やLD(レーザダイオード)となるが、これに限らない。また、他の通信媒体を用いる場合は、その通信媒体に応じた送信部となる。
受信部2108は、対向局が送信したフレームを受信する回路である。例えば、通信媒体として赤外線を用いるならば、PD(フォトダイオード)となるが、これに限らない。また、他の通信媒体を用いる場合は、その通信媒体に応じた受信部となる。
受信フレーム解析回路2109は、受信部2108により受信した受信フレームの解析を行う。具体的には、受信フレーム内の一括送信最終フラグを抽出し、一括送信最終フラグ解析回路に渡す。また、受信フレーム内の通し番号を抽出し、通し番号解析回路に渡す。また、受信フレーム内にデータが存在する場合は、データを抽出し、制御部を介して、メモリに保存する。メモリにデータを保存する場合は、必ずしも制御部を介さなくてもよい。
一括送信最終フラグ解析回路2110は、受信フレーム解析回路2109により渡された一括送信最終フラグを解析し、解析結果を制御部2102に通知する。
エラー検出回路2111は、受信フレームに付与されているエラー検出用の符号を解析し、受信フレームにエラーがないかどうかを判別し、解析結果を制御部2102に通知する。エラー検出用の符号として、例えば、CRC(Cyclic Redundancy Check)符号などの巡回符号があげられるが、これに限らない。また、エラー訂正符号が付与されている場合は、エラー訂正を行うこととなる。
通し番号解析回路2112は、受信フレーム内に付与されている通し番号が予め定められたルールによって増減しているかどうかを解析し、解析結果を制御部2102に通知する。例えば、通信路において、フレームが抜けた場合などは、この通し番号解析回路2112によりエラーと判断される。
具体的には、送信フレーム生成回路2106は、エラー検出回路2111でデータのエラーが検出された場合に、エラー無しフラグをエラー有りに設定して、そのときの受信フレームの通し番号を含む送信フレームを生成する。また、送信フレーム生成回路2106は、エラー検出回路2111ではデータのエラーが検出されなかったが、通し番号解析回路2112において通し番号のエラーが検出された場合、そのときの受信フレームの通し番号を含む送信フレームを生成する。
つづいて、図31、図32、および図33のシークエンス図を参照しながら、本実施の形態における各信号の流れを説明する。
送信機2001は、自機器内もしくは外部から送信データの転送要求が発生すると、制御部2002が一括で送信するデータのサイズを定め、一括送信最終フラグ生成回路2003に通知する。
一括送信最終フラグ生成回路2003は、前記一括送信データサイズを内部に保持し、制御部2002もしくはメモリ2003から渡されるデータのサイズの累計を計算し、累計データサイズが、前記一括送信データサイズに達したならば、一括送信最終フラグを予め定められたフォーマットにより最終の意味(BL=1)と設定し、また、前記一括送信データサイズに達していないならば、最終でない意味(BL=0)と設定し、送信フレーム生成回路2005に渡す。また、制御部2002は、フレームを生成するごとに、通し番号生成回路2004に通し番号を生成するように通知する。
これを受けた通し番号生成回路2004は、予め定められたルールにより通し番号を増減し、送信フレーム生成回路2005に渡す。
送信フレーム生成回路2005は、前記の一括送信最終フラグ、通し番号、データを予め定められたフォーマットにより配置し、送信部2006を介して送信する。
図33においては、t101、t102、t103、t104、t110が一括送信最終フラグが最終でないフレームであり、t105、t111が一括送信最終フラグが最終のフレームである。また、t101、t102、t103、t104、t105の各フレーム内の通し番号(SEQ)は、本実施の形態においては、1ずつ増えていくものとして記述している。
受信機2101では、対向局からフレームを受信部2108を介して受信すると、受信フレーム解析回路2109にて受信フレーム内の各パラメータを抽出する。前記パラメータとは、例えば一括送信最終フラグ、通し番号、データなどであり、一括送信最終フラグは、一括送信最終フラグ解析回路2110に渡され、通し番号は通し番号解析回路2112に渡され、データは、必要ならば、制御部2102を介して、メモリ2103に保存される。
また、同時にエラー検出回路2111により、受信フレームにて、例えばCRCエラーがないかどうかのエラー検出が行われる。エラー検出もしくはエラー訂正符号がCRC符号以外の場合は、それに従ったエラー検出もしくはエラー訂正が行われる。
また、一括送信最終フラグ解析回路2110では、一括送信最終フラグの解析を行い、解析結果を通知する。
図33のシークエンス図においては、t113,t114,t115、t121のフレーム受信時は、一括送信最終フラグは最終でなく、t116、t122のフレーム受信時は、一括送信最終フラグを最終としてそれぞれ制御部2102に通知される。
また、通し番号解析回路2112においては、受信フレーム中の通し番号が予め定められたルールに従って、増減されているかどうかを解析し、解析結果を制御部2102に通知する。本実施の形態では、前記予め定められたルールとして通し番号はフレームごとに1ずつ増加することとしている。
図33のシークエンス図では、送信機2001が送信した通し番号3のフレームが通信路の異常により、受信機2102において認識されず、次の通し番号4のフレームを受信した場合を示している。この場合は、通し番号3のフレームがエラーが起きたフレームとして制御部2102に通知される。
制御部2102では、一括送信最終フラグが最終を意味するフレームを受信したことを通知され、またエラーが起きたフレームとして通し番号3が通知されているため、エラー無しフラグ生成回路2104に対して、エラーありを、また通し番号生成回路2105に対して、通し番号3をそれぞれ通知し、送信フレーム生成回路2106に送信フレームを生成するように通知する。
これを受けたエラー無しフラグ生成回路2104は、予め定められたフォーマットによりエラーありの意味を示すフラグを生成し、送信フレーム生成回路2106に渡す。
また、通し番号生成回路2105は、制御部2102より渡された通し番号3を送信フレーム生成回路2106に渡す。
これらのエラー無しフラグおよび通し番号を渡された送信フレーム生成回路2106は、予め定められたフォーマットによりこれらのパラメータを配置し、送信部2107を介して送信する。図33のシークエンス図においては、t117のフレームを指している。
t117のフレームをt106に受信部2008を介して受信した送信機2001は、受信フレーム解析回路2009にて、受信フレーム中の各パラメータの抽出を行い、抽出されたエラー無しフラグはエラー無しフラグ解析回路2010へ、また通し番号は通し番号解析回路2012へそれぞれ渡す。
エラー無しフラグ解析回路2010では、渡されたエラー無しフラグの解析を行う。この場合、受信機2101が送信したt117のフレームはエラーありを示しているため、エラーありとして解析され、その旨を制御部2002へ通知する。
また、通し番号解析回路2012では、通し番号の解析を行い、解析結果を制御部2002へと通知する。この場合、通し番号3が制御部2002へ通知される。
また、同時にエラー検出回路2011により、受信フレームにて、例えばCRCエラーがないかどうかのエラー検出が行われる。エラー検出もしくはエラー訂正符号がCRC符号以外の場合は、それに従ったエラー検出もしくはエラー訂正が行われる。
制御部2002は、前述のエラー無しフラグの解析結果、通し番号、エラー検出結果により、受信機2101に正常に一括送信が行えたかどうかを判断し、送信データに未送信の部分があるならば、それらのデータを一括送信するか、もしくはすでに送信したデータの再送を行うかどうかを判断する。この場合、エラーがあり、通し番号が3のフレームからの送信を受信機2101が要求していると判断されるため、送信データを前回の送信時において通し番号が3の部分から、再送を行うようにする。具体的には、一括送信最終フラグ回路2004に再送を行う旨を通知するとともに、通し番号生成回路2005には開始番号として3を通知する。
一括送信最終フラグ生成回路2004では、必要なら一括送信データサイズの再計算を行う。前回の一括送信データサイズと同じ値を用いてもよいし、また、前回の一括送信最終フラグを最終と意味するフレームを送信した際のフレームの通し番号で一括送信最終フラグを最終としてもよい。具体的には、1回目の一括送信にて、通し番号が1から5のフレームを送信した際に、受信機から通し番号3からのフレームの再送要求を受信した場合に、2回目の一括送信において、通し番号3から7の一括送信を行ってもよいし、通し番号3から5の一括送信を行ってもよいということである。
通し番号生成回路2005では、制御部2002から通し番号3からの再送を通知されると、通し番号の開始番号を3に再設定し、送信フレーム生成回路2006へと渡す。
送信フレーム生成回路2006は、送信フレームを生成し、送信部2007を介して送信する。
これらの再送の様子が、図33のt117、t110、t111である。
これらの再送フレームを受信した受信機2101は、エラー検出回路2111および通し番号解析回路2112にてすべての受信フレームにエラーがないと判断されると、一括送信最終フラグが最終を意味しているフレームt122を受信した後、制御部2102は、エラー無しフラグ生成回路2104にエラー無しの通知をする。
エラー無しフラグ生成回路2104はこれを受けて、エラー無しフラグをエラー無しの意味として設定し、送信フレーム生成回路2106に渡す。
送信フレーム生成回路2106はこれを受けて、エラー無しフラグをフレーム内に配置し、送信部2107を介して送信する。このときの通し番号については、説明を省略する。
このエラー無しフラグがエラー無しを示すフレームをt112にて受信した送信機2001では、エラー無しフラグ解析回路2010にて、エラー無しと判断され、制御部2002へと通知されると、一括送信が成功したことを制御部2002が認識し、送信データに未送信のデータがある場合は、引き続き一括送信を行うことが可能となる。
以上のように、送信機2001および受信機2101によれば、ウィンドウサイズの制限のないフレームを用いた通信方式においても、エラー発生時には再送処理を行うことが可能となり、信頼性の高い通信を行うことが可能となる。
また、送信機2001において、受信機2101から、エラー無しフラグがエラーありを意味する再送要求を受信したときに、同時に受信した通し番号からの再送を行うのではなく、送信データの開始からの再送を行ってもよい。
また、送信データの最初からの再送を行う場合は、付与される通し番号は予め定められたルールによる初期値から(例えば、本実施の形態では0から)送信されるのが望ましい。
また、送信データの再送を行う場合、再送回数に制限を設け、予め定められた値よりも多くの再送を行っても、受信機2101に正常に一括送信できない場合は、送信を中断もしくは終了するようにしてもよい。こうすることで、通信路の品質が極端に悪い場合、通信を中断もしくは終了しユーザに通知することが可能となり、品質の向上した通信路での通信を行うことが可能となる。
また、再送回数の制限を例えば1回とした場合、カウンタではなく、フラグでの処理も可能となり、回路の簡略化へとつながる。
また、受信機2101からの再送要求での通し番号からの再送においても、再送回数に制限を設けることで、通信路の品質が悪い場合に、送信を中断もしくは終了し、ユーザに通知することで、通信路の品質が向上する可能性がある。
また、前記と同様、再送回数を例えば1回とした場合、カウンタでなく、フラグでの処理も可能となり、回路の簡略化へとつながる。
また、送信機2001は、一括送信データサイズを1フレーム長とし、全てのフレームにおいて、一括送信最終フラグが最終となるようにしてもよい。この場合、全てのフレームにおいて、受信機2101からの応答が必要となり、通信効率は低下するが、送信機2001が受信機2101からの再送要求に対して、保持しておくべきデータの保存領域を少なくすることが可能となり、メモリの確保が十分にできないような送信機2001においては有効となる。
また、受信機2101において、エラー検出回路2111および通し番号検出回路2112により、受信フレームにエラーがあることが検出された場合、制御部2102は、一括送信最終フラグ解析回路2110により、一括送信最終フラグが最終のフレームを受信し、送信機2001に再送を要求するまでのデータは、送信機2001により再送される予定のデータであることから、その間のデータをメモリ2103に保存する処理を行わないとしてもよい。こうすることにより、再送による再受信の予定のあるデータの保存にかかる消費電力の削減につながる。
また、受信機2101において、送信機2001からの受信フレームにエラーが検出されたときに行う再送要求の回数に制限を設け、予め定められた値よりも多くの再送要求を行っても、受信機2101において、正常に一括受信できない場合は、受信を中断もしくは終了するようにしてもよい。こうすることで、通信路の品質が極端に悪い場合、通信を中断もしくは終了しユーザに通知することが可能となり、品質の向上した通信路での通信を行うことが可能となる。
また、再送要求回数の制限を例えば1回とした場合、カウンタではなく、フラグでの処理も可能となり、回路の簡略化へとつながる。
また、受信機2101において、送信機2001からの受信フレームにエラーが検出されたときに行う再送要求において、通し番号生成回路2105に予め定められた初期値(例えば、本実施の形態では0)を常に設定して、送信機2001に再送要求フレームを送信してもよい。こうすることで、エラーが検出された場合の再送要求のための通し番号を保持しておく必要がなり、回路の簡略化につながる。
〔実施の第五形態〕
本実施の第五形態に係る転送データの転送システム(通信システム)について、図32、図34から図36に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、送信機のブロック図として図34、受信機のブロック図として図32、信号のシークエンス図として図35および図36を用いて説明する。
図34は、本実施の形態における送信機2201のブロック図である。なお、図34は、送信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
送信機(一次局、クライアント機器)2201は、送信データを送信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。また、タイマ(計時手段)2213以外の各構成要素は、上述した実施の第四形態における送信機2001(図31)の各構成要素と同一の機能を持つため、説明は省略する。
タイマ2213は、制御部2002によって制御される。具体的には、一括送信最終フラグを最終として送信を行った後、制御部2002によりスタートされ、予め定められた時間以内に、受信機2101より応答フレームを正常受信しない場合、制御部2002にタイムアウトを通知する。
このタイムアウトの通知を受けた制御部2002は、通信路の異常により、直前に送信した一括送信最終フラグが最終を示すフレームが受信機2101にて正常に受信できていない(図35のt205のフレーム)、もしくは、直前に送信した一括送信最終フラグが最終を示すフレームは受信機にて正常に受信できているが、それに対して受信機から送信されたエラー無しフラグを含むフレームが通信路の異常により、送信機にて正常に受信できていない(図36のt312のフレーム)と判断し、一括送信最終フラグ生成回路2004、通し番号生成回路2005、送信フレーム生成回路2006にそれぞれ通知する。
前記通知を受けた一括送信最終フラグ生成回路2004は、一括送信最終フラグを最終とし、送信フレーム生成回路2006に渡す。
また、前記通知を受けた通し番号生成回路2005は、直前のフレームの通し番号を再度設定して送信フレーム生成回路2006に渡す。
これらを受けた送信フレーム生成回路2006は、直前に送信したフレームと同一のデータを再度設定し、また、前記一括送信最終フラグおよび通し番号を設定し、送信部2007を介して送信する。
以上のように、送信機2201が構成されることにより、一括送信最終フラグが最終を意味するフレームの再送信が可能となり、通信路の品質が悪い状態でも、再送処理を行うことが可能となり、信頼性の高い通信を行うことが可能となる。
また、一括送信最終フラグが最終のフレームの再送を行う場合、再送回数に制限を設け、予め定められた値よりも多くの再送を行っても、受信機2101に正常に一括送信できない場合は、送信を中断もしくは終了するようにしてもよい。こうすることで、通信路の品質が極端に悪い場合、通信を中断もしくは終了しユーザに通知することが可能となり、品質の向上した通信路での通信を行うことが可能となる。
また、図36のシークエンス図に示すように、一括送信最終フラグが最終を示す値となっているt311のフレームに対して、返信フレームt312を送信したにもかかわらず、通信路に異常があり、返信フレームt312が送信機にて正常に受信できなかった場合に、再び一括送信最終フラグが最終を示す値となっているフレームt313を受信する場合がある。
このような場合においては、受信機2101では、制御部2102において、直前の通し番号を保持しておき、一括送信最終フラグ解析回路2110にて、一括送信最終フラグが最終のフレームを受信した通知を受けたときに、通し番号解析回路2112からの通し番号が直前の通し番号と同一であった場合は、通し番号解析回路2112の解析結果がエラーであったとしても、エラーとして処理を行わず、制御部2102は、エラー無しフラグ生成回路2104に直前に送信したフレームと同一の値を設定し、また通し番号生成回路2105に同じく直前に送信したフレームの通し番号を設定し、送信することとなる。エラー無しフラグ生成回路2104にて設定される値がエラー無しを示しているならば、通し番号は設定されなくてもよい。
こうすることで、通信路の品質が悪く、受信機の送信したフレームを送信機が正常に受信できない場合でも、受信機からのフレームの再送を行うことが可能となり、信頼性の高い通信を行うことが可能となる。
また、受信機2101では、上記のように一括送信最終フラグが最終を示し、かつ同一の通し番号を持ったフレームを複数受信した場合は、2つめ以降のフレームについては、フレーム内データはすでにメモリ内に保存されているため、改めて保存しないように、制御部2102において制御してもよい。こうすることで、データの保存にかかる電力の消費を削減することが可能となる。
〔実施の第六形態〕
本実施の第六形態に係る転送データの転送システム(通信システム)について、図37から図39に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、送信機のブロック図として図37、受信機のブロック図として図38、信号のシークエンス図として図39を用いて説明する。
図37は、本実施の形態に係る送信機2301のブロック図である。なお、図37は、送信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
送信機(一次局、クライアント機器)2301は、送信データを送信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。また、対向局バッファサイズ解析回路(対向局バッファサイズ解析手段)2313以外の各構成要素は、上述した実施の第四形態における送信機2001(図31)の各構成要素と同一の機能を持つため、説明は省略する。
対向局バッファサイズ解析回路2313は、受信機2401(図38)から受信したフレーム内に含まれるバッファサイズパラメータを解析し、解析結果を制御部2002に通知する。
制御部2002は、これを受けて一括送信最終フラグ生成回路2004に対して、一括送信データサイズを、受信機2401のバッファサイズよりも小さな値に設定し、一括送信を行う。この受信機のバッファサイズは、一括送信を行う前に受信した方が望ましい。
図38は、本実施の形態に係る受信機2401のブロック図である。なお、図38は、受信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
受信機(二次局、サーバ機器)2401は、対向機器からの送信データを受信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。また、バッファサイズ生成回路(バッファサイズ生成手段)2413以外の各構成要素は、上述した実施の第四形態における受信機2101(図32)の各構成要素と同一の機能を持つため、説明は省略する。
制御部2102は、受信機2401が一括で受信可能なバッファのサイズをバッファサイズ生成回路2413に渡す。
バッファサイズ生成回路2413は、制御部2102から渡されたバッファサイズを予め定められたフォーマットにより生成し、送信フレーム生成回路2106に渡す。
送信フレーム生成回路2106は、前記バッファサイズを送信フレーム内に配置し、送信を行う。なお、前記バッファサイズを含むフレームは、一括送信を送信機が行う前に、送信機に対して送信するのが望ましく、例えば接続時に送信されるフレーム内に前記バッファサイズを配置して送信するのが望ましいが、これに限らない。
つづいて、図39のシークエンス図を参照しながら、本実施の形態における各信号の流れを説明する。
受信機2401の制御部2102は、例えば接続時に、バッファサイズ生成回路2413に対して、受信機2101が一括で受信可能なバッファサイズを通知する。
これを受けたバッファサイズ生成回路2413は、予め定められたフォーマットにより、バッファサイズパラメータを生成し、送信フレーム生成回路2106に渡す。
これを受けた送信フレーム生成回路2106は、予め定められたフォーマットにより、前記バッファサイズパラメータを送信フレーム内に配置し、送信する。これが図39のt408のフレームである。
送信機2301がt401にて、受信機2401のバッファサイズパラメータを含むフレームを受信すると、受信フレーム解析回路2009にて、バッファサイズパラメータが抽出され、対向局バッファサイズ解析回路2313に渡される。
対向局バッファサイズ解析回路2313では、バッファサイズパラメータを解析し、解析結果を制御部2002に通知する。
制御部2002は、解析されたバッファサイズ以下のサイズを一括送信データサイズとして設定し、一括送信最終フラグ生成回路2004へと渡す。
一括送信最終フラグ生成回路2004は、制御部2002より渡された一括送信データサイズを元に、一括送信最終フラグを設定し、一括送信を行う。
上記のようにすることで、受信機2401が一括で受信可能なバッファサイズを送信機2301に通知することが可能となり、また送信機2301により、受信機2401からの一括受信可能バッファサイズを元に一括送信データサイズを再計算し、一括送信最終フラグの制御に反映させることで、受信機2401の一括受信可能バッファサイズを越えた一括送信を送信機2301が行うことを未然に防ぐことが可能となる。
また、事前に一括受信可能バッファサイズのデフォルト値を送信機2301と受信機2401の間で定めておき、また、一括受信可能バッファサイズを送信機2301が受信していない場合は、デフォルトの値が採用されると定めておくことで、受信機2401において、一括受信可能バッファサイズのデフォルト値が受信機2401の一括受信可能バッファサイズ以下であるならば、一括受信可能バッファサイズを送信機2301に通知しなくとも、送信機2301がデフォルトの一括受信可能バッファサイズを用いて、一括送信を行うようにすれば、やはり受信機の一括受信可能バッファサイズを超えた一括送信を送信機が行うことを未然に防ぐことが可能となる。また、この場合は、受信機2401が送信機2301に一括送信可能バッファサイズを通知するためのフレームを送信する必要がなくなり、帯域の効率化につながる。
〔実施の第七形態〕
本実施の第七形態に係る転送データの転送システム(通信システム)について、図40から図42に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、送信機のブロック図として図40、受信機のブロック図として図41、信号のシークエンス図として図42を用いて説明する。
図40は、本実施の形態に係る送信機2501のブロック図である。なお、図40は、送信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
送信機(一次局、クライアント機器)2501は、送信データを送信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。また、データ最終フラグ生成回路(データ最終フラグ生成手段)2513以外の各構成要素は、上述した実施の第四形態における送信機2001(図31)の各構成要素と同一の機能を持つため、説明は省略する。
データ最終フラグ生成回路2513は、送信フレームに送信データの最終が含まれるかどうかを判別し、最終データが含まれる場合は、その意味を示す予め定められたフォーマットにより、データ最終フラグを生成し、また、最終データが含まれない場合は、その意味を示す予め定められたフォーマットにより、データ最終フラグを生成し、送信フレーム生成回路2006に渡す。
送信機2501の制御部2002は、送信フレームを生成する際に、データ最終フラグ生成回路2513に対して、送信フレーム生成回路2006にて送信フレームに配置されるデータが送信データの最終データがそうでないかを通知する。
データ最終フラグ生成回路2513は、これを受けて、予め定められたフォーマットにより、データ最終フラグを生成し、送信フレーム生成回路2006に渡す。本実施の形態においては、DL(Data Last)という略語を定義し、DLが0の場合は、送信データの最終データがフレーム内に含まれていない、またDLが1の場合は、送信データの最終データが含まれていることを意味する。本実施の形態においては、DLという略語で表現しているが、別の表現であっても構わない。また、送信データの最終データを含むフレームを送信する場合にDLを1としているが、例えば、対向局からレスポンスとして、ある種のレスポンスデータを必要とする場合は、本フラグは、レスポンス要求フラグとしての意味を持ち、その意味で、本フラグがレスポンス要求フラグとして、本実施の形態における送信データの最終データを意味するフラグDLと同様の動作を行うものであるならば、本フラグは、レスポンス要求フラグであってもよい。
送信フレーム生成回路2006は、データ最終フラグおよび一括送信最終フラグ、通し番号、データを送信フレーム内に配置し、送信部2007を介して、送信する。
図42のシークエンス図においては、t501、t502、t503、t504のフレームはデータ最終フラグDLが0で、フレーム内に送信データの最終データが含まれておらず、t505のフレームはデータ最終フラグDLが1で、フレーム内に送信データの最終データが含まれていることを示している。
次に、図41は、本実施の形態に係る受信機2601のブロック図である。なお、図41は、受信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
受信機(二次局、サーバ機器)2601は、対向機器からの送信データを受信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。また、データ最終フラグ解析回路(データ最終フラグ解析手段)2613以外の各構成要素は、上述した実施の第四形態における受信機2101(図32)の各構成要素と同一の機能を持つため、説明は省略する。
データ最終フラグ解析回路2613は、受信フレーム内に配置されたデータ最終フラグを解析し、受信フレームに送信機が送信する送信データの最終データが含まれているかどうかを制御部2102へと通知する。
受信機2601では、受信部2108を介して受信した受信フレームは、受信フレーム解析回路2109にて、データ最終フラグが抽出され、データ最終フラグ解析回路2613に渡される。また、同時に一括送信最終フラグ、通し番号も抽出され、各解析回路にて解析される。
データ最終フラグ解析回路2613では、受信フレーム中に、送信機2501の送信データの最終データが含まれるかどうかが解析され、その結果が制御部2102へと通知される。
制御部2102では、送信機2501の送信データの最終データが含まれている場合、予め定められた処理(例えば、受信データが圧縮されたJPEG(Joint Photographic Experts Group)データである場合、JPEGのデコードを開始するなど)を開始するなどの処理を行うことが可能である。
また、送信データの最終データを含むフレームにおいて、一括送信最終フラグが最終を示している場合は、エラー無しフラグを適当な値に設定し、送信を行うことが可能となる。
また、このとき、送信機2501からの送信データに対して、レスポンスデータを返す必要がある場合は、データを送信フレームに配置するときに、合わせてエラー無しフラグを配置して送信することで、帯域の効率化を図ることが可能となる。これが、図42のt512のフレームとなる。
このフレームt512をt506にて受信した送信機2501は、受信フレーム内のデータを解析することにより、受信機2601からのレスポンスデータを受信することが可能となる。
〔実施の第八形態〕
本実施の第八形態に係る転送データの転送システム(通信システム)について、図43に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。なお、本実施の形態に係るシークエンスは、上述した送信機2001(図31)、受信機2101(図32)、送信機2201(図34)、受信機2301(図37)、受信機2401(図38)、送信機2501(図40)、受信機2601(図41)に実装可能な付加的な機能である。
図43は、本実施の形態に係るシークエンス図である。
本実施の形態においては、送信機と受信機の間では、ウィンドウサイズの制限のない通信方式として、IrDA(Infrared Data Association)のIrLAP(Infrared Link Access protocol)のUI(Unnumbered Information)フレームを用いて、通信を行う。また、送信機および受信機はOBEX(Object Exchange Protocol)をサポートしており、Putオペレーションによりデータを送信するものとする。
図43においては、OBEXのPut Finalコマンドに送信データが配置され、IrLAPのUIフレームを用いて、フレーム送信が行われる。
Put Finalコマンドは、data0からdata7によって構成され、data0からdata7を全て連結するとPut Finalコマンドとなるように分割されている。
また、送信機の一括送信データサイズは、data0からdata3を連結したサイズであり、通し番号が3になった時点で、一括送信最終フラグBLを1としたフレームt604を送信する。このとき、OBEXのPut Finalコマンドで構成された送信データの最終データであるdata7は、送信フレームに含まれていないため、データ最終フラグDLは0である。
t614にて前記一括送信最終フラグBLが1のフレームを受信した受信機は、それまでの受信フレームにエラーが検出されなかったため、エラー無しフラグをエラー無しとし、t615にて送信する。また、受信したフレームのデータ最終フラグが0であるため、この時点では、OBEXのPut Finalコマンドに対する正常受信を意味するSUCCESSレスポンスは送信フレームには含まれない。
t605にて、前記エラー無しフラグがエラー無しを示すフレームを受信した送信機は、受信機が通し番号0から3の一括送信を正常受信したと判断し、引き続きdata4からdata7を一括送信する。t609にて通し番号7のフレーム送信を行う際には、一括送信最終フラグを1としている。また、t609にて通し番号7のフレームには、送信データの最終データであるdata7が含まれるため、データ最終フラグDLを1としている。
t619にて、データ最終フラグが1のフレームを受信した受信機は、通し番号4から7のフレームを正常に受信しており、また、送信機からのPut Finalコマンドを全て正常受信できたため、Put Finalコマンドに対する正常受信を意味するSUCCESSレスポンスを生成する。また、一括送信最終フラグが1であるため、SUCCESSレスポンスに合わせて、エラー無しフラグをエラー無しの意味とし、t620にて合わせて送信する。
t610にて、前記エラー無しフラグがエラー無しを示すフレームを受信した送信機は、通し番号4から通し番号7までの一括送信が正常に終了したことを認識するとともに、前記受信フレーム内に、送信機が送信したPut Finalコマンドに対するSUCCESSレスポンスが含まれているため、Putオペレーションも正常に終了したことを認識することが可能となる。
以上のように、本実施の形態の通信方法によれば、ウィンドウサイズの制限のないIrLAPのUIフレームを用いた場合でも、送信機と受信機の間で、通信の確認およびデータの交換が確実に行われることが可能となる。
〔実施の第九形態〕
本実施の第九形態に係る転送データの転送システム(通信システム)について、図44から図46に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、送信機のブロック図として図44、受信機のブロック図として図45、信号のシークエンス図として図46を用いて説明する。
図44は、本実施の形態に係る送信機2701のブロック図である。図44は、送信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
送信機2701は、送信データを送信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。
図44に示すように、送信機(一次局、クライアント機器)2701は、制御部(制御手段)2702、メモリ(記憶手段)2703、通し番号生成回路(通し番号生成手段)2705、送信フレーム生成回路(送信フレーム生成手段)2706、送信部(送信手段)2707、データ最終フラグ生成回路(データ最終フラグ生成手段)2713を備えて構成されている。
制御部2702は、送信機2701の各構成要素の制御を行う。
メモリ2703には送信データが蓄えられる。このメモリ2703は、揮発性のメモリ(例えばSDRAMなど)であっても、不揮発性のメモリ(例えばフラッシュメモリ、HDD、DVDなど)であってもよい。また、図44では、メモリ2703は、送信機2701に配置されているが、必ずしも送信機2701内に存在する必要はなく、送信機2701の外部メモリとして送信機2701に接続されていても構わない。
通し番号生成回路2705は、予め定められたルールに従って、通し番号を増減し、各送信フレームに付与する回路である。本実施の形態においては、SEQ(Sequence number)という略語を定義し、SEQが1である場合は、通し番号が1であることを示している。図46のシークエンス図においても、同様の意味でSEQという略語を用いている。
データ最終フラグ生成回路2713は、送信フレームに送信データの最終が含まれるかどうかを判別し、最終データが含まれる場合は、その意味を示す予め定められたフォーマットにより、データ最終フラグを生成し、また、最終データが含まれない場合は、その意味を示す予め定められたフォーマットにより、データ最終フラグを生成し、送信フレーム生成回路2706に渡す。本実施の形態においては、DL(Data Last)という略語を定義し、DLが0の場合は、送信データの最終データがフレーム内に含まれていない、またDLが1の場合は、送信データの最終データが含まれていることを意味する。なお、本実施の形態においては、DLという略語で表現しているが、別の表現であっても構わない。また、送信機2701と受信機2801の間で、事前に取り決めが行われているならば、本データ最終フラグは、必ずしも送信データの最終データを含む送信フレームにおいてのみ、最終を示す値をとる必要はなく、予め定められたルールに従い、例えば、送信データの最終データでない特定のデータを送信する際に、本データ最終フラグを最終を示す値に設定してもよい。その際は、データ最終フラグと異なる名称となる可能性もある。本実施の形態においては、データ最終フラグとしてDLという略語を用いることとする。
送信フレーム生成回路2706は、予め定められたフォーマットにより、送信フレームを生成する回路である。前述のデータ最終フラグDL、通し番号SEQ、送信データを予め定められたフォーマットにしたがって配置し、送信フレームを生成する。なお、本発明においては、ウィンドウサイズの制限がない通信方式を用いているため、ウィンドウサイズの制限がないフレームフォーマットでの送信フレームを生成する。本実施の形態においては、IrLAP(Infrared Link Access Protocol)におけるUI(Unnumbered Information)フレームを用いる。また、対向局がエラー検出を行うためのエラー検出符号も合わせて付加される。エラー検出符号としては、例えばCRC(Cyclic Redundancy Check)などがあるがこれに限らない。また、エラー訂正符号が付加されてもよい。
送信部2707は、送信フレーム生成回路2706によって生成された送信フレームを送信する回路である。例えば、通信媒体として赤外線を用いるならば、LED(発光ダイオード)やLD(レーザダイオード)となるが、これに限らない。また、他の通信媒体を用いる場合は、その通信媒体に応じた送信部となる。
図45は、本実施の形態に係る受信機2801のブロック図である。図45は、受信機の構成の一例であり、これに限るものではない。また、各構成回路はソフトウェアであってもハードウェアであっても構わない。以下に各構成要素の説明を行う。
受信機2801は、対向機器からの送信データを受信する側の機器である。ここでいう送信データとは、例えばテキストデータ、画像データなどがあげられるが、これに限らない。
図45に示すように、受信機(二次局、サーバ機器)2801は、制御部(制御手段)2802、メモリ(記憶手段)2803、受信部(受信手段)2808、受信フレーム解析回路(受信フレーム解析手段)2809、エラー検出回路(エラー検出手段)2811、通し番号解析回路(通し番号解析手段)2812、データ最終フラグ解析回路(データ最終フラグ解析手段)2813を備えて構成されている。
制御部2802は、受信機2801の各構成要素の制御を行う。
メモリ2803には受信データが蓄えられる。このメモリ2803は、揮発性のメモリ(例えばSDRAMなど)であっても、不揮発性のメモリ(例えばフラッシュメモリ、HDD、DVDなど)であってもよい。また、図45では、メモリ2803は、受信機2801内に配置されているが、必ずしも受信機2801内に存在する必要はなく、受信機2801の外部メモリとして受信機2801に接続されていても構わない。
受信部2808は、対向局が送信したフレームを受信する回路である。例えば、通信媒体として赤外線を用いるならば、PD(フォトダイオード)となるが、これに限らない。また、他の通信媒体を用いる場合は、その通信媒体に応じた受信部となる。
受信フレーム解析回路2809は、受信部2808により受信した受信フレームの解析を行う。具体的には、受信フレーム内のデータ最終フラグを抽出し、データ最終フラグ解析回路2813に渡す。また、受信フレーム内の通し番号を抽出し、通し番号解析回路2812に渡す。また、受信フレーム内にデータが存在する場合は、データを抽出し、制御部2802を介して、メモリ2803に保存する。メモリ2803にデータを保存する場合は、必ずしも制御部2802を介さなくてもよい。
エラー検出回路2811は、受信フレームに付与されているエラー検出用の符号を解析し、受信フレームにエラーがないかどうかを判別し、解析結果を制御部2802に通知する。エラー検出用の符号として、例えば、CRC(Cyclic Redundancy Check)符号などの巡回符号があげられるが、これに限らない。また、エラー訂正符号が付与されている場合は、エラー訂正を行うこととなる。
通し番号解析回路2812は、受信フレーム内に付与されている通し番号が予め定められたルールによって増減しているかどうかを解析し、解析結果を制御部2802に通知する。例えば、通信路において、フレームが抜けた場合などは、この通し番号解析回路2812によりエラーと判断される。
データ最終フラグ解析回路2813は、受信フレーム解析回路2809により渡されたデータ最終フラグを解析し、解析結果を制御部2802に通知する。
つづいて、図44、図45、および図46のシークエンス図を参照しながら、本実施の形態における各信号の流れを説明する。なお、送信機2701および受信機2801はOBEX(Object Exchange Protocol)をサポートしており、Putオペレーションによりデータを送信するものとする。
図46においては、OBEXのPut Finalコマンドに送信データが配置され、IrLAPのUIフレームを用いて、フレーム送信が行われる。
Put Finalコマンドは、data0からdata7によって構成され、data0からdata7を全て連結するとPut Finalコマンドとなるように分割されている。また、data7がPut Finalコマンドの最終データである。
送信機2701では、自機器内もしくは外部から送信データの転送要求が発生すると、制御部2702が通し番号生成回路2705に対して通し番号の生成を通知する。また、データ最終フラグ生成回路2713に対してデータ最終フラグの生成を通知する。
通し番号生成回路2705は、予め定められたルールにより通し番号を増減し、送信フレーム生成回路2006に渡す。
また、データ最終フラグ生成回路2713は、送信フレームに送信データの最終データが含まれるかどうかを判別し、含まれる場合は最終を示し、含まれない場合は、最終でないを示す予め定められたフォーマットによるデータ最終フラグを作成し、送信フレーム生成回路2706に渡す。
送信フレーム生成回路2706は、前記データ最終フラグ、通し番号、データを予め定められたフォーマットにより配置し、送信部2706を介して送信する。
図46においては、t701、t702、t703、t704、t705、t706、t707がデータ最終フラグが最終でないフレーム、t708がデータ最終フラグが最終のフレームである。t701からt708の各フレーム内の通し番号(SEQ)は、本実施の形態においては、1ずつ増えていくものとして記述している。
次に、受信機2801では、対向局からフレームを受信部2808を介して受信すると、受信フレーム解析回路2809にて受信フレーム内の各パラメータを抽出する。前記パラメータとは、例えばデータ最終フラグ、通し番号、データなどであり、データ最終フラグは、データ最終フラグ解析回路2813に渡され、通し番号は通し番号解析回路2812に渡され、データは、必要ならば、制御部2802を介して、メモリ2803に保存される。また、同時にエラー検出回路2811により、受信フレームにて、例えばCRCエラーがないかどうかのエラー検出が行われる。エラー検出もしくはエラー訂正符号がCRC符号以外の場合は、それに従ったエラー検出もしくはエラー訂正が行われる。
また、データ最終フラグ解析回路2813では、データ最終フラグの解析を行い、解析結果を通知する。図46のシークエンス図においては、t701、t702、t703、t704、t705、t706、t707のフレーム受信時は、データ最終フラグは最終でなく、t708のフレーム受信時は、データ最終フラグを最終としてそれぞれ制御部2802に通知される。
また、通し番号解析回路2812においては、受信フレーム中の通し番号が予め定められたルールに従って、増減されているかどうかを解析し、解析結果を制御部2802に通知する。本実施の形態では、前記予め定められたルールとして通し番号はフレームごとに1ずつ増加することとしている。図46のシークエンス図においては、送信機2701が送信した8つのフレームは、全て正常受信し、送信機2701との間で予め通し番号は1ずつ増えていくと定められている状態で、全てのフレームの通し番号が1つ前のフレームの通し番号と比べて1だけ増加しているため、全ての受信フレームにおいて、正常受信として、受信機2801の制御部2802に通知される。
制御部2802では、全ての受信フレームにおいて、エラーが検出されず、またデータ最終フラグを含むフレームを受信した場合は、予め定められた処理(例えば、受信データが圧縮されたJPEGデータである場合、JPEGのデコードを開始するなど)を開始するなどの処理を行うことが可能である。
また、受信機2801において、エラー検出回路2811および通し番号検出回路2812により、受信フレームにエラーがあることが検出された場合、以降のデータをメモリ2103に保存する処理を行わないとしてもよい。こうすることにより、エラーが検出された場合の以降のデータ保存にかかる消費電力の削減が可能となる。
以上のように、送信機2701および受信機2801によれは、ウィンドウサイズの制限のないIrLAPのUIフレームを用いた通信方式において、片方向通信においても、フレームの抜けを検出することが可能となり、信頼性の高い通信を行うことが可能となる。また、片方向通信時には、送信機2701において、OBEXのPut Finalコマンドに対するSUCCESSレスポンスの受信ができないが、送信機2701の制御部2702において、片方向通信時には、Put Finalを送信完了した時点で、Putオペレーションの終了を行うように定めていれば、片方向通信においても、Putオペレーションによるデータ転送を正常に行うことが可能となる。
〔実施の第十形態〕
本実施の第十形態に係る転送データの転送システム(通信システム)について、図47から図51に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、一括して送信するデータのサイズの決め方について説明する。本発明の通信システムでは、送信機が一括して送信する一括送信データのサイズを、データの再送および受信機でのデータ処理に都合の良いように決めることができる。なお、一括送信データのサイズは、送信するデータの種類や通信路の状態等に応じて、送信機のアプリケーション等が決定してもよいし、受信機から一括送信データのサイズあるいは該サイズを決定するための情報(例えば、受信機のバッファサイズ)を送信機に送信してもよい。
また、データの分割は、通常SMP層が行うが、その他の層において行ってもよい。
本実施の形態では、一例として、JPEG画像を転送する場合について記述する。
図47は、送信機におけるJPEGエンコーダおよび受信機におけるJPEGデコーダの構成を示すブロック図である。
図47に示すように、JPEG画像を転送する際には、送信機のJPEGエンコーダ91において、まず原画像をブロック(mcu:minimum coded unit)単位でDCT変換を行う。mcuとは、JPEG変換を行ううえでの最小単位であり、圧縮方式により、8×8、8×16、16×8、16×16の4種類がある(図48(a)〜(d))。
8×8(図48(a))では、すべての画素において、輝度成分(Y)、色度成分(Cb、Cr)が1対1の関係となる。8×16(図48(b))では、1つの縦長の単位内(1)にYが2つ(8×8における1と9に相当)とCb(8×8における1と9の平均)、Cr(8×8における1と9の平均)がそれぞれ1つずつ入っている。16×8(図48(c))では、1つの横長の単位内にYが2つ(8×8における1と2に相当)と、Cb(8×8における1と2の平均)、Cr(8×8における1と2の平均)がそれぞれ1つずつ入っている。16×16(図48(d))では、1つの単位内(1)にYが4つ(8×8における1、2、9、10に相当)とCb(8×8における1、2、9、16の平均)、Cr(8×8における1、2、9、16の平均)がそれぞれ1つずつ入っている。
上述のように、8×8が最も圧縮率が低く、復号後の画像が原画像と近くなるがデータ量が多くなる。これは一般に4:4;4と呼ばれている。また、16×16ブロックが最も圧縮率が高く、データ量が少なくなるが、平均している部分が多くなるため、原画像と異なる復号画像が得られる可能性が高くなる。
そして、DCT変換においては、前述のブロック単位での入力を元に、DCT変換(離散コサイン変換)を行う。この変換は、2次元マトリクスの乗算として計算され、ブロック内の画素数と同じ数である64個の変換係数が得られる。得られた変換係数は、左上に近いほど、周波数成分が低くなり、右下に近いほど、周波数成分が高くなる。一般に画像は、隣接する画素との相関が大きいため、周波数成分の高い変換係数ほど、出現確率は少なくなる。
次に、量子化においては、前述の変換係数を予め定められた量子化テーブルにより除算する。前述のとおり、一般的に周波数の高い変換係数の出現確率は低いため、変換テーブルの周波数の高い部分を大きくすると、周波数成分の高い変換係数は、量子化を行うことによりほとんどが0となる。
最後に、エントロピー符号化においては、予め定められたエントロピー符号化テーブルを元にエントロピー符号化を行う。前述の通り、量子化により0に変換された変換係数は、エントロピー符号化により0の連続数として表現され、この時点で圧縮が可能となる。つまり、原画像において、周波数成分が低い(隣接する色の変化が激しくない)画像は、JPEG圧縮の圧縮効率が高くなる傾向がある。
そして、エントロピー符号化された画像データが、通信路に伝送される。
一方、通信路から前述のエントロピー符号化された画像データを受信した受信機では、JPEGデコーダ92において、送信機で行われた作業と全く逆の作業を行うことにより、JPEG復号を行う。
まず、エントロピー復号化において、予め定められたエントロピー符号化テーブルを元にエントロピー復号を行う。そして、エントロピー復号を行って得られたデータは、逆量子化により、予め定められた逆量子化テーブルを用いて、逆量子化される。逆量子化後のデータは、逆DCT変換により、輝度成分Y、色度成分Cb、Crに変換される。また、このとき、8×8、8×16、16×8、16×16それぞれの圧縮方式によって、輝度成分Y、平均化された色度成分Cb、Crを用いて、画像が復元される。
上述のように、JPEG画像の転送においては、圧縮画像生成、復号において、ブロック単位(mcu)単位で、データの処理が行われている。また、復号後の表示においては、前述のmcuが1列分並んだ1ライン単位での処理や、1フレーム単位(1画像単位)での処理を行うことで都合がよいことがある。これは、映像信号において、1ラインごとに水平同期信号が存在し、また1フレームごとに垂直同期信号が存在し、それらの同期信号ごとに、ラインバッファや、フレームバッファを更新することで、ビデオメモリの更新タイミングを処理することが可能となるからである。なお、このことは、ブロック単位での処理を行うMPEGなどの動画処理においても同様である。
つづいて、データの分割再送処理の具体例として、mcu単位で分割再送する場合、ライン単位で分割再送する場合、ファイル単位で分割再送する場合について、それぞれ説明する。
図49は、本発明の通信システムにおけるmcu単位での分割、再送処理の説明図である。
送信機では、前述のDCT、量子化、エントロピー符号化を行ったmcu単位での転送を行っている。具体的には、mcu1つ分のデータに相当する単位で送信用一時バッファにデータを転送し、送信用一時バッファのデータを転送し終えると、一括送信終了フラグを1としている。
受信機では、一括送信終了フラグが1であるフレームを受信するごとに、受信用一時バッファのデータを例えばアプリケーションに転送し、アプリケーションにおいてJPEGデコードする。
このようにmcu単位で分割再送を行う場合、送信機の送信用一時バッファおよび受信機の受信用一時バッファは、mcu1つ分だけ(通常、数10バイトから数百バイト程度)確保すればよい。それゆえ、一時的なメモリの確保が困難な通信機においては、有効な分割再送方式となる。
図50は、本発明の通信システムにおけるライン単位での分割、再送処理の説明図である。
送信機では、送信用一時バッファに、1列分(8×8の場合、8ライン分に相当)のデータを転送し、1列分の送信が終わった時点で、一括送信終了フラグを1としている。
受信機では、一括送信終了フラグが1のフレームを受信した時点で、例えばアプリケーションに受信データを転送し、アプリケーションにおいてJPEGデコードを行う。
このようにライン単位で分割再送を行う場合、アプリケーションにデータが転送された時点で、1列分(8×8の場合、8ライン分)のデータがそろっていることになり、受信データを列単位で処理する場合での処理を簡略化することが可能となる。また、エラー発生時には、エラーが発生していない部分だけを表示する表示系においては、デコード後のデータが列単位であるため、列の途中で表示データが切れることがない。なお、この方式の場合、送信機の送信用一時バッファおよび受信機の受信用一時バッファは、数キロバイトから数百キロバイト程度が必要になると予想される。
図51は、本発明の通信システムにおけるファイル単位での分割、再送処理の説明図である。
送信機では、送信用一時バッファに、送信画像1つ分を渡し、送信用一時バッファ内のデータを全て送信し終わった時点で、一括送信終了フラグを1としている。
受信側では、一括送信終了フラグが1のフレームを受信した時点で、例えばアプリケーションに受信データを渡し、アプリケーションにおいてJPEGデコード処理を行っている。
このようにファイル単位で分割再送を行う場合、画像1枚分のデータ単位での分割再送処理を行うことができるため、アプリケーションのJPEGデコーダでは、1枚の画像単位でのJPEGデコードを行うこととなり、1枚の画像のデコードが完了した時点で、表示用のフレームメモリを更新するなどの処理が簡単に行える。なお、この方式の場合、送信機の送信用一時バッファおよび受信機の受信用一時バッファは、数100kBから数MB程度となることが予想される。また、MPEGなどのように、静止画像を連続して送信するような、処理系において、通信によりエラーが発生した場合に、直前の画像を完全な状態で表示し続けるなどの処理が簡単に行えるため、有効である。
また、受信機からの応答を待つ時間に関しては、一括送信終了フラグが1のフレームにエラーが発生した場合には、直ちに再送することが望ましい。ただし、エラーが発生しておらず、受信機での受信データの処理に時間がかかっている場合などのように、応答が返せない場合がある。その場合には、受信データ処理時間よりも大きいが、大きすぎないような時間を送信機が設定し、前述の時間を待っても応答が返ってこないときには、一括送信終了フラグが1のフレームを再送してもよい。これにより、受信機でのデータ処理時間が保証され、かつ最適な再送処理を行うことが可能となる。
〔実施の第十一形態〕
本発明の実施の第十一形態に係る転送データの転送システム(通信システム)のクライアント機器(通信装置)について説明すると以下のとおりである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
まず、図52は、従来のOBEXプロトコルを用いて通信を行うクライアント機器のブロック図である。
図52に示すように、従来のクライアント機器(通信装置)3200は、アプリケーション層処理部3210と、OBEX層処理部(オブジェクト交換層処理部)3220と、下位層処理部3230と、送信部3240と、受信部3250とを少なくとも備えている。
アプリケーション層処理部3210は、図示しない操作部に入力された利用者の指示に応じて、OBEX層処理部3220に対して、要求コマンドの発行処理を要求する。
OBEX層処理部3220は、制御部3221と、要求通知部3222と、応答受信部3223とを備えている。
制御部3221は、アプリケーション層処理部3210からの要求に応じて、要求通知部3222に対して要求コマンドの生成および下位層へ要求コマンドの発行を行うよう通知する。また、応答受信部3223からの応答コマンド受信結果通知を受けて、アプリケーション層処理部3210へ応答コマンドの受信結果を通知する。
要求通知部3222は、制御部3221からの要求コマンド発行通知を受けて、要求コマンドを生成し、下位層処理部3230へ出力する。応答受信部3223は、下位層処理部3230から出力される応答コマンドを受信し、受信した応答コマンドの解析を行い、制御部3221に対して、コマンド解析結果および応答コマンドを受信した旨の通知を行う。
下位層処理部3230は、OBEX層処理部3220からの要求コマンドに適当な下位層のヘッダを付加して送信部3240に渡すとともに、受信部3250からの受信応答コマンドから、適当な下位層のヘッダを除去して、OBEX層処理部3220に渡す。
送信部3240は、赤外線通信路を介して、下位層処理部3230から受信した要求コマンドを外部に送信する。
受信部3250は、赤外線通信路を介して、相手機器(サーバ機器)から送信された応答コマンドを受信し、受信した応答コマンドを下位層処理部3230に出力する。
次に、図53に示すフローチャートを用いて、図52のOBEX層処理部3220の制御部3221の動作を説明する。
ステップS51は、クライアント機器3200のアプリケーション層処理部3210およびOBEX層処理部3220の制御部3221において、サーバ機器への要求コマンドが発生しているかどうかを判別するステップである。発生している場合は、ステップS52へ、また発生していない場合は、再びステップS51へそれぞれ遷移する。
ステップS52は、サーバ機器への要求コマンドを下位層処理部3230へ送信するステップである。送信終了後、ステップS53へと遷移する。
ステップS53は、サーバ機器からの応答コマンドを下位層処理部3230から受信したがどうかを判別するステップである。受信した場合は、ステップS54へ、また受信していない場合は、再びステップS53へ、それぞれ遷移する。
ステップS54は、受信した応答コマンドを解析するステップである。解析終了後、ステップS55へと遷移する。
ステップS55は、通信終了かどうかを判別するステップである。通信終了でない場合は、再びステップS51へと遷移する。
以上の動作により、従来のクライアント機器3200のOBEX層処理部3220は、要求コマンドを発行し、それに対する応答コマンドを解析し、次の要求コマンドを再び発行することで通信を行うことが可能となる。
しかし、前述の従来のクライアント機器3200のOBEX層処理部3220の動作では、サーバ機器から応答コマンドを受信しない限り、次の要求コマンドの送信ができないといった問題がある。
これを解決するために、図55のフローチャートに示すとおり、本実施の形態に係るクライアント機器3300(図54)では、サーバ機器へ要求コマンドを発行した後、サーバ機器からの応答コマンドを受信しなくとも次の要求コマンドを発行することを可能とする。具体的には以下のとおりとなる。
ステップS61は、クライアント機器3300のアプリケーション層処理部3310およびOBEX層処理部3320の制御部3321において、サーバへの要求コマンドが発生しているかどうかを判別するステップである。発生している場合は、ステップS62へ、また発生していない場合は、再びステップS61へそれぞれ遷移する。
ステップS62は、サーバ機器への要求コマンドを下位層処理部3330へと送信するステップである。送信終了後、ステップS65へと遷移する。
ステップS65は、通信終了かどうかを判別するステップである。通信終了でない場合は、再びステップS61へと遷移する。
以上の動作をクライアント機器3300のOBEX層処理部3320の制御部3321が行うことにより、クライアント機器3300から、要求コマンドを送信した後、サーバ機器からの応答コマンドを受信しなくても、次の要求コマンドを送信することが可能となる。
ここで、図54は、本実施の形態に係るクライアント機器3300のブロック図である。
OBEX層処理部(オブジェクト交換層処理部)3320の通信方向選択部3324以外の各ブロックは、図52を用いて上述した従来のクライアント機器3200のOBEX層処理部3220の各ブロックと同じ機能を持つため説明を省略する。
通信方向選択部3324は、通信が片方向通信か双方向通信かを選択する機能を有する。ここでいう片方向通信とは、クライアント機器からの要求コマンドに対して、サーバ機器からの応答コマンドを必要としない通信である。サーバ機器に送信部が存在しない場合、もしくは、クライアント機器に受信部が存在しない場合は、必然的に片方向通信となるが、送信部と受信部をクライアント機器およびサーバ機器がそれぞれ有しているが、信号の流れがクライアント機器からサーバ機器への片方向である場合は、やはり片方向通信となる。また、双方向通信とは、クライアント機器から送信された要求コマンドに対して、応答コマンドをサーバ機器が送信し、前記応答コマンドの解析後に、再びクライアント機器が次の要求コマンドを送信する通信方式である。この場合、すべての要求コマンドに対して、応答コマンドが必要になるわけでなく、クライアント機器のOBEX層とサーバ機器のOBEX層の双方で、事前に取り決めがなされていれば、特定の要求コマンドに対する応答コマンドは必ずしも必要でない。
次に、図56のフローチャートを用いて、本実施の形態に係るクライアント機器3300のOBEX層処理部3320の制御部3321の動作を説明する。
ステップS70は、通信方向選択部3324にて、双方向通信か片方向通信かを選択するステップである。双方向通信の場合は、ステップS71へ、また片方向通信の場合は、S81へそれぞれ遷移する。
ステップS71は、双方向通信において、アプリケーション層処理部3310もしくはOBEX層処理部3320の制御部3321において、サーバ機器への要求コマンドが発生しているかどうかを判別するステップである。発生している場合は、ステップS72へ、発生していない場合は、再びステップS71へそれぞれ遷移する。
ステップS72は、双方向通信において、サーバ機器への要求コマンドを下位層処理部3330へ送信するステップである。送信終了後、ステップS73へ遷移する。
ステップS73は、双方向通信において、サーバ機器からの応答コマンドを受信したかどうかを判別するステップである。受信した場合は、ステップS74へ、受信していない場合は、再びステップS73へそれぞれ遷移する。
ステップS74は、双方向通信において、サーバ機器からの応答コマンドを解析するステップである。解析終了後、ステップS75へ遷移する。
ステップS75は、双方向通信において、通信を終了するかどうかを判別するステップである。終了でない場合は、ステップS71へ再び遷移する。
一方、ステップS81は、片方向通信において、アプリケーション層処理部3310もしくはOBEX層処理部3320の制御部3321において、サーバ機器への要求コマンドが発生しているかどうかを判別するステップである。発生している場合は、ステップS82へ、発生していない場合は、再びステップS81へそれぞれ遷移する。
ステップS82は、片方向通信において、サーバ機器への要求コマンドを下位層処理部3330へ送信するステップである。送信終了後、ステップS85へ遷移する。
ステップS85は、片方向通信において、通信を終了するかどうかを判別するステップである。終了でない場合は、ステップS81へ再び遷移する。
以上の動作を、クライアント機器3300のOBEX層処理部3320の制御部3321が行うことにより、双方向通信では、サーバ機器からの応答コマンドを待ってから次の要求コマンドを送信し、片方向通信では、サーバ機器からの応答コマンドを受信しなくても次の要求コマンドを送信することが可能となる。
〔実施の第十二形態〕
本発明の実施の第十二形態に係る転送データの転送システム(通信システム)のクライアント機器(通信装置)について説明すると以下のとおりである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
図54が本実施の形態のクライアント機器3300のブロック図である。すなわち、上述した実施の第十一形態と同一であり、また、OBEX層処理部3320の制御部3321以外の各ブロックの動作も基本的に実施の第十一形態における各ブロックの動作と同じであるため、説明を省略する。
図57に示すフローチャートを用いて、本実施の形態に係るOBEX層処理部3320の制御部3321の動作を説明する。
ステップS91は、アプリケーション層処理部3310もしくはOBEX層処理部3320の制御部3321において、サーバ機器へのPut要求コマンドが発生しているかどうかを判別するステップである。発生している場合は、ステップS92へ、発生していない場合は、再びステップS91へそれぞれ遷移する。
ステップS92は、サーバ機器へPut要求コマンドを送信するステップである。送信終了後、ステップS93へ遷移する。
ステップS93は、送信したPut要求コマンドが最終のPut要求コマンドがそうでないかを判別するステップである。最終である場合は、ステップS94へ、また最終でない場合は、ステップS91へそれぞれ遷移する。
ステップS94は、サーバ機器からの応答コマンドを受信したかどうかを判別するステップである。受信した場合は、ステップS95へ、受信していない場合は、再びステップS94へそれぞれ遷移する。
ステップS95は、サーバ機器からの応答コマンドを解析するステップである。解析終了後、ステップS96へと遷移する。このとき、最終のPut要求コマンドに対するSUCCESS応答コマンドを受信したかどうかを判別することとなる。
ステップS96は、通信が終了かどうかを判別するステップである。終了でない場合は、再びステップS91へと遷移する。
以上の動作を、クライアント機器3300のOBEX層処理部3320の制御部3321が行うことにより、最終でないPut要求コマンドに対しては、サーバ機器からのCONTINUE応答コマンドを待つことなく、次のPut要求コマンドを送信することが可能となり、通信の効率をあげることが可能となる。また、最終のPutコマンドに対するサーバ機器からのSUCCESS応答コマンドに対してはクライアント機器3300において、確認を行うため、クライアント機器3300において、サーバ機器に正常にデータ転送を行えたかどうかを判別することが可能となる。
また、図56に示したように、通信方向選択部3324による双方向通信、片方向通信の切り替えと組合わせることで、双方向通信時は、最終のPutコマンドのみSUCCESS応答コマンドを必要とし、片方向通信時は、全ての要求コマンドに対して応答コマンドを必要としないといった動作を行うことが可能となる。
〔実施の第十三形態〕
本発明の実施の第十三形態に係る転送データの転送システム(通信システム)のサーバ機器(通信装置)について説明すると以下のとおりである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
まず、図58に、従来のOBEXプロトコルを用いて通信を行うサーバ機器のブロック図を示す。
図58に示すよう、にサーバ機器(通信装置)3400は、アプリケーション層処理部3410と、OBEX層処理部(オブジェクト交換層処理部)3420と、下位層処理部3430と、送信部3440と、受信部3450とを少なくとも備えている。
アプリケーション層処理部3410は、図示しない操作部に入力された利用者の指示に応じて、OBEX層処理部3420に対して、受信要求コマンド処理および応答コマンド発行を要求する。
OBEX層処理部3420は、制御部3421と、応答通知部3422と、要求解析部3423とを備えている。
制御部3421は、アプリケーション層処理部3410からの要求に応じて、応答通知部3422に対して応答コマンドの生成および下位層へ応答コマンドの発行を行うよう通知する。また、要求解析部3423からの要求コマンド受信結果通知を受けて、アプリケーション層処理部3410へ要求コマンドの受信結果を通知する。
応答通知部3422は、制御部3421からの応答コマンド発行通知を受けて、応答コマンドを生成し、下位層処理部3430へ出力する。要求解析部3423は、下位層処理部3430から出力される要求コマンドを受信し、受信した要求コマンドの解析を行い、制御部3421に対して、コマンド解析結果および要求コマンドを受信した旨の通知を行う。
下位層処理部3430は、OBEX層処理部3420からの応答コマンドに適当な下位層のヘッダを付加して送信部3440に渡すとともに、受信部3450からの受信要求コマンドから、適当な下位層のヘッダを除去して、OBEX層処理部3420に渡す。
送信部3440は、赤外線通信路等を介して、下位層処理部3430から受信した要求コマンドを外部に送信する。
受信部3450は、赤外線通信路等を介して、相手機器(クライアント機器)から送信された要求コマンドを受信し、受信した要求コマンドを下位層処理部3430に出力する。
次に、図59に示すフローチャートを用いて、図58に示した従来のOBEXサーバ機器3400におけるOBEX層処理部3420の制御部3421の動作を説明する。
ステップS101は、クライアント機器から要求コマンドを受信したかかどうかを判別するステップである。受信した場合は、ステップS102へ、また受信していない場合は、再びステップS101へそれぞれ遷移する。
ステップS102は、クライアント機器からの要求コマンドを解析するステップである。解析終了後、ステップS103へ遷移する。
ステップS103は、クライアント機器への応答コマンドを作成するステップである。応答コマンド作成終了後、ステップS104へと遷移する。
ステップS104は、前記応答コマンドをクライアント機器に送信するステップである。送信終了後、ステップS105へ遷移する。
ステップS105は、通信を終了するかどうかを判別するステップである。終了でない場合、再びステップS101へ遷移する。
以上の動作により、従来のサーバ機器3400のOBEX層処理部3420は、要求コマンドを受信解析し、それに対する応答コマンドを生成し送信することで通信を行うことが可能となる。
しかし、前述の従来のサーバ機器3400のOBEX層処理部3420の動作では、クライアント機器からの要求コマンドに対して、応答コマンドを生成し、送信してしまうため、例えば片方向通信のように、サーバ機器3400からの送信が不必要な通信においては、応答コマンドの生成にかかる電力は無駄なものとなっている。
これを解決するために、図61のフローチャートに示すとおり、本実施の形態に係るサーバ機器3500(図60)においては、クライアント機器からの要求コマンドを受信、解析した後、クライアント機器への応答コマンドを生成、送信を行うこととなく、次の要求コマンドを受信することが可能とする。具体的には以下のとおりとなる。
ステップS111は、クライアント機器からの要求コマンドを受信したかどうかを判別するステップである。受信した場合は、ステップS112へ、また受信していない場合は、再びステップS111へそれぞれ遷移する。
ステップS112は、受信した要求コマンドを解析するステップである。解析終了後、ステップS115へ遷移する。
ステップS115は、通信が終了したかどうかを判別するステップである。終了でない場合は、再びステップS111へ遷移する。
以上の動作を、サーバ機器3500のOBEX層処理部3520の制御部3521が行うことで、受信した要求コマンドに対する応答コマンドの生成、送信を行わず、次の要求コマンドの受信を行うことが可能となる。
ここで、図60は、本実施の他の形態に係るサーバ機器3500のブロック図である。
OBEX層処理部(オブジェクト交換層処理部)3520の通信方向選択部3524以外の各ブロックは、図58を用いて上述した従来のサーバ機器3400のOBEX層処理部3420の各ブロックと同じ機能を持つため説明を省略する。
通信方向選択部3524は、通信が片方向通信か双方向通信かを選択する機能を有する。ここでいう片方向通信とは、クライアント機器からの要求コマンドに対して、サーバ機器からの応答コマンドを必要としない通信である。サーバ機器に送信部が存在しない場合、もしくは、クライアント機器に受信部が存在しない場合は、必然的に片方向通信となるが、送信部と受信部をクライアント機器およびサーバ機器がそれぞれ有しているが、信号の流れがクライアント機器からサーバ機器への片方向である場合は、やはり片方向通信となる。また、双方向通信とは、クライアント機器から送信された要求コマンドに対して、応答コマンドをサーバ機器が送信し、前記応答コマンドの解析後に、再びクライアント機器が次の要求コマンドを送信する通信方式である。この場合、すべての要求コマンドに対して、応答コマンドが必要になるわけでなく、クライアント機器側のOBEX層とサーバ機器側のOBEX層の双方で、事前に取り決めがなされていれば、特定の要求コマンドに対する応答コマンドは必ずしも必要でない。
次に、図62のフローチャートを用いて、本実施の形態に係るサーバ機器3500のOBEX層処理部3520の制御部3521の動作を説明する。
ステップS120は、通信方向選択部3524にて、双方向通信か片方向通信かを選択するステップである。双方向通信の場合は、ステップS121へ、また片方向通信の場合は、S131へそれぞれ遷移する。
ステップS121は、双方向通信において、クライアント機器からの要求コマンドを受信したかどうかを判別するステップである。受信した場合は、ステップS122へ、また受信していない場合は、再びステップS121へそれぞれ遷移する。
ステップS122は、双方向通信において、クライアント機器からの要求コマンドを解析するステップである。解析終了後、ステップS123へ遷移する。
ステップS123は、双方向通信において、クライアント機器への応答コマンドを作成するステップである。応答コマンド作成終了後、ステップS124へ遷移する。
ステップS124は、双方向通信において、前記作成した応答コマンドをクライアント機器に送信するために、下位層処理部3530に通知するステップである。通知終了後、ステップS125へ遷移する。
ステップS125は、通信を終了するかどうかを判別するステップである。終了でない場合は、再びステップS121へ遷移する。
一方、ステップS131は、片方向通信において、クライアント機器からの要求コマンドを受信したかどうかを判別するステップである。受信した場合は、ステップS132へ、また受信していない場合は、再びステップS131へそれぞれ遷移する。
ステップS132は、片方向通信において、クライアント機器からの要求コマンドを解析するステップである。解析終了後、ステップS135へ遷移する。
ステップS135は、片方向通信において、通信が終了したかどうかを判別するステップである。終了でない場合は、再びステップS131へ遷移する。
以上の動作を、サーバ機器3500のOBEX層処理部3520の制御部3521が行うことにより、双方向通信では、クライアント機器からの要求コマンド受信時には、応答コマンドを生成、送信し、また、片方向通信では、クライアント機器からの要求コマンド受信後、応答コマンドを生成、送信せず、次の要求コマンドを受信することが可能となる。
〔実施の第十四形態〕
本発明の実施の第十四形態に係る転送データの転送システム(通信システム)のサーバ機器(通信装置)について説明すると以下のとおりである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
図60が本実施の形態のサーバ機器3500のブロック図である。すなわち、上述した実施の第十三形態と同一であり、また、OBEX層処理部3520の制御部3521以外の各ブロックの動作も基本的に実施の第十三形態における各ブロックの動作と同じであるため、説明を省略する。
図63に示すフローチャートを用いて、本実施の形態に係るOBEX層処理部3520の制御部3521の動作を説明する。
ステップS141は、クライアント機器からのPutコマンドを受信したかどうかを判別するステップである。受信した場合は、ステップS142へ、また受信していない場合は、再びステップS141へそれぞれ遷移する。
ステップS142は、受信したPutコマンドを解析するステップである。解析終了後、ステップS143へ遷移する。
ステップS143は、解析されたPutコマンドが最終のPutコマンドが最終でないPutコマンドかどうかを判別するステップである。最終のPutコマンドである場合は、ステップS144へ、また最終でないPutコマンドの場合は、再びステップS141へそれぞれ遷移する。
ステップS144は、クライアント機器への応答コマンドを生成するステップである。応答コマンド生成終了後、ステップS145へ遷移する。なお、このステップS144において、生成される応答コマンドは、クライアント機器からのPutコマンドを全て正常に終了した場合は、例えばSUCCESS応答コマンドとなる。また、それ以外の場合については、本実施の形態では、言及しない。
ステップS145は、前述の応答コマンドをクライアント機器に送信するために、下位層処理部3530に通知するステップである。通知終了後、ステップS146へ遷移する。
ステップS146は、通信が終了かどうかを判別するステップである。終了でない場合は、ステップS141へ遷移する。
以上の動作を、サーバ機器3500のOBEX層処理部3520の制御部3521が行うことにより、最終でないPut要求コマンドに対しては、従来のOBEX層処理部で生成していたCONTINUE応答コマンドの生成、送信を行わず、最終のPut要求コマンドに対しては、SUCCESS応答コマンドを生成、送信することが可能となり、通信の効率を上げることが可能となる。また、最終のPutコマンドに対するSUCCESS応答コマンドをクライアント機器に送信するため、クライアント機器において、サーバ機器3500に正常にデータ転送を行えたかどうかを判別することが可能となる。
また、図62に示したように、通信方向選択部3524による双方向通信、片方向通信の切り替えと組合わせることで、双方向通信時は、最終のPutコマンドのみSUCCESS応答コマンドを生成、送信し、片方向通信時は、全ての要求コマンドに対して応答コマンドの生成、送信を行わない動作を行うことが可能となる。
〔実施の第十五形態〕
本実施の第十五形態に係る転送データの転送システム(通信システム)について、図64に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、図64を用いて、携帯電話間での通信例について説明する。なお、送信機と受信機に携帯電話を用いているが、送信機もしくは受信機のどちらか一方が携帯電話であればよく、本発明のいずれかの方式により赤外線等にてデータの送信もしくは受信が可能であるならば、対向機器が携帯電話でなくても構わない。
図64では、赤外線を用いて、携帯電話A内のデータを携帯電話Bに送信している。携帯電話Bでは、携帯電話Aから送信されたデータを受信すると、携帯電話B内のメモリもしくは接続された外部メモリ内に受信データを保存する。前述のデータとは、テキストデータ、画像データ、音声データ、電話帳データ、システム情報などであり、特定のフォーマットに限定されるものではない。また、携帯電話A内のデータとは、携帯電話Aの内部メモリ内のデータ、携帯電話Aに接続されている外部メモリ(SDカードなどの不揮発性メモリ)内のデータのどちらでもよい。
例えば、双方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(携帯電話B)の返信フレームの内容により、必要ならば再送を行い、受信側(携帯電話B)においては、エラー検出および通し番号の解析を行い、必要ならば再送要求を行うことで、品質の高い通信を行うことが可能となる。
また、例えば、片方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(携帯電話B)においては、エラー検出及び通し番号の解析を行うことで、品質の高い通信を行うことが可能となる。
これにより、UIフレームを用いることで、従来のIフレームでのウィンドウサイズの制限以内での対向局との確認に比べ、少なくすることが可能となり、転送効率が高く、かつ品質の高い通信を行うことが可能となる。
特に、携帯電話にSMPを用いる場合、送信するファイルごとに、適切な送信機のタイムアウト時間を決定することで、エラー発生時での通信効率の高い通信路を提供するこが可能となる。具体的には、受信機において、データ処理に時間がかかると思われるファイル(例えばJPEG画像やMPEG動画などのデコード処理を行わなければならないファイル)については、BL=1のフレーム送信後のRSが含まれるフレームの待ち時間を長くし、テキストファイルなどデータ処理に時間がかからないと思われるファイル送信時には、待ち時間を短くすればよい。
〔実施の第十六形態〕
本実施の第十六形態に係る転送データの転送システム(通信システム)について、図65に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、図65を用いて、携帯電話と表示装置との間での通信例について説明する。なお、送信機として携帯電話を用いているが、本発明のいずれかの方式により赤外線等にてデータの送信が可能であるならば、送信機器が携帯電話でなくても構わない。また、表示装置が送信側となっても構わない。
図65では、赤外線を用いて、携帯電話A内のデータを表示装置B(TVやモニタなど)に送信している。表示装置Bでは、携帯電話Aから送信されたデータに対して適切な処理を行い、例えば、画像データであった場合は、必要ならば圧縮されたデータを解凍するなどして、表示を行うが、これに限らない。また、前述のデータとは、テキストデータ、画像データ、音声データ、電話帳データ、システム情報などであり、特定のフォーマットに限定されるものではない。また、携帯電話A内のデータとは、携帯電話Aの内部メモリ内のデータ、携帯電話Aに接続されている外部メモリ(SDカードなどの不揮発性メモリ)内のデータのどちらでもよい。
例えば、双方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(表示装置B)の返信フレームの内容により、必要ならば再送を行い、受信側(表示装置B)においては、エラー検出および通し番号の解析を行い、必要ならば再送要求を行うことで、品質の高い通信を行うことが可能となる。
また、例えば、片方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(表示装置B)においては、エラー検出及び通し番号の解析を行うことで、品質の高い通信を行うことが可能となる。
これにより、UIフレームを用いることで、従来のIフレームでのウィンドウサイズの制限以内での対向局との確認に比べ、少なくすることが可能となり、転送効率が高く、かつ品質の高い通信を行うことが可能となる。
特に、表示装置にSMPを用いる場合、接続時に表示装置が送信機に通知する受信バッファサイズを、JPEG画像の画像サイズ(数100KBから数MB程度)に設定することで、送信機の一括送信データサイズを、JPEG画像1枚が一度に送信できる程度のサイズに設定することができる。
これにより、例えば、表示装置が受信バッファを2つ持ち、1つの受信バッファにJPEG画像データを受信し終わった時点で、受信バッファの切り替えを行い、2つめの受信バッファに次のJPEG画像を受信している間に1つめの受信バッファ内のJPEGデータのデコードを行うなどの処理が簡単に行える。
〔実施の第十七形態〕
本実施の第十七形態に係る転送データの転送システム(通信システム)について、図66に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、図66を用いて、携帯電話と印刷装置との間での通信例について説明する。なお、送信機として携帯電話を用いているが、本発明のいずれかの方式により赤外線等にてデータの送信が可能であるならば、送信機器が携帯電話でなくても構わない。また、印刷装置が送信側となっても構わない。
図66では、赤外線を用いて、携帯電話A内のデータを印刷装置Bに送信している。印刷装置Bでは、携帯電話Aから送信されたデータに対して適切な処理を行い、例えば、画像データであった場合は、必要ならば圧縮されたデータを解凍するなどして、印刷を行うが、これに限らない。また、前述のデータとは、テキストデータ、画像データ、電話帳データ、システム情報などであり、特定のフォーマットに限定されるものではない。また、携帯電話A内のデータとは、携帯電話Aの内部メモリ内のデータ、携帯電話Aに接続されている外部メモリ(SDカードなどの不揮発性メモリ)内のデータのどちらでもよい。
例えば、双方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(印刷装置B)の返信フレームの内容により、必要ならば再送を行い、受信側(印刷装置B)においては、エラー検出および通し番号の解析を行い、必要ならば再送要求を行うことで、品質の高い通信を行うことが可能となる。
また、例えば、片方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(印刷装置B)においては、エラー検出及び通し番号の解析を行うことで、品質の高い通信を行うことが可能となる。
これにより、UIフレームを用いることで、従来のIフレームでのウィンドウサイズの制限以内での対向局との確認に比べ、少なくすることが可能となり、転送効率が高く、かつ品質の高い通信を行うことが可能となる。
特に、印刷装置にSMPを用いる場合、接続時に印刷装置が送信機に通知する受信バッファサイズを、JPEG画像の画像サイズ(数100KBから数MB程度)に設定することで、一次局の一括送信データサイズを、JPEG画像1枚が一度に送信できる程度のサイズに設定することができる。
これにより、例えば、印刷装置が受信バッファを2つ持ち、1つの受信バッファにJPEG画像データを受信し終わった時点で、受信バッファの切り替えを行い、2つめの受信バッファに次のJPEG画像を受信している間に1つめの受信バッファ内のJPEGデータのデコードを行うなどの処理が簡単に行える。また、印刷装置は、印刷中で次のデータを受信できない状態の場合、エラーが発生していない状況でも、擬似的にエラーが発生していると送信機に通知し、送信機からの再送を行わせるなどして、時間稼ぎを行うことが可能となる。
〔実施の第十八形態〕
本実施の第十八形態に係る転送データの転送システム(通信システム)について、図67に基づいて説明すると以下の通りである。なお、他の実施の形態において定義した用語(部材及び機能を含む)については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
本実施の形態では、図67を用いて、携帯電話と記録装置との間での通信例について説明する。なお、送信機として携帯電話を用いているが、本発明のいずれかの方式により赤外線等にてデータの送信が可能であるならば、送信機器が携帯電話でなくても構わない。また、記録装置が送信側となっても構わない。
図67では、赤外線を用いて、携帯電話A内のデータを記録装置Bに送信している。記録装置Bでは、携帯電話Aから送信されたデータに対して適切な処理を行い、例えば、画像データであった場合は、記録装置B内のメモリまたは記録装置Bに接続された外部メモリに記録を行う。記録装置B内のメモリとは、SDRAMなどの揮発性メモリでも、フラッシュメモリなどの不揮発性メモリ、記録可能なDVD、HDDドライブなど、一時的または半永久的に記録できる媒体であれば何でもよい。また、前述のデータとは、テキストデータ、画像データ、音声データ、電話帳データ、システム情報などであり、特定のフォーマットに限定されるものではない。また、携帯電話A内のデータとは、携帯電話Aの内部メモリ内のデータ、携帯電話Aに接続されている外部メモリ(SDカードなどの不揮発性メモリ)内のデータのどちらでもよい。
例えば、双方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(記録装置B)の返信フレームの内容により、必要ならば再送を行い、受信側(記録装置B)においては、エラー検出および通し番号の解析を行い、必要ならば再送要求を行うことで、品質の高い通信を行うことが可能となる。
また、例えば、片方向通信時には、送信側(携帯電話A)においては、前述の各実施の形態のいずれかの方法により、ウィンドウサイズの制限のないIrLAPのUIフレームに通し番号を付与して送信し、受信側(記録装置B)においては、エラー検出及び通し番号の解析を行うことで、品質の高い通信を行うことが可能となる。
これにより、UIフレームを用いることで、従来のIフレームでのウィンドウサイズの制限以内での対向局との確認に比べ、少なくすることが可能となり、転送効率が高く、かつ品質の高い通信を行うことが可能となる。
特に、記録装置にSMPを用いる場合、接続時に記録装置が送信機に通知する受信バッファサイズを、MPEG動画のフレームサイズ(数100KBから数MB程度)に設定することで、送信機の一括送信データサイズを、フレーム1枚が一度に送信できる程度のサイズに設定することができる。
これにより、例えば、記録装置が受信バッファを2つ持ち、1つの受信バッファにフレームデータ1枚分を受信し終わった時点で、受信バッファの切り替えを行い、2つめの受信バッファに次のフレームデータを受信している間に1つめの受信バッファ内のフレームデータのデコードを行うなどの処理が簡単に行える。
〔実施の第十九形態〕
本発明の他の実施の形態について図68から図90に基づいて説明すれば、以下のとおりである。なお、本実施の形態で説明する通信プロトコルは、実施の第一形態〜第十八形態に適用されるものである。よって、実施の第一形態〜第十八形態において定義した用語については、特に断らない限り本実施の形態においてもその定義に則って用いるものとする。
(1)通信層
図68は、OSI7階層モデルと、IrDAの階層および本発明に係る通信システムの階層の対応関係を示す模式図である。
本実施の形態に係る通信システムの各通信層も、上記OSI7層モデルの対応する階層と同等の機能を有する。ただし、図68に示すように、上記通信システムは、セッション層とプレゼンテーション層とを1つにした、6階層の構造となっている。
本実施の形態では、説明の便宜上、本発明の一適用例であるIrSimpleに基づいて説明する。しかし、本発明はIrSimpleに限定されるものではない。なお、IrSimpleとは、従来のIrDAの一部機能を改良したものである。
本実施の形態では、IrSimpleに則って、データリンク層、ネットワーク層、トランスポート層、セッション層+プレゼンテーション層を、それぞれ、LAP、LAMP、SMP、OBEXと表記することがある。また、通信層を送信機、受信機で区別する場合に、送信機(一次局)に“P”、受信機(二次局)に“S”と付記する。例えば、“LAP(P)”とは、送信機のデータリンク層を意味する。
(2)送信機−受信機間のシーケンス
(2−1)接続シーケンス
〔A〕レスポンス有り
図69(a)は、本実施の形態(レスポンス有り)の接続シーケンスを示すシーケンス図である。また、図69(c)は、本実施の形態(レスポンス有り)の接続シーケンスの際の通信データのデータ構造を示す説明図である。
本実施の形態(レスポンス有り)では、SNRMのDestination Device Addressにグローバルアドレスを使用することにより、サーチと同様の機能をSNRMコマンドに持たせることができる(図69(c)のSNRM command)。
また、本実施の形態(レスポンス有り)では、データリンク層の接続パケットであるSNRMコマンドおよびUAレスポンスの中に、ネットワーク層、トランスポート層、セション層、プレゼンテーション層等の上位層の接続に必要なパラメータおよびコマンドを挿入する。これにより、従来のIrDAでは必要であった上位層それぞれを接続するための接続パケットを1つのパケットに凝縮することができる。
それゆえ、従来、複数のパケットが必要であった、サーチと接続シーケンスを1つのパケット対で行うことができる。
〔B〕レスポンス無し
図69(b)は、本実施の形態(レスポンス無し)の接続シーケンスを示すシーケンス図である。また、図69(c)は、本実施の形態(レスポンス無し)の接続シーケンスの際の通信データのデータ構造を示す説明図である。なお、本実施の形態(レスポンス無し)では、UAレスポンス(図69(c)のUA response for SNRM)は不要である。
ユーザまたはアプリケーションおよびデータ種類によっては、受信機からのレスポンスを省略した通信方式を選択できる。この場合、図38(b)に示すように、SNRMコマンドのみでサーチおよび接続が終了したものとできる。
このように、本実施の形態の接続シーケンスは、複数の通信層の接続リクエストをまとめることにより、接続に要する時間を短縮するものであるため、通信路が切断した場合でも再接続が容易である。よって、通信路が切断しやすい、例えば赤外線による無線通信に特に適している。ただし、IEEE802.11無線、Bluetoothを含む他の無線通信、および、有線通信においても効果的である。
また、本実施の形態では、すべての通信層の接続を1回の通信で接続する例について説明するが、本発明はこれに限定されない。例えば、1つの通信層を接続した後、残りの複数の通信層を接続するようにしてもよい。また、1つの通信層の接続が複数回の通信によって行われてもよい。例えば、ネットワーク層の接続が2回の通信を要する場合、データリンク層の接続とネットワーク層の1回目の接続とを1つの接続リクエストにまとめ、ネットワーク層の2回目の接続とトランスポート層の接続とを1つの接続リクエストにまとめてもよい。
(2−2)データ交換シーケンス
〔A〕レスポンス有り
図70(a)(b)は、本実施の形態(レスポンス有り)のデータ交換シーケンスを示すシーケンス図である。また、図70(a)は、本実施の形態(レスポンス有り)のデータ交換シーケンスの際の通信データのデータ構造を示す説明図である。
本実施の形態(レスポンス有り)では、1つのデータ間毎の下位層及び上位層のレスポンスを極力減らし、多くのデータを送信した後にエラーがあったか無かったかを返信する。
送信機は、データ通信時に、シーケンシャルなパケット番号および受信データに問題がなかったかを問うためのフラグと、上記データをパケットのサイズに合わせて分割した分割データで構築されたパケットを用いる。
図70(a)に示すように、送信機は、所定数のパケット数を送信した後に上記フラグをオンにしたパケットの送信を行う。これに対し、受信機は、以前のデータの始めから、もしくは上記フラグがオンであったパケットを受信し、返信を行ってから、エラーを検出しなかった場合は、正常に受信した旨を送信機に通知する。また、受信機は、以前のデータの始めから、もしくは上記フラグがオンであったパケットを受信し、返信を行ってから、エラーを検出した場合は、受信することができなかったパケット以降の上記分割データ部分を無視し、上記フラグのみを確認し、上記フラグがオンであった場合に、エラーにより受信できなかったパケット番号を送信機へ通知する。
さらに、送信機は、正常に受信した旨を受信機から受けた場合、次のパケットから送信を行う。また、送信機は、エラーがあったという通知を受けた場合、受信できなかったパケット番号から、上記フラグをオンにしたパケットまでを再送信する。
これにより、パケット間を詰めることができ、効率のよい通信が可能となる。
図70(a)に示すように、本実施の形態(レスポンス有り)では、UIフレーム(図71(b))を使用する。このため、データリンク層(LAP層)ではパケットの抜けが認識できず、トランスポート層で検出する。
UIフレームのトランスポート層のデータ部分にシーケンシャルナンバーとデータ確認用フラグ、データの最後のパケットかどうか、受信したデータが正常であったかを示すフラグを設け、それらのフラグによってデータの送信を行う。
〔B〕レスポンス無し
図72(a)(b)は、本実施の形態(レスポンス無し)のデータ交換シーケンスを示すシーケンス図である。また、図72(b)は、本実施の形態(レスポンス無し)のデータ交換シーケンスの際の通信データのデータ構造を示す説明図である。
本実施の形態(レスポンス無し)では、受信機のレスポンスを必要としない場合、データの完全性のみを確認する。そのため、送信機はパケットにシーケンスナンバーを振り、全てのデータを連続で送信する。
そして、受信機は、エラーがあったかどうかを確認するのみであり、正常に受信した場合には全てのデータを受けた後、受信機内で正常受信であることを認識し、次の動作を行う。この場合の次の動作とは、例えば受信したデータを表示したり、印刷したり、保存したりすることである。一方、エラーを検出した場合、受信機内で正常受信できなかったことを認識し、次の動作を行う。この場合の次の動作とは、失敗したことをユーザーに知らせるためのインジケートや、次の受信待ち状態になることである。
なお、本実施の形態(レスポンス無し)でも、図72(b)に示すUIフレーム(図71(b))を使用する。
(2−3)切断シーケンス
〔A〕レスポンス有り
図73(a)は、本実施の形態(レスポンス有り)の切断シーケンスを示すシーケンス図である。また、図73(c)は、本実施の形態(レスポンス有り)の切断シーケンスの際の通信データのデータ構造を示す説明図である。
図73(c)に示すように、本実施の形態(レスポンス有り)では、ネットワーク層、トランスポート層、セション層、プレゼンテーション層等の上位層の切断に必要なパラメータおよびコマンドを、DISCコマンドおよびUAレスポンスの中に挿入した。
これにより、従来、複数のパケットが必要であった、切断シーケンスを1つのパケット対で行うことができる。
〔B〕レスポンス無し
図73(b)は、本実施の形態(レスポンス無し)の切断シーケンスを示すシーケンス図である。また、図73(c)は、本実施の形態(レスポンス有り)の切断シーケンスの際の通信データのデータ構造を示す説明図である。なお、本実施の形態(レスポンス無し)では、UAレスポンス(図73(c)のUA response)は不要である。
図73(b)に示すように、本実施の形態(レスポンス無し)では、受信機のレスポンスを必要としないとして接続した場合、DISCコマンドのみでサーチおよび切断が終了したものとできる。
(3)送信機、受信機内のシーケンス
図74〜図90では、説明の便宜上、データリンク層をLAP、ネットワーク層をLAMP、トランスポート層をTTPまたはSMP、セッション層およびプレゼンテーション層をOBEXと表記する。また、通信層を送信機と受信機とで区別するために、送信機に“P”、受信機に“S”と付記する。例えば、“LAP(P)”とは、送信機のデータリンク層を意味する。
(3−1)接続シーケンス
〔A〕レスポンス有り
図74は、本実施の形態(レスポンス有り)の接続シーケンスを示すシーケンス図である。また、図75(a)、図75(b)は、本実施の形態(レスポンス有り)の接続シーケンスの際の通信データのデータ構造を示す説明図である。
図74に示すように、本実施の形態(レスポンス有り)では、送信機、受信機とも、接続準備を行う。その後、送信機は、上位層のリクエストをそのまま下位層に渡していき、1つのパケット(SNRM)として送信する。一方、受信機は、SNRMパケットを受けて、そのまま上位層へ接続できた旨の通知を行った後、OBEX(S)のレスポンスをそのまま下位層に渡していき、1つのパケット(UA)として送信する。送信機は、UAを受けたことで接続完了とし、上位層に通知(Connect.confirm)を上げていく。
このときの、送信機、受信機内のシーケンスは以下のとおりである。
まず、送信機の各通信層について説明する。
OBEX(P)は、アプリケーションからの接続要求が来た場合に、速やかに下位層(SMP(P))に対して接続要求コマンドをデータに入れて接続要求関数(Primitive)を発生する。また、OBEX(P)は、SMP(P)から接続確認関数を受けた場合に、そのデータの中からOBEX接続のレスポンスを確認し、問題ない(Success)というレスポンスであれば、接続完了とする。
SMP(P)は、OBEX(P)からの接続要求関数を受けて、速やかにOBEX(P)の接続要求関数のデータに、受信機のSMP(S)との通信に必要なパラメータを付加して、下位層(LMP(P))に対して接続要求関数を発生する。また、SMP(P)は、LMP(P)から接続確認関数を受けた場合、関数のデータから受信機のSMP(S)が生成したパラメータを抜き取り、値を確認して、SMP(S)とのネゴシエーションを終了する。また、SMP(P)は、接続確認関数のデータからSMP(S)のパラメータを取り除いたデータをOBEX(P)に対して接続確認関数として送信する。
LMP(P)は、SMP(P)からの接続要求関数を受けて、速やかにSMP(P)の接続要求関数のデータに、受信機のLMP(S)との通信に必要なパラメータを付加して、下位層(LAP(P))に対して接続要求関数を発生する。また、LMP(P)は、LAP(P)から接続確認関数を受けた場合、関数のデータから受信機のLMP(S)が生成したパラメータを抜き取り、値を確認して、LMP(S)とのネゴシエーションを終了する。また、LMP(P)は、接続確認関数のデータからLMP(S)のパラメータを取り除いたデータを、SMP(P)に対して接続確認関数として送信する。
なお、通常は論理ポートを管理するためにLSAP(Link Service Access Point)が定義される。そして、1対1で1つの接続をする場合にはLMPを使用する必要がない。この場合、LSAPにコネクションレスの値を固定値として使用する。このため、LMPの接続パラメータ交換は不要となっている。
LAP(P)は、LMP(P)からの接続要求関数を受けて、速やかにLMP(P)の接続要求関数のデータに、受信機のLAP(S)との通信に必要なパラメータを付加して、受信機の物理層に対してSNRMコマンドを出力する。また、LAP(P)は、受信機の物理層からUAレスポンスを受けた場合、UAレスポンスのデータから受信機のLAP(S)が生成したパラメータを抜き取り、値を確認して、LAP(S)とのネゴシエーションを終了する。また、LAP(P)は、UAレスポンスのデータからLAP(S)のパラメータを取り除いたデータを、LMP(P)に対して接続確認関数として送信する。
つづいて、受信機の各通信層について説明する。
OBEX(S)は、アプリケーションから接続要求関数を受けて、受信待機状態になる。また、OBEX(S)は、下位層(SMP(S))から接続通知関数(Indication)を受けた場合に、そのデータの中からOBEX接続コマンドを確認し、問題が無ければSuccessというレスポンスを接続返答関数(Response)としてSMP(S)に対して出力し、接続完了とする。
SMP(S)は、OBEX(S)からの接続要求関数を受けて、受信待機状態になる。また、SMP(S)は、下位層(SMP(S))から接続通知関数を受けた場合に、関数のデータから送信機のSMP(P)が生成したパラメータを抜き取り、それに対しての返答のパラメータを作成し、上記関数のデータからSMP(P)のパラメータを除いたデータを入れた接続要求関数をOBEX(S)に発した後、OBEX(S)からの接続返答関数を待つ。また、SMP(S)は、OBEX(S)からの接続返答関数を受けた場合に、LMP(S)に対してOBEX(S)の接続返答関数のデータに上記返答のパラメータを付加して、LMP(S)に対して接続返答関数を発生し、SMP層のネゴシエーションを終了する。
LMP(S)は、SMP(S)からの接続要求関数を受けて、受信待機状態になる。また、LMP(S)は、下位層(LAP(S))から接続通知関数を受けた場合に、関数のデータから送信機のLMP(P)が生成したパラメータを抜き取り、それに対しての返答のパラメータを作成し、上記関数のデータからLMP(P)のパラメータを除いたデータを入れた接続要求関数をSMP(S)に発した後、SMP(S)からの接続返答関数を待つ。また、LMP(S)は、SMP(S)からの接続返答関数を受けた場合に、LAP(S)に対してSMP(S)の接続返答関数のデータに上記返答のパラメータを付加して、LAP(S)に対して接続返答関数を発生し、LMP層のネゴシエーションを終了する。
なお、通常は論理ポートを管理するためにLSAP(Link Service Access Point)が定義される。そして、1対1で1つの接続をする場合にはLMPを使用する必要がない。この場合、LSAPにコネクションレスの値を固定値として使用する。このため、LMPの接続パラメータ交換は不要となっている。
LAP(S)は、LMP(S)からの接続要求関数を受けて、受信待機状態になる。また、LAP(S)は、物理層からSNRMコマンドを受けた場合に、SNRMコマンドのデータから送信機のLAP(P)が生成したパラメータを抜き取り、SNRMコマンドのデータからLAP(P)のパラメータを除いたデータを入れた接続要求関数をLMP(S)に発した後、それに対しての返答のパラメータを作成し、LMP(S)からの接続返答関数を待つ。また、LAP(S)は、LMP(S)からの接続返答関数を受けた場合に、LMP(S)の接続返答関数のデータに上記返答のパラメータを付加して、物理層に対してUAレスポンスを出力し、LAP層のネゴシエーションを終了する。
〔B〕レスポンス無し
図76は、本実施の形態(レスポンス無し)の接続シーケンスを示すシーケンス図である。また、図75(a)は、本実施の形態(レスポンス無し)の接続シーケンスの際の通信データのデータ構造を示す説明図である。
図76に示すように、本実施の形態(レスポンス無し)では、送信機、受信機とも、接続準備を行う。その後、送信機は、上位層のリクエストをそのまま下位層に渡していき、1つのパケット(SNRM)として送信する。そして、送信機は、SNRMパケットを送信した時点で接続完了として、LAP(P)から上位層に通知(Connect.confirm)を上げていく。一方、受信機は、SNRMパケットを受けて、そのまま上位層へ接続できた旨の通知を行い、OBEX(S)に通知した時点で接続完了とする。
このときの、送信機、受信機内のシーケンスは以下のとおりである。
まず、送信機の各通信層について説明する。
OBEX(P)は、アプリケーションからの接続要求が来た場合に、速やかに下位層(SMP(P))に対して接続要求コマンドをデータに入れて接続要求関数(Primitive)を発生する。また、OBEX(P)は、SMP(P)から接続確認関数を受けた場合に、接続完了とする。
SMP(P)は、OBEX(P)からの接続要求関数を受けて、速やかにOBEX(P)の接続要求関数のデータに、受信機のSMP(S)との通信に必要なパラメータを付加して、下位層(LMP(P))に対して接続要求関数を発生する。また、SMP(P)は、LMP(P)から接続確認関数を受けた時点で、送信したパラメータでネゴシエーションができたとして、SMP層のネゴシエーションを終了する。また、この時、SMP(P)は、OBEX(P)に対して接続確認関数を送信する。
LMP(P)は、SMP(P)からの接続要求関数を受けて、速やかにSMP(P)の接続要求関数のデータに、受信機のLMP(S)との通信に必要なパラメータを付加して、下位層(LAP(P))に対して接続要求関数を発生する。また、LMP(P)は、LAP(P)から接続確認関数を受けた時点で、送信したパラメータでネゴシエーションができたとして、LMP層のネゴシエーションを終了する。また、この時、LMP(P)は、SMP(P)に対して接続確認関数を送信する。
なお、通常は論理ポートを管理するためにLSAP(Link Service Access Point)が定義される。そして、1対1で1つの接続をする場合にはLMPを使用する必要がない。この場合、LSAPにコネクションレスの値を固定値として使用する。このため、LMPの接続パラメータ交換は不要となっている。
LAP(P)は、LMP(P)からの接続要求関数を受けて、速やかにLMP(P)の接続要求関数のデータに、受信機のLAP(S)との通信に必要なパラメータを付加して、受信機の物理層に対してSNRMコマンドを出力する。また、LAP(P)は、SNRMコマンドを出力した時点で、送信したパラメータでネゴシエーションができたとして、LAP層のネゴシエーションを終了する。また、この時、LAP(P)は、LMP(P)に対して接続確認関数を送信する。
つづいて、受信機の各通信層について説明する。
OBEX(S)は、アプリケーションから接続要求関数を受けて、受信待機状態になる。また、OBEX(S)は、下位層(SMP(S))から接続通知関数(Indication)を受けた場合に、そのデータの中からOBEX接続コマンドを確認し、問題が無ければ、接続完了とする。
SMP(S)は、OBEX(S)からの接続要求関数を受けて、受信待機状態になる。また、SMP(S)は、下位層(SMP(S))から接続通知関数を受けた場合に、関数のデータから送信機のSMP(P)が生成したパラメータを抜き取り、そのパラメータを使用してネゴシエーションを完了させる。そして、SMP(S)は、上記関数のデータからSMP(P)のパラメータを除いたデータを入れた接続要求関数をOBEX(S)に発する。
LMP(S)は、SMP(S)からの接続要求関数を受けて、受信待機状態になる。また、LMP(S)は、下位層(LAP(S))から接続通知関数を受けた場合に、関数のデータから送信機のLMP(P)が生成したパラメータを抜き取り、そのパラメータを使用してネゴシエーションを完了させる。そして、LMP(S)は、上記関数のデータからLMP(P)のパラメータを除いたデータを入れた接続要求関数をSMP(S)に発する。
なお、通常は論理ポートを管理するためにLSAP(Link Service Access Point)が定義される。そして、1対1で1つの接続をする場合にはLMPを使用する必要がない。この場合、LSAPにコネクションレスの値を固定値として使用する。このため、LMPの接続パラメータ交換は不要となっている。
LAP(S)は、LMP(S)からの接続要求関数を受けて、受信待機状態になる。また、LAP(S)は、物理層からSNRMコマンドを受けた場合に、SNRMコマンドのデータから送信機のLAP(P)が生成したパラメータを抜き取り、そのパラメータを使用してネゴシエーションを完了させる。そして、LAP(S)は、上記関数のデータからLAP(P)のパラメータを除いたデータを入れた接続要求関数をLMP(S)に発する。
(3−2)データ交換シーケンス
〔A〕レスポンス有り
図77は、本実施の形態(レスポンス有り)のデータ交換シーケンスを示すシーケンス図である。また、図78は、本実施の形態(レスポンス有り)のデータ交換シーケンスの際の通信データのデータ構造を示す説明図である。
図77に示すように、本実施の形態(レスポンス有り)では、送信機が、PUTコマンドを発生し、それが下位層まで伝わり、UIフレーム(図71(b))として出力される。
一方、受信機は、データを受け取り、上位層へ通知を上げていく。このとき、SMP(S)では、上位層のOBEX(S)に対して、データが続くことを通知する(status=truncated)。
送信機は、ある一定数のパケットを送信した後に、データがきちんと届いているかどうかを確認するフラグをONにして送信する。これを受けて、受信機では、SMP(S)が、エラーがあったかなかったか、あった場合にはエラーが発生した番号を送信機に通知する。
送信機は、エラーが無ければ次のパケット群を出力し、エラーがあればエラーがあったパケット以降のパケットを再送信する。
送信機は、データの最後になったときに、データの最後であることを示すフラグをONにして送信する。これに対して、受信機は、SMP(S)が、このフラグがONであれば、OBEX(S)にデータがそろったことを通知し(status=OK)、OBEX(S)のレスポンスを待つ。そして、OBEX(S)のレスポンスが発生したとき、そのデータを下位層へ伝えていき、UIフレームとして出力する。
送信機は、受けたレスポンスがSuccessであれば、正常終了する。
このときの、送信機、受信機内のシーケンスは以下のとおりである。
送信機では、OBEX(P)が下位層に対してPUTコマンドをデータ送信関数として出力する。ただし、OBEX(P)は、PUT Final(最後のPUT)コマンド以外のPUTコマンドのレスポンス(正常の場合はContinueが返る)を必要とせずにSMP(P)で送信可能である場合には、次のコマンドを出力していく。PUT FinalコマンドもしくはPUTコマンド以外のコマンドの場合には、下位層からのデータ通知関数を待ち、そのデータ内のレスポンスをみてコマンドを終了する。
ここで、データ送信関数とは、下位層に対してデータ送信を要求する関数(Data Request)である。また、データ通知関数とは、下位層からデータを受信したことを知らせる関数(Data Indicate)である。
受信機では、OBEX(S)が下位層からデータ通知関数を受けて、データを受ける。ただし、OBEX(S)は、PUT Finalコマンド以外のPUTコマンドに対しては、レスポンスを返さず、PUT FinalコマンドもしくはPUTコマンド以外のコマンドの場合はデータ送信関数としてレスポンスを返す。
ここで、送信機、受信機に共通する、上位層と下位層のデータ送信関数およびデータ通知関数でのヘッダ等について説明する。
SMPは、OBEXからデータ送信関数を受けると、LMPに対して、(a)LMPで送信可能なサイズがデータ送信関数内のデータのサイズよりも小さいときには、該データをLMPが送信可能なサイズに分割し、(b)LMPで送信可能なサイズがデータ送信関数内のデータのサイズよりも大きいときには、いくつかのデータを結合して、送信可能なサイズ以下の、より大きなデータを作成する。また、SMPは、シーケンシャルな番号、相手機器にデータ受信状態を問い合わせる引数、データの最後を示す引数、相手機器のSMPがOBEXのレスポンスが必要であることを示す引数、受信したデータが正常であったかどうかを示す引数などを入れたSMPヘッダを作成する。そして、このSMPヘッダを、上記分割または結合したデータに付加したデータを入れたデータ送信関数をLMPに対して発する。
さらに、SMPは、LMPからデータ通知関数を受けると、該関数内のデータからSMPヘッダを抜き出し、シーケンス番号が正常であるか(すなわち、抜けなく順番に来ているか)を確認する。そして、正常であった場合には、OBEXへデータ通知関数を発する。このとき、データ通知関数は、下位層からのデータ通知関数ごとに出力してもよいし、いくつかの下位層からのデータ通知関数のデータをあわせて出力してもよい。
送信機のSMP(P)は、OBEX(P)からのデータ送信関数をLMP(P)へのデータ送信関数に変換して、規定しているある一定数のデータ量のデータ送信関数を発する。その後、SMP(P)は、受信機にデータ受信状態を問い合わせる引数をTrueにしてデータ送信関数を発して、LMP(P)のデータ通知関数を待つ。
SMP(P)は、LMP(S)からのデータ通知関数内のSMPヘッダを解析し、受信したデータが正常であったかどうかを示す引数が正常に受信していたことを示していた場合、次のデータを送信する準備ができたとして、OBEX(P)に対して送信可能であるステートになる。すなわち、この状態でOBEX(P)からのデータを受け付けることができる。
これに対して、SMP(P)は、LMP(S)からの受け取ったデータ通知関数のSMPヘッダを解析して受信したデータが正常であったかどうかを示す引数が正常に受信していなかったことを示していた場合、正常に受信できなかったと通知されたデータ送信関数から相手機器にデータ受信状態を問い合わせる引数をTrueにしたデータ送信関数までを再度発生する。SMP(P)は、全てのデータ送信関数によるデータが受信機に通知されるまで、もしくはある規定回数再発生を繰り返す。
さらに、SMP(P)は、OBEX(P)からデータの最後であるとした引数がTrueであるデータ送信関数を受けた場合、そのデータ送信関数の最後のデータを入れた、LMP(P)へのデータ送信関数を、このデータ送信関数がデータの最後であることを示す引数、または、受信機のOBEX(S)のレスポンスが必要であることを示す引数をTrueにして発する。
これに対して、受信機のSMP(S)は、LMP(S)からデータ通知関数を受けた際に、データの最後または受信機のOBEX(S)のレスポンスが必要であることを示す引数がTrueであった場合に、OBEX(S)へSMP(S)のヘッダを外したデータを入れたデータ通知関数を発する。
また、SMP(S)は、データ通知関数をLMP(S)から受けた場合に、そのデータ通知関数内のデータからSMPヘッダを解析し、シーケンシャルな番号を確認する。SMP(S)は、受信機にデータ受信状態を問い合わせる引数がTrueであるヘッダを受けるまで正常に受信できていれば、受信したデータが正常であったかどうかを示す引数を正常に受信できたことを示すものにしてSMPヘッダを作成し、それをデータとしてLMP(S)に対してデータ送信関数を発する。
一方、SMP(S)は、正常に受信できなかったことを検出した場合には、正常に受信できなかったと予測されるSMPヘッダの番号を記憶する。例えば、0,1,2,3,5と受けたとき、5個目は4となるべきなのに4を受けなかった場合には、正常に受信できなかったと予測される番号は4となる。そして、それ以降、SMP(S)は、SMPヘッダの受信機にデータ受信状態を問い合わせる引数がTrueであるかどうかのみを調べて、OBEX(S)へのデータ通知関数の出力を停止する。
SMP(S)は、受信機にデータ受信状態を問い合わせる引数がTrueであるデータ通知関数を受けた場合に、受信したデータが正常であったかどうかを示す引数を正常に受信できなかったことを示すものにし、正常に受信できなかったSMPヘッダの番号をシーケンシャル番号を入れるフィールドに挿入したSMPヘッダを作成して、それをデータとしてLMP(S)に向けてデータ送信関数を発する。
また、SMP(S)は、データの最後であることを示す引数、または受信機のOBEX(S)のレスポンスが必要であることを示す引数がTrueであったデータ通知関数を受けた場合、OBEX(S)へデータ通知関数を出力した後、OBEX(S)からのデータ送信要求を待つ。
SMP(S)は、OBEX(S)からのデータ送信要求を受けた場合には、受信したデータが正常であったかどうかを示す引数に正常に受信できたとするSMPヘッダを作成し、それをOBEX(S)のデータ送信要求のデータに付加して、LMP(S)に対してデータ送信関数を発する。なお、エラーがあった場合には、OBEX(S)への通知は止まるため、待つときは正常であったときのみとなる。
つぎに、LMPは上位層からデータ送信要求関数を受けたときには、その関数内のデータにLMPヘッダをつけてデータを作成し、LAPにそのデータが入ったデータ送信要求関数を発する。また、LMPは、LAPからデータ通知関数を受けた場合には、その関数内のデータからLMPヘッダを除いたデータを作成し、SMPにそのデータが入ったデータ通知関数を発する。
なお、1対1で1つの接続をする場合にはLMPを使用する必要がない。この場合、LMPヘッダにはコネクションレスの値が入ったLSAPが入る。
LAPは、LMPからデータ送信要求関数を受けたとき、その関数内のデータにLAPヘッダをつけてデータを作成し、物理層にそのデータがはいったUIフレームを発する。また、LAPは、物理層からデータ受信通知を受けた場合には、そのUIフレームのデータからLAPヘッダを除いたデータを作成し、LMPにそのデータが入ったデータ通知関数を発する。なお、本実施の形態では、LAPヘッダには、接続アドレスとUIインジケータが含まれる。
〔B〕レスポンス無し
図79は、本実施の形態(レスポンス無し)のデータ交換シーケンスを示すシーケンス図である。また、図78は、本実施の形態(レスポンス無し)のデータ交換シーケンスの際の通信データのデータ構造を示す説明図である。
図79に示すように、本実施の形態(レスポンス無し)では、送信機が、PUTコマンドを発生し、それが下位層まで伝わり、UIフレームとして出力される。
一方、受信機は、データを受け取り、上位層へ通知を上げていく。このとき、SMP(S)では、上位層のOBEX(S)に対して、データが続くことを通知する(status=truncated)。
そして、送信機は、データの最後になったときに、データの最後であることを示すフラグをONにして送信する。これに対して、受信機は、SMP(S)が、このフラグがONであれば、OBEX(S)にデータがそろったことを通知して(status=OK)、データ交換シーケンスを終了する。
このときの、送信機、受信機内のシーケンスは以下のとおりである。
送信機では、OBEX(P)が下位層に対してPUTコマンドをデータ送信関数として出力する。ただし、OBEX(P)は、すべてのコマンドに対するレスポンスを必要とせずに、コマンドを終了することができる。そして、OBEX(P)は、SMP(P)で送信可能である場合に、次のコマンドを出力していく。
受信機では、OBEX(S)が下位層からデータ通知関数を受けて、すべてのコマンドに対してレスポンスを返さずに、データのみを受け取る。
ここで、送信機、受信機に共通する、上位層と下位層のデータ送信関数およびデータ通知関数でのヘッダ等について説明する。
SMPは、OBEXからデータ送信関数を受けると、LMPに対して、(a)LMPで送信可能なサイズがデータ送信関数内のデータのサイズよりも小さいときには、該データをLMPが送信可能なサイズに分割し、(b)LMPで送信可能なサイズがデータ送信関数内のデータのサイズよりも大きいときには、いくつかのデータを結合して、送信可能なサイズ以下の、より大きなデータを作成する。また、SMPは、シーケンシャルな番号、相手機器にデータ受信状態を問い合わせる引数、データの最後を示す引数、相手機器のSMPがOBEXのレスポンスが必要であることを示す引数、受信したデータが正常であったかどうかを示す引数などを入れたSMPヘッダを作成する。そして、このSMPヘッダを、上記分割または結合したデータに付加したデータを入れたデータ送信関数をLMPに対して発する。
さらに、SMPは、LMPからデータ通知関数を受けると、該関数内のデータからSMPヘッダを抜き出し、シーケンス番号が正常であるか(すなわち、抜けなく順番に来ているか)を確認する。そして、正常であった場合には、OBEXへデータ通知関数を発する。このとき、データ通知関数は、下位層からのデータ通知関数ごとに出力してもよいし、いくつかの下位層からのデータ通知関数のデータをあわせて出力してもよい。
送信機のSMP(P)は、OBEX(P)からのデータ送信関数をLMP(P)へのデータ送信関数に変換する。そして、OBEX(P)からデータの最後であるとした引数がFalseであるデータ送信関数を受けた場合には、そのデータにSMPヘッダを付けたデータを、LMP(P)へ発する。これに対して、SMP(P)は、OBEX(P)からデータの最後であるとした引数がTrueであるデータ送信関数を受けた場合には、そのデータ送信関数の最後のデータを入れた、LMP(P)へのデータ送信関数を、このデータ送信関数がデータの最後であることを示す引数、または、受信機のOBEX(S)のレスポンスが必要であることを示す引数をTrueにして発する。
一方、受信機のSMP(S)は、データ通知関数を下位層から受けた場合に、そのデータ通知関数内のデータからSMPヘッダを解析し、シーケンシャルな番号を確認する。そして、SMP(S)は、SMPヘッダを解析して、正常に受信できていることを確認できた場合、LMP(S)に対してデータ送信関数を発する。
これに対して、SMP(S)は、正常に受信できなかったことを検出した場合には、OBEX(S)にエラーとして通知する。例えば、0,1,2,3,5と受けたとき、5個目は4となるべきなのに4を受けなかった場合である。
そして、それ以降、SMP(S)は、SMPヘッダのデータの最後を示す引数、または受信機のOBEX(S)のレスポンスが必要であることを示す引数がTrueであることを待ち、Trueであるデータ通知関数を受けるか(なお、受けてもOBEX(S)へは通知はしない)、切断通知関数を受けるか、もしくはある一定時間経つまで、OBEX(S)へデータ通知を行わないようにする。
つぎに、送信機のLMP(P)は、SMP(S)からデータ送信要求関数を受けたときには、その関数内のデータにLMPヘッダをつけてデータを作成し、LAP(P)にそのデータが入ったデータ送信要求関数を発する。
一方、受信機のLMP(S)は、LAP(S)からデータ通知関数を受けた場合には、その関数内のデータからLMPヘッダを除いたデータを作成し、SMP(S)にそのデータが入ったデータ通知関数を発する。
なお、1対1で1つの接続をする場合にはLMPを使用する必要がない。この場合、LMPヘッダにはコネクションレスの値が入ったLSAPが入る。
送信機のLAP(P)は、LMP(P)からデータ送信要求関数を受けたとき、その関数内のデータにLAPヘッダをつけてデータを作成し、物理層にそのデータが入ったUIフレームを発する。
一方、受信機のLAP(S)は、物理層からデータ受信通知を受けた場合には、そのUIフレームのデータからLAPヘッダを除いたデータを作成し、LMP(S)にそのデータが入ったデータ通知関数を発する。なお、本実施の形態では、LAPヘッダには、接続アドレスとUIインジケータが含まれる。
(3−3)切断シーケンス
〔A〕レスポンス有り
図80は、本実施の形態(レスポンス有り)の切断シーケンスを示すシーケンス図である。また、図81(a),図81(b)は、本実施の形態(レスポンス有り)の切断シーケンスの際の通信データのデータ構造を示す説明図である。
図80に示すように、本実施の形態(レスポンス有り)では、送信機の切断コマンドが下位層に伝わっていき、DISCコマンドが発生する。受信機は、そのDISCコマンドを受けて上位層へ通知していき、そのレスポンスが返り、UAレスポンスが発生する。その後、送信機の上位層まで、UAレスポンスを受信したことを通知して終了する。
このときの、送信機、受信機内のシーケンスは以下のとおりである。
まず、送信機の各通信層について説明する。
OBEX(P)は、アプリケーションからの切断要求が来た場合に、速やかに下位層(SMP(P))に対して切断要求コマンドをデータに入れて切断要求関数(Primitive)を発生する。また、OBEX(P)は、SMP(P)から切断確認関数を受けた場合に、そのデータの中からOBEX切断のレスポンスを確認し、問題ない(Success)というレスポンスであれば、切断完了とする。
SMP(P)は、OBEX(P)からの切断要求関数を受けて、速やかにOBEX(P)の切断要求関数のデータに、受信機のSMP(S)との通信に必要なパラメータを付加して、下位層(LMP(P))に対して切断要求関数を発生する。また、SMP(P)は、LMP(P)から切断確認関数を受けた場合、関数のデータから受信機のSMP(S)が生成したパラメータを抜き取り、値を確認して、SMP(S)との切断処理を終了する。また、SMP(P)は、切断確認関数のデータからSMP(S)のパラメータを取り除いたデータをOBEX(P)に対して切断確認関数として送信する。ただし、通常、切断時にSMP(P)で新たに追加するパラメータは無い。
LMP(P)は、SMP(P)からの切断要求関数を受けて、速やかにSMP(P)の切断要求関数のデータに、受信機のLMP(S)との通信に必要なパラメータを付加して、下位層(LAP(P))に対して切断要求関数を発生する。また、LMP(P)は、LAP(P)から切断確認関数を受けた場合、関数のデータから受信機のLMP(S)が生成したパラメータを抜き取り、値を確認して、LMP(S)との切断処理を終了する。また、LMP(P)は、切断確認関数のデータからLMP(S)のパラメータを取り除いたデータを、SMP(P)に対して切断確認関数として送信する。ただし、通常、切断時にLMP(P)で新たに追加するパラメータは無い。
LAP(P)は、LMP(P)からの切断要求関数を受けて、速やかにLMP(P)の切断要求関数のデータに、受信機のLAP(S)との通信に必要なパラメータを付加して、受信機の物理層に対してDISCコマンドを出力する。また、LAP(P)は、受信機の物理層からUAレスポンスを受けた場合、UAレスポンスのデータから受信機のLAP(S)が生成したパラメータを抜き取り、値を確認して、LAP(S)との接続を終了する。また、LAP(P)は、UAレスポンスのデータからLAP(S)のパラメータを取り除いたデータを、LMP(P)に対して切断確認関数として発する。ただし、通常、切断時にLAP(P)で新たに追加するパラメータは無い。
つづいて、受信機の各通信層について説明する。
OBEX(S)は、下位層(SMP(S))から切断通知関数(Indication)を受けた場合に、そのデータの中からOBEX切断コマンドを確認し、問題が無ければSuccessというレスポンスを切断返答関数(Response)としてSMP(S)に対して出力し、切断完了とする。
SMP(S)は、下位層(SMP(S))から切断通知関数を受けた場合に、関数のデータから送信機のSMP(P)が生成したパラメータを抜き取り、それに対しての返答のパラメータを作成し、上記関数のデータからSMP(P)のパラメータを除いたデータを入れた切断要求関数をOBEX(S)に発した後、OBEX(S)からの切断返答関数を待つ。また、SMP(S)は、OBEX(S)からの切断返答関数を受けた場合に、LMP(S)に対してOBEX(S)の切断返答関数のデータに上記返答のパラメータを付加して、LMP(S)に対して切断返答関数を発生し、SMP層の切断処理を終了する。ただし、通常、切断時にSMP(S)で新たに追加するパラメータは無い。
LMP(S)は、下位層(LAP(S))から切断通知関数を受けた場合に、関数のデータから送信機のLMP(P)が生成したパラメータを抜き取り、それに対しての返答のパラメータを作成し、上記関数のデータからLMP(P)のパラメータを除いたデータを入れた切断要求関数をSMP(S)に発した後、SMP(S)からの切断返答関数を待つ。また、LMP(S)は、SMP(S)からの切断返答関数を受けた場合に、LAP(S)に対してSMP(S)の切断返答関数のデータに上記返答のパラメータを付加して、LAP(S)に対して切断返答関数を発生し、LMP層の切断処理を終了する。ただし、通常、切断時にLMP(S)で新たに追加するパラメータは無い。
LAP(S)は、物理層からDISCコマンドを受けた場合に、DISCコマンドのデータから送信機のLAP(P)が生成したパラメータを抜き取り、DISCコマンドのデータからLAP(P)のパラメータを除いたデータを入れた切断要求関数をLMP(S)に発した後、それに対しての返答のパラメータを作成し、LMP(S)からの切断返答関数を待つ。また、LAP(S)は、LMP(S)からの切断返答関数を受けた場合に、LMP(S)の切断返答関数のデータに上記返答のパラメータを付加して、物理層に対してUAレスポンスを出力し、LAP層の切断処理を終了する。ただし、通常、切断時にLAP(S)で新たに追加するパラメータは無い。
〔B〕レスポンス無し
図82は、本実施の形態(レスポンス無し)の切断シーケンスを示すシーケンス図である。また、図81(a)は、本実施の形態(レスポンス無し)の切断シーケンスの際の通信データのデータ構造を示す説明図である。
図82に示すように、本実施の形態(レスポンス無し)では、送信機の切断コマンドが下位層に伝わっていき、DISCコマンドが発生する。送信機では、この時点で切断処理が終了する。一方、受信機は、そのDISCコマンドを受けて上位層へ伝えていき、上位層まで通知した時点で切断処理が終了する。
このときの、送信機、受信機内のシーケンスは以下のとおりである。
まず、送信機の各通信層について説明する。
OBEX(P)は、アプリケーションからの切断要求が来た場合に、速やかに下位層(SMP(P))に対して切断要求コマンドをデータに入れて切断要求関数(Primitive)を発生する。また、OBEX(P)は、SMP(P)から切断確認関数を受けた場合に、切断完了とする。
SMP(P)は、OBEX(P)からの切断要求関数を受けて、速やかにOBEX(P)の切断要求関数のデータに、受信機のSMP(S)との通信に必要なパラメータを付加して、下位層(LMP(P))に対して切断要求関数を発生する。また、SMP(P)は、LMP(P)から切断確認関数を受けた時点で、送信したパラメータで切断できたとして、SMP層の切断処理を終了する。また、SMP(P)は、OBEX(P)に対して切断確認関数を送信する。ただし、通常、切断時にSMP(P)で新たに追加するパラメータは無い。
LMP(P)は、SMP(P)からの切断要求関数を受けて、速やかにSMP(P)の切断要求関数のデータに、受信機のLMP(S)との通信に必要なパラメータを付加して、下位層(LAP(P))に対して切断要求関数を発生する。また、LMP(P)は、LAP(P)から切断確認関数を受けた時点で、送信したパラメータで切断できたとして、LMP層の切断処理を終了する。また、LMP(P)は、SMP(P)に対して切断確認関数を送信する。ただし、通常、切断時にLMP(P)で新たに追加するパラメータは無い。
LAP(P)は、LMP(P)からの切断要求関数を受けて、速やかにLMP(P)の切断要求関数のデータに、受信機のLAP(S)との通信に必要なパラメータを付加して、受信機の物理層に対してDISCコマンドを出力する。また、LAP(P)は、DISCコマンドを出力した時点で、送信したパラメータで切断できたとして、LAP層の切断処理を終了する。また、LAP(P)は、LMP(P)に対して切断確認関数を発する。ただし、通常、切断時にLAP(P)で新たに追加するパラメータは無い。
つづいて、受信機の各通信層について説明する。
OBEX(S)は、下位層(SMP(S))から切断通知関数(Indication)を受けた場合に、そのデータの中からOBEX切断コマンドを確認し、問題が無ければ、切断完了とする。
SMP(S)は、下位層(SMP(S))から切断通知関数を受けた場合に、関数のデータから送信機のSMP(P)が生成したパラメータを抜き取り、そのパラメータを使用して切断を完了させる。また、SMP(S)は、上記関数のデータからSMP(P)のパラメータを除いたデータを入れた切断要求関数をOBEX(S)に発する。ただし、通常、切断時にSMP(S)で新たに追加するパラメータは無い。
LMP(S)は、下位層(LAP(S))から切断通知関数を受けた場合に、関数のデータから送信機のLMP(P)が生成したパラメータを抜き取り、そのパラメータを使用して切断を完了させる。また、LMP(S)は、上記関数のデータからLMP(P)のパラメータを除いたデータを入れた切断要求関数をSMP(S)に発する。ただし、通常、切断時にLMP(S)で新たに追加するパラメータは無い。
LAP(S)は、物理層からDISCコマンドを受けた場合に、DISCコマンドのデータから送信機のLAP(P)が生成したパラメータを抜き取り、そのパラメータを使用して切断を完了させる。また、LAP(S)は、DISCコマンドのデータからLAP(P)のパラメータを除いたデータを入れた切断要求関数をLMP(S)に発する。ただし、通常、切断時にLAP(S)で新たに追加するパラメータは無い。
(4)レスポンスの有無の切換え
図83〜図90を参照しながら、送信機および受信機の通信層間におけるデータおよびパラメータの流れを説明する。
本実施の形態では、送信機および受信機の各通信層LAP、LMP、SMP、OBEXは、接続要求関数、接続通知関数、接続応答関数、接続確認関数を持っている。これらの関数は、上位層(つまり、LMP層)からLAP層へアクセスするための関数である。
そして、上記関数は、引数として、Data(以下、データと記す)とRequested-QosまたはReturned-QoSが指定できる。上記データは、上述したように、各通信層において設定される。
一方、Qosは、LAPで決定されたボーレート等のネゴシエーションパラメータの指定やネゴシエーション結果を、OBEXを含めた上位層に通知する。なお、Qosは従来のIrDAでも使用されている。
例えば、送信機のアプリケーションもしくはOBEX(P)が、レスポンスが必要/不要というパラメータの入ったQoSを発すると、それが下位層へ順にLAP(P)まで伝わる。そして、LAP(P)は、そのQoSの値をネゴシエーションパラメータ(Ack Less Connect)の値として反映させ、受信機へ送信する。
その結果、送信機および受信機の各通信層が、送信機のアプリケーションもしくはOBEX(P)によるレスポンス必要/不要の指定に従って動作するため、双方向/片方向の接続ができることになる。
図83〜図87は、本実施の形態(レスポンス有り)の接続シーケンス(図74)のときの、通信層間のデータおよびパラメータの流れを示す説明図である。なお、OBEX−SMP間、SMP−LMP間、LMP−LAP間のQoSのパラメータは、同一であってもよいが、異なっていてもよい。それゆえ、図中では、-a,-b,-cを付して区別している。
送信機では、図83に示すように、con.req(data)(図74)によって、受信機へ送信するDataとQoS-1(送信機の要求するQoS)のデータとを上位層から下位層に渡す。
一方、受信機では、図84に示すように、con.reqによって、QoS-2(受信機の要求するQoS)のデータのみを上位層から下位層にそれぞれ渡す。
その後、受信機では、LAP(S)がSNRMコマンドを受けた時点で、送信機のQoS-1と自機のQoS-2を比較して、共通でネゴシエートしたパラメータとしてQoS-3を作成する。そして、図85に示すように、LAP(S)は、con.ind(data)によって、QoS-3を送信機からのデータと一緒に上位層へ通知する。各上位層は、このQoS-3を記憶して、接続時における接続パラメータとして保持する。
つづいて、受信機では、con.resp(data)を通知する際、QoSが不要となっている。よって、図86に示すように、con.resp(data)ではデータのみが上位層から下位層に渡されていく。そして、LAP(S)がcon.resp(data)を受けると、UAレスポンスにQoS-3を入れて、UAレスポンスを発する。
つづいて、送信機では、LAP(P)がUAレスポンスを受けてQoS-3をネゴシエートしたパラメータとして記憶する。そして、LAP(P)は、図87に示すように、con.conf(data)によって、QoS-3を受信機のデータと一緒に上位層へ通知する。各通信層は、このQoS-3を、確立させた接続における接続パラメータとして保持する。
本実施の形態では、例えば、con.reqのQoSとして、Requested-QoS:Baud-Rate + Max-Turn-Around-Time + Disconnect-Threshold + DataSize + Ack less connection +Min-Packet-Interval、を使用する。また、Con.ind,con.confのQoSとして、Resultant-QoS:Baud-Rate + Disconnect-Threshold + DataSize + Ack less connection (indication primitive only)、を使用する。
また、本実施の形態(レスポンス無し)の接続シーケンス(図76)のときには、通信層間のデータおよびパラメータの流れは次のようになる。
送信機では、図83に示すように、con.req(data)(図76)によって、受信機へ送信するDataとQoS-1(送信機の要求するQoS)のデータとを上位層から下位層に渡す。
そして、送信機のLAP(P)は、QoS-1をそのままQoS-3として記憶する。そして、LAP(P)は、図87に示すように、con.confによってQoS-3を上位層へ通知する。各通信層は、このQoS-3を、確立させた接続における接続パラメータとして保持する。
一方、受信機では、図84に示すように、con.reqによって、QoS-2(受信機の要求するQoS)のデータのみを上位層から下位層にそれぞれ渡す。
その後、受信機では、LAP(S)がSNRMコマンドを受けた時点で、送信機のQoS-1をもって、QoS-3とする。なお、QoS-2のパラメータがQoS-1との組み合わせで満足しない場合には受信できない。
つづいて、図85に示すように、LAP(S)は、con.ind(data)によって、QoS-3を送信機からのデータと一緒に上位層へ通知する。各上位層は、このQoS-3を記憶して、接続時における接続パラメータとして保持する。
これにより、レスポンス有り/無しを、アプリケーションが上記QoS-1とQoS-2を上位層(アプリケーション)操作することで、切り替えることができる。
ここで、レスポンス有り/無しの切換えの基準としては、送信するファイルのファイル形式、アプリケーション、ユーザの選択等が考えられる。
具体的には、ファイル形式を基準とする場合、例えば、マルチメディア関連ファイルの場合にはレスポンス有り/無し両方選べるようにし、電話帳、メール、スケジュール等のファイルであってデータが受信されたことを確認したい場合にはレスポンス有りが自動的に選択されるようにしてもよい。また、アプリケーションを基準とする場合、例えば、スライドショーの場合にはレスポンス無しが自動的に選択されるようにしてもよい。また、ユーザの選択による場合、例えば、レスポンス有り/無しのメニュー表示からユーザに選択させるようにしてもよい。
図88〜図90は、本実施の形態の接続シーケンスのときの、通信層間のデータおよびパラメータの流れの変形例を示す説明図である。
送信機において最初のSNRMコマンドにすべての通信層の情報が含まれる場合に(図74)、データやパラメータを各通信層でリレーしながら伝達する(図83)のではなく、図88のように、各通信層からLAP層へ直接渡すように構成することもできる。
また逆に、図89のように、受信機において、SNRMコマンドに含まれるデータやパラメータをすべて取り出し、宛先である各通信層へLAP層から直接渡すように構成することもできる。
また、図90のように、送信機において、OBEX(P)、SMP(P)、LMP(P)のデータやパラメータをLMP(P)で統合し、さらに、LAP(P)にて、上記統合したデータやパラメータにLAP(P)のパラメータを追加してSNRMコマンドを生成するように構成することもできる。
なお、上記各実施の形態における送信機(一次局)としては、例えば、携帯電話機、PDA(Personal Digital Assistants)、デジタルカメラ、パーソナルコンピュータなどが挙げられる。また、受信機(二次局)としては、例えば、携帯電話機、テレビ、AV機器、DVDレコーダ、HDDレコーダなどの記録装置、プリンタ、パーソナルコンピュータなどの電子機器が挙げられる。
また、前述した送信機(一次局)または受信機(二次局)の各ブロックは、ハードウェアロジック(通信回路)によって構成してもよいし、次のようにCPUなどの演算処理装置を用いてソフトウェアによって実現してもよい。
すなわち、前述した送信機または受信機は、各機能を実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。
そして、本発明の目的は、上述した機能を実現するソフトウェアである送信機または受信機の通信プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記送信機または受信機に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、送信機または受信機を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された搬送波あるいはデータ信号列の形態でも実現され得る。
以上のように、本発明に係る通信機器は、一度に送信可能なフレーム数に制限がない通信方式に従って、送信権を委譲せずに、データを一括送信する通信機器であって、一括送信する一括送信データを分割して送信フレームを生成する送信フレーム生成手段と、上記送信フレームに通し番号を付与する通し番号生成手段と、上記一括送信データの最終の送信フレームに、一括送信データの最終の送信フレームであることを示す一括送信最終フラグを設定する一括送信最終フラグ生成手段と、上記送信フレームを送信する送信手段と、を備えることを特徴としている。
また、本発明に係る通信方法は、一度に送信可能なフレーム数に制限がない通信方式に従って、送信権を委譲せずに、データを一括送信する通信方法であって、一括送信する一括送信データを分割して送信フレームを生成し、上記送信フレームに通し番号を付与し、上記一括送信データの最終の送信フレームには、一括送信データの最終の送信フレームであることを示す一括送信最終フラグを設定して、上記送信フレームを送信することを特徴としている。
さらに、本発明に係る通信機器は、受信した受信フレームからエラー無しフラグおよび通し番号を抽出する受信フレーム解析手段と、上記エラー無しフラグを解析してエラーの有無を判定するエラー無しフラグ解析手段と、上記エラー無しフラグがエラー有りを示している場合、上記通し番号に対応する送信フレームを再送する制御手段と、を備えることを特徴としている。
また、本発明に係る通信機器は、一度に送信可能なフレーム数に制限がない通信方式に従って、送信権を委譲されずに、データを一括受信する通信機器であって、上記受信フレームに含まれる通し番号を解析して、通し番号のエラーがないかどうかを判別する通し番号解析手段と、上記受信フレームに含まれる一括送信最終フラグが、当該受信フレームが送信機によって複数の送信フレームに分割されて一括送信された一括送信データの最終の送信フレームであることを示しているとき、上記通し番号解析手段によって、それまでに受信した受信フレームにエラーが検出された場合、エラー有りを示すように設定したエラー無しフラグおよびエラー発生時の通し番号を含む送信フレームを生成する送信フレーム生成手段と、上記送信フレームを送信する送信手段と、を備えることを特徴としている。
また、本発明に係る通信方法は、一度に送信可能なフレーム数に制限がない通信方式に従って、送信権を委譲されずに、データを一括受信する通信方法であって、上記受信フレームに含まれる通し番号を解析して、通し番号のエラーがないかどうかを判別し、上記受信フレームに含まれる一括送信最終フラグが、当該受信フレームが送信機によって複数の送信フレームに分割されて一括送信された一括送信データの最終の送信フレームであることを示しているとき、それまでに受信した受信フレームにエラーが検出された場合、エラー有りを示すように設定したエラー無しフラグおよびエラー発生時の通し番号を含む送信フレームを生成し、上記送信フレームを送信することを特徴としている。
また、本発明に係る通信システムは、上記の送信機としての通信機器と、上記の受信機としての通信機器とを含むことを特徴としている。
上記の構成および方法により、一度に送信可能なフレーム数に制限がない通信方式に従って、送信権を委譲せずに、データを一括送信する際に、送信機では、一括送信データを分割して送信フレームを生成し、送信フレームに通し番号を付与するとともに、さらに、一括送信データの最終の送信フレームには、一括送信データの最終の送信フレームであることを示す一括送信最終フラグを設定して、送信フレームを送信する。一方、受信機では、受信フレームに含まれる通し番号を解析して、通し番号のエラーがないかどうかを判別し、受信フレームにエラーが検出された場合、エラー有りを示すように設定したエラー無しフラグおよびエラー発生時の通し番号を含む送信フレームを生成して、送信機へ送信する。そして、送信機は、受信機から、エラー発生時の通し番号を含むフレームを受信すると、その通し番号に対応する送信フレームを再送する。
ここで、受信機は、送信機が一括送信データを分割した送信フレームの内の最終の送信フレームを受信したことが、受信フレームに含まれる一括送信最終フラグによって判明するまで、上記エラー発生時の通し番号を含む送信フレームを送信しない。つまり、エラーの通知を一括送信データ単位で行う。
よって、一度に送信または受信可能なフレーム数(ウィンドウサイズ)の制限がない通信方式を用いても、フレームの抜け等を検出して、再送することができるため、信頼性の高い通信を行うことが可能となる。また、エラーの通知を一括送信データ単位で行うため、データ転送の効率がよい。
さらに、本発明に係る通信機器は、1つの送信データを複数の上記一括送信データに分割して送信する際、当該送信データの最終の送信フレームに、送信データの最終の送信フレームであることを示すデータ最終フラグを設定するデータ最終フラグ生成手段を備えることを特徴としている。
上記の構成によれば、さらに、受信機に送信データの終わりを知らせることができる。それゆえ、受信機では、例えば受信バッファ内のデータの処理を効率よく開始することが可能となる。
さらに、本発明に係る通信機器は、上記通信方式が、IrLAP(Infrared Link Access Protocol)のUI(Unnumbered Information)フレームを用いた通信であることを特徴としている。
上記の構成によれば、さらに、一度に送信または受信可能なフレーム数(ウィンドウサイズ)の制限がない通信方式として、IrLAPのUIフレームを用いることができる。すなわち、IrLAPのUIフレームを用いて、再送を行うことが可能となる。
さらに、本発明に係る通信機器は、上記送信フレームには、OBEX(Object Exchange Protocol)の最終のPUTコマンドまたは最終でないPUTコマンドの少なくとも一部が含まれていることを特徴としている。
上記の構成によれば、さらに、OBEXPUTコマンドを用いて、品質および転送効率の高い再送を行うことが可能となる。
さらに、本発明に係る通信機器は、上記送信フレームには、OBEX(Object Exchange Protocol)のSUCCESSレスポンスの一部もしくは全てが含まれていることを特徴としている。
上記の構成によれば、送信機からOBEXのPutコマンドでのデータ転送が行われた場合、OBEXのSUCCESSレスポンスを送信することが可能となり、OBEXのPutオペレーションを用いた通信が可能となる。
また、本発明に係る通信機器は、一度に送信可能なフレーム数に制限がない通信方式に従って、送信権を委譲されずに、データを一括受信する通信機器であって、受信した受信フレームにエラーがないかどうかを判別するためのエラー検出手段と、上記受信フレームに含まれる一括送信最終フラグが、当該受信フレームが送信機によって複数の送信フレームに分割されて一括送信された一括送信データの最終の送信フレームであることを示しているとき、上記エラー検出手段によって、それまでに受信した受信フレームにエラーが検出されているか否かに応じて、エラーの有無を示すように設定したエラー無しフラグを含む送信フレームを生成する送信フレーム生成手段と、上記送信フレームを送信する送信手段と、を備えることを特徴としている。
上記の構成によれば、送信機に対してエラーの有無を通知することが可能となる。それゆえ、これを受けた送信機が再送を行うことが可能となる。
よって、一度に送信または受信可能なフレーム数(ウィンドウサイズ)の制限がない通信方式を用いても、フレームの抜け等を検出して、再送することができるため、信頼性の高い通信を行うことが可能となる。また、エラーの通知を一括送信データ単位で行うため、データ転送の効率がよい。
また、本発明に係る通信機器は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、オブジェクトを送信する通信機器であって、OBEXコマンドを送信後、受信機からのOBEXレスポンスを受信することなく、次のOBEXコマンドを送信するOBEX層処理部を備えることを特徴としている。
また、本発明に係る通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、オブジェクトを送信する通信方法であって、OBEXコマンドを送信後、受信機からのOBEXレスポンスを受信することなく、次のOBEXコマンドを送信することを特徴としている。
上記の構成および方法によれば、送信機は、受信機からのOBEXレスポンスを受信しなくても、次のOBEXコマンドを送信することができる。よって、送信機からの要求コマンドに対する応答コマンドを受信機が送信しない場合、あるいは、受信機に送信機能がない場合においても、OBEXによってオブジェクトを転送することが可能となる。すなわち、OBEXを用いた片方向通信が実現できる。
また、本発明に係る通信機器は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、オブジェクトを送信する通信機器であって、OBEXの最終でないPutコマンドを送信後のみ、受信機からのOBEXレスポンスを受信することなく、次のOBEXの最終でないPutコマンドもしくは最終のPutコマンドを送信するOBEX層処理部を備えることを特徴としている。
また、本発明に係る通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、オブジェクトを送信する通信方法であって、OBEXの最終でないPutコマンドを送信後のみ、受信機からのOBEXレスポンスを受信することなく、次のOBEXの最終でないPutコマンドもしくは最終のPutコマンドを送信することを特徴としている。
上記の構成および方法によれば、最終でないPutコマンドのレスポンス(CONTINUE応答コマンド)を省略することによって、効率のよいデータ転送を実現することができる。
また、本発明に係る通信機器は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、送信機からオブジェクトを受信する通信機器であって、OBEXコマンドを受信後に、OBEXレスポンスを常に送信しないOBEX層処理部を備えることを特徴としている。
また、本発明に係る通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、送信機からオブジェクトを受信する通信方法であって、OBEXコマンドを受信後に、OBEXレスポンスを常に送信しないことを特徴としている。
上記の構成および方法によれば、送信機が受信機からのOBEXレスポンスを受信しなくても、次のOBEXコマンドを送信することができる場合、受信機において、不必要な応答コマンドの生成および送信を行わないという制御を行うことが可能となる。よって、OBEXを用いた片方向通信が実現できる。
また、本発明に係る通信機器は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、送信機からオブジェクトを受信する通信機器であって、OBEXの最終でないPutコマンド受信時には、OBEXレスポンスの送信を行わず、最終のPutコマンド受信時には、OBEXのレスポンスの送信を行うOBEX層処理部を備えることを特徴としている。
また、本発明に係る通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、送信機からオブジェクトを受信する通信方法であって、OBEXの最終でないPutコマンド受信時には、OBEXレスポンスの送信を行わず、最終のPutコマンド受信時には、OBEXのレスポンスの送信を行うことを特徴としている。
上記の構成および方法によれば、最終でないPutコマンドのレスポンス(CONTINUE応答コマンド)を省略することによって、効率のよいデータ転送を実現することができる。
なお、上記通信機器は、コンピュータによって実現してもよく、この場合には、コンピュータを上記通信機器の各部として動作させることにより上記通信機器をコンピュータにて実現させる通信機器の通信プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
また、上記通信機器は、上記の各部として機能する通信回路によって実現してもよい。
また、上記通信機器は、該通信機器によって通信を行う携帯電話に好適である。上記携帯電話によれば、品質および/あるいは転送効率の高い通信を行うことが可能となる。
また、上記通信機器は、該通信機器によって受信したデータに基づいて表示する表示装置に好適である。このような表示装置によれば、品質および/あるいは転送効率の高い通信を行うことが可能となる。
また、上記通信機器は、該通信機器によって受信したデータに基づいて印刷する印刷装置に好適である。このような印刷装置によれば、品質および/あるいは転送効率の高い通信を行うことが可能となる。
また、上記通信機器は、該通信機器によって受信したデータを記録する記録装置に好適である。このような記録装置によれば、品質および/あるいは転送効率の高い通信を行うことが可能となる。
さらに、本発明は以下のように構成してもよい。
本発明に係る通信機器は、データを一括受信する、一次局と通信する二次局としての通信機器であって、受信フレームに含まれる通し番号を解析して、通し番号のエラーがないかどうかを判別する通し番号解析手段を備え、上記通し番号解析手段によって、それまでに受信した受信フレームにエラーが検出された場合、通し番号のエラーが検出された受信フレーム以降のフレームについては、フレームの受信処理を行わないことを特徴としている。
また、本発明に係る通信機器は、データを一括受信する、一次局と通信する二次局としての通信機器であって、受信フレームに含まれる通し番号を解析して、通し番号のエラーがないかどうかを判別する通し番号解析手段と、上記通し番号解析手段によって、それまでに受信した受信フレームにエラーが検出された場合、通し番号のエラーが検出された受信フレーム以降のフレームについては、フレームの受信処理を行わず、エラーが検出されたことをユーザに知らせることを特徴としている。
また、本発明に係る通信機器は、一度に送信可能なフレーム数に制限がない通信方式に従って、データを一括送信する通信機器であって、一括送信する一括送信データを分割して送信フレームを生成する送信フレーム生成手段と、上記送信フレームに通し番号を付与する通し番号生成手段と、上記送信フレームを送信する送信手段とを備えるとともに、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)のOBEXコマンドを送信後、受信機からのOBEXレスポンスを受信することなく、次のOBEXコマンドを送信するOBEX層処理部を備えることを特徴としている。
また、本発明に係る通信機器は、一度に送信可能なフレーム数に制限がない通信方式に従って、データを一括送信する通信方法であって、一括送信する一括送信データを分割して送信フレームを生成し、上記送信フレームに通し番号を付与し、上記送信フレームを送信するとともに、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)のOBEXコマンドを送信後、受信機からのOBEXレスポンスを受信することなく、次のOBEXコマンドを送信することを特徴としている。
さらに、本発明は以下のように構成してもよい。
〔一次局〕
(1.一次局がLAP層のUIフレームに通し番号及びBLフラグをつけて送信)
本発明に係る通信機器〔1〕は、ウィンドウサイズ(一度に送信または受信可能なフレーム数)の制限がない通信方式を用いて、あるまとまったサイズのデータを、送信権を委譲せずに、一括送信する通信機器であって、送信フレームに通し番号、一括送信データの終わりを示すフラグ、および送信データを付与して送信フレームを生成する回路と、前記、送信フレームを送信する回路とを有し、データ転送時において、前記、一括送信データの終わりを示すフラグがデータの終わりを示す値を設定して送信するまで、前記通し番号を予め定められた値だけ増減していくことを特徴とする。
上記の構成によれば、ウィンドウサイズの制限がない通信方式を用いても、上記フレームを受信した通信機器は、フレームのぬけを検出することができ、信頼性の高い通信を行うことが可能となる。
(2.二次局から再送要求がきたら、すべて再送)
本発明に係る通信機器〔2〕は、上記通信機器〔1〕において、対向局から受信したフレーム内のエラー無しフラグがエラー有りを示している場合は、最初からデータを再送することを特徴とする。
上記の構成によれば、対向局がエラーにより再送要求を行っている場合は、再送を行うことが可能となる。
(3.すべて再送時に通し番号を0からにする)
本発明に係る通信機器〔3〕は、上記通信機器〔2〕において、前記再送する際に、1つめのフレーム送信時に通し番号を予め定められたルールでの初期値とすることを特徴とする。
上記の構成によれば、これを受信した通信機器は、再送が最初から行われていることを知ることが可能となる。
(4.すべて再送は1回のみ)
本発明に係る通信機器〔4〕は、上記通信機器〔2〕において、前記再送は1回のみであることを特徴とする。
上記の構成によれば、通信路の品質が悪い場合の再送による消費電力の削減を行うことが可能となる。
(5.すべて再送に回数の制限を設ける)
本発明に係る通信機器〔5〕は、上記通信機器〔2〕において、前記再送は予め定められた値以下であることを特徴とする。
上記の構成によれば、通信路の品質によって、再送回数の制限を変更することが可能となり、より効率の高い消費電力の低減を行うことが可能となる。
(6.二次局から再送要求された通し番号からの再送)
本発明に係る通信機器〔6〕は、上記通信機器〔1〕において、対向局から受信したフレーム内のエラー無しフラグがエラー有りを示している場合は、それまでに送信したフレームのうち、受信したフレーム内の通し番号に相当するフレームから再送を行うことを特徴とする。
上記の構成によれば、対向局から要求された通し番号からの再送が可能となり、エラー時の転送効率が高くなる。
(7.二次局から再送要求された通し番号からの再送(通し番号も戻す))
本発明に係る通信機器〔7〕は、上記通信機器〔6〕において、前記再送する際に、1つめのフレーム送信時に通し番号を直前に受信したフレーム内の通し番号とすることを特徴とする。
上記の構成によれば、対向局がデータの再送開始場所を知ることが可能となる。
(8.二次局が指定した通し番号からの再送は1回のみ)
本発明に係る通信機器〔8〕は、上記通信機器〔6〕において、前記再送は1回のみであることを特徴とする。
上記の構成によれば、通信路の品質が悪い場合の再送による消費電力の削減を行うことが可能となる。
(9.二次局が指定した通し番号からの再送に回数の制限を設ける)
本発明に係る通信機器〔9〕は、上記通信機器〔6〕において、前記再送は予め定められた値以下であることを特徴とする。
上記の構成によれば、通信路の品質によって、再送回数の制限を変更することが可能となり、より効率の高い消費電力の低減を行うことが可能となる。
(10.二次局から再送要求がなかったら、通し番号を増やして送信)
本発明に係る通信機器〔10〕は、上記通信機器〔1〕において、対向局から受信したフレーム内のエラー無しフラグがエラー無しを示している場合は、前回送信したフレームの通し番号を予め定められた値だけ増やした値を、通し番号として付与し、送信を行うことを特徴とする。
上記の構成によれば、対向局から再送要求がない場合は、引き続きデータの送信を行うことが可能となる。
(11.BL=1とするデータサイズの単位は受信側のバッファサイズで決まる)
本発明に係る通信機器〔11〕は、上記通信機器〔1〕において、接続時に対向局から受信した対向局の一括受信可能データサイズを保持し、送信フレーム内の送信データの累計が前記接続時に対向局から受信したデータサイズ以下で、前記一括送信データの終わりを示すフラグをデータの終わりの意味する値として設定し、送信することを特徴とする。
上記の構成によれば、受信側のバッファがあふれてオーバーランエラーが起きる状態を未然に防ぐことが可能となる。
(12.ブロックサイズパラメータを受信しなかった場合は、デフォルト値をブロックサイズとする)
本発明に係る通信機器〔12〕は、上記通信機器〔11〕において、接続時に対向局から対向局の一括受信可能データサイズを受信しなかった場合は、予め定められた値以下で一括送信データの終わりを示すフラグをデータの終わりの意味する値として設定し、送信することを特徴とする。
上記の構成によれば、対向局との間で、デフォルト値を定めていれば、対向局はデフォルト値での通信が可能であるならば、接続時に受信バッファを対向局に対して通知する必要がなくなる。
(13.一次局がBL=1として送信した後、タイムアウトしたら直前の送信フレームを再送する)
本発明に係る通信機器〔13〕は、上記通信機器〔1〕において、特にタイマを持ち、前記、一括送信データの終わりを示すフラグをデータの終わりの意味として設定してフレームを送信後、予め定められた一定時間、対向局からフレームを受信しなかった場合、直前に送信したフレームのみを再送することを特徴とする。
上記の構成によれば、一括送信データの終わりを示すフラグを含むフレームにエラーが発生し、対向局にて正常に受信できない場合に、再送することが可能となる。
(14.一次局がBL=1のフレームを再送するのは1回のみ)
本発明に係る通信機器〔14〕は、上記通信機器〔13〕において、前記再送は1回のみであることを特徴とする。
上記の構成によれば、通信路の品質が悪い場合の再送による消費電力の削減を行うことが可能となる。
(15.一次局がBL=1のフレームを再送するのに制限を設ける)
本発明に係る通信機器〔15〕は、上記通信機器〔13〕において、前記再送は予め定められた回数以下であることを特徴とする。
上記の構成によれば、通信路の品質によって、再送回数の制限を変更することが可能となり、より効率の高い消費電力の低減を行うことが可能となる。
(16.一次局が全てのフレーム送信時にBL=1とする)
本発明に係る通信機器〔16〕は、上記通信機器〔1〕において、全ての送信フレームにおいて、前記一括送信データの終わりを示すフラグをデータの終わりを示す値として設定して送信することを特徴とする。
上記の構成によれば、再送のために必要とする送信バッファのサイズを小さく抑えることが可能となる。
(17.一次局が上位層からのデータの終わりを示すフラグを設定する)
本発明に係る通信機器〔17〕は、上記通信機器〔1〕において、特に自局の送信データの終わりを示すフラグを設定する回路を有し、自局の送信データの終わりを送信する場合、前記自局の送信データの終わりを示すフラグをデータの終わりを意味する値に設定し、送信することを特徴とする。
上記の構成によれば、対向局は、送信データの終わりを知ることが可能となる。
(18.一次局がIrDAのUIフレームによる双方向通信を行う)
本発明に係る通信機器〔18〕は、上記通信機器〔1〕〜〔17〕のいずれかにおいて、前記ウィンドウサイズの制限がない通信方式とは、IrLAP(Infrared Link Access Protocol)のUIフレームを用いた通信であることを特徴とする。
上記の構成によれば、IrLAPのUIフレームを用いて、再送を行うことが可能となる。
(19.一次局が片方向送信でLAP層のUIフレームに通し番号をつけて送信)
本発明に係る通信機器〔19〕は、IrLAP(Infrared Link Access Protocol)のUIフレームを用いて、対向局からのレスポンスを必要としない通信を行う場合において、UIフレームに通し番号および送信データを付与して送信フレームを生成する回路と、前記、送信フレームを送信する回路とを有し、データ転送時において、前記通し番号を予め定められた値だけ増減していくことを特徴とする。
上記の構成によれば、IrDAのUIフレームを用いても、片方向通信において、受信したフレームに抜けがあるかどうかを検出することが可能となり、通信の品質の向上につながる。
(20.一次局が片方向通信でUIフレームに通し番号に加えてDLフラグをつけて送信)
本発明に係る通信機器〔20〕は、上記通信機器〔19〕において、特に送信データの終わりを示すフラグを生成する回路を有し、前記送信データの終わりを示すフラグを設定して送信することを特徴とする。
上記の構成によれば、受信側が前記送信データの終わりを示すフラグを受信した時点で、所望の処理を行うことが可能である。
(21.一次局が送信するデータはOBEXのPUTコマンドである)
本発明に係る通信機器〔21〕は、上記通信機器〔1〕〜〔20〕のいずれかにおいて、前記送信データには、OBEX(Object Exchange Protocol)のPut(Finalもしくはnot Final)コマンドの一部もしくは全てが含まれていることを特徴とする。
上記の構成によれば、OBEXのPutコマンドを用いた通信が可能となる。
〔二次局〕
(22.二次局がBL=1のフレームを受信したらエラーの有無を一次局に通知)
本発明に係る通信機器〔22〕は、ウィンドウサイズ(一度に送信または受信可能なフレーム数)の制限がない通信方式を用いて、あるまとまったサイズのデータを、送信権が委譲されずに、一括受信する通信機器であって、受信フレームにエラーがないかどうかを判別するための誤り検出回路と、受信フレーム内のデータを受信バッファに保存する回路と、受信バッファ内のデータを処理する回路と、一括送信データの終わりを示すフラグを判別する回路と、エラー無しフラグを付与して、送信フレームを生成する回路と、前記送信フレームを送信する回路とを有し、データ転送時において、受信フレーム中の前記一括送信データの終わりを示すフラグがデータの終わりを意味している場合に、それまでに受信したフレームにおいてエラーが検出されなかった場合は、前記エラー無しフラグをエラー無しの意味とし、エラーが検出された場合は、前記エラー無しフラグをエラーありの意味としてフレームを生成し、送信することを特徴とする。
上記の構成によれば、対向局に対してエラーの有無を通知することが可能となる。これを受けた対向局は再送を行うことが可能となる。
(23.二次局がBL=1のフレームを受信したら、エラーの有無とエラー時の通し番号を一次局に通知)
本発明に係る通信機器〔23〕は、ウィンドウサイズ(一度に送信または受信可能なフレーム数)の制限がない通信方式を用いて、あるまとまったサイズのデータを、送信権が委譲されずに、一括受信する通信機器であって、受信フレームにエラーがないかどうかを判別するための誤り検出回路と、受信すべき通し番号を算出する回路と、受信すべき通し番号と受信したフレームの通し番号を比較する回路と、受信フレーム内のデータを受信バッファに保存する回路と、受信バッファ内のデータを処理する回路と、エラーを検出したフレームの通し番号を保持する回路と、一括送信データの終わりを示すフラグを判別する回路と、エラー無しフラグおよび、エラーがある場合は、エラー発生時の通し番号を合わせて付与して送信フレームを生成する回路と、前記送信フレームを送信する回路とを有し、データ転送時において、受信フレーム中の前記一括送信データの終わりを示すフラグがデータの終わりを意味している場合に、それまでに受信したフレームにおいて、前記、誤り検出回路および通し番号比較回路において、エラーが検出されなかった場合は、前記エラー無しフラグをエラー無しの意味とし、エラーが検出された場合は、前記エラー無しフラグをエラーありの意味とするとともに、1つめのエラーが検出されたフレームの通し番号を、あわせて送信することを特徴とする。
上記の構成によれば、対向局に対してエラーの有無を通知することが可能となる。また、再送して欲しい通し番号を通知することが可能となり、効率のよい再送を行うことが可能となる。
(24.二次局がエラー検出後のフレーム受信時に、受信フレーム内データの処理を行わない)
本発明に係る通信機器〔24〕は、上記通信機器〔22〕または〔23〕において、前記誤り検出回路および通し番号比較回路にて、エラーが検出された場合は、少なくとも、前記一括送信データの終わりを示すフラグがデータの終わりを意味する値となっているフレームを受信するまで、受信フレーム内のデータを受信バッファに保存することを行わないことを特徴とする。
上記の構成によれば、エラー発生時には、対向局に再送要求するまでのデータ処理にかかる電力の消費を削減することが可能となる。
(25.二次局が再送要求をするのは1回だけ)
本発明に係る通信機器〔25〕は、上記通信機器〔22〕または〔23〕において、前記誤り検出回路および通し番号比較回路において、受信フレームにエラーが検出された場合に、前記エラー無しフラグをエラーありの意味として送信するのは1回のみであることを特徴とする。
上記の構成によれば、通信路の品質が悪い場合の再送による消費電力の削減を行うことが可能となる。
(26.二次局が再送要求をするのに制限を設ける)
本発明に係る通信機器〔26〕は、上記通信機器〔22〕または〔23〕において、前記誤り検出回路および通し番号比較回路において、受信フレームにエラーが検出された場合に、前記エラー無しフラグをエラーありの意味として送信するのは予め定められた回数以下であることを特徴とする。
上記の構成によれば、通信路の品質によって、再送回数の制限を変更することが可能となり、より効率の高い消費電力の低減を行うことが可能となる。
(27.二次局は常に0からの再送を要求する)
本発明に係る通信機器〔27〕は、上記通信機器〔23〕において、前記エラー無しフラグをエラーありの意味として送信を行う際に、通し番号を常に予め定められたルールでの初期値と設定して送信することを特徴とする。
上記の構成によれば、エラーが検出された場合に常にデータの最初からの再送を要求することになり、エラーが発生したフレームの通し番号を管理する必要がなくなり、回路の簡略化につながる。
(28.接続時に二次局がバッファサイズを一次局に通知する)
本発明に係る通信機器〔28〕は、上記通信機器〔22〕または〔23〕において、接続時に、自局のバッファサイズをフレームに付与して送信することを特徴とする。
上記の構成によれば、対向局に自局の受信バッファサイズを通知することが可能となり、対向局が一括送信するデータサイズを調整することが、自局の受信バッファがあふれてオーバーランエラーとなることを防ぐことが可能となる。
(29.二次局がBL=1で同一の通し番号のフレームを連続受信した場合は、エラーとして処理しない)
本発明に係る通信機器〔29〕は、上記通信機器〔23〕において、受信したフレームの一括送信データの終わりを示すフラグがデータの終わりを意味しており、かつ、その時の通し番号が直前に受信した一括送信データの終わりを示すフラグがデータの終わりを示しているフレームの通し番号と同じである場合は、前記通し番号比較回路においてエラーとして処理しないことを特徴とする。
上記の構成によれば、自局が送信したフレームにエラーが発生し、対向局が正常に受信できなかった場合に再送された対向局からのフレームをエラーとして処理しないことが可能となる。
(30.二次局がBL=1の再送パケットを受信したときは、フレーム内データを受信バッファ内に保存しない)
本発明に係る通信機器〔30〕は、上記通信機器〔29〕において、前記、受信したフレームの一括送信データの終わりを示すフラグがデータの終わりを意味しており、かつ、その時の通し番号が直前に受信した一括送信データの終わりを示すフラグがデータの終わりを示しているフレームの通し番号と同じである場合は、受信フレーム内のデータを受信バッファ内に保存しないことを特徴とする。
上記の構成によれば、自局が送信したフレームにエラーが発生し、対向局が正常に受信できなかった場合に再送された対向局からのフレーム内のデータを二重に受信バッファに保存することを防ぐことが可能となる。
(31.二次局がBL=1の再送パケットを受信したときは、直前に送信したフレームを再送する)
本発明に係る通信機器〔31〕は、上記通信機器〔29〕において、前記受信したフレームの一括送信データの終わりを示すフラグがデータの終わりを意味しており、かつ、その時の通し番号が直前に受信した一括送信データの終わりを示すフラグがデータの終わりを示しているフレームの通し番号と同じである場合は、直前に送信したフレームを再送することを特徴とする。
上記の構成によれば、自局が送信したフレームにエラーが発生し、対向局が正常に受信できなかった場合に、再送を行うことが可能となる。
(32.二次局がDL=1のフレームを受信したら、対向局の上位層のデータが終了したことを通知する)
本発明に係る通信機器〔32〕は、上記通信機器〔22〕または〔23〕において、特に、対向局のデータの終わりを示すフラグを判別する回路を有し、受信フレームにおいて、前記対向局のデータの終わりを示すフラグがデータの終わりを示している場合は、自局の受信バッファ内データ処理部に対して、その旨を通知することを特徴とする。
上記の構成によれば、対向局の送信データの終わりを自局内受信データ処理部に通知することが可能となる。
(33.二次局がDL=1のフレームを受信したら、二次局の上位層のデータを送信)
本発明に係る通信機器〔33〕は、上記通信機器〔32〕において、受信フレームにおいて、前記対向局のデータの終わりを示すフラグがデータの終わりを示している場合は、自局の受信バッファ内データ処理部に対して、その旨を通知した後、自局のデータを送信することを特徴とする。
上記の構成によれば、受信データに対するレスポンスデータを送信することが可能となる。
(34.二次局が送信するデータはOBEXのSUCCESS)
本発明に係る通信機器〔34〕は、上記通信機器〔33〕において、前記自局のデータには、OBEX(Object Exchange Protocol)のSUCCESSレスポンスの一部または全てが含まれていることを特徴とする。
上記の構成によれば、対向局からOBEXのPutコマンドでのデータ転送が行われた場合、OBEXのSUCCESSレスポンスを送信することが可能となり、OBEXのPutオペレーションを用いた通信が可能となる。
(35.二次局が上位層のデータを送信するときにエラー無しフラグを合わせて送信)
本発明に係る通信機器〔35〕は、上記通信機器〔33〕において、特に前記自局のデータを送信時に、前記エラー無しフラグを合わせて送信することを特徴とする。
上記の構成によれば、対向局にエラー無しを通知するフレームと、自局のレスポンスデータを送信するフレームを1つにまとめることができ、帯域の効率化につながる。
(36.二次局がIrDAのUIフレームによる双方向通信を行う)
本発明に係る通信機器〔36〕は、上記通信機器〔22〕〜〔35〕のいずれかにおいて、前記ウィンドウサイズの制限がない通信方式とは、IrLAP(Infrared Link Access Protocol)のUIフレームを用いた通信であることを特徴とする。
上記の構成によれば、IrLAPのUIフレームを用いて、再送を行うことが可能となる。
(37.二次局が片方向通信でデータを受信(通し番号をチェックする))
本発明に係る通信機器〔37〕は、IrLAP(Infrared Link Access Protocol)のUIフレームを用いて、対向局に対してレスポンスを送信しない通信を行う場合において、受信フレームにエラーがないかどうかを判別するための誤り検出回路と、受信すべき通し番号を算出する回路と、受信すべき通し番号と受信したフレームの通し番号を比較する回路と、受信フレーム内のデータを受信バッファに保存する回路と、受信バッファ内のデータを処理する回路とを有し、データ転送時において、受信したフレームにおいて、前記誤り検出回路および通し番号比較回路において、エラーが検出されなかった場合は、正常なデータ受信として所望の処理を行い、エラーが検出された場合は、データ受信失敗として所望の処理を行うことを特徴とする。
上記の構成によれば、IrLAPのUIフレームを用いた片方向通信時においても、フレームの通し番号をチェックすることで、フレームの抜けを検出することが可能となる。
(38.二次局が片方向受信においてDL解析回路でデータ終了を判断する)
本発明に係る通信機器〔38〕は、上記通信機器〔37〕において、特に、対向局のデータの終わりを示すフラグを判別する回路を有し、受信フレームにおいて、前記対向局のデータの終わりを示すフラグがデータの終わりを示している場合は、自局の受信バッファ内データ処理部に対して、その旨を通知することを特徴とする。
上記の構成によれば、受信側において、受信フレーム内に送信側が送信する全データ長の情報がない状態でも、受信データの終わりを判別することが可能となる。
(39.二次局が片方向受信でエラー検出後のフレーム受信時に、受信フレーム内データの処理を行わない)
本発明に係る通信機器〔39〕は、上記通信機器〔37〕において、前記誤り検出回路および通し番号比較回路にて、エラーが検出された場合は、少なくとも、前記一括送信データの終わりを示すフラグがデータの終わりを意味する値となっているフレームを受信するまで、受信フレーム内のデータを受信バッファに保存することを行わないことを特徴とする。
上記の構成によれば、エラーが検出された後のデータ保存処理を行わないことが可能となり、消費電力の削減を行うことが可能となる。
(40.通信回路)
本発明に係る通信回路〔40〕は、上記通信機器〔1〕〜〔39〕のいずれかの通信を実現可能な通信回路であることを特徴とする。
上記の構成によれば、他の通信機器にも組み込むことが可能となる。
(41.プログラム)
本発明に係る通信プログラム〔41〕は、上記通信機器〔1〕〜〔39〕のいずれかの通信を実現可能な通信プログラムであることを特徴とする。
上記の構成によれば、他の通信機器にも組み込むことが可能となる。
(42.記録媒体)
本発明に係る記録媒体〔42〕は、上記通信プログラム〔41〕が記録されており、コンピュータ読み取り可能な記録媒体であることを特徴とする。
上記の構成によれば、本記録媒体に記録されたプログラムをメモリ上に展開して動作させることで、本発明を実行することが可能となる。
(43.携帯電話)
本発明に係る携帯電話〔43〕は、上記通信機器〔1〕〜〔39〕のいずれかの通信を実現可能な携帯電話であることを特徴とする。
上記の構成によれば、携帯電話を用いて、前述のいずれかの通信方式を実現することにより品質の高い通信が可能となる。
(44.表示装置)
本発明に係る表示装置〔44〕は、上記通信機器〔1〕〜〔39〕のいずれかの通信を実現可能な表示装置であることを特徴とする。
上記の構成によれば、表示装置を用いて、前述のいずれかの通信方式を実現することにより品質の高い通信が可能となる。
(45.印刷装置)
本発明に係る印刷装置〔45〕は、上記通信機器〔1〕〜〔39〕のいずれかの通信を実現可能な印刷装置であることを特徴とする。
上記の構成によれば、印刷装置を用いて、前述のいずれかの通信方式を実現することにより品質の高い通信が可能となる。
(46.記録装置)
本発明に係る記録装置〔46〕は、上記通信機器〔1〕〜〔39〕のいずれかの通信を実現可能な記録装置であることを特徴とする。
上記の構成によれば、印刷装置を用いて、前述のいずれかの通信方式を実現することにより品質の高い通信が可能となる。
(47.OBEX層でレスポンス不要の通信方法)
また、本発明に係る他の通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局にオブジェクトを送信する通信方法において、OBEXコマンドを送信後、対向局からのOBEXレスポンスを受信することなく、次のOBEXコマンドを送信することを特徴としている。
(48.片方向送信時のみレスポンス不要の通信方法)
本発明に係る他の通信方法は、さらに、上記の通信方法において、特にOBEXコマンド送信後に対向局からのOBEXレスポンスを必要とする双方向通信と対向局からのOBEXレスポンスを必要としない片方向通信を切り替える手段を有し、前記片方向通信を選択している場合のみ、前記OBEXコマンド送信後、対向局からのOBEXレスポンスを受信することなく、次のOBEXコマンドを送信するようにしてもよい。
(49.OBEX層でレスポンス不要の通信装置)
また、本発明に係る他の通信装置は、さらに、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局にオブジェクトを送信することが可能なOBEX層処理部持つ通信装置において、前記OBEX層処理部では、OBEXコマンドを生成し送信後、対向局からのOBEXレスポンスを受信することなく、次のOBEXコマンドを生成し送信することを特徴としている。
(50.片方向送信時のみレスポンス不要の通信装置)
本発明に係る他の通信装置は、さらに、上記の通信装置において、特にOBEXコマンド送信後に対向局からのOBEXレスポンスを必要とする双方向通信と対向局からのOBEXレスポンスを必要としない片方向通信を切り替える通信方法切り替え部を有し、前記、通信方法切り替え部が片方向通信を選択している場合のみ、前記OBEXコマンドを生成し送信後、対向局からのOBEXレスポンスを受信することなく、次のOBEXコマンドを生成し送信するようにしてもよい。
上記の方法および構成によれば、例えばOBEXを用いた片方向通信において、クライアント機器側からの要求コマンドに対するサーバの応答コマンドをクライアント機器側が受信できない場合においても、OBEXでのオブジェクト送信を可能とすることができる。また、双方向通信時は、サーバからの応答を確認する通信を行い、片方向通信時は、サーバからの応答無しに通信を行うことが可能となり、双方向通信と片方向通信を1つのOBEXプロトコルで実現することが可能となる。
(51.FinalでないPutコマンドのみレスポンス不要の通信方法)
また、本発明に係る他の通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局にオブジェクトを送信する通信方法において、OBEXの最終でないPutコマンドを送信後のみ、対向局からのOBEXレスポンスを受信することなく、次のOBEXの最終でないPutコマンドもしくは最終のPutコマンドを送信することを特徴としている。
(52.FinalでないPutコマンドのみレスポンス不要の通信装置)
また、本発明に係る他の通信装置は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局にオブジェクトを送信することが可能なOBEX層処理部持つ通信装置において、前記OBEX層処理部では、OBEXの最終でないPutコマンドを生成送信後のみ、対向局からのOBEXレスポンスを受信することなく、次のOBEXの最終でないPutコマンドもしくは最終のPutコマンドを生成し送信することを特徴としている。
上記の方法および構成によれば、前述のPUTコマンドに対するCONTINUE応答コマンドのみを必要としないオブジェクト交換を実現することが可能となる。
(53.OBEX層でレスポンスを送信しない通信方法)
本発明に係る他の通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局からオブジェクトを受信する通信方法において、対向局からのOBEXコマンドを受信後に、常にOBEXレスポンスを送信しないことを特徴としている。
(54.片方向受信時のみ、OBEX層でレスポンスを送信しない通信方法)
また、本発明に係る他の通信方法は、さらに、上記の通信方法において、特にOBEXコマンド送信後に対向局からのOBEXレスポンスを必要とする双方向通信と対向局からのOBEXレスポンスを必要としない片方向通信を切り替える手段を有し、前記片方向通信を選択している場合のみ、前記OBEXコマンド受信後、常に対向局にOBEXレスポンスを送信しないとしてもよい。
(55.OBEX層でレスポンスを送信しない通信装置)
また、本発明に係る他の通信装置は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局からオブジェクトを受信することが可能なOBEX層処理部持つ通信装置において、前記OBEX層処理部では、対向局からのOBEXコマンドを受信後に、常にOBEXレスポンスを送信しないことを特徴としている。
(56.片方向受信時のみ、OBEX層でレスポンスを送信しない通信装置)
また、本発明に係る他の通信装置は、さらに、上記の通信装置において、特にOBEXコマンド送信後に対向局からのOBEXレスポンスを必要とする双方向通信と対向局からのOBEXレスポンスを必要としない片方向通信を切り替える通信方法切り替え部を有し、前記、通信方法切り替え部が片方向通信を選択している場合のみ、前記OBEXコマンド受信後、常に対向局にOBEXレスポンスを送信しないとしてもよい。
上記の方法および構成によれば、例えばOBEXを用いた片方向通信において、クライアント機器側からの要求コマンドに対するサーバ機器側の応答コマンドをクライアント機器側が送信する必要がない場合に、不必要な応答コマンドの生成および送信を行わないといった制御を行うことが可能となる。また、双方向通信時は、クライアント機器側へ応答コマンドを送信することにより、クライアント機器側での通信の確認を可能とし、片方向通信時は、クライアント機器への不必要な応答コマンドの生成および送信を行わないことが可能となり、双方向通信と片方向通信を1つのOBEXプロトコルで実現することが可能となる。
(57.FinalでないPutコマンドのみレスポンスしない通信方法)
また、本発明に係る他の通信方法は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局からオブジェクトを受信する通信方法において、OBEXの最終でないPutコマンド受信時には、OBEXレスポンスの送信を行わず、最終のPutコマンド受信時には、OBEXのレスポンスの送信を行うことを特徴としている。
(58.FinalでないPutコマンドのみレスポンスしない通信装置)
また、本発明に係る他の通信装置は、オブジェクト交換用プロトコルOBEX(OBject EXchange protocol)を用いて、対向局からオブジェクトを受信することが可能なOBEX層処理部持つ通信装置において、前記OBEX層処理部では、OBEXの最終でないPutコマンド受信時には、OBEXレスポンスの送信を行なわず、最終のPutコマンド受信時には、OBEXのレスポンスを生成し送信することを特徴としている。
上記の方法および構成によれば、クライアント機器側からの最終でないPUTコマンドに対するCONTINUE応答コマンドのみを生成し、送信しないといった制御を行うことが可能となり、通信帯域の効率化を図ることが可能となる。
また、本発明は以下のように構成してもよい。
本発明に係る通信システムは、通信データを複数の非制限フレームに分割して、一次局と二次局との間にてフレーム単位で通信データを通信する通信システムにおいて、該一次局では、前記非制限フレームにフレームの通し番号、および送信権を委譲するか否かを示すフラグを付与してデータ送信を行い、該二次局では、前記一次局から受信したフレームの送信権を委譲するか否かを示すフラグが送信権の委譲を意味しているとき、前記一次局に対して、それまで受信したフレーム中にエラーやフレーム抜けがあったかどうかの通信結果の通知を行うことを特徴とする。
前記非制限フレームとしては、赤外線を用いた、例えばIrDA通信方式に準拠した通信方式にて使用されている、UI(Unnumbered Information)フレームが挙げられる。UIフレームは、連続送信できる最大ターンアラウンド時間の間であれば、送信フレーム数に制限されずに、連続して送信することできるものである。
上記の構成によれば、ウィンドウサイズの制限を持たない非制限フレームを用いた通信においても、エラーやフレーム抜けが生じたフレームの再送を行うことが可能となる。それゆえ、通信効率の向上を図ることができる。
また、前記二次局は、エラーやフレーム抜けを検知した場合、一次局に通信結果を通知する際、エラーまたはフレーム抜けがあったフレームの通し番号も合わせて通知することを特徴とする。
上記の構成によれば、一次局ではすべてのフレームを再送する必要がないため、通信におけるオーバーヘッドの低減、一次局の消費電力を低減するという効果を奏する。
また、前記一次局は、前記二次局からエラーまたはフレーム抜けがあった旨の通知を受けると、前記二次局から通知されたエラーまたはフレーム抜けがあったフレーム以降のフレームを再度送信することを特徴とする。
上記の構成によれば、一次局ではすべてのフレームを再送する必要がないため、通信におけるオーバーヘッドの低減、一次局の消費電力を低減するという効果を奏する。
また、前記一次局は、エラーまたはフレーム抜けがあったフレームの通し番号以降のフレームを再度送信することを一回だけ行うことを特徴とする。
上記の構成によれば、一次局ではフレームの再送を1回だけ行うため、該送信に伴う消費電力を低減することができるという効果を奏する。
また、前記二次局では、エラーまたはフレーム抜けを検知した際、エラーまたはフレーム抜けを検知したフレーム以降のフレームの受信処理を停止することを特徴とする。
上記の構成によれば、二次局ではエラーまたはフレーム抜けを検出した以降のフレームを受信しないことにより、無駄なフレームの受信を行わなくてよく、消費電力の低減を図ることができる。
また、前記二次局では、前記一次局から再度送信されたフレームの中から必要なエラーまたはフレーム抜けがあったフレームのみを受信することを特徴とする。
上記の構成によれば、二次局では、無駄なフレームの受信を行わなくてよく、消費電力の低減を図ることができる。
また、接続確立時に、前記一次局から送信される接続要求フレームと前記二次局から送信される接続応答フレームにそれぞれ、各局の一度に送受信可能なフレーム数を意味するフィールドを付与してフレーム交換を行い、各局において受信した相手局の一度に受信可能なフレーム数を参照して最適なフレーム数を算出し、該フレーム数に応じて送信権の委譲を行うことを特徴とする。
上記の構成によれば、一次局と二次局両局間でサポートされているフレーム数毎に必ず送信権の委譲が行われるので、各局に搭載されたメモリ容量に応じたフレーム交換を行うことができる。
また、本発明に係る通信システムは、通信データを複数の非制限フレームに分割したうえで、一次局と二次局との間でフレーム単位にて通信データを通信する通信システムにおいて、前記一次局と二次局とは、階層構造の通信プロトコルを用いて通信を行い、該一次局は、前記階層構造を構成する一つの特定通信プロトコル層において、前記非制限フレームにフレームの通し番号、および、送信権を委譲するか否かを示すフラグを付与し、該二次局は、前記特定通信プロトコル層において、前記一次局から受信したフレームの送信権を委譲するか否かを示すフラグが送信権の委譲を意味しているとき、前記一次局に対して、それまで受信したフレーム中にエラーやフレーム抜けがあったかどうかの通信結果の通知を行うことを特徴とする。
上記の構成によれば、ウィンドウサイズの制限を持たない非制限フレームを用いた通信においても、再送を行うことが可能となるとともに、上記特定通信プロトコル層以外の層について既存のものから変更する必要がない。
さらに、前記二次局は、前記特定通信プロトコル層において、エラーやフレーム抜けを検知した場合、一次局に通信結果を通知する際、エラーまたはデータ抜けがあったフレームの通し番号も合わせて通知することを特徴とする。
上記の構成によれば、通信におけるオーバーヘッドの低減、一次局の消費電力を低減するとともに、上記特定通信プロトコル層以外の層について既存のものから変更する必要がない。
さらに、前記一次局は、前記特定通信プロトコル層において、前記二次局からエラーまたはフレーム抜けがあった旨の通知を受けると、前記二次局から通知されたエラーまたはフレーム抜けがあったフレーム以降のフレームを再度送信することを特徴とする。
上記の構成によれば、通信におけるオーバーヘッドの低減、一次局の消費電力を低減するとともに、上記特定通信プロトコル層以外の層について既存のものから変更する必要がない。
さらに、前記一次局は、前記特定通信プロトコル層において、前記二次局からエラーまたはフレーム抜けがあった旨の通知を受けた際、フレームの再送を一回だけ行うことを特徴とする。
上記の構成によれば、送信に伴う消費電力を低減することができるとともに、上記特定通信プロトコル層以外の層について既存のものから変更する必要がない。
さらに、前記二次局においては、前記特定通信プロトコル層において、エラーまたはフレーム抜けを検知した際、エラーまたはフレーム抜けを検知したフレーム以降のフレームの受信処理を停止することを特徴とする。
上記の構成によれば、二次局が無駄なフレームの受信を行わなくてよく、消費電力の低減を図ることができるとともに、上記特定通信プロトコル層以外の層について既存のものから変更する必要がない。
さらに、前記二次局では、前記特定通信プロトコル層において、前記一次局から再度送信されたフレームの中から必要なエラーまたはフレーム抜けがあったフレームのみを受信することを特徴とする。
上記の構成によれば、二次局が無駄なフレームの受信を行わなくてよく、消費電力の低減を図ることができるとともに、上記特定通信プロトコル層以外の層について既存のものから変更する必要がない。
さらに、前記特定通信プロトコル層において、接続確立時に、前記一次局から送信される接続要求フレームと前記二次局から送信される接続応答フレームにそれぞれ、各局の一度に送受信可能なフレーム数を意味するフィールドを付与してフレーム交換を行い、各局において受信した相手局の一度に受信可能なフレーム数を参照して最適なフレーム数を算出し、該フレーム数に応じて送信権の委譲を行うことを特徴とする。
上記の構成によれば、各局に搭載されたメモリ容量に応じたフレーム交換を行うことができるとともに、上記特定通信プロトコル層以外の層について既存のものから変更する必要がない。
さらに、前記一次局では、前記特定通信プロトコル層において、前記非制限フレームに対して、上位層が送信フレームに対する応答フレームを要求するか否かを示すフラグを付与してフレームの送信を行い、前記二次局では、前記特定通信プロトコル層において、前記一次局から受信したフレームの前記一次局の上位層が送信フレームに対する応答フレームを要求しているか否かを示すフラグが応答フレームを要求していることを意味している場合、上位層に対してその旨の通知を行い、上位層が応答フレームの準備を完了した時点で、上位層から渡された応答フレームに対して、それまで受信したフレーム中にエラーやフレーム抜けがあったかどうかの通信結果を意味する情報を付与して応答フレーム生成し、送信することを特徴とする。
上記の構成によれば、再送管理を行う上記特定通信プロトコル層の上位層に位置する通信プロトコル層での要求フレームおよび応答フレームのやり取りが可能となる。
さらに、前記一次局では、前記特定通信プロトコル層において、前記非制限フレームに対して、上位層が送信フレームに対する応答フレームを要求するか否かを示すフラグを付与してフレームの送信を行い、前記二次局では、前記特定通信プロトコル層において、前記一次局から受信したフレームの前記一次局の上位層が送信フレームに対する応答フレームを要求しているか否かを示すフラグが応答フレームを要求していることを意味している場合、上位層に対してその旨の通知を行い、先にそれまで受信したフレーム中にエラーやフレーム抜けがあったかどうかの通信結果を意味する応答フレームを送信し、上位層が応答フレームを準備が完了した時点で、上位層からの応答フレームを再度送信することを特徴とする。
上記の構成によれば、一次局の上記特定通信プロトコル層では、二次局の上記特定通信プロトコル層の上位層において応答フレームが準備されてから応答フレームが返信されてくる前の間に、上記特定通信プロトコル層レベルの応答フレーム(つまり上位層の応答フレームが包含されていない)を受信することができる。これにより、一次局の上記特定通信プロトコル層は、上位層からの応答フレームが返信される前に、二次局が正常にフレームを受信できたか否かを知ることができるので、あらかじめ次のデータ転送の準備などを行っておくことができる。
また、本発明に係る送信装置は、通信データを複数の非制限フレームに分割したうえで、フレーム単位にて通信データを受信局に送信する送信装置において、前記非制限フレームにフレームの通し番号を付与する通し番号付加手段と、前記非制限フレームに送信権を委譲するか否かを示すフラグを付与する送信権委譲フラグ付与手段とを備えることを特徴とする。
また、本発明に係る通信方法は、通信データを複数の非制限フレームに分割したうえで、フレーム単位にて通信データを受信局に送信する送信装置の通信方法であって、前記非制限フレームにフレームの通し番号を付与する通し番号付加ステップと、前記非制限フレームに送信権を委譲するか否かを示すフラグを付与する送信権委譲フラグ付与ステップとを含むことを特徴とする。
上記の構成によれば、ウィンドウサイズの制限を持たない非制限フレームを用いた通信においても、受信装置からエラーやフレーム抜けがあったか否かを示すフレームを受信することができる。これにより、エラーやフレーム抜けがあった非制限フレームの再送を行うことが可能となる。
また、本発明に係る受信装置は、上記送信装置から通信データを受信する受信装置において、前記送信装置から受信したフレームの送信権を委譲するか否かを示すフラグが送信権の委譲を意味しているとき、それまで受信したフレーム中にエラーやフレーム抜けがあったかどうかのを示すレスポンスフレームを生成するレスポンスフレーム生成手段と、レスポンスフレーム生成手段が生成したレスポンスフレームを前記送信装置に送信する送信手段とを備えることを特徴とする。
また、本発明に係る通信方法は、上記送信装置から通信データを受信する受信装置の通信方法であって、前記送信装置から受信したフレームの送信権を委譲するか否かを示すフラグが送信権の委譲を意味しているとき、それまで受信したフレーム中にエラーやフレーム抜けがあったかどうかのを示すレスポンスフレームを生成するレスポンスフレーム生成ステップと、レスポンスフレーム生成手段が生成したレスポンスフレームを前記送信装置に送信する送信ステップとを含むことを特徴とする。
上記の構成によれば、ウィンドウサイズの制限を持たない非制限フレームを受信した場合でも、エラーやフレーム抜けがあったか否かを示すフレームを送信することができる。これにより、エラーのあった非制限フレームの再送を行うことが可能となる。
また、本発明に係る通信システムが備える一次局を動作させる通信プログラムは、コンピュータを上記一次局で行われるデータ通信処理を実行するコンピュータ・プログラムである。
上記の構成によれば、コンピュータで上記一次局で行われるデータ通信処理を実行することによって、上記通信システムが備える一次局を動作させることができる。
また、本発明に係る通信システムが備える二次局を動作させる通信プログラムは、コンピュータを上記二次局で行われるデータ通信処理を実行するコンピュータ・プログラムである。
上記の構成によれば、コンピュータで上記二次局で行われるデータ通信処理を実行することによって、上記通信システムが備える二次局を動作させることができる。
また、本発明に係る記録媒体は、上記通信システムが備える一次局を動作させる通信プログラム、あるいは、上記通信システムが備える二次局を動作させる通信プログラムを記録したコンピュータ読み取り可能な記録媒体である。
上記の構成によれば、上記記録媒体から読み出された通信プログラムによって、上記一次局で行われるデータ通信処理あるいは二次局で行われるデータ通信処理をコンピュータ上に実現することができる。
本発明は上述した各実施の形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施の形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施の形態についても本発明の技術的範囲に含まれる。
発明の詳細な説明の項においてなされた具体的な実施態様または実施例は、あくまでも、本発明の技術内容を明らかにするものであって、そのような具体例にのみ限定して狭義に解釈されるべきものではなく、本発明の精神と次に記載する特許請求事項との範囲内で、いろいろと変更して実施することができるものである。