Wi-Fi フレームワークには、3 つの異なる HIDL パッケージに代表される 3 つの Wi-Fi HAL サーフェスがあります。
- Vendor HAL: Android 固有のコマンドの HAL サーフェスです。HIDL ファイルは
hardware/interfaces/wifi/1.x
にあります。 - Supplicant HAL: wpa_supplicant の HAL サーフェスです。HIDL ファイルは
hardware/interfaces/supplicant/1.x
にあります。 - Hostapd HAL: hostapd の HAL サーフェスです。HIDL ファイルは
hardware/interfaces/hostapd/1.x
にあります。
Vendor HAL
Vendor HAL は、Android 固有のコマンドを提供します。インフラストラクチャの Station(STA)モードと Soft AP(SAP)モードが機能するためのオプションであり、必須ではありません。ただし、Wi-Fi Aware と Wi-Fi RTT サービスに対しては必須です。
HIDL より前(Android 8.0 より前)の Androidでは、今日レガシー HAL と呼ばれる HAL メカニズムが使用されていました。現在では、Android ソースコードは、レガシー HAL 上で実行される shim を使用して HIDL のデフォルトの実装を提供します。
以前の HAL ヘッダーは hardware/libhardware_legacy/include/hardware_legacy/
にあります。以前の HAL ベースの実装は hardware/interfaces/wifi/1.x/default
にあります。
Supplicant HAL
Supplicant HAL は、wpa_supplicant デーモンに HIDL インターフェースを提供します。
wpa_supplicant のソースコードは external/wpa_supplicant_8/wpa_supplicant
にあります。HIDL インターフェースを提供する wpa_supplicant コードは、hidl
サブディレクトリにあります。
Hostapd HAL
Hostapd HAL は、hostapd デーモンに HIDL インターフェースを提供します。
hostapd のソースコードは external/wpa_supplicant_8/hostapd
にあります。HIDL インターフェースを提供する hostapd コードは、hidl
サブディレクトリにあります。
Wi-Fi マルチインターフェースの同時実行
さまざまな Android デバイスで Wi-Fi インターフェースの異なる組み合わせを同時にサポートできます。サポートされる組み合わせは HAL で定義され、フレームワークに公開されます。指定形式は android/hardware/interfaces/wifi/1.0/IWifiChip.hal
内で定義されます。たとえば、デバイスは 1 つの STA と、NAN(Wi-Fi Aware)または P2P(Wi-Fi Direct)のいずれかのタイプのインターフェース 1 つをサポートできます。これは次のように記述されます。
[{STA} <= 1, {NAN,P2P} <= 1]
同時実行の指定形式はフレキシブルかつ一般的なものであり、フレームワークでまだサポートされていない組み合わせを記述できます。特定の組み合わせを構成するには、device/<oem>/<device>/BoardConfig-common.mk
にある WIFI_HAL_INTERFACE_COMBINATIONS
ビルドフラグを使用します。また、リファレンス HAL には、(従来の)ビルドフラグによって有効化できる複数の組み合わせの構成があります。構成手順については、以下をご覧ください。