Android 10 mở rộng API khoá Wi-Fi để cho phép các ứng dụng nhạy cảm với độ trễ định cấu hình Wi-Fi sang chế độ có độ trễ thấp. Chế độ độ trễ thấp bắt đầu khi đáp ứng tất cả các điều kiện sau:
- Wi-Fi đang bật và thiết bị có quyền truy cập Internet.
- Ứng dụng đã tạo và nhận được một khoá Wi-Fi, đồng thời đang chạy ở nền trước.
- Màn hình đang bật.
Để hỗ trợ chế độ có độ trễ thấp trên các thiết bị, nhà sản xuất thiết bị phải cập nhật trình điều khiển WLAN và HAL của nhà cung cấp. Ở chế độ có độ trễ thấp, chế độ tiết kiệm pin (còn được gọi là trạng thái chờ trong tiêu chuẩn IEEE 802.11) sẽ bị khung hình tắt một cách rõ ràng. Bạn có thể tối ưu hoá các thông số quét và chuyển vùng trong các lớp trình điều khiển và chương trình cơ sở để giảm thêm độ trễ Wi-Fi. Việc tối ưu hoá chính xác là dành riêng cho việc triển khai.
Android có một chế độ khoá Wi-Fi hiệu suất cao (ra mắt ở API cấp 12) tách biệt với chế độ có độ trễ thấp.
Triển khai
Để hỗ trợ tính năng chế độ có độ trễ thấp của Wi-Fi, hãy cung cấp các phương thức triển khai cho các hàm IWifiChip
sau.
Trong HAL AIDL:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
Trong HIDL HAL (1.3 trở lên):
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
Bạn có thể tìm thấy một cách triển khai tham chiếu trong wifi_legacy_hal.cpp
với các hàm sau:
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)
Ở chế độ có độ trễ thấp, tính năng tiết kiệm pin sẽ bị WifiLockManager
vô hiệu hoá một cách rõ ràng trong khung Android.
Để hỗ trợ tính năng này, trình điều khiển WLAN phải hỗ trợ lệnh NL80211, NL80211_CMD_SET_POWER_SAVE
, để bật và tắt chế độ tiết kiệm pin. Khi chế độ tiết kiệm pin Wi-Fi bị tắt, hệ thống Wi-Fi phải ở trạng thái hoạt động và sẵn sàng gửi hoặc nhận các gói với độ trễ tối thiểu.
Tắt tính năng này
Để tắt tính năng chế độ có độ trễ thấp, hãy cập nhật mã cơ bản của getFeatureSet()
cho AIDL HAL hoặc getCapabilities_1_3()
cho HIDL HAL, sao cho capabilities & SET_LATENCY_MODE = 0
, trong đó SET_LATENCY_MODE
được xác định trong định nghĩa IWifiChip
AIDL hoặc HIDL.
Khi tính năng này bị tắt, khung sẽ chỉ tắt chế độ tiết kiệm pin khi chế độ có độ trễ thấp đang hoạt động.
Xác nhận kết quả
Để kiểm thử xem chế độ có độ trễ thấp có hoạt động khi được bật hay không, hãy chạy các kiểm thử tự động và kiểm thử độ trễ ping thủ công sau đây.
Kiểm thử tự động
Chạy các kiểm thử VTS và CTS sau:
- 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
Kiểm thử theo cách thủ công
Thiết bị và môi trường thử nghiệm bắt buộc
Để kiểm thử thủ công, bạn cần thiết lập như sau:
- Điểm truy cập (AP) Wi-Fi
Điện thoại là thiết bị đang thử nghiệm (DUT) và máy tính thử nghiệm
- DUT phải được kết nối với điểm truy cập qua Wi-Fi.
- Máy tính thử nghiệm phải được kết nối với điểm truy cập qua Wi-Fi hoặc Ethernet.
- Máy tính kiểm thử phải được kết nối với DUT qua USB.
Kiểm tra ping đường lên
Bật chế độ độ trễ thấp.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Đảm bảo máy tính được kết nối với điện thoại thông qua ADB. Trong shell ADB, hãy liên tục ping cổng trong 3 giờ với khoảng thời gian 1 giây.
Lưu kết quả kiểm tra vào một tệp văn bản và sử dụng bảng tính hoặc tập lệnh Python để tạo biểu đồ tần suất của kết quả kiểm tra độ trễ ping.
Lặp lại các bước từ 1 đến 3 khi tắt chế độ độ trễ.
adb root
adb shell cmd wifi force-low-latency-mode disabled
So sánh kết quả kiểm tra để đảm bảo giá trị độ trễ ping trung bình giảm khi bạn bật chế độ có độ trễ thấp.
Kiểm tra ping đường xuống
Bật chế độ độ trễ thấp.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Từ dòng lệnh của máy tính kiểm thử, hãy liên tục ping địa chỉ IP của điện thoại trong 3 giờ với khoảng thời gian 1 giây.
Lưu kết quả kiểm tra vào một tệp văn bản và sử dụng bảng tính hoặc tập lệnh Python để tạo biểu đồ tần suất của kết quả kiểm tra độ trễ ping.
Lặp lại các bước từ 1 đến 3 khi tắt chế độ độ trễ.
adb root
adb shell cmd wifi force-low-latency-mode disabled
So sánh kết quả kiểm tra để đảm bảo giá trị độ trễ ping trung bình giảm khi bạn bật chế độ có độ trễ thấp.
Các cảnh báo thử nghiệm khác
Lặp lại các kiểm thử trên trong nhiều môi trường. Ví dụ: ở nhà hoặc tại văn phòng.