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 la HAL de USB, se requiere una app con privilegios del sistema.

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

Encuentra la HAL de USB y sus APIs

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

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

    Versión 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:

    Versión 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 de AIDL. Esta ruta también es el punto de entrada del framework de Android para la API:

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

Implementa la HAL de USB

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

  1. Versión correcta de la HAL de USB. No se requiere ninguna implementación de la IU del sistema.

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

Comprende la arquitectura de la API de la HAL de USB

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

API de restablecimiento de puertos USB

En la siguiente figura, se ilustra el flujo de código de la API de restablecimiento de puertos USB en un framework, incluida la implementación de la HAL de USB.

Ejemplo de flujo de código de la API de USB Port Reseat

Figura 1.1: Flujo de código de ejemplo de la API de restablecimiento de puertos USB

Valida tu implementación

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

API de restablecimiento de puertos USB

Para encontrar el caso de prueba de VTS para la API de restablecimiento de puertos USB, ve a:

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

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

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

  • Confirma que el dispositivo bajo prueba (DUT) se puede desconectar y volver a conectar.