Configurar fontes de horário AAOS

Esse recurso permite que os parceiros escolham como sincronizar o horário, seja do sistema operacional Android Automotive (AAOS) ou de sistemas veiculares para 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 oferece suporte a essa propriedade somente gravação , que comunica alterações de horário do Android para outros sistemas veiculares, como as Unidades de Controle Eletrônico (ECU) e o Módulo de Controle Corporal (BCM).
  • EXTERNAL_CAR_TIME para não usar o Android como fonte da verdade por um tempo. Nesse caso, o VHAL oferece suporte à propriedade EXTERNAL_CAR_TIME somente leitura , que comunica alterações de horário de outros sistemas veiculares (como ECUs e BCM) para o Android.

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 automotivos (incluindo ECUs e um BCM) com o horário do Android.

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

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

Quando o Android não é usado como fonte de tempo, você pode sincronizar a hora do Android para ser a fonte da verdade do tempo (por exemplo, com uma ECU ou BCM). Neste caso, a implementação VHAL deve suportar a propriedade somente leitura EXTERNAL_CAR_TIME e publicar atualizações para esta propriedade sempre que a fonte do 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 nas configurações de sobreposição CarServices packages/services/Car/service/res/values/config.xml está configurada como true .
  • o horário external 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 de implementação interna do Android

O seguinte fluxo 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 seguinte fluxo ocorre quando a propriedade EXTERNAL_CAR_TIME VHAL é suportada:

  1. VHAL atualiza a propriedade EXTERNAL_CAR_TIME .
  2. TimeHalService (em CarServices) lê a propriedade por meio 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.