API USB Port Reset

Per supportare l'API USB Hardware Abstraction Layer (HAL), i produttori di dispositivi devono implementare la versione USB HAL corrispondente. Per utilizzare l'API USB HAL, è necessaria un'app con privilegi di sistema.

L'interfaccia USB HAL supporta l'API USB Port Reset, che richiede USB HAL v2.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'interfaccia USB HAL e le relative API

I produttori di dispositivi devono implementare l'interfaccia USB HAL per supportare le API.

  1. Per trovare l'implementazione predefinita di USB HAL, utilizza i seguenti percorsi:

    Versione AIDL (più recente): <aosp>/hardware/interfaces/usb/gadget/1.2/default/

  2. Per trovare il file di intestazione dell'interfaccia hardware, utilizza il seguente percorso:

    Versione AIDL (più recente): <aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal

  3. Per trovare le API, utilizza il seguente percorso per individuarle nel file di intestazione AIDL. Questo percorso è anche il punto di ingresso di Android Framework per l'API:

    android.hardware.usb: <aosp>/core/java/android/hardware/usb

Implementare l'interfaccia USB HAL

Per utilizzare l'API USB HAL, implementa:

  1. La versione corretta di USB HAL. Non è richiesta alcuna implementazione dell'interfaccia utente di sistema.

  2. L'interfaccia USB AIDL HAL per l'API USB Port Reset reimpostando la connessione USB tra il dispositivo di destinazione e l'host.

Comprendere l'architettura dell'API USB HAL

L'API USB HAL è integrata nel pacchetto android.hardware.usb e sfrutta l'interfaccia USB HAL per interagire con il dispositivo. I dettagli sull'architettura dell'API sono forniti nella figura di seguito.

API USB Port Reset

La figura seguente illustra il flusso di codice dell'API USB Port Reset in un framework, inclusa l'implementazione dell'interfaccia USB HAL.

Flusso di codice API di esempio per il reinserimento della porta USB

Figura 1.1 Flusso di codice di esempio dell'API USB Port Reseat.

Convalidare l'implementazione

Ogni versione di USB HAL e la relativa API sono associate a un caso di test in Vendor Test Suite (VTS).

API USB Port Reset

Per trovare il caso di test VTS per l'API USB Port Reset, vai a:

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

Il caso di test VTS per USB HAL v1.2 è un caso di test 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 fase di test (DUT) possa disconnettersi e riconnettersi.