Per eseguire la migrazione di un'implementazione VHAL HIDL esistente a una VHAL AIDL,
utilizza la struttura dell'implementazione di riferimento AIDL per implementare l'interfaccia IVehicleHardware
.
Se l'implementazione HIDL esistente segue anche l'implementazione di riferimento HIDL, il fornitore ha implementato la classe VehicleHal
. IVehicleHardware
è
molto simile a VehicleHal
.
HIDL VHAL | AIDL VHAL |
---|---|
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 di tipo in AIDL
Quando esegui la migrazione da HIDL VHAL ad AIDL VHAL, considera 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
daVehiclePropValue.aidl
.Di conseguenza, devi includere tutti i file di intestazione per i tipi che ti servono. 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 per:SubscribeFlags
viene rimosso perché non viene utilizzato in quantoonPropertySet
è stato rimossoUserFlags
è ora definito inUserInfo.aidl
e deve essere definito come flag anziché come enumerazione. Un campo flag utente è un numero intero con piùUserInfo.USER_FLAG_XXX
bit-or insieme.RawValue
inVehiclePropValue
è stato rinominato inRawPropValue
bytes
inRawValue
è stato rinominato inbyteValues
Invece di… | Usa |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |