वाई-फ़ाई अवेयर

Android 8.0 में जोड़ी गई Wi-Fi Aware सुविधा की मदद से, इस सुविधा वाले डिवाइसों को इंटरनेट या मोबाइल नेटवर्क के ऐक्सेस के बिना, सीधे तौर पर Wi-Fi Aware प्रोटोकॉल का इस्तेमाल करके, एक-दूसरे को खोजा जा सकता है, कनेक्ट किया जा सकता है, और रेंज (Android 9 में जोड़ी गई) तय की जा सकती है. यह सुविधा, Wi-Fi Alliance (WFA) के Wi-Fi Aware स्पेसिफ़िकेशन (वर्शन 2.0, 3.0, 3.1, और 4.0) पर आधारित है. इसकी मदद से, भरोसेमंद डिवाइसों और ऐप्लिकेशन के बीच, ज़्यादा डेटा को आसानी से शेयर किया जा सकता है. हालांकि, ये डिवाइस और ऐप्लिकेशन नेटवर्क से कनेक्ट नहीं होते.

उदाहरण और सोर्स

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

वाई-फ़ाई अवेयर की सुविधा का इस्तेमाल करने के लिए, वाई-फ़ाई इंटरफ़ेस का पालन करें. लागू किए गए इंटरफ़ेस के आधार पर, यह इनमें से कोई एक होता है:

  • एआईडीएल: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 या उसके बाद का वर्शन

लेगसी वाई-फ़ाई एचएएल को देखकर यह पता लगाया जा सकता है कि यह AIDL और HIDL इंटरफ़ेस से किस तरह जुड़ा है: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_non.h.

लागू करना

डिवाइस बनाने वाली कंपनियों को फ़्रेमवर्क और एचएएल/फ़र्मवेयर, दोनों के लिए सहायता देनी होगी:

  • फ़्रेमवर्क:
    • AOSP कोड
    • Aware को चालू करना: इसके लिए, सुविधा फ़्लैग और बिल्ड फ़्लैग, दोनों की ज़रूरत होती है
  • Wi-Fi Aware (एनएएन) एचएएल (इसका मतलब है कि फ़र्मवेयर काम करता है) के साथ काम करना

इस सुविधा को लागू करने के लिए, डिवाइस बनाने वाली कंपनियां वाई-फ़ाई इंटरफ़ेस लागू करती हैं और दो सुविधा फ़्लैग चालू करती हैं:

  • device/<oem>/<device> में मौजूद BoardConfig.mk या BoardConfig-common.mk में, यह फ़्लैग जोड़ें:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • device/<oem>/<device> में मौजूद device.mk में, Wi-Fi Aware सुविधा के लिए सहायता शामिल करने के लिए, PRODUCT_COPY_FILES एनवायरमेंट वैरिएबल में बदलाव करें:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

वाई-फ़ाई अवेयर में IEEE 802.11mc प्रोटोकॉल का इस्तेमाल करने वाले मिलते-जुलते डिवाइस शामिल हैं, जिसे राउंड ट्रिप टाइम (आरटीटी) भी कहा जाता है. वाई-फ़ाई अवेयर की यह सब-सुविधा, डिवाइस पर वाई-फ़ाई आरटीटी की सुविधा के काम करने पर निर्भर करती है. इसका मतलब है कि डिवाइस पर वाई-फ़ाई अवेयर और वाई-फ़ाई आरटीटी, दोनों सुविधाएं काम करनी चाहिए. ज़्यादा जानकारी के लिए, वाई-फ़ाई आरटीटी देखें.

अगर ऐसा नहीं है, तो इस सुविधा के लिए ज़रूरी सभी चीज़ें AOSP में शामिल हैं.

अगर WIFI_HAL_INTERFACE_COMBINATIONS फ़्लैग दिया गया है, तो WIFI_HIDL_FEATURE_AWARE फ़्लैग को अनदेखा कर दिया जाता है. ज़्यादा जानकारी के लिए, वाई-फ़ाई के एक से ज़्यादा इंटरफ़ेस पर एक साथ काम करना लेख पढ़ें.

एमएसी पता बदलने की सुविधा

Android के लिए ज़रूरी है कि वाई-फ़ाई अवेयर डिस्कवरी (एनएमआई) और डेटा इंटरफ़ेस (एनडीपी) का मैक पता, रैंडमाइज़ किया गया हो और वह डिवाइस के असली मैक पते से मेल न खाता हो. एमएसी पते:

  • वाई-फ़ाई अवेयर की सुविधा चालू या फिर से चालू होने पर, यह पता लगाने के लिए कि डिवाइस किस वाई-फ़ाई नेटवर्क से कनेक्ट है, डिवाइस को रैंडम तौर पर किसी भी वाई-फ़ाई नेटवर्क से कनेक्ट किया जाता है.
  • वाई-फ़ाई अवेयर चालू होने पर, MAC पते को NanConfigRequest.macAddressRandomizationIntervalSec पैरामीटर से कॉन्फ़िगर किए गए सामान्य इंटरवल पर रैंडम तरीके से कॉन्फ़िगर किया जाना चाहिए. फ़्रेमवर्क इसे डिफ़ॉल्ट रूप से 30 मिनट पर कॉन्फ़िगर करता है.

