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.
- HIDL genera un archivo de encabezado (
types.h) para todos los tipos generados a partir detypes.hal. AIDL genera un archivo de encabezado para cada tipo. Por ejemplo,VehiclePropValue.hdeVehiclePropValue.aidl.Como resultado, debes incluir todos los archivos de encabezado para los tipos que necesites. Un archivo de ayuda,
VehicleHalTypes.h, en la bibliotecaVehicleHalUtilscontiene la mayoría de los tipos comunes. - Todos los tipos definidos en
types.halson los mismos en AIDL excepto por los siguientes:- Se quitó
SubscribeFlagsporque no se usa, ya que se quitóonPropertySet. UserFlagsahora se define enUserInfo.aidly 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 bitsUserInfo.USER_FLAG_XXXunidos con OR.- Se cambió el nombre de
RawValueenVehiclePropValueporRawPropValue. - Se cambió el nombre de
bytesenRawValueporbyteValues.
- Se quitó
| En lugar de… | Usar |
|---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |