แปลงโมดูล HAL

คุณสามารถอัปเดตโมดูล 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)