グローバル ナビゲーション サテライト システム (UUID) UMDF 2.0 ドライバー アーキテクチャの概要、I/O に関する考慮事項について説明し、いくつかの種類の追跡および修正セッションについて説明します。
アーキテクチャの概要
次の大まかなコンポーネント ブロック図は、グローバル ナビゲーション サテライト システム (UUID) UMDF 2.0 ドライバーと Windows 10 プラットフォームの統合方法を示しています。
図のコンポーネントを次に示します。
LBS アプリケーション: Windows 10 プラットフォームの場所機能を使用するユーザー アプリケーション
テスト アプリケーション: GNSS 機能をテストするためのアプリケーション。
GNSS API: 場所サービスの内部コンポーネントに対して、およびアプリケーションをテストするために、GNS デバイスの機能を公開する IGnssAdapter COM (コンポーネント オブジェクト モデル) インターフェイス。 この API の正確な形状は、このドキュメントの範囲外です。 Windows コンポーネントは、 IGnssAdapter COM インターフェイスに対してプログラミングすることで、GNS デバイスを使用します。 GNSS API セットは、場所プラットフォーム コンポーネント (場所サービスや場所テスト アプリケーションなど) のみのプライベート API であり、他のファースト パーティまたはサード パーティのアプリケーションでは使用できません。
GNS アダプター: これは、 IGnssAdapter COM インターフェイスを実装するシングルトン COM オブジェクトです。 場所サービスのテスト アプリケーションと内部コンポーネントは、このオブジェクトをインスタンス化し、 IGnssAdapter インターフェイスを介して、GNS デバイスを使用します。 位置サービスの GPS 配置エンジン コンポーネントは、 IGnssAdapter インターフェイスを公開する COM クラスを実装します。 ロケーション サービスは、場所サービス内のGNSS アダプター COM クラスのシングルトン COM オブジェクトをインスタンス化するための、テストやその他のアウトプロセス アプリケーションのためのファクトリ メカニズムを公開します。 アウトプロセス アプリケーションは、COM インターフェイス ポインターを使用して、プログラムを、GNSS ドライバーに対して実行します。
COM は、プロセス外アプリケーションへのインターフェイス ポインターをプロキシ処理するため、アプリケーションは IGnssAdapter インターフェイス ポインターをインプロセス COM オブジェクトとして扱いますが、呼び出しは実際には場所サービス内のシングルトンの NSG アダプター オブジェクトによって処理されます。
GPS 位置決めエンジンは、位置サービスに場所固有の機能を提供するために、内部の GPS アダプター オブジェクトを使用します。 GNSS アダプターは、CreateFile API を使用して GNSS ドライバーへのファイル ハンドルを開き、GNSS ネイティブ API 呼び出しを適切な DeviceIoControl 呼び出しにラップし、GNSS ドライバー オブジェクトとの状態マシンを維持し、上位層からのさまざまな受信要求の状態を保持します。 このコンポーネントは、このドキュメントで定義されているパブリックなGNSS IOCTLインターフェイスを介して、基になるGNSSデバイススタックと直接やり取りします。 このデバイスは論理的に排他的なリソースとして扱われるので、シングルトンのGNSSアダプターは、すべてのアクセスをGNSSデバイスに制御します。
特定のホワイトボックス ドライバー テスト アプリケーションでは、非運用環境でGNSS ドライバー IOCTL インターフェイスを直接使用することもできます。GNSS プライベート API を介してGNSS アダプターを使用する代わりに。 ただし、これらのテスト アプリケーションでは、独自のステート マシンと処理を実装して、XSLT アダプターの特定の機能を模倣する必要があります。
GNS ドライバー: UMDF 2.0 を使用して実装された IHV で提供されるドライバー。 GNSS ドライバーは、実際のGNSR ハードウェアとやり取りすることで、 GNSS DeviceIoControl API をサポートします。 また、このドライバーは SUPL 関数のメディエーター/インテグレーターとしても機能します。
GNS デバイス/エンジン: これは、SOC と、デバイスのハードウェア部分をカプセル化する概念コンポーネントです。 IHV は、このコンポーネント内でほとんどのGNSS 機能を実装することを選択できます。したがって、GNS ドライバー層は非常に薄い (基本的に、GNS デバイスとやり取りするためのアダプター) になります。
従来の Windows モデルに従うグローバル ナビゲーション サテライト システム (NTLM) デバイスとドライバーのサポート
Windows 10 の場所プラットフォームは、Legacy Sensors v1.0 クラスドライバー(位置センサードライバーの作成を参照)を介して統合された GNSS デバイス、またはGNSS ドライバーリファレンスで説明されている新しい GNSS DDI を介して統合された GNSS デバイスをサポートしています。
そのため、Windows 7、Windows 8、Windows 8.1 に存在する Sensor v1.0 クラス拡張モデルと統合された、GNSS デバイスを搭載した Windows デバイスは、変更を加えることなく Windows 10 で引き続き動作することが期待されます。 ユーザーのアップグレード プロセスを改善するために、これらのドライバー (および新しいドライバー) を Windows Update に公開することを強くお勧めします。
Windows 10 で発行されたハードウェア ラボ キット (HLK) には、次の 2 つの異なるテスト セットがあります。
新しいモデルに従ってドライバーを認定するための新しいテストセットの 1 つ。
古いモデルに従ってドライバーを認定する別のテスト セット。 これらは、Windows 8.1 の WHCK で使用できたのと同じテスト セットになります。
HLK の新しい収集コンポーネントは、システムで実行する必要がある 2 つのテスト セット (ある場合) を識別します。
グローバルナビゲーション衛星システム(GNS)デバイスの共存
システムで複数のGNSSデバイスが検出されるまれなケースでは、ロケーションプラットフォームは主にシステム全体の消費電力を削減するために、1つのデバイスのみを使用します。 次の前提条件が考慮されました。
新しい DDI を使用するデバイスは新しい可能性が高いため、消費電力が向上し、より多くの星座をサポートし、より優れた支援をサポートする可能性が高くなります。 そのため、古いドライバー モデルを使用しているデバイスと、新しいドライバー モデルを使用するデバイスが検出された場合は、後者が選択されます。
内部のGNSSデバイスが存在するときにユーザーが外部のGNSSデバイスを接続した場合、ユーザーがこの外部デバイスを使用することを望んでいる可能性が最も高くなります。
これらの前提に基づく場所プラットフォームの動作は、次のようになります。
2 つの共存するレガシ ドライバーの場合: バック互換性の問題を回避するために、動作は Windows 8.1 と同じになり、両方の NTLM デバイスが同時に使用され、応答の 1 つがスタック上でアプリケーションに伝達されます。
デバイス内の 1 つのレガシ ドライバーと、外部に接続された 1 つの新しいドライバーの場合: 外部に接続されたGNSS デバイスが使用されます。
デバイスに 1 つの新しいドライバーがあり、1 つの新しいドライバーが外部に接続されている場合: 外部に接続されたGNSS デバイスが使用されます。
選択したGNSSデバイスがジオフェンシングまたはその他のオフロード操作をサポートしている場合、そのデバイスの使用中にオフロードが実行されます。 GNSSアダプターは複数のGNSSデバイス間で機能やセッションを分割しません。
グローバル ナビゲーション サテライト システム (GNS) インターフェイスの概要
GNS アダプターとGNSS ドライバーの間の相互作用は、次のカテゴリに分類されます。
機能情報交換
WINDOWS プラットフォーム上のGNSS スタックの拡張性と適応性をサポートするために、GNS アダプターとGNSS ドライバーは、基になるGNSS スタックのさまざまな明確に定義された機能と、Windows プラットフォームによって提供されるサポートに関する共通の理解を確立します。 この機能の側面は、このGNSSインターフェイス定義の一部として Microsoft によって明確に定義されており、より多くのイノベーションが引き続き進み、多様なチップセット/ドライバのセットが市場に出現するにつれて進化します。 このGNSRアダプタは、初期化時または必要に応じて基になるGNSRドライバ/デバイスのさまざまな機能を照会し、それに応じてGNSドライバとの相互作用を最適化します。
制御 コードIOCTL_GNSS_SEND_PLATFORM_CAPABILITY および IOCTL_GNSS_GET_DEVICE_CAPABILITYを使用して、GNS アダプターとGNSS ドライバ間の機能情報交換が行われます。
グローバル ナビゲーション サテライト システム (GNS) ドライバー コマンドと構成
このGNSRアダプタは、1回限りの設定またはGNSDドライバの定期的な再構成を行うことができる。 同様に、ドライバを介して、特定のGNSS固有のコマンドを実行することができます。 これは、ドライバーとハイ レベル オペレーティング システム (HLOS) の間でコマンド実行プロトコルを定義することによって実現されます。 特定のコマンドの種類によっては、目的のアクションがシステムの再起動直後または後に有効になる場合があります。 GNSS デバイス機能情報と同様に、このGNSS インターフェイス定義の一部として、MICROSOFT によって明確に定義されたGNSS コマンドは、将来の技術革新とGNSS デバイス/ドライバーの多様化と共に進化し続けます。
デバイス コマンドの実行と構成は、制御コード IOCTL_GNSS_SEND_DRIVERCOMMANDを使用して行われます。
位置情報
これは、基になるGNSSデバイスの主な機能です。 最も基本的な形式では、GNSS アダプターが GNSS ドライバーにデバイスの現在位置を要求します。 ポジションリクエストのバリエーションには、次のポジションセッションタイプが含まれます(ただし、これらに限定されません)。
デバイスの現在位置 (シングル ショット修正)
修正プログラムの継続的な定期的なストリーム (時間ベースの追跡)
移動のしきい値に基づいて修正を行う連続的なストリーム (距離ベースの追跡)
すべてのGNSRハードウェアとGNSRドライバで必要な唯一の必須ポジションセッションタイプは、シングルショットフィックスセッションタイプです。 ネイティブ (SOC で実装され、GNS ドライバーやアプリケーション プロセッサで実行されているサービスでは実装されません)、時間ベースの追跡セッション、および距離ベースの追跡セッションを必要に応じてサポートできます。 この 2 種類のネイティブ追跡セッションの主な利点は、SOC でより多くの処理を行い、必要な場合にのみ変更を報告することで、アプリケーション プロセッサ (AP) を長時間休止状態にすることで、潜在的な電力節約です。 ネイティブ距離ベースの追跡のサポートは、ネイティブの時間ベースの追跡セッションよりも影響が大きくなります。これは、消費電力が高くなる可能性があり、アプリケーションによってより広く使用されるためです。
GNSS ドライバーから位置情報を取得する操作は、次のアクションで構成されるステートフルな一意の修正セッションを通じて発生します。
修正セッションを開始します。 LBS アダプターは、(LBS アプリケーションからの要求の結果として) 修正開始セッションを開始します。 特定の要求に関連する要件および基本設定をGNSSアダプターで設定し、GNSSドライバーに制御コードIOCTL_GNSS_START_FIXSESSIONを発行して、位置を修正するためのエンジンを起動するよう指示します。
デバイスの位置を取得する (データの修正): 修正セッションが開始されると、ドライバーからの修正プログラムの待機を開始するために、制御コード IOCTL_GNSS_GET_FIXDATA が実行されます。 エンジンから新しい位置情報が利用可能になると、この保留中の修正の取得要求に対して、GNSV ドライバーが応答します。
修正セッションの種類が (現在の修正ではなく) LKG 修正である場合、位置情報はドライバーのキャッシュから取得されます。
GNSSアダプターは、非同期I/O要求が常に利用可能であることを保証し、GNSSドライバーが修正データを返すことができるようにします。 修正の性質に応じて、より多くの修正データが必要な場合は、もう 1 つの I/O 要求 (同じ IOCTL を使用) が実行され、このシーケンスは、これ以上データが使用できなくなるか、修正セッションが停止するまで続行されます。
修正セッションの変更: GNSSドライバーが同じ種類の修正セッションの多重化をサポートしていない場合、GNSSアダプターはそのレベルで多重化を行うにあたり、その修正セッションの種類に対してIOCTL_GNSS_MODIFY_FIXSESSIONを発行する可能性があります。
修正セッションを停止します。 特定の修正セッションに関連するそれ以上の位置情報が必要ない場合、または予期された場合、このGNSS アダプターは停止修正セッションを発行します。
ネイティブジオフェンシングのサポート
GNSD DDI は、この仕様で定義されている一連の IOCTL を使用したジオフェンス オフロード シナリオをサポートしています。 ドライバーに対してこのサポートを示す特別な機能フラグが定義されています。このフラグを設定する必要があるのは、GNSS スタックがジオフェンシングをネイティブにサポートしている場合のみです (つまり、アプリケーション プロセッサではなく、GNSS チップにジオフェンシングを実装します)。 ドライバーがジオフェンスをネイティブにサポートしていない場合、フラグは設定されません。 HLOS では、最適ではないアプリケーション プロセッサ (AP) ベースのジオフェンス追跡エンジンが既にサポートされています。このソリューションはネイティブ ソリューションほど電力最適化されていませんが、十分にテストおよび最適化されているため、AP に実装されている同等のソリューションに置き換えるべきではありません。
HLOS によるジオフェンスの追跡では、ジオフェンス違反を検出するためにアプリケーション プロセッサが定期的に起動し、フェンスが侵害されていない場合でも電力を排出する必要があります。 したがって、この実装は最適でないと見なされます。
また、HLOS では、ネイティブジオフェンス追跡ソリューションから受信したエラー通知で、基になるドライバーが低信号状態やその他の一時的なエラーのためにジオフェンスを追跡できない場合に、AP ベースのジオフェンス追跡をフェールオーバー メカニズムとして使用します。 ネイティブジオフェンシングのサポートは、ジオフェンス追跡が SoC に完全にオフロードされ、アプリケーション プロセッサがジオフェンス関連のイベントを処理するためにのみ起動される場合にのみ役立ちます。 ハードウェアがネイティブジオフェンス追跡をサポートしていない場合、GNSS ドライバーはドライバーレイヤーで実装を試みてはなりません。
また、電力消費量とユーザー エクスペリエンスの間の適切なバランスを見つけるために、ドキュメント化された IHV 固有のチューニング パラメーターを公開する必要があります。 さらに、サポートされるジオフェンスの数は、ヘッダー ファイルで定義されている MIN_GEOFENCES_REQUIRED 値を超える必要があります。 MIN_GEOFENCES_REQUIREDはアプリケーションごとに定義されます。1 つのアプリケーションには、他のアプリケーションまたは携帯電話会社によって使用されるジオフェンスの数が認識されていないためです。
ジオフェンシング オフロードのサポートには、次の要件が含まれます。
HLOS は DDI を介して 1 つ以上のジオフェンスを作成でき、ドライバーはそれらをハードウェアに送信して追跡を開始します。
HLOS は、DDI を介して以前に作成されたジオフェンスを 1 つ以上削除でき、ドライバーはそれらをハードウェアに送信して追跡を停止します。
理想的には、GNS ハードウェアは、各ジオフェンスの初期ジオフェンス追跡状態を理解し、それを使用して、この初期状態からの変更のみを報告する必要があります。 この機能をサポートしていない場合は、ジオフェンスが作成されるたびに初期状態が HLOS に報告されます。
電力効率の高い方法でデバイスの現在位置を追跡し、デバイスが追跡対象ジオフェンスに出入りするたびに AP を起動します。 GNS ドライバーは、ジオフェンス アラートを HLOS に渡します。
低衛星信号やその他の一時的なエラー状態では、既存のジオフェンスを確実に追跡できない可能性があります。 GNSSエンジンは、追跡の中断を検出することができるものと、GNSドライバは、HLOSに追跡ステータスエラーアラートを渡す必要があります。 HLOS は、既定の AP ベースのジオフェンス追跡に切り替え、GNSS ハードウェアがジオフェンスを復旧および追跡できるようになります。
GNSS エンジンがジオフェンスを追跡できないことを通知する必要がある条件は異なり、その条件は IHV 特有の実装によって決まります。 実装のガイドラインを次に示します。
ユーザーが移動せず、ジオフェンス境界が 25 メートル以下で存在しないという確信を持って、GNS エンジンが検出できる場合は、追跡エラーを送信する必要はありません。
ユーザーが移動していないが、ジオフェンス境界が 25 メートル以下であることを高い信頼度で検出できる場合は、1 分以内に追跡エラーを送信する必要があります。
GNSSエンジンがユーザーが移動中であることを検知し、ジオフェンス境界が100メートル以内にある場合、GNSSエンジンは1分以内にトラッキングエラーを送信する必要があります。
ユーザーが移動していて、ジオフェンス境界が 100 メートル以内にあるかどうかを確認できない場合は、1 分以内に追跡エラーを送信する必要があります。
ユーザーが移動していることを確認している場合は、推定移動速度と最も近いジオフェンスまでの距離に比例した時間で追跡エラーを送信する必要があります。 最も近いフェンスの境界までの距離(m)を推定速度(m/s)で割った時間から15秒を引いた時間内にエラーを送信することを推奨します。 GNSSエンジンは移動検出の指標を用いて、追跡エラーを報告するタイミングを決定することができます。
ユーザーが移動しているかどうかを確認できない場合、移動速度と最も近いジオフェンスまでの距離に比例した時間で追跡エラーを送信する必要があります。 最も近いフェンス境界までの距離(m) / 343(m/s)内でエラーを報告することをお勧めします。
GNSV エンジンがジオフェンス追跡ステータス エラーを報告した期間中、HLOS に送信されるジオフェンス違反イベントは存在しません。
HLOS では、以前に作成したすべてのジオフェンスを 1 つのコマンドで削除することで、ジオフェンス追跡をリセットできます。
モバイル発信のジオフェンスは、再起動やドライバーの再起動時には、GNSSハードウェアやドライバーに保持されません。 HLOS は、エンドユーザー アプリケーションに代わって永続化を処理し、必要に応じてジオフェンスを作成または削除します。
ネイティブジオフェンシングオフロードをサポートするGNSDアダプタとGNSCエンジン間の相互作用に関しては、ジオフェンス追跡障害の場合、GNSアダプタは次のように行います。
これは、GNSS ドライバーが追跡に失敗を返した後、AP ベースの追跡を使用します。
OS レベルで現在追跡されているジオフェンス内の更新 (追加/削除) も引き続きドライバーにプッシュされるため、同期中です。これにより、現在 OS によって追跡されているジオフェンスを確認するために、GNS エンジンが役立ちます。また、新しいデータに基づいて判断を追跡したり、追跡したりできないようにすることができます。
GPS ドライバーが追跡する機能で SUCCESS を返すと、AP ベースのトラッカーによって決定されたジオフェンス状態の変化がプッシュされます。
支援とヘルパー データのドライバー通知
時には、GNSS ドライバーが GNSS アダプターから補助データや補助アクションを必要とすることがあります。 これには、さまざまな形式の AGNSS データ(時刻注入、衛星軌道情報、初期粗位置)、ネットワークで開始されるユーザープレーン測位をサポートするためのユーザー同意ポップアップなどが含まれます。
GNSS支援データは、GNSRアダプタを使用せずにGNSドライバが取得できます。 ただし、いくつかの理由から、支援データは、GPS アダプターを使用して取得し、Microsoft の配置サービスを利用することをお勧めします。
Microsoft ロケーション スタックは、データ接続を確立し、ローミングの制約、データの基本設定、ネットワークの静かなモードの統合などを行います。
Microsoft の配置サービスは、サーバー間バックエンド接続を介して IHV に固有の支援データを定期的に取得し、必要なすべてのデバイスに提供できるため、IHV は可用性、スケーラビリティ、応答性の要件を満たすフロントエンド アシスタンス サービスを世界中に展開する必要性を節約できます。
受信トレイ アプリケーションのプライバシーに関するユーザーの同意は、オペレーティング システムによって所有されます。 そのため、ネットワーク開始場所要求についてユーザーに通知する UI、またはネットワーク開始場所要求に応答するためにユーザーに同意を要求する UI は、Microsoft によって所有されます。 ネットワークによって開始された場所の要求が受信されたときに、GNSS ドライバーは、デバイス アダプターに通知し、必要に応じて、要求を処理する前に、ユーザーからの応答を既定の時刻まで待機します。
GNSS ドライバーが独自に上層への要求を開始できないため、この種の操作は、GNSS アダプターが事前に GNSS ドライバーからの要求を積極的に探すことで実現できます。このため、GNSS アダプターは、GNSS ドライバーがそのような要求に応答できるように、常に 1 つまたは複数の保留中の IRP を保持します。 支援/ヘルパーについてのリクエストを受信すると、GNSSアダプタはデータを取得する(またはGNSSドライバーの代わりに特定のアクションを実行する)し、その後、別の DeviceIoControl 呼び出しを通じて、必要な情報をGNSSドライバーに挿入します。
ドライバーからの通知は、共通のイベント モデルによって処理されます。 たとえば、GNSS 支援の場合、GNSS アダプタは、制御コード IOCTL_GNSS_LISTEN_AGNSS を使用して、GNSS ドライバーから AGNSS 要求を受信します。 その後、GNSSアダプターはAGNSSアシスタンスデータをフェッチし、データをGNSSドライバーにプッシュするためのIOCTL_GNSS_INJECT_AGNSSを発行します。
この通知メカニズムは、ジオフェンス関連のアラート データと状態の更新を受信するためにも使用されます。 アダプターは、個々のジオフェンス アラートを受信するための制御コード IOCTL_GNSS_LISTEN_GEOFENCE_ALERT と、ジオフェンス追跡の全体的な状態の変化を受信するための IOCTL_GNSS_LISTEN_GEOFENCES_TRACKINGSTATUS を使用します。
グローバル ナビゲーション サテライト システム (GNS) ドライバーのログ記録
診断の目的で、次に説明する Microsoft の規定されたログメカニズム (WPP) または ETW を使用して、エラーやその他の診断情報を記録する必要があります。 ドライバーでは ETW ではなくログ記録の目的で WPP を使用することをお勧めしますが、両方のメカニズムがサポートされています。 WPP が推奨される理由の 1 つは、ドライバーのデバッグに役立つツールの可用性です。
ドライバーは、この規定のログ記録手法を使用する場合を除き、人間が判読できる情報をログに記録してはなりません。 詳細については、「 WPP ソフトウェア トレース」を参照してください。
WPP ソフトウェア トレースを使用したメッセージのログ記録は、Windows イベント ログ サービスの使用と似ています。 ドライバーは、メッセージ ID と書式設定されていないバイナリ データをログ ファイルに記録します。 その後、後処理プログラムはログ ファイル内の情報を人間が判読できる形式に変換します。 ただし、WPP ソフトウェア トレースでは、イベント ログ サービスでサポートされる形式よりも高い能力と柔軟性を備えたメッセージ形式がサポートされています。 たとえば、WPP ソフトウェア トレースには、IP アドレス、GUID、システム ID、タイム スタンプ、およびその他の便利なデータ型が組み込まれています。 さらに、ユーザーはアプリケーションに関連するカスタム データ型を追加できます。
携帯電話会社プロトコルのサポート
IHV が提供する GPS スタック (GPS ドライバー、GPS デバイス/エンジン) は、さまざまな携帯電話会社の配置プロトコル (SUPL、UPL、CP など) をサポートするために必要です。 これを行わないと、デバイスは携帯電話会社からの受け入れに合格せず、デバイスを製品化できる場所が大幅に制限されます。
特定の携帯電話会社向けのデバイスを出荷するには、これらのプロトコルのサポートと携帯電話会社の要件への準拠が必須です。 モバイル ブロードバンド (MBB) のサポートがプラットフォームに含まれていない場合は特に、携帯電話以外のプラットフォームでは、携帯電話会社のプロトコルのサポートが不可欠でない場合があります。
すべての実装部分は IHV スタックに抽象化され、Microsoft HLOS コンポーネントは次に依存しません。
プロトコルの具体的な実装の詳細 (プロトコルのしくみ、プロトコル メッセージの解釈など)。
実装スタックの形状 (たとえば、実装は、GNSS デバイス/エンジン、またはGNSV ドライバー内に配置できます。または、別の HLOS サービスが必要な場合)。
プロトコルを実装するための IHV 所有のGNSS スタック内のさまざまな部分間の相互作用。 たとえば、特定の SUPL プロトコル メッセージに応答するために、Wi-Fi スキャン結果が必要な場合は、プライベート IOCTL 呼び出しを通じてドライバーに Wi-Fi スキャン結果をユーザー モード拡張機能で挿入するか、UMDF 2.0 ドライバーのこの部分を作成するか、この操作を下位レベルで処理します。 Microsoft GNSS HLOS コンポーネントは、IHV の GNSS スタック コンポーネント間のこのような相互作用に気づいていません。
要約すると、IHV または OEM は、SUPL クライアント (およびシステムが中国に出荷される場合は UPL クライアントの可能性があります) を提供し、それをGNSV ドライバーと統合する必要があります。 位置プラットフォームと SUPL クライアントのすべての対話は、GNSDDI を介して行われます。
携帯電話会社のプロトコルの実装を容易にし、プラットフォーム固有のテクノロジを使用したソフトウェア開発の負担を軽減するために、NFS アダプターは IHV のGNSS スタックに特定の機能を提供します。 このような機能を HLOS コンポーネントから受信するための仲介役として、たとえば、GNS アダプターは、IHV の GNSV スタックの他の部分ではなく、GNS ドライバーとのみ対話します。 GNSS ドライバーの IOCTL は、このような機能の構文とセマンティクスを定義します。GNSS ドライバーとGNSS アダプターの間で。 モバイル オペレーター プロトコルを実装する特定の IHV コンポーネントへのルーティングは、NFS ドライバーが担当します。 大まかに言えば、このGNSSアダプターは、次の機能をGNSSドライバに提供します。
構成: 携帯電話会社は、OMA プロトコル標準によって課される構成メカニズムを使用して、デバイスをプロビジョニングし、構成を変更します。 たとえば、SUPL 標準では、UICC に基づいて SUPL 構成を行うか、OMA-DM または OMA-CP を介して取得した SUPL OMA 構成プロファイル情報を使用して行う必要があります。
構成目的で電話で使用できる特定の機能 (OMA-DM および OMA CP) は、Windows 10 まで他のプラットフォームでは使用できませんでした。 Windows 10 以降では、新しいGNSC DDI が使用されている限り、すべてのプラットフォームで SUPL 構成サービス プロバイダー (CSP) 経由で SUPL 構成をサポートできます。 CSP を介して挿入されるプロビジョニングは、イメージ自体 (provxml または多変量) から、または携帯電話会社から OMA-DM または OMA-CP 経由で取得できます。 SUPL CSP は、 SUPL CSP で定義されています。
Windows 10 では、構成データを解釈および抽出するための独自のテクノロジである、構成サービス プロバイダー (CSP) を使用したデバイス管理が定義されています。 Microsoft では、OMA 構成を使用し、その構成をGNSS アダプターを介してGNSS ドライバーにプッシュするための CSP を提供しています。
または、IHV は、電話固有のデバイス管理テクノロジ (CSP) を使用して携帯電話会社の構成仕様を使用するユーザー モード コンポーネントを記述することもできます。 ただし、これは IHV に対する追加の負担となり、推奨されません。
デュアル SIM デバイスの場合を含め、システムでサポートされる SUPL 構成は 1 つだけです。 Microsoft では、UICC と UICC の変更に基づいて SUPL を再構成する機能を提供しています。 これに加えて、デバイス ローミングの場合、HLOS はスタンドアロン モードで動作するように SUPL クライアントを再構成します。 このドキュメントでは、さまざまなモバイル操作プロトコル (SUPL 1.0 および 2.0、v2UPL など) に対してこのような構成データをプッシュするための IOCTL を定義します。
NI の要求に対するユーザーの同意の処理: プライバシー要件を満たすために、特定のネットワークによって開始される配置要求には、ユーザーの同意が必要です。 IHV は、プラットフォーム コンポーネントの UI を記述できません。 そのため、ユーザーの同意を得るための UI は、GNSD アダプターによって処理されます。 UI ポップアップを要求するGNSD ドライバーの通知 IOCTL と、このような要求に対するユーザーの応答を伝達するGNSR アダプターの IOCTL は、GNS ドライバーの IOCTL で定義されています。
完全に機能する SUPL クライアントを実装するには、IHV スタックで、OS プラットフォームで使用できるインターフェイスまたは一般的な機能を使用する必要があります。 Windows 10 で使用できる機能の一覧を以下に示します。これらの機能は、IHV が SUPL クライアントを実装する際に活用できます。
この機能のいずれも場所プラットフォームまたはGNSD DDIの一部ではありませんが、説明のためにここに含まれており、SSDドライバー開発者がSUPL機能を実装するためにOSから何を利用できるかを理解するのに役立ちます。
SMS ルーター: SMS ルータは SUPL クライアントが SUPL NI 要求を運ぶ SIP プッシュ メッセージの WAP プッシュにサブスクライブすることを可能にします。
接続マネージャーは、このような接続を要求するために SUPL と API に使用する接続を構成する機能です 。携帯電話会社は、専用接続で SUPL トラフィックを使用するか、既定のインターネット接続とは異なる接続を使用する必要がある場合があります。 これを行うには、 接続マネージャー で次の情報が提供されます。
OEM または携帯電話会社が SUPL 通信の目的で使用する接続を構成するために使用できる構成サービス プロバイダー。
SUPL 接続の接続パラメーターを照会する SUPL クライアント用の API。
前の手順で取得したパラメーターを使用して、SUPL 接続を確立する API。
携帯ネットワーク接続の構成: さまざまな携帯ネットワーク接続のパラメーター (SUPL 接続のパラメーターなど) を構成するには、OEM または携帯電話会社が使用できる構成サービス プロバイダーがあります。 その後、接続 マネージャー でこの接続を SUPL の目的に関連付けることができます。
SUPL 接続の進行中に接続をアクティブにしておく要求: SUPL クライアントは、システムがコネクト スタンバイ状態にある間に HSLP との接続を開始することが必要になる場合があります。 これは、MICROSOFT ベースの配置を使用するように構成されている場合、または携帯電話会社が NI 要求を送信した場合に、GPS デバイスが支援情報を取得する必要があるために発生する可能性があります。 その場合、SUPL クライアントは HSLP との接続を開始し、SUPL セッションが完了するまで接続がアクティブであることを確認する必要があります。
モバイル ブロードバンド (MBB) モジュールとの対話: Windows 10 では、HLOS を介して携帯電話の測定値を取得したり、緊急通報がいつ行われたか把握したりするための API はありません。 MBB との対話は、(AT コマンドまたはその他の独自の方法を使用して) MBB と直接統合して行う必要があります。
製造テスト
OEM は、製造時に検証する方法を用意する必要があります。また、顧客サポートポイントで、GNSS ハードウェアとGNSV スタック (GNSV ドライバーとGNSS デバイス/エンジン) が正しく動作していることを確認する必要があります。 IHV は、OEM がこのテストを実行できるようにする独自のメカニズムを提供することも、必要に応じて DDI にインターフェイスを実装して OEM が製造テストを開始し、結果を取得できるようにすることもできます。
テストの大きな焦点がハードウェア検証またはドライバーの検証であることを考えると、製造テストの実行時に場所フレームワークはバイパスされます。 一般に、デバイスは、コンポーネントとサービスの最小セットが読み込まれる特別な "安全なオペレーティング システム モード" になります。 このモードでは、OEM はテスト ケースをトリガーする一連のテスト アプリケーションを開始できます。 製造時の効率と速度を高めるために、さまざまなコンポーネント内のテストに対するコンカレンシーのサポートが必要です。
製造テストのインターフェイスには、次の 2 種類のテストが含まれています。
キャリアウェーブテスト: このテストでは、外部接続/アンテナ テストを検証します。 このテストでは、GNSエンジンはCW信号を検索し、応答でSNR(信号対ノイズ・レートまたはキャリアからノイズ・レート)の測定値を提供する必要があります。 理想的には、テストは 10 Hz で応答を返す必要があります。
自己テスト: このテストでは、GNS エンジンの基本的な機能を検証します。 自己テストでは、エンジンの基本的な問題 (欠陥のあるハードウェア、外部信号を挿入することなく、GNSS ハードウェアの不良接続) を検出できる必要があります。 この検証の目的は、この安価なテストを行い、デバイスがより包括的で高価なテストを行う前に、生産ラインのゲートとして使用することです。 このテストでは、GNS エンジンとドライバーは、ピン接続の自己検証を行い、すべてが問題ない、またはエラーが発生したことを示す状態コードを返す必要があります。 エラーのエラー コードは、エラーが検出されたことを示す必要があります。 エラー コードは IHV によって設定されます。
I/O に関する考慮事項
デバイス ドライバーに対する従来のファイルの読み取りおよび書き込み要求には、GNSS 機能はマップされないため、 READFile 関数と WriteFile 関数は、GNS ドライバー API には使用されません。 すべてのGNSV機能は、適切に定義されたGNSV固有のデバイスI/O制御(DeviceIoControl)要求(IOCTLとも呼ばれます)を使用して実装されます。
すべての IOCTL は、入力データと出力データの両方のデータ転送メカニズムとしてMETHOD_BUFFEREDを使用します。 GNSS 関連のデータのサイズは比較的小さいため、余分なバッファーコピーはシステムのパフォーマンスに影響を与えるべきではありません。
GNSS ドライバーは、CreateFile 関数のFILE_FLAG_OVERLAPPEDオプションを使用して開きます。 そのため、すべての IOCTL は暗黙的に非同期です。 ただし、ほとんどの GNSID IOCTL は意味的に非同期ですが (たとえば、IOCTL はドライバー内のアクティビティをトリガーし、結果は非同期的に返されることが予想されます)、一部の IOCTL は、このような IOCTL に関連する論理的な非同期アクションやアクティビティが存在しないという意味で意味的に同期されます。 これらの少数の IOCTL の同期動作は、I/O 操作が完了するまで DeviceIoControl 呼び出しを発行した後に、EWS アダプター スレッドをブロックすることによって実現されます。 したがって、すべての IOCTL の処理の一部として IRP を常に完了するのは、GNSR ドライバーの責任です。 GNSS アダプターは、同期呼び出しの契約に従い、エラーが発生した場合、これらのコマンドを再試行することもあれば、再試行しないこともあります。 IHV ドライバーは、エラーを返す前に、ドライバー側のすべてのロジックが組み込まれていることを確認する必要があります。
要求操作と応答操作において、GNSS アダプターは常に保留中の I/O 操作を確保しています。これにより、GNSS ドライバーが以前の操作への応答データを送信する際に、その応答を保留中の IRP を通じて送信できます。
シングル ショット セッション
ドライバーに対する 1 回のショット修正の開始修正要求には、精度と応答時間の値が含まれます。 これらの値を使用して、アプリケーション要求の意図を理解し、インテリジェントな意思決定を行うことができます。 ドライバーによって要求が受信されると、エンジンによって生成された中間修正プログラムの返しを開始する必要があります。 中間修正は、精度の要件を満たす修正プログラムまたは最終修正プログラムを計算するときにエンジンによって生成される修正です。 これらの中間修正の頻度は強制されておらず、そしてそれはエンジンの実装の詳細です。 GNSSアダプターは数秒ごとに位置情報の修正が行われ、前回の中間修正とは異なることを想定しています。
現在の信号条件下ではより良い修正プログラムを取得できないと判断した場合、最終的な修正プログラムを返し、それ以上の計算を停止する必要があります。 最後の修正は、精度の要件を満たすか、エンジンが現在の条件下で提供される精度を向上できないことを示します。
GNSS アダプターは、以下のいずれかのケースで単一ショットセッションの終了を発行します。
ドライバーから最終的な修正を受け取ります。
要求の応答時間が限界に達しました。 ここで、最後の中間修正がアプリケーションに送信されます。
次の図は、2 つのシングル ショット セッションを示しています。
セッション 1: ドライバーには、精度と応答時間のパラメーターが与えられました。 修正の開始コマンドの後、ドライバーは中間修正プログラムの送信を開始しました。 しばらくすると、より正確な修正プログラムを返すことができないと判断され、最後の修正が最終修正として示されました。 これは、応答時間の制限に達する前に発生しました。 アダプターは、最終的な修正プログラムをアプリケーションに送信し、修正停止コマンドを発行しました。
セッション 2: 上記のセッション 1 と同じですが、この場合、エンジンは精度の要件を満たすためにより良い修正を行い続け、中間修正を送信し続けました。 セッション応答時間の制限に達すると、アダプターは、ドライバーでこのセッションを閉じる必要がある停止修正プログラムを発行しました。 最後に受信した中間修正プログラムがアプリケーションに送信されました。
シングル ショット サポートを実装する際に考慮すべき重要な設計の 1 つの側面は、距離ベースの追跡セッションと時間ベースの追跡セッションの両方がサポートされていない場合、停止修正コマンドを受け取った後、3 ~ 5 秒間、サテライトの追跡を続行する必要があるということです。 これは、単発の修正セッションを使用して距離ベースの追跡セッションや時間ベースの追跡セッションをシミュレートする必要があるためです。さらに、GNSSエンジンがサテライトの追跡を直ちに停止した場合、ほとんどのGNSSデバイスは、ナビゲーション、ランニング追跡、またはマッピングアプリケーションの要件を満たすシミュレートされた追跡セッションを実装することができない取得の遅延を引き起こします。
GNSS アダプターは、システムがアクティブな状態のときだけでなく、コネクテッドスタンバイ状態にあるときにも、シングルショット修正を要求することがあります。 これは、バックグラウンド タスク、システム サービス、アプリケーション プロセッサでのジオフェンス追跡などのニーズを満たすために発生する可能性があります。 GNSSドライバーはこれらのセッション要求をGNSSデバイスに渡し、その要求を満たすか、またはGNSSアダプターにエラーを報告できるものとします。
次のシーケンス図は、スタンドアロンのGNSS修正プログラムの取得に関連する大まかなアクションを示しています。 これには、支援データの要求は含まれません。
シーケンスの説明は次のとおりです。
GNSS アダプターは、 CreateFile API を使用して、GNSS ドライバーを開きます。 WDF/KMDF/UMDF は、必要な省略可能なコールバックを GNSS ドライバーに対して行います。 返されるファイル ハンドルは、後続のすべての操作に使用されます。
さまざまなプラットフォーム機能をドライバーに通信するために、GNSS アダプターは IOCTL を発行します。 GNSS ドライバーは I/O 操作を完了します。
GNSSアダプタは、デバイスの機能を取得するためにIOCTLを発行します。 GNSSドライバーはデバイスの機能を返し、I/O操作を完了します。
GNSSアダプタは、任意のドライバー固有の構成またはコマンドに対してIOCTLsを発行します。 GNSS ドライバーが必要なアクションを実行し、I/O 操作を完了します。
GNSS アダプターは、修正プログラムのタイプおよびその他の側面を指定するパラメーターと共に、 IOCTL_GNSS_START_FIXSESSIONを発行します。 この IOCTL を受信すると、基になるデバイスとやり取りして修正プログラムの受信を開始し、その後、I/O 操作を完了します。
GNSSアダプターは IOCTL_GNSS_GET_FIXDATA を実行し、I/O の完了を待機します。 GNSSドライバに利用可能な中間位置解がある場合、常に、I/O操作を通じてデータを返します。
手順 6 は、もう修正が必要ない (最終的な修正プログラムを受け取った) ことを、GNS ドライバーが示すまで繰り返されます。
GNSSアダプタはIOCTL_GNSS_STOP_FIXSESSIONを発行します。 元の修正要求に関連付けられている必要なクリーンアップ操作は、GNSS ドライバーによって行われます。
CloseHandle API を使用して、GNSS アダプターはドライバー ファイル ハンドルを閉じます。
GNSR IOCTL および関連するデータ構造については、 GNSS ドライバーのリファレンスで詳しく説明されています。
距離ベースの追跡セッション
距離ベースの追跡セッションは、従来、.NET API で使用できる唯一のセッションの種類であったため、エンド ユーザー アプリケーションによって頻繁に使用されます。 距離値 0 は、GNS エンジンが修正を可能な限り高いレートで提供することを示します。
GNSDアダプターは、後者が 機能 SupportDistanceTracking を持っている場合にのみ、距離追跡セッションを開始します。
距離追跡セッション用のドライバーに対する開始フィックス要求には、求められる水平方向の精度と、移動のしきい値が含まれます。このしきい値は、GNSSドライバーが位置を更新する前にシステムがカバーする必要があるハバサイン距離(メートル)です。 これらの値を利用して、アプリケーション要求の意図を理解し、場所を確認する頻度を調整するなど、インテリジェントな決定を行うことができます。
ドライバーが修正の開始要求を受け取ったら、最終的な修正プログラムを取得するまで、エンジンによって生成された中間修正プログラムの返しを開始する必要があります。 これはセッションの最初の位置と見なされます。 この後、GNSエンジンは、前者の距離がほぼカバーされていることを検出するたびに修正プログラムの提供を開始しなければなりません。
デバイスの位置を追跡できないと判断した場合 (サテライトが表示されなくなった場合など)、位置プラットフォームが他のメカニズムにフォールバックしてエンド ユーザー アプリケーションに位置更新を提供できるように、デバイスの位置を追跡できないと判断した場合は、エラーをGNSS アダプターに返す必要があります。 GNSSアダプタは、次の時間内にエラーを報告します。
[(最後に確認した位置からの残り距離 (m) / 推定速度 (m/s)) - 5秒] または 5秒のうち、いずれか大きい方。
GNSSエンジンがGNSSアダプタにエラーを提供したが、まだGNSDアダプタが追跡セッションを停止していない場合、電力最適化された方法で、追跡場所を再開できる場合は、引き続き確認する必要があります。 IHV では、最適化を使用して、この検出を低電力で行うことができます。 最適化の一般的な手法は次のとおりです。
プログレッシブ バックオフ
デバイスの動きを示す低コストの信号が再確認されるのを待っている
衛星信号の低電力テスト
エラー状態の後、再びGNSSエンジンが最終位置情報を提供できるようになった場合、追跡が正常に再開されたことを示す位置をGNSSアダプターに送信する必要があります。
追跡セッションを要求した 1 つ以上のアプリケーションが要求を取り消した場合、または新しいアプリケーションが距離ベースの追跡セッションを要求している場合は、距離ベースの追跡セッションに対して変更修正コマンドを発行します。 このような場合、複数のアクティブなセッションを多重化するために必要な新しい集約セッション パラメーターが計算され、これらのパラメーターでGNSD ドライバーが更新されます。
次の場合、距離ベースの追跡セッションに対して、GNS アダプターが停止修正コマンドを発行します。
追跡セッションは、システムで使用可能な別の位置決めエンジンに引き渡されました。
追跡セッションを要求したアプリケーションは、要求を取り消しました。
次の図は、2 つの距離ベースの追跡セッションを示しています。
セッション 1: 追跡セッションを開始するときに、GNSS ドライバーに精度と移動のしきい値パラメーターが与えられました。 start fix コマンドの後、ドライバーは、最終修正情報を取得するか、精度要件を満たす修正情報を取得するまで中間修正情報の送信を開始します。このような修正情報が GNSS アダプタに提供され、その後 GNSS エンジンが距離追跡プロセスを開始します。 セッションがアクティブな間、セッション・アダプターはセッション・パラメーターを変更する要求を T1 および T2 時に送信します。 パラメーターの各変更後、GNS ドライバーは、修正プログラムの更新プログラムを送信する、GNS アダプターが停止修正コマンドを送信するまで、新しいパラメーターとの距離追跡セッションを再開します。
セッション 2: セッション開始プロセスは上記のセッション 1 に似ていますが、特定の時点で、GNSS エンジンは位置を追跡できません。 距離と推定移動速度に依存する時間が経過すると、GNSS ドライバーはエラーを送信します。 回復可能な場合は、低電力モードで動作を続け、回復すると、新しい位置情報を送信して、GNSSアダプタに回復を知らせます。 セッションは、必要に応じて、MFA アダプターが停止修正コマンドを送信するまで、新しい修正プログラムで更新されます。
GNSSアダプターは、システムがコネクテッドスタンバイ状態にある間、システムがアクティブな場合だけでなく、常にアクティブな状態を保ったり、距離ベースの追跡セッションを開始したりすることがあります。 これは、バックグラウンド タスク、システム サービス、アプリケーション プロセッサでのジオフェンス追跡などのニーズを満たすために発生する可能性があります。 GNSSドライバーはこれらのセッション要求をGNSSデバイスに渡し、その要求を満たすか、またはGNSSアダプターにエラーを報告できるものとします。
時間ベースの追跡セッション
時間ベースの追跡セッションは、ユーザー インターフェイス (マップ、ナビゲーション アプリケーションなど) を更新するために頻繁かつ定期的な位置の更新を必要とするアプリケーションで使用できます。
GNSS ドライバーがSupportContinuousTracking機能を備えていることを示した場合にのみ、GNSSアダプターは時間ベースの追跡セッションを開始します。
時間ベースの追跡セッションのドライバーに対する修正の開始要求には、必要な水平方向の精度と、位置の更新を提供する必要があるGNSS ドライバーが優先する時間間隔が含まれます。 これらの値を利用して、アプリケーション要求の意図を理解し、位置を確認する頻度を調整したり、間隔の数秒前にサテライトの取得を開始したりして、位置の更新をタイムリーに提供するなど、インテリジェントな決定を行うことができます。
ドライバーが修正の開始要求を受け取ったら、最終的な修正プログラムを取得するまで、エンジンによって生成された中間修正プログラムの返しを開始する必要があります。 これはセッションの最初の位置と見なされます。 この後、セッション パラメーターに必要な間隔で修正プログラムの提供が開始されます。 アプリケーションに必要な周波数で位置を提供できない場合は、可能な最大レートで修正を提供する必要があります。
デバイスの位置を追跡できないと判断した場合 (サテライトが表示されなくなった場合など)、位置プラットフォームが他のメカニズムにフォールバックしてエンド ユーザー アプリケーションに位置の更新を提供できるように、デバイスの位置を追跡できないと判断した場合は、エラーをGNS アダプターに返す必要があります。
GNSSエンジンがGNSSアダプタにエラーを提供したが、まだGNSDアダプタが追跡セッションを停止していない場合、電力最適化された方法で、追跡場所を再開できる場合は、引き続き確認する必要があります。
IHV では、前のセクションで説明したように、最適化を使用して、この検出を低電力で行うことができます。 エラー状態の後、GNSSエンジンが再び最終的な位置を提供できるようになったら、その位置をGNSSアダプターに送信して、追跡が正常に再開されたことを示す必要があります。
追跡セッションを要求した 1 つ以上のアプリケーションが要求を取り消した場合、または新しいアプリケーションが時間ベースの追跡セッションを要求している場合は、時間ベースの追跡セッションに対して変更修正コマンドを発行します。 このような場合、複数のアクティブなセッションを多重化するために必要な新しい集約セッション パラメーターが計算され、これらのパラメーターでGNSD ドライバーが更新されます。
次の場合、時間ベースの追跡セッションに対して、GNS アダプターは停止修正コマンドを発行します。
追跡セッションは、システムで使用可能な別の位置決めエンジンに引き渡されました。
追跡セッションを要求したアプリケーションは、要求を取り消しました。
次の図は、2 つの時間ベースの追跡セッションを示しています。
セッション 1: 追跡セッションを開始するときに、GNSS ドライバーに精度と優先間隔パラメーターが与えられました。 修正の開始コマンドの後、ドライバーは、最終修正または精度要件を満たす修正を取得するまで、中間修正を送信し始める必要があります。その時点でその修正がGNSSアダプターに提供され、GNSSエンジンは時間ベースの追跡プロセスを開始します。 セッションがアクティブな間、セッション・アダプターはセッション・パラメーターを変更する要求を T1 および T2 時に送信します。 各パラメーターの変更後、GNSS ドライバーは GNSS アダプターに位置情報の更新を送り、次に新しいパラメーターを使って時間ベースの追跡セッションを再開します。この追跡セッションは、GNSS アダプターが停止コマンドを送信するまで続きます。
セッション 2: セッション開始プロセスはセッション 1 と似ていますが、特定の時点でGNSSエンジンが位置を追跡できなくなります。 セッション パラメーターに必要な間隔から 15 秒以内に、GNSS エンジンが修正プログラムを提供できない場合、エラーが送信されます。 GNSSエンジンは、回復可能な場合にはより低い電力でチェックを続け、回復すると新しい位置情報を送信してGNSSアダプターに通知します。 セッションは、必要に応じて、MFA アダプターが停止修正コマンドを送信するまで、新しい修正プログラムで更新されます。
GNSSアダプターは、システムがアクティブな場合だけでなく、コネクトスタンバイ状態にある間にも、アクティブな状態を保ったり、時間ベースの追跡セッションを開始することがあります。 これは、バックグラウンド タスク、システム サービス、アプリケーション プロセッサでのジオフェンス追跡、またはその他のケースのニーズを満たすために発生する可能性があります。 GNSSドライバーは、これらのセッション要求をGNSSデバイスに渡し、それらの要求を満たすか、GNSSアダプターにエラーを提供できるものとします。
さまざまなタイプの修正セッションを同時に処理する
一部の高度なGNSSエンジンは、Distance-Based や Time-Based 追跡セッションを使用して、シングルショットセッションを同時に処理できる場合があります。 理想的には独立したセッションは互いに影響を与えるべきではありませんが、これは常に可能であるとは限りません。特に、単一ショットと時間ベースの追跡セッションが同時に実行される場合に限られます。 このセクションでは、さまざまな種類の同時セッションを処理するために侵害を行う必要がある場合に備えて、IHV の実装に関するいくつかのガイドラインを示します。
このセクションでは、次の頭字語を使用します。
SS: シングル ショット セッション
DBT: 距離ベースの追跡セッション
TBT: 時間ベースの追跡セッション
TBF: 修正間隔
次の表に、シングル ショットと時間ベースの追跡セッションを同時に処理するシナリオをいくつか示します。
| 場合 | SS はアクティブですか? | TBT はアクティブですか? | ケースの詳細 | 修正の許容間隔 | コメント |
|---|---|---|---|---|---|
| 1 | X | X | TBT定期的なセッションが開始された時点で、残りのタイムアウトが>=間隔のSSセッションが進行中である場合 | TBT 間隔と同じ |
SS セッションの動作: 中間修正と最終修正は、タイムアウトまで送信されます。 停止が受信された直後にセッションが閉じられました。 TBT セッションの動作: 中間修正と最終修正が送信されます。 設定された間隔に従ってほぼ受信された修正。 停止が受信された直後にセッションが閉じられました。 |
| 2 | X | X | 残りのタイムアウト < 間隔で開始された TBT 定期的なセッションの時点で進行中の SS セッション | 間隔は、SS セッションが満たされるまで、SS タイムアウトと同じままです。 その後、間隔を TBT 間隔と同じに更新できます。 |
SS セッションの動作: 中間修正と最終修正は、タイムアウトまで送信されます。 停止が受信された直後にセッションが閉じられました。 TBT セッションの動作: 中間修正と最終修正が送信される 修正は、ほぼ間隔に従って受け取りましたが、SS セッションが実行されている間は、より頻繁に行われる可能性があります。 停止が受信された直後にセッションが閉じられました。 |
| 3 | X | X | 進行中の TBT の定期セッション(タイムアウト >= 間隔で開始中)の間に SS セッションが開始されました。 | TBT 間隔と同じ |
SS セッションの動作: 中間修正と最終修正は、タイムアウトまで送信されます。 停止が受信された直後にセッションが閉じられました。 TBT セッションの動作: 中間修正と最終修正が送信される 設定された間隔に従ってほぼ受信された修正。 停止が受信された直後にセッションが閉じられました。 |
| 4 | X | X | TBTの定期的なセッションがタイムアウト<間隔で進行中の間に、SSセッションが開始されました。 | 間隔は、SS セッションが満たされるまで、SS タイムアウトと同じに変更されます。 その後、間隔を TBT 間隔と同じに更新できます。 |
SS セッションの動作: 中間修正と最終修正は、タイムアウトまで送信されます。 停止が受信された直後にセッションが閉じられました。 TBT セッションの動作: 中間修正と最終修正が送信されます。 修正プログラムは、おおよそ定期的に受信されますが、SS セッションが進行中の間は、より頻繁になる可能性があります。 停止が受信された直後にセッションが閉じられました。 |
| 5 | X | 間隔が変更されてTBTの定期セッションが開始されました。 | モデムとのセッションは、TBT 間隔と同じに新しい間隔に更新されます。 必要に応じて、モデム セッションが再起動されます。 |
SS セッションの動作: 適用なし TBT セッションの動作: 中間修正と最終修正が送信されます。 ほぼ一定の間隔で修正が配信されました。 停止が受信された直後にセッションが閉じられました。 |
|
| 6 | X | X | 進行中の TBT 定期的なセッションが間隔の変更を受け取った時点で進行中の SS セッション。残りのタイムアウト >= 間隔 | TBT 間隔と同じ |
SS セッションの動作: 中間修正と最終修正は、タイムアウトまで送信されます。 停止が受信された直後にセッションが閉じられました。 TBT セッションの動作: 中間修正と最終修正が送信される 設定された間隔に従ってほぼ受信された修正。 停止が受信された直後にセッションが閉じられました。 |
| 7 | X | X | TBT 定期的なセッションが間隔の変更を受け取ったとき、進行中の SS セッションが存在し、残りのタイムアウトが < 間隔です。 | 間隔は、SS セッションが満たされるまで、SS の残りのタイムアウトと同じに変更されます。 その後、間隔を TBT 間隔と同じに更新できます。 |
SS セッションの動作: 中間修正と最終修正は、タイムアウトまで送信されます。 停止を受信した直後にセッションが閉じられました。/li> TBT セッションの動作: 中間修正と最終修正が送信される 修正は、ほぼ間隔に従って受け取りましたが、SS セッションが実行されている間は、より頻繁に行われる可能性があります。 停止が受信された直後にセッションが閉じられました。 |
時間ベースと距離ベースの追跡セッションの両方が同時に存在する場合は、2 つの最小で動作するように、GNSS エンジンの精度追跡を設定できます。 次の表では、1 回のショットと追跡のセッションが同時にある場合に必要な精度に関するさまざまな値の場合のガイドラインも示します。
| 場合 | SS 精度 | DBT または TBT の精度 | 全体的なGNSSエンジンの精度 | コメント |
|---|---|---|---|---|
| 1 | 中/低 --> 高 | 適用なし | 中/低 --> 高 |
SS セッションの動作: 高精度の結果を得るために、GNSSデバイスとのセッションが更新または再起動されます。 中間修正プログラムは、利用可能になり次第、HLOS に提供されます。 |
| 2 | 高 --> 中/低 | 適用なし | 高> 中/低 |
SS セッションの動作: 中/低の精度の結果を得るために、GNSSデバイスとのセッションが更新または再起動されます。 要件を満たす修正プログラムが既に利用可能な場合は、最終的な修正プログラムとして返されます。 その他の場合には、中間修正が利用可能になるとすぐに HLOS に提供されます。 |
| 3 | 中/低 --> 高 | 高 | 高 |
SS セッションの動作: DBT または TBT セッションに対して高い精度のセッションが既に存在することを考えると、SS セッションは、必要な最終的な精度が得られるか、最終的な修正が取得されるまで、HLOS に対してさらに中間的な修正を提供するだけです。 |
| 4 | 高 --> 中/低 | 高 | 高 |
SS セッションの動作: DBT または TBT セッションに対して高い精度のセッションが既に存在することを考えると、SS セッションは、必要な最終的な精度が得られるか、最終的な修正が取得されるまで、HLOS に対してさらに中間的な修正を提供するだけです。 |
| 5 | 中/低 --> 高 | 中/低 | 中/低 --> SS セッションの完了後に中/低に戻る |
SS セッションの動作: 高精度の結果を得るために、GNSSデバイスとのセッションが更新または再起動されます。 HLOSが利用可能になり次第、中間修正プログラムが提供されます。 DBT または TBT セッションの動作: このセッションでは、一時的に高い精度の結果を受け取ることは問題ありません。 ただし、SS セッションが提供された後、このセッションの精度は Medium/Low に戻る必要があります。 |
| 6 | High --> Medium/Low | 中/低 | 高 --> 中/低 |
SS セッションの動作: 中/低の精度の結果を得るために、GNSSデバイスとのセッションが更新または再起動されます。 要件を満たす修正プログラムが既に利用可能な場合は、最終的な修正プログラムとして返されます。 利用可能になると、中間修正が HLOS に提供されます。 |
| 7 | 適用なし | 中/低 --> 高 | 中/低 --> 高 | b>DBT または TBT セッションの動作:** 高精度の結果を得るために、SSD デバイスとのセッションが更新または再起動されます。 中間修正は、利用可能な HLOS に提供されます。 |
| 8 | 適用なし | 高 --> 中/低 | 高 --> 中/低 |
DBT または TBT セッションの動作: 中/低の精度の結果を得るために、GNSSデバイスとのセッションが更新または再起動されます。 要件を満たす修正プログラムが既に利用可能な場合は、最終的な修正プログラムとして返されます。 それ以外の場合は、中間修正が使用可能な HLOS に提供されます。 |
| 9 | 高 | 中/低 --> 高 | 高 |
DBT または TBT セッションの動作: セッションでは既に高精度の修正プログラムまたは中間修正プログラムが取得されているため、変更はありません。 |
| 10 | 高 | 高 --> 中/低 | 次に、SS セッションが完了した後に High が中/低に変更されます |
DBT または TBT セッションの動作: セッションは、SS セッションが完了するまで、高い精度の修正プログラムまたは中間修正プログラムを引き続き取得できます。 次に、中/低の精度の修正に変更されます。 |
| 11 | 中/低< | 中/低 --> 高 | 中/低 --> 高 |
DBT または TBT セッションの動作: 高精度の結果を得るために、GNSSデバイスとのセッションが更新または再起動されます。 中間修正プログラムは、利用可能になったときに HLOS に提供されます。 |
| 12 | 中/低 | 高 --> 中/低 | 高 --> 中/低 |
DBT または TBT セッションの動作: 中/低の精度の結果を得るために、GNSSデバイスとのセッションが更新または再起動されます。 要件を満たす修正プログラムが既に利用可能な場合は、最終的な修正プログラムとして返されます。 それ以外の場合は、中間修正が使用可能な HLOS に提供されます。 |