啟用 USB 小工具 HAL API

USB 小工具硬件抽象層 (HAL) 支持以下系統 API:

  • USB 端口重置 API: USB 端口重置 API 需要 USB Gadget HAL v1.1,適用於運行 Android 11 或更高版本的設備。使用它來重置與連接主機的 USB 小工具連接。
  • USB 帶寬 API: USB 帶寬 API 需要 USB Gadget HAL v1.2,適用於運行 Android 12 或更高版本的設備。使用它來獲取連接的 USB 設備和主機之間的傳輸速度。
  • USB 小工具 HAL 版本 API: USB 小工具 HAL 版本 API 需要 USB 小工具 HAL v1.2,適用於運行 Android 12 或更高版本的設備。使用它來獲取 USB Gadget HAL 版本號。

要支持 USB Gadget HAL API,設備製造商必須實現相應的 USB Gadget HAL 版本。要使用 USB Gadget HAL API,需要係統特權應用程序。

查找 USB 小工具 HAL 及其 API

設備製造商必須實現 USB Gadget HAL 以支持相應的 API。

  1. 要查找 USB Gadget HAL 的默認實現,請使用以下路徑:
  2. 要查找硬件接口頭文件,請使用以下路徑:
  3. 要查找 API,請使用以下路徑在 AIDL 頭文件下找到 API。此路徑也是 API 的 Android 框架入口點:

實現 USB 小工具 HAL

要支持 USB Gadget HAL API,您必須實現正確的 USB Gadget HAL 版本。不需要係統 UI 實現。

要為 USB 端口重置 API 實施 USB Gadget HAL v1.1,請重置目標設備和主機之間的 USB 連接

了解 USB Gadget HAL API 架構

USB Gadget HAL API 都內置在android.hardware.usb包中,並利用 USB Gadget HAL 與設備進行交互。有關其每個特定架構的詳細信息位於相應的選項卡中,如下所示:

USB 帶寬 API

下圖說明了 USB 帶寬 API 的代碼流,它構建在 USB UDC 內核之上,可通過android.hardware.usb包訪問。 API 通過getCurrentUsbSpeed()updateUsbSpeed()方法返回 USB 帶寬。

USB 帶寬 API

圖 1.1 USB 帶寬 API 的架構

USB 小工具 HAL 版本 API

下圖說明了 USB Gadget HAL 版本 API 的代碼流,它構建在 IUSBGadget V1.2 硬件綁定器之上,可通過android.hardware.usb包訪問。

USB 小工具 HAL 版本 API

圖 1.2 USB Gadget HAL 版本 API 的架構

USB 端口重置 API

下圖說明了框架中 USB Port Reset API 的代碼流程,包括 USB Gadget HAL 的實現。

USB 重置 API

圖 1.3 USB 端口復位 API 代碼流示例

驗證您的實施

每個 USB Gadget HAL 版本及其相應的 API 都有一個供應商測試套件 (VTS) 測試用例。

USB 帶寬和 USB 小工具 HAL 版本 API

在以下路徑中找到 USB Gadget HAL v1.2 的 VTS 測試用例:

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

USB Gadget HAL v1.2 的 VTS 測試用例是一個主機端測試用例,可讓您執行以下操作:

  • 使用 adb shell 命令 ( #svc usb getGadgetHalVersion ) 調用 USB Gadget HAL 版本 API。
  • 使用 adb shell 命令 ( #svc usb getUsbSpeed ) 調用 USB 帶寬 API。
  • 檢查輸出以確認它是預期值。

USB 端口重置 API

按照此路徑查找為 USB 端口重置 API 實現的 VTS 測試用例:

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

USB Port Reset API 的 VTS 測試用例是一個主機端測試用例,可讓您執行以下操作:

  • 使用 adb shell 命令 ( #svc usb resetUsbGadget ) 調用 USB 端口重置 API。
  • 檢查被測設備 (DUT) 是否可以斷開並重新連接。