Energiespareinstellungen

Zur Unterstützung des fahrzeugspezifischen Energiemanagements stellt Android einen CarPowerManagementService Dienst und eine CarPowerManager Schnittstelle bereit.

Zustandsübergänge werden von der Vehicle Master Control Unit (VMCU) ausgelöst. Um mit der VMCU zu kommunizieren, müssen Integratoren mehrere Komponenten implementieren. Integratoren sind für die Integration mit der Vehicle Hardware Abstraction Layer (VHAL) und der Kernel-Implementierung verantwortlich. Integratoren sind auch dafür verantwortlich, Wake-Quellen zu deaktivieren und sicherzustellen, dass Abschaltungen nicht auf unbestimmte Zeit verschoben werden.

Terminologie

Die folgenden Begriffe werden in diesem Dokument verwendet:

App-Prozessor (AP)
Teil des Systems on a Chip (SoC) .
Board-Support-Paket (BSP)
Die Softwareschicht, die hardwarespezifische Boot-Firmware und Gerätetreiber enthält, die es einem eingebetteten Betriebssystem ermöglichen, in einer bestimmten Hardwareumgebung (einem Motherboard) zu funktionieren und in das eingebettete Betriebssystem integriert zu sein.
CarPowerManager (CPM)
Stellt eine API für Apps bereit, um sich für Änderungen des Energiezustands zu registrieren.
CarPowerManagementService (CPMS)
Implementiert die Auto-Power-State-Machine, stellt eine Schnittstelle zu VHAL dar und führt die letzten Aufrufe von suspend() und shutdown() aus.
CarPowerPolicyDaemon (CPPD)
Macht die AIDL-Schnittstellen für native Prozesse verfügbar, um den Energierichtlinien-Listener zu registrieren.
Allzweck-Eingabe oder -Ausgabe (GPIO)
Ein digitaler Signalstift für allgemeine Zwecke.
Hardware-Abstraktionsschicht (HAL)
Eine Softwareschicht, mit der alle anderen Module höherer Ebene interagieren müssen, um auf Hardwarefunktionen zuzugreifen.
überwintern
Wird auch als Suspend-to-Disk (S2D/S4) bezeichnet. Der SoC wird in den S4-Energiemodus (Ruhezustand) versetzt und der RAM-Inhalt wird auf nichtflüchtige Medien (z. B. Flash oder Festplatte) geschrieben und das gesamte System wird ausgeschaltet.
Medienprozessor (MP)
Siehe System-on-a-Chip (SoC) .
Integrierter Schaltkreis für Energiemanagement (PMIC)
Chip zur Verwaltung des Strombedarfs des Hostsystems.
System auf einem Chip (SoC)
Hauptprozessor, auf dem AAOS läuft, normalerweise von Herstellern wie Intel, MediaTek, Nvidia, Qualcomm, Renesas und Texas Instruments.
aussetzen
Wird auch als Suspend-to-RAM (S2R oder STR) bezeichnet. Der SoC wird in den S3-Energiemodus versetzt und die CPU wird ausgeschaltet, während der RAM eingeschaltet bleibt.
Fahrzeug-HAL (VHAL)
Die Android-API dient als Schnittstelle zum Fahrzeugnetzwerk. Der Tier-1-Partner oder OEM ist für das Schreiben dieses Moduls verantwortlich. Das Fahrzeugnetzwerk kann jede physikalische Schicht nutzen (z. B. CAN, LIN, MOST und Ethernet). Der VHAL abstrahiert dieses Fahrzeugnetzwerk, um AAOS die Interaktion mit dem Fahrzeug zu ermöglichen.
Fahrzeugschnittstellenprozessor (VIP)
Siehe Fahrzeug-MCU.
Fahrzeughauptsteuergerät (VMCU)
Der Mikrocontroller, der die Schnittstelle zwischen dem Fahrzeugnetzwerk und dem SoC bereitstellt. Der SoC kommuniziert mit der VMCU über USB-, UART-, SPI- und GPIO-Signale.

System-Design

In diesem Abschnitt wird beschrieben, wie AAOS den Energiestatus des App-Prozessors darstellt und welche Module das Energieverwaltungssystem implementieren. In diesem Material wird auch beschrieben, wie diese Module zusammenarbeiten und wie Zustandsübergänge typischerweise auftreten.

Auto-Power-Zustandsmaschine

AAOS verwendet eine Zustandsmaschine , um den Energiezustand des AP darzustellen. Die Zustandsmaschine stellt die unten dargestellten Zustände bereit:

