Функция Wi-Fi Direct, также известная как Wi-Fi P2P, позволяет устройствам, поддерживающим протокол Wi-Fi Direct, обнаруживать друг друга и подключаться напрямую без доступа к интернету или мобильной сети. Эта функция, основанная на спецификации Wi-Fi Direct от Wi-Fi Alliance (WFA), позволяет обмениваться данными с высокой пропускной способностью между надежными устройствами и приложениями, которые не подключены к сети.
Примеры и источник
Чтобы использовать эту функцию, производители устройств должны реализовать интерфейсы Wi-Fi Vendor и Supplicant HAL.
В Android 13 интерфейс Supplicant использует AIDL для определения HAL. В Android 14 и более поздних версиях интерфейс Vendor HAL использует AIDL. В Android 12 и более ранних версий интерфейсы Supplicant и Vendor HAL определяются с помощью HIDL.
Для использования функции Wi-Fi Direct требуются следующие поверхности HAL Wi-Fi:
hardware/interfaces/wifi/aidlилиhardware/interfaces/wifi/1.3и вышеhardware/interfaces/wifi/supplicant/aidlилиhardware/interfaces/wifi/supplicant/1.2или выше
Реализация
Производители устройств должны обеспечить поддержку как на уровне фреймворка, так и на уровне HAL/встроенного ПО:
- Framework:
- Код AOSP
- Включить Wi-Fi Direct: требуется флаг функции
- Поддержка HAL Wi-Fi Direct (P2P) (что подразумевает поддержку встроенного ПО).
Чтобы реализовать эту функцию, производители устройств внедряют интерфейсы Wi-Fi HIDL или AIDL и включают флаг функции для Wi-Fi Direct. В файле device.mk, расположенном в device/<oem>/<device>, измените переменную среды PRODUCT_COPY_FILES, чтобы добавить поддержку функции Wi-Fi Direct:
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml
Все остальные требования для поддержки Wi-Fi Direct включены в AOSP.
Случайное назначение MAC-адреса
В Android адрес устройства и адрес интерфейса Wi-Fi Direct должны быть рандомизированы. Они должны отличаться от настоящего MAC-адреса устройства и соответствовать следующим требованиям:
- Адрес устройства Wi-Fi Direct должен быть рандомизирован при создании интерфейса, если не сохранена постоянная группа. В противном случае адрес устройства должен продолжать использовать последний сгенерированный MAC-адрес.
- Адрес интерфейса Wi-Fi Direct, также известный как адрес группы, должен быть случайным при каждом установлении подключения.
Случайный выбор MAC-адресов Wi-Fi Direct реализован в wpa_supplicant и управляется двумя конфигурациями: p2p_device_random_mac_addr и p2p_interface_random_mac_addr.
Чтобы включить эту функцию, производители устройств должны:
- Реализуйте Wi-Fi Supplicant API
ISupplicantP2pIface::setMacRandomization. В зависимости от реализованного интерфейса это может быть:hardware/interface/wifi/supplicant/1.2для HIDLhardware/interface/wifi/supplicant/aidlдля AIDL
- Установите для параметра
config_wifi_p2p_mac_randomization_supportedзначение true в пользовательском оверлее устройства.
Проверка
Android предоставляет набор модульных тестов, тестов Compatibility Test Suite (CTS) и тестов CTS Verifier для проверки функции Wi-Fi Direct. Проверить Wi-Fi Direct можно также с помощью набора тестов поставщика (VTS).
Модульные тесты
Проверьте пакет Wi-Fi Direct, выполнив следующие тесты.
Тестирование сервисов:
atest com.android.server.wifi.p2pТесты в управляющем аккаунте:
atest android.net.wifi.p2pТесты Compatibility Test Suite (CTS)
Для проверки функции Wi-Fi Direct используйте тесты CTS. CTS определяет, когда функция включена, и автоматически добавляет связанные с ней тесты.
Чтобы запустить тесты CTS, выполните следующую команду:
atest android.net.wifi.p2p.ctsТесты CTS Verifier
Тесты CTS Verifier проверяют поведение Wi-Fi Direct с помощью двух устройств: тестового и исправного. Чтобы запустить тесты, откройте CTS Verifier и перейдите в раздел Wi-Fi Direct Tests (Тесты Wi-Fi Direct).