การใช้ USB HAL

ใน Android 8.0 ย้ายปล่อยจัดการของ USB คำสั่งออกจาก init สคริปต์และเป็นภูต USB พื้นเมืองสำหรับการกำหนดค่าที่ดีขึ้นและความน่าเชื่อถือรหัส สำหรับการกำหนดค่าฟังก์ชั่น Gadget, init สคริปต์ (กระตุ้นทรัพย์สิน) ถูกนำมาใช้ในการดำเนินการ gadget เฉพาะอุปกรณ์

ในรุ่นก่อนหน้านี้การกำหนดค่าเฉพาะอุปกรณ์กำลังประสบความสำเร็จผ่านอุปกรณ์เฉพาะ init สคริปต์ (โดยใช้ทริกเกอร์ทรัพย์สิน) การย้ายไปยังการออกแบบ Hardware Abstraction Layer (HAL) ส่งผลให้การใช้งานสะอาดขึ้นมาก ซึ่งช่วยแก้ปัญหาเหล่านี้ได้:

  1. การดำเนินการต่างๆ เช่น การเขียนไปยังโหนด sysfs ของเคอร์เนลอาจล้มเหลว แต่ไม่สามารถเผยแพร่กลับไปยังโค้ดเฟรมเวิร์กที่ตั้งค่าทริกเกอร์คุณสมบัติได้ ด้วยเหตุนี้ กรอบงานจึงถือว่าการดำเนินการสำเร็จอย่างไม่ถูกต้อง แม้ว่าจะล้มเหลวอย่างเงียบๆ
  2. init สคริปต์มีจำนวน จำกัด ของการดำเนินงานที่สามารถดำเนินการ

การเปิดตัว Android 12 เพิ่มการสนับสนุน USB Gadget HAL สำหรับ Network Control Models (NCM) และการเรียก API ที่ส่งคืนทั้งหมายเลขเวอร์ชัน HAL และความเร็ว USB สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ API เรียกใช้ได้ผ่านทาง USB HAL ดู android.hardware.usb สรุปแพคเกจ android.hardware.usb

HAL และเสียงแหลม

อุปกรณ์เฉพาะ init สคริปต์ถูกนำมาใช้ทดแทนสำหรับชั้น HAL ในการดำเนินการอุปกรณ์ USB เฉพาะ USB (ผ่าน ADB) เป็นอินเทอร์เฟซหลักสำหรับการดีบักปัญหาของระบบ การมีดีมอนดั้งเดิมเพื่อดำเนินการกำหนดค่า USB ช่วยลดการพึ่งพาโค้ดเฟรมเวิร์ก ดังนั้นแม้ว่าเฟรมเวิร์กจะขัดข้อง USB ก็ควรทำงาน

ภายใต้ เสียงแหลม รูปแบบนอกจากนี้ยังนำมาใช้ใน Android 8.0 ทุก HAL ที่จะถูกแยกออกจากการให้บริการของระบบและจะต้องทำงานในภูตพื้นเมืองของพวกเขาเอง ซึ่งช่วยลดความต้องการที่จะมี USB daemon แบบเอกสิทธิ์เฉพาะบุคคล เนื่องจากเลเยอร์ HAL จะเพิ่มเป็นสองเท่าของ USB daemon

การใช้งาน HAL เริ่มต้นจะดูแลอุปกรณ์รุ่นก่อน Android 8.0 ทั้งหมด ดังนั้น จะไม่มีการทำงานเฉพาะอุปกรณ์ใดๆ สำหรับอุปกรณ์รุ่นก่อน Android 8.0 Android 8.0 ใช้อินเทอร์เฟซ HAL เพื่อสอบถามสถานะของพอร์ต USB และดำเนินการเปลี่ยนบทบาทข้อมูลและบทบาทพลังงาน

การดำเนินการ

อินเทอร์เฟซ USB HAL ใหม่จะต้องถูกนำมาใช้กับทุกอุปกรณ์ที่เปิดตัวบน Android 8.0 การใช้งานเริ่มต้นควรดูแลอุปกรณ์รุ่นก่อน Android 8.0 เริ่มต้นใช้งานก็เพียงพอหากอุปกรณ์ใช้ dual_role_usb ชั้นเรียนเพื่อรายงานสถานะ Type-C พอร์ต อาจจำเป็นต้องเปลี่ยนแปลงเล็กน้อยในสคริปต์ USB เฉพาะอุปกรณ์เพื่อโอนความเป็นเจ้าของโหนด typc-c ไปยังระบบ