Android 10 ขยาย API การล็อค 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 (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/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 เพื่อสร้างฮิสโตแกรมของผลการทดสอบเวลาแฝงของ Ping
ทำซ้ำขั้นตอนที่ 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 เพื่อสร้างฮิสโตแกรมของผลการทดสอบเวลาแฝงของ Ping
ทำซ้ำขั้นตอนที่ 1 ถึง 3 โดยปิดใช้งานโหมดเวลาแฝง
adb root
adb shell cmd wifi force-low-latency-mode disabled
เปรียบเทียบผลการทดสอบเพื่อให้แน่ใจว่าค่าเวลาแฝงในการ Ping โดยเฉลี่ยจะลดลงเมื่อเปิดใช้งานโหมดเวลาแฝงต่ำ
การทดสอบอื่น ๆ
ทำการทดสอบข้างต้นซ้ำในสภาพแวดล้อมที่แตกต่างกัน เช่น ที่บ้านหรือที่ทำงาน