เปิดใช้งาน USB Gadget HAL API

USB Gadget Hardware Abstraction Layer (HAL) รองรับ API ของระบบต่อไปนี้:

  • พอร์ต USB รีเซ็ต API: พอร์ต USB รีเซ็ต API ต้องใช้ USB v1.1 Gadget HAL และสามารถใช้ได้สำหรับอุปกรณ์ที่ใช้ Android 11 หรือสูงกว่า ใช้เพื่อรีเซ็ตการเชื่อมต่ออุปกรณ์ USB กับโฮสต์ที่เชื่อมต่อ
  • USB แบนด์วิดธ์ API: พอร์ต USB แบนด์วิดธ์ API ต้องใช้ USB v1.2 Gadget HAL และสามารถใช้ได้สำหรับอุปกรณ์ที่ใช้ Android 12 หรือสูงกว่า ใช้เพื่อรับความเร็วการถ่ายโอนระหว่างอุปกรณ์ USB ที่เชื่อมต่อและโฮสต์
  • USB Gadget HAL API เวอร์ชัน: พอร์ต USB Gadget HAL เวอร์ชัน API ต้องใช้ USB v1.2 Gadget HAL และสามารถใช้ได้สำหรับอุปกรณ์ที่ใช้ Android 12 หรือสูงกว่า ใช้เพื่อรับหมายเลขเวอร์ชัน USB Gadget HAL

เพื่อรองรับ USB Gadget HAL API ผู้ผลิตอุปกรณ์ต้องใช้ USB Gadget HAL เวอร์ชันที่สอดคล้องกัน ในการใช้ USB Gadget HAL API จำเป็นต้องมีแอปที่มีสิทธิ์ของระบบ

ค้นหา USB Gadget HAL และ API ของมัน

ผู้ผลิตอุปกรณ์ต้องใช้ USB Gadget HAL เพื่อรองรับ API ที่เกี่ยวข้อง

  1. หากต้องการค้นหาการใช้งานเริ่มต้นของ USB Gadget HAL ให้ใช้เส้นทางต่อไปนี้:
  2. หากต้องการค้นหาไฟล์ส่วนหัวของอินเทอร์เฟซฮาร์ดแวร์ ให้ใช้เส้นทางต่อไปนี้:
  3. หากต้องการค้นหา API ให้ใช้เส้นทางต่อไปนี้เพื่อค้นหา API ใต้ไฟล์ส่วนหัว AIDL เส้นทางนี้เป็นจุดเริ่มต้น Android Framework สำหรับ API ด้วย:

ใช้งานอุปกรณ์ USB HAL

หากต้องการสนับสนุน USB Gadget HAL API คุณต้องใช้เวอร์ชัน USB Gadget HAL ที่ถูกต้อง ไม่จำเป็นต้องใช้ UI ของระบบ

ที่จะใช้ USB v1.1 Gadget HAL สำหรับพอร์ต USB รีเซ็ต API ตั้งค่าการเชื่อมต่อ USB ระหว่างอุปกรณ์เป้าหมายและโฮสต์

ทำความเข้าใจสถาปัตยกรรม USB Gadget HAL API

พอร์ต USB APIs Gadget HAL ที่ถูกสร้างขึ้นทั้งหมดลงใน android.hardware.usb แพคเกจและงัด USB Gadget HAL ในการโต้ตอบกับอุปกรณ์ รายละเอียดเกี่ยวกับสถาปัตยกรรมเฉพาะแต่ละรายการอยู่ในแท็บที่เกี่ยวข้องดังนี้:

แบนด์วิดธ์ USB API

รูปต่อไปนี้แสดงให้เห็นถึงการไหลของรหัสของแบนด์วิดธ์ USB API ที่สร้างขึ้นบนด้านบนของ USB แคร์เคอร์เนลและสามารถเข้าถึงได้ผ่าน android.hardware.usb แพคเกจ API ที่ส่งกลับแบนด์วิดธ์ USB ผ่าน getCurrentUsbSpeed() และ updateUsbSpeed() วิธีการ

แบนด์วิดธ์ USB API

รูปที่ 1.1 สถาปัตยกรรมของแบนด์วิดธ์ USB API

USB Gadget HAL เวอร์ชัน API

รูปต่อไปนี้แสดงให้เห็นถึงการไหลของรหัสของ USB Gadget HAL เวอร์ชัน API ที่สร้างขึ้นบนด้านบนของเครื่องผูกฮาร์ดแวร์ IUSBGadget V1.2 และสามารถเข้าถึงได้ผ่าน android.hardware.usb แพคเกจ

USB Gadget HAL เวอร์ชัน API

รูปที่ 1.2 สถาปัตยกรรมของ USB Gadget HAL เวอร์ชัน API

พอร์ต USB รีเซ็ต API

รูปต่อไปนี้แสดงการไหลของโค้ดของ USB Port Reset API ในเฟรมเวิร์ก ซึ่งรวมถึงการใช้งาน USB Gadget HAL

USB รีเซ็ต API

รูปที่ 1.3 ตัวอย่างพอร์ต USB รีเซ็ตรหัส API ไหล

ตรวจสอบการใช้งานของคุณ

มีกรณีทดสอบ Vendor Test Suite (VTS) สำหรับ USB Gadget HAL แต่ละเวอร์ชันและ API ที่เกี่ยวข้อง

แบนด์วิดท์ USB และ USB Gadget HAL เวอร์ชัน APIs

ค้นหากรณีทดสอบ VTS สำหรับ USB Gadget HAL v1.2 ที่เส้นทางต่อไปนี้:

<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/

กรณีทดสอบ VTS สำหรับ USB Gadget HAL v1.2 เป็นกรณีทดสอบฝั่งโฮสต์ที่ให้คุณดำเนินการดังต่อไปนี้:

  • เรียก USB Gadget HAL เวอร์ชัน API ที่ใช้ adb คำสั่งเชลล์ ( #svc usb getGadgetHalVersion )
  • เรียก USB แบนด์วิดธ์ API ที่ใช้คำสั่งเชลล์ adb ( #svc usb getUsbSpeed )
  • ตรวจสอบผลลัพธ์เพื่อยืนยันว่าเป็นค่าที่คาดหวัง

พอร์ต USB รีเซ็ต API

ทำตามเส้นทางนี้เพื่อค้นหากรณีทดสอบ VTS ที่ใช้สำหรับ USB Port Reset API:

<aosp>/test/vts-testcase/hal/usb/gadget/V1_1/

กรณีทดสอบ VTS สำหรับ USB Port Reset API เป็นกรณีทดสอบฝั่งโฮสต์ที่ให้คุณดำเนินการดังต่อไปนี้:

  • เรียกพอร์ต USB รีเซ็ต API ที่ใช้ adb คำสั่งเชลล์ ( #svc usb resetUsbGadget )
  • ตรวจสอบว่าอุปกรณ์ที่อยู่ระหว่างการทดสอบ (DUT) สามารถตัดการเชื่อมต่อและเชื่อมต่อใหม่ได้หรือไม่