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 à propriedadeEXTERNAL_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 emcore/res/res/values/config.xml
. - A propriedade
config_enableExternalCarTimeToExternalTimeSuggestion
nas configurações de sobreposição do CarServicespackages/services/Car/service/res/values/config.xml
é definida comotrue
. - O tempo
external
tem a prioridade adequada na configuraçãoTimeDetectorStrategy
. 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:
TimeHalService
(no CarServices) recebe uma transmissão do sistema Android paraIntent.ACTION_TIME_CHANGED
.TimeHalService
publica uma atualização na propriedade VHALANDROID_EPOCH_TIME
.- 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:
- O VHAL atualiza a propriedade
EXTERNAL_CAR_TIME
. TimeHalService
(no CarServices) lê a propriedade por uma assinatura.- O
TimeHalService
cria e envia umaExternalTimeSuggestion
paraTimeManager
. TimeManager
encaminha a sugestão paraTimeDetectorService
.- O
TimeDetectorService
usaTimeDetectorStrategy
para escolher um novo horário do sistema.