Auto-Power-Zustandsmaschine

Abbildung 1. Auto-Power-State-Machine.

Die häufigsten Übergänge sind blau hervorgehoben. Dies sind die Zustände und gemeinsamen Übergänge:

  • Suspend-to-RAM. Das Fahrzeug und der SoC sind ausgeschaltet. Es wird kein Code ausgeführt. Die Stromversorgung des SoC-RAM bleibt erhalten.
  • Warten Sie auf VHAL. Wenn der Fahrer mit dem Fahrzeug interagiert, indem er beispielsweise eine Tür öffnet, versorgt die VMCU den SoC mit Strom. AAOS setzt den Suspend-to-RAM-Modus fort und geht in „Warten auf VHAL“ über, wo es auf die Koordination mit dem VHAL wartet.
  • An. Der VHAL weist AAOS an, in den Ein-Zustand zu wechseln. In diesem Zustand läuft AAOS vollständig und interagiert mit dem Treiber.
  • Herunterfahren vorbereiten. Wenn der Fahrer mit der Fahrt fertig ist, weist der VHAL AAOS an, in den Shutdown Prepare-Modus zu wechseln. In diesem Zustand sind Display und Audio ausgeschaltet und AAOS interagiert nicht mit dem Fahrer. Das Android-System läuft noch und es stehen Ihnen kostenlose Updates für Apps und das Android-System zur Verfügung. Wenn Aktualisierungen (falls vorhanden) abgeschlossen sind, wechselt das Android-System zu „Warten auf VHAL-Fertigstellung“.
  • Warten Sie, bis VHAL fertig ist. An diesem Punkt informiert AAOS den VHAL darüber, dass er zum Herunterfahren bereit ist. Es wird erwartet, dass die VMCU den SoC in den Tiefschlaf versetzt und den App-Prozessor von der Stromversorgung trennt. AAOS befindet sich dann im Suspend-to-RAM-Zustand, obwohl kein Code ausgeführt wird.

Energieverwaltungsmodule

Das Energiemanagementsystem besteht aus folgenden Modulen:

Modulname Beschreibung
CarPowerManager Java- oder C++-API.
CarPowerManagementService Koordiniert die Energiezustandsübergänge.
CarPowerPolicyDaemon Kommuniziert mit den nativen Energierichtlinien-Clients.
Fahrzeug HAL Schnittstelle zur VMCU.
Kernel Suspend to RAM- oder Disk-Implementierung.

Die Tiefschlaf-/Ruhezustandsfunktion (Android an RAM/Festplatte hängen lassen) ist im Kernel implementiert. Diese Funktion wird dem Benutzerbereich als spezielle Datei unter /sys/power/state zur Verfügung gestellt. AAOS wird angehalten, indem mem oder disk in diese Datei geschrieben wird.

Das CPMS koordiniert den Energiezustand mit anderen Diensten und HALs. Das CPMS implementiert die oben beschriebene Zustandsmaschine und sendet Benachrichtigungen an jeden Beobachter, wenn ein Stromzustandsübergang auftritt. Dieser Dienst verwendet VHAL auch zum Senden von Nachrichten an die Hardware.

Das CPPD verwaltet die Energiepolitik, bis das CPMS die Kontrolle übernimmt. Außerdem werden Benachrichtigungen über Änderungen der Energierichtlinien an die nativen Listener gesendet.

Einige Eigenschaften sind im VHAL definiert. Um mit der VMCU zu kommunizieren, liest und schreibt das CPMS diese Eigenschaften. Apps können die im CPM definierte Schnittstelle verwenden, um Änderungen des Energiezustands zu überwachen. Über diese Schnittstelle können Apps auch Energierichtlinien- Listener registrieren. Diese API kann von Java aus aufgerufen werden und ist mit @hide/@System API annotiert, was bedeutet, dass sie nur für privilegierte Apps verfügbar ist. Die Beziehung zwischen diesen Modulen, Apps und Diensten wird unten dargestellt:

Referenzdiagramm der Leistungskomponenten

Abbildung 2. Referenzdiagramm der Leistungskomponenten.

Nachrichtenfolge

Im vorherigen Abschnitt wurden die Module beschrieben, aus denen das Energieverwaltungssystem besteht. In diesem Abschnitt wird anhand der Beispiele zum Eintreten in den Tiefschlaf und zum Verlassen des Tiefschlafs erläutert, wie die Module und Apps kommunizieren:

Begeben Sie sich in den Tiefschlaf

