Режим 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 находится в android.hardware.wifi@1.3 . Для поддержки этой функции предоставьте реализации следующих функций в IWifiChip.hal :

  • 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 должна оставаться в активном состоянии и быть готовой к отправке или получению пакетов с минимальной задержкой.

Отключение функции

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

Проверка

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

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

Запустите следующие тесты 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 для создания гистограммы результатов теста задержки ping.

  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 для создания гистограммы результатов теста задержки ping.

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

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

Другие тесты

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