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

Implementación de USB HAL

El Android 8.0 liberación movimientos de manipulación de USB comandos de init guiones y en un demonio nativa USB para una mejor configuración y fiabilidad código. Para la configuración de la función Gadget, init scripts (disparadores de propiedad) se utilizan para realizar operaciones de gadgets específicos del dispositivo.

En versiones anteriores, estas configuraciones de los dispositivos específicos se logran a través de específicos del dispositivo init guiones (usando disparadores de propiedad). Pasar a un diseño de capa de abstracción de hardware (HAL) da como resultado una implementación mucho más limpia que resuelve estos problemas:

  1. Las operaciones como las escrituras en los nodos sysfs del kernel podrían fallar, pero no se propagarían al código del framework que establece el disparador de la propiedad. Como resultado, los marcos asumen incorrectamente que las operaciones se han realizado correctamente a pesar de que han fallado silenciosamente.
  2. init scripts tienen un número limitado de operaciones que pueden ser ejecutadas.

La versión de Android 12 agrega compatibilidad con USB Gadget HAL para modelos de control de red (NCM) y llamadas a API que devuelven tanto el número de versión de HAL como la velocidad del USB. Para obtener más información sobre la API llama a disposición a través del HAL USB, consulte la android.hardware.usb resumen del paquete .

HAL y agudos

Los específicos del dispositivo init guiones fueron usados como una sustitución de capas de HAL para llevar a cabo las operaciones USB específicas del dispositivo. USB (a través de ADB) es una interfaz principal para depurar problemas del sistema. Tener un demonio nativo para realizar la configuración de USB elimina la dependencia del código del marco, por lo que incluso si el marco falla, el USB debería estar ejecutándose.

Bajo el Agudos modelo también introducido en Android 8.0, todos los HAL están aislados de los servicios del sistema y están obligados a ejecutar en sus propios demonios nativos. Esto elimina el requisito de tener un demonio USB exclusivo, ya que la capa HAL funciona perfectamente como demonio USB.

La implementación predeterminada de HAL se encarga de todos los dispositivos anteriores a Android 8.0. Por lo tanto, no habría ningún trabajo específico de dispositivo para los dispositivos anteriores a Android 8.0. Android 8.0 usa la interfaz HAL para consultar el estado de los puertos USB y para realizar intercambios de roles de datos y de roles de energía.

Implementación

Es necesario implementar una nueva interfaz USB HAL en todos los dispositivos que se inician en Android 8.0. La implementación predeterminada debe ocuparse de los dispositivos anteriores a Android 8.0. La implementación por defecto es suficiente si el dispositivo utiliza la dual_role_usb clase de informe de estado del puerto Tipo-c. Es posible que se requieran cambios triviales en los scripts USB específicos del dispositivo para transferir la propiedad de los nodos typc-c al sistema.