O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Política de energia

Para garantir que os componentes de hardware e software (como a exibição, áudio e interação de voz) são transformados seletivamente ligar e desligar conforme necessário, AAOS fornece uma política de energia, que consiste em um conjunto de potência esperado dentro e fora estados para componentes de hardware e software . O 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 muda ou quando as condições pelas quais eles estão esperando são atendidas.

A aplicação de uma política de energia é permitida nos estados de Aguardar VHAL e Ligado. 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. Apesar de uma política de energia regular não pode ser aplicado, uma política de poder especial, que é a política de energia do sistema chamado “nenhuma interação do usuário”, é aplicado em Shutdown Prepare.

Estado de energia AAOS

Os dispositivos AAOS seguem este diagrama de estado de energia:

Diagrama de estado de energia AAOS

Figura 1. AAOS diagrama de estado de energia

Cada estado de energia é descrito abaixo:

Valor Descrição
Desligado Nenhuma energia é fornecida fisicamente ao processador de aplicativos (AP), memória e periféricos.
Espere por 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 faz a transição de um dos três estados (Desligado, Suspender para RAM (STR, Aguardar término do VHAL) e, em seguida, entra em Aguardar VHAL, onde aguarda a coordenação com o VHAL.
Sobre
  • O VHAL instrui o AAOS a entrar no estado Ligado. 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 tela do Android para outros fatores de forma.
Preparação para desligamento
  • Quando o motorista para de dirigir, o VHAL instrui AAOS a entrar na preparação de desligamento. 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.
Espere o VHAL terminar
  • AAOS informa ao VHAL que pode ser encerrado. Espera-se que a Unidade de Microcontrolador do Veículo (VMCU) coloque o System-on-Chip (SoC) em Hibernação 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 driver 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 alimentação do AP RAM é mantida.

Arquitetura de software

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

Arquitetura política Figura 2. Poder

Como a política de energia é definida?

Implementadores definir 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 de 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í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

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 a seguir. Os implementadores podem substituir Bluetooth, NFC e detecção de dispositivo confiável na política de energia do sistema. Substitui são aplicados em /vendor/etc/power_policy.xml .

Componentes Estado de energia Configurável
Áudio Desligado Não
meios de comunicação Desligado Não
Display principal Desligado Não
Cluster de exibição Desligado Não
Exibir passageiro da frente 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 da política de energia do carro em execução na camada do sistema assina duas propriedades para ouvir as solicitações do VHAL:

  • POWER_POLICY_REQ , o VHAL escreve ID política de energia a esta propriedade.
  • POWER_POLICY_GROUP_REQ , o VHAL escreve a política de energia ID de grupo para esta propriedade.

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

Interação com processos nativos

Conforme 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 em execução na camada de 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 é alterada. Em outras palavras, quando cada um deve alterar 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í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

Apenas módulos com privilégios de sistema podem usar os métodos. Os módulos que querem ser informado quando uma política de energia é aplicada, pode registar uma mudança ouvinte política de energia para CarPowerManager .