HIDL VHAL-Migrationsanleitung

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

Wenn die vorhandene HIDL-Implementierung auch der HIDL-Referenzimplementierung folgt, hat der Anbieter die VehicleHal Klasse implementiert. IVehicleHardware ist VehicleHal sehr ähnlich.

HIDL-VHAL AIDL-VHAL
getAllPropertyConfigs() Gleich wie VehicleHal.listProperties()
getValues(callback, requests) VehicleHal.get() kann für jede Anfrage aufgerufen werden und Callbacks können aufgerufen werden.
dump() Gleich wie VehicleHal.dump()
checkHealth() VehicleHal.get() kann zurückgegeben werden.
registerPropertyChangeCallback() Ähnlich wie das Festlegen von VehicleHal.mOnHalEvent

Typunterschiede in AIDL

Berücksichtigen Sie bei der Migration von der HIDL-VHAL zur AIDL-VHAL die folgenden Unterschiede.

  1. HIDL generiert eine Headerdatei (types.h) für alle Typen, die aus types.hal generiert wurden. 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. Statt… 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 gleich, außer :
    • SubscribeFlags wurde entfernt, da es nicht verwendet wird, weil onPropertySet entfernt wurde
    • UserFlags ist jetzt in UserInfo.aidl definiert und sollte als Flag anstelle einer Enumeration definiert werden. Ein Nutzerflag-Feld ist eine Ganzzahl, die mehrere UserInfo.USER_FLAG_XXX Bit-OR-Verknüpfungen enthält.
    • RawValue in VehiclePropValue wurde in umbenannt RawPropValue
    • bytes in RawValue wurde in byteValues umbenannt.