מצב זמן אחזור קצר ב-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() עבור AIDL HAL או של getCapabilities_1_3() עבור HIDL HAL, כך ש-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 קטן יותר כשמפעילים את המצב של זמן אחזור קצר.

בדיקות אחרות

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