คำแนะนำในการย้ายข้อมูล 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