Android 10 estende l'API Wi-Fi Lock per consentire sensibili alla latenza per configurare il Wi-Fi bassa latenza . La modalità a bassa latenza viene avviata quando tutte le seguenti condizioni sono soddisfatte:
- Il Wi-Fi è attivo e il dispositivo ha accesso a internet.
- L'app ha creato e acquisito un blocco Wi-Fi ed è in esecuzione in in primo piano.
- Lo schermo è acceso.
Per supportare la modalità a bassa latenza sui dispositivi, i produttori devono aggiornare la Driver WLAN e fornitore HAL. In modalità a bassa latenza, il risparmio energetico (noto anche come stato di sospensione nello standard IEEE 802.11) è esplicitamente disattivato dal framework. I parametri di scansione e roaming nei livelli driver e firmware possono essere ottimizzate per ridurre ulteriormente la latenza Wi-Fi. Le ottimizzazioni esatte sono specifico per l'implementazione.
Android ha un modalità di blocco del Wi-Fi ad alte prestazioni (introdotta nel livello API 12) che è separata dalla modalità a bassa latenza.
Implementazione
Per supportare la funzionalità della modalità a bassa latenza Wi-Fi, fornisci implementazioni per
le seguenti funzioni di IWifiChip
.
Nell'AIDL HAL:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
Nell'HIDL HAL (1.3 o versioni successive):
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
Un'implementazione di riferimento è disponibile in
wifi_legacy_hal.cpp
con le seguenti funzioni:
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)
In modalità a bassa latenza, il risparmio energetico è disabilitato esplicitamente dal
WifiLockManager
nel framework Android.
A questo scopo, il driver WLAN deve supportare il comando NL80211,
NL80211_CMD_SET_POWER_SAVE
, per attivare e disattivare il risparmio energetico. Quando viene alimentata la connessione Wi-Fi
salvataggio è disabilitato, il sistema Wi-Fi deve rimanere attivo ed essere pronto a
inviare o ricevere pacchetti con un ritardo minimo.
Disattiva la funzionalità
Per disattivare la funzionalità della modalità a bassa latenza, aggiorna il codice sottostante di
getFeatureSet()
per AIDL HAL oppure
getCapabilities_1_3()
per l'HIDL HAL,
in modo che capabilities & SET_LATENCY_MODE = 0
, dove
SET_LATENCY_MODE
è definito nella definizione di IWifiChip
AIDL o HIDL.
Quando questa funzionalità è disattivata,
il framework disabilita il risparmio energetico solo quando è attiva la modalità a bassa latenza.
Convalida
Per verificare che la modalità a bassa latenza funzioni quando è abilitata, esegui il seguente comando automatico e test manuali di latenza dei ping.
Test automatici
Esegui i seguenti test VTS e CTS:
- 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
Test manuale
Ambiente e apparecchiature di test richiesti
Per i test manuali, è richiesta la seguente configurazione:
- Punto di accesso Wi-Fi (AP)
Smartphone e computer di test del dispositivo sotto il test (DUT)
- Il DUT deve essere connesso al punto di accesso tramite Wi-Fi.
- Il computer di prova deve essere collegato al punto di accesso tramite Wi-Fi oppure o Ethernet.
- Il computer di prova deve essere collegato al DUT tramite USB.
Test ping dell'uplink
Attiva la modalità a bassa latenza.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Assicurati che il computer sia collegato allo smartphone tramite ADB. Da shell ADB, invia un ping al gateway continuamente per 3 ore a 1 secondo intervalli.
Salva l'output del test in un file di testo e utilizza un foglio di lavoro o un file Python per generare un istogramma dei risultati del test di latenza del ping.
Ripeti i passaggi da 1 a 3 con la modalità di latenza disabilitata.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Confronta i risultati del test per assicurarti che il valore medio di latenza del ping sia ridotta quando viene abilitata la modalità a bassa latenza.
Test ping di downlink
Abilita la modalità a bassa latenza.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Dalla riga di comando del computer di prova, invia un ping all'indirizzo IP del telefono per 3 ore a intervalli di 1 secondo.
Salva l'output del test in un file di testo e utilizza un foglio di lavoro o un file Python per generare un istogramma dei risultati del test di latenza del ping.
Ripeti i passaggi da 1 a 3 con la modalità di latenza disabilitata.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Confronta i risultati del test per assicurarti che il valore medio di latenza del ping sia ridotta quando viene abilitata la modalità a bassa latenza.
Altri test
Ripeti i test sopra riportati in ambienti diversi. Ad esempio, in a casa o in ufficio.