Android 10 में, वाई-फ़ाई लॉक एपीआई को बेहतर बनाया गया है. इससे, कम समय में डेटा ट्रांसफ़र करने वाले ऐप्लिकेशन, वाई-फ़ाई को कम समय में डेटा ट्रांसफ़र करने वाले मोड पर कॉन्फ़िगर कर सकते हैं. लो-लेटेंसी मोड तब शुरू होता है, जब ये सभी शर्तें पूरी होती हैं:
- वाई-फ़ाई चालू हो और डिवाइस में इंटरनेट ऐक्सेस हो.
- ऐप्लिकेशन ने वाई-फ़ाई लॉक बनाया है और उसे हासिल किया है. साथ ही, यह फ़ोरग्राउंड में चल रहा है.
- स्क्रीन चालू है.
डिवाइसों पर कम-लेटेंसी मोड की सुविधा देने के लिए, डिवाइस बनाने वाली कंपनियों को WLAN ड्राइवर और वेंडर HAL को अपडेट करना होगा. कम लेटेंसी वाले मोड में, पावर सेविंग (इसे IEEE 802.11 स्टैंडर्ड में डॉज़ स्टेट भी कहा जाता है) की सुविधा को फ़्रेमवर्क बंद कर देता है. ड्राइवर और फ़र्मवेयर लेयर में स्कैनिंग और रोमिंग पैरामीटर को ऑप्टिमाइज़ किया जा सकता है, ताकि वाई-फ़ाई की लेटेन्सी को और कम किया जा सके. ऑप्टिमाइज़ेशन की सटीक जानकारी, लागू करने के तरीके पर निर्भर करती है.
Android में हाई-परफ़ॉर्मेंस वाई-फ़ाई लॉक मोड (एपीआई लेवल 12 में पेश किया गया) होता है. यह मोड, कम लेटेंसी वाले मोड से अलग होता है.
लागू करना
वाई-फ़ाई के लो-लेटेंसी मोड की सुविधा के लिए, यहां दिए गए IWifiChip
फ़ंक्शन लागू करें.
एआईडीएल एचएएल में:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
एचआईडीएल एचएएल (1.3 या इसके बाद के वर्शन) में:
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
रेफ़रंस के तौर पर लागू किए गए कोड को wifi_legacy_hal.cpp
में देखा जा सकता है. इसमें ये फ़ंक्शन शामिल हैं:
wifi_error wifi_get_supported_feature_set(wifi_interface_handle iface, feature_set *set)
wifi_error wifi_set_latency_mode(wifi_interface_handle handle, wifi_latency_mode mode)
कम इंतज़ार के समय वाले मोड में, Android फ़्रेमवर्क में WifiLockManager
की मदद से, बैटरी बचाने की सुविधा को साफ़ तौर पर बंद कर दिया जाता है.
इसके लिए, WLAN ड्राइवर को NL80211 कमांड का इस्तेमाल करने की अनुमति होनी चाहिए,
NL80211_CMD_SET_POWER_SAVE
, ताकि पावर सेव मोड को चालू और बंद किया जा सके. वाई-फ़ाई की बैटरी बचाने की सुविधा बंद होने पर, वाई-फ़ाई सिस्टम को चालू रहना चाहिए. साथ ही, कम से कम समय में पैकेट भेजने या पाने के लिए तैयार रहना चाहिए.
इस सुविधा को बंद करना
कम समय में डेटा ट्रांसफ़र करने की सुविधा बंद करने के लिए, एआईडीएल एचएएल के लिए getFeatureSet()
या एचआईडीएल एचएएल के लिए getCapabilities_1_3()
के कोड को अपडेट करें, ताकि capabilities & SET_LATENCY_MODE = 0
हो जाए. यहां SET_LATENCY_MODE
को IWifiChip
एआईडीएल या एचआईडीएल डेफ़िनिशन में तय किया गया है.
इस सुविधा के बंद होने पर, फ़्रेमवर्क सिर्फ़ तब बैटरी बचाने की सुविधा बंद करता है, जब कम इंतज़ार वाला मोड चालू हो.
Validation
यह जांच करने के लिए कि लो-लेटेंसी मोड चालू होने पर काम करता है या नहीं, यहां दिए गए ऑटोमेटेड टेस्ट और मैन्युअल पिंग लेटेंसी टेस्ट चलाएं.
अपने-आप होने वाली टेस्टिंग
ये VTS और CTS टेस्ट चलाएं:
- VTS (AIDL):
hardware/interfaces/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp
- VTS (HIDL):
hardware/interfaces/wifi/1.3/vts/functional/wifi_chip_hidl_test.cpp
- सीटीएस:
cts/tests/tests/net/src/android/net/wifi/cts/WifiLockTest.java
मैन्युअल टेस्टिंग
जांच के लिए ज़रूरी उपकरण और एनवायरमेंट
मैन्युअल टेस्टिंग के लिए, यह सेटअप ज़रूरी है:
- वाई-फ़ाई ऐक्सेस पॉइंट (एपी)
टेस्ट किया जा रहा डिवाइस (डीयूटी) फ़ोन और टेस्ट कंप्यूटर
- DUT को वाई-फ़ाई के ज़रिए ऐक्सेस पॉइंट से कनेक्ट करना ज़रूरी है.
- टेस्ट कंप्यूटर को वाई-फ़ाई या ईथरनेट के ज़रिए ऐक्सेस पॉइंट से कनेक्ट किया जाना चाहिए.
- टेस्ट कंप्यूटर को यूएसबी के ज़रिए DUT से कनेक्ट किया जाना चाहिए.
अपलिंक पिंग टेस्ट
लो-लेटेंसी मोड चालू करें.
adb root
adb shell cmd wifi force-low-latency-mode enabled
पक्का करें कि आपका कंप्यूटर, ADB के ज़रिए फ़ोन से कनेक्ट हो. ADB शेल से, गेटवे को तीन घंटे तक लगातार पिंग करें. इसके लिए, एक सेकंड का इंटरवल रखें.
जांच के आउटपुट को किसी टेक्स्ट फ़ाइल में सेव करें. इसके बाद, पिंग लेटेन्सी की जांच के नतीजों का हिस्टोग्राम जनरेट करने के लिए, स्प्रेडशीट या Python स्क्रिप्ट का इस्तेमाल करें.
इंतज़ार का समय कम करने वाले मोड को बंद करके, पहले से लेकर तीसरे चरण को दोहराएं.
adb root
adb shell cmd wifi force-low-latency-mode disabled
टेस्ट के नतीजों की तुलना करें. इससे यह पक्का किया जा सकेगा कि लो-लेटेंसी मोड चालू होने पर, पिंग के इंतज़ार के समय की औसत वैल्यू कम हो गई है.
डाउनलिंक पिंग टेस्ट
लो-लेटेंसी मोड चालू करें.
adb root
adb shell cmd wifi force-low-latency-mode enabled
टेस्ट कंप्यूटर की कमांड लाइन से, फ़ोन के आईपी पते को एक सेकंड के अंतराल पर तीन घंटे तक लगातार पिंग करें.
जांच के आउटपुट को किसी टेक्स्ट फ़ाइल में सेव करें. इसके बाद, पिंग लेटेन्सी की जांच के नतीजों का हिस्टोग्राम जनरेट करने के लिए, स्प्रेडशीट या Python स्क्रिप्ट का इस्तेमाल करें.
इंतज़ार का समय कम करने वाले मोड को बंद करके, पहले से लेकर तीसरे चरण को दोहराएं.
adb root
adb shell cmd wifi force-low-latency-mode disabled
टेस्ट के नतीजों की तुलना करें. इससे यह पक्का किया जा सकेगा कि लो-लेटेंसी मोड चालू होने पर, पिंग के इंतज़ार के समय की औसत वैल्यू कम हो गई है.
अन्य टेस्ट
ऊपर दिए गए टेस्ट को अलग-अलग एनवायरमेंट में दोहराएं. उदाहरण के लिए, घर पर या ऑफ़िस में.