Guide de migration HIDL-VHAL

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 Implémentation de référence HIDL , le fournisseur a implémenté la classe VehicleHal . IVehicleHardware est très similaire à VehicleHal .

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() Identique à VehicleHal.listProperties()
getValues(callback, requests) Peut appeler VehicleHal.get() pour chaque requête et appeler des rappels.
dump() Identique à VehicleHal.dump()
checkHealth() Peut renvoyer VehicleHal.get()
registerPropertyChangeCallback() Semblable à la définition VehicleHal.mOnHalEvent

Différences de type dans AIDL

Lors de la migration de HIDL VHAL vers AIDL VHAL, tenez compte de ces différences.

  1. HIDL génère un fichier d'en-tête ( types.h ) pour tous les types générés à partir de types.hal . AIDL génère un fichier d'en-tête pour chaque type. Par exemple, VehiclePropValue.h de VehiclePropValue.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èque VehicleHalUtils contient la plupart des types courants.

  2. Au lieu de ... Utiliser
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Tous les types définis dans types.hal sont identiques dans AIDL, à l'exception de :
    • SubscribeFlags est supprimé car il n'est pas utilisé car onPropertySet est supprimé
    • UserFlags est désormais défini dans UserInfo.aidl et doit être défini comme un indicateur au lieu d'une énumération. Un champ d'indicateur utilisateur est un entier comportant plusieurs bits UserInfo.USER_FLAG_XXX ou ensemble.
    • RawValue dans VehiclePropValue est renommé RawPropValue
    • bytes de RawValue sont renommés byteValues