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.
- Untuk menemukan implementasi default USB Gadget HAL, gunakan jalur berikut:
- Versi 1.2 (terbaru):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
- Versi 1.1:
<aosp>/hardware/interfaces/usb/gadget/1.1/default/
- Versi 1.2 (terbaru):
- Untuk menemukan file header antarmuka perangkat keras, gunakan jalur berikut:
- Versi 1.2 (terbaru):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
- Versi 1.1:
<aosp>/hardware/interfaces/usb/gadget/1.1/IUsbGadget.hal
- Versi 1.2 (terbaru):
- 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:
-
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
-
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()
.
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
.
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.
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.