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

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

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

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

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

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

Рисунок 1. AAOS государственной власти Диаграмма

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

Ценить Описание
Выключенный На процессор приложений, память и периферийные устройства физически не подается питание.
Ждите VHAL
  • Когда водитель взаимодействует с транспортным средством (например, открывая дверь), VMCU подает питание на AP, память. и периферийные устройства.
  • AAOS переходит из одного из трех состояний (Off, Suspend-to-RAM (STR, Wait for VHAL Finish)), а затем переходит в Wait for 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 .

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

Взаимодействие с VHAL

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

  • POWER_POLICY_REQ , то VHAL пишет политику питания ID это свойство.
  • 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 .