Política de energia

Para garantir que os componentes de hardware e software (como exibição, áudio e interação de voz) sejam ativados e desativados seletivamente conforme necessário, o AAOS fornece uma política de energia, que consiste em um conjunto de estados de ativação e desativação esperados para componentes de hardware e software . VHAL, ou serviços de fornecedores com privilégios de sistema, podem aplicar uma nova política de energia quando o estado de energia do Android muda ou quando as condições que estão esperando são atendidas.

A aplicação de uma política de energia é permitida nos estados Wait for VHAL e On. Em Preparação para desligamento, o Modo Garagem está em execução e não deve ser perturbado por uma mudança no estado de energia. Embora uma política de energia regular não possa ser aplicada, uma política de energia especial , que é a política de energia do sistema denominada “sem interação do usuário”, é aplicada em Preparação para desligamento.

Estado de energia AAOS

Os dispositivos AAOS seguem este diagrama de estado de energia:

Diagrama de estado de energia AAOS

Figura 1. Diagrama de estado de energia AAOS

Cada estado de energia é descrito abaixo:

Valor Descrição
Desligado Nenhuma energia é fornecida fisicamente ao processador de aplicativos (AP), memória e periféricos.
Aguarde VHAL
  • Quando o motorista interage com o veículo (por exemplo, abrindo uma porta), a VMCU aplica energia ao AP, memória. e periféricos.
  • AAOS faz a transição de um dos três estados (Off, Suspend-to-RAM (STR, Wait for VHAL Finish) e entra em Wait for VHAL, onde aguarda coordenação com o VHAL.
Sobre
  • O VHAL instrui o AAOS a entrar no estado On. Nesse estado, o AAOS está totalmente em execução e interagindo com o driver.
  • A exibição é controlada pela política de energia e não pelas chamadas Ativar/Desativar a exibição do Android para outros fatores de forma.
Preparação de desligamento
  • Quando o motorista para de dirigir, o VHAL instrui o AAOS a entrar no Shutdown Prepare. Nesse estado, a tela e o áudio estão desligados e o AAOS não está interagindo com o driver. O sistema Android ainda está em execução e pode atualizar aplicativos e o sistema Android. Quando as atualizações (se houver) são concluídas, o sistema Android entra em Wait for VHAL Finish.
Aguarde o término do VHAL
  • AAOS informa ao VHAL que ele pode ser desligado. Espera-se que a Unidade de Microcontrolador do Veículo (VMCU) coloque o System-on-Chip (SoC) em Deep Sleep e remova a energia do AP. AAOS está então no estado STR, embora nenhum código esteja sendo executado.
  • Se o VHAL não terminar e o motorista retornar, a unidade principal (HU) deve fazer a transição diretamente para Wait for VHAL.
Suspender para RAM (STR) O veículo e o AP estão desligados, nenhum código está sendo executado e a alimentação é mantida na RAM do AP.

Arquitetura de software

A arquitetura da política de energia é ilustrada abaixo e definida na seção a seguir:

Figura 2. Arquitetura de política de energia

Como é definida a política de poder?

Os implementadores definem as políticas de energia em /vendor/etc/automotive/power_policy.xml , que:

  • Define a política de energia.
  • Define grupos de política de energia, que incluem a política de energia padrão e são aplicados automaticamente quando ocorrem transições de estado de energia.
  • Substitua a política de energia do sistema.

Política de energia

A política de energia é um conjunto de estados de energia esperados de componentes de hardware e software. AAOS suporta os seguintes componentes na política de energia:

  • 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ítica de energia

A política de energia padrão é aplicada automaticamente na transição do estado de energia especificada no grupo de políticas de energia. Os fornecedores podem definir a política de energia padrão para Wait For VHAL, On e Wait for VHAL Finish (entrada de suspensão profunda ou início de desligamento).

Política de energia do sistema

O AAOS suporta apenas uma política de energia do sistema, que é “sem interação do usuário”. A política de energia do sistema é aplicada quando o dispositivo entra no modo silencioso ou no modo garagem.

O comportamento de cada componente na política de energia do sistema está listado na tabela abaixo. Os implementadores podem substituir Bluetooth, NFC e detecção de dispositivo confiável na política de energia do sistema. As substituições são aplicadas em /vendor/etc/power_policy.xml .

Componentes Estado de energia Configurável
Áudio Desligado Não
meios de comunicação Desligado Não
Exibir principal Desligado Não
Cluster de exibição Desligado Não
Exibição do passageiro dianteiro Desligado Não
Exibir passageiro traseiro Desligado Não
Bluetooth Desligado SIM
Wi-fi SOBRE Não
Celular SOBRE Não
Ethernet SOBRE Não
Projeção Desligado Não
NFC Desligado SIM
Entrada Desligado Não
Interação de voz Desligado Não
Interação visual Desligado Não
Detecção de dispositivo confiável SOBRE SIM
Localização Desligado Não
Microfone Desligado Não
CPU Sobre Não

Interação com o VHAL

O daemon de política de energia do carro em execução na camada do sistema assina duas propriedades para ouvir solicitações do VHAL:

  • POWER_POLICY_REQ , o VHAL grava o ID da política de energia nessa propriedade.
  • POWER_POLICY_GROUP_REQ , o VHAL grava o ID do grupo de política de energia nessa propriedade.

A política de energia atual no sistema pode ser alterada por outros módulos além do VHAL. Nesse caso, o daemon de política de energia do carro atualiza a propriedade CURRENT_POWER_POLICY para notificar a alteração no VHAL.

Interação com processos nativos

Como mencionado acima, o daemon de política de energia do carro é executado na camada de sistema e, em termos de gerenciamento de política de energia, fornece quase a mesma funcionalidade que o CPMS executado na camada de estrutura. Além disso, suponha que o daemon de política de energia do carro e o CPMS estejam totalmente sincronizados.

O daemon de política de energia do carro exporta interfaces AIDL para uso por HALs e outros processos nativos. Eles podem ser notificados quando uma nova política de energia é alterada. Em outras palavras, quando cada um deve mudar seu estado de energia.

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);
}

Interação com módulos Java

CarPowerManager fornece métodos para habilitar o gerenciamento de política de energia:

  • Obtenha a política de energia atual.
  • Obtenha o grupo de políticas de energia atual
  • Aplicar uma nova política de energia
  • Definir um novo grupo de políticas de energia

Apenas módulos com privilégios de sistema podem usar os métodos. Módulos que desejam ser informados quando uma política de energia é aplicada, podem registrar um listener de mudança de política de energia no CarPowerManager .