Configurando fontes de tempo AAOS

Esse recurso permite que os parceiros escolham como sincronizar o tempo, seja do Android Automotive Operating System (AAOS) ou de sistemas veiculares para o Android. Para garantir implementações de qualidade, você pode configurar o AAOS para usar uma das duas novas propriedades VHAL descritas abaixo para propagar os valores de forma eficaz. Usar:

  • ANDROID_EPOCH_TIME para usar o Android como fonte de verdade para o tempo. O VHAL suporta essa propriedade somente de gravação , que comunica as mudanças de tempo do Android para outros sistemas veiculares, como as Unidades de Controle Eletrônico (ECU) e o Módulo de Controle do Corpo (BCM).
  • EXTERNAL_CAR_TIME para não usar o Android como fonte de verdade para o tempo. Nesse caso, o VHAL suporta a propriedade EXTERNAL_CAR_TIME somente leitura , que comunica as mudanças de horário de outros sistemas veiculares (como ECUs e BCM) para o Android.

O AAOS também fornece um TimeDetectorStrategy configurável para ajudá-lo a priorizar diferentes fontes de tempo no Android.

Android é a fonte da verdade para o tempo

Quando o Android é usado como fonte de tempo, os OEMs podem sincronizar outros sistemas do carro (incluindo ECUs e um BCM) com o tempo do Android.

Para isso, a implementação do VHAL deve suportar a propriedade ANDROID_EPOCH_TIME da propriedade somente gravação . O Android publica uma atualização para a propriedade lendo a hora do sistema, tanto no momento da inicialização quanto sempre que a fonte de tempo no Android for alterada.

Android não é a fonte da verdade para o tempo

Quando o Android não é usado como fonte de tempo, você pode sincronizar o tempo do Android para ser a fonte de verdade para o tempo (por exemplo, com uma ECU ou BCM). Nesse caso, a implementação do VHAL deve suportar a propriedade somente leitura EXTERNAL_CAR_TIME e publicar atualizações nesta propriedade sempre que a fonte de tempo mudar ou recalibrar o relógio.

Os OEMs também devem garantir que:

  • os valores config_autoTimeSourcesPriority estão contidos em core/res/res/values/config.xml .
  • a propriedade config_enableExternalCarTimeToExternalTimeSuggestion na sobreposição CarServices configs packages/services/Car/service/res/values/config.xml ) é definida como true .
  • a hora externa tem a prioridade apropriada na configuração TimeDetectorStrategy . Para saber mais, consulte Detecção de tempo GNSS . Por exemplo:
    <!-- 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>
    

Detalhes da implementação interna do Android

O fluxo a seguir ocorre quando a propriedade ANDROID_EPOCH_TIME VHAL é suportada:

  1. TimeHalService (em CarServices) recebe uma transmissão do sistema Android para Intent.ACTION_TIME_CHANGED .
  2. TimeHalService publica uma atualização para a propriedade VHAL ANDROID_EPOCH_TIME .
  3. O VHAL pode propagar o valor de tempo recebido para várias ECUs e/ou unidades BCM.

O fluxo a seguir ocorre quando a propriedade EXTERNAL_CAR_TIME VHAL é suportada:

  1. VHAL atualiza a propriedade EXTERNAL_CAR_TIME .
  2. TimeHalService (em CarServices) lê a propriedade através de uma assinatura.
  3. TimeHalService cria e envia um ExternalTimeSuggestion para TimeManager .
  4. TimeManager encaminha a sugestão para TimeDetectorService .
  5. TimeDetectorService usa TimeDetectorStrategy para escolher uma nova hora do sistema.