La capa de abstracción de hardware (HAL) del dispositivo USB es compatible con las siguientes API del sistema:
- API de restablecimiento de puerto USB: la API de restablecimiento de puerto USB requiere USB Gadget HAL v1.1 y está disponible para dispositivos con Android 11 o superior. Úselo para restablecer la conexión del dispositivo USB con el host conectado.
- API de ancho de banda USB: la API de ancho de banda USB requiere USB Gadget HAL v1.2 y está disponible para dispositivos con Android 12 o superior. Úselo para obtener la velocidad de transferencia entre un dispositivo USB conectado y el host.
- USB Gadget HAL Version API: La API de USB Gadget HAL Version requiere USB Gadget HAL v1.2 y está disponible para dispositivos con Android 12 o superior. Úselo para obtener el número de versión HAL del dispositivo USB.
Para admitir las API HAL del dispositivo USB, los fabricantes de dispositivos deben implementar la versión HAL del dispositivo USB correspondiente. Para usar las API HAL del dispositivo USB, se requiere una aplicación privilegiada del sistema.
Encuentre el dispositivo USB HAL y sus API
Los fabricantes de dispositivos deben implementar USB Gadget HAL para admitir las API correspondientes.
- Para encontrar la implementación predeterminada de USB Gadget HAL, use las siguientes rutas:
- Versión 1.2 (más reciente):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
- Versión 1.1:
<aosp>/hardware/interfaces/usb/gadget/1.1/default/
- Versión 1.2 (más reciente):
- Para encontrar el archivo de encabezado de la interfaz de hardware, use las siguientes rutas:
- Versión 1.2 (más reciente):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
- Versión 1.1:
<aosp>/hardware/interfaces/usb/gadget/1.1/IUsbGadget.hal
- Versión 1.2 (más reciente):
- Para encontrar las API, use la siguiente ruta para ubicar las API en el archivo de encabezado AIDL. Esta ruta también es el punto de entrada de Android Framework para las API:
-
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
-
Implementar el dispositivo USB HAL
Para admitir las API HAL del dispositivo USB, debe implementar la versión correcta de HAL del dispositivo USB. No se requiere implementación de la interfaz de usuario del sistema.
Para implementar USB Gadget HAL v1.1 para la API de restablecimiento de puerto USB, restablezca la conexión USB entre el dispositivo de destino y el host .
Comprender la arquitectura de la API HAL del dispositivo USB
Las API HAL del dispositivo USB están integradas en el paquete android.hardware.usb
y aprovechan la HAL del dispositivo USB para interactuar con el dispositivo. Los detalles sobre cada una de sus arquitecturas específicas se encuentran en las pestañas correspondientes, de la siguiente manera:
API de ancho de banda USB
La siguiente figura ilustra el flujo de código de la API de ancho de banda USB, construida sobre el kernel UDC USB y accesible a través del paquete android.hardware.usb
. La API devuelve el ancho de banda USB a través de los getCurrentUsbSpeed()
y updateUsbSpeed()
.
Figura 1.1 Arquitectura de la API de ancho de banda USB
API de versión HAL del dispositivo USB
La siguiente figura ilustra el flujo de código de la API de la versión HAL del dispositivo USB, creada sobre el archivador de hardware IUSBGadget V1.2 y accesible a través del paquete android.hardware.usb
.
Figura 1.2 Arquitectura de la API de la versión HAL del dispositivo USB
API de restablecimiento 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 la HAL del dispositivo USB.
Figura 1.3 Ejemplo de flujo de código API de restablecimiento de puerto USB
Valida tu implementación
Hay un caso de prueba de Vendor Test Suite (VTS) para cada versión HAL de USB Gadget y sus API correspondientes.
API de versión HAL de USB Bandwidth y USB Gadget
Encuentre el caso de prueba VTS para USB Gadget HAL v1.2 en la siguiente ruta:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
El caso de prueba de VTS para USB Gadget HAL v1.2 es un caso de prueba del lado del host que le permite realizar las siguientes acciones:
- Invoque la API de la versión HAL del dispositivo USB mediante el comando adb shell (
#svc usb getGadgetHalVersion
). - Invoque la API de ancho de banda USB mediante el comando adb shell (
#svc usb getUsbSpeed
). - Verifique la salida para confirmar que es el valor esperado.
API de restablecimiento de puerto USB
Siga esta ruta para encontrar el caso de prueba de VTS implementado para la API de restablecimiento de puerto USB:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_1/
El caso de prueba de VTS para la API de restablecimiento de puerto USB es un caso de prueba del lado del host que le permite realizar las siguientes acciones:
- Invoque la API de restablecimiento del puerto USB mediante el comando adb shell (
#svc usb resetUsbGadget
). - Compruebe si el dispositivo bajo prueba (DUT) puede desconectarse y volver a conectarse.