Pour migrer une implémentation VHAL HIDL existante vers un VHAL AIDL, utilisez la structure d'implémentation de référence AIDL pour mettre en œuvre 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 renvoyer VehicleHal.get() |
registerPropertyChangeCallback() |
Semblable au paramètre VehicleHal.mOnHalEvent |
Différences de types dans AIDL
Lorsque vous passez de la VHAL HIDL à la VHAL AIDL, 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 :SubscribeFlags
est supprimé, car il n'est pas utilisé, caronPropertySet
est supprimé.UserFlags
est désormais défini dansUserInfo.aidl
et doit être défini en tant qu'indicateur plutôt qu'en tant qu'énumération. Un champ d'indicateur utilisateur est un entier qui comporte plusieursUserInfo.USER_FLAG_XXX
bit-or ensemble.RawValue
dansVehiclePropValue
est renomméRawPropValue
.bytes
dansRawValue
est renommébyteValues
.
Au lieu de ... | Utiliser |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |