Wi-Fi HAL

Wi-Fi 프레임워크에는 세 개의 서로 다른 인터페이스로 표시되는 세 가지 Wi-Fi HAL 노출 영역이 있습니다. Android 14 이상을 실행하는 기기의 경우 세 가지 인터페이스 모두 안정화 버전 AIDL 패키지로 사용할 수 있습니다. 이러한 인터페이스는 이전에 HIDL을 사용하여 정의했습니다.

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

공급업체 HAL

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

Android 14 이상에서는 공급업체 HAL 인터페이스가 AIDL을 사용하여 정의됩니다. Android 13 이하에서는 공급업체 HAL 인터페이스가 HIDL을 사용하여 정의됩니다.

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

레거시 HAL 헤더는 hardware/libhardware_legacy/include/hardware_legacy/에 있습니다. 레거시 HAL 기반 구현은 AIDL의 경우 hardware/interfaces/wifi/aidl/default에 있으며 HIDL의 경우 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에 정의되어 있으며 프레임워크에 노출됩니다. 사양 형식은 AIDL Wi-Fi HAL의 경우 hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl에, Wi-Fi HAL 1.6의 경우 android/hardware/interfaces/wifi/1.6/IWifiChip.hal에, Wi-Fi HAL 1.5 이하의 경우 android/hardware/interfaces/wifi/1.0/IWifiChip.hal에 정의되어 있습니다.

Android 이상에 사용 가능한 AIDL 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에는 (레거시) 빌드 플래그로 활성화될 수 있는 몇 가지 조합의 구성이 있습니다. 구성 안내는 다음을 참고하세요.