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