Le problème
Traiter une télémétrie comme un flux non fiable
Une trame reçue ne peut pas être considérée comme correcte simplement parce qu’elle est arrivée. Le logiciel doit retrouver ses limites dans un flux TCP, contrôler sa taille avant allocation, valider son intégrité, isoler les erreurs et continuer à traiter les trames suivantes.
Le même chemin de décodage est utilisé pour le réseau live et le replay. Cela évite deux implémentations qui pourraient diverger et rend un incident reproductible hors connexion.
Architecture
Un pipeline découplé par des queues fermables
ou replay STGF
trames brutes
CRC + parsing
+ CSV / JSON
Le récepteur reste disponible pendant que plusieurs workers effectuent le travail CPU de validation. Le writer ne reçoit que des objets `TelemetryFrame` valides. La fermeture explicite des queues assure l’arrêt propre du pipeline sans sentinelle ambiguë.
Décisions d’ingénierie
Les points qui rendent le système robuste
Bornes vérifiées avant confiance
Magic word, révision, longueur maximale, taille réelle et CRC sont contrôlés avant d’exposer les valeurs métier.
Réassemblage avec resynchronisation
L’extracteur conserve les fragments, retrouve `STGS` après du bruit et attend une trame complète avant émission.
Mode dégradé observable
Une fenêtre glissante combine taux de rejet et télémétrie critique pour passer de `NOMINAL` à `DEGRADED`.
Déterminisme de diagnostic
Le format STGF conserve les octets originaux afin de rejouer exactement la même validation que sur le réseau.
Démonstration réelle
24 trames générées puis rejouées
Cette courte capture a été produite à partir des exécutables compilés : le simulateur écrit un fichier STGF, la station le rejoue, valide chaque trame et produit un export JSON.
./stgs_satellite_simulator --output-file frames.stgf --count 24 --rate 0
./stgs_ground_station --replay frames.stgf --output telemetry.jsonPreuves techniques
Ce que le dépôt permet de vérifier
- Tests du CRC connu, du round-trip, des erreurs de magic/CRC/longueur et de l’extracteur TCP fragmenté.
- Transition et récupération du mode dégradé testées avec une fenêtre contrôlée.
- Benchmark reproductible du pipeline de décodage, séparé des coûts réseau et disque.
- CI GitHub Actions : build Release, CTest, smoke replay CSV/JSON et benchmark court.