Wi-Fi HAL

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)モードと SoftAP(SAP)モードが機能するためのオプションであり、必須ではありません。ただし、Wi-Fi AwareWi-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 には、(従来の)ビルドフラグによって有効化できる複数の組み合わせがあります。設定手順については、以下をご覧ください。