ב-Android 10, ה-Wi-Fi lock API הורחב כדי לאפשר לאפליקציות שרגישות לזמן האחזור להגדיר את ה-Wi-Fi למצב של זמן אחזור נמוך. מצב זמן טעינה קצר מתחיל כשכל התנאים הבאים מתקיימים:
- ה-Wi-Fi מופעל ולמכשיר יש גישה לאינטרנט.
- האפליקציה יצרה וקיבלה נעילת Wi-Fi, והיא פועלת בחזית.
- המסך מופעל.
כדי לתמוך במצב של השהיה נמוכה במכשירים, יצרני המכשירים צריכים לעדכן את מנהל ההתקן של ה-WLAN ואת ה-HAL של הספק. במצב השהיה נמוכה, המסגרת משביתה באופן מפורש את החיסכון באנרגיה (שנקרא גם מצב שינה בתקן IEEE 802.11). אפשר לבצע אופטימיזציה של פרמטרי הסריקה והנדידה בשכבות של מנהל ההתקן והקושחה כדי להפחית עוד יותר את זמן האחזור של ה-Wi-Fi. האופטימיזציות המדויקות תלויות בהטמעה.
ל-Android יש מצב נעילת Wi-Fi עם ביצועים גבוהים (שהושק ב-API ברמה 12) שהוא נפרד ממצב זמן האחזור הנמוך.
הטמעה
כדי לתמוך בתכונה 'מצב Wi-Fi עם השהיה נמוכה', צריך לספק הטמעות של IWifiChip
הפונקציות הבאות.
ב-AIDL HAL:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
ב-HIDL HAL (גרסה 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)
במצב השהיה נמוכה, חיסכון בחשמל מושבת באופן מפורש על ידי
WifiLockManager
במסגרת Android.
כדי לתמוך בכך, מנהל ההתקן של ה-WLAN צריך לתמוך בפקודה NL80211, NL80211_CMD_SET_POWER_SAVE
, כדי להפעיל ולהשבית את החיסכון באנרגיה. כשמשביתים את החיסכון בצריכת החשמל של ה-Wi-Fi, מערכת ה-Wi-Fi צריכה להישאר במצב פעיל ומוכנה לשלוח או לקבל מנות עם עיכוב מינימלי.
השבתת התכונה
כדי להשבית את התכונה 'מצב השהיה נמוכה', צריך לעדכן את קוד הבסיס של getFeatureSet()
עבור AIDL HAL או של getCapabilities_1_3()
עבור HIDL HAL, כך ש-capabilities & SET_LATENCY_MODE = 0
, כאשר SET_LATENCY_MODE
מוגדר בהגדרת IWifiChip
AIDL או HIDL.
כשהתכונה הזו מושבתת,
המסגרת משביתה את החיסכון באנרגיה רק כשמצב ההשהיה הנמוכה פעיל.
אימות
כדי לבדוק שמצב זמן האחזור הנמוך פועל כשמפעילים אותו, מריצים את הבדיקות האוטומטיות הבאות ואת בדיקות זמן האחזור הידניות של פינג.
בדיקות אוטומטיות
מריצים את הבדיקות הבאות של 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:
cts/tests/tests/net/src/android/net/wifi/cts/WifiLockTest.java
בדיקה ידנית
ציוד וסביבת בדיקה נדרשים
כדי לבצע בדיקות ידניות, צריך להגדיר את הדברים הבאים:
- נקודת גישה (AP) ל-Wi-Fi
טלפון של מכשיר שנבדק (DUT) ומחשב לבדיקה
- מכשיר ה-DUT צריך להיות מחובר לנקודת הגישה דרך Wi-Fi.
- המחשב שבו מתבצעת הבדיקה צריך להיות מחובר לנקודת הגישה באמצעות Wi-Fi או Ethernet.
- מחשב הבדיקה צריך להיות מחובר למכשיר הנבדק באמצעות USB.
בדיקת פינג של העלאה
מפעילים את מצב זמן האחזור המהיר.
adb root
adb shell cmd wifi force-low-latency-mode enabled
מוודאים שהמחשב מחובר לטלפון באמצעות ADB. ממעטפת ADB, שולחים פינג ל-gateway ברציפות למשך 3 שעות במרווחי זמן של שנייה אחת.
שומרים את פלט הבדיקה בקובץ טקסט ומשתמשים בגיליון אלקטרוני או בסקריפט Python כדי ליצור היסטוגרמה של תוצאות בדיקת זמן האחזור של הפינג.
חוזרים על שלבים 1 עד 3 כשההגדרה 'מצב השהיה' מושבתת.
adb root
adb shell cmd wifi force-low-latency-mode disabled
משווים את תוצאות הבדיקה כדי לוודא שהערך הממוצע של זמן האחזור של הפינג יורד כשמפעילים את מצב זמן האחזור הנמוך.
בדיקת פינג של קישור Downlink
מפעילים את מצב זמן טעינה קצר.
adb root
adb shell cmd wifi force-low-latency-mode enabled
משורת הפקודה של המחשב לבדיקה, שולחים פינג לכתובת ה-IP של הטלפון ברציפות למשך 3 שעות במרווחי זמן של שנייה אחת.
שומרים את פלט הבדיקה בקובץ טקסט ומשתמשים בגיליון אלקטרוני או בסקריפט Python כדי ליצור היסטוגרמה של תוצאות בדיקת זמן האחזור של הפינג.
חוזרים על שלבים 1 עד 3 כשההגדרה 'מצב השהיה' מושבתת.
adb root
adb shell cmd wifi force-low-latency-mode disabled
משווים את תוצאות הבדיקה כדי לוודא שהערך הממוצע של זמן האחזור של הפינג יורד כשמפעילים את מצב זמן האחזור הנמוך.
בדיקות אחרות
חוזרים על הבדיקות שלמעלה בסביבות שונות. לדוגמה, בבית או במשרד.