คุณสามารถอัปเดตโมดูล 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
จะเพิ่มไฟล์ Make ที่จำเป็นลงใน HAL ด้วย จากตรงนี้ คุณสามารถดำเนินการเปลี่ยนแปลงด้วยตนเองเพื่อแปลง HAL ให้เสร็จสมบูรณ์
กิจกรรม c2hal
เมื่อคุณเรียกใช้ c2hal
ระบบจะโอนข้อมูลทั้งหมดในไฟล์ส่วนหัวไปยังไฟล์ .hal
c2hal
จะระบุโครงสร้างที่มีตัวชี้ฟังก์ชันในไฟล์ส่วนหัวที่ระบุ และแปลงโครงสร้างแต่ละรายการเป็นไฟล์อินเทอร์เฟซแยกต่างหาก
ตัวอย่างเช่น alloc_device_t
จะแปลงเป็นข้อบังคับของ IAllocDevice
HAL (ในไฟล์ IAllocDevice.hal
)
ระบบจะคัดลอกข้อมูลประเภทอื่นๆ ทั้งหมดไปยังไฟล์ types.hal
ระบบจะย้ายการกําหนดค่าแบบเครื่องหมายสี่เหลี่ยมผืนผ้าไปยังลิสต์แบบจำกัด และคัดลอกรายการที่ไม่ได้อยู่ใน HIDL หรือไม่สามารถแปลง (เช่น การประกาศฟังก์ชันแบบคงที่) ไปยังความคิดเห็นที่มีข้อความ "NOTE
"
กิจกรรมที่ดำเนินการด้วยตนเอง
เครื่องมือ c2hal
ไม่ทราบว่าต้องทําอย่างไรเมื่อพบรูปแบบบางอย่าง ตัวอย่างเช่น HIDL ไม่มีแนวคิดเกี่ยวกับพอยน์เตอร์ดิบ เมื่อ c2hal
พบพอยน์เตอร์ในไฟล์ส่วนหัว จึงไม่ทราบว่าจะตีความพอยน์เตอร์นั้นเป็นอาร์เรย์หรือเป็นข้อมูลอ้างอิงไปยังออบเจ็กต์อื่น พารามิเตอร์แบบ Void ก็มีลักษณะทึบแสงเช่นเดียวกัน
ฟิลด์ เช่น int reserved[7]
ต้องนําออกด้วยตนเองในระหว่างการเปลี่ยนไปใช้ HIDL รายการต่างๆ เช่น ชื่อของค่าที่แสดงผลควรได้รับการอัปเดตให้มีความหมายมากขึ้น เช่น แปลงพารามิเตอร์ผลลัพธ์ของเมธอด เช่น write
ใน NFC จาก int32_t write_ret
ที่สร้างขึ้นโดยอัตโนมัติเป็น Status status
(โดยที่ Status
คือ Enum ใหม่ที่มีสถานะ NFC ที่เป็นไปได้)
ติดตั้งใช้งาน HAL
หลังจากสร้างไฟล์ .hal
เพื่อแสดง HAL แล้ว คุณต้องสร้างไฟล์ Make (Make หรือ Soong) ที่สร้างการรองรับภาษาใน C++ และ Java (เว้นแต่ว่า HAL จะใช้ฟีเจอร์ที่ Java ไม่รองรับ) สคริปต์ ./hardware/interfaces/update-makefiles.sh
จะสร้างไฟล์ Make สำหรับ HAL ที่อยู่ในไดเรกทอรี hardware/interfaces
โดยอัตโนมัติ (สำหรับ HAL ที่อยู่ในตำแหน่งอื่น ให้อัปเดตสคริปต์)
เมื่อไฟล์ make เป็นเวอร์ชันล่าสุดแล้ว คุณก็พร้อมที่จะสร้างไฟล์ส่วนหัวและติดตั้งใช้งานเมธอด ดูรายละเอียดเกี่ยวกับการใช้งานอินเทอร์เฟซที่สร้างขึ้นได้ที่ HIDL C++ (สําหรับการใช้งาน C++) หรือ HIDL Java (สําหรับการใช้งาน Java)