如要将现有的 HIDL VHAL 实现迁移到 HIDL 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
。因此,您必须添加所需类型的所有头文件。
VehicleHalUtils
库中的VehicleHalTypes.h
辅助文件包含了大部分常用类型。 types.hal
中定义的所有类型在 AIDL 中都是一样的,但以下几项除外: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 |