Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Habilite las API de HAL de dispositivos USB

La capa de abstracción de hardware de gadget USB (HAL) admite las siguientes API del sistema:

  • Puerto USB API Reset: El puerto USB requiere API de reinicio 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: El ancho de banda API 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 versión de la API: La API de gadgets HAL versión USB 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 de USB Gadget HAL.

Para admitir las API de USB Gadget HAL, los fabricantes de dispositivos deben implementar la versión de USB Gadget HAL correspondiente. Para utilizar las API de USB Gadget HAL, se requiere una aplicación con privilegios del sistema.

Encuentre el dispositivo USB HAL y sus API

Los fabricantes de dispositivos deben implementar USB Gadget HAL para admitir las API correspondientes.

  1. Para encontrar la implementación predeterminada de USB Gadget HAL, utilice las siguientes rutas:
  2. Para encontrar el archivo de encabezado de la interfaz de hardware, utilice las siguientes rutas:
  3. 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:

Implementar el dispositivo USB HAL

Para admitir las API de USB Gadget HAL, debe implementar la versión correcta de USB Gadget HAL. No se requiere la implementación de la interfaz de usuario del sistema.

Para implementar USB Gadget HAL v1.1 para Port API de reinicio USB, restablezca la conexión USB entre el dispositivo de destino y el host.

Comprender la arquitectura de la API de USB Gadget HAL

El gadget HAL API USB están construidos en el android.hardware.usb paquete y el apalancamiento del USB Gadget HAL 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, construido en la cima de la UDC núcleo USB y accesible a través de la android.hardware.usb paquete. La API devuelve el ancho de banda USB a través de la getCurrentUsbSpeed() y updateUsbSpeed() métodos.

API de ancho de banda USB

Figura 1.1 Arquitectura de la API de ancho de banda USB

API USB Gadget HAL Version

La siguiente figura ilustra el flujo de código de la API de gadgets HAL versión USB, construido en la parte superior de la carpeta de hardware IUSBGadget V1.2 y accesible a través de la android.hardware.usb paquete.

API USB Gadget HAL Version

Figura 1.2 Arquitectura de la API de gadgets HAL versión USB

API de reinicio de puerto USB

La siguiente figura ilustra el flujo de código de la API de reinicio del puerto USB en un marco, incluida la implementación del dispositivo USB HAL.

API de reinicio USB

Figura orificio de flujo de código de restablecimiento API 1.3 Ejemplo USB

Valide su implementación

Hay un caso de prueba de Vendor Test Suite (VTS) para cada versión de USB Gadget HAL y sus API correspondientes.

API de ancho de banda USB y Gadget USB versión HAL

Busque 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 VTS para USB Gadget HAL v1.2 es un caso de prueba del lado del host que le permite realizar las siguientes acciones:

  • Invocar la API de gadgets USB Versión HAL usando adb comando shell ( #svc usb getGadgetHalVersion ).
  • Invocar la API de ancho de banda USB usando adb comando shell ( #svc usb getUsbSpeed ).
  • Verifique la salida para confirmar que es el valor esperado.

API de reinicio de puerto USB

Siga esta ruta para encontrar el caso de prueba de VTS implementado para la API de reinicio del puerto USB:

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

El caso de prueba de VTS para la API de reinicio del puerto USB es un caso de prueba del lado del host que le permite realizar las siguientes acciones:

  • Invocar el puerto USB de la API de reinicio usando adb comando shell ( #svc usb resetUsbGadget ).
  • Compruebe si el dispositivo bajo prueba (DUT) puede desconectarse y volver a conectarse.