چارچوب Wi-Fi دارای سه سطح Wi-Fi HAL است که با سه میانای مختلف نشان داده میشوند. برای دستگاههایی که Android نسخه ۱۴ یا بالاتر را اجرا میکنند، هر سه میانجی بهعنوان بستههای پایدار زبان تعریف میانای Android (AIDL) دردسترس هستند. این میانهها قبلاً بااستفاده از زبان تعریف میانای سختافزار (HIDL) تعریف شدهاند.
- Vendor HAL: سطحی از HAL برای دستورات مختص Android. فایلهای AIDL در
hardware/interfaces/wifi/aidlقرار دارند. - Supplicant HAL: سطح HAL برای wpa_supplicant. فایلهای AIDL در
hardware/interfaces/wifi/supplicant/aidlقرار دارند. - Hostapd HAL: سطح HAL برای hostapd. فایلهای AIDL در
hardware/interfaces/wifi/hostapd/aidlقرار دارند.
لایه انتزاع سختافزار فروشنده
Vendor HAL فرمانهای مختص Android را ارائه میدهد. برای عملکرد حالتهای «ایستگاه زیرساخت» (STA) و «نقطه دسترسی نرمافزاری» (SAP) اختیاری است (الزامی نیست). اما برای سرویسهای Wi-Fi Aware و Wi-Fi RTT الزامی است.
در Android 14 و بالاتر، میانای Vendor HAL بااستفاده از AIDL تعریف میشود. در Android 13 و نسخههای پایینتر، میانای Vendor HAL بااستفاده از HIDL تعریف میشود.
قبلاز HIDL (یعنی قبلاز Android 8.0)، Android از سازوکار HAL بهنام HAL قدیمی استفاده میکرد. کد منبع Android پیادهسازی پیشفرضی از AIDL یا HIDL ارائه میدهد. این پیادهسازی از یک لایه واسط (shim) استفاده میکند که روی HAL قدیمی اجرا میشود.
سرایندهای قدیمی HAL در
hardware/libhardware_legacy/include/hardware_legacy/ قرار دارند. پیادهسازی قدیمی مبتنی بر HAL در hardware/interfaces/wifi/aidl/default برای AIDL و hardware/interfaces/wifi/1.x/default برای HIDL قرار دارد.
لایه انتزاع سختافزار درخواستکننده
Supplicant HAL میانایی برای دیمن wpa_supplicant ارائه میدهد. از Android 13 شروع میشود، میانای کاربری از AIDL برای تعریف HAL استفاده میکند. برای نسخههای قبلاز Android 13، از HIDL برای میانهها و پارتیشنهای فروشنده استفاده میشود.
کد منبع wpa_supplicant در
external/wpa_supplicant_8/wpa_supplicant قرار دارد. پیادهسازی مرجع
واسط AIDL ارائه میدهد که در زیرشاخه aidl پیادهسازی شده است.
Hostapd HAL
Hostapd HAL میانایی برای دیمون hostapd فراهم میکند. از Android 13 به بعد، میانای کاربری از AIDL برای تعریف HAL استفاده میکند. برای نسخههای قبلاز Android 13، از HIDL برای میانهها و پارتیشنهای فروشنده استفاده میشود.
کد منبع hostapd در external/wpa_supplicant_8/hostapd قرار دارد.
پیادهسازی مرجع یک
میانای AIDL ارائه میدهد که در زیرشاخه aidl پیادهسازی شده است.
همزمانی چندمیانای Wi-Fi
دستگاههای Android مختلف میتوانند از ترکیبهای مختلفی از میاناهای Wi-Fi بهطور همزمان پشتیبانی کنند. ترکیبهای پشتیبانیشده در HAL تعریف شدهاند و دراختیار چارچوب قرار میگیرند. قالب مشخصات در
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
برای AIDL Wi-Fi HAL،
android/hardware/interfaces/wifi/1.6/IWifiChip.hal برای Wi-Fi HAL 1.6، و
android/hardware/interfaces/wifi/1.0/IWifiChip.hal برای Wi-Fi HAL 1.5 و
نسخههای پایینتر تعریف شده است.
AIDL HAL، دردسترس برای Android 14 و بالاتر، و Wi-Fi HAL نسخه ۱.۶، دردسترس در Android 13 امکان مشخص کردن میانای نقطه دسترسی پلشده (دو بانده همزمان) را بهعنوان یک مورد ترکیبی صریح اضافه میکند.
قالب مشخصات همزمان انعطافپذیر و عمومی است؛ میتواند ترکیبهایی را که چارچوب هنوز پشتیبانی نمیکند بیان کند. برای پیکربندی ترکیبی خاص، از پرچم ساخت WIFI_HAL_INTERFACE_COMBINATIONS استفاده کنید. این پرچم در
device/<oem>/<device>/BoardConfig-common.mk قرار دارد.
برای مثال، دستگاه میتواند از دو STA و یک رابط از نوع NAN
(Wi-Fi Aware)
یا P2P
(Wi-Fi Direct)
پشتیبانی کند (اما از هر دو پشتیبانی نمیکند). این در
device/<oem>/<device>/BoardConfig-common.mk بهصورت زیر بیان میشود:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
مثال دیگر دستگاهی است که از STA با یک AP پشتیبانی میکند، یا AP پلسازیشده (همزمان دو باندی) بدون میانای دیگر. این مورد بهصورت زیر نشان داده میشود:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
یا اینکه HAL مرجع پیکربندیهایی برای چندین ترکیب دارد که میتوانند با پرچمهای ساخت (قدیمی) فعال شوند. برای دستورالعملهای پیکربندی، به این نشانی مراجعه کنید: