Ta funkcja umożliwia partnerom wybranie sposobu synchronizacji czasu: z Androida Automotive Operating System (AAOS) lub z systemów pojazdów z Androidem. Aby zapewnić wysoką jakość implementacji, możesz skonfigurować AAOS tak, aby używał jednej z 2 nowych właściwości VHAL opisanych poniżej w celu skutecznego propagowania wartości. Użyj opcji:
ANDROID_EPOCH_TIME
do korzystania z Androida jako źródła informacji na potrzeby VHAL obsługuje tę właściwość tylko do zapisu, która przekazuje zmiany czasu z Androida do innych systemów pojazdu, takich jak jednostki sterujące elektronicznie (ECU) i moduł sterujący nadwoziem (BCM).EXTERNAL_CAR_TIME
, aby nie używać Androida jako źródła informacji. W tym przypadku VHAL obsługuje tylko do odczytuEXTERNAL_CAR_TIME
, która przekazuje zmiany czasu z innych systemów pojazdu (takich jak ECU i BCM) do Androida.
AAOS udostępnia też konfigurowalny element TimeDetectorStrategy
, który pomaga nadawać priorytety różnym źródłom czasu w Androidzie.
Android jest źródłem informacji o czasie
Gdy Android jest używany jako źródło czasu, producenci OEM mogą synchronizować inne systemy samochodowe (w tym ECU i BCM) z czasem Androida.
Aby to zrobić, implementacja VHAL musi obsługiwać właściwość ANDROID_EPOCH_TIME
tylko do zapisu. Android publikuje aktualizację usługi, odczytując czas systemowy zarówno podczas uruchamiania, jak i za każdym razem, gdy zmieni się źródło czasu na urządzeniu.
Android nie jest źródłem danych podstawowych (ground truth) dotyczących czasu
Jeśli Android nie jest używany jako źródło czasu, możesz zsynchronizować czas Androida, aby był on źródłem wiarygodnych danych o czasie (np. z ECU lub BCM). W takim przypadku implementacja VHAL musi obsługiwać usługę tylko do odczytu EXTERNAL_CAR_TIME
i publikować aktualizacje tej usługi, gdy tylko źródło czasu zmieni się lub ponownie skalibrować zegar.
Producenci OEM muszą też zapewnić:
- Wartości
config_autoTimeSourcesPriority
znajdują się w komórcecore/res/res/values/config.xml
. - Właściwość
config_enableExternalCarTimeToExternalTimeSuggestion
w konfiguracjach nakładki CarServicespackages/services/Car/service/res/values/config.xml
ma wartośćtrue
. external
ma odpowiedni priorytet w konfiguracjiTimeDetectorStrategy
. Więcej informacji znajdziesz w artykule GNSS Time Detection (w języku angielskim). Przykład:<!-- 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>
Szczegóły implementacji na Androidzie
Gdy obsługiwana jest właściwość VHAL ANDROID_EPOCH_TIME
, następuje ten proces:
TimeHalService
(w CarServices) odbiera transmisję z systemu Android dlaIntent.ACTION_TIME_CHANGED
.TimeHalService
publikuje aktualizację właściwości VHAL:ANDROID_EPOCH_TIME
.- VHAL może rozpowszechniać otrzymaną wartość czasu do różnych jednostek ECU lub BCM.
Gdy obsługiwana jest właściwość VHAL EXTERNAL_CAR_TIME
, następuje ten proces:
- VHAL aktualizuje właściwość
EXTERNAL_CAR_TIME
. TimeHalService
(w CarServices) odczytuje usługę za pomocą subskrypcji.TimeHalService
tworzy i wysyłaExternalTimeSuggestion
doTimeManager
.TimeManager
przekazuje sugestię doTimeDetectorService
.TimeDetectorService
używaTimeDetectorStrategy
do wyboru nowego czasu systemowego.