คุณสามารถอัปเดตโมดูล HAL ที่มีอยู่ก่อนแล้วเป็นโมดูล HIDL HAL ได้โดยแปลง
ส่วนหัวใน hardware/libhardware/include/hardware
ใช้ c2hal
c2hal
จะจัดการกับงาน Conversion ส่วนใหญ่ ซึ่งช่วยลดจำนวนงานที่ต้องดำเนินการด้วยตนเอง
การเปลี่ยนแปลง เช่น หากต้องการสร้างไฟล์ HIDL .hal
สำหรับ NFC
HAL:
make c2hal
c2hal -r android.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport -p android.hardware.nfc@1.0 hardware/libhardware/include/hardware/nfc.h
คำสั่งเหล่านี้จะเพิ่มไฟล์ใน hardware/interfaces/nfc/1.0/
กำลังดำเนินการ
hardware/interfaces/update-makefiles.sh
จาก$ANDROID_BUILD_TOP
จะเพิ่มไฟล์ประเภทที่จำเป็นลงใน HAL ด้วย จากที่นี่ คุณจะทำสิ่งต่อไปนี้ได้
ดำเนินการเปลี่ยนแปลงด้วยตนเองเพื่อแปลง HAL โดยสมบูรณ์
กิจกรรม C2hal
เมื่อคุณเรียกใช้ c2hal
ระบบจะโอนทุกอย่างในไฟล์ส่วนหัว
ลงใน .hal
ไฟล์
c2hal
ระบุ Struct ที่มีเคอร์เซอร์ฟังก์ชันใน
ไฟล์ส่วนหัวที่มีให้และแปลงแต่ละโครงสร้างเป็นไฟล์อินเทอร์เฟซแยกต่างหาก
ตัวอย่างเช่น alloc_device_t
จะแปลงเป็น
โมดูล HAL IAllocDevice
รายการ (ในไฟล์
IAllocDevice.hal
)
ระบบจะคัดลอกข้อมูลประเภทอื่นๆ ทั้งหมดไปไว้ในไฟล์ types.hal
ระบบจะย้ายค่าปอนด์ไปยัง enum และย้ายรายการที่ไม่ได้เป็นส่วนหนึ่งของ HIDL หรือไม่
ที่แปลงได้ (เช่น การประกาศฟังก์ชันแบบคงที่) จะคัดลอกไปยังความคิดเห็น
ทำเครื่องหมายด้วยข้อความ "NOTE
"
กิจกรรมที่กำหนดเอง
เครื่องมือ c2hal
ไม่ทราบว่าต้องทำอย่างไรเมื่อพบ
และโครงสร้างบางอย่าง เช่น HIDL ไม่มีแนวคิดเรื่องตัวชี้ดิบ เพราะ
นี้ เมื่อ c2hal
พบตัวชี้ในไฟล์ส่วนหัว ก็จะไม่
ทราบว่าตัวชี้ควรตีความเป็นอาร์เรย์หรือเป็นการอ้างอิงไปยัง
ออบเจ็กต์อื่น และเคอร์เซอร์ที่เป็นโมฆะก็ทึบแสงเช่นกัน
ต้องนำช่องต่างๆ เช่น int reserved[7]
ออกด้วยตนเองในระหว่าง
การเปลี่ยนไปใช้ HIDL สินค้า เช่น ชื่อของมูลค่าการคืนสินค้าควรเป็น
มีการอัปเดตให้มีความหมายมากขึ้น เช่น การแปลงผลตอบแทน
พารามิเตอร์ของวิธีการ เช่น write
ใน NFC จาก
int32_t write_ret
ถึง Status status
(โดย
Status
เป็น Enum ใหม่ที่มีสถานะ NFC ที่เป็นไปได้)
ติดตั้งใช้งาน HAL
หลังจากสร้างไฟล์ .hal
ไฟล์เพื่อแสดงถึง HAL ของคุณ คุณจะ
ต้องสร้างไฟล์การติดต่อ (Make หรือ Soong) ที่สร้างการสนับสนุนภาษาใน
C++ และ Java (เว้นแต่ว่า HAL จะใช้ฟีเจอร์ที่ไม่รองรับใน Java)
สคริปต์ ./hardware/interfaces/update-makefiles.sh
สามารถสร้างขึ้นโดยอัตโนมัติ
สร้างไฟล์สำหรับ HAL ที่อยู่ใน hardware/interfaces
(สำหรับ HAL ในตำแหน่งที่ตั้งอื่นๆ ให้อัปเดตสคริปต์)
เมื่อไฟล์ Manifest เป็นปัจจุบันแล้ว คุณก็พร้อมที่จะสร้างไฟล์ส่วนหัวและ ที่เหมาะสม ดูรายละเอียดเกี่ยวกับการใช้งานอินเทอร์เฟซที่สร้างขึ้นได้ที่ HIDL C++ (สำหรับ C++ การนำไปใช้) หรือ HIDL Java (สำหรับการใช้งาน Java)