Nur die VMCU kann den Tiefschlaf einleiten. Sobald der Tiefschlaf eingeleitet wird, sendet die VMCU über die VHAL eine Benachrichtigung an das CPMS. Das CPMS ändert den Status in SHUTDOWN PREPARE und sendet diesen Statusübergang an alle Beobachter (die Apps und Dienste, die CPMS überwachen), indem es die Methode onStateChanged() mit einer neuen Status-ID aufruft, die vom CPM bereitgestellt wird.

Das CPM vermittelt zwischen den Apps/Diensten und dem CPMS. Die onStateChanged() Methode für die Apps/Dienste wird synchron in der onStateChanged() Methode des CPM aufgerufen. Die meisten Apps und Dienste müssen ihre Vorbereitung abschließen, bevor Sie von diesem Anruf zurückkehren. Privilegierte Dienste dürfen ihre Vorbereitungen asynchron fortsetzen, nachdem sie für PRE_SHUTDOWN_PREPARE , SUSPEND_ENTER , POST_SUSPEND_ENTER zurückgegeben wurden. In diesem Fall soll der privilegierte Dienst „complete()“ für das bereitgestellte CompletablePowerStateChangeFuture Objekt aufrufen, wenn seine Vorbereitung abgeschlossen ist. Beachten Sie, dass die asynchrone Vorbereitung für SHUTDOWN_PREPARE nicht zulässig ist. Bevor DEEP_SLEEP_ENTRY an den VHAL gesendet wird, sendet das CPMS regelmäßig Anfragen zum Aufschieben des Herunterfahrens an den VHAL.

Wenn alle CPM-Objekte die Vorbereitungen zum Herunterfahren abgeschlossen haben, sendet das CPMS AP_POWER_STATE_REPORT an die VHAL, die dann die VMCU benachrichtigt, dass der AP zum Anhalten bereit ist. Das CPMS ruft auch seine Suspend-Methode auf, die den Kernel anhält.

Der oben beschriebene Ablauf wird im Folgenden veranschaulicht:

Begeben Sie sich in den Tiefschlaf

Abbildung 3. Betreten Sie den Tiefschlaf.

Von CPM bereitgestellte Programmierschnittstellen

In diesem Abschnitt wird die vom CPM für System-Apps und -Dienste bereitgestellte Java-API beschrieben. Diese API ermöglicht der Systemsoftware Folgendes:

  • Überwachen Sie Änderungen des Energiezustands im AP.
  • Wenden Sie Energierichtlinien an.

Verwenden Sie diese Schritte, um die vom CPM bereitgestellten APIs aufzurufen:

  1. Um die CPM-Instanz abzurufen, rufen Sie die Car-API auf.
  2. Rufen Sie die entsprechende Methode für das in Schritt 1 erstellte Objekt auf.

Erstellen Sie ein CarPowerManager-Objekt

Um ein CPM-Objekt zu erstellen, rufen Sie die getCarManager() -Methode des Car-Objekts auf. Bei dieser Methode handelt es sich um eine Fassade zum Erstellen von CPM-Objekten. Geben Sie android.car.Car.POWER_SERVICE als Argument an, um ein CPM-Objekt zu erstellen.

Car car = Car.createCar(this);
CarPowerManager powerManager =
  (CarPowerManager) car.getCarManager(android.car.Car.POWER_SERVICE);

CarPowerStateListener und Registrierung

System-Apps und -Dienste können durch die Implementierung CarPowerManager.CarPowerStateListener Benachrichtigungen über Änderungen des Energiezustands empfangen. Diese Schnittstelle definiert eine Methode onStateChanged() , eine Rückruffunktion, die aufgerufen wird, wenn der Energiezustand von CPMS geändert wird. Das folgende Beispiel definiert eine neue anonyme Klasse, die die Schnittstelle implementiert:

private final CarPowerManager.CarPowerStateListener powerListener =
  new CarPowerManager.CarPowerStateListener () {
    @Override
     public void onStateChanged(int state) {
       Log.i(TAG, "onStateChanged() state = " + state);
     }
};

Um dieses Listener-Objekt anzuweisen, einen Energiezustandsübergang zu überwachen, erstellen Sie einen neuen Ausführungsthread und registrieren Sie den Listener und diesen Thread beim CPM-Objekt:

executor = new ThreadPerTaskExecutor();
powerManager.setListener(powerListener, executor);

Wenn der Energiezustand geändert wird, wird die Methode onStateChanged() des Listener-Objekts mit einem Wert aufgerufen, der den neuen Energiezustand darstellt. Der Zusammenhang zwischen Istwert und Leistungszustand wird im CarPowerManager definiert und ist in der folgenden Tabelle dargestellt:

Name Beschreibung
STATE_ON Geben Sie den Ein-Zustand ein. Das System ist voll funktionsfähig.
STATE_SHUTDOWN_CANCELLED Das Herunterfahren wird abgebrochen und der Energiezustand wird auf den Normalzustand zurückgesetzt.
STATE_SHUTDOWN_ENTER Von Apps wird erwartet, dass sie bereinigt werden und zum Herunterfahren bereit sind.
STATE_POST_SHUTDOWN_ENTER Die Vorbereitungen zum Herunterfahren sind abgeschlossen und VMCU ist zum Herunterfahren bereit. Geben Sie den Shutdown-Status ein.
STATE_PRE_SHUTDOWN_PREPARE Der Herunterfahrvorgang wird angefordert, aber CPMS startet den Vorgang noch nicht. Display und Ton sind weiterhin eingeschaltet
STATE_SHUTDOWN_PREPARE Der Garagenmodus kann während dieses Zeitraums ausgeführt werden.
STATE_SUSPEND_ENTER Von Apps wird erwartet, dass sie bereinigt werden und für die Suspend-to-RAM-Bereitschaft bereit sind.
STATE_POST_SUSPEND_ENTER Die Vorbereitungen für Suspend-to-RAM sind abgeschlossen und VMCU ist bereit für Suspend-to-RAM. Geben Sie den Suspend-Status ein.
STATE_SUSPEND_EXIT Reaktivieren Sie den Suspend-Modus oder setzen Sie ihn nach einem abgebrochenen Suspend-Modus fort.
STATE_HIBERNATION_ENTER Von Apps wird erwartet, dass sie bereinigt werden und für den Ruhezustand bereit sind.
STATE_POST_HIBERNATION_ENTER Die Vorbereitungen für den Ruhezustand sind abgeschlossen und die VMCU ist bereit für den Ruhezustand. Wechseln Sie in den Ruhezustand.
STATE_HIBERNATION_EXIT Wachen Sie aus dem Ruhezustand auf oder starten Sie aus einem abgebrochenen Ruhezustand fort.
STATE_WAIT_FOR_VHAL Das System startet, wartet jedoch darauf, die Kommunikation mit dem VHAL herzustellen, bevor es in den EIN-Zustand wechselt.

Aufhebung der CarPowerStateListener-Registrierung

Um die Registrierung aller bei CPM registrierten Listener-Objekte aufzuheben, rufen Sie die Methode clearListener auf:

powerManager.clearListener();

Systemintegration in Ihre Android-Implementierung

Integratoren sind für folgende Punkte verantwortlich:

  • Implementierung der Kernel-Schnittstelle zum Anhalten von Android.
  • Implementieren der VHAL-Funktionen, um:
    • Übertragen Sie die Einleitung des Suspend- oder Shutdown-Vorgangs vom Auto auf Android.
    • Senden Sie die Shutdown-Ready-Nachricht von Android an das Auto.
    • Initiieren Sie das Herunterfahren oder Anhalten von Android über die Linux-Kernel-Schnittstelle.
  • Stellen Sie sicher, dass alle Wakesources deaktiviert sind, wenn sich das Gerät im Ruhezustand befindet.
  • Stellen Sie sicher, dass Apps schnell genug heruntergefahren werden, um den Herunterfahrvorgang nicht auf unbestimmte Zeit zu verschieben.
  • Stellen Sie sicher, dass der BSP Gerätekomponenten gemäß der Energierichtlinie einschaltet (oder ausschaltet), um den Suspend- oder Ruhezustand nicht zu blockieren

Kernel-Schnittstelle: /sys/power/state

AAOS versetzt ein Gerät in den Suspend-Modus, wenn eine App oder ein Dienst mem für Suspend-to-RAM oder disk für Suspend-to-Disk in eine Datei unter /sys/power/state schreibt. Der Integrator muss eine Funktion bereitstellen, die diese Datei überwacht und Linux in den Suspend-Power-Zustand versetzt. Diese Funktion sendet möglicherweise einen GPIO an die VMCU, um die VMCU darüber zu informieren, dass das Gerät vollständig heruntergefahren wurde. Der Integrator ist auch dafür verantwortlich, etwaige Race-Bedingungen zwischen dem Senden der endgültigen Nachricht durch VHAL an die VMCU und dem Wechsel des Systems in den Suspend- oder Shutdown-Modus zu beseitigen.

