Energiespareinstellungen

Zur Unterstützung der fahrzeugspezifischen Energieverwaltung bietet Android einen CarPowerManagementService-Dienst und eine CarPowerManager-Schnittstelle.

Statusü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 in die Vehicle Hardware Abstraction Layer (VHAL) und die Kernelimplementierung verantwortlich. Integratoren sind außerdem dafür verantwortlich, Weckquellen zu deaktivieren und dafür zu sorgen, dass Ausschaltungen nicht auf unbestimmte Zeit verschoben werden.

Terminologie

In diesem Dokument werden die folgenden Begriffe verwendet:

App-Prozessor (AP)
Teil des System-on-a-Chip (SoC).
Board Support Package (BSP)
Die Softwareebene, 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 die in das eingebettete Betriebssystem integriert ist.
CarPowerManager (CPM)
Bietet eine API für Apps, mit der sie sich für Änderungen des Energiestatus registrieren können.
CarPowerManagementService (CPMS)
Implementiert den Statusautomaten für die Autostromversorgung, stellt eine Schnittstelle zu VHAL bereit und führt die abschließenden Aufrufe an suspend() und shutdown() aus.
CarPowerPolicyDaemon (CPPD)
Die AIDL-Schnittstellen werden für native Prozesse freigegeben, um einen Energiesparrichtlinien-Listener zu registrieren.
General-Purpose Input/Output (GPIO)
Ein digitaler Signalpin für allgemeine Zwecke.
Hardware Abstraction Layer (HAL)
Eine Softwareschicht, mit der alle anderen Module höherer Ebenen interagieren müssen, um auf die Hardwarefunktionen zuzugreifen.
hibernate
Wird auch als Suspend-to-Disk (S2D/S4) bezeichnet. Das SoC wird in den Energiesparmodus S4 (Ruhezustand) versetzt, der RAM-Inhalt wird auf nichtflüchtige Medien wie Flash-Speicher oder Laufwerke geschrieben und das gesamte System wird ausgeschaltet.
Medienprozessor (MP)
Siehe System-on-a-Chip (SoC).
Power Management Integrated Circuit (PMIC)
Chip, mit dem die Leistungsanforderungen des Hostsystems verwaltet werden.
System-on-a-Chip (SoC)
Hauptprozessor, auf dem AAOS ausgeführt wird, in der Regel von Herstellern wie Intel, MediaTek, Nvidia, Qualcomm, Renesas und Texas Instruments.
sperren
Auch als Suspend-to-RAM (S2R oder STR) bezeichnet. Das SoC wird in den S3-Energiesparmodus versetzt und die CPU wird ausgeschaltet, während der RAM eingeschaltet bleibt.
Vehicle HAL (VHAL)
Die Android API, die für die Kommunikation mit dem Fahrzeugnetzwerk verwendet wird. Der Tier 1-Partner oder OEM ist für die Erstellung dieses Moduls verantwortlich. Das Fahrzeugnetzwerk kann jede beliebige Bitübertragungsschicht verwenden (z. B. CAN, LIN, MOST und Ethernet). Die VHAL abstrahiert dieses Fahrzeugnetzwerk, damit AAOS mit dem Fahrzeug interagieren kann.
Vehicle Interface Processor (VIP)
MCU des Fahrzeugs ansehen
Vehicle Master Control Unit (VMCU)
Der Mikrocontroller, der die Schnittstelle zwischen dem Fahrzeugnetzwerk und dem SoC bereitstellt. Das SoC kommuniziert über USB-, UART-, SPI- und GPIO-Signale mit der VMCU.

System design

In diesem Abschnitt wird beschrieben, wie AAOS den Energiestatus des App-Prozessors darstellt und welche Module das Energieverwaltungssystem implementieren. Außerdem wird beschrieben, wie diese Module zusammenarbeiten und wie sich Zustände in der Regel ändern.

Statusmaschine für die Energieversorgung des Autos

AAOS verwendet einen Zustandsautomaten, um den Betriebsstatus des ZP anzugeben. Die Zustandsmaschine bietet die unten dargestellten Status:

Statusmaschine für die Energieversorgung des Autos

Abbildung 1: Zustandsmaschine für die Energieversorgung des Autos

Die gängigsten Übergänge sind blau hervorgehoben. Das sind die Status und die gängigen Übergänge:

  • Suspend-to-RAM Das Fahrzeug und das SoC sind ausgeschaltet. Es wird kein Code ausgeführt. Das SoC-RAM wird weiter mit Strom versorgt.
  • Warten Sie auf VHAL. Wenn der Fahrer mit dem Fahrzeug interagiert, z. B. eine Tür öffnet, schaltet die VMCU den SoC ein. AAOS wird aus dem Suspend-to-RAM-Zustand fortgesetzt und geht in den Modus „Warten auf VHAL“, in dem es auf die Koordination mit der VHAL wartet.
  • An Der VHAL weist AAOS an, den Status „An“ zu aktivieren. In diesem Zustand ist AAOS vollständig aktiv und interagiert mit dem Fahrer.
  • Herunterfahren vorbereiten Wenn der Fahrer fertig ist, fordert die VHAL AAOS auf, den Vorgang „Herunterfahren vorbereiten“ auszuführen. In diesem Zustand sind Display und Audio deaktiviert und AAOS interagiert nicht mit dem Fahrer. Das Android-System läuft weiter und Sie können Apps und das Android-System aktualisieren. Wenn alle Updates abgeschlossen sind, wechselt das Android-System in den Status „Auf VHAL-Fertigstellung warten“.
  • Warten, bis VHAL abgeschlossen ist An diesem Punkt informiert AAOS den VHAL darüber, dass er heruntergefahren werden kann. Die VMCU soll das SoC in den Tiefschlaf versetzen und den App-Prozessor ausschalten. AAOS befindet sich dann im Suspend-to-RAM-Status, obwohl kein Code ausgeführt wird.

Energiesparmodule

Das Energieverwaltungssystem besteht aus den folgenden Modulen:

Modulname Beschreibung
CarPowerManager Java- oder C++-API.
CarPowerManagementService Koordiniert die Übergänge zwischen den Betriebsmodi.
CarPowerPolicyDaemon Kommuniziert mit den nativen Clients für die Energiesparrichtlinie.
Fahrzeug-HAL Schnittstelle zur VMCU.
Ploppendes Popcorn Implementierung von „Anhalten im RAM“ oder „Anhalten auf dem Laufwerk“

Die Funktion „Tiefschlaf/Ruhezustand“ (Android im RAM/Laufwerk pausieren) ist im Kernel implementiert. Diese Funktion wird dem Nutzerbereich 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 Energiestatus mit anderen Diensten und HALs. Das CPMS implementiert den oben beschriebenen Zustandsautomaten und sendet Benachrichtigungen an alle Beobachter, wenn ein Übergang des Betriebsstatus auftritt. Dieser Dienst verwendet auch die VHAL, um Nachrichten an die Hardware zu senden.

Die CPPD verwaltet die Energierichtlinie, bis die CPMS die Kontrolle übernimmt. Außerdem werden Benachrichtigungen zu Änderungen der Energiesparrichtlinien an die nativen Listener gesendet.

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

Referenzdiagramm für Netzteile

Abbildung 2: Referenzdiagramm für Stromversorgungskomponenten

Nachrichtensequenz

Im vorherigen Abschnitt wurden die Module beschrieben, aus denen das Energieverwaltungssystem besteht. In diesem Abschnitt wird anhand der Beispiele Deep Sleep aktivieren und Deep Sleep beenden erläutert, wie die Module und Apps kommunizieren:

Tiefschlaf

Nur die VMCU kann den Ruhemodus initiieren. Sobald der Deep Sleep gestartet wurde, sendet die VMCU über die VHAL eine Benachrichtigung an die CPMS. Das CPMS ändert den Status in „SHUTDOWN PREPARE“ und sendet diesen Statusübergang an alle Beobachter (die Apps und Dienste, die das CPMS überwachen), indem die onStateChanged()-Methode mit einer neuen Status-ID aufgerufen wird, die vom CPM bereitgestellt wird.

