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 und Callbacks aufrufen.
dump() Gleich wie bei VehicleHal.dump()
checkHealth() Kann VehicleHal.get() zurückgeben
registerPropertyChangeCallback() Ähnlich wie Einstellung VehicleHal.mOnHalEvent

Typunterschiede in AIDL

Berücksichtigen Sie diese Unterschiede bei der Migration von HIDL VHAL zu AIDL VHAL.

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

    Daher müssen Sie alle Headerdateien für die benötigten Typen einschließen. Die Hilfsdatei VehicleHalTypes.h in der Bibliothek VehicleHalUtils 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:
    • SubscribeFlags wird entfernt, da es nicht verwendet wird, weil onPropertySet entfernt wurde
    • UserFlags ist jetzt in UserInfo.aidl definiert und sollte als Flag statt als Enum definiert werden. Ein Nutzerflag-Feld ist eine Ganzzahl, die mehrere UserInfo.USER_FLAG_XXX-Bit-OR-Werte enthält.
    • RawValue in VehiclePropValue wird in RawPropValue umbenannt.
    • bytes in RawValue wird in byteValues umbenannt