वाई-फ़ाई फ़्रेमवर्क में तीन वाई-फ़ाई एचएएल लेयर होती हैं. इन्हें तीन अलग-अलग इंटरफ़ेस से दिखाया गया है. Android 14 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, ये तीनों इंटरफ़ेस Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल) के स्टेबल पैकेज के तौर पर उपलब्ध हैं. इन इंटरफ़ेस को पहले, हार्डवेयर इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एचआईडीएल) का इस्तेमाल करके तय किया गया था.
- वेंडर HAL: यह Android के लिए खास तौर पर तैयार की गई कमांड के लिए एक HAL सर्फ़ेस है. एआईडीएल फ़ाइलें
hardware/interfaces/wifi/aidlमें हैं. - सप्लीकेंट एचएएल: यह wpa_supplicant के लिए एक एचएएल सर्फ़ेस है. AIDL फ़ाइलें
hardware/interfaces/wifi/supplicant/aidlमें होती हैं. - Hostapd HAL: यह hostapd के लिए एक एचएएल लेयर है. AIDL फ़ाइलें
hardware/interfaces/wifi/hostapd/aidlमें होती हैं.
वेंडर एचएएल
वेंडर HAL, Android के लिए खास तौर पर तैयार किए गए निर्देश देता है. हालांकि, इंफ़्रास्ट्रक्चर स्टेशन (एसटीए) और सॉफ़्ट एपी (एसएपी) मोड के काम करने के लिए, यह ज़रूरी नहीं है. हालांकि, Wi-Fi Aware और Wi-Fi RTT सेवाओं के लिए यह ज़रूरी है.
Android 14 और इसके बाद के वर्शन में, वेंडर एचएएल इंटरफ़ेस को एआईडीएल का इस्तेमाल करके तय किया जाता है. Android 13 और इससे पुराने वर्शन में, वेंडर एचएएल इंटरफ़ेस को एचआईडीएल का इस्तेमाल करके तय किया जाता है.
एचआईडीएल से पहले (यानी कि Android 8.0 से पहले), Android में एचएएल के लिए लेगसी एचएएल नाम के मेकेनिज़्म का इस्तेमाल किया जाता था. Android के सोर्स कोड में, AIDL या HIDL का डिफ़ॉल्ट वर्शन उपलब्ध होता है. यह लागू करने का तरीका, लेगसी HAL के ऊपर चलने वाले शिम का इस्तेमाल करता है.
लेगसी एचएएल हेडर, hardware/libhardware_legacy/include/hardware_legacy/ में मौजूद होते हैं. लेगसी एचएएल पर आधारित लागू करने की सुविधा, एआईडीएल के लिए hardware/interfaces/wifi/aidl/default और एचआईडीएल के लिए hardware/interfaces/wifi/1.x/default में मौजूद है.
सप्लीकेंट एचएएल
Supplicant HAL, wpa_supplicant डेमॉन के लिए एक इंटरफ़ेस उपलब्ध कराता है. Android 13 से, इंटरफ़ेस एचएएल डेफ़िनिशन के लिए एआईडीएल का इस्तेमाल करता है. Android 13 से पहले की रिलीज़ के लिए, इंटरफ़ेस और वेंडर पार्टीशन HIDL का इस्तेमाल करते हैं.
wpa_supplicant का सोर्स कोड, external/wpa_supplicant_8/wpa_supplicant में मौजूद है. रेफ़रंस के तौर पर लागू करने से, एआईडीएल इंटरफ़ेस मिलता है. इसे aidl सब-डायरेक्ट्री में लागू किया जाता है.
Hostapd HAL
Hostapd HAL, hostapd डेमॉन के लिए एक इंटरफ़ेस उपलब्ध कराता है. Android 13 से, इंटरफ़ेस एचएएल डेफ़िनिशन के लिए एआईडीएल का इस्तेमाल करता है. Android 13 से पहले की रिलीज़ के लिए, इंटरफ़ेस और वेंडर पार्टीशन HIDL का इस्तेमाल करते हैं.
hostapd का सोर्स कोड external/wpa_supplicant_8/hostapd में मौजूद है.
रेफ़रंस के तौर पर लागू करने की सुविधा, एक AIDL इंटरफ़ेस उपलब्ध कराती है. इसे aidl सब-डायरेक्ट्री में लागू किया जाता है.
वाई-फ़ाई मल्टी-इंटरफ़ेस कॉन्करेंसी
अलग-अलग Android डिवाइसों पर, एक साथ अलग-अलग वाई-फ़ाई इंटरफ़ेस इस्तेमाल किए जा सकते हैं. एचएएल में, काम करने वाले कॉम्बिनेशन तय किए जाते हैं और उन्हें फ़्रेमवर्क के लिए उपलब्ध कराया जाता है. स्पेसिफ़िकेशन फ़ॉर्मैट के बारे में यहां बताया गया है:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
एआईडीएल वाई-फ़ाई एचएएल के लिए,
android/hardware/interfaces/wifi/1.6/IWifiChip.hal वाई-फ़ाई एचएएल 1.6 के लिए, और
android/hardware/interfaces/wifi/1.0/IWifiChip.hal वाई-फ़ाई एचएएल 1.5 और
इससे कम वर्शन के लिए.
Android 14 और इसके बाद के वर्शन के लिए उपलब्ध एआईडीएल एचएएल और Android 13 में उपलब्ध वाई-फ़ाई एचएएल 1.6 वर्शन में, ब्रिज किए गए एपी इंटरफ़ेस (डुअल बैंड एक साथ) को कॉम्बिनेशन आइटम के तौर पर सेट करने की सुविधा जोड़ी गई है.
कॉन्करेंसी स्पेसिफ़िकेशन का फ़ॉर्मैट फ़्लेक्सिबल और सामान्य होता है. इससे ऐसे कॉम्बिनेशन भी बनाए जा सकते हैं जो फ़्रेमवर्क के साथ काम नहीं करते. किसी खास कॉम्बिनेशन को कॉन्फ़िगर करने के लिए, WIFI_HAL_INTERFACE_COMBINATIONS बिल्ड फ़्लैग का इस्तेमाल करें. यह फ़्लैग device/<oem>/<device>/BoardConfig-common.mk में मौजूद है.
उदाहरण के लिए, कोई डिवाइस दो एसटीए और एक इंटरफ़ेस के साथ काम कर सकता है. यह इंटरफ़ेस, NAN (Wi-Fi Aware) या P2P (Wi-Fi Direct) टाइप का हो सकता है. हालांकि, यह दोनों टाइप का नहीं हो सकता. इसे device/<oem>/<device>/BoardConfig-common.mk में इस तरह दिखाया जाता है:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
एक और उदाहरण ऐसा डिवाइस है जो एक एपी के साथ एस टीए का इस्तेमाल करता है या जिसमें कोई अन्य इंटरफ़ेस नहीं है, लेकिन ब्रिज किए गए एपी (डुअल बैंड एक साथ) का इस्तेमाल किया जा सकता है. इसे इस तरह दिखाया जाता है:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
इसके अलावा, रेफ़रंस HAL में कई कॉम्बिनेशन के लिए कॉन्फ़िगरेशन होते हैं. इन्हें (लेगसी) बिल्ड फ़्लैग की मदद से चालू किया जा सकता है. कॉन्फ़िगरेशन से जुड़े निर्देशों के लिए, यह लेख पढ़ें: