Stromversorgungsrichtlinie

Um sicherzustellen, dass Hardware- und Softwarekomponenten (wie Display-, Audio- und Sprachinteraktion) selektiv ein- und ausgeschaltet werden, bietet AAOS eine Stromversorgungsrichtlinie, die aus einer erwartete Ein- und Ausschaltstatus für Hardware- und Softwarekomponenten. VHAL oder Anbieterdienste mit Systemprivilegierung können eine neue Energierichtlinie anwenden, wenn die Android-Stromversorgung oder wenn Bedingungen erfüllt sind, auf die sie warten.

Das Anwenden einer Energierichtlinie ist im Status „Auf VHAL warten“ und „Auf VHAL warten“ und Aktiviert (manchmal mit Einschränkungen). Im Modus „Vorbereitung des Herunterfahrens“ wird der Garagenmodus ausgeführt. durch eine Änderung des Energiezustands nicht gestört werden. Obwohl keine normale Energierichtlinie angewendet werden kann, eine spezielle Richtlinie für die Stromversorgung, d. h. die Richtlinie "Keine Nutzerinteraktion", Vorbereiten des Herunterfahrens.

AAOS-Stromzustand

AAOS-Geräte folgen diesem Energiestatusdiagramm:

Diagramm des AAOS-Stromzustands

Abbildung 1: Diagramm des AAOS-Stromzustands

Jeder Zustand wird nachfolgend beschrieben:

Wert Beschreibung
Aus
  • Der Anwendungsprozessor (AP), Arbeitsspeicher und Peripheriegeräten.
Auf VHAL warten
  • Wenn der Fahrer mit dem Fahrzeug interagiert (z. B. durch Öffnen einer Tür), wendet die VMCU den ZP, den Speicher. und Peripheriegeräten.
  • AAOS wechselt von einem der drei Status (Aus, Sperren in RAM (STR, Warten auf den Abschluss von VHAL)) und dann in „Warten auf VHAL“ eintritt, wo es auf die Abstimmung mit dem VHAL wartet.
An
  • Der VHAL weist das AAOS an, in den Status „An“ zu wechseln. In diesem Status wird AAOS vollständig ausgeführt und mit dem Fahrer interagieren.
  • Das Display wird über die Ein/Aus-Richtlinie gesteuert, nicht über Ein/Aus-Aufrufe des Android-Displays für andere Formfaktoren.
Vorbereitung zum Herunterfahren
  • Wenn der Treiber nicht mehr fährt, weist der VHAL AAOS an, die Vorbereitung für das Herunterfahren zu starten. In diesem Status sind das Display und der Ton ausgeschaltet und der AAOS interagiert nicht mit dem . Das Android-System wird noch ausgeführt und kann Apps und das Android-System aktualisieren. Wenn Updates (falls vorhanden) abgeschlossen sind, wechselt das Android-System in „Warten auf VHAL-Ende“.
Warten Sie, bis VHAL abgeschlossen ist
  • AAOS informiert den VHAL, dass er heruntergefahren werden kann. Die Fahrzeugmikrocontrollereinheit (Vehicle Microcontroller Unit, VMCU) ist System-on-Chip (SoC) in den Tiefschlafmodus versetzen und den AP mit Strom versorgen. AAOS befindet sich dann im STR-Status, obwohl kein Code ausgeführt wird.
  • Wenn VHAL nicht abgeschlossen wird und der Treiber zurückkehrt, sollte die Haupteinheit (HU) direkt übergehen. auf VHAL warten.
RAM aussetzen (STR)
  • Das Fahrzeug und der ZP sind ausgeschaltet, es wird kein Code ausgeführt und die Stromversorgung wird aufrechterhalten zum AP-RAM übertragen.
Anhalten-to-Disk (STD)
  • Das Fahrzeug und der ZP sind ausgeschaltet, es wird kein Code ausgeführt und der Akku wird nicht mit Strom versorgt an die Prozessoreinheit und das AP-RAM übertragen.

Wie ist die Richtlinie zur Energieversorgung 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 wird angewendet, wenn der Stromzustand wechselt.
  • Überschreibt die Richtlinie zur Stromversorgung des Systems.

Stromversorgungsrichtlinie

Die Stromversorgungsrichtlinie umfasst eine Reihe von erwarteten Energiezuständen der Hardware- und Softwarekomponenten. AAOS unterstützt die folgenden Komponenten in der Stromversorgungsrichtlinie:

AUDIO
MEDIEN
DISPLAY
Bluetooth
WLAN
MOBILGERÄT
ETHERNET
PROGNOSE
NFC
EINGABE
SPRACHINTERAKTION
VISUAL_INTERACTION (VISUAL_INTERACTION)
Vertrauenswürdige Geräteerkennung
STANDORT
MIKROFON
Prozessor

Anbieter können auch eigene benutzerdefinierte Komponenten für Stromversorgungsrichtlinien definieren. Fokus definieren benutzerdefinierte Leistungskomponenten in derselben XML-Datei wie Leistungsrichtlinien, wie in diesem Beispiel:

<customComponents>
  CUSTOM_COMPONENT_1000
  CUSTOM_COMPONENT_SPECIAL_SENSOR
  CUSTOM_COMPONENT_AUX_INPUT
</customComponents>

Energierichtliniengruppe

