Política de energía

Para garantizar que los componentes de hardware y software (como la pantalla, el audio y la interacción de voz) se enciendan y apaguen de forma selectiva según sea necesario, AAOS proporciona una política de energía, que consta de un conjunto de estados de encendido y apagado esperados para 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.

Se permite aplicar una política de energía en los estados Esperar a VHAL y Encendido. En Shutdown Prepare, el modo de garaje se está ejecutando y no debe verse afectado por un cambio de estado de energía. Aunque no se puede aplicar una política de energía regular, se aplica una política de energía especial , que es la política de energía del sistema denominada "sin interacción del usuario", en Shutdown Prepare.

Estado de energía AAOS

Los dispositivos AAOS siguen este diagrama de estado de energía:

Diagrama de estado de energía de AAOS

Figura 1. Diagrama de estado de energía de 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.
Esperar a VHAL
  • Cuando el conductor interactúa con el vehículo (por ejemplo, al abrir una puerta), la VMCU aplica energía a la memoria AP. y periféricos.
  • AAOS pasa de uno de tres estados (Apagado, Suspender a RAM (STR, Esperar a que finalice VHAL) y luego ingresa a Esperar a VHAL, donde espera la coordinación con VHAL.
En
  • El VHAL le indica al AAOS que ingrese al estado On. En este estado, AAOS está completamente funcionando e interactuando con el controlador.
  • La pantalla está controlada por la política de energía y no por las llamadas de Android Display On/Off para otros factores de forma.
Apagar Preparar
  • Cuando el conductor deja de conducir, el VHAL le indica a AAOS que ingrese a Shutdown Prepare. En este estado, la pantalla y el audio están apagados y el AAOS no interactúa con el controlador. El sistema Android todavía se está ejecutando y puede actualizar las aplicaciones y el sistema Android. Cuando se completan las actualizaciones (si las hay), el sistema Android entra en Esperar a que finalice VHAL.
Espere a que finalice VHAL
  • AAOS informa al VHAL que se puede apagar. Se espera que la Unidad de microcontrolador del vehículo (VMCU) coloque el sistema en chip (SoC) en suspensión profunda y elimine la energía del AP. AAOS está entonces en estado STR, aunque no se está ejecutando ningún código.
  • Si VHAL no finaliza y el conductor regresa, la unidad principal (HU) debe pasar directamente a Esperar a VHAL.
Suspender a RAM (STR) El vehículo y el AP están apagados, no se ejecuta ningún código y se mantiene la energía en la RAM del AP.

Arquitectura de software

La arquitectura de la política de energía se ilustra a continuación y se define en la siguiente sección:

Figura 2. Arquitectura de la política energética

¿Cómo se define la política de energía?

Los implementadores definen las políticas de energía en /vendor/etc/automotive/power_policy.xml , que:

  • Define la política de energía.
  • 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.
  • Anular 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 los 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 en la transición del estado de energía que se especifica en el grupo de políticas de energía. Los proveedores pueden definir la política de energía predeterminada para Esperar a VHAL, Encendido y Esperar a que finalice VHAL (Entrada en suspensión profunda o Inicio de apagado).

Política de energía del sistema

AAOS admite solo 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 Modo de garaje.

El comportamiento de cada componente en la política de energía del sistema se muestra en la siguiente tabla. Los implementadores pueden anular la detección de Bluetooth, NFC y dispositivos de confianza en la política de energía del sistema. Las 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
Grupo de visualización Apagado No
Mostrar pasajero delantero Apagado No
Mostrar pasajero trasero Apagado No
Bluetooth Apagado
Wifi EN No
Celular EN No
ethernet EN No
Proyección Apagado No
NFC Apagado
Aporte Apagado No
Interacción de voz Apagado No
Interacción visual Apagado No
Detección de dispositivos de confianza EN
Ubicación Apagado No
Micrófono Apagado No
UPC En No

Interacción con el VHAL

El demonio de la 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 , VHAL escribe el ID de política de energía en esta propiedad.
  • POWER_POLICY_GROUP_REQ , VHAL escribe el ID del grupo de políticas de energía en esta propiedad.

La política de energía actual en el sistema se puede cambiar por módulos que no sean VHAL. En ese caso, el daemon de la política de energía del automóvil actualiza la propiedad CURRENT_POWER_POLICY para notificar el cambio al VHAL.

Interacción con procesos nativos

Como se mencionó anteriormente, el daemon 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 el CPMS están completamente sincronizados.

El demonio de la política de energía del automóvil exporta las interfaces AIDL para que las utilicen las 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 poder.

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 módulos Java

CarPowerManager proporciona métodos para habilitar la administració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 usar los métodos. Los módulos que desean recibir información cuando se aplica una política de energía pueden registrar un detector de cambio de política de energía en CarPowerManager .