Kablosuz düşük gecikme modu

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:

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.
  1. Düşük gecikme modunu etkinleştirin.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. 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.

  3. 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.

  4. 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
    
  5. 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.

  1. Düşük gecikme modunu etkinleştirin.

    adb root
    adb shell cmd wifi force-low-latency-mode enabled
    
  2. Test bilgisayarının komut satırından telefonun IP adresini 1 saniyelik aralıklarla 3 saat boyunca sürekli olarak pingleyin.

  3. 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.

  4. 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
    
  5. 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.