Politica del potere

Per garantire che i componenti hardware e software (come display, audio e interazione vocale) siano attivati ​​e disattivati ​​selettivamente 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, può 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 Wait for VHAL e On. In Shutdown Prepare, la modalità Garage è in esecuzione e non dovrebbe essere disturbata da un cambiamento dello stato di alimentazione. Anche se non è possibile applicare una politica di alimentazione normale, in Preparazione allo spegnimento viene applicata una politica di alimentazione speciale , ovvero la politica di alimentazione del sistema denominata "nessuna interazione utente".

Stato di alimentazione AAOS

I dispositivi AAOS seguono questo diagramma dello stato di alimentazione:

Diagramma dello stato di alimentazione AAOS

Figura 1. Diagramma dello stato di alimentazione AAOS

Ogni stato di alimentazione è descritto di seguito:

Valore Descrizione
Spento Al processore applicativo (AP), alla memoria e alle periferiche non viene fornita fisicamente alcuna alimentazione.
Aspetta VHAL
  • Quando il conducente interagisce con il veicolo (ad esempio, aprendo una porta), la VMCU alimenta la memoria AP. 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 VHAL.
SU
  • Il VHAL ordina all'AAOS di entrare nello stato On. In questo stato, AAOS è completamente in esecuzione e interagisce con il conducente.
  • Il display è controllato dalla politica di risparmio energia e non dalle chiamate di attivazione/disattivazione del display Android per altri fattori di forma.
Preparazione allo spegnimento
  • Quando il conducente ha smesso di guidare, il VHAL ordina ad AAOS di accedere alla preparazione dello 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. Una volta completati gli aggiornamenti (se presenti), il sistema Android entra in Attendi la fine VHAL.
Attendi che VHAL finisca
  • AAOS informa il VHAL che può essere spento. Si prevede che l'unità microcontrollore del veicolo (VMCU) metta il System-on-Chip (SoC) in modalità Deep Sleep e rimuova l'alimentazione dall'AP. AAOS si trova quindi nello stato STR, sebbene non venga eseguito alcun codice.
  • Se VHAL non termina e il conducente ritorna, l'unità principale (HU) dovrebbe passare direttamente ad Attendi VHAL.
Sospensione su RAM (STR) Il veicolo e l'AP sono spenti, non viene eseguito alcun codice e la RAM dell'AP è alimentata.

Architettura del software

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

Figura 2. Architettura della politica energetica

Come viene definita la politica energetica?

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

  • Definisce la politica energetica.
  • Definisce i gruppi di policy di alimentazione, che includono la policy di alimentazione predefinita e vengono applicati automaticamente quando si verificano transizioni di stato di alimentazione.
  • Sostituisci la politica di alimentazione del sistema.

Politica di potere

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

  • 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 politiche energetiche

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 policy di alimentazione predefinita per Wait For VHAL, On e Wait for VHAL Finish (Deep Sleep Entry o Shutdown Start).

Politica energetica del sistema

AAOS supporta solo una politica di alimentazione del sistema, ovvero "nessuna interazione con l'utente". La politica di risparmio energia del sistema viene applicata quando il dispositivo entra in modalità Garage.

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

Componenti Stato di potenza Configurabile
Audio Spento NO
Media Spento NO
Visualizza principale Spento NO
Gruppo di visualizzazione Spento NO
Visualizza il passeggero anteriore Spento NO
Visualizza il 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 dei dispositivi attendibili 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à.

L'attuale politica energetica nel sistema può essere modificata da moduli diversi da VHAL. In tal caso, il daemon della policy 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 energetica dell'auto viene eseguito a livello di sistema e, in termini di gestione della politica energetica, fornisce quasi le stesse funzionalità del CPMS in esecuzione a livello quadro. Inoltre, presupponiamo che il daemon 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 degli HAL e di altri processi nativi. Possono ricevere una notifica quando viene modificata una nuova politica di alimentazione. In altre parole, quando ciascuno deve cambiare il proprio stato di potere.

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 delle politiche di alimentazione:

  • Ottieni la politica energetica attuale.
  • Ottieni il gruppo di policy di alimentazione corrente
  • Applicare una nuova politica di alimentazione
  • Imposta un nuovo gruppo di criteri 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 .