حالت تاخیر کم Wi-Fi

Android 10 API قفل Wi-Fi را گسترش می‌دهد تا به برنامه‌های حساس به تأخیر اجازه دهد Wi-Fi را در حالت تأخیر کم پیکربندی کنند. حالت تاخیر کم زمانی شروع می شود که تمام شرایط زیر برآورده شود:

  • Wi-Fi فعال است و دستگاه به اینترنت دسترسی دارد.
  • این برنامه یک قفل Wi-Fi ایجاد کرده و به دست آورده است و در پیش زمینه در حال اجرا است.
  • صفحه نمایش روشن است.

برای پشتیبانی از حالت تاخیر کم در دستگاه ها، سازندگان دستگاه باید درایور WLAN و فروشنده HAL را به روز کنند. در حالت تأخیر کم، صرفه جویی در انرژی (که در استاندارد IEEE 802.11 نیز به عنوان حالت doze شناخته می شود) به صراحت توسط چارچوب غیرفعال می شود. پارامترهای اسکن و رومینگ در لایه های درایور و میان افزار را می توان برای کاهش بیشتر تأخیر وای فای بهینه کرد. بهینه سازی های دقیق پیاده سازی خاص هستند.

اندروید دارای یک حالت قفل 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 Power Save غیرفعال است ، سیستم Wi-Fi باید در حالت بیدار بماند و آماده ارسال یا دریافت بسته هایی با حداقل تأخیر باشد.

ویژگی را غیرفعال کنید

برای خاموش کردن ویژگی حالت تاخیر کم، کد زیربنایی getFeatureSet() برای AIDL HAL یا getCapabilities_1_3() برای HIDL HAL به‌روزرسانی کنید، به طوری که capabilities & SET_LATENCY_MODE = 0 ، که در آن SET_LATENCY_MODE در تعریف HIDL یا IWifiChip تعریف شده است. . هنگامی که این ویژگی غیرفعال است ، Framework فقط در صورت فعال بودن حالت کم تأخیر ، باعث صرفه جویی در برق می شود.

اعتبار سنجی

برای آزمایش این که حالت کم تأخیر در هنگام فعال کردن کار می کند ، تست های خودکار زیر و تست های تأخیر پینگ دستی را انجام دهید.

تست خودکار

تست های VTS و CTS زیر را اجرا کنید:

تست دستی

تجهیزات و محیط آزمایش مورد نیاز

برای آزمایش دستی ، تنظیم زیر مورد نیاز است:

  • نقطه دسترسی Wi-Fi (AP)
  • تلفن و رایانه آزمایشی دستگاه تحت آزمایش (DUT).

    • DUT باید به نقطه دسترسی از طریق Wi-Fi متصل شود.
    • رایانه آزمایشی باید به نقطه دسترسی از طریق Wi-Fi یا اترنت وصل شود.
    • رایانه آزمایشی باید از طریق USB به DUT متصل شود.
  1. حالت تأخیر کم را فعال کنید.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. اطمینان حاصل کنید که رایانه شما از طریق ADB با تلفن وصل شده است. از پوسته ADB ، به مدت 3 ساعت در 1 فواصل دوم به طور مداوم دروازه را پینگ کنید.

  3. خروجی تست را در یک فایل متنی ذخیره کرده و از صفحه گسترده یا اسکریپت پایتون برای تولید هیستوگرام از نتایج تست تأخیر پینگ استفاده کنید.

  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 ساعت در فواصل 1 ثانیه پینگ کنید.

  3. خروجی تست را در یک فایل متنی ذخیره کرده و از صفحه گسترده یا اسکریپت پایتون برای تولید هیستوگرام از نتایج تست تأخیر پینگ استفاده کنید.

  4. مراحل 1 تا 3 را با حالت تأخیر غیرفعال کنید.

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. نتایج آزمون را با هم مقایسه کنید تا اطمینان حاصل شود که در هنگام فعال شدن حالت کم تأخیر ، مقدار تأخیر پینگ کاهش می یابد.

تست های دیگر

آزمایش های فوق را در محیط های مختلف تکرار کنید. مثلا در خانه یا اداره.