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.
- HIDL generiert eine Headerdatei (
types.h
) für alle Typen, die austypes.hal
generiert wurden. AIDL generiert eine Headerdatei für jeden Typ. Beispiel:VehiclePropValue.h
vonVehiclePropValue.aidl
.Daher müssen Sie alle Headerdateien für die benötigten Typen einschließen. Die Hilfsdatei
VehicleHalTypes.h
in der BibliothekVehicleHalUtils
enthält die meisten gängigen Typen. - Alle in
types.hal
definierten Typen sind in AIDL identisch, mit Ausnahme:SubscribeFlags
wird entfernt, da es nicht verwendet wird, weilonPropertySet
entfernt wurdeUserFlags
ist jetzt inUserInfo.aidl
definiert und sollte als Flag statt als Enum definiert werden. Ein Nutzerflag-Feld ist eine Ganzzahl, die mehrereUserInfo.USER_FLAG_XXX
-Bit-OR-Werte enthält.RawValue
inVehiclePropValue
wird inRawPropValue
umbenannt.bytes
inRawValue
wird inbyteValues
umbenannt
Anstelle von ... | Verwenden |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |