คำแนะนำในการย้ายข้อมูล HIDL VHAL

หากต้องการย้ายข้อมูลการติดตั้งใช้งาน VHAL ของ HIDL ที่มีอยู่ไปยัง VHAL ของ AIDL ให้ใช้โครงสร้างการติดตั้งใช้งานอ้างอิงของ AIDL เพื่อติดตั้งใช้งานอินเทอร์เฟซ IVehicleHardware

หากการใช้งาน HIDL ที่มีอยู่เป็นไปตาม การใช้งานอ้างอิงของ HIDL ด้วย ผู้ให้บริการได้ใช้งานคลาส VehicleHal แล้ว IVehicleHardware คล้ายกับ VehicleHal มาก

HIDL VHAL VHAL ของ AIDL
getAllPropertyConfigs() ราคาเท่ากันกับ VehicleHal.listProperties()
getValues(callback, requests) สามารถเรียกใช้ VehicleHal.get() สำหรับแต่ละคำขอและเรียกใช้การโทรกลับได้
dump() ราคาเท่ากันกับ VehicleHal.dump()
checkHealth() คืนได้ VehicleHal.get()
registerPropertyChangeCallback() คล้ายกับการตั้งค่า VehicleHal.mOnHalEvent

ความแตกต่างของประเภทใน AIDL

เมื่อย้ายข้อมูลจาก HIDL VHAL ไปยัง AIDL VHAL ให้พิจารณาความแตกต่างต่อไปนี้

  1. HIDL จะสร้างไฟล์ส่วนหัว 1 ไฟล์ (types.h) สำหรับประเภททั้งหมดที่สร้างจาก types.hal AIDL จะสร้างไฟล์ส่วนหัว 1 ไฟล์สำหรับแต่ละประเภท เช่น VehiclePropValue.h จาก VehiclePropValue.aidl

    ดังนั้น คุณต้องรวมไฟล์ส่วนหัวทั้งหมดสำหรับประเภทที่คุณต้องการ ไฟล์ตัวช่วย VehicleHalTypes.h ในคลัง VehicleHalUtils มีประเภทที่พบบ่อยส่วนใหญ่

  2. แทนที่จะเป็น ... ใช้
    hidl_vec std::vector
    hidl_string std::string
    android::sp std::shared_ptr
    android::wp std::weak_ptr
  3. ประเภททั้งหมดที่กำหนดไว้ใน types.hal จะเหมือนกันใน AIDL ยกเว้นประเภทต่อไปนี้
    • ระบบจะนำ SubscribeFlags ออกเนื่องจากไม่มีการใช้งานเนื่องจาก ระบบนำ onPropertySet ออกแล้ว
    • ตอนนี้ UserFlags ได้รับการกำหนดไว้ใน UserInfo.aidl แล้ว และควรได้รับการกำหนด เป็นค่าสถานะแทนที่จะเป็น Enum ฟิลด์แฟล็กผู้ใช้คือจำนวนเต็มที่มีหลาย UserInfo.USER_FLAG_XXX บิตที่รวมกัน
    • เปลี่ยนชื่อ RawValue ใน VehiclePropValue เป็น RawPropValue
    • เปลี่ยนชื่อ bytes ใน RawValue เป็น byteValues