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

หากต้องการย้ายข้อมูลการใช้งาน VHAL HIDL ที่มีอยู่ไปยัง VHAL AIDL ให้ใช้โครงสร้างการใช้งานตามข้อมูลอ้างอิง 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 จะสร้างไฟล์ส่วนหัว 1 ไฟล์ (types.h) สำหรับทุกประเภทที่สร้างขึ้นจาก 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 แล้ว และควรกําหนดเป็น Flag แทน Enum ช่อง Flag ของผู้ใช้คือจำนวนเต็มที่มีUserInfo.USER_FLAG_XXX บิตรวมกัน
    • RawValue ใน VehiclePropValue เปลี่ยนชื่อเป็น RawPropValue แล้ว
    • bytes ใน RawValue เปลี่ยนชื่อเป็น byteValues แล้ว