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