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

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

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

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

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

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

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

Выполнение

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

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

Чтобы реализовать эту функцию, производители устройств реализуют интерфейс 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».