ב-Android 10 הורחבה ה-API של נעילת Wi-Fi כדי לאפשר לאפליקציות שרגישות לזמן אחזור להגדיר את ה-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.
כשהתכונה הזו מושבתת, המסגרת משביתה את חיסכון האנרגיה רק כשמצב זמן האחזור הנמוך פעיל.
אימות
כדי לבדוק אם מצב זמן האחזור הנמוך פועל כשהוא מופעל, מריצים את הבדיקות האוטומטיות הבאות ואת בדיקות זמן האחזור הידניות של ה-ping.
בדיקה אוטומטית
מריצים את בדיקות 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 או אתרנט.
- מחשב הבדיקה צריך להיות מחובר ל-DUT דרך USB.
בדיקת פינג של קישור uplink
הפעלת מצב זמן אחזור קצר.
adb root
adb shell cmd wifi force-low-latency-mode enabled
מוודאים שהמחשב מחובר לטלפון דרך ADB. ממעטפת ADB, שולחים הודעות ping לשער באופן רציף במשך 3 שעות במרווחי זמן של שנייה אחת.
שומרים את פלט הבדיקה בקובץ טקסט ומשתמשים בגיליון אלקטרוני או בסקריפט Python כדי ליצור היסטוגרמה של תוצאות הבדיקה של זמן האחזור של ה-ping.
חוזרים על שלבים 1 עד 3 כשמצב זמן האחזור מושבת.
adb root
adb shell cmd wifi force-low-latency-mode disabled
משווים בין תוצאות הבדיקה כדי לוודא שזמן האחזור הממוצע של ה-ping מצטמצם כשמפעילים את המצב של זמן אחזור קצר.
בדיקת פינג של נתונים יורדים
הפעלת מצב זמן אחזור מהיר.
adb root
adb shell cmd wifi force-low-latency-mode enabled
משורת הפקודה במחשב הבדיקה, לבצע פינג לכתובת ה-IP של הטלפון באופן רציף במשך 3 שעות במרווחי זמן של שנייה אחת.
שומרים את פלט הבדיקה בקובץ טקסט ומשתמשים בגיליון אלקטרוני או בסקריפט Python כדי ליצור היסטוגרמה של תוצאות הבדיקה של זמן האחזור של ה-ping.
חוזרים על שלבים 1 עד 3 כשמצב זמן האחזור מושבת.
adb root
adb shell cmd wifi force-low-latency-mode disabled
משווים בין תוצאות הבדיקה כדי לוודא שזמן האחזור הממוצע של ה-ping מצטמצם כשמפעילים את המצב של זמן אחזור קצר.
בדיקות אחרות
חוזרים על הבדיקות שלמעלה בסביבות שונות. לדוגמה, בבית או במשרד.