Android 10 ขยาย Wi-Fi Lock API เพื่ออนุญาตให้แอปที่ไวต่อเวลาในการตอบสนองกำหนดค่า 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 (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 จะต้องอยู่ในสถานะตื่นอยู่เสมอและพร้อมที่จะส่งหรือรับแพ็กเก็ตโดยมีความล่าช้าน้อยที่สุด
WifiLockManager
ปิดใช้ฟีเจอร์
หากต้องการปิดฟีเจอร์โหมดเวลาในการตอบสนองต่ำ ให้อัปเดตโค้ดพื้นฐานของ 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 ต้องเชื่อมต่อกับจุดเข้าใช้งานผ่าน Wi-Fi
- คอมพิวเตอร์ที่ใช้ทดสอบต้องเชื่อมต่อกับจุดเข้าใช้งานผ่าน Wi-Fi หรืออีเทอร์เน็ต
- คอมพิวเตอร์ทดสอบต้องเชื่อมต่อกับ DUT ผ่าน USB
การทดสอบ Ping ของลิงก์ขาขึ้น
เปิดใช้โหมดความหน่วงต่ำ
adb root
adb shell cmd wifi force-low-latency-mode enabled
ตรวจสอบว่าคอมพิวเตอร์เชื่อมต่อกับโทรศัพท์ผ่าน ADB แล้ว จากเชลล์ ADB ให้ ping เกตเวย์อย่างต่อเนื่องเป็นเวลา 3 ชั่วโมงโดยเว้นช่วงเวลา 1 วินาที
บันทึกเอาต์พุตการทดสอบเป็นไฟล์ข้อความ และใช้สเปรดชีตหรือสคริปต์ Python เพื่อสร้างผังความถี่ของผลลัพธ์การทดสอบเวลาในการตอบสนองของคําสั่ง ping
ทำตามขั้นตอนที่ 1-3 ซ้ำโดยปิดใช้โหมดเวลาในการตอบสนอง
adb root
adb shell cmd wifi force-low-latency-mode disabled
เปรียบเทียบผลลัพธ์การทดสอบเพื่อให้แน่ใจว่าค่าเวลาในการตอบสนองโดยเฉลี่ยของ ping ลดลงเมื่อเปิดใช้โหมดเวลาในการตอบสนองต่ำ
การทดสอบ Ping ของดาวน์ลิงก์
เปิดใช้โหมดความหน่วงต่ำ
adb root
adb shell cmd wifi force-low-latency-mode enabled
จากบรรทัดคำสั่งของคอมพิวเตอร์ที่ใช้ทดสอบ ให้ ping ที่อยู่ IP ของโทรศัพท์อย่างต่อเนื่องเป็นเวลา 3 ชั่วโมงโดยเว้นระยะ 1 วินาที
บันทึกเอาต์พุตการทดสอบเป็นไฟล์ข้อความ และใช้สเปรดชีตหรือสคริปต์ Python เพื่อสร้างผังความถี่ของผลลัพธ์การทดสอบเวลาในการตอบสนองของคําสั่ง ping
ทำตามขั้นตอนที่ 1-3 ซ้ำโดยปิดใช้โหมดเวลาในการตอบสนอง
adb root
adb shell cmd wifi force-low-latency-mode disabled
เปรียบเทียบผลลัพธ์การทดสอบเพื่อให้แน่ใจว่าค่าเวลาในการตอบสนองโดยเฉลี่ยของ ping ลดลงเมื่อเปิดใช้โหมดเวลาในการตอบสนองต่ำ
การทดสอบอื่นๆ
ทําการทดสอบข้างต้นซ้ำในสภาพแวดล้อมต่างๆ เช่น ที่บ้านหรือที่ทำงาน