Để di chuyển phương thức triển khai HIDL VHAL hiện có sang VHAL AIDL, hãy sử dụng cấu trúc triển khai tham chiếu AIDL để triển khai giao diện IVehicleHardware
.
Nếu cách triển khai HIDL hiện tại cũng tuân theo cách triển khai tham chiếu HIDL, thì nhà cung cấp đã triển khai lớp VehicleHal
. IVehicleHardware
rất giống với VehicleHal
.
HIDL VHAL | AIDL VHAL |
---|---|
getAllPropertyConfigs() |
Bằng giá với VehicleHal.listProperties() |
getValues(callback, requests) |
Có thể gọi VehicleHal.get() cho mỗi yêu cầu và có thể gọi lệnh gọi lại.
|
dump() |
Bằng giá với VehicleHal.dump() |
checkHealth() |
Có thể trả về VehicleHal.get() |
registerPropertyChangeCallback() |
Tương tự như việc thiết lập VehicleHal.mOnHalEvent |
Sự khác biệt về loại trong AIDL
Khi di chuyển từ HIDL VHAL sang AIDL VHAL, hãy cân nhắc những điểm khác biệt sau.
- HIDL tạo một tệp tiêu đề (
types.h
) cho tất cả các loại được tạo từtypes.hal
. AIDL tạo một tệp tiêu đề cho mỗi loại. Ví dụ:VehiclePropValue.h
từVehiclePropValue.aidl
.Do đó, bạn phải bao gồm tất cả tệp tiêu đề cho các loại bạn cần. Tệp trợ giúp,
VehicleHalTypes.h
trong thư việnVehicleHalUtils
chứa hầu hết các loại phổ biến. - Tất cả các loại được xác định trong
types.hal
đều giống nhau trong AIDL ngoại trừ:SubscribeFlags
bị xoá vì không được sử dụng doonPropertySet
bị xoáUserFlags
hiện được xác định trongUserInfo.aidl
và phải được xác định dưới dạng cờ thay vì enum. Trường cờ người dùng là một số nguyên có nhiềuUserInfo.USER_FLAG_XXX
bit-or với nhau.- Đổi tên
RawValue
trongVehiclePropValue
thànhRawPropValue
- Đổi tên
bytes
trongRawValue
thànhbyteValues
Thay vì ... | Mục đích sử dụng |
---|---|
hidl_vec |
std::vector |
hidl_string |
std::string |
android::sp |
std::shared_ptr |
android::wp |
std::weak_ptr |