Kablosuz bağlantı düşük gecikme modu

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 bir kablosuz kilit 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 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 bağlantı 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

Düşük gecikmeli Wi-Fi 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)

Aşağıdaki işlevleri içeren bir referans uygulamayı 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. Bunu desteklemek 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 yalnızca düşük gecikme modu etkinken güç tasarrufunu 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 VTS ve CTS testlerini çalıştırın:

Manuel test

Gerekli test ekipmanı ve ortamı

Manuel test için aşağıdaki kurulum gereklidir:

  • Kablosuz erişim noktası (AP)
  • Test edilen cihaz (DUT) telefonu ve test bilgisayarı

    • Test edilen cihaz, kablosuz ağ üzerinden erişim noktasına bağlı olmalı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.
  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çidine 1 saniyelik aralıklarla 3 saat boyunca sürekli ping gönderin.

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

  4. Gecikme modu devre dışıyken 1-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 gecikme 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 adresine 1 saniyelik aralıklarla 3 saat boyunca sürekli olarak ping gönderin.

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

  4. Gecikme modu devre dışıyken 1-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 gecikme değerinin azaldığı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.