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 ở chế độ độ 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 được bật và thiết bị có quyền truy cập Internet.
- Ứng dụng đã tạo và có được 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, tính năng tiết kiệm pin (còn gọi là trạng thái ngủ gật trong tiêu chuẩn IEEE 802.11) sẽ bị tắt rõ ràng theo khung. Bạn có thể tối ưu hoá các tham số quét và chuyển vùng trong các lớp trình điều khiển và phần sụn để giảm thêm độ trễ của Wi-Fi. Các chế độ tối ưu hoá chính xác là dành riêng cho việc triển khai.
Android có chế độ khoá Wi-Fi hiệu suất cao (ra mắt trong cấp độ API 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 cách 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 sẽ bị
WifiLockManager
tắt 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 tính năng tiết kiệm pin. Khi tính năng tiết kiệm pin của 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,
sao cho capabilities & SET_LATENCY_MODE = 0, trong đó
SET_LATENCY_MODE được xác định trong định nghĩa AIDL hoặc HIDL IWifiChip.
Khi tính năng này bị tắt, khung sẽ chỉ tắt tính năng tiết kiệm pin khi chế độ độ trễ thấp đang hoạt động.
Xác nhận kết quả
Để kiểm thử rằng chế độ độ trễ thấp hoạt động khi được bật, hãy chạy các bài kiểm thử tự động và kiểm thử độ trễ ping theo cách thủ công sau.
Kiểm thử tự động
Thực hiện kiểm thử tự động bằng cách chạy các bài kiểm thử Bộ kiểm thử nhà cung cấp (VTS) và Bộ kiểm tra tính tương thích (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 kiểm thử bắt buộc
Để kiểm thử theo cách 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 thiết bị đang 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 kiểm thử 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 thử 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ủa bạn được kết nối với điện thoại thông qua Cầu gỡ lỗi Android (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 thử vào một tệp văn bản rồi 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 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 disabledSo sánh kết quả kiểm thử để xác minh rằng giá trị độ trễ ping trung bình giảm khi bật chế độ độ trễ thấp.
Kiểm thử ping đường xuống
Bật chế độ độ trễ thấp.
adb root adb shell cmd wifi force-low-latency-mode enabledTừ 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 thử vào một tệp văn bản rồi 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 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 disabledSo sánh kết quả kiểm thử để xác minh 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ước đó trong các môi trường khác nhau. Ví dụ: ở nhà hoặc tại văn phòng.