מצב זמן אחזור קצר ב-Wi-Fi

ב-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:

בדיקה ידנית

ציוד וסביבת בדיקה נדרשים

כדי לבצע בדיקות ידניות, צריך להגדיר את הדברים הבאים:

  • נקודת גישה (AP) ל-Wi-Fi
  • טלפון של מכשיר שנבדק (DUT) ומחשב לבדיקה

    • מכשיר ה-DUT צריך להיות מחובר לנקודת הגישה דרך Wi-Fi.
    • המחשב שבו מתבצעת הבדיקה צריך להיות מחובר לנקודת הגישה באמצעות Wi-Fi או Ethernet.
    • מחשב הבדיקה צריך להיות מחובר למכשיר הנבדק באמצעות USB.
  1. מפעילים את מצב זמן האחזור המהיר.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
  2. מוודאים שהמחשב מחובר לטלפון באמצעות ADB. ממעטפת ADB, שולחים פינג ל-gateway ברציפות למשך 3 שעות במרווחי זמן של שנייה אחת.

  3. שומרים את פלט הבדיקה בקובץ טקסט ומשתמשים בגיליון אלקטרוני או בסקריפט Python כדי ליצור היסטוגרמה של תוצאות בדיקת זמן האחזור של הפינג.

  4. חוזרים על שלבים 1 עד 3 כשההגדרה 'מצב השהיה' מושבתת.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
  5. משווים את תוצאות הבדיקה כדי לוודא שהערך הממוצע של זמן האחזור של הפינג יורד כשמפעילים את מצב זמן האחזור הנמוך.

  1. מפעילים את מצב זמן טעינה קצר.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
  2. משורת הפקודה של המחשב לבדיקה, שולחים פינג לכתובת ה-IP של הטלפון ברציפות למשך 3 שעות במרווחי זמן של שנייה אחת.

  3. שומרים את פלט הבדיקה בקובץ טקסט ומשתמשים בגיליון אלקטרוני או בסקריפט Python כדי ליצור היסטוגרמה של תוצאות בדיקת זמן האחזור של הפינג.

  4. חוזרים על שלבים 1 עד 3 כשההגדרה 'מצב השהיה' מושבתת.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
  5. משווים את תוצאות הבדיקה כדי לוודא שהערך הממוצע של זמן האחזור של הפינג יורד כשמפעילים את מצב זמן האחזור הנמוך.

בדיקות אחרות

חוזרים על הבדיקות שלמעלה בסביבות שונות. לדוגמה, בבית או במשרד.