Para migrar una implementación de VHAL HIDL existente a un VHAL AIDL, usa la estructura de implementación de referencia de AIDL para implementar la interfaz IVehicleHardware
.
Si la implementación de HIDL existente también sigue la implementación de referencia de 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 puede llamar a devoluciones de llamada.
|
dump() |
Igual que VehicleHal.dump() |
checkHealth() |
Puede devolver VehicleHal.get() |
registerPropertyChangeCallback() |
Similar a la configuración de VehicleHal.mOnHalEvent |
Diferencias de tipos en AIDL
Cuando migres de la VHAL de HIDL a la del 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.h
deVehiclePropValue.aidl
.Como resultado, debes incluir todos los archivos de encabezado para los tipos que necesitas. Un archivo de ayuda,
VehicleHalTypes.h
en la bibliotecaVehicleHalUtils
, contiene la mayoría de los tipos comunes. - Todos los tipos definidos en
types.hal
son los mismos en AIDL excepto los siguientes:- Se quitó
SubscribeFlags
porque no se usa, ya que se quitóonPropertySet
. UserFlags
ahora se define enUserInfo.aidl
y debe definirse como una marca en lugar de una enumeración. Un campo de marca de usuario es un número entero que tiene variosUserInfo.USER_FLAG_XXX
juntos.- Se cambió el nombre de
RawValue
enVehiclePropValue
porRawPropValue
. - Se cambió el nombre de
bytes
enRawValue
porbyteValues
.
- Se quitó
En lugar de ... | Usar |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |