Configurer les sources de temps AAOS

Cette fonctionnalité permet aux partenaires de choisir comment synchroniser l'heure, que ce soit depuis le système d'exploitation automobile Android (AAOS) ou depuis les systèmes des véhicules vers Android. Pour garantir des implémentations de qualité, vous pouvez configurer AAOS pour utiliser l'une des deux nouvelles propriétés VHAL décrites ci-dessous pour propager efficacement les valeurs. Utiliser:

  • ANDROID_EPOCH_TIME pour utiliser Android comme source de vérité sur le temps. Le VHAL prend en charge cette propriété en écriture seule , qui communique les changements d'heure d'Android à d'autres systèmes du véhicule, tels que les unités de commande électroniques (ECU) et le module de commande de carrosserie (BCM).
  • EXTERNAL_CAR_TIME pour ne pas utiliser Android comme source de vérité pour le temps. Dans ce cas, le VHAL prend en charge la propriété EXTERNAL_CAR_TIME en lecture seule , qui communique les changements d'heure d'autres systèmes du véhicule (tels que les ECU et le BCM) à Android.

AAOS fournit également une TimeDetectorStrategy configurable pour vous aider à prioriser différentes sources de temps dans Android.

Android est la source de vérité pour le temps

Lorsqu'Android est utilisé comme source d'heure, les constructeurs OEM peuvent synchroniser d'autres systèmes automobiles (y compris les calculateurs et un BCM) avec l'heure d'Android.

Pour ce faire, l’implémentation VHAL doit prendre en charge la propriété en écriture seule ANDROID_EPOCH_TIME . Android publie une mise à jour de la propriété en lisant l'heure du système, à la fois au démarrage et à chaque fois que la source de temps dans Android est modifiée.

Android n'est pas la source de vérité pour le moment

Lorsqu'Android n'est pas utilisé comme source de temps, vous pouvez synchroniser l'heure d'Android pour qu'elle soit la source de vérité du temps (par exemple, avec un ECU ou le BCM). Dans ce cas, l'implémentation VHAL doit prendre en charge la propriété en lecture seule EXTERNAL_CAR_TIME et publier des mises à jour de cette propriété chaque fois que la source de l'heure change ou recalibre l'horloge.

Les constructeurs OEM doivent également s’assurer que :

  • Les valeurs config_autoTimeSourcesPriority sont contenues dans core/res/res/values/config.xml .
  • La propriété config_enableExternalCarTimeToExternalTimeSuggestion dans les configurations de superposition CarServices packages/services/Car/service/res/values/config.xml est définie sur true .
  • l'heure external a la priorité appropriée dans la configuration TimeDetectorStrategy . Pour en savoir plus, consultez Détection temporelle GNSS . Par exemple :
    <!-- 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>
    

Détails de la mise en œuvre interne d'Android

Le flux suivant a lieu lorsque la propriété ANDROID_EPOCH_TIME VHAL est prise en charge :

  1. TimeHalService (dans CarServices) reçoit une diffusion du système Android pour Intent.ACTION_TIME_CHANGED .
  2. TimeHalService publie une mise à jour de la propriété VHAL ANDROID_EPOCH_TIME .
  3. Le VHAL peut propager la valeur temporelle reçue à divers ECU et/ou unités BCM.

Le flux suivant a lieu lorsque la propriété EXTERNAL_CAR_TIME VHAL est prise en charge :

  1. VHAL met à jour la propriété EXTERNAL_CAR_TIME .
  2. TimeHalService (dans CarServices) lit la propriété via un abonnement.
  3. TimeHalService crée et envoie une ExternalTimeSuggestion à TimeManager .
  4. TimeManager transmet la suggestion à TimeDetectorService .
  5. TimeDetectorService utilise TimeDetectorStrategy pour choisir une nouvelle heure système.