説明

移動局における指定された事象を検出するための方法および装置

【課題】無線通信システムにおける特定のイベントを検出するための方法および装置を供給する。
【解決手段】この発明は無線通信システムにおいて指定されたイベントを検出するための方法および装置を開示する。この発明は、通信ネットワークと通信する移動局通信プロトコルスタックと移動局アプリケーションとの間で通信を容易にするアプリケーションプログラムインターフェース(API)を含む。移動局アプリケーションが指定されたイベントを登録すると移動局通信プロトコルスタックはメモリをポーリングする。このポーリングに基づいて、移動局通信プロトコルスタックは次に指定されたイベントを検出する。この発明の他の実施において、移動局通信プロトコルスタックは、指定されたイベントが生じるとトリガされる割込み通知により指定されたイベントを検出する。

【発明の詳細な説明】
【発明の属する技術分野】
【0001】
この発明は一般に無線通信の分野に関する。特に、この発明は無線通信システムにおける指定されたイベントを検出するための新規な方法および装置に関する。
【関連出願の記載】
【0002】
A 無線通信およびコンピュータ関連技術における近年の改革並びにインターネット加入者の前例の無い成長はモバイルコンピューティングの道を開いた。事実、モバイルコンピューティングの人気は移動ユーザにより多くのサポートを供給するように現在のインターネットインフラストラクチャの需要を高めた。このインフラストラクチャの生命線はローカルエリアネットワークおよび広域ネットワーク(LANおよびWAN)間のパケット(データグラム)のアドレッシングおよび経路指示を含む種々のサービスを提供するパケット志向のインターネットプロトコル(IP)である。IPプロトコルは1981年9月に発行された「インターネットプロトコルダーパインターネットプログラムスペシフィケーション(INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION)」という名称のRequest for Comment 791 (RFC791)に定義されている。
【0003】
IPプロトコルは伝送のためにデータをIPパケットにカプセル化するネットワークレイヤプロトコルである。アドレッシングおよび経路指示情報はパケットのヘッダに添付される。IPヘッダは例えば送信ホストおよび受信ホストを識別する32ビットアドレスを含む。これらのアドレスはそのパケットのためのネットワークを介して、意図されたアドレスをもつ最終目的地に向けられた経路を選択するために中継ルータにより使用される。従って、世界のいずれかのインターネットノードで発せられたIPプロトコルは世界の他のいずれかのインターネットノードに経路指示可能である。一方、トランスポート層はトランスミッションコントロールプロトコル(TCP)またはユーザデータグラムプロトコル(UDP)から構成され、特定のアプリケーションをアドレスするために使用される。
【0004】
現在の傾向は、インターネットにアクセスするためにセル方式の携帯無線電話または携帯電話のような無線通信装置と共にラップトップコンピュータまたはパームトップコンピュータのような移動コンピュータを移動ユーザが使用することである。すなわち、ユーザは自分達のコンピュータを地上にあるネットワークに接続するために一般に「有線」の通信を採用するように、移動ユーザは移動端末をそのようなネットワークに接続するために一般に「移動局」(MS)と呼ばれる無線通信装置を使用するであろう。本明細書で使用するように、移動局すなわちMSは公共の無線ネットワークにおけるいずれかの加入者局に言及するであろう。
【0005】
図1(従来技術)はMS110が基地局/移動交換局(BS/MSC)106を介して相互作用機能(IWF)108と通信する無線データ通信システムの高レベルのブロック図である。IWF108はインターネットへのアクセスポイントとしての役目をする。IWF108はBS/MSC106と接続されしばしば同じ場所に配置される。これは技術的に知られているように一般的な無線基地局かもしれない。無線データ通信システムをアドレスする他の標準プロトコルは1999年12月に発行された「無線IPネットワーク規格(WIRESS IP NETWORK STANDARD)」というタイトルの第三世代パートナーシッププロジェクト2(”3GPP2”)である。3G無線IPネットワーク規格は例えばIWF108のように機能するパケットデータサービングノード(”PSDN”)を含む。MS110とIWF108との間のデータ通信をアドレスする種々のプロトコルがある。例えば、1993年7月に発行された「デュアルモード広帯域拡散スペクトルセルラシステムのための移動局−基地局互換性規格」というタイトルの電気通信産業協会(TIA)/電子産業協会(EIA)暫定規格は一般に広帯域拡散スペクトル無線通信システムのための規格を提供する。さらに、1998年2月に発行された「広帯域拡散スペクトルシステムのためのデータサービスオプション:パケットデータサービス」というタイトルの標準TIA/EIA IS−707.5はTIA/EIA IS−95システムに関するパケットデータ伝送能力のサポートのための要件を定義し、BS/MSC106を介してMS110とIWF108との間の通信に使用可能なパケットデータベアラーサービスの仕様を定める。また、1999年3月に発行された「拡散スペクトルシステムのためのデータサービスオプション:パケットデータサービス」というタイトルのTIA/EIA IS−707−A.5規格および1999年3月に発行された「拡散スペクトルシステムのためのデータサービスオプション:高速パケットデータサービス」というタイトルのTIA/EIA IS−707−A.9規格もまた、TIA/EIA IS−95システムに関するパケットデータ伝送サポートのための要件を定義する。さらに、MS110とIWF108との間の通信をアドレスする他の標準プロトコルは、1999年7月に発行された「拡散スペクトルシステムのためのCDMA 2000規格入門」というタイトルのTIA/EIA IS−2000である。
【0006】
IS−707.5はMS110とBS/MSC 106(Umインターフェース)との間、およびBS/MSC106とIWF108(Lインターフェース)との間の通信プロトコルオプションモデルを導入する。例えばリレーモデルはMS110とIWF108との間のUmインターフェースに関してポイントツーポイントプロトコル(PPP)リンクが存在する状況を表す。PPPプロトコルは「ポイントツーポイントプロトコル(PPP)」というタイトルのRequest for Comments 1661(RFC1661)に詳細に記載されている。
【0007】
図2(従来技術)はIS−707.5リレーモデルの各エンティティーにおけるプロトコルスタックの図である。図の極左はMS110上で実行されているプロトコルレイヤを示す、慣習的な縦フォーマットで示される通信プロトコルスタックである。MS110プロトコルスタックはUmインターフェースを介してBS/MSC106プロトコルスタックに論理的に接続されるものとして示される。順にBS/MSC106プロトコルスタックはLインターフェースを介してIWF108プロトコルスタックに論理的に接続されるものとして示される。
【0008】
図2に描かれる動作は以下の通りである。MS110上で実行しているアプリケーションプログラムのようなアッパーレイヤプロトコル200エンティティーはインターネット上にデータを送信する必要がある。代表的なアプリケーションはウエブブラウザプログラム(例えば、ネットスケープナビゲータ(登録商標)、マイクロソフトインターネットイクスプローラー(登録商標))であり得る。ウエブブラウザはハイパーリンク"http://www.Qualcom.com/"のようなユニバーサルリソースロケータ(URL)を要求する。ドメインネームシステム(DNS)プロトコルもアッパーレイヤプロトコル200にあり、原文のホスト名www.Qualcomm.comをドメインネームリゾルーションの使用により32ビットの数値のIPアドレスに変換する。これは名前をインターネットのアドレスに変換する。ハイパーテキストトランスファープロトコル(HTTP)もまたアッパーレイヤプロトコル200であるが、要求されたURLのためのGETメッセージを構築し、TCPがメッセージを送信するためにそしてHTTP動作のために使用されるであろうことを指定する。技術的に知られていることだが、トランスポートレイヤ202はHTTP動作をアプリケーションに経路指定するための宛先ポートとしてポート80を使用する。
【0009】
TCPプロトコルはトランスポートレイヤプロトコル202でありDNSにより指定されたIPアドレスへの接続を開き、アプリケーションレベルHTTP GETメッセージを送信する。TCPプロトコルは、IPプロトコルがメッセージトランスポートのために使用されるであろうことを指定する。IPプロトコルはネットワークレイヤプロトコル204であり、TCPパケットを指定されたIPアドレスに送信する。PPPはリンクレイヤプロトコル206であり、IPパケットを符号化してリレーレイヤプロトコル208に送信する。リレーレイヤプロトコル208の一例は図示されたTIA/EIA−232F規格であり得る。これは1997年10月に発行された「シリアルバイナリデータ交換を採用したデータ端末機器とデータ回路終端機器との間のインターフェース」に規定されている。当業者に知られる他の規格またはプロトコルはレイヤを越える送信を定義するために使用することができることが理解される。例えば、他の適用可能な規格は、1998年9月に発行された「ユニバーサルシリアルバス(USB)仕様、改訂1.1」および1999年7月に発行された「ブルーツース仕様書バージョン1.0Aコア」を含むことができる。最後に、リレーレイヤプロトコル208は、Umインターフェースを介してBS/MSC106に送信するためにPPPパケットを無線リンクプロトコル(RLP)
210に渡し、次にIS−95プロトコル212に渡す。RLPプロトコル210は、1998年2月に発行された「広帯域拡散スペクトルシステムのためのデータサービスオプション:無線リンクプロトコル」というタイトルのIS−707.2規格に定義され、IS−95プロトコルは上述したIS−95規格に定義される。
【0010】
BS/MSC106上のコンプリメンタリリレーレイヤプロトコル220は、IS−95レイヤ218を介して次にRLPレイヤ216を介してUmインターフェース上でPPPパケットを受信する。リレイレイヤプロトコル220はPPPパケットをLインターフェースを介してIWF108上のリレイレイヤプロトコル228に渡す。IWF108上のPPPプロトコルリンクレイヤ226はリレイレイヤプロトコル228からのPPPパケットを受信し、MS110とIWF108との間のPPP接続を終端する。最終経路指定のためのIPパケットヘッダの審査のためにパケットはPPPレイヤ226からIWF108上のIPレイヤ224に渡される。これはこのシナリオではwww.Qualcomm.comである。
【0011】
MS110により発生されたIPパケットの最終的な宛先がIWF108ではないと仮定すると、パケットはネットワークレイヤプロトコル224およびリンクレイヤプロトコル225を介してインターネット上の次のルータ(図示せず)に送られる。このようにして、MS110からのIPパケットは、IS−707.5標準リレイモデルに従ってBS/MSC106、およびIWF108を介して最終的な意図されたインターネットの宛先に向けて通信される。
【0012】
MS110パケットが宛先に到達する前に、最初にデータリンク接続を確立しなければならない。RFC1661に仕様が定められるように、これは、データリンク接続を確立し、構成し、テストするために、ポイントツーポイントリンクの各エンド(すなわちPPPプロトコル206および226)が、最初にPPPリンクコントロールプロトコル(LCP)パケットを送る必要がある。LCPによりリンクが確立された後、次に、PPPプロトコル206はネットワークコントロールプロトコル(NCP)パケットを送り、ネットワークレイヤプロトコル204および224を構成することができる。PPPリンクのIPのためのNCPはIPコントロールプロトコル(IPCP)である。IPCPは1992年5月に発行された「PPPインターネットプロトコルコントロールプロトコル(IPCP)」というタイトルのRequest for Comment 1332 (RFC1332)に詳細に記載されている。しかしながら、IPCPネゴーシエイションの前にオーセンティケーションフェーズが必要となるかもしれない。ネットワークレイヤプロトコルの各々が構成された後、各ネットワークレイヤプロトコルからのパケットは、ネットワークレイヤプロトコル間のリンクを介して送信することができる。
【0013】
B.アプリケーションプログラムインターフェース
全部ではないが、MS110上の通信プロトコルスタックをサポートするほとんどのプロセスはアプリケーションプログラムにより実行される。一般的に、伝統的なデータネットワークは一方のコンピュータ上で実行しているアプリケーションプログラムが他方のコンピュータ上で実行しているアプリケーションプログラムと通信可能にするアプリケーションプログラムインターフェース(API)を採用する。APIは「ソケット」を利用する。ソケットは基礎となるネットワークのプロトコルの違いから呼び出すアプリケーションを保護する。相互接続ネットワークされた通信を得るために、APIは例えばアプリケーションがソケットを開き、データをネットワークに送信し、ネットワークからデータを受信し、ソケットを閉じることを可能にする機能から構成される。一般的なネットワークプログラミングインターフェースはUnix(登録商標)オペーレーティングシステムの下で動作するバークレーシステムズデベロップメント(BSD)ソケットインターフェースと、Windows(登録商標)の下で動作するウインドウズソケットインターフェース(WinSock(登録商標))を含む。
【0014】
BSDソケットもWinSock(登録商標)も無線MS110(図2参照)上の通信プロトコルスタックをサポートしないので、そのようなスタックをサポートする新規なAPIが必要となる。特に、必要なのは無線通信システムにおいて、指定されたイベントを検出するための新規な方法と装置である。
【発明の概要】
【0015】
この発明は無線通信システムにおける特定のイベントを検出するための方法および装置を供給することにより上述した必要性に取り組む。一実施において、この発明は、通信ネットワークと通信する移動局通信プロトコルスタックと移動局アプリケーションとの間の通信を容易にするアプリケーションプログラムインターフェース(API)を含む。移動局アプリケーションが指定されたイベントを登録すると、移動局通信プロトコルスタックはメモリをポーリングする。次に、移動局通信プロトコルスタックはポーリングにもとづいて指定されたイベントを検出する。この発明の他の実施において、移動局通信プロトコルスタックは指定されたイベントが生じたときトリガされる割込み通知により指定されたイベントを検出する。
【図面の簡単な説明】
【0016】
【図1】(従来技術)は移動局がインターネットに接続する無線通信システムの高レベルブロック図である。
【図2】(従来技術)はTIA/EIA IS−707.5リレーモデルの各エンティティーのプロトコルスタックを概略的に示す図である。
【図3】この発明の実施形態の特徴を概略的に示す図である。
【図4】指定されたイベントを検出するためのフローチャートである。
【図5】指定されたイベントを検出するためのフローチャートである。
【図6】非同期接続を描くブロック図である。
【図7】非同期ソケット入力を描くブロック図である。
【図8】この発明の実施形態の状態図である。
【図9】この発明の実施形態の状態図である。
【図10】この発明の実施形態の状態図である。
【発明を実施するための形態】
【0017】
この発明の実施形態は、ソフトウエア、ファームウエア、および/またはハードウエアを含む種々の実施で実現可能である。それ故この発明の動作と行動はソフトウエアコードまたはハードウエア部品の特定指示なしに記載される。当業者は指定されたイベントを検出するこの発明を実現するためのソフトウエアおよび/またはハードウエアを設計可能にするであろうことが理解される。
【0018】
図3はMS110内のアプリケーション260、通信プロトコルスタック280およびAPI270を示す。アプリケーション260と通信プロトコルスタック(すなわちプロトコルレイヤ202、204、206、208、210、212)はAPI270により供給されるファンクションコールを介して通信する。言い換えれば、API270はアプリケーション260と通信プロトコルスタック280が機能性の妥協なしに異なるプロセッサおよびオペレーティングシステム上で実行可能にする。当業者はこの発明の範囲から逸脱することなく呼び出された機能のための種々の名前が可能であることが理解される。
【0019】
通信プロトコルスタック280は、データを記憶する複数の送信キューおよび受信キューを含むことに留意する必要がある。出力機能はアプリケーション260のメモリからデータをリードし、そのデータを通信プロトコルスタック280の送信キューの1つに記憶する。入力機能は通信プロトコルスタック280の受信キューの1つからデータをリードし、そのデータをアプリケーション260のメモリに記憶する。
【0020】
動作を明らかにするために、MS110はIPパケットを受信する。MS110の通信プロトコルスタック280はIPパケットを非カプセル化し、トランスポートレイヤ202に渡す(図3参照)。IPパケットヘッダのフィールドはTCPまたはUDPのいずれかであるトランスポートを示す。トランスポートレイヤヘッダで指定された宛先ポート番号に基づいて、データは特定のパケットに相当する、通信プロトコルスタック280の適当な受信キューに経路指示される。次に、データはアプリケーション260に送信される。
【0021】
ある状況においては、待ち時間効果を低減するためにプロトコルスタック280の種々のレイヤをバイパスするパケットを用いて動作することが望ましい場合がある。そのようなパケットは宛先情報(すなわち宛先ポート番号)を欠いている、未加工IPパケットのような、未加工のパケット化されたデータを含む。従って宛先アプリケーションは未加工のIPパケットから決定することはできない。そのような状況において、通信プロトコルスタック280は、受信した未加工のIPパケットを、例えばIPプロトコルをサポートするために登録されたすべてのソケットに送信することができる。これはペイロードデータが宛先アプリケーションに送信されることを可能にする。インターネットコントロールメッセ−ジングプロトコル(ICMP)構文解析エンジンはIPパケットに相当し、未加工のパケット化されたデータも受信することができる。公知のICMP構文解析エンジンは「インターネットコントロールメッセージプロトコル」というタイトルのRFC792に定義される。通信プロトコルスタック280は例えば受信したパケットをアプリケーション260に渡す前に処理し、これはアプリケーション260によりなされる非カプセル化の量を低減する。
【0022】
逆に言えば、アプリケーション260は未加工のパケット化されたデータをソケットを用いてUmインターフェース上に送信可能であり、これは通信プロトコルスタック280とアプリケーション260との間の通信を容易にする。さらに、アプリケーション260は未加工のパケット化されたデータをUmインターフェース上に送信することができる。次に、通信プロトコルスタック280は例えばパケット化されたまたは未加工のパケット化されたデータをIPパケットにカプセル化し、Umインターフェース上に送信する。この例において、通信プロトコルスタック280はIPパケットを発生するためにIPヘッダとチェックサムを供給する。一方、ICMPの場合、指定されたプロトコルタイプはIPヘッダにコピー可能である。
【0023】
上述したように、通信プロトコルスタック280の使用に固有の待ち時間を低減するためにプロトコルレイヤ202、204、206、208、210、212の少なくとも1つとアプリケション260との間のデータ通信を可能にするソケットを作ることができる。すなわち、アプリケーション260はトランスポートレイヤ202、ネットワークレイヤ204、およびリンクレイヤ206を迂回するソケットを作ることができ、従ってアプリケーションがペイロードデータをRLPレイヤ210に送信したり、RLPレイヤ210からペイロードデータを受信したりすることを可能にする。また、アプリケーション260はアプリケ−ション260がペイロードデータをIS−95レイヤ212に送信したり、IS−95レイヤ212からペイロードデータを受信可能にするソケットを作ることができる。
【0024】
一実施形態において、アプリケーション260は通信プロトコルスタック280を開き、アプリケーション識別を割当てる機能open_netlib()をコールする。アプリケーション識別は複数のアプリケーションが通信プロトコルスタック280と通信すること(すなわちマルチタスク)を可能にする。例えば機能open_netlib()へのコールの一部としてアプリケーション260はネットワークコールバックファンクションへのポインタとソケットコールバックファンクションへのポインタを指定する。トラフィックチャネル(すなわちUm)および/またはリンクレイヤ(PPP206)に対するリード/ライトおよびトラフィックチャネルおよび/またはリンクレイヤを閉じるようなネットワークサブシステム指定イベントが生じた時(またはイネーブルになった時)はいつでもネットワークコールバックファンクションが呼び出されアプリケーション260に知らせる。トランスポートレイヤ(すなわちTCP)に対するリード/ライトおよびトランスポートレイヤを閉じるようなソケット指定イベントが生じた(またはイネーブルになった)ときはいつでもソケットコールバックファンクションが呼び出されアプリケーション260に知らせる。通信ネットワークは、トラフィックチャネル、リンクレイヤおよびトランスポートレイヤの少なくとも1つから構成されることは当業者にとって明らかでなければならない。
【0025】
通信プロトコルスタック280が開かれると、機能pppopen()がコールされ、トラフィックチャネルおよびリンクレイヤを含むネットワークサブシステム接続を開始する。これはアプリケーションワイドコールであり、個々のソケットに依存しない。しかしながら、それはアプリケーション識別を必要とする。ネットワークサブシステム接続が確立または失敗すると、ネットワークコールバックファンクションが呼び出され指定されたイベント通知を供給する。例えば、トラフィックチャネルが確立されなければ、ネットワークサブシステムは失敗する。さらにネットワークサブシステム特性は機能net_ioctl()へのコールを用いて設定可能である。例えば、このコールはソケットのデータレートを指定することができる。
【0026】
ネットワークサブシステム接続が確立されると、ソケット(またはソケット群)は機能socket()へのコールを介して作られイニシャライズすることができる。しかしながら、ソケット機能が使用できる前に機能socket()へのコールはソケットディスクリプタを戻すかもしれない。従って、アプリケーション260は指定されたイベントを登録し、非同期通知を受信するために機能async_select()をコールすることができる。この登録は、通知を必要とする指定されたイベントのソケットディスクリプタおよびビットマスク(すなわち複数のイベントがORされる)を指定するために、機能コールの一部として、アプリケーション260により実現可能である。指定されたイベントが生じ(すなわちイネーブルとなり)、それが例えば、通信プロトコルスタック280またはAPI270により検出されるなら、ソケットコールバック機能が開始され非同期通知が供給される。コールバック機能はアプリケーション260に、リモードプロシージャコール(RPC)上のメッセージ、またはハードウエアまたはソフトウエアインタラプトを含む信号、メッセージの使用により指定されたイベントを通知することができる。
【0027】
アプリケーション260に指定されたイベントが通知されると、サービスするための指定されたイベントを決定するためにアプリケーションは機能getnextevent()をコールすることができる。この機能は指定されたソケットディスクリプタに対して生じた指定されたイベントのマスクを戻す。また、アプリケーション260は生じた指定されたイベントのマスク内のビットをクリアする。従って、アプリケーション260はもはやディスエーブルされた指定されたイベントの通知を受信することができない。アプリケーション260は機能async_select()への次のコールを介してこれらの指定されたイベントを再登録(再イネーブル)しなければならない。
【0028】
さらにアプリケーション260は指定されたイベントのビットマスクの対応するビットをクリアすることにより登録された指定されたイベントを変更することができる。ビットマスクにおいてビットがすでにクリアされている場合には、その要求は単に無視される。要約すれば、例えば機能async_deselect()の機能へのコールを介してイベント当りでディスエーブルすることができる。
【0029】
図4および5は指定されたイベントを検出するためのフローチャートである。図4に示すように、例えば、通信プロトコルスタック280は指定されたイベントを登録するためにブロック400においてアプリケーション260を待つ。指定されたイベントが登録された後、通信プロトコルスタック280はブロック402においてメモリをポーリングする。ブロック404において、指定されたイベントはブロック402のポーリングされた情報に基づいて検出可能である。ブロック406において、通信プロトコルスタック280のメモリ(即ち送信キュー)が十分なデータ量を受け入れ可能であるとき、書き込みイベントが検出される。データはアプリケーション260から送信可能である。ブロック404のポーリングされた情報が満足されなければ(すなわち指定されたイベントが生じなければ)、通信プロトコルスタック280はブロック402においてメモリをポーリングし続ける。
【0030】
図5において、通信プロトコルスタック280はブロック500に示すように指定されたイベントを登録するためにアプリケーション260を待つ。このとき割込み通知をディスエーブルにすることができる。従って、割込み通知はトリガすることもできないしトリガされることもできない。ブロック500において指定されたイベントが登録されると、ブロック502において割込み通知が指定されたイベントの発生に基づいてトリガすることができる。例えば読み出しイベントは、データが通信プロトコルスタック280のメモリ(すなわち受信キュー)に書き込まれると生じる。従って、ブロック504において、イベントの発生によりトリガされた割込み通知を受信すると読み出しイベントが通信プロトコルスタック280により検出される。通信プロトコルスタック280のメモリに記憶されたデータは通信ネットワークから送信される。さらに、読み出しイベントの場合、記憶されたデータはアプリケーション260に送信可能である。
【0031】
最後に、例えばトランスポートレイヤのようなデータリンク接続が終端されるので、ソケットが再使用のために利用可能なときには閉じるイベントが検出される。
【0032】
非同期イベント通知の使用を図示するために非同期接続(図6参照)および非同期入力(図7参照)の以下の例が提供される。
【0033】
図6において、機能open_netlib()へのコールを介して通信プロトコルスタック280が入力され、コールバック機能が指定される。機能pppopen()(A)へのコールはネットワークサブシステム接続(B)を開始する。ネットワークサブシステム接続は確立された後、コールバックファンクションが呼び出され(C)、ネットワークサブシステムの可用性が報告される。
【0034】
ソケットが開かれ割当てられたと仮定すると、機能connect()(D)へのコールはTCP接続(E)を開始する。さらに、アプリケーション260は機能async_select()(F)をコールし、指定されたイベントを登録して通知を受信する。この例において、所定の指定されたイベントは書き込みイベントであり、接続が確立すると生じる。
【0035】
接続を確立すると、指定されたイベントがマスクに登録されるとコールバック機能が呼び出される。そうであるなら、コールバック機能が呼び出され(G)、非同期通知を供給する。アプリケーション260が通知されると、アプリケーションは機能getnextevent()(H)をコールし、その指定されたイベントが生じたかを決定する(I)。また、このコールはマスク内のイベント(すなわち書き込みイベント)のビットをクリアする(J)。アプリケーション260は機能async_select()へのコールを介して指定されたイベントの次の通知を再登録しなければならない。
【0036】
図7において、非同期ソケット読み出しの例図が供給される。読み出しを開始するために、アプリケーション260は機能read()(A)をコールする。読むべきデータが無いと仮定すると、アプリケーション260は機能async_select()(B)をコールし(すなわち、対応するビットをマスクに設定し)、通知を受信する。この例において、所定の指定されたイベントは読み出しイベントであり、アプリケーション260により読むべきデータがあるとき生じる。
【0037】
データを受信キューに記憶すると、読み出しイベントがマスクに指定されているならば、コールバック機能が呼び出される。そうであるなら、コールバック機能が呼び出され(C)、非同期通知を供給する。アプリケーション260が通知されると、アプリケーションは機能getnextevent()(D)をコールし、どのイベントが生じたかを決定する(E)。また、このコールはマスク(F)のイベントのビットをクリアする。アプリケーションは、機能async_select()へのコールを介してイベントの次の通知を再イネーブルしなければならない。最後に、受信キューに記憶されたデータを読み出すために、アプリケーション260は機能read()をコールする(G)。
【0038】
図8乃至10において、この発明の実施形態の状態機械が図示される。図8乃至9において、通信プロトコルスタック280が開かれ、ネットワークサブシステム接続(すなわち、トラフィックチャネル、および必要であればリンクレイヤ−未加工のソケットはネットワークサブシステムを迂回することができる)が確立される。当業者は、この発明の範囲を逸脱することなく状態に対する種々の名前が可能であることを理解するであろう。
【0039】
状態機械は状態間を非同期に遷移可能であり、読み出し、書き込み、クローズのような指定されたイベントを制御する(すなわちイネーブルおよびディスエーブルする)。指定されたイベントは動作の開始時にディスエーブルになることができ、所定の状態でイネーブルになることができ、アプリケーション260がMS110の状態を識別するのを助ける。
【0040】
また、API270は、API270の状態およびアプリケーション260によりコールされる機能の種類に基づいてアプリケーション260に特別な(すなわち単に一般的でない)指定された状態メッセージを報告する。指定された状態メッセージは基礎を成す通信ネットワークの状態を反映することができる。例えば状態メッセージは機能コールの引数としてアプリケーション260に報告される。
【0041】
図8において、例えばAPI270のTCPソケットのための状態図が図示される。イニシャライズされていないソケットは「ヌル」状態800で始まる。ソケットはまだ今のところ割当てられていないので「存在」しない。ソケットは機能socket()へのコールを介して作成しイニシャライズすることができる。socket()はソケット関連機能とともに使用するためにソケットディスクリプタを戻す。機能socket()へのコールの後、状態機械は「イニシャライズ」状態805に遷移する。
【0042】
イニシャライズ状態805において、状態機械は、TCP接続の可能性が機能close()へのコールにより終端されるときはヌル状態800に戻る。機能close()へのコールはすべてのソケットに関連するリソースを解放する。一方、機能connect()へのコールはTCP接続を開始し、状態機械を「オープニング」状態810に遷移する。
【0043】
オープニング状態810において、(1)ネットワークサブシステム障害が生じたとき、(2)TCP接続を確立するための障害があるとき、または(3)変更されたIPアドレスがあるときは、状態機械は「クローズド」状態815に遷移する。また、機能close()(これはTCP接続を終端する)へのコールの後、終端手続きが開始される間状態機械はソケットを「クロージング」820に遷移する。最後に、TCP接続が確立されると、状態機械は「オープン」状態825に遷移する。
【0044】
オープン状態825において、ソケットは読み出しおよび書き込みのためにオープンされる。特に書き込みイベントは即イネーブルとなり、一方読み出しイベントは通信プロトコルスタック280のメモリにデータが記憶されているかどうかに基づいてイネーブルになる。(1)ネットワークサブシステム障害が発生したとき、(2)TCP接続を確立するための障害があるとき、(3)ネットワークサーバにより開始されるTCPリセット、TCPアボート、またはTCPクローズドのようなTCP接続を終端させる試みがあるとき、(4)IPアドレスに変更があるとき状態機械はクローズド状態815に遷移する。機能close()へのコールによるようなアプリケーションにより開始されたTCP接続終端は状態機械をクロージング状態820に遷移する。
【0045】
クローズド状態815において、読み出し、書き込みおよびクローズイベントはすべてアサートされる。TCP接続を終端する機能close()へのコールの後、状態機械はソケットをヌル状態800に遷移させる。この状態はソケットを自由にし、再使用のために利用可能にする。
【0046】
クロージング状態820において、(1)ネットワークサブシステム障害が発生したとき、(2)ネットワークサーバにより開始されるTCPリセットまたはTCPクローズドのようなTCP接続を終端する試みがあるとき、(3)タイマが満了のとき、および(4)IPアドレスに変更があるときは、状態機械は「クローズ待ち」状態830に遷移する。TCP接続を終端する際の遅延に対して保護するために、API270はタイマを導入し、このタイマはTCP接続終端の開始時にアクティブになる。見られるように、タイマの満了は状態機械をクローズ待ち状態830に遷移する。
【0047】
クローズ待ち状態830において、機能close()へのコールはTCP接続を終端し、状態機械をヌル状態800に遷移させる。クローズイベントはこの状態830においてアサートされる。
【0048】
表1乃至3はAPI270により支持された指定された状態メッセージを説明する。ヌル状態において(表1乃至3には示されていない)、指定されたメッセージ状態は記述的なものであるが、「さらなるリソースは利用できない」という指定された状態メッセージがアプリケーション260に報告可能である。
【表1】

