Android 10 memperluas Wi-Fi lock API untuk memungkinkan yang sensitif terhadap latensi untuk mengonfigurasi Wi-Fi ke sebuah latensi rendah mode. Mode latensi rendah dimulai saat semua 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 aktif.
Untuk mendukung mode latensi rendah pada perangkat, produsen perangkat harus memperbarui Driver WLAN dan HAL vendor. Dalam mode latensi rendah, hemat daya (juga dikenal sebagai status istirahatkan 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 adalah spesifik per implementasi.
Android memiliki mode kunci Wi-Fi berperforma tinggi (diperkenalkan di API level 12) yang terpisah dari mode latensi rendah.
Implementasi
Untuk mendukung fitur mode latensi rendah Wi-Fi, sediakan implementasi untuk
fungsi IWifiChip
berikut.
Di HAL AIDL:
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, hemat daya dinonaktifkan secara eksplisit oleh
WifiLockManager
dalam framework Android.
Untuk mendukung hal ini, {i>driver<i} WLAN
harus mendukung perintah NL80211,
NL80211_CMD_SET_POWER_SAVE
, untuk mengaktifkan dan menonaktifkan mode hemat daya. Saat Wi-Fi dinyalakan
dinonaktifkan, sistem Wi-Fi harus tetap dalam keadaan aktif dan siap untuk
mengirim atau menerima
paket dengan penundaan minimum.
Nonaktifkan fitur
Untuk menonaktifkan fitur mode latensi rendah, perbarui kode dasar
getFeatureSet()
untuk AIDL HAL atau
getCapabilities_1_3()
untuk HIDL HAL,
sehingga capabilities & SET_LATENCY_MODE = 0
, dengan
SET_LATENCY_MODE
ditentukan dalam definisi IWifiChip
AIDL atau HIDL.
Ketika fitur ini dinonaktifkan,
framework akan menonaktifkan penghematan daya hanya jika mode latensi rendah sedang aktif.
Validasi
Untuk menguji apakah mode latensi rendah berfungsi saat diaktifkan, jalankan pengujian dan pengujian latensi ping manual.
Pengujian otomatis
Jalankan uji 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 dan komputer uji yang sedang diuji (DUT)
- DUT harus terhubung ke titik akses melalui Wi-Fi.
- Komputer uji coba harus terhubung ke titik akses melalui Wi-Fi, atau Eternet.
- Komputer uji coba harus terhubung ke DUT melalui USB.
Pengujian 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, melakukan ping ke gateway secara terus-menerus selama 3 jam dalam 1 detik dengan interval tertentu.
Simpan output pengujian dalam file teks dan gunakan spreadsheet atau Python untuk menghasilkan histogram dari hasil uji latensi ping.
Ulangi langkah 1 sampai 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 dikurangi saat mode latensi rendah diaktifkan.
Pengujian ping downlink
Aktifkan mode latensi rendah.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Dari command line komputer uji, ping IP ponsel alamat secara terus-menerus selama 3 jam dengan interval 1 detik.
Simpan output pengujian dalam file teks dan gunakan spreadsheet atau Python untuk menghasilkan histogram dari hasil uji latensi ping.
Ulangi langkah 1 sampai 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 dikurangi saat mode latensi rendah diaktifkan.
Pengujian lainnya
Ulangi pengujian di atas di lingkungan yang berbeda. Misalnya, di di rumah atau di kantor.