सस्पेंड और रिज़्यूम

Wi-Fi Aware की सुविधा, Android 14 और उसके बाद वाले वर्शन में, खास लोगों के लिए बनाए गए ऐप्लिकेशन के लिए, डिस्कवरी सेशन को निलंबित करने और फिर से चालू करने की सुविधा देती है. इसमें उन सेशन से जुड़े सभी डेटा पाथ भी शामिल हैं. इसकी मदद से, डिवाइस, डिस्कवरी सेशन को तेज़ी से फिर से शुरू कर सकते हैं और कम बैटरी का इस्तेमाल कर सकते हैं. ऐसा इसलिए, क्योंकि डिस्कवरी सेशन को निलंबित किया जा सकता है.

अगर कोई डिवाइस, रोकने और फिर से शुरू करने की सुविधा के साथ काम करता है, तो फ़र्मवेयर वाई-फ़ाई अवेयर सेशन को रोक देता है. ऐसा तब होता है, जब कोई ऐप्लिकेशन डिस्कवरी सेशन को रोकता है. जब कोई डिस्कवरी सेशन निलंबित स्थिति में होता है, तो डिवाइस उस सेशन के लिए कोई फ़्रेम ट्रांसमिट या रिसीव नहीं करता. इसमें उस सेशन में मौजूद सभी चालू एनडीपी भी शामिल हैं. अगर सभी डिस्कवरी सेशन निलंबित कर दिए जाते हैं, तो डिवाइस न तो कोई वाई-फ़ाई अवेयर फ़्रेम ट्रांसमिट करता है और न ही उसे कोई फ़्रेम मिलता है.

जब कोई ऐप्लिकेशन, निलंबित किए गए डिस्कवरी सेशन को फिर से शुरू करता है, तो फ़्रेमवर्क उस सेशन को उसकी पिछली स्थिति पर वापस ले जाता है. इसमें, उससे जुड़े सभी एनडीपी सेशन भी शामिल होते हैं. निलंबित किए गए डिस्कवरी सेशन को फिर से शुरू करना, वाई-फ़ाई अवेयर ऐक्सेस को चालू करने और नया डिस्कवरी सेशन बनाने से ज़्यादा तेज़ होता है.

डिवाइस मैन्युफ़ैक्चरर को डिवाइस के लिए, एचएएल और फ़र्मवेयर की सहायता देनी होगी, ताकि डिवाइस डिस्कवरी सेशन को निलंबित और फिर से शुरू किया जा सके. ज़्यादा जानकारी के लिए, IWifiNanIface.java देखें.

डिवाइस बनाने वाली कंपनियां, एक से ज़्यादा डिवाइसों पर, 'रोकें' और 'फिर से शुरू करें' को सिंक करने के लिए, आउट-ऑफ़-बैंड कम्यूनिकेशन (उदाहरण के लिए, बीएलई) का इस्तेमाल कर सकती हैं.

पुष्टि करें

Android, इकाई टेस्ट, कंपैटिबिलिटी टेस्ट सुइट (CTS) टेस्ट, और CTS की पुष्टि करने वाले टेस्ट का एक सेट उपलब्ध कराता है. इनकी मदद से, Wi-Fi Aware सुविधा की पुष्टि की जा सकती है. वेंडर टेस्ट सुइट (वीटीएस) का इस्तेमाल करके भी वाई-फ़ाई अवेयर की जांच की जा सकती है.

यूनिट टेस्ट

वाई-फ़ाई अवेयर पैकेज की जांच, इनका इस्तेमाल करके की जाती है:

सर्विस टेस्ट:

atest com.android.server.wifi.aware

मैनेजर टेस्ट:

atest android.net.wifi.aware

कंपैटबिलिटी टेस्ट सुइट (सीटीएस) के टेस्ट

वाई-फ़ाई अवेयर सुविधा की पुष्टि करने के लिए, सीटीएस टेस्ट का इस्तेमाल करें. CTS, इस सुविधा के चालू होने का पता लगाता है और उससे जुड़े टेस्ट अपने-आप शामिल कर लेता है.

सीटीएस टेस्ट को इनके ज़रिए ट्रिगर किया जा सकता है:

atest SingleDeviceTest

सीटीएस की पुष्टि करने वाले टूल के टेस्ट

CTS Verifier की जांच में, दो डिवाइसों का इस्तेमाल करके 'वाई-फ़ाई के बारे में जानकारी' सुविधा के काम करने के तरीके की पुष्टि की जाती है: एक जांच वाला डिवाइस और काम करने वाला डिवाइस. जांच करने के लिए, CTS Verifier खोलें और 'वाई-फ़ाई के बारे में जानकारी देने वाले टेस्ट' सेक्शन पर जाएं.