【表2】

【表3】

【0049】
一例として、図9はAPI270のUDPソケットのための状態図を示す。イニシャライズされていないソケットは「ヌル」状態900で開始する。ヌル状態800に関して上で述べたように、ソケットは割当てられなかったので「存在」しない。ソケットは機能ソケット()へのコールを介して作りイニシャライズすることができ、ソケットに関連する機能とともに使用するためにソケットディスクプリタを戻す。機能ソケット()へのコールの後、状態機械は「オープン」状態905に遷移する。
【0050】
オープン状態905において、ソケットは読み出しおよび書き込みを行うためにオープンされる。特に、書き込みイベントは即イネーブルになるのに対し、読み出しイベントはデータが通信プロトコルスタック280のメモリに記憶されているかどうかに基づいてイネーブルになる。ネットワークサブシステムに障害が生じると、状態機械は「クローズド」状態910に遷移する。機能クローズ()へのコールによるようなアプリケーション開始UDP接続終端は状態機械をヌル状態900に遷移する。
【0051】
クローズド状態910において、読み出し、書き込みおよびクローズイベントはすべてイネーブルになる。機能クローズ()へのコールの後、これはUDP接続を終端させるのだが、状態機械はソケットをヌル状態900に遷移し、これはソケットを自由にし再使用のために利用可能にさせる。
【0052】
表4乃至6はAPI270により支持される指定されたステータスメッセージを示す。ヌル状態(表4乃至6には示されていない)において、上で述べたように「さらなるリソースは利用できない」という指定されたステータスメッセージはアプリケーション260に報告可能である。
【表4】

【表5】

【表6】

【0053】
図10はトラフィックチャネル(すなわちUm)およびリンクレイヤ(すなわちPPP206)のようなネットワークサブシステムを制御するための状態図を示す。機能open_netlib()へのコールはネットワークサブシステムをオープンし、ソケットを「クローズド」状態1000にイニシャライズする。機能pppopen()へのコールはネットワークサブシステム接続を開始し、ソケットを「オープニング」状態1005に遷移する。また、入って来るPPPコールによるMSへのページはソケットをオープニング状態1005に遷移する。両方の場合において、成功した交渉に応じてMS110はトラフィックチャネルを越えてRLPおよびPPPの両方を同期化し確立しようとする。
【0054】
オープニング状態1005において、ネットワークサブシステム接続が確立されるとソケットは「オープン」状態1010に遷移する。一方、ソケットは、ネットワークサブシステム接続が確立されなければクローズド状態1000に戻る。
【0055】
オープン状態1010において、コールバック機能が行使され、アプリケーション1060に対してイネーブルである読み出し、書き込みおよびクローズのような指定されたイベントを識別する。このとき、MS110はトラフィックチャネルを介して通信することができる。しかしながら、ソケットは、ネットワークサブシステムに障害が生じたときはクローズド状態1000に遷移し、コールバック機能を行使する。function close ()へのコールによるようなアプリケーションにより開始されたネットワークサブシステム接続終端はソケットを「クロージング」状態1015に遷移する。
【0056】
クロージング状態1015において、ネットワークサブシステム接続が終端するとソケットはクローズド状態1000に遷移する。クローズド状態1000において、コールバック機能が行使され、アプリケーション260に対してイネーブルである指定されたイベントを識別する。
【0057】
表7は特定の機能コールに対応し、API270により支持される指定されたステータスメッセージを示す。
【表7】

【表8】

【表9】

【表10】

【0058】
他の実施形態において、機械は、指定されたイベントを検出する上述したプロセスを生じるために符号化されたソフトウエアコードのような符号化された情報からなる機械読み出し可能な媒体を読むことができる。機械読み出し可能な媒体はメモリまたは記憶ディスク、または通信ネットワークからのような記憶装置から符号化された情報を受け入れることができる。また、機械読み出し可能な媒体は、媒体が製造されるとき、符号化された情報を用いてプログラムすることができる。機械はアプリケーション260、通信プロトコルスタック280、およびAPI270の少なくとも1つで構成でき、一方機械読み出し可能な媒体はメモリまたは記憶ディスクで構成することができる。
【0059】
この発明は特定の実施形態に関連して示されたが、それに限定されると考えられるべきでない。むしろ、この発明は添付したクレームおよびそれらの均等物の範囲によってのみ限定される。

【特許請求の範囲】
【請求項1】
下記工程を具備する、指定されたイベントを検出するための移動局通信プロトコルスタックのための方法:
前記移動局通信プロトコルスタックと通信ネットワークとの間を通信する;
移動局アプリケーションインターフェースを介して前記移動局通信プロトコルと移動局アプリケーションとの間を通信する;
前記移動局アプリケーションが指定されたイベントを登録するとき、前記移動局通信プロトコルスタックにより、メモリをポーリングする;および
前記移動局通信プロトコルスタックにより、前記ポーリングに基づいて前記指定されたイベントを検出する。
【請求項2】
前記メモリが十分な量のデータを受け入れるために利用可能なとき、前記移動局通信プロトコルスタックにより、前記指定されたイベントを検出する工程をさらに具備する、請求項1の方法。
【請求項3】
前記指定されたイベントは書き込みイベント、読み出しイベントおよびクローズイベントの少なくとも1つである、請求項1の方法。
【請求項4】
前記データは前記移動局アプリケーションから送信される、請求項2の方法。
【請求項5】
前記指定されたイベントを前記移動局アプリケーションにより登録し、前記指定されたイベントを前記移動局アプリケーションによりディスエーブルする工程をさらに具備する、請求項1の方法。
【請求項6】
下記工程を具備する、指定されたイベントを検出するための移動局通信プロトコルスタックのための方法:
移動局通信プロトコルスタックと通信ネットワークとの間で通信する;
移動局アプリケーションインターフェースを介して移動局通信プロトコルスタックと移動局アプリケーションとの間で通信する;
移動局アプリケーションにより前記指定されたイベントを登録する;
前記指定されたイベントが生じたとき割込み通知をトリガする;および
前記割込み通知により前記指定されたイベントを、前記移動局通信プロトコルスタックにより検出する。
【請求項7】
前記指定されたイベントはデータがメモリに書き込まれるとき生じる、請求項6の方法。
【請求項8】
前記指定されたイベントは書き込みイベント、読み出しイベント、およびクローズイベントの少なくとも1つである、請求項6の方法。
【請求項9】
前記指定されたイベントを前記移動局アプリケーションによりディスエーブルする工程をさらに具備する、請求項6の方法。
【請求項10】
通信ネットワークと通信するための移動局通信プロトコルスタックと;
前記移動局通信プロトコルスタックと移動局アプリケーションとの間の通信を容易にするための移動局アプリケーションインターフェースと;および
前記移動局アプリケーションが前記指定されたイベントを登録するとき前記移動局通信プロトコルスタックによりポーリングされるメモリとを具備し、
前記移動局通信プロトコルスタックは前記ポーリングに基づいて前記指定されたイベントを検出するように適応する、指定されたイベントを検出するための装置。
【請求項11】
メモリが十分な量のデータを受け入れるために利用可能なときはいつでも、前記移動局アプリケーションインターフェースは前記指定されたイベントを検出するように適応する、請求項10の装置。
【請求項12】
前記指定されたイベントは書き込みイベント、読み出しイベントおよびクローズイベントの少なくとも1つである、請求項10の装置。
【請求項13】
前記データは移動局アプリケーションから送信される、請求項10の装置。
【請求項14】
前記移動局アプリケーションは前記指定されたイベントをディスエーブルするように適応する、請求項10の装置。
【請求項15】
通信ネットワークと通信するための移動局通信プロトコルスタックと;および
前記移動局通信プロトコルスタックと移動局アプリケーションとの間の通信を容易にするための移動局アプリケーションインターフェースとを具備し、
前記移動局アプリケーションは前記指定されたイベントを登録するように適応し、
前記指定されたイベントが生じたとき、割込み通知がトリガされるように適応し、および
前記割込み通知によって前記移動局通信プロトコルスタックが前記指定されたイベントを検出するように適応する、指定されたイベントを検出するための装置。
【請求項16】
前記指定されたイベントは書き込みイベント、読み出しイベント、クローズイベントの少なくとも1つである、請求項15の装置。
【請求項17】
前記指定されたイベントはデータがメモリに書き込まれると生じる、請求項15の装置。
【請求項18】
前記移動局は前記指定されたイベントをディスエーブルするように適応する、請求項15の装置。
【請求項19】
機械により読まれたとき下記プロセスを生じる、符号化された情報からなる機械読み出し可能な媒体:
移動局通信プロトコルスタックと通信ネットワークとの間で通信する;
移動局アプリケーションインターフェースを介して前記移動局通信プロトコルスタックと移動局アプリケーションとの間で通信する;
移動局アプリケーションが指定されたイベントを登録するとき前記移動局通信プロトコルスタックによりメモリをポーリングする;および
前記ポーリングに基づいて前記指定されたイベントを前記移動局通信プロトコルスタックにより検出する。
【請求項20】
前記メモリが十分な量のデータを受け入れるように利用可能なとき、前記指定されたイベントを前記移動局通信プロトコルスタックにより検出するプロセスをさらに具備する、請求項19の機械読み出し可能な媒体。
【請求項21】
前記指定されたイベントは、書き込みイベント、読み出しイベント、クローズイベントの少なくとも1つである、請求項19の機械読み出し可能な媒体。
【請求項22】
前記データは前記移動局アプリケーションから送信される、請求項20の機械読み出し可能な媒体。
【請求項23】
前記指定されたイベントを前記移動局アプリケーションにより登録し、前記指定されたイベントを前記移動局アプリケーションによりディスエーブルするプロセスをさらに具備する、請求項19の機械読み出し可能な媒体。
【請求項24】
機械により読まれたとき下記プロセスを生じる、符号化された情報からなる機械読み出し可能な媒体:
移動局通信プロトコルスタックと通信ネットワークとの間で通信する;
移動局アプリケーションインターフェースを介して前記移動局通信プロトコルスタックと移動局アプリケーションとの間で通信する;
移動局アプリケーションにより指定されたイベントを登録する;
指定されたイベントが生じたとき割込み通知をトリガする;および
前記割込み通知により前記指定されたイベントを前記移動局通信プロトコルスタックにより検出する。
【請求項25】
前記指定されたイベントはデータがメモリに書き込まれるとき生じる、請求項24の機械読み出し可能な媒体。
【請求項26】
前記指定されたイベントは書き込みイベント、読み出しイベントおよびクローズイベントの少なくとも1つである、請求項24の機械読み出し可能な媒体。
【請求項27】
前記指定されたイベントを前記移動局アプリケーションによりディスエーブルするプロセスをさらに具備する、請求項24の機械読み出し可能な媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−176858(P2011−176858A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−85510(P2011−85510)
【出願日】平成23年4月7日(2011.4.7)
【分割の表示】特願2001−573727(P2001−573727)の分割
【原出願日】平成13年3月29日(2001.3.29)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】