API de restablecimiento de puertos USB

Para admitir la API de la capa de abstracción de hardware (HAL) de USB, los fabricantes de dispositivos deben implementar la versión correspondiente de la HAL de USB. Para usar la API de HAL USB, se requiere una app con privilegios del sistema.

El HAL de USB admite la API de restablecimiento de puertos USB, que requiere el HAL de USB v2.0 y está disponible para dispositivos con Android 13 y versiones posteriores. Usa esta API para restablecer la conexión USB con el host conectado.

Busca el HAL de USB y sus APIs

Los fabricantes de dispositivos deben implementar la HAL USB para admitir las APIs.

  1. Para encontrar la implementación predeterminada del sistema HAL de USB, usa las siguientes rutas de acceso:

    Versión de AIDL (más reciente): <aosp>/hardware/interfaces/usb/gadget/1.2/default/

  2. Para encontrar el archivo de encabezado de la interfaz de hardware, usa la siguiente ruta de acceso:

    Versión de AIDL (más reciente): <aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal

  3. Para encontrar las APIs, usa la siguiente ruta para ubicarlas en el archivo de encabezado AIDL. Esta ruta de acceso también es el punto de entrada de Android Framework para la API:

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

Cómo implementar la HAL USB

Para trabajar con la API de HAL de USB, implementa lo siguiente:

  1. Se corrigió la versión de HAL de USB. No se requiere la implementación de la IU del sistema.

  2. HAL de AIDL USB para la API de restablecimiento de puertos USB restablece la conexión USB entre el dispositivo de destino y el host.

Comprende la arquitectura de la API de HAL de USB

La API de HAL de USB está integrada en el paquete android.hardware.usb y aprovecha el HAL de USB para interactuar con el dispositivo. En la siguiente imagen, se proporcionan detalles sobre la arquitectura de la API.

API de restablecimiento de puertos USB

En la siguiente imagen, se ilustra el flujo de código de la API de USB Port Reset en un framework, incluida la implementación del HAL de USB.

Flujo de código de muestra de la API de Reseat USB Port

Figura 1.1 Flujo de código de la API de restablecimiento del puerto USB de muestra

Valida tu implementación

Cada versión de HAL de USB y su API correspondiente están asociadas con un caso de prueba en el conjunto de pruebas del proveedor (VTS).

API de restablecimiento de puertos USB

Para encontrar el caso de prueba de VTS de la API de USB Port Reset, ve a:

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

El caso de prueba de VTS para el HAL de USB v1.2 es un caso de prueba del host que puedes usar para realizar estas acciones.

  • Para invocar la API de USB Port Reset, usa el comando adb shell (#svc usb resetUsbPort).

  • Confirma que el dispositivo que se está probando (DUT) se puede desconectar y volver a conectar.