Der CPM vermittelt zwischen den Apps/Diensten und dem CPMS. Die Methode onStateChanged() für die Apps/Dienste wird synchron in der Methode onStateChanged() des CPM aufgerufen. Bei den meisten Apps und Diensten muss die Vorbereitung abgeschlossen sein, bevor Sie von diesem Anruf zurückkehren. Berechtigte Dienste dürfen ihre Vorbereitungen asynchron fortsetzen, nachdem sie für PRE_SHUTDOWN_PREPARE, SUSPEND_ENTER oder POST_SUSPEND_ENTER zurückgekehrt sind. In diesem Fall muss der privilegierte Dienst die Funktion „complete()“ auf das bereitgestellte CompletablePowerStateChangeFuture-Objekt anwenden, wenn die Vorbereitung abgeschlossen ist. Für SHUTDOWN_PREPARE ist keine asynchrone Vorbereitung zulässig. Bevor DEEP_SLEEP_ENTRY an die VHAL gesendet wird, sendet das CPMS regelmäßig Anfragen zum Verschieben des Herunterfahrens an die VHAL.

Wenn alle CPM-Objekte die Vorbereitungen für das Herunterfahren abgeschlossen haben, sendet das CPMS AP_POWER_STATE_REPORT an die VHAL. Diese benachrichtigt dann die VMCU, dass der ZP zum Aussetzen bereit ist. Der CPMS ruft auch seine Suspend-Methode auf, die den Kernel anhält.

Die oben beschriebene Abfolge ist unten dargestellt:

Tiefschlaf

Abbildung 3: Der Tiefschlaf wird aktiviert.

Von CPM bereitgestellte Programmierschnittstellen

In diesem Abschnitt wird die Java API beschrieben, die vom CPM für System-Apps und ‑Dienste bereitgestellt wird. Mit dieser API kann die Systemsoftware Folgendes tun:

  • Änderungen des Energiestatus im ZP überwachen
  • Energiesparrichtlinien anwenden.

So rufen Sie die vom CPM bereitgestellten APIs auf:

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

CarPowerManager-Objekt erstellen

Rufen Sie die Methode getCarManager() des Car-Objekts auf, um ein CPM-Objekt zu erstellen. Diese Methode ist eine Fassade, die zum Erstellen von CPM-Objekten verwendet wird. 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 Benachrichtigungen zu Änderungen des Energiestatus erhalten, wenn sie CarPowerManager.CarPowerStateListener implementieren. Diese Schnittstelle definiert eine Methode onStateChanged(), eine Callback-Funktion, die aufgerufen wird, wenn sich der Betriebsstatus von CPMS ändert. Im folgenden Beispiel wird eine neue anonyme Klasse definiert, die die Schnittstelle implementiert:

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

Wenn Sie dieses Listener-Objekt anweisen möchten, einen Wechsel des Betriebsstatus 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 sich der Betriebsstatus ändert, wird die onStateChanged()-Methode des Listener-Objekts mit einem Wert aufgerufen, der den neuen Betriebsstatus darstellt. Die Zuordnung zwischen tatsächlichem Wert und Betriebsstatus ist in CarPowerManager definiert und in der folgenden Tabelle dargestellt:

Name Beschreibung
STATE_ON Geben Sie den Einschaltstatus ein. Das System ist voll funktionsfähig.
STATE_SHUTDOWN_CANCELLED Das Herunterfahren wird abgebrochen und der Betriebsstatus wird auf den Normalzustand zurückgesetzt.
STATE_SHUTDOWN_ENTER Apps sollten bereinigen und zum Herunterfahren bereit sein.
STATE_POST_SHUTDOWN_ENTER Die Vorbereitungen für das Herunterfahren sind abgeschlossen und die VMCU kann heruntergefahren werden. Geben Sie den Ausschaltstatus ein.
STATE_PRE_SHUTDOWN_PREPARE Der Ausschaltvorgang wird angefordert, aber CPMS startet den Vorgang noch nicht. Display und Ton sind noch aktiviert
STATE_SHUTDOWN_PREPARE Der Garagenmodus kann während des Zeitraums aktiviert werden.
STATE_SUSPEND_ENTER Apps sollten bereinigen und für die Auslagerung in den RAM bereit sein.
STATE_POST_SUSPEND_ENTER Die Vorbereitungen für den Suspend-to-RAM-Vorgang sind abgeschlossen und die VMCU ist für den Suspend-to-RAM-Vorgang bereit. Geben Sie den Status „Sperren“ ein.
STATE_SUSPEND_EXIT Gerät aus dem Ruhemodus aufwecken oder nach einer abgebrochenen Ruhemodus-Sperrung fortsetzen.
STATE_HIBERNATION_ENTER Apps sollten bereinigen und für den Ruhemodus bereit sein.
STATE_POST_HIBERNATION_ENTER Die Vorbereitungen für den Ruhemodus sind abgeschlossen und die VMCU ist bereit für den Ruhemodus.
STATE_HIBERNATION_EXIT Aus dem Ruhemodus aufwachen oder nach einem abgebrochenen Ruhemodus fortfahren.
STATE_WAIT_FOR_VHAL Das System wird gestartet, wartet aber auf die Kommunikation mit dem VHAL, bevor es in den Ein-Status wechselt.

CarPowerStateListener-Abmeldung

Wenn Sie alle für CPM registrierten Listenerobjekte abmelden möchten, rufen Sie die Methode clearListener auf:

powerManager.clearListener();

Systemintegration in Ihrer Android-Implementierung

Integratoren sind für Folgendes verantwortlich:

  • Implementierung der Kernel-Schnittstelle zum Aussetzen von Android
  • Implementieren Sie die VHAL-Funktionen, um:
    • Die Inaktivitäts- oder Ausschaltvorgänge des Autos an Android weitergeben.
    • Senden Sie die Nachricht „Ausschalten bereit“ von Android an das Auto.
    • Android über die Linux-Kernel-Benutzeroberfläche herunterfahren oder anhalten
  • Alle Weckquellen müssen deaktiviert sein, wenn das Gerät im Ruhemodus ist.
  • Achten Sie darauf, dass Apps schnell genug heruntergefahren werden, damit der Vorgang nicht auf unbestimmte Zeit verschoben wird.
  • Sorgen Sie dafür, dass die BSP-Firmware die Gerätekomponenten gemäß der Energiesparrichtlinie ein- oder ausschaltet, damit der Ruhemodus oder der Hibernationsmodus nicht blockiert wird.

Kernel-Schnittstelle: /sys/power/state

AAOS versetzt ein Gerät in den Ruhemodus, 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 Ruhezustand versetzt. Diese Funktion kann ein GPIO an die VMCU senden, um die VMCU darüber zu informieren, dass das Gerät vollständig heruntergefahren wurde. Der Integrator ist außerdem dafür verantwortlich, alle Race-Bedingungen zwischen dem Senden der letzten Nachricht von VHAL an die VMCU und dem Wechsel des Systems in den Ruhe- oder Ausschaltmodus zu beseitigen.

Verantwortung von VHAL

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

  • Überträgt die Inaktivitäts- oder Ausschaltvorgänge vom Auto an Android.
  • Sendet die Nachricht „Herunterfahren kann beginnen“ von Android an das Auto.
  • Initiiert das Herunterfahren oder Aussetzen von Android über die Linux-Kernel-Schnittstelle.

Wenn das CPMS dem VHAL mitteilt, dass es zum Herunterfahren bereit ist, sendet der VHAL die Meldung „Herunterfahren bereit“ an die VMCU. In der Regel wird die Nachricht von On-Chip-Peripheriegeräten wie UART, SPI und USB übertragen. Nachdem die Nachricht gesendet wurde, ruft das CPMS den Kernelbefehl auf, um das Gerät zu pausieren oder herunterzufahren. Zuvor kann die VHAL oder BSP ein GPIO umschalten, um der VMCU mitzuteilen, dass das Gerät sicher vom Stromnetz getrennt werden kann.

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

Name Beschreibung
AP_POWER_STATE_REPORT Android meldet Statusübergänge an die VMCU mit dieser Property und verwendet dabei die Werte des Enum „VehicleApPowerStateReport“.
AP_POWER_STATE_REQ Die VMCU verwendet diese Eigenschaft, um Android anzuweisen, mithilfe der Werte des Enum „VehicleApPowerStateReq“ in verschiedene Energiesparmodi zu wechseln.

AP_POWER_STATE_REPORT

Verwenden Sie dieses Attribut, um den aktuellen Status der Energieverwaltung von Android zu melden. Diese Eigenschaft enthält zwei Ganzzahlen:

  • int32Values[0]: VehicleApPowerStateReport-Enum für den aktuellen Status.
  • int32Values[1]: Zeit in Millisekunden, um die Ausführung zu verschieben, den Ruhezustand zu aktivieren oder das Gerät herunterzufahren. Die Bedeutung dieses Werts hängt vom ersten Wert ab.

Der erste Wert kann einen der folgenden Werte haben. VehicleApPowerStateReport.aidl enthält detailliertere Beschreibungen, die im hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle gespeichert werden.

Wertname Beschreibung Zweiter Wert
WAIT_FOR_VHAL Der ZP wird gestartet und muss eine Kommunikation mit dem VHAL herstellen.
DEEP_SLEEP_ENTRY Der AP begibt sich in den Tiefschlaf. Die VMCU sollte den ZP nach der im zweiten Wert angegebenen Zeit wieder einschalten. Muss festgelegt werden
DEEP_SLEEP_EXIT Der AP beendet den Tiefschlaf.
HIBERNATION_ENTRY Der AP wechselt in den Ruhemodus. Die VMCU sollte den ZP nach der im zweiten Wert angegebenen Zeit wieder einschalten. Muss festgelegt werden
HIBERNATION_EXIT Der AP beendet den Ruhezustand.
SHUTDOWN_POSTPONE Android ist noch nicht bereit zum Herunterfahren. Die VMCU sollte die im zweiten Wert angegebene Zeit abwarten, bevor sie den ZP herunterfährt. Android kann eine weitere Verschiebung anfordern, indem zusätzliche SHUTDOWN_POSTPONE-Berichte ausgegeben werden. Muss festgelegt werden
SHUTDOWN_PREPARE Android wird heruntergefahren. Muss festgelegt werden
SHUTDOWN_START Der Zugangspunkt kann jetzt heruntergefahren werden. Die VMCU sollte den ZP nach der im zweiten Wert angegebenen Zeit wieder einschalten. Die VMCU muss die Funktion zum zeitgesteuerten Einschalten nicht unterstützen. Muss festgelegt werden
SHUTDOWN_CANCELLED Android beendet die Vorbereitung des Herunterfahrens und fährt mit WAIT_FOR_VHAL fort.
AN Android wird normal ausgeführt.

Der Status kann autonom oder als Reaktion auf eine Anfrage über die VMCU festgelegt werden.

AP_POWER_STATE_REQ

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

  • int32Values[0]: VehicleApPowerStateReq-Eintragstyp, der den neuen Status angibt, in den gewechselt werden soll.
  • int32Values[1]: VehicleApPowerStateShutdownParam-Enum-Wert. Dieser Wert wird nur für eine SHUTDOWN_PREPARE-Nachricht gesendet und überträgt die darin enthaltenen Optionen an Android.

Der erste Ganzzahlwert steht für den neuen Status, in den Android wechseln soll. Die Semantik ist in VehicleApPowerStateReq.aidl definiert und unten aufgeführt:

Wertname Beschreibung
AN Der Zugangspunkt sollte jetzt voll funktionsfähig sein.
SHUTDOWN_PREPARE Der ZP sollte sich auf das Herunterfahren vorbereiten. Der zweite Wert gibt an, ob der AP das Herunterfahren verschieben darf und ob er erwartet, dass er ausgeschaltet oder in den Ruhemodus versetzt wird.
CANCEL_SHUTDOWN Der Zugangspunkt sollte die Vorbereitung auf das Herunterfahren beenden und sich auf das Einschalten vorbereiten.
FERTIG Der Zugangspunkt wird jetzt heruntergefahren oder angehalten.

VehicleApPowerStateShutdownParam ist in VehicleApPowerStateShutdownParam.aidl definiert. Diese Enum-Klasse hat folgende Elemente:

Wertname Beschreibung
CAN_SLEEP Der ZP kann in den Tiefschlafmodus wechseln, anstatt vollständig herunterzufahren. Eine Verschiebung ist zulässig.
CAN_HIBERNATE Der Zugangspunkt kann in den Ruhemodus wechseln, anstatt vollständig herunterzufahren. Eine Verschiebung ist zulässig.
SHUTDOWN_ONLY Der Zugangspunkt sollte heruntergefahren werden. Eine Verschiebung ist zulässig. Der Tiefschlaf ist nicht zulässig.
SLEEP_IMMEDIATELY Der ZP kann in den Tiefschlafmodus wechseln, muss aber sofort in den Ruhemodus oder heruntergefahren werden. Eine Verschiebung ist nicht möglich.
HIBERNATE_IMMEDIATELY Der Zugangspunkt kann in den Modus „Auf-Speicher aussetzen“ wechseln, muss aber sofort in den Ruhemodus oder heruntergefahren werden. Eine Verschiebung ist nicht möglich.
SHUTDOWN_IMMEDIATELY Der Zugangspunkt muss sofort heruntergefahren werden. Verschiebungen sind nicht zulässig. Der Tiefschlaf ist nicht zulässig.

Weckquellen

Der Integrator muss die entsprechenden Weckquellen deaktivieren, wenn sich das Gerät im Ruhemodus befindet. Zu den gängigen Quellen für das Aktivieren gehören Herzschläge, Modem, WLAN und Bluetooth. Die einzige gültige Wake-Quelle muss ein Interrupt von der VMCU sein, um das SoC zu aktivieren. Dabei wird davon ausgegangen, dass die VMCU das Modem auf Remote-Weck-Ereignisse (z. B. Start des Motors per Fernbedienung) überwachen kann. Wenn diese Funktion an den ZP gesendet wird, muss eine weitere Weckquelle für das Modem hinzugefügt werden.

Apps

OEMs müssen Apps so entwickeln, dass sie schnell heruntergefahren werden können und der Vorgang nicht auf unbestimmte Zeit verschoben wird.

Anhang

Verzeichnisse im Quellcodebaum

Inhalt Verzeichnis
Code im Zusammenhang mit CarPowerManager. packages/services/Car/car-lib/src/android/car/hardware/power
CarPowerManagementService usw. packages/services/Car/service/src/com/android/car/power
Dienste, die mit der VHAL arbeiten, z. B. VehicleHal und HAlClient packages/services/Car/service/src/com/android/car/hal
VHAL-Schnittstellen- und Property-Definitionen hardware/interfaces/automotive/vehicle/aidl/android/hardware/automotive/vehicle/
Beispiel-App, die einen Eindruck von der CarPowerManager packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink

Klassendiagramm

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

Diagramm der Leistungsklasse

Abbildung 4: Diagramm der Leistungsklasse.

Objektbeziehung

Abbildung 5 zeigt, welche Objekte Verweise auf andere Objekte haben. Ein Kantenelement bedeutet, dass das Quellobjekt eine Referenz auf das Zielobjekt enthält. VehicleHAL enthält beispielsweise einen Verweis auf ein PropertyHalService-Objekt.

Objektreferenzdiagramm

Abbildung 5: Objektreferenzdiagramm.