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.
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/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.halPara 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:
Versión correcta de la HAL de USB. No se requiere ninguna implementación de la IU del sistema.
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.
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.