Para admitir la API de la capa de abstracción de hardware (HAL) USB, los fabricantes de dispositivos deben implementar la versión USB HAL correspondiente. Para utilizar la API USB HAL, se requiere una aplicación con privilegios del sistema.
USB HAL admite la API de restablecimiento de puerto USB, que requiere USB HAL v2.0 y está disponible para dispositivos con Android 13 y versiones posteriores. Utilice esta API para restablecer la conexión USB con el host conectado.
Encuentre el USB HAL y sus API
Los fabricantes de dispositivos deben implementar USB HAL para admitir las API.
Para encontrar la implementación predeterminada de USB HAL, utilice 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, utilice la siguiente ruta:
Versión AIDL (más reciente):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
Para encontrar las API, utilice la siguiente ruta para ubicar las API en el archivo de encabezado AIDL. Esta ruta es también el punto de entrada de Android Framework para la API:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
Implementar el USB HAL
Para trabajar con la API USB HAL, implemente:
Versión correcta de USB HAL. No se requiere ninguna implementación de interfaz de usuario del sistema.
USB AIDL HAL para la API de restablecimiento del puerto USB restableciendo la conexión USB entre el dispositivo de destino y el host.
Comprender la arquitectura API USB HAL
La API USB HAL está integrada en el paquete android.hardware.usb
y aprovecha el USB HAL para interactuar con el dispositivo. En la siguiente figura se proporcionan detalles sobre la arquitectura de la API.
API de reinicio de puerto USB
La siguiente figura ilustra el flujo de código de la API de restablecimiento del puerto USB en un marco, incluida la implementación de USB HAL.
Figura 1.1 Ejemplo de flujo de código API de restablecimiento de puerto USB.
Valide su implementación
Cada versión de USB HAL y su API correspondiente está asociada con un caso de prueba en Vendor Test Suite (VTS).
API de reinicio de puerto USB
Para encontrar el caso de prueba VTS para la API de restablecimiento del puerto USB, vaya a:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
El caso de prueba VTS para USB HAL v1.2 es un caso de prueba del lado del host que puede utilizar para realizar estas acciones.
Para invocar la API de restablecimiento del puerto USB, utilice el comando
adb shell
(#svc usb resetUsbPort
).Confirme que el dispositivo bajo prueba (DUT) pueda desconectarse y volverse a conectar.