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

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

ב-HAL של AIDL:

  • 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() עבור HAL של AIDL או של getCapabilities_1_3() עבור HAL של HIDL, כך ש-capabilities & SET_LATENCY_MODE = 0, כאשר SET_LATENCY_MODE מוגדר בהגדרה IWifiChip של AIDL או של HIDL. כשהתכונה הזו מושבתת, המסגרת משביתה את חיסכון האנרגיה רק כשמצב זמן האחזור הנמוך פעיל.

אימות

כדי לבדוק אם מצב זמן האחזור הנמוך פועל כשהוא מופעל, מריצים את הבדיקות האוטומטיות הבאות ואת בדיקות זמן האחזור הידניות של ה-ping.

בדיקה אוטומטית

מריצים את בדיקות ה-VTS וה-CTS הבאות:

בדיקה ידנית

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

לבדיקות ידניות, נדרשת ההגדרה הבאה:

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

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

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

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

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

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

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

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

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

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

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

בדיקות אחרות

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