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 de 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 que ejecutan Android 13 y versiones posteriores. Usa esta API para restablecer la conexión USB con el host conectado.

Cómo encontrar el 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 del HAL de USB, usa las siguientes rutas de acceso:

    AIDL de versión (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:

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

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

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

Implementa el HAL de USB

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

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

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

Información sobre 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 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: Ejemplo de flujo de código de la API de USB Port Reseat.

Valida tu implementación

Cada versión de HAL de USB y su API correspondiente se asocian con un caso de prueba en el paquete de pruebas del proveedor (VTS).

API de restablecimiento de puertos USB

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

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

El caso de prueba de VTS para 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 bajo prueba (DUT) se pueda desconectar y volver a conectar.