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.h
dans la bibliothèqueVehicleHalUtils
, contient la plupart des types courants. - Tous les types définis dans
types.hal
sont les mêmes dans AIDL sauf pour :SubscribeFlags
a été supprimé, car il n'est pas utilisé, caronPropertySet
a été supprimé.UserFlags
est désormais défini dansUserInfo.aidl
et 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
.RawValue
dansVehiclePropValue
a été renomméRawPropValue
.- Changement de nom : dans
RawValue
,bytes
devientbyteValues
.
Au lieu de ... | Utiliser |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |