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.hdaVehiclePropValue.aidl.Di conseguenza, devi includere tutti i file di intestazione per i tipi che ti servono. Un file di supporto,
VehicleHalTypes.hnella libreriaVehicleHalUtilscontiene la maggior parte dei tipi comuni. - Tutti i tipi definiti in
types.halsono gli stessi in AIDL tranne per:SubscribeFlagsviene rimosso perché non viene utilizzato in quantoonPropertySetè stato rimossoUserFlagsè ora definito inUserInfo.aidle deve essere definito come flag anziché come enumerazione. Un campo flag utente è un numero intero con piùUserInfo.USER_FLAG_XXXbit-or insieme.RawValueinVehiclePropValueè stato rinominato inRawPropValuebytesinRawValueè stato rinominato inbyteValues
| Invece di… | Usa |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |