Функция Wi-Fi Direct , также известная как Wi-Fi P2P, позволяет поддерживающим устройствам обнаруживать друг друга и подключаться друг к другу напрямую с использованием протокола Wi-Fi Direct без доступа к Интернету или сотовой сети. Эта функция, созданная на основе спецификации Wi-Fi Direct Wi- Fi Alliance (WFA), позволяет обмениваться данными с высокой пропускной способностью между доверенными устройствами и приложениями, которые в противном случае находятся вне сети.
Примеры и источник
Чтобы использовать эту функцию, производители устройств должны реализовать интерфейсы HAL поставщика Wi-Fi и соискателя.
В Android 13 интерфейс Supplicant использует AIDL для определения HAL. В Android 14 и более поздних версиях интерфейс HAL поставщика использует AIDL. В Android 12 и более ранних версиях интерфейсы HAL заявителя и поставщика определяются с использованием HIDL.
Для использования функции Wi-Fi Direct необходимы следующие поверхности Wi-Fi HAL:
-
hardware/interfaces/wifi/aidl
илиhardware/interfaces/wifi/1.3
или выше -
hardware/interfaces/wifi/supplicant/aidl
илиhardware/interfaces/wifi/supplicant/1.2
или выше
Выполнение
Производители устройств должны обеспечить поддержку как инфраструктуры, так и HAL/прошивки:
- Рамки:
- Код АОСП
- Включить Wi-Fi Direct: требуется флаг функции.
- Поддержка Wi-Fi Direct (P2P) HAL (что подразумевает поддержку прошивки)
Чтобы реализовать эту функцию, производители устройств реализуют интерфейсы 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
.
Чтобы включить эту функцию, производители устройств должны:
- Реализуйте API-интерфейс Wi-Fi
ISupplicantP2pIface::setMacRandomization
API. В зависимости от реализованного интерфейса это:-
hardware/interface/wifi/supplicant/1.2
для HIDL -
hardware/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 также можно протестировать с помощью Vendor Test Suite (VTS) .
Модульные тесты
Проверьте пакет Wi-Fi Direct, используя следующие тесты.
Сервисные тесты:
atest com.android.server.wifi.p2p
Менеджер тестирует:
atest android.net.wifi.p2p
Тесты набора тестов совместимости (CTS)
Используйте тесты CTS для проверки функции Wi-Fi Direct. CTS определяет, когда эта функция включена, и автоматически включает соответствующие тесты.
Чтобы запустить тесты CTS, запустите:
% atest android.net.wifi.p2p.cts
Тесты CTS Verifier
Тесты CTS Verifier проверяют поведение Wi-Fi Direct с использованием двух устройств: тестового устройства и заведомо исправного устройства. Чтобы запустить тесты, откройте CTS Verifier и перейдите в раздел «Тесты Wi-Fi Direct».