Android 10 memperluas API kunci Wi-Fi untuk memungkinkan aplikasi yang sensitif terhadap latensi mengonfigurasi Wi-Fi ke mode latensi rendah . Mode latensi rendah dimulai ketika seluruh kondisi berikut terpenuhi:
- Wi-Fi diaktifkan dan perangkat memiliki akses internet.
- Aplikasi telah membuat dan memperoleh kunci Wi-Fi, dan berjalan di latar depan.
- Layar menyala.
Untuk mendukung mode latensi rendah pada perangkat, produsen perangkat harus memperbarui driver WLAN dan HAL vendor. Dalam mode latensi rendah, penghematan daya (juga dikenal sebagai status istirahat dalam standar IEEE 802.11) secara eksplisit dinonaktifkan oleh kerangka kerja. Parameter pemindaian dan roaming di lapisan driver dan firmware dapat dioptimalkan untuk lebih mengurangi latensi Wi-Fi. Pengoptimalan yang tepat bersifat spesifik untuk implementasi.
Android memiliki mode kunci Wi-Fi berperforma tinggi (diperkenalkan di API level 12) yang terpisah dari mode latensi rendah.
Penerapan
Untuk mendukung fitur mode latensi rendah Wi-Fi, berikan implementasi untuk fungsi IWifiChip
berikut.
Di HAL AIDL:
-
int getFeatureSet()
-
void setLatencyMode(in LatencyMode mode)
Di HIDL HAL (1.3 atau lebih baru):
-
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
-
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
Implementasi referensi dapat ditemukan di wifi_legacy_hal.cpp
dengan fungsi berikut:
-
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)
Dalam mode latensi rendah, penghematan daya secara eksplisit dinonaktifkan oleh WifiLockManager
dalam framework Android. Untuk mendukung hal ini, driver WLAN harus mendukung perintah NL80211, NL80211_CMD_SET_POWER_SAVE
, untuk mengaktifkan dan menonaktifkan penghematan daya. Ketika penghematan daya Wi-Fi dinonaktifkan, sistem Wi-Fi harus tetap dalam kondisi terjaga dan siap mengirim atau menerima paket dengan penundaan minimum.
Menonaktifkan fitur tersebut
Untuk mematikan fitur mode latensi rendah, perbarui kode dasar getFeatureSet()
untuk AIDL HAL atau getCapabilities_1_3()
untuk HIDL HAL, sedemikian rupa sehingga capabilities & SET_LATENCY_MODE = 0
, dengan SET_LATENCY_MODE
didefinisikan dalam definisi IWifiChip
AIDL atau HIDL . Ketika fitur ini dinonaktifkan, kerangka kerja menonaktifkan penghematan daya hanya ketika mode latensi rendah aktif.
Validasi
Untuk menguji apakah mode latensi rendah berfungsi saat diaktifkan, jalankan pengujian otomatis dan pengujian latensi ping manual berikut.
Pengujian otomatis
Jalankan tes VTS dan CTS berikut:
- 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
Pengujian manual
Peralatan uji dan lingkungan yang diperlukan
Untuk pengujian manual, pengaturan berikut diperlukan:
- Titik akses Wi-Fi (AP)
Telepon dan komputer uji yang sedang diuji perangkatnya (DUT).
- DUT harus terhubung ke titik akses melalui Wi-Fi.
- Komputer uji harus terhubung ke titik akses melalui Wi-Fi atau Ethernet.
- Komputer uji harus terhubung ke DUT melalui USB.
Tes ping uplink
Aktifkan mode latensi rendah.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Pastikan komputer Anda terhubung dengan ponsel melalui ADB. Dari shell ADB, ping gateway terus menerus selama 3 jam dengan interval 1 detik.
Simpan keluaran pengujian dalam file teks dan gunakan spreadsheet atau skrip Python untuk menghasilkan histogram hasil pengujian latensi ping.
Ulangi langkah 1 hingga 3 dengan mode latensi dinonaktifkan.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Bandingkan hasil pengujian untuk memastikan bahwa nilai latensi ping rata-rata berkurang ketika mode latensi rendah diaktifkan.
Tes ping downlink
Aktifkan mode latensi rendah.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Dari baris perintah komputer uji, ping alamat IP ponsel secara terus menerus selama 3 jam dengan interval 1 detik.
Simpan keluaran pengujian dalam file teks dan gunakan spreadsheet atau skrip Python untuk menghasilkan histogram hasil pengujian latensi ping.
Ulangi langkah 1 hingga 3 dengan mode latensi dinonaktifkan.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Bandingkan hasil pengujian untuk memastikan bahwa nilai latensi ping rata-rata berkurang ketika mode latensi rendah diaktifkan.
Tes lainnya
Ulangi pengujian di atas di lingkungan yang berbeda. Misalnya saja di rumah atau di kantor.