Pour migrer une implémentation HIDL VHAL existante vers une implémentation AIDL VHAL, utilisez la structure de l'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() |
Prix identique à celui de l'hôtel VehicleHal.listProperties() |
getValues(callback, requests) |
Peut appeler VehicleHal.get() pour chaque requête et peut appeler des rappels.
|
dump() |
Prix identique à celui de l'hôtel VehicleHal.dump() |
checkHealth() |
Peut retourner VehicleHal.get() |
registerPropertyChangeCallback() |
Semblable au paramètre VehicleHal.mOnHalEvent |
Différences de types dans AIDL
Lorsque vous migrez du HIDL VHAL vers l'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èqueVehicleHalUtils, contient la plupart des types courants. - Tous les types définis dans
types.halsont les mêmes dans AIDL sauf pour :SubscribeFlagsa été supprimé, car il n'est pas utilisé, caronPropertySeta été 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 plusieurs bitsUserInfo.USER_FLAG_XXX.RawValuedansVehiclePropValuea été renomméRawPropValue.- Changement de nom : dans
RawValue,bytesdevientbyteValues.
| Au lieu de ... | Utiliser |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |