वाई-फ़ाई फ़्रेमवर्क में तीन वाई-फ़ाई एचएएल लेयर होती हैं. इन्हें तीन अलग-अलग इंटरफ़ेस से दिखाया जाता है. 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 के सोर्स कोड में, एआईडीएल या एचआईडीएल का डिफ़ॉल्ट वर्शन उपलब्ध होता है. यह सुविधा, लेगसी एचएएल के ऊपर चलने वाले शिम का इस्तेमाल करती है.
लेगसी एचएएल हेडर, 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 में उपलब्ध Wi-Fi एचएएल 1.6 वर्शन में, ब्रिज किए गए एपी इंटरफ़ेस (डुअल बैंड एक साथ) को कॉम्बिनेशन आइटम के तौर पर सेट करने की सुविधा जोड़ी गई है.
कॉन्करेंसी स्पेसिफ़िकेशन का फ़ॉर्मैट फ़्लेक्सिबल और सामान्य होता है. इससे ऐसे कॉम्बिनेशन भी बनाए जा सकते हैं जो फ़्रेमवर्क के साथ काम नहीं करते. किसी खास कॉम्बिनेशन को कॉन्फ़िगर करने के लिए, WIFI_HAL_INTERFACE_COMBINATIONS बिल्ड फ़्लैग का इस्तेमाल करें. यह फ़्लैग device/<oem>/<device>/BoardConfig-common.mk में मौजूद है.
उदाहरण के लिए, कोई डिवाइस दो एसटीए और एक इंटरफ़ेस के साथ काम कर सकता है. यह इंटरफ़ेस, एनएएन (Wi-Fi Aware) या पी2पी (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}}
इसके अलावा, रेफ़रंस एचएएल में कई कॉम्बिनेशन के लिए कॉन्फ़िगरेशन होते हैं. इन्हें (लेगसी) बिल्ड फ़्लैग की मदद से चालू किया जा सकता है. कॉन्फ़िगरेशन से जुड़े निर्देशों के लिए, यह लेख पढ़ें: