Pour migrer une implémentation HIDL VHAL existante vers une implémentation AIDL VHAL,
utilisez la structure d'implémentation de référence AIDL
pour implémenter l'interface IVehicleHardware.
Si l'implémentation HIDL existante suit également
l'implémentation de référence HIDL,
le fournisseur a implémenté la classe VehicleHal. IVehicleHardware est
très semblable à VehicleHal.
| HIDL VHAL | AIDL VHAL |
|---|---|
getAllPropertyConfigs() |
Identique à VehicleHal.listProperties() |
getValues(callback, requests) |
Peut appeler VehicleHal.get() pour chaque requête et peut appeler des rappels.
|
dump() |
Identique à VehicleHal.dump() |
checkHealth() |
Peut renvoyer VehicleHal.get() |
registerPropertyChangeCallback() |
Semblable à la définition de VehicleHal.mOnHalEvent |
Différences entre les types dans AIDL
Lorsque vous migrez de HIDL VHAL vers AIDL VHAL, tenez compte de ces différences.
- HIDL génère un fichier d'en-tête (
types.h) pour tous les types générés à partir detypes.hal. AIDL génère un fichier d'en-tête pour chaque type. Par exemple,VehiclePropValue.hà partir deVehiclePropValue.aidl.Par conséquent, vous devez inclure tous les fichiers d'en-tête pour les types dont vous avez besoin. Un fichier d'assistance,
VehicleHalTypes.hdans la bibliothèqueVehicleHalUtilscontient la plupart des types courants. - Tous les types définis dans
types.halsont identiques dans AIDL sauf pour les suivants :SubscribeFlagsest supprimé, car il n'est pas utilisé, caronPropertySetest supprimé.UserFlagsest désormais défini dansUserInfo.aidlet doit être défini comme un indicateur au lieu d'une énumération. Un champ d'indicateur utilisateur est un entier qui comporte plusieursUserInfo.USER_FLAG_XXXbit-or.RawValuedansVehiclePropValueest renomméRawPropValuebytesdansRawValueest renommébyteValues.
| Plutôt que : | Utiliser |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |