Android 10, Wi-Fi kilidi API'sini genişleterek gecikmeye duyarlı uygulamaların Wi-Fi'yi düşük gecikme modunda 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 olmalıdır.
- Uygulama, kablosuz ağ kilidi oluşturup edinmiş ve ön planda çalışıyor.
- Ekran açık olmalıdır.
Cihazlarda düşük gecikme modunu desteklemek için cihaz üreticilerinin WLAN sürücüsünü ve tedarikçi HAL'ını güncellemesi gerekir. Düşük gecikme modunda, güç tasarrufu (IEEE 802.11 standardında uyku modu 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. Tam optimizasyonlar uygulamaya özeldir.
Android'de düşük gecikme modundan ayrı bir yüksek performanslı Wi-Fi kilidi modu (API düzeyi 12'de kullanıma sunuldu) bulunur.
Uygulama
Kablosuz düşük gecikme modu özelliğini desteklemek için aşağıdaki IWifiChip işlevlerinin uygulamalarını 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 adresinde 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 gecikme modunda, güç tasarrufu Android çerçevesinde WifiLockManager tarafından açıkça devre dışı bırakılır.
Bunun desteklenmesi için WLAN sürücüsünün, güç tasarrufunu etkinleştirmek ve devre dışı bırakmak üzere NL80211 komutunu desteklemesi gerekir.
NL80211_CMD_SET_POWER_SAVE Kablosuz güç tasarrufu devre dışı bırakıldığında, kablosuz sistem uyanık durumda kalmalı ve minimum gecikmeyle paket göndermeye veya almaya hazır olmalıdır.
Özelliği devre dışı bırakma
Düşük gecikme modu özelliğini devre dışı bırakmak için AIDL HAL için getFeatureSet() veya HIDL HAL için getCapabilities_1_3() temel kodunu, capabilities & SET_LATENCY_MODE = 0 olacak şekilde güncelleyin. Burada SET_LATENCY_MODE, IWifiChip AIDL veya HIDL tanımında tanımlanır.
Bu özellik devre dışı bırakıldığında çerçeve, güç tasarrufunu yalnızca düşük gecikme modu etkinken devre dışı bırakır.
Doğrulama
Düşük gecikme modunun etkinleştirildiğinde çalıştığını test etmek için aşağıdaki otomatik testleri ve manuel ping gecikme testlerini çalıştırın.
Otomatik test
Aşağıdaki Vendor Test Suite (VTS) ve Compatibility Test Suite (CTS) testlerini çalıştırarak otomatik test gerçekleştirin:
- 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:
- Kablosuz ağ erişim noktası (AP)
- Test edilen cihaz (DUT) telefonu ve test bilgisayarı
- Test edilen cihaz, erişim noktasına kablosuz ağ üzerinden bağlanmalıdır.
- Test bilgisayarı, kablosuz ağ veya Ethernet üzerinden erişim noktasına bağlı olmalıdır.
- Test bilgisayarı, USB üzerinden DUT'a bağlı olmalıdır.
Uydu ping testi
Düşük gecikme modunu etkinleştirin.
adb root adb shell cmd wifi force-low-latency-mode enabledBilgisayarınızın Android Debug Bridge (ADB) aracılığıyla telefona bağlı olduğundan emin olun. ADB kabuğundan, 1 saniyelik aralıklarla 3 saat boyunca sürekli olarak ağ geçidine ping gönderin.
Test çıkışını bir metin dosyasına kaydedin ve ping gecikmesi test sonuçlarının histogramını oluşturmak için bir e-tablo veya Python komut dosyası kullanın.
Gecikme modu devre dışı bırakılmışken 1-3 arasındaki adımları tekrarlayın.
adb root adb shell cmd wifi force-low-latency-mode disabledDüşük gecikme modu etkinleştirildiğinde ortalama ping gecikme değerinin azaldığını doğrulamak için test sonuçlarını karşılaştırın.
İndirme bağlantısı ping testi
Düşük gecikme modunu etkinleştirin.
adb root adb shell cmd wifi force-low-latency-mode enabledTest bilgisayarının komut satırından, telefonun IP adresine 1 saniyelik aralıklarla 3 saat boyunca sürekli olarak ping gönderin.
Test çıkışını bir metin dosyasına kaydedin ve ping gecikmesi test sonuçlarının histogramını oluşturmak için bir e-tablo veya Python komut dosyası kullanın.
Gecikme modu devre dışı bırakılmışken 1-3 arasındaki adımları tekrarlayın.
adb root adb shell cmd wifi force-low-latency-mode disabledDüşük gecikme modu etkinleştirildiğinde ortalama ping gecikme değerinin azaldığını doğrulamak için test sonuçlarını karşılaştırın.
Diğer testler
Önceki testleri farklı ortamlarda tekrarlayın. Örneğin, evde veya ofiste.