(57)【特許請求の範囲】
【請求項１】
送信用のデータを集約する方法であって、
アプリケーションプログラミングインターフェースを介してアプリケーションから送信遅延耐性を示す情報を受信するステップと、
前記アプリケーションプログラミングインターフェースを介して前記アプリケーションからパケットを受信するステップと、
前記受信した送信遅延耐性に基づいて前記パケットをいつ送信すべきかを判断するステップとを含み、
前記パケットをいつ送信すべきかを判断するステップが、複数のパケットを集約し、前記集約されたパケットのうちの少なくとも1つがその送信遅延耐性に等しい遅延を体験したときに、これまで集約されたパケットを個別に送信するとともに新たなパケットを追加の遅延なしで送信することになる期間の間、送信ウィンドウを開くことを動的に判断するステップを含む、方法。
【請求項２】
前記アプリケーションから送信遅延耐性を示す情報を受信するステップが、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションによって書き込まれた情報をメモリから取り出すステップを含む、請求項1に記載の方法。
【請求項３】
前記アプリケーションから送信遅延耐性を示す情報を受信するステップが、前記パケットのヘッダを受信するステップを含む、請求項1に記載の方法。
【請求項４】
送信遅延耐性を示す前記情報が、いくつかの時間単位を示す情報を含む、請求項1に記載の方法。
【請求項５】
データの前記パケットをいつ送信すべきかを判断するステップが、データの前記パケットを受信してから経過した時間が前記送信遅延耐性に基づく時間を超えるかどうかに基づく、請求項1に記載の方法。
【請求項６】
送信遅延耐性を示す情報を受信するステップが、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第1のタイプのパケットに関連する第1の送信遅延耐性を示す情報を受信し、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第2のタイプのパケットに関連する第2の送信遅延耐性を示す情報を受信するステップを含み、前記パケットを受信するステップが、前記パケットが前記第1のタイプか前記第2のタイプかを判断するステップを含み、前記パケットをいつ送信すべきかを判断するステップが、前記パケットの前記判断されたタイプに基づいて前記パケットをいつ送信すべきかを判断するステップを含む、請求項1に記載の方法。
【請求項７】
送信用のデータを集約するためのワイヤレスデバイスであって、
アプリケーションプログラミングインターフェースを介してアプリケーションから送信遅延耐性を示す情報を受信し、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションからパケットを受信するように構成されたプロセッサと、
前記受信した送信遅延耐性に基づいて前記パケットをいつ送信すべきかを判断するように構成されたネットワークドライバとを備え、
前記プロセッサが、複数のパケットを集約し、前記集約されたパケットのうちの少なくとも1つがその送信遅延耐性に等しい遅延を体験したときに、これまで集約されたパケットを個別に送信するとともに新たなパケットを追加の遅延なしで送信することになる期間の間、送信ウィンドウを開くことを動的に判断することによって、前記パケットをいつ送信すべきかを判断するようにさらに構成される、ワイヤレスデバイス。
【請求項８】
メモリをさらに備え、前記プロセッサが、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションによって書き込まれた情報を前記メモリから取り出すようにさらに構成される、請求項7に記載のワイヤレスデバイス。
【請求項９】
前記プロセッサが、前記アプリケーションから前記パケットのヘッダ内の送信遅延耐性を示す情報を受信するようにさらに構成される、請求項7に記載のワイヤレスデバイス。
【請求項１０】
送信遅延耐性を示す前記情報が、いくつかの時間単位を示す情報を含む、請求項7に記載のワイヤレスデバイス。
【請求項１１】
前記プロセッサが、データの前記パケットを受信してから経過した時間が前記送信遅延耐性に基づく時間を超えるかどうかに基づいて、データの前記パケットをいつ送信すべきかを判断するようにさらに構成される、請求項7に記載のワイヤレスデバイス。
【請求項１２】
前記プロセッサが、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第1のタイプのパケットに関連する第1の送信遅延耐性を示す情報を受信し、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第2のタイプのパケットに関連する第2の送信遅延耐性を示す情報を受信することによって、送信遅延耐性を示す情報を受信するようにさらに構成され、
前記プロセッサが、前記パケットが前記第1のタイプか前記第2のタイプかを判断することによって、前記パケットを受信するようにさらに構成され、
前記プロセッサが、前記パケットの前記判断されたタイプに基づいて前記パケットをいつ送信すべきかを判断するようにさらに構成される、請求項7に記載のワイヤレスデバイス。
【請求項１３】
送信用のデータを集約するためのワイヤレスデバイスであって、
アプリケーションプログラミングインターフェースを介してアプリケーションから送信遅延耐性を示す情報を受信するための手段と、
前記アプリケーションプログラミングインターフェースを介して前記アプリケーションからパケットを受信するための手段と、
前記受信した送信遅延耐性に基づいて前記パケットをいつ送信すべきかを判断するための手段とを備え、
前記パケットをいつ送信すべきかを判断するための前記手段が、複数のパケットを集約し、前記集約されたパケットのうちの少なくとも1つがその送信遅延耐性に等しい遅延を体験したときに、これまで集約されたパケットを個別に送信するとともに新たなパケットを追加の遅延なしで送信することになる期間の間、送信ウィンドウを開くことを動的に判断するための手段を含む、ワイヤレスデバイス。
【請求項１４】
前記アプリケーションから送信遅延耐性を示す情報を受信するための前記手段が、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションによって書き込まれた情報をメモリから取り出すための手段を備える、請求項13に記載のワイヤレスデバイス。
【請求項１５】
前記アプリケーションから送信遅延耐性を示す情報を受信するための前記手段が、前記パケットのヘッダを受信するための手段を備える、請求項13に記載のワイヤレスデバイス。
【請求項１６】
送信遅延耐性を示す前記情報が、いくつかの時間単位を示す情報を含む、請求項13に記載のワイヤレスデバイス。
【請求項１７】
データの前記パケットをいつ送信すべきかを判断するステップが、データの前記パケットを受信してから経過した時間が前記送信遅延耐性に基づく時間を超えるかどうかに基づく、請求項13に記載のワイヤレスデバイス。
【請求項１８】
送信遅延耐性を示す情報を受信するための前記手段が、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第1のタイプのパケットに関連する第1の送信遅延耐性を示す情報を受信し、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第2のタイプのパケットに関連する第2の送信遅延耐性を示す情報を受信するための手段を備え、前記パケットを受信するための前記手段が、前記パケットが前記第1のタイプか前記第2のタイプかを判断するための手段を備え、前記パケットをいつ送信すべきかを判断するための前記手段が、前記パケットの前記判断されたタイプに基づいて前記パケットをいつ送信すべきかを判断するための手段を備える、請求項13に記載のワイヤレスデバイス。
【請求項１９】
実行されると、装置に送信用のデータを集約する方法を実行させる命令が符号化されて記憶されるコンピュータ可読記憶媒体であって、前記方法が、
アプリケーションプログラミングインターフェースを介してアプリケーションから送信遅延耐性を示す情報を受信するステップと、
前記アプリケーションプログラミングインターフェースを介して前記アプリケーションからパケットを受信するステップと、
前記受信した送信遅延耐性に基づいて前記パケットをいつ送信すべきかを判断するステップとを含み、
前記パケットをいつ送信すべきかを判断するステップが、複数のパケットを集約し、前記集約されたパケットのうちの少なくとも1つがその送信遅延耐性に等しい遅延を体験したときに、これまで集約されたパケットを個別に送信するとともに新たなパケットを追加の遅延なしで送信することになる期間の間、送信ウィンドウを開くことを動的に判断するステップを含む、コンピュータ可読記憶媒体。
【請求項２０】
前記アプリケーションから送信遅延耐性を示す情報を受信するステップが、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションによって書き込まれた情報をメモリから取り出すステップを含む、請求項19に記載のコンピュータ可読記憶媒体。
【請求項２１】
前記アプリケーションから送信遅延耐性を示す情報を受信するステップが、前記パケットのヘッダを受信するステップを含む、請求項19に記載のコンピュータ可読記憶媒体。
【請求項２２】
送信遅延耐性を示す前記情報が、いくつかの時間単位を示す情報を含む、請求項19に記載のコンピュータ可読記憶媒体。
【請求項２３】
データの前記パケットをいつ送信すべきかを判断するステップが、データの前記パケットを受信してから経過した時間が前記送信遅延耐性に基づく時間を超えるかどうかに基づく、請求項19に記載のコンピュータ可読記憶媒体。
【請求項２４】
送信遅延耐性を示す情報を受信するステップが、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第1のタイプのパケットに関連する第1の送信遅延耐性を示す情報を受信し、前記アプリケーションプログラミングインターフェースを介して前記アプリケーションから第2のタイプのパケットに関連する第2の送信遅延耐性を示す情報を受信するステップを含み、前記パケットを受信するステップが、前記パケットが前記第1のタイプか前記第2のタイプかを判断するステップを含み、前記パケットをいつ送信すべきかを判断するステップが、前記パケットの前記判断されたタイプに基づいて前記パケットをいつ送信すべきかを判断するステップを含む、請求項19に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は一般にワイヤレス通信に関し、より詳細には、アプリケーション通信を同期化するためのシステム、方法、およびデバイスに関する。
【背景技術】
【０００２】
今日では、広範囲にわたるアドオンサービスおよび機能をワイヤレスデバイスに提供するように動作するアプリケーション(「アプリ」)またはデバイスアプレットが利用可能である。たとえば、今日では、ワイヤレスデバイスがデバイスアプレットをダウンロードし、起動して、買物、検索、位置特定、運転ナビゲーションなどの付加価値機能および一連の他の機能を実行することが可能である。ネットワークプロバイダおよびアプリケーションプロバイダは一般に、追加料金でこれらのデバイスアプレットをデバイスユーザに提供する。したがって、デバイスアプレットの使用はワイヤレスデバイスの機能性および有用性を高め、初めはデバイス自体上で利用可能でなかった機能および利便性をデバイスユーザに提供する。
【０００３】
ワイヤレスデバイスは、複数の無線のうちのいずれかを使用して、1つまたは複数の通信ネットワークとインターフェースをとる。たとえば、ワイヤレスデバイスは、セルラー、Wi-Fi、Bluetooth(登録商標)または他のタイプの無線アクセス技術を使用して通信を提供する様々な無線を含み得る。したがって、ワイヤレスデバイス上で実行されるアプリケーションは、アプリケーションが適切なネットワークと通信するために使用することになる無線および関連する無線チャネルを決定するデフォルトルーティングを備える。
【０００４】
しかしながら、アプリケーション通信をインテリジェントに管理することに対する関心が高まっている。これは、部分的には、複数無線デバイス(たとえば、3G/Wi-Fiデバイス)の数の増加と、オペレータにとっては容量の問題、ユーザにとっては電力消費の問題を引き起こし得るネットワークトラフィックの増加とによるものである。したがって、そのような容量および電力消費の問題に関して、一定の期間の間、通信を遅延させることが望ましい場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、ワイヤレスデバイス上のアプリケーション向けの通信管理を提供する効率的で費用効果の高い機構が必要である。具体的には、通信の遅延した送信に関するポリシーを管理するシステムおよび方法が必要である。
【課題を解決するための手段】
【０００６】
本発明のシステム、方法およびデバイスはそれぞれいくつかの態様を有し、それらのうちの単一の態様が単独で、その望ましい属性を担うわけではない。以下の特許請求の範囲によって表される本発明の範囲を限定することなく、いくつかの特徴がここで簡単に論じられる。この議論を考慮した後で、また特に「発明を実施するための形態」と題するセクションを読んだ後で、本発明の特徴が、アプリケーション通信遅延耐性の管理を含む利点をどのようにして提供するのかが理解されよう。
【０００７】
本開示の一態様は、送信用のデータを集約する方法を提供する。方法は、アプリケーションプログラミングインターフェースを介してアプリケーションから情報を受信するステップを含む。情報は、送信遅延耐性を示す。方法は、アプリケーションプログラミングインターフェースを介してアプリケーションからパケットを受信するステップをさらに含む。方法は、受信した送信遅延耐性に基づいてパケットをいつ送信すべきかを判断するステップをさらに含む。
【０００８】
本開示の別の態様は、送信用のデータを集約するためのワイヤレスデバイスを提供する。ワイヤレスデバイスは、アプリケーションプログラミングインターフェースを介してアプリケーションから情報を受信するように構成されたプロセッサを含む。情報は、送信遅延耐性を示す。プロセッサは、アプリケーションプログラミングインターフェースを介してアプリケーションからパケットを受信するようにさらに構成される。ワイヤレスデバイスは、受信した送信遅延耐性に基づいてパケットをいつ送信すべきかを判断するように構成されたネットワークドライバをさらに含む。
【０００９】
本開示の別の態様は、送信用のデータを集約するためのワイヤレスデバイスを提供する。ワイヤレスデバイスは、アプリケーションプログラミングインターフェースを介してアプリケーションから情報を受信するための手段を含む。情報は、送信遅延耐性を示す。ワイヤレスデバイスは、アプリケーションプログラミングインターフェースを介してアプリケーションからパケットを受信するための手段をさらに含む。ワイヤレスデバイスは、受信した送信遅延耐性に基づいてパケットをいつ送信すべきかを判断するための手段をさらに含む。
【００１０】
本開示の別の態様は、実行されると、装置に送信用のデータを集約する方法を実行させる命令が符号化されている非一時的コンピュータ可読媒体を提供する。方法は、アプリケーションプログラミングインターフェースを介してアプリケーションから情報を受信するステップを含む。情報は、送信遅延耐性を示す。方法は、アプリケーションプログラミングインターフェースを介してアプリケーションからパケットを受信するステップをさらに含む。方法は、受信した送信遅延耐性に基づいてパケットをいつ送信すべきかを判断するステップをさらに含む。
【００１１】
本明細書で説明する上記の態様は、添付の図面と併せて、以下の発明を実施するための形態を参照することで、より容易に明らかになろう。
【図面の簡単な説明】
【００１２】
【図１】通信管理システムの態様を示す例示的なネットワーク環境を示す図である。
【図２】通信管理を提供するように構成された例示的なワイヤレスデバイスを示す図である。
【図３】通信管理を提供する例示的な方法のフローチャートである。
【図４】例示的なデバイスのアプリケーションネットワークアクティビティのグラフである。
【図５】アプリケーション通信を集約するように構成されたハードウェア/ソフトウェアシステムの例示的なブロック図である。
【図６】図5のハードウェア/ソフトウェアシステムによって実施されたアプリケーション通信集約の例示的なタイムラインを示す図である。
【図７】別の実施形態による、アプリケーション通信集約のタイムラインを示す図である。
【図８】アプリケーション通信を管理するように構成された例示的なデバイスを示す図である。
【図９】アプリケーション通信を管理する例示的な方法のフローチャートである。
【図１０】アプリケーション通信を管理するように構成された別の例示的なデバイスを示す図である。
【発明を実施するための形態】
【００１３】
添付の図面を参照しながら、新規のシステム、装置および方法の様々な態様について以下でより十分に説明する。しかしながら、本教示の開示は、多くの異なる形態で具現化されてよく、本開示全体にわたって提示される任意の特定の構造または機能に限定されるものと解釈すべきではない。むしろ、これらの態様は、本開示が徹底的で完全になり、本開示の範囲を当業者に十分に伝えるように与えられるものである。本明細書の教示に基づいて、本開示の範囲は、本発明の任意の他の態様とは無関係に実装されるか、本発明の任意の他の態様と組み合わせて実装されるかにかかわらず、本明細書で開示する新規のシステム、装置および方法のいかなる態様をも包含するものであることを、当業者は諒解されたい。たとえば、本明細書に記載の態様をいくつ使用しても、装置を実装することができ、または方法を実施することができる。さらに、本発明の範囲は、本明細書に記載の本発明の様々な態様に加えて、またはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置またはそのような方法を包含するものとする。本明細書で開示するいずれの態様も、請求項の1つまたは複数の要素によって具現化され得ることを理解されたい。
【００１４】
特定の態様について本明細書で説明するが、これらの態様の多くの変形体および置換は本開示の範囲内に入る。好ましい態様のいくつかの利益および利点に言及するが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々なワイヤレス技術、システム構成、ネットワーク、および送信プロトコルに広く適用可能であるものとし、そのうちのいくつかが例として図および好ましい態様についての以下の説明で示される。発明を実施するための形態および図面は、限定的なものではなく本開示を説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびその等価物によって規定される。
【００１５】
本明細書で説明する技法は、符号分割多元接続(CDMA)ネットワーク、時分割多元接続(TDMA)ネットワーク、周波数分割多元接続(FDMA)ネットワーク、直交FDMA(OFDMA)ネットワーク、シングルキャリアFDMA(SC-FDMA)ネットワークなどの様々なワイヤレス通信ネットワークに使用され得る。「ネットワーク」および「システム」という用語は、しばしば互換的に使用される。CDMAネットワークは、Universal Terrestrial Radio Access(UTRA)、CDMA2000などの無線技術を実装し得る。UTRAは、広帯域CDMA(WCDMA(登録商標))および低チップレート(LCR)を含む。CDMA2000は、IS-2000規格、IS-95規格およびIS-856規格をカバーする。TDMAネットワークは、Global System for Mobile Communications(GSM(登録商標))などの無線技術を実装し得る。OFDMAネットワークは、Evolved UTRA(E-UTRA)、IEEE 802.11、IEEE 802.15、IEEE 802.16、IEEE 802.20、Flash-OFDM(登録商標)などの無線技術を実装し得る。UTRA、E-UTRAおよびGSM(登録商標)は、Universal Mobile Telecommunication management system(UMTS)の一部である。ロングタームエボリューション(LTE)は、E-UTRAを使用するUMTSの来るべきリリースである。UTRA、E-UTRA、GSM(登録商標)、UMTSおよびLTEは、「3rd Generation Partnership Project」(3GPP)という名称の組織からの文書に記載されている。CDMA2000は、「3rd Generation Partnership Project 2」(3GPP2)という名称の組織からの文書に記載されている。これらの様々な無線技術および規格は、当技術分野で知られている。
【００１６】
図1は、通信管理システム108の態様を示す例示的なネットワーク環境100を示す。ネットワーク環境100は、ワイヤレスデバイス102、通信ネットワーク104、およびサーバ110を含む。デバイス102は、対応する無線/インターフェースチャネル106を使用してネットワーク104と通信するための複数の無線/インターフェース(図示せず)を含む。デバイス102は、たとえば特定のアプリケーションによって、複数の無線/インターフェースへのアクセスを制御するように動作する通信管理システム108も含む。
【００１７】
ワイヤレスデバイス102は、通信ネットワーク104を介してサーバ110と通信し得る。サーバ110は、通信チャネル112を介して通信ネットワーク104に接続する。通信チャネル112は、ワイヤードチャネルまたはワイヤレスチャネルのいずれかであり得る。
【００１８】
動作中、ワイヤレスデバイス102は、複数の無線/インターフェースのうちのいずれかを使用してネットワーク104とインターフェースをとることができるアプリケーションを実行する。たとえば、実行中のアプリケーションは、ソケットレイヤ呼出しなどのネットワーキング関数呼出しを発して、ネットワーク104との通信用のネットワークリソースを要求することができる。一実施形態では、通信管理システム108は、デフォルトルーティング構成に基づいてソケットレイヤ呼出しを処理して、所定の無線/インターフェースリソースをアプリケーションにバインドし得る。
【００１９】
アプリケーションは、データの1つまたは複数のパケットを、たとえば、通信チャネル112を介して、サーバ110に送信し得る。一実施形態では、アプリケーションは、送信されたパケットに送信遅延耐性パラメータを含み得る。送信遅延耐性パラメータは、たとえば、各パケットのヘッダに含まれ得る。送信遅延耐性パラメータは、アプリケーション通信の許容可能な遅延を示し得る。たとえば、ソーシャルメディアアプリケーションなどの、更新のために時々サーバ110にアクセスするアプリケーションは、比較的遅延耐性であり得る。一方、ビデオチャットまたはウェブブラウジングアプリケーションなどの対話型アプリケーションは、比較的遅延非耐性であり得る。
【００２０】
様々な実施形態では、送信遅延耐性パラメータは、たとえば、分、秒、ミリ秒、マイクロ秒、シンボル、クロックチック、フレーム周期などのいくつかの時間単位で区分された許容可能な遅延を示し得る。一実施形態では、送信遅延耐性パラメータは、相対的な優先度値(たとえば、高、中、または低)として区分された許容可能な遅延を示し得る。一実施形態では、送信遅延耐性パラメータは、一度に遅延し得るパケットの最大許容数を示し得る。様々な実施形態では、送信遅延耐性パラメータは、単一のアプリケーションからの、またはすべてのアプリケーショントラフィックの集合体としての遅延したパケットの最大許容数を示し得る。
【００２１】
アプリケーションは、ユーザ選好、アプリケーションがフォアグラウンドで動作しているかバックグラウンドで動作しているか、または時刻を含むいくつかの要因に基づいて、パケットに対する送信遅延耐性を生成することができる。アプリケーションは、たとえば、FINパケットまたはコンテンツパケットなどの異なるタイプのパケットに対して異なるように送信遅延耐性を設定することができる。送信遅延耐性は、各パケットに対して個別に設定することができ、またはアプリケーションプログラミングインターフェース(API)を使用してアプリケーションによって設定して、特定のタイプの将来生成されるパケットに関するカーネルメタデータを定義することができる。
【００２２】
様々な実装形態では、通信管理システム108は、アプリケーションからパケットをインターセプトするように動作する。たとえば、通信管理システム108は、アプリケーションプログラミングインターフェース(API)を介してアプリケーションからパケットを受信し得る。通信管理システム108は、インターセプトされた各パケット内の送信遅延耐性パラメータに従ってアプリケーションの通信を変更し得る。本明細書で使用する場合、通信の変更は、限定はしないが、通信を遅延させることまたはさもなければ通信に影響を与えることを含むことができる。
【００２３】
通信管理システム108が遅延耐性パラメータに従って通信を遅延させる実施形態では、通信管理システム108は、電力を節約するために1つまたは複数の無線/インターフェースを無効にし得る。遅延の後、通信管理システム108は、1つまたは複数の無効にされた無線/インターフェースを起動し得る。次いで、通信管理システム108は、アプリケーションをネットワークリソース(すなわち、選択された無線/インターフェース)にバインドし得る。通信管理システム108のより詳細な説明は、以下で与えられる。
【００２４】
図2は、通信管理を提供するように構成された例示的なワイヤレスデバイス200を示す。デバイス200は、プロセッサ202、メモリ204、およびTX/RX無線212を含み、すべてが通信バス214を使用して通信するように結合されている。ワイヤレスデバイス200は、図1に関して上記で説明したワイヤレスデバイス102であり得る。デバイス200は一実装形態にすぎず、他の実装形態が可能であることに留意されたい。
【００２５】
一態様では、プロセッサ202は、アプリケーションレイヤモジュール206、接続エンジン208、およびネットワーキングモジュール210を含む。プロセッサ202は、CPU、マイクロプロセッサ、ゲートアレイ、ハードウェア論理、メモリ要素、および/またはハードウェア実行ソフトウェア(図示せず)のうちの少なくとも1つも含み得る。プロセッサ202は、デバイス200上で実行されるアプリケーションの通信が選択的に変更され得る、影響され得る、遅延し得るおよび/または所望の無線にバインドされ得るように、デバイス200の動作を制御するように構成される。一実装形態では、プロセッサ202は、複数の機能のうちのいずれかを実行することに関連するコンピュータ可読命令を実行するように構成される。たとえば、プロセッサ202は、デバイス200から受信または通信された情報を解析して、通信管理を実施するように動作する。別の態様では、プロセッサ202は、メモリ204、アプリケーションレイヤモジュール206、TX/RX無線212、および/または接続エンジン208によって利用され得る情報を生成して、通信管理を実施するように動作する。
【００２６】
TX/RX無線212は、複数の無線チャネル216を使用してデバイス200を外部通信ネットワーク104(図1)などの複数の外部エンティティとインターフェースするために使用され得る複数の無線/インターフェースを提供するように構成されたハードウェアおよび/またはプロセッサ実行ソフトウェアを含む。無線チャネル216は、たとえば、図1に関して上記で説明した無線チャネル106であり得る。TX/RX無線212は、無線/インターフェースを提供して、セルラー、Wi-Fi、Bluetooth(登録商標)、または任意の他の技術を使用して、無線チャネル216を使用する通信ネットワークと通信し得る。TX/RX無線212の無線/インターフェースは、たとえば送信されるデータがないときに電力を節約するために、選択的に有効および無効にされ得る。
【００２７】
アプリケーションレイヤモジュール206は、デバイス200上で1つまたは複数のアプリケーションを実行し、アプリケーションをメモリ204に記憶するように構成されたハードウェアおよび/またはプロセッサ実行ソフトウェアを含む。一実装形態では、アプリケーションレイヤモジュール206は、アプリケーションがネットワーキングモジュール210に対してネットワーキング関数呼出しを開始して、ネットワーキングサービスを要求するのを可能にするように構成される。ネットワーキング関数呼出しは、無線チャネル216を介して外部ネットワークまたはシステムと通信するためのTX/RX無線212における無線/インターフェースへの接続要求を含み得る。
【００２８】
ネットワーキングモジュール210は、ネットワーキング関数を実行するように構成されたハードウェアおよび/またはプロセッサ実行ソフトウェアを含む。一実装形態では、ネットワーキング関数は、connect()、Bind()、write()、およびSetsockopt()などの関数を含む。connect()関数は、アプリケーションと特定の無線/インターフェースとの間の接続を確立するように動作する。write()関数は、接続を介してデータを送信するように動作する。たとえば、特定の無線/インターフェースは、TX/RX無線212によって提供される複数の候補無線から選択され得る。一実施形態では、Setsockopt()関数は、遅延耐性パラメータを設定するために使用され得る。一態様では、ネットワーキングモジュール210は、様々なネットワーキング関数またはコマンドを実行するように構成される。一態様では、ネットワーキングモジュール210は、たとえば、遅延耐性パラメータに基づいて、一定の関数が進行することができるようにしてもよく、他の関数が進行することができないようにしてもよい。
【００２９】
接続エンジン208は、システムリソースを評価して、アプリケーションからの通信を管理するように構成されたハードウェアおよび/またはプロセッサ実行ソフトウェアを含む。様々な実装形態では、接続エンジン208は、アプリケーション通信をインターセプトし、選択的に通信を変更し、通信に影響を与え、および/もしくは通信を遅延させ、ならびに/あるいは以下の選択基準のうちの1つまたは複数に基づいて特定の無線を選択するように構成される。
1.ユーザポリシー-デバイスで実行されているアプリケーションによる無線アクセスに関してデバイスユーザによって設定されるポリシー。
2.事業者ポリシー-デバイスまたはアプリケーションによるネットワークアクセスに関してネットワーク事業者によって設定されるポリシー。
3.無線メトリック-特定のアプリケーションまたは動作環境にとって最も好ましい無線を選択するために使用される無線性能の測定値または他のタイプの測定値。
4.アプリケーション要件-帯域幅要件または遅延/性能要件などの要求アプリケーションに関連する要件。アプリケーション要件は、たとえば、遅延耐性パラメータを含み得る。
5.ネットワークの有用性-特定の無線インターフェース上の特定のネットワークのアベイラビリティに関する情報。
6.ベンダー供給メトリック-受信信号強度表示(Receive Signal Strength Indication)およびパケットロスレート(Packet Loss Rate)などの無線メトリックから特定の無線インターフェースで利用可能なスループットおよび遅延に変換するための情報。
7.アクセスポイントのアベイラビリティ-他のデバイスまたは無線リンクを構成し得るがパケットをネットワークに転送しないデバイスからのトラフィックによって輻輳されたアクセスポイントに対する一意の識別子を特定する情報。
【００３０】
プロセッサ202は、TX/RX無線212を介して上記の選択基準のうちの1つまたは複数をダウンロードし得る。選択基準は、メモリ204に記憶され得る。たとえば、プロセッサ202は、事業者ポリシーを取り出すことができ、接続エンジン208は事業者ポリシーを適用することができる。事業者ポリシーは、ワイヤレスデバイス200上のアプリケーションによるネットワークアクセスを規制する複数のルールを含み得る。
【００３１】
メモリ204は、RAM、ROM、EEPROMあるいはアプリケーションおよび/または選択基準がデバイス200で記憶され、取り出されることを可能にするように動作する任意の他のタイプのメモリデバイスを含む。一実装形態では、メモリ204は、プロセッサ202によって実行されるコンピュータ可読命令を記憶するように構成される。メモリ204は、プロセッサ202、TX/RX無線212、アプリケーションレイヤモジュール206、ネットワーキングモジュール210、および/または接続エンジン208のいずれかによって生成されたデータを含む複数の他のタイプのデータのいずれかを記憶するようにも構成され得る。メモリ204は、ランダムアクセスメモリ、バッテリバックアップ付きメモリ、ハードディスク、磁気テープとしてなどを含む、いくつかの異なる構成で構成され得る。また、圧縮および自動バックアップなどの様々な機能は、メモリ204上で実施され得る。
【００３２】
メモリ204は、プリロードライブラリ218およびネットワーキングライブラリ220を記憶するように構成される。プリロードライブラリ218は、アプリケーションからソケット呼出しをインターセプトする。ネットワーキングライブラリ220は、ソケットを作成および接続してネットワーク通信を確立するために、アプリケーションによって使用されるネットワーキングAPIを提供する。
【００３３】
接続エンジン208は、様々な方法で選択的にアプリケーション通信を変更し、アプリケーション通信に影響を与え、および/またはアプリケーション通信を遅延させるように構成される。たとえば、接続エンジン208は、上記の選択基準のうちの1つまたは複数を使用して通信を遅延させるように構成され得る。たとえば、接続エンジン208は、遅延耐性パラメータに基づいて、遅延耐性アプリケーションからの通信のみを遅延させることができる。
【００３４】
一実施形態では、接続エンジン208は、ワイヤレスデバイス200がアイドル状態かどうかに基づいて、通信を遅延させることができる。一実施形態では、接続エンジン208は、ワイヤレスデバイス200がアクティブ状態に入るまで、遅延耐性アプリケーションの通信を遅延させる。別の実施形態では、接続エンジン208は、遅延非耐性アプリケーションが通信を開始するまで、遅延耐性アプリケーションの通信を遅延させる。
【００３５】
接続エンジン208は、様々な方法で複数の候補無線から無線を選択するようにも構成され得る。たとえば、接続エンジン208は、上記の選択基準のうちの1つまたは複数を使用して無線を選択するように構成され得る。一実施形態では、接続エンジン208は、たとえば、アプリケーション通信が遅延しているときに電力を節約するために、1つまたは複数の無線を選択的に有効/無効にすることができる。アプリケーション通信が遅延していないとき、接続エンジン208は、アプリケーションをその無線を表すインターフェースにバインドする。たとえば、一実装形態では、接続エンジン208は、元のネットワーキングライブラリ220に呼び出すことによってアプリケーションを無線のインターフェースにバインドする。したがって、接続エンジン208およびプリロードライブラリ218における関数は、ネットワーキングライブラリ220内のbind()関数などの関数に容易にアクセスして、アプリケーション用に選択された無線にバインドすることができる。
【００３６】
様々な実装形態では、通信管理システムは、コンピュータ可読媒体上で記憶または具現化される1つまたは複数のプログラム命令(「命令」)もしくは「コード」のセットを有するコンピュータプログラム製品を含む。コードが少なくとも1つのプロセッサ、たとえば、プロセッサ202によって実行されるとき、その実行により、プロセッサ202はデバイス200を制御して、本明細書で説明するインテリジェントインターフェース選択システムの機能を提供する。たとえば、コンピュータ可読媒体は、フレキシブルディスク、CDROM、メモリカード、FLASHメモリデバイス、RAM、ROM、またはデバイス200にインターフェースする任意の他のタイプのメモリデバイスもしくはコンピュータ可読媒体を含む。別の態様では、コードのセットは、外部デバイスまたは通信ネットワークリソースからデバイス200にダウンロードされ得る。コードのセットは、実行されると、本明細書で説明するインテリジェントインターフェース選択システムの態様を提供するように動作する。
【００３７】
図3は、通信管理を提供する例示的な方法のフローチャート300を示す。分かりやすくするために、図2に示すデバイス200を参照しながらフローチャート300について以下で説明する。ただし、当業者は、任意の適切なデバイスを用いて図示する方法を実施することができることを諒解されよう。一実装形態では、プロセッサ202は、デバイス200の機能要素を制御するための1つまたは複数のコードのセットを実行して、以下で説明する機能を実行する。
【００３８】
ブロック302において、プロセッサ202はアプリケーションを起動する。アプリケーションは、アプリケーションレイヤモジュール206の一部であるレガシーまたは非レガシーアプリケーションであり得る。たとえば、アプリケーションは、ネットワーキング関数呼出しを生成して、TX/RX無線212で利用可能な無線を使用してワイヤレスネットワークに接続するネットワークブラウザであり得る。
【００３９】
ブロック304において、プロセッサ202は、プリロードライブラリを構成し、ロードする。たとえば、プリロードライブラリ218は、通信ネットワークを評価するためにアプリケーションによって使用される、ネットワーキングライブラリ220内に提供されるネットワーキング関数のサブセットを含む。プリロードライブラリ218内のネットワーキング関数は、デバイスで実行されているアプリケーションからネットワーキング関数呼出しをインターセプトするように構成される。たとえば、プリロードライブラリ218は、デバイス200で実行されているアプリケーションによってソケット呼出しをインターセプトするために使用され得るPOSIXソケット関数を含む。一実装形態では、プリロードライブラリ218はメモリ204に記憶される。
【００４０】
一実装形態では、プリロードライブラリ218関数は、呼出しアプリケーションから渡された引数を受信し、これらの引数を使用して、アプリケーションの目的に最も適した無線を選択するための要求を接続エンジン208に対して生成するように構成される。
【００４１】
ブロック306において、プロセッサ202は、プリロードライブラリを実行環境にリンクする。たとえば、プロセッサ202は、ネットワーキングライブラリ220よりも高い優先度でプリロードライブラリ218を実行環境にリンクする。したがって、アプリケーションによるネットワーキング関数呼出しは、プリロードライブラリ218内の関数によってインターセプトおよび処理され、ネットワーキングライブラリ220内の類似の関数によって処理されない。
【００４２】
ブロック308において、プロセッサ202は、アプリケーションからパケットを受信する。プロセッサ202は、アプリケーションから送信遅延耐性も受信し得る。一実施形態では、アプリケーションは、APIを介して、たとえば、ネットワーキング関数呼出しを使用して、パケットの送信を開始し得る。ネットワーキング関数呼出しは、connect()関数またはwrite()関数などのPOSIXソケット関数呼出しであり得る。一実施形態では、アプリケーションは、送信遅延耐性を設定することによってパケットの遅延耐性を示し得る。一実施形態では、アプリケーションは、たとえば、setsockopt()関数呼出しを使用して、送信遅延耐性を設定し得る。
【００４３】
一実施形態では、アプリケーションは、ユーザ選好に基づいて、パケットに対する送信遅延耐性を生成し得る。たとえば、定期的な更新を受信するアプリケーションは、ユーザが更新間の最小時間および最大時間を決定するのを可能にし得る。別の実施形態では、アプリケーションは、アプリケーションがフォアグラウンドで実行しているかバックグラウンドで実行しているかに基づいて、パケットに対する送信遅延耐性を生成し得る。たとえば、アプリケーションは、フォアグラウンドで動作しているときはより低い遅延耐性、バックグラウンドで動作しているときはより高い遅延耐性を割り当て得る。別の実施形態では、アプリケーションは、時刻に基づいて、パケットに対する送信遅延耐性を生成し得る。たとえば、アプリケーションは、真夜中に送信されるパケットにより高い遅延耐性を割り当て得る。
【００４４】
いくつかの実施形態では、アプリケーションは、異なるタイプのパケットに対して異なるように送信遅延耐性を設定することができる。たとえば、ウェブブラウジングアプリケーションは、FINパケットに対しては比較的高い送信遅延耐性、コンテンツパケットに対しては比較的低い送信遅延耐性を設定し得る。したがって、FINパケットは、コンテンツパケットがその遅延耐性に達するまで、遅延し得る。様々な実施形態では、異なる送信遅延耐性を、SYNパケット、FINパケット、およびデータパケットを含む異なるパケットタイプに割り当てることができる。
【００４５】
一実施形態では、アプリケーションは、各パケットに対して個別に送信遅延耐性を設定し得る。別の実施形態では、アプリケーションは、アプリケーションプログラミングインターフェース(API)を介して遅延ポリシーを提供して、特定のタイプの将来生成されるパケットに関するカーネルメタデータを定義し得る。遅延ポリシーは1つまたは複数のルールを含むことができ、そのルールに基づいてネットワークスタックが遅延耐性を割り当て得る。たとえば、アプリケーションは、ネットワークスタックが特定の遅延耐性をすべてのFINパケットに割り当てるべきルールを提供し得る。ルールは、ソースアプリケーション、宛先ホスト名、宛先ホストアドレス、ソースポート番号および宛先ポート番号、環境変数などを含む基準を含むことができる。
【００４６】
アプリケーションは、ネットワーキング関数呼出しを生成して、外部ネットワークとの通信を可能にするための無線に接続する。ネットワーキングライブラリ220よりも高い優先度でプリロードライブラリ218を実行環境にリンクすることにより、プロセッサ202は、プリロードライブラリ218内の関数によってネットワーキング関数呼出しをインターセプト(または処理)する。一実施形態では、プロセッサ202は、アプリケーション遅延パラメータに従ってネットワーキング関数呼出しを遅延させることができる。たとえば、図9に関して、さらなる詳細について本明細書で説明する。
【００４７】
ブロック310において、プリロードライブラリ218内の呼び出された関数は、接続エンジン208に対して、アプリケーションが使用する適切な無線を選択するための選択要求を生成する。要求は、アプリケーションが使用する適切な無線を選択するために接続エンジン208によって使用される選択基準の一部である任意の情報を含む。別の実施形態では、プリロードライブラリ218内の呼び出された関数は、接続エンジン208に対して、通信を遅延させるべきかどうかを判断するための選択要求を生成する。
【００４８】
ブロック312において、選択基準が評価される。一実装形態では、接続エンジン208は、上記で説明した選択基準を評価するように動作する。たとえば、接続エンジン208は、プロセッサ202と通信して、選択基準の一部である事業者ポリシーを評価し得る。
【００４９】
ブロック314において、接続エンジン208は、選択基準の評価に基づいて無線を選択する。たとえば、接続エンジン208は、選択基準に最も一致する無線を選択するように動作する。
【００５０】
ブロック316において、接続エンジン208は、アプリケーション用に選択された無線のインターフェースにバインドする。たとえば、一実装形態では、接続エンジン208は、ネットワーキングライブラリ220のbind()関数を呼び出して、アプリケーション用に選択された無線にバインドする。たとえば、接続エンジン208は、ネットワーキングライブラリ220と、プリロードライブラリ218によってインターセプトされることなく、その関数にどのように直接アクセスするかとに気づいている。一実施形態では、接続エンジン208は、アプリケーションを無線にバインドする前またはバインドした後に通信を遅延させる。一実施形態では、無線をバインドすることは、アプリケーション通信を遅延させた後に、無効にされた無線を有効にするまたは電源切断された無線を起動することを含み得る。
【００５１】
ブロック318において、アプリケーションは次いで、ネットワーク通信用に選択された無線を利用する。
【００５２】
随意の動作では、方法はブロック312に進み、ここで、接続エンジン208は選択基準の定期的な評価を実行して、現在の無線が選択基準に最も一致しているかどうかを判断するように動作する。選択基準の別の評価の後に、現在の無線以外の無線が選択基準に最も一致すると接続エンジン208が判断した場合、接続エンジン208は、接続を再起動して新しい接続のために異なる無線を選択するようにアプリケーションをトリガする手段として、接続を破棄し得る。したがって、随意の動作により、選択基準を定期的に評価して、所望の通信を実施するために最も適切な無線が選択されることを保証することができる。
【００５３】
したがって、フローチャート300は、レガシーおよび非レガシーアプリケーションとともに使用するための通信管理を提供する。フローチャート300は一実装形態にすぎず、フローチャート300の動作は、他の実装形態が可能であるように並べ替えられ、または場合によっては変更され得ることに留意されたい。
【００５４】
ワイヤレスデバイスアプリケーションのためのアプリケーション遅延管理
スマートフォン、携帯情報端末などのワイヤレスデバイスでは、ソフトウェアアプリケーションはバックグラウンドで動作することができ、数分ごとにネットワークアクティビティを開始することができる。たとえば、メーラーアプリケーションは、ネットワークドライバにモデムをウェイクアップさせて、3分ごとに情報を送信することができる。金融トラッカー(financial tracker)アプリケーションは、ネットワークドライバにモデムをウェイクアップさせて、2分ごとに情報を送信することができる。異なる周期(および相対的な位相)により、モデムは2分ごとよりも高い頻度でウェイクし、電力を浪費する。ソーシャルネットワーキングアプリケーション、電子メール、または他の通信アプリケーション、データフィードなどのアプリケーション(普及している例としては、Facebook、Gmail、Market、Twitterなどがある)は、異なる周期でデータを送受信し得る。
【００５５】
図4は、例示的なデバイスのアプリケーションネットワークアクティビティのグラフ400を示す。グラフ400のx軸は時間を示し、y軸は各時間における転送されたデータ量をバイト単位で示す。グラフ400は、デバイスがアイドルモードである約2時間の期間中のネットワークアクティビティを示す。一実施形態では、ユーザがデバイスと対話しないおよび/またはディスプレイがオフであるとき、デバイスはアイドルモードである。デバイスはアイドルモードであるが、動作を継続するアプリケーションは、アクティビティ中にスパイク、たとえば、第1のアプリケーションスパイク410a〜iを引き起こす。そのようなアプリケーションは、「バックグラウンド」アプリケーションと呼ぶことができる。これらのアプリケーションによるアクティビティは、無線212内の無線などの通信リソースを利用し得る。
【００５６】
第1のアプリケーションスパイク410a〜iなどのネットワークアクティビティスパイクにより、ワイヤレスデバイスはアイドルモードから接続モードに移行し得る。接続モードでは、デバイスは無線を起動することができ、シグナリングトラフィックを生成することができ、アイドルモードのときよりも多い電力量を消費し得る。場合によっては、スパイクは、ワイヤレスデバイスが接続モードからアイドルモードまたは不連続受信(DRX)モードなどの代替の接続モードに移行するのを阻止し得る。ユーザが積極的にデバイスに関与していないときのアプリケーションによるそのような高いレベルの無線アクティビティは、バッテリ寿命の短縮、無線ネットワークの負荷増加、または他の望ましくない影響をもたらすことがある。さらに、異なるアプリケーションは異なる時間にトラフィックを生成することがあり、潜在的に、無線が起動する回数を増加させるか、または無線が起動した状態である時間を増加させる。たとえば、第2のアプリケーションスパイク420a〜eは、第1のアプリケーションスパイク410a〜iと同時に生じない。
【００５７】
本明細書で開示する技法および構造を使用して、デバイスはソフトウェアレイヤ(「ラッパー」とも呼ばれる)を使用することができ、ソフトウェアレイヤは、バックグラウンドアプリケーションからデータをキャプチャしたり、無線リソースをアクティブにし、アプリケーションデータを転送し、同期方式でタスクを実行することができる所望の時点までデータを保持したりするためのアプリケーションプログラムインターフェース(API)を提供する。そのようなタスク/データ要求を集約することによって、ワイヤレスデバイスを頻繁にウェイクすることを低減することができ、ユーザが積極的にデバイスに関与していない期間中に、他の通信リソースを節約することができる。
【００５８】
図5は、アプリケーション通信を集約するように構成されたハードウェア/ソフトウェアシステム500の例示的なブロック図を示す。図示のように、ソフトウェア構成要素はアプリケーションプロセッサ550とモデムプロセッサ560との間で分割されるが、様々な機能は図5の例とは異なるように編成され得る。たとえば、ソフトウェアとして説明する機能をハードウェアで実施することができ、その逆も同様であり、機能は構成要素間で異なるように分散され得る、などである。一実施形態では、ハードウェア/ソフトウェアシステム500は、図1に関して上記で説明した通信管理システム108であり得る。別の実施形態では、ハードウェア/ソフトウェアシステム500は、図2に関して上記で説明したワイヤレスデバイス200上に実装され得る。たとえば、アプリケーションプロセッサ550の機能は、プロセッサ202、アプリケーションレイヤモジュール206、および/または接続エンジン208のうちの1つまたは複数によって実施され得る。モデムプロセッサ560の機能は、TX/RX無線212、ネットワーキングモジュール210、および/または接続エンジン208のうちの1つまたは複数によって実施され得る。
【００５９】
図示の実施形態では、アプリケーション502は、アプリケーション接続エンジン508およびハイレベルオペレーティングシステム(HLOS)506と対話する。HLOS506は、たとえば、カリフォルニア州マウンテンビューのGoogle Inc.によって製造されたAndroidオペレーティングシステムであり得る。アプリケーション接続エンジン508は、モデム接続エンジン510と通信し得る。モデム接続エンジンは、無線212およびその中の無線などの通信リソースを管理し得る。ラッパー504は、アプリケーション502とHLOS506との間のデータをキャプチャすることが可能である。ラッパー504は、ユーザ非アクティビティの期間中にアプリケーション502からのデータを集約し、操作/送信のためにデータをHLOS506に、最終的には無線212に開放する前に、決定された時点までデータを保持することができる。ラッパー504はアプリケーション502には見えなくてもよく、その結果として、アプリケーション502は、そのデータ/要求が保持/集約されていることに気づかない。一実施形態では、ラッパー504はHLOS506の機能をエミュレートし得る。ラッパー504は別個の構成要素であってもよく、またはアプリケーション接続エンジン508などの別の構成要素に組み込まれてもよい。たとえば、ラッパー504は、図2に関して上記で説明したように、接続エンジン208によって実施され得る。
【００６０】
図6は、図5のハードウェア/ソフトウェアシステム500によって実施されたアプリケーション通信集約の例示的なタイムライン600を示す。図示のように、アプリケーションAPP1〜4は各々、集約期間610中に、無線リソースを使用するための要求を連続して開始する。一実施形態では、アプリケーション通信は、集約期間610中に遅延し得る。一実施形態では、集約期間610は、デバイス200および/またはTX/RX無線212がアイドルモードである期間を含むことができる。アプリケーションAPP1〜4は、遅延耐性アプリケーションであり得る。遅延耐性アプリケーションは、たとえば、電子メールまたはバルクファイル転送などの、比較的時間の影響を受けやすいデータを搬送し得る。
【００６１】
図示の実施形態では、アプリケーションAPP1は、第1の送信遅延耐性を含み得るパケットを送信する。次いで、アプリケーションAPP2は、第2の送信遅延耐性を含み得るパケットを送信する。次に、アプリケーションAPP3は、第3の送信遅延耐性を含み得るパケットを送信する。最後に、アプリケーションAPP4は、第4の送信遅延耐性を含み得るパケットを送信する。ラッパー504は、(たとえば、connect()およびwrite()ソケット呼出しなどのAPI呼出しを介して)パケットを受信する。直ちにソケット呼出しに作用する代わりに、ラッパー504は、集約期間610中に通信を遅延させる。決定された時点で、ラッパー504は、集約されたパケット620としてソケット呼出しを一緒に開放する。
【００６２】
一実施形態では、ラッパー504は、送信ウィンドウ630中に、集約されたパケット620を開放することができる。様々な実施形態では、送信ウィンドウ630は、デバイス200がアイドルモードである期間を含むことができ、デバイス200がアクティブモードである期間を含むことができる。送信ウィンドウ630中に、(たとえばTX/RX無線212などの)1つまたは複数の無線インターフェースを有効にするまたは起動することができる。ラッパー504は、集約されたパケット620をAPP1〜4から開放することができる。また、ラッパー504は、送信ウィンドウ630中に行われたアプリケーション通信要求が遅延なしで進行することを可能にし得る。言い換えれば、送信ウィンドウ630中に、ラッパー504はさらに通信を遅延させることができない。たとえば、図示の実施形態では、APP5は、送信ウィンドウ630中に、第5の送信遅延耐性を含み得るパケットを送信する。ラッパー504は、APP5から受信したパケットが遅延なしで進行することを可能にする。
【００６３】
一実施形態では、ラッパー504は、一定の間隔でまたは断続的な間隔で送信ウィンドウ630を開くことができる。たとえば、ラッパー504は、5分に1回、10分に1回、15分に1回、30分に1回、60分に1回など、送信ウィンドウ630を開くことができる。別の例では、ラッパー504は、遅延したアプリケーション通信をランダム時間または擬似ランダム時間に開放することができる。ラッパー504が送信ウィンドウ630を開く間隔は、デバイス200によって決定されるか、またはサーバ110(図1)などの別のデバイスから受信され得る。
【００６４】
一実施形態では、ラッパー504は、集約されたパケット620に基づいて、いつ送信ウィンドウ630を開くかを動的に判断することができる。たとえば、ラッパー504は、集約されたパケット620のうちのいずれかがその送信遅延耐性に等しい遅延を体験したときに送信ウィンドウを開くことができる。言い換えれば、単一の遅延したパケットがしきい値遅延(たとえば、送信遅延耐性)に達すると、すべての遅延したパケットが開放され得る。別の例として、ラッパー504は、集約されたパケット620の数がしきい値を超えたときに送信ウィンドウ630を開くことができる。しきい値は、デバイス200によって決定されるか、またはサーバ110などの別のデバイスから受信され得る。
【００６５】
ラッパー504は、所定の期間または動的な期間の間、送信ウィンドウ630を開けたままにしておくことができる。たとえば、ラッパー504は、送信ウィンドウ630が開いた後、15秒間、30秒間、1分間、5分間など、送信ウィンドウ630を開けたままにしてもよい。別の例として、ラッパー504は、最後のアプリケーション通信が送信された後、15秒間、30秒間、1分間、5分間など、送信ウィンドウ630を開けたままにしてもよい。ラッパー504が送信ウィンドウ630を開けたままにしておく時間は、デバイス200によって決定されるか、またはサーバ110などの別のデバイスから受信され得る。送信ウィンドウ630が閉じられると、(たとえばTX/RX無線212などの)1つまたは複数の無線インターフェースは無効にされるか、または電源切断され得る。
【００６６】
一実施形態では、ラッパー504は、すべての集約されたパケット620が送信された後、送信ウィンドウ630を閉じることができる。別の実施形態では、ラッパー504は、しきい値よりも長く遅延していたすべての集約されたパケット620が送信された後、送信ウィンドウ630を閉じることができる。各パケットのしきい値は、送信遅延耐性であり得る。様々な実施形態では、各パケットのしきい値遅延値は、安全係数によって変更された、そのパケットの送信遅延耐性とすることができる。たとえば、各パケットのしきい値遅延値は、定数で除算した、または定数を引いた、そのパケットの送信遅延耐性とすることができる。
【００６７】
一実施形態では、ラッパー504は、遅延非耐性アプリケーションが通信を開始したときに送信ウィンドウ630を開いてもよい。たとえば、APP5は、遅延非耐性アプリケーションであり得る。したがって、ラッパー504は、パケットがAPP5から受信されたときに送信ウィンドウ630を開いてもよい。ラッパー504は、APP5からのパケットが進行するのを可能にすることができ、また、集約されたパケット620をAPP1〜4から開放することができる。
【００６８】
図7は、別の実施形態による、アプリケーション通信集約のタイムライン700を示す。図示のように、アプリケーションAPP1〜2は各々、無線リソースを使用するための要求を連続して開始する。アプリケーションAPP1〜2は、接続エンジンAPIを介して、その遅延耐性を示し得る。たとえば、アプリケーションAPP1〜2は、バックグラウンドアクティビティおよび/または特定の遅延のみに耐性がある動作の要件を含み得る。たとえば、アプリケーションAPP1〜2は、デバイス200のロケーションを、10秒ごとなど、定期的に報告するロケーショントラッキングアプリケーションであり得る。
【００６９】
図示のように、アプリケーションAPP1は通信要求を開始し、アプリケーションAPP1がX秒の遅延のみに耐えることをラッパー504に示す。次に、アプリケーションAPP2は通信要求を開始し、アプリケーションAPP2がY秒の遅延のみに耐えることをラッパー504に示す。ラッパー504は、通信が許容されることをアプリケーションに示し得るコールバック関数(たとえば、API.Go)を提供し得る。コールバックを受信した後、アプリケーションは通信を続行し得る。
【００７０】
図示のように、ラッパー504は、X秒の遅延が経過する前に、API.GoコールバックをアプリケーションAPP1に提供する。次いで、アプリケーションAPP1は、さらなる遅延なしに、ラッパー504を介して通信する。同様に、ラッパー504は、Y秒の遅延が経過する前に、API.GoコールバックをアプリケーションAPP2に提供する。次いで、アプリケーションAPP2は、さらなる遅延なしに、ラッパー504を介して通信する。
【００７１】
代替実施形態では、アプリケーションは、APIを介してラッパー504に特定の送信デットラインを与え得る。ラッパー504は、与えられたデッドラインの制約内で、アプリケーションからの通信を透過的に遅延させることができる。したがって、ラッパー504は、あらゆるデッドラインの前にアプリケーション通信を進行させることを可能にする。
【００７２】
さらに別の態様では、APIは、アプリケーションが遅延非耐性アプリケーションとして登録することも可能にし得る。即時アクセスを要求し得るアプリケーションは、チャイルドトラッキング(child tracking)アプリケーション、緊急事態通知アプリケーションなどを含む。一実施形態では、ラッパー504は、アプリケーション通信を監視することによって、様々なアプリケーションの遅延耐性を学習し得る。別の実施形態では、ラッパー504は、デバイス102上にローカルに記憶されたまたはサーバ110から受信されたリストまたはデータベースから、送信遅延耐性のリストを受信し得る。リストまたはデータベースは、事業者ポリシーなどの通信アクセスポリシーとともに受信され得る。
【００７３】
ラッパー504は、ユーザ中断(user disruption)を低減する方法で、アプリケーション通信を集約するまたは遅延させることができる。ラッパー504は、様々な要因を解析して、いつアプリケーション通信を集約するまたは遅延させるかを判断し得る。たとえば、ラッパー504は、ディスプレイ状態(オンまたはオフ)、オーディオ状態(オンまたはオフ)などのワイヤレスデバイス102の特性に基づいて、アプリケーション通信を遅延させることができる。ラッパー504は、遅延に耐性があるものとして知られているアプリケーション通信のみを遅延させることができる。ラッパー504は、無線がロードされていないとき、さもなければワイヤレスデバイスが使用されていない(たとえば、電話呼、オーディオストリーミングなどがない)ときにアプリケーション通信を遅延させることができる。当業者は、ラッパー504が、他の適切な要因に加えて、上記の要因の任意の組合せに基づいて、いつアプリケーション通信を遅延させるかを判断し得ることを諒解されよう。
【００７４】
さらに、ラッパー504は、様々な要因を解析して、いつ遅延したまたは集約された通信を開放し、無制限のアプリケーション通信を許可するかを判断し得る。たとえば、(たとえば、緊急事態通知アプリケーションなどの)遅延非耐性アプリケーションは、無制限のアプリケーション通信を開始し得る。無制限のアプリケーション通信は、ラッパー504をトリガして、以前に遅延したまたは集約されたアプリケーション通信を開放することができる。したがって、以前に遅延したアプリケーション通信は、緊急事態アプリケーションとともに無線リソースを使用し得る。言い換えれば、ラッパー504は、遅延非耐性アプリケーション通信が開始されたときに、すべてのアプリケーションに対して送信ウィンドウを開くことができる。
【００７５】
一実施形態では、ラッパー504は、特定の無線がアクティブにされるか、またはデフォルトとして選択されたときに、遅延したまたは集約されたアプリケーション通信を開放することができる。特定の無線は、たとえば、Wi-Fi無線、セルラー無線、特定のモードのセルラー無線(たとえば、2Gまたは3G通信モード)、Bluetooth(登録商標)無線などを含み得る。たとえば、ラッパー504は、セルラー無線のみが有効であるときにアプリケーション通信を遅延させることができ、Wi-Fi無線が有効であるときに遅延したアプリケーション通信を開放することができる。
【００７６】
別の実施形態では、ラッパー504は、無線チャネル品質がしきい値を上回るときに遅延したまたは集約されたアプリケーション通信を開放することができる。無線チャネル品質は、信号強度、信号対雑音比(SNR)などのメトリックを含み得る。たとえば、ラッパー504は、セルラー無線のSNRがしきい値を下回るときにアプリケーション通信を遅延させることができ、セルラー無線のSNRがしきい値まで上昇したときまたはしきい値を上回るときに遅延したアプリケーション通信を開放することができる。
【００７７】
一実施形態では、ラッパー504は、ユーザ対話が受信されたときに、遅延したまたは集約されたアプリケーション通信を開放する。たとえば、ラッパー504は、ディスプレイがアクティブにされたとき、ボタン押下が検出されたときなどに、遅延したアプリケーション通信を開放することができる。別の実施形態では、ワイヤレスデバイス102は、ユーザ対話を予期し得る。たとえば、ワイヤレスデバイス102は、ワイヤレスデバイス102の動きを検出し得る加速度計を含み得る。ラッパー504は、加速度計の出力が差し迫ったユーザ対話の可能性を示すときに、遅延したアプリケーション通信を開放することができる。別の例では、ワイヤレスデバイス102は、近傍検出器によってユーザ対話を予期し得る。当業者は、ラッパー504が、上記の任意の組合せに応答して、加えて任意の他の適切なイベントに応答して、遅延したアプリケーション通信を開放することができることを諒解されよう。
【００７８】
前述の説明では、APIに関してアプリケーション通信集約および遅延について論じたが、概念はハードウェア、ファームウェア、またはハードウェアとソフトウェアの任意の組合せに等しく適用される。
【００７９】
図8は、アプリケーション通信を管理するように構成された例示的なデバイス802を示す。デバイスは、図1に関して上記で説明したネットワーク環境100内で使用され得る。デバイス802は、本明細書で説明する様々な方法を実施するように構成され得るデバイスの一例である。たとえば、デバイス802は、ワイヤレスデバイス102の1つまたは複数の機能を実施し得る。別の実施形態では、デバイス802は、サーバ110の1つまたは複数の機能を実施し得る。
【００８０】
デバイス802は、デバイス802の動作を制御するプロセッサ804を含み得る。プロセッサ804は中央処理装置(CPU)と呼ばれることもある。読取り専用メモリ(ROM)とランダムアクセスメモリ(RAM)の両方を含み得るメモリ806は、命令およびデータをプロセッサ804に与える。メモリ806の一部は不揮発性ランダムアクセスメモリ(NVRAM)も含み得る。プロセッサ804は、メモリ806内に記憶されたプログラム命令に基づいて論理演算および算術演算を実行し得る。メモリ806中の命令は、本明細書で説明する方法を実施するように実行可能であり得る。
【００８１】
デバイス802がワイヤレスデバイス102として実施されるまたは使用されるとき、プロセッサ804は、メモリ806に記憶され得る1つまたは複数のアプリケーションを実行するように構成され得る。実行中に、アプリケーションは、送受信機814、送信機810、および/または受信機812を介して通信を開始し得る。プロセッサ804は、図5に関して上記で説明したハードウェア/ソフトウェアシステム500を実施し得る。たとえば、プロセッサ804は、図6〜図7に関して上記で説明したアプリケーション通信を管理し得る。
【００８２】
プロセッサ804は、1つもしくは複数のプロセッサとともに実装される処理システムの構成要素を備え、または構成要素であってよい。1つまたは複数のプロセッサは、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、コントローラ、状態機械、ゲート論理、個別ハードウェア構成要素、専用ハードウェア有限状態機械、または、情報の算出もしくは他の操作を実行することができる任意の他の適切なエンティティの任意の組合せによって実装され得る。
【００８３】
処理システムは、ソフトウェアを記憶するための機械可読媒体も含み得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、任意のタイプの命令を意味すると広く解釈されたい。命令は、(たとえば、ソースコード形式、バイナリコード形式、実行可能コード形式、または任意の他の適切なコード形式の)コードを含み得る。命令は、1つまたは複数のプロセッサによって実行されると、処理システムに、本明細書で説明する様々な機能を実行させる。
【００８４】
デバイス802は、デバイス802と遠隔地との間のデータの送信および受信を可能にするために送信機810および/または受信機812を含み得る、筐体808も含み得る。送信機810および受信機812を組み合わせて送受信機814を形成し得る。アンテナ816は、筐体808に取り付けられ、送受信機814に電気的に結合され得る。いくつかの実施形態では、アンテナ816は省略されることがあり、デバイス802はワイヤード通信用に構成され得る。デバイス802は、(図示しない)複数の送信機、複数の受信機、複数の送受信機、および/または複数のアンテナも含み得る。
【００８５】
デバイス802は、送受信機814によって受信された信号のレベルを検出および定量化するために使用され得る信号検出器818も含み得る。信号検出器818は、総エネルギー、シンボルごとのサブキャリア当たりのエネルギー、電力スペクトル密度および他の信号などの信号を検出し得る。デバイス802は、信号を処理する際に使用するためのデジタル信号プロセッサ(DSP)820も含み得る。DSP820は、送信用のパケットを生成するように構成され得る。いくつかの態様では、パケットは、物理層データ単位(PPDU)を含み得る。
【００８６】
デバイス802は、いくつかの態様では、ユーザインターフェース822をさらに備え得る。ユーザインターフェース822は、近傍検出器、1つまたは複数の入力ボタン、キーパッド、マイクロフォン、スピーカ、インターフェースポート(たとえば、ユニバーサルシリアルバス(USB)ポート、高精細度マルチメディアインターフェース(HDMI(登録商標))ポートなど)、タッチスクリーン、および/またはディスプレイを備え得る。ユーザインターフェース822は、デバイス802のユーザに情報を伝え、かつ/またはユーザから入力を受信する、任意の要素または構成要素を含み得る。一実施形態では、ユーザインターフェース822は、(たとえば、USBポートから、ディスプレイに、マイクロフォンから、など)入力を受信している、または出力を送信しているときはアクティブであると見なされ得る。また、ユーザインターフェース822は、しきい値期間(たとえば、1秒、1分、5分など)内に入力を受信した、または出力を送信したときはアクティブであると見なされ得る。ユーザインターフェース822は、アクティブでないときは非アクティブまたはアイドルであると見なされ得る。
【００８７】
ユーザインターフェース822が入力を受信しないとき、デバイス802はアイドル状態、またはアイドルモードであると言われ得る。アイドル状態では、ディスプレイはオフであってもよく、デバイス802の1つまたは複数の機能は無効にされ得る。一実施形態では、ユーザインターフェース822の入力に応答して開始されない、デバイス802の処理および通信は、バックグラウンド処理または通信あるいはアイドル処理または通信と呼ばれ得る。
【００８８】
ユーザインターフェース822が入力を受信するとき、デバイス802はアクティブ状態、またはアクティブモードであると言われ得る。アクティブ状態では、ディスプレイはオンであってもよく、入力は入力アイドル期間内に受信されている可能性がある。入力アイドル期間は構成可能であってもよく、たとえば、1分であり得る。一実施形態では、バックグラウンド処理および通信はアクティブモードで行われ得るが、ユーザインターフェース822の入力に直接応答して開始されないことがある。
【００８９】
デバイス802の様々な構成要素は、バスシステム826によって一緒に結合され得る。バスシステム826は、データバスとともに、たとえば、データバスに加えて、電力バス、制御信号バス、および状態信号バスを含み得る。当業者は、デバイス802の構成要素は、何らかの他の機構を使用して、一緒に結合されてよく、または互いに入力を受け入れまたは提供してよいことを諒解されよう。
【００９０】
いくつかの別個の構成要素が図8に示されているが、当業者は、構成要素のうちの1つまたは複数は、組み合わされても、または共通して実装されてもよいことを認識されよう。たとえば、プロセッサ804は、プロセッサ804に関して上記で説明した機能を実装するだけでなく、信号検出器818および/またはDSP820に関して上記で説明した機能を実装するのにも使用され得る。さらに、図8に示す構成要素の各々は、複数の別個の要素を使用して実装され得る。
【００９１】
図9は、アプリケーション通信を管理する例示的な方法のフローチャート900を示す。一実施形態では、フローチャート900の1つまたは複数の態様は、図3のブロック308に対応し得る。図8に関して上記で説明したデバイス802を参照してフローチャート900の方法について本明細書で説明するが、当業者は、フローチャート900の方法は、図1に関して上記で説明したワイヤレスデバイス102、図2に関して上記で説明したワイヤレスデバイス202、および/または任意の他の適切なデバイスによって実施され得ることを諒解されよう。一実施形態では、フローチャート900のステップは、送信機810、受信機812、メモリ806、およびユーザインターフェース822とともに、プロセッサ805によって実行され得る。特定の順序を参照してフローチャート900の方法について本明細書で説明するが、様々な実施形態では、本明細書のブロックは異なる順序で実行されてよく、または省略されてよく、かつ追加のブロックが追加されてよい。
【００９２】
最初に、ブロック910において、デバイス802は、アプリケーションから送信遅延耐性を受信する。一実施形態では、送信遅延耐性はパケット内で受信される。一実施形態では、送信遅延耐性は上記で説明したAPIを介して受信される。プロセッサ804は、メモリ806に送信遅延耐性を記憶し得る。一実施形態では、デバイス802は、サーバ110から送信遅延耐性を受信する。図7〜図8に関して上記で説明したように、送信遅延耐性は、デバイス802がどのようにアプリケーション通信を遅延させるべきかを特定し得る。
【００９３】
次に、ブロック920において、プロセッサ804は、プロセッサ804上で実行されるアプリケーションから1つまたは複数の通信(たとえば、パケット)を受信する。プロセッサ804は、通信管理システム108および/または接続エンジン208に関して上記で説明した設備によって通信をインターセプトし得る。一実施形態では、DSP820、信号検出器818、送信機810、および/または送受信機814は、通信をインターセプトし得る。パケットが受信されたとき、送受信機814(送信機810および受信機812のうちの1つまたは複数を含む)は、電源切断、無効、非アクティブ、および/またはアイドル状態であり得る。
【００９４】
次いで、ブロック930において、プロセッサ804は、いつパケットを送信すべきかを判断する。たとえば、プロセッサ804は、図6〜図7に関して上記で説明したように、遅延しきい値を決定し得る。一実施形態では、プロセッサ804は、いつ送信ウィンドウ630を開き、閉じるかを判断し得る。その後、ブロック940において、プロセッサ804は、ブロック930において決定された時点で、送信機810を介してパケットを送信する。パケットが送信される前に、プロセッサ804は、送受信機814を起動する、有効にする、および/またはアクティブにすることができる。
【００９５】
図10は、アプリケーション通信を管理するように構成された別の例示的なデバイス1000を示す。デバイス1000は、受信モジュール1010、判断モジュール1020、および送信モジュール1030を備える。受信モジュール1010は、図9に示すブロック910および/またはブロック920に関して上記で説明した機能のうちの1つまたは複数を実行するように構成され得る。受信モジュール1010は、図8に関して上記で説明した受信機812、プロセッサ804、送受信機814、およびメモリ806のうちの1つまたは複数に対応し得る。受信モジュール1010は、図2に関して上記で説明したTX/RX無線212およびプロセッサ202(アプリケーションレイヤモジュール206、ネットワーキングモジュール210、および接続エンジン208を含む)のうちの1つまたは複数にも対応し得る。
【００９６】
判断モジュール1020は、図9に示すブロック930に関して上記で説明した機能のうちの1つまたは複数を実行するように構成され得る。判断モジュール1020は、図8に関して上記で説明したプロセッサ804、DSP820、およびメモリ808のうちの1つまたは複数に対応し得る。判断モジュール1020は、図2に関して上記で説明したプロセッサ202およびメモリ204のうちの1つまたは複数にも対応し得る。
【００９７】
送信モジュール1030は、図9に示すブロック940を参照して上記で説明した機能のうちの1つまたは複数を実行するように構成され得る。送信モジュール1030は、図8に関して上記で説明したプロセッサ804および送信機810のうちの1つまたは複数に対応し得る。送信モジュール1030は、図8に関して上記で説明した送信機810、プロセッサ804、送受信機814、およびメモリ806のうちの1つまたは複数に対応し得る。送信モジュール1030は、図2に関して上記で説明したTX/RX無線212およびプロセッサ202のうちの1つまたは複数にも対応し得る。
【００９８】
当業者は、情報および信号は様々な異なる技術および技法のいずれかを使用して表され得ることを理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００９９】
当業者は、本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることをさらに諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の例示的な実施形態の範囲からの逸脱を生じるものと解釈すべきではない。
【０１００】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または、本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで、実装または実行することができる。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【０１０１】
本明細書で開示する実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアで具現化されるか、プロセッサによって実行されるソフトウェアモジュールで具現化されるか、またはその2つの組合せで具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に常駐し得る。ASICはユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別構成要素として常駐し得る。
【０１０２】
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装する場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(「DSL」)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フレキシブルディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１０３】
開示した例示的な実施形態の上記の説明は、いかなる当業者も本発明を作成または使用できるようにするために提供される。これらの例示的な実施形態に対する様々な修正が当業者には容易に明らかになるであろうし、本明細書で定義する一般原理は、本発明の趣旨または範囲を逸脱することなしに他の実施形態に適用され得る。したがって、本発明は、本明細書に示す例示的な実施形態に限定されるものではなく、本明細書で開示する原理および新規の特徴に一致する最大の範囲を与えられるものである。
【０１０４】
特許請求の範囲は、上記に示した厳密な構成および構成要素に限定されないことを理解されたい。特許請求の範囲から逸脱することなく、上記で説明した方法および装置の構成、動作および詳細において、様々な修正、変更および変形を行うことができる。
【０１０５】
上記は本開示の態様を対象とするが、本開示の他のさらなる態様は、それらの基本的な範囲から逸脱することなく考案されてよく、それらの範囲は、以下の特許請求の範囲によって決定される。
【符号の説明】
【０１０６】
100  ネットワーク環境
102  ワイヤレスデバイス
104  通信ネットワーク
106  無線/インターフェースチャネル
108  通信管理システム
110  サーバ
200  ワイヤレスデバイス
202  プロセッサ
204  メモリ
206  アプリケーションレイヤモジュール
208  接続エンジン
210  ネットワーキングモジュール
212  TX/RX無線
214  通信バス
216  無線チャネル
218  プリロードライブラリ
220  ネットワーキングライブラリ
300  フローチャート
400  グラフ
410a〜i  第1のアプリケーションスパイク
420a〜e  第2のアプリケーションスパイク
500  ハードウェア/ソフトウェアシステム
502  アプリケーション
504  ラッパー
506  ハイレベルオペレーティングシステム(HLOS)
508  アプリケーション接続エンジン
510  モデム接続エンジン
550  アプリケーションプロセッサ
560  モデムプロセッサ
600  タイムライン
610  集約期間
620  集約されたパケット
630  送信ウィンドウ
700  タイムライン
802  ワイヤレスデバイス
804  プロセッサ
806  メモリ
808  筐体
810  送信機
812  受信機
814  送受信機
816  アンテナ
818  信号検出器
820  デジタル信号プロセッサ(DSP)
822  ユーザインターフェース
826  バスシステム
900  フローチャート
1000  デバイス
1010  受信モジュール
1020  判断モジュール
1030  送信モジュール
APP1  アプリケーション
APP2  アプリケーション
APP3  アプリケーション
APP4  アプリケーション
【図１】
0005863217.tif 000002
【図２】
0005863217.tif 000003
【図３】
0005863217.tif 000004
【図４】
0005863217.tif 000005
【図５】
0005863217.tif 000006
【図６】
0005863217.tif 000007
【図７】
0005863217.tif 000008
【図８】
0005863217.tif 000009
【図９】
0005863217.tif 000010
【図１０】
0005863217.tif 000011