VHAL-Verantwortung

Der VHAL stellt eine Schnittstelle zwischen dem Fahrzeugnetzwerk und Android bereit. Der VHAL:

  • Gibt die Einleitung des Suspend- oder Shutdown-Vorgangs vom Auto an Android weiter.
  • Sendet die Shutdown-Ready-Nachricht von Android an das Auto.
  • Initiiert das Herunterfahren oder Anhalten von Android über die Linux-Kernel-Schnittstelle.

Wenn das CPMS dem VHAL mitteilt, dass es zum Herunterfahren bereit ist, sendet das VHAL die Meldung „Bereit zum Herunterfahren“ an die VMCU. Normalerweise übertragen On-Chip-Peripheriegeräte wie UART, SPI und USB die Nachricht. Sobald die Nachricht gesendet wurde, ruft das CPMS den Kernel-Befehl auf, um das Gerät anzuhalten oder herunterzufahren. Zuvor kann der VHAL oder BSP einen GPIO umschalten, um der VMCU mitzuteilen, dass die Stromversorgung des Geräts sicher unterbrochen werden kann.

Der VHAL muss die folgenden Eigenschaften unterstützen, die die Energieverwaltung über den VHAL steuern:

Name Beschreibung
AP_POWER_STATE_REPORT Android meldet mit dieser Eigenschaft Zustandsübergänge an die VMCU und verwendet dabei VehicleApPowerStateReport-Enumerationswerte.
AP_POWER_STATE_REQ Die VMCU verwendet diese Eigenschaft, um Android mithilfe der VehicleApPowerStateReq-Enumerationswerte anzuweisen, in verschiedene Energiezustände zu wechseln.

AP_POWER_STATE_REPORT

Verwenden Sie diese Eigenschaft, um den aktuellen Energieverwaltungsstatus von Android zu melden. Diese Eigenschaft enthält zwei Ganzzahlen:

  • int32Values[0] : VehicleApPowerStateReport-Enumeration des aktuellen Status.
  • int32Values[1] : Zeit in Millisekunden zum Verschieben, Ruhen oder Herunterfahren. Die Bedeutung dieses Werts hängt vom ersten Wert ab.

Der erste Wert kann einen der folgenden Werte annehmen. VehicleApPowerStateReport.aidl enthält spezifischere Beschreibungen, die in hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle gespeichert sind.

Wertname Beschreibung Zweiter Wert
WAIT_FOR_VHAL AP startet und muss die Kommunikation mit dem VHAL herstellen.
DEEP_SLEEP_ENTRY AP geht in den Tiefschlafzustand über. Die VMCU sollte den AP nach der im zweiten Wert angegebenen Zeit wieder einschalten. Muss eingestellt werden
DEEP_SLEEP_EXIT AP verlässt den Tiefschlafzustand.
HIBERNATION_ENTRY Der AP wechselt in den Ruhezustand. Die VMCU sollte den AP nach der im zweiten Wert angegebenen Zeit wieder einschalten. Muss eingestellt werden
HIBERNATION_EXIT AP verlässt den Ruhezustand.
SHUTDOWN_POSTPONE Android ist nicht zum Herunterfahren bereit. Die VMCU sollte die im zweiten Wert angegebene Zeit warten, bevor sie den AP herunterfährt. Android kann durch die Ausgabe zusätzlicher SHUTDOWN_POSTPONE-Berichte eine weitere Verschiebung anfordern. Muss eingestellt werden
SHUTDOWN_PREPARE Android bereitet sich auf das Herunterfahren vor. Muss eingestellt werden
SHUTDOWN_START AP ist zum Herunterfahren bereit. Die VMCU sollte den AP nach der im zweiten Wert angegebenen Zeit wieder einschalten. (Die VMCU muss die zeitgesteuerte Einschaltfunktion nicht unterstützen.) Muss eingestellt werden
SHUTDOWN_CANCELLED Android bereitet sich nicht mehr auf das Herunterfahren vor und fährt mit WAIT_FOR_VHAL fort.
AN Android läuft normal.

Der Zustand kann autonom oder als Reaktion auf eine Anfrage über die VMCU gesetzt werden.

AP_POWER_STATE_REQ

