Configura las fuentes de tiempo de AAOS

Esta función permite a los socios elegir cómo sincronizar la hora, ya sea desde el sistema operativo Android Automotive (AAOS) o desde sistemas vehiculares a Android. Para garantizar implementaciones de calidad, puedes configurar AAOS para que use una de las dos nuevas propiedades de VHAL que se describen a continuación para propagar los valores de manera eficaz. Usar:

  • ANDROID_EPOCH_TIME para usar Android como la fuente de información de tiempo. El VHAL admite esta propiedad de solo escritura, que comunica los cambios de hora de Android a otros sistemas vehiculares, como las unidades de control electrónico (ECU) y el módulo de control corporal (BCM).
  • EXTERNAL_CAR_TIME para no usar Android como fuente de información de tiempo. En este caso, el VHAL admite la propiedad EXTERNAL_CAR_TIME de solo lectura, que comunica los cambios de hora de otros sistemas vehiculares (como ECU y BCM) a Android.

AAOS también proporciona un TimeDetectorStrategy configurable para ayudarte a priorizar diferentes fuentes de tiempo en Android.

Android es la fuente de confianza para la hora

Cuando se usa Android como fuente de tiempo, los OEMs pueden sincronizar otros sistemas del automóvil (incluidos los ECU y un BCM) con la hora de Android.

Para ello, la implementación de VHAL debe admitir la propiedad ANDROID_EPOCH_TIME de solo escritura. Android publica una actualización de la propiedad leyendo la hora del sistema, tanto durante el inicio como cada vez que se cambia la fuente de hora en Android.

Android no es la fuente de información de la hora.

Cuando no se usa Android como fuente de tiempo, puedes sincronizar la hora de Android para que sea la fuente de información de tiempo (por ejemplo, con una ECU o el BCM). En este caso, la implementación de VHAL debe admitir la propiedad de solo lectura EXTERNAL_CAR_TIME y publicar actualizaciones de esta propiedad cada vez que cambie la fuente de la hora o se vuelva a calibrar el reloj.

Los OEM también deben garantizar lo siguiente:

  • Los valores de config_autoTimeSourcesPriority se encuentran en core/res/res/values/config.xml.
  • La propiedad config_enableExternalCarTimeToExternalTimeSuggestion en la configuración de superposición de CarServices packages/services/Car/service/res/values/config.xml se establece en true.
  • El tiempo de external tiene la prioridad adecuada en la configuración de TimeDetectorStrategy. Para obtener más información, consulta Detección de hora del GNSS. Por ejemplo:
    <!-- 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>

Detalles de la implementación interna de Android

El siguiente flujo se produce cuando se admite la propiedad VHAL ANDROID_EPOCH_TIME:

  1. TimeHalService (en CarServices) recibe una transmisión del sistema Android para Intent.ACTION_TIME_CHANGED.
  2. TimeHalService publica una actualización de la propiedad ANDROID_EPOCH_TIME de VHAL.
  3. El VHAL puede propagar el valor de tiempo recibido a varias ECU o unidades BCM.

El siguiente flujo se produce cuando se admite la propiedad VHAL EXTERNAL_CAR_TIME:

  1. VHAL actualiza la propiedad EXTERNAL_CAR_TIME.
  2. TimeHalService (en CarServices) lee la propiedad a través de una suscripción.
  3. TimeHalService crea y envía un ExternalTimeSuggestion a TimeManager.
  4. TimeManager reenvía la sugerencia a TimeDetectorService.
  5. TimeDetectorService usa TimeDetectorStrategy para elegir una nueva hora del sistema.