Per supportare l'API USB Hardware Abstraction Layer (HAL), i produttori di dispositivi devono implementare la versione HAL USB corrispondente. Per utilizzare l'API HAL USB, è necessaria un'app con privilegi di sistema.
L'HAL USB supporta l'API USB Port Reset, che richiede l'HAL USB 2.0 ed è disponibile per i dispositivi con Android 13 e versioni successive. Utilizza questa API per reimpostare la connessione USB con l'host connesso.
Trovare l'HAL USB e le relative API
I produttori di dispositivi devono implementare l'HAL USB per supportare le API.
Per trovare l'implementazione predefinita dell'HAL USB, utilizza i seguenti percorsi:
Versione AIDL (ultima):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
Per trovare il file dell'intestazione dell'interfaccia hardware, utilizza il seguente percorso:
Versione AIDL (ultima):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
Per trovare le API, utilizza il seguente percorso per individuarle nel file di intestazione AIDL. Questo percorso è anche il punto di ingresso dell'API per il framework Android:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
Implementa l'HAL USB
Per utilizzare l'API HAL USB, implementa:
Versione corretta dell'HAL USB. Non è richiesta l'implementazione dell'interfaccia utente di sistema.
HAL AIDL USB per l'API USB Port Reset reimpostando la connessione USB tra il dispositivo di destinazione e l'host.
Informazioni sull'architettura dell'API HAL USB
L'API HAL USB è integrata nel pacchetto android.hardware.usb
e sfrutta l'HAL USB per interagire con il dispositivo. I dettagli sull'architettura dell'API sono riportati nella figura seguente.
API USB Port Reset
La figura seguente illustra il flusso di codice dell'API USB Port Reset in un framework, inclusa l'implementazione dell'HAL USB.
Figura 1.1 Flusso di codice dell'API di esempio per il ricollegamento della porta USB.
Convalidare l'implementazione
Ogni versione dell'HAL USB e la relativa API sono associate a uno scenario di test nel Vendor Test Suite (VTS).
API USB Port Reset
Per trovare lo scenario di test VTS per l'API USB Port Reset, vai a:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Il test case VTS per la versione 1.2 dell'HAL USB è un test case lato host che puoi utilizzare per eseguire queste azioni.
Per richiamare l'API USB Port Reset, utilizza il comando
adb shell
(#svc usb resetUsbPort
).Verifica che il dispositivo in prova (DUT) possa scollegarsi e ricollegarsi.