Configurare le origini di tempo di AAOS

Questa funzionalità consente ai partner di scegliere come sincronizzare l'ora, dall'AAOS (Android Automotive Operating System) o dai sistemi dei veicoli ad Android. Per garantire implementazioni di qualità, puoi configurare AAOS in modo da utilizzare una delle due nuove proprietà VHAL descritte di seguito per propagare i valori in modo efficace. Utilizza:

  • ANDROID_EPOCH_TIME per utilizzare Android come fonte attendibile per il tempo. VHAL supporta questa proprietà sola lettura, che comunica le variazioni di tempo da Android ad altri sistemi del veicolo, come le unità di controllo elettronico (ECU) e il modulo di controllo della carrozzeria (BCM).
  • EXTERNAL_CAR_TIME non utilizzare Android come fonte di riferimento per il tempo. In questo caso, VHAL supporta la proprietà EXTERNAL_CAR_TIME sola lettura, che comunica ad Android le variazioni di tempo di altri sistemi del veicolo (come ECU e BCM).

AAOS fornisce anche un TimeDetectorStrategy configurabile per aiutarti a dare la priorità alle diverse origini di tempo in Android.

Android è la fonte attendibile per l'ora

Quando Android viene utilizzato come origine dell'ora, gli OEM possono sincronizzare altri sistemi dell'auto (incluse le ECU e un BCM) con l'ora di Android.

A tal fine, l'implementazione VHAL deve supportare la proprietà sola scrittura ANDROID_EPOCH_TIME. Android pubblica un aggiornamento della proprietà leggendo il tempo di sistema, sia all'avvio sia ogni volta che l'origine di tempo in Android viene modificata.

Android non è la fonte attendibile per l'ora

Quando Android non viene utilizzato come origine dell'ora, puoi sincronizzare l'ora di Android per farla diventare l'origine attendibile dell'ora (ad esempio con un'ECU o il BCM). In questo caso, l'implementazione VHAL deve supportare la proprietà di sola lettura EXTERNAL_CAR_TIME e pubblicare aggiornamenti a questa proprietà ogni volta che cambia l'origine dell'ora o viene ricalibrato l'orologio.

Gli OEM devono inoltre garantire che:

  • I valori config_autoTimeSourcesPriority sono contenuti in core/res/res/values/config.xml.
  • La proprietà config_enableExternalCarTimeToExternalTimeSuggestion nelle configurazioni dell'overlay CarServices packages/services/Car/service/res/values/config.xml è impostata su true.
  • L'ora external ha la priorità appropriata nella configurazione TimeDetectorStrategy. Per scoprire di più, consulta Rilevamento dell'ora GNSS. Ad esempio:
    <!-- 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>

Dettagli sull'implementazione interna di Android

Quando la proprietà VHAL ANDROID_EPOCH_TIME è supportata, viene eseguito il seguente flusso:

  1. TimeHalService (in CarServices) riceve una trasmissione dal sistema Android per Intent.ACTION_TIME_CHANGED.
  2. TimeHalService pubblica un aggiornamento della proprietà VHAL ANDROID_EPOCH_TIME.
  3. Il VHAL può propagare il valore del tempo ricevuto a varie ECU e/o unità BCM.

Quando la proprietà VHAL EXTERNAL_CAR_TIME è supportata, viene eseguito il seguente flusso:

  1. VHAL aggiorna la proprietà EXTERNAL_CAR_TIME.
  2. TimeHalService (in CarServices) legge la proprietà tramite un abbonamento.
  3. TimeHalService crea e invia un ExternalTimeSuggestion a TimeManager.
  4. TimeManager inoltra il suggerimento a TimeDetectorService.
  5. TimeDetectorService utilizza TimeDetectorStrategy per scegliere un nuovo valore dell'ora di sistema.