Режим Wi-Fi с низкой задержкой

Android 10 расширяет API блокировки Wi-Fi, позволяя приложениям, чувствительным к задержке, настраивать Wi-Fi в режим с низкой задержкой . Режим низкой задержки запускается при выполнении всех следующих условий:

  • Wi-Fi включен, и устройство имеет доступ в Интернет.
  • Приложение создало и получило блокировку Wi-Fi и работает на переднем плане.
  • Экран включен.

Для поддержки режима низкой задержки на устройствах производители устройств должны обновить драйвер WLAN и HAL поставщика. В режиме с малой задержкой энергосбережение (также известное как спящее состояние в стандарте IEEE 802.11) явно отключается платформой. Параметры сканирования и роуминга на уровнях драйвера и прошивки можно оптимизировать для дальнейшего снижения задержки Wi-Fi. Точные оптимизации зависят от реализации.

Android имеет высокопроизводительный режим блокировки Wi-Fi (представленный на уровне API 12), который отличается от режима с низкой задержкой.

Выполнение

Для поддержки функции режима Wi-Fi с низкой задержкой предоставьте реализации следующих функций IWifiChip .

В AIDL HAL:

  • int getFeatureSet()
  • void setLatencyMode(in LatencyMode mode)

В HIDL HAL (1.3 или новее):

  • getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
  • setLatencyMode(LatencyMode mode) generates (WifiStatus status)

Эталонную реализацию можно найти в wifi_legacy_hal.cpp со следующими функциями:

  • 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)

В режиме с низкой задержкой энергосбережение явно отключено WifiLockManager в платформе Android. Для этого драйвер WLAN должен поддерживать команду NL80211, NL80211_CMD_SET_POWER_SAVE , для включения и отключения энергосбережения. Когда энергосбережение Wi-Fi отключено, система Wi-Fi должна оставаться в активном состоянии и быть готовой отправлять или получать пакеты с минимальной задержкой.

Отключить эту функцию

Чтобы отключить функцию режима с малой задержкой, обновите базовый код getFeatureSet() для AIDL HAL или getCapabilities_1_3() для HIDL HAL, например, capabilities & SET_LATENCY_MODE = 0 , где SET_LATENCY_MODE определен в определении IWifiChip AIDL или HIDL. . Если эта функция отключена, платформа отключает энергосбережение только тогда, когда активен режим с низкой задержкой.

Валидация

Чтобы проверить, работает ли режим с низкой задержкой, когда он включен, запустите следующие автоматические тесты и тесты задержки проверки связи вручную.

Автоматизированное тестирование

Выполните следующие тесты VTS и CTS:

Ручное тестирование

Требуемое испытательное оборудование и окружающая среда

Для ручного тестирования необходимы следующие настройки:

  • Точка доступа Wi-Fi (AP)
  • Телефон тестируемого устройства (DUT) и тестовый компьютер

    • DUT должен быть подключен к точке доступа через Wi-Fi.
    • Тестовый компьютер должен быть подключен к точке доступа через Wi-Fi или Ethernet.
    • Тестовый компьютер должен быть подключен к проверяемому устройству через USB.
  1. Включите режим низкой задержки.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Убедитесь, что ваш компьютер подключен к телефону через ADB. Из оболочки ADB непрерывно пингуйте шлюз в течение 3 часов с интервалом в 1 секунду.

  3. Сохраните выходные данные теста в текстовом файле и используйте электронную таблицу или скрипт Python для создания гистограммы результатов теста задержки пинга.

  4. Повторите шаги с 1 по 3, отключив режим задержки.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Сравните результаты теста, чтобы убедиться, что среднее значение задержки пинга уменьшается при включении режима низкой задержки.

  1. Включите режим низкой задержки.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Из командной строки тестового компьютера непрерывно пингуйте IP-адрес телефона в течение 3 часов с интервалом в 1 секунду.

  3. Сохраните выходные данные теста в текстовом файле и используйте электронную таблицу или скрипт Python для создания гистограммы результатов теста задержки пинга.

  4. Повторите шаги с 1 по 3, отключив режим задержки.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. Сравните результаты теста, чтобы убедиться, что среднее значение задержки пинга уменьшается при включении режима низкой задержки.

Другие тесты

Повторите вышеуказанные тесты в разных средах. Например, дома или в офисе.