Diese Eigenschaft wird von der VMCU gesendet, um Android in einen anderen Energiezustand zu versetzen, und enthält zwei Ganzzahlen:

  • int32Values[0] : VehicleApPowerStateReq Enumerationswert, der den neuen Zustand darstellt, in den übergegangen werden soll.
  • int32Values[1] : VehicleApPowerStateShutdownParam -Enumerationswert. Dieser Wert wird nur für eine SHUTDOWN_PREPARE Nachricht gesendet und übermittelt die darin enthaltenen Optionen an Android.

Der erste ganzzahlige Wert stellt den neuen Zustand dar, in den Android übergehen soll. Die Semantik ist in VehicleApPowerStateReq.aidl definiert und wird unten bereitgestellt:

Wertname Beschreibung
AN AP sollte den vollen Betrieb aufnehmen.
SHUTDOWN_PREPARE Der AP sollte sich auf das Herunterfahren vorbereiten. Der zweite Wert gibt an, ob der AP das Herunterfahren verschieben darf und ob der AP damit rechnen sollte, sich auszuschalten oder in den Tiefschlaf zu wechseln.
CANCEL_SHUTDOWN Der AP sollte aufhören, sich auf das Herunterfahren vorzubereiten, und sich auf das Einschalten vorbereiten.
FERTIG Der AP wird nun heruntergefahren oder suspendiert.

VehicleApPowerStateShutdownParam ist in VehicleApPowerStateShutdownParam.aidl definiert. Diese Aufzählung hat diese Elemente:

Wertname Beschreibung
KANN SCHLAFEN AP kann in den Tiefschlaf wechseln, anstatt vollständig herunterzufahren. Eine Verschiebung ist erlaubt.
CAN_HIBERNATE Der AP kann in den Ruhezustand wechseln, anstatt ihn vollständig herunterzufahren. Eine Verschiebung ist erlaubt.
SHUTDOWN_ONLY AP sollte heruntergefahren werden. Eine Verschiebung ist erlaubt. Tiefschlaf ist nicht erlaubt.
SLEEP_IMMEDIATELY AP kann in den Tiefschlaf wechseln, muss aber entweder sofort schlafen oder herunterfahren. Eine Verschiebung ist nicht zulässig.
HIBERNATE_IMMEDIATELY Der AP kann in den Suspend-to-Disk-Modus wechseln, muss jedoch entweder in den Ruhezustand wechseln oder sofort heruntergefahren werden. Eine Verschiebung ist nicht zulässig.
SHUTDOWN_IMMEDIATELY AP muss sofort heruntergefahren werden. Eine Verschiebung ist nicht zulässig. Tiefschlaf ist nicht erlaubt.

Wake-Quellen

Der Integrator muss die entsprechenden Wake-Quellen deaktivieren, wenn sich das Gerät im Suspend-Modus befindet. Zu den gängigen Wake-Quellen gehören Heartbeats, Modem, WLAN und Bluetooth. Die einzige gültige Weckquelle muss ein Interrupt von der VMCU sein, um den SoC aufzuwecken. Dies setzt voraus, dass die VMCU das Modem auf Remote-Wakeup-Ereignisse (z. B. Remote-Engine-Start) überwachen kann. Wenn diese Funktionalität an den AP übertragen wird, muss eine weitere Wake-Quelle zur Bedienung des Modems hinzugefügt werden.

Apps

OEMs müssen darauf achten, Apps so zu schreiben, dass sie schnell heruntergefahren werden können und den Prozess nicht auf unbestimmte Zeit verschieben.

Anhang

Verzeichnisse im Quellcodebaum

Inhalt Verzeichnis
CarPowerManager-bezogener Code. packages/services/Car/car-lib/src/android/car/hardware/power
CarPowerManagementService und so weiter. packages/services/Car/service/src/com/android/car/power
Dienste, die sich mit dem VHAL befassen, wie VehicleHal und HAlClient . packages/services/Car/service/src/com/android/car/hal
VHAL-Schnittstelle und Eigenschaftsdefinitionen. hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle/
Beispiel-App, um einen Eindruck vom CarPowerManager zu vermitteln packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink

Klassen Diagramm

Dieses Klassendiagramm zeigt die Java-Klassen und Schnittstellen im Energieverwaltungssystem:

Leistungsklassendiagramm

Abbildung 4. Leistungsklassendiagramm.

Objektbeziehung

Abbildung 5 zeigt, welche Objekte Verweise auf andere Objekte haben. Eine Kante bedeutet, dass das Quellobjekt einen Verweis auf das Zielobjekt enthält. Beispielsweise verfügt VehicleHAL über einen Verweis auf ein PropertyHalService-Objekt.

Objektreferenzdiagramm

Abbildung 5. Objektreferenzdiagramm.