AAOS タイムソースの設定

この機能を使用すると、パートナーは、Android Automotive オペレーティング システム(AAOS)または車両システムから Android への時刻の同期方法を選択できます。実装の品質を確保するために、次に示す 2 つの新しい VHAL プロパティのいずれかを使用するよう AAOS を設定することで、値を効率的に反映させることができます。使用するプロパティは次のとおりです。

  • ANDROID_EPOCH_TIME: 信頼できるタイムソースとして Android を使用します。VHAL は、Android から電子コントロール ユニット(ECU)やボディ コントロール モジュール(BCM)などの他の車両システムに時刻の変更を伝える、この書き込み専用のプロパティをサポートします。
  • EXTERNAL_CAR_TIME: 信頼できるタイムソースとして Android を使用しません。この場合 VHAL は、他の車両システム(ECU や BCM など)から Android に時刻の変更を伝える、読み取り専用EXTERNAL_CAR_TIME プロパティをサポートします。

AAOS には、Android 内でさまざまなタイムソースに優先順位を付けられるよう、設定可能な TimeDetectorStrategy も用意されています。

Android が信頼できるタイムソースである場合

Android をタイムソースとして使用する場合、OEM は他の自動車システム(ECU や BCM を含む)を Android の時刻と同期できます。

そのためには、VHAL 実装が書き込み専用ANDROID_EPOCH_TIME プロパティをサポートしている必要があります。Android は、起動時と、Android のタイムソースが変更されるたびに、システム時刻を読み取ってプロパティの更新を公開します。

Android が信頼できるタイムソースでない場合

Android をタイムソースとして使用しない場合、Android の時刻を信頼できるタイムソースとして(ECU や BCM などと)同期できます。この場合は、VHAL 実装が読み取り専用のプロパティ EXTERNAL_CAR_TIME をサポートし、タイムソースが変更されるか時計が再校正されるたびに、このプロパティの更新を公開する必要があります。

OEM は次のようにする必要もあります。

  • config_autoTimeSourcesPriority 値を core/res/res/values/config.xml に含める。
  • CarServices オーバーレイ構成(packages/services/Car/service/res/values/config.xml)の config_enableExternalCarTimeToExternalTimeSuggestion プロパティを true に設定する。
  • TimeDetectorStrategy 構成で、external 時刻に適切な優先度を設定する。詳細については、GNSS 時刻の検出をご覧ください。次に例を示します。
    <!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list take precedence over lower ones.
    See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
         <string-array name="config_autoTimeSourcesPriority">
            <item>external</item>
            <item>gnss</item>
            <item>network</item>
            <item>telephony</item>
        </string-array>
    

Android の内部実装の詳細

ANDROID_EPOCH_TIME VHAL プロパティがサポートされている場合のフローは次のとおりです。

  1. TimeHalService(CarServices 内)が、Android システムから Intent.ACTION_TIME_CHANGED のブロードキャストを受信します。
  2. TimeHalService が、VHAL プロパティ ANDROID_EPOCH_TIME の更新を公開します。
  3. VHAL は、受け取った時刻値をさまざまな ECU と BCM ユニットに反映できます。

EXTERNAL_CAR_TIME VHAL プロパティがサポートされている場合のフローは次のとおりです。

  1. VHAL が EXTERNAL_CAR_TIME プロパティを更新します。
  2. TimeHalService(CarServices 内)が、サブスクリプションを通じてプロパティを読み取ります。
  3. TimeHalServiceExternalTimeSuggestion を作成して TimeManager に送信します。
  4. TimeManager が提案を TimeDetectorService に転送します。
  5. TimeDetectorServiceTimeDetectorStrategy を使用して新しいシステム時刻を選択します。