Aktifkan API HAL Gadget USB

USB Gadget Hardware Abstraction Layer (HAL) mendukung API sistem berikut:

  • USB Port Reset API: USB Port Reset API memerlukan USB Gadget HAL v1.1 dan tersedia untuk perangkat yang menjalankan Android 11 atau lebih tinggi. Gunakan untuk mengatur ulang koneksi gadget USB dengan host yang terhubung.
  • USB Bandwidth API: USB Bandwidth API memerlukan USB Gadget HAL v1.2 dan tersedia untuk perangkat yang menjalankan Android 12 atau lebih tinggi. Gunakan untuk mendapatkan kecepatan transfer antara perangkat USB yang terhubung dan host.
  • USB Gadget HAL Version API: USB Gadget HAL Version API memerlukan USB Gadget HAL v1.2 dan tersedia untuk perangkat yang menjalankan Android 12 atau lebih tinggi. Gunakan untuk mendapatkan nomor versi HAL Gadget USB.

Untuk mendukung API HAL Gadget USB, produsen perangkat harus menerapkan versi HAL Gadget USB yang sesuai. Untuk menggunakan API HAL Gadget USB, diperlukan aplikasi dengan hak istimewa sistem.

Temukan HAL Gadget USB dan API-nya

Produsen perangkat harus menerapkan USB Gadget HAL untuk mendukung API yang sesuai.

  1. Untuk menemukan implementasi default USB Gadget HAL, gunakan jalur berikut:
  2. Untuk menemukan file header antarmuka perangkat keras, gunakan jalur berikut:
  3. Untuk menemukan API, gunakan jalur berikut untuk menemukan API di bawah file header AIDL. Jalur ini juga merupakan titik masuk Kerangka Kerja Android untuk API:

Menerapkan Gadget USB HAL

Untuk mendukung API HAL Gadget USB, Anda harus menerapkan versi HAL Gadget USB yang benar. Tidak diperlukan implementasi sistem UI.

Untuk menerapkan USB Gadget HAL v1.1 untuk API Reset Port USB, setel ulang koneksi USB antara perangkat target dan host .

Memahami arsitektur USB Gadget HAL API

Semua API HAL Gadget USB dibangun ke dalam paket android.hardware.usb dan memanfaatkan HAL Gadget USB untuk berinteraksi dengan perangkat. Detail tentang masing-masing arsitektur spesifiknya ada di tab yang sesuai, sebagai berikut:

API Bandwidth USB

Gambar berikut mengilustrasikan aliran kode API Bandwidth USB, yang dibuat di atas kernel USB UDC dan dapat diakses melalui paket android.hardware.usb . API mengembalikan bandwidth USB melalui metode getCurrentUsbSpeed() dan updateUsbSpeed() .

API Bandwidth USB

Gambar 1.1 Arsitektur USB Bandwidth API

API Versi HAL Gadget USB

Gambar berikut mengilustrasikan aliran kode API Versi HAL Gadget USB, yang dibuat di atas pengikat perangkat keras IUSBGadget V1.2 dan dapat diakses melalui paket android.hardware.usb .

API Versi HAL Gadget USB

Gambar 1.2 Arsitektur API Versi HAL Gadget USB

API Reset Port USB

Gambar berikut mengilustrasikan alur kode API Reset Port USB dalam suatu kerangka kerja, termasuk implementasi HAL Gadget USB.

API Setel Ulang USB

Gambar 1.3 Contoh Aliran Kode API Reset Port USB

Validasi implementasi Anda

Ada kasus uji Vendor Test Suite (VTS) untuk setiap versi HAL Gadget USB dan API yang sesuai.

Bandwidth USB dan API Versi HAL Gadget USB

Temukan kasus uji VTS untuk USB Gadget HAL v1.2 di jalur berikut:

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

Kasus uji VTS untuk USB Gadget HAL v1.2 adalah kasus uji sisi host yang memungkinkan Anda melakukan tindakan berikut:

  • Aktifkan API Versi HAL Gadget USB menggunakan perintah adb shell ( #svc usb getGadgetHalVersion ).
  • Aktifkan API Bandwidth USB menggunakan perintah adb shell ( #svc usb getUsbSpeed ​​).
  • Periksa output untuk mengonfirmasi bahwa itu adalah nilai yang diharapkan.

API Reset Port USB

Ikuti jalur ini untuk menemukan kasus uji VTS yang diterapkan untuk API Reset Port USB:

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

Kasus uji VTS untuk API Reset Port USB adalah kasus uji sisi host yang memungkinkan Anda melakukan tindakan berikut:

  • Aktifkan USB Port Reset API menggunakan perintah adb shell ( #svc usb resetUsbGadget ).
  • Periksa apakah perangkat yang sedang diuji (DUT) dapat diputuskan dan dihubungkan kembali.