Обзор

В Android по умолчанию реализована поддержка различных протоколов и режимов Wi-Fi, в том числе:

  • Инфраструктура Wi-Fi (STA)
  • Точка доступа Wi-Fi (Soft AP) в режиме модема или только в локальном режиме
  • Wi-Fi Direct (P2P)
  • Wi-Fi Aware (NAN)
  • Wi-Fi RTT (IEEE 802.11mc FTM)

Приложение, использующее сервисы Wi-Fi, напрямую взаимодействует с различными сервисами Wi-Fi через Binder. Сервисы Wi-Fi работают в системном сервисе и взаимодействуют с HAL через предоставленные интерфейсы HIDL и AIDL. На этой схеме показана общая структура стека Wi-Fi в Android.

Архитектура Wi-Fi

Рисунок 1. Архитектура Wi-Fi в Android

Фреймворк приложения

На уровне фреймворка приложения находится код приложения, который использует различные API android.net.wifi для взаимодействия с фреймворком и оборудованием Wi-Fi. Этот код вызывает процесс Wi-Fi через механизм Binder IPC.

Сервисы Wi-Fi

Сервисы Wi-Fi работают в системном сервисе и находятся в папке packages/modules/Wifi/service/. Сервис Wi-Fi взаимодействует с HAL Wi-Fi через AIDL.

Существуют различные сервисы Wi-Fi:

  • Сервис Wi-Fi – основной механизм управления режимами инфраструктуры Wi-Fi (STA и AP).
  • Wi-Fi P2P Service – управляет режимом Wi-Fi Direct.
  • Сервис Wi-Fi Aware. Управляет режимом Wi-Fi Aware.
  • Сервис Wi-Fi RTT управляет функцией IEEE 802.11mc FTM.

Фреймворк Wi-Fi также включает отдельный процесс wificond, расположенный в каталоге system/connectivity/wificond. Процесс wificond взаимодействует с драйвером Wi-Fi с помощью стандартных команд nl80211.

Уровни абстракции оборудования Wi-Fi

В фреймворке Wi-Fi есть три интерфейса HAL Wi-Fi, представленные тремя разными интерфейсами: Vendor HAL, Supplicant HAL и Hostapd HAL.

Подробную информацию о реализации различных HAL можно найти в статье Wi-Fi HAL.