Hướng dẫn di chuyển HIDL VHAL

Để di chuyển triển khai HIDL VHAL hiện có sang AIDL VHAL, 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 việc triển khai HIDL hiện tại cũng tuân theo Việc triển khai tham chiếu HIDL , nhà cung cấp đã triển khai lớp VehicleHal . IVehicleHardware rất giống với VehicleHal .

HIDL Vhal AIDL VHL
getAllPropertyConfigs() Tương tự như VehicleHal.listProperties()
getValues(callback, requests) Có thể gọi VehicleHal.get() cho mỗi yêu cầu và có thể gọi lại các cuộc gọi lại.
dump() Tương tự như VehicleHal.dump()
checkHealth() Có thể trả về VehicleHal.get()
registerPropertyChangeCallback() Tương tự với cài đặt VehicleHal.mOnHalEvent

Sự khác biệt về loại trong AIDL

Khi di chuyển từ HIDL VHAL sang AIDL VHAL, hãy xem xét những khác biệt này.

  1. 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ả các tệp tiêu đề cho loại bạn cần. Tệp trợ giúp, VehicleHalTypes.h trong thư viện VehicleHalUtils chứa hầu hết các loại phổ biến.

  2. Thay vì ... Sử dụng
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. 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ị xóa vì nó không được sử dụng vì onPropertySet bị xóa
    • UserFlags hiện được xác định trong UserInfo.aidl và phải được xác định là cờ thay vì enum. Trường cờ người dùng là một số nguyên có nhiều bit UserInfo.USER_FLAG_XXX hoặc cùng nhau.
    • RawValue trong VehiclePropValue được đổi tên thành RawPropValue
    • bytes trong RawValue được đổi tên thành byteValues