配置 AAOS 时间源

通过此功能,合作伙伴可以选择如何同步时间:是从 Android Automotive 操作系统 (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 选择新的系统时间。