Beschreibungen der VHAL-Eigenschaften im Emulator erweitern

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.