(57)【要約】【課題】パケット通信装置において、ある要求の処理にタスク間の非同期処理が必要な場合、要求ＩＤと応答ＩＤとの対応関係を、要求パケット受信の間隔と応答のための処理時間とに依存させずに管理できるパケット通信装置を提供することを目的とする。【解決手段】全応答パケットの生成に共通に用意された共通ＩＤ格納領域と、生成にタスク間の処理を必要とする応答パケットの種別に対して専用に用意された専用ＩＤ格納領域の２種類を用意する。タスク間の処理を必要としない場合、共通ＩＤ格納領域を用いてＩＤを管理し、必要とする場合、専用ＩＤ格納領域を用いてＩＤを管理する。ただし、タスク間の処理を必要とする要求を処理中に同じ物がもう１つ受信されると、タスク間処理を行わず共通ＩＤ領域を用いてエラーを返す。【選択図】図１
2010041672.tif 000002
【特許請求の範囲】
【請求項１】
全応答パケットの生成に共通に用意されている共通ＩＤ格納領域と；
生成にタスク間の処理を必要とする応答パケットの種別に対して専用に用意されている専用ＩＤ格納領域と；
タスク間の処理を必要としない場合、上記共通ＩＤ格納領域を用いてＩＤを管理し、タスク間の処理を必要とする場合、上記専用ＩＤ格納領域を用いてＩＤを管理するＩＤ管理手段と；
タスク間の処理を必要とする要求を処理中に、タスク間の処理を必要とする要求がもう１つ受信されると、タスク間処理を行わずに上記共通ＩＤ格納領域を用いて、エラーを返すエラー応答手段と；
を有することを特徴とするパケット通信装置。
【請求項２】
全応答パケットの生成に共通に用意されている共通ＩＤ格納領域と、生成にタスク間の処理を必要とする応答パケットの種別に対して専用に用意されている専用ＩＤ格納領域とを具備するパケット通信装置の制御方法であって、
タスク間の処理を必要としない場合、上記共通ＩＤ格納領域を用いてＩＤを管理し、タスク間の処理を必要とする場合、上記専用ＩＤ格納領域を用いてＩＤを管理するＩＤ管理工程と；
タスク間の処理を必要とする要求を処理中に、タスク間の処理を必要とする要求がもう１つ受信されると、タスク間処理を行わずに上記共通ＩＤ格納領域を用いて、エラーを返すエラー応答工程と；
を有することを特徴とするパケット通信装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
データをパケット形式で通信するための装置において、要求と応答との整合関係を、通信規格がＩＤによって管理することを規定する場合がある。本発明は、この装置におけるパケット受信時の応答制御方法に関する。
【背景技術】
【０００２】
複数の通信規格をサポートするインクジェットプリンタにおいて、ある通信によってデータを受信する場合、その他の通信部に、受信をさせないように予め制御する排他機能が一般に備わっている。
【０００３】
パケット形式の通信規格の中には、要求と応答とに同じＩＤを付加することによって、整合関係を管理する通信規格がある。通信規格の特性上、コネクションが確立した後に、直ぐにデータが受信側に入る場合、コネクション応答を返す前に、上記排他機能を発揮させる必要がある。
【０００４】
このときの構成として、以下の構成が考えられる。
・パケットにＩＤを付加することによって、要求と応答との対応関係を管理する通信規格を制御する送受信部。
・要求パケットの解析と応答パケットの生成とを行う通信制御タスク。
・通信制御タスクから、排他処理を委譲される排他制御タスク。
・排他制御タスクの処理結果に基づいて発生する通信制御タスクへの処理結果通知イベント。
【０００５】
上記構成では、ＩＤを管理する通信制御タスクと、排他制御タスクとが非同期に動くので、ＩＤの管理方法が問題になる。
【０００６】
従来のインクジェットプリンタの製品形態では、サポートする通信規格が少なく、排他処理にかかる時間が少ない。このために、要求と応答との間に、排他処理を行ったとしても、その間に、他の要求が受信されることは稀である。ゆえに、従来の製品では、要求と応答との対応関係を管理する場合、処理中である要求のＩＤだけ記憶しておけば十分である。
【０００７】
しかし、近年、インクジェットプリンタは、多数の通信規格をサポートするので、排他処理に時間がかかるようになり、これによって、排他処理中に、次の要求パケットを受信することが多くなっている。この場合、ＩＤの不整合が問題になる。
【０００８】
図７は、従来の構成において、ＩＤの不整合によって通信が停止する場合の例を示す図である。
【０００９】
図７に示すように、パケットＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔを受信すると、ＩＤ：１が付され、そのＩＤが記憶される。そのときに、排他要求を行って排他処理が完了する前に、次のパケットＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅを受信すると、このパケットにＩＤ：２が付され、記憶されていたＩＤ：１に上書きする。これによって、排他処理が完了し、送信側に応答する際に、本来ＩＤ：１が付されるべきところが、上書きされて記憶されたＩＤ：２が付され、ＩＤの不整合が発生する。これによって、通信が停止するという問題がある。
【００１０】
ゆえに、要求パケット受信のイベントと、応答パケット生成のイベントとが入り乱れ、発生してもＩＤの整合性が狂うことがないようなＩＤ管理方法が必要である。
【００１１】
類似する背景を持つ技術としては、応答が規定されていない通信規格でデータの連続性とパケットの受信順とが必ずしも一致しない場合に、データの連続性を効率良く管理する方法が知られている（たとえば、特許文献１参照。）。
【特許文献１】特開２００５−２２３４５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、パケット通信装置において、ある要求の処理にタスク間の非同期処理が必要な場合、要求ＩＤと応答ＩＤとの対応関係を、要求パケット受信の間隔と応答のための処理時間とに依存させずに管理できるパケット通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、全応答パケットの生成に共通に用意されている共通ＩＤ格納領域と、生成にタスク間の処理を必要とする応答パケットの種別に対して専用に用意されている専用ＩＤ格納領域と、タスク間の処理を必要としない場合、上記共通ＩＤ格納領域を用いてＩＤを管理し、タスク間の処理を必要とする場合、上記専用ＩＤ格納領域を用いてＩＤを管理するＩＤ管理手段と、タスク間の処理を必要とする要求を処理中に、タスク間の処理を必要とする要求がもう１つ受信されると、タスク間処理を行わずに上記共通ＩＤ格納領域を用いて、エラーを返すエラー応答手段とを有するパケット通信装置である。
【発明の効果】
【００１４】
本発明によれば、パケット通信装置において、ある要求の処理にタスク間の非同期処理が必要な場合、要求ＩＤと応答ＩＤとの対応関係を、要求パケット受信の間隔と応答のための処理時間とに依存させずに管理できるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
発明を実施するための最良の形態は、次の実施例である。
【実施例１】
【００１６】
実施例１において、Ｂｌｕｅｔｏｏｔｈ（登録商標）によって、プリンタへコンテンツを送信し、印刷を行う動作について説明する。
【００１７】
図１は、本発明の実施例１であるＭＦＰ１を示す斜視図である。
【００１８】
ＭＦＰ１は、パケット通信装置の例である。
【００１９】
本発明の制御方法を用いたソフトウェアは、機械語命令に翻訳されてＦｌａｓｈＲＯＭ１０２に記述されている。ＣＰＵ１０１は、ＦｌａｓｈＲＯＭ１０２から命令を読み出して制御する。ＣＰＵ１０１の制御対象となるのは、ＵＳＢ制御部１０８、ＩｒＤＡ制御部１０７、Ｂｌｕｅｔｏｏｔｈ制御部１０６、有線／無線ＬＡＮ制御部１０５、印刷制御部１０４である。
【００２０】
ＵＳＢ制御部１０８、ＩｒＤＡ制御部１０７、Ｂｌｕｅｔｏｏｔｈ制御部１０６、有線／無線ＬＡＮ制御部１０５は、それぞれＵＳＢ通信、ＩｒＤＡ通信、Ｂｌｕｅｔｏｏｔｈ通信、有線／無線ＬＡＮ通信によって受信する通信制御手段である。上記通信制御手段は、印刷対象であるコンテンツを受信するための手段である。
【００２１】
印刷制御部１０４は、上記通信制御手段によって受信されたコンテンツを印刷するための印刷手段である。
【００２２】
図２は、ＲＡＭ１０３の内部の構成を示す図である。
【００２３】
ＲＡＭ１０３の内部には、図２に示すように、共通ＩＤ格納領域２０１と専用ＩＤ格納領域２０２との２つの領域が設けられている。
【００２４】
図３は、実施例１において、ＦｌａｓｈＲＯＭ１０２に記述されるソフトウェアの概念構成を示す図である。
【００２５】
送信機器３０１は、Ｂｌｕｅｔｏｏｔｈ通信によって、プリンタ装置にコンテンツを送信する。Ｂｌｕｅｔｏｏｔｈ受信割り込みハンドラ３０２は、Ｌ２ＣＡＰパケットの受信に伴って、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３にパケット受信メッセージを発行する。Ｂｌｕｅｔｏｏｔｈ制御タスク３０３は、Ｂｌｕｅｔｏｏｔｈ制御部１０６を制御するためのタスクであり、受信したＬ２ＣＡＰパケットを解析し、それに対する応答パケットを生成する。
【００２６】
メールボックス３０４は、Ｂｌｕｅｔｏｏｔｈ受信割り込みハンドラ３０２からのパケット受信メッセージと、排他制御タスク３０５からの結果通知メッセージとを受信するための資源である。排他制御タスク３０５は、ＵＳＢ通信、ＩｒＤＡ通信、Ｂｌｕｅｔｏｏｔｈ通信、有線／無線ＬＡＮ通信の何れかがコンテンツを受信した場合に、その他の通信手段を停止するためのタスクである。これによって、複数の印刷要求を重複して受信してしまうことを防ぐことができる。
【００２７】
ＩｒＤＡ制御タスク３０６は、ＩｒＤＡ制御部１０７を制御するためのタスクである。ＵＳＢ制御タスク３０７は、ＵＳＢ制御部１０８を制御するためのタスクである。有線／無線ＬＡＮ制御タスク３０８は、有線／無線ＬＡＮ制御部１０５を制御するためのタスクである。ＩＤ格納領域（専用）３０９とＩＤ格納領域（共通）３１０とは、ＲＡＭ１０３における専用ＩＤ格納領域２０２、共通ＩＤ格納領域２０１にマッピングされている論理アドレスの変数である。
【００２８】
パソコンや携帯電話などからＢｌｕｅｔｏｏｔｈによって、ＭＦＰ１にコンテンツを送信する場合、ＣＰＵ１０１は、コンテンツを受信する前に、Ｂｌｕｅｔｏｏｔｈ制御部１０６以外の通信制御部を排他する必要がある。
【００２９】
図４〜図６は、ＣＰＵ１０１が行うＢｌｕｅｔｏｏｔｈ制御タスクを示すフローチャートである。
【００３０】
Ｂｌｕｅｔｏｏｔｈ制御部１０６が、ＢｌｕｅｔｏｏｔｈのＬ２ＣＡＰパケットを受信すると、Ｂｌｕｅｔｏｏｔｈ制御部１０６は、受信割り込みを発生させる。そして、Ｂｌｕｅｔｏｏｔｈ受信割り込みハンドラ３０２が、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３にパケット受信メッセージを送信する。
【００３１】
Ｓ１で、ＣＰＵ１０１は、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３にディスパッチされると、Ｓ２において受信したイベントメッセージが、パケット受信メッセージであるのか、排他制御タスク３０５からの結果通知メッセージであるのかを判別する。パケット受信メッセージであればＳ３に進み、ＣＰＵ１０１は、Ｌ２ＣＡＰパケットを解析し、Ｓ４で、パケットＩＤを共通ＩＤ格納領域２０１に格納する。
【００３２】
Ｓ５で、受信したパケットを解析する。ＣＰＵ１０１は、受信したパケットがＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔであり、かつ、排他制御タスク３０５からの結果待ち状態でなければ、図５のＳ９で、パケットに付加された要求ＩＤを、さらに専用ＩＤ格納領域２０２へ格納する。
【００３３】
その後に、排他制御タスク３０５による排他処理が行われる。
【００３４】
まず、ＣＰＵ１０１は、排他制御タスク３０５への排他要求メッセージを発生させる。その後に、ＣＰＵ１０１が排他制御タスク３０５にディスパッチされると、ＣＰＵ１０１は、排他要求メッセージを受け、ＵＳＢ制御タスク３０７への停止メッセージを発生させる。
【００３５】
その後に、ＣＰＵ１０１が、ＵＳＢ制御タスク３０７にディスパッチされると、ＣＰＵ１０１は、停止メッセージを受け、次に、停止解除メッセージが来るまで、ＵＳＢ通信によるコンテンツ受信を行わないようする。その後に、ＣＰＵ１０１は、ＵＳＢ制御タスク３０７によって、停止メッセージに対する返答メッセージを、排他制御タスク３０５宛に発行する。その後に、ＣＰＵ１０１が、排他制御タスク３０５にディスパッチされると、ＩｒＤＡ制御タスク３０６への停止メッセージを発生させる。
【００３６】
その後に、ＣＰＵ１０１が、ＩｒＤＡ制御タスク３０６にディスパッチされると、ＣＰＵ１０１は、停止メッセージを受け、停止解除メッセージが来るまで、ＩｒＤＡ通信によるコンテンツ受信を行わないようにする。その後に、ＣＰＵ１０１は、ＩｒＤＡ制御タスク３０６によって、停止メッセージに対する返答メッセージを、排他制御タスク３０５宛に発行する。その後に、ＣＰＵ１０１が、排他制御タスク３０５へディスパッチされると、ＣＰＵ１０１は、排他制御タスク３０５によって、有線／無線ＬＡＮ制御タスク３０８への停止メッセージを発生させる。
【００３７】
その後に、ＣＰＵ１０１が、有線／無線ＬＡＮ制御タスク３０８へディスパッチされると、ＣＰＵ１０１は、停止メッセージを受け、停止解除メッセージが来るまで、有線／無線ＬＡＮ通信によるコンテンツ受信を行わないようにする。ＣＰＵ１０１は、有線／無線ＬＡＮ制御タスク３０８によって、停止メッセージに対する応答メッセージを、排他制御タスク３０５宛に発行する。その後に、ＣＰＵ１０１が排他制御タスク３０５へディスパッチされると、ＣＰＵ１０１は、排他制御タスク３０５によって、排他が完了したことを示す応答メッセージを、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３に発行する。
【００３８】
以上によって、排他制御タスク３０５による排他処理が完了する。
【００３９】
次に、排他制御タスク３０５から排他が完了したことを示す応答メッセージを受信した場合の制御について説明する。
【００４０】
Ｓ１で、ＣＰＵ１０１が、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３へディスパッチされる。Ｓ２で、ＣＰＵ１０１は、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３に受信したイベントメッセージが、パケット受信メッセージであるのか、排他制御タスク３０５からの結果通知メッセージであるのかを判別する。メッセージが、結果通知メッセージであれば、図６のＳ２２で、コンテンツ送信を送信側へ許可するためのＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを生成する。
【００４１】
その際に、ＣＰＵ１０１は、図６のＳ２１で、ＲＡＭ１０３における専用ＩＤ格納領域２０２に格納されている数値情報をＩＤとして取得する。Ｓ２２で、このＩＤがＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットに付加されて生成される。
【００４２】
その後に、送信機器３０１への応答が行われる。まず、ＣＰＵ１０１は、生成したＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを、Ｂｌｕｅｔｏｏｔｈ制御部１０６に渡す。Ｂｌｕｅｔｏｏｔｈ制御部１０６は、ＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを、Ｂｌｕｅｔｏｏｔｈ通信によって、送信機器３０１へ送信する。
【００４３】
その後に、送信機器３０１は、上記要求パケットと応答パケットとのやり取りによって確立した接続に基づいて、コンテンツを送信する。ＣＰＵ１０１は、印刷制御部１０４を介して、受信されたコンテンツを印刷させる。
【００４４】
次に、送信機器３０１がＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔパケットをプリンタ装置に送信した後に、ＣＰＵ１０１が行う制御方法について説明する。つまり図７に示すように、プリンタ装置からのＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを待たずに、Ｂｌｕｅｔｏｏｔｈ通信におけるＳＤＰ接続を切断したい場合にＣＰＵ１０１が行う制御方法について説明する。
【００４５】
Ｂｌｕｅｔｏｏｔｈ制御部１０６が、ＢｌｕｅｔｏｏｔｈのＬ２ＣＡＰパケットを受信すると、Ｂｌｕｅｔｏｏｔｈ制御部１０６は、受信割り込みを発生させる。そして、Ｂｌｕｅｔｏｏｔｈ受信割り込みハンドラ３０２が、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３にパケット受信メッセージを送信する。ＣＰＵ１０１は、図４のＳ１で、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３にディスパッチされると、Ｓ２で、受信したイベントメッセージが、パケット受信メッセージであるのか、排他制御タスク３０５からの結果通知メッセージであるのかを判別する。
【００４６】
パケット受信メッセージであれば、ＣＰＵ１０１はＳ３で、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３によって、Ｌ２ＣＡＰパケットを解析する。ＣＰＵ１０１は、受信したパケットがＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔであれば、Ｓ４で、パケットに付加された要求ＩＤを、共通ＩＤ格納領域２０１へ格納する。その後に、ＣＰＵ１０１は、タスクスイッチングを行わずに、図６のＳ１２で、ＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを生成する。
【００４７】
その際に、ＣＰＵ１０１はＳ１１で、共通ＩＤ格納領域２０１に格納されている数値を、ＩＤとして取得する。Ｓ１２で、このＩＤがＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットに付加されて生成される。
【００４８】
その後に、送信機器３０１への応答が行われる。まず、ＣＰＵ１０１は、生成したＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを、Ｂｌｕｅｔｏｏｔｈ制御部１０６に渡す。Ｂｌｕｅｔｏｏｔｈ制御部１０６は、ＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを、Ｂｌｕｅｔｏｏｔｈ通信によって、送信機器３０１へ送信する。
【００４９】
その後に、送信機器３０１は、上記要求パケットと応答パケットとのやり取りによって切断を完了する。
【００５０】
次に、送信機器３０１がプリンタ装置に対して、ＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔパケットを送信した後にＣＰＵ１０１が行う制御方法について説明する。つまり、プリンタ装置からのＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅパケットを待たずに、再度ＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔパケットを送信した場合にＣＰＵ１０１が行う制御方法について説明する。
【００５１】
Ｂｌｕｅｔｏｏｔｈ制御部１０６が、ＢｌｕｅｔｏｏｔｈのＬ２ＣＡＰパケットを受信すると、Ｂｌｕｅｔｏｏｔｈ制御部１０６は、受信割り込みを発生させる。そして、Ｂｌｕｅｔｏｏｔｈ受信割り込みハンドラ３０２が、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３にパケット受信メッセージを送信する。
【００５２】
ＣＰＵ１０１は、図４のＳ１で、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３にディスパッチされると、Ｓ２で、受信したイベントメッセージがパケット受信メッセージであるのか、排他制御タスク３０５からの結果通知メッセージであるのかを判別する。パケット受信メッセージであればＳ３に進み、ＣＰＵ１０１は、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３によって、Ｌ２ＣＡＰパケットを解析する。そして、Ｓ４で、パケットＩＤを、共通ＩＤ格納領域２０１に格納する。
【００５３】
Ｓ５で、受信したパケットを解析する。ＣＰＵ１０１が受信したパケットがＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔであり、かつ、排他制御タスク３０５からの結果待ち状態であれば、図５のＳ７、Ｓ８に進む。Ｓ８で、ＣＰＵ１０１は、タスクスイッチングを行わずに、エラー応答パケットを生成する。その際に、ＣＰＵ１０１は、図５のＳ７で、共通ＩＤ格納領域２０１に格納されている数値をＩＤとして取得し、Ｓ８で、このＩＤがエラー応答パケットに付加されて生成される。
【００５４】
その後に、送信機器３０１への応答が行われる。まず、ＣＰＵ１０１は、生成したエラー応答パケットを、Ｂｌｕｅｔｏｏｔｈ制御部１０６に渡す。Ｂｌｕｅｔｏｏｔｈ制御部１０６は、Ｂｌｕｅｔｏｏｔｈ通信によって、エラー応答パケットを送信機器３０１へ送信する。その後に、送信機器３０１は、エラー応答処理を行う。
【００５５】
以上のフローチャートでの説明のように、本発明では、受信したパケットの種類や、排他タスクからの結果待ちの状態であるか否かに応じて、パケットに付するＩＤを記憶する領域を変更している。これを、図８を用いて模式的に説明する。
【００５６】
図８は、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３とＲＡＭ１０３との関係を示す図である。
【００５７】
図８に示すように、まず、ＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔを受信すると、ＲＦＣＯＭＭ＿ＣｏｎＲｅｑ処理が行われ、このパケットにＩＤが付される。
【００５８】
なお、ここでのＲＦＣＯＭＭ＿ＣｏｎＲｅｑ処理では排他処理が必要であり、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３は、排他制御タスク３０５に排他処理を要求する。その後に、排他制御タスク３０５から排他結果を示す応答メッセージが発行され、送信側への応答を行う。
【００５９】
しかし、上記のように、Ｂｌｕｅｔｏｏｔｈ制御タスク３０３におけるメールボックス３０４は、Ｂｌｕｅｔｏｏｔｈ受信割り込みハンドラ３０２からのパケット受信メッセージと排他制御タスク３０５からの応答メッセージとの両方の受信を行っている。そして、排他制御タスク３０５からの応答メッセージを受信するまで、ＣＰＵ１０１はメールボックスに通知が来るのを待っている状態である。したがって、新たにＢｌｕｅｔｏｏｔｈ受信割り込みハンドラ３０２からのパケット受信メッセージを受信した場合、このメッセージによって通知されたパケット受信に対する処理が先に行われる。
【００６０】
これによって、ＲＦＣＯＭＭ＿ＣｏｎＲｅｑで付されたＩＤが上書きされてしまう可能性がある。これを防ぐために、図８に示すように、このＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔに付されるＩＤを、ＲＦＣＯＭＭ＿ＣｏｎＲｅｓ用の専用の領域に格納し、ＩＤを確保する。
【００６１】
一方、ＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔを受信した場合、ＳＤＰ＿ＤｉｓｃｏｎＲｅｑ処理では、タスク間の処理を必要としない。よって、上記ＲＦＣＯＭＭ＿ＣｏｎＲｅｑ処理のように、処理が完了して送信側に応答するまでは、メールボックス３０４へのメッセージ待ちをせずに、メールボックスに入っている通知メッセージの処理を行わない。よって、図８に示すように、このＳＤＰ＿ＤｉｓｃｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔに付されるＩＤは、共通の領域に格納してよい。
【００６２】
また、上記ＲＦＣＯＭＭ＿ＣｏｎＲｅｑ処理が終了する前、つまり、ＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｓｐｏｎｓｅを送信する前に、ＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔを再び受信した場合について述べる。
【００６３】
このときに、既にＲＦＣＯＭＭ＿ＣｏｎＲｅｑ処理が行われているので、エラー応答を行う。つまり、タスク間の処理が行われないので、送信側への応答をするまでは、メールボックス３０４へのメッセージ待ちを行わず、メールボックスに入っている通知メッセージの処理が行われない。よって、このＲＦＣＯＭＭ＿ＣｏｎｎｅｃｔｉｏｎＲｅｑｕｅｓｔに付されるＩＤは、共通の領域に格納してよい。
【００６４】
上記のように、本発明は、受信した要求パケットがタスク間の処理を必要とするか否かに応じて、要求パケット及び応答パケットに付するＩＤを格納する領域を変更している。具体的には、タスク間の処理を必要としない場合には、共通の領域に格納するが、タスク間の処理を必要とする場合には、専用の領域に格納する。これによって、処理が完了する前に、次のパケットを受信したとしても、付されたＩＤは確保される。したがって、パケット受信間隔、及び排他制御タスク３０５の排他処理にかかる時間の長さにかかわらず、ＩＤの整合性を取ることができる。
【００６５】
なお、ＩＤ格納領域（共通）３１０は、全応答パケットの生成に共通に用意されている共通ＩＤ格納領域の例である。ＩＤ格納領域（専用）３０９は、生成にタスク間の処理を必要とする応答パケットの種別に対して専用に用意されている専用ＩＤ格納領域の例である。
【００６６】
ＦｌａｓｈＲＯＭ１０２は、タスク間の処理を必要としない場合、上記共通ＩＤ格納領域を用いてＩＤを管理し、タスク間の処理を必要とする場合、上記専用ＩＤ格納領域を用いてＩＤを管理するＩＤ管理手段の例である。
【００６７】
ＦｌａｓｈＲＯＭ１０２は、タスク間の処理を必要とする要求を処理中に、タスク間の処理を必要とする要求がもう１つ受信されると、タスク間処理を行わずに上記共通ＩＤ格納領域を用いて、エラーを返すエラー応答手段の例である。
【００６８】
また、上記実施例において、手段を工程に置き換えれば、上記実施例を、パケット通信装置の制御方法として把握することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施例１であるＭＦＰ１を示す斜視図である。
【図２】ＲＡＭ１０３内部の構成を示す図である。
【図３】実施例１において、ＦｌａｓｈＲＯＭ１０２に記述されるソフトウェアの概念構成を示す図である。
【図４】ＣＰＵ１０１が行うＢｌｕｅｔｏｏｔｈ制御タスクを示すフローチャートである。
【図５】ＣＰＵ１０１が行うＢｌｕｅｔｏｏｔｈ制御タスクを示すフローチャートである。
【図６】ＣＰＵ１０１が行うＢｌｕｅｔｏｏｔｈ制御タスクを示すフローチャートである。
【図７】従来の構成においてＩＤの不整合によって通信が停止する場合の例を示す図である。
【図８】Ｂｌｕｅｔｏｏｔｈ制御タスク３０３とＲＡＭ１０３との関係を示す図である。
【符号の説明】
【００７０】
１…ＭＦＰ、
１０１…ＣＰＵ、
１０２…ＦｌａｓｈＲＯＭ、
１０３…ＲＡＭ、
１０４…印刷制御部、
１０５…有線／無線ＬＡＮ制御部、
１０６…Ｂｌｕｅｔｏｏｔｈ制御部、
１０７…ＩｒＤＡ制御部、
１０８…ＵＳＢ制御部、
２０１…共通ＩＤ格納領域、
２０２…専用ＩＤ格納領域、
３０１…送信機器、
３０２…Ｂｌｕｅｔｏｏｔｈ受信割り込みハンドラ、
３０３…Ｂｌｕｅｔｏｏｔｈ制御タスク、
３０４…メールボックス、
３０５…排他制御タスク、
３０６…ＩｒＤＡ制御タスク、
３０７…ＵＳＢ制御タスク、
３０８…有線／無線ＬＡＮ制御タスク、
３０９…ＩＤ格納領域（専用）、
３１０…ＩＤ格納領域（共通）。
【図１】
2010041672.tif 000003
【図２】
2010041672.tif 000004
【図３】
2010041672.tif 000005
【図４】
2010041672.tif 000006
【図５】
2010041672.tif 000007
【図６】
2010041672.tif 000008
【図７】
2010041672.tif 000009
【図８】
2010041672.tif 000010