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

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

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

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

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

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

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

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

Ценность Описание
Выключенный Физически питание процессора приложений (AP), памяти и периферийных устройств не подается.
Подождите, пока ВХАЛ
  • Когда водитель взаимодействует с транспортным средством (например, открывая дверь), VMCU подает питание на AP, память. и периферийные устройства.
  • AAOS переходит из одного из трех состояний (Off, Suspend-to-RAM (STR, Wait for VHAL Finish)), а затем переходит в состояние ожидания VHAL, где ожидает согласования с VHAL.
На
  • VHAL инструктирует AAOS войти в состояние On. В этом состоянии AAOS полностью работает и взаимодействует с драйвером.
  • Дисплей управляется политикой питания, а не вызовами Android Display On/Off для других форм-факторов.
Выключение Подготовка
  • Когда водитель прекращает движение, VHAL дает команду AAOS войти в режим подготовки к выключению. В этом состоянии дисплей и звук отключены, а AAOS не взаимодействует с драйвером. Система Android все еще работает и может обновлять приложения и систему Android. Когда обновления (если таковые имеются) завершены, система Android переходит в режим ожидания завершения VHAL.
Подождите, пока VHAL завершит работу.
  • AAOS информирует VHAL о том, что его можно отключить. Ожидается, что блок микроконтроллера транспортного средства (VMCU) переведет систему-на-чипе (SoC) в режим глубокого сна и отключит питание от точки доступа. Затем AAOS находится в состоянии STR, хотя код не выполняется.
  • Если VHAL не завершается и драйвер возвращается, головное устройство (HU) должно перейти непосредственно в режим ожидания VHAL.
Suspend-to-RAM (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 НА Нет
Проекция Выключенный Нет
NFC Выключенный ДА
Вход Выключенный Нет
Голосовое взаимодействие Выключенный Нет
Визуальное взаимодействие Выключенный Нет
Обнаружение доверенных устройств НА ДА
Расположение Выключенный Нет
Микрофон Выключенный Нет
Процессор На Нет

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

Демон политики питания автомобиля, работающий на системном уровне, подписывается на два свойства для прослушивания запросов от 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 .