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, a AAOS fornece uma política de energia, que consiste em um conjunto de estados esperados de ativação e desativação 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 as transições do estado de energia do Android ou quando as condições pelas quais eles estão aguardando forem atendidas.

A aplicação de uma política de energia é permitida nos estados Wait for VHAL e On. Em Shutdown Prepare, 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 chamada “sem interação do usuário”, é aplicada no Shutdown Prepare.

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 aos periféricos.
Aguarde VHAL
  • Quando o motorista interage com o veículo (por exemplo, abrindo uma porta), o VMCU aplica energia ao AP, memória. e periféricos.
  • O AAOS transita de um dos três estados (Desligado, Suspender para RAM (STR, Aguardar Término do VHAL) e então entra em Aguardar VHAL, onde aguarda a coordenação com o VHAL.
Sobre
  • O VHAL instrui o AAOS a entrar no estado On. Neste 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 de ativação/desativação da exibição do Android para outros formatos.
Preparação para desligamento
  • Quando o motorista parar de dirigir, o VHAL instrui o AAOS a entrar no Shutdown Prepare. Neste estado, o display 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) forem concluídas, o sistema Android entra em Aguardar VHAL Finish.
Aguarde o término do VHAL
  • AAOS informa ao VHAL que pode ser encerrado. Espera-se que a unidade microcontroladora do veículo (VMCU) coloque o System-on-Chip (SoC) em suspensão profunda 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) deverá passar diretamente para Aguardar VHAL.
Suspender para RAM (STR) O veículo e o AP estão desligados, nenhum código está sendo executado e a energia é mantida na RAM do AP.

Arquitetura de software

A arquitetura da política energética é ilustrada abaixo e definida na seção seguinte:

Figura 2. Arquitetura da política energética

Como é definida a política de energia?

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

  • Define a política de energia.
  • Define grupos de políticas 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 dos componentes de hardware e software. AAOS oferece suporte aos 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íticas de energia

A política de energia padrão é aplicada automaticamente na transição do estado de energia e é 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 (Deep Sleep Entry ou Shutdown Start).

Política de energia do sistema

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 Garagem.

O comportamento de cada componente na política de energia do sistema está listado na tabela abaixo. Os implementadores podem substituir a detecção de Bluetooth, NFC e dispositivos confiáveis ​​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
Exibir 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 por 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 inscreve duas propriedades para escutar solicitações do VHAL:

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

A política de energia atual no sistema pode ser alterada por módulos diferentes 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

Conforme mencionado acima, o daemon da política de energia do carro é executado na camada do sistema e, em termos de gerenciamento da política de energia, fornece quase a mesma funcionalidade que o CPMS executado na camada da estrutura. Além disso, suponha que o daemon da 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 for 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 permitir o gerenciamento de políticas 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

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