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

หากต้องการย้ายข้อมูลการใช้งาน 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 ให้พิจารณาความแตกต่างต่อไปนี้

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

    ด้วยเหตุนี้ คุณจึงต้องรวมไฟล์ส่วนหัวทั้งหมดสำหรับประเภทที่ต้องการ ไฟล์ Helper 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 OR บิตเข้าด้วยกัน
    • RawValue ใน VehiclePropValue เปลี่ยนชื่อเป็น RawPropValue
    • เปลี่ยนชื่อ bytes ใน RawValue เป็น byteValues