(57)【特許請求の範囲】
【請求項１】
モデムを制御しかつ前記モデムと通信するためのデバイス・ドライバであって、前記デバイス・ドライバが、
モデムからのメッセージを受取りかつ格納するためのバッファ・メモリと、
デバイス・マネジャを通じてアプリケーションへ送信されるコマンドのパターンを格納するための制御メモリと、
前記デバイス・ドライバおよびメッセージの流れを制御するための論理ユニットとを含み、
前記論理ユニットが、前記制御メモリに格納された前記パターンを前記バッファ・メモリに格納されたメッセージと照合して、一致したパターンのタイプを示す信号を生成するための比較器を含み、
前記信号は、前記デバイス・ドライバに結合された前記デバイス・マネジャに送信されるメッセージに挿入されることを特徴とするデバイス・ドライバ。
【請求項２】
バッファ・メモリおよび制御メモリを含むデバイス・ドライバを使用してモデムを制御しかつ前記モデムと通信するため方法であって、前記方法は、前記デバイス・ドライバにおいて、
前記モデムからのメッセージを受け取り、かつ前記バッファ・メモリに格納するステップと、
デバイス・マネジャを通じてアプリケーションへ送信されるコマンドのパターンを前記制御メモリに格納するステップと、
前記制御メモリに格納されたパターンを前記バッファ・メモリに格納されたメッセージと照合して、一致したパターンのタイプを示す信号を生成するステップと、
前記信号を前記メッセージに挿入するステップと、
前記デバイス・ドライバに結合された前記デバイス・マネージャに送るステップと、
を含む方法。
【発明の詳細な説明】
【０００１】
本発明はモデムに関し、さらに詳しくはモデムの遠隔制御に関する。それは、アプリケーションプログラムを物理装置にインタフェースする際に、特にデジタル伝送システム用の受信器／復号器の文脈において適用することができるが、それのみに限定されない。
【０００２】
ここで使用する用語「受信器／復号器」とは、他の何らかの手段によって一斉同報するか送信することができる、符号化された信号または符号化されていない信号のいずれか、例えばテレビジョン信号および／または無線信号を受信するための受信器を意味する。この用語はまた、受信した信号を復号するための復号器をも意味する。そのような受信器／復号器の実施形態として、例えば「セット・トップ・ボックス」における受信した信号を復号するための受信器と一体的な復号器であって、物理的に分離した受信器と組み合わせて機能し、あるいはウェブ・ブラウザ、ビデオ・レコーダ、またはテレビジョンなどの追加機能を含む復号器を挙げることができる。
【０００３】
主にテレビジョン信号を一斉同報するために意図されたデジタル伝送システム、特に、ただしそれのみに限定するものとしてではなく、衛星テレビジョン・システムの登場は、そのようなシステムを他の目的に使用する可能性を開いた。これらの１つは、エンド・ユーザとの対話性を提供することである。
【０００４】
ここで使用する用語「デジタル伝送システム」とは、例えば主として音声映像またはマルチメディア・デジタル・データを送信するか一斉同報するための伝送システムを含む。本発明は特に放送デジタル・テレビジョン・システムに適用することができるが、本発明はまたマルチメディア・インターネット・アプリケーション用の固定テレコミュニケーション・ネットワーク、閉回路テレビジョン等々にも適用することができる。用語「デジタル伝送システム」は、例えば衛星、地上、ケーブル、またはその他のシステムを含む。
【０００５】
本発明は、受信信号が受信器を介して受信器／復号器およびそれからテレビジョン受像機に渡される、放送デジタル・テレビジョン・システムに特に適用することができる。（セット・トップ・ボックスまたはＳＴＢとしても知られる）受信器／復号器は、圧縮されたＭＰＥＧ型の信号をテレビション受像機用のテレビジョン信号に復号する。それは、受信器／復号器内のインタフェースを介して、遠隔制御ハンドセットによって制御される。
【０００６】
上述の対話性を提供する１つの方法は、テレビジョン信号がそれを通して受信される受信器／復号器でアプリケーションを実行することである。様々なアプリケーションを様々な物理装置と透過的に通信できるようにすることが望ましい。本発明の同時係属出願ＰＣＴ／ＥＰ９７／０２１１５およびＰＣＴ／ＥＰ９７／０２１１６は、１つまたはそれ以上のアプリケーションをセット・トップ・ボックス（ＳＴＢ）によってダウンロードし、かつ各装置用のデバイス・ドライバおよび全デバイス・マネージャによって並列および直列インタフェースならびにスマートカード読取器などのＳＴＢ内の物理装置と通信することができるシステムを記載している。
【０００７】
本発明に従って、セット・トップ・ボックスがモデム、直列チャネル、並列チャネル、ＭＰＥＧ（圧縮され符号化された映像信号）チャネル、スワイプ（ｓｗｉｐｅ）カード読取器等々といった多種多様な信号チャネルとインタフェースする能力を提供することが提案されてきた。セット・トップ・ボックスは、実行時エンジンを含む仮想機械を含む。仮想機械はデバイス・マネージャに結合され、デバイス・マネージャは次に、装置およびデバイス・ドライバを介して様々なチャネルの物理インタフェースに結合される。
【０００８】
ＭＰＥＧという用語は、国際標準化機構の作業部会「Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ」によって作成されたデータ伝送標準、特に、ただしそれのみに限定するものとしてではなく、デジタル・テレビジョン・アプリケーション用に開発され、文書ＩＳＯ  １３８１８−１、ＩＳＯ  １３８１８−２、ＩＳＯ１３８１８−３、およびＩＳＯ  １３８１８−４に規定されたＭＰＥＧ−２標準を指す。本特許出願の文脈では、この用語は、デジタル・データ伝送に適用可能なＭＰＥＧフォーマットの全ての変形、変更、または展開を含む。
【０００９】
上述の通り、チャネルの１つはモデムであることが好ましい。本発明の主な目的は、そのようなモデムの改善された制御を提供することである。これは、モデムを制御するための改善されたデバイス・ドライバを提供することによって達成される。この目的のために、装置とデバイス・ドライバの間の区別の厳密な性質は重要ではなく、ここで使用する用語「デバイス・ドライバ」は、文脈上別の解釈が要求されない限り、ハードウェアとアプリケーションとの間の何らかの形のインタフェースを含むと解釈すべきである。
【００１０】
本発明に従って、モデムからのメッセージを受け取りかつ格納するためのバッファ・メモリと、制御パラメータを格納するための制御メモリと、デバイス・ドライバおよびメッセージの流れを制御するための論理ユニットを備えた、モデムを制御しかつそれと通信するためのデバイス・ドライバを提供する。論理ユニットは、制御メモリに格納されたパターンをバッファ・メモリ内に格納されたメッセージと照合して、デバイス・ドライバに結合されたデバイス・マネージャに送信するための信号を生成する比較器を含む。
【００１１】
デバイス・マネージャは通常、複数のデバイス・ドライバを制御し、かつデバイス・ドライバと１つまたはそれ以上のアプリケーションとの間でメッセージを受け渡すように適応されるが、用語「デバイス・マネージャ」は、デバイス・ドライバを制御できるどんなエンティティをも包含するように意図されている。それは、制御アプリケーションそのものとすることができる。本発明の別の重要な特徴は、以下の詳細な説明および請求の範囲から明らかになるであろう。
【００１２】
本装置は、例えば本願の同時係属出願ＰＣＴ／ＥＰ９７／０２１０６〜０２１１７に記載する、例えばデジタル伝送システム用の受信器／復号器内のデバイス・ドライバとして実現することが最も好ましい。そのような実現では、デバイス・ドライバは、デバイス・マネージャを介して、デバイス・ドライバを制御するための便利かつ柔軟な装備を提供するアプリケーションの制御下で作動することができる。アプリケーションは解釈された言語で実行されることが好ましく、デバイス・ドライバはコンパイルされることが好ましい。
【００１３】
比較器は、記憶されたパターンをメッセージの予め定められた最終長と比較することが好ましい。
【００１４】
パターンは多数の型のパターンとすることができ、同じ型の多数のパターンが存在することができる。そのようなパターンの型は、Ｅｖｅｎｔ、ＡＣＫ（肯定応答）およびＮＡＣＫ（否定応答）を含むことができ、生成される信号は、合致したパターンの型を示す。
【００１５】
デバイス・ドライバは、モデムを介して受信したメッセージに信号を付加することによって、デバイス・マネージャに信号を送るように適応させることができる。コマンドはデバイス・ドライバとデバイス・マネージャとの間で受け渡すことができ、デバイス・ドライバにパラメータを設定するＣａｌｌ、デバイス・ドライバへの制御信号およびデータを送信するＩＯ、およびパターンの検出、メッセージの受取り、または伝送問題をデバイス・マネージャに知らせるＥｖｅｎｔの形式をとる。Ｃａｌｌコマンドの１つの形式は、比較器によって探索される１つまたはそれ以上のパターンを定義するための少なくとも１つのパターン設定コマンドを含む。
【００１６】
探索されるパターンを定義するパターン設定コマンドは、各パターン型にパターン設定コマンドを１つずつ、３つの副型があることが好ましい。この、または少なくとも１つのパターン設定コマンドは、照合すべき複数のパターンを定義するように適応させることができ、各パターンは、対応するパターンの検出後に生成される関連イベント信号を持つ。
【００１７】
探索されるパターンは、制御メモリのそれぞれの副領域に格納することができる。あるいは、探索されるパターンは、制御メモリの単一の連続領域に格納することができる。
【００１８】
１つの実施形態では、複数の合致が発生した場合、最後の合致に対してだけ作動する。あるいは、複数の合致が発生した場合、様々な型の合致の間で予め定められた優先順位に従って型を示す。
【００１９】
デバイス・ドライバの機能はハードウェアで、例えば専用の集積回路で実現することができる。これにより、動作速度を高めることができる。しかし、デバイス・ドライバの少なくとも一部はソフトウェアで実現することが好ましく、アプリケーションを実行する処理手段によって実行することが好ましい。これにより、より大きい柔軟性が得られ、必要な構成部品が少なくてすみ、デバイス・ドライバをより簡単に更新することが可能になる。
【００２０】
本発明は、バッファ・メモリおよび制御メモリを含むデバイス・ドライバを使用して、モデムを制御しかつそれと通信する方法に及び、前記方法は、
モデムからのメッセージを受け取り、かつそれを前記バッファ・メモリに格納するステップと、
制御パラメータを前記制御メモリに格納するステップと、
制御メモリに格納されたパターンをバッファ・メモリに格納されたメッセージと照合して、デバイス・ドライバに結合されたデバイス・マネージャに送るための信号を生成するステップと
を含む。
【００２１】
上記の特徴はどれでも任意の適切な組合せで一つに結合することができる。装置の特徴は方法態様に適用することができ、その逆もしかりである。
【００２２】
本発明の好適な特徴について、純粋に例として添付の図面に関連して、今から説明する。
受信器／復号器の基礎
デバイス・ドライバの理解を助けるために、デバイス・ドライバが作動する好適なプラットフォーム、つまり本発明のデジタル伝送受信器／復号器について最初に簡単に説明する。
【００２３】
図１を参照すると、実施形態のデバイス・ドライバを取り付けるように意図されたデジタル対話型テレビジョン・システム用の受信器／復号器２０２０またはセット・トップ・ボックスが、概略的に示されている。適切なデジタル対話型テレビジョン・システムの詳細は、本願の同時係属出願ＰＣＴ／ＥＰ９７／０２１０６〜０２１１７に記載されているので、それを参照されたい。それらの開示は、参照によってここに組み込まれる。参照を容易にするために、前述の明細書でより詳しく説明されている部品は一般的に、これらの明細書で使用する参照符号によって指定される。
【００２４】
前述の明細書に詳述されているように、図１を参照すると、受信器／復号器２０２０は、幾つかのインタフェース、特にＭＰＥＧ信号フロー用の同調器４０２８、直列インタフェース４０３０、並列インタフェース４０３２、および１つはシステムの一部を形成するスマートカード用、１つは銀行カード（支払い、ホーム・バンキングなどに使用される）用の２つのカード読取器４０３６を含む。受信器／復号器はまた、テレビジョン信号制作者につながるモデムド・バック・チャネル（ｍｏｄｅｍｍｅｄ  ｂａｃｋ  ｃｈａｎｎｅｌ）４００２へのインタフェース４０３４をも含むので、ユーザは好みなどをテレビジョン信号（番組）制作者に示すことができる。受信器はまた、実行時エンジン４００８、デバイス・マネージャ４０６８、および１つまたはそれ以上のアプリケーション４０５６を実行するための複数の装置４０６８およびデバイス・ドライバ４０６０をも含む（図２参照）。
【００２５】
この明細書では、アプリケーションは、好ましくは受信器／復号器２０２０の高レベル機能を制御するための１片のコンピュータ・コードとする。例えば、エンド・ユーザが遠隔制御器の焦点をテレビジョン受像機２０２２の画面上のボタン・オブジェクト上に置いて、有効なキーを押すと、そのボタンに関連付けられた命令シーケンスが実行される。
【００２６】
対話型アプリケーションはメニューを提供し、エンド・ユーザの要求でコマンドを実行し、アプリケーションの目的に関連するデータを提供する。アプリケーションは、常駐アプリケーション、つまり受信器／復号器２０２０のＲＯＭ（またはＦＬＡＳＨまたはその他の不揮発性メモリ）に格納されたアプリケーションか、または受信器／復号器２０２０のＲＡＭまたはＦＬＡＳＨメモリに一斉同報またはダウンロードされるアプリケーションのいずれかとすることができる。
【００２７】
上述の出願でより詳しく記載するアプリケーションの例の一部として、次のようなものがある。
【００２８】
受信器／復号器２０２０がＭＰＥＧ−２環境ですぐに作動することを可能にする適応可能なモジュールの集合である起動アプリケーション。
【００２９】
ダウンロードまたは常駐のどちらでもアプリケーションを受信器／復号器２０２０で実行させる始動アプリケーション。
【００３０】
番組に関して完全な情報を与える対話型アプリケーションであるプログラム・ガイド。
【００３１】
デジタル・テレビジョン・ブーケの各ＰＰＶチャネルで利用可能な対話型サービスであり、エンド・ユーザが現在のイベントを買うことを可能にするペイ・パー・ビュー・アプリケーション。
【００３２】
エンド・ユーザがＰＣダウンロード・アプリケーションを使用してコンピュータ・ソフトウェアをダウンロードすることを可能にするＰＣダウンロード・アプリケーション。
【００３３】
画面上のボタンによるエンド・ユーザ・ナビゲーション付きの画像の循環ビデオ放送（ｃｙｃｌｉｃ  ｖｉｄｅｏ  ｂｒｏａｄｃａｓｔ）を含むマガジン・ブラウザ。
【００３４】
販売用商品の提供を受信器／復号器２０２０に送信し、かつテレビジョン受像機２０２０に表示することを可能にし、かつユーザが買うための特定の品目を選択することを可能にするテレショッピング・アプリケーション。
【００３５】
アプリケーションは、受信器／復号器２０２０内の記憶場所に格納され、資源ファイルとして表現される。資源ファイルは、上述の明細書でより詳しく述べるように、グラフィック・オブジェクト記述ユニット・ファイル、可変ブロック・ユニット・ファイル、命令シーケンス・ファイル、アプリケーション・ファイル、およびデータ・ファイルを含む。
【００３６】
ＭＰＥＧデータ・ストリームでは、各モジュールが１群のＭＰＥＧテーブルを含む。各ＭＰＥＧテーブルは、多数のセクションとしてフォーマット化することができる。ＭＰＥＧデータ・ストリームでは、各セクションは最高４ｋバイトまでの「サイズ」を持つ。例えば直列ポートおよび並列ポートを介してデータ転送する場合、モジュールは同様にテーブルおよびセクションに分割され、セクションのサイズはトランスポート媒体によって変化する。
【００３７】
モジュールは、ＭＰＥＧデータ・ストリームでそれぞれの型のデータ・ストリーム内で、例えば映像データ・ストリーム、音声データ・ストリーム、およびテレテキスト・データ・ストリーム内で、一般的に１８８バイトのデータ・パケットの形で転送される。各パケットには１３ビットのパケット識別子（ＰＩＤ）が先行し、ＭＰＥＧデータ・ストリーム内で転送される各パケットに１つづつＰＩＤが付く。番組マップ・テーブル（ＰＭＴテーブル）は、様々なデータ・ストリームのリストを含み、それぞれのＰＩＤによって各データ・ストリームの内容を定義する。番組以外でも、特定のＰＩＤは、データ・ストリームに含まれるアプリケーションまたはその他のデータに割り当てることができ、ＰＩＤはＰＭＴテーブルを使用して識別される。
【００３８】
復号器は、ＲＡＭボリューム、ＦＬＡＳＨボリューム、およびＲＯＭボリュームに分割されるメモリを含むが、この物理的編成は論理編成とは区別される。メモリはさらに、様々なインタフェースに関連付けられたメモリ・ボリュームに分割することができる。１つの視点から、メモリはハードウェアの一部とみなすことができる。別の視点から、メモリは、ハードウェアとは別個に示されるシステムの全体をサポートまたは包含するものとみなすことができる。
【００３９】
システムは、仮想機械４００７の一部を形成する実行時エンジン４００８を中心にしているとみなすことができる。これは、一方をアプリケーションに結合され（「高レベル」側）、他方（「低レベル」側）を以下で述べる様々な中間論理ユニットを介して受信器／復号器ハードウェア４０６１に結合される。受信器／復号器ハードウェアは、上述の通り、様々なポートまたはインタフェースを含むものとみなすことができる（ハンドセット２０２６用のインタフェース２０３０、ＭＰＥＧストリーム・インタフェース４０２８、直列インタフェース４０３０、並列インタフェース４０３２、カード読取器４０３６用のインタフェース、およびモデムド・バック・チャネル４００２用のインタフェース４０３４）。
【００４０】
図２を参照すると、様々なアプリケーション４０５７がユニット４００７に結合されている。より一般的に使用されるアプリケーションの幾つかはだいたい、４０５７で示すようにシステムに永久常駐することができるが、他は、例えばＭＰＥＧデータ・ストリームまたは必要に応じてその他のポートからシステムにダウンロードされる。
【００４１】
ユニット４００７は、実行時エンジン４００８以外に、ツールボックス４０５８を含む幾つかの常駐ライブラリ関数４００６を含む。ライブラリは、エンジン４００８によって使用されるＣ言語の雑関数を含む。これらは、圧縮、拡張、またはデータ構造の比較、線引き等々のデータ操作を含む。ライブラリ４００６はまた、ハードウェアおよびソフトウェアのバージョン番号および使用可能なＲＡＭ空間、ならびに新しい装置４０６２をダウンロードするときに使用する関数など、受信器／復号器２０２０内のファームウェア４０６１に関する情報をも含む。関数はライブラリにダウンロードし、フラッシュ・メモリ、またはＲＡＭメモリに格納することができる。
【００４２】
実行時エンジン４００８はデバイス・マネージャ４０６８に結合され、デバイス・マネージャは１組の装置４０６２に結合され、装置はデバイス・ドライバ４０６０に結合され、デバイス・ドライバは次にポートまたはインタフェースに結合される。広義には、デバイス・ドライバは論理インタフェースを定義するものとみなすことができるので、２つの異なるデバイス・ドライバを共通の物理ポートに結合することができる。装置は通常２つ以上のデバイス・ドライバに結合される。装置を単一のデバイス・ドライバに結合する場合、装置は通常、別個のデバイス・ドライバの必要性が回避されるように、通信に必要な完全な機能性を組み込むように設計される。特定の装置は、それらの間で通信することができる。
【００４３】
以下で説明するように、装置４０６２から実行時エンジンへの通信は、１組のイベント待ち行列に渡される変数、バッファ、およびイベントによる３つの形式がある。
【００４４】
受信器／復号器２０２０の各機能は、装置４０６２として表される。装置は局所あるいは遠隔のいずれかでありうる。局所装置４０６４は、スマート・カード、ＳＣＡＲＴコネクタ信号、モデム、直列および並列インタフェース、ＭＰＥＧ映像および音声再生器、ならびにＭＰＥＧセクションおよびテーブル抽出器を含む。遠隔場所で実行される遠隔装置４０６６は、ポートおよび手続きを、受信器／復号器製造者によって提供され設計される装置およびデバイス・ドライバによってではなく、システム権限者または設計者によって定義しなければならないという点で、局所装置とは異なる。
【００４５】
新しい装置４０６２が作成された場合、放送センタから関連アプリケーション４０５６をダウンロードすることによって、既存の受信器／復号器２０２０にそれをインストールことができる。このダウンロードは、ハードウェアおよびソフトウェアのバージョンを検査して、正しければ新しい装置４０６２を表すソフトウェア・モジュールをロードし、ライブラリ４００６の手続きに新しい装置コードをファームウェア内（フラッシュ・メモリ）にインストールするように要求するアプリケーション４０５６によって、受信器／復号器２０２０内で実行される。これにより、他のソフトウェアに悪影響を及ぼすことなく、受信器／復号器２０２０内に新しい関数を柔軟かつ確実にインストールすることができる。
【００４６】
デバイス・マネージャ４０６８は、アプリケーション４０５６と受信器／復号器２０２０の特定の関数との間の共通ソフトウェア・インタフェースである。デバイス・マネージャ４０６８は、装置４０６２へのアクセスを制御し、予想外のイベントの受取りを宣言し、共用メモリを管理する。
【００４７】
実行時エンジン４００８は、マイクロプロセッサおよび共通アプリケーション・プログラミング・インタフェースの制御下で実行する。これらは全ての受信器／復号器２０２０にインストールされるので、アプリケーションの観点からは、全ての受信器／復号器２０２０は同一である。
【００４８】
エンジン４００８は、受信器／復号器２０２０でアプリケーション４０５６を実行する。それは対話型アプリケーション４０５６を実行し、受信器／復号器２０２０の外からイベントを受け取り、グラフィックスおよびテキストを表示し、サービス用の装置を呼出し、特定の計算のためにエンジン４００８に接続されたライブラリ４００６の関数を使用する。
【００４９】
実行時エンジン４００８は、各受信器／復号器２０２０にインストールされた実行可能コードであり、アプリケーションを解釈して実行するためのインタプリタを含む。エンジン４００８は、（ＭＳ−ＤＯＳなどの）単一タスク・オペレーティング・システムをはじめ、どんなオペレーティング・システムにでも適応可能である。エンジン４００８はプロセス・シーケンサ・ユニット（これはキー押しなど様々なイベントを受けて、様々な動作を実行する）を基盤とし、それ自体のスケジューラを含み、様々なハードウェア・インタフェースからのイベント待ち行列を管理する。それはまた、グラフィックスおよびテキストの表示も処理する。プロセス・シーケンサ・ユニットは、１組の動作グループを含む。各イベントは、イベントの性質によってプロセス・シーケンサ・ユニットをその現在の動作グループから別の動作グループに移動させ、新しい動作グループの動作を実行させる。
【００５０】
エンジン４００８は、アプリケーション４０５６を受信器／復号器メモリ２０２８にロードしかつダウンロードするコード・ローダを含む。最適使用を確実にするために、必要なコードだけがＲＡＭまたはフラッシュ・メモリにロードされる。ダウンロードされたデータは、アプリケーション４０５６の改変や無許可アプリケーションの実行を防止するために、認証機構によって検証される。エンジン４００８はさらにデコンプレッサ（ｄｅｃｏｍｐｒｅｓｓｏｒ）をも含む。アプリケーション・コード（中間コードの形）は、空間の節約のため、およびＭＰＥＧ−２トランスポート・ストリームからまたは内蔵受信器／復号器モードを介して高速ダウンロードするために圧縮されるので、コードはＲＡＭにロードする前に展開しなければならない。エンジン４００８はまた、アプリケーション・コードを解釈して様々な変数値を更新したり状態変化を決定するためにインタプリタを持ち、かつ誤りチェッカも持つ。
【００５１】
いずれかの装置４０６２のサービスを使用する前に、プログラム（アプリケーション命令シーケンスなど）は「クライアント」として、つまり装置４０６２またはデバイス・マネージャ４０６８への論理アクセス路を宣言しなければならない。マネージャはクライアントにクライアント番号を与え、これは装置への全てのアクセスで参照される。装置４０６２は幾つかのクライアントを持つことができ、各装置４０６２のクライアント数は、装置４０６２の種類によって指定される。クライアントは、手続き「Ｄｅｖｉｃｅ：Ｏｐｅｎ  Ｃｈａｎｎｅｌ」によって装置４０６２に導入される。この手続きはクライアントにクライアント番号を割り当てる。クライアントは、手続き「Ｄｅｖｉｃｅ：Ｃｌｏｓｅ  Ｃｈａｎｎｅｌ」によってデバイス・マネージャ４０６８からクライアント・リストを取り出すことができる。
【００５２】
デバイス・マネージャ４０６８によって提供される装置４０６２へのアクセスは、同期または非同期のどちらでも行うことができる。同期アクセスには、手続き「Ｄｅｖｉｃｅ：Ｃａｌｌ」が使用される。これは、すぐに利用可能データまたは希望する応答を待つことを含まない機能性にアクセスする手段である。非同期アクセスには、手続き「Ｄｅｖｉｃｅ：Ｉ／Ｏ」が使用される。これは、例えばマルチプレクスを探すためにチューナ周波数を走査したり、ＭＰＥＧストリームからテーブルを取り戻すなど、応答を待つことを含むデータにアクセスする手段である。要求した結果が得られたとき、イベントはその到着を知らせるためにエンジンの待ち行列に入れられる。さらなる手続き「Ｄｅｖｉｃｅ：Ｅｖｅｎｔ」は、予想外のイベントを管理する手段を提供する。
【００５３】
上述の通り、実行時エンジンの主ループは様々なプロセス・シーケンサ・ユニットに結合され、主ループが適切なイベントに遭遇すると、制御は一時的にプロセス・シーケンサ・ユニットの１つに移される。
【００５４】
したがって、基本システムは、アプリケーションが様々な装置とやり取りすることを可能にする際に、かなりの柔軟性を持つプラットフォームを提供することが分かる。
モデム・デバイス・ドライバ
様々な機能の実現の厳密な詳細およびハードウェアとソフトウェアとの間の配分は、実現者の選択の問題であり、ここでは詳述しない。しかし、本デバイス・ドライバで要求される作業を実行することができる専用の集積回路は市販されており、あるいは容易に設計することができ、これらをハードウェア・アクセラレータの基礎として使用することができ、あるいはより好ましくは、要求される様々な作業を実現するためにそれらを改造して専用のハードウェア・アクセラレータを作成し、それによってソフトウェアを実行するために要求される処理能力を低下することができることが注目される。しかし、充分な処理能力が得られるならば、要求される作業をソフトウェアで実現することができる。デバイス・ドライバは、一連のアクセス可能な機能ユニットを含むものと考えることができ、各々の機能ユニットを以下では「コマンド」と呼ぶ。
【００５５】
各コマンドは、他の装置と共通する上述の３つの標準手続きのうちの１つによって、デバイス・マネージャ４０６８の制御下でアプリケーションにインタフェースする。情報は、アプリケーションと装置との間をパラメータ・テーブルによって受け渡すことができる。参照を容易にするために、３つの基本手続きを以下に簡単に要約する。
１）Ｄｅｖｉｃｅ：Ｃａｌｌ
この手続きは、同期コマンドまたはデータ転送を行うためにアプリケーションが用いることができる。アプリケーションの実行は、デバイス・ドライバによる作業が完了して制御が返されるまで中断される。これにより、厳密な順序で実行しなければならない作業を確実に制御することが可能になる。
２）Ｄｅｖｉｃｅ：Ｉ／Ｏ
この手続きは非同期動作を可能にする。つまり、アプリケーションは、デバイス・ドライバによって実行されるデータ転送または特定の機能の要求を送信することができ、データ転送または機能がデバイス・ドライバによって実行されている間、アプリケーションの実行は継続される。
３）Ｄｅｖｉｃｅ：Ｅｖｅｎｔ
このイベント・トラッピング機能は、装置がアプリケーションにイベントを知らせることを可能にし、そのイベントに応答して、イベントが知らされたときにアプリケーションが実行していたコードとは関係なく、アプリケーションが取るべき特定の処置のために、アプリケーションは効果的に中断される。イベントは優先度を付けることができる。イベントは、バス・リセットなどインタフェースで発生するイベントを知らせるために、あるいは例えば要求されたデータ転送の完了を知らせることによって、非同期コマンドの監視を行うために、使用することができる。
【００５６】
本デバイス・ドライバはブロック５００（図３）として図示されており、論理ユニット５０１、制御メモリ５０２、およびバッファ・メモリ５０３を含む。これらの２つのメモリは論理的に区別されるが、両方とも同一の物理メモリの部分を形成する（さらに詳しくは、バッファ・メモリはＲＡＭメモリの部分を形成し、制御メモリはＲＡＭまたはＦＬＡＳＨメモリの部分を形成することができる）。デバイス・ドライバは、図示するように、デバイス・マネージャ４０６８およびモデム・インタフェース５５０に結合される。各コマンドは論理ユニット５０１の一部を形成し、制御および／またはバッファ・メモリの部分で作動することができる。
【００５７】
広義的には、信号を変調および復調する狭い意味でのモデムの機能は、インタフェース５５０に組み込むかまたはそれに取り付けることができるモデム・ユニットによって実行される。インタフェースを介して流れる情報の制御および管理は、これらの狭いモデムの機能とは別個に、デバイス・ドライバ５００によって実行される。
【００５８】
上述の通り、装置／デバイス・ドライバとデバイス・マネージャ４０６８との間の通信は、３種類の手続きすなわちＣａｌｌ、ＩＯ、およびＥｖｅｎｔによって実行される。デバイス・ドライバ５００によって使用される手続きの場合、Ｃａｌｌは様々なパラメータをアプリケーションからデバイス・マネージャを介してデバイス・ドライバに送るために使用され、ＩＯはコマンドをアプリケーションからデバイス・マネージャを介してデバイス・ドライバに送るために使用され、Ｅｖｅｎｔはメッセージをデバイス・ドライバからデバイス・マネージャを介してアプリケーションに送るために使用される。
【００５９】
本発明を具体化する装置に設けられるコマンドを次に説明する。各コマンドは、上記の３つの標準手続きの１つによりコマンドの識別子をパラメータとして渡すことによって、アプリケーションによってアクセスすることができる。以下で述べる全てのコマンドを設ける必要は無く、コマンドの機能は変更することができる。コマンドは独立に設けたり変更することができるが、理解されるように、下記コマンドによってもたらされる複合された機能性から特定の相互依存的利益が生じる。
【００６０】
コマンドを、各コマンドによって提供される特徴および機能の点から、オプションおよび好適な特徴と併せて説明する。提供する情報および提示する仕様により、これらの特徴の実際の実現は当業者にとって簡単な仕事のはずであり、厳密な詳細は実現者に任せる。一例として、各コマンドはソフトウェアで実現することができ、Ｃプログラミング言語で作成することが好ましく、かつアプリケーションを実行するために使用するプロセッサ上で実行するようにコンパイルすることが好ましい。しかし、デバイス・ドライバは、別個のプロセッサ上で実行することができ、一部または全部のコマンドを専用ハードウェアによって実現することもできる。ＣａｌｌおよびＩＯコマンドは、装置に渡されるアドレスのメモリに格納されたパラメータ・テーブルに値を設定することによって、アプリケーションに情報を知らせたり、パラメータを渡し返すことができる。
【００６１】
さらに詳しくは、使用される手続きまたはコマンドは次の通りである。
Ｄｅｖｉｃｅ：Ｃａｌｌ
Ｓｅｔ：バッファ・サイズ、タイマ遅延を設定する。
【００６２】
Ｃｏｍｍ  ｓｅｔ：データ・サイズ（５〜８ビット）、パリティ、伝送速度を設定する。
【００６３】
Ｃｈａｒ  ｓｅｔ：休止文字および遅延を設定する。
【００６４】
Ｃｏｎｔｒｏｌ  ｓｅｔ：遠隔装置に送信する信号を使用可能／使用不能にする。
【００６５】
Ｐａｔｔｅｒｎ  ｓｅｔ：探索されるパターンを設定する。
Ｄｅｖｉｃｅ：ＩＯ
Ｃｏｍｍａｎｄ：コマンドを解釈無しでデバイス・ドライバに送る。
【００６６】
Ｓｅｎｄ：データをデバイス・ドライバに送る。
【００６７】
Ａｃｔｉｏｎ：コマンドを解釈付きでデバイス・ドライバに送る。
【００６８】
Ｄｉｓｃｏｎｎｅｃｔ：デバイス・ドライバを切断する。
Ｄｅｖｉｃｅ：Ｅｖｅｎｔ
Ｒｅｃｅｉｖｅ：メッセージの受取りを知らせる。
【００６９】
Ｏｆｆ：伝送上の問題を知らせる。
【００７０】
手続きはまた、報告し返すための誤りコードおよび（Ｅｖｅｎｔ：Ｏｆｆ手続きを除いて）デバイス・ドライバからデバイス・マネージャに報告し返すための呼出しレポートをも含む。また、ＣａｌｌまたはＩＯ手続きは、送信すべき情報（パラメータなど）が存在するメモリ・アドレスをも含む。
【００７１】
これらのコマンドの大部分の機能は、大まかには従来通りである。しかし本システムは、特殊コマンドすなわちＣａｌｌコマンドのＰａｔｔｅｒｎ  ｓｅｔを含む。このコマンドは、論理ユニット５０１が探索すべき１つまたはそれ以上のパターンを定義する。このコマンドはメモリ・アドレスを含み、メモリはそのアドレスから始まる場所に一連のパターンを含む。（さらに詳しくは、メモリの第１場所にパターンの数が含まれ、その後に個別パターンが続き、メモリ内の各々の個別パターンは、パターンの長さを提示するヘッダを含む。）
一般的に、Ｅｖｅｎｔ、ＡＣＫ（肯定応答）、およびＮＡＣＫ（否定応答）を生成するために、３つの型のパターンを設定することができる。言うまでも無く、各パターンのヘッダでそのパターンの型を識別して、３つの型のパターン全部を同一コマンドに含めることが可能である。しかし、３つの型のパターンの代わりに、３つの副形式のコマンドを使用することが好ましい。したがって、モデムがコマンドを確実に受け取ったことを検出するために必要なＡＣＫおよびＮＡＣＫパターンは、専用コマンドを用いて設定することが好ましく、他の全てのパターンはイベントをトリガするために使用し、パターンを区別することができるように、各パターンに番号を割り当てる。これらのコマンドは、制御メモリ５０２のメモリ・ゾーン５１０（図４）をセットアップする。このメモリ・ゾーンは、Ｅｖｅｎｔ、ＡＣＫ、およびＮＡＣＫパターンをそれぞれ含む３つのセグメントを持つ。論理ユニット５０１は、このメモリ・ゾーンに結合される比較器ユニット５１１を含む。
【００７２】
メモリ・ゾーン５１０は、３つのＰａｔｔｅｒｎ  ｓｅｔコマンドによって指定されるメモリ領域で構成することができる。この場合、メモリ・ゾーンの３つのセグメントは、メモリの物理的に異なる領域に存在することができる。比較器ユニット５１１は、３つのセグメントの開始アドレスを格納し、かつ様々なパターンへのアクセスを得るために、（各セグメントの始めに格納されている）パターンの数および個々のパターンの長さを使用してパターンの正確な場所を決定し、それらの各々を必要に応じて順番にアクセスしなければならない。あるいは、比較器ユニット５１１は、予め定められた場所でメモリ・ゾーン５１０をパターンのテーブルとしてセットアップすることによって、メモリを初期化することができる。
【００７３】
メッセージを受け取ると、それはバッファ・メモリ５０３内のバッファに渡される。このメモリは複数のバッファ５１２に分割されているので、メッセージは２つ以上のバッファを占めることができる。しかし、メッセージ空間は、個々のメッセージに対し論理的に連続している。パターンの突合せが実行されると、比較器５１１は、メモリ・ゾーン５１０に格納されたパターンのいずれかと照合するために、メッセージの最後の３２文字を探索する。
【００７４】
合致が見つかると、合致の型（イベント、ＡＣＫ、またはＮＡＣＫ）が、バッファに格納されたメッセージのヘッダに書き込まれ、かつ／または何らかの適切な処置がデバイス・ドライバによって取られる。
【００７５】
ＡＣＫおよびＮＡＣＫパターンの検出は、例えばモデムがオフラインのときにコマンドが送信されている場合に、モデムからの予想される応答を検出するために使用することができる。モデムからのその他の信号は別個のパターン・リストと照合され、イベントをトリガするために使用される。このため、ＡＣＫおよびＮＡＣＫパターンの設定は、予想外のイベントまたはモデムからのその他のメッセージに対応するパターンのリストの設定とは独立して行うことが好ましい。
【００７６】
この方法で、アプリケーションは様々なモデムのどれとでも通信することが可能である。例えば、多くのモデムは一般的に、命令シーケンスおよび応答のための例えばヘイズ（Ｈａｙｅｓ）標準などの標準に準拠するが、多くは追加機能を持ち、そのために固有の応答シーケンスが生成される。そのような場合、ＡＣＫおよびＮＡＣＫパターンは標準パターンに設定し、追加機能に対応する応答シーケンスはイベント信号に割り当てることができる。
【００７７】
図５は、バッファ・メモリ５０３に常駐するメッセージ５２０を示す。メッセージはヘッダ５２１および本体５２２で構成される。この場合のメッセージは、２つのバッファ５１２、５１２’の間に物理的に分割される。比較器５２０は、メッセージの本体５２２の最後の３２文字領域５２３に対してパターン・マッチング（つまり、メモリ領域５１０に格納されたパターンとの合致の探索）を実行する。見つかった合致の性質が、バッファ・メモリのメッセージ・ヘッダ５２１に挿入される。
【００７８】
２つ以上の合致が発生する可能性が２通りある。第１に、同じ型の２つのパターンが（メッセージの最後の３２文字中の異なる位置に）発生することがある。この二重合致は無視することができる。つまり、単一合致として処理することができる。第２に、異なる型の２つの合致が（再び、最後の３２文字中の異なる位置に）発生することがある。状況によって、比較器５１１は、異なる型の合致の間の予め定められた優先順位に従って、またはどちらのパターンがメッセージの終わりに近いかによって、合致の型を示すように適応させることができる。
【００７９】
Ｃｏｍｍａｎｄモード時、つまりモデム・パラメータが設定されているときに、この技術を使用してコマンド・メッセージをデバイス・ドライバに送ることができる。メッセージは、インタフェースを介して例えばデータ・サーバへ送られるのではなく、デバイス・ドライバによって解釈される。各コマンドごとに、デバイス・ドライバは返信メッセージでパターンを探索し、それに従ってデバイス・ドライバに応答する。
【００８０】
このモード時には、コマンドを送ること無く、インタフェースを介してメッセージを受け取ることも可能である。これは、例えばリング電圧が検出された場合に発生し得る。この場合、デバイス・ドライバはイベント・パターン・リストでもパターンを探索する必要がある。
【００８１】
オンライン・モード時には、モデムはデータ・サーバに接続され、このサーバからメッセージを受け取ることができる。デバイス・ドライバは、データ・サーバから受け取った最後の３２文字でパターンを探索する。
【００８２】
上記コマンドおよびイベントは単なる解説であり、本発明は様々な方法で実現することができ、特に、幾つかのコマンドは、同様の機能を実行する他のコマンドと組合わせることができ、あるいは簡略化された実現では一部のコマンドを省略することができる。
【００８３】
ハードウェア、コンピュータ・ソフトウェア等々によって実行される機能は、電気および類似の信号を使用して実行されることが容易に理解されるであろう。ソフトウェア実現はＲＯＭに格納することができ、あるいはＦＬＡＳＨに格納またはパッチすることができる。
【００８４】
本発明の上記説明は純粋に例として行ったものであり、本発明の範囲内で細部の変形を行うことができることは理解されるであろう。
【００８５】
明細書ならびに（該当する場合）請求の範囲および図面に開示する各特徴は、独立に、または適切に組合わせて提供することができる。
【図面の簡単な説明】
【図１】  受信器／復号器のインタフェースの概略図である。
【図２】  受信器／復号器の機能ブロック図である。
【図３】  本デバイス・ドライバの一般的論理編成を示す。
【図４】  本デバイス・ドライバのパターン処理態様の論理編成をより詳細に示す。
【図５】  メッセージの構造および格納を示す。
【図１】
0004303884.tif 000002
【図２】
0004303884.tif 000003
【図３】
0004303884.tif 000004
【図４】
0004303884.tif 000005
【図５】
0004303884.tif 000006