Android 10, Wi-Fi Lock API'yi genişleterek gecikmeye duyarlı uygulamaların kablosuz ağı düşük gecikme moduna yapılandırmasına olanak tanır. Düşük gecikme modu, aşağıdaki koşulların tümü karşılandığında başlar:
- Kablosuz bağlantı etkinleştirilmiş ve cihazın internet erişimi var.
- Uygulama, kablosuz ağ kilidi oluşturup edinmiş ve ön planda çalışıyor.
- Ekran açık.
Cihaz üreticilerinin, cihazlarda düşük gecikmeli modu desteklemek için kablosuz ağ sürücüsünü ve tedarikçi HAL'i güncellemesi gerekir. Düşük gecikme modunda, güç tasarrufu (IEEE 802.11 standardında doz durumu olarak da bilinir) çerçeve tarafından açıkça devre dışı bırakılır. Sürücü ve donanım yazılımı katmanlarındaki tarama ve dolaşım parametreleri, kablosuz ağ gecikmesini daha da azaltmak için optimize edilebilir. Kesin optimizasyonlar uygulamaya özgüdür.
Android'de, düşük gecikmeli moddan ayrı bir yüksek performanslı kablosuz kilit modu (API düzeyi 12'de kullanıma sunulmuştur) vardır.
Uygulama
Kablosuz ağ düşük gecikmeli mod özelliğini desteklemek için aşağıdaki IWifiChip
işlevleri için uygulamalar sağlayın.
AIDL HAL'de:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
HIDL HAL'de (1.3 veya daha yeni):
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
Referans uygulamayı, aşağıdaki işlevlerle birlikte wifi_legacy_hal.cpp
bölümünde bulabilirsiniz:
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)
Düşük gecikmeli modda, Android çerçevesindeki WifiLockManager
tarafından güç tasarrufu açıkça devre dışı bırakılır.
Bunu desteklemek için WLAN sürücüsü, NL80211 komutunu (NL80211_CMD_SET_POWER_SAVE
) destekleyerek güç tasarrufu özelliğini etkinleştirip devre dışı bırakmalıdır. Kablosuz güç tasarrufu devre dışı bırakıldığında kablosuz sistem uyanık durumda kalmalıdır ve minimum gecikmeyle paket göndermeye veya almaya hazır olmalıdır.
Özelliği devre dışı bırakma
Düşük gecikmeli mod özelliğini devre dışı bırakmak için AIDL HAL için getFeatureSet()
veya HIDL HAL için getCapabilities_1_3()
'in temel kodunu, SET_LATENCY_MODE
'ın IWifiChip
AIDL veya HIDL tanımında tanımlandığı şekilde capabilities & SET_LATENCY_MODE = 0
olacak şekilde güncelleyin.
Bu özellik devre dışı bırakıldığında, altyapı yalnızca düşük gecikmeli mod etkinken güç tasarrufunu devre dışı bırakır.
Doğrulama
Düşük gecikmeli modun etkinleştirildiğinde çalıştığını test etmek için aşağıdaki otomatik testleri ve manuel ping gecikmesi testlerini çalıştırın.
Otomatik test
Aşağıdaki VTS ve CTS testlerini çalıştırın:
- 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
Manuel test
Gerekli test ekipmanı ve ortamı
Manuel test için aşağıdaki kurulum gereklidir:
- Wi-Fi erişim noktası (AP)
Test edilen cihaz (DUT) telefon ve test bilgisayarı
- DUT, erişim noktasına kablosuz ağ üzerinden bağlı olmalıdır.
- Test bilgisayarı, erişim noktasına kablosuz ağ veya Ethernet üzerinden bağlı olmalıdır.
- Test bilgisayarı USB üzerinden DUT'ye bağlı olmalıdır.
Uplink ping testi
Düşük gecikme modunu etkinleştirin.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Bilgisayarınızın ADB üzerinden telefona bağlı olduğundan emin olun. ADB kabuğundan ağ geçidini 3 saat boyunca 1 saniyelik aralıklarla sürekli olarak pingleyin.
Test çıkışını bir metin dosyasına kaydedin ve ping gecikmesi testi sonuçlarının histogramını oluşturmak için bir e-tablo veya Python komut dosyası kullanın.
Gecikme modu devre dışıyken 1 ile 3 arasındaki adımları tekrarlayın.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Düşük gecikme modu etkinleştirildiğinde ortalama ping gecikmesi değerinin azaldığından emin olmak için test sonuçlarını karşılaştırın.
Aşağı bağlantı ping testi
Düşük gecikme modunu etkinleştirin.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Test bilgisayarının komut satırından telefonun IP adresini 1 saniyelik aralıklarla 3 saat boyunca sürekli olarak pingleyin.
Test çıktısını bir metin dosyasına kaydedin ve ping gecikmesi test sonuçlarının histogramini oluşturmak için bir e-tablo veya Python komut dosyası kullanın.
Gecikme modu devre dışıyken 1 ile 3 arasındaki adımları tekrarlayın.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Düşük gecikme modu etkinleştirildiğinde ortalama ping gecikmesi değerinin azaltıldığından emin olmak için test sonuçlarını karşılaştırın.
Diğer testler
Yukarıdaki testleri farklı ortamlarda tekrarlayın. Örneğin, evde veya ofiste.