Guía de migración de VHAL de HIDL

Para migrar una implementación existente de VHAL de HIDL a una de VHAL de AIDL, usa la estructura de la implementación de referencia de AIDL para implementar la interfaz IVehicleHardware.

Si la implementación del HIDL existente también sigue la implementación de referencia del HIDL, el proveedor implementó la clase VehicleHal. IVehicleHardware es muy similar a VehicleHal.

HIDL VHAL VHAL de AIDL
getAllPropertyConfigs() Igual que VehicleHal.listProperties()
getValues(callback, requests) Puede llamar a VehicleHal.get() para cada solicitud y llamar a devoluciones de llamada.
dump() Igual que VehicleHal.dump()
checkHealth() Puede devolver VehicleHal.get()
registerPropertyChangeCallback() Es similar a configurar VehicleHal.mOnHalEvent.

Diferencias de tipos en AIDL

Cuando migres del VHAL de HIDL al VHAL de AIDL, ten en cuenta estas diferencias.

  1. HIDL genera un archivo de encabezado (types.h) para todos los tipos generados a partir de types.hal. AIDL genera un archivo de encabezado para cada tipo. Por ejemplo, VehiclePropValue.h de VehiclePropValue.aidl.

    Como resultado, debes incluir todos los archivos de encabezado para los tipos que necesites. Un archivo de ayuda, VehicleHalTypes.h, en la biblioteca VehicleHalUtils contiene la mayoría de los tipos comunes.

  2. En lugar de… Usar
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. Todos los tipos definidos en types.hal son los mismos en AIDL excepto por los siguientes:
    • Se quitó SubscribeFlags porque no se usa, ya que se quitó onPropertySet.
    • UserFlags ahora se define en UserInfo.aidl y se debe definir como una marca en lugar de una enumeración. Un campo de marcas de usuario es un número entero que tiene varios bits UserInfo.USER_FLAG_XXX unidos con OR.
    • Se cambió el nombre de RawValue en VehiclePropValue por RawPropValue.
    • Se cambió el nombre de bytes en RawValue por byteValues.