Android 10 memperluas Wi-Fi lock API untuk memungkinkan aplikasi yang sensitif terhadap latensi mengonfigurasi Wi-Fi ke mode latensi rendah. Mode latensi rendah dimulai saat semua kondisi berikut terpenuhi:
- Wi-Fi diaktifkan dan perangkat memiliki akses internet.
- Aplikasi telah membuat dan mendapatkan kunci Wi-Fi, serta berjalan di latar depan.
- Layar aktif.
Untuk mendukung mode latensi rendah di perangkat, produsen perangkat harus mengupdate driver WLAN dan HAL vendor. Dalam mode latensi rendah, hemat daya (juga dikenal sebagai status istirahat dalam standar IEEE 802.11) dinonaktifkan secara eksplisit oleh framework. Parameter pemindaian dan roaming di lapisan driver dan firmware dapat dioptimalkan untuk mengurangi latensi Wi-Fi lebih lanjut. Pengoptimalan yang tepat bergantung pada penerapan.
Android memiliki mode penguncian Wi-Fi berperforma tinggi (diperkenalkan di level API 12) yang terpisah dari mode latensi rendah.
Implementasi
Untuk mendukung fitur mode latensi rendah Wi-Fi, berikan penerapan untuk
fungsi IWifiChip
berikut.
Di AIDL HAL:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
Di HIDL HAL (1.3 atau yang 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 dinonaktifkan secara eksplisit oleh
WifiLockManager
di framework Android.
Untuk mendukung hal ini, driver WLAN harus mendukung perintah NL80211,
NL80211_CMD_SET_POWER_SAVE
, untuk mengaktifkan dan menonaktifkan hemat daya. Jika hemat daya Wi-Fi dinonaktifkan, sistem Wi-Fi harus tetap dalam status aktif dan siap mengirim atau menerima paket dengan penundaan minimal.
Nonaktifkan fitur
Untuk menonaktifkan fitur mode latensi rendah, perbarui kode pokok
getFeatureSet()
untuk HAL AIDL atau
getCapabilities_1_3()
untuk HAL HIDL,
sehingga capabilities & SET_LATENCY_MODE = 0
, dengan
SET_LATENCY_MODE
ditentukan dalam definisi AIDL atau HIDL IWifiChip
.
Jika fitur ini dinonaktifkan, framework hanya menonaktifkan penghemat daya saat mode latensi rendah aktif.
Validasi
Untuk menguji apakah mode latensi rendah berfungsi saat diaktifkan, jalankan pengujian otomatis berikut dan pengujian latensi ping manual.
Pengujian otomatis
Jalankan pengujian 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 dan lingkungan pengujian yang diperlukan
Untuk pengujian manual, penyiapan berikut diperlukan:
- Titik akses (AP) Wi-Fi
Ponsel perangkat yang diuji (DUT) dan komputer pengujian
- DUT harus terhubung ke titik akses melalui Wi-Fi.
- Komputer pengujian harus terhubung ke titik akses melalui Wi-Fi atau Ethernet.
- Komputer pengujian harus terhubung ke DUT melalui USB.
Uji 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 secara terus-menerus selama 3 jam dengan interval 1 detik.
Simpan output pengujian dalam file teks dan gunakan spreadsheet atau skrip Python untuk membuat histogram hasil pengujian latensi ping.
Ulangi langkah 1 hingga 3 dengan menonaktifkan mode latensi.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Bandingkan hasil pengujian untuk memastikan nilai latensi ping rata-rata berkurang saat mode latensi rendah diaktifkan.
Uji ping downlink
Aktifkan mode latensi rendah.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Dari command line komputer pengujian, ping alamat IP ponsel secara terus-menerus selama 3 jam dengan interval 1 detik.
Simpan output pengujian dalam file teks dan gunakan spreadsheet atau skrip Python untuk membuat histogram hasil pengujian latensi ping.
Ulangi langkah 1 hingga 3 dengan menonaktifkan mode latensi.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Bandingkan hasil pengujian untuk memastikan nilai latensi ping rata-rata berkurang saat mode latensi rendah diaktifkan.
Pengujian lainnya
Ulangi pengujian di atas di lingkungan yang berbeda. Misalnya, di rumah atau di kantor.