Para garantizar que los componentes de hardware y software (como la pantalla, audio, y la interacción de voz) se activan selectivamente dentro y fuera según sea necesario, AAOS ofrece una política de energía, que consiste en un conjunto de potencia esperada dentro y fuera de los estados de los componentes de hardware y software . VHAL, o servicios de proveedores con privilegios del sistema, pueden aplicar una nueva política de energía cuando el estado de energía de Android cambia o cuando se cumplen las condiciones que están esperando.
La aplicación de una política de energía está permitida en los estados Wait for VHAL y On. En Shutdown Prepare, el modo de garaje se está ejecutando y no debe verse afectado por un cambio de estado de energía. Aunque una política de poder regular no se puede aplicar, una política de poder especial, que es la política de energía del sistema llamado “sin interacción del usuario”, se aplica en la parada de preparar.
Estado de energía AAOS
Los dispositivos AAOS siguen este diagrama de estado de energía:
Figura diagrama de estado de energía 1. AAOS
Cada estado de energía se describe a continuación:
Valor | Descripción |
---|---|
Apagado | No se proporciona energía físicamente al procesador de aplicaciones (AP), la memoria y los periféricos. |
Espere VHAL |
|
Sobre |
|
Preparar apagado |
|
Espere a que VHAL termine |
|
Suspender a RAM (STR) | El vehículo y el AP están apagados, no se está ejecutando ningún código y se mantiene la energía en la RAM del AP. |
Arquitectura de software
La arquitectura de la política energética se ilustra a continuación y se define en la siguiente sección:
Arquitectura política de la Figura 2. Potencia
¿Cómo se define la política energética?
Los ejecutores definen las políticas de poder en /vendor/etc/automotive/power_policy.xml
, que:
- Define la política energética.
- Define grupos de políticas de energía, que incluyen la política de energía predeterminada y se aplican automáticamente cuando se producen transiciones de estado de energía.
- Anule la política de energía del sistema.
Política de energía
La política de energía es un conjunto de estados de energía esperados de componentes de hardware y software. AAOS admite los siguientes componentes en la política de energía:
-
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
Grupo de políticas de energía
La política de energía predeterminada se aplica automáticamente cuando la transición del estado de energía se especifica en el grupo de políticas de energía. Los proveedores pueden definir la política de energía predeterminada para Esperar VHAL, Encendido y Esperar finalización de VHAL (Entrada de sueño profundo o Inicio de apagado).
Política de energía del sistema
AAOS solo admite una política de energía del sistema, que es "sin interacción del usuario". La política de energía del sistema se aplica cuando el dispositivo entra en modo silencioso o en modo garaje.
El comportamiento de cada componente de la política de energía del sistema se enumera en la siguiente tabla. Los implementadores pueden anular la detección de dispositivos de confianza, NFC y Bluetooth en la política de energía del sistema. Anulaciones se aplican en /vendor/etc/power_policy.xml
.
Componentes | Estado de energía | Configurable |
---|---|---|
Audio | Apagado | No |
Medios de comunicación | Apagado | No |
Pantalla principal | Apagado | No |
Clúster de visualización | Apagado | No |
Mostrar pasajero delantero | Apagado | No |
Mostrar pasajero trasero | Apagado | No |
Bluetooth | Apagado | SÍ |
Wifi | SOBRE | No |
Celular | SOBRE | No |
Ethernet | SOBRE | No |
Proyección | Apagado | No |
NFC | Apagado | SÍ |
Aporte | Apagado | No |
Interacción de voz | Apagado | No |
Interacción visual | Apagado | No |
Detección de dispositivos confiables | SOBRE | SÍ |
Localización | Apagado | No |
Micrófono | Apagado | No |
UPC | Sobre | No |
Interacción con el VHAL
El demonio de política de energía del automóvil que se ejecuta en la capa del sistema suscribe dos propiedades para escuchar las solicitudes del VHAL:
-
POWER_POLICY_REQ
, la Vhal escribe el ID de política de energía a esta propiedad. -
POWER_POLICY_GROUP_REQ
, la Vhal escribe el ID de grupo de políticas de energía a esta propiedad.
La política de energía actual en el sistema se puede cambiar mediante módulos distintos a VHAL. En ese caso, el demonio de la política de energía del coche actualiza el CURRENT_POWER_POLICY
propiedad de notificar el cambio a la Vhal.
Interacción con procesos nativos
Como se mencionó anteriormente, el demonio de la política de energía del automóvil se ejecuta en la capa del sistema y, en términos de administración de la política de energía, proporciona casi la misma funcionalidad que CPMS que se ejecuta en la capa del marco. Además, suponga que el demonio de la política de energía del automóvil y CPMS están completamente sincronizados.
El demonio de política de energía del automóvil exporta interfaces AIDL para que las utilicen HAL y otros procesos nativos. Se les puede notificar cuando se cambia una nueva política de energía. En otras palabras, cuando cada uno debe cambiar su estado de energía.
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); }
Interacción con los módulos de Java
CarPowerManager
proporciona métodos para permitir la gestión de políticas de energía:
- Obtenga la política de energía actual.
- Obtener el grupo de políticas de energía actual
- Aplicar una nueva política de energía
- Establecer un nuevo grupo de políticas de energía
Solo los módulos con privilegios del sistema pueden utilizar los métodos. Los módulos que quieran ser informados cuando se aplica una política de poder, puede registrar un cambio de política de poder de escucha CarPowerManager
.