โหมด Wi-Fi เวลาแฝงต่ำ

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 ต่อไปนี้:

การทดสอบด้วยตนเอง

อุปกรณ์ทดสอบและสภาพแวดล้อมที่จำเป็น

สำหรับการทดสอบด้วยตนเอง จำเป็นต้องมีการตั้งค่าต่อไปนี้:

  • จุดเชื่อมต่อ Wi-Fi (AP)
  • โทรศัพท์อุปกรณ์อยู่ระหว่างการทดสอบ (DUT) และคอมพิวเตอร์ทดสอบ

    • DUT จะต้องเชื่อมต่อกับจุดเข้าใช้งานผ่าน Wi-Fi
    • คอมพิวเตอร์ทดสอบต้องเชื่อมต่อกับจุดเข้าใช้งานผ่าน Wi-Fi หรืออีเทอร์เน็ต
    • คอมพิวเตอร์ทดสอบต้องเชื่อมต่อกับ DUT ผ่าน USB
  1. เปิดใช้งานโหมดเวลาแฝงต่ำ

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. ตรวจสอบให้แน่ใจว่าคอมพิวเตอร์ของคุณเชื่อมต่อกับโทรศัพท์ผ่าน ADB จากเชลล์ ADB ให้ ping เกตเวย์อย่างต่อเนื่องเป็นเวลา 3 ชั่วโมงในช่วงเวลา 1 วินาที

  3. บันทึกผลลัพธ์การทดสอบในไฟล์ข้อความและใช้สเปรดชีตหรือสคริปต์ Python เพื่อสร้างฮิสโตแกรมของผลการทดสอบเวลาแฝงของ Ping

  4. ทำซ้ำขั้นตอนที่ 1 ถึง 3 โดยปิดใช้งานโหมดเวลาแฝง

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. เปรียบเทียบผลการทดสอบเพื่อให้แน่ใจว่าค่าเวลาแฝงในการ Ping โดยเฉลี่ยจะลดลงเมื่อเปิดใช้งานโหมดเวลาแฝงต่ำ

  1. เปิดใช้งานโหมดเวลาแฝงต่ำ

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. จากบรรทัดคำสั่งของคอมพิวเตอร์ทดสอบ ให้ ping ที่อยู่ IP ของโทรศัพท์อย่างต่อเนื่องเป็นเวลา 3 ชั่วโมงในช่วงเวลา 1 วินาที

  3. บันทึกผลลัพธ์การทดสอบในไฟล์ข้อความและใช้สเปรดชีตหรือสคริปต์ Python เพื่อสร้างฮิสโตแกรมของผลการทดสอบเวลาแฝงของ Ping

  4. ทำซ้ำขั้นตอนที่ 1 ถึง 3 โดยปิดใช้งานโหมดเวลาแฝง

    adb root
    adb shell cmd wifi force-low-latency-mode disabled
    
  5. เปรียบเทียบผลการทดสอบเพื่อให้แน่ใจว่าค่าเวลาแฝงในการ Ping โดยเฉลี่ยจะลดลงเมื่อเปิดใช้งานโหมดเวลาแฝงต่ำ

การทดสอบอื่น ๆ

ทำการทดสอบข้างต้นซ้ำในสภาพแวดล้อมที่แตกต่างกัน เช่น ที่บ้านหรือที่ทำงาน