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.
- HIDL generiert eine Headerdatei (
types.h) für alle Typen, die austypes.halgeneriert wurden. AIDL generiert für jeden Typ eine Headerdatei. Beispiel:VehiclePropValue.hausVehiclePropValue.aidl.Daher müssen Sie alle Headerdateien für die benötigten Typen einfügen. Eine Hilfsdatei,
VehicleHalTypes.hin derVehicleHalUtilsBibliothek, enthält die meisten gängigen Typen. - Alle in
types.haldefinierten Typen sind in AIDL gleich, außer :SubscribeFlagswurde entfernt, da es nicht verwendet wird, weilonPropertySetentfernt wurdeUserFlagsist jetzt inUserInfo.aidldefiniert und sollte als Flag anstelle einer Enumeration definiert werden. Ein Nutzerflag-Feld ist eine Ganzzahl, die mehrereUserInfo.USER_FLAG_XXXBit-OR-Verknüpfungen enthält.RawValueinVehiclePropValuewurde in umbenanntRawPropValuebytesinRawValuewurde inbyteValuesumbenannt.
| Statt… | Verwenden |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |