Android 10 extiende la API de bloqueo de Wi-Fi para permitir sensibles a la latencia para configurar una conexión Wi-Fi de baja latencia automático. El modo de baja latencia comienza cuando se cumplen todas las condiciones siguientes:
- Se habilitó la conexión Wi-Fi y el dispositivo tiene acceso a Internet.
- La aplicación creó y adquirió un bloqueo de Wi-Fi, y se está ejecutando en la primer plano.
- La pantalla está encendida.
Para admitir el modo de baja latencia en los dispositivos, los fabricantes de estos deben actualizar la HAL del controlador de WLAN y del proveedor. En el modo de baja latencia, el ahorro de energía (también conocido como el estado Descanso en el estándar IEEE 802.11) está explícitamente inhabilitado por el framework. Los parámetros de escaneo e roaming en las capas de controlador y firmware se pueden para reducir aún más la latencia de Wi-Fi. Las optimizaciones exactas se específicas para la implementación.
Android tiene un modo de bloqueo de Wi-Fi de alto rendimiento (presentado en el nivel de API 12) que es independiente del modo de baja latencia.
Implementación
Para admitir la función de modo de baja latencia de Wi-Fi, realiza implementaciones para
las siguientes funciones IWifiChip
.
En la HAL del AIDL:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
En la HAL de HIDL (1.3 o posterior), haz lo siguiente:
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
Puedes encontrar una implementación de referencia en
wifi_legacy_hal.cpp
con las siguientes funciones:
wifi_error wifi_get_supported_feature_set(wifi_interface_handle iface, feature_set *set)
wifi_error wifi_set_latency_mode(wifi_interface_handle handle, wifi_latency_mode mode)
En el modo de baja latencia, el ahorro de energía está inhabilitado explícitamente por
WifiLockManager
en el framework de Android.
Para ello, el controlador WLAN debe ser compatible con el comando NL80211.
NL80211_CMD_SET_POWER_SAVE
, para habilitar o inhabilitar el ahorro de energía. Cuando la conexión Wi-Fi está activa
Guardar, el sistema Wi-Fi debe permanecer activo y estar listo para
enviar o recibir paquetes con un retraso mínimo.
Inhabilitar la función
Para desactivar la función de modo de baja latencia, actualiza el código subyacente de
getFeatureSet()
para la HAL del AIDL o
getCapabilities_1_3()
para la HAL de HIDL
de modo que capabilities & SET_LATENCY_MODE = 0
, donde
SET_LATENCY_MODE
se define en la definición IWifiChip
de AIDL o HIDL.
Cuando esta función está inhabilitada,
el framework inhabilita el ahorro de energía solo cuando está activo el modo de baja latencia.
Validación
Para probar que el modo de baja latencia funciona cuando está habilitado, ejecuta el siguiente comando y pruebas manuales de latencia de ping.
Pruebas automáticas
Ejecuta las siguientes pruebas de VTS y CTS:
- VTS (AIDL):
hardware/interfaces/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp
- VTS (HIDL):
hardware/interfaces/wifi/1.3/vts/functional/wifi_chip_hidl_test.cpp
- CTS:
cts/tests/tests/net/src/android/net/wifi/cts/WifiLockTest.java
Pruebas manuales
Equipo de prueba y entorno requeridos
Para las pruebas manuales, se requiere la siguiente configuración:
- Punto de acceso Wi-Fi (AP)
Teléfono del dispositivo a prueba (DUT) y computadora de prueba
- El DUT debe estar conectado al punto de acceso mediante Wi-Fi.
- La computadora de prueba debe estar conectada al punto de acceso mediante Wi-Fi o Ethernet
- La computadora de prueba debe estar conectada al DUT mediante USB.
Prueba de ping de vínculo de subida
Habilita el modo de baja latencia.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Asegúrate de que tu computadora esté conectada con el teléfono mediante ADB. Desde la shell de ADB. Para ello, haz ping en la puerta de enlace de forma continua durante 3 horas a 1 segundo. en intervalos de tiempo.
Guarda el resultado de la prueba en un archivo de texto y usa una hoja de cálculo o Python. para generar un histograma de los resultados de la prueba de latencia de ping.
Repite los pasos 1 al 3 con el modo de latencia inhabilitado.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Compara los resultados de la prueba para asegurarte de que el valor de latencia de ping promedio sea el siguiente: se reducen cuando se habilita el modo de baja latencia.
Prueba de ping de enlace de bajada
Habilita el modo de baja latencia.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Desde la línea de comandos de la computadora de prueba, haz ping a la IP del teléfono. dirección de forma continua durante 3 horas en intervalos de 1 segundo.
Guarda el resultado de la prueba en un archivo de texto y usa una hoja de cálculo o Python. para generar un histograma de los resultados de la prueba de latencia de ping.
Repite los pasos 1 al 3 con el modo de latencia inhabilitado.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Compara los resultados de la prueba para asegurarte de que el valor de latencia de ping promedio sea el siguiente: se reducen cuando se habilita el modo de baja latencia.
Otras pruebas
Repite las pruebas anteriores en diferentes entornos. Por ejemplo, en en casa o en la oficina.