política de energia

Para garantir que os componentes de hardware e software (como exibição, áudio e interação por 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, pode aplicar uma nova política de energia quando o estado de energia do Android transita ou quando as condições que eles estão esperando são atendidas.

A aplicação de uma política de energia é permitida nos estados Wait for VHAL e On. Em Shutdown Prepare, o modo Garage 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 na preparação de 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.
  • O AAOS transita de um dos três estados (Desligado, Suspend-to-RAM (STR, Wait for VHAL Finish) e, em seguida, entra em Wait for VHAL, onde aguarda a 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 de ativação/desativação da exibição do Android para outros fatores de forma.
Preparação para 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) forem concluídas, o sistema Android entrará em Wait for VHAL Finish.
Aguarde VHAL terminar
  • AAOS informa ao VHAL que ele pode ser desligado. Espera-se que a Unidade de Microcontrolador de Veículo (VMCU) coloque o System-on-Chip (SoC) em Hibernaçã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) deve fazer a transição 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 de energia é ilustrada abaixo e definida na seção a seguir:

Figura 2. Arquitetura da política de energia

Como é definida a política de poder?

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í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 quando a 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 (Deep Sleep Entry ou Shutdown Start).

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 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 dispositivos Bluetooth, NFC e 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
Mostrar principal Desligado Não
Grupo de exibição Desligado Não
Exibição do passageiro dianteiro Desligado Não
Exibição do 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 ouvir as 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 módulos diferentes de 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 de política de energia do carro é executado na camada do 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 da política de energia:

  • Obtenha a política de energia atual.
  • Obtenha o grupo de política de energia atual
  • Aplicar uma nova política de energia
  • Definir um novo grupo de política 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 listener de mudança de política de energia no CarPowerManager .