配置 AAOS 時間來源

此功能可讓合作夥伴選擇如何同步時間,無論是從 Android 汽車作業系統 (AAOS)還是從車載系統到 Android。為了確保實作質量,您可以將 AAOS 配置為使用下面描述的兩個新 VHAL 屬性之一來有效傳播值。使用:

  • ANDROID_EPOCH_TIME使用Android 作為時間的真正來源。 VHAL 支援這種只寫屬性,它將時間變化從 Android 傳達到其他車輛系統,例如電子控制單元 (ECU) 和車身控制模組 (BCM)。
  • EXTERNAL_CAR_TIME不使用Android 作為時間的真實來源。在這種情況下,VHAL 支援只讀EXTERNAL_CAR_TIME屬性,該屬性將時間變更從其他車輛系統(例如 ECU 和 BCM)傳達到 Android。

AAOS 也提供可設定的TimeDetectorStrategy來協助您確定 Android 中不同時間來源的優先順序。

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
  • external時間在TimeDetectorStrategy配置中具有適當的優先權。要了解更多信息,請參閱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. TimeHalService建立一個ExternalTimeSuggestion並將其傳送到TimeManager
  4. TimeManager將建議轉送給TimeDetectorService
  5. TimeDetectorService使用TimeDetectorStrategy選擇新的系統時間。