คู่มือการโยกย้าย HIDL VHAL

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

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

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