配置 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 创建并向 TimeManager 发送 ExternalTimeSuggestion
  4. TimeManager 将建议转发给 TimeDetectorService
  5. TimeDetectorService 使用 TimeDetectorStrategy 选择新的系统时间。