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.
- HIDL generiert eine Headerdatei (
types.h
) für alle Typen, die austypes.hal
generiert werden. AIDL generiert für jeden Typ eine Headerdatei. Beispiel:VehiclePropValue.h
ausVehiclePropValue.aidl
.Daher müssen Sie alle Headerdateien für die benötigten Typen einfügen. Eine Hilfsdatei,
VehicleHalTypes.h
in derVehicleHalUtils
-Bibliothek, enthält die meisten gängigen Typen. - Alle in
types.hal
definierten Typen sind in AIDL identisch, mit Ausnahme der folgenden:SubscribeFlags
wurde entfernt, da es nicht verwendet wird, weilonPropertySet
entfernt wurdeUserFlags
ist jetzt inUserInfo.aidl
definiert und sollte als Flag anstelle eines Enums definiert werden. Ein Nutzerflag-Feld ist eine Ganzzahl, die mehrereUserInfo.USER_FLAG_XXX
-Bits enthält, die mit der Bit-ODER-Operation verknüpft sind.RawValue
inVehiclePropValue
wurde inRawPropValue
umbenannt.bytes
inRawValue
wurde inbyteValues
umbenannt.
Anstelle von … | Verwenden |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |