Aller au contenu

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.

Matériel et infographie Docker
  • Mis à jour
  • C++ · 86.58%
  • MIT
Langages du dépôtC++ 86.58%3

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
C++86.58%61 640
CMake8.31%5 914
Python5.11%3 639

GitHub · README · Statistiques de langages

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.

README.md · Recommended: official devkitPro container
git clone --recursive https://github.com/antoinebou12/switch-wifi.git
cd switch-wifi
README.md · Recommended: official devkitPro container
python3 scripts/verify_nro.py build-switch/switch-wifi.nro
README.md · Native devkitPro installation
cmake -S . -B build-switch -DPLATFORM_SWITCH=ON -DUSE_GLFW=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build-switch --target switch-wifi.nro --parallel
README.md · Recommended: official devkitPro container
docker 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

The same CMake commands work from a configured devkitA64/devkitPro environment:
Lire les instructions complètes ↗
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.
Lire les instructions complètes ↗
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:
Lire les instructions complètes ↗

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.
Lire les instructions complètes ↗
Documentation source

2 documents lus parmi 2 candidats.

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.

Contexte système Contexte
  1. Échantillons réseau
  2. Cœur de métriques portable
  3. Historique et résultats
  4. Tableau de bord Borealis
  5. 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.

Vue statique de l’architecture de switch-wifi
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
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

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

Fichiers à lire 3

Références