Skonfiguruj źródła czasu AAOS

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ę w core/res/res/values/config.xml .
  • Właściwość config_enableExternalCarTimeToExternalTimeSuggestion w nakładki CarServices configs packages/services/Car/service/res/values/config.xml jest ustawiona na true .
  • czas external ma odpowiedni priorytet w konfiguracji TimeDetectorStrategy . 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:

  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 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:

  1. VHAL aktualizuje właściwość EXTERNAL_CAR_TIME .
  2. TimeHalService (w CarServices) odczytuje nieruchomość poprzez subskrypcję.
  3. TimeHalService tworzy i wysyła ExternalTimeSuggestion do TimeManager .
  4. TimeManager przekazuje sugestię do TimeDetectorService .
  5. TimeDetectorService używa TimeDetectorStrategy do wybrania nowego czasu systemowego.