Платформа Wi-Fi имеет три поверхности HAL Wi-Fi, представленные тремя различными пакетами HIDL:
- Vendor HAL: поверхность HAL для специфичных для Android команд. Файлы HIDL находятся в
hardware/interfaces/wifi/1.x
. - Supplicant HAL: поверхность HAL для wpa_supplicant . Файлы HIDL находятся в
hardware/interfaces/supplicant/1.x
. - Hostapd HAL: поверхность HAL для hostapd . Файлы HIDL находятся в
hardware/interfaces/hostapd/1.x
.
Поставщик HAL
Vendor HAL предоставляет специфичные для Android команды. Это необязательно (не обязательно) для работы режимов станции инфраструктуры (STA) и программной точки доступа (SAP). Однако это обязательно для Wi-Fi Aware и Wi-Fi RTT .
До HIDL (то есть до Android 8.0) Android использовал механизм HAL, который теперь называется устаревшим HAL . Исходный код Android в настоящее время предоставляет реализацию HIDL по умолчанию с использованием прокладки, работающей поверх устаревшего HAL.
Устаревшие заголовки HAL расположены в hardware/libhardware_legacy/include/hardware_legacy/
. Устаревшая реализация на основе HAL находится в hardware/interfaces/wifi/1.x/default
.
Заявитель HAL
Supplicant HAL предоставляет интерфейс HIDL для демона wpa_supplicant .
Исходный код wpa_supplicant находится в external/wpa_supplicant_8/wpa_supplicant
. Код wpa_supplicant, предоставляющий интерфейс HIDL, находится в hidl
.
Хостэпд HAL
Hostapd HAL предоставляет интерфейс HIDL для демона hostapd .
Исходный код hostapd находится в external/wpa_supplicant_8/hostapd
. Код hostapd, предоставляющий интерфейс HIDL, находится в hidl
.
Многоинтерфейсный параллелизм Wi-Fi
Различные устройства Android могут одновременно поддерживать разные комбинации интерфейсов Wi-Fi. Поддерживаемые комбинации определены в HAL и доступны для платформы. Формат спецификации определяется в android/hardware/interfaces/wifi/1.0/IWifiChip.hal
. Например, устройство может поддерживать две STA и один интерфейс типа NAN ( Wi-Fi Aware ) или P2P ( Wi-Fi Direct ) (но не оба). Это будет выражено как:
[{STA} <= 2, {NAN,P2P} <= 1]
Формат спецификации параллелизма является гибким и универсальным. Он может выражать комбинации, которые еще не поддерживаются платформой. Чтобы настроить конкретную комбинацию, используйте флаг сборки WIFI_HAL_INTERFACE_COMBINATIONS
, расположенный в device/<oem>/<device>/BoardConfig-common.mk
. В качестве альтернативы эталонный HAL имеет конфигурации для нескольких комбинаций, которые можно активировать с помощью (устаревших) флагов сборки. Инструкции по настройке см.