Energiepolitik

Um sicherzustellen, dass Hardware- und Softwarekomponenten (z. B. Anzeige, Audio und Sprachinteraktion) je nach Bedarf selektiv ein- und ausgeschaltet werden, stellt AAOS eine Energierichtlinie bereit, die aus einer Reihe erwarteter Ein- und Ausschaltzustände für Hardware- und Softwarekomponenten besteht . VHAL oder systemprivilegierte Anbieterdienste können eine neue Energierichtlinie anwenden, wenn der Android-Energiestatus wechselt oder wenn die Bedingungen erfüllt sind, auf die sie warten.

Das Anwenden einer Energierichtlinie ist in den Zuständen „Auf VHAL warten“ und „Ein“ zulässig. In Shutdown Prepare läuft der Garagenmodus und sollte nicht durch eine Änderung des Energiezustands gestört werden. Obwohl keine reguläre Energierichtlinie angewendet werden kann, wird in Shutdown Prepare eine spezielle Energierichtlinie angewendet, nämlich die Systemenergierichtlinie mit dem Namen „Keine Benutzerinteraktion“.

AAOS-Energiestatus

AAOS-Geräte folgen diesem Energiezustandsdiagramm:

AAOS-Energiezustandsdiagramm

Abbildung 1. AAOS-Energiezustandsdiagramm

Jeder Energiezustand wird im Folgenden beschrieben:

Wert Beschreibung
Aus Der Anwendungsprozessor (AP), der Speicher und die Peripheriegeräte werden physisch nicht mit Strom versorgt.
Warten Sie auf VHAL
  • Wenn der Fahrer mit dem Fahrzeug interagiert (z. B. durch Öffnen einer Tür), versorgt die VMCU den AP und den Speicher mit Strom. und Peripheriegeräte.
  • AAOS wechselt von einem von drei Zuständen (Aus, Suspend-to-RAM (STR, Warten auf VHAL-Ende)) und wechselt dann in den Zustand „Warten auf VHAL“, wo es auf die Koordination mit dem VHAL wartet.
An
  • Der VHAL weist das AAOS an, in den Ein-Zustand zu wechseln. In diesem Zustand läuft AAOS vollständig und interagiert mit dem Treiber.
  • Die Anzeige wird durch die Energierichtlinie gesteuert und nicht durch Android-Anzeige-Ein/Aus-Aufrufe für andere Formfaktoren.
Herunterfahren vorbereiten
  • Wenn der Fahrer mit der Fahrt aufgehört hat, weist der VHAL AAOS an, in den Shutdown Prepare-Modus zu wechseln. In diesem Zustand sind Display und Audio ausgeschaltet und das AAOS interagiert nicht mit dem Fahrer. Das Android-System läuft noch und kann Apps und das Android-System aktualisieren. Wenn Aktualisierungen (falls vorhanden) abgeschlossen sind, wechselt das Android-System zu „Warten auf VHAL-Fertigstellung“.
Warten Sie, bis VHAL abgeschlossen ist
  • AAOS informiert den VHAL darüber, dass er heruntergefahren werden kann. Von der Vehicle Microcontroller Unit (VMCU) wird erwartet, dass sie das System-on-Chip (SoC) in den Tiefschlaf versetzt und den AP von der Stromversorgung trennt. AAOS befindet sich dann im STR-Zustand, obwohl kein Code ausgeführt wird.
  • Wenn VHAL nicht abgeschlossen wird und der Treiber zurückkehrt, sollte die Haupteinheit (HU) direkt zu „Warten auf VHAL“ wechseln.
Suspend-to-RAM (STR) Das Fahrzeug und der AP sind ausgeschaltet, es wird kein Code ausgeführt und der AP-RAM wird weiterhin mit Strom versorgt.

Softwarearchitektur

Die Energierichtlinienarchitektur wird unten dargestellt und im folgenden Abschnitt definiert:

Abbildung 2. Architektur der Energiepolitik

Wie wird Machtpolitik definiert?

Implementierer definieren Energierichtlinien in /vendor/etc/automotive/power_policy.xml , die:

  • Definiert die Energierichtlinie.
  • Definiert Energierichtliniengruppen, die die Standardenergierichtlinie enthalten und automatisch angewendet werden, wenn Energiezustandsübergänge auftreten.
  • Überschreiben Sie die Energierichtlinie des Systems.

