Android 10 mở rộng API khoá Wi-Fi để cho phép các ứng dụng nhạy cảm về độ trễ định cấu hình Wi-Fi ở chế độ độ trễ thấp. Chế độ độ trễ thấp sẽ 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à mua khoá Wi-Fi, đồng thời đang chạy ở nền trước.
- Màn hình đang bật.
Để hỗ trợ chế độ độ trễ thấp trên 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ế độ độ trễ thấp, khung tiết kiệm pin (còn gọi là trạng thái ngủ trong tiêu chuẩn IEEE 802.11) bị tắt một cách rõ ràng. Bạn có thể tối ưu hoá các tham số quét và chuyển vùng trong trình điều khiển và lớp firmware để giảm thêm độ trễ Wi-Fi. Các biện pháp tối ưu hoá chính xác là dành riêng cho quá trình triển khai.
Android có chế độ khoá Wi-Fi hiệu suất cao (được ra mắt trong API cấp 12) tách biệt với chế độ độ trễ thấp.
Triển khai
Để hỗ trợ tính năng chế độ độ 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 AIDL HAL:
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 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ế độ độ trễ thấp, tính năng tiết kiệm pin bị tắt một cách rõ ràng bởi WifiLockManager
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 thức và sẵn sàng gửi hoặc nhận gói với độ trễ tối thiểu.
Tắt tính năng này
Để tắt tính năng chế độ độ 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, chẳng hạn như 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ế độ độ trễ thấp đang hoạt động.
Xác nhận kết quả
Để kiểm tra xem chế độ độ trễ thấp có hoạt động khi được bật hay không, hãy chạy các bài kiểm thử tự động sau và kiểm thử độ trễ ping theo cách thủ công.
Kiểm thử tự động
Chạy các bài 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 cần có
Để kiểm thử thủ công, bạn cần thiết lập như sau:
- Điểm truy cập Wi-Fi (AP)
Điện thoại đang được kiểm thử (DUT) và máy tính kiểm thử
- 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 qua ADB. Từ shell ADB, ping cổng vào liên tục trong 3 giờ với mỗi lần ngắt quãng 1 giây.
Lưu kết quả kiểm thử dưới dạng 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 đồ của kết quả kiểm thử độ 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 thử để đảm bảo rằng giá trị độ trễ ping trung bình giảm khi bật chế độ độ trễ thấp.
Kiểm tra ping đường liên kết
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 ping địa chỉ IP của điện thoại liên tục trong 3 giờ với khoảng thời gian 1 giây.
Lưu kết quả kiểm thử 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 đồ về kết quả kiểm thử độ 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 thử để đảm bảo rằng giá trị độ trễ ping trung bình giảm khi bật chế độ độ trễ thấp.
Các cảnh báo thử nghiệm khác
Lặp lại các bài kiểm thử trên trong nhiều môi trường. Ví dụ: ở nhà hoặc ở văn phòng.