HIDL VHAL-Migrationsanleitung

Wenn Sie eine vorhandene HIDL-VHAL-Implementierung zu einer AIDL-VHAL migrieren möchten, verwenden Sie die Struktur der AIDL-Referenzimplementierung, um die IVehicleHardware-Schnittstelle zu implementieren.

Wenn die vorhandene HIDL-Implementierung auch der HIDL-Referenzimplementierung entspricht, hat der Anbieter die VehicleHal-Klasse implementiert. IVehicleHardware ähnelt VehicleHal sehr.

HIDL-VHAL AIDL-VHAL
getAllPropertyConfigs() Gleich wie bei VehicleHal.listProperties()
getValues(callback, requests) Kann VehicleHal.get() für jede Anfrage aufrufen und Callbacks aufrufen.
dump() Gleich wie bei VehicleHal.dump()
checkHealth() Kann VehicleHal.get() zurückgeben
registerPropertyChangeCallback() Ähnlich wie bei der Einstellung VehicleHal.mOnHalEvent

Typunterschiede in AIDL

Berücksichtigen Sie bei der Migration vom HIDL-VHAL zum AIDL-VHAL die folgenden Unterschiede.

  1. HIDL generiert eine Headerdatei (types.h) für alle Typen, die aus types.hal generiert werden. AIDL generiert für jeden Typ eine Headerdatei. Beispiel: VehiclePropValue.h aus VehiclePropValue.aidl.

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

  2. Anstelle von … 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 der folgenden:
    • SubscribeFlags wurde entfernt, da es nicht verwendet wird, weil onPropertySet entfernt wurde
    • UserFlags ist jetzt in UserInfo.aidl definiert und sollte als Flag anstelle eines Enums definiert werden. Ein Nutzerflag-Feld ist eine Ganzzahl, die mehrere UserInfo.USER_FLAG_XXX-Bits enthält, die mit der Bit-ODER-Operation verknüpft sind.
    • RawValue in VehiclePropValue wurde in RawPropValue umbenannt.
    • bytes in RawValue wurde in byteValues umbenannt.