Android 10 ขยาย Wi-Fi Lock API เพื่อให้ แอปที่ไวต่อเวลาในการตอบสนองสามารถกำหนดค่า Wi-Fi เป็น โหมดเวลาในการตอบสนองต่ำ ได้ โหมดค่าความหน่วงต่ำจะเริ่มทำงานเมื่อเป็นไปตามเงื่อนไขทั้งหมดต่อไปนี้
- Wi-Fi เปิดใช้งานอยู่และอุปกรณ์เชื่อมต่ออินเทอร์เน็ตได้
- แอปสร้างและรับ Wi-Fi Lock แล้ว และกำลังทำงานอยู่เบื้องหน้า
- หน้าจอเปิดอยู่
หากต้องการรองรับโหมดค่าความหน่วงต่ำในอุปกรณ์ ผู้ผลิตอุปกรณ์ต้องอัปเดตไดรเวอร์ WLAN และ HAL ของผู้ผลิต ในโหมดค่าความหน่วงต่ำ เฟรมเวิร์กจะปิดใช้งานการประหยัดพลังงานอย่างชัดเจน (หรือที่เรียกว่าสถานะ Doze ในมาตรฐาน IEEE 802.11) คุณสามารถเพิ่มประสิทธิภาพพารามิเตอร์การสแกนและการโรมมิ่งในเลเยอร์ไดรเวอร์และเฟิร์มแวร์เพื่อลดเวลาในการตอบสนองของ Wi-Fi เพิ่มเติมได้ การเพิ่มประสิทธิภาพที่แน่นอนจะขึ้นอยู่กับการใช้งาน
Android มี โหมด Wi-Fi Lock ประสิทธิภาพสูง (เปิดตัวในระดับ 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 ด้วยตนเอง
การทดสอบอัตโนมัติ
ทำการทดสอบอัตโนมัติโดยเรียกใช้การทดสอบ Vendor Test Suite (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ตรวจสอบว่าคอมพิวเตอร์เชื่อมต่อกับโทรศัพท์ผ่าน Android Debug Bridge (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 โดยเฉลี่ยลดลงเมื่อเปิดใช้โหมดค่าความหน่วงต่ำ
การทดสอบอื่นๆ
ทำซ้ำการทดสอบก่อนหน้าในสภาพแวดล้อมต่างๆ เช่น ที่บ้านหรือในสำนักงาน