Android 10 étend l'API Wi-Fi Lock pour permettre sensibles à la latence pour configurer le Wi-Fi sur faible latence mode. Le mode à faible latence démarre lorsque toutes les conditions suivantes sont remplies:
- Le Wi-Fi est activé et l'appareil dispose d'un accès à Internet.
- L'application a créé et acquis un verrouillage Wi-Fi, et s'exécute dans le au premier plan.
- L'écran est allumé.
Pour prendre en charge le mode à faible latence sur les appareils, les fabricants doivent mettre à jour le Pilote WLAN et fournisseur HAL. En mode à faible latence, le mode Économie d'énergie l'état Sommeil de la norme IEEE 802.11) est explicitement désactivé par le framework. Les paramètres d'analyse et d'itinérance des couches du pilote et du micrologiciel optimisés pour réduire davantage la latence Wi-Fi. Les optimisations exactes sont spécifiques à la mise en œuvre.
Android a un mode verrouillé Wi-Fi hautes performances (introduit au niveau d'API 12), qui est distinct du mode à faible latence.
Implémentation
Pour prendre en charge le mode Wi-Fi à faible latence, fournissez des implémentations pour
les fonctions IWifiChip
suivantes.
Dans AIDL HAL:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
Dans HIDL HAL (version 1.3 ou ultérieure):
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
Vous trouverez une implémentation de référence dans
wifi_legacy_hal.cpp
avec les fonctions suivantes:
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)
En mode à faible latence, l'économiseur d'énergie est explicitement désactivé par
WifiLockManager
dans le framework Android.
Pour prendre en charge cela, le pilote WLAN doit
prendre en charge la commande NL80211,
NL80211_CMD_SET_POWER_SAVE
, pour activer et désactiver le mode Économie d'énergie. Lorsque l'alimentation Wi-Fi
l'enregistrement est désactivé, le système Wi-Fi doit rester activé et prêt à
d'envoyer ou de recevoir des paquets
avec un délai minimal.
Désactiver la fonctionnalité
Pour désactiver le mode à faible latence, mettez à jour le code sous-jacent de
getFeatureSet()
pour le HAL AIDL ou
getCapabilities_1_3()
pour le HIDL HAL,
de sorte que capabilities & SET_LATENCY_MODE = 0
, où
SET_LATENCY_MODE
est défini dans la définition IWifiChip
AIDL ou HIDL.
Lorsque cette fonctionnalité est désactivée,
le framework ne désactive l'économie d'énergie que lorsque le mode à faible latence est actif.
Validation
Pour tester le fonctionnement du mode à faible latence lorsqu'il est activé, exécutez la commande et les tests manuels de latence ping.
Tests automatiques
Exécutez les tests VTS et CTS suivants:
- 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
Tests manuels
Équipement et environnement de test requis
Pour les tests manuels, la configuration suivante est requise:
- Point d'accès Wi-Fi (PA)
Appareil sous test (DUT) et ordinateur de test
- L'appareil testé doit être connecté au point d'accès via le Wi-Fi.
- L'ordinateur de test doit être connecté au point d'accès via le Wi-Fi ou Ethernet.
- L'ordinateur de test doit être connecté à l'appareil testé via USB.
Test ping pour les liaisons montantes
Activez le mode à faible latence.
adb root
adb shell cmd wifi force-low-latency-mode enabled
Assurez-vous que votre ordinateur est connecté au téléphone via ADB. De le shell ADB, pinguez la passerelle en continu pendant 3 heures à 1 seconde. à intervalles réguliers.
Enregistrez le résultat du test dans un fichier texte et utilisez une feuille de calcul pour générer un histogramme des résultats du test de latence ping.
Répétez les étapes 1 à 3 avec le mode de latence désactivé.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Comparez les résultats des tests pour vous assurer que la valeur de latence moyenne des pings est réduit lorsque le mode à faible latence est activé.
Test ping (lien descendant)
Activez le mode à faible latence.
adb root
adb shell cmd wifi force-low-latency-mode enabled
À partir de la ligne de commande de l'ordinateur de test, pinguez l'adresse IP du téléphone. pendant trois heures à intervalles d'une seconde.
Enregistrez le résultat du test dans un fichier texte et utilisez une feuille de calcul pour générer un histogramme des résultats du test de latence ping.
Répétez les étapes 1 à 3 avec le mode de latence désactivé.
adb root
adb shell cmd wifi force-low-latency-mode disabled
Comparez les résultats des tests pour vous assurer que la valeur de latence moyenne des pings est réduit lorsque le mode à faible latence est activé.
Autres tests
Répétez les tests ci-dessus dans différents environnements. Par exemple, à l'adresse à la maison ou au bureau.