(57)【特許請求の範囲】
【請求項１】
受信データの復調処理を行いバッファ部に蓄積するモデム処理部と、前記バッファ部に蓄積された復調データにファクシミリ通信又はデータ通信のためのプロトコル処理を行うモデム制御部と、前記モデム制御部を起動させる割り込み処理部と、を具備し、前記割り込み処理部を起動させる起動要求プログラムを前記バッファ部に記憶し、前記モデム処理部は、前記バッファ部に所定量の復調データが蓄積された場合に、前記起動要求プログラムによって前記割り込み処理部を起動させた後、前記割り込み処理部によって前記モデム制御部を起動させることを特徴とするソフトウェアモデム。
【請求項２】
前記モデム制御部は、本ソフトウェアモデムの起動時に前記起動要求プログラムを前記バッファ部に書き込むことを特徴とする請求項１記載のソフトウェアモデム。
【請求項３】
請求項１または請求項２のいずれかに記載のソフトウェアモデムを備えた通信端末装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェアでモデム処理を実現するソフトウェアモデム及びそれを備えた通信端末装置に関する。
【０００２】
【従来の技術】
従来、ファクシミリ装置等に搭載されたモデム装置は、ＤＳＰ（Digital Signal Processor）等のハードウェア装置により構成されていた。しかし、ハードウェア装置を利用することによるコスト面での問題から、近年、装置本体が備える単一のＣＰＵにより動作させるソフトウェアモデムが開発されている。このようなソフトウェアモデムにおいては、データを変復調する処理、変復調したデータを一時的にバッファに蓄積する処理やその他の処理等がＣＰＵの制御の下、順次実行される。
【０００３】
例えば、ソフトウェアモデムは、図５に示すように、オペレーティングシステム（以下、「ＯＳ」という）５０１上で管理されるモデム処理部５０２、モデム制御部５０３及び上位アプリケーション５０４等をＣＰＵが動作させることでモデム装置として機能する。図示するソフトウェアモデムにおいて、ＮＣＵ５０５を介してデータを受信する場合には、ＡＦＥ処理部５０６及びＡＦＥバッファ５０７を介して受け取った受信データにモデム処理部５０２で復調処理を施し、復調後のデータをデータバッファ５０８に蓄積する。モデム制御部５０３は、データバッファ５０８に蓄積されたデータを取り込み、取り込んだデータに例えば、ＩＴＵ−Ｔ勧告Ｔ．３０やＩＴＵ−Ｔ勧告Ｖ．４２に準拠したプロトコル処理を行う。上位アプリケーション５０４は、モデム制御部５０３からデータを受け取り、画面表示等の処理を行う。
【０００４】
【発明が解決しようとする課題】
しかしながら、このようなソフトウェアモデムにおいては、モデム制御部５０３がデータバッファ５０８に蓄積されたデータを取り込む際の割り込み処理の制御が問題となる。
【０００５】
データバッファ５０８内のデータを取り込む際の割り込み処理の制御として、モデム制御部５０３が一定時間間隔でデータバッファ５０８内のデータ量を確認し、一定量以上のデータ量が蓄積された場合にデータを取り込むことが考えられる。しかし、この場合にはデータバッファ５０８内のデータ量が一定量に満たない場合であっても、モデム制御部５０３がデータバッファ５０８内のデータ量を確認するという事態が生じ得る。
【０００６】
ところで、モデム制御部５０３等のアプリケーションのあらゆる処理は、ＯＳ５０１により管理される。モデム制御部５０３がデータバッファ５０８内のデータ量を確認している間は、ＯＳ５０１は、他のアプリケーションに処理させることができない。したがって、上述のように、データバッファ５０８内のデータ量が一定量に達しているか否かに関わらず、データバッファ５０８内のデータ量を確認する処理を一定時間間隔で行った場合、モデム制御部５０３が実際にデータの取り込み処理を行わないにも関わらず、他のアプリケーションが処理不能になるという事態が頻繁に生じることになる。このような事態を回避するため、モデム制御部５０３の割り込み処理をどのように制御するかが問題となる。
【０００７】
本発明は、かかる問題点に鑑みて為されたものであり、ソフトウェアモデムにおける割り込み処理を効率的に行うことができるソフトウェアモデム及びそれを備えた通信端末装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明は、受信データの復調処理を行いバッファ部に蓄積するモデム処理部と、前記バッファ部に蓄積された復調データにファクシミリ通信又はデータ通信のためのプロトコル処理を行うモデム制御部と、前記モデム制御部を起動させる割り込み処理部と、を具備し、前記割り込み処理部を起動させる起動要求プログラムを前記バッファ部に記憶し、前記モデム処理部は、前記バッファ部に所定量の復調データが蓄積された場合に、前記起動要求プログラムによって前記割り込み処理部を起動させた後、前記割り込み処理部によって前記モデム制御部を起動させるものである。
【０００９】
これにより、所定量の復調データが蓄積された場合にのみモデム制御部が起動されることとなるので、効率的に割り込み処理を行うことができると共に、他のアプリケーションの処理が頻繁に不能となるような事態を回避することができる。
【００１０】
【発明の実施の形態】
本発明の第１の態様に係るソフトウェアモデムは、受信データの復調処理を行いバッファ部に蓄積するモデム処理部と、前記バッファ部に蓄積された復調データにファクシミリ通信又はデータ通信のためのプロトコル処理を行うモデム制御部と、前記モデム制御部を起動させる割り込み処理部と、を具備し、前記割り込み処理部を起動させる起動要求プログラムを前記バッファ部に記憶し、前記モデム処理部は、前記バッファ部に所定量の復調データが蓄積された場合に、前記起動要求プログラムによって前記割り込み処理部を起動させた後、前記割り込み処理部によって前記モデム制御部を起動させることを特徴とする。
【００１１】
この構成によれば、バッファ部に所定量の復調データが蓄積された場合にのみモデム制御部が起動されることとなるので、効率的に割り込み処理を行うことができると共に、他のアプリケーションの処理が頻繁に不能となるような事態を回避することができる。
【００１６】
本発明の第２の態様は、第１の態様に係るソフトウェアモデムにおいて、前記モデム制御部は、本ソフトウェアモデムの起動時に前記起動要求プログラムを前記バッファに書き込む構成を採る。
【００１７】
この構成によれば、本ソフトウェアモデムの起動時にモデム制御部の起動要求プログラムの開始アドレスが書き込まれるので、モデム処理部がデータ受信処理を開始する場合にモデム制御部の起動要求プログラムの開始アドレスが書き込まれておらず、誤動作するという事態を回避することができ、確実にモデム制御部の起動を要求することができる。
【００２０】
本発明の第３の態様は、第１または第２のいずれかの態様に係るソフトウェアモデムを備えた通信端末装置である。
【００２４】
以下、本発明の実施の形態について図面を参照にして説明する。
【００２５】
図１は、本発明の一実施の形態に係るソフトウェアモデムが適用される通信端末装置の構成の一部の構成を示すブロック図である。本通信端末装置は、データに対する変復調処理等のモデムが行う処理（以下、「モデム処理」という）を、本通信端末装置に搭載された単一のＣＰＵがソフトウェアで実現するため、モデム処理を行うためのＤＳＰ等のハードウェア装置は搭載されていない。そして、ＣＰＵは、モデム処理を行う処理部を含む全てのアプリケーションの制御をＯＳ１０１を介して行う。なお、モデム処理部、モデム制御部及び割り込み処理部は、ＣＰＵがプログラムを実行することにより実現する機能であるが、説明の便宜上、そのような処理部が存在するものとして説明する。
【００２６】
図１において、ＡＦＥ処理部１０２は、ＮＣＵ（Network Control Unit）１０３が受信した受信データを受け取り、アナログ／デジタル（Ａ／Ｄ）変換処理を施してＡＦＥバッファ１０４に蓄積する。ＡＦＥバッファ１０４は、ＲＡＭ上の一定領域に割り付けられている。一方、ＡＦＥ処理部１０２は、ＡＦＥバッファ１０４に蓄積された送信データを受け取り、デジタル／アナログ（Ｄ／Ａ）変換処理を施してＮＣＵ１０３に渡す。
【００２７】
モデム処理部１０５は、ＡＦＥバッファ１０４に蓄積された受信データを受け取り、復調処理を施してデータバッファ１０６に蓄積する。データバッファ１０６は、ＡＦＥバッファ１０４と同様に、ＲＡＭ上の一定領域に割り付けられている。一方、モデム処理部１０５は、データバッファ１０６に蓄積された送信データに変調処理を施してＡＦＥバッファ１０４に蓄積する。
【００２８】
モデム制御部１０７は、データバッファ１０６に蓄積された復調データを取り込み、必要に応じて復調データに対してファクシミリ通信又はデータ通信を行うためのプロトコル処理を施した後、上位アプリケーション１０８に渡す。具体的には、モデム制御部１０７は、ＩＴＵ−Ｔ勧告Ｔ．３０に定められたファクシミリ通信手順やＩＴＵ−Ｔ勧告Ｖ．４２に定められたデータ通信手順に準じた通信制御を行う。一方、上位アプリケーション１０８から送信データを受け取り、データバッファ１０６に蓄積する。
【００２９】
このような構成を有する通信端末装置のデータ受信時において、モデム処理部１０５は、データバッファ１０６に蓄積された受信データが一定量に到達しているかを監視し、一定量に到達した場合に予めモデム制御部１０７が指定した、割り込み処理のためのサブルーチンプログラム（以下、単に「サブルーチン」という）をコールする。
【００３０】
具体的には、起動時等の初期動作時フローにおいて、モデム制御部１０７が予め定められたＲＡＭ上のアドレスに割り込み処理のためのサブルーチンの開始アドレスを書き込む。この予め定められたＲＡＭ上のアドレスは、モデム処理部１０５の処理プログラムの中で割り込み処理のためのポインタ（以下、「割り込み処理ポインタ」という）１０９として機能する。すなわち、モデム処理部１０５がプログラムを実行していく過程で、データバッファ１０６に蓄積された受信データが一定量に到達したと判断した場合、モデム処理部１０５は、この割り込み処理ポインタ１０９により指定されたサブルーチンをコールする。コールされたサブルーチンには、割り込み処理部１１０が動作するためのプログラムが書き込まれている。この割り込み処理ポインタ１０９により指定されるサブルーチンは、モデム制御部１０７の処理プログラムの中に含まれる。
【００３１】
図２は、本通信端末装置の初期動作時の一例を示すフロー図である。図２に示すように、初期動作する場合、本通信端末装置においては、まず、モデム制御部１０７が起動され（ＳＴ２０１）、次にモデム処理部１０５が起動され（ＳＴ２０２）、最後にＡＦＥ処理部１０２が起動される（ＳＴ２０３）。このような順序で起動される過程でモデム制御部１０７は、上述のように、割り込み処理ポインタ１０９として機能する、予め定められたＲＡＭ上のアドレスに割り込み処理のためのサブルーチンの開始アドレスを書き込む。そして、これ以降、ＡＦＥ処理部１０２及びモデム処理部１０５がデータ通信に必要な処理を開始する。
【００３２】
図３は、ＲＯＭに格納されたモデム処理部１０５及びモデム制御部１０７のサブルーチンプログラムの一例を示す図である。図３（ａ）は、モデム制御部１０７のサブルーチンプログラムを示し、ＲＯＭのアドレス１０００，００００〜１ＦＦＦ，ＦＦＦＦに格納されている。図３（ｂ）は、モデム処理部１０５のサブルーチンプログラムを示し、ＲＯＭのアドレス２０００，００００〜２４ＦＦ，ＦＦＦＦに格納されている。図３（ｃ）は、割り込み処理ポインタ１０９として機能する、ＲＡＭ上のアドレスの一例を示す図である。
【００３３】
本通信端末装置の初期動作時において、モデム制御部１０７が起動されると、モデム制御部１０７は、図３（ａ）中▲１▼のプログラムに従って割り込み処理ポインタ１０９として機能するＲＡＭ上のアドレスに、割り込み処理のためのサブルーチンの開始アドレスを書き込む。ここで割り込み処理ポインタ１０９として機能するＲＡＭ上のアドレスは、Ｅ０００，００００であるものとし、モデム制御部１０７の割り込み処理のためのサブルーチンの開始アドレスは、１８００，００００であるものとする。この割り込み処理ポインタ１０９として機能するＲＡＭ上のアドレスは、予めモデム制御部１０７で認識されているものとする。
【００３４】
割り込み処理ポインタ１０９として機能するＲＡＭ上のアドレスに、モデム制御部１０７の割り込み処理のためのサブルーチンの開始アドレスを書き込むと、モデム制御部１０７は、図３（ａ）中▲２▼のプログラムに従って、割り込み処理部１１０からのメッセージが来るまで待機状態に移行する。これにより、ＯＳ１０１は、他のアプリケーションの処理を実行することができることとなる。
【００３５】
次に、初期動作時の処理が完了した本通信端末装置において、データを受信する際の動作について図４を用いて図１及び図３を参照しながら説明する。なお、図１で破線で示す矢印は、動作の流れを示すものとする。
【００３６】
本通信端末装置においてデータ受信を開始する場合、まず、ＮＣＵ１０３を介してＡＦＥ処理部１０２がデータを受信する。ＡＦＥ処理部１０２は、受信データにＡ／Ｄ変換処理を施してＡＦＥバッファ１０４に蓄積する（ＳＴ４０１）。
【００３７】
このとき、受信データをＡＦＥバッファ１０４に蓄積すると同時に、ＡＦＥ処理部１０２は、ＡＦＥバッファ１０４に一定量のデータが蓄積されたかを判定する（ＳＴ４０２）。一定量のデータが蓄積されていない場合には、一定量のデータが蓄積されるまでＳＴ４０１の処理を繰り返す。
【００３８】
そして、ＳＴ４０１の処理を繰り返し、一定量のデータがＡＦＥバッファ１０４に蓄積された場合、ＡＦＥ処理部１０２は、ＯＳ１０１に対して、モデム処理部１０５を起動するように指示を出す（ＳＴ４０３）。この指示を受け取ると、ＯＳ１０１は、モデム処理部１０５を起動する。
【００３９】
起動されると、モデム処理部１０５は、ＡＦＥバッファ１０４に蓄積された受信データを受け取り、復調処理を施してデータバッファ１０６に蓄積する（ＳＴ４０４）。具体的には、モデム処理部１０５は、図３（ｂ）中▲３▼のプログラムに従って受信データに復調処理を施す。
【００４０】
このとき、復調データをデータバッファ１０６に蓄積すると同時に、モデム処理部１０５は、データバッファ１０６に一定量のデータが蓄積されたかを判定する（ＳＴ４０５）。具体的には、モデム処理部１０５は、図３（ｂ）中▲４▼のプログラムに従ってデータバッファ１０６に一定量のデータが蓄積されたかを判定する。一定量のデータが蓄積されていない場合には、一定量のデータが蓄積されるまでＳＴ４０１〜ＳＴ４０４の処理を繰り返す。
【００４１】
そして、ＳＴ４０１〜ＳＴ４０４の処理を繰り返し、一定量のデータがデータバッファ１０５に蓄積された場合、モデム処理部１０５は、割り込み処理ポインタ１０９により指定されるサブルーチンを実行することで、割り込み処理部１１０を起動する（ＳＴ４０６）。具体的には、図３（ｂ）中▲５▼のプログラムに従って割り込み処理ポインタ１０９として機能するＲＡＭ上の所定アドレス（Ｅ０００，００００）に書き込まれた、モデム制御部１０７の割り込み処理のためのサブルーチンの開始アドレス（１８００，００００）に設定されたサブルーチンを実行することで、割り込み処理部１１０を起動する。
【００４２】
起動されると、割り込み処理部１１０は、ＯＳ１０１に対して、モデム制御部１０７を起動するように指示を出す（ＳＴ４０７）。具体的には、割り込み処理部１１０は、図３（ａ）中▲６▼のプログラムに従ってモデム制御部１０７を起動するように指示を出す。この指示を受け取ると、ＯＳ１０１は、モデム制御部１０７を起動する。
【００４３】
このように、モデム処理部１０５は、所定の場合に自らの処理の過程で割り込み処理部１１０を起動している。この割り込み処理部１１０の起動は上述のモデム処理部１０５の起動と異なり、ＯＳ１０１を経由して起動されていない。すなわち、モデム処理部１０５の処理の過程で割り込み処理ポインタ１０９が設定されており、この割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンをモデム処理部１０５の処理の中で行っている。具体的には、モデム処理部１０５が割り込み処理ポインタ１０９で指定されたサブルーチン（割り込み処理部１１０が動作するためのサブルーチン）を代行して実行し、モデム制御部１０７の起動指示をＯＳ１０１に対して要求している。ここで、モデム処理部１０５は、データバッファ１０６に一定量の復調データが蓄積された場合に、割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンを実行して割り込み処理部１１０を起動する。したがって、従来のように、一定時間間隔でモデム制御部１０７を起動してデータバッファ１０６にデータ量を確認することなく、データバッファ１０６内のデータの取り込み処理が必要な場合にのみモデム制御部１０７が起動されるので、ソフトウェアモデムにおける割り込み処理を効率的に行うことができる。
【００４４】
ＳＴ４０７の処理によりモデム制御部１０７が起動されると、モデム制御部１０７は、データバッファ１０６に蓄積された復調データを取り込み、必要に応じて復調データに対して圧縮等の処理を施した後、上位アプリケーション１０８に渡す。図３（ａ）を用いて説明すると、モデム制御部１０７は、▲７▼のプログラムに従ってデータバッファ１０６に蓄積された復調データを取り込む。上位アプリケーション１０８は、このデータを受け取り、所定の上位処理を行う（ＳＴ４０８）。
【００４５】
その後、通信が終了したかが判断され（ＳＴ４０９）、通信終了でない場合には処理をＳＴ４０１に戻し、通信終了となるまでＳＴ４０１〜ＳＴ４０９の処理を繰り返す。なお、通信終了である場合には、データの受信処理を終了する。
【００４６】
このように本実施の形態のソフトウェアモデムによれば、データバッファ１０６に一定量の復調データが蓄積された場合に、予めモデム制御部１０７で指定したアドレスに書き込まれたサブルーチンをモデム処理部１０５が実行する。そして、このサブルーチンには、モデム制御部１０７の起動をＯＳ１０１に対して指示するプログラムが書き込まれている。したがって、従来のように、一定時間間隔でモデム制御部１０７を起動してデータバッファ１０６にデータ量を確認する作業をすることなく、必要な場合にのみモデム制御部１０７が起動されることとなるので、効率的に割り込み処理を行うことができる。また、必要な場合にのみモデム制御部１０７が起動されることとなるため、他のアプリケーションの処理が頻繁に不能となるような事態を回避することができる。
【００４７】
なお、割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンの処理内容は、できるだけ小さくすることが望ましい。本実施の形態では、割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンには、モデム制御部１０７の起動をＯＳ１０１に対して指示するプログラムのみが設定されている。これは、割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンの実行は、モデム処理部１０５の処理とみなされることによる弊害を考慮したものである。
【００４８】
すなわち、割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンの実行は、あくまでモデム処理部１０５の処理としてみなされることとなるが、一般的に通信端末装置におけるモデム処理部１０５の処理は、他のアプリケーションと比べてＣＰＵの処理優先度が高く設定されている。したがって、割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンの処理内容を大きくした場合には、処理優先度の高いモデム処理部１０５の処理が長い時間継続することとなり、他のアプリケーションが動作できないという弊害が生じることとなる。このような弊害を回避するため、本実施の形態では、割り込み処理ポインタ１０９によって指定されたアドレスに書き込まれたサブルーチンの処理内容を極力小さくしている。
【００４９】
また、本実施の形態では、通信端末装置に適用されたソフトウェアモデムについて説明しているため、単一の製造会社等で製造されるケースが想定されるが、もちろん複数の製造会社等で本ソフトウェアモデムを処理部毎に分けて製造するようにしてもよい。すなわち、モデム処理部１０５とモデム制御部１０７とを異なる製造会社で製造するようにしてもよい。
【００５０】
むしろ、異なる製造会社等で製造するようにした場合にこそ、本ソフトウェアモデムの真価が発揮され得る。すなわち、モデム処理部１０５を製造する一方の製造会社は、モデム制御部１０７を製造する他方の製造会社が割り込み処理として実行させようとするサブルーチンの処理内容を認識することなく、指定されたサブルーチンアドレスに書き込まれたサブルーチンを実行するだけで済むので、他方の製造会社のサブルーチンの処理内容に合わせた制御を付加することなくモデム処理部１０５を製造することができるからである。
【００５１】
なお、本実施の形態では、説明の便宜上、モデム処理部１０５及びモデム制御部１０７を、そのような処理部が存在するものとして説明したが、これらの動作をＣＰＵなどの処理装置に行わせるプログラムを生成し記憶媒体に格納し、ＣＰＵが記憶媒体を参照することで、上記実施の形態と同じ動作を行うようにしてももちろん良い。
【００５２】
【発明の効果】
以上説明したように、本発明によれば、データバッファに一定量の復調データが蓄積された場合に予めモデム制御部で指定したアドレスに書き込まれたサブルーチンをモデム処理部が実行し、モデム処理部の処理の中でモデム制御部の起動をＯＳに対して指示するようにしたので、必要な場合にのみモデム制御部を起動することができ、ソフトウェアモデムにおける割り込み処理を効率的に行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態に係るソフトウェアモデムが適用される通信端末装置の構成の一部の構成を示すブロック図
【図２】上記実施の形態に係る通信端末装置の初期動作時の一例を示すフロー図
【図３】上記実施の形態に係る通信端末装置のＲＯＭに格納されたモデム処理部及びモデム制御部のサブルーチンプログラムの一例を示す図
【図４】上記実施の形態に係る通信端末装置において、データを受信する際の動作を示すフロー図
【図５】従来のソフトウェアモデムを搭載したファクシミリ装置の構成の一部を示すブロック図
【符号の説明】
１０１  オペレーティングシステム（ＯＳ）
１０２  ＡＦＥ処理部
１０３  ＮＣＵ
１０４  ＡＦＥバッファ
１０５  モデム処理部
１０６  データバッファ
１０７  モデム制御部
１０８  上位アプリケーション
１０９  割り込み処理ポインタ
１１０  割り込み処理部
【図１】
0004690576.tif 000002
【図２】
0004690576.tif 000003
【図３】
0004690576.tif 000004
【図４】
0004690576.tif 000005
【図５】
0004690576.tif 000006