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

Рисунок 1. Диаграмма состояния питания AAOS.
Ниже описано каждое состояние питания:
| Ценить | Описание |
|---|---|
| Выключенный |
|
| Дождитесь VHAL |
|
| На |
|
| Подготовка к отключению |
|
| Дождитесь завершения работы VHAL. |
|
| Приостановка работы в оперативной памяти (STR) |
|
| Приостановка на диске (STD) |
|
Как определяется энергетическая политика?
Разработчики определяют политики энергопотребления в /vendor/etc/automotive/power_policy.xml , которые:
- Определяет энергетическую политику.
- Определяет группы политик управления питанием, которые включают политику управления питанием по умолчанию и автоматически применяются при переходах между состояниями питания.
- Отменяет политику энергосбережения системы.
Энергетическая политика
Политика энергопотребления представляет собой набор ожидаемых состояний энергопотребления аппаратных и программных компонентов. AAOS поддерживает следующие компоненты в рамках политики энергопотребления:
| АУДИО СМИ ОТОБРАЖАТЬ BLUETOOTH | WI-FI КЛЕТОЧНЫЙ ЭЛТЕРНЕТ ПРОЕКЦИЯ | НФК ВХОД ГОЛОСОВОЕ ВЗАИМОДЕЙСТВИЕ ВИЗУАЛЬНОЕ ВЗАИМОДЕЙСТВИЕ | ОБНАРУЖЕНИЕ НАДЕЖНОГО УСТРОЙСТВА РАСПОЛОЖЕНИЕ МИКРОФОН Процессор |
Поставщики также могут определять собственные пользовательские компоненты управления питанием для использования с политиками управления питанием. Пользовательские компоненты управления питанием определяются в том же XML-файле, что и политики управления питанием, как показано в этом примере:
<customComponents>CUSTOM_COMPONENT_1000 CUSTOM_COMPONENT_SPECIAL_SENSOR CUSTOM_COMPONENT_AUX_INPUT </customComponents>
Группа по энергетической политике
Группа политик управления питанием определяет политику управления питанием по умолчанию, которая автоматически применяется при переходах между состояниями питания. Производители могут определять политику управления питанием по умолчанию для состояний «Ждать VHAL», «Вкл.» и «Ждать завершения VHAL (вход в глубокий сон или начало выключения)».
Политика энергопотребления системы
AAOS поддерживает две политики управления питанием системы: отсутствие взаимодействия с пользователем и подготовка к приостановке. Политика управления питанием системы применяется, когда устройство переходит в бесшумный режим, режим гаража, приостановку работы в ОЗУ или приостановку работы на диск.
В следующих таблицах описано поведение каждого компонента в политике энергопотребления системы. Разработчики могут переопределить параметры Bluetooth, NFC и обнаружения доверенных устройств в политике энергопотребления системы , исключающей взаимодействие с пользователем . Переопределения применяются в /vendor/etc/power_policy.xml .
без взаимодействия с пользователем
В этой таблице описано поведение политики энергосбережения системы, исключающей взаимодействие с пользователем :
| Компоненты | Состояние мощности | Настраиваемый |
|---|---|---|
| Аудио | Выключенный | Нет |
| СМИ | Выключенный | Нет |
| Отображать | Выключенный | Нет |
| Bluetooth | Выключенный | Да |
| Wi-Fi | На | Нет |
| Клеточный | На | Нет |
| ЭН | На | Нет |
| Проекция | Выключенный | Нет |
| НФК | Выключенный | Да |
| Вход | Выключенный | Нет |
| Помощник | Выключенный | Нет |
| Взаимодействие с пользователем | Выключенный | Нет |
| Обнаружение доверенных устройств при входе пользователя в систему | На | Да |
| Расположение | Выключенный | Нет |
| Микрофон | Выключенный | Нет |
| Процессор | На | Нет |
приостановить подготовку
В этой таблице описано поведение политики управления питанием системы подготовки к приостановке :
| Компоненты | Состояние мощности | Возможность настройки производителем оборудования |
|---|---|---|
| Аудио | Выключенный | Нет |
| СМИ | Н/Д | Нет |
| Отображать | Н/Д | Нет |
| Bluetooth | Выключенный | Нет |
| Wi-Fi | Выключенный | Нет |
| Клеточный | Н/Д | Нет |
| ЭН | Н/Д | Нет |
| Проекция | Н/Д | Нет |
| НФК | Н/Д | Нет |
| Вход | Н/Д | Нет |
| Помощник | Н/Д | Нет |
| Взаимодействие с пользователем | Н/Д | Нет |
| Обнаружение доверенных устройств при входе пользователя в систему | Н/Д | Нет |
| Расположение | Выключенный | Нет |
| Микрофон | Выключенный | Нет |
| Процессор | Выключенный | Нет |
Взаимодействие с VHAL
Демон управления энергопотреблением автомобиля, работающий на системном уровне, подписывается на два параметра для прослушивания запросов от VHAL:
- В свойстве
POWER_POLICY_REQVHAL записывает идентификатор политики управления питанием. - Свойство
POWER_POLICY_GROUP_REQзаписывает идентификатор группы политик управления питанием в это свойство VHAL.
Текущая политика энергосбережения в системе может быть изменена модулями, отличными от VHAL. В этом случае демон политики энергосбережения автомобиля обновляет свойство CURRENT_POWER_POLICY , чтобы уведомить VHAL об изменении.
Взаимодействие с собственными процессами
Служба управления питанием автомобиля (CPMS) делегирует управление политиками питания демону управления политиками питания автомобиля. Этот демон является единственным источником достоверной информации о политиках питания в системе. Демон управления политиками питания автомобиля управляет состоянием политик питания и уведомляет CPMS, VHAL и другие собственные клиенты об изменениях.
Демон управления энергопотреблением автомобиля предоставляет интерфейсы 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.
* @throws IllegalStateException if the current policy is not set.
*/
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.
* @throws IllegalArgumentException if the componentId is invalid.
*/
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.
* @throws IllegalArgumentException if the callback is already registered.
* @throws IllegalStateException if the callback is dead.
*/
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.
* @throws IllegalArgumentException if the callback is not registered.
*/
void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);
/**
* Applies the power policy.
*
* {@code policyId} should be one of power policy IDs defined in
* {@code /vendor/etc/automotive/power_policy.xml} or predefined system power policies.
*
* @param policyId ID of power policy.
* @throws IllegalArgumentException if {@code policyId} is invalid.
*/
void applyPowerPolicy(in @utf8InCpp String policyId);
/**
* Sets the current power policy group.
*
*
{@code policyGroupId} should be one of power policy group IDs defined in
* {@code /vendor/etc/automotive/power_policy.xml}.
*
* @param policyGroupId ID of power policy group.
* @throws IllegalArgumentException if {@code policyGroupId} is invalid.
*/
void setPowerPolicyGroup(in @utf8InCpp String policyGroupId);
}
ICarPowerPolicyChangCallback.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