Politica di potere

Per garantire che i componenti hardware e software (come display, audio e interazione vocale) vengano attivati ​​e disattivati ​​in modo selettivo secondo necessità, AAOS fornisce una politica di alimentazione, che consiste in una serie di stati di accensione e spegnimento previsti per i componenti hardware e software . VHAL, o servizi del fornitore con privilegi di sistema, possono applicare una nuova politica di alimentazione quando lo stato di alimentazione di Android passa o quando vengono soddisfatte le condizioni in attesa.

L'applicazione di una politica di alimentazione è consentita negli stati di attesa per VHAL e acceso. In Preparazione allo spegnimento, la modalità Garage è in esecuzione e non dovrebbe essere disturbata da una modifica dello stato di alimentazione. Sebbene non sia possibile applicare una politica di alimentazione regolare, una politica di alimentazione speciale , ovvero la politica di alimentazione del sistema denominata "nessuna interazione dell'utente", viene applicata in Shutdown Prepare.

Stato di alimentazione AAA

I dispositivi AAOS seguono questo diagramma dello stato di alimentazione:

Diagramma dello stato di alimentazione AAA

Figura 1. Diagramma dello stato di alimentazione AAOS

Ogni stato di alimentazione è descritto di seguito:

Valore Descrizione
Spento Non viene fornita alimentazione fisica al processore dell'applicazione (AP), alla memoria e alle periferiche.
Aspetta VHAL
  • Quando il conducente interagisce con il veicolo (ad esempio, aprendo una porta), la VMCU alimenta l'AP, la memoria. e periferiche.
  • AAOS passa da uno dei tre stati (Off, Suspend-to-RAM (STR, Wait for VHAL Finish) e quindi entra in Wait for VHAL, dove attende il coordinamento con il VHAL.
SU
  • Il VHAL indica all'AAOS di entrare nello stato On. In questo stato, AAOS è completamente in esecuzione e interagisce con il driver.
  • Il display è controllato dalla politica di alimentazione e non dalle chiamate di attivazione/disattivazione del display Android per altri fattori di forma.
Preparare lo spegnimento
  • Quando il conducente ha smesso di guidare, il VHAL indica ad AAOS di entrare in preparazione allo spegnimento. In questo stato, il display e l'audio sono spenti e l'AAOS non interagisce con il conducente. Il sistema Android è ancora in esecuzione e può aggiornare le app e il sistema Android. Quando gli aggiornamenti (se presenti) sono completati, il sistema Android entra in Attendi fine VHAL.
Attendi che VHAL finisca
  • AAOS informa il VHAL che può essere spento. L'unità del microcontrollore del veicolo (VMCU) dovrebbe posizionare il System-on-Chip (SoC) in Deep Sleep e rimuovere l'alimentazione dall'AP. AAOS è quindi nello stato STR, sebbene non venga eseguito alcun codice.
  • Se il VHAL non termina e il conducente ritorna, l'unità principale (HU) dovrebbe passare direttamente a Wait for VHAL.
Sospensione su RAM (STR) Il veicolo e l'AP sono spenti, non viene eseguito alcun codice e l'alimentazione viene mantenuta alla RAM dell'AP.

Architettura del software

L'architettura della politica di alimentazione è illustrata di seguito e definita nella sezione seguente:

Figura 2. Architettura della politica di alimentazione

Come viene definita la politica del potere?

Gli implementatori definiscono le politiche di alimentazione in /vendor/etc/automotive/power_policy.xml , che:

  • Definisce la politica di alimentazione.
  • Definisce i gruppi di criteri di alimentazione, che includono il criterio di alimentazione predefinito e vengono applicati automaticamente quando si verificano transizioni di stato di alimentazione.
  • Sostituisci la politica di alimentazione del sistema.

Politica del potere

La politica di alimentazione è un insieme di stati di alimentazione previsti dei componenti hardware e software. AAOS supporta i seguenti componenti nella politica di alimentazione:

  • 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

Gruppo di criteri di alimentazione

La politica di alimentazione predefinita viene applicata automaticamente alla transizione dello stato di alimentazione è specificata nel gruppo di politiche di alimentazione. I fornitori possono definire la politica di alimentazione predefinita per Wait For VHAL, On e Wait for VHAL Finish (Deep Sleep Entry o Shutdown Start).

Politica di alimentazione del sistema

AAOS supporta solo una politica di alimentazione del sistema, che è "nessuna interazione dell'utente". La politica di alimentazione del sistema viene applicata quando il dispositivo passa in modalità silenziosa o garage.

Il comportamento di ciascun componente nella politica di alimentazione del sistema è elencato nella tabella seguente. Gli implementatori possono ignorare il rilevamento di dispositivi Bluetooth, NFC e Trusted nella politica di alimentazione del sistema. Le sostituzioni vengono applicate in /vendor/etc/power_policy.xml .

Componenti Stato di potere Configurabile
Audio Spento No
Media Spento No
Visualizza principale Spento No
Cluster di visualizzazione Spento No
Visualizza passeggero anteriore Spento No
Visualizza passeggero posteriore Spento No
Bluetooth Spento
Wifi SU No
Cellulare SU No
Ethernet SU No
Proiezione Spento No
NFC Spento
Ingresso Spento No
Interazione vocale Spento No
Interazione visiva Spento No
Rilevamento dispositivo affidabile SU
Posizione Spento No
Microfono Spento No
processore SU No

Interazione con il VHAL

Il demone della politica di alimentazione dell'auto in esecuzione nel livello di sistema sottoscrive due proprietà per ascoltare le richieste dal VHAL:

  • POWER_POLICY_REQ , il VHAL scrive l'ID della politica di alimentazione in questa proprietà.
  • POWER_POLICY_GROUP_REQ , il VHAL scrive l'ID del gruppo di politiche di alimentazione in questa proprietà.

La politica di alimentazione corrente nel sistema può essere modificata da moduli diversi da VHAL. In tal caso, il daemon della politica di alimentazione dell'auto aggiorna la proprietà CURRENT_POWER_POLICY per notificare la modifica al VHAL.

Interazione con processi nativi

Come accennato in precedenza, il demone della politica di alimentazione dell'auto viene eseguito nel livello di sistema e, in termini di gestione della politica di alimentazione, fornisce quasi le stesse funzionalità del CPMS in esecuzione nel livello del framework. Si supponga inoltre che il demone della politica di alimentazione dell'auto e il CPMS siano completamente sincronizzati.

Il demone della politica di alimentazione dell'auto esporta le interfacce AIDL per l'utilizzo da parte di HAL e altri processi nativi. Possono essere avvisati quando viene modificata una nuova politica di alimentazione. In altre parole, quando ognuno deve cambiare il suo stato di alimentazione.

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

Interazione con moduli Java

CarPowerManager fornisce metodi per abilitare la gestione dei criteri di alimentazione:

  • Ottieni l'attuale politica di alimentazione.
  • Ottieni il gruppo di politiche di alimentazione corrente
  • Applicare una nuova politica di alimentazione
  • Impostare un nuovo gruppo di politiche di alimentazione

Solo i moduli con privilegi di sistema possono utilizzare i metodi. I moduli che desiderano essere informati quando viene applicata una politica di alimentazione, possono registrare un listener di modifica della politica di alimentazione su CarPowerManager .