本発明の一実施の形態について図1ないし図7に基づいて説明すると以下の通りである。以下では、本発明に係る送信回路、送信機器、受信回路および受信機器の一実施の形態について説明する。なお、片方向無線通信システムとして、赤外線通信を用いて説明するが、これに限定されない。片方向無線通信方式であれば本発明に適用が可能である。
〔赤外線通信システム〕
図2は、本実施の形態に係る赤外線通信システム1の構成の概略を示すブロック図である。赤外線通信システム1は、本実施の形態に係る送信回路100を備える送信機器10、および、本実施の形態に係る受信回路300を備える受信機器30、ならびに、送信ブロック500を備える送信機器50、および、受信ブロック700を備える受信機器70からなる。
送信機器10は、受信機器30に、各種データを送信する機器である。本実施の形態では、送信機器10と、受信機器30との間のデータ通信には、IrSS(登録商標)またはIrSimpleShot(登録商標)方式を採用している。IrSS方式は、IrSimple(登録商標)方式の片方向通信モード(IrSimple Uni-directional mode)を用いた通信方式であるが、赤外線通信システム1では、これに限られず、IrDAの片方向通信モードを採用することも可能である。
また、送信機器10および受信機器30では、従来、ソフトウェアで実行していたIrSS方式における各層のヘッダ処理等を、ハードウェアとしての送信回路100および受信回路300によって実現している。これにより、送信機器10および受信機器30では、処理速度の向上を図っている。
一方、本実施の形態における送信機器50および受信機器70では、従来のように、IrSS方式の通信処理は、ソフトウェア、すなわち、例えば送信ブロック500および受信ブロック700によって実現されている。なお、送信機器50および受信機器70は、IrSS方式による送受信を行なうことが可能であればよく、送信機器50および受信機器70において、どのようにしてIrSS方式の通信処理が実現されているかについては特に制限はない。
ここで、送信機器10は、従来の受信機器70に対しても同様に、上記の通信を行なうことが可能である。すなわち、送信機器10は、従来の受信機器70に対して互換性を有する。同様に、受信機器30も、従来の送信機器50との間において、上記の通信を行なうことが可能である。すなわち、受信機器30は、従来の送信機器50に対して互換性を有する。
なお、本実施の形態に係る赤外線通信システム1おける送信機器10および送信機器50は、例えば、携帯電話機、パーソナルコンピュータ、PDA、ビデオカメラ等に適用できる。また、受信機器30および受信機器70は、例えば、テレビ、DVDレコーダ、ハードディスク装置、またはパーソナルコンピュータ等に適用できる。
以下では、本実施の形態に係る送信回路を備える送信機器10、および、本実施の形態に係る受信回路を備える受信機器30について詳細に説明していく。
〔送信機器および受信機器の概要〕
まず、送信機器10および受信機器30について、図2を用いてさらに説明する。
図2に示すように、送信機器10は、送信回路100および送信ソフトウェア(上位層)150を備える。送信回路100は、データの送信時におけるIrSS方式の各層での処理を実現するためのハードウェアである。すなわち、送信回路100は、送信ソフトウェア150から転送される送信データを、IrSS方式によって受信機器30または受信機器70に送信するための回路である。
送信ソフトウェア150は、送信回路100を介して、受信機器30または受信機器70に送信データを送信するためのソフトウェアである。すなわち、送信ソフトウェア150は、受信機器30が備える受信ソフトウェア350または受信機器70が備える受信ブロック700で処理される受信データを送信するためのものである。
送信ソフトウェア150は、CPU(central processing unit)が不図示のROM(read only memory)等の記憶装置に記憶されているプログラムをRAM(random access memory)等に読み出して実行することで実現できる。すなわち、図2において、上記送信ソフトウェア150は、上記CPUが上記記憶装置に格納されたプログラムを実行し、入出力回路(図示せず)に対して入出力を行なうことによって実現される機能ブロックである。送信ソフトウェア150と、送信回路100とのデータの受渡しは、送信機器10が備えるシステムバス(図示せず)を経由して行なわれる。
すなわち、送信ソフトウェア150が、システムバスにデータ信号を出力すると、当該データ信号がシステムバスから送信回路100に入力される。また、送信回路100から出力されたデータ信号は、システムバスによって送信ソフトウェア150に転送される。
また、送信ソフトウェア150から送信回路100へ入力されるデータ信号には、送信要求信号および送信データ信号が含まれる。逆に送信回路100から送信ソフトウェア150に出力されるデータ信号には、送信完了信号が含まれる。各信号の詳細については後述する。
受信機器30は、受信回路300および受信ソフトウェア(上位層)350を備える。
受信回路300は、データの受信時におけるIrSS方式の各層での処理を実現するためのハードウェアである。すなわち、受信回路300は、送信機器10または送信機器50からIrSS方式によって送信される送信データを受信する回路である。
受信機器30が、送信データを受信すると、当該送信データは、受信回路300に入力される。そして、受信回路300において、IrSS方式の各層での処理が施され、受信データとして受信ソフトウェア350に出力される。また、受信回路300が出力した受信データは、受信ソフトウェア350に転送される。
受信ソフトウェア350は、受信回路300が出力した受信データを処理するためのソフトウェアである。すなわち、受信ソフトウェア350は、送信機器10が備える送信ソフトウェア150が送信する送信データを処理するためのものである。
受信ソフトウェア350は、CPU(central processing unit)が不図示のROM(read only memory)等の記憶装置に記憶されているプログラムをRAM(random access memory)等に読み出して実行することで実現できる。すなわち、図2において、受信ソフトウェア350は、上記CPUが上記記憶装置に格納されたプログラムを実行し、入出力回路(図示せず)に対して入出力を行なうことによって実現される機能ブロックである。受信ソフトウェア350と、受信回路300とのデータの受渡しは、受信機器30が備えるシステムバス(図示せず)を経由して行なわれる。
すなわち、受信ソフトウェア350が、システムバスにデータ信号を出力すると、システムバスから受信回路300に入力される。また、受信回路300から出力されたデータ信号は、システムバスによって受信ソフトウェア350に転送される。
また、受信ソフトウェア350から受信回路300へ入力されるデータ信号には、受信要求信号が含まれる。逆に受信回路300から受信ソフトウェア350に出力されるデータ信号には、受信完了信号および受信データ信号が含まれる。各信号の詳細については後述する。
また、図2に示すように、送信機器10から受信機器30へのデータの送信は、具体的には、送信機器10から、受信機器30または受信機器70にIrSS方式のSNRMパケット、UIパケット、DISCパケットを送信することで行なわれる。
なお、以降においては、説明の便宜上、送信機器10が、受信機器30にデータを送信する場合(すなわち、受信機器30が送信機器10からデータを受信する場合)について説明していく。よって、送信機器10が、受信機器70にデータを送信すること、および、受信機器30が、送信機器50からデータを受信することについては、特に必要がない限りその説明を省略する。
以下に、送信機器10が備える送信回路100および受信機器30が備える受信回路300の詳細について説明する。
(送信回路)
〔送信回路の構成〕
送信機器10が備える送信回路100の詳細について、図1を用いて説明すると以下のとおりである。
図1は、送信機器10が備える送信回路100の要部構成を示す機能ブロック図である。
図1に示すように、送信回路100は、送信要求処理部101と、OBEX層送信処理部(コマンド生成処理部)102と、SMP層送信処理部103と、IrLMP層送信処理部104と、IrLAP層送信処理部105と、IrPHY層送信処理部106と、送信バッファ108とをハードウェアとして備える構成である。
[送信要求処理部]
送信要求処理部101は、送信ソフトウェア150側からの入力信号に応じて、各種通知を生成し、当該通知によりOBEX層送信処理部102に対する制御を行なうためのものである。また、送信バッファ108は、送信ソフトウェア150側から入力される送信データを一時的に保持しておくためのものである。
具体的には、送信要求処理部101は、送信ソフトウェア150側から送信要求信号が入力されると、接続要求通知を生成する。そして、送信要求処理部101は、当該接続要求通知をOBEX層送信処理部102に転送する。
また、送信要求処理部101は、OBEX層送信処理部102から、“接続完了”が通知されてきた場合は、データ転送要求通知を生成し、当該データ転送要求通知を、OBEX層送信処理部102に転送する。このとき、送信ソフトウェア150側から送信バッファ108に送信データが入力される。
また、送信要求処理部101は、OBEX層送信処理部102から、“データ転送完了”が通知されてきた場合は、切断要求通知を生成し、当該切断要求通知を、OBEX層送信処理部102に転送する。
また、送信要求処理部101は、送信データがすべて受信機器30に送信された後、OBEX層送信処理部102から、“切断完了”が通知された場合は、送信ソフトウェア150側に送信完了信号を出力する。
[OBEX層送信処理部]
OBEX層送信処理部102は、送信要求処理部101と、SMP層送信処理部103との間に配置されており、IrSS方式において送信側のOBEX層について定義されている機能を実現するものである。
OBEX層送信処理部102では、具体的には、次の構成を備えることによりOBEX層の機能を実現している。すなわち、OBEX層送信処理部102は、OBEX送信制御部(コマンド生成処理部)102aと、OBEX接続要求コマンド生成部(コマンド生成処理部)102bと、OBEXデータ転送要求コマンド生成部(コマンド生成処理部)102cと、OBEX切断要求コマンド生成部(コマンド生成処理部)102dとを備える。
OBEX送信制御部102aは、OBEX層における送信処理の制御を行なうものである。
OBEX送信制御部102aは、上位層に相当する送信要求処理部101からの通知に応じて、OBEX接続要求コマンド生成部102b、OBEXデータ転送要求コマンド生成部102cおよびOBEX切断要求コマンド生成部102dに対して各種の制御を行なう。
また一方で、OBEX送信制御部102aは、下位層に相当するSMP層送信処理部103からの各種の通知に応じて、送信要求処理部101に対し所定の通知を行なう。
OBEX接続要求コマンド生成部102bは、OBEX送信制御部102aからの指示に基づいて、“OBEX接続要求コマンド”を生成し、当該“OBEX接続要求コマンド”をSMP層送信処理部103に転送する。
なお、OBEX接続要求コマンド生成部102bは、このときOBEX送信制御部102aから、“OBEX接続要求コマンド”を生成するために使用する接続データが転送されて来る場合は、当該接続データを含む“OBEX接続要求コマンド”を生成する。
OBEXデータ転送要求コマンド生成部102cは、OBEX送信制御部102aからの指示に基づいて、転送データの送信を指示するための“OBEXデータ転送要求コマンド”を生成するものである。具体的には、OBEX送信制御部102aからの指示があると、OBEX送信制御部102aから転送される送信データを所定のサイズに分割または結合し、転送データを生成する。そして、OBEXデータ転送要求コマンド生成部102cは、転送データを含む“OBEXデータ転送要求コマンド”を生成する。そして、OBEXデータ転送要求コマンド生成部102cは、当該“OBEXデータ転送要求コマンド”をSMP層送信処理部103に転送する。
ここで、OBEXデータ転送要求コマンド生成部102cが行なう送信データに対する分割または結合処理は、2KB(Kilo Byte)単位に行なわれる。
しかしながら、これに限られず、分割または結合処理のサイズは、下位層に相当する各処理部において処理可能なデータのサイズであればよい。
なお、本実施の形態において、OBEXデータ転送要求コマンド生成部102cは、2KB単位に送信データを分割または結合するが、これに対応する“OBEXデータ転送要求コマンド”は、64KBごとに1つ生成してもよい。
このようにOBEXデータ転送要求コマンド生成部102cを構成することで、送信回路100におけるデータの分割・結合処理の負荷を低減することができ、かつ、従来の受信機器70のOBEX層でも、従来どおり、64KBごとに1つの“OBEXデータ転送要求コマンド”が対応しているものとして処理することができる。
また、OBEXデータ転送要求コマンド生成部102cが送信データに対する分割・結合処理を2KB単位に行なえば、SMP層送信処理部103は、従来のSMP層送信処理ブロック503において行われていた分割処理(すなわち、送信データを2KB単位に分割する処理)を省略することができる。このため、SMP層送信処理部103は、SMP層送信処理ブロック503での処理に比べ、その負荷を軽減させることができる。
OBEX切断要求コマンド生成部102dは、OBEX送信制御部102aからの指示に基づいて、“OBEX切断要求コマンド”を生成し、当該“OBEX切断要求コマンド”をSMP層送信処理部103に転送するものである。
なお、OBEX切断要求コマンド生成部102dは、このときOBEX送信制御部102aから“OBEX切断要求コマンド”を生成するために使用する切断データが転送されて来る場合は、当該切断データを含む“OBEX切断要求コマンド”を生成する。
[SMP層送信処理部]
SMP層送信処理部103は、OBEX層送信処理部102と、IrLMP層送信処理部104との間に配置されており、IrSS方式において送信側のSMP層について定義されている機能を実現するものである。
SMP層送信処理部103では、具体的には、次の構成を備えることによりSMP層の機能を実現している。すなわち、SMP層送信処理部103は、SMP送信制御部103aと、SMP接続ヘッダ付加部103bと、SMPデータ転送ヘッダ付加部103cと、SMP切断ヘッダ付加部103dとを備える。
SMP送信制御部103aは、SMP層における送信処理の制御を行なうものである。具体的には、SMP送信制御部103aは、上位層に相当するOBEX層送信処理部102から転送される各種要求コマンドに応じて、SMP接続ヘッダ付加部103b、SMPデータ転送ヘッダ付加部103cおよびSMP切断ヘッダ付加部103dに指示を行なう。
また一方で、SMP送信制御部103aは、下位層に相当するIrLMP層送信処理部104からの各種の通知に応じて、OBEX層送信処理部102に対し所定の通知を行なう。
SMP接続ヘッダ付加部103bは、SMP送信制御部103aからの指示に基づいて、SMP送信制御部103aから転送されるデータに、SMP接続ヘッダを付加し、SMP接続ヘッダを付加したデータをIrLMP層送信処理部104に転送するとともに、IrLMP層送信処理部104に“接続要求”を行なう。
SMPデータ転送ヘッダ付加部103cは、SMP送信制御部103aからの指示に基づいて、SMP送信制御部103aから転送されるデータを所定のサイズに分割し、SMPデータ転送ヘッダを付加し、SMPデータ転送ヘッダを付加したデータをIrLMP層送信処理部104に転送するとともに、IrLMP層送信処理部104にデータ転送要求を行なう。
なお、従来SMPデータ転送ヘッダ付加部103cでは、SMP送信制御部103aから転送されるデータを、2KBごとに分割する処理を行なっていたが、本実施の形態においては、当該データはOBEX層送信処理部102においてすでに2KBごとに分割されているのでその必要はない。
SMP切断ヘッダ付加部103dは、SMP送信制御部103aからの指示に基づいて、SMP送信制御部103aから転送されるデータに、SMP切断ヘッダを付加し、SMP切断ヘッダを付加したデータをIrLMP層送信処理部104に転送するとともに、IrLMP層送信処理部104に“切断要求”を行なう。
[IrLMP層送信処理部]
IrLMP層送信処理部104は、SMP層送信処理部103と、IrLAP層送信処理部105との間に配置されており、IrSS方式において送信側のIrLMP層について定義されている機能を実現するものである。
IrLMP層送信処理部104では、具体的には、次の構成を備えることによりIrLMP層の機能を実現している。すなわち、IrLMP層送信処理部104は、IrLMP送信制御部104aと、IrLMP接続ヘッダ付加部104bと、IrLMPデータ転送ヘッダ付加部104cと、IrLMP切断ヘッダ付加部104dとを備える。
IrLMP送信制御部104aは、IrLMP層における送信処理の制御を行なうものである。具体的には、IrLMP送信制御部104aは、上位層に相当するSMP層送信処理部103から転送される各種要求に応じて、IrLMP接続ヘッダ付加部104bと、IrLMPデータ転送ヘッダ付加部104cと、IrLMP切断ヘッダ付加部104dに指示を行なう。
また一方で、IrLMP送信制御部104aは、下位層に相当するIr
LAP層送信処理部105からの各種の通知に応じて、SMP層送信処理部103に対し所定の通知を行なう。
IrLMP接続ヘッダ付加部104bは、IrLMP送信制御部104aからの指示に基づいて、IrLMP送信制御部104aから転送されるデータに、IrLMP接続ヘッダを付加し、IrLMP接続ヘッダを付加したデータをIrLAP層送信処理部105に転送するとともに、IrLAP層送信処理部105に“接続要求”を行なう。
IrLMPデータ転送ヘッダ付加部104cは、IrLMP送信制御部104aからの指示に基づいて、IrLMP送信制御部104aから転送されるデータに、IrLMPデータ転送ヘッダを付加し、IrLMPデータ転送ヘッダを付加したデータをIrLAP層送信処理部105に転送するとともに、IrLAP層送信処理部105にデータ転送要求を行なう。
IrLMP切断ヘッダ付加部104dは、IrLMP送信制御部104aからの指示に基づいて、IrLMP送信制御部104aから転送されるデータに、IrLMP切断ヘッダを付加し、IrLMP切断ヘッダを付加したデータをIrLMP層送信処理部104に転送するとともに、IrLAP層送信処理部105に“切断要求”を行なう。
[IrLAP層送信処理部]
IrLAP層送信処理部105は、IrLMP層送信処理部104と、IrPHY層送信処理部106との間に配置されており、IrSS方式において送信側のIrLAP層について定義されている機能を実現するものである。
IrLAP層送信処理部105では、具体的には、次の構成を備えることによりIrLAP層の機能を実現している。すなわち、IrLAP層送信処理部105は、IrLAP送信制御部105aと、IrLAP接続ヘッダ付加部105bと、IrLAPデータ転送ヘッダ付加部105cと、IrLAP切断ヘッダ付加部105dと、タイマ105eを備える。
IrLAP送信制御部105aは、IrLAP層における送信処理の制御を行なうものである。
タイマ105eは、時間計測を行なうものであり、IrSS方式のデータ通信における時間制御を行なうために用いられる。IrSS方式のデータ通信では、IrLAP層で時間制御が行われる。タイマ105eは、IrLAP送信制御部105aが、タイマ105eを用いて、IrLAP接続ヘッダ付加部105b、IrLAPデータ転送ヘッダ付加部105cおよびIrLAP切断ヘッダ付加部105dにおけるデータ転送のタイミングを調整するのに用いられる。
IrLAP接続ヘッダ付加部105bは、IrLAP送信制御部105aからの指示に基づいて、IrLAP送信制御部105aから転送されるデータに、IrLAP接続ヘッダを付加したSNRMパケットを作成する。そして、IrLAP接続ヘッダ付加部105bは、SNRMパケットをIrLAP層送信処理部105に転送するとともに、IrPHY層送信処理部106に“送信要求”を行なう。このとき、IrLAP接続ヘッダ付加部105bは、IrLAP接続ヘッダの「Negotiation Parameters」に転送速度や送信先のアドレスなどのパラメータを設定する。なお、送信先のアドレスは、「Negotiation Parameters」のなかの「Connection Address」に設定される。
IrLAPデータ転送ヘッダ付加部105cは、IrLAP送信制御部105aからの指示に基づいて、IrLAP送信制御部105aから転送されるデータに、IrLAPデータ転送ヘッダを付加したUIパケットを作成する。IrLAPデータ転送ヘッダの「Address Field」には、送信先のアドレスが含まれる。そして、IrLAPデータ転送ヘッダ付加部105cは、UIパケットをIrLAP層送信処理部105に転送するとともに、IrPHY層送信処理部106に“送信要求”を行なう。
IrLAP切断ヘッダ付加部105dは、IrLAP送信制御部105aからの指示に基づいて、IrLAP送信制御部105aから転送されるデータに、IrLAP切断ヘッダを付加したDISCパケットを作成する。IrLAP切断ヘッダの「Address Field」には、送信先のアドレスが含まれる。そして、IrLAP切断ヘッダ付加部105dは、DISCパケットをIrLAP層送信処理部105に転送するとともに、IrPHY層送信処理部106に“送信要求”を行なう。
[IrPHY層送信処理部]
IrPHY層送信処理部106は、IrLAP層送信処理部105と、送信信号の出力端子との間に配置されており、IrSS方式において送信側のIrPHY層について定義されている機能を実現するものである。すなわち、IrPHY層送信処理部106では、上位層に相当するIrLAP層送信処理部105から転送されてくるデータを所定のフォーマットに従いフレーム化し、変調し、送信信号として送信回路100の出力端子から出力するものである。
IrPHY層送信処理部106は、IrPHY層の機能を実現するために、IrPHYフレーム生成部106aと、IrPHY変調部106bとを備える。
IrPHY層フレーム生成部106aは、IrLAP層信号処理部105から転送されるデータを含むデータフレームを作成するものである。
IrPHY層変調部106bは、IrPHY層フレーム生成部106aが作成したデータフレームを変調し、送信信号として送信回路100の出力端子(図示せず)から出力するものである。
なお、IrPHY層送信処理部106から出力された送信信号は、赤外線通信デバイス(図示せず)を介して送信機器10の外部に送信される。
以上が、送信機器10が備える送信回路100の詳細である。
なお、送信回路100は、IrSS方式のOBEX層、SMP層、IrLMP層、IrLAP層、IrPHY層の処理を行なっているが、IrPHY層の処理のみを行なうように切り替えることができるように構成されていてもよい。例えば、送信回路100に、いずれの動作で処理を行なうかを選択する送信モード選択部(図示せず)を設けて、当該送信モード選択部で選択した動作で処理するようにすればよい。この場合、送信機器10では、送信ソフトウェア150ではなく、IrPHY層送信処理部106と、IrSS方式のOBEX層、SMP層、IrLMP層、IrLAP層の処理を行なう他の送信ソフトウェア(図示せず)が動作するようにすればよい。
また、この選択操作は、ユーザの操作によって行なえるように構成してもよい。
このように構成することで、送信モードを適宜切り替えることができ、各種送信ソフトウェアに対応可能な互換性の高い送信回路100を提供することができる。
以上のように、本実施の形態に係る送信回路100は、送信処理を開始するためのOBEX接続要求コマンドと、送信データを分割した転送データを含むOBEXデータ転送要求コマンドと、送信処理を終了するためのOBEX切断要求コマンドとを受信機器30、70に送信することによって、受信機器30、70と片方向赤外線通信を行なう送信機器10が備える回路である。
そして、本実施の形態に係る送信回路100は、送信ソフトウェア150側から送信データの送信処理を要求する送信要求信号を受信すると、OBEX接続要求コマンドと、OBEXデータ転送要求コマンドおよびOBEX切断要求コマンドを受信機器30、70に順次送信する構成である。
上記構成により、片方向赤外線通信の送信処理において、CPUの割り込み処理によるCPUの負荷を軽減でき、高速かつ安定した送信処理を行なうことができるという効果を奏する。
〔送信要求処理部の処理の流れ〕
次に、図3に示すフローチャートを参照しながら、送信要求処理部101の動作について説明する。同図は送信要求処理部101の動作の詳細について説明したフローチャートである。
まず、送信要求処理部101は、外部からの送信要求信号の入力を待ち受ける(S601)。本実施の形態において、外部とは、具体的には、送信要求信号を送信要求処理部101に入力する送信ソフトウェア150である。ここで、送信要求処理部101は、送信ソフトウェア150から送信要求信号が入力されなければ、そのまま入力を待ち続ける(S601においてNO)。
次に、送信ソフトウェア150が、送信要求信号を送信要求処理部101に入力すると(S601においてYES)、送信要求処理部101は、接続要求通知を生成し、OBEX層送信処理部102に対し接続要求通知を転送する(S602)。そして、送信要求処理部101は、OBEX層送信処理部102から、“接続完了”が通知されたか否かを判定する(S603)。送信要求処理部101は、OBEX層送信処理部102から、“接続完了”が通知されていなければ、OBEX層送信処理部102から、“接続完了”が通知されるのを待ち続ける(S603においてNO)。
その間に、OBEX層送信処理部102が生成した“OBEX接続要求コマンド”が、OBEX層送信処理部102から、IrLAP層送信処理部105にかけて順番に転送され、IrPHY層送信処理部106から、SNRMパケットを含む送信信号が出力されると、今度は、IrLAP層送信処理部105から、OBEX層送信処理部102にかけて“接続確認”が、順番に通知される。OBEX層送信処理部102は、SMP層送信処理部103から“接続確認”が通知されると、送信要求処理部101に対し、“接続完了”を通知する。
そして、送信要求処理部101は、OBEX層送信処理部102から、“接続完了”が通知されると(S603においてYES)、データ転送要求通知を生成し、OBEX層送信処理部102に転送する(S604)。そして、送信要求処理部101は、OBEX層送信処理部102から“データ転送完了”が通知されたか否かを判定する(S605)。送信要求処理部101は、OBEX層送信処理部102から“データ転送完了”が通知されていなければ、OBEX層送信処理部102から“データ転送完了”が通知されるのを待ち続ける(S605においてNO)。
その間に、OBEX層送信処理部102は、データ転送要求通知を送信要求処理部101から受け付けると、送信ソフトウェア150から入力される送信データを、送信バッファ108から読み出し、当該読み出した送信データを、2KB単位で分割する。そして、OBEX層送信処理部102は、2KBに分割した送信データを含む“OBEXデータ転送要求コマンド”を生成する。ここで、転送すべき送信データがまだある場合は、OBEX層送信処理部102は、“OBEXデータ転送要求コマンド”のopcodeに、“PUT”を設定する。
そして、OBEX層送信処理部102から、IrLAP層送信処理部105にかけて、順番に“OBEXデータ転送要求コマンド”が転送され、IrPHY層送信処理部106から、UIパケットを含む送信信号が送信回路100の出力端子に出力される。ここで、OBEX層送信処理部102は、分割した最後のデータに対しては、“OBEXデータ転送要求コマンド”のopcodeに、“PUT Final”を設定する。OBEX層送信処理部102は、opcodeに“PUT Final”を設定した“OBEXデータ転送要求コマンド”を生成すると、送信データの全てが送信されたものとして、送信要求処理部101に“データ転送完了”を通知する。
そして、送信要求処理部101は、OBEX層送信処理部102から、“データ転送完了”が通知されると(S605においてYES)、切断要求通知を生成し、OBEX層送信処理部102に転送する(S606)。そして、送信要求処理部101は、OBEX層送信処理部102から“切断完了”が通知されたか否かを判定する(S607)。送信要求処理部101は、OBEX層送信処理部102から“切断完了”が通知されていなければ、OBEX層送信処理部102から“切断完了”が通知されるのを待ち続ける(S607においてNO)。
その間に、OBEX層送信処理部102が生成した“OBEX切断要求コマンド”が、OBEX層送信処理部102から、IrLAP層送信処理部105にかけて順番に転送され、IrPHY層送信処理部106から、DISCパケットを含む送信信号が送信回路100の出力端子に出力されると、今度は、IrLAP層送信処理部105から、OBEX層送信処理部102にかけて“切断確認”が、順番に通知される。OBEX層送信処理部102は、SMP層送信処理部103から“切断確認”が通知されると、OBEX層送信処理部102は、送信要求処理部101に対し、“切断完了”を通知する。
そして、送信要求処理部101は、OBEX層送信処理部102から“切断完了”が通知されると(S607においてYES)、外部、すなわち、送信ソフトウェア150に、送信完了を通知する(S608)。その後、処理は終了する。
なお、送信要求処理部101は、上記S601、S603、S605およびS607においてエラーを検知した場合は、送信ソフトウェア150に、“エラー発生”や“エラー発生原因”等を通知してもよい。この場合、送信ソフトウェア150よりも上位層において、“エラー発生”や“エラー発生原因”等の通知に応じたエラーハンドリングを行なうことが可能になる。従って、送信機器10における障害対応が迅速に行なえるようになる。
〔送信回路における送信シーケンスの処理〕
次に、図4を用いて、送信回路100が備える各部の接続シーケンス、データ転送シーケンスおよび切断シーケンスの、3つのシーケンスにおける処理について以下に説明する。図4は、送信回路100がデータを送信する場合の流れを示したシーケンス図である。
なお、図4に示す、受信側の受信シーケンスの処理は、従来の受信機器70のものを示している。従って、以下ではその説明を省略する。また、同図では、IrPHY層送信処理部106については記載を省略している。
図4に示すように、送信機器10から受信機器30へデータ送信を行なう場合、まず、送信ソフトウェア150側から、送信回路100の送信要求処理部101に対して送信要求信号が入力される。そして、送信要求処理部101は、送信要求信号が入力されると、接続要求通知を生成し、当該接続要求通知をOBEX層送信処理部102に転送する。
[接続シーケンスの処理]
まず、図4を参照しながら、送信回路100における接続シーケンスの処理について以下に説明する。同図に示すように、OBEX層送信処理部102は、送信要求処理部101から、接続要求通知が転送されてくると、“OBEX接続要求コマンド”を生成し、当該“OBEX接続要求コマンド”をSMP層送信処理部103に転送する。
次に、SMP層送信処理部103は、OBEX層送信処理部102から、“OBEX接続要求コマンド”が転送されてくると、当該“OBEX接続要求コマンド”にSMP接続ヘッダを付加したデータを作成する。そして、SMP層送信処理部103は、“接続要求コマンド”にSMP接続ヘッダを付加したデータを、IrLMP層送信処理部104に転送するとともに、IrLMP層送信処理部104に“接続要求”を行なう。
次に、IrLMP層送信処理部104は、SMP層送信処理部103から“接続要求”を受け付けると、SMP層送信処理部103から転送されてくるデータにIrLMP接続ヘッダを付加したデータを、IrLAP層送信処理部105に転送するとともに、IrLAP層送信処理部105に“接続要求”を行なう。
次に、IrLAP層送信処理部105は、IrLMP層送信処理部104から“接続要求”を受け付けたときは、IrLMP層送信処理部104から転送されてくるデータにIrLAP接続ヘッダを付加したSNRMパケットを作成する。
このとき、IrLAP層送信処理部105は、IrLAP接続ヘッダの「Negotiation Parameters」に転送速度や送信先のアドレスなどのパラメータを設定する。なお、送信先のアドレスは、「Negotiation Parameters」のなかの「Connection Address」に設定される。IrLAP層送信処理部105は、SNRMパケットをIrPHY層送信処理部106に転送するとともに、IrPHY層送信処理部106に“送信要求”を行なう。
なお、上記データ転送および“送信要求”のタイミングは、IrLAP送信制御部105aが調整する。
IrPHY層送信処理部105は、IrLAP層送信処理部105から“送信要求”を受け付けると、SNRMパケットを送信信号として出力し、赤外線通信デバイスを介して外部、すなわち受信機器30に向けて送信する。
その後、IrLAP層送信処理部105から、OBEX層送信処理部102にかけて “接続確認”が通知される。
そして、OBEX層送信処理部102は、SMP層送信処理部103から“接続確認”が通知されると、送信要求処理部101に対し、“接続完了”を通知する。
以上が、送信回路100における接続シーケンスの処理である。
なお、SMP接続ヘッダ、IrLMP接続ヘッダおよびIrLAP接続ヘッダは、付加しなくてもよい場合がある。
[データ転送シーケンスの処理]
次に、図4を参照しながら、送信回路100におけるデータ転送シーケンスの処理について以下に説明する。図4に示すように、送信要求処理部101は、OBEX送信制御部102aから、“接続完了”が通知されると、送信ソフトウェア150側から入力される送信データを受け付け、OBEX層送信処理部102に対して、データ転送要求通知を転送する。なお、送信要求処理部101が受け付けた送信データは、送信バッファ108に一時的に格納される。また、送信データが、送信バッファ108に一時的に格納されるタイミングは、送信要求処理部101が、OBEX層送信処理部102に接続要求通知を行なう前でも後でもよい。
OBEX層送信処理部102は、送信要求処理部101から、データ転送要求通知が転送されてくると、送信バッファ108から送信データを読み出し、当該読み出した送信データを2KBのサイズに分割または結合して転送データを作成する。そして、OBEX層送信処理部102は、転送データを含む“OBEXデータ転送要求コマンド”を生成し、当該“OBEXデータ転送要求コマンド”を、逐次、SMP層送信処理部103に転送する。
次に、SMP層送信処理部103は、OBEX層送信処理部102から、“OBEXデータ転送要求コマンド”が転送されてくると、当該“OBEXデータ転送要求コマンド”を所定のサイズに分割し、SMPデータ転送ヘッダを付加して、IrLMP層送信処理部104に転送するとともに、IrLMP層送信処理部104に対し“データ転送要求”を行なう。
なお、ここでOBEX層送信処理部102において、すでに、送信データは、2KB毎のパケットになっているため、SMP層送信処理部103では、転送データをさらに分割する必要がない。
次に、IrLMP層送信処理部104は、SMP層送信処理部103から“データ転送要求”を受け付けると、SMP層送信処理部103から転送されるデータにIrLMPデータ転送ヘッダを付加して、IrLAP層送信処理部105に転送するとともに、IrLAP層送信処理部105に“データ転送要求”を行なう。
次に、IrLAP層送信処理部105は、IrLMP層送信処理部104から“データ転送要求”を受け付けると、IrLMP層送信処理部104から転送されるデータにIrLAPデータ転送ヘッダを付加して、タイミングを調整しながら、IrPHY層送信処理部105に転送するとともに、IrPHY層送信処理部106に“データ転送要求”を行なう。IrLAPデータ転送ヘッダの「Address Field」には、送信先のアドレスが含まれている。
IrPHY層送信処理部105は、IrLAP層送信処理部105から“データ転送要求”を受け付けると、UIパケットを送信信号として出力し、赤外線通信デバイスを介して外部、すなわち受信機器30に向けて送信する。
このような一連の処理を繰り返して、転送データをすべて転送し終わると、OBEX層送信処理部102は、送信要求処理部101に、“データ転送完了”を通知する。
以上が、送信回路100におけるデータ転送シーケンスの処理である。
なお、SMPデータ転送ヘッダ、IrLMPデータ転送ヘッダおよびIrLAPデータ転送ヘッダは、付加しなくてもよい場合がある。
[切断シーケンスの処理]
次に、図4を参照しながら、さらに送信回路100における切断要求シーケンスの処理について以下に説明する。
まず、図4に示すように、送信要求処理部101は、OBEX層送信処理部102から、“データ転送完了”が通知されると、OBEX層送信処理部102に対して切断要求通知を転送する。
次に、OBEX層送信処理部102は、送信要求処理部101から、切断要求通知が転送されてくると、“OBEX切断要求コマンド”を生成し、当該“OBEX切断要求コマンド”をSMP層送信処理部103に転送する。
次に、SMP層送信処理部103は、OBEX層送信処理部102から、“OBEX切断要求コマンド”が転送されてくると、当該“切断要求コマンド”にSMP切断ヘッダを付加して、IrLMP層送信処理部104に転送するとともに、IrLMP層送信処理部104に対して“切断要求”を行なう。
次に、IrLMP層送信処理部104は、SMP層送信処理部103から“切断要求”を受け付けると、SMP層送信処理部103から転送されてくるデータにIrLMP切断ヘッダを付加して、IrLMP層送信処理部104に転送するとともに、IrLMP層送信処理部104に対して“切断要求”を行なう。
また、IrLAP層送信処理部105は、IrLMP層送信処理部104から“切断要求”を受け付けると、IrLMP層送信処理部104から転送されてくるデータにIrLAP切断ヘッダを付加したDISCパケットを作成する。IrLAP層送信処理部105は、DISCパケットをIrPHY層送信処理部106に転送するとともに、IrPHY層送信処理部106に“切断要求”を行なう。IrLAPデータ転送ヘッダの「Address Field」には、送信先のアドレスが含まれている。
なお、上記データ転送および“切断要求”のタイミングは、IrLAP層送信処理部105が調整する。
IrPHY層送信処理部106は、IrLAP層送信処理部105から“切断要求”を受け付けると、DISCパケットを送信信号として出力し、赤外線通信デバイスを介して外部、すなわち受信機器30に向けて送信する。
その後、IrLAP層送信処理部105から、OBEX層送信処理部102にかけて“切断確認”が通知される。
そして、OBEX層送信処理部102は、SMP層送信処理部103から“切断確認”が通知されると、送信要求処理部101に対し、“切断完了”を通知する。
送信要求処理部101は、OBEX層送信処理部102から“切断完了”を通知されると、外部に、すなわち、送信ソフトウェア150側に送信完了信号を出力する。
以上が、送信回路100における切断シーケンスの処理である。
なお、SMP切断ヘッダ、IrLMP切断ヘッダおよびIrLAP切断ヘッダは、付加しなくてもよい場合がある。
(受信回路)
〔受信回路の構成〕
受信機器30が備える受信回路300の詳細について、図5を用いて説明すると以下のとおりである。
図5は、受信機器30が備える受信回路300の要部構成を示す機能ブロック図である。
図5に示すように、受信回路300は、受信要求処理部301と、OBEX層受信処理部(コマンド解析処理部)302と、SMP層受信処理部303と、IrLMP層受信処理部304と、IrLAP層受信処理部305と、IrPHY層受信処理部306と、受信バッファ308とをハードウェアとして備える構成である。
受信要求処理部301は、受信ソフトウェア350側からの入力信号に応じて、送信機器10からのデータ送信を受け付け、送信機器10から受信したデータを受信ソフトウェア350側に出力し、そして、送信機器10から送信されるデータをすべて受信した場合には、受信ソフトウェア350側にその旨を通知するものである。また、受信バッファ308は、受信ソフトウェア350側に出力するための受信データを一時的に保持しておくためのものである。
[受信要求処理部]
受信要求処理部301は、受信ソフトウェア350側から受信要求信号が入力されると、受信要求通知を生成する。そして、受信要求処理部301は、当該受信要求通知をOBEX層受信処理部302に転送するとともに、受信待機状態になる。
また、受信要求処理部301は、OBEX層受信処理部302から通知される“接続完了”を受け付ける。
また、受信要求処理部301は、OBEX層受信処理部302から、受信データが転送されてきた場合は、当該受信データを受信バッファ308経由で、受信ソフトウェア350側に出力する。
通常、送信データは、パケットに分割されて送信機器10から受信機器30に送信されてくる。
受信要求処理部301は、送信機器10から分割されて送られてくる送信データを受信すると、受信ソフトウェア150の処理能力にあわせるように受信バッファ308に格納する。
そして、送信機器10から分割されて送られてくる送信データを全て受信すると、受信要求処理部301は、OBEX層受信処理部302から“データ転送完了”の通知を受け付ける。
また、受信要求処理部301は、OBEX層受信処理部302から“切断完了”の通知を受けると、受信ソフトウェア350側に、受信完了信号を出力する。
なお、受信要求処理部301は、送信機器10から分割されて送られてくる送信データを全て受信するまで、受信データを待ち受けるようにしてもよい。
[OBEX層受信処理部]
OBEX層受信処理部302は、受信要求処理部301と、SMP層受信処理部303との間に配置されており、IrSS方式において受信側のOBEX層について定義されている機能を実現するものである。
OBEX層受信処理部302では、具体的には、ハードウェアとして次の構成を備えることによりOBEX層の機能を実現している。すなわち、OBEX層受信処理部302は、OBEX受信制御部(コマンド解析処理部)302aと、OBEX接続要求コマンド解析部(コマンド解析処理部)302bと、OBEXデータ転送要求コマンド解析部(コマンド解析処理部)302cと、OBEX切断要求コマンド解析部(コマンド解析処理部)302dとを備える。
OBEX受信制御部302aは、OBEX層における受信処理の制御を行なうものである。
OBEX受信制御部302aは、上位層に相当する受信要求処理部301からの受信要求通知に応じて、接続待機状態になるとともに、SMP層受信処理部303に接続要求を行なう。
また一方で、OBEX受信制御部302aは、SMP層受信処理部303からの各種の通知に応じて、OBEX接続要求コマンド解析部302b、OBEXデータ転送要求コマンド解析部302cおよびOBEX切断要求コマンド解析部302dに各種の通知を解析させる。また、OBEX受信制御部302aは、当該解析の結果を受け付け上位層に相当する受信要求処理部301に対し所定の通知を行なう。当該解析の結果に問題があれば、受信要求処理部301にエラーを通知する。そして、当該エラーの通知は、受信要求処理部301から、受信ソフトウェア350に渡される。
OBEX接続要求コマンド解析部302bは、OBEX受信制御部302aからの指示に基づいて、SMP層受信処理部303から転送される“接続通知”を解析し、当該解析結果をOBEX受信制御部302aに通知する。ここで、OBEX受信制御部302aは、当該解析結果を受け付けると受信要求処理部301に、“接続完了”を通知する。
OBEXデータ転送要求コマンド解析部302cは、OBEX受信制御部302aからの指示に基づいて、SMP層受信処理部303から転送される“データ転送通知”を受け付け、当該“データ転送通知”を解析し、受信データを抽出するものである。
具体的には、OBEXデータ転送要求コマンド解析部302cは、“データ転送通知”を解析し、転送データを抽出するとともに、データの最後を示すフラグを確認する。このデータの最後を示すフラグとは、SMP層受信処理部303から通知される“status=OK”である。また、OBEXデータ転送要求コマンド解析部302cは、“status=truncated”の間は、すなわち、データの最後を示すフラグ(“status=OK”)が現れるまで継続的に上記“データ転送通知”を受け付ける。OBEXデータ転送要求コマンド解析部302cは、抽出した転送データを受信データとして受信バッファ308に格納する。なお、受信データは、受信バッファ308経由で受信回路300の外部、すなわち、受信ソフトウェア350側に出力される。
なお、受信バッファ308は、受信ソフトウェア350の処理能力にあわせて受信回路300に設ければよく、また、受信ソフトウェア350の処理能力が十分に高い場合には、受信バッファ308を受信回路300に設けなくてもよい。
OBEX切断要求コマンド解析部302dは、OBEX受信制御部302aからの指示に基づいて、SMP層受信処理部303から通知される“切断通知”を解析し、当該解析結果をOBEX受信制御部302aに通知する。ここで、OBEX受信制御部302aは、当該解析結果を受け付けると、受信要求処理部301に“受信完了”を通知するものである。
[SMP層受信処理部]
SMP層受信処理部303は、OBEX層受信処理部302と、IrLMP層受信処理部304との間に配置されており、IrSS方式のSMP層において定義されている機能を実現するものである。
SMP層受信処理部303では、具体的には、次の構成を備えることによりSMP層の機能を実現している。すなわち、SMP層受信処理部303は、SMP受信制御部303aと、SMP接続ヘッダ解析部303bと、SMPデータ転送ヘッダ解析部303cと、SMP切断ヘッダ解析部303dとを備える。
SMP受信制御部303aは、SMP層における受信処理の制御を行なうものである。具体的には、SMP受信制御部303aは、上位層に相当するOBEX層受信処理部302から転送される接続要求に応じて、接続待機状態になるとともに、下位層に相当するIrLMP層受信処理部304に“接続要求”を行なう。
また一方で、SMP受信制御部303aは、IrLMP層受信処理部304からの各種の通知に応じて、SMP接続ヘッダ解析部303b、SMPデータ転送ヘッダ解析部303cおよびSMP切断ヘッダ解析部303dに各種の通知を解析させる。また、SMP受信制御部303aは、当該解析の結果を受け取り、OBEX層受信処理部302に対し所定の通知を行なう。
SMP接続ヘッダ解析部303bは、SMP受信制御部303aからの指示に基づいて、IrLMP層受信処理部304から転送される接続通知を解析し、当該解析結果をSMP受信制御部303aに通知する。ここで、SMP受信制御部303aは、当該解析結果を受け付けると、OBEX層受信処理部302に、“接続通知”を行なう。
SMPデータ転送ヘッダ解析部303cは、SMP受信制御部303aからの指示に基づいて、IrLMP層受信処理部304から転送される“データ転送通知”を受け付け、当該“データ転送通知”を解析し、当該解析結果を、OBEX層受信処理部302に通知する。具体的には、SMPデータ転送ヘッダ解析部303cは、当該解析の結果に問題が無ければOBEX層受信処理部302に“データ転送通知”を行なう。当該“データ転送通知”は、下位層からの“データ転送通知”ごとに行なってもよく、下位層からの“データ転送通知”をいくつかまとめて行なってもよい。
また、SMPデータ転送ヘッダ解析部303cは、当該解析の結果に問題があれば、その旨を上位層に順番に通知する。すなわち、SMPデータ転送ヘッダ解析部303cは、OBEX層受信処理部302にエラーを通知する。そして、OBEX層受信処理部302は、次に受信要求処理部301にエラーを通知し、その後、受信要求処理部301は、受信ソフトウェア350にエラーを通知する。
SMP切断ヘッダ解析部303dは、SMP受信制御部303aからの指示に基づいて、IrLMP層受信処理部304から転送される“切断通知”を解析し、当該解析結果をSMP受信制御部303aに通知する。ここで、SMP受信制御部303aは、当該解析結果を受け付けるとOBEX層受信処理部302に“切断通知”を行なう。
[IrLMP層受信処理部]
IrLMP層受信処理部304は、SMP層受信処理部303と、IrLAP層受信処理部305との間に配置されており、IrSS方式において受信側のIrLMP層について定義されている機能を実現するものである。
IrLMP層受信処理部304では、具体的には、次の構成を備えることによりIrLMP層の機能を実現している。すなわち、IrLMP層受信処理部304は、IrLMP受信制御部304aと、IrLMP接続ヘッダ解析部304bと、IrLMPデータ転送ヘッダ解析部304cと、IrLMP切断ヘッダ解析部304dとを備える。
IrLMP受信制御部304aは、IrLMP層における受信処理の制御を行なうものである。具体的には、IrLMP受信制御部304aは、上位層に相当するSMP層受信処理部303から転送される“接続要求”に応じて、接続待機状態になるとともに、下位層に相当するIrLAP層受信処理部305に“接続要求”を行なう。
また一方で、IrLMP受信制御部304aは、IrLMP層受信処理部304からの各種の通知に応じて、IrLMP接続ヘッダ解析部304b、IrLMPデータ転送ヘッダ解析部304cおよびIrLMP切断ヘッダ解析部304dに各種の通知を解析させる。また、IrLMP受信制御部304aは、当該解析の結果を受け取り、SMP層受信処理部303に対し所定の通知を行なう。
IrLMP受信制御部304aは、上位層に相当するSMP層受信処理部303から転送される“接続要求”に応じて、接続待機状態になるとともに、IrLAP層受信処理部305に“接続要求”を行なう。
また一方で、IrLMP受信制御部304aは、IrLAP層受信処理部305からの各種の通知に応じて、IrLMP接続ヘッダ解析部304b、IrLMPデータ転送ヘッダ解析部304cおよびIrLMP切断ヘッダ解析部304dに各種の通知を解析させる。また、IrLMP受信制御部304aは、当該解析の結果を受け取り、SMP層受信処理部303に対し所定の通知を行なう。当該解析の結果に問題があれば、SMP層受信処理部303にエラーを通知する。そして、当該エラーの通知は、SMP層受信処理部303から、OBEX層受信処理部302および受信要求処理部301を順に経て、受信ソフトウェア350に渡される。
IrLMP接続ヘッダ解析部304bは、IrLMP受信制御部304aからの指示に基づいて、IrLAP層受信処理部305から転送される“接続通知”を解析し、当該解析結果をIrLMP受信制御部304aに通知する。ここで、IrLMP受信制御部304aは、当該解析結果を受け付けると、SMP層受信処理部303に、“接続通知”を行なう。
IrLMPデータ転送ヘッダ解析部304cは、IrLMP受信制御部304aからの指示に基づいて、IrLAP層受信処理部305から転送される“データ転送通知”を解析し、データを抽出するとともに、当該解析結果および抽出したデータをIrLMP受信制御部304aに転送する。ここで、IrLMP受信制御部304aは、当該解析結果を受け付けると、SMP層受信処理部303に“データ転送通知”を行なう。
IrLMP切断ヘッダ解析部304dは、IrLMP受信制御部304aからの指示に基づいて、IrLAP受信制御部305aから転送される“切断通知”を解析し、当該解析結果を、IrLMP受信制御部304aに通知する。ここで、IrLMP受信制御部304aは、当該解析結果を受け付けると、SMP層受信処理部303に“切断通知”を行なう。
[IrLAP層受信処理部]
IrLAP層受信処理部305は、IrLMP層受信処理部304と、IrPHY層受信処理部306との間に配置されており、IrSS方式における受信機のIrLAP層について定義されている機能を実現するものである。
IrLAP層受信処理部305では、具体的には、次の構成を備えることによりIrLAP層の機能を実現している。すなわち、IrLAP層受信処理部305は、IrLAP受信制御部305aと、IrLAP接続ヘッダ解析部305bと、IrLAPデータ転送ヘッダ解析部305cと、IrLAP切断ヘッダ解析部305dと、IrLAPパケット識別部305eとを備える。
IrLAP受信制御部305aは、IrLAP層における受信処理の制御を行なうものである。具体的には、IrLAP受信制御部305aは、上位層に相当するIrLMP層受信処理部304から転送される“接続要求”に応じて、接続待機状態になるとともに、下位層に相当するIrPHY層受信処理部306に“受信要求”を行なう。
また一方で、IrLAP受信制御部305aは、IrPHY層受信処理部306から転送されたパケットの種類をIrLAPパケット識別部305eに識別させ、識別結果に応じて、IrLAP接続ヘッダ解析部305b、IrLAPデータ転送ヘッダ解析部305cおよびIrLAP切断ヘッダ解析部305dの各解析部にパケットを解析させ、当該解析結果を受け取る。
すなわち、IrLAPパケット識別部305eが、当該パケットを“SNRMパケット”と識別した場合、IrLAP受信制御部305aは、当該パケットを、IrLAP接続ヘッダ解析部305bに解析させる。IrLAPパケット識別部305eが、当該パケットを“UIパケット”と識別した場合、IrLAP受信制御部305aは、当該パケットを、IrLAPデータ転送ヘッダ解析部305cに解析させる。また、IrLAPパケット識別部305eが、当該パケットを“DISCパケット”と識別した場合、IrLAP受信制御部305aは、IrLAP切断ヘッダ解析部305dに解析させる。
また、IrLAP受信制御部305aは、各解析部から当該解析の結果を受け取ると、IrLMP層受信処理部304に対し所定の通知を行なう。当該解析の結果に問題があれば、IrLMP層受信処理部304にエラーを通知する。
IrLAP接続ヘッダ解析部305bは、IrLAP受信制御部305aからの指示に応じて、SNRMパケットを解析し、当該解析結果を、IrLAP受信制御部305aに通知する。ここで、IrLAP受信制御部305aは、当該解析結果を受け付けると、IrLAP層受信処理部305に、“接続通知”を行なう。
なお、SNRMパケットには、接続処理に用いられるデータが含まれている場合もある。また、IrLAP接続ヘッダ解析部305bは、当該解析結果に問題がある場合に、その旨を上位層に通知してもかまわない。例えば、IrLAP接続ヘッダ解析部305bの解析結果において、受信したパケットが、IrSS方式のSNRMパケットでないと判明したとき、IrLAP受信制御部305aは、その旨を上位層に通知してもかまわない。すなわち、IrLAP接続ヘッダ解析部305bは、受信したパケットが、IrDA方式のSNRMパケットであった場合や、IrSimple双方向方式のSNRMパケットを受け取った場合などに、解析結果に問題があると判断する。
IrLAPデータ転送ヘッダ解析部305cは、IrLAP受信制御部305aからの指示に応じて、UIパケットを解析し、当該解析結果を、IrLAP受信制御部305aに通知する。ここで、IrLAP受信制御部305aには、当該解析結果を受け付けると、IrLMP受信処理部304に“データ転送通知”を行なう。
IrLAP切断ヘッダ解析部305dは、IrLAP受信制御部305aからの指示に応じて、DISCパケットを解析し、当該解析結果を、IrLAP受信制御部305aに通知する。ここで、IrLAP受信制御部305aは、当該解析結果を受け付けると、IrLMP受信処理部304に“切断通知”を行なう。
IrLAPパケット識別部305eは、IrLAP送信制御部105aからの指示に応じて、IrPHY層受信処理部306から転送されるパケットの種類を識別する。前述のとおり、IrSS方式の場合、パケットの種類には、“SNRMパケット”、“UIパケット”、“DISCパケット”がある。
[IrPHY層受信処理部]
IrPHY層受信処理部306は、IrLAP層受信処理部305と、受信信号が入力される受信回路300の入力端子(図示せず)との間に配置されており、IrSS方式において受信側のIrPHY層について定義されている機能を実現するものである。この受信信号は、受信機器30が、赤外線通信デバイスを介して送信機器10から受信した送信信号である。
IrPHY層受信処理部306は、IrPHY層の機能を実現するために、IrPHY層フレーム解析部306aと、IrPHY層復調部306bとを備える。
IrPHY層復調部306bは、IrPHY層受信処理部306に入力された受信信号からデータフレームを復調し、当該データフレームを、IrPHY層フレーム解析部306aに転送するものである。
IrPHY層フレーム解析部306aは、IrPHY層復調部306bから転送されたデータフレームを解析し、当該解析結果をIrLAP層受信処理部305に転送するものである。このとき、IrPHY層フレーム解析部306aは、IrPHY層復調部306bから転送されたデータフレームにエラーがあるか否かを解析し、エラーがあった場合には、その旨を上位層に通知する。この場合、IrPHY層フレーム解析部306aから、順に、隣接する上位層にエラーが通知され、その後、受信要求処理部301から受信ソフトウェア350にエラーが通知される。また、受信機器30が液晶ディスプレイなどの表示部(図示せず)を備える場合には、エラーがあった旨を、表示部に表示させてもよい。このようにエラーがあった旨を表示部において表示することで、ユーザが、エラーがあったことを認識し、データ再送の操作等の対応をとることができるという効果を奏する。
このようにして、IrPHY層受信処理部306は、入力された受信信号を、復調して得たデータフレームを解析し、当該解析結果をIrLAP層受信処理部305に通知する。
以上が、受信機器30が備える受信回路300の詳細である。
なお、受信回路300は、IrSS方式のOBEX層、SMP層、IrLMP層、IrLAP層、IrPHY層の処理を行なっているが、IrPHY層の処理のみを行なうように切り替えることができるように構成されていてもよい。例えば、受信回路300に、いずれの動作で処理を行なうかを選択する受信モード選択部(図示せず)を設けて、当該受信モード選択部で選択した動作で処理するようにすればよい。この場合、受信機器30では、受信ソフトウェア350ではなく、IrPHY層受信処理部306と、IrSS方式のOBEX層、SMP層、IrLMP層、IrLAP層の処理を行なう他の受信ソフトウェア(図示せず)が動作するようにすればよい。
また、この選択操作は、ユーザの操作によって行なえるように構成してもよい。
このように構成することで、受信モードを適宜切り替えることができ、各種受信ソフトウェアに対応可能な互換性の高い受信回路300を提供することができる。
また、上記では、受信回路300が備えるOBEX層受信処理部302、SMP層受信処理部303、IrLMP層受信処理部304、IrLAP層受信処理部305およびIrPHY層受信処理部306の各受信処理部において、エラーを検出し、エラーを検出した層から、隣接する上位層に順にエラーが通知され、その後、受信要求処理部301から受信ソフトウェア350にエラーを通知する構成について説明した。すなわち、上記では、受信回路300の各処理部がエラーの有無を検出するエラー検出部として機能するものとして説明した。しかし、上記構成に限られず、例えば、受信要求処理部301が、上記各受信処理部が検出するエラーを監視し、各層のエラーを直接検出してもよい。すなわち、受信要求処理部301が、上記各送受信処理部のエラーを監視し、エラーを検知したら、受信要求処理部301から受信ソフトウェア350にエラーを通知する構成としてもかまわない。このように構成することで、受信要求処理部301が各層のエラーを統括的に管理することができる。また、上記各受信処理部が検出するエラーを監視するために専用の部材を設けてもかまわない。
また、OBEX層受信処理部302、SMP層受信処理部303、IrLMP層受信処理部304、IrLAP層受信処理部305およびIrPHY層受信処理部306において行なうエラー通知処理については次のように構成してもよい。すなわち、受信回路300において、受信ソフトウェア350に直接エラーを通知するエラー検出部(図示せず)を設けておき、当該エラー検出部が受信ソフトウェア350に対して、エラーを通知するようにしてもよい。
また、OBEX層受信処理部302、SMP層受信処理部303、IrLMP層受信処理部304、IrLAP層受信処理部305およびIrPHY層受信処理部306においてエラーを検知した場合、受信機器30が液晶ディスプレイなどの表示部(図示せず)を備える場合には、エラーがあった旨を、表示部に表示させてもよい。このようにエラーがあった旨を表示部において表示することで、ユーザが、エラーがあったことを認識し、データ再送の操作等の対応をとることができるという効果を奏する。
以上のように、本実施の形態に係る受信回路300は、送信機器10、50から、送信機器10、50が送信処理を開始するためのOBEX接続要求コマンドと、送信機器10、50によって分割された転送データを含むOBEXデータ転送要求コマンドと、送信機器10、50が送信処理を終了するためのOBEX切断要求コマンドとを受信することによって、送信機器10、50と片方向通信を行なう受信機器30が備える回路である。
また、本実施の形態に係る受信回路300は、送信機器10、50からOBEX接続要求コマンド、OBEXデータ転送要求コマンドおよびOBEX切断要求コマンドを順次受信すると、受信ソフトウェア350に対して、接続完了を通知するための“接続完了通知”、データ転送完了を通知するための“データ転送完了通知”、および切断完了を通知するための“切断完了通知”を転送することなく、OBEXデータ転送要求コマンドに含まれる転送データを順次転送するとともに、受信処理が完了したことを示す“受信完了通知”を転送する構成である。
上記構成により、片方向赤外線通信の受信処理において、CPUの割り込み処理によるCPUの負荷を軽減でき、高速かつ安定した受信処理を行なうことができるという効果を奏する。
〔受信要求処理部の処理の流れ〕
次に、図6に示すフローチャートを参照しながら、受信要求処理部301の動作について説明する。同図は受信要求処理部301の動作の詳細について説明したフローチャートである。
まず、受信要求処理部301は、外部からの受信要求信号の入力を待ち受ける(S801)。本実施の形態において、外部とは、具体的には、受信要求信号を入力する受信ソフトウェア350である。ここで、受信要求処理部301は、受信ソフトウェア350から受信要求信号が入力されなければ、そのまま受信要求信号の入力を待ち続ける(S801においてNO)。受信ソフトウェア350が、受信要求信号を受信要求処理部301に入力すると(S801においてYES)、受信要求処理部301は、受信要求通知を生成し、OBEX層受信処理部302に対し受信要求通知を転送する(S802)。そして、受信要求処理部301は、OBEX層受信処理部302から、“接続完了”が通知されたか否かを判定する(S803)。受信要求処理部301は、OBEX層受信処理部302から、“接続完了”が通知されるのを待ち続ける(S803においてNO)。
その間に、OBEX層受信処理部302が生成した“OBEX接続要求コマンド”が、OBEX層受信処理部302から、IrLAP層受信処理部305にかけて順番に転送され各層の処理部は、受信待機状態になる。
その後、受信機器30が、送信機器10から送信されるSNRMパケットを受信すると、IrLAP層受信処理部305から、OBEX層受信処理部302にかけて、順に、“接続通知”が転送される。OBEX層受信処理部302は、SMP層受信処理部303から、“接続通知”を受信すると、OBEX層受信処理部302は、受信要求処理部301に対し、“接続完了”を通知する。
そして、受信要求処理部301は、OBEX層受信処理部302から、“接続完了”が通知されると(S803においてYES)、OBEX層受信処理部302からのデータ転送を受け付ける(S804)。
ここで、送信機器10からは、UIパケットが受信機器30に継続して送信される。受信機器30は、送信機器10から送信されるUIパケットを受信すると、IrLAP層受信処理部305から、OBEX層受信処理部302にかけて“データ転送通知”が転送される。OBEX層受信処理部302は、“データ転送通知”を受け付けると、当該“データ転送通知”から受信データを抽出し、当該受信データを受信バッファ308に書き込む。
受信要求処理部301は、受信データに続きがあるか否かを判定するため、OBEX層受信処理部302から“データ転送完了”が通知されたか否かを判定する(S805)。受信要求処理部301は、OBEX層受信処理部302から“データ転送完了”が通知されていなければ、OBEX層受信処理部302から“データ転送完了”が通知されるまで、データ転送を継続して受け付ける(S805においてNO)。
その間に、送信機器10から、全てのパケットデータが転送され、OBEX層受信処理部302において、それ以上送信するパケットデータが無いことを検知すると、OBEX層受信処理部302は、受信要求処理部301に対し“データ転送完了”を通知する。
そして、受信要求処理部301は、OBEX層受信処理部302から、“データ転送完了”が通知されると(S805においてYES)、OBEX層受信処理部302から、“切断完了”が通知されたか否かを判定する(S806)。そして、受信要求処理部301は、OBEX層受信処理部302から、“データ切断完了”が通知されていなければ、OBEX層受信処理部302から、“データ切断完了”が通知されるのを待ち受ける(S806においてNO)。
その間に、送信機器10から送信されるDISCパケットを受信機器30が受信すると、IrLAP層受信処理部305から、OBEX層受信処理部302にかけて“切断通知”が転送される。OBEX層受信処理部302は、SMP層受信処理部303から、“切断通知”を受信すると、受信要求処理部301に対して、“切断完了”を通知する。
そして、受信要求処理部301は、OBEX層受信処理部302から“切断完了”が通知されると(S807においてYES)、外部、すなわち、受信ソフトウェア350に、“受信完了”を通知する(S808)。その後、処理は終了する。
〔受信回路における受信シーケンスの処理〕
次に、図7を用いて、受信回路300が備える各部の接続シーケンス、データ転送シーケンスおよび切断シーケンスの、3つのシーケンスにおける処理について以下に説明する。図7は、受信回路300がデータを送信する場合の流れを示したシーケンス図である。
なお、図4に示す、送信側の送信シーケンスの処理は、従来の送信機器50のものを示している。従って、以下ではその説明を省略する。
なお、図7において、送信機器の動作は、従来と同様であるため以下ではその説明は省略する。また、同図では、IrPHY層受信処理部306については記載を省略している。
図7に示すように、受信機器30が、送信機器10からデータを受信する場合、まず、受信ソフトウェア350側から、受信回路300の受信要求処理部301に対して受信要求信号が入力される。そして、受信要求処理部301は、受信要求信号が入力されると、受信要求通知を生成し、当該受信要求通知を下位層に相当するOBEX層受信処理部302に転送するとともに受信待機状態になる。
[接続シーケンスの処理]
まず、OBEX層受信処理部302は、受信要求処理部301から、受信要求通知が転送されてくると、受信待機状態になるとともに、SMP層受信処理部303に対して、“接続要求”を行なう。そして、SMP層受信処理部303から、IrLAP層受信処理部305にかけて、順に“接続要求”が行なわれるとともに、各処理部は、受信待機状態になる。
その後、送信機器10から送信されてくるSNRMパケットを含む送信信号を、受信機器30が赤外線通信デバイスを介して受信すると、当該SNRMパケットを含む送信信号が、受信信号として、受信回路300に入力される。
まず、受信回路300のIrPHY層受信処理部306は、受信信号を復調し、SNRMパケットを抽出し、IrLAP層受信処理部305に転送する。
次に、IrLAP層受信処理部305は、SNRMパケットを解析し、IrLMP層受信処理部304に“接続通知”を行なう。IrLAP接続ヘッダの「Negotiation Parameters」には転送速度や受信機器30を特定するためのアドレスなどのパラメータが含まれている。なお、当該アドレスは、「Negotiation Parameters」のなかの「Connection Address」に設定される。そして、IrLMP層受信処理部304から、OBEX層受信処理部302にかけて、順に“接続通知”が行なわれる。なお、IrLAPデータ転送ヘッダの「Address Field」に受信機器30以外のアドレスが設定されている場合は、IrLMP層受信処理部304に“接続通知”を行なわない。
次に、OBEX層受信処理部302は、SMP層受信処理部303から、“接続通知”を受け付けると、受信要求処理部301に、“接続完了”を通知する。
以上が、受信回路300における接続シーケンスの処理である。
[データ転送シーケンスの処理]
その後、送信機器10から、逐次、送信されてくるUIパケットを含む送信信号を、受信機器30が赤外線通信デバイスを介して受信すると、当該UIパケットを含む送信信号が、受信信号として、受信回路300に入力される。
受信回路300のIrPHY層受信処理部306は、受信信号を復調し、UIパケットを抽出し、IrLAP層受信処理部305に転送する。
次に、IrLAP層受信処理部305は、UIパケットを解析し、IrLMP層受信処理部304に“データ転送通知”を行なう。なお、IrLAPデータ転送ヘッダの「Address Field」には、受信機器30を特定するためのアドレスが含まれており、当該アドレス以外のパケットの場合は、IrLMP層受信処理部304に“データ転送通知”を行なわない。
そして、IrLMP層受信処理部304から、OBEX層受信処理部302にかけて、順に“データ転送通知”が行なわれる。
次に、OBEX層受信処理部302は、SMP層受信処理部303から、“データ転送通知”を受け付けると、当該“データ転送通知”から受信データを抽出する。そして、OBEX層受信処理部302は、抽出した受信データを受信バッファ308に格納する。すなわち、受信データは、受信バッファ308を介して外部、つまり、受信ソフトウェア350側に出力される。
以上のような処理を繰り返し、送信機器10から、逐次、送信されてくるUIパケットを含む送信信号をすべて受信し終えたこと(“status=OK”)がSMP層受信処理部303から、OBEX層受信処理部302に通知されると、OBEX層受信処理部302は、受信要求処理部301に対して“データ転送完了”を通知する。
以上が、受信回路300におけるデータ転送シーケンスの処理である。
[切断シーケンスの処理]
そして、送信機器10から、送信されてくるDISCパケットを含む送信信号を、受信機器30が赤外線通信デバイスを介して受信すると、当該DISCパケットを含む送信信号が、受信信号として、受信回路300に入力される。
受信回路300のIrPHY層受信処理部306は、受信信号を復調し、DISCパケットを抽出し、IrLAP層受信処理部305に転送する。
次に、IrLAP層受信処理部305は、DISCパケットを解析し、IrLMP層受信処理部304に“切断通知”を行なう。なお、IrLAP切断ヘッダの「Address Field」には、受信機器30を特定するためのアドレスが含まれており、設定されたアドレス以外のパケットの場合は、IrLMP層受信処理部304に“切断通知”を行なわない。
そして、IrLMP層受信処理部304から、OBEX層受信処理部302にかけて、順に“切断通知”が行なわれる。
次に、OBEX層受信処理部302は、SMP層受信処理部303から、“切断通知”を受け付けると、受信要求処理部301に、“切断完了”を通知する。
受信要求処理部301は、OBEX層受信処理部302から“切断完了”が通知されると、受信ソフトウェア350側に、受信完了信号を出力する。
以上が、受信回路300における切断シーケンスの処理である。
〔送信回路および受信回路の変形例〕
続いて、本実施の形態に係る送信回路100および受信回路300の好ましい変形例について説明する。
[送信回路の変形例]
まず、図12を用いて、送信回路100にIrPHY層の受信処理を行なう機能を追加し、以上で説明した送信回路100として動作する送信動作モードと、IrPHY層における送受信処理を行なう送受信回路として動作する送受信動作モードとを切り替え可能にした場合の例について説明する。
図12は、送信機器10が備える送信回路100の要部構成の変形例を示す機能ブロック図である。同図に示すように、本変形例では、図1で示した送信回路100に、IrPHY層受信処理部107を追加した構成となっている。すなわち、本変形例では、送信回路100にIrPHY層受信処理部107を追加することで、送信回路100がIrPHY層の受信処理を行なえるようにしている。なお、前述の構成と同様の機能を有する構成には同一の符号を付して、その説明を省略する。
IrPHY層受信処理部107は、IrPHYフレーム解析部107aおよびIrPHY復調部107bを備える。これら、IrPHY層受信処理部107、IrPHYフレーム解析部107aおよびIrPHY復調部107bの機能ついては、既に説明したIrPHY層受信処理部306、IrPHY層フレーム解析部306aおよびIrPHY層復調部306bの機能と同様であるのでその説明を省略する。
そして、送信回路100に、次の2つの動作モードの切り替えを行なう送受信モード切替部(図示せず)を設ける。1つ目の動作モードは、送信要求処理部101と、OBEX層送信処理部102と、SMP層送信処理部103と、IrLMP層送信処理部104と、IrLAP層送信処理部105と、IrPHY層送信処理部106とを用いて送信回路として動作する送信動作モードであり、2つ目の動作モードは、IrPHY層送信処理部106およびIrPHY層受信処理部107を用いて、IrPHY層を処理する送受信回路として動作する送受信動作モードである。
このように構成すれば、送受信動作モードで動作するとき、IrLAP層からOBEX層の送受信処理を実行するような従来の送受信ソフトウェア(SW)250を用いて通信することができるようになる。すなわち、従来の双方向通信のソフトウェアにも対応可能となり、より互換性の高い送信回路100を提供することができる。
なお、送受信モード切替部(図示せず)における動作モードの選択操作は、ユーザの操作によって行なえるように構成してもよい。
なお、送信バッファ108において、送受信ソフトウェア(SW)250側から入力される送信データと、送受信ソフトウェア(SW)250側に出力する受信データとを一時的に保持しておく構成にしてもよい。また、このためのバッファを送信回路100に新たに設ける構成にしてもよい。
[受信回路の変形例]
次に、図13を用いて、受信回路300にIrPHY層の送信処理を行なう機能を追加し、以上で説明した受信回路300として動作する送信動作モードと、IrPHY層における送受信処理を行なう送受信回路として動作する送受信動作モードとを切り替え可能にした場合の例について説明する。
図12は、受信機器30が備える受信回路300の要部構成の変形例を示す機能ブロック図である。同図に示すように、本変形例では、図5で示した受信回路300に、IrPHY層送信処理部307を追加した構成となっている。すなわち、本変形例では、受信回路300にIrPHY層送信処理部307を追加することで、受信回路300がIrPHY層の送信処理を行なえるようにしている。なお、前述の構成と同様の機能を有する構成には同一の符号を付して、その説明を省略する。
IrPHY層送信処理部307は、IrPHY層フレーム生成部307aおよびIrPHY層変調部307bを備える。これら、IrPHY層送信処理部307、IrPHY層フレーム生成部307aおよびIrPHY層変調部307bの機能ついては、既に説明したIrPHY層送信処理部106、IrPHYフレーム生成部106aおよびIrPHY変調部106bの機能と同様であるのでその説明を省略する。
そして、受信回路300に、次の2つの動作モードの切り替えを行なう送受信モード切替部(図示せず)を設ける。1つ目の動作モードは、受信要求処理部301と、OBEX層受信処理部302と、SMP層受信処理部303と、IrLMP層受信処理部304と、IrLAP層受信処理部305と、IrPHY層受信処理部306とを用いて受信回路として動作する受信動作モードであり、2つ目の動作モードは、IrPHY層受信処理部306およびIrPHY層送信処理部307を用いて、IrPHY層を処理する送受信回路として動作する送受信動作モードである。
このように構成すれば、送受信動作モードで動作するとき、IrLAP層からOBEX層の送受信処理を実行するような従来の送受信SW250を用いて通信することができるようになる。すなわち、従来の双方向通信のソフトウェアにも対応可能となり、より互換性の高い受信回路300を提供することができる。
なお、送受信モード切替部(図示せず)における動作モードの選択操作は、ユーザの操作によって行なえるように構成してもよい。
なお、受信バッファ308において、送受信ソフトウェア(SW)250側に出力する受信データと、送受信ソフトウェア(SW)250側から入力される送信データとを一時的に保持しておく構成にしてもよい。また、このためのバッファを受信回路300に新たに設ける構成にしてもよい。
なお、本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。