Настройте источники времени AAOS

Эта функция позволяет партнерам выбирать, как синхронизировать время: с автомобильной операционной системы Android (AAOS) или с автомобильных систем на Android. Чтобы обеспечить качественную реализацию, вы можете настроить AAOS на использование одного из двух новых свойств VHAL, описанных ниже, для эффективного распространения значений. Использовать:

  • ANDROID_EPOCH_TIME , чтобы использовать Android как источник информации о времени. VHAL поддерживает это свойство только для записи , которое передает изменения времени от Android к другим системам автомобиля, таким как электронные блоки управления (ECU) и модуль управления кузовным оборудованием (BCM).
  • EXTERNAL_CAR_TIME , чтобы не использовать Android в качестве источника информации о времени. В этом случае VHAL поддерживает свойство EXTERNAL_CAR_TIME , доступное только для чтения , которое передает изменения времени от других систем автомобиля (таких как ECU и BCM) в Android.

AAOS также предоставляет настраиваемую TimeDetectorStrategy , которая поможет вам расставить приоритеты для различных источников времени в Android.

Android — источник истины для времени

Когда Android используется в качестве источника времени, OEM-производители могут синхронизировать другие автомобильные системы (включая ECU и BCM) со временем Android.

Для этого реализация VHAL должна поддерживать свойство ANDROID_EPOCH_TIME , доступное только для записи . Android публикует обновление свойства, считывая системное время, как во время загрузки, так и при каждом изменении источника времени в Android.

Android — не источник истины для времени

Когда Android не используется в качестве источника времени, вы можете синхронизировать время Android, чтобы оно было источником достоверных данных о времени (например, с ECU или BCM). В этом случае реализация VHAL должна поддерживать свойство EXTERNAL_CAR_TIME , доступное только для чтения, и публиковать обновления этого свойства всякий раз, когда источник времени изменяет или повторно калибрует часы.

OEM-производители также должны гарантировать, что:

  • Значения config_autoTimeSourcesPriority содержатся в core/res/res/values/config.xml .
  • Для свойства config_enableExternalCarTimeToExternalTimeSuggestion в наложенных конфигурациях CarServices packages/services/Car/service/res/values/config.xml установлено значение true .
  • external время имеет соответствующий приоритет в конфигурации TimeDetectorStrategy . Дополнительную информацию см. в разделе Определение времени GNSS . Например:
    <!-- 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>
    

Подробности внутренней реализации Android

Следующий поток имеет место, когда поддерживается свойство VHAL ANDROID_EPOCH_TIME :

  1. TimeHalService (в CarServices) получает широковещательную рассылку от системы Android для Intent.ACTION_TIME_CHANGED .
  2. TimeHalService публикует обновление свойства VHAL ANDROID_EPOCH_TIME .
  3. VHAL может передавать полученное значение времени различным блокам ECU и/или BCM.

Следующий поток имеет место, когда поддерживается свойство VHAL EXTERNAL_CAR_TIME :

  1. VHAL обновляет свойство EXTERNAL_CAR_TIME .
  2. TimeHalService (в CarServices) считывает свойство посредством подписки.
  3. TimeHalService создает и отправляет ExternalTimeSuggestion в TimeManager .
  4. TimeManager пересылает предложение в TimeDetectorService .
  5. TimeDetectorService использует TimeDetectorStrategy для выбора нового системного времени.