Поддержка Wi-Fi

Функция Wi-Fi Aware, добавленная в Android 8.0, позволяет устройствам, поддерживающим протокол Wi-Fi Aware, обнаруживать друг друга, подключаться к сети и определять радиус действия (добавлено в Android 9) напрямую, используя протокол Wi-Fi Aware без доступа к интернету или сотовой сети. Эта функция, основанная на спецификации Wi-Fi Aware от Wi- Fi Alliance (WFA) (версии 2.0, 3.0, 3.1 и 4.0), позволяет легко обмениваться данными с высокой пропускной способностью между доверенными устройствами и приложениями, которые иначе не подключены к сети.

Примеры и источники

Для использования этой функции производители устройств должны реализовать Wi-Fi Vendor HAL. В Android 14 и более поздних версиях интерфейс Vendor HAL определяется с помощью AIDL. В Android 13 и более ранних версиях интерфейс Vendor HAL определяется с помощью HIDL.

Чтобы использовать функцию Wi-Fi Aware, следуйте указаниям интерфейса Wi-Fi. В зависимости от реализованного интерфейса, это может быть:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 или более поздняя версия

Вы можете обратиться к устаревшему Wi-Fi HAL, чтобы увидеть, как он соотносится с интерфейсами AIDL и HIDL: hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h .

Выполнение

Производители устройств должны обеспечить поддержку как фреймворка, так и HAL/прошивки:

  • Рамки:
    • Код АОСП
    • Включить Aware: требуется как флаг функции, так и флаг сборки.
  • Поддержка HAL Wi-Fi Aware (NAN) (что подразумевает поддержку прошивки)

Для реализации этой функции производители устройств реализуют интерфейс Wi-Fi и включают два флага функций:

  • В BoardConfig.mk или BoardConfig-common.mk , расположенном в device/<oem>/<device> , добавьте следующий флаг:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • В device.mk , расположенном в device/<oem>/<device> , измените переменную среды PRODUCT_COPY_FILES , чтобы включить поддержку функции Wi-Fi Aware:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

Wi-Fi Aware включает определение дальности до одноранговых устройств с использованием протокола IEEE 802.11mc, также известного как Round Trip Time (RTT). Эта подфункция Wi-Fi Aware зависит от поддержки устройством функции Wi-Fi RTT, то есть требует, чтобы устройство поддерживало как Wi-Fi Aware, так и Wi-Fi RTT. Подробнее см. в разделе Wi-Fi RTT .

В остальном все необходимое для этой функции включено в AOSP.

Флаг WIFI_HIDL_FEATURE_AWARE игнорируется, если указан флаг WIFI_HAL_INTERFACE_COMBINATIONS . Подробнее см. в разделе Многоинтерфейсная параллелизм Wi-Fi .

рандомизация MAC

Для Android требуется, чтобы MAC-адрес интерфейсов обнаружения Wi-Fi Aware (NMI) и передачи данных (NDP) был рандомизирован и не совпадал с реальным MAC-адресом устройства. MAC-адреса должны быть:

  • Выполняется случайным образом при включении или повторном включении Wi-Fi Aware.
  • При включении Wi-Fi Aware MAC-адрес должен быть рандомизирован с регулярным интервалом, заданным параметром NanConfigRequest.macAddressRandomizationIntervalSec . По умолчанию фреймворк устанавливает этот интервал равным 30 минутам.

Приостановить и возобновить

В Android 14 и более поздних версиях функция Wi-Fi Aware поддерживает возможность приостанавливать и возобновлять активные сеансы обнаружения (включая все пути передачи данных, связанные с этими сеансами). Поддержка этой возможности позволяет устройствам быстрее возобновлять сеансы обнаружения и потреблять меньше энергии, поскольку сеансы обнаружения можно приостанавливать.

Если устройство поддерживает эту возможность приостановки и возобновления, прошивка приостанавливает сеанс Wi-Fi Aware, когда привилегированное приложение приостанавливает сеанс обнаружения. Когда сеанс обнаружения находится в состоянии приостановки, устройство не передает и не принимает кадры этого сеанса, включая активные NDP в этом сеансе. Если все сеансы обнаружения приостановлены, устройство не передает и не принимает кадры Wi-Fi Aware.

Когда привилегированное приложение возобновляет приостановленный сеанс обнаружения, фреймворк возвращает сеанс в предыдущее состояние, включая все связанные сеансы NDP. Возобновление приостановленного сеанса обнаружения происходит быстрее, чем включение Wi-Fi Aware и создание нового сеанса обнаружения.

Для поддержки приостановки и возобновления сеансов обнаружения производители устройств должны обеспечить поддержку HAL и прошивки. Подробнее см. в файле IWifiNanIface.java .

Производители устройств могут использовать внеполосную связь (например, BLE) для синхронизации приостановки и возобновления работы на нескольких устройствах.

Проверка

Android предоставляет набор модульных тестов, тестов Compatibility Test Suite (CTS) и тестов CTS Verifier для проверки функции Wi-Fi Aware. Wi-Fi Aware также можно протестировать с помощью Vendor Test Suite (VTS) .

Модульные тесты

Тесты пакета Wi-Fi Aware выполняются с использованием:

Сервисные испытания:

atest com.android.server.wifi.aware

Тесты менеджера:

atest android.net.wifi.aware

Тесты набора тестов совместимости (CTS)

Используйте тесты CTS для проверки функции Wi-Fi Aware. CTS определяет, когда функция включена, и автоматически запускает соответствующие тесты.

Тесты CTS можно запустить с помощью:

atest SingleDeviceTest

Тесты CTS Verifier

Тесты CTS Verifier проверяют работу функции Wi-Fi Aware с использованием двух устройств: тестового и заведомо исправного . Чтобы запустить тесты, откройте CTS Verifier и перейдите в раздел «Тесты Wi-Fi Aware».