Machtpolitik

Bei der Energiepolitik handelt es sich um eine Reihe erwarteter Energiezustände von Hardware- und Softwarekomponenten. AAOS unterstützt die folgenden Komponenten in der Energiepolitik:

  • 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

Energierichtliniengruppe

Die Standardenergierichtlinie wird automatisch angewendet, wenn der Energiezustandsübergang in der Energierichtliniengruppe angegeben wird. Anbieter können die Standardenergierichtlinie für „Warten auf VHAL“, „Ein“ und „Warten auf VHAL-Ende“ (Tiefschlafeintritt oder Start des Herunterfahrens) definieren.

Systemstromrichtlinie

AAOS unterstützt nur eine Systemenergierichtlinie, nämlich „keine Benutzerinteraktion“. Die Systemenergierichtlinie wird angewendet, wenn das Gerät in den Garagenmodus wechselt.

Das Verhalten jeder Komponente in der Systemenergierichtlinie ist in der folgenden Tabelle aufgeführt. Implementierer können Bluetooth, NFC und die Erkennung vertrauenswürdiger Geräte in der Systemstromrichtlinie außer Kraft setzen. Überschreibungen werden in /vendor/etc/power_policy.xml angewendet.

Komponenten Energiezustand Konfigurierbar
Audio Aus NEIN
Medien Aus NEIN
Hauptanzeige Aus NEIN
Cluster anzeigen Aus NEIN
Beifahrer anzeigen Aus NEIN
Fondpassagier anzeigen Aus NEIN
Bluetooth Aus JA
W-lan AN NEIN
Mobilfunk AN NEIN
Ethernet AN NEIN
Projektion Aus NEIN
NFC Aus JA
Eingang Aus NEIN
Sprachinteraktion Aus NEIN
Visuelle Interaktion Aus NEIN
Erkennung vertrauenswürdiger Geräte AN JA
Standort Aus NEIN
Mikrofon Aus NEIN
CPU An NEIN

Interaktion mit dem VHAL

Der in der Systemebene ausgeführte Car-Power-Policy-Daemon abonniert zwei Eigenschaften, um auf Anfragen von der VHAL zu hören:

  • POWER_POLICY_REQ , die VHAL schreibt die Energierichtlinien-ID in diese Eigenschaft.
  • POWER_POLICY_GROUP_REQ , die VHAL schreibt die Energierichtliniengruppen-ID in diese Eigenschaft.

Die aktuelle Energiepolitik im System kann durch andere Module als VHAL geändert werden. In diesem Fall aktualisiert der Autostrom-Richtlinien-Daemon die Eigenschaft CURRENT_POWER_POLICY , um die Änderung dem VHAL mitzuteilen.

Interaktion mit nativen Prozessen

Wie oben erwähnt, läuft der Car Power Policy Daemon auf der Systemebene und bietet im Hinblick auf die Energierichtlinienverwaltung nahezu die gleiche Funktionalität wie CPMS, das auf der Framework-Ebene läuft. Gehen Sie außerdem davon aus, dass der Car Power Policy Daemon und CPMS vollständig synchronisiert sind.

Der Car Power Policy Daemon exportiert AIDL-Schnittstellen zur Verwendung durch HALs und andere native Prozesse. Sie können benachrichtigt werden, wenn eine neue Energierichtlinie geändert wird. Mit anderen Worten, wenn jeder seinen Energiezustand ändern muss.

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

Interaktion mit Java-Modulen

CarPowerManager bietet Methoden zur Aktivierung der Energierichtlinienverwaltung:

  • Holen Sie sich die aktuelle Energierichtlinie.
  • Rufen Sie die aktuelle Energierichtliniengruppe ab
  • Wenden Sie eine neue Energierichtlinie an
  • Legen Sie eine neue Energierichtliniengruppe fest

Nur systemprivilegierte Module können die Methoden verwenden. Module, die informiert werden möchten, wenn eine Energierichtlinie angewendet wird, können einen Listener für Energierichtlinienänderungen bei CarPowerManager registrieren.