Android Automotive OS (AAOS) enthält gängige VHAL-Eigenschaften, die im VHAL-Fenster eines Emulators angezeigt werden soll. Dadurch stehen Ihnen zahlreiche Informationen zur Verfügung, zu VHALs, einschließlich Namen, Beschreibungen und der Bedeutung der Werte. Die Informationen sind die aus den Metadaten der VHAL-Eigenschaften extrahiert wurden, QEMU-Emulator.
Wenn Sie Ihre eigenen VHAL-Eigenschaften zur exklusiven Verwendung auf Ihren Geräten hinzufügen und VHAL-Metadaten aufrufen im VHAL-Fenster müssen Sie den Code ändern und einen benutzerdefinierten QEMU-Emulator erstellen. Bis können Sie Ihre eigenen Beschreibungen im JSON-Format schreiben und diese dann an Ihr System Bild.
Übersicht
Auf dieser Seite wird beschrieben, wie Sie Beschreibungen von VHAL-Eigenschaften in einem AAOS-Emulator erweitern können.
JSON-Metadaten erstellen, um VHAL-Attribute zu erweitern
Der Emulator sucht in allen Dateien, die auf -types-meta.json
enden, nach zusätzlichen Metadaten
im Android Virtual Device (AVD)-Pfad ein. JSON-Dateien müssen aus einem Array
Enum
-Objekte.
Enum-Objekt
Das Enum
-Objekt mit dem Namen VehicleProperty
ist ein Sonderfall in That
können Sie sie als Wurzel betrachten. Der Inhalt wird der Karte der Fahrzeugeigenschaften hinzugefügt. Sonstiges
Enums
(mit einem anderen Namen als VehicleProperty
) definiert Zuordnungen der Namen
benutzerdefinierten Werte.
Enum: { "name" : String, "values" : Array of { ValueObject } }
Wertobjekt
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
Für VehicleProperty
beschreibt der Name Enum
, wie dies
wird im VHAL-Fenster des Emulators angezeigt. Der Wert ist der
property_id
der durch ValueObject
beschriebenen Eigenschaft.
data_enum
verknüpft ValueObject
mit einem weiteren Enum
.
Diese Verknüpfung wird verwendet, um einen Wert in einen menschenlesbaren String zuzuordnen, und existiert nur für
ValueObjects
in Enum
für VehicleProperty
.
Hier ein Beispiel für VehicleProperty
:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001 } ] } ]
In diesem Beispiel hat ein property_id
mit einem value
von
289408001 wird als name
für CURRENT_GEAR
bereitgestellt.
Im Emulator ist diese Eigenschaft bereits als Name Current Gear hartcodiert.
(Sie können dieses Szenario nicht reproduzieren, da diese Seite erstellt wurde, nachdem alle hartcodierten
zu Demonstrationszwecken.)
Abbildung 1: VehicleProperty, definiert mit Name und Wert.
Auf dem Tab VHAL Properties (VHAL-Eigenschaften) des Emulators wird der Name aktualisiert und lautet:
CURRENT_GEAR
wie erwartet.
Daten-Enum
Im obigen Beispiel lautet der angezeigte Wert 4, wenn das Zahnrad auf P:
Abbildung 2: Als Wert wird „4“ angezeigt.
Wie vorgesehen wird im Emulator auf dem Tab VHAL Properties (VHAL-Eigenschaften) der Name so angezeigt:
CURRENT_GEAR
Dies steht im Gegensatz zum vorhandenen Emulator, in dem es als
P:
enum VehicleGear { GEAR_UNKNOWN = 0x0000, GEAR_NEUTRAL = 0x0001, GEAR_REVERSE = 0x0002, GEAR_PARK = 0x0004, GEAR_DRIVE = 0x0008, GEAR_1 = 0x0010, GEAR_2 = 0x0020, GEAR_3 = 0x0040, GEAR_4 = 0x0080, GEAR_5 = 0x0100, GEAR_6 = 0x0200, GEAR_7 = 0x0400, GEAR_8 = 0x0800, GEAR_9 = 0x1000, }
Weitere Informationen finden Sie in der AIDL Definition.
Wie in der AIDL definiert, lautet der Wert für die Ausrüstung Park 4, was
bedeutet, dass Sie den Wert 4 in P umwandeln müssen. Zu diesem Zeitpunkt
Verwenden Sie data_enum
, um diesen Attributwert einem menschenlesbaren String in einem anderen
Enum
. Der Emulator verwendet diese Zuordnung, um Eigenschaftswerte zu übersetzen. Beispiel:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001, "data_enum": "VehicleGear" } ] }, { "name": "VehicleGear", "values": [ { "name": "GEAR_UNKNOWN", "value": 0 }, { "name": "GEAR_PARK", "value": 4 } ] } ]
Fügen Sie "data_enum": "VehicleGear"
hinzu, damit der Emulator ein Enum
-Element verwendet
mit dem Namen VehicleGear
, um den Attributwert zu übersetzen. Weiteren Enum
hinzufügen
namens VehicleGear
, wobei der Wert ein Array von ValueObject
ist, wobei
Der Eigenschaftswert (mit dem Wert) sollte als Name angezeigt werden.
Abbildung 3: Der Wert wird als GEAR_PARK angezeigt.
Auf dem Tab VHAL Properties (VHAL-Eigenschaften) für den Emulator wird der Name aktualisiert und lautet:
CURRENT_GEAR
, wie erwartet. Der Attributwert von 4
wird angezeigt als
GEAR_PARK
.
VHAL-Attribute mithilfe von JSON-Metadaten erweitern
Führen Sie folgenden Befehl aus, um Ihre VHAL-Eigenschaften mithilfe von JSON-Metadaten zu erweitern: Python-Script (in der Android-Quelle enthalten), um die erweiterte Eigenschaft JSON aus Informationen in der AIDL.
Die resultierende JSON-Datei enthält einige redundante Werte wie change_mode
,
access
und unit
. Obwohl diese Informationen Teil der VHAL-Eigenschaft sind,
Diese JSON-Werte wirken sich nicht darauf aus, was im VHAL-Eigenschaftenfenster des Emulators angezeigt wird.
Dem System-Image JSON-Metadaten hinzufügen
Beachten Sie, dass ein Dateiname auf -types-meta.json
enden muss. Andernfalls wird die Datei
ignoriert.
Build-Ziel hinzufügen
Fügen Sie die Datei -types-meta.json
zu PRODUCT_COPY_FILE
hinzu. Für
Beispiel:
PRODUCT_COPY_FILES += \ device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json
Mit diesem Code wird die Datei in das Stammverzeichnis out/target/product/{your_target_path}/
kopiert.
Ihrer Zielausgabe.