Para migrar una implementación HIDL VHAL existente a un AIDL VHAL, utilice la estructura de implementación de referencia AIDL para implementar la interfaz IVehicleHardware
.
Si la implementación HIDL existente también sigue Implementación de referencia HIDL , el proveedor ha implementado la clase VehicleHal
. IVehicleHardware
es muy similar a VehicleHal
.
HIDL VHAL | AIDL VHAL |
---|---|
getAllPropertyConfigs() | Igual que VehicleHal.listProperties() |
getValues(callback, requests) | Puede llamar 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 configurar VehicleHal.mOnHalEvent |
Diferencias de tipos en AIDL
Al migrar de HIDL VHAL a AIDL VHAL, considere estas diferencias.
- HIDL genera un archivo de encabezado (
types.h
) para todos los tipos generados a partirtypes.hal
. AIDL genera un archivo de encabezado para cada tipo. Por ejemplo,VehiclePropValue.h
deVehiclePropValue.aidl
.Como resultado, debe incluir todos los archivos de encabezado para los tipos que necesita. Un archivo auxiliar,
VehicleHalTypes.h
en la bibliotecaVehicleHalUtils
contiene la mayoría de los tipos comunes. - Todos los tipos definidos en
types.hal
son iguales en AIDL excepto por:-
SubscribeFlags
se elimina porque no se usa porque se eliminaonPropertySet
-
UserFlags
ahora está definido enUserInfo.aidl
y debe definirse como una bandera en lugar de una enumeración. Un campo de indicador de usuario es un número entero que tiene varios bitsUserInfo.USER_FLAG_XXX
o juntos. -
RawValue
enVehiclePropValue
pasa a llamarseRawPropValue
-
bytes
enRawValue
pasan a llamarsebyteValues
-
En lugar de ... | Usar |
---|---|
hidl_vec | std::vector |
hidl_string | std::string |
android::sp | std::shared_ptr |
android::wp | std::weak_ptr |