HIDL VHAL-Migrationsanleitung

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

Wenn die vorhandene HIDL-Implementierung auch der HIDL-Referenzimplementierung entspricht, hat der Anbieter die Klasse VehicleHal 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, wenn Sie von der HIDL-VHAL zur AIDL-VHAL migrieren.

  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 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, außer:
    • 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