(57)【要約】  モバイル装置と（専用の接続を含む）１つまたは複数の使用可能なネットワークの間で、ユーザが位置を変更するにつれて自動的に接続を管理するシステム及び方法が開示されている。接続マネージャは、接続プロファイルを決定し、使用可能な各接続プロファイルに使用可能性と優先順位を割り当てる。周知であるように、モバイル装置は異なるネットワークに接続するための多くの可能性を有しており、そのような接続を決定付ける多くのプロトコルがある。接続マネージャ機能は使用可能なネットワークに接続するために最も適切なプロファイルを決定する。接続しようとする最初の試行が失敗した場合、接続マネージャは、接続が確立されるまで、もしくは使用可能なプロファイルがなくなるまで、最も高い優先順位を有する次の使用可能なプロファイルに基づいて接続を試行する。接続マネージャは、基準または指定される検索文字列及び使用可能性、優先順位及び有効性等の他のパラメータに適合する接続プロファイルを検索するためのアルゴリズムを使用する。システム及び方法は、アプリケーション・レベルでの容易な操作を補助する接続プロファイル表現のためのフォーマットを使用する。このフォーマットによって、接続プロファイルは遠隔装置間で容易に交換される。また、接続マネージャは遠隔構成及び接続プロファイルの管理を容易にする。【選択図】図３
2007525894.tif 000002
【特許請求の範囲】
【請求項１】
モバイル装置と、１つまたは複数の通信ネットワーク若しくは１つまたは複数の専用接続の間で接続を確立する方法であって、
モバイル装置の周囲の環境で使用可能である１つまたは複数の通信ネットワークとの物理的接続を実行するために、データベースに複数の接続プロファイルを記憶するステップと、
高から低へ順序付けることによって、複数の通信ネットワークのそれぞれに優先順位を関連付けるステップと、
複数の通信ネットワークのうちいずれの通信ネットワークが最も高い優先順位を有しているのかを判定し、接続を実行するために通信ネットワークを選択するステップと、
選択された通信ネットワークへの接続の確立を試行するステップを有する方法。
【請求項２】
試行するステップが接続を確立しようとする第１の試行であることを特徴とする請求項１に記載の方法。
【請求項３】
第１の試行が失敗した場合に、次に高い優先順位を与えられた他の通信ネットワークとの接続を確立しようとする第２の試行を行うステップをさらに有する請求項２に記載の方法。
【請求項４】
１つまたは複数の通信ネットワークが無線通信ネットワークを含んでいることを特徴とする請求項１に記載の方法。
【請求項５】
無線通信ネットワークがブルートゥース技術を使用することを特徴とする請求項４に記載の方法。
【請求項６】
無線通信ネットワークがＩｒＤＡ技術を使用することを特徴とする請求項４に記載の方法。
【請求項７】
無線通信ネットワークがＷｉＦｉ−８０２．１１ネットワークであることを特徴とする請求項４に記載の方法。
【請求項８】
無線通信ネットワークがＧＰＲＳネットワークであることを特徴とする請求項４に記載の方法。
【請求項９】
通信ネットワークがダイヤル−アップ・モデムを介してアクセスされることを特徴とする請求項１に記載の方法。
【請求項１０】
ダイヤル−アップ・モデムがＰＰＰ（ポイント−ツー−ポイント・プロトコル）ネットワークへのアクセスを提供することを特徴とする請求項９に記載の方法。
【請求項１１】
決定するステップが、通信ネットワークが使用可能であるか否かも判定をすることを特徴とする請求項１に記載の方法。
【請求項１２】
接続の確立を試行するステップが、通信ネットワークが無くなるまで１回または複数回の試行を行うことを特徴とする請求項１に記載の方法。
【請求項１３】
接続の確立を試行する前に、選択された通信ネットワークの有効性を検討するステップをさらに有する請求項１に記載の方法。
【請求項１４】
接続プロファイルが、モバイル装置内のメモリに記憶されているアプリケーション・プログラムによって作成されることを特徴とする請求項１に記載の方法。
【請求項１５】
接続プロファイルが、外部からダウンロードされることを特徴とする請求項１に記載の方法。
【請求項１６】
モバイル装置と通信ネットワークの間で接続を確立するシステムであって、
モバイル装置の周囲の環境で使用可能である複数の通信ネットワークと物理的接続を実行するために、複数の接続プロファイルを記憶する接続プロファイル・データベースと、
高から低へ順序付けることによって複数の通信ネットワークのそれぞれに優先順位を関連付けるとともに、複数の通信ネットワークのうちいずれの通信ネットワークが最も高い優先順位を有しているのかを判定する接続マネージャであって、接続を実行するために適切な通信ネットワークを選択する接続マネージャと、
選択された通信ネットワークへの接続の確立を試行する通信インタフェースを有するシステム。
【請求項１７】
通信インタフェースが、最高の優先順位を割り当てられた第１の接続プロファイルに基づいた接続を確立しようとする第１の試行を行うことを特徴とする請求項１６に記載のシステム。
【請求項１８】
通信インタフェースが、第１の試行が失敗した場合に、より低い優先順位を与えられた他の通信ネットワークとの接続を確立しようとする第２の試行を行うことを特徴とする請求項１７に記載のシステム。
【請求項１９】
１つまたは複数の通信ネットワークが無線通信ネットワークを有することを特徴とする請求項１６に記載のシステム。
【請求項２０】
無線通信ネットワークがブルートゥース技術を使用することを特徴とする請求項１９に記載のシステム。
【請求項２１】
無線通信ネットワークがＩｒＤＡ技術を使用することを特徴とする請求項１９に記載のシステム。
【請求項２２】
無線通信ネットワークがＷｉＦｉ−８０２．１１ネットワークであることを特徴とする請求項１９に記載のシステム。
【請求項２３】
無線通信ネットワークがＧＰＲＳネットワークであることを特徴とする請求項１９に記載のシステム。
【請求項２４】
通信ネットワークがダイヤル−アップ・モデムによってアクセスされることを特徴とする請求項１６に記載のシステム。
【請求項２５】
ダイヤル−アップ・モデムがＰＰＰネットワークにアクセスすることを特徴とする請求項２４に記載のシステム。
【請求項２６】
接続マネージャが、選択された通信ネットワークが使用可能であるか否かを判定することを特徴とする請求項２４に記載のシステム。
【請求項２７】
通信インタフェースが、通信ネットワークが無くなるまで接続の確立を試行し続けることを特徴とする請求項２４に記載のシステム。
【請求項２８】
接続マネージャが、接続の確立を試行する前に、選択された通信ネットワークの有効性をさらに検討することを特徴とする請求項１６に記載のシステム。
【請求項２９】
接続プロファイルが、モバイル装置内のメモリに記憶されているアプリケーション・プログラムによって作成されることを特徴とする請求項１６に記載のシステム。
【請求項３０】
接続プロファイルが外部からダウンロードされることを特徴とする請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権の主張）
本発明は、２００４年２月９日に出願されたアメリカ合衆国仮特許出願第６０／５４３，１０８号、及び２００４年２月９日に出願されたアメリカ合衆国仮特許出願第６０／５４３，３５６号に基づいて優先権を主張する。これらの出願の内容は、参照することにより本書に組み込まれ、ここで信頼される。
【０００２】
（関連出願）
本発明は、以下の出願に関連する。
（１）代理人整理番号第４００１．Ｐａｌｍ．ＰＳＩの「A System And Method Of Format Negotiation In A Computing Device」という出願
（２）代理人整理番号第４００２．Ｐａｌｍ．ＰＳＩの「A Graphics Subsystem for Computing Devices」という出願
（３）代理人整理番号第４００３．Ｐａｌｍ．ＰＳＩの「A Method and System for a Security Model for a Computing Device」という出願
これらの出願は、本出願と同日に出願されている。これらの各出願の内容は、参照することにより本書に組み込まれる。
【０００３】
（技術分野）
本発明は、異なる位置にあるモバイル装置（例えば、ラップトップ型コンピュータ、携帯電話及び携帯情報端末（ＰＤＡ）等）と使用可能な通信ネットワーク（専用回線を含む）との間で電子通信を確立する分野に関する。より詳細には、本発明は、モバイル装置と使用可能なネットワークとの間の接続を管理するシステム及び方法に関する。これは、使用可能性、優先順位等の基準に基づいて各位置での適切な接続プロファイルを決定し、次にそのプロファイルに基づいてその位置における接続を確立することによって達成される。接続を確立しようとする最初の試みが失敗した場合には、システムは（次に優先順位の高い）他のプロファイルを利用して接続を確立しようとする。
【背景技術】
【０００４】
（序論）
コンピュータ・システムを構築するのに必要な構成要素のサイズが縮小されてきたため、ポータブル電子装置やコンピュータ・システム（例えば、ラップトップ型コンピュータ、携帯電話及び携帯情報端末（ＰＤＡ）等）がますます人気を博してきた。いくつかのコンピュータはほとんど「手のひらサイズ」である。大部分の小型コンピュータ・システムは、数例を挙げると、住所録、スケジュール管理（カレンダ、スケジュール帳等）、及び電子手帳等のさまざまな個人情報管理（ＰＩＭ）を行うために使用されている。多くのＰＤＡ及び携帯電話は一体化され、無線通信機能を提供する単一の高機能装置となっている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
これらのモバイル電子装置をいろいろな場所で効率的に接続する能力は、今日の環境においてそれらを十分に使用するために重要である。一人のユーザが、例えば無線回線（ブルートゥース、ＩｒＤＡ）、ローカル・エリア・ネットワーク（ＬＡＮ、有線または無線（ＷＩＦＩ−８０２．１１及びＧＰＲＳ（ジェネラル・パケット・ラジオ・サービス）））及び従来のダイヤル−アップ・モデム（例えばＰＰＰ（ポイント−ツー−ポイント・プロトコル）、ＵＳＢ、ＧＳＭ（グローバル・システム・フォー・モバイル・コミュニケーション）等）などによって１つまたは複数の他のコンピュータ・システム及び／またはサーバに接続されるポータブル電子装置を持つことは、珍しいことではない。モバイル装置は、１つまたは複数の使用可能なネットワークに接続する多くの可能性を有しており、接続を容易にするために無数のプロトコルが存在する。今日、使用可能な多くの通信オプションによれば、大部分の装置は、ユーザによってマニュアルで選択される特定のタイプの接続だけを用いるように構成されている。この用途での通信ネットワークに対する参照が専用回線上のポイント−ツー−ポイントの直接通信を含んでいることは、当業者によって理解されるべきである。
【０００６】
この技術で必要とされていることは、改善された接続方式、及び特定の場所における最善の使用可能なネットワークに自動的に接続するように構成されたモバイル装置である。
【課題を解決するための手段】
【０００７】
本発明の付加的な特徴及び利点は、以下の説明に記載され、部分的にはその説明から明らかとなり、あるいは本発明の実施により学習されるであろう。本発明の特徴及び利点は、特に添付の請求項に指摘されている方法、装置、及び組み合わせによる手段によって実現され、得られるであろう。本発明のこれらの及び他の特徴は、以下の説明及び添付の請求項からより完全に明らかとなり、あるいはここで述べたように本発明の実施によって学習されるであろう。
【０００８】
本発明は、ユーザがある場所から別の場所に移動するにしたがって、モバイル装置と1つまたは複数の使用可能なネットワークとの間の接続を自動的に管理するシステム及び方法に関する。本発明の一態様では、接続マネージャ機能は、モバイル装置を接続するための適切なネットワーク（専用回線を含む）を決定するために、複数の接続プロファイル、特定の優先順位、使用可能性、及び有効性に依存するアルゴリズムを使用する。周知のように、モバイル装置は異なるネットワーク（ＷｉＦＩ、ブルートゥース、ＧＰＲＳ（ジェネラル・パケット・ラジオ・サービス）、ダイヤル（ＰＰＰ（ポイント−ツー−ポイント・プロトコル））及びＧＳＭ（グローバル・システム・フォー・モバイル・コミュニケーション）等）に接続するために多数の異なる通信技術を使用し、このような接続を決定する多くのプロトコルがある。ユーザが適切なネットワークに接続しようとすると、システムは、環境に応じて、どの接続プロファイルを使用するのかを決定する。接続マネージャ機能は、複数の基準に基づいて、通信ネットワークに接続するのに最適なプロファイルを決定する。接続マネージャは、プロファイル中の各「プラ−グイン」（物理的な接続の確立に関係するコード）を照会することによってプロファイルの使用可能性を判定する。すべてのプラグ−インが使用可能である場合は、そのプロファイルは使用可能である。使用可能性はシステムの構成及び外部環境に応じて変化する可能性がある。使用可能性に関していうと、いくつかの既存の技術では、ネットワーク受信可能範囲があるか否かをリアルタイムで判定する。各技術に関連するプラグ−インは、このような技術を使用して使用可能性を定義する。例えば、携帯電話は信号強度情報を表示する。電話関連ネットワークの場合、本発明はネットワークの信号強度に基づいて使用可能性を知らせる。接続アルゴリズムは、使用可能でない接続を試行しない。ＷｉＦｉドライバは、ＷｉＦｉネットワークが使用可能であるか否かを環境で判断する。例えば、ブルートゥース接続は、範囲内に他のブルートゥース装置がない場合には使用できないことがある。
【０００９】
有効性に関していうと、ユーザは、接続タイプについてのプロファイルのリストをチェックすることによって、プロファイルの有効性を決定する。リストの中のチェックされたプロファイルだけが有効である。自動接続が要求されると、接続マネージャ機能は有効なプロファイルだけを検討する。ユーザは、何らかの理由により特定のプロファイルを使用しないと決めた場合、モバイル装置を無効にすることを決定してよい。
【００１０】
各プロファイルは、割り当てられている優先順位も有している。ネットワークへの接続を試行している間は、より高い優先順位を有するプロファイルが最初に試行される。例えば、ＷＡＮ技術（ダイヤルまたはＰＰＰ）は一般に低速かつ高価である一方で、ＬＡＮ技術は一般に高速かつ経済的である。一般的には、ＬＡＮ技術はＷＡＮ技術より高い優先順位を有している。接続しようとする最初の試行が失敗した場合は、接続マネージャは、接続が確立されるか、使用可能なプロファイルがなくなるまで、最高の優先順位を有する次の使用可能なプロファイルに基づいて接続を試みる。
【００１１】
本発明の別の態様では、システム及び方法は、指定される検索基準または検索文字列、及び使用可能性、優先順位、使用能力（例えば、装置が無効なのか、有効なのか）等の他のパラメータに適合する接続プロファイルを検索するためのアルゴリズムを使用する。
【００１２】
本発明のさらに他の態様では、システム及び方法は、アプリケーション・レベルでの容易な操作を補助する接続プロファイル表現のためのフォーマットを使用する。このフォーマットによって、接続プロファイルは外部で（遠隔装置間で）容易に交換されるだろう。また、接続マネージャは、遠隔の（遠隔装置間の）設定及び接続プロファイルの管理を容易にする。一例として、モバイル装置は、例えばショート・メッセージング・システム（ＳＭＳ）を使用することによって、あるいは携帯情報端末（例えば、Ｐａｌｍ装置）のような装置とデスクトップ・コンピュータの間で一般的に実行される同期処理（例えば、ＨｏｔＳｙｎｃ）を実行している間に、無線回線を通じて遠隔で設定してもよい。
【００１３】
本発明のさらに別の態様では、本発明のシステム及び方法は、接続マネージャ及びすべてのさまざまな種類の接続を管理する構成を意図している。接続マネージャは、実行中の種々のアプリケーションに応じて、あるいは特定のアプリケーションの要求に応じて、さまざまなネットワーク（専用回線を含む）に同時に接続してもよい。
【００１４】
本発明によるシステム及び方法は、従来の技術におけるニーズに対処し、モバイル装置と１つまたは複数の使用可能なネットワークとの間に自動的にまたはマニュアルで接続を確立するための改善された方法を提供する。本発明は、遠隔モバイル装置と使用可能かつ適切なネットワークとの間で接続を達成する接続マネージャ機能付きのシステム及び方法を有している。
【００１５】
本発明の上述した他の利点と特徴を得る方法を説明するために、前記に簡略して説明した本発明のより具体的な説明を、添付図面で図解されるその具体的な実施形態を参照することにより提供する。これらの図面は本発明の典型的な実施形態のみを表しており、したがってその範囲を制限すると見なされるべきものではないことを理解されたい。本発明は添付図面を使用することによりさらに具体的かつ詳細に記述、説明される。
【発明を実施するための最良の形態】
【００１６】
（発明の詳細な説明）
本発明の種々の実施形態を以下に詳細に説明する。（ポータブル・コンピュータ等の）電子モバイル装置を含む特定の実施形態を説明するが、ここでの説明は単なる例示にすぎず、本発明のさまざまな態様の範囲を制限することを目的としていないことを理解されたい。当業者は、他の構成要素及び構成を、容易に使用してもよいこと、あるいは本発明の精神及び範囲から逸脱することなくここに説明するものに代えてよいことを理解されたい。
【００１７】
図１及びその関連説明は、本発明の好適な実施形態のさまざまな態様が実現される適切なコンピュータ環境の簡略かつ一般的な説明を提供することを目的としている。ここに説明する本発明のシステム及びプロセスは、電子装置（ラップトップ型コンピュータ、携帯電話、ポケベル等のポータブル・コンピュータ・システム）と通信ネットワークの間で通信を確立するために適用できる。ハンドヘルド型のポータブル−タイプ・コンピュータ・システムの一例は携帯情報端末（Ｐａｌｍ装置等のＰＤＡ）と呼ばれている。多岐に渡る他のプラットホーム及び装置に適用できるが、本発明の実施形態は、ＰＤＡ等の例示的なポータブル・コンピュータ・システムまたはモバイル・コンピュータ・システムについて例としてここに説明する。
【００１８】
また、ここで説明されている本発明の種々の態様は、少なくとも部分的には、パーソナル・コンピュータ（ラップトップ型コンピュータ）またはハンドヘルド・コンピューティング装置（ＰＤＡ）によって実行されるプログラム・モジュール等のコンピュータ実行可能命令を含んでいる。一般的には、プログラム・モジュールは、特定のタスクを実行するか、または特定の理論的なデータ・タイプまたは機能を実現するルーチン・プログラム、オブジェクト、コンポーネント、データ構造等を含んでいる。当業者は、本発明のさまざまな態様または特徴が、ハンド−ヘルド装置またはモバイル装置ではないコンピュータ・システムの構成で実施されてよいが、それ以外の場合でも、マルチプロセッサ−ベースのシステム、マイクロプロセッサ−ベースまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ等に組み込まれてもよいことを理解するであろう。本発明の多様な態様は、タスクが通信ネットワークを介してリンクされた遠隔処理装置により多様に実行される分散コンピューティング環境で実行されてもよい。分散コンピューティング環境では、プログラム・モジュールはローカルな記憶装置及び遠隔記憶装置の両方に位置してよい。
【００１９】
続けて図１を参照すると、（ＰＤＡ等の）例示的なポータブル・コンピュータ・システムまたはモバイル・コンピュータ・システムは、概して本発明の多様な態様を実現するために図解されている。ポータブル・コンピュータ・システムまたはモバイル・コンピュータ・システムは、中央演算処理装置（ＣＰＵ）１２０を含む汎用コンピューティング装置１００を有している。システム・メモリ１３０及び他の種々のシステム・コンポーネントは、システム・バス１１０によってＣＰＵ１２０に接続されている。システム・バス１１０は、種々のバス・アーキテクチャのいずれかを使用する、メモリ・バス、メモリ・コントローラ、周辺のバス、またはローカル・バスを有する複数のタイプのバス構造のいずれであってもよい。システム・メモリ１３０は、オペレーティング・システム及びアプリケーション・コードを記憶するための（典型的にはＰＤＡ内のようにフラッシュメモリを備える）読取専用メモリ（ＲＯＭ）１４０と、アプリケーションのために一時的なデータを記憶するためのランダム・アクセス・メモリ（ＲＡＭ）１５０を有している。
【００２０】
コンピューティング装置１００は、ユーザからデータを受けるために使用されるキーボードまたは（Ｐａｌｍ  ＰＤＡ装置の場合はペン型入力装置と共に使用するための）タッチ・スクリーン等のような基本的な入力装置１５２も有している。コンピューティング装置１００は、ユーザにユーザ・インタフェース（ＵＩ）及び他の情報を表示するための、ＬＣＤ等の基本的な出力装置１５４をさらに有している。コンピューティング装置１００がラップトップ型コンピュータである場合は、ハード・ドライブ等の記憶装置１６０も含まれるであろう。
【００２１】
最後に、コンピューティング装置１００は、通信ネットワークと通信するための通信インタフェース１８０を有している。通信インタフェース１８０の例は、無線通信ハードウェア（例えば、ＧＰＲＳ（ジェネラル・パケット・ラジオ・サービス）、ＷｉＦｉ等）及び直接通信ハードウェア（例えば、ダイヤル−アップ・モデム及び直接のＬＡＮ接続）を有している。
【００２２】
コンピュータ・システム１００が具体的にＰＤＡ装置である例では、通信リンクは、通信回線上でコンピュータ・システム１００との通信を受信し、開始するためのＰＤＡ装置に関するクレードルつまりケーブル・ドック（図示しない）に接続されている。クレードルは、双方向通信のために、コンピュータ・システム１００の間に電気的及び機械的な通信インタフェースまたはリンクを提供する。例示的な一実施形態では、クレードルと回線を含む通信リンクは、シリアル通信リンクまたはＵＳＢリンクであってもよい。コンピュータ・システム１００は、通信すべき他の装置と情報を送受信するための無線赤外線通信機構を有していてもよい。
【００２３】
本発明の一実施形態では、通信リンクはシリアル通信ポートであってよいが、代わりに、並列、ＳＣＳＩ、ファイヤーワイヤー（ＩＥＥＥ  １３９４）、イーサネット（登録商標）等の、多くの周知の通信規格及びプロトコルのいずれかであってもよい。コンピュータ・システム１００は、携帯電話、ブルートゥース及び／または無線ＬＡＮ（例えばＩＥＥＥ  ８０２．１１）等の１つまたは複数の他の無線通信機構も有していてもよく、例えば、それらのすべてがポータブル・コンピュータ・システム１００とホスト・コンピュータの間の、あるいは直接的にインターネットとの通信リンクを確立するために使用されてよい。
【００２４】
ＲＯＭ１４０に記憶されているオペレーティング・システム及びアプリケーション・コードは、通信を確立するために、ＳＴＲＥＡＭＳフレームワークに基づいて、入力／出力システムを定義している。当業者に周知であるように、ＳＴＲＥＡＭＳフレームワークは、モジュール式通信プロトコルを構築するための確立されたフレームワークである。代わりに、当業者に公知の他のネットワーク・アーキテクチャがＳＴＲＥＡＭＳフレームワークの代わりに使用されてもよい。ここで開示されている実施形態では、モバイル装置またはオペレーティング・システムで実行中のアプリケーションが接続を開始することを要求すると、当業者に公知のＳＴＲＥＡＭＳドライバ及びモジュールは開放され、ともにリンクされる。例えば、ＳＴＲＥＡＭＳドライバを開放することによって開かれるシリアル・ポートを開くことによって通信が開始されるかもしれない。インターネットへの接続は、インターネットにアクセスするために使用される技術に応じて、複数のドライバまたはモジュールを開放し、リンクすることによって確立される。ＳＴＲＥＡＭＳフレームワーク及びＩＳＯ（入力／出力システム）は、ＳＴＲＥＡＭＳスタックを構築するためにアプリケーション及びシステムを支援するサービスまたはライブラリを定義しない。好適な実施形態では、アプリケーション及びシステムはＳＴＲＥＡＭＳドライバ及びモジュールと直接的に対話しない。
【００２５】
さらに、本発明の好適な実施形態では、有効な接続情報（例えば、シリアル・ポート通信速度、ＰＰＰパスワード、ダイヤル−アップ電話番号等）が記憶されている。接続を効果的に確立するために、この情報は、容易にアクセスできるように記憶されている。また、この情報は、ユーザによって容易に編集できるように記憶される。
【００２６】
ここで図２を参照すると、通信インタフェースは接続マネージャ２００によって制御される。接続マネージャ２００は、それがクライアントであるのか、サーバであるのか、あるいは両方の組み合わせであるのかに関係なく、ハンドヘルド・コンピューティング装置または他のコンピューティング装置１００へのいずれかのタイプの接続を作成、構成、確立するために使用されるコンポーネントである。接続マネージャ２００は、種々の構成パネルを備え、装置１００と通信ネットワーク（参照番号２０５は、概して通信ネットワークへの通信リンクを示す）との間で接続を実現することに関与する。本発明の１つの好適な実施形態では、接続マネージャ２００は今日の通信環境で可能であるすべての種類の接続を効率的に管理する。
【００２７】
物理的な接続を確立するために、接続マネージャ２００は、「接続プロファイル」と呼ばれるデータ構造または通信スタックを定義する。接続プロファイルは、参照される各プラグ−インのために、プラグ−イン及び構成の設定を順序付けるオブジェクトである。プラグ−インは、物理的な接続を決定する１つまたは複数のプロトコルを実現する１つまたは複数の通信コンポーネントを構成し、接続することに関与するコードの一部である。プラグ−インは、物理的な接続を実現するためのユーザ・インタフェース・コンポーネントを構成するための命令を含んでいてもよい。接続マネージャ２００は、「ウィザード」インタフェースを介してマニュアルで、またはＡＰＩ（アプリケーション・プログラム・インタフェース）を介して自動的に接続プロファイルを作成するか、あるいは外部の場所からダウンロードする。それは、ＵＩインタフェースを介してマニュアルで、またはＡＰＩを介して自動的に接続プロファイルを修正できる。
【００２８】
接続プロファイルは、通常、接続プロファイル・データベース２０２に記憶されているが、特定のシステム・アプリケーションに対して非公開であってもよい。接続マネージャ２００は、通信回線２０３で示されているように接続プロファイル・データベース２０２と通信し、接続プロファイル・データベース２０２を管理する。それにより、ユーザ、重要なアプリケーション、またはシステムは、例えば、接続プロファイル・データベースに記憶されている接続プロファイルのいずれかを編集、作成、削除、変更、接続、または接続切断する等の無数のタスクのいずれかの実行が可能となる。
【００２９】
接続プロファイルは当業者に知られている任意の種類の物理的な接続を表現するために作成されてよいことが理解されなければならない。接続プロファイル（オブジェクト）は、実際に物理的な接続を確立する高レベルコンポーネントから低レベルコンポーネントへの完全な経路を形成する接続マネージャ・グラフ（図４及び図５に例示）からプラグ−インとインタフェース・ノードのシーケンスを定義することによって作成される。一例を挙げると、電話ダイヤル−アップ・インターネット接続プロファイルは、（電話番号等の）ダイヤル−アップ・パラメータを定義するダイヤル−アップ・アイテム、（ログイン、パスワード等の）ＰＰＰパラメータを定義するＰＰＰ要素、（電話ドライバ等の）電話パラメータを定義する電話アイテム等の複数のアイテムにより構成される。
【００３０】
ＳＴＲＥＡＭＳフレームワーク及び入出力システム（ＩＯＳ）はもともと接続可能であること、つまり、新しいＳＴＲＥＡＭＳモジュール及びドライバを提供することによって新たな技術が容易に追加されてよいことが認識されるべきである。追加される各技術は、例えば、接続方法、編集方法、ユーザ・パラメータ等の技術を処理するためにコードを定義する接続マネージャ・プラグ−インを提供する。接続プロファイル・アイテムは接続マネージャ・プラグ−イン（ＰＰＰ項目はＰＰＰプラグ−インを指定する）に対する単なる参照に過ぎない。
【００３１】
接続マネージャ２００は、接続のアクティブ化及び接続プロファイルの操作のためにシステム・ブロック２０８により示されている標準的な接続ＡＰＩ（アプリケーション・プログラム・インタフェース）を提供する。接続をアクティブにするために、接続マネージャ２００は接続プロファイル・データベース２０２に記憶されている情報を使用する。特定の接続プロファイルは、プラグ−イン、すなわち接続を確立する際に必要とされる通信プロトコルを定義する。接続をアクティブにするために、接続マネージャ２００は、決定された特定の接続プロファイルに従って、回線２１２（プラグ−インのエントリ・ポイントを参照）に沿ってプラグ−インを要求する。接続プロファイルを検索するために接続マネージャ２００によって使用されるアルゴリズムについては、後により詳細に説明する。同様に、システムまたはユーザと接続マネージャ・データベース２０２の間の対話についても、本明細書で後により詳細に説明する。
【００３２】
一例を挙げると、接続は、ＰＰＰリンク上で標準ＩＰ接続によって表現される。ＣｎｃＰｒｏｆｉｌｅＦｉｎｄＣｏｎｎｅｃｔ機能は機能性という点で提示されている。Ｐａｌｍ等のＰＤＡ装置が遠隔ＴＣＰサーバ・サービスと通信できるようにするためには、以下の処理が必要である。第一に、（まだ開かれていない場合には）モバイル装置１００の通信インタフェース１８０からのインターネット・コネクションが確立される。次に、シリアル・ポート（シリアル・プラグ−イン）が開かれる。その後、（電話またはモデム・プラグ−インの）番号がダイヤルされ、ＰＰＰが実行され、そしてネットワーク・アクセス情報が交換される（ＰＰＰプラグ−イン）。最後に、インターネット・プロトコルがＰＰＰ上で実行される。代わりに、標準ソケット・コールが周知のＴＣＰサービス上の遠隔ホストとのＴＣＰ接続を作成するために使用されてもよい。
【００３３】
接続マネージャ２００は、確立されている物理的な接続に統一されたアプローチを提供する。以下の例は、ＢＳＤソケットＡＰＩと連動する接続マネージャ２００がどのように正常な物理的接続（ＩＰ、シリアル、ＲｆＣｏｍ、ＩｒＣｏｍｍ）を作成するのかを示している。
//initialize a standard BSD Socket sockaddr structure (IP Address, 
//TCP service, etc). mySocketDescriptor
…
//Search the database for an Internet profile and connect it 
CncProfileFindConnect(“IP/*);
//Create a TCP socket with the BSD Socket API
mySocket = socket (PF_INET, SOCK_STREAM, getprotobyname(“TCP”));
bind (mySocket, mySocketDescriptor, …)
【００３４】
接続マネージャ２００アーキテクチャは、「サービス・レベル接続」を記憶するために使用されてもよい。サービス・レベル・プラグ−インの例を考える。ＴＣＰプラグ−インはＴＣＰソケットの開放を管理している。プラグ−インは、ＩＰアドレス（またはサーバ名）と、要求されているＴＣＰサービスの名称または識別の２つのパラメータを必要とする。ＴＣＰプロファイルを使用するアプリケーションは、以下のように表示される。
mySocket = CncProfileFindConnect (“TCP:myhost.mydomain.com,http/*”)
【００３５】
接続マネージャ２００は、ＨＯＴＳＹＮＣ接続、ＳＭＴＰ接続、またはＯＢＥＸ接続等のアプリケーション・レベル・プロファイルを管理するためにも使用されてもよい。接続マネージャ２００は、システム・ブロック２１０によって示されるＡＰＩプロファイル・インタフェースと、回線２０９に沿って通信する。アプリケーション・レベル・プロファイルのいくつかの例を以下に示す。
mySocket = CncProfileFindConnect(“HOTSYNC/*”);
mySocket = CncProfileFindConnect(“SMTP/*”);
mySocket = CncProfileFindConnect(“OBEX/*”);
【００３６】
ある場合には、ソケット・コールは、インターネット接続が使用可能となる前に（したがって、CncConnect（「IP/*」）を呼び出すことなく）行われてもよい。この場合、出力装置１５４（図1参照）で表示するためにエラー・メッセージ（例えば「ネットワークに到達不可能」等）を送信する代わりに、ソケット・アルゴリズムが、ソケットを構築する前に「IP/*」接続プロファイルを開くことを試みることを選択してもよい。
【００３７】
CncProfileConnect機能はファイル記述子を返信する。このファイル記述子はＩＯＳによって提供される。アプリケーション及び他の共用ライブラリは、データの読み取り／書き込み、接続の設定、またはその遮断のために、通常、このファイル記述子を使用する。ＩＯＳ  ＡＰＩはこのために使用される。
【００３８】
図３を参照するとともに図２を参照し続けると、接続マネージャ進行ユーザ・インタフェース２０２（図２参照）は、接続マネージャ・スレッド２２４（図３参照）で実行されることに注意されたい。図３は（アプリケーション・コード２３１及び接続マネージャＳＨＩＭ２２７を表す）メインＵＩスレッド２２９と、（ＩＯＳサーバ・コード２３５を示す）ＩＯＳスレッド２３３を表している。ＩＯプロセス２３７は、経路２４１に沿ってシステム・プロセス２２８と通信する。
【００３９】
固定接続と呼ばれる他の形式の接続が存在し、それをここで説明する。固定接続とは、それをアクティブにするプロセスとは無関係に存在してよいアクティブな接続である。固定接続を定めるシステム・リソースは、固定接続をアクティブにするプロセス以外のプロセスによって管理されなければならない。
【００４０】
接続により必要とされるすべてのシステム・リソースが、ＵＩプロセス２２６（図３参照）によってのみ「所有」される場合、接続は、あるアプリケーションから別のアプリケーションに切り替えるときに失われてしまう。この場合の例は、ユーザが、インターネット接続をアクティブ化するために物理的なモバイル装置１００のパネル上（図１の入力装置１５２の一部）の「接続」ボタンを使用し、ウェブ・クリッピングまたはメール・アプリケーションに切り替えるときである。ユーザは、アプリケーションを切り替えている間に接続が遮断されることを望まないであろう。接続の遮断は、通常、ユーザの要求に応えて、あるいはおそらくある期間、活動がないこと（例えばタイムアウト期間が過ぎた後等）により自動的に発生すべきである。
【００４１】
接続マネージャ２００は、固定接続についての状態情報の記憶を容易にする。接続マネージャ２００は、接続の状態を試験するためにＡＰＩを提供する。接続マネージャ２００は、接続の状態についての通信コンポーネントによって通知される。例えば、ＩＰとＰＰＰは、接続と切断についての接続マネージャ２００と通信するシステム・プロセス内にスレッドを有している。
【００４２】
接続パスワード等の機密情報を管理するためにシステム・プロセス２２８内のスレッド（ソフトウェア・タスク）を使用することで、本当のセキュリティが保証される。すべての接続マネージャ・クライアントは、非同期動作について通知される。各接続マネージャ・クライアントは、ＩＯＳ経路を介して、接続マネージャ・スレッド２２４に接続される。クライアント要求は経路によって運ばれる。接続サーバは要求を処理し、同じ経路を介してクライアントに応答する。
【００４３】
特に図３を参照すると、接続マネージャ２００の動作は、呼び出し側がユーザ・インタフェース（ＵＩ）・プロセス２２６のメイン・スレッドであるという仮定を用いて説明されている。プロセスの背景として、他のＵＩプロセス・スレッドまたは他のシステム・スレッドは、システム・ブロック２０８によって概して示される接続マネージャＡＰＩを使用してよい。
【００４４】
接続マネージャ２００の中では、データベース・マネージャ・プロセス２３０の制御下の接続マネージャ・ライブラリ（ＳＨＩＭ、すなわち、図３の参照番号２２７で示されている接続マネージャを呼び出すためのコード）は、経路２２５を介して接続マネージャ・スレッド２２４との通信を開始する。その結果、接続マネージャ・スレッド２２４は、接続マネージャ・スレッド２２４と（ＵＩプロセス２２６からの）呼び出し側プロセスとの間の双方向通信チャネル２３２を作成する。接続マネージャ・スレッド２２４は単純な「サーバ」を実現し、すべての通信チャネルの「受信チャネル」のファイル記述子だけでなく指定された経路のファイル記述子もポーリングする。接続マネージャ・スレッド２２４及び接続マネージャ・ライブラリによって使用される控えめに動作するメッセージ・プロトコルは、このポイントでは定義されない。
【００４５】
接続マネージャ２００の動作をさらに詳しく説明するために、ＵＩフレームワークと表され、参照番号２０６により示されているシステム・ブロックにより表されている接続マネージャ２００の中核部は、特定の接続レイヤまたは特定の構成パラメータの情報を伝搬しない一般的なフレームである。フレームは、プラグ−インの構成ＵＩコンポーネントをアクティブ化するために接続マネージャ・プロファイル及び接続マネージャ・プラグ−インを使用することに関係する。ＵＩフレームワーク２０６は、ＵＩからの接続マネージャ・プロファイルの形式と、作成、編集、及び削除との間の移行を処理する。
【００４６】
実際の接続を作成するために接続プロファイル及び接続プラグ−インを使用する接続マネージャ２００の一部が、接続エンジンと表され、参照番号２０４により示されているシステム・ブロックによって表わされている。
【００４７】
接続マネージャ２００は、ＡＰＩの完全なセットを提供し、そのＡＰＩは複数のカテゴリに分割されている。標準的な用途の場合、接続ＡＰＩ２０８は接続を開始及び／または終了するための主なアプリケーション・インタフェースであってもよい。プロファイルＡＰＩ２１０は、接続プロファイルを作成、編集、削除または完了するための処理を実行するためのアプリケーション・インタフェースである。（入力装置１５２のパネルの動作等の）特定用途の場合、システム・ブロック２１２によって表現され、参照番号２１２によって示されるデータベースＡＰＩは、接続プロファイル・データベース２０２内で接続を作成、編集、削除、記録するための動作に対するインタフェースである。
【００４８】
ＡＰＩのさらに別の例が、参照番号２１４によって示され、プラグ−インを登録するためにインストールＡＰＩと表されているシステム・ブロック２１４によって表されている。インストールＡＰＩはプラグ−インによって呼び出され、そのプラグ−インについて以下に説明する。プラグ−インの場合、参照番号２１６によって示されているユーティリティＡＰＩ（ツール・ボックス）は、接続マネージャ２００によって提供され、特定のプラグ−インによって使用される。プラグ−インは、接続の確立、ＵＩを表示等のために接続マネージャによって呼び出される複数のエントリ・ポイント（リンク２１８参照）を提供する。上述したように、接続マネージャ・プラグ−イン（参照番号２２０によって示され、ＣＭプラグ−インと表されたブロックを参照）は、1個のコードであり、通信スタック内のレイヤの構成及び確立に関係している。このレイヤは１つまたは複数の通信コンポーネントを有し、１つまたは複数のプロトコルを実現する。プラグ−インは特定のレイヤを構成するためにＵＩを含んでもよい。プラグ−インの種々の例としては、ブルートゥース、ＩＰ、ＰＰＰ、ＵＳＢ等がある。したがって、プラグ−インは、通信マネージャ・エンジン２０４によって呼び戻されるいくつかの標準的なエントリ・ポイントを定義する。複数のプラグ−イン（２２０参照）は、同じコードを伝搬するモジュールにまとめられてもよい。モジュールは、例えばsysCnc等の少なくとも1つの起動コードを定義する。他の例はLaunchCmdGetPluginsであり、それによりプラグ−イン・モジュールはモジュール内で定義されたプラグ−インのリストと総数を返信する。モジュールはsysCncPluginLaunchCmdRegister起動コードを定義してもよい。接続マネージャ２００は、モジュール内で定義されたプラグ−インが接続マネージャ・データベース２０２に追加されるとすぐにそれを呼び出し、インタフェース、エッジ、プロファイル、テンプレート等が定義される。特定のモジュールが別のモジュールで定義されるプラグ−インに依存する場合にモジュールに依存することで生じる可能性がある問題を回避するために、モジュールは「コール・バック」機能を列挙してよい。
【００４９】
インストール・ステップ（ハード・リセット時またはホット・インストール）では、接続マネージャ・プラグ−イン・モジュールはCncRegisterPluginModule()APIを使用して登録される（例えばｒｅｓｅｔまたはＨｏｔＳｙｎｃ通知）。構成ステップでは、接続マネージャ２００はプラグ−イン・モジュールをロードし、sysCncPluginLaunchCmdGetPluginsでモジュールのメイン・エントリ・ポイントを呼び出す。プラグ−イン・モジュールはプラグ−イン配列及びプラグ−イン数を返信する。接続マネージャ２００はプラグ−インをそのデータベース２０２に加える。次に、接続マネージャ２００は、sysCncPluginLaunchCmdRegisterでモジュールのメイン・エントリ・ポイントを呼び出す。プラグ−イン・モジュールはエッジ、インタフェース、プロファイル及びテンプレートをデータベース２０２に追加するか、またはＤｏｎｅフィールドを後に呼び戻されるｆａｌｓｅに設定する。
【００５０】
特定のアプリケーションが、どのプロファイルに接続するのかを決定するには、プロセスが必要である。例えば、特定のアプリケーションがインターネットとの接続の確立しようとする場合、適切な接続プロファイルは、アプリケーションよりむしろシステムまたはユーザによって決定される。この場合は、アプリケーションは、接続するためのプロファイルが、ＴＣＰ／ＩＰ接続を有効にする技術を参照する特殊なアイテムで開始することを知っているにすぎない。
【００５１】
本発明の好適実施形態に従うと、接続マネージャ２００は、１つまたは複数の周知の技術で開始するプロファイルを検索することが可能となる。通信マネージャ２００は検索文字列及びプロファイルの優先順位、有効性、使用可能性等の複数の他のパラメータに適合する接続プロファイルを検索する。自動接続アルゴリズムは、接続するための正しいプロファイルを決定するために検索機能を使用する。プロファイル検索文字列はプロファイル文字列と同じフォーマットを有しているが、２つの文字「/*」で終了する。
【００５２】
一例としては、すべてのインターネット・プロファイルは「ＮｅｔＯｕｔ」アイテムで開始することに注意されたい。アプリケーションは、「ＮｅｔＯｕｔ／＊」検索文字列を検索または接続することによって正しいプロファイルを検索または接続することができる。接続アルゴリズムは「ＮｅｔＯｕｔ」アイテムで始まるすべてのプロファイルを検索し、既定の他の規則（優先順位、使用可能性、有効性）は正しいプロファイルを試行する。
【００５３】
ここで図４を参照すると、例示的な一実施形態に従う接続マネージャ・データベース２０２は、すべての共通の接続タイプ（「ＣＭＧ」）のグラフとして構成されている。図４は、このようなグラフの簡単な例を表している。このグラフでは、ノードは通信コンポーネントであり、コンポーネントのエッジ（ａ、ｂ）は、コンポーネントａがコンポーネントｂの上部で直接的に使用できることを単に意味している。さまざまなプラグ−インが図４に記載されている。ＩＰインタフェース・プラグ−イン（図４の「ＩＰＩＦ」）は、参照番号２４０によって示されている。ＩＰリンク・レイヤ・プラグ−イン（図４の「ＩＬＬ」）は、参照番号２４２によって示されている。ポイント−ツー−ポイント・プロトコル・プラグ−イン（「ＰＰＰ」）は、参照番号２４４によって示されている。ＡＴダイヤラ・プラグ−イン（「データコール」）は、参照番号２４６によって示されている。シリアル・プラグ−イン（「シリアル」）は参照番号２４８によって示されている。
【００５４】
図４に示されるようなＣＭＧは以下のように構築されてよい。初期化時に、接続マネージャ２００及びそのプラグ−イン２２０（図２）は、すべての共通接続経路からなるデフォルトのＣＭＧを構築する。新しい通信コンポーネントを加えると、関連する接続マネージャ・プラグ−インがＣＭＧの漸次的変化に関与する。
【００５５】
いくつかの状況では、アプリケーションはインタフェースまたはエッジをＣＭＧに追加または削除することを希望することがある。例えば、ＨｏｔＳｙｎｃは、すべてのＨｏｔＳｙｎｃ可能な接続を分類するために、ＨｏｔＳｙｎｃインタフェースの追加を希望することがある。アプリケーションは、プラグ−インを作成または削除できない。接続マネージャ２００は、このグラフを操作するためにＡＰＩを提供する。プラグ−イン及びシステム・コードを含む許可されたコードは、共通経路だけではなく、プラグ−イン及びインタフェース・ノードも作成または削除できる。一般のユーザ・アプリケーションはそうすることができない。
【００５６】
接続プロファイルは、各ノードが上述したようにプロパティ・リストによって名付けられるＣＭＧのノード・シーケンスである。ノード・シーケンスは、接続に関与するプラグ−インとインタフェースを定義する。プロパティはプラグ−インのための構成パラメータである。
P=({a1a2...an},{p1p2...pn}）、この場合a1a2...anはＣＭＧの中のノードであり、p1p2...pnはa1a2...anプロファイル・ノードをそれぞれ名付けるプロパティである。
【００５７】
接続プロファイルは、通常、接続マネージャ・データベースに記憶される（図３参照）。アプリケーションは、他のアプリケーションに非公開である専用の接続プロファイルを操作する能力を有する。接続プロファイルは、他の接続プロファイルを参照することができる。このようなケースであり、かつ、必要とされるときに（例えば接続時）、プロファイルは「線形化される」。つまりプロファイル参照は、それらが表現するプラグ−イン／インタフェース・シーケンスに拡大される。
【００５８】
プロファイルで呼び出されるとき、プラグ−イン機能は同じプロファイルの中の他のノードのプロパティ・リストにアクセスできる。例えば、ｒｓ２３２インタフェース・ノードが一般的なｒｓ２３２パラメータを定義するプロパティ・リストと関連付けられる場合、シリアル・プラグ−インはこれらのパラメータにアクセスできるであろう。
【００５９】
プロファイルのノード・シーケンスはＣＭＧ内の有効な経路である場合もあれば、ない場合もある。ＣＭＧは単に共通経路を定義するだけである。関連する通信コンポーネントが互いに対話するように設計されていると考えると、アプリケーションは非共通経路を定義／使用することができる。例えば、ＰＰＰクライアントは、たとえＣＭＧがこのような経路を定義しなくても、ＰＰＰデバッグ・アプリケーションによってＴＣＰソケットに接続されるであろう。
【００６０】
物理的な接続を行うときには、アプリケーション・プログラムは一般に、接続タイプを定義する最高レベルのコンポーネントとだけ対話する。ＴＣＰ／ＩＰの例では、プログラム・アプリケーションは低レベルの接続について知る必要はない。
【００６１】
ここで図５を参照すると、接続マネージャ２００の中のプラグ−イン及びインタフェースが描かれている。接続マネージャ・インタフェースは接続マネージャ・グラフのノードを表現する。インタフェースは、ある観点からみると同等であるグラフのノードを取り去るための方法である。インタフェースは１つの通信コンポーネントに直接的に関係せず、コードまたはＵＩとも一緒にならない。図５では、ＩＰインタフェース・プラグ−イン（「ＩＰＩＦ」）が参照番号２５０で示されている。ＩＰリンク・レイヤ・プラグ−イン（「ＩＬＬ」）は参照番号２５２によって示されている。ポイント−ツー−ポイント・プラグ−イン（「ＰＰＰ」）は参照番号２５４によって示されている。シリアル・プラグ−イン（「シリアル」）は参照番号２５６で示されている。赤外線インタフェース・プラグ−イン（「ＩＲＩＦ」）は参照番号２５８によって示されている。ブルートゥース・プラグ−イン（「ブルートゥース」）は、参照番号２６０によって示されている。プラグ−インルート・インタフェース（「プラグ−インルート」、プラグ−インルート・インタフェースから各プラグ−インへのエッジがある）は参照番号２６２によって示されている。リンク・インタフェース（ポイント・ツー・シリアル、ＩＲＩＦ（赤外線）及びブルートゥース）は参照番号２６４によって示されている。
【００６２】
プロファイルは、接続アプリケーションを介してユーザによって、プログラミングによって、あるいはソフトウェア・インストールによって作成できる。接続マネージャ２００は、接続アプリケーションを介して、あるいはプログラミングによって既存のプロファイルの修正及び管理も可能にする。プログラム・アプリケーションは、そのアプリケーションだけに対して公開されている専用の接続プロファイルを作成、操作することもできる。
【００６３】
アプリケーションまたはシステムが接続プロファイルの接続をしようとする場合、接続マネージャ２００は、プロファイルの各アイテムと関連付けられた各プラグ−インを呼び戻す。アプリケーションまたはシステムは、接続マネージャ２００に対して機能呼び出しを行い、代わりに接続を表すファイル記述子を受信する。
【００６４】
接続マネージャ２００の別の態様は、接続プロファイルの表現方法に対処する。言い換えると、任意のプログラミング言語から（各アイテムがパラメータを定義できるリストである）接続プロファイルを容易に操作する方法、及び（例えば、無線で構成を実現するために）ネットワーク上での接続プロファイルの交換を可能にする方法である。
【００６５】
本発明の好適な実施形態では、文字列フォーマットが、容易にあらゆる種類の接続プロファイルを表現するように定義される。高水準な言語は、使用しやすい文字列操作ルーチンを有している。本発明の接続マネージャ２００は、エンディアネスのような旧式の交換問題を排除するフォーマットを定義する。当業者に周知であるように、エンディアネスは、コンピュータが数（整数等のようにネイティブ・タイプを順序付けるバイト）を内部に記憶するパターンに対処する。内部では、接続マネージャ２００が接続プロファイルのバイナリ表現を処理する。機能は接続プロファイルの文字列表現を内部バイナリ表現に復元し、他の機能はプロファイルの内部バイナリ表現を文字列表現へ変換する。文字列はプラグ−イン名のリストであり、それらの構成パラメータを示すいくつかの値を有している。
【００６６】
接続プロファイル文字列は、接続プロファイルの外部のテキスト表現である。それは接続プロファイルを容易に表現する方法である。例えば、接続ウィザード・アプリケーションは、接続マネージャ・データベースで新しい接続プロファイルを作成、記憶するために接続プロファイル文字列を使用する。
【００６７】
接続プロファイル文字列の一般的なフォーマットは、以下のとおりである。
“al:pl/a2:p2/...an:pn”、ここでa1 a2...anはＣＧＭ内のノードであり、p1p2...pnはa1a2...anプロファイル・ノードをそれぞれ名付けるプロパティ・リストである。プロパティ・リストはコンマで区切られたパラメータ値である。バイナリ・パラメータは括弧内に入れられた１６進数のテキスト表現を使用して符号化される。文字列パラメータは引用符の中に入れられる。等号及び引用符だけではなく特殊文字も、引用される印刷可能な標記（＝ＸＹ）で表現されなければならない。整数は数字で始まる。１６進数は０ｘで始まる。
【００６８】
以下は例である。
sprintf(
profile,
“SerialMgr:name = ‘PortCOM1’, crea = 0x31323334/Serial:Baud = %d, FCtl = 0x%X, Bits = 0X%X”, 
B9600, 
CRTSCTS
CS8
);
profileId = CncProfileDecode(“SerialMgrPort1Profile”, profile);
【００６９】
接続プロファイルＩｄは、唯一、記憶されている接続プロファイルを表現する整数値（ｕｉｎｔ３２＿ｔ）である。それは既存の接続プロファイルを参照する好ましい方法である。接続マネージャＡＰＩは、接続プロファイルＩｄを大いに使用する。プラグ−イン及びインタフェースもＩｄを有している。
【００７０】
一例として、接続を表現するのに使用される文字列フォーマットの詳細を以下に説明する。
（文字列フォーマットの詳細）
::=    非終端記号を定義する。
<…>  非終端記号
‘x’    文字
{…}  括弧に入れられる要素は、０〜ｎ回の繰り返しをされる場合がある。
[…]  括弧に入れられる要素は、０または１回の繰り返しをされる場合がある。
｜  選択肢（２つの要素の内の一方だけ）
何もなし  単に何もなし（コメントだけ）
<connection profile string> ::= <element> {‘/’<element>}
<element> ::= <element_name> [‘:’ <param_list>]
<param_list> ::= nothing ｜ <param> {‘,’<param>}
<param> ::= <param_name> ‘=’ <param_value>
<param_value> ::= <param_string> ｜ <param_binary> | <param_integer>
<para_name>は、１から４文字であり、いくつかの文字は許可されていない：「:」、「=」、「/」、またはスペース、あるいはパラメータ名の１６進数ビュー：ＡＳＣＩＩ１６進数表現の４バイトの「［」。例：[０ＦＡＢＥ３Ｄ１]、ユーザ、パス。
<element_name>は文字のシーケンスである。いくつかの文字は許可されていない：「:」、「=」、「/」、またはスペース。例：ＰＰＰ、電話、シリアル。
<param_string>は、始めと終わりが単純な引用符である引用された印刷可能文字列である。例：「Ｔｈｉｓ  ａ＝０Ａ＝０Ｄｓｔｒｉｎｇ．」
<param_binary>はバイトのシーケンスである。各バイトは、「［」で始まり「］」で終わる２つの１６進数で表現される。例：［０１７７９ＡＦ８２８０Ｆ。
<param_integer>は、３２ビットの符号なしの整数である。それは、１０進数または１６進数表現である。例：１８９７２、０ｘＦＥＡ４。
【００７１】
一例として、Ｃ言語で接続プロファイル文字列から新しい接続プロファイルを作成する方法を以下に示す。
Profiled = CncProfileDecode(
“RAS via Serial”,
“NetOut/IPIF/ILL”
“/PPP:User = ‘ppptestras’, Pass = ‘ppptestras’, ConT = 30000”
“/Script:LogS = [“
“7320434C49454E5400”      //Send ‘CLIENT’
“64203100”                //Delay 1
“7320434C49454E5400”      //Send ‘CLIENT’
“772056455200”            //Wait ‘VER’
“00]”                            //End
“/RS 232 at 115000bps”);
【００７２】
接続マネージャ２００は、拡張性、保守性、柔軟性等のネットワーク構成で過去の問題に有利に対処する。利点を説明するために、過去には通信設定を理解するために呼び出しコードが義務を有していることに注意すべきである。例えば、ネットワーク・モジュールは、モデムにダイヤルするため、あるいは携帯電話にダイヤルするためにある特定のタスク・マネージャを呼び出すための条件付きコードを有している。ブルートゥース等の新しいトランスポートが追加される場合、ネットワーク・モジュールは、ブルートゥースＡＰＩと通信し、ブルートゥース・パラメータを理解するためのコードを入手するために更新されなければならない。
【００７３】
好適な実施形態による接続マネージャ２００は、ＨｏｔＳｙｎｃ動作、ビーミング動作またはＳＭＳ動作のいずれかによって接続プロファイルを「交換」し、接続プロファイルを受信する能力を有している。これにより、遠隔管理が有利にできるようになる。代わりに、ビーミングのための構成または送信のための構成が実行されてもよい。コンテンツ（オブジェクト）がどのようにして受信されるのかに関係なく、それは、接続マネージャ２００によって、自動的に登録され、使用可能となる。接続マネージャ２００は、着信コンテンツ（オブジェクト）で自動的に通知される。オブジェクトは、ライブラリ（ＳＭＳ、ｅメール、Ｉｒ等）によって提供されるすべてのトランスポートで送受信できる。セキュリティの理由から、これらのオブジェクトは署名付きであっても、または暗号化されてもよい。
【００７４】
さらに、接続マネージャ２００は一般的な「接続」ＡＰＩを提供する。アプリケーションはスタック内の上位プロトコル、つまり、それらが使用しているものの情報を有しているに過ぎず、可能な限り他の接続の詳細から保護されている。接続マネージャ２００は「不完全な接続プロファイル」能力を提供する。アプリケーションは完全に指定されておらず、自動的にまたはユーザの介入によって実行時に完了される接続プロファイルを使用して接続することができる。２つのタイプの不完全なプロファイルがある。つまり経路は完全に指定されない。例えば、アプリケーション、はシリアル接続の種類を指定せずにＴＣＰ／ＩＰ接続を要求する可能性がある。いくつかの設定が見当たらない場合には、アプリケーションは、ＰＰＰログイン及びパスワードが見失われている「ＡＯＬ」プロファイルと接続する。接続マネージャ２００は、背景タスクまたは自動再接続モードに、非ＵＩモードを提供する。
【００７５】
ＲＯＭ１４０（図１参照）内の通信コンポーネントの場合、接続プロファイルはＲＯＭ内であらかじめ定義される。セットアップ・プラグ−イン（「セットアップＣＤＢ」参照）は、ハード・リセットが提供された後にセットアップ・アプリケーションによって起動され、ＲＡＭ１５０内の接続データベース内にプロファイルが作成される。さらに、いくつかのプロファイルが不完全である場合、プラグ−インはそれらを要求するためにセットアップ・ウィザードにステップを追加する。
【００７６】
他の通信コンポーネントの場合、接続プロファイルは、アプリケーション、いくつかのインストール・コードまたは電話アプリケーション等の専用アプリケーションによって構築される。アプリケーションは、データベースにプロファイルを記憶することなく、及び接続時に明確な接続文字列を提供することによって、接続プロファイルを非公開の状態に保持することを決定できる。エンド−ユーザは、任意の時点でマニュアルで接続プロファイルを作成または完了してもよい。
【００７７】
接続プロファイルは、絶対に接続マネージャ２００によって作成されない。しかしながら、接続マネージャ・プラグ−インが接続マネージャ２００に登録すると、それらはデフォルトのプロファイルを作成することがある。
【００７８】
接続マネージャ２００は、Ｉ／Ｏサブシステムと直接的に対話しない。代わりに、接続マネージャ・プラグ−イン２２０（図２）が、接続を確立するためにＩ／Ｏサブシステムと対話する。接続マネージャ・プラグ−イン２２０は、ＩＯＳ呼び出しを介したいくつかの通信コンポーネントの公開及び構成、及びいくつかの例外的なイベントの通知の処理に関連する。接続を確立している間のいくつかの時点で、プラグ−インはその子に接続するように要求し（それはCncConfigureChildを呼び出す）、ファイル記述子を取得し、それにいくつかのモジュールを転送し、新しいファイル記述子を返信する。
【００７９】
接続マネージャ・データベース２０２（図２）に記憶されている接続プロファイルには優先順位が割り当てられている。接続プロファイルの優先順位は、プログラミングまたはユーザのいずれかにより割り当てられる。プロファイルは、通常、同等なプロファイル（例えば、すべてのインターネット・プロファイルは同じリスト内にある）のリストに入れられる。優先順位は、プロファイルが最初に入れられるときに、リスト内のプロファイルの位置を検出するのに使用される。リスト内のプロファイルの順序は、（一般には、ユーザのアクションに従った）プログラミングによって変更できる。検索アルゴリズムは、常にリストの順序に関して最初にプロファイルを返信する。例えば、デフォルトのインターネット接続は、インターネット・リストの中の最初のプロファイルとなる。
【００８０】
接続プロファイルは使用可能性及び状態の情報を有している。使用可能性は、プロファイルがこの時点で接続できるか否かを示す（例えば、Ｐａｌｍ装置をそのクレードルに接続すると、「クレードル・インターネット接続上のＰａｌｍ」が使用可能になる）。状態は、プロファイルが接続されているか否かを示す。
【００８１】
テンプレートは、新しいプロファイルを作成するときに使用される特殊なプロファイルである。新しいプロファイルを作成するとき、ユーザは本物のプロファイルにコピーされるテンプレートを選ばなければならないだろう。マクロ・プロファイルは‘{’(kCncMacroSpecialChar)で始まる名称の付いたプロファイルである。マクロ・プロファイルは、作成時には、いずれのプラグ−インまたはインタフェースにも取り付けられない。それらはプロファイルまたはテンプレート内の参照として使用される。２つの特殊なマクロ｛ＲＥＰＬＡＣＥ｝と｛ＵＳＩＮＧ｝は、ユーザが新しいプロファイルを作成するときに使用される。
【００８２】
リンク・オブジェクトは、同じプロファイルに複数の異なる名称を関連付けるために使用される。それらは象徴的なリンクまたはショートカットのように動作する。つまり、それらは他のオブジェクトを参照し、それらが検索されるとき、それらが示す本当のオブジェクトが返信される。これは、国際化された名称でデフォルト・プロファイルを作成するときだけでなく、このようなプロファイルが周知の、国際化された独立した名称で他によって参照されるときにも有効である。例えば、「１１５２００ｂｐｓでのＲＳ２３２」という名称のリンクは、国際的に関連するプロファイルを示すことができる。
【００８３】
プロファイルを作成するために、アプリケーション及びシステムは接続プロファイルを作成し、接続マネージャ・データベース２０２に追加することができる。接続マネージャは、接続マネージャ・データベース２０２内で検索文字列に一致するプロファイルを検索するために、ＡＰＩを提供する。検索文字列はプロファイル文字列に相等し、ノード・プロパティを定義しても、しなくてもよく、ジョーカーによって終了できる。検索アルゴリズムは、有効なプロファイル文字列内で検索文字列を完了するために、ＣＭＧ及び記憶されたプロファイルを使用する。例えば、「IP/*」検索文字列を与えると、アルゴリズムはインターネット・プロファイルを検索する。検索ＡＰＩは少なくとも２つの機能、すなわち、CncProfileFindFirst、CncProfileFindNextを有している。前者の機能は接続マネージャ・データベース２０２内で一時的な検索プロファイルを作成し、最初の検索を実行する。後者の機能は次のプロファイルを検索する。アプリケーションは、検索文字列に対応するすべてのプロファイルを検索するために、この機能を複数回呼び出すことができる。最後に、CncProfileClose機能は一時的な検索プロファイルを解除するために呼び出される。プロファイルはプロファイル順序に関連する順序で返信される。
【００８４】
使用可能であるためには、プロファイルは構成されなければならない。つまりプロファイル内の各プラグ−インは、少なくとも接続に必要とされるパラメータを有さなければならない。ノードにパラメータを割り当てる３つの方法がある。プラグ−インのプロパティ・リスト内にパラメータを記憶する。これは例えばプロファイルの作成時に、プログラミングによって実行できる。二番目の方法は、プラグ−インの構成呼び戻しによって達成される。コードはデフォルトパラメータを定義し、及び／または他のプロファイル・ノードのプロパティ・リストの中のパラメータ値を検出することができる。最後の方法は、見失っているパラメータを設定するようにユーザに要求することである。再度、ユーザが構成側パラメータを入力できるようにするＵＩを定義することはプラグ−インの責任である。いったん接続プロファイルが完了し、構成されると、接続マネージャはその上で接続を試行することができる。
【００８５】
ＲＯＭ１４０（図１参照）は、そのプラグ−インだけでなくＴＣＰ／ＩＰ、ＰＰＰ、ＩｒＣｏｍｍ及びＩｒＤＡ等の複数の通信コンポーネントと、所定の接続プロファイルを有している。最初の実行時またはハード・リセット後では、接続マネージャ２００はＲＡＭ１５０（図１参照）内にプロファイル・データベースを作成する。ＲＯＭ１４０内の各プラグ−インには、接続マネージャ２００に登録し、デフォルトのプロファイルを追加する責任がある。例えば、「赤外線接続」という名称のプロファイルは、プラグ−イン・レジストリで作成され、シリアル・インタフェースを提供し、インタフェースを必要としない。ここで、Ｎｏｋｉａ電話ドライブ・パッケージが入ってくると、それは電話プロファイル「Ｎｏｋｉａ赤外線接続」を作成し、ＴＣＰ／ＩＰプロファイル「赤外線を介したＮｏｋｉａによるインターネット」を作成する。それは、装置上でどのハードウェアが使用可能であるのかをチェックすることもでき、それに応じてプロファイルを作成することもできる（例えば、ブルートゥース・ハードウェアが存在する場合にだけに、ブルートゥース・プロファイルを作成する）。
【００８６】
以下のＡＰＩは、インストール・コード、構成アプリケーション及びサード・パーティ・アプリケーションから使用できる。アプリケーション・コードがシステムによって信頼されていない場合、いくつかの制限が適用できる。例えば、信頼されていないアプリケーションは、ＶＰＮパスワードやＰＰＰパスワード等の機密のパラメータを取得することはできない。
【００８７】
以下に説明する本発明の態様を有する１つの実施例は、Ｐａｌｍ  ＰＤＡ装置のオペレーティング・システムに関する。この実施例では、接続マネージャ２００はCncMgr.hファイル、及びCncClientLib.aスタブ・ライブラリに対するリンクを含んでいる。後述されるテーブル・セットは、この特殊な実施例に関連する使用可能性定数を示している。
【００８８】
【表１】
2007525894.tif 000003
【００８９】
【表２】
2007525894.tif 000004
【００９０】
前記発明は特定の詳細を含んでいるが、それらは請求項を制限するものとして解釈されてはならない。本発明の説明された実施形態の他の構成は、本発明の範囲の一部である。例えば、フォーマット・ネゴシエーションは単一の計算装置上に存在してもよいし、その装置内のノードの間に存在してもよく、あるいはネゴシエーションがネットワークのノード間の通信ネットワーク上で発生してもよい。したがって、添付の請求項及びそれらの法律上の同等物は、示されている特定の例ではなく、本発明だけを定義しているはずである。
【図面の簡単な説明】
【００９１】
【図１】本発明の種々の態様が実施される環境を提示するための、（ラップトップ型コンピュータまたはＰＤＡ装置等の）コンピューティング装置の基本的なコンポーネントを示す図。
【図２】コンピューティング装置で説明したように、本発明の好適な実施形態に従った接続マネージャ機能のアーキテクチャを示す図。
【図３】本発明の好適な実施形態による、接続マネージャ機能の接続能力を容易にするために対話するユーザ・インタフェース、入力／出力、システム・プロセス、及びデータベース・マネージャ・プロセスの間の関係を示す図。
【図４】接続マネージャに関連付けられた接続マネージャ・データベースに記憶されている共通接続タイプのグラフの一例。
【図５】本発明の好適な一実施形態による、通信マネージャグラフ（「ＣＭＧ」）でのプラグ−イン（通信コンポーネントを構成、制御するために使用されるアクティブなオブジェクトまたはコード）及びインタフェース（ある観点からみて同等であるグラフのノードを抽出するための方法）を示す図。
【図１】
2007525894.tif 000005
【図２】
2007525894.tif 000006
【図３】
2007525894.tif 000007
【図４】
2007525894.tif 000008
【図５】
2007525894.tif 000009
【国際調査報告】
2007525894.tif 000010
2007525894.tif 000011
2007525894.tif 000012