Energierichtlinie

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

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

AAOS-Energiezustand

AAOS-Geräte folgen diesem Energiezustandsdiagramm:

AAOS-Leistungszustandsdiagramm

Abbildung 1. AAOS-Leistungszustandsdiagramm

Jeder Energiezustand wird im Folgenden beschrieben:

Wert Beschreibung
Aus Anwendungsprozessor (AP), Speicher und Peripheriegeräte werden physikalisch nicht mit Strom versorgt.
Warte auf VHAL
  • Wenn der Fahrer mit dem Fahrzeug interagiert (zum Beispiel durch Öffnen einer Tür), legt die VMCU Energie an den AP-Speicher an. und Peripherie.
  • AAOS wechselt von einem von drei Zuständen (Aus, Suspend-to-RAM (STR, Wait for VHAL Finish)) und tritt dann in Wait for VHAL ein, wo es auf die Koordination mit dem VHAL wartet.
An
  • Die VHAL weist das AAOS an, in den Ein-Zustand einzutreten. In diesem Zustand läuft AAOS vollständig und interagiert mit dem Treiber.
  • Die Anzeige wird von der Energierichtlinie gesteuert und nicht von Android Display On/Off-Aufrufen für andere Formfaktoren.
Herunterfahren vorbereiten
  • Wenn der Fahrer aufgehört hat zu fahren, weist das VHAL AAOS an, in die Abschaltvorbereitung einzutreten. In diesem Zustand sind die Anzeige und der Ton 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 in Wait for VHAL Finish.
Warten Sie, bis VHAL fertig ist
  • AAOS informiert das VHAL, dass es heruntergefahren werden kann. Es wird erwartet, dass die Vehicle Microcontroller Unit (VMCU) das System-on-Chip (SoC) in den Tiefschlaf versetzt und den AP von der Stromversorgung trennt. AAOS befindet sich dann im Zustand STR, obwohl kein Code ausgeführt wird.
  • Wenn VHAL nicht beendet wird und der Fahrer zurückkehrt, sollte die Haupteinheit (HU) direkt zu Warten auf VHAL übergehen.
Suspend-to-RAM (STR) Das Fahrzeug und der AP sind ausgeschaltet, es wird kein Code ausgeführt und der AP-RAM wird mit Strom versorgt.

Softwarearchitektur

Die Energierichtlinienarchitektur ist unten dargestellt und im folgenden Abschnitt definiert:

Abbildung 2. Energierichtlinienarchitektur

Wie ist Energiepolitik definiert?

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

  • Definiert die Energierichtlinie.
  • Definiert Energierichtliniengruppen, die die standardmäßige Energierichtlinie enthalten und automatisch angewendet werden, wenn Energiestatusübergänge auftreten.
  • Überschreiben Sie die Energierichtlinie des Systems.

Energiepolitik

Die Energierichtlinie ist ein Satz erwarteter Energiezustände von Hardware- und Softwarekomponenten. AAOS unterstützt die folgenden Komponenten in der Energierichtlinie:

  • 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 standardmäßige Energierichtlinie wird automatisch beim Übergang des Energiezustands angewendet, ist in der Energierichtliniengruppe angegeben. Anbieter können die standardmäßige Energierichtlinie für Wait For VHAL, On und Wait for VHAL Finish (Deep Sleep Entry oder Shutdown Start) definieren.

Energierichtlinie des Systems

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

Das Verhalten jeder Komponente in der Energierichtlinie des Systems ist in der folgenden Tabelle aufgeführt. Implementierer können die Erkennung von Bluetooth, NFC und vertrauenswürdigen Geräten in der Energierichtlinie des Systems außer Kraft setzen. Außerkraftsetzungen werden in /vendor/etc/power_policy.xml angewendet.

Komponenten Power-Zustand Konfigurierbar
Audio Aus Nein
Medien Aus Nein
Haupt anzeigen Aus Nein
Cluster anzeigen Aus Nein
Beifahrer anzeigen Aus Nein
Fondpassagier anzeigen Aus Nein
Bluetooth Aus JAWOHL
W-lan AN Nein
Mobilfunk AN Nein
Ethernet AN Nein
Projektion Aus Nein
NFC Aus JAWOHL
Eingang Aus Nein
Sprachinteraktion Aus Nein
Visuelle Interaktion Aus Nein
Erkennung vertrauenswürdiger Geräte AN JAWOHL
Ort Aus Nein
Mikrofon Aus Nein
Zentralprozessor An Nein

Interaktion mit dem VHAL

Der in der Systemschicht ausgeführte Auto-Energierichtlinien-Daemon abonniert zwei Eigenschaften, um Anforderungen von der VHAL abzuhören:

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

Die aktuelle Energierichtlinie im System kann durch andere Module als VHAL geändert werden. In diesem Fall aktualisiert der Auto-Energierichtlinien-Daemon die Eigenschaft CURRENT_POWER_POLICY , um die Änderung an die VHAL zu melden.

Interaktion mit nativen Prozessen

Wie oben erwähnt, läuft der Auto-Power-Policy-Daemon in der Systemschicht und bietet im Hinblick auf die Power-Policy-Verwaltung fast die gleiche Funktionalität wie CPMS, das in der Framework-Schicht läuft. Nehmen Sie außerdem an, 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 zum Aktivieren der Energierichtlinienverwaltung:

  • Rufen Sie die aktuelle Energierichtlinie ab.
  • 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 .