Die standardmäßige Stromversorgungsrichtlinie wird beim Übergang in den Stromzustand automatisch angewendet: die in der Gruppe für die Stromversorgungsrichtlinie angegeben ist. Anbieter können die standardmäßige Stromversorgungsrichtlinie für Warten Sie auf VHAL, Ein und Warten, bis VHAL abgeschlossen ist (bei tiefem Schlaf oder bei Start des Herunterfahrens).

Richtlinien für die Stromversorgung des Systems

AAOS unterstützt zwei Energierichtlinien des Systems, bei denen es sich um keine Nutzerinteraktion handelt und Vorbereitung beenden. Die Richtlinie zur Stromversorgung des Systems wird angewendet, wenn das Gerät Lautlos-Modus, Garage-Modus, Sperren im RAM oder Anhalten-to-Disk.

In den folgenden Tabellen ist das Verhalten der einzelnen Komponenten in der Richtlinie zur Stromversorgung des Systems aufgeführt. Implementierte Implementierungen können die Bluetooth-, NFC- und vertrauenswürdigen Geräteerkennung in den Richtlinie zur Stromversorgung ohne Nutzerinteraktion. Überschreibungen werden angewendet in /vendor/etc/power_policy.xml

Keine Nutzerinteraktion

Hier ist das Verhalten der Stromversorgungsrichtlinie des Systems Keine Nutzerinteraktion definiert Tabelle:

Komponenten Stromversorgung Konfigurierbar
Audio Aus Nein
Medien Aus Nein
Anzeige Aus Nein
Bluetooth Aus Ja
WLAN An Nein
Mobilfunk An Nein
Ethernet An Nein
Projektion Aus Nein
NFC Aus Ja
Eingang Aus Nein
Assistent Aus Nein
Nutzerinteraktion Aus Nein
Erkennung vertrauenswürdiger Geräte für Nutzeranmeldung An Ja
Standort Aus Nein
Mikrofon Aus Nein
CPU An Nein

Vorbereitung unterbrechen

In der folgenden Tabelle ist das Verhalten der Richtlinie für die Stromversorgung des Systems zur Vorbereitung der Sperrung definiert:

Komponenten Stromzustand Vom OEM konfigurierbar
Audio Aus Nein
Medien Nein
Anzeige Nein
Bluetooth Aus Nein
WLAN Aus Nein
Mobilfunk Nein
Ethernet Nein
Projektion Nein
NFC Nein
Eingang Nein
Assistent Nein
Nutzerinteraktion Nein
Erkennung vertrauenswürdiger Geräte für Nutzeranmeldung Nein
Standort Aus Nein
Mikrofon Aus Nein
CPU Aus Nein

Interaktion mit dem VHAL

Der auf der Systemebene ausgeführte Daemon für die Richtlinie zur Stromversorgung des Autos abonniert zwei Properties, die überwacht werden sollen Anfragen vom VHAL:

  • POWER_POLICY_REQ: Die VHAL schreibt die Energierichtlinien-ID in dieses Attribut.
  • POWER_POLICY_GROUP_REQ: Der VHAL schreibt die Gruppen-ID der Energierichtlinie. für diese Property.

Die aktuelle Stromversorgungsrichtlinie im System kann durch andere Module als VHAL geändert werden. In diesem Fall Der Daemon der Richtlinie zur Stromversorgung des Autos aktualisiert das Attribut CURRENT_POWER_POLICY, um die zum VHAL wechseln.

Interaktion mit nativen Prozessen

Wie bereits erwähnt, wird der Daemon für die Richtlinie zur Stromversorgung von Autos auf der Systemebene ausgeführt, Richtlinienverwaltung, bietet fast dieselben Funktionen wie CPMS, die auf Framework-Ebene ausgeführt werden. Nehmen wir außerdem an, dass der Daemon der Richtlinie zur Energieversorgung und der CPMS vollständig synchronisiert sind.

Der Richtlinien-Daemon zur Stromversorgung von Autos 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: Wann jedes Element geändert werden muss, Energiestatus ändern.

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.
     * @throws IllegalStateException if the current policy is not set.
     */
    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.
     * @throws IllegalArgumentException if the componentId is invalid.
     */
    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.
     * @throws IllegalArgumentException if the callback is already registered.
     * @throws IllegalStateException if the callback is dead.
     */
    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.
     * @throws IllegalArgumentException if the callback is not registered.
     */
    void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);

    /**
     * Applies the power policy.
     *
     * 

{@code policyId} should be one of power policy IDs defined in * {@code /vendor/etc/automotive/power_policy.xml} or predefined system power policies. * * @param policyId ID of power policy. * @throws IllegalArgumentException if {@code policyId} is invalid. */ void applyPowerPolicy(in @utf8InCpp String policyId); /** * Sets the current power policy group. * *

{@code policyGroupId} should be one of power policy group IDs defined in * {@code /vendor/etc/automotive/power_policy.xml}. * * @param policyGroupId ID of power policy group. * @throws IllegalArgumentException if {@code policyGroupId} is invalid. */ void setPowerPolicyGroup(in @utf8InCpp String policyGroupId); }

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:

  • Aktuelle Energierichtlinie abrufen
  • Neue Energierichtlinie anwenden
  • Neue Energierichtliniengruppe festlegen

Nur Module mit Systemberechtigungen können die Methoden verwenden. Module, die in der Tabelle werden informiert, wenn eine Energierichtlinie angewendet wird, kann einen Listener für Energierichtlinienänderung auf CarPowerManager