Configurar fontes de tempo do 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 do VHAL descritas abaixo para propagar os valores de maneira eficaz. Usar:

  • ANDROID_EPOCH_TIME para usar o Android como a fonte da verdade para o tempo. O VHAL oferece suporte a essa propriedade somente para gravação, que comunica 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 a fonte da verdade do tempo. Nesse caso, o VHAL oferece suporte à propriedade EXTERNAL_CAR_TIME somente leitura, que comunica mudanças de tempo de outros sistemas veiculares (como ECUs e BCM) para o Android.

O AAOS também oferece um TimeDetectorStrategy configurável para ajudar a priorizar diferentes fontes de tempo no Android.

O Android é a fonte de informações para o tempo

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

Para fazer isso, a implementação da VHAL precisa oferecer suporte à propriedade ANDROID_EPOCH_TIME somente leitura. O Android publica uma atualização na propriedade lendo o horário do sistema, tanto na inicialização quanto sempre que a fonte de horário no Android é alterada.

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

Quando o Android não é usado como a fonte de tempo, é possível sincronizar o tempo do Android para que ele seja a fonte da verdade para o tempo (por exemplo, com uma ECU ou o BCM). Nesse caso, a implementação do VHAL precisa oferecer suporte à propriedade somente leitura EXTERNAL_CAR_TIME e publicar atualizações nessa propriedade sempre que a fonte de tempo mudar ou recalibrar o relógio.

Os OEMs também precisam garantir que:

  • Os valores de config_autoTimeSourcesPriority estão contidos em core/res/res/values/config.xml.
  • A propriedade config_enableExternalCarTimeToExternalTimeSuggestion nas configurações de sobreposição do CarServices packages/services/Car/service/res/values/config.xml é definida como true.
  • O tempo external tem a prioridade adequada na configuração TimeDetectorStrategy. Para saber mais, consulte Detecção de tempo do GNSS. 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 VHAL ANDROID_EPOCH_TIME é compatível:

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

O fluxo a seguir ocorre quando a propriedade VHAL EXTERNAL_CAR_TIME é compatível:

  1. O VHAL atualiza a propriedade EXTERNAL_CAR_TIME.
  2. TimeHalService (no CarServices) lê a propriedade por uma assinatura.
  3. O TimeHalService cria e envia uma ExternalTimeSuggestion para TimeManager.
  4. TimeManager encaminha a sugestão para TimeDetectorService.
  5. O TimeDetectorService usa TimeDetectorStrategy para escolher um novo horário do sistema.