Политика питания

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

Применение политики электропитания разрешено в состояниях Ожидание VHAL и Вкл. В режиме подготовки к выключению режим гаража работает, и его не должно прерывать изменение состояния питания. Хотя обычную политику электропитания применить невозможно, в программе подготовки к завершению работы применяется специальная политика электропитания, которая представляет собой политику электропитания системы под названием «без взаимодействия с пользователем».

Состояние питания AAOS

Устройства AAOS следуют следующей диаграмме состояний питания:

Диаграмма состояния питания AAOS

Рисунок 1. Диаграмма состояния питания AAOS

Каждое состояние питания описано ниже:

Ценить Описание
Выключенный Физически питание процессора приложений (AP), памяти и периферийных устройств не подается.
Подождите ВХАЛ
  • Когда водитель взаимодействует с транспортным средством (например, открывая дверь), VMCU подает питание на точку доступа (память). и периферийные устройства.
  • AAOS переходит из одного из трех состояний (Выкл., Приостановка в ОЗУ (STR, Ожидание завершения VHAL), а затем переходит в режим ожидания VHAL, где он ожидает координации с VHAL.
На
  • VHAL инструктирует AAOS перейти во включенное состояние. В этом состоянии AAOS полностью работает и взаимодействует с драйвером.
  • Дисплей контролируется политикой электропитания, а не вызовами включения/выключения дисплея Android для других форм-факторов.
Подготовка к завершению работы
  • Когда водитель прекращает движение, VHAL дает команду AAOS войти в режим подготовки к завершению работы. В этом состоянии дисплей и звук выключены, а AAOS не взаимодействует с драйвером. Система Android все еще работает и может обновлять приложения и систему Android. Когда обновления (если таковые имеются) будут завершены, система Android перейдет в режим ожидания завершения VHAL.
Подождите, пока VHAL завершится.
  • AAOS сообщает VHAL, что его можно отключить. Ожидается, что блок микроконтроллера транспортного средства (VMCU) переведет систему на кристалле (SoC) в режим глубокого сна и отключит питание от точки доступа. В этом случае AAOS находится в состоянии STR, хотя никакой код не выполняется.
  • Если VHAL не завершается и драйвер возвращается, головное устройство (HU) должно сразу перейти в режим ожидания VHAL.
Приостановка в оперативной памяти (STR) Транспортное средство и точка доступа выключены, код не выполняется, питание ОЗУ точки доступа сохраняется.

Архитектура программного обеспечения

Архитектура политики электропитания показана ниже и определена в следующем разделе:

Рисунок 2. Архитектура энергетической политики

Как определяется политика власти?

Разработчики определяют политики электропитания в /vendor/etc/automotive/power_policy.xml , которые:

  • Определяет политику власти.
  • Определяет группы политик электропитания, которые включают политику электропитания по умолчанию и автоматически применяются при смене состояний электропитания.
  • Переопределить политику электропитания системы.

Энергетическая политика

Политика электропитания — это набор ожидаемых состояний электропитания аппаратных и программных компонентов. AAOS поддерживает следующие компоненты политики электропитания:

  • AUDIO
  • MEDIA
  • DISPLAY_MAIN
  • DISPLAY_CLUSTER
  • DISPLAY_FRONT_PASSENGER
  • DISPLAY_REAR_PASSENGER
  • BLUETOOTH
  • WIFI
  • CELLULAR
  • ETHERNET
  • PROJECTION
  • NFC
  • INPUT
  • VOICE_INTERACTION
  • VISUAL_INTERACTION
  • TRUSTED_DEVICE_DETECTION
  • LOCATION
  • MICROPHONE
  • CPU

Группа политики электропитания

Политика электропитания по умолчанию автоматически применяется при переходе состояний электропитания, указанном в группе политик электропитания. Поставщики могут определить политику электропитания по умолчанию для «Ожидание VHAL», «Вкл» и «Ожидание завершения VHAL» (вход в глубокий сон или начало выключения).

Политика электропитания системы

AAOS поддерживает только одну политику электропитания системы: «отсутствие взаимодействия с пользователем». Политика электропитания системы применяется, когда устройство переходит в режим гаража.

Поведение каждого компонента в политике электропитания системы указано в таблице ниже. Разработчики могут переопределить обнаружение Bluetooth, NFC и доверенных устройств в политике электропитания системы. Переопределения применяются в /vendor/etc/power_policy.xml .

Компоненты Состояние питания Настраиваемый
Аудио Выключенный Нет
СМИ Выключенный Нет
Главный дисплей Выключенный Нет
Кластер дисплея Выключенный Нет
Дисплей переднего пассажира Выключенный Нет
Дисплей заднего пассажира Выключенный Нет
Bluetooth Выключенный ДА
Wi-Fi НА Нет
Сотовая связь НА Нет
Ethernet НА Нет
Проекция Выключенный Нет
НФК Выключенный ДА
Вход Выключенный Нет
Голосовое взаимодействие Выключенный Нет
Визуальное взаимодействие Выключенный Нет
Обнаружение доверенного устройства НА ДА
Расположение Выключенный Нет
Микрофон Выключенный Нет
Процессор На Нет

Взаимодействие с ВХАЛ

Демон политики электропитания автомобиля, работающий на системном уровне, подписывает два свойства для прослушивания запросов от VHAL:

  • POWER_POLICY_REQ , VHAL записывает идентификатор политики электропитания в это свойство.
  • POWER_POLICY_GROUP_REQ , VHAL записывает идентификатор группы политики электропитания в это свойство.

Текущую политику электропитания в системе можно изменить с помощью модулей, отличных от VHAL. В этом случае демон политики электропитания автомобиля обновляет свойство CURRENT_POWER_POLICY , чтобы уведомить об изменении VHAL.

Взаимодействие с нативными процессами

Как упоминалось выше, демон политики электропитания автомобиля работает на системном уровне и с точки зрения управления политикой электропитания обеспечивает почти ту же функциональность, что и CPMS, работающий на уровне инфраструктуры. Кроме того, предположим, что демон политики электропитания автомобиля и CPMS полностью синхронизированы.

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

ICarPowerPolicyServer.aidl

package android.frameworks.automotive.powerpolicy;

import android.frameworks.automotive.powerpolicy.CarPowerPolicy;
import android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter;
import android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback;
import android.frameworks.automotive.powerpolicy.PowerComponent;

/**
 * ICarPowerPolicyServer is an interface implemented by the power policy daemon.
 * VHAL changes the power policy and the power policy daemon notifies the change to registered
 * subscribers. When subscribing to policy changes, a filter can be specified so that the registered
 * callbacks can listen only to a specific power component's change.
 */

@VintfStability
interface ICarPowerPolicyServer {
  /**
   * Gets the current power policy.
   */
  CarPowerPolicy getCurrentPowerPolicy();

  /**
   * Gets whether the power component is turned on or off.
   *
   * @param componentId Power component ID defined in PowerComponent.aidl to check power state.
   * @return True if the component's power state is on.
   */
  boolean getPowerComponentState(in PowerComponent componentId);

  /**
   * Subscribes to power policy change.
   * Notification is sent to the registered callback when the power policy changes and the power
   * state of the components which the callback is interested in changes.
   *
   * @param callback Callback that is invoked when the power policy changes.
   * @param filter The list of components which the callback is interested in.
   */
  void registerPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback,
      in CarPowerPolicyFilter filter);

  /**
   * Unsubscribes from power policy change.
   *
   * @param callback Callback that doesn't want to receive power policy change.
   */
  void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);
}

ICarPowerPolicyChangeCallback.aidl

package android.frameworks.automotive.powerpolicy;

import android.frameworks.automotive.powerpolicy.CarPowerPolicy;

/**
 * ICarPowerPolicyChangeCallback is notified when a power policy changes.
 */

@VintfStability
oneway interface ICarPowerPolicyChangeCallback {
  /**
   * Called when a power policy is fully changed.
   *
   * @param policy The current policy.
   */
  void onPolicyChanged(in CarPowerPolicy policy);
}

Взаимодействие с Java-модулями

CarPowerManager предоставляет методы для управления политикой электропитания:

  • Получите текущую политику власти.
  • Получить текущую группу политики электропитания
  • Примените новую политику электропитания
  • Установите новую группу политики электропитания

Только модули с системными привилегиями могут использовать эти методы. Модули, которые хотят получать информацию о применении политики электропитания, могут зарегистрировать прослушиватель изменения политики электропитания в CarPowerManager .