switch-wifi : Séparer les mesures réseau de l’interface
switch-wifi est un tableau de bord réseau pour Switch avec une interface Borealis. Il sépare les calculs portables de l’application console pour permettre de tester le cœur sans la chaîne de compilation Switch.
Langages du dépôtC++ 86.58%3
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| C++ | 61 640 | |
| CMake | 5 914 | |
| Python | 3 639 |
Aperçu
Pourquoi il existe
Utilitaire C++ natif communiquant directement avec les services wlan de l'OS Switch.
Cas d’usage
Configuration réseau rapide pour console Switch sans interface complexe.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
git clone --recursive https://github.com/antoinebou12/switch-wifi.git
cd switch-wifipython3 scripts/verify_nro.py build-switch/switch-wifi.nrocmake -S . -B build-switch -DPLATFORM_SWITCH=ON -DUSE_GLFW=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build-switch --target switch-wifi.nro --paralleldocker run --rm \
-v "$PWD:/work" -w /work \
devkitpro/devkita64:latest \
bash -lc 'cmake -S . -B build-switch \
-DPLATFORM_SWITCH=ON \
-DUSE_GLFW=ON \
-DCMAKE_BUILD_TYPE=Release && \
cmake --build build-switch --target switch-wifi.nro --parallel'Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
Native devkitPro installation
README.md
Configuration et utilisation
Wi-Fi environment
README.md
- Basic saved-network metadata without requesting full saved credential profiles.
- Authentication/encryption labels.
- Horizon allowed-channel query on HOS 6.0.0+.
- 2.4 GHz and 5 GHz channel/frequency helpers.
- Tested channel-overlap and contention-proxy math.
- Nearby AP scan kept behind a hardware-verification boundary until opaque Horizon AP records can be decoded safely across firmware versions.
- RF noise floor and SNR shown as unavailable rather than inferred from unrelated values.
Développement et contributions
Unit tests
README.md
The platform-independent metric, history, channel and benchmark-statistics code is tested on the host. The suite is split into:
- switch_wifi_metrics_tests;
- switch_wifi_history_tests;
- switch_wifi_benchmark_tests. Sanitizer build:
Development rules
CONTRIBUTING.md
- Keep Horizon/libnx IPC out of the Borealis UI layer.
- Add a host-side test for calculations and parsers whenever possible.
- Gate firmware-dependent behavior explicitly.
- Do not add code that retrieves Wi-Fi passphrases just to display profile information.
- Do not call a derived AP-overlap value “noise floor”, “SNR”, or “channel utilization” unless the underlying metric is actually measured.
- Keep Bluetooth diagnostics read-only.
Fonctions et composants 2
- Cœur de calcul portable
- CMake construit switch_wifi_core depuis src/core/metrics.cpp. Les tests hôtes utilisent cette bibliothèque indépendamment de Borealis. Ils couvrent les métriques, l’historique et les benchmarks, avec des sanitizers optionnels.
- Intégration console
- La cible applicative rassemble les modules src et lie Borealis, les bibliothèques libnx et libcurl. Le réseau et l’interface dépendent donc de la plateforme, tandis que le cœur numérique peut rester indépendant.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Échantillons réseau
- Cœur de métriques portable
- Historique et résultats
- Tableau de bord Borealis
- Tests unitaires hôtes
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
n0["Échantillons réseau"]
n1["Cœur de métriques portable"]
n2["Historique et résultats"]
n3["Tableau de bord Borealis"]
n4["Tests unitaires hôtes"]
n0 --> n1
n1 --> n2
n2 --> n3
n4 --> n1
Version texte du diagramme
- Échantillons réseau → Cœur de métriques portable
- Cœur de métriques portable → Historique et résultats
- Historique et résultats → Tableau de bord Borealis
- Tests unitaires hôtes → Cœur de métriques portable
Suivre un parcours dans le code
Partez de la bibliothèque et de ses tests, puis examinez le module réseau qui fournit les mesures. Un débit HTTPS dépend du serveur et du trajet réseau; ce n’est pas une lecture directe de la capacité radio Wi-Fi.
Déploiement et exploitation
Les ports, le stockage et les relations de démarrage ci-dessous viennent de la configuration du dépôt. depends_on indique l’ordre de démarrage, pas la disponibilité du service.
Types et structure des fichiers
27 types déclarés, dont 12 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class tec54ffc64505["BluetoothService"] {
snapshot()
passiveScan()
}
class t17625c2744a3["IpConfig"] {
<<struct>>
}
class t7988c53361f7["ConnectionSnapshot"] {
<<struct>>
}
class t4a309fd00cd7["SavedNetwork"] {
<<struct>>
}
class tc583422c7f0f["NearbyWifiNetwork"] {
<<struct>>
}
class tff9ef4d0d29e["LatencyStats"] {
<<struct>>
}
class t2488d1629c51["SpeedSample"] {
<<struct>>
}
class t60189b23c9ad["BluetoothDevice"] {
<<struct>>
}
class t28065228e336["BluetoothSnapshot"] {
<<struct>>
}
class t6f2d7c0133a5["BluetoothScanResult"] {
<<struct>>
}
class tcd996a2f6785["RingHistory"] {
RingHistory()
push()
clear()
size()
}
class tba04fe8b8282["NetworkService"] {
initialize()
shutdown()
snapshot()
savedNetworks()
}
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
BluetoothService(class) ·include/switch_wifi/bluetooth/bluetooth_service.hpp:9Méthodes dans l’aperçu :
snapshot, passiveScan.IpConfig(struct) ·include/switch_wifi/core/metrics.hpp:18ConnectionSnapshot(struct) ·include/switch_wifi/core/metrics.hpp:27SavedNetwork(struct) ·include/switch_wifi/core/metrics.hpp:39NearbyWifiNetwork(struct) ·include/switch_wifi/core/metrics.hpp:46LatencyStats(struct) ·include/switch_wifi/core/metrics.hpp:55SpeedSample(struct) ·include/switch_wifi/core/metrics.hpp:64BluetoothDevice(struct) ·include/switch_wifi/core/metrics.hpp:79BluetoothSnapshot(struct) ·include/switch_wifi/core/metrics.hpp:84BluetoothScanResult(struct) ·include/switch_wifi/core/metrics.hpp:92RingHistory(class) ·include/switch_wifi/core/metrics.hpp:216Méthodes dans l’aperçu :
RingHistory, push, clear, size.NetworkService(class) ·include/switch_wifi/network/network_service.hpp:8Méthodes dans l’aperçu :
initialize, shutdown, snapshot, savedNetworks.
Référence
25 / 25 fichiers admissibles lus (51 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 3 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["switch-wifi"]
f0["CMakeLists.txt"]
root --> f0
f1["src/main.cpp"]
root --> f1
f2["src/core/metrics.cpp"]
root --> f2
f3["README.md"]
root --> f3
f4["library/CMakeLists.txt"]
root --> f4
f5["scripts/check_release_version.py"]
root --> f5
f6["scripts/package_release.py"]
root --> f6
f7["scripts/verify_nro.py"]
root --> f7
f8["tests/test_benchmark.cpp"]
root --> f8
f9["tests/test_history.cpp"]
root --> f9
f10["tests/test_metrics.cpp"]
root --> f10
f11["include/switch_wifi/version.hpp"]
root --> f11
f12["src/bluetooth/bluetooth_service.cpp"]
root --> f12
f13["src/network/network_service.cpp"]
root --> f13
f14["src/network/speed_test.cpp"]
root --> f14
f15["src/ui/main_tabs.cpp"]
root --> f15