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
در چارچوب اندروید غیرفعال شده است. برای پشتیبانی از این، درایور 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
در تعریف HIDL یا IWifiChip
تعریف شده است. . هنگامی که این ویژگی غیرفعال است، چارچوب صرفه جویی در مصرف انرژی را فقط زمانی غیرفعال می کند که حالت تاخیر کم فعال باشد.
اعتبار سنجی
برای آزمایش اینکه حالت کم تأخیر در صورت فعال بودن کار میکند، آزمایشهای خودکار زیر و آزمایشهای تأخیر پینگ دستی را اجرا کنید.
تست خودکار
تست های 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
تست دستی
تجهیزات و محیط آزمایش مورد نیاز
برای تست دستی، تنظیمات زیر مورد نیاز است:
- نقطه دسترسی Wi-Fi (AP)
تلفن و رایانه آزمایشی دستگاه تحت آزمایش (DUT).
- DUT باید از طریق Wi-Fi به نقطه دسترسی متصل شود.
- رایانه آزمایشی باید از طریق Wi-Fi یا اترنت به نقطه دسترسی متصل باشد.
- کامپیوتر تست باید از طریق USB به DUT متصل شود.
تست پینگ آپلینک
حالت تأخیر کم را فعال کنید.
adb root
adb shell cmd wifi force-low-latency-mode enabled
مطمئن شوید که رایانه شما از طریق ADB به تلفن متصل است. از پوسته ADB، دروازه را به طور مداوم به مدت 3 ساعت در فواصل زمانی 1 ثانیه پینگ کنید.
خروجی تست را در یک فایل متنی ذخیره کنید و از یک صفحه گسترده یا یک اسکریپت پایتون برای ایجاد یک هیستوگرام از نتایج آزمون تاخیر پینگ استفاده کنید.
مراحل 1 تا 3 را با غیرفعال بودن حالت تأخیر تکرار کنید.
adb root
adb shell cmd wifi force-low-latency-mode disabled
نتایج آزمایش را با هم مقایسه کنید تا مطمئن شوید که مقدار تأخیر متوسط پینگ با فعال کردن حالت تأخیر کم کاهش مییابد.
تست پینگ داون لینک
حالت تاخیر کم را فعال کنید.
adb root
adb shell cmd wifi force-low-latency-mode enabled
از خط فرمان رایانه آزمایشی، آدرس IP تلفن را به طور مداوم به مدت 3 ساعت در فواصل زمانی 1 ثانیه پینگ کنید.
خروجی تست را در یک فایل متنی ذخیره کنید و از یک صفحه گسترده یا یک اسکریپت پایتون برای ایجاد یک هیستوگرام از نتایج آزمون تاخیر پینگ استفاده کنید.
مراحل 1 تا 3 را با غیرفعال بودن حالت تأخیر تکرار کنید.
adb root
adb shell cmd wifi force-low-latency-mode disabled
نتایج آزمایش را با هم مقایسه کنید تا مطمئن شوید که مقدار تأخیر متوسط پینگ با فعال کردن حالت تأخیر کم کاهش مییابد.
تست های دیگر
تست های فوق را در محیط های مختلف تکرار کنید. مثلا در خانه یا اداره.