Wi-Fi HAL

Wi-Fi 프레임워크에는 세 개의 서로 다른 인터페이스로 표시되는 세 가지 Wi-Fi HAL 노출 영역이 있습니다. 세 가지 인터페이스 모두 HIDL 정의가 있으며 그중 두 개 인터페이스는 안정적인 AIDL 패키지로 제공됩니다.

  • 공급업체 HAL: Android 관련 명령어를 위한 HAL 노출 영역입니다. HIDL 파일은 hardware/interfaces/wifi/1.x에 있습니다.
  • 서플리컨트 HAL: wpa_supplicant를 위한 HAL 노출 영역입니다. HIDL 파일은 hardware/interfaces/supplicant/1.x에 있고 AIDL 파일은 hardware/interfaces/supplicant/aidl에 있습니다.
  • Hostapd HAL: hostapd를 위한 HAL 노출 영역입니다. HIDL 파일은 hardware/interfaces/hostapd/1.x에 있고 AIDL 파일은 hardware/interfaces/hostapd/aidl에 있습니다.

공급업체 HAL

공급업체 HAL은 Android 관련 명령어를 제공합니다. 공급업체 HAL은 인프라 스테이션(STA) 및 소프트 AP(SAP) 모드가 작동하는 데 선택사항입니다(필수 아님). 그러나 Wi-Fi AwareWi-Fi RTT 서비스에는 공급업체 HAL이 필수입니다.

HIDL 이전 Android(즉, Android 8.0 이전 버전)에서는 현재 레거시 HAL이라고 하는 HAL 메커니즘을 사용합니다. 현재 Android 소스 코드는 레거시 HAL에서 실행되는 shim을 사용하여 HIDL의 기본 구현을 제공합니다.

레거시 HAL 헤더는 hardware/libhardware_legacy/include/hardware_legacy/에 있습니다. 레거시 HAL 기반 구현은 hardware/interfaces/wifi/1.x/default에 있습니다.

서플리컨트 HAL

서플리컨트 HAL은 wpa_supplicant 데몬에 인터페이스를 제공합니다. Android 13부터 인터페이스는 HAL 정의에 AIDL을 사용합니다. Android 13 이전의 출시에서는 인터페이스와 공급업체 파티션이 HIDL을 사용합니다.

wpa_supplicant 소스 코드는 external/wpa_supplicant_8/wpa_supplicant에 있습니다. 참조 구현은 aidl 하위 디렉터리에 구현되는 AIDL 인터페이스를 제공합니다.

Hostapd HAL

Hostapd HAL은 hostapd 데몬에 인터페이스를 제공합니다. Android 13부터 인터페이스는 HAL 정의에 AIDL을 사용합니다. Android 13 이전의 출시에서는 인터페이스와 공급업체 파티션이 HIDL을 사용합니다.

hostapd 소스 코드는 external/wpa_supplicant_8/hostapd에 있습니다. 참조 구현은 aidl 하위 디렉터리에 구현되는 AIDL 인터페이스를 제공합니다.

Wi-Fi 다중 인터페이스 동시 실행

서로 다른 Android 기기가 다양한 Wi-Fi 인터페이스 조합을 동시에 지원할 수 있습니다. 지원되는 조합은 HAL에 정의되어 있으며 프레임워크에 노출됩니다. 사양 형식은 Wi-Fi HAL 1.5 및 이전 버전의 경우 android/hardware/interfaces/wifi/1.0/IWifiChip.hal에, Wi-Fi HAL 1.6 및 이후 버전의 경우 android/hardware/interfaces/wifi/1.6/IWifiChip.hal에 정의되어 있습니다. Android 13부터 사용할 수 있는 Wi-Fi HAL 버전 1.6은 브리지 AP 인터페이스(동시 듀얼 밴드)를 명시적인 조합 항목으로 지정하는 기능을 추가합니다.

동시 실행 사양 형식은 유연하고 포괄적입니다. 따라서 아직 프레임워크에서 지원하지 않는 조합을 표현할 수 있습니다. 특정 조합을 구성하려면 device/<oem>/<device>/BoardConfig-common.mk에 있는 WIFI_HAL_INTERFACE_COMBINATIONS 빌드 플래그를 사용합니다.

예를 들어 기기는 STA 2개와 NAN(Wi-Fi Aware) 또는 P2P(Wi-Fi Direct) 유형 중 하나(둘 다는 아님)의 인터페이스 1개를 지원할 수 있습니다. 이는 device/<oem>/<device>/BoardConfig-common.mk에서 다음과 같이 표현됩니다.

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}

또 다른 예로는 단일 AP가 있는 STA 또는 다른 인터페이스가 없는 브리지 AP(듀얼 밴드 동시)를 지원하는 기기를 들 수 있습니다. 이는 다음과 같이 표현됩니다.

WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}

또는 참조 HAL에는 (레거시) 빌드 플래그로 활성화될 수 있는 몇 가지 조합의 구성이 있습니다. 구성 안내는 다음을 참고하세요.