वाई-फ़ाई HAL

वाई-फ़ाई फ़्रेमवर्क में तीन वाई-फ़ाई एचएएल प्लैटफ़ॉर्म होते हैं, जिन्हें तीन अलग-अलग इंटरफ़ेस से दिखाया जाता है. Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, ये तीनों इंटरफ़ेस, स्थिर AIDL पैकेज के तौर पर उपलब्ध हैं. इन इंटरफ़ेस को पहले HIDL का इस्तेमाल करके तय किया गया था.

  • वेंडर HAL: Android के लिए खास निर्देशों के लिए HAL प्लैटफ़ॉर्म. AIDL फ़ाइलें hardware/interfaces/aidl में और HIDL फ़ाइलें hardware/interfaces/wifi/1.x में मौजूद हैं.
  • Supplicant HAL: wpa_supplicant के लिए HAL सरफ़ेस. AIDL फ़ाइलें hardware/interfaces/supplicant/aidl में और HIDL फ़ाइलें hardware/interfaces/supplicant/1.x में मौजूद हैं.
  • Hostapd HAL: hostapd के लिए HAL प्लैटफ़ॉर्म. AIDL फ़ाइलें hardware/interfaces/hostapd/aidl में और HIDL फ़ाइलें hardware/interfaces/hostapd/1.x में मौजूद हैं.

वेंडर एचएएल

वेंडर HAL, Android के लिए खास निर्देश उपलब्ध कराता है. इन्फ़्रास्ट्रक्चर स्टेशन (एसटीए) और सॉफ़्ट एपी (एसएपी) मोड के काम करने के लिए, यह ज़रूरी नहीं है. हालांकि, Wi-Fi Aware और Wi-Fi RTT सेवाओं के लिए, यह ज़रूरी है.

Android 14 और इसके बाद के वर्शन में, वेंडर एचएएल इंटरफ़ेस को एआईडीएल का इस्तेमाल करके तय किया जाता है. Android 13 और इससे पहले के वर्शन में, वेंडर एचएएल इंटरफ़ेस को HIDL का इस्तेमाल करके तय किया जाता है.

Android 8.0 से पहले के वर्शन में, Android ने एचएएल (HAL) के एक तरीके का इस्तेमाल किया था. इसे अब लेगसी एचएएल कहा जाता है. फ़िलहाल, Android सोर्स कोड में, लेगसी एचएएल के ऊपर चलने वाले शिम का इस्तेमाल करके, AIDL या HIDL को डिफ़ॉल्ट तौर पर लागू किया जाता है.

लेगसी एचएएल हेडर, hardware/libhardware_legacy/include/hardware_legacy/ में मौजूद होते हैं. लेगसी एचएएल के आधार पर लागू करने की सुविधा, एआईडीएल के लिए hardware/interfaces/wifi/aidl/default और एचआईडीएल के लिए hardware/interfaces/wifi/1.x/default में मौजूद है.

Supplicant HAL

Supplicant HAL, wpa_supplicant डेमन के लिए इंटरफ़ेस उपलब्ध कराता है. Android 13 से, इंटरफ़ेस एचएएल डेफ़िनिशन के लिए एआईडीएल का इस्तेमाल करता है. Android 13 से पहले रिलीज़ किए गए वर्शन के लिए, इंटरफ़ेस और वेंडर पार्टिशन, HIDL का इस्तेमाल करते हैं.

wpa_supplicant का सोर्स कोड, external/wpa_supplicant_8/wpa_supplicant में मौजूद है. रेफ़रंस के तौर पर लागू करने की सुविधा, एक AIDL इंटरफ़ेस उपलब्ध कराती है. इसे 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 के लिए तय किया गया है वह 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) या पी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}}

इसके अलावा, रेफ़रंस HAL में कई कॉम्बिनेशन के लिए कॉन्फ़िगरेशन होते हैं, जिन्हें (लेगसी) बिल्ड फ़्लैग की मदद से चालू किया जा सकता है. कॉन्फ़िगरेशन के निर्देशों के लिए, यह लेख देखें: