Wi-Fi HAL

Платформа 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 имеет конфигурации для нескольких комбинаций, которые можно активировать с помощью (устаревших) флагов сборки. Инструкции по настройке см.