Android 10 ขยาย API การล็อก Wi-Fi เพื่อให้ แอปที่ไวต่อเวลาในการตอบสนองสำหรับการกำหนดค่า Wi-Fi ไปยัง เวลาในการตอบสนองต่ำ โหมด โหมดเวลาในการตอบสนองต่ำจะเริ่มเมื่อเป็นไปตามเงื่อนไขทั้งหมดต่อไปนี้
- Wi-Fi เปิดใช้อยู่และอุปกรณ์มีการเชื่อมต่ออินเทอร์เน็ต
- แอปได้สร้างและรับการล็อก Wi-Fi และกำลังทำงานใน เบื้องหน้า
- หน้าจอเปิดอยู่
ผู้ผลิตอุปกรณ์จะต้องอัปเดตฟังก์ชันเพื่อรองรับโหมดเวลาในการตอบสนองต่ำในอุปกรณ์ ไดรเวอร์ WLAN และ HAL ของผู้ให้บริการ ในโหมดเวลาในการตอบสนองต่ำ โหมดประหยัดพลังงาน (หรือที่เรียกว่า สถานะ Doze ในมาตรฐาน IEEE 802.11) ถูกปิดใช้อย่างชัดแจ้งโดยเฟรมเวิร์ก พารามิเตอร์การสแกนและโรมมิ่งในเลเยอร์ไดรเวอร์และเฟิร์มแวร์อาจ ได้รับการเพิ่มประสิทธิภาพเพื่อลดเวลาในการตอบสนองของ Wi-Fi การเพิ่มประสิทธิภาพที่ถูกต้อง ในการใช้งานโดยเฉพาะ
Android มี โหมดล็อก 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
ปิดการบันทึกอยู่ ระบบ Wi-Fi ต้องอยู่ในสถานะเปิดหน้าจอ และพร้อมที่จะ
ส่งหรือรับแพ็กเก็ตด้วยการหน่วงเวลาขั้นต่ำ
ปิดใช้ฟีเจอร์
หากต้องการปิดฟีเจอร์โหมดเวลาในการตอบสนองต่ำ ให้อัปเดตโค้ดเบื้องหลังของ
getFeatureSet()
สำหรับ AIDL HAL หรือ
getCapabilities_1_3()
สำหรับ HIDL HAL
เช่น capabilities & SET_LATENCY_MODE = 0
โดยที่
SET_LATENCY_MODE
ระบุไว้ในคำจำกัดความของ IWifiChip
AIDL หรือ HIDL
เมื่อปิดใช้ฟีเจอร์นี้
เฟรมเวิร์กจะปิดใช้การประหยัดพลังงานเฉพาะเมื่อโหมดเวลาในการตอบสนองต่ำทำงานอยู่
การตรวจสอบความถูกต้อง
หากต้องการทดสอบว่าโหมดเวลาในการตอบสนองต่ำทำงานได้เมื่อเปิดใช้ ให้เรียกใช้โหมดอัตโนมัติต่อไปนี้ และการทดสอบเวลาในการตอบสนอง ping ด้วยตนเอง
การทดสอบอัตโนมัติ
เรียกใช้การทดสอบ 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 หรือ อีเทอร์เน็ต
- คอมพิวเตอร์ทดสอบต้องเชื่อมต่อกับ DUT ผ่าน USB
การทดสอบ ping ของอัปลิงก์
เปิดใช้โหมดเวลาในการตอบสนองต่ำ
adb root
adb shell cmd wifi force-low-latency-mode enabled
ตรวจสอบว่าคอมพิวเตอร์เชื่อมต่อกับโทรศัพท์ผ่าน ADB จาก เชลล์ ADB โดยใช้คำสั่ง ping กับเกตเวย์อย่างต่อเนื่องเป็นเวลา 3 ชั่วโมงใน 1 วินาที เป็นรอบ
บันทึกเอาต์พุตทดสอบในไฟล์ข้อความและใช้สเปรดชีตหรือ Python เพื่อสร้างฮิสโตแกรมของผลการทดสอบเวลาในการตอบสนองของปิง
ทำขั้นตอนที่ 1 ถึง 3 ซ้ำโดยปิดใช้โหมดเวลาในการตอบสนอง
adb root
adb shell cmd wifi force-low-latency-mode disabled
เปรียบเทียบผลการทดสอบเพื่อให้แน่ใจว่าค่าเวลาในการตอบสนองของปิงโดยเฉลี่ยเท่ากับ ลดลงเมื่อเปิดใช้โหมดเวลาในการตอบสนองต่ำ
การทดสอบ ping ของลิงก์ขาลง
เปิดใช้โหมดเวลาในการตอบสนองต่ำ
adb root
adb shell cmd wifi force-low-latency-mode enabled
จากบรรทัดคำสั่งของคอมพิวเตอร์ทดสอบ ใช้คำสั่ง ping กับ IP ของโทรศัพท์ อย่างต่อเนื่องเป็นเวลา 3 ชั่วโมงในช่วงเวลา 1 วินาที
บันทึกเอาต์พุตทดสอบในไฟล์ข้อความและใช้สเปรดชีตหรือ Python เพื่อสร้างฮิสโตแกรมของผลการทดสอบเวลาในการตอบสนองของปิง
ทำขั้นตอนที่ 1 ถึง 3 ซ้ำโดยปิดใช้โหมดเวลาในการตอบสนอง
adb root
adb shell cmd wifi force-low-latency-mode disabled
เปรียบเทียบผลการทดสอบเพื่อให้แน่ใจว่าค่าเวลาในการตอบสนองของปิงโดยเฉลี่ยเท่ากับ ลดลงเมื่อเปิดใช้โหมดเวลาในการตอบสนองต่ำ
การทดสอบอื่นๆ
ทำการทดสอบข้างต้นซ้ำในสภาพแวดล้อมต่างๆ ตัวอย่างเช่น ที่ ที่บ้านหรือที่ทำงาน