(57)【要約】  方法およびシステムは、ソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイスが、様々なサービスプロバイダネットワークのいずれの上でも動作するように通信デバイスをシームレスに再プログラムすることを可能にする。ソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイスを再プログラムすることによって、通信デバイスは、UMTS通信ネットワークとCDMA通信ネットワークの両方の上での通信をサポートすることができる。ユーザが、通信をサポートするサービスプロバイダアカウント間を迅速に効率的に切り替えることを可能にする環境が提供される。
2013526818.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア定義無線ベースチップセットモジュールを含んでいる通信デバイスをプログラミングする方法であって、
プリロードされたメニューから前記通信デバイスのための通信をサポートするキャリアを選択するステップと、
前記選択されたキャリアのためのソフトウェアビルドイメージを前記通信デバイスの揮発性メモリにロードするステップと、
前記選択されたキャリアのためのノーテーションファイルを前記揮発性メモリにロードするステップと、
前記ノーテーションファイル中に含まれているインデックスに従って前記揮発性メモリから不揮発性メモリ項目値を取り出すステップと、
前記取り出された不揮発性メモリ項目値を不揮発性メモリにロードするステップと、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するステップと
を含む方法。
【請求項２】
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するステップと、
前記受信した不揮発性メモリ項目値のコピーを生成するステップと、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中のメモリに前記受信した揮発性メモリ項目値の前記コピーを記憶するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記不揮発性メモリに記憶された不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するステップと、
前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、前記揮発性メモリ空間をリクレームするステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記不揮発性メモリに記憶された不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するステップと、
不揮発性メモリに記憶された前記不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、前記不揮発性メモリに記憶された前記不揮発性メモリ項目値を揮発性メモリに記憶された前記不揮発性メモリ項目値で更新するステップと、
揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するように前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が更新された後に揮発性メモリ空間をリクレームするステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
ソフトウェア定義無線ベースチップセットモジュールを含んでいる通信デバイスがアクセスし得るキャリア通信ネットワークを制限する方法であって、
前記通信デバイスにおいてキャリアを選択するステップと、
前記選択されたキャリアのためのソフトウェアビルドイメージを前記通信デバイスの揮発性メモリにロードするステップと、
前記選択されたキャリアのためのノーテーションファイルを前記揮発性メモリにロードするステップと、
メモリから技術ロックIDを取り出すステップと、
前記選択されたキャリアのための前記ノーテーションファイルから互換技術ロックIDを取り出すステップと、
前記互換技術ロックIDを、メモリから取り出された前記技術ロックIDと比較するステップと、
メモリから取り出された前記技術ロックIDが、前記選択されたキャリアのための前記ノーテーションファイルからの前記互換技術ロックIDのうちの1つに一致する場合のみ、前記選択されたキャリアのための前記ノーテーションファイルの残りとソフトウェアビルドイメージとを抽出し、実行するステップと
を含む方法。
【請求項６】
前記ノーテーションファイル中に含まれているインデックスに従って揮発性メモリから不揮発性メモリ項目値を取り出すステップと、
前記取り出された不揮発性メモリ項目値を不揮発性メモリにロードするステップと、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するステップと
をさらに含む、請求項5に記載の方法。
【請求項７】
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するステップと、
前記受信した不揮発性メモリ項目値のコピーを生成するステップと、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中のメモリに前記受信した揮発性メモリ項目値の前記コピーを記憶するステップと
をさらに含む、請求項6に記載の方法。
【請求項８】
前記技術ロックIDがベンダー識別子/製品識別子を含む、請求項5に記載の方法。
【請求項９】
ソフトウェア定義無線ベースチップセットモジュールと、
プリロードされたメニューから前記通信デバイスのための通信をサポートするキャリアを選択するための手段と、
前記選択されたキャリアのためのソフトウェアビルドイメージを揮発性メモリにロードするための手段と、
前記選択されたキャリアのためのノーテーションファイルを揮発性メモリにロードするための手段と、
前記ノーテーションファイル中に含まれているインデックスに従って揮発性メモリから不揮発性メモリ項目値を取り出すための手段と、
前記取り出された不揮発性メモリ項目値を不揮発性メモリにロードするための手段と、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するための手段と
を含む、通信デバイス。
【請求項１０】
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するための手段と、
前記受信した不揮発性メモリ項目値のコピーを生成するための手段と、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中のメモリに前記受信した不揮発性メモリ項目値の前記コピーを記憶するための手段と
をさらに含む、請求項9に記載の通信デバイス。
【請求項１１】
前記不揮発性メモリに記憶された不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するための手段と、
前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、揮発性メモリ空間をリクレームするための手段と
をさらに含む、請求項9に記載の通信デバイス。
【請求項１２】
前記不揮発性メモリに記憶された不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するための手段と、
不揮発性メモリに記憶された前記不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、前記不揮発性メモリに記憶された前記不揮発性メモリ項目値を揮発性メモリに記憶された前記不揮発性メモリ項目値で更新するための手段と、
揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するように前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が更新された後に揮発性メモリ空間をリクレームするための手段と
をさらに含む、請求項9に記載の通信デバイス。
【請求項１３】
ソフトウェア定義無線ベースチップセットモジュールと、
前記通信デバイスにおいてキャリアを選択するための手段と、
前記選択されたキャリアのためのソフトウェアビルドイメージを前記通信デバイスの揮発性メモリにロードするための手段と、
前記選択されたキャリアのためのノーテーションファイルを前記揮発性メモリにロードするための手段と、
メモリから技術ロックIDを取り出すための手段と、
前記選択されたキャリアのための前記ノーテーションファイルから互換技術ロックIDを取り出すための手段と、
前記互換技術ロックIDを、メモリから取り出された前記技術ロックIDと比較するための手段と、
メモリから取り出された前記技術ロックIDが、前記選択されたキャリアのための前記ノーテーションファイルからの前記互換技術ロックIDのうちの1つに一致する場合のみ、前記選択されたキャリアのための前記ノーテーションファイルの残りとソフトウェアビルドイメージとを抽出し、実行するための手段と
を含む通信デバイス。
【請求項１４】
前記ノーテーションファイル中に含まれているインデックスに従って揮発性メモリから不揮発性メモリ項目値を取り出すための手段と、
前記取り出された不揮発性メモリ項目値を不揮発性メモリにロードするための手段と、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するための手段と
をさらに含む、請求項13に記載の通信デバイス。
【請求項１５】
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するための手段と、
前記受信した不揮発性メモリ項目値のコピーを生成するための手段と、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中のメモリに前記受信した不揮発性メモリ項目値の前記コピーを記憶するための手段と
をさらに含む、請求項14に記載の通信デバイス。
【請求項１６】
前記技術ロックIDがベンダー識別子/製品識別子を含む、請求項13に記載の通信デバイス。
【請求項１７】
ソフトウェア定義無線ベースチップセットモジュール、
不揮発性メモリ、
揮発性メモリ、および
前記不揮発性メモリと、前記揮発性メモリと、前記ソフトウェア定義無線ベースチップセットモジュールとに結合されたプロセッサを含み、前記プロセッサが、
アカウントをサポートするキャリアを選択するステップと、
前記選択されたキャリアのためのソフトウェアビルドイメージを前記揮発性メモリにロードするステップと、
前記選択されたキャリアのためのノーテーションファイルを前記揮発性メモリにロードするステップと、
前記ノーテーションファイル中に含まれているインデックスに従って前記揮発性メモリから不揮発性メモリ項目値を取り出すステップと、
前記取り出された不揮発性メモリ項目値を前記不揮発性メモリにロードするステップと、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するステップと
を含むステップを実行するようにソフトウェア命令で構成された、通信デバイス。
【請求項１８】
前記プロセッサが、
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するステップと、
前記受信した不揮発性メモリ項目値のコピーを生成するステップと、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中の前記不揮発性メモリに前記受信した不揮発性メモリ項目値の前記コピーを記憶するステップと
をさらに含むステップを実行するようにソフトウェア命令で構成された、請求項17に記載の通信デバイス。
【請求項１９】
前記プロセッサが、
前記不揮発性メモリに記憶された不揮発性メモリ項目値が前記揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するステップと、
前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が前記揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、前記揮発性メモリ中の空間をリクレームするステップと
をさらに含むステップを実行するようにソフトウェア命令で構成された、請求項17に記載の通信デバイス。
【請求項２０】
前記プロセッサが、
前記不揮発性メモリに記憶された不揮発性メモリ項目値が前記揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するステップと、
前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が前記揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、前記不揮発性メモリに記憶された前記不揮発性メモリ項目値を前記揮発性メモリに記憶された前記不揮発性メモリ項目値で更新するステップと、
前記揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するように前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が更新された後に前記揮発性メモリ中の空間をリクレームするステップと
をさらに含むステップを実行するようにソフトウェア命令で構成された、請求項17に記載の通信デバイス。
【請求項２１】
ソフトウェア定義無線ベースチップセットモジュール、
不揮発性メモリ、
揮発性メモリ、および
前記不揮発性メモリと、前記揮発性メモリと、前記ソフトウェア定義無線ベースチップセットモジュールとに結合されたプロセッサを含み、前記プロセッサが、
キャリアを選択するステップと、
前記選択されたキャリアのためのソフトウェアビルドイメージを前記揮発性メモリにロードするステップと、
前記選択されたキャリアのためのノーテーションファイルを前記揮発性メモリにロードするステップと、
前記不揮発性メモリから技術ロックIDを取り出すステップと、
前記選択されたキャリアのための前記ノーテーションファイルから互換技術ロックIDを取り出すステップと、
前記互換技術ロックIDを、メモリから取り出された前記技術ロックIDと比較するステップと、
メモリから取り出された技術ロックIDが、前記選択されたキャリアのための前記ノーテーションファイルからの前記互換技術ロックIDのうちの1つに一致する場合のみ、前記選択されたキャリアのための前記ノーテーションファイルの残りとソフトウェアビルドイメージとを抽出し、実行するステップと
を含むステップを実行するようにソフトウェア命令で構成された、通信デバイス。
【請求項２２】
前記プロセッサが、
前記ノーテーションファイル中に含まれているインデックスに従って前記揮発性メモリから不揮発性メモリ項目値を取り出すステップと、
前記取り出された不揮発性メモリ項目値を前記不揮発性メモリにロードするステップと、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するステップと
をさらに含むステップを実行するようにソフトウェア命令で構成された、請求項21に記載の通信デバイス。
【請求項２３】
前記プロセッサが、
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するステップと、
前記受信した不揮発性メモリ項目値のコピーを生成するステップと、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中の不揮発性メモリに前記受信した不揮発性メモリ項目値の前記コピーを記憶するステップと
をさらに含むステップを実行するようにソフトウェア命令で構成された、請求項22に記載の通信デバイス。
【請求項２４】
前記技術ロックIDがベンダー識別子/製品識別子を含む、請求項21に記載の通信デバイス。
【請求項２５】
アカウントをサポートするキャリアを選択するステップと、
前記選択されたキャリアのためのソフトウェアビルドイメージを揮発性メモリにロードするステップと、
前記選択されたキャリアのためのノーテーションファイルを揮発性メモリにロードするステップと、
前記ノーテーションファイル中に含まれているインデックスに従って揮発性メモリから不揮発性メモリ項目値を取り出すステップと、
前記取り出された不揮発性メモリ項目値を不揮発性メモリにロードするステップと、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するステップと
を含むステップを通信デバイスプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記録するプロセッサ可読記録媒体。
【請求項２６】
前記記録されたプロセッサ実行可能ソフトウェア命令が、
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するステップと、
前記受信した不揮発性メモリ項目値のコピーを生成するステップと、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中のメモリに前記受信した不揮発性メモリ項目値の前記コピーを記憶するステップと
をさらに含むステップを通信デバイスプロセッサに実行させるように構成された、請求項25に記載のプロセッサ可読記録媒体。
【請求項２７】
前記記録されたプロセッサ実行可能ソフトウェア命令が、
前記不揮発性メモリに記憶された不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するステップと、
前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、前記揮発性メモリをリクレームするステップと
をさらに含むステップを通信デバイスプロセッサに実行させるように構成された、請求項25に記載のプロセッサ可読記録媒体。
【請求項２８】
前記記録されたプロセッサ実行可能ソフトウェア命令が、
前記不揮発性メモリに記憶された不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するかどうかを判断するステップと、
不揮発性メモリに記憶された前記不揮発性メモリ項目値が揮発性メモリに記憶された前記不揮発性メモリ項目値に一致する場合、前記不揮発性メモリに記憶された前記不揮発性メモリ項目値を揮発性メモリに記憶された前記不揮発性メモリ項目値で更新するステップと、
揮発性メモリに記憶された前記不揮発性メモリ項目値に一致するように前記不揮発性メモリに記憶された前記不揮発性メモリ項目値が更新された後に前記揮発性メモリ空間をリクレームするステップと
をさらに含むステップを通信デバイスプロセッサに実行させるように構成された、請求項25に記載のプロセッサ可読記録媒体。
【請求項２９】
キャリアを選択するステップと、
前記選択されたキャリアのためのソフトウェアビルドイメージを揮発性メモリにロードするステップと、
前記選択されたキャリアのためのノーテーションファイルを前記不揮発性メモリにロードするステップと、
メモリから技術ロックIDを取り出すステップと、
前記選択されたキャリアのための前記ノーテーションファイルから互換技術ロックIDを取り出すステップと、
前記互換技術ロックIDを、メモリから取り出された前記技術ロックIDと比較するステップと、
メモリから取り出された技術ロックIDが、前記選択されたキャリアのための前記ノーテーションファイルからの前記互換技術ロックIDのうちの1つに一致する場合のみ、前記選択されたキャリアのための前記ノーテーションファイルの残りとソフトウェアビルドイメージとを抽出し、実行するステップと
を含むステップを通信デバイスプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記録するプロセッサ可読記録媒体。
【請求項３０】
前記記録されたプロセッサ実行可能ソフトウェア命令が、
前記ノーテーションファイル中に含まれているインデックスに従って揮発性メモリから不揮発性メモリ項目値を取り出すステップと、
前記取り出された不揮発性メモリ項目値を不揮発性メモリにロードするステップと、
前記取り出された不揮発性メモリ項目値を使用して前記ソフトウェアビルドイメージを実行するステップと
をさらに含むステップを通信デバイスプロセッサに実行させるように構成された、請求項29に記載のプロセッサ可読記録媒体。
【請求項３１】
前記記録されたプロセッサ実行可能ソフトウェア命令が、
プロビジョニングプロセス中に前記キャリアから、生成された不揮発性メモリ項目値を受信するステップと、
前記受信した不揮発性メモリ項目値のコピーを生成するステップと、
前記ノーテーションファイル中に含まれているインデックスに従ってスロットロケーション中のメモリに前記受信した不揮発性メモリ項目値の前記コピーを記憶するステップと
をさらに含むステップを通信デバイスプロセッサに実行させるように構成された、請求項30に記載のプロセッサ可読記録媒体。
【請求項３２】
前記技術ロックIDがベンダー識別子/製品識別子を含む、請求項29に記載のプロセッサ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、各々の内容全体が参照により本明細書に組み込まれる、2009年5月17日に出願された「Method and Apparatus for Programming a Communication device with Multiple Service Accounts」と題する米国特許出願番号第12/467,281号、2009年5月17日に出願された「Method and Apparatus for Tracking the Programming of a Communication device with Multiple Service Accounts」と題する米国特許出願番号第12/467,282号、および2009年4月28日に出願された「Method for Generically Handling Carrier Specific Provisioning for Computer Cellular Wireless Cards」と題する米国特許出願番号第12/431,050号に関する。
【０００２】
本発明は、一般に、セルラー通信デバイスをプロビジョニングし、プログラムすることに関し、より詳細には、複数の技術および/または複数のキャリアにわたって単一のセルラー通信デバイス/ユニット上で複数のサービスプロバイダアカウントをプロビジョニングし、プログラムするための方法および装置に関する。
【背景技術】
【０００３】
従来、セルラー通信デバイスは、特定の技術を使用して特定のキャリアのネットワーク上で動作するように設計され、プログラムされる。しばしば、キャリアは、固有のサービス、機能、および通信デバイスを提供することによって、自身の特定のキャリアネットワークサービスにより多くの潜在顧客を誘い込もうと試みる。しかしながら、ユーザは、特定のキャリアのネットワークで使用されるように設計され、プログラムされた特定のデバイスのみを使用せざるを得ないので、これはしばしばユーザにフラストレーションを起こさせる。
【０００４】
いかなるキャリアネットワークでも動作することが可能な通信デバイスのフレキシビリティをユーザに与えるために、通信デバイスは、QualcommのGobi(登録商標)チップセットなどのソフトウェア定義無線ベースチップセットモジュールを装備し得る。これらのソフトウェア定義無線ベースチップセットモジュールにより、通信デバイスは、プログラマブルデジタル信号プロセッサ(DSP)内でデータ信号を生成、符号化/復号および変調/復調することが可能になる。プログラマブルDSPにより、いかなる通信技術(すなわち、GSM/UMTS対CDMA)の波形、周波数およびデータパケット要件にも適合するように通信信号をソフトウェアによって定義することが可能になる。異なる特性をもつ信号を生成するようにDSPを再プログラムすることによって、特定のキャリアによって利用されている通信技術にかかわらず、通信デバイスは、いかなるキャリアの固有の通信ネットワークにも適合する通信信号を生成するようにされ得る。したがって、そのようなソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイスは、通信サポートのためにいかなるキャリアにもサブスクライブし得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そのようなソフトウェア定義無線ベースのチップセットモジュールを装備した通信デバイスをほぼあらゆるキャリアの通信ネットワーク上で動作するようにプログラムすることが可能であるが、キャリアの通信ネットワーク上で適切に動作するためには、通信デバイスはまた、選択されたキャリアのネットワーク用に適切にプロビジョニングされなければならない。各キャリアは、キャリアごとに異なるだけではなく、同じキャリアによってサポートされるアカウント間でさえ異なり得る多数の固有パラメータ値の実装を必要とする。この実装は、通信デバイスのプロビジョニングと呼ばれる。多種多様な通信デバイス動作、異なるキャリアによって提供される利用可能な機能セット、および多数の可能なプロビジョニングパラメータを仮定すれば、そのような通信デバイスの効率的なプログラミングおよびプロビジョニングの達成は困難である。
【課題を解決するための手段】
【０００６】
適切に装備された通信デバイスがいくつかの異なるキャリア通信ネットワークのいずれの上でも動作することができるように複数のキャリアのための不揮発性プロビジョニングデータパラメータをカテゴリー分類し、記憶するための様々な実施方法およびシステムが提供される。そのような通信デバイスは、その通信デバイスが(UMTS、CDMA、およびGPSを含む)すべての技術タイプのセルラーネットワークと通信することを可能にするソフトウェアベース無線チップセットモジュールを含み得る。
【０００７】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な実施形態を示し、上記の概略的な説明および下記の発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【０００８】
【図１】様々な実施形態をサポートすることが可能な通信デバイスの典型的な構成要素を示すブロック図である。
【図２】ソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイス内で動作するソフトウェアモジュールのハードウェア/ソフトウェアアーキテクチャ図である。
【図３】ノーテーションファイル内に含まれている情報の様々なカテゴリーのブロック図である。
【図４】様々なキャリアプロビジョニングイメージにおいて使用される不揮発性(NV:nonvolatile)項目の様々なカテゴリーを識別するチャートである。
【図５】静的および動的多重化環境における様々なNV項目値を示す図である。
【図６】一実施形態による、NV項目値を読み出し、それをフラッシュメモリに書き込むために実装され得る例示的なステップを示すプロセスフロー図である。
【図７】一実施形態による、技術ロックを与えるために実装され得る例示的なステップを示すプロセスフロー図である。
【図８Ａ】一実施形態による、通信デバイス上での通信をサポートする、選択されたキャリアのための適切なソフトウェアモジュールおよびNV項目をインストールするために実装され得る例示的なステップを示すプロセスフロー図である。
【図８Ｂ】一実施形態による、通信デバイス上での通信をサポートする、選択されたキャリアのための適切なソフトウェアモジュールおよびNV項目をインストールするために実装され得る例示的なステップを示すプロセスフロー図である。
【発明を実施するための形態】
【０００９】
本発明の態様が示された添付の図面を参照しながら、本システム、デバイス、装置、方法、およびコンピュータ可読媒体について以下でより詳細に説明する。しかしながら、本システム、デバイス、装置、方法、および機械可読媒体は、多くの異なる形態で実施され得、本明細書に記載の態様に限定されると解釈されるべきではなく、本態様は、本開示が周到で完全になるように、また本発明の範囲を当業者に伝えるように提供されるものである。全体にわたって同様の符号は同様の要素を指す。
【００１０】
本明細書では、「例示的」という用語は、本明細書では「例、事例、または例示として役立つこと」を意味するために使用される。本明細書に「例示的」と記載されたいかなる実施形態も、必ずしも他の実装形態よりも好ましいまたは有利であると解釈されるべきではない。
【００１１】
本明細書で使用する「通信デバイス」という用語は、たとえば、セルラー電話、個人情報端末(PDA)、パームトップコンピュータ、ラップトップおよびノートブックコンピュータ、ワイヤレス電子メール受信機(たとえば、Blackberry(登録商標)およびTreo(登録商標)デバイス)、マルチメディアインターネット対応セルラー電話(たとえば、Blackberry Storm(登録商標))、ならびにワイヤレス通信モジュールとプロセッサとメモリとを含む同様のパーソナル電子デバイスを含む、ワイヤレスボイスおよびデータ通信のための通信モジュールを実装する、存在し得るまたは将来開発されることになるいかなる形態のプログラマブルコンピュータをも包含するものとする。好ましい一実施形態では、通信デバイスは、ソフトウェア定義無線ベースチップセットモジュールをもつポータブルコンピュータである。
【００１２】
一般に、セルラー通信ネットワークの個々のオペレータは、しばしばキャリアと呼ばれ、自身のネットワークへの大きい投資を行い、サービスおよび機能セットに基づいて市場において互いに競合する。その結果、キャリアは、自身のネットワークへのアクセスを制限するための経済的な理由を有する。したがって、キャリアはしばしば、誰が自身の通信ネットワークにアクセスすることができるかを制御しようとする。キャリアが自身の通信ネットワークへのアクセスを制御する1つの従来の方法は、どの通信デバイスがキャリアの通信デバイスにアクセスすることができるかを制限することによるものである。
【００１３】
従来のセルラー通信デバイスは、2つの競合する技術の一方を採用する。競合する技術の一方の上で動作するように設計された通信デバイスは、他方の上では動作せず、その逆も同様である。これらのネットワーク技術のうちの1つは、Universal Mobile Telecommunications System(UMTS)である。UMTSは、Global System for Mobile Communications(GSM(登録商標))技術を継承するように設計された第3世代(3G)技術である。UMTSは3GSMと呼ばれることがある。第2のネットワーク技術は符号分割多元接続(CDMA)である。これらの2つの競合する技術の間にはいくつかの差異があり、コアUMTSは時分割多重化方式を実装するが、CDMAは(その名が示す通り)符号ベースの多重化方式を実装する。UMTSネットワークでは、ネットワークの総帯域幅の一部分がチャネルとして通信デバイスに割り振られる。ネットワーク基地局は、次いで、通信デバイスとの間でボイスおよび/またはデータ情報を送り、受信するために、短い時間量の間、割り振られたチャネルの各々を選択的に「リッスンする」。基地局は、ネットワーク上で動作する他の通信デバイスに割り振られた他のチャネルもリッスンしなければならないので、基地局は、短い時間量の間、割り振られたチャネルを選択的にリッスンすることしかできない。有効時に、UMTS方式は、それの限られた帯域幅によって妨害され、単一の通信デバイスに単一のチャネルを専用化する必要がある。
【００１４】
対照的に、CDMAネットワークでは、各チャネルは複数の通信デバイスによって利用され得る。同じ割り振られたチャネル上で動作する異なる通信デバイスから受信した情報を区別するために、各通信デバイスには、ボイスおよび/またはデータ情報を符号化するための異なる符号化オフセットが割り当てられる。復号コードオフセットを選択的に切り替えることによって、基地局は、同じ割り振られたチャネル上で動作する複数の通信デバイスから受信した情報を復号することができる。これは、同じ量の総帯域幅上でより多くの通信デバイスをサービスする能力を大幅に増加させる。
【００１５】
競合する技術の各々の上に実装された多重化および符号化方式に加えて、競合する通信ネットワークを動作させる個々のサービスプロバイダは、自身のそれぞれの通信ネットワークを介して送られている、および受信されている通信信号の他の態様を変更し得る。これにより各キャリアは、自身のネットワークを別のネットワークと区別することが可能になり、場合によっては機能の区別をそれの顧客に提供することが可能になる。これらの態様は、通信信号波形、周波数、振幅などを含み得る。
【００１６】
特定のキャリアのネットワーク上で適切に動作するために、通信デバイスは、サービスプロバイダのネットワークによって必要とされる正しい変調および符号化方式を用いて適切な波形を生成するために必要なハードウェアが装備されなければならない。2つの競合するネットワーク間で使用される波形、変調および符号化方式のタイプの基本的な差のために、UMTS技術ネットワーク上で動作するのに必要なハードウェアを装備した通信デバイスは、CDMA技術ネットワーク上で動作することができず、その逆も同様である。
【００１７】
キャリアが自身の通信ネットワークへのアクセスを制御する第2の従来の方法は、直接キャリアからしか受信され得ない固有のプロビジョニング情報イメージを作成することによるものである。適切なプロビジョニングイメージが通信デバイスの不揮発性メモリにロードされなければ、通信デバイスは、キャリアの通信ネットワークにアクセスし得ない。キャリアに固有であるプロビジョニングイメージを生成することによって、キャリアは、同じ通信技術(すなわち、UMTS対CDMA)で動作する通信デバイスがキャリアのネットワークにアクセスすることを、適切な通信技術と適切なプロビジョニングイメージとを採用する通信デバイスのみに制限し得る。
【００１８】
セルラー通信デバイス上にロードされる必要があるプロビジョニング情報は、通信デバイスがネットワークにアクセスするため必要とされる情報と、通信デバイスによってネットワークに送信されるべき識別子と、通信デバイスが、たとえどこにセルラーネットワークが位置しようともセルラーネットワークに接続することを可能にする情報とを含む。特に、通信デバイスは、特定のキャリアのネットワークに接続するための周波数とアクセスコードとを通知される必要がある。また、キャリアが、通信デバイスをネットワークにアクセスすることを許可されるものとして認識することになるように、通信デバイスは、通信デバイスがキャリアのネットワークに送信することになる識別コードを用いてプログラムされる必要がある。プロビジョニング情報は、1次ネットワークが利用不可能であるときに使用されるべきキャリアとネットワークアクセス周波数とのセットである、好適ローミングリスト(PRL)として知られるデータをも含むことになる。そのようなサブスクリプション関係データに加えて、プロビジョニング情報はまた、特定の変数を特定の値に設定することによって通信デバイス上で機能およびアプリケーションをアクティブにする機能フラグと定義とを含み得る。たとえば、あるキャリアは、3G標準における特定のオプション機能をサポートすることを選択し得、プロビジョニング中に関連するフラグおよびデータ値を設定することによってそれを行う。商業上の理由によりそのオプション機能をサポートしないことを選択する第2のキャリアは、それのプロビジョニングデータ中に、この機能に関連するフラグとデータとの異なるセットを含むことになる。
【００１９】
プロビジョニング情報は、一般に、トランシーバ回路板上のフラッシュメモリなどの不揮発性(NV)メモリに記憶される。これにより、必須プロビジョニング情報がネットワークに接続するための通信デバイスにとって常に利用可能であることが保障される。したがって、プロビジョニング情報は、様々なNV項目を含んでいるといわれている。各NV項目は、データの値またはアレイを含み得る。各NV項目は、関数または機能セットを実行するためにキャリアによって利用され得る現在、数千個の可能なNV項目が存在する。従来、通信デバイス製造業者は、特定のキャリアのための特定のデバイスモデルを開発した。特定のデバイスモデルは、特定のキャリア用に設計され、開発されるので、通信デバイスの製造業者は、通信デバイスとそれの関数およびアプリケーションの各々とが特定のキャリアの通信ネットワーク上で適切に動作するようにフラッシュメモリ中に様々なNV項目とNV項目値とを設定し得る。通信デバイスが複数のキャリア上で通信を開始することを可能にするために、NV項目とNV項目値とは、新しいキャリアが選択されるたびに変更される必要があり得る。本明細書で開示する様々な実施形態は、ソフトウェア定義通信モジュールを含んでいる通信デバイスに記憶されたNV項目とNV項目値との修正および改定を可能にする。
【００２０】
特定のキャリアの通信ネットワーク上での通信を維持するために、いくつかの要件が通信デバイスによって満たされなければならない。これらの要件を満たすために、通信デバイスによって実行されているソフトウェアは、様々なNV項目とNV項目値とを実装する。したがって、異なるプロビジョニング/ノーテーションファイルイメージが、各可能なキャリアネットワーク上で動作するデバイスごとに存在し得る。プロビジョニング/ノーテーションファイルイメージは、プロビジョニングイメージを実行する各通信デバイスがキャリアの通信ネットワークに損傷を与えないこと、あるいはキャリアのネットワーク上に確立された他の通信リンクまたは他の通信デバイスに影響を及ぼさないことを保証するために各キャリアによって認証され得る。各プロビジョニングイメージは、各NV項目に割り当てられた値を変化させ得るだけでなく、それによりNV項目がキャリア固有のプロビジョニングイメージ中に含まれる。キャリア固有のプロビジョニングイメージは、可能なNV項目のすべての値を含んでいる必要はない。実際、NV項目の多くは、必ずしもすべてのキャリアによって提供されるとは限らない様々な機能セットに関係するので、NV項目の多くは、キャリアのプロビジョニングイメージ内に含まれていない。たとえば、NV項目のいくつかは、全地球測位システム(GPS)アプリケーションに関係する。キャリアがそれの機能セット中でGPSアプリケーションを提供していない場合、そのキャリアのためのプロビジョニングイメージは、それらのNV項目へのいかなる参照も含んでいないことがある。キャリアはまた、特定のNV項目に割り当てられた値のフォーマットを変化させることによって、それらのプロビジョニングイメージを別のキャリアのプロビジョニングイメージと区別し得る。
【００２１】
ほとんどのプロビジョニングイメージに共通であるNV項目については、各キャリアのプロビジョニングイメージは、特定の共通NV項目の値とは異なる値またはフォーマットを有する。これらの値は、様々なソフトウェア関数呼出しによるアクセスのために、通信デバイスの不揮発性メモリに記憶される。特定のキャリアのためのソフトウェアビルドが通信デバイス上で関数を実行しようと試みると、ソフトウェアビルドは、特定のNV項目値にアクセスしようと試み得る。ソフトウェアが適切に実行するために、特定のNV項目の値は、正しいNVメモリロケーションに記憶されなければならないだけでなく、正しいフォーマットおよび値をも有していなければならない。そうでない場合、通信デバイス上で実行するソフトウェアは、関数を適切に実行することができなくなる。たとえば、正しいチャネル周波数が、選択されたキャリアの正しい値で適切なNVメモリロケーションに記憶されていない場合、通信デバイス上で実行するソフトウェアが、キャリアの通信ネットワーク上で呼を開始しようと試みると、正しいチャネル周波数がアクセスされず、呼は失敗することになる。
【００２２】
さらに、いくつかのNV項目値は、キャリアに固有であるだけでなく、さらにキャリアとの特定のユーザのサブスクリプションアカウントにも固有である。ユーザがプロビジョニングプロセスを開始すると、いくつかのNV項目値がユーザのサブスクリプションアカウントに割り当てられる。たとえば、電話番号、ユーザ名、パスワードなどは、キャリアのプロビジョニングイメージに固有であるだけでなく、さらに各個のユーザのサブスクリプションアカウントにも固有であり得る。したがって、あるサブスクリプションアカウントのためのプロビジョニングイメージと、異なるサブスクリプションアカウントのためのプロビジョニングイメージの両方が、同じ通信技術(すなわち、UMTS、CDMA)を使用する同じキャリアによってサポートされているにもかかわらず、一方のプロビジョニングイメージは、他方のプロビジョニングイメージとは異なり得る。
【００２３】
いくつかの設定では、加入者識別モジュール(SIM)カードまたは類似するR-UIMカードなどのリムーバブルスマートカードによって、ユーザは、キャリア介入の必要なしに通信デバイスにロードされたプロビジョニングデータを交換することが可能になり得る。様々なキャリアのためのプロビジョニング情報がリムーバブルスマートカードに記憶され得る。各スマートカードが様々なキャリアのためのプロビジョニングデータを記憶し得るので、ユーザは1次サービスのために異なるキャリアネットワークを使用するために通信デバイス中のスマートカードを物理的に交換し得る。しかしながら、スマートカードを物理的に交換する必要があるので、ユーザは、複数のスマートカードを携帯する必要がある。さらに、スマートカードを物理的に交換するのは煩雑である。最後に、スマートカードを使用しても依然として、UMTS技術ネットワーク上で動作するのに必要なハードウェアを装備した通信デバイスはCDMA技術ネットワーク上で動作することはできず、その逆も同様である。
【００２４】
上記で説明したように、従来の通信デバイスは、ハードウェア定義無線チップセットモジュールを装備し、それを用いて設計されている。したがって、従来の通信デバイスは、単一の通信技術(たとえば、GSM/UMTS対CDMA)の上で動作するように設計される。そのような従来の通信デバイスは、キャリアが自身の通信ネットワークへのアクセスを制限するのを支援するが、ユーザが任意のキャリアで自身の通信デバイスを使用することを妨げるので、そのようなデバイス設計はしばしばユーザにフラストレーションを起こさせる。たとえば、CDMAタイプの通信デバイスを所有するユーザは、UMTSキャリアネットワークのみが動作するエリアではその通信デバイスを使用することができないことがあり、その逆も同様である。
【００２５】
さらに、従来の通信デバイスは、単一のキャリアの通信ネットワークで動作するように設計されている。したがって、従来の通信デバイスの不揮発性メモリは、単一のキャリアのためのプロビジョニングイメージしか記憶しないことがある。(同じ通信技術、すなわちUMTS対CDMAを仮定して)ユーザが通信デバイスを別のキャリア用に再プロビジョニングしようと試みると、第1のキャリアのためのプロビジョニングイメージが第2のキャリアのためのプロビジョニングイメージによって上書きされる。ユーザのサブスクリプションアカウントに固有のNV項目値を含む第1のキャリアのためのプロビジョニングイメージが失われる。したがって、ユーザが、第1のキャリアのためのプロビジョニングイメージを用いて通信デバイスを再プロビジョニングしようと試みると、ユーザのサブスクリプションアカウントに固有のNV項目が失われ得る。その結果、ユーザには、新しい電話番号が割り当てられるか、またはユーザは、ユーザ名、パスワードなどを再入力することが必要になり得る。本質的に、ユーザが通信デバイスを再プロビジョニングしようと試みるたびに、ユーザは、完全に新しいサブスクリプションアカウントを与えられる。
【００２６】
これらの難点の一部を克服し、存在するほぼすべてのキャリアで自身の通信デバイスを使用するというフレキシビリティをユーザに与えるために、新規の通信デバイスは、QualcommのGobi(登録商標)などのソフトウェア定義無線ベースチップセットモジュールを装備し得る。そのようなソフトウェア定義無線ベースチップセットモジュールは、プログラマブルデジタル信号プロセッサ(DSP)内でデータ信号を生成、符号化/復号、および変調/復調する。プログラマブルDSPにより、いかなる通信技術(すなわち、GSM/UMTS対CDMA)の波形、周波数およびデータパケット要件にも適合するように通信信号をソフトウェアによって定義することが可能になる。異なる特性をもつ信号を生成するようにDSPを再プログラムすることによって、通信デバイスは、いかなるサービスプロバイダの固有の通信ネットワークにも適合する通信信号を生成するようにされ得る。したがって、ソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイスは、必要とされる通信技術にかかわらず、通信サポートのためにいかなるキャリアにもサブスクライブし得る。
【００２７】
しかしながら、いかなるキャリア上でも適切に動作するためには、適切にプログラムされたソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイスでさえも、選択されたキャリア用に適切にプロビジョニングされなければならない。ソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイスを再プログラムし、再プロビジョニングしようとする以前の試みは、ソフトウェアビルド全体ならびにプロビジョニングイメージの完全な交換を必要とした。この再プログラムと再プロビジョニングとは、時間がかり非効率的であると考えられ得る。さらに、ソフトウェアビルドの小部分に対する更新は、更新されたソフトウェアビルドの完全な再プログラムを必要とすることになる。
【００２８】
本明細書で開示する様々な装置および方法は、そのようなソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイスの効率的なプログラミングおよびプロビジョニングを対象とする。様々な実施形態の装置および方法は、ソフトウェアビルドおよびプロビジョニングイメージを変更/更新するためにノーテーションファイルを利用する。キャリアのプロビジョニング情報中に含まれている可能なNV項目のセットをカテゴリー分類することによって、キャリアのソフトウェアビルドおよびプロビジョニングイメージによって必要とされるNV項目の値は、小さいバイナリフォーマットファイル中に効率的にパッケージングされ得る。ノーテーションファイルに対する更新は、ソフトウェアビルドに異なるNV項目および/またはNV項目値を実装するように指示することによってソフトウェアビルドに対する更新を実現し得る。ノーテーションファイルのサイズは完全なソフトウェアビルドよりもかなり小さいので、ソフトウェアビルドに対する更新は、速い速度および高い効率で行われ、通信デバイスに送信され得る。ノーテーションファイルは、様々なNV項目の値がメモリに前もって記憶されているメモリロケーションおよびスロットにNV項目値自体またはインデックスを含み得る。たいていの場合、ノーテーションファイルは、通信をサポートする各キャリアに固有のものである。しかしながら、いくつかの事例では、ノーテーションファイルは、複数のキャリアに共有されるか、または共通のものであり得る。これは、異なるキャリアが同様のプロビジョニング要件(すなわち、同様の技術、機能、アプリケーションなど)を有する同様のネットワークを動作させる場合であり得る。したがって、汎用ノーテーションファイルが複数のキャリアのために実装され得る。(対応するソフトウェアビルドとともに)汎用ノーテーションファイル中に含まれている情報を抽出し、パースすることによって、通信デバイス10は、複数のキャリアネットワークのいずれかの上で動作するように構成され得る。これにより、ユーザが複数のキャリアのネットワークカバレージのうちの1つが複数のキャリアのネットワークの別の1つほど良好でないエリア中で、シームレスに通信を続けることが可能になり得る。
【００２９】
図1に、様々な実施形態をサポートすることが可能な通信デバイス10の典型的な構成要素を示す。通信デバイス10は、内部メモリ192に結合されたプロセッサ191またはデュアル(またはそれ以上の)プロセッサ191aおよび191bと、ユーザインターフェースディスプレイ11とを含む。通信デバイスはまた、大量のデータを記憶することが可能であるハードドライブなどのストレージユニット193を含み得る。通信デバイス10はまた、複数のサービスプロバイダ通信ネットワークのいずれかの上で動作することが可能なソフトウェア定義通信モジュール20を含み得る。ソフトウェア定義通信モジュール20は、選択されたサービスプロバイダのためのデバイスのソフトウェア動作を変更する際に使用するためのNV項目のインデックス付きテーブルを記憶し得るフラッシュメモリ24とファイルシステム26とを含み得る。フラッシュメモリ24は、ブート情報ブロック25と埋込みフラッシュファイルシステム26とを含み得る。フラッシュファイルシステム26は、現在使用されていないサービスプロバイダアカウントのためのNV項目を維持するために使用されるいくつかのファイルを含み得る。埋込みファイルシステム26の構成要素のうちの1つは、以下でより詳細に説明するNV項目であり得る。通信デバイスは、システムメモリ項目のためのストレージを与える内部メモリ192をさらに含み得る。内部メモリ192はSDRAMタイプメモリであり得る。
【００３０】
通信デバイス10は、プロセッサ191に結合されたソフトウェア定義通信モジュール20に接続された、電磁放射を送り受信するためのアンテナ194を含み得る。さらに、通信デバイス10は、可聴音を生成するためのスピーカー18と、ユーザの音声を受信することなど、音響を感知するためのマイクロフォン19とを含む。マイクロフォン19とスピーカー18の両方は、ボコーダ199を介してプロセッサ191に接続され得、ボコーダ199は、マイクロフォン19から受信したアナログ電気信号をデジタルコードに変換し、プロセッサ191から受信したデジタルコードをアナログ電気信号に変換し、スピーカー18はそのアナログ電気信号を音波に変換することができる。いくつかの実装形態では、ボコーダ199は、プロセッサ191の回路およびプログラミングの一部として含まれ得る。通信デバイスは、一般に、ユーザ入力を受け取るためのキーパッド13およびメニュー選択ボタンまたはロッカースイッチ12をも含む。
【００３１】
プロセッサ191は、以下で説明する様々な実施形態の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る任意のプログラマブルマイクロプロセッサ、マイクロコンピュータあるいは1つまたは複数の多重プロセッサチップであり得る。通信デバイスによっては、1つのプロセッサをワイヤレス通信機能専用とし、1つのプロセッサを他のアプリケーションの実行専用とするなど、多重プロセッサ191が設けられることがある。通信デバイス10によっては、通信デバイスの間でワイヤレス通信機能および/またはアプリケーションを共有するために複数のプロセッサ191a、191bが設けられることがある。一般に、ソフトウェアアプリケーションは、アクセスされ、プロセッサ191にロードされる前に内部メモリ192に記憶され得る。通信デバイスによっては、プロセッサ191は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。通信デバイスによっては、プロセッサ191は、信号発生器回路およびモデム回路に加えて2つのプロセッサを含むQualcommのGobi(登録商標)などのソフトウェア定義通信モジュール20内に含まれる。
【００３２】
図2は、ソフトウェア定義無線ベースチップセットモジュールを装備した通信デバイス上のソフトウェアモジュールのハードウェア/ソフトウェアアーキテクチャ図である。図2に示すように、通信デバイス10は、QualcommのGobi(登録商標)などのソフトウェア定義無線ベースチップセット通信モジュール20(通信モジュール)を含む。ソフトウェアモジュールおよびダイナミックリンクライブラリ(DLL)は、製造業者によって通信デバイス10のハードドライブまたはメモリ記憶ユニット上にロードされ得る。いくつかの事例では、通信デバイス10は、特定のキャリアのための特定のソフトウェアモジュールがプリロードされることがある。他の例では、通信デバイス10は、すべてではないが大部分のキャリアのためのソフトウェアビルドによって利用され得る汎用ソフトウェアモジュールがプリロードされることがある。他の実施形態では、ユーザが新しいキャリアにおける新しいアカウントをアクティブにするたびに、ソフトウェアモジュールおよびDLLは、動的プロビジョニングNV項目とともに通信デバイスのメモリにロードされ得る。
【００３３】
選択されたキャリアネットワークに適合するデータ信号を生成するようにソフトウェア定義無線ベースチップセット内のDSPを再プログラムするために、通信デバイス10は、選択されたキャリアに適切なソフトウェアビルドをロードしなければならない。各キャリアのソフトウェアビルドは、サービスプロバイダの通信ネットワーク上で適切に搬送されるべきデータ信号の生成、符号化および変調を行うのに必要な命令を含み、ならびにサービスプロバイダによって提供される追加機能のすべてを行うのに必要なプログラミングを含み得る。異なるキャリアに適切なソフトウェアビルドを選択的に有効にすることによって、通信デバイスは、1つまたは複数のキャリアによってサポートされる複数のアカウント間で交互に切り替えることが可能であり得る。
【００３４】
ソフトウェア定義無線ベースチップセット通信モジュール20を再プログラムする以前の試みでは、ソフトウェアビルド全体がデバイス10のメモリバッファに書き込まれ、プロビジョニングイメージがフラッシュメモリ24に書き込まれていた。最近の機能強化により、通信デバイスは、はるかに小さいノーテーションファイルを実行することが可能である。ノーテーションファイルは、特定のキャリアのための完全なソフトウェアビルドを生成するように様々なソフトウェアモジュールを構成するようにプロセッサに指示を与える。ノーテーションファイルは、ソフトウェアビルドよりもサイズがかなり小さいので、ノーテーションファイルは更新するのがはるかに容易である。一実施形態では、選択されたキャリアに固有のNV項目、PRLおよび任意の不揮発性設定を符号化する追加のバイナリフォーマットノーテーションファイル(たとえば、UQCNとも呼ばれる、UNDP Qualcomm Compact Notation)が与えられる。追加のノーテーションファイルは、別個のファイルとして、またはキャリア固有のソフトウェアイメージ内にバンドルされた状態でキャリア固有のソフトウェアイメージとともにロードされ得る。ノーテーションファイルは、異なるキャリアのための様々なNV項目値が取り出され得、ならびに受信したNV項目値のコピーが記憶され得るソフトウェアビルドを命令する。
【００３５】
ユーザが異なるキャリアアカウントを有効にすることを選択するたびに、ユーザは、選択されたキャリア(61、62、63)のための個々の接続マネージャを起動するか、または共通接続マネージャ60を通して個々の接続マネージャを起動し得る。各キャリアの接続マネージャはノーテーションファイル(たとえば、Universal Qualcomm Notationファイル(UQCN))を含み得、このノーテーションファイルは、共通アプリケーションプログラミングインターフェース(C-API)40に、選択されたキャリアのための正確なソフトウェアビルドイメージを生成するためにマルチインターフェースモジュール30内の適切なDLLとソフトウェアモジュールとを取り出すように、およびメモリから選択されたNV項目値を取り出し、それらを通信モジュール20のフラッシュメモリ24に配置するように命令する。ソフトウェアビルドの全体は、多数のソフトウェアモジュールとDLLとを含み得るが、ノーテーションファイルは、容易に更新され得る小さい個別ファイルであり得る。ノーテーションファイルへの更新により、キャリアは、C-API40とマルチインターフェースモジュール30とに異なるあらかじめ記憶されたソフトウェアモジュールまたはNV項目値を取り出すように命令することによって自身のソフトウェアビルドを迅速に容易に変更することが可能になり得る。対照的に、従来のソフトウェアビルドは、まったく新しいソフトウェアモジュールとDLLとをロードすることによってのみ更新され得る。一般に、ノーテーションファイルは、10kb程度であり得、ソフトウェアビルドのストレージサイズよりもかなり小さい。したがって、はるかに小さいノーテーションファイルを送信することによって、キャリアは、ソフトウェアビルドとプロビジョニングイメージとに迅速におよび効率的に変更を加えることが可能であり得る。
【００３６】
図3に、通信デバイス10中で正確なソフトウェアビルドとプロビジョニングイメージとを生成するために使用され得るノーテーションファイル内に含まれている様々な情報ブロックの一部を示す。たとえば、ノーテーションファイルは、通信デバイスロックデータ301を含んでいる。通信デバイスロックデータ301は、通信デバイス10を特定のキャリアアカウントに制限するために使用され得、以下でより詳細に説明する。ノーテーションファイルはまた、バージョン番号データ302を含んでおり、それにより、通信デバイス10のプロセッサは、通信デバイス10がノーテーションファイルの直近の更新されたバージョン、したがって直近の更新されたソフトウェアビルドとプロビジョニングイメージとを有することを検証することが可能になる。
【００３７】
ノーテーションファイルはまた、キャリア固有の機能を有効にするデータを含み得る。たとえば、ノーテーションファイルは、特定のキャリアのためのGPS機能303を有効にするNV項目値を含み得る。通信デバイス10のGPS機能の機能性を無効にする代替NV項目値をもつノーテーションファイルの代替バージョンが、通信デバイス10上にロードされ得る。このようにして、キャリアは、識別された通信デバイスに新しいノーテーションファイルを送信することによって、サブスクリプションレベルに従って様々な機能を選択的に有効および無効にすることが可能であり得る。同様に、ノーテーションファイルは、通信デバイス10を製造する工場によって通信デバイスのメモリ中に事前記憶されたNV項目に関係するデータを含み得る。
【００３８】
以下でより詳細に説明するように、通信デバイス10を製造するとき、製造業者は、メモリにいくつかのNV項目値をプリロードし得る。これらのNV項目の各々は、明確に割り当てられたメモリスロットに記憶される。工場NV項目インデックス304は、特定のキャリアのアカウントが有効にされるように選択されたときに特定のキャリアに関係するNV項目を取り出すために、通信モジュール20についての必要な情報を含み得る。同様に、ユーザが特定のキャリアにおける新しいアカウントをアクティブにするたびに、様々なNV項目値が、キャリアに固有のノーテーションファイルからダウンロードされ、メモリに記憶され得る。これらのNV項目値のコピーは、生成され、後続の取出しのために明確に割り当てられたメモリスロットに記憶され得る。キャリアNV項目インデックスは、これらのNV項目値を含んでいる明確に割り当てられたメモリスロットの記録を含み得る。
【００３９】
工場NV項目インデックスとは対照的に、NV項目値のコピーは、ユーザが選択されたキャリアにおけるアカウントをアクティブにすることを選択するまで実際には生成されず、メモリスロットに記憶されないことがある。しかしながら、アカウントがアクティブにされると、特定のキャリアNV項目値のコピーは、生成され、事前に割り当てられたメモリスロットに記憶され得る。事前に割り当てられたメモリスロットのインデックスは、キャリアNV項目インデックス305内に含まれ得る。
【００４０】
他の情報は、特定のキャリアに固有のものであるノーテーションファイル中に含まれ得、まったく新しいソフトウェアビルドがロードされるまで変化しない。そのような静的UQCNデータ306は、たとえば、SCI、MIP、再試行などを含み得る。さらに、ノーテーションファイルは、多重化UQCNデータ307を含み得る。そのような多重化UQCNデータは、たとえば、好適ローミングリスト(PRL)、有効なキャリアアカウントに関連するモバイルディレクトリ番号(MDN)、パケットデータプロトコル(PDP)プロファイルなどを含み得る。
【００４１】
上記の項目の各々は、現在有効なキャリアアカウントに固有のものであり、新しいキャリアアカウントが有効になったときに不揮発性メモリ中で上書きされ得る。
【００４２】
上記で説明したように、ユーザが異なるキャリアアカウントをアクティブにすることを望むとき、通信モジュール20のフラッシュメモリ24に、適切なソフトウェアビルドがロードされなければならないだけでなく、適切なNV項目プロファイル値もロードされなければならない。多数の可能なNV項目がプロファイル中に現れるので、すべてのNV項目の管理は難しくなり得る。したがって、すべての可能なサービスプロバイダのためのNV項目設定と工場プロビジョニングファイルとを管理し、追跡し、配信するために、一実施形態は、すべての可能なNV項目を単一のドキュメントソリューションにカテゴリー分類する。
【００４３】
図4は、NV項目の主要なカテゴリーならびに識別されたカテゴリーに属するNV項目の例を識別する例示的なデータテーブルである。図4中で識別される主要なカテゴリーには、出荷時設定、工場プロビジョニング、多重化/工場プロビジョニング、多重化ソフトウェア、UQCN、多重化UQCN、およびソフトウェアがある。
【００４４】
NV項目の出荷時設定カテゴリーは、通信デバイス10が製造されたときに工場によってプログラムされるNV項目を含み得る。たとえば、NV項目のこのカテゴリーは、通信デバイスの無線周波数(RF)較正手順とともに使用されるパラメータを含み得る。これらのNV項目は、たとえば、通信デバイスによって使用される帯域選好を含み得る。これらのNV項目の値は一般に、通信デバイス上でどのサービスプロバイダアカウントが現在有効にされているかにかかわらず変化しない。また、これらのNV項目の値は一般に、通信デバイス上で現在有効にされているサービスプロバイダアカウントによって使用される通信技術にかかわらず変化しない。
【００４５】
NV項目の第2のカテゴリーは、工場プロビジョニング項目として識別される。出荷時設定項目と同様に、これらの項目は、通信デバイス10が製造されたときに工場によって割り当てられるそれらの値を有する。NV項目の工場プロビジョニングカテゴリーは、個々のキャリアによって指定される。たとえば、個々のサービスプロバイダは、特定の10キーファイルと、拡張ローミングインジケータ(ERI)ファイルと、ベンダー識別/製品識別(VID/PID)またはノートブックロックとを含むことを望み得る。このカテゴリー中のNV項目の多くは、各個のキャリアまたはOEMに固有のものであり、固有のキャリア/OEMに特有の値を有し得る。多くの場合、他のキャリアまたはOEMは、独自の固有のプロファイル中に同じNV項目を含まないことになる。
【００４６】
NV項目の第3のカテゴリーは、多重化工場プロビジョニング項目(multiplexed factory provisioned item)を含み得る。NV項目の工場プロビジョニングカテゴリーと同様に、多重化工場プロビジョニング項目は、通信デバイス10の製造中に工場によってメモリスロットにプリロードされるNV項目値である。多重化工場プロビジョニングNV項目は、特定のメモリスロットロケーションに記憶される。これらの特定のメモリスロットロケーションアドレスの各々は、工場NV項目インデックス304中のノーテーションファイル中で識別される。各個のキャリアまたはOEMに固有のNV項目をしばしば含んでいるNV項目の「工場プロビジョニング」カテゴリーとは異なり、NV項目の「多重化工場プロビジョニング」カテゴリーは、一般に、複数のキャリアまたはOEMによって使用されるNV項目を含む。しかしながら、これらのNV項目の値は、各キャリア/OEMに固有のものであるか、さらには各個の通信デバイスに固有のものであり得る。したがって、これらのNV項目に割り当てられた値は、通信デバイスのフラッシュメモリ24中で多重化され得る。たとえば、NV項目のこのカテゴリーは、特定の認証キー(Aキー)ファイル、サービスプログラミングコード(SPC)ファイル、またはワンタイムキーパッドサブシディロック(OTKSL:One time Key pad Subsidy Lock)ファイルを含み得る。複数のサービスプロバイダが不揮発性メモリに記憶されたAキーファイルを必要とするが、各サービスプロバイダは、Aキーの異なる値を必要とすることになる。実際、各個のサービスプロバイダアカウントは、固有のAキーファイルを必要とすることになる。したがって、異なるサービスプロバイダアカウントが通信デバイス上で有効になると、Aキー値の異なる値がフラッシュメモリ24に書き込まれなければならない。
【００４７】
NV項目の第4のカテゴリーは、多重化/ソフトウェアNV項目を含み得る。NV項目のこのカテゴリーは、初期アカウントアクティベーションプロセス中に各キャリアのためのソフトウェアビルドによって割り当てられ、初期化される動的項目を含む。工場プロビジョニングNV項目とは対照的に、これらのNV項目値は、ユーザが選択されたキャリアにおけるアカウントをアクティブにすることを選択するまでは生成されず、割り当てられない。選択されたキャリアにおけるアカウントの最初のアクティベーション中に、特定のNV項目の値が生成され、割り当てられ得る。ユーザが選択されたキャリアにおけるアカウントをアクティブにすることを選択するまではNV項目のこのカテゴリーの値は記憶されないが、アクティベーションプロセスが開始されると、このカテゴリーに属するNV項目の値が通信デバイス内の事前に割り当てられたメモリスロットに記憶される。これらの事前に割り当てられたメモリスロットのロケーションは、ノーテーションファイルの一部であるキャリアNV項目インデックス105内に含まれ得る。多重化/ソフトウェアNV項目の例には、MIP、ユーザ名、パスワードなどがある。
【００４８】
NV項目の第5のカテゴリーは、静的ノーテーションファイル(UQCN)項目を含み得る。これらのNV項目値は、新しいキャリアのソフトウェアビルドがロードされるたびに上書きされるキャリア固有の項目である。これらのNV項目の例には、ディスプレイスクリーン上にキャリアロゴを表示するデスクトップイメージ、SCI(スロットサイクルインデックス)、MIP(モバイルIP再試行)などがあり得る。選択されたキャリアが同じままである限り、そのようなNV項目は静的のままである。したがって、ユーザが同じキャリア内の異なるアカウント間で切り替えたとき、これらのNV項目の値は変化しない。静的ノーテーションファイル項目は、複数のアカウントをもつユーザがあるキャリアから次のキャリアに切り替えた場合に上書きされ得る。静的ノーテーションファイル項目は何らかの他の手段によって(たとえば、オーバージエアアクティベーションを介して、または接続マネージャによって)変更されないので、静的ノーテーションファイル項目は、そのような方法でカテゴリー分類され得る。したがって、これらのNV項目の別個のコピーを維持する理由はない。したがって、貴重なメモリ空間がリクレームされ、節約され得る。
【００４９】
NV項目の第6のカテゴリーは、多重化ノーテーションファイル(UQCN)項目を含み得る。静的ノーテーションファイル項目と同様に、多重化ノーテーションファイル項目は、キャリア固有のものであり、新しいキャリアソフトウェアビルドがロードされるたびに上書きされる。ノーテーションファイルはサービスプロバイダごとに異なり得るが、あるサービスプロバイダのノーテーションファイル中に現れる様々なNV項目が別のサービスプロバイダのノーテーションファイル中にも現れ得る。たとえば、各サービスプロバイダは、有限境界を有する通信ネットワークを維持し得る。この通信ネットワークは、しばしば、加入者のホームネットワークと呼ばれる。加入者が自身のホームネットワークの範囲外に移動すると、加入者は、ホームネットワークを介してワイヤレス通信をもはや行えないことがある。しかしながら、他のサービスプロバイダが、加入者の現在のロケーションにおいて通信ネットワークを動作させていることがある。これらの他の通信ネットワークはローミングネットワークと呼ばれることがある。いくつかの事例では、あるロケーションにおいて利用可能な複数のローミングネットワークがあり得る。自身の加入者にホームネットワークの外部でワイヤレス通信を行い続ける能力を与えるために、加入者のサービスプロバイダは、それの加入者がローミングネットワークにアクセスするのを許可するように他のサービスプロバイダとしばしばネゴシエートし、その逆も同様である。しかしながら、ネゴシエートされた取引の詳細により、加入者のサービスプロバイダは、複数のローミングネットワークが利用可能である場合に、どのローミングネットワークにアクセスすべきかについての選好リストを有し得る。この選好リストは、しばしば、好適ローミングリスト(PRL)と呼ばれる。各サービスプロバイダがPRLを利用するが、PRLファイルは各サービスプロバイダに固有および特有のものである。したがって、各ノーテーションファイルは、それのNV項目の1つとしてPRLファイルを有し得るが、PRLファイルは、サービスプロバイダごとに異なることになる。したがって、PRLファイルなどのNV項目は、多重化ノーテーションファイルのNV項目の一例であり得る。多重化UQCN項目は、ノーテーションファイルにおいて定義されている値を取る。ある時点において、それらはまた、オーバージエアアクティベーションプロセスによって、または接続マネージャによって変更され得る。多重化ソフトウェア項目は、ネットワークによって定義された、ソフトウェア中の何らかのあらかじめ定義されたアルゴリズムを使用して割り当てられた値を有するNV項目であり得る。多重化項目の典型的な例は、モジュールがキャリアのネットワーク上でサービスのためにアクティブにされるときにキャリアによって割り当てられる共有秘密鍵/パスワードまたはユーザ名である。これらの値は、ソフトウェアにおいてあらかじめ定義されている特定のフォーマットで保存される。対照的に、UQCN(ノーテーションファイル)は、そのような項目値を含まない。むしろ、UQCN(ノーテーションファイル)は、ファイル中で多重化される属性を示す。たとえば、UQCNは、特定のフォーマット、または長さ、またはNV項目が多重化NV項目であるかどうかを示し得る。
【００５０】
NV項目の第7のカテゴリーは、ソフトウェア定義多重化項目を含み得る。これらの項目は、ソフトウェアビルドによって設定され、ソフトウェアビルドがアクティブになると変化しないNV項目である。これらのNV項目は、通信デバイスのモデル名を含み得る。これらの項目の値は、ソフトウェアによって割り当てられ、また、通常、ソフトウェアビルドをより効率的にするソフトウェアにおける何らかの機能性を与えるために保存される必要がある設定である。たとえば、ネットワークアクセス識別子(NAI)は、ユーザに「.com」識別子を与えるためにソフトウェアによって自動的に生成されるユーザ名である。一般に、通信デバイスのために使用される電話番号は.comアドレスに追加されて、固有のNAIを作成し得る一例として、ユーザの通信デバイスに電話番号202-555-1212が割り当てられた場合、Verizonソフトウェアビルドは、電話番号202-555-1212をドメインアドレス@vzw3g.comに追加して、NAI「202-555-1212@vzw3g.com」を生成する。そのようなNV項目値は、一度生成されると、ソフトウェアビルドが最初にアクティブにされた後は変化しない。一度生成された後にNAIを生成する必要はないので、多重化NV項目値は、ノーテーションファイルによって判断されたロケーションに記憶され、ソフトウェアビルドによっていつでも取り出され得、選択されたキャリアのためのノーテーションファイルがその後アクティブにされる。
【００５１】
ノーテーションファイルの使用を実装することによって、ソフトウェア定義通信モジュールを装備した通信デバイスは、それの通信を現在存在しないキャリアネットワークによってサポートさせるという追加のフレキシビリティを与えられ得る。たとえば、市場が発展するにつれて、将来オンラインになるが、現在は存在しない追加のキャリアが確立され得る。新たに確立されたキャリアがオンラインになると、新たに確立されたキャリアが既存の通信デバイス上での通信をサポートすることを可能にすることになる必要なパラメータ値が、ノーテーションファイル更新で通信デバイスにダウンロードされ得る。
【００５２】
様々な実施形態は、可能なサービスプロバイダごとに必要なNV項目の各々を管理し、記憶し、実装する機能を与える。NV項目を効果的に管理し記憶することを通して、ユーザは、単一の通信デバイス上でサービスプロバイダアカウント間で切り替え、必要なパラメータ値のすべてを維持し得る。一実施形態では、特定のNV項目に割り当てられる様々な値は、メモリ中に別々に維持され、記憶される。別々に維持され記憶されたNV項目値の各々はインデックス付けされ得る。NV項目値の各々は、たとえば、通信デバイスのRAMまたはハードドライブメモリに記憶され得る。特定のキャリアアカウントが有効になり、ノーテーションファイルがアクティブにされると、様々なNV項目値がRAMまたはハードドライブメモリから取り出され、通信モジュール20のフラッシュメモリ24にロードされ得る。
【００５３】
上記で説明したように、様々な実施形態は、メモリに記憶されたNV項目値を多重化する能力を活用する。このプロセスは、NV項目値のシャドーイングと呼ばれることがある。NV項目を多重化することによって、単一の通信デバイス10は、複数のキャリアサブスクリプションをサポートするだけでなく、ノーテーションファイルのパワーを強化するように構成され得る。NV項目の多重化またはシャドーイングは、キャリア固有の設定の複数のコピーを管理するための方法である。それは、インデックスの各々がキャリアを参照するインデックス付きアレイと呼ばれることがある。図5に、工場インデックス付きNV項目に適用するNV項目を多重化する概念を示す。このカテゴリー中のNV項目の各々の値は、知られており、通信デバイス10の製造業者によって工場においてプリロードされるので、これらの項目は静的多重化項目と呼ばれることある。各静的多重化NV項目の値は、事前に割り当てられたメモリスロットロケーションに記憶される。
【００５４】
例として、サービスプロビジョニングコード(SPC)は、工場インデックス付きNV項目のカテゴリー中に含まれるNV項目である。SPCはセキュリティ保護として使用される。通信デバイス10の通信モジュール20は、アクティベーション中に有効なSPCが与えられた場合のみプロビジョニングすることが許可されるようになる。一般に、各キャリアは、SPCに異なる値を利用する。たとえば、Verizon1は、SPCがすべてゼロに設定されることを必要とし得るが、Sprint2は、SPCがランダムに生成された6桁の番号であることを必要とし得る。他のキャリアは、特定の6桁の数字コードを必要とし得る。従来の通信デバイスでは、SPCの値は不揮発性メモリロケーション85に記憶される。キャリアのソフトウェアビルドがSPCの値を必要とするとき、ソフトウェアビルドは、不揮発性メモリロケーション85に記憶された値を見る。
【００５５】
一実施形態では、NV項目SPCの複数の値は、メモリに記憶され得る。SPCの異なる値の各々は、異なるメモリおよびスロットロケーションに記憶され得る。NV項目SPCの異なるキャリア値の各々を記憶する異なるメモリおよびスロットロケーションのインデックスは、後続の取出しのためにノーテーションファイル内に含まれ得る。図5に示すように、通信デバイス10は、メモリロケーション40085のための異なるスロットにSPCの値を記憶し得る。たとえば、VerizonのためのSPCの値は、メモリロケーション40085、スロット0に記憶され得る。この例では、「000000」の値は、メモリロケーション40085、スロット0に記憶され得る。SprintのためのSPCの値は、メモリロケーション40085、スロット1に記憶され得る。この例では、「345987」の値は、メモリロケーション40085、スロット1に記憶され得る。図5は、可能な将来のキャリア値のために追加のメモリスロットロケーションが存在することをも示す。この例では、将来-Xおよび将来-Yは、可能な将来のキャリアを表す。そのような将来のキャリアがアクティブに通信をサポートし始めると、それらの特定のSPC値の各々が、メモリロケーション40085、スロット10およびスロット11にそれぞれ記憶され得る。
【００５６】
従来のプロビジョニング動作では、NV項目SPCの値は、一般に、不揮発性メモリロケーション85に記憶され得る。したがって、選択されたキャリアのソフトウェアビルドは、実行すると、メモリロケーション85からNV項目SPCの値を取り出そうとし得る。しかしながら、ソフトウェア定義無線ベースチップセット通信モジュール20上へのソフトウェアビルドの実装中に、ソフトウェアビルドのロード後にノーテーションファイルがロードされ得る。ソフトウェアビルドが、不揮発性メモリロケーション85からSPCの値を取り出そうとすると、ノーテーションファイルは、次に、通信モジュール20に、メモリロケーション40085中の特定のスロットからSPC値を取り出すように指示し得る。スロットは、ソフトウェアビルドがロードされている選択されたキャリアを適切なメモリスロットロケーションと相関させる工場NV項目インデックスに従って選択され得る。したがって、Verizonソフトウェアビルドがロードされている場合、スロット0がアクセスされ得、000000の値が、不揮発性メモリロケーション85にロードされ得る。ただし、Sprintソフトウェアビルドがロードされている場合、スロット1がアクセスされ得、345987の値が、不揮発性メモリロケーション85にロードされ得る。したがって、NV項目SPCの値は、新しいNV項目メモリロケーションに記憶されたSPCの複数の値によって多重化またはシャドーイングされるといえる。
【００５７】
静的工場インデックス付きNV項目と同様に、動的キャリアインデックス付きNV項目は、メモリに記憶され、ソフトウェア定義無線ベースチップセット通信モジュール20によって利用され得る。NV項目の各々の値は、ユーザが選択されたキャリアにおけるアカウントをアクティブにすることを選択するまで知られないので、これらのNV項目は動的多重化項目と呼ばれることがある。したがって、各通信デバイス10は、コピーを動的に作成し、必要に応じてこれらのNV項目の値を記憶し得る。とはいえ、通信デバイス10は、コピーを作成し、選択されたキャリアのための特定のNV項目の値を記憶しないことがあるが、選択されたキャリアのための特定のNV項目の値が受信されると、コピーが生成され、事前に割り当てられたメモリロケーションおよびスロットに記憶される。
【００５８】
一例として、SDタイマーは、動的に多重化されたNV項目であり得る。従来の動作では、ユーザが選択されたキャリアにおけるアカウントをアクティブにすると、SDタイマーの値がキャリアによって生成され、通信デバイス10に送信される。SDタイマーの受信値は、次いで、NV項目3635に記憶される。選択されたキャリアのためのソフトウェアビルドが実行し、SDタイマーの値を取り出そうとするたびに、NVメモリロケーション3635が対象とされる。
【００５９】
一実施形態では、たとえば、ユーザが選択されたキャリアにおけるアカウントをアクティブにすると、通信デバイス10は、NV項目の中でもSDタイマーの値を受信する。通信デバイス10は、従来の動作の場合と同じ方法でSDタイマーのNV項目値を受信し得る。たとえば、この値は、オーバージエアプロビジョニングプロセス中で、または接続ケーブルを介して受信され得る。しかしながら、これらの動的NV項目値を保存するために、一実施方法は、ノーテーションファイルを利用して、新しいメモリロケーションにシャドーイングNV項目値を作成する。フラッシュメモリ24にNV項目値を書き込むことに加えて、受信したNV項目値のシャドーコピーを記憶するために、ノーテーションファイルは、ハードドライブメモリまたはRAM中に新しいメモリおよびスロットロケーションを作成するように、ソフトウェア定義無線ベースチップセット通信モジュール20に指示する。新しいメモリおよびスロットロケーションは、ノーテーションファイルによって割り当てられる。各キャリアは、NV項目値ごとに事前に割り当てられたメモリ/スロットロケーションを有する。ノーテーションファイルは、事前に割り当てられたインデックスを含んでいる。ユーザが選択されたキャリアにおけるアカウントをアクティブにするまで、記憶すべき動的に割り当てられるNV項目値は存在しないので、メモリロケーションスロットは作成されないことに留意されたい。キャリアアカウントがアクティブにされると、動的に割り当てられたNV項目値は、メモリに記憶され、それらのメモリおよびスロットロケーションがキャリアインデックスに追加される。したがって、ユーザが2つのキャリアにおけるキャリアアカウントのみをアクティブにした場合、2つのエントリだけがキャリアインデックス中に現れることになる。ユーザが新しいキャリアアカウントをアクティブにすることを選択するまでNV項目のコピーは作成されないので、メモリが節約され得る。通信デバイスのメモリ中の空間は、必要に応じて利用される。
【００６０】
さらに、キャリアインデックス中のエントリのリストは、キャリアアカウントがアクティブにされる順序を反映する。たとえば、Verizonノーテーションファイルは、動的に生成されるすべてのNV項目値をメモリスロット0に記憶することを規定し得る。しかしながら、Vodafoneノーテーションファイルは、それの動的に生成されるNV項目値をメモリスロット16に記憶することを規定し得る。その結果、たとえVodafoneがアクティブにされるべき第2のキャリアアカウントであったとしても、キャリアインデックスはVodafoneのためのインデックスである16を依然として記録することになる。キャリアインデックスに記載されているキャリアの相対順序は、アカウントがアクティブにされた順序の指示を与える。
【００６１】
このようにして、各キャリアのためのノーテーションファイルは、NV項目値がどこから取り出され得るかについてだけでなく、受信したNV項目値のコピーがどこに記憶されなければならないかについても示す。NV項目値をインデックス付けし、NVメモリロケーションから別個のメモリロケーションに記憶することによって、ユーザの様々なアカウントの各々の値が保存され得る。従来の動作では、ユーザが新しいキャリアアカウントを有効にすることを選択するたびに、フラッシュメモリ24中のメモリロケーションを占有する以前のNV項目値が上書きされ、保存されないことになる。ユーザが以前のキャリアアカウントを再び有効にしようすると、ユーザは、新しいキャリアインデックス付きNV項目値を取得することが必要になることになる。そのようなプロセスにより、キャリアアカウントを有効にするための遅延がより長くなり得る。さらに、キャリアアカウントがアクティブにされるたびにいくつかのNV項目値が生成される。一度上書きされると、ユーザのキャリアアカウントは、新しいNV項目値が生成され、ユーザのキャリアアカウントに割り当てられることを必要とすることになる。ユーザが異なるキャリアアカウントを有効にするたびに、割り当てられた電話番号、ユーザ名またはパスワードなどのNV項目がリセットされるならば、これはユーザに大きいフラストレーションをもたらし得る。多重化NV項目値の実施方法により、通信デバイス10は、以前に生成され、割り当てられたNV項目値を迅速に取り出すことだけでなく、有効なキャリアアカウントの切替えにもかかわらず既存のNV項目値を維持することも可能になる。
【００６２】
図6に、通信デバイスのフラッシュメモリとの間でNV項目の読取り/書込みを行う一実施形態の方法のプロセスフローを示す。上記で説明したように、適切に動作するために、様々なアプリケーションおよびプロセスの実行を実現するソフトウェアモジュールは、特定のNV項目の特定のパラメータ値を必要とする。特定のキャリアネットワーク上で動作する特定の通信デバイスタイプ/モデルのNV項目値は、一般に、通信デバイス10のフラッシュメモリ26にNV項目値を記憶する。ユーザが、通信デバイス上での通信をサポートするキャリアを変更することを選択すると、新しいNV項目が、後続の読取り要求のために利用可能になるように、フラッシュメモリ26に書き込まれなければならない。様々なアプリケーションおよび/またはプロセスが開始されると、それらの実行を実現するソフトウェアモジュールは、フラッシュメモリ26に記憶されたNV項目値を読み取り得る。通信デバイス上での通信をサポートするキャリアを変更する要求が通信デバイスプロセッサ191によって受信されると、NV項目書込み要求600を行う。NV項目書込み要求600は、選択されたキャリア上で動作する通信デバイスに適切なNV項目値をフラッシュメモリ26に書き込むプロセスを開始する。同様に、アプリケーションまたはプロセスが通信デバイス10上で実行されると、フラッシュメモリ26からNV項目値を読み取るNV項目読取り要求600を行う。
【００６３】
通信デバイスプロセッサ191がNV項目読取り/書込み要求600を受信すると、ステップ605において、NV項目パラメータを確認する。たとえば、NV項目は、通信デバイスプロセッサ191がフラッシュメモリ26に二回以上NV項目を書き込むことを防止するライトワンス(write once)属性を有し得る。通信デバイスプロセッサ191は、NV項目値が以前にすでに書き込まれているかどうかを判断し、すでに書き込まれていた場合は書込みプロセスを終了し得る。NV項目パラメータが確認されると、判断610において、通信デバイスプロセッサは、図5に関して上記で説明した多重化項目リスト中にNV項目が存在するかどうかを判断する。多重化項目リストは、通信デバイス10が起動するときに動的に作成され得る。NV項目が多重化項目のうちの1つでなかった場合(すなわち、判断610=「いいえ」)、ステップ615において、NV項目値を直接フラッシュメモリ26から読み取るか、またはフラッシュメモリ26に書き込む。NV項目値の読取りまたは書込みが行われると、ステップ630においてプロセスが完了する。
【００６４】
しかしながら、NV項目が多重化項目リスト中に存在した場合(すなわち、判断610=「はい」)、ステップ620において、プロセッサ191は、ノーテーションファイルから選択されたキャリアインデックスを取得する。ステップ625において、選択されたキャリアインデックスを適切なオフセットとして使用して、プロセッサは、適切なフラッシュメモリロケーションとの間でNV項目値の読取り/書込みを行う。NV項目値の読取りまたは書込みが行われると、ステップ630においてプロセスが完了する。本プロセスは、フラッシュメモリ26からの読取りまたはフラッシュメモリ26への書込みが行われるべきである追加のNV項目値について再開され得る。
【００６５】
別の実施形態では、どの通信モジュール20がキャリアのソフトウェアビルドとノーテーションファイルとを正常に実装し得るかを制限するために、ノーテーションファイルに記憶されたデータが使用され得る。正しくプログラムされ、プロビジョニングされている場合、ソフトウェア定義無線ベースチップセット通信モジュール20は、いかなるキャリアの通信ネットワークにもアクセスし得る。しかしながら、一部のキャリアは、どのデバイスが自身のネットワークにアクセスするかを制限することを望み得る。たとえば、一部のキャリアは、いくつかの製造業者にキャリアの通信ネットワークへの排他的または半排他的アクセスを与えるために製造業者と協力し得る。同様に、いくつかの製造業者は、自身の通信デバイスがアクセスし得るキャリアネットワークを限定することを望み得る。キャリア通信ネットワークを制限するために、通信モジュール20は、(デバイスロック、キャリアロックまたはノートブックロックとも呼ばれる)技術ロックにアクセスし得る。
【００６６】
図7に、一実施技術ロック方法のプロセスフローを示す。ユーザが新しいキャリアアカウントをアクティブにすることを選択すると、ステップ701において、ユーザは、ユーザインターフェースメニューからキャリアを選択する。ステップ702において、メモリバッファロケーションにユーザのキャリア選択を一時的に記憶する。ステップ703において、オーバージエアプログラミング/プロビジョニングプロセスを介して適切なソフトウェアビルドとノーテーションファイルとをダウンロードするか、または受信する。ソフトウェアビルドとノーテーションファイルとが受信されると、ステップ704において、ソフトウェア定義無線ベースチップセット通信モジュールは、メモリからそれ自体の技術ロックIDを取り出す。技術ロックIDは、ベンダー識別子/製品識別子(VID/PID)、デバイス識別子、キャリア識別子、ノートブック識別子または任意に定義された識別子、あるいはそれらの何らかの組合せを含み得る。一般に、技術ロックIDは、工場において製造業者によってNV項目として不揮発性メモリにプロビジョニングされる。判断705において、取り出された技術ロックIDをノーテーションファイル中に含まれている互換技術値と比較する。キャリアのソフトウェアビルドとノーテーションファイルとを完全にロードし、実行することを可能にするために、取り出された技術ロックIDは、ノーテーションファイルによって互換ベンダーまたは製品として認識されなければならない。取り出された技術ロック値がノーテーションファイル中に含まれている許可された技術ロック値のうちの1つに一致する場合(すなわち、判断705=「はい」)、ステップ707において、モジュールにロードされたソフトウェアビルドと連動してノーテーションファイルの残りを抽出し、実行する。しかしながら、取り出された技術ロック値が許可されたノーテーションファイル中に含まれている技術ロック値のうちの1つに一致しなかった場合(すなわち、判断705=「いいえ」)、ステップ706において、エラールーチンを開始し、ノーテーションファイルの残りを抽出せず、モジュールからソフトウェアを削除する。このようにして、互換通信デバイス10だけが、キャリアのソフトウェアビルドとノーテーションファイルとをロードすることを許可され得る。選択されたキャリアの
ためのソフトウェアビルドとノーテーションファイルとをロードすることなしに、通信デバイスは、選択されたキャリアの通信ネットワークにアクセスすることができないことになる。
【００６７】
図8Aおよび図8Bに、通信デバイス上での通信をサポートする、選択されたキャリアのための適切なソフトウェアモジュールおよびNV項目をインストールするための一実施方法のプロセスフローを示す。ユーザが、通信デバイス10上での通信をサポートするキャリアを変更することを選択すると、ステップ805において、ユーザは、ディスプレイ11とともにユーザインターフェース制御12、13を使用してプリロードされたメニューからキャリアを選択する。代替実施形態は、キャリアを選択するためにタッチスクリーンディスプレイまたは他のユーザインターフェースを利用し得る。ユーザのキャリア選択が受信されると、ステップ810において、プロセッサ191は、ストレージから通信モジュール20に、対応するソフトウェアビルドとノーテーションファイルとをダウンロードする。一般に、様々なソフトウェアビルドとノーテーションファイルとは、通信デバイスのメモリユニット192、またはハードドライブなどの他の不揮発性記憶デバイスに記憶され得る。代替実施形態では、ソフトウェアビルドおよび/またはノーテーションファイルは、リモート記憶ロケーションからダウンロードされ得る。ソフトウェアビルドとノーテーションファイルとがダウンロードされると、ステップ815において、ソフトウェアビルドイメージを認証する。ダウンロードされたソフトウェアビルドイメージが認証されなかった場合(すなわち、判断820=「いいえ」)、ステップ825において、プロセッサ191はエラールーチンを開始する。ダウンロードされたソフトウェアビルドイメージが認証された場合(すなわち、判断820=「はい」)、ステップ830において、プロセッサ191は、ノーテーションファイルから情報を抽出し、処理のためにメモリ192に抽出情報を記憶することを続ける。この情報は、キャリアインデックスなどのデータならびにノーテーションファイル項目ヘッダを含み得る。ステップ835において、デバイス上での通信を適切にサポートするために選択されたキャリアに必要なNV項目のカテゴリーを判断するために、抽出されたノーテーションファイル項目ヘッダの各々をパースする。判断840において、抽出されパースされたノーテーションファイル情報に基づいて、プロセッサ191は、特定のNV項目が多重化NV項目であるかどうかを判断する
。NV項目が多重化NV項目であった場合(すなわち、判断840=「はい」)、ステップ845において、NV項目を多重化NV項目リストに追加する。NV項目が多重化NV項目リストに追加されると、またはNV項目が多重化項目でないと判断された場合(すなわち、判断840=「いいえ」)、判断850において、プロセッサは、NV項目がライトワンスNV項目であるかどうかを判断する。NV項目がライトワンスNV項目であった場合(すなわち、判断850=「はい」)、ステップ855において、NV項目をライトワンスNV項目リストに追加する。動的に作成された多重化NV項目リストとライトワンスNV項目リストとは、図6に関して上記で説明した読取り/書込みNV項目プロセス中に利用され得る。
【００６８】
NV項目がライトワンスNV項目リストに追加されると、またはNV項目がライトワンス項目であると判断された場合(すなわち、判断850=「いいえ」)、判断860において、プロセッサは、ノーテーションファイル項目のすべてが完了したかどうかを判断する。言い換えれば、プロセッサは、任意の他のNV項目を分析すべきであるかどうかを判断し得る。ノーテーションファイルにリストされている追加のNV項目がある場合、およびノーテーションファイル項目のその前処理が完了していなかった場合(すなわち、判断860=「いいえ」)、プロセッサは、判断840に戻り、再びステップ840〜860を完了する。しかしながら、前処理のすべてが完了していた場合(すなわち、判断860=「はい」)、図8Bに示すステップ865において、プロセッサは、ノートブックロックとノーテーションファイルに対する互換性とを検査することに進む。ノートブックロック実施方法を示すプロセスフローについて、図7を参照しながら上記で説明した。ノートブックロックおよびノーテーション互換性方法の結果が、ソフトウェアビルドとノーテーションファイルとが通信デバイス10に対して許可されないことを示した場合(すなわち、判断870=「いいえ」)、ステップ825Aにおいて、エラールーチンを開始し、モジュールをオフライン状態に設定する。
【００６９】
ソフトウェアビルドとノーテーションファイルとが通信デバイス10に対して許可される場合(すなわち、判断870=「はい」)、判断875において、プロセッサは、メモリ192にロードされたノーテーションファイルがフラッシュメモリ26にロードされたノーテーションファイルの同一バージョンであるかどうかを判断する。メモリ192にロードされたノーテーションファイルのバージョンがフラッシュメモリにロードされたノーテーションファイルのバージョンと一致する場合(すなわち、判断875=「はい」)、ステップ885において、メモリ192のリソースをクリアし、他の目的のためにリクレームする。メモリ192にロードされたノーテーションファイルのバージョンがフラッシュメモリにロードされたノーテーションファイルのバージョンと一致しなかった場合(すなわち、判断875=「いいえ」)、ステップ880において、フラッシュに記憶されたノーテーションファイルをメモリ192にロードされたノーテーションファイルで更新する。フラッシュ26に記憶されたNV項目値の各々は、NV項目属性に従って、メモリ192にロードされたノーテーションファイルのコンテンツを使用して上書きまたは削除され得る。フラッシュにロードされたノーテーションファイルが更新されると、ステップ885において、メモリ192のリソースをクリアし、他の目的のためにリクレームする。メモリリソースがリクレームされると、ステップ890において、プロセッサは、ソフトウェアビルドとノーテーションファイルからのNV項目値とを使用して通信モジュールの初期化を続ける。このようにして、ソフトウェア定義通信モジュール20を有する通信デバイス10は、通信技術または選択されたキャリアにかかわらず、異なるキャリアの通信ネットワークを介した通信を使用可能にするために迅速に変更され得る。
【００７０】
様々な実施形態により、通信デバイス製造業者は通信デバイスの製造プロセスを合理化することが可能になる。通信デバイスの従来の製造プロセスでは、通信デバイスは、工場プロビジョニングソフトウェアならびに必要とされるNV項目値をロードされる。しかしながら、相手先ブランド名製造会社（OEM）によって一般に採用されるツールは、個々のNV項目を書き込むことしかできない。ツールは、NV項目を取り出し、NV項目値をフラッシュに書き込み、次いで、次のNV項目について順次プロセスを繰り返さなければならない。このプロビジョニングプロセスは、製造プロセスを大いに妨害する。工場プロビジョニングソフトウェアとともにノーテーションファイルを通信デバイスにロードすることによって、通信デバイスが工場を出た後、様々な実施形態は、必要なNV項目値をフラッシュメモリにロードし得る。これは、製造時間を大幅に最適化する。さらに、他のタスク(たとえば、プロトコル処理)がアクティブにされる前にノーテーションファイル処理が行われるので、ノーテーションファイルのNV項目は迅速にロードされ得る。さらに、ノーテーションファイルは、一般に、迅速に容易に更新され得る小さいファイルであるので、製造プロセスは、特定の/複数のキャリアのためのNV項目をロードするように迅速に適応および構成され得る。
【００７１】
本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実装され得ることを当業者なら諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００７２】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。プロセッサ実行可能ソフトウェア命令のソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体のいずれかであり得る非一時的プロセッサ可読メモリに記憶され得る。例示的な非一時的記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体はASIC中に常駐し得る。ASICはユーザ端末または通信デバイス中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末または通信デバイス中に個別構成要素として常駐し得る。さらに、いくつかの態様では、方法またはアルゴリズムのステップおよび/またはアクションは、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せ、あるいはそのセットとして常駐し得る。
【００７３】
様々な実施形態の上記の説明は、当業者が本発明を実施または使用することを可能にするために提供したものである。これらの実施形態に対する様々な変更は、当業者には容易に明らかとなり、本明細書で定義された一般的な原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書に示した実施形態に限定されるものではなく、代わりに、特許請求の範囲には、本明細書に開示した原理および新規な特徴に一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００７４】
10  通信デバイス
11  ユーザインターフェースディスプレイ
12  ロッカースイッチ
13  キーパッド
18  スピーカー
19  マイクロフォン
24  フラッシュメモリ
25  ブート情報ブロック
26  ファイルシステム
30  マルチインターフェースモジュール
40  共通アプリケーションプログラミングインターフェース(C-API)
61  キャリア
62  キャリア
63  キャリア
191  プロセッサ
191a  プロセッサ
191b  プロセッサ
192  内部メモリ
193  ストレージユニット
194  アンテナ
199  ボコーダ
301  通信デバイスロックデータ
302  バージョン番号データ
303  GPS機能
304  工場NV項目インデックス
305  キャリアNV項目インデックス
306  静的UQCNデータ
307  多重化UQCNデータ
【図１】
2013526818.tif 000003
【図２】
2013526818.tif 000004
【図３】
2013526818.tif 000005
【図４】
2013526818.tif 000006
【図５】
2013526818.tif 000007
【図６】
2013526818.tif 000008
【図７】
2013526818.tif 000009
【図８Ａ】
2013526818.tif 000010
【図８Ｂ】
2013526818.tif 000011
【国際調査報告】
2013526818.tif 000012
2013526818.tif 000013
2013526818.tif 000014