(57)【特許請求の範囲】
【請求項１】
選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアを用いてモバイルデバイスをプログラムする方法であって、
サービスプロバイダアカウントの選択を受信するステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認するステップと、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップと、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索するステップと、
前記検索されたパラメータおよび設定値を実装するステップとを備え、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記ステップは、
データコールの実施を試行するステップと、
前記データコールの試行が成功したかどうかを判定するステップと、
前記データコールが不成功である場合、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定するステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示すステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置しないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットするステップとをさらに備える方法。
【請求項２】
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップは、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索するステップと、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装するステップと、
ダウンロードサービスをリセットするステップと、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換するステップと、
前記モバイルデバイスをリセットするステップとを備える、請求項1に記載の方法。
【請求項３】
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索し、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装し、
ダウンロードサービスをリセットし、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換し、
前記モバイルデバイスをリセットし、
選択されたサービスプロバイダのためのアクティベーション処理を開始するステップをさらに備える、請求項1に記載の方法。
【請求項４】
前記アクティベーション処理が成功したかどうかを判定するステップと、
前記アクティベーション処理が成功しなかった場合、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合に実行される処理を繰り返すステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータを設定するステップとをさらに備える、請求項3に記載の方法。
【請求項５】
接続失敗カウンタをゼロにリセットするステップと、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分するステップと、
前記接続失敗カウンタが所定の数に等しいかどうかを判定するステップと、
接続試行の数が前記所定の数に等しくない場合、データコールの実施の試行を繰り返すステップとをさらに備え、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットする前記ステップは、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ行われる、請求項2に記載の方法。
【請求項６】
選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアを用いてモバイルデバイスをプログラムする方法であって、
サービスプロバイダアカウントの選択を受信するステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認するステップと、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップと、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索するステップと、
前記検索されたパラメータおよび設定値を実装するステップとを備え、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記ステップは、
データコールの実施を試行するステップと、
前記データコールの試行が成功したかどうかを判定するステップと、
前記データコールが不成功である場合、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定するステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示すステップと、
既存のモバイルデバイスクレデンシャルの値を、メモリ内の一時ファイルに格納するステップと、
前記データコールの試行が不成功であり、かつ、前記モバイルデバイスが選択されたサービスプロバイダのためのホームネットワークの外に位置しない場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更するステップと、
アカウントサーバに接触して、前記選択されたサービスプロバイダアカウントがアクティブであるかどうかを判定するステップと、
前記選択されたサービスプロバイダアカウントがアクティブであると判定される場合、修復ルーチンを行うステップと、
前記選択されたサービスプロバイダアカウントが、前記アカウントサーバによって、アクティブでないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットするステップとをさらに備える方法。
【請求項７】
接続失敗カウンタをゼロにリセットするステップと、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分するステップと、
前記接続失敗カウンタが所定の数に等しいかどうかを判定するステップと、
接続試行の数が前記所定の数に等しくない場合、データコールの実施の試行を繰り返すステップとをさらに備え、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更する前記ステップは、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ行われる、請求項6に記載の方法。
【請求項８】
前記修復ルーチンは、
前記選択されたサービスプロバイダでのアカウントがアクティブであると判定される場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された、選択されたサービスプロバイダアカウントクレデンシャルの値と比較して、前記値の間に不一致があるかどうかを判定するステップと、
不一致が存在する場合、前記既知の実用クレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された前記クレデンシャルの値に変更するステップとをさらに備える、請求項6に記載の方法。
【請求項９】
モバイルデバイスであって、
サービスプロバイダアカウントの選択を受信する手段と、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する手段と、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードする手段と、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索する手段と、
前記検索されたパラメータおよび設定値を実装する手段とを備え、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記手段は、
データコールの実施を試行する手段と、
前記データコールの試行が成功したかどうかを判定する手段と、
前記データコールが不成功である場合、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定する手段と、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示す手段と、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置しないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットする手段とをさらに備えるモバイルデバイス。
【請求項１０】
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードする前記手段は、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索する手段と、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装する手段と、
ダウンロードサービスをリセットする手段と、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換する手段と、
前記モバイルデバイスをリセットする手段とを備える、請求項9に記載のモバイルデバイス。
【請求項１１】
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索し、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装し、
ダウンロードサービスをリセットし、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換し、
前記モバイルデバイスをリセットし、
選択されたサービスプロバイダのためのアクティベーション処理を開始する手段をさらに備える、請求項9に記載のモバイルデバイス。
【請求項１２】
前記アクティベーション処理が成功したかどうかを判定する手段と、
前記アクティベーション処理が成功しなかった場合、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合に実行される処理を繰り返す手段と、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータを設定する手段とをさらに備える、請求項11に記載のモバイルデバイス。
【請求項１３】
接続失敗カウンタをゼロにリセットする手段と、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分する手段と、
前記接続失敗カウンタが所定の数に等しいかどうかを判定する手段と、
前記接続失敗カウンタが前記所定の数に等しくない場合、データコールの実施の試行を繰り返す手段とをさらに備え、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットする前記手段は、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ、そのように行う、請求項10に記載のモバイルデバイス。
【請求項１４】
モバイルデバイスであって、
サービスプロバイダアカウントの選択を受信する手段と、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する手段と、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードする手段と、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索する手段と、
前記検索されたパラメータおよび設定値を実装する手段とを備え、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記手段は、
データコールの実施を試行する手段と、
前記データコールの試行が成功したかどうかを判定する手段と、
前記データコールが不成功である場合、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定する手段と、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示す手段と、
既存のモバイルデバイスクレデンシャルの値を、メモリ内の一時ファイルに格納する手段と、
前記データコールの試行が不成功であり、かつ、前記モバイルデバイスが選択されたサービスプロバイダのためのホームネットワークの外に位置しない場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更する手段と、
アカウントサーバに接触して、前記選択されたサービスプロバイダアカウントがアクティブであるかどうかを判定する手段と、
前記選択されたサービスプロバイダアカウントがアクティブであると判定される場合、修復ルーチンを行う手段と、
前記選択されたサービスプロバイダアカウントが、前記アカウントサーバによって、アクティブでないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットする手段とをさらに備えるモバイルデバイス。
【請求項１５】
接続失敗カウンタをゼロにリセットする手段と、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分する手段と、
前記接続失敗カウンタが所定の数に等しいかどうかを判定する手段と、
接続試行の数が前記所定の数に等しくない場合、データコールの実施の試行を繰り返す手段とをさらに備え、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更する前記手段は、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ、そのように行う、請求項14に記載のモバイルデバイス。
【請求項１６】
前記修復ルーチンを行う前記手段は、
前記選択されたサービスプロバイダでのアカウントがアクティブであると判定される場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された、選択されたサービスプロバイダアカウントクレデンシャルの値と比較して、前記値の間に不一致があるかどうかを判定する手段と、
不一致が存在する場合、前記既知の実用クレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された前記クレデンシャルの値に変更する手段とをさらに備える、請求項14に記載のモバイルデバイス。
【請求項１７】
モバイルデバイスであって、
内部メモリユニットであって、プロビジョニングデータバッファを含む前記内部メモリユニットと、
前記内部メモリユニットに結合されたプロセッサとを備え、前記プロセッサは、
サービスプロバイダアカウントの選択を受信するステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認するステップと、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップと、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索するステップと、
前記検索されたパラメータおよび設定値を実装するステップとを備えるステップを行うようにソフトウェア命令を用いて構成され、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記ステップは、
データコールの実施を試行するステップと、
前記データコールの試行が成功したかどうかを判定するステップと、
前記データコールが不成功である場合、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定するステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示すステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置しないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットするステップとをさらに備える、モバイルデバイス。
【請求項１８】
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップは、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索するステップと、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装するステップと、
ダウンロードサービスをリセットするステップと、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換するステップと、
前記モバイルデバイスをリセットするステップとを備える、請求項17に記載のモバイルデバイス。
【請求項１９】
前記プロセッサは、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索し、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装し、
ダウンロードサービスをリセットし、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換し、
前記モバイルデバイスをリセットし、
選択されたサービスプロバイダのためのアクティベーション処理を開始するステップを備える、さらなるステップを行うようにソフトウェア命令を用いて構成される、請求項17に記載のモバイルデバイス。
【請求項２０】
前記プロセッサは、
前記アクティベーション処理が成功したかどうかを判定するステップと、
前記アクティベーション処理が成功しなかった場合、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合に実行される処理を繰り返すステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータを設定するステップとを備える、さらなるステップを行うようにソフトウェア命令を用いて構成される、請求項19に記載のモバイルデバイス。
【請求項２１】
前記プロセッサは、
接続失敗カウンタをゼロにリセットするステップと、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分するステップと、
前記接続失敗カウンタが所定の数に等しいかどうかを判定するステップと、
接続試行の数が前記所定の数に等しくない場合、データコールの実施の試行を繰り返すステップとを備える、さらなるステップを行うようにソフトウェア命令を用いて構成され、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットする前記ステップは、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ行われる、請求項18に記載のモバイルデバイス。
【請求項２２】
モバイルデバイスであって、
内部メモリユニットであって、プロビジョニングデータバッファを含む前記内部メモリユニットと、
前記内部メモリユニットに結合されたプロセッサとを備え、前記プロセッサは、
サービスプロバイダアカウントの選択を受信するステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認するステップと、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップと、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索するステップと、
前記検索されたパラメータおよび設定値を実装するステップとを備えるステップを行うようにソフトウェア命令を用いて構成され、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記ステップは、
データコールの実施を試行するステップと、
前記データコールの試行が成功したかどうかを判定するステップと、
前記データコールが不成功である場合、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定するステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示すステップと、
既存のモバイルデバイスクレデンシャルの値を、メモリ内の一時ファイルに格納するステップと、
前記データコールの試行が不成功であり、かつ、前記モバイルデバイスが選択されたサービスプロバイダのためのホームネットワークの外に位置しない場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更するステップと、
アカウントサーバに接触して、前記選択されたサービスプロバイダアカウントがアクティブであるかどうかを判定するステップと、
前記選択されたサービスプロバイダアカウントがアクティブであると判定される場合、修復ルーチンを行うステップと、
前記選択されたサービスプロバイダアカウントが、前記アカウントサーバによって、アクティブでないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットするステップとをさらに備えるモバイルデバイス。
【請求項２３】
前記プロセッサは、
接続失敗カウンタをゼロにリセットするステップと、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分するステップと、
前記接続失敗カウンタが所定の数に等しいかどうかを判定するステップと、
接続試行の数が前記所定の数に等しくない場合、データコールの実施の試行を繰り返すステップとを備える、さらなるステップを行うようにソフトウェア命令を用いて構成され、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更する前記ステップは、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ行われる、請求項22に記載のモバイルデバイス。
【請求項２４】
前記プロセッサは、
前記選択されたサービスプロバイダでのアカウントがアクティブであると判定される場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された、選択されたサービスプロバイダアカウントクレデンシャルの値と比較して、前記値の間に不一致があるかどうかを判定するステップと、
不一致が存在する場合、前記既知の実用クレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された前記クレデンシャルの値に変更するステップとを備える、さらなるステップを行うようにソフトウェア命令を用いて構成される、請求項22に記載のモバイルデバイス。
【請求項２５】
コンピュータ可読記憶媒体であって、
サービスプロバイダアカウントの選択を受信するステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認するステップと、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップと、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索するステップと、
前記検索されたパラメータおよび設定値を実装するステップとを備えるステップをプロセッサに行わせるように構成されたプロセッサ実行可能ソフトウェア命令を格納し、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記ステップは、
データコールの実施を試行するステップと、
前記データコールの試行が成功したかどうかを判定するステップと、
前記データコールが不成功である場合、モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定するステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示すステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置しないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットするステップとをさらに備えるコンピュータ可読記憶媒体。
【請求項２６】
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップは、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索するステップと、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装するステップと、
ダウンロードサービスをリセットするステップと、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換するステップと、
前記モバイルデバイスをリセットするステップとを備える、請求項25に記載のコンピュータ可読記憶媒体。
【請求項２７】
前記格納されたプロセッサ実行可能ソフトウェア命令は、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合、
前記選択されたサービスプロバイダアカウントに対応する、アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを、メモリから検索し、
前記アプリケーションプログラミングインタフェースおよび動的にリンクされたライブラリを実装し、
ダウンロードサービスをリセットし、
拡張ファイルサービスに書き込まれたすべての以前のパラメータ、設定値、ファイルおよびプロビジョニングデータを前記選択されたサービスプロバイダアカウントのものと置換し、
前記モバイルデバイスをリセットし、
選択されたサービスプロバイダのためのアクティベーション処理を開始するステップを備える、さらなるステップをプロセッサに行わせるように構成された、請求項25に記載のコンピュータ可読記憶媒体。
【請求項２８】
前記格納されたプロセッサ実行可能ソフトウェア命令は、
前記アクティベーション処理が成功したかどうかを判定するステップと、
前記アクティベーション処理が成功しなかった場合、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていない場合に実行される処理を繰り返すステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータを設定するステップとを備える、さらなるステップをプロセッサに行わせるように構成された、請求項27に記載のコンピュータ可読記憶媒体。
【請求項２９】
前記格納されたプロセッサ実行可能ソフトウェア命令は、
接続失敗カウンタをゼロにリセットするステップと、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分するステップと、
前記接続失敗カウンタが所定の数に等しいかどうかを判定するステップと、
接続試行の数が前記所定の数に等しくない場合、データコールの実施の試行を繰り返すステップとを備える、さらなるステップをプロセッサに行わせるように構成され、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットする前記ステップは、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ行われる、請求項26に記載のコンピュータ可読記憶媒体。
【請求項３０】
コンピュータ可読記憶媒体であって、
サービスプロバイダアカウントの選択を受信するステップと、
前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをチェックすることによって、前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認するステップと、
前記選択されたサービスプロバイダアカウントをサポートするための命令を含むソフトウェアをロードするステップと、
前記選択されたサービスプロバイダアカウントに対応するパラメータおよび設定値を、不揮発性メモリから検索するステップと、
前記検索されたパラメータおよび設定値を実装するステップとを備えるステップをプロセッサに行わせるように構成されたプロセッサ実行可能ソフトウェア命令を格納し、
前記選択されたサービスプロバイダアカウントが以前にアクティベートされていることを確認する前記ステップは、
データコールの実施を試行するステップと、
前記データコールの試行が成功したかどうかを判定するステップと、
前記データコールが不成功である場合、モバイルデバイスが前記選択されたサービスプロバイダアカウントのためのホームネットワーク内に位置するかどうかを判定するステップと、
前記モバイルデバイスが、前記選択されたサービスプロバイダアカウントのための前記ホームネットワークの外に位置すると判定される場合、ローミング状態を示すステップと、
既存のモバイルデバイスクレデンシャルの値を、メモリ内の一時ファイルに格納するステップと、
前記データコールの試行が不成功であり、かつ、前記モバイルデバイスが選択されたサービスプロバイダのためのホームネットワークの外に位置しない場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更するステップと、
アカウントサーバに接触して、前記選択されたサービスプロバイダアカウントがアクティブであるかどうかを判定するステップと、
前記選択されたサービスプロバイダアカウントがアクティブであると判定される場合、修復ルーチンを行うステップと、
前記選択されたサービスプロバイダアカウントが、前記アカウントサーバによって、アクティブでないと判定される場合、工場出荷時のパラメータおよび前記選択されたサービスプロバイダアカウントのアクティベーションのインジケータをリセットするステップとをさらに備えるコンピュータ可読記憶媒体。
【請求項３１】
前記格納されたプロセッサ実行可能ソフトウェア命令は、
接続失敗カウンタをゼロにリセットするステップと、
前記データコールが不成功であり、かつ、前記モバイルデバイスが前記選択されたサービスプロバイダアカウントのための前記ホームネットワーク内であると判定される場合、前記接続失敗カウンタを増分するステップと、
前記接続失敗カウンタが所定の数に等しいかどうかを判定するステップと、
接続試行の数が前記所定の数に等しくない場合、データコールの実施の試行を繰り返すステップとを備える、さらなるステップをプロセッサに行わせるように構成され、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのための既知の実用クレデンシャルの値に変更する前記ステップは、前記接続失敗カウンタが前記所定の数の接続試行に等しい場合にのみ行われる、請求項30に記載のコンピュータ可読記憶媒体。
【請求項３２】
前記格納されたプロセッサ実行可能ソフトウェア命令は、
前記選択されたサービスプロバイダでのアカウントがアクティブであると判定される場合、前記既存のモバイルデバイスクレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された、選択されたサービスプロバイダアカウントクレデンシャルの値と比較して、前記値の間に不一致があるかどうかを判定するステップと、
不一致が存在する場合、前記既知の実用クレデンシャルの値を、前記選択されたサービスプロバイダのHLR/AAAサーバに格納された前記クレデンシャルの値に変更するステップとを備える、さらなるステップをプロセッサに行わせるように構成された、請求項30に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にモバイルデバイスのプロビジョニングおよびプログラミングに関し、より詳細には、単一のモバイルデバイスにおける複数のサービスプロバイダアカウントのプロビジョニングおよびプログラミングを行うための方法および装置に関する。
【背景技術】
【０００２】
一般に、従来のセルラー通信デバイスは、2つの主な競合するネットワーク技術のうち一方を使用して動作する。すなわち、グローバルシステムフォーモバイルコミュニケーションズ(GSM)または符号分割多重アクセス(CDMA)である。これらの2つの競合する技術の間にはいくつかの違いがあるが、根底では、GSMは時分割多重方式を実装するが、CDMAは(その名前が示すように)符号ベースの多重方式を実装する。GSMネットワークでは、ネットワークの全帯域幅の一部がチャネルとしてモバイルデバイスに割り振られる。ネットワーク基地局は次いで、割り振られたチャネルの各々を短時間に選択的に「リッスン」して、音声および/またはデータ情報をモバイルデバイスとの間で送受信する。基地局は、割り振られたチャネルを短時間に選択的にリッスンすることしかできず、その理由は、基地局がまた、ネットワーク上で動作する他のモバイルデバイスに割り振られた他のチャネルをもリッスンしなければならないからである。有効ではあるが、TDMA方式は、帯域幅が制限されること、および、単一のチャネルを単一のモバイルデバイス専用にする必要があることが、妨げになる。
【０００３】
対照的に、CDMAネットワークでは、各チャネルが複数のモバイルデバイスによって利用されうる。同じ割り振られたチャネル上で動作する複数の異なるモバイルデバイスから受信された情報を区別するために、各モバイルデバイスには、その音声および/またはデータ情報を符号化するために異なる符号化オフセットが割り当てられる。復号符号オフセットを選択的に切り替えることによって、基地局は、同じ割り振られたチャネル上で動作する複数のモバイルデバイスから受信された情報を復号することができる。これにより、同量の全帯域幅においてより多くのモバイルデバイスにサービスするための容量が大幅に増す。
【０００４】
競合する技術の各々で実装された多重化および符号化方式に加えて、競合する通信ネットワークを運用する個々のサービスプロバイダは、それらの各通信ネットワーク上で送受信中である通信信号の他の態様を修正する場合がある。これにより、各サービスプロバイダが自らのネットワークを別のネットワークと区別し、場合によっては、違いが出る機能をその顧客に提供することが可能となる。これらの態様には、通信信号波形、周波数、振幅などが含まれうる。
【０００５】
特定のサービスプロバイダのネットワーク上で適切に動作するために、モバイルデバイスは、正しい変調により適切な波形を生成するために必要なハードウェア、および、サービスプロバイダのネットワークによって必要とされるような符号化方式を備えなければならない。2つの競合するネットワークの間で使用された波形のタイプ、変調および符号化方式における基本的相違のため、GSM技術のネットワーク上で動作するために必要なハードウェアを備えたモバイルデバイスは、CDMA技術のネットワーク上で動作することができず、逆もまた同様である。
【０００６】
また、類似の技術(例えば、GSMまたはCDMA)のネットワークを運用する、競合するサービスプロバイダは典型的には、モバイルデバイスが特定のサービスプロバイダのネットワーク上で動作することを可能にする、独自のプロビジョニングデータを実装する。各サービスプロバイダは典型的には、それらの使用またはフォーマットにおいて固有であるいくつかのプロビジョニングパラメータを採用する。従来のモバイルデバイスは、そのデバイスが登録されている単一のサービスプロバイダのためのプロビジョニングデータを格納する。従来のモバイルデバイスは、(もし同じ技術タイプであれば)異なるサービスプロバイダの通信ネットワーク上で通信を実施することが可能となりうるが、そのような使用は、モバイルデバイスにロードされたプロビジョニングデータによって指示されたローミングルールおよび許可に従ってのみ、許可されるようになる。従来のモバイルデバイスのユーザが、異なるサービスプロバイダの通信ネットワークを、プライマリ(すなわち、非ローミング)サービスで利用することを望む場合、モバイルデバイスにロードされたプロビジョニングデータは削除され、新たに選択されたサービスプロバイダのプロビジョニングデータで置換されなければならない。典型的には、そのような変更は、新たに選択されたサービスプロバイダで新しいアカウントをアクティベートすることによってのみ行われうる。ユーザが後に、プライマリサービスのために元のサービスプロバイダの通信ネットワークに戻ることを望む場合、元のサービスプロバイダのネットワーク上の新しいアカウントがアクティベートされ、以前のアカウントデータが削除されなければならない。
【０００７】
いくつかの設定では、加入者識別モジュール(SIM)カードまたは類似のR-UIMカードなど、取り外し可能なスマートカードによって、サービスプロバイダが介在する必要なしに、モバイルデバイスにロードされたプロビジョニングデータをユーザが入替え可能にすることができる。複数の異なるサービスプロバイダのためのプロビジョニングデータが、取り外し可能なスマートカード上に格納されうる。各スマートカードは、異なるサービスプロバイダのためのプロビジョニングデータを格納する場合があるので、ユーザは、モバイルデバイス内のスマートカードを物理的に入れ替えて、プライマリサービスのために異なるサービスプロバイダネットワークを使用する場合がある。しかし、スマートカードを物理的に入れ替える必要があるため、ユーザは複数のスマートカードを携行することが必要となる。加えて、スマートカードの物理的な入替えは、煩雑である。最後に、スマートカードを使用してもなお、GSM技術のネットワーク上で動作するために必要なハードウェアを備えたモバイルデバイスが、CDMA技術のネットワーク上で動作可能にはならず、逆もまた同様である。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
不揮発性メモリ内に、複数のサービスプロバイダのための必要なソフトウェアビルド(software builds)およびプロビジョニングデータパラメータを格納し、適切に装備されたモバイルデバイスがいくつかの異なるサービスプロバイダのうち任意のものにおいて動作可能となるようにするために、様々な実施形態の方法およびシステムが提供される。
【課題を解決するための手段】
【０００９】
このようなモバイルデバイスは、そのモバイルデバイスがすべての技術タイプ(GSMおよびCDMAを含む)のセルラーネットワークと通信することを可能とする、ソフトウェアベースの無線チップセットモジュールを含みうる。様々な実施形態はさらに、複数の異なるサービスプロバイダのソフトウェアビルドおよびプロビジョニングデータの間で切り替えるための方法、システムおよびデバイスを提供する。追加の実施形態は、モバイルデバイスのプログラミングにおいて競合の結果となりうる、複数のサービスプロバイダ接続マネージャの起動を防ぐ方法を提供する。
【００１０】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的実施形態を例示し、上記の概要および下記の詳細な説明と共に、本発明の特徴を説明する役目を果たす。
【図面の簡単な説明】
【００１１】
【図１】様々な実施形態をサポート可能なモバイルデバイスの典型的なコンポーネントを示すブロック図である。
【図２】ソフトウェア無線ベースのチップセットモジュールを備えたモバイルデバイス内で動作する、ソフトウェアモジュールのハードウェア/ソフトウェアアーキテクチャ図である。
【図３】複数の異なるサービスプロバイダアカウントによって利用される動的パラメータの例示的データテーブルである。
【図４】複数の異なるサービスプロバイダアカウントによって利用される静的パラメータの例示的データテーブルである。
【図５】複数の異なるサービスプロバイダアカウントによって利用されるセキュリティパラメータの例示的データテーブルである。
【図６】選択されたサービスプロバイダのためのアカウントがアクティベートされていることを保証するために実装されうる、ステップ例を例示する処理フロー図である。
【図７】モバイルデバイスが様々なサービスプロバイダでアクティベーション手順を開始することを可能にする、通信システムのシステム図である。
【図８】複数のソフトウェアビルドが同じモバイルデバイス上で複数のサービスプロバイダアカウントをサポートすることをシームレスに可能にするための、一実施形態の処理を例示する処理フロー図である。
【図９】以前にアクティベートされていないサービスプロバイダアカウントのためのソフトウェアビルドをロードするために実装されうる、ステップ例を例示する処理フロー図である。
【図１０】以前にアクティベートされたサービスプロバイダアカウントのためのソフトウェアビルドをロードするために実装されうる、ステップ例を例示する処理フロー図である。
【図１１】選択されたサービスプロバイダでアクティブ/有効なアカウントを確認するための代替実施形態の方法の処理フロー図である。
【図１２】選択されたサービスプロバイダでアクティブ/有効なアカウントを確認するための、別の代替実施形態の方法の処理フロー図である。
【図１３】サービスプロバイダアカウントのインデックス付きデータテーブルがリモートの不揮発性メモリに格納される、代替実施形態の通信システムのシステム図である。
【図１４】サービスプロバイダアカウントのインデックス付きデータテーブルがリモートの不揮発性メモリに格納される、別の代替実施形態の通信システムのシステム図である。
【図１５】例示的接続マネージャトラッカーによって実装されうる処理を例示する処理フロー図である。
【図１６】様々な実施形態での使用に適した一例のサーバのコンポーネントブロック図である。
【発明を実施するための形態】
【００１２】
添付の図面を参照して、様々な態様を詳細に説明する。可能な限り、同じまたは類似の部分を参照するために、図面の全体を通じて同じ参照番号が使用される。特定の例および実装に対して行われる参照は例示のためであり、本発明の範囲または特許請求の範囲を限定するように意図されるものではない。
【００１３】
本明細書において、「例示的」という用語は、本明細書では「1つの例、場合、または例示としての役割を果たす」という意味で使用される。本明細書で「例示的」として記載されたいかなる実装も、必ずしも他の実装よりも好ましい、または有利であると解釈されるべきではない。
【００１４】
本明細書で使用されるとき、「モバイルデバイス」という用語は、無線音声およびデータ通信のための通信モジュールを実装する、存在する場合があるか、あるいは将来開発されるような、いかなる形のプログラマブルなコンピュータをも包含するように意図されるものであり、例えば、携帯電話、携帯情報端末(PDA)、パームトップコンピュータ、ラップトップおよびノート型コンピュータ、無線電子メール受信器(例えば、Blackberry(登録商標)およびTreo(登録商標)デバイス)、マルチメディアインターネット対応の携帯電話(例えば、iPhone(登録商標))、ならびに、無線通信モジュール、プロセッサおよびメモリを含む類似のパーソナル電子デバイスが含まれる。好ましい実施形態では、モバイルデバイスは、ソフトウェア無線ベースのチップセットモジュールを有するポータブルコンピュータである。
【００１５】
従来のモバイルデバイスは典型的には、単一のサービスプロバイダの通信ネットワーク上で動作するように設計されている。より具体的には、従来のモバイルデバイスは、単一の通信技術(例えば、GSM対CDMA)上で動作するように設計されている。例えば、携帯電話は典型的には、サービスプロバイダから直接、そのサービスプロバイダのネットワーク上で使用するために購入されている。同様に、ノート型コンピュータ用の無線モデムカードは典型的には、サービスプロバイダから直接売買される。競合する技術の間の基本的相違のため、一方の競合する技術における通信を可能とする、モバイルデバイス内に含まれたハードウェアは、同じモバイルデバイスが別の競合する技術のネットワークと通信することを妨げる。
【００１６】
また、2つの別々のサービスプロバイダが同じ通信技術を実装する場合があるにもかかわらず、複数の異なるサービスプロバイダはそれらの顧客に異なる機能セットを提供する場合がある。そのため、通信を可能とするハードウェアが同じである場合でも、あるサービスプロバイダの通信ネットワーク上での通信を可能とするソフトウェアは、異なるサービスプロバイダのものとは大きく異なる場合がある。したがって、サービスプロバイダ毎に異なるソフトウェアビルドがモバイルデバイス上に実装されなければならない。
【００１７】
加えて、ほとんどの従来のモバイルデバイスは、単一のサービスプロバイダのプロビジョニングデータをロードするように設計されている。競合するサービスプロバイダは独自のプロビジョニングデータを実装するので、あるサービスプロバイダの通信ネットワーク上で動作する従来のモバイルデバイスは、第1のサービスプロバイダのプロビジョニングデータを削除し、第2のサービスプロバイダのプロビジョニングデータで置換することなく、(プライマリサービスとして)別のサービスプロバイダの通信ネットワーク上で動作することはできない。いくつかのモバイルデバイスは、ユーザがスマートカードの入替えを通じて、複数の異なるサービスプロバイダのプロビジョニングデータを交換することを可能にするが、そのような方法は煩雑であり、なお、競合する技術の通信ネットワークをユーザが利用可能にはならない。
【００１８】
競合する技術の1つと共に、ハードウェアを使用して、信号の生成、符号化/復号化、および変調/復調を行う従来のモバイルデバイスとは対照的に、QualcommのGobi(登録商標)など、今後のソフトウェア無線ベースのチップセットモジュールは、プログラマブルなデジタル信号プロセッサ(DSP)内でデータ信号の生成、符号化/復号化、および変調/復調を行う。このプログラマブルなDSPは、任意の通信技術の波形、周波数およびデータパケット要件に準拠するように、通信信号がソフトウェアによって定義されることを可能とする。異なる特性を有する信号を生成するようにDSPを再プログラムすることによって、モバイルデバイスを、任意のサービスプロバイダの固有の通信ネットワークと互換性がある通信信号を生成するようにすることが可能である。
【００１９】
選択されたサービスプロバイダネットワークと互換性があるデータ信号を生成するように、ソフトウェア無線ベースのチップセット内のDSPを再プログラムするために、モバイルデバイスは、選択されたサービスプロバイダのための適切なソフトウェアビルドをロードしなければならない。各サービスプロバイダのソフトウェアビルドは、そのサービスプロバイダの通信ネットワークを介して適切に搬送されるデータ信号の生成、符号化および変調を行うために必要な命令を含み、ならびに、そのサービスプロバイダによって提供された追加の機能のすべてを実行するために必要なプログラミングを含む場合がある。様々な実施形態は、モバイルデバイス上で実装されたソフトウェアビルドの様々なモジュールを修正かつ切り替える機能を提供する。様々な実施形態は、サービスプロバイダのソフトウェアビルドの以前に生成されたパラメータを再利用できるように、モバイルデバイスによってアクティベートされたアカウントをどのサービスプロバイダが有していたかを監視する。他の実施形態は、現在実装されているサービスプロバイダソフトウェアビルドを監視して、異なるソフトウェアビルドが要求されるときに致命的な衝突の発生を防ぐ。
【００２０】
図1は、様々な実施形態をサポート可能なモバイルデバイス10の典型的なコンポーネントを示す。典型的なモバイルデバイス10は、内部メモリ192およびユーザインタフェースディスプレイ11に結合された、プロセッサ191またはデュアル(もしくはそれ以上の)プロセッサ191aおよび191bを含む。モバイルデバイス10はまた、複数のサービスプロバイダ通信ネットワークのうち任意のものにおいて動作可能である、ソフトウェア定義通信モジュール20を含んでもよい。ソフトウェア定義通信モジュール20は、選択されたサービスプロバイダのためのデバイスのソフトウェア動作の修正に使用するための、サービスプロバイダアカウントパラメータおよび設定のインデックス付きテーブルを格納する場合のある、不揮発性メモリ25およびファイルシステム26を含む場合がある。
【００２１】
モバイルデバイス10は、プロセッサ191に結合されたソフトウェア定義通信モジュール20に接続される、電磁放射を送受信するためのアンテナ194を含む場合がある。さらに、モバイルデバイス10は、可聴音を発生させるためのスピーカ18、および、ユーザの音声を受信するなど、音を検知するためのマイクロホン19を含む。マイクロホン19およびスピーカ18は共に、ボコーダ199を介してプロセッサ191に接続されてよく、ボコーダ199は、マイクロホン19から受信されたアナログ電気信号をデジタル符号に変換し、プロセッサ191から受信されたデジタル符号をアナログ電気信号に変換し、このアナログ電気信号をスピーカ18が音波に変換することができる。いくつかの実装では、ボコーダ199は、プロセッサ191の回路およびプログラミングの一部として含まれうる。モバイルデバイスはまた典型的には、ユーザ入力を受信するためのキーパッド13およびメニュー選択ボタンまたはロッカースイッチ12をも含む。
【００２２】
プロセッサ191は、下記の様々な実施形態の機能を含む、様々な機能を行うためのソフトウェア命令(アプリケーション)によって構成可能な、いかなるプログラマブルなマイクロプロセッサ、マイクロコンピュータまたはマルチプロセッサチップであってもよい。いくつかのモバイルデバイスでは、無線通信機能専用の1つのプロセッサ、および、他のアプリケーション実行専用の1つのプロセッサなど、複数のプロセッサ191が提供されうる。いくつかのモバイルデバイス10では、複数のプロセッサ191a、191bが、それらの間で無線通信機能および/またはアプリケーションを共有するために提供されうる。典型的には、ソフトウェアアプリケーションは、アクセスされ、プロセッサ191にロードされる前に、内部メモリ192に格納されうる。いくつかのモバイルデバイスでは、プロセッサ191は、アプリケーションソフトウェア命令を格納するために十分な内部メモリを含む場合がある。いくつかのモバイルデバイスでは、プロセッサ191は、信号発生器およびモデム回路に加えて、2つのプロセッサを含む、QualcommのGobi(登録商標)内など、ソフトウェア定義通信モジュール20内に含まれる。
【００２３】
図2は、ソフトウェア無線ベースのチップセットモジュールを備えたモバイルデバイス上のソフトウェアモジュールのハードウェア/ソフトウェアアーキテクチャ図である。図2に示すように、モバイルデバイス10は、QualcommのGobi(登録商標)など、ソフトウェア無線ベースのチップセット通信モジュール20(通信モジュール)を含む。通信モジュール20は、異なるサービスプロバイダパラメータ構成のインデックス付きテーブルを格納する場合のある、不揮発性メモリ25を任意選択で含んでもよい。代替実施形態では、インデックス付きデータテーブルはまた、そこから検索することができる、リモートの不揮発性メモリ(図示せず)に格納されてもよい。インデックス付きデータテーブルの一例は、以下の図3により詳細に示される。インデックス付きデータテーブルに格納された様々なパラメータは、モバイルデバイスがサブスクライブしているアカウントをサポートするサービスプロバイダ毎に、特定のソフトウェアビルドをコンパイルするとき、使用されうる。各サービスプロバイダは固有のソフトウェアビルドを実装する場合があるので、各サービスプロバイダアカウントのためのパラメータはしばしば、他のサービスプロバイダアカウントとは異なる。多くの場合、あるサービスプロバイダのためのソフトウェアビルドにおいて使用されたパラメータは、異なるフォーマットである場合があり、あるいは、異なるサービスプロバイダによってまったく使用されない場合がある。
【００２４】
プロセッサ191で機能するマルチインタフェースソフトウェアモジュール30は、通信モジュール20および共通アプリケーションプログラミングインタフェース(C-API)40と通信している。マルチインタフェースソフトウェアモジュール30は、C-API 40を介してアプリケーションによって求められた様々なサブルーチンのための実際のコーディングを含む。モバイルデバイス10のためのアプリケーションの開発者は、C-API 40を利用して、マルチインタフェースモジュール30に格納された様々なサブルーチンにアクセスし、あるいはそれとインタフェースして、所望の機能を行うことができる。マルチインタフェースモジュール30に格納されたサブルーチンは、通信モジュール20からの情報のプログラミングおよび検索を含む、様々な機能を行うために使用されうるが、それらに限定されない。C-API 40は、いくつかのダイナミックリンクライブラリ(DLL)45を含む場合がある。いくつかのダイナミックリンクライブラリ45を含むことによって、C-API 40は、特定のサービスプロバイダのために通信モジュール20をプロビジョンするために、マルチインタフェースモジュール30との間でフックを使用する場合がある。共通サブルーチンの動的にリンクされたライブラリを利用することによって、選択されたサービスプロバイダのための適切なサブルーチンは、コンパイル時ではなく実行時に、アプリケーションプログラムにロードされうる。
【００２５】
サービスプロバイダのためのアカウントがモバイルデバイス10上でアクティベートされるとき、そのアカウントをサポートするDLL 45がC-APIにロードされ、今後の検索のために格納される。モバイルデバイス10上でアクティベートされた様々なサービスプロバイダの各々は、サービスプロバイダのソフトウェアビルドおよびプロビジョニングデータのロードを容易にするために、そのそれぞれのDLLを使用する、特定のサービスプロバイダに特有のアプリケーションプログラミングインタフェースをロードする場合がある。DLL 45の各々は、マルチインタフェースソフトウェアモジュール30と通信するようにプログラムされうる。C-API 40は、接続マネージャトラッカー50と、あるいは、サービスプロバイダの接続マネージャと直接、通信している。接続マネージャトラッカー50は、事実上「交通警官」の役割を果たし、一度に単一のサービスプロバイダのソフトウェアビルドのみがモバイルデバイス10上に実装されることを保証する。接続マネージャトラッカー50は、どのサービスプロバイダアカウントが選択されるかを決定し、選択されたサービスプロバイダアカウントに対応するソフトウェアビルドのみが実装されることを保証する。現在実装されているソフトウェアビルドによってサポートされていないサービスプロバイダアカウントが選択される場合、接続マネージャトラッカー50は、新たに選択されたサービスプロバイダアカウントに対応するソフトウェアビルドが起動される前に、現在実装されているソフトウェアビルドが閉じられることを保証してもよい。接続マネージャトラッカー50は、モバイルデバイス10上でアクティベートされた各サービスプロバイダアカウント(SP1、SP2、SP3)をサポートする個々の各接続マネージャ61、62、63と通信している。各接続マネージャ61、62、63は、DLL 45から適切なサブルーチンをロードし、不揮発性メモリ25に格納された適切なパラメータを検索することによって、対応するソフトウェアビルドを起動することを担う。
【００２６】
代替実施形態では、モバイルデバイス10は、複数のサービスプロバイダアカウント(SP1、SP2、SP3)のための通信リンクを設定することができる中央アプリケーションである、共通接続マネージャ60を実装してもよい。このような実施形態では、接続マネージャトラッカー50は共通接続マネージャ60内に一体化されてもよく、あるいは、外部接続マネージャトラッカー50と通信し続けて、一度に単一のサービスプロバイダのソフトウェアビルドのみがモバイルデバイス10上に実装されることを保証してもよい。
【００２７】
図3、4および5は、様々なサービスプロバイダアカウントによって利用される動的、静的およびセキュリティパラメータの例示的インデックス付きデータテーブルを例示する。図3、4および5に示すように、サービスプロバイダアカウントに関連付けられたデータは、サービスプロバイダに関連付けられた複数のレコード(すなわち、列)を含むテーブルとして編成される場合があり、各レコードは、各サービスプロバイダに関連付けられたデータ設定を格納する複数のデータフィールド(すなわち、図3、4および5の行)を含む場合がある。図3、4および5の例示的データテーブルは、4つのサービスプロバイダ(すなわち、サービスプロバイダ1、サービスプロバイダ2、サービスプロバイダ3およびサービスプロバイダ4)のみを例示する。しかし、追加のサービスプロバイダをリストする追加の列が含まれてもよいことは、当業者には理解されよう。実際には、データテーブルは、世界中で運営されているあらゆるサービスプロバイダを含んでもよい。また、モバイルデバイス10が同じサービスプロバイダの通信ネットワーク上で複数のアカウントを維持する場合、サービスプロバイダ毎に複数の列が含まれてもよい。
【００２８】
サービスプロバイダ毎に、それぞれのサービスプロバイダの最初のアクティベーション処理中に生成される様々なパラメータおよび設定が、データフィールド(図3、4および5では、行として例示される)に格納されうる。図3は、様々なサービスプロバイダアカウントによって利用される動的パラメータの例示的インデックス付きデータテーブルを例示する。例えば、各サービスプロバイダは、異なるアクティベーションのモードを指定する場合がある。その名前が示すように、アクティベーションのモードは、特定のサービスプロバイダによって採用されるアクティベーション手順のタイプを示す。異なるタイプのアクティベーション手順には、例えば、無線サービスプロビジョニング(Over-the-Air Service Provisioning)(OTASP)手順、無線インターネット(Internet Over-the Air)(IOTA)手順、または、オープンモバイルアライアンスデバイス管理(Open Mobile Alliance Device Management)(OMADM)手順が含まれうる。これらの各手順は、そのアクティベーション手順を実施するために異なるステップおよび/またはプロトコルを実装する場合がある。
【００２９】
データテーブルはまた、サービスプロバイダ毎にネットワークアクセス識別子(NAI)を指定してもよい。NAIは、データサービスのためにデバイスを認証するために使用された、モバイルデバイス10に割り当てられたユーザ名である。各サービスプロバイダは、固有のフォーマットをユーザ名に割り当てる場合がある。例えば、サービスプロバイダ1は、サービスプロバイダ1の名称をユーザ名毎のドメインとして使用する。別法として、サービスプロバイダ2は、「hcm.SP2.com」をドメイン名として利用する。場合によっては、サービスプロバイダは、複数のNAIを同じモバイルデバイス10に割り当ててもよい。例えば、図3に示すように、サービスプロバイダ2およびサービスプロバイダ4は、複数のNAIを同じモバイルデバイス10に割り当てる場合がある。NAIのフォーマットは、異なるサービスプロバイダの間のみでなく、同じサービスプロバイダによって割り当てられた様々なNAIの間でも異なる場合がある。また、図3に示すように、サービスプロバイダ1およびサービスプロバイダ3など、他のサービスプロバイダは、単一のNAIのみを各モバイルデバイス10に割り当てる場合がある。複数のNAIは、MIPユーザプロファイルNによって区別可能であり、ただし、N={0,1,2,3,...}である。よって、図3は、いくつかのサービスプロバイダが2つのNAI(すなわち、N={0,1})を割り当てることを示すが、場合によっては、追加のユーザプロファイルが割り当てられてよい。
【００３０】
データテーブルはさらに、モバイルノード-ホームエージェント(MN-HA)共有秘密を指定してもよく、これはパスワードとも呼ばれる。MN-HAパスワードは、モバイルIPホームエージェントでモバイルデバイス10を認証するために使用されうる。各サービスプロバイダは、固有のフォーマットをユーザ名に割り当てる場合がある。例えば、サービスプロバイダ3は、認証キー(Akey)の最初の16桁を使用するが、サービスプロバイダ4は、8文字の疑似ESN(pESN)を使用する。さらなる例として、サービスプロバイダ2は、「hcm.SP2.com」をドメイン名として利用する。NAIと同様に、図3にサービスプロバイダ2およびサービスプロバイダ4について示すように、サービスプロバイダは複数のMN-HAパスワードを同じモバイルデバイス10に割り当ててもよい。また、図3に示すように、サービスプロバイダ1およびサービスプロバイダ3など、他のサービスプロバイダは、単一のMN-HAパスワードのみを各モバイルデバイス10に割り当ててもよい。
【００３１】
データテーブルはさらに、課金サーバ(図示せず)に対してモバイルデバイス10を認証する、モバイルノード-認証、認可および課金(Authentication, Authorization, and Accounting)(MN-AAA)共有秘密(パスワード)を指定してもよい。ここでもまた、各サービスプロバイダは、異なる特定のフォーマットを使用する場合がある。加えて、各サービスプロバイダは、エントリ毎に異なる値を利用する場合がある。MN-HAパスワードおよびNAIと同様に、サービスプロバイダは、複数のMN-AAAパスワードを各モバイルデバイス10に割り当てることを選択してもよい。
【００３２】
加えて、データテーブルは、シンプルIP認証、認可および課金NAI(SIP AAA NAI)など、他のパラメータおよび設定を指定してもよく、これは時として、シンプルIPユーザ名と呼ばれる。データテーブルはさらに、シンプルIPパスワードである、シンプルIP認証、認可および課金パスワード(SIP AAAパスワード)を指定してもよい。他のパラメータには、図示されないシンプルパラメータインデックス(SPI)が含まれる場合がある。すべてのタイプのパラメータおよび設定がすべてのサービスプロバイダによって使用されるわけではないことに留意されたい。例えば、サービスプロバイダ2および4は、MN-HA共有秘密-スロット1のためのパラメータを利用するが、サービスプロバイダ1および3は、このようなパラメータを利用しない。いくつかのサービスプロバイダでは、このような利用されないパラメータに対して、インデックス付きデータテーブルに値が記録されない場合がある。他の場合には、このような値のためのプレースホルダとして、ヌル値が格納されてもよい。
【００３３】
図4は、図3に示されたもの以外の、例示的インデックス付きデータテーブル内の追加のデータエントリ例を例示する。例えば、各サービスプロバイダは、異なるモバイルノードオーセンティケータ(MNオーセンティケータ)を指定する場合がある。図4に示された例では、サービスプロバイダ1のみがこのパラメータのための値を必要とする。図4のデータテーブルはまた、モバイルノードホームアドレスSPIセット(MN HA SPIセット)、MN HA SPI値、MN AAA SPIセット、MN AAA SPI値、リバーストンネリング、QNC有効、ホームアドレス、プライマリHAアドレス、セカンダリHAアドレス、新規登録リトライ間隔時間、登録リトライ数、DS MIP登録解除リトライ、および有効期間終了前-再登録時間について、サービスプロバイダによって指定された様々なフォーマットまたは値をも示す。
【００３４】
図5は、図3および4に示されたもの以外の、例示的インデックス付きデータテーブル内の追加のデータエントリ例を例示する。図5のデータテーブルはまた、SPC、ワンタイムキーパッド補助ロック(One Time Keypad Subsidy Lock)(OTKSL)、不正確サービスプログラミングコード(SPC)試行数、フィールドサービスコード、Akeyチェックサム、シンプルメッセージサービス(SMS)サポートに対して、サービスプロバイダが使用する場合のあるフォーマットまたは値の例をも示す。
【００３５】
図3、4および5に示すインデックス付きデータテーブルにリストされたパラメータおよび設定は、例示的に過ぎないものであり、異なるサービスプロバイダによって利用かつ実装される可能性のあるフォーマットおよび値の例を提供することを目的とする。サービスプロバイダは、インデックス付きデータテーブルに反映されうる、それらの様々なソフトウェアビルドにおいて利用されるいくつかの他のパラメータおよび設定を採用してもよいことは、当業者には理解されよう。
【００３６】
ユーザがモバイルデバイス10上で通信を開始することに決めるとき、ユーザは、選択されたサービスプロバイダアカウントに対応する接続マネージャ(例えば、60、61、62、63)を起動することによって、その通信をサポートするためのサービスプロバイダアカウントを選択する場合がある。モバイルデバイス10が携帯電話である場合、サービスプロバイダアカウントは典型的には常に実行中である。しかし、モバイルデバイス10がノート型コンピュータ内の無線モデムカードである場合、サービスプロバイダアカウントは典型的には、通信機能が求められない限り、実行中ではない。通信を開始するために、ユーザは、サービスプロバイダの独立した接続マネージャを起動する場合がある。別法として、ユーザは、共通接続マネージャによって生成された、ユーザインタフェースディスプレイ内に提示されたいくつかのサービスプロバイダの選択範囲から、特定のサービスプロバイダを選択してもよい。新しいサービスプロバイダアカウントを選択するために、同様のメニューが携帯電話上に提供されてもよく、ノート型コンピュータでの接続マネージャの起動に類似するものとなる。所望のサービスプロバイダアカウントに対応する接続マネージャ(60、61、62、63)を起動することによって、接続マネージャ(60、61、62、63)は直接、あるいは接続マネージャトラッカー50を通じてC-API 40と通信して、選択されたサービスプロバイダネットワーク上での通信に必要なソフトウェアビルドを完成させるために必要な、DLL 45に含まれた必要なサブルーチンの各々を呼び出す。加えて、C-API 40は、DLL 45にアクセスして、マルチインタフェースモジュール30を介して不揮発性メモリ25および/またはファイルシステム26に格納された必要なパラメータを検索してもよい。必要なパラメータは、インデックス付きデータテーブルに格納される。そのデータテーブルは、以前に最初のサービスプロバイダアカウントのアクティベーション手順中に生成されている、選択されたサービスプロバイダアカウントのための割り当てられたパラメータの各々を含んでもよい。
【００３７】
図2に戻って参照すると、場合によっては、モバイルデバイス10には、相手先商標製品の製造会社の(OEM)ソフトウェアパッケージの一部として、様々な接続マネージャ(61、62、63)がロードされうる。これらの接続マネージャ(61、62、63)は、モバイルデバイス上にロードされた個々の接続マネージャであってもよく、あるいは、共通接続マネージャプログラム60上で可能な選択であってもよい。そのような場合、ユーザは、接続マネージャ/選択の各々に対応するサービスプロバイダのいずれか/すべてでサービスプロバイダアカウントを確立していない可能性がある。したがって、モバイルデバイス10は、選択されたサービスプロバイダのみによって規定されるようなデフォルトパラメータをプロビジョンされる場合がある。そのため、ユーザが、モバイルデバイス10のために関連付けられたサービスプロバイダアカウントを有していないサービスプロバイダのための接続マネージャを起動するとき、エラーが発生するようになり、これは、有効なサブスクリプションの必要なパラメータがインデックス付きデータテーブルに格納されるようにならないからである。したがって、接続マネージャ/選択が起動されるたびに、選択されたサービスプロバイダのためにアカウントがアクティベートされているかどうかを判定するためのテストが行われてもよい。
【００３８】
図6は、選択されたサービスプロバイダ上のアカウントがアクティベートされているかどうかを判定するために、接続マネージャが起動されるたびにモバイルデバイス10上で実装されうる処理を例示する。ユーザが、選択されたサービスプロバイダのための接続マネージャの起動を試行するとき、ステップ101で、その要求がプロセッサ191によって受信される。選択されたサービスプロバイダのための接続マネージャを起動するための要求を受信すると、判断105で、プロセッサ191は、アカウントが、選択されたサービスプロバイダのために以前にアクティベートされているかどうかを判定する場合がある。この判定処理は、各サービスプロバイダに関連付けられたアクティベーションフラグの状況をチェックすることによって、実施されうる。別法として、この判定は、選択されたサービスプロバイダのための、インデックス付きデータテーブル(図3〜5を参照)に格納されたパラメータ値をチェックすることによって、実施されうる。インデックス付きデータテーブルに格納されたパラメータ値がないか、あるいはデフォルト値である場合、アクティベーション手順は完了されていないと仮定されうる。プロセッサ191が、アカウントがモバイルデバイス10上で以前にアクティベートされていると判定する(すなわち、判断105=イエスである)場合、ステップ110で、プロセッサ191は、選択されたサービスプロバイダに対応するソフトウェアビルドをロードあるいはコンパイルしながら、インデックス付きデータテーブルに格納されたパラメータ値を検索し、これらの値を実装する。アカウントがアクティベートされている場合、選択された接続マネージャは、続けて、C-API 40に、DLL 45を介してマルチインタフェースモジュール30内の必要なサブルーチンを呼び出すように要求し、不揮発性メモリ25および/またはファイルシステム26内のインデックス付きデータテーブルから、格納されたパラメータを検索して、適切なソフトウェアビルドを実装する場合がある。
【００３９】
しかし、プロセッサ191が、選択されたサービスプロバイダのためのアカウントが以前にアクティベートされていないと判定する(すなわち、判断105=ノーである)場合、ステップ115で、プロセッサは、選択されたサービスプロバイダのために必要なソフトウェアビルドパラメータのすべてを取得するために、適切なアクティベーション手順を開始する。これらのパラメータ値が取得され、インデックス付きデータテーブルに格納された後、ステップ120で、選択されたサービスプロバイダ上でアカウントがアクティベートされていることを示すアクティベーションフラグが任意選択で設定されてもよい。
【００４０】
モバイルデバイス10が、選択されたサービスプロバイダでアカウントを最初にアクティベートするとき、開始されるアクティベーション手順のタイプは、選択されたサービスプロバイダによって決まるようになる。よって、個々のサービスプロバイダ毎に必要とされるアクティベーション手順のタイプもまた、インデックス付きデータテーブルに格納されてもよい。例えば、いくつかのサービスプロバイダは、モバイルデバイス10が無線サービスプロビジョニング(OTASP)手順、無線インターネット(IOTA)手順、またはオープンモバイルアライアンスデバイス管理(OMADM)手順を開始することを必要とする場合がある。
【００４１】
OTASP手順では、モバイルデバイス10は、指定された番号(例えば、*228)に無線で電話をかけることを対象とする場合がある。モバイルデバイス10は、サービスプロバイダのネットワーク上で無制限の通信を実施するために十分なパラメータデータを有していない場合があるが、モバイルデバイス10は、最初のアクティベーションの目的で、選択されたサービスプロバイダのアクティベーションサーバに接触するために、制限された通信を実施するために十分なパラメータデータで、OEMによってプログラムされうる。サービスプロバイダのアクティベーションサーバに接続された後、モバイルデバイス10は、サービスプロバイダのアクティベーションサーバから、モバイルデバイス10上で適切なソフトウェアビルドを構成するために使用される、様々なパラメータおよび設定を受信する。パラメータおよび設定の一部には、モバイル識別番号(MIN)、好ましいローミングリスト(PRL)、ならびに、共にモバイルデバイスの電話番号と呼ばれる場合のあるモバイルディレクトリ番号(MDN)および移動局識別子(MSID)が含まれる場合がある。OTASP手順が完了した後、モバイルデバイス10は、ユーザ名および/またはパスワードを生成することによって、サービスプロバイダに対してモバイルデバイス10を認証する、認証パラメータ生成手順を開始することが求められる場合がある。同様に、IOTA手順では、モバイルデバイスは、MINおよびMSIDなど、パラメータおよび設定を受信する場合がある。しかし、別個の認証処理を行うのではなく、IOTA処理はまた、パスワードおよびユーザ名を生成し、モバイルデバイス10に割り当てる。いずれかのアクティベーション処理が完了した後、アクティベーション手順中に受信されたパラメータおよび設定は、不揮発性メモリ25内のインデックス付きデータテーブルに格納される場合がある。
【００４２】
図7は、モバイルデバイス10が様々なサービスプロバイダでアクティベーション手順を開始することを可能にする、例示的通信システムを例示する。図7は、例示のため、2つのサービスプロバイダ125、130を含み、多数のサービスプロバイダがこの実施形態の通信システムに含まれうる。サービスプロバイダでアクティベーション手順を無線で開始するため、モバイルデバイス10は、サービスプロバイダの通信ネットワーク100、102にアクセスし、アクティベーションサーバ125a、130aと接続するために、十分なソフトウェアおよびプロビジョニングデータを有していなければならない。したがって、OEMは、モバイルデバイスが1つまたは多数のサービスプロバイダのアクティベーションサーバ125a、130aに接触することを可能にするために、十分なソフトウェアおよびプロビジョニングデータをロードする場合がある。OTASP/IOTA/OMADM手順を開始するために特別な番号(例えば、*228)をダイヤルすることによって、アクティベーションサーバ125a、130aにアクセス可能である。
【００４３】
別法として、OEMによって、必要最小限のソフトウェアおよびプロビジョニングデータがモバイルデバイス10上にロードされない場合、モバイルデバイス10は、有線通信ネットワーク104を通じた有線接続を介して、サービスプロバイダのアクティベーションサーバ125a、130aによって維持された、指定された電話番号またはウェブサイトURLを通じて接続して、アクティベーション手順を開始してもよい。サービスプロバイダのアクティベーションサーバ125a、130aに接続された後、モバイルデバイス10は、移動交換局125b、130bを通じて、サービスプロバイダのプロビジョニングサーバ125c、130cに接続される場合がある。アクティベーション処理の一部として、モバイルデバイス10の固有のシリアルナンバー(例えば、移動体装置識別番号(MEID)および国際移動体装置識別番号(IMEI))が、選択されたサービスプロバイダでのアカウントとの関連付けのために、サービスプロバイダのプロビジョニングサーバ125c、130cへ送信される場合がある。それに対して、サービスプロバイダプロビジョニングサーバ125c、130cは、サービスプロバイダネットワーク上で動作するために必要な様々なパラメータおよび設定を送信する場合がある。別法として、サービスプロバイダプロビジョニングシステムは、外部サーバと通信して、パラメータを取得する場合があり、逆もまた同様である。このようなパラメータおよび設定は、不揮発性メモリ25内のインデックス付きデータテーブルに格納される場合がある。加えて、選択されたサービスプロバイダのソフトウェアビルドのための必要なサブルーチンを含むDLL 45が、モバイルデバイス10に送信される場合がある。
【００４４】
モバイルデバイス10が、サービスプロバイダプロビジョニングサーバ125c、130cから、必要なパラメータ、設定、およびDLL 45のすべてを受信した後、選択されたサービスプロバイダのための接続マネージャが、モバイルデバイスのプロセッサ191内で起動される場合がある。コンピュータまたはアドオンカードに埋め込まれたモジュールの場合、接続マネージャは、モジュールが内部に埋め込まれるか、あるいはモジュールが接続されるコンピュータ内で、起動されてもよい。上述のように、起動された接続マネージャは、メモリ内の対応するソフトウェアビルドファイルをポイントする場合がある。ソフトウェアビルドファイルは、完成されたソフトウェアビルドをコンパイルするために必要とされた、必要な命令およびサブルーチンのすべてを含む場合がある。ソフトウェアビルドファイルは、DLL 45内で見つかった必要なサブルーチン、および、不揮発性メモリ25に格納されるインデックス付きデータテーブル内で見つかった、選択されたサービスプロバイダに関連付けられたパラメータを呼び戻して、選択されたサービスプロバイダの通信ネットワーク上で通信を実施するために、適切なソフトウェアビルドの動きを修正する場合がある。
【００４５】
図8は、サービスプロバイダアカウントを変更するために、異なるソフトウェアビルドによりモバイルデバイス10を再プログラムするための、実施形態のステップの処理フロー図である。ユーザがモバイルデバイス10上で通信を開始することに決めるとき、ユーザは、選択されたサービスプロバイダアカウントに対応する接続マネージャ(例えば、61、62、63)を起動することによって、その通信をサポートするためのサービスプロバイダアカウントを選択する場合がある。モバイルデバイス10が無線電話である場合、サービスプロバイダアカウントは典型的には常に実行中である。よって、メニューがユーザインタフェースディスプレイ上で提示され、ユーザに新しいサービスプロバイダを選択するように促してもよい。メニュー表示に応答して、ステップ101で、プロセッサ191は、ユーザから、新しいサービスプロバイダアカウントへ切り替えるための要求を受信する場合がある。例えば、新しいサービスプロバイダアカウントへ切り替えるための要求は、ユーザ操作によって新しい接続マネージャが起動されるか、あるいは、異なるサービスプロバイダがユーザによって共通接続マネージャから選択されるとき、受信されうる。判断131で、プロセッサ191は任意選択で、ユーザがサービスプロバイダ(SP)アカウントを切り替える意図があることを確認するように、ユーザに要求する表示を提示する場合がある。ユーザの意図を確認することによって、モバイルデバイス10上に現在実装されているソフトウェアビルドに対する、望まれない、あるいは意図的でない変更が回避されうる。
【００４６】
ユーザがこの問い合わせに対して否定の応答をする(すなわち、判断131=ノーである)場合、ステップ135で、プロセッサ191は、起動された接続マネージャ(61、62、63)を閉じるか、あるいは、その接続マネージャを共通接続マネージャ60から選択解除する。接続マネージャが閉じられるか、あるいは選択解除された後、ステップ155で、プロセッサ191は、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。
【００４７】
ユーザがサービスプロバイダアカウントを切り替える意図を確認する(すなわち、判断131=イエスである)場合、判断140で、プロセッサ191は、選択されたサービスプロバイダでのアカウントが以前にアクティベートされているかどうかを判定する。一実施形態では、選択されたサービスプロバイダにおいてアカウントが以前にアクティベートされている場合、フラグがメモリ内に設定されてもよい。このフラグは、サービスプロバイダソフトウェアパラメータのインデックス付きデータテーブルに個別に記録されうる。フラグに加えて、他のインジケータが、選択されたサービスプロバイダでのアカウントが以前にアクティベートされているかどうかを示すために使用されうる。例えば、代替実施形態では、プロセッサ191は、サービスプロバイダソフトウェアパラメータのインデックス付きデータテーブルに格納されたモバイル識別番号(MIN)のフォーマットをチェックしてもよい。MINは、サービスプロバイダが個々のモバイルデバイスを識別するために使用する、各モバイルデバイスに固有の10桁の番号である。典型的には、アカウントがサービスプロバイダでアクティベートされた後、MINフォーマットが、その元の製造業者のフォーマットである000-000-WXYZから改変されるようになる。元の製造業者のフォーマットが存在する場合、モバイルデバイス10上でアクティベートされた以前のアカウントはない。
【００４８】
選択されたサービスプロバイダでのアカウントが以前にアクティベートされていない(すなわち、判断140=ノーである)場合、ステップ145で、プロセッサ191は、アクティベートされていない選択されたサービスプロバイダのためのソフトウェアビルドをロードする。ソフトウェアビルドがロードされた後、モバイルデバイス10は、選択されたが以前にアクティベートされていないサービスプロバイダネットワーク上で、アクティベーションを試行する場合がある。アクティベーションが成功した(すなわち、判断146=イエスである)場合、ステップ150で、選択されたサービスプロバイダでのアカウントがアクティベートされていることを示すフラグが設定されうる。選択されたサービスプロバイダでのアカウントがアクティベートされていることを示すフラグの設定後、コールが続行する場合があり、ステップ155で、プロセッサ191は、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。ステップ145のアクティベーションが成功しなかった(すなわち、判断146=ノーである)場合、プロセッサ191は、選択されたが以前にアクティベートされていないサービスプロバイダのためのアカウントのアクティベートを成功させようとして、ステップ145(図9に例示された処理フロー図も参照)を繰り返す場合がある。代替実施形態では、ステップ147で、プロセッサ191は、失敗したアクティベーションの試行をユーザに通知し、ユーザがアクティベーションの試行を繰り返すことを望むかどうか、問い合わせてもよい。ユーザがアクティベーションの試行を継続することに決める(すなわち、判断147=イエスである)場合、プロセッサは、選択されたが以前にアクティベートされていないサービスプロバイダのためのアカウントのアクティベートを成功させようとして、ステップ145(図9に例示された処理フロー図も参照)を繰り返す。しかし、ユーザがアクティベーションの試行をキャンセルすることに決める(すなわち、判断147=ノーである)場合、ステップ155で、プロセッサ191は、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。
【００４９】
プロセッサ191が、サービスプロバイダソフトウェアパラメータのインデックス付きデータテーブルに格納されたモバイル識別番号(MIN)のフォーマットをチェックして、アカウントが以前にアクティベートされているかどうかを判定する場合がある(すなわち、判断140)代替実施形態では、MINのフォーマットは、ステップ145のソフトウェアビルドのロード中に、元の製造業者フォーマットから既に改変されているようになる。したがって、ステップ150は必要でなくなる。
【００５０】
プロセッサ191が、選択されたサービスプロバイダでのアカウントが以前にアクティベートされていると判定する(すなわち、判断140=イエスである)場合、ステップ160で、プロセッサ191は、選択されたサービスプロバイダのソフトウェアビルドをロードする場合がある。ソフトウェアビルドがロードされた後、ステップ165で、プロセッサ191は、不揮発性メモリから、サービスプロバイダアカウントのインデックス付きデータテーブルに以前に格納された様々なパラメータおよび設定を検索する。場合によっては、選択されたサービスプロバイダに対して、アカウントがモバイルデバイス10上で以前にアクティベートされたが、アクティベートされたサービスプロバイダアカウントが無効になっているか、あるいは放棄されている場合がある、ということがありうる。このことは、例えば、サービスのための試しのサブスクリプションが提供されるか、あるいは、ユーザが一時的に、選択されたサービスプロバイダを、コールをサポートするためにもはや利用しないことに決めるとき、起こり得る。したがって、選択されたサービスプロバイダに対して、アカウントがまだアクティブ/有効であることを確認することが必要である場合がある。
【００５１】
一実施形態では、判断170で、プロセッサ191は、選択されたサービスプロバイダにおける前のアカウントが以前にアクティブであったこと、および、この以前にアクティベートされたアカウントに切り替えることをユーザが望むことを、ユーザに確認するように要求してもよい。選択されたサービスプロバイダにおける前のアカウントが以前にアクティブであったこと、および、この以前にアクティベートされたアカウントに切り替えることをユーザが望むことを、ユーザが確認する(すなわち、判断170=イエスである)場合、プロセッサ191は、選択されたサービスプロバイダアカウントを実装して、そのデータコールをサポートし、ステップ155で、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する。
【００５２】
場合によっては、ユーザは、選択されたサービスプロバイダでのアカウントを以前にアクティベートしているが、意図的に、あるいは意図的でなく、以前にアクティベートされたサービスプロバイダアカウントを放棄している場合がある。よって、意図的な放棄の場合、ユーザは、以前にアクティベートされたサービスプロバイダアカウントがもはやアクティブではないと示してもよい(すなわち、判断170=ノー)。別法として、意図的でない放棄の場合、ユーザは単に、選択されたサービスプロバイダアカウントにおけるアカウントがアクティブであるかどうかを知らない場合がある。したがって、ユーザが、以前にアクティベートされたアカウントへ切り替えたい希望を確認しない(すなわち、判断170=ノーである)場合、プロセッサ191は、以前にアクティベートされていないサービスプロバイダのためのソフトウェアビルドをロードする処理を完了する。多数のサービスプロバイダは、モバイルデバイス10が単一のサービスプロバイダで使用されることを期待するので、いくつかのサービスプロバイダソフトウェアビルドは、モバイルデバイス10がその元の工場出荷時の設定およびパラメータ値に設定されることを期待する。したがって、ステップ175で、プロセッサ191は、モバイルデバイス10をその元の工場出荷時の設定およびパラメータ値にリセットする場合がある。モバイルデバイス10が元の工場出荷時の設定およびパラメータ値にリセットされた後、ステップ176で、プロセッサ191は、判断140で使用された、選択されたサービスプロバイダでの以前のアクティベーションを示すフラグをリセットし、アカウントアクティブ状況が判定されない(すなわち、選択されたサービスプロバイダでのアカウントがアクティベートされている(判断140=イエスである)が、ユーザがアクティベーションを確認できていない(判断170=ノーである))とき、選択されたサービスプロバイダのためのアクティベーション状況がクリアされるようにする。選択されたサービスプロバイダでのアカウントが以前にアクティベートされていることを示すフラグをリセットすることにより、次にサービスプロバイダが選択されるとき、ユーザが、選択されたサービスプロバイダでのアカウントをアクティベートすることが必要となる。これは、次にプロセッサが判断140に達する
とき、リセットフラグが「ノー」の出力を生じるからである。エンドユーザは必要に応じて、アクティベーション/再アクティベーションのために、選択されたサービスプロバイダの顧客サービスに連絡を取らなければならない場合があることは、当業者には理解されよう。
【００５３】
プロセッサ191が、サービスプロバイダソフトウェアパラメータのインデックス付きデータテーブルに格納されたモバイル識別番号(MIN)のフォーマットをチェックする代替実施形態では、ステップ176は不要であってもよく、したがって、実施形態はそのようなフラグを利用しない。加えて、ステップ175がモバイルデバイスをその元の工場設定およびデフォルトに予めリセットするので、インデックス付きデータテーブルに格納された、選択されたサービスプロバイダのためのMINエントリは、その元の製造業者のフォーマットである000-000-WXYZに戻るようにリセットするようになる。そのため、代替実施形態では、次にサービスプロバイダが選択されるとき、ユーザが、選択されたサービスプロバイダでのアカウントをアクティベートすることが必要となる。
【００５４】
ソフトウェアビルドがロードされ、工場出荷時のパラメータがリセットされ(ステップ175)、いかなる必要なフラグのリセット、データの削除またはMINのリセット(ステップ176)の後にも、プロセッサ191は、選択されたサービスプロバイダアカウントを実装して、そのデータコールをサポートし、ステップ155で、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する。
【００５５】
選択されたサービスプロバイダのためのアカウントが現在アクティブであり、かつ、コールをサポートすることができるかどうかを確認するための代替実施形態が、図11および12に関して、以下でより詳細に説明される。
【００５６】
図9は、以前にアクティベートされていないサービスプロバイダアカウントのためのソフトウェアビルドをロードする(図8のステップ145)ために実装されうる、ステップ例を例示する処理フロー図である。特定のサービスプロバイダが選択された後(図8のステップ101)、ステップ201で、プロセッサ191は、選択されたサービスプロバイダのための必要なAPIおよびDLLを実装する。モバイルデバイス10が様々なサービスプロバイダでアクティベーション手順を行い、アカウントをセットアップするとき、各サービスプロバイダに関連付けられたソフトウェアビルドが、後の検索のためにメモリに格納されうる。ソフトウェアビルドは、迅速かつ効率的な検索のために適切なソフトウェアビルドファイルをプロセッサが迅速に探し出せるように、ディレクトリ内にセットアップされうる。例えば、新しいビルドの各々が、サービスプロバイダ名および/またはアカウント名が互いに異なるファイル名で、モバイルデバイスメモリ192に格納されうる。格納されたソフトウェアビルドは、以前にアクティベートされていないサービスプロバイダアカウントのためのものであるので、それらのソフトウェアビルドと共に格納されたパラメータおよび設定のすべては、デフォルトパラメータおよび設定である。これらのデフォルトパラメータおよび設定は、サービスプロバイダの要件に従ったものであるべきである。デフォルトパラメータおよび設定は、アクティベーション処理中に更新されうる。加えて、プロセッサが、選択されたサービスプロバイダのための必要なAPIおよびDLLを実装するとき(ステップ201)、プロセッサ191はまた、各サービスプロバイダに特有の追加の手順を行い、デバイスへのソフトウェアビルドおよびパラメータのロードが成功することを保証する場合もある。
【００５７】
新しいソフトウェアビルドが探し出され、検索された後、ステップ202で、ダウンロードサービスがリセットされる。一実施形態では、ダウンロードサービスリセット処理は、Windows(登録商標)サービス再起動であってもよい。ダウンロードサービスは、APIコールによって停止かつ再起動されうる。ダウンロードサービスは、構成ファイルを読み取る場合がある。構成ファイルは、特定のサービスプロバイダのためのソフトウェアビルドへのパス、および、モバイルデバイス10によってそのサービスプロバイダのネットワーク上で動作するために必要とされる他のファイルを含む場合がある。ダウンロードサービスは、再起動時にこの構成ファイルを読み取る場合がある。したがって、構成ファイル内の新しい変更が実施されうるように、ダウンロードサービスがリセット/再起動される必要のある場合がある(ステップ202)。
【００５８】
次にステップ204で、必要なファイルが拡張ファイルサービス(EFS)に書き込まれるか、あるいはそこから削除される場合がある。必要なファイルは、モバイルデバイス10の初期製造中にマルチインタフェースモジュール30に格納されるか、ソフトウェアビルドパッケージに組み込まれるか、接続マネージャトラッカーアプリケーションに組み込まれるか、あるいは、共通接続マネージャインストレーションパッケージに組み込まれる場合がある。新しいサービスプロバイダアカウントの各々のためのソフトウェアビルドがロードされるとき、以前に選択されたサービスプロバイダアカウントのEFSファイルは削除されるか、あるいは、新たに選択されたサービスプロバイダアカウントのもので置換される。必要なファイルがEFSに書き込まれるか、あるいはそこから削除された後、ステップ205で、モバイルデバイス10は、新しい変更が実施されるようにリセットされる場合がある。モバイルデバイス10のリセットにより、ステップ206で、選択されたサービスプロバイダのためのアクティベーション処理が開始され、ソフトウェアビルドの実装を完了するために適切なパラメータおよび設定が取得されうるようになる。場合によっては、アクティベーション処理を開始するために、選択されたサービスプロバイダのための技術者またはオペレータへのサービスコールが必要となる場合があることは、当業者には理解されよう。アクティベーション処理が完了された後、モバイルデバイス10は、新たに選択されたサービスプロバイダのネットワーク上での通信をサポートすることができる。
【００５９】
図10は、以前にアクティベートされたサービスプロバイダアカウントのためのソフトウェアビルドをロードする(図8のステップ160)ために実装されうる、ステップ例を例示する処理フロー図である。以前にアクティベートされたサービスプロバイダアカウントのための適切なソフトウェアビルドをロードするための処理は、以前にアクティベートされていないサービスプロバイダアカウントのための適切なソフトウェアビルドをロードするための処理に類似している。特定のサービスプロバイダが選択された後(図8のステップ101)、ステップ201で、プロセッサ191は、選択されたサービスプロバイダのための必要なAPIおよびDLLを実装する。プロセッサ191はまた、各サービスプロバイダに特有の追加の手順を行い、デバイスへのソフトウェアビルドおよびパラメータのロードが成功することを保証する場合もある。新しいソフトウェアビルドが探し出され、検索された後、ステップ202で、ダウンロードサービスがリセットされる。一実施形態では、ダウンロードサービスリセット処理は、Windows(登録商標)サービス再起動であってもよい。ダウンロードサービスは、APIコールによって停止かつ再起動されうる。ダウンロードサービスは、構成ファイルを読み取る場合がある。構成ファイルは、特定のサービスプロバイダのためのソフトウェアビルドへのパス、および、モバイルデバイス10によってそのサービスプロバイダのネットワーク上で動作するために必要とされる他のファイルを含む場合がある。ダウンロードサービスは、再起動時にこの構成ファイルを読み取る場合がある。したがって、構成ファイル内の新しい変更が実施されうるように、ダウンロードサービスがリセット/再起動される必要のある場合がある(ステップ202)。ダウンロードサービスがリセットされた後(ステップ202)、プロセッサ191は、ポイントされたソフトウェアビルドのためのすべての必要なファイルをEFSに書き込むか、あるいはそこから削除する。必要なファイルがEFSに書き込まれるか、あるいはそこから削除された後、ステップ205で、モバイルデバイス10は、新しい変更が実施されるようにリセットされる。モバイルデバイス10のリセットにより、モバイルデバイス10は、新たに選択されたサービスプロバイダのネットワーク上での通信をサポ
ートすることができる。図9に示され、上述された処理フローとは対照的に、モバイルデバイス10は、選択されたサービスプロバイダでのアカウントを以前にアクティベートしているので、選択されたサービスプロバイダのためのアクティベーション処理の開始(ステップ206)の必要はない。
【００６０】
多くの場合、ユーザは尋ねられると、選択されたサービスプロバイダアカウントの前のアクティベーションを間違って確認する場合がある(すなわち、判断170=イエス)。言い換えれば、多数のユーザは、自らのモバイルデバイス10上で以前にアクティベートされた可能性のある各サービスプロバイダアカウントの状況を正確に知らない場合がある。例えば、ユーザは、特定のサービスプロバイダで試しのサブスクリプションを、それと知りながら、あるいはそれと知らずにアクティベートしている場合がある。いずれにせよ、ユーザは、試しのサブスクリプションが期限切れになっていることを知らない場合があるが、選択されたサービスプロバイダのネットワーク上のコールをサポートするために、アクティブ/有効なサービスプロバイダアカウントがないにもかかわらず、選択されたサービスプロバイダでの前のアクティベーションを示すように、モバイルデバイス10内のパラメータが改変されるようになる。そのため、モバイルデバイス10が、図8に示された処理フローを行うとき、モバイルデバイス10は、以前にアクティベートされたサービスプロバイダのためのソフトウェアビルドのロードを試行するようになるが、選択されたサービスプロバイダのネットワークによってコールがサポートされることはなく、その理由は、コールをサポートするためにアクティブ/有効なアカウントがないためである。これは、選択されたサービスプロバイダネットワークを通じてコールを開始あるいは受信する際に、不快なユーザ体験およびユーザによる不満につながる場合がある。
【００６１】
選択されたサービスプロバイダでのアカウントが以前にアクティベートされているかどうかを示すために、メモリに設定かつ格納された任意選択のフラグの使用は実装されうるが、そのようなフラグは、サービスプロバイダでのアカウントがまだアクティブ/有効であるかどうかを示すには信頼できない場合がある。これは特に、以前にアクティベートされたアカウントが明示的に放棄あるいは無効になっていない場合である。したがって、他の代替実施形態は、選択されたサービスプロバイダでのアカウントがアクティベートされており、かつ、まだアクティブ/有効であるかどうかを、確認する必要のある場合がある。
【００６２】
図11は、選択されたサービスプロバイダでアクティブなアカウントを自動的に確認かつ/または作成するために実装されうるステップの処理フロー図である。図11の処理フローに示されたステップは、図8の判断170の判断を導出するために行われる場合がある。この処理フローは、ステップ260で、「接続失敗」カウンタを、そのカウンタをゼロに設定することにより初期化することによって、開始する。ステップ261で、モバイルデバイス10は次いでデータコールの実施を試行し、判断262で、そのデータコールが成功したか、失敗したかを判定する場合があり、ただし、「失敗」は認証失敗である。最も一般的な失敗の形は、ウィンドウズ（登録商標）ダイヤルアップネットワーク接続(DUNC)エラー691である場合がある。コールが失敗しなかった(すなわち、判断262=ノーである)場合、ステップ263で、サービスプロバイダアカウントが有効であると見なされ、それに応じて、アクティブ/有効なアカウントを使用して、選択されたサービスプロバイダネットワークによってコールがサポートされうる。よって、プロセッサはステップ155へ移り、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。
【００６３】
しかし、データコールが失敗したと見なされる(すなわち、判断262=イエスである)場合、判断265で、プロセッサ191は、モバイルデバイス10が現在、選択されたサービスプロバイダのホームシステムの範囲内にあるかどうかを判定する場合がある。モバイルデバイス10が現在、選択されたサービスプロバイダのホームシステムの範囲内でない(すなわち、判断265=ノーである)場合、プロセッサ191は、モバイルデバイス10がローミング状態にあると推定する場合があり、このローミング状態をユーザに示す場合がある。すべてではないにせよ、多数のサービスプロバイダはローミングデータコールをサポートしていないので、モバイルデバイス10のローミング状態は、データコールの成功を妨げる場合がある。それは、コールの試行が失敗する理由を説明している。ユーザは、選択されたサービスプロバイダのホームシステムの範囲内にモバイルデバイス10が移動されるまで待機するか、あるいは、コールをサポートするために異なるサービスプロバイダを選択しなければならない場合がある。ローミング状態がユーザに示された後、プロセッサ191はステップ155へ移り、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。
【００６４】
選択されたサービスプロバイダにおけるアクティブ/有効なアカウントを仮定すると、モバイルデバイス10が選択されたサービスプロバイダのホームシステムの範囲内にあるとすれば、試行されたコールは成功するはずである。したがって、モバイルデバイス10が選択されたサービスプロバイダのホームシステムの範囲内にあると、プロセッサが判定する(すなわち、判断265=イエスである)が、データコールは失敗した(すなわち、判断262=イエスである)場合、ステップ267で、プロセッサ191はFTCカウンタを増分し、判断268で、FTCカウンタがある所定の値「X」に等しいかどうかを判定する場合がある。Xの値は任意であり、データコールの実施の試行の数が不適当な数を上回らないように選択されうる。FTCカウンタがXに等しくない(すなわち、判断268=ノーである)場合、ステップ261で、プロセッサ191は、別のデータコールの実施を試行する場合がある。
【００６５】
しかし、FTCカウンタがXに等しい(すなわち、判断268=イエスである)場合、試行の数が「上限」値に等しいことを意味し、ロードされたソフトウェアビルドに対応するサービスプロバイダアカウントがもはやアクティブでない可能性がある。したがって、新しいサービスプロバイダアカウントがアクティベートされるべきである。したがって、FTCカウンタがXに等しい(すなわち、判断268=イエスである)とき、図8のステップ175のように、工場出荷時のパラメータがリセットされうる。続いて、選択されたサービスプロバイダのためのソフトウェアビルドをロードかつアクティベートするために、図8に示された処理フロー(すなわち、ステップ176および155)が実装されうる。
【００６６】
図12は、選択されたサービスプロバイダでアクティブ/有効なアカウントを確認するための、代替実施形態の方法の処理フロー図である。図12に例示された方法は、図11に示された方法に類似しており、図11を参照して上述したものと同じ方法で、ステップ260〜268を行う。しかし、図12では、FTCカウンタが任意の値「X」に等しい(すなわち、判断268=イエスである)とき、ステップ280で、プロセッサ191は、メモリ25またはファイルシステム26に格納されたクレデンシャル(credentials)(MIN、MDN、MIPプロファイル、パスワードなど)を、「ブートストラップ」クレデンシャルに変更する。ブートストラップクレデンシャルは、既知のサービスプロバイダ毎の既知の実用クレデンシャルの値(working credential values)である。既知のサービスプロバイダ毎のブートストラップクレデンシャルは、OEMによって、あるいは、モバイルデバイス初期化中に、モバイルデバイスのEFSにロードされうる。選択されたサービスプロバイダのためのブートストラップクレデンシャルは、EFSから検索され、不揮発性メモリに書き込まれる。
【００６７】
加えて、モバイルデバイスの不揮発性メモリ内に現存するクレデンシャルの値/設定(実際のパスワード)は、EFS内に作成された一時ファイルに格納される。不揮発性メモリに格納されたクレデンシャルの値を、選択されたサービスプロバイダのためのブートストラップ値に変更することによって、モバイルデバイスが少なくともアカウントサーバ180(図13および14を参照して、以下でより詳細に論ずる)へのデータコールを完了可能となる、不揮発性メモリに格納された既知の実用クレデンシャルの値を、モバイルデバイスが有することが保証されうる。アカウントサーバ180が接触された後、モバイルデバイス10をサポートするすべてのアクティブなアカウントに関する情報が判定されうる。
【００６８】
不揮発性メモリに格納されたクレデンシャルの値を変更することで、少なくともアカウントサーバ180へのコールが可能となるが、モバイルデバイス内の設定を修復するためにルーチンが必要となる。図12に示された実施形態の処理フローでは、モバイルデバイスのクレデンシャルを変更するための処理の一部として、プロセッサ191は、すべての既存のクレデンシャルのコピーを作成する場合がある。プロセッサ191がすべての既存のクレデンシャルのコピーを作成した後、ステップ281で、プロセッサ191は、モバイルデバイス10に、アカウントサーバ180(図13および14を参照)に接続するように指示する場合がある。アカウントサーバ180は、各サービスプロバイダのオペレータホームロケーション登録/認証、認可および課金(HLR/AAA)サーバ(図示せず)と接続している場合がある。選択されたサービスプロバイダのオペレータHLR/AAAサーバに接続することによって、判断282で、アカウントサーバ180は、選択されたサービスプロバイダにおけるアカウントが、問題になっているモバイルデバイス10に対してアクティブ/有効であるかどうかを判定する場合がある。選択されたサービスプロバイダでのアカウントがアクティブである(すなわち、判断282=イエスである)場合、判断283で、プロセッサ191は、コピーされ、EFS内の一時ファイルに格納されている、以前から存在するクレデンシャルを、選択されたサービスプロバイダのHLR/AAA内に選択されたサービスプロバイダアカウントのために格納されたクレデンシャルの値と共にチェックして、一致を判定する。一時ファイルに格納されたクレデンシャルと、選択されたサービスプロバイダのHLR/AAA内に選択されたサービスプロバイダアカウントのために格納されたものの間のいかなる差異も、データコールの試行の失敗の原因となりうる。EFS内の一時ファイルに格納されたクレデンシャルが、選択されたサービスプロバイダのHLR/AAAサーバに格納されたものと一致する(すなわち、判断283=イエスである)場合、データコールの試行の失敗に対して、別のある一時的な外部干渉または原因が存在する可能性がある。したがって、選択されたサービスプロバイダアカウントは、ある時間の経過またはモバイルデバイスの移動後に、データコールをサポー
トすることができる可能性がある。そのため、プロセッサはステップ155へ移り、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。しかし、EFS内の一時ファイルに格納されたクレデンシャルと、選択されたサービスプロバイダのHLR/AAAサーバに格納されたものの間に、不一致が存在する(すなわち、判断283=ノーである)場合、ステップ284で、選択されたサービスプロバイダのHLR/AAAサーバに格納されたクレデンシャルが、モバイルデバイス10の不揮発性メモリに書き込まれる場合がある。モバイルデバイスの不揮発性メモリに格納されたクレデンシャルが、選択されたサービスプロバイダのHLR/AAAサーバに格納されたこれらのクレデンシャルの値に更新された後、プロセッサ191はステップ155へ戻り、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。
【００６９】
他の代替実施形態(図示せず)では、他の修復ルーチンが実装される場合があり、これらは、モバイルデバイスクレデンシャルを修正するために、OTAPAまたはネットワークにより開始されるIOTA(Network Initiated IOTA)など、既知のアクティベーション方法のための、ネットワークにより開始されるセッションを含む。このような代替実施形態の修復ルーチンはまた、既知のエンドユーザにより開始されるアクティベーション方法を行い、モバイルデバイスの問題を修復するように、エンドユーザに求めることを含む場合もある。OTASP、OTAPA、IOTAおよびOMADMにおける様々なプロビジョンは、特定のパラメータがモバイルデバイスに書かれることを可能にし、これにより、モバイルデバイスを修復し、続いて、適切な使用を可能にする場合があることは、当業者には理解されよう。
【００７０】
しかし、選択されたサービスプロバイダでのアカウントが以前にアクティベートされていない(すなわち、判断282=ノーである)場合、ロードされたソフトウェアビルドに対応するサービスプロバイダアカウントがもはやアクティブでない可能性がある。したがって、新しいサービスプロバイダアカウントがアクティベートされるべきである。したがって、選択されたサービスプロバイダアカウントがアクティブでない(すなわち、判断282=ノーである)場合、図8のステップ175のように、工場出荷時のパラメータがリセットされうる。続いて、選択されたサービスプロバイダのためのソフトウェアビルドをロードかつアクティベートするために、図8に示された処理フロー(すなわち、ステップ176および155)が実装されうる。
【００７１】
サービスプロバイダアカウントのインデックス付きデータテーブルは、プロセッサ191による検索のために、通信モジュール20内に含まれた不揮発性メモリ25に格納されうる。代替実施形態では、不揮発性メモリの内容は、リモートに位置する場合がある。図13は、サービスプロバイダアカウントのインデックス付きデータテーブルがリモートのデータサーバに格納されうる、一実施形態のシステムを例示する。図7を参照して上述したように、モバイルデバイス10は、通信ネットワーク100、102を介して、複数のサービスプロバイダ125、130と通信して、必要なパラメータ、設定およびプロビジョニングデータを受信する場合がある。別法として、OEMによって、必要最小限のソフトウェアおよびプロビジョニングデータがモバイルデバイス10上にロードされない場合、モバイルデバイス10は、有線通信ネットワーク104を通じた有線接続を介して、サービスプロバイダのホームアドレスサーバ125、130によって維持された、指定された電話番号またはウェブサイトURLを通じて接続して、アクティベーション手順を開始してもよい。
【００７２】
図13を参照すると、モバイルデバイス10は、受信されたデータを、アカウントサーバ180またはアカウントサーバ180内の不揮発性メモリユニットと通信しているアカウントデータベース185内に格納するために、通信ネットワーク100、102またはインターネット104を介して、アカウントサーバ180に送信する場合がある。サービスプロバイダ(125、130)から受信された様々なパラメータ、設定およびプロビジョニングデータの各々は、アカウントサーバ180と通信している個々のモバイルデバイス10毎に格納されうる。例えば、アカウントデータベース185、または、アカウントサーバ180内の不揮発性メモリユニットは、アカウントサーバ180によってサービスされるすべてのモバイルデバイスのためのインデックス付きアカウントデータテーブルであってもよい、アカウントデータテーブルを格納してもよい。個々の各モバイルデバイスは、インデックス付きアカウントデータテーブル内で、モバイルデバイスの電話番号、固有のシリアルナンバー(移動体装置識別番号(MEID)もしくは国際移動体装置識別番号(IMEI)など)、または、生成されたアカウント名もしくはユーザによりカスタマイズされたアカウント名など、ある他の指定によって識別されうる。インデックス付きアカウントデータテーブル内のモバイルデバイスエントリ毎に、図3〜5に例示されたものなど、インデックス付きデータテーブルレコードが格納されうる。このように、アカウントサーバ180は、アカウントサーバ180によってサービスされた特定のモバイルデバイス10が以前に生成している、様々なパラメータ、設定およびプロビジョニングデータのレコードを維持する。パラメータ、設定およびプロビジョニングデータをリモートのデータベースに格納することによって、モバイルデバイス10のローカルメモリ要件は劇的に低減されうる。加えて、パラメータ、設定およびプロビジョニングデータのリモートの格納は、モバイルデバイス10が盗難されたり、あるいは不適切に獲得されたりする場合に、ユーザのパラメータ、設定およびプロビジョニングデータへの自由なアクセスを防ぐために、ある程度のセキュリティを提供する場合がある。これはまた、ユーザが自発的にモバイルデバイス10を取り替えるときにも有用である。新しいモバイルデバイス10へ
のサービスプロバイダアカウントデータの転送は、リモートで格納されたクレデンシャルにより実施する方がより容易である。
【００７３】
図14は、サービスプロバイダアカウントのインデックス付きデータテーブルがリモートサーバの位置に格納される、別の代替実施形態のシステムを例示する。各ソフトウェア無線ベースのチップセットモジュールが製造されるとき、製造業者によって固有のシリアルナンバー(MEIDまたはIMEI)が割り当てられる。典型的には、製造業者は、これらのシリアルナンバーのリストを製造業者サーバ190内または付属のデータベース(個別に図示せず)内で維持する。アカウントサーバ180は、製造されたソフトウェアベースの無線チップセットのシリアルナンバーのリストを取得するために、製造業者サーバ190と通信している場合がある。リスト内のこれらのシリアルナンバーは、インデックス付きアカウントデータテーブル内で個々のモバイルデバイスを識別するために使用されうる。アカウントサーバ180と製造業者サーバ190の間の通信リンクは、ハードワイヤード直接リンクを介して、インターネット104を介して、あるいは無線通信リンク100、102を介してもよい。モバイルデバイス10がサービスプロバイダ125、130での初期化手順を開始するとき、サービスプロバイダが個々の各モバイルデバイス10のネットワーク使用を監視可能であるように、モバイルデバイスの固有のシリアルナンバーがサービスプロバイダ125、130へ送信されうる。それに対して、選択されたサービスプロバイダ125、130は、必要なパラメータ、設定およびプロビジョニングデータをモバイルデバイス10へ送信する場合がある。別法として、あるいは加えて、モバイルデバイス10に送信されたパラメータ、設定およびプロビジョニングデータは、インデックス付きデータテーブルにリモートで格納するためにアカウントサーバ180へ送信されうる。アカウントサーバ180は、パラメータ、設定およびプロビジョニングデータを、アカウントサーバ180によってサービスされたモバイルデバイス10毎に、インデックス付きアカウントデータテーブルレコードに格納する場合がある。パラメータ、設定およびプロビジョニングデータをリモートのデータベースに格納することによって、モバイルデバイス10のローカルメモリ要件は劇的に低減されうる。加えて、パラメータ、設定およびプロビジョニングデータのリモートの格納は、モバイルデバイス10が盗難された
り、あるいは不適切に獲得されたりする場合に、ユーザのパラメータ、設定およびプロビジョニングデータへの自由なアクセスを防ぐために、ある程度のセキュリティを提供する場合がある。さらに、パラメータ、設定およびプロビジョニングデータがアカウントサーバ180へ直接送信され、次いで、必要に応じて、続いてモバイルデバイス10にダウンロードされる実施形態では、処理能力およびバッテリ寿命が節約して使われうる。加えて、モバイルデバイス10によってアクティベートされたサービスプロバイダアカウントの各々のための様々なパラメータ、設定およびプロビジョニングデータの各々を中央の位置に格納することによって、プロセッサは、どのサービスプロバイダが特定のモバイルデバイス10上でアクティベートされているかを、迅速かつ効率的に追跡する場合がある。
【００７４】
前述のように、どの接続マネージャが現在動作中であるかを追跡すること、および、現在動作中の接続マネージャが閉じられるまで、その後の接続マネージャが起動されないことを保証することは、モバイルデバイス10にとって重要である場合がある。これは、現在の接続マネージャが現在動作中である間にその後の接続マネージャを起動することが、致命的な衝突およびモバイルデバイスプロセッサ191のシャットダウンを引き起こす場合があるからである。したがって、接続マネージャトラッカー50は、2つの接続マネージャが同じプロセッサ191上で同時に起動されないことを保証するために、必要な処理を提供するために含まれうる。よって、接続マネージャが起動されるたびに、接続マネージャがアクティブであることを示すフラグがメモリに設定されうる。加えて、現在起動されている接続マネージャの名前がメモリまたはバッファに格納されうる。プロセッサ191が、接続マネージャを起動するための要求を受信するたびに、プロセッサ191は最初に接続マネージャアクティブフラグをチェックして、それが設定されているかどうかを判定する場合がある。それが設定されていない場合、現在アクティブである接続マネージャはない。したがって、新しい接続マネージャは何事もなく起動可能である。しかし、接続マネージャアクティブフラグが設定される場合、プロセッサ191は、どの接続マネージャが現在アクティブであるかを確かめる場合がある。現在アクティブな接続マネージャが、ユーザによって起動のために選択された接続マネージャとは異なる場合、プロセッサ191は、選択された接続マネージャの起動に先立って、現在アクティブな接続マネージャをアクティベート解除(deactivate)しなければならない。このような接続マネージャトラッカー処理は、独立した接続マネージャがサービスプロバイダアカウント毎に存在する実施形態において、あるいは、共通接続マネージャ60が、ユーザが複数の可能な選択から特定のサービスプロバイダアカウントを選択できるようにする実施形態において、使用されうる。
【００７５】
前述のように、いかなる時でも、プロセッサ191はユーザから、特定のサービスプロバイダアカウントをサポートする接続マネージャを起動するための要求を受信する場合がある。例えば、モバイルデバイス10が携帯電話であり、通信が典型的には常にアクティブである場合、接続マネージャを起動するための要求は、通信を現在サポートしているサービスプロバイダアカウントをユーザが変更しようとすることに応じたものとなる。モバイルデバイス10が、無線モデムを有するノート型コンピュータであるときなど、他の場合では、通信機能は常にアクティベートされるとは限らない。よって、接続マネージャの起動は、ユーザがノート型コンピュータの無線通信機能を有効にすることを望むことを示す場合がある。ソフトウェア無線ベースのチップセットモジュール20に対する競合する命令を防ぐため、現在使用可能な接続マネージャは、新しい接続マネージャがアクティベートされる前にアクティベート解除されるべきである。2つの異なる接続マネージャが同時にアクティベートされる場合、可能性のある競合するソフトウェアビルド(例えば、GSMソフトウェアビルドおよびCDMAソフトウェアビルド)は、ソフトウェア無線ベースのチップセットモジュール20内でエラーを引き起こす場合がある。したがって、どの接続マネージャが現在アクティベートされているかを追跡かつ制御するための処理が望ましい場合がある。
【００７６】
図15は、例示的接続マネージャトラッカーによって実装されうるステップ例を例示する処理フロー図である。接続マネージャトラッカー処理の一部として、モバイルデバイス10は、様々な接続マネージャのアクティビティに関連するいくつかのパラメータのための値を含むパラメータテーブルを、メモリ内あるいはバッファ内に格納する場合がある。これらのパラメータには、使用中の現在の接続マネージャ(使用中のCM)のための値、モバイルデバイス上に実装された最後のソフトウェアビルド(最後に使用されたビルド)、および、現在選択されている接続マネージャのために実装されたソフトウェアビルド(現在のCMのためのビルド)が含まれうる。モバイルデバイス10は、OEMによって、これらのパラメータの各々のためのある値により初期化されうる。例えば、モバイルデバイス10は、「使用中のCM」、「最後に使用されたビルド」および「現在のCMのためのビルド」パラメータを「なし」に設定するように初期化されうる。いかなる時でも、ステップ220で、プロセッサ191は、特定のサービスプロバイダアカウントをサポートする接続マネージャを起動するための要求を受信する場合がある。接続マネージャを起動するための要求を受信すると、判断225で、プロセッサ191は、接続マネージャが現在実行中であるかどうかを判定する場合がある。プロセッサ191は、「使用中のCM」の値のために、メモリに格納されたパラメータテーブルに格納された値をチェックすることによって、この判定を行う場合がある。「使用中のCM」の値が「なし」以外のいずれかである場合、プロセッサ191は、接続マネージャが現在使用中である(すなわち、判断225=イエスである)と判定するようになる。接続マネージャが使用中である場合、ステップ230で、プロセッサ191は、接続マネージャが既に実行中であることを示すエラーメッセージを、ユーザに対して表示する場合がある。このエラーメッセージは、ユーザが接続マネージャを切り替えることを望む場合、現在選択されている接続マネージャを起動する前に、現在アクティブな接続マネージャが閉じられるべきであることを、任意選択で示してもよい。エラーメッセージがユーザに対して表示された後、ステップ155で、プロセッサ191は、次の接続マネージャ起動要求、または、異なるサービスプロバ
イダの選択を待機する場合がある。
【００７７】
しかし、プロセッサ191が、現在実行中である接続マネージャがないと判定する場合、ステップ235で、プロセッサ191は、「使用中のCM」パラメータのための値を、選択された接続マネージャ要求のサービスプロバイダの名前として入力する。ステップ240で、プロセッサ191はまた、パラメータテーブル内の「現在のCMのためのビルド」パラメータの値を、選択された接続マネージャ要求のサービスプロバイダの名前に変更する。判断245で、プロセッサ191は、起動のために現在選択されている接続マネージャが、最後に起動された接続マネージャと同じであるか、異なるかを判定する場合がある。プロセッサ191は、パラメータテーブルに格納された「現在のCMのためのビルド」および「最後に使用されたビルド」のパラメータの値を比較する場合がある。モバイルデバイス10が通信機能を有効にするために初めて使用中である場合、パラメータ「最後に使用されたビルド」の値は、初期化された値「なし」になる。結果として、「現在のCMのためのビルド」パラメータ値の比較は、「最後に使用されたビルド」パラメータの値に一致しないものとなる(すなわち、判断245=ノー)。加えて、ユーザが、今の接続マネージャの直前に起動された接続マネージャとは異なる接続マネージャを起動することを選択している場合、「現在のCMのためのビルド」および「最後に使用されたビルド」パラメータの比較は、一致の結果にはならない(すなわち、判断245=ノー)。「現在のCMのためのビルド」および「最後に使用されたビルド」パラメータの比較が一致の結果にならない(すなわち、判断245=ノーである)場合、ステップ250で、プロセッサは、図6を参照して上述した、モバイルデバイス10を再プログラムするための処理フローを実装する場合がある。モバイルデバイス10が、選択されたサービスプロバイダアカウントのためのソフトウェアビルドにより再プログラムされた後、ステップ255で、プロセッサ191は、最後に使用されたビルドが、現在選択されているサービスプロバイダのソフトウェアビルドであることを示すように、「最後に使用されたビルド」パラメータの値を設定する場合がある。「最後に使用されたビルド」パラメータの新しい値がメモリに格納された後、ステップ155で、プロセッサ191は、次の接続マネージャ起動要
求、または、異なるサービスプロバイダの選択を待機する場合がある。
【００７８】
「現在のCMのためのビルド」および「最後に使用されたビルド」パラメータの比較が一致の結果となる(すなわち、判断245=イエスである)場合、プロセッサ191は、新しいソフトウェアビルドによりモバイルデバイス10を再プログラムする必要はなく、以前にロードされたソフトウェアビルドは、通信をサポートし続けることが可能である。そのため、ステップ255で、プロセッサ191は、最後に使用されたビルドが、現在選択されているサービスプロバイダのソフトウェアビルドであることを示すように、「最後に使用されたビルド」パラメータの値を設定する場合がある。「最後に使用されたビルド」パラメータの新しい値がメモリに格納された後、ステップ155で、プロセッサ191は、次の接続マネージャ起動要求、または、異なるサービスプロバイダの選択を待機する場合がある。任意選択の実施形態では、プロセッサ191は単にステップ255をスキップし、次の接続マネージャ起動要求、ステップまたは異なるサービスプロバイダの選択を待機してもよい。
【００７９】
ユーザがモバイルデバイス10の通信機能を無効にすることに決めるとき、ユーザは、現在実行中のいかなる接続マネージャをも閉じる場合がある。そのような場合、プロセッサ191は、現在実行中の接続マネージャを閉じ、「使用中のCM」パラメータの値を「なし」に設定するようになる。
【００８０】
上述の実施形態はまた、図16に例示されたものなど、様々なサーバシステムのいずれにおいても実装されうる。このようなサーバ309は典型的には、揮発性メモリ362、および、ディスクドライブ363など、大容量不揮発性メモリに結合された、プロセッサ361を含む。プロセッサ361は、インターネットなど、ネットワーク365に結合された高速モデム364など、1つまたは複数のネットワークインタフェース回路に結合される。サーバ309はまた、プロセッサ361に結合されたコンパクトディスク(CD)ドライブ366など、ポータブルメディアリーダを含んでもよい。
【００８１】
本明細書で開示された実施形態に関連して記載された様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子的ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されうることは、当業者には理解されよう。このハードウェアおよびソフトウェアの入替え可能性を明確に例示するため、様々な例示的コンポーネント、ブロック、モジュール、回路およびステップは、一般にそれらの機能性に関して上述された。このような機能性がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定のアプリケーション、および、システム全体に課せられた設計上の制約によって決まる。当業者は、記載された機能性を特定のアプリケーション毎に様々な方法で実装可能であるが、このような実装の決定は、本発明の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【００８２】
本明細書に開示された実施形態に関連して記載された方法またはアルゴリズムのステップは、直接的にハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこれら2つの組合せにおいて実施されうる。ソフトウェアモジュールは、プロセッサ可読メモリ内に存在してもよく、プロセッサ可読メモリは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている他の任意の形態の記憶媒体のうち、任意のものであってもよい。例示的記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。別法として、記憶媒体は、プロセッサと一体化されてもよい。プロセッサおよび記憶媒体は、ASIC内に存在してもよい。ASICは、ユーザ端末またはモバイルデバイス内に存在してもよい。別法として、プロセッサおよび記憶媒体は、個別のコンポーネントとして、ユーザ端末またはモバイルデバイス内に存在してもよい。加えて、いくつかの態様では、方法またはアルゴリズムのステップおよび/または動作は、1つまたは任意の組合せまたはセットのコードおよび/または命令として、マシン可読媒体および/またはコンピュータ可読媒体上に存在してもよく、この媒体はコンピュータプログラム製品に組み込まれうる。
【００８３】
様々な実施形態の前述の説明は、当業者による本発明の実施または使用を可能とするために提供される。これらの実施形態への様々な変更は、当業者には容易に明らかとなり、本明細書で定義された一般的な原理は、本発明の精神または範囲から逸脱することなく、他の実施形態に適用されうる。よって、本発明は、本明細書で示された実施形態に限定されるように意図されず、その代わりに、特許請求の範囲に、本明細書で開示された原理および新規の特徴に一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００８４】
10  モバイルデバイス
11  ユーザインタフェースディスプレイ
20  ソフトウェア定義通信モジュール
20  ソフトウェア無線ベースのチップセット通信モジュール(通信モジュール)
25  不揮発性メモリ
26  ファイルシステム
30  マルチインタフェースソフトウェアモジュール
30  マルチインタフェースモジュール
40  共通アプリケーションプログラミングインタフェース(C-API)
45  ダイナミックリンクライブラリ(DLL)
50  接続マネージャトラッカー
60  共通接続マネージャ
60  共通接続マネージャプログラム
61、62、63  接続マネージャ
100、102  通信ネットワーク
100、102  無線通信リンク
104  有線通信ネットワーク
104  インターネット
125、130  サービスプロバイダ
125、130  サービスプロバイダのホームアドレスサーバ
125a、130a  アクティベーションサーバ
125b、130b  移動交換局
125c、130c  プロビジョニングサーバ
180  アカウントサーバ
185  アカウントデータベース
190  製造業者サーバ
191  プロセッサ
191a、191b  デュアル(もしくはそれ以上の)プロセッサ
192  内部メモリ
【図１】
0005613762.tif 000002
【図２】
0005613762.tif 000003
【図３】
0005613762.tif 000004
【図４】
0005613762.tif 000005
【図５】
0005613762.tif 000006
【図６】
0005613762.tif 000007
【図８】
0005613762.tif 000008
【図９】
0005613762.tif 000009
【図１０】
0005613762.tif 000010
【図１１】
0005613762.tif 000011
【図１２】
0005613762.tif 000012
【図１５】
0005613762.tif 000013
【図１６】
0005613762.tif 000014
【図７】
0005613762.tif 000015
【図１３】
0005613762.tif 000016
【図１４】
0005613762.tif 000017