Ta funkcja umożliwia partnerom wybór sposobu synchronizacji czasu, czy to z samochodowego systemu operacyjnego Android (AAOS) , czy z systemów samochodowych na Androida. Aby zapewnić wysoką jakość implementacji, można skonfigurować AAOS tak, aby korzystał z jednej z dwóch nowych właściwości VHAL opisanych poniżej w celu skutecznego propagowania wartości. Używać:
-
ANDROID_EPOCH_TIME
, aby używać Androida jako źródła prawdy o czasie. VHAL obsługuje tę właściwość tylko do zapisu , która przekazuje zmiany czasu z systemu Android do innych systemów pojazdów, takich jak elektroniczne jednostki sterujące (ECU) i moduł sterujący nadwozia (BCM). -
EXTERNAL_CAR_TIME
, aby nie używać Androida jako źródła prawdy w czasie. W tym przypadku VHAL obsługuje właściwośćEXTERNAL_CAR_TIME
tylko do odczytu , która przekazuje zmiany czasu z innych systemów pojazdów (takich jak ECU i BCM) do Androida.
AAOS udostępnia także konfigurowalną TimeDetectorStrategy
, która pomaga w ustalaniu priorytetów dla różnych źródeł czasu w systemie Android.
Android jest źródłem prawdy o czasie
Gdy jako źródło czasu używany jest system Android, producenci OEM mogą synchronizować inne systemy samochodowe (w tym ECU i BCM) z czasem systemu Android.
Aby to zrobić, implementacja VHAL musi obsługiwać właściwość tylko do zapisu ANDROID_EPOCH_TIME
. Android publikuje aktualizację właściwości, odczytując czas systemowy, zarówno podczas uruchamiania, jak i za każdym razem, gdy zmienia się źródło czasu w Androidzie.
Android nie jest źródłem prawdy o czasie
Gdy Android nie jest używany jako źródło czasu, możesz zsynchronizować czas Androida, aby był źródłem prawdy o czasie (na przykład za pomocą ECU lub BCM). W tym przypadku implementacja VHAL musi obsługiwać właściwość tylko do odczytu EXTERNAL_CAR_TIME
i publikować aktualizacje tej właściwości za każdym razem, gdy źródło czasu zmienia się lub ponownie kalibruje zegar.
Producenci OEM muszą również zapewnić, że:
- Wartości
config_autoTimeSourcesPriority
znajdują się wcore/res/res/values/config.xml
. - Właściwość
config_enableExternalCarTimeToExternalTimeSuggestion
w nakładki CarServices configspackages/services/Car/service/res/values/config.xml
jest ustawiona natrue
. - czas
external
ma odpowiedni priorytet w konfiguracjiTimeDetectorStrategy
. Aby dowiedzieć się więcej, zobacz Wykrywanie czasu GNSS . Na 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 wewnętrznej implementacji Androida
Gdy obsługiwana jest właściwość VHAL ANDROID_EPOCH_TIME
, ma miejsce następujący przebieg:
-
TimeHalService
(w CarServices) odbiera transmisję z systemu Android dlaIntent.ACTION_TIME_CHANGED
. -
TimeHalService
publikuje aktualizację właściwości VHALANDROID_EPOCH_TIME
. - VHAL może propagować odebraną wartość czasu do różnych ECU i/lub jednostek BCM.
Gdy obsługiwana jest właściwość VHAL EXTERNAL_CAR_TIME
, ma miejsce następujący przebieg:
- VHAL aktualizuje właściwość
EXTERNAL_CAR_TIME
. -
TimeHalService
(w CarServices) odczytuje nieruchomość poprzez subskrypcję. -
TimeHalService
tworzy i wysyłaExternalTimeSuggestion
doTimeManager
. -
TimeManager
przekazuje sugestię doTimeDetectorService
. -
TimeDetectorService
używaTimeDetectorStrategy
do wybrania nowego czasu systemowego.