Konfigurowanie źródeł czasu AAOS

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 odczytu EXTERNAL_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órce core/res/res/values/config.xml.
  • Właściwość config_enableExternalCarTimeToExternalTimeSuggestion w konfiguracjach nakładki CarServices packages/services/Car/service/res/values/config.xml ma wartość true.
  • external ma odpowiedni priorytet w konfiguracji TimeDetectorStrategy. 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:

  1. TimeHalService (w CarServices) odbiera transmisję z systemu Android dla Intent.ACTION_TIME_CHANGED.
  2. TimeHalService publikuje aktualizację właściwości VHAL: ANDROID_EPOCH_TIME.
  3. 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:

  1. VHAL aktualizuje właściwość EXTERNAL_CAR_TIME.
  2. TimeHalService (w CarServices) odczytuje usługę za pomocą subskrypcji.
  3. TimeHalService tworzy i wysyła ExternalTimeSuggestion do TimeManager.
  4. TimeManager przekazuje sugestię do TimeDetectorService.
  5. TimeDetectorService używa TimeDetectorStrategy do wyboru nowego czasu systemowego.