要将现有的 HIDL VHAL 实现迁移到 AIDL VHAL,请使用 AIDL 参考实现 结构来实现 IVehicleHardware
接口。
如果现有的 HIDL 实现也遵循 HIDL 参考实现,则供应商已实现 VehicleHal
类。IVehicleHardware
与 VehicleHal
非常相似。
HIDL VHAL | AIDL VHAL |
---|---|
getAllPropertyConfigs() |
与 VehicleHal.listProperties() 相同 |
getValues(callback, requests) |
可以为每个请求调用 VehicleHal.get() ,并且可以调用回调。 |
dump() |
与 VehicleHal.dump() 相同 |
checkHealth() |
可以返回 VehicleHal.get() |
registerPropertyChangeCallback() |
类似于设置 VehicleHal.mOnHalEvent |
AIDL 中的类型差异
从 HIDL VHAL 迁移到 AIDL VHAL 时,请考虑以下差异。
- HIDL 为从
types.hal
生成的所有类型生成一个头文件 (types.h
)。AIDL 为每种类型生成一个头文件。例如,来自VehiclePropValue.aidl
的VehiclePropValue.h
。因此,您必须包含所需类型的所有头文件。帮助程序文件
VehicleHalTypes.h
(位于VehicleHalUtils
库中)包含大多数常用类型。 - 在 AIDL 中,
types.hal
中定义的所有类型都相同,**但以下类型除外**:SubscribeFlags
已移除,因为它未使用,因为onPropertySet
已移除。UserFlags
现在在UserInfo.aidl
中定义,应定义为标志而不是枚举。用户标志字段是一个整数,它将多个UserInfo.USER_FLAG_XXX
位或运算在一起。VehiclePropValue
中的RawValue
重命名为RawPropValue
。RawValue
中的bytes
重命名为byteValues
。
而不是... | 使用 |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |