HIDL VHAL-Migrationsleitfaden

Um eine vorhandene HIDL- VHAL-Implementierung zu einem AIDL- VHAL zu migrieren, verwenden Sie die AIDL-Referenzimplementierungsstruktur , um die IVehicleHardware Schnittstelle zu implementieren.

Wenn auch die bestehende HIDL-Implementierung folgt HIDL-Referenzimplementierung : Der Anbieter hat die VehicleHal Klasse implementiert. IVehicleHardware ist VehicleHal sehr ähnlich.

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() Identisch mit VehicleHal.listProperties()
getValues(callback, requests) Kann VehicleHal.get() für jede Anfrage aufrufen und Rückrufe aufrufen.
dump() Identisch mit VehicleHal.dump()
checkHealth() Kann VehicleHal.get() zurückgeben
registerPropertyChangeCallback() Ähnlich wie beim Festlegen VehicleHal.mOnHalEvent

Typunterschiede bei AIDL

Berücksichtigen Sie bei der Migration vom HIDL VHAL zum AIDL VHAL diese Unterschiede.

  1. HIDL generiert eine Header-Datei ( types.h ) für alle types.hal Typen. AIDL generiert für jeden Typ eine Header-Datei. Zum Beispiel VehiclePropValue.h von VehiclePropValue.aidl .

    Daher müssen Sie alle Header-Dateien für die benötigten Typen einbinden. Eine Hilfsdatei, VehicleHalTypes.h in der VehicleHalUtils Bibliothek, enthält die meisten gängigen Typen.

  2. Anstatt ... Verwenden
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Alle in types.hal definierten Typen sind in AIDL identisch, mit Ausnahme von:
    • SubscribeFlags wird entfernt, da es nicht verwendet wird, weil onPropertySet entfernt wird
    • UserFlags ist jetzt in UserInfo.aidl definiert und sollte als Flag statt als Enumeration definiert werden. Ein Benutzerflagfeld ist eine Ganzzahl, die mehrere UserInfo.USER_FLAG_XXX -Bits oder zusammen enthält.
    • RawValue in VehiclePropValue wird in RawPropValue umbenannt
    • bytes in RawValue werden in byteValues ​​umbenannt