Per eseguire la migrazione di un'implementazione VHAL HIDL esistente a un'implementazione VHAL AIDL,
utilizza la struttura dell'implementazione di riferimento AIDL per implementare l'interfaccia IVehicleHardware
.
Se l'implementazione HIDL esistente segue anche l'implementazione del riferimento HIDL, il fornitore ha implementato la classe VehicleHal
. IVehicleHardware
è molto simile a VehicleHal
.
HIDL VHAL | VHAL AIDL |
---|---|
getAllPropertyConfigs() |
Uguale a VehicleHal.listProperties() |
getValues(callback, requests) |
Può chiamare VehicleHal.get() per ogni richiesta e può chiamare i callback.
|
dump() |
Uguale a VehicleHal.dump() |
checkHealth() |
Può restituire VehicleHal.get() |
registerPropertyChangeCallback() |
Simile all'impostazione VehicleHal.mOnHalEvent |
Differenze tra i tipi in AIDL
Quando esegui la migrazione da HIDL VHAL ad AIDL VHAL, tieni conto di queste differenze.
- HIDL genera un file di intestazione (
types.h
) per tutti i tipi generati datypes.hal
. AIDL genera un file di intestazione per ogni tipo. Ad esempio,VehiclePropValue.h
diVehiclePropValue.aidl
.Di conseguenza, devi includere tutti i file di intestazione per i tipi di cui hai bisogno. Un file di supporto,
VehicleHalTypes.h
nella libreriaVehicleHalUtils
, contiene la maggior parte dei tipi comuni. - Tutti i tipi definiti in
types.hal
sono gli stessi in AIDL tranne:SubscribeFlags
è stato rimosso perché non utilizzato perchéonPropertySet
è stato rimossoUserFlags
è ora definito inUserInfo.aidl
e deve essere definito come flag anziché come enum. Un campo di indicatori utente è un numero intero con piùUserInfo.USER_FLAG_XXX
OR di bit.RawValue
inVehiclePropValue
viene rinominatoRawPropValue
bytes
inRawValue
viene rinominatobyteValues
Invece di ... | Usa |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |