Skonfiguruj źródła czasu AAOS

Ta funkcja pozwala partnerom wybrać sposób synchronizowania czasu, niezależnie od tego, czy z samochodowego systemu operacyjnego (AAOS) lub z systemów samochodowych na Androida. Aby zapewnić wysoką jakość implementacji, możesz skonfigurować AAOS tak, aby używał jednej z 2 nowych właściwości VHAL opisane poniżej, aby umożliwić skuteczne propagowanie wartości. Użyj opcji:

  • ANDROID_EPOCH_TIME, aby używać Androida jako źródła informacji czas. VHAL obsługuje właściwość tylko do zapisu, która przekazuje zmiany czasu z Androida do innych systemów samochodowych, takich jak i modułu kontroli ciała (BCM).
  • EXTERNAL_CAR_TIME, aby nie używać Androida jako źródła za prawdę. W tym przypadku VHAL obsługuje tryb tylko do odczytu właściwość EXTERNAL_CAR_TIME, która przekazuje informacje o zmianach czasu w porównaniu z innymi pojazdami. (takich jak ECU czy BCM) na Androida.
.

AAOS udostępnia też konfigurowalne TimeDetectorStrategy, aby ułatwić Ci ustalanie priorytetów z różnych źródeł czasu w Androidzie.

Android to źródło prawdy dla czasu

Gdy źródłem czasu jest Android, producenci OEM mogą synchronizować inne systemy samochodowe (w tym jednostki ECU i BCM) z czasem dla Androida.

Aby to było możliwe, implementacja VHAL musi obsługiwać właściwość tylko do zapisu. Usługa ANDROID_EPOCH_TIME. Android publikuje aktualizację usługi, odczytując treść zgodnie z czasem systemowym – zarówno podczas uruchamiania, jak i po zmianie źródła czasu w Androidzie.

Android nie jest źródłem prawdy dla czasu

Jeśli Android nie jest używany jako źródło czasu, możesz zsynchronizować czas z Androida za źródło prawdy dla czasu (np. dla ECU lub BCM). W tym przypadku parametr Implementacja VHAL musi obsługiwać właściwość tylko do odczytu EXTERNAL_CAR_TIME i publikować aktualizuje tę właściwość za każdym razem, gdy źródło czasu zmieni się lub ponownie skalibruje zegar.

OEM musi też dopilnować, że:

  • Wartości config_autoTimeSourcesPriority znajdują się w argumencie core/res/res/values/config.xml
  • Właściwość config_enableExternalCarTimeToExternalTimeSuggestion w parametrach Konfiguracje nakładek CarServices packages/services/Car/service/res/values/config.xml ma wartość true.
  • Czas external ma odpowiedni priorytet w Konfiguracja TimeDetectorStrategy. Więcej informacji: 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

Poniższy proces ma miejsce, gdy właściwość VHAL ANDROID_EPOCH_TIME jest obsługiwane:

  1. TimeHalService (w usługach CarServices) otrzymuje komunikat z systemu Android dla Intent.ACTION_TIME_CHANGED
  2. TimeHalService publikuje aktualizację własności VHAL ANDROID_EPOCH_TIME
  3. VHAL może przekazać otrzymaną wartość czasu do różnych jednostek ECU i/lub BCM.

Poniższy proces ma miejsce, gdy właściwość VHAL EXTERNAL_CAR_TIME jest obsługiwane:

  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 opcji TimeDetectorStrategy, aby wybrać nowy czasu systemowego.