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

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 और इससे पुराने वर्शन में, वेंडर एचएएल इंटरफ़ेस को एचआईडीएल का इस्तेमाल करके तय किया जाता है.

Wi-Fi Aware सुविधा का इस्तेमाल करने के लिए, Wi-Fi इंटरफ़ेस का इस्तेमाल करें. यह इस बात पर निर्भर करता है कि कौनसे इंटरफ़ेस को लागू किया गया है. यह इनमें से कोई एक हो सकता है:

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

एआईडीएल और एचआईडीएल इंटरफ़ेस के साथ, लेगसी Wi-Fi एचएएल कैसे काम करता है, यह देखने के लिए: hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h.

लागू करना

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

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

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

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

    WIFI_HIDL_FEATURE_AWARE := true
    
  • device.mk में मौजूद device/<oem>/<device> में, 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
    

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

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

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

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

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

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

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

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

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

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

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

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

सत्यापन

Android, Wi-Fi Aware सुविधा की पुष्टि करने के लिए, यूनिट टेस्ट, Compatibility Test Suite (CTS) टेस्ट, और सीटीएस की पुष्टि करने वाले टूल के टेस्ट का सेट उपलब्ध कराता है. Wi-Fi Aware की जांच, Vendor Test Suite (VTS) का इस्तेमाल करके भी की जा सकती है.

यूनिट टेस्ट

Wi-Fi Aware पैकेज के टेस्ट, इनका इस्तेमाल करके किए जाते हैं:

सेवा के टेस्ट:

atest com.android.server.wifi.aware

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

atest android.net.wifi.aware

Compatibility Test Suite (CTS) टेस्ट

Wi-Fi Aware सुविधा की पुष्टि करने के लिए, सीटीएस टेस्ट का इस्तेमाल करें. सीटीएस को पता चलता है कि सुविधा कब चालू है. साथ ही, यह उससे जुड़े टेस्ट को अपने-आप शामिल कर लेता है.

सीटीएस टेस्ट, इनका इस्तेमाल करके ट्रिगर किए जा सकते हैं:

atest SingleDeviceTest

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

सीटीएस की पुष्टि करने वाले टूल के टेस्ट, दो डिवाइसों का इस्तेमाल करके, Wi-Fi Aware के व्यवहार की पुष्टि करते हैं: एक टेस्ट डिवाइस और एक सही तरीके से काम करने वाला डिवाइस. टेस्ट चलाने के लिए, सीटीएस की पुष्टि करने वाला टूल खोलें और Wi-Fi Aware टेस्ट वाले सेक्शन पर जाएं.