Guida alla migrazione HIDL VHAL

Per migrare un'implementazione HIDL VHAL esistente in una AIDL VHAL, utilizzare la struttura di implementazione di riferimento AIDL per implementare l'interfaccia IVehicleHardware .

Se segue anche l'implementazione HIDL esistente Implementazione del riferimento HIDL , il fornitore ha implementato la classe VehicleHal . IVehicleHardware è molto simile a VehicleHal .

HIDL VHAL AIDL VHAL
getAllPropertyConfigs() Uguale a VehicleHal.listProperties()
getValues(callback, requests) Può chiamare VehicleHal.get() per ogni richiesta e può chiamare callback.
dump() Uguale a VehicleHal.dump()
checkHealth() Può restituire VehicleHal.get()
registerPropertyChangeCallback() Simile all'impostazione VehicleHal.mOnHalEvent

Differenze di tipo in AIDL

Durante la migrazione da HIDL VHAL a AIDL VHAL, considerare queste differenze.

  1. HIDL genera un file di intestazione ( types.h ) per tutti i tipi generati types.hal . AIDL genera un file di intestazione per ciascun tipo. Ad esempio, VehiclePropValue.h da VehiclePropValue.aidl .

    Di conseguenza, è necessario includere tutti i file di intestazione per i tipi necessari. Un file di supporto, VehicleHalTypes.h nella libreria VehicleHalUtils contiene la maggior parte dei tipi comuni.

  2. Invece di ... Utilizzo
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Tutti i tipi definiti in types.hal sono gli stessi in AIDL ad eccezione di:
    • SubscribeFlags viene rimosso poiché non viene utilizzato perché onPropertySet viene rimosso
    • UserFlags è ora definito in UserInfo.aidl e dovrebbe essere definito come flag anziché come enum. Un campo flag utente è un numero intero che ha più bit-or UserInfo.USER_FLAG_XXX insieme.
    • RawValue in VehiclePropValue viene rinominato RawPropValue
    • bytes in RawValue viene rinominato byteValues