(57)【要約】【課題】接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する印刷装置が、接続要求を受けて通信スレイブになっても、スループットが低下しないようにする。【解決手段】印刷装置１００は、第１の外部装置（例えばＰＤＡ１０３）に接続されている場合に、第２の外部装置（例えばデジタルカメラ１０５）から出力された接続要求（問い合わせ）を検出したときは、まず、自装置の役割を通信スレイブに設定し、その後、所定のタイミングで（例えば、物理的な接続が確立したときに）、自動又は手動で、自装置の役割を通信スレイブから通信マスタに変更する。【選択図】        図１
2004258780.tif 000002
【特許請求の範囲】
【請求項１】
接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する印刷装置において、
データソース機器から接続要求を受けて前記データソース機器と接続し、前記データソース機器からデータを受信する接続手段と、
前記接続手段が前記データソース機器から接続要求を受けたとき、通信スレイブと通信マスタとの役割のうちのいずれか一方を自装置の役割に設定する役割設定手段と
を備え、
前記役割設定手段は、前記接続手段が第１のデータソース機器に接続されている場合に、前記接続手段が第２のデータソース機器から前記接続要求を受けたときは、まず、自装置の役割を通信スレイブに設定し、その後、自装置の役割を通信スレイブから通信マスタに変更して、それにより、前記接続手段をして前記第１及び第２のデータソース機器の両方に接続できるようにする、
印刷装置。
【請求項２】
前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と、
前記受信したデータを前記複数のデータ処理部のうちの１つに選択的に転送する転送制御手段と、
前記受信したデータを一時的に格納するためのバッファと
を備え、
前記転送制御手段は、前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記接続手段が前記第１のデータソース機器から受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記接続手段が前記第２のデータソース機器からデータを受信したときは、そのデータを前記バッファに一時的に格納し、そのデータを前記第２のデータ処理部に転送可能になったときに、前記バッファからそのデータを読み出して前記第２のデータ処理部に転送する、
請求項１記載の印刷装置。
【請求項３】
前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と、
前記データソース機器からコマンド又はデータを受け、それに応答して前記データソース機器に応答信号を返送することで、前記データソース機器からデータを受信し、その受信したデータを、前記複数のデータ処理部のうちの１つに選択的に転送する転送制御手段と
を備え、
前記転送制御手段は、前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記接続手段が前記第１のデータソース機器から受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記第２のデータソース機器からコマンド又はデータを受けたときは、前記第２のデータソース機器に前記応答信号を返送することを待ち、前記第２のデータソース機器から受信したデータを前記第２のデータ処理部に転送可能になったときに、前記応答信号を前記第２のデータソース機器に返送する、
請求項１記載の印刷装置。
【請求項４】
前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と、
前記受信したデータを一時的に格納するためのバッファと、
前記印刷装置が受信可能なデータのデータサイズを表すクレジット値の通知要求を前記データソース機器から受けたとき、その通知要求に対して前記クレジット値を前記データソース機器に通知することで、前記データソース機器から前記クレジット値以下のデータサイズのデータを受信し、その受信したデータを、前記複数のデータ処理部のうちの１つに選択的に転送する転送制御手段と
を備え、
前記転送制御手段は、前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記接続手段が前記第１のデータソース機器から受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記第２のデータソース機器から前記クレジット値の通知要求を受けたときは、その通知要求に対して前記第２のデータソース機器に前記クレジット値を通知することにより、前記第２のデータソース機器からデータを受信し、そのデータを前記バッファに一時的に格納し、そのデータを前記第２のデータ処理部に転送可能になったときに、前記バッファからそのデータを読み出して前記第２のデータ処理部に転送する、
請求項１記載の印刷装置。
【請求項５】
前記転送制御手段は、前記第２のデータソース機器から前記クレジット値の通知要求を受けたとき、前記クレジット値以上のサイズを持った空き領域を前記バッファ管理手段が前記バッファ上に確保できない場合には、ゼロを示す前記クレジット値を前記第２のデータソース機器に返送する、
請求項４記載の印刷装置。
【請求項６】
前記接続手段が、ブルートゥースの規格に従って前記データソース機器に接続するようになっており、
前記転送制御手段は、ＯＢＥＸの上位に備えられるプロファイルである、
請求項２又は３記載の印刷装置。
【請求項７】
前記プロファイルは、ＢＰＰ又はＢＩＰである、
請求項６記載の印刷装置。
【請求項８】
前記接続手段が、ブルートゥースの規格に従って前記データソース機器に接続するようになっており、
前記転送制御手段は、ＨＣＲＰである、
請求項４記載の印刷装置。
【請求項９】
接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信して印刷する方法において、
第１のデータソース機器から接続要求を受けて前記第１のデータソース機器と接続するステップと、
第１のデータソース機器に接続されている場合に、前記接続手段が第２のデータソース機器から前記接続要求を受けたとき、まず、自装置の役割を通信スレイブに設定し、その後、自装置の役割を通信スレイブから通信マスタに変更し、それにより、前記接続手段をして前記第１及び第２のデータソース機器の両方に接続できるようにするステップと、
前記第１及び第２のデータソース機器からデータを受信して印刷するステップと、
を有する印刷方法。
【請求項１０】
接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する装置であって、
データソース機器から接続要求を受けて前記データソース機器と接続し、前記データソース機器からデータを受信する接続手段と、
前記接続手段が前記データソース機器から接続要求を受けたとき、通信スレイブと通信マスタとの役割のうちのいずれか一方を自装置の役割に設定する役割設定手段と、
前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と、
前記受信したデータを一時的に格納するためのバッファと
を備え、
前記役割設定手段は、前記接続手段が第１のデータソース機器に接続されている場合に、前記接続手段が第２のデータソース機器から前記接続要求を受けたときは、まず、自装置の役割を通信スレイブに設定し、その後、自装置の役割を通信スレイブから通信マスタに変更して、それにより、前記接続手段をして前記第１及び第２のデータソース機器の両方に接続できるようにする、
前記装置に実装可能なコンピュータプログラムであって、
前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記接続手段が前記第１のデータソース機器から受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送するステップと、
前記接続手段が前記第１のデータソース機器から受信したデータを前記第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記接続手段が前記第２のデータソース機器からデータを受信したときは、そのデータを前記バッファに一時的に格納するステップと、
前記第２のデータソース機器から受信したデータを前記第２のデータ処理部に転送可能になったときに、前記バッファからそのデータを読み出して前記第２のデータ処理部に転送する、
をコンピュータに実行させるためのコンピュータプログラム。
【請求項１１】
接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する装置であって、
データソース機器から接続要求を受けて前記データソース機器と接続し、前記データソース機器からデータを受信する接続手段と、
前記接続手段が前記データソース機器から接続要求を受けたとき、通信スレイブと通信マスタとの役割のうちのいずれか一方を自装置の役割に設定する役割設定手段と、
前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と
を備え、
前記役割設定手段は、前記接続手段が第１のデータソース機器に接続されている場合に、前記接続手段が第２のデータソース機器から前記接続要求を受けたときは、まず、自装置の役割を通信スレイブに設定し、その後、自装置の役割を通信スレイブから通信マスタに変更して、それにより、前記接続手段をして前記第１及び第２のデータソース機器の両方に接続できるようにする、
前記装置に実装可能なコンピュータプログラムであって、
前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記第１のデータソース機器からコマンド又はデータを受けたとき、それに応答して前記第１のデータソース機器に応答信号を返送するステップと、
前記応答信号に応答して前記データソース機器からデータを受信し、その受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送するステップと、
前記第１のデータソース機器から受信したデータを前記第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記第２のデータソース機器からコマンド又はデータを受けたときは、それに応答して前記第２のデータソース機器に応答信号を返送することを待つステップと、
前記第２のデータソース機器から受信したデータを前記第２のデータ処理部に転送可能になったときに、前記返送を待っていた応答信号を前記第２のデータソース機器に返送するステップと
をコンピュータに実行させるためのコンピュータプログラム。
【請求項１２】
接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する装置であって、
データソース機器から接続要求を受けて前記データソース機器と接続し、前記データソース機器からデータを受信する接続手段と、
前記接続手段が前記データソース機器から接続要求を受けたとき、通信スレイブと通信マスタとの役割のうちのいずれか一方を自装置の役割に設定する役割設定手段と、
前記受信したデータを一時的に格納するためのバッファと、
前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と
を備え、
前記役割設定手段は、前記接続手段が第１のデータソース機器に接続されている場合に、前記接続手段が第２のデータソース機器から前記接続要求を受けたときは、まず、自装置の役割を通信スレイブに設定し、その後、自装置の役割を通信スレイブから通信マスタに変更して、それにより、前記接続手段をして前記第１及び第２のデータソース機器の両方に接続できるようにする、
前記装置に実装可能なコンピュータプログラムであって、
前記印刷装置が受信可能なデータのデータサイズを表すクレジット値の通知要求を前記データソース機器から受けたとき、その通知要求に対して前記クレジット値を前記第１のデータソース機器に通知するステップと、
前記第１のデータソース機器から前記クレジット値以下のサイズのデータを受信し、その受信したデータを、前記複数のデータ処理部のうちの前記第１のデータ処理部に転送するステップと、
前記接続手段が前記第１のデータソース機器から受信したデータを前記第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記第２のデータソース機器から前記クレジット値の通知要求を受けたときは、その通知要求に対して前記第２のデータソース機器に前記クレジット値を通知することにより、前記第２のデータソース機器からデータを受信し、その受信したデータを前記バッファに一時的に格納するステップと、
前記第２のデータソース機器から受信したデータを前記第２のデータ処理部に転送可能になったときに、前記バッファからそのデータを読み出して前記第２のデータ処理部に転送するステップと
をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する印刷装置に関する。
【０００２】
【従来の技術】
この種の印刷装置には、例えば、ブルートゥース（商標）の規格に従う通信インターフェースを通じて、外部装置から印刷データを受信し印刷を実行するものがある（例えば特許文献１）。
【０００３】
【特許文献１】
特開２００２−３６７２８０号。
【０００４】
【発明が解決しようとする課題】
上述した従来の技術では、外部装置から印刷要求を受けて印刷を実行するため、外部装置が通信マスタとなり、印刷装置が通信スレイブとなる。ブルートゥースの規格によれば、通信スレイブは一つの通信マスタとしか接続することができない。そのため、印刷データの出力が可能な装置が複数台あったとしても、印刷装置は、或る１台の外部装置と接続されているときは、他の外部装置に接続してその装置から印刷データを受信することはできない。それ故、スループットが低下してしまう。
【０００５】
この種の問題点は、ブルートゥースに従う通信インターフェースに限らず、接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような他の通信インターフェースを通じてデータソース機器から印刷データを受信するようになっている場合にも生じ得る。
【０００６】
従って、本発明の目的は、接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する印刷装置が、接続要求を受けて通信スレイブになっても、スループットが低下しないようにすることにある。
【０００７】
【課題を解決するための手段】
本発明に従う印刷装置は、接続された２つの通信機器のうちの一方が通信マスタ、他方が通信スレイブとなり、通信マスタは複数の通信スレイブと接続できるが通信スレイブは一つの通信マスタとしか接続することができないような通信インターフェースを通じてデータソース機器からデータを受信する印刷装置であって、データソース機器から接続要求を受けて前記データソース機器と接続し、前記データソース機器からデータを受信する接続手段と、前記接続手段が前記データソース機器から接続要求を受けたとき、通信スレイブと通信マスタとの役割のうちのいずれか一方を自装置の役割に設定する役割設定手段とを備える。役割設定手段は、前記接続手段が第１のデータソース機器に接続されている場合に、前記接続手段が第２のデータソース機器から前記接続要求を受けたときは、まず、自装置の役割を通信スレイブに設定し、その後、自装置の役割を通信スレイブから通信マスタに変更して、それにより、前記接続手段をして前記第１及び第２のデータソース機器の両方に接続できるようにする。
【０００８】
好適な実施形態では、印刷装置は、前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と、前記受信したデータを前記複数のデータ処理部のうちの１つに選択的に転送する転送制御手段と、前記受信したデータを一時的に格納するためのバッファとを備える。この場合、前記転送制御手段は、前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記接続手段が前記第１のデータソース機器から受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記接続手段が前記第２のデータソース機器からデータを受信したときは、そのデータを前記バッファに一時的に格納し、そのデータを前記第２のデータ処理部に転送可能になったときに、前記バッファからそのデータを読み出して前記第２のデータ処理部に転送する。
【０００９】
例えば、前記接続手段が、ブルートゥースの規格に従って前記データソース機器に接続するようになっているとき、前記転送制御手段は、ＯＢＥＸの上位に備えられるプロファイル、具体例としては、ＢＰＰ又はＢＩＰである。
【００１０】
また、「前記第２のデータソース機器から受信したデータを前記第２のデータ処理部に転送可能になったとき」とは、例えば、前記複数のデータ処理部にそれぞれ対応した、前記複数のデータ処理部への複数のデータ転送路のうちの第２のデータ転送路が確立されたときである。より具体的には、例えば、前記複数のデータ転送路のうちのいずれか１つを選択的に確立する転送路切替え手段が更に備えられ、転送制御手段は、所望のデータ転送路を確立することの転送路確立命令を前記転送路切替え手段に送信し、前記転送路切替え手段から、その所望のデータ転送路を確立できない旨の通知（以下、「確立エラー」と言う）を受けたときは、それを確立できた旨の通知（以下、「確立成功」と言う）を受けるまで、随時に又は定期的に繰り返し前記転送路確立命令を送信する。この場合は、「前記第２のデータソース機器から受信したデータを前記第２のデータ処理部に転送可能になったとき」とは、前記転送制御手段が前記転送路切替え手段から確立成功を受けたときである。
【００１１】
別な好適な実施形態では、印刷装置は、前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と、前記データソース機器からコマンド又はデータ（例えばデータ送信要求）を受け、それに応答して前記データソース機器に応答信号を返送することで、前記データソース機器からデータを受信し、その受信したデータを、前記複数のデータ処理部のうちの１つに選択的に転送する転送制御手段とを備える。転送制御手段は、前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記接続手段が前記第１のデータソース機器から受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記第２のデータソース機器からコマンド又はデータを受けたときは、そのコマンド又はデータに対して前記第２のデータソース機器に前記応答信号を返送することを待ち、前記第２のデータソース機器から受信したデータを前記第２のデータ処理部に転送可能になったときに、前記応答信号を前記第２のデータソース機器に返送する。
【００１２】
また別の好適な実施形態では、印刷装置は、前記接続手段が前記データソース機器から受信したデータを処理するための複数のデータ処理部と、前記受信したデータを一時的に格納するためのバッファと、前記印刷装置が受信可能なデータのデータサイズを表すクレジット値の通知要求を前記データソース機器から前記接続手段が受けたとき、その通知要求に対して前記クレジット値を前記データソース機器に通知することで、前記データソース機器から前記クレジット値以下のデータサイズのデータを受信し、その受信したデータを、前記複数のデータ処理部のうちの１つに選択的に転送する転送制御手段とを備える。前記転送制御手段は、前記接続手段が前記第１のデータソース機器に接続されていて、且つ、前記第１のデータソース機器から受信したデータを、前記複数のデータ処理部のうちの第１のデータ処理部に転送している場合に、前記接続手段が前記第２のデータソース機器とも接続されていて、且つ、前記第２のデータソース機器から前記クレジット値の通知要求を受けたときは、その通知要求に対して前記第２のデータソース機器に前記クレジット値を通知することにより、前記第２のデータソース機器からデータを受信し、そのデータを前記バッファに一時的に格納し、そのデータを前記第２のデータ処理部に転送可能になったときに、前記バッファからそのデータを読み出して前記第２のデータ処理部に転送する。更に好適な実施形態では、前記転送制御手段は、前記第２のデータソース機器から前記クレジット値の通知要求を受けたとき、前記クレジット値以上のサイズを持った空き領域を前記バッファ管理手段が前記バッファ上に確保できない場合には、ゼロを示す前記クレジット値を前記第２のデータソース機器に返送する。
【００１３】
前記接続手段が、ブルートゥースの規格に従って前記データソース機器に接続するようになっている場合、前記転送制御手段は例えばＨＣＲＰである。
【００１４】
本発明の印刷装置を構成する各手段はコンピュータにより実施することができるが、そのためのコンピュータプログラムは、ディスク型ストレージ、半導体メモリ及び通信ネットワークなどの各種媒体を通じてコンピュータにインストール又はロードすることができる。
【００１５】
【発明の実施の形態】
図１は、本発明の一実施形態に係る印刷装置を示す。
【００１６】
この印刷装置１００は、ブルートゥースの規格に従う通信（以下、「ブルートゥース通信」と言う）を行うことが可能な外部装置とブルートゥース通信を行うことができ、外部装置の周辺機器としても動作することもできるし、いわゆるスタンドアロン型のマシンとしても動作することができる。この印刷装置１００は、複数種類の外部装置、例えば、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）１０３、デジタルカメラ１０５、及びパーソナルコンピュータ（以下、「ＰＣ」と略記）に接続して印刷データを受信することができる。より具体的に言えば、この印刷装置１００は、第１の外部装置（例えばＰＤＡ１０３）に接続されている場合に、第２の外部装置（例えばデジタルカメラ１０５）から出力された接続要求（問い合わせ）を検出したときは、まず、自装置の役割を通信スレイブに設定し、その後、所定のタイミングで（例えば、物理的な接続が確立したときに）、自動又は手動で、自装置の役割を通信スレイブから通信マスタに変更する。それにより、印刷装置１００は、第１及び第２の外部装置の両方に接続できる。
【００１７】
印刷装置１００は、ブルートゥースドライバ１と、ＯＢＥＸ（ＯＢｊｅｃｔ  ＥＸｃｈａｎｇｅ
ｐｒｏｔｏｃｏｌ）２と、ＢＰＰ（Ｂａｓｉｃ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｆｉｌｅ）５と、ＢＩＰ（Ｂａｓｉｃ  Ｉｍａｇｉｎｇ  Ｐｒｏｆｉｌｅ）７と、ＨＣＲＰ（Ｈａｒｄｃｏｐｙ
Ｃａｂｌｅ  Ｒｅｐｌａｃｅｍｅｎｔ  Ｐｒｏｆｉｌｅ）９と、Ｘｈｔｍｌデータレンダリング処理部１１と、ＪＰＥＧデータレンダリング処理部１３と、パラレルデータ処理部１５と、バッファ管理部１９と、ストリームパイプインターフェース部３と、印字処理部１７とを備えている。
【００１８】
ブルートゥースドライバ１は、外部装置（例えばＰＤＡ１０３）が出力した接続要求を検出し、その接続要求に応答して外部装置に所定の応答信号を返信し、その後、その外部装置と何度か信号をやり取りして、その外部装置との接続を確立する。そして、ブルートゥースドライバ１は、外部装置からの信号に基づいて、その外部装置と、上位の複数のプロファイルのうちの所定のプロファイルとの間で論理チャネルを定義する。それにより、ブルートゥースドライバ１は、その外部装置からデータを受信した場合は、それを、定義した論理チャネルで上記所定のプロファイルに渡すことができる。ブルートゥースドライバ１は、例えば、ＰＤＡ１０３又は携帯電話機（図示せず）から接続要求を受けて接続するときには、ＯＢＥＸ２を介してＰＤＡ１０３又は携帯電話機とＢＰＰ５とが通信し合うことができるようにし、デジタルカメラ１０５（又は、例えばデジタルカメラを備えた携帯電話機）から接続要求を受けて接続するときには、ＯＢＥＸ２を介してデジタルカメラ１０５とＢＩＰ７とが通信し合うことができるようにし、パーソナルコンピュータ１０７から接続要求を受けて接続するときには、パーソナルコンピュータ１０７とＨＣＲＰ９とが通信し合うことができるようにする。
【００１９】
このブルートゥースドライバ１の構成を簡単に述べると以下の通りである。
【００２０】
すなわち、ブルートゥースドライバ１は、下位から上位の順で言うと、ＲＦ部、ベースバンド部、リンクマネージャ、Ｌ２ＣＡＰ（ＬｏｇｉｃａｌＬｉｎｋ  Ｃｏｎｔｒｏｌ  ａｎｄ  Ａｄａｐｔａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）、及びＲＦＣＯＭＭ（ＲＦＣＯＭＭｕｎｉｃａｔｉｏｎ）を有する。ＲＦ部は、ＲＦ信号の増幅や選択等を行う。ベースバンド部は、各種パケットの送受信等を実行する。リンクマネージャは、接続状態の確立及び開放、通信路の状態に応じたパケットの種類の切替等を行う。Ｌ２ＣＡＰは、Ｂｌｕｅｔｏｏｔｈ方式の無線リンク上の複数のデータの伝送路（論理チャネル）を確立したり、論理チャネルを複数定義することで、単一の物理的インターフェース上において、複数の上位プロトコルのデータを送受信させたり等する。ＲＦＣＯＭＭは、Ｌ２ＣＡＰ上にシリアルポートをエミュレートするためのプロトコルである。
【００２１】
ＯＢＥＸ２は、ＲＦＣＯＭＭの上位にあるプロトコルである。ＯＢＥＸ２を介して行われるデータ通信では、通信マスタが、通信スレイブから受信した送信要求に応答して所定の応答信号を返信しない限り、次にその通信スレイブからはデータが送信されないようになっている。
【００２２】
ＢＰＰ５は、ＯＢＥＸ２の上位にあるプロファイルである。ＢＰＰ５は、ＰＤＡ１０３（又は携帯電話機）からブルートゥースドライバ１を介してデータを受信し、そのときに、ＢＰＰ５とＸｈｔｍｌデータレンダリング処理部１１とを結ぶ第１のデータ転送路１２が形成されていれば（別の言い方をすれば、第１のデータ転送路１２がオープンになっていれば）、その受信したデータを、第１のデータ転送路１２を介してＸｈｔｍｌデータレンダリング処理部１１に転送する。一方、ＢＰＰ５は、データを受信したとき、第１のデータ転送路１２が形成されていなければ（別の言い方をすれば、第１のデータ転送路１２がクローズになっていれば）、受信したデータを、バッファ管理部１９をして、所定のバッファに一時的に格納せしめる。その後、ＢＰＰ５は、第１のデータ転送路１２が形成されたときに（別の言い方をすれば、第１のデータ転送路１２がオープンになったときに）、バッファ管理部１９を介してバッファに格納されたデータを取得し、それを、第１のデータ転送路１２を介してＸｈｔｍｌデータレンダリング処理部１１に転送する。なお、ＢＰＰ５が受信し転送するデータの形式は、Ｘｈｔｍｌに限らず、例えば、Ｂａｓｉｃ  Ｔｅｘｔ、ｖＣａｒｄ、ｖＣａｌｅｎｄｅｒ、ＪＰＥＧ、ＰＤＦ等であっても良い。
【００２３】
ＢＩＰ７は、ＯＢＥＸ２の上位にあるプロファイルである。ＢＩＰ７は、デジタルカメラ１０５からブルートゥースドライバ１を介してデータを受信し、そのときに、ＢＩＰ７とＪＰＥＧデータレンダリング処理部１３とを結ぶ第２のデータ転送路１４が形成されていれば（別の言い方をすれば、第２のデータ転送路１４がオープンになっていれば）、その受信したデータを、第２のデータ転送路１４を介してＪＰＥＧデータレンダリング処理部１３に転送する。一方、ＢＩＰ７は、データを受信したとき、第２のデータ転送路１４が形成されていなければ（別の言い方をすれば、第２のデータ転送路１４がクローズになっていれば）、受信したデータを、バッファ管理部１９をして、所定のバッファに一時的に格納せしめる。その後、ＢＩＰ７は、第２のデータ転送路１４が形成されたときに（別の言い方をすれば、第２のデータ転送路１４がオープンになったときに）、バッファ管理部１９を介してバッファに格納されたデータを読み出し、それを、第２のデータ転送路１４を介してＪＰＥＧデータレンダリング処理部１３に転送する。なお、受信するイメージの形式は、ＪＰＧＥ以外の形式であっても良い。
【００２４】
ＨＣＲＰ９は、Ｌ２ＣＡＰの上位にあるプロファイルである。ＨＣＲＰ９は、パーソナルコンピュータ（以下、「ＰＣ」と略記）１０７からブルートゥースドライバ１を介してデータを受信し、そのときに、ＨＣＲＰ９とパラレルデータ処理部１５とを結ぶ第３のデータ転送路１６が形成されていれば（別の言い方をすれば、第３のデータ転送路１６がオープンになっていれば）、その受信したデータを、第３のデータ転送路１６を介してパラレルデータ処理部１５に転送する。一方、ＨＣＲＰ９は、データを受信したとき、第３のデータ転送路１６が形成されていなければ（別の言い方をすれば、第３のデータ転送路１６がクローズになっていれば）、受信したデータを、バッファ管理部１９をして、所定のバッファに一時的に格納せしめる。その後、ＨＣＲＰ９は、第３のデータ転送路１６が形成されたときに（別の言い方をすれば、第３のデータ転送路１６がオープンになったときに）、バッファ管理部１９を介してバッファに格納されたデータを取得し、それを、第３のデータ転送路１６を介してパラレルデータ処理部１５に転送する。なお、ＨＣＲＰ９及び他のプロファイル５、７も、データ転送路を介してデータを転送するときには、バッファに格納したデータを取得しそのデータを転送する。
【００２５】
Ｘｈｔｍｌデータレンダリング処理部１１は、第１のデータ処理部の一例であり、ＰＤＡ１０３からＢＰＰ５を介して受信したＸｈｔｍｌ（Ｅｘｔｅｎｓｉｂｌｅ  ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式のデータに基づいて印刷イメージデータを作成する。Ｘｈｔｍｌデータレンダリング処理部１１は、作成した印刷イメージデータを、印字処理部１７に送信する。
【００２６】
ＪＰＥＧデータレンダリング処理部１３は、第２のデータ処理部の一例であり、デジタルカメラ１０５からＢＩＰ７を介して受信したＪＰＥＧ形式のイメージデータに基づいて印刷イメージデータを作成する。ＪＰＥＧデータレンダリング処理部１３は、作成した印刷イメージデータを、印字処理部１７に送信する。
【００２７】
パラレルデータ処理部１５は、第３のデータ処理部の一例であり、ＰＣ１０７からＨＣＲＰ９を介して受信したパラレルデータ（印刷イメージデータ）を、印字処理部１７に転送する。
【００２８】
バッファ管理部１９は、各プロファイル５、７、又は９が外部装置から受信したデータを一時的に保持するためのバッファを管理する。バッファの管理方法は、幾つか考えられるが、以下に、２つの例を記載する。
【００２９】
（１）第１のバッファ管理方法
バッファ管理部１９は、各プロファイル５、７、又は９からデータを受信したら、そのデータに固有のＩＤ（以下、「データＩＤ」と言う）を割り当て、そのデータＩＤを、データの送信元のプロファイルに返送し、且つ、プロファイル５、７、又は９から受信したデータをバッファに格納し、そのデータを、割り当てたデータＩＤ、データの格納先、及びデータサイズに基づいて管理する。各プロファイル５、７、又は９は、バッファ管理部１９を介して所望のデータを取得する場合には、バッファ管理部１９から通知されたデータＩＤのうち、所望のデータのデータＩＤをバッファ管理部１９に渡すことで、バッファ管理部１９を介して所望のデータを取得する。
【００３０】
（２）第２のバッファ管理方法
各プロファイル５、７、又は９は、ブルートゥースドライバ１から受信したデータをバッファ管理部１９をしてバッファに格納せしめるときは、受信したデータにデータＩＤを付与し、受信したデータをそのデータＩＤと一緒にバッファ管理部１９に渡す。バッファ管理部１９は、受信したデータをバッファに格納し、そのデータを、渡されたデータＩＤ、データの格納先、及びデータサイズに基づいて管理する。各プロファイル５、７、又は９は、バッファ管理部１９を介して所望のデータを取得する場合には、所望のデータのデータＩＤをバッファ管理部１９に渡すことで、バッファ管理部１９を介して所望のデータを取得する。
【００３１】
ストリームパイプインターフェース部３は、第１〜第３のデータ転送路１２、１４、１６を形成するためのストリームパイプ（例えば、所定のメモリの一部記録領域）のインターフェースであり、第１〜第３のデータ転送路１２、１４、１６のいずれか１つをオープンにし、他をクローズにする、すなわち、データ転送路の切替えを行うものである。ストリームパイプインターフェース部３は、或るデータ転送路がクローズになっている場合に、そのデータ転送路に接続され得るプロファイルからそのデータ転送路をオープンにすることの要求を受けたとき、オープンになっている別のデータ転送路を介してデータの転送が行われていなければ、その別のデータ転送路をクローズにし、上記或るデータ転送路をオープンにし、その或るデータ転送路を介してデータの転送をすることを可能にする。
【００３２】
印字処理部１７は、レンダリング処理部１１及び１３やデータ処理部１５から受信した印刷イメージデータに基づいて、紙やＯＨＰファイル等の所定の印刷媒体に印刷イメージを印刷する。
【００３３】
以下、各プロファイル５、７、又は９の印字シーケンスについて、そのプロファイルから下流のデータ処理部へのデータ転送路がオープンになっている場合と、それがクローズになっている場合とに分けて説明する。なお、以下の説明では、印刷装置１００が、外部装置と物理的に接続された時に自装置の役割を通信スレイブから通信マスタに変更し、印刷装置１００が通信マスタとなって、外部装置に接続されている状態にあるものとする。すなわち、以下の図２〜図８のフローチャートは、印刷装置１００が通信マスタとなっている場合のものである。
【００３４】
図２は、第１のデータ転送路１２をオープンにすることが可能な場合のＢＰＰ５の印字シーケンスを示す。
【００３５】
この図に示す印字シーケンスは、Ｊｏｂ−Ｂａｓｅｄ  Ｔｒａｎｓｆｅｒで印字処理が行われる場合、すなわち、ジョブＩＤに基づいて印字処理が行われる場合の印字シーケンスである。
【００３６】
ＰＤＡ１０３は、ＯＢＥＸ  Ｇｅｔ（Ｃｒｅａｔｅ  Ｊｏｂ）パケットをＢＰＰ５に送信する、すなわち、ジョブの作成（厳密にはジョブＩＤの作成）をＢＰＰ５に要求する（ステップＳ１）。ＢＰＰ５は、それに応答して、ＳｔｒｅａｍＰｉｐｅ  （Ｏｐｅｎ）パケットをストリームパイプインターフェース（以下、ストリームパイプＩＦ）３に送信する、すなわち、第１の転送路１２のオープン（つまり第１の転送路１２の形成）をストリームパイプＩＦ３に要求する（Ｓ２）。ストリームパイプＩＦ３は、第１の転送路１２をオープンにすることができれば、それをオープンにして、第１の転送路１２がオープンになっている旨（以下、「オープンＯＫ」と言う）をＢＰＰ５に通知する（Ｓ３）。
【００３７】
ＢＰＰ５は、ストリームパイプＩＦ３からオープンＯＫの通知を受けたら、ＯＢＥＸＧｅｔ  Ｒｅｓｐｏｎｓｅで成功を表す信号、別の言い方をすれば、データの受信が可能であることを表す信号（以下、これを「受信可能信号」）をＰＤＡ１０３に送信する（Ｓ４）。ＰＤＡ１０３は、ＢＰＰ５から受信可能信号を受信したら、ＯＢＥＸＰｕｔ（Ｓｅｎｄ  Ｄｏｃｕｍｅｎｔ）パケット、つまり印刷データ（Ｘｈｔｍｌデータ）をＢＰＰ５に送信する（Ｓ５）。
【００３８】
ＢＰＰ５は、ＰＤＡ１０３からブルートゥースドライバ１を介してＸｈｔｍｌデータを受信したら、それを、バッファ管理部１９に渡しバッファ管理部１９をしてバッファに格納せしめた後に（Ｓ６）、受信可能信号をＰＤＡ１０３に送信し（Ｓ７）、且つ、バッファに格納されたＸｈｔｍｌデータをバッファ管理部１９を介して取得し、それを、ストリームパイプＩＦ３を介してストリームパイプに書き込む、すなわち、第１のデータ転送路１２を介してＸｈｔｍｌデータレンダリング処理部１１に転送する（Ｓ８）。ストリームパイプＩＦ３は、データの転送が終了した場合は、その旨（以下、「データ転送ＯＫ」と言う）をＢＰＰ５に通知する（Ｓ９）。
【００３９】
ＢＰＰ５は、Ｓ８のデータ転送に応答してストリームパイプＩＦ３からデータ転送ＯＫを受け、且つ、Ｓ７の受信可能信号の送信に応答して新たに印刷データを受信したときは（Ｓ１０及びＳ１５）、Ｓ６〜Ｓ８と同様の処理を実行する（Ｓ１１〜Ｓ１３及びＳ１６〜Ｓ１８）。
【００４０】
一方、ＢＰＰ５は、ストリームパイプを介したデータ転送に応答してストリームパイプＩＦ３からデータ転送ＯＫを受信する前に、ＰＤＡ１０３への受信可能信号の送信に応答してＰＤＡ１０３から新たに印刷データを受信したときは（Ｓ１９）、それをバッファに格納すると共に（Ｓ２０）、ＰＤＡ１０３にＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅを送信し（Ｓ２１）、ストリームパイプを介したデータ転送は行わない。ＢＰＰ５は、ストリームパイプＩＦ３からデータ転送ＯＫを受信するまで、Ｓ１９〜Ｓ２１と同じ処理を繰り返す。その際、ＢＰＰ５は、ストリームパイプＩＦ３からデータ転送ＯＫを受信した場合には、未だ転送されていない全ての又は所望の一部のデータに対応したジョブＩＤをバッファ管理部１９に渡し、そのジョブＩＤに対応したデータをバッファからバッファ管理部１９を介して取得し、取得したデータを第１の転送路１２を介して転送する。
【００４１】
ＢＰＰ５は、ＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅに応答してＰＤＡ１０３からＯＢＥＸＦｉｎａｌ  Ｐｕｔ（Ｓｅｎｄ  Ｄｏｃｕｍｅｎｔ）、すなわち、データが最後のものであり、もう送信するデータがないことを表す信号を受信した場合は（Ｓ２２）、ストリームパイプ（ここでは第１のデータ転送路１２）をクローズにするための処理を実行する。
【００４２】
具体的に言うと、ＢＰＰ５は、受信した最後のデータをバッファ管理部１９をしてバッファに格納せしめると共に（Ｓ２３）、ＯＢＥＸ  Ｆｉｎａｌ  Ｐｕｔ（Ｓｅｎｄ  Ｄｏｃｕｍｅｎｔ）に対する応答信号としてＯＢＥＸ  Ｆｉｎａｌ  Ｐｕｔ  ＲｅｓｐｏｎｓｅをＰＤＡ１０３に送信する（Ｓ２４）。そして、ＢＰＰ５は、ストリームパイプＩＦ３からデータ転送ＯＫを受信した後（Ｓ２５）、上記最後のデータをストリームパイプを介して転送し（Ｓ２６）、その後、ストリームパイプＩＦ３からデータ転送ＯＫを受信したら（Ｓ２７）、ストリームパイプＩＦ３に命じてストリームパイプをクローズにさせる（Ｓ２８）。それに応答して、ＢＰＰ５がストリームパイプＩＦ３からストリームパイプのクローズが完了した旨の通知を受けたら（Ｓ２９）、ＢＰＰ５の印字シーケンスの終了となる。
【００４３】
図３は、第１のデータ転送路１２をオープンにすることが不可能な場合のＢＰＰ５の印字シーケンスを示す。
【００４４】
第１のデータ転送路１２をオープンにすることができない間、具体的には、例えば、第１のデータ転送路１２以外のインターフェース（例えば、第２又は第３のデータ転送路１４又は１６、或いは、図示されていないホスト装置とプリンタ１００とを結ぶＵＳＢ等の図示されていないインターフェース）を介してデータ通信が行われている間に、ＢＰＰ５がＰＤＡ１０３からジョブの作成を要求された場合（Ｓ５１）、ＢＰＰ５は、それに応答して、第１の転送路１２のオープンをストリームパイプＩＦ３に要求する（Ｓ５２）。そのときは、ストリームパイプＩＦ３は、第１の転送路１２をオープンにすることができないので、その旨（以下、「オープンエラー」と言う）をＢＰＰ５に通知する（Ｓ５３）。
【００４５】
しかし、ＢＰＰ５は、ストリームパイプＩＦ３からオープンエラーの通知を受けても、オープンＯＫを受けたときと同じＯＢＥＸ  Ｇｅｔ  Ｒｅｓｐｏｎｓｅ、すなわち、受信可能信号をＰＤＡ１０３に送信する（Ｓ５４）。ＰＤＡ１０３は、ＢＰＰ５から受信可能信号を受信したら、ＯＢＥＸＰｕｔ（Ｓｅｎｄ  Ｄｏｃｕｍｅｎｔ）パケット、つまり印刷データ（Ｘｈｔｍｌデータ）をＢＰＰ５に送信する（Ｓ５５）。
【００４６】
ＢＰＰ５は、ＰＤＡ１０３からＸｈｔｍｌデータを受信したら、それを、バッファ管理部１９に渡しバッファ管理部１９をしてバッファに格納せしめた後に（Ｓ５６）、受信可能信号をＰＤＡ１０３に送信し（Ｓ５７）、且つ、再び、第１の転送路１２のオープンをストリームパイプＩＦ３に要求する（Ｓ５８）。ＢＰＰ５は、それに応答してストリームパイプＩＦ３から再びオープンエラーを受けても（Ｓ５９）、ＰＤＡ１０３から印刷データを受信し（Ｓ６０）、それをバッファに格納するようにし（Ｓ６１）、受信可能信号をＰＤＡ１０３に送信する（Ｓ６２）。
【００４７】
すなわち、ＢＰＰ５は、他のプロファイル７又は９とストリームパイプＩＦ３との間でデータのやり取りがされているが故に第１のデータ転送路１２をオープンにすることができないときは、ＰＤＡ１０３から印刷ジョブ作成要求或いは印刷データを受信しても、ＰＤＡ１０３にエラーではなく受信可能信号を送信し、ＰＤＡ１０３から印刷データの受付を可能にする。ただし、ＢＰＰ５は、受信した印刷データは、バッファに格納するだけで、下流の（換言すれば上位の）レンダリング処理部１１には印刷データの転送は行わない。
【００４８】
また、ＢＰＰ５は、第１のデータ転送路１２をオープンにすることができないときは、タイマー等を用いて、所定のタイミングで（例えば随時に又は定期的に）、ストリームパイプＩＦ３から第１のデータ転送路１２がオープンになった旨の通知を受けるまで、繰り返し、第１のデータ転送路１２をオープンにすることをストリームパイプＩＦ３に命じる。ＢＰＰ５は、それに応答してストリームパイプＩＦ３から第１のデータ転送路１２がオープンになった旨の通知を受けたならば（Ｓ６３及びＳ６４）、それ以後は、図２を参照して説明した印字シーケンスを実行する（Ｓ６５〜Ｓ７６）。なお、ＢＰＰ５は、バッファに印刷データを格納するときに、バッファの空きサイズが印刷データのデータサイズよりも小さい場合には（例えばバッファの空きがゼロの場合には）、受信可能信号（つまりＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅ）をＰＤＡ１０３に送信することを待ち、バッファの空きサイズが印刷データのサイズ以上になった後に、受信可能信号をＰＤＡ１０３に送信して次の印刷データを受けるようにする。
【００４９】
図４は、第２のデータ転送路１４をオープンにすることが可能な場合のＢＩＰ７の印字シーケンスを示す。
【００５０】
デジタルカメラ１０５は、ＯＢＥＸ  Ｐｕｔ（ＰｕｔＩｍａｇｅ）、すなわち、印刷対象のＪＰＥＧイメージデータをＢＩＰ７に要求する（ステップＳ１０２）。ＢＩＰ７は、それに応答して、ＳｔｒｅａｍＰｉｐｅ  （Ｏｐｅｎ）パケットをストリームパイプＩＦ３に送信する、すなわち、第２の転送路１４のオープン（つまり第２の転送路１４の形成）をストリームパイプＩＦ３に要求する（Ｓ１０３）。ストリームパイプＩＦ３は、第２の転送路１４をオープンにすることができれば、それをオープンにして、第２の転送路１４がオープンになっている旨（以下、「オープンＯＫ」と言う）をＢＩＰ７に通知する（Ｓ１０４）。
【００５１】
ＢＩＰ７は、ストリームパイプＩＦ３からオープンＯＫの通知を受けたら、Ｓ１０２で受信したＪＰＧＥデータをバッファ管理部１９をしてバッファに格納せしめると共に（Ｓ１０５）、ＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅ、つまり受信可能信号をデジタルカメラ１０５に送信する（Ｓ１０６）。また、ＢＩＰ７は、Ｓ１０５でバッファに格納したＪＰＥＧデータをバッファ管理部１９を介して取得し、それを、ストリームパイプＩＦ３を介してストリームパイプに書き込む、すなわち、第２のデータ転送路１４を介してＪＰＥＧデータレンダリング処理部１３に転送する（Ｓ１０７）。ストリームパイプＩＦ３は、データの転送が終了した場合は、データ転送ＯＫをＢＩＰ７に通知する（Ｓ１０８）。
【００５２】
ＢＩＰ７は、Ｓ１０７のデータ転送に応答してストリームパイプＩＦ３からデータ転送ＯＫを受け、且つ、Ｓ１０６の受信可能信号の送信に応答して新たにＪＰＥＧデータを受信したときは（Ｓ１０９）、上述したＳ１０４〜Ｓ１０６と同様の処理を実行する（Ｓ１１０〜Ｓ１１２）。
【００５３】
一方、ＢＩＰ７は、データ転送に応答してストリームパイプＩＦ３からデータ転送ＯＫを受信する前に、デジタルカメラ１０５への受信可能信号の送信に応答してデジタルカメラ１０５から新たに印刷データを受信したときは（Ｓ１１３）、それをバッファに格納すると共に（Ｓ１１４）、デジタルカメラ１０５にＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅを送信し（Ｓ１１５）、ストリームパイプを介したデータ転送は行わない。ＢＩＰ７は、ストリームパイプＩＦ３からデータ転送ＯＫを受信するまで、Ｓ１１３及びＳ１１４と同じ処理を繰り返す（Ｓ１１５〜Ｓ１１８）。その場合、ＢＩＰ７は、ストリームパイプＩＦ３からデータ転送ＯＫを受信した場合には（Ｓ１１９）、未だ転送されていない全ての又は所望の一部のデータに対応したデータをバッファからバッファ管理部１９を介して取得し、取得したデータを第２の転送路１４を介して転送する（Ｓ１２２）。
【００５４】
ＢＩＰ７は、ＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅに応答してデジタルカメラ１０５からＯＢＥＸＦｉｎａｌ  Ｐｕｔ（ＰｕｔＩｍａｇｅ）、すなわち、ＪＰＥＧデータが最後のものであり、もう送信するＪＰＥＧデータがないことを表す信号を受信した場合は（Ｓ１２０）、ストリームパイプ（ここでは第２のデータ転送路１４）をクローズにするための処理を実行する。
【００５５】
具体的に言うと、ＢＩＰ７は、受信した最後のデータをバッファ管理部１９をしてバッファに格納せしめると共に（Ｓ１２１−Ａ）、ＯＢＥＸ  Ｆｉｎａｌ  Ｐｕｔ（ＰｕｔＩｍａｇｅ）に対する応答信号としてＯＢＥＸ  Ｆｉｎａｌ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅをデジタルカメラ１０５に送信する（Ｓ１２１−Ｂ）。そして、ＢＩＰ７は、Ｓ１１９のデータ転送ＯＫに応答して、Ｓ１２１−Ａで格納した最後のデータを含むデータをストリームパイプを介して転送し（Ｓ１２２）、その後、ストリームパイプＩＦ３からデータ転送ＯＫを受信したら（Ｓ１２３）、ストリームパイプＩＦ３に命じてストリームパイプをクローズにさせる（Ｓ１２４）。それに応答して、ＢＩＰ７がストリームパイプＩＦ３からストリームパイプのクローズが完了した旨の通知を受けたら（Ｓ１２５）、ＢＩＰ７の印字シーケンスの終了となる。
【００５６】
図５は、第２のデータ転送路１４をオープンにすることが不可能な場合のＢＩＰ７の印字シーケンスを示す。
【００５７】
第２のデータ転送路１４をオープンにすることができない間、具体的には、例えば、第２のデータ転送路１４以外のインターフェース（例えば、第１又は第３のデータ転送路１２又は１６、或いは、図示されていないホスト装置とプリンタ１００とを結ぶＵＳＢ等の図示されていないインターフェース）を介してデータ通信が行われている間に、ＢＩＰ７がデジタルカメラ１０５からＪＰＥＧデータを受信した場合（Ｓ１５１）、ＢＩＰ７は、それに応答して、第２の転送路１４のオープンをストリームパイプＩＦ３に要求する（Ｓ１５２）。そのときは、ストリームパイプＩＦ３は、第２の転送路１４をオープンにすることができないので、オープンエラーをＢＩＰ７に通知する（Ｓ１５３）。ＢＩＰ７は、受信したＪＰＥＧデータをバッファに格納する（Ｓ１５４−Ａ）。
【００５８】
ＢＩＰ７は、ストリームパイプＩＦ３からオープンエラーの通知を受けても、オープンＯＫを受けたときと同じＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅ、すなわち、受信可能信号をデジタルカメラ１０５に送信する（Ｓ１５４−Ｂ）。デジタルカメラ１０５は、ＢＩＰ７から受信可能信号を受信したら、ＪＰＥＧデータをＢＩＰ７に送信する（Ｓ１５５）。
【００５９】
ＢＩＰ７は、デジタルカメラ１０５からＪＰＥＧデータを受信したら、それを、バッファ管理部１９をしてバッファに格納せしめた後に（Ｓ１５６−Ａ）、受信可能信号をデジタルカメラ１０５に送信し（Ｓ１５６−Ｂ）、且つ、再び、第２の転送路１４のオープンをストリームパイプＩＦ３に要求する（Ｓ１５７）。ＢＩＰ７は、それに応答してストリームパイプＩＦ３から再びオープンエラーを受けても（Ｓ５９）、デジタルカメラ１０５から印刷データを受信し（Ｓ１５９）、それをバッファに格納するようにし（Ｓ１６０）、受信可能信号をデジタルカメラ１０５に送信する（Ｓ１６１）。
【００６０】
すなわち、ＢＩＰ７は、他のプロファイル５又は９とストリームパイプＩＦ３との間でデータのやり取りがされているが故に第２のデータ転送路１４をオープンにすることができないときは、デジタルカメラ１０５から印刷データを受信しても、デジタルカメラ１０５にエラーではなく受信可能信号を送信し、デジタルカメラ１０５から印刷データの受付を可能にする。ただし、ＢＩＰ７は、受信した印刷データは、バッファに格納するだけで、下流の（換言すれば上位の）レンダリング処理部１３には印刷データの転送は行わない。
【００６１】
また、ＢＩＰ７は、第２のデータ転送路１４をオープンにすることができないときは、タイマー等を用いて、所定のタイミングで（例えば随時に又は定期的に）、ストリームパイプＩＦ３から第２のデータ転送路１４がオープンになった旨の通知を受けるまで、繰り返し、第２のデータ転送路１４をオープンにすることをストリームパイプＩＦ３に命じる。ＢＩＰ７は、それに応答してストリームパイプＩＦ３から第２のデータ転送路１４がオープンになった旨の通知を受けたならば（Ｓ１６２及びＳ１６３）、それ以後は、図４を参照して説明した印字シーケンスを実行する（Ｓ１６４〜Ｓ１７４）。なお、ＢＩＰ７は、バッファに印刷データを格納するときに、バッファの空きサイズが印刷データのデータサイズよりも小さい場合には（例えばバッファの空きがゼロの場合には）、受信可能信号（つまりＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅ）をデジタルカメラ１０５に送信することを待ち、バッファの空きサイズが印刷データのサイズ以上になった後に、受信可能信号をデジタルカメラ１０５に送信して次の印刷データを受けるようにする。
【００６２】
図６は、第３のデータ転送路１６をオープンにすることが可能な場合のＨＣＲＰ９の印字シーケンスを示す。
【００６３】
ＰＣ１０７とＨＣＲＰ９との間には、所定のチャンネル、すなわち、コントロールチャンネルとデータチャンネルとの２本のチャンネルが接続される。コントロールチャンネルは、印刷装置制御コマンドの送受信や、データチャンネルでデータをやり取りするための後述のクレジット値を取得及び授与を行うためのチャンネルである。データチャンネルは、印刷データをクレジット値に基づいて送受信するためのチャンネルである。なお、クレジット値とは、印刷装置１００が受信可能なデータのデータサイズを示すものであり、バッファの空きサイズ以下の値となる。クレジット値は固定であっても可変であっても良い。固定の場合には、例えば、バッファの容量に基づいてクレジット値は設定され、可変の場合には、例えば、バッファの空き容量に基づいて例えば印刷装置１００のＣＰＵによって決められる。
【００６４】
ＰＣ１０７は、印刷データを送信するときは、まず、Ｃｏｎｔｒｏｌ  Ｃｈ．（Ｃｒｅｄｉｔ要求）パケットをＨＣＲＰ９に送信する、すなわち、クレジット値を通知するようＨＣＲＰ９に要求する（Ｓ２０１）。
【００６５】
ＨＣＲＰ９は、それに応答して、バッファ管理部１９に所定のクレジット値分の空きサイズを持った記録領域（データ格納先）を確保させる、又は、バッファ管理部１９が確保できた記録領域のサイズをクレジット値として決定する（Ｓ２０２）。そして、ＨＣＲＰ９は、Ｃｏｎｔｒｏｌ  Ｃｈ．（Ｃｒｅｄｉｔ要求応答）をＰＣ１０７に送信する、すなわち、クレジット値をＰＣ１０７に通知する（Ｓ２０３）。
【００６６】
ＰＣ１０７は、通知されたクレジット値に基づいて、印刷データをＨＣＲＰ９に送信する（Ｓ２０４）。ＨＣＲＰ９は、ＰＣ１０７から印刷データを受信し、その印刷データを、バッファ管理部１９をしてバッファに格納せしめ（Ｓ２０５）、その後、第３の転送路１６のオープン（つまり第３の転送路１６の形成）をストリームパイプＩＦ３に要求する（Ｓ２０６）。ストリームパイプＩＦ３は、第３の転送路１６をオープンにすることができれば、それをオープンにして、オープンＯＫをＨＣＲＰ９に通知する（Ｓ２０７）。
【００６７】
ＨＣＲＰ９は、ストリームパイプＩＦ３からオープンＯＫの通知を受けたら、バッファに格納された印刷データをバッファ管理部１９を介して取得し、それを、ストリームパイプＩＦ３を介してストリームパイプに書き込む、すなわち、第３のデータ転送路１６を介してパラレルデータ処理部１５に転送する（Ｓ２０８）。ストリームパイプＩＦ３は、データの転送が終了した場合は、データ転送ＯＫをＨＣＲＰ９に通知する（Ｓ２０９）。
【００６８】
ＨＣＲＰ９は、Ｓ２０８のデータ転送に応答してストリームパイプＩＦ３からデータ転送ＯＫを受け、且つ、新たに印刷データを受信したときは（Ｓ２１０）、その印刷データをバッファに格納するようにし（Ｓ２１１）、且つ、格納されたその印刷データをバッファから取得して第３のデータ転送路１６を介してパラレルデータ処理部１５に転送する（Ｓ２１２）。
【００６９】
ＰＣ１０７は、所定のとき、例えば、Ｓ２０３で通知されたクレジット値に相当した印刷データを送信し終え、まだ、未送信の印刷データがあるときには、再び、クレジット値を通知するようＨＣＲＰ９に要求する（Ｓ２０３）。
【００７０】
ＨＣＲＰ９は、それに応答して、Ｓ２０２と同様の処理を行って（Ｓ２１４）、クレジット値をＰＣ１０７に通知する（Ｓ２１５）。そして、ＰＣ１０７から印刷データを受信したら（Ｓ２１６）、その印刷データをバッファに格納するようにする（Ｓ２１７）。
【００７１】
ＨＣＲＰ９は、Ｓ２１２でストリームパイプを介したデータ転送を行った後、それに応答してストリームパイプＩＦ３からデータ転送ＯＫを受信する前に、ＰＣ１０７から新たに印刷データを受信したときは（Ｓ２１６及びＳ２１８−Ａ）、それをバッファに格納するだけで（Ｓ２１７及びＳ２１８−Ｂ）、ストリームパイプを介したデータ転送は行わない。ＨＣＲＰ９は、ストリームパイプＩＦ３からデータ転送ＯＫを受信するまで、Ｓ２１６及びＳ２１７と同じ処理を繰り返す（クレジット値の通知要求を受けたときは、データ格納先を確保するための処理を行って、クレジット値をＰＣ１０７に通知する）。その際、ＨＣＲＰ９は、ストリームパイプＩＦ３からデータ転送ＯＫを受信した場合には（Ｓ２１９）、未だ転送されていない全ての又は所望の一部の印刷データをバッファからバッファ管理部１９を介して取得し、取得したデータを第３の転送路１６（ストリームパイプ）を介して転送する（Ｓ２２０）。
【００７２】
ＨＣＲＰ９は、ストリームパイプＩＦ３からデータ転送ＯＫを受信した後（Ｓ２２１）、所定のイベントが発生したとき、例えば、ＰＣ１０７から切断されたとき（接続状態が解除されたとき）、又は、一定時間経ってもＰＣ１０７から印刷データを受信しないときに、ストリームパイプＩＦ３に命じてストリームパイプをクローズにさせる（Ｓ２２２）。それに応答して、ＨＣＲＰ９がストリームパイプＩＦ３からストリームパイプのクローズが完了した旨の通知を受けたら（Ｓ２２３）、ＨＣＲＰ９の印字シーケンスの終了となる。
【００７３】
なお、この印字シーケンスにおいて、ＨＣＲＰ９は、クレジット値の要求を受けたとき、クレジット値以上の空きサイズの記録領域が確保されないときは、クレジット値をゼロとして通知することで、ＰＣ１０７が印刷データを送信しないように制御する。そして、ＨＣＲＰ９は、クレジット値以上の空きサイズの記録領域が確保されたときに、クレジット値をＰＣ１０７に通知する。
【００７４】
図７は、第３のデータ転送路１６をオープンにすることが不可能な場合のＨＣＲＰ９の印字シーケンスを示す。
【００７５】
第３のデータ転送路１６をオープンにすることができない間、具体的には、例えば、第３のデータ転送路１６以外のインターフェース（例えば、第１又は第２のデータ転送路１２又は１４、或いは、図示されていないホスト装置とプリンタ１００とを結ぶＵＳＢ等の図示されていないインターフェース）を介してデータ通信が行われている間に、ＨＣＲＰ９がＰＣ１０７からクレジット値の通知要求を受けた場合（Ｓ２５１）、図６のＳ２０２〜Ｓ２０６と同じ処理が行われる（Ｓ２５２〜Ｓ２５６）。
【００７６】
ストリームパイプＩＦ３は、Ｓ２５６で第３の転送路１６をオープンにすることの要求を受けても、第３の転送路１６をオープンにすることができないので、オープンエラーをＨＣＲＰ９に通知する（Ｓ２５７）。
【００７７】
ＨＣＲＰ９は、ストリームパイプＩＦ３からオープンエラーの通知を受けても、ＰＣ１０７から印刷データを受信したら（Ｓ２５８）、それを、バッファ管理部１９をしてバッファに格納せしめた後に（Ｓ２５９）、再び、第３の転送路１６のオープンをストリームパイプＩＦ３に要求する（Ｓ２６０）。ＨＣＲＰ９は、それに応答してストリームパイプＩＦ３から再びオープンエラーを受けても（Ｓ２６１）、オープンＯＫを受けたときと同様の処理、例えば、ＰＣ１０７からクレジット値の要求を受けたときは（Ｓ２６２）、データ格納先を確保して（Ｓ２６３−Ａ）、クレジット値をＰＣ１０７に通知する（Ｓ２６３−Ｂ）。
【００７８】
すなわち、ＨＣＲＰ９は、第３のデータ転送路１６をオープンにすることができないときに、ＰＣ１０７からクレジット値の通知要求或いは印刷データを受信しても、ＰＣ１０７にエラーを返さず、ＰＣ１０７から印刷データの受付を可能にする。ただし、ＨＣＲＰ９は、受信した印刷データは、バッファに格納するだけで、下流の（換言すれば上位の）パラレルデータ処理部１５には印刷データの転送は行わない。
【００７９】
また、ＨＣＲＰ９は、第３のデータ転送路１６をオープンにすることができないときは、タイマー等を用いて、所定のタイミングで（例えば随時に又は定期的に）、ストリームパイプＩＦ３から第３のデータ転送路１６がオープンになった旨の通知を受けるまで、繰り返し、第３のデータ転送路１６をオープンにすることを命じる。ＨＣＲＰ９は、それに応答してストリームパイプＩＦ３から第３のデータ転送路１６がオープンになった旨の通知を受けたならば（Ｓ２６４及びＳ２６５）、それ以後は、図６を参照して説明した印字シーケンスを実行する（Ｓ２６６〜Ｓ２７１）。
【００８０】
以上が、本実施形態についての説明である。
【００８１】
上述した実施形態によれば、印刷装置１００は、第１の外部装置（例えばＰＤＡ１０３）に接続されている場合に、第２の外部装置（例えばデジタルカメラ１０５）から出力された接続要求（問い合わせ）を検出したときは、まず、自装置の役割を通信スレイブに設定し、その後、所定のタイミングで（例えば、物理的な接続が確立したときに）、自動又は手動で、自装置の役割を通信スレイブから通信マスタに変更する。それにより、印刷装置１００は、第１及び第２の外部装置の両方に接続して、第１及び第２の外部装置の両方から並行して印刷データを受信することが可能である。
【００８２】
また、上述した実施形態によれば、印刷装置１００内の各プロファイル５、７、９は、自分に接続されているデータ転送路がクローズになっていても、換言すれば、印刷データを下流のデータ処理部１１、１３、又は１５に転送できない状態であっても、通信相手である外部装置に対しては、自分に接続されているデータ転送路がオープンになっているときと同じ応答信号を送信する或いはその応答信号の送信を待つ。それにより、通信相手の外部装置に、再び同じ動作をやり直させることがない、換言すれば、外部装置の設計の際、通信相手のプロファイルからエラーを受けたときにどのように動作するか等の特別な設計をしなくて済む。
【００８３】
以上、本発明の好適な実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【００８４】
例えば、ＢＰＰ５は、Ｊｏｂ−Ｂａｓｅｄ  Ｔｒａｎｓｆｅｒ以外の印字処理、例えば、Ｓｉｍｐｌｅ
Ｐｕｓｈ  Ｍｏｄｅｌで印字することもできる。その場合、ＢＰＰ５は、図８に示すように、まず、ＰＤＡ１０３からＯＢＥＸ  Ｐｕｔ（Ｓｉｍｐｌｅ  Ｐｕｓｈ）で印刷データを受信し（Ｓ３０１）、第１のデータ転送路１２をオープンにするようストリームパイプＩＦ３に要求する（Ｓ３０２）。ストリームパイプＩＦ３は、第１の転送路１２をオープンにすることができれば、それをオープンにしてオープンＯＫをＢＰＰ５に通知する（Ｓ３０３）。
【００８５】
ＢＰＰ５は、ストリームパイプＩＦ３からオープンＯＫの通知を受けたら、ＯＢＥＸＰｕｔ  Ｒｅｓｐｏｎｓｅ、つまり受信可能信号をＰＤＡ１０３に送信すると共に（Ｓ３０４）、受信した印刷データを、ストリームパイプＩＦ３を介してＸｈｔｍｌデータレンダリング処理部１１に転送する（Ｓ３０５）。
【００８６】
その後、ＢＰＰ５は、データ転送ＯＫを受けたら（Ｓ３０６）、Ｓ３０４及びＳ３０５を繰り返す。また、ＢＰＰ５は、ＰＤＡ１０３からＯＢＥＸ  Ｆｉｎａｌ  Ｐｕｔ（Ｓｉｍｐｌｅ  Ｐｕｓｈ）、すなわち、データが最後のものであり、もう送信するデータがないことを表す信号を受信した場合は（Ｓ３０７）、ストリームパイプをクローズにするための処理を実行する（Ｓ３０８〜Ｓ３１２）。
【００８７】
この印字処理において、ＢＰＰ５は、他のデータ転送路１４又は１６がオープンにされた状態になっていなければならず第１のデータ転送路１２をオープンにすることができないために、例えばＳ３０３でオープンエラーを受けた場合は、ＯＢＥＸ  Ｐｕｔ  Ｒｅｓｐｏｎｓｅの送信を待つと共に、所定タイミングで（例えば随時に又は定期的に）、繰り返し、第１のデータ転送路１２をオープンにするようにストリームパイプＩＦ３に要求する。ＢＰＰ５は、その要求に対してオープンＯＫを受信したときに、送信しないでいたＯＢＥＸＰｕｔ  ＲｅｓｐｏｎｓｅをＰＤＡ１０３に送信する。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る印刷装置１００のブロック図。
【図２】ＢＰＰ５の第１のデータ転送路１２をオープンにすることが可能な場合のＢＰＰ５の印字シーケンスを示す図。
【図３】第１のデータ転送路１２をオープンにすることが不可能な場合のＢＰＰ５の印字シーケンスを示す図。
【図４】第２のデータ転送路１４をオープンにすることが可能な場合のＢＩＰ７の印字シーケンスを示す図。
【図５】第２のデータ転送路１４をオープンにすることが不可能な場合のＢＩＰ７の印字シーケンスを示す図。
【図６】第３のデータ転送路１６をオープンにすることが可能な場合のＨＣＲＰ９の印字シーケンスを示す図。
【図７】第３のデータ転送路１６をオープンにすることが不可能な場合のＨＣＲＰ９の印字シーケンスを示す図。
【図８】シンプルプッシュモデルで印字される場合のＢＰＰ５の印字シーケンスを示す図。
【符号の説明】
１  ブルートゥースドライバ
２  ＯＢＥＸ（ＯＢｊｅｃｔ  ＥＸｃｈａｎｇｅ  ｐｒｏｔｏｃｏｌ）
３  ストリームパイプインターフェース部
５  ＢＰＰ（Ｂａｓｉｃ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｆｉｌｅ）
７  ＢＩＰ（Ｂａｓｉｃ  Ｉｍａｇｉｎｇ  Ｐｒｏｆｉｌｅ）
９  ＨＣＲＰ（Ｈａｒｄｃｏｐｙ  Ｃａｂｌｅ  ＲｅｐｌａｃｅｍｅｎｔＰｒｏｆｉｌｅ）
１１  Ｘｈｔｍｌデータレンダリング処理部
１２  第１のデータ転送路
１３  ＪＰＥＧデータレンダリング処理部
１４  第２のデータ転送路
１５  パラレルデータ処理部
１６  第３のデータ転送路
１７  印字処理部
１９  バッファ管理部
【図１】
2004258780.tif 000003
【図２】
2004258780.tif 000004
【図３】
2004258780.tif 000005
【図４】
2004258780.tif 000006
【図５】
2004258780.tif 000007
【図６】
2004258780.tif 000008
【図７】
2004258780.tif 000009
【図８】
2004258780.tif 000010