240 lignes
12 KiB
Plaintext
240 lignes
12 KiB
Plaintext
Introduction
|
|
|
|
( English => This file contains "Modulations numériques" project history. )
|
|
( Last changes are given in reverse order (as a stack : last changes at the top of the file), )
|
|
( Please insert your changes on top, for readability reasons. )
|
|
( Rule : every day is separated from the previous by a header : line + date + author )
|
|
|
|
French => Ce fichier contient l'historique du projet Modulations numériques.
|
|
Les derniers ajouts sont donnés comme une pile (derniers ajouts en début de fichier)
|
|
Merci d'insérer vos modifications en début de ce fichier, pour des raisons de lisibilité.
|
|
Règle : chaque nouveau jour est séparé du précédent par une "en-tête" minimale : ligne de separation + date + auteur
|
|
|
|
Copyright ericb 2026/01/07
|
|
Licence GPL v2 (see )
|
|
|
|
LAST CHANGES
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/02/01 ericb
|
|
|
|
Correction de la modulation M-ASK : maintenant, les amplitudes respectent la règle Ak = 2k-M-1
|
|
Suppression de la double initiaisation de la SDL.
|
|
Ajout de la fenêtre modale qui servira de modèle pour la documentation du cours (consultable en runtime)
|
|
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/25 ericb
|
|
|
|
Passage à OpenGL 3.3 (au lieu de 3.0)
|
|
Remplacement de selectMenuTheme() par selectThemeMenu()
|
|
Factorisation de code :
|
|
- création de selectThemeMenu() // imgui_utils.cxx
|
|
- création de selectFrameSize() // imgui_utils.cxx
|
|
- tout le code SDL est maintenant encapsulé dans Engine
|
|
Création de la classe Engine
|
|
Implémentation de la classe Engine dans main.cxx (simplifications)
|
|
Dans chaque onglet, ajout de app.set_current_tab() pour garantir l'état de l'onglet après redimensionnement
|
|
Vérification des dimensionnements.
|
|
Correction : suppression d'un ImGui::NewLine() pas très utile.
|
|
Correction : ajout des fonctions manquantes dans imgui_utils (l'interface était incomplète)
|
|
Correction : initialisation des dimensions de la fenêtre SDL dans la classe applications.
|
|
|
|
En test : les corrections de la modulation 16-QAM, proposées par vrst
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/18 ericb
|
|
|
|
Abstraction du nom de la fenêtre SDL3 principale
|
|
Ajout de engine.h dans les sources pour tester la compilation
|
|
(la classe engine est repris de miniDart, mais doit être simlifiée et rendue compatible avec SDL3)
|
|
Implémentation de la modulation d'amplitude 16-QAM
|
|
Description de la constellation 16-QAM (impossible faire tous les dessins, ce serait illissible)
|
|
|
|
En cours : Correction de engine.cxx en cours (passage SDL2 -> SDL3)
|
|
|
|
TODO :
|
|
Inclusion progressive de la classe engine dans application.cxx et main.cxx (factorisation de code)
|
|
Ajout de nouveaux événements (passage en plein écran via le menu)
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/17 ericb vrst tsbs
|
|
|
|
TODO :
|
|
- implémentation de la modulation 16-QAM
|
|
- essais de cross-compilation (version Windows)
|
|
- documentation
|
|
- tests unitaires à améliorer
|
|
|
|
Ajustement de l'écart pour les VToggleButtons, en fonction de la longueur de la Trame
|
|
Ajout de l'entrée de menu "Longueur Trame"
|
|
Déplacement de la modulation 4-QAM dans l'onglet ad hoc
|
|
Ajout de l'onglet "Modulation numérique M-QAM"
|
|
Tests de la trame avec 16 et 24 bits
|
|
Implémentation de la classe Application
|
|
Correction des coefficients 4-ASK qui étaient inversés
|
|
Ajustement du rectangle de surbrillance
|
|
Correction complète du layout
|
|
Corrections variées : écartement entre les VToggleButtons correcte (pour 8 bits)
|
|
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/16 ericb
|
|
|
|
TODO :
|
|
- corriger le positionnement des boutons en plein écran (pas en face du bit modifié)
|
|
- valider l'algorithme du DPSK, actuellement faux
|
|
Améliorations possibles : pouvoir modifier la couleur du trait en runtime pour les tracés.
|
|
Corrigé le trait lors du passage d'un bit à un autre lorsque la discontinuité est trop importante.
|
|
Implémentation de la modulation umérique 4-QAM (principe de la TNT et du wifi 7)
|
|
Utilisation de nouveaux contrôles pour modifier les bits du mot transmis
|
|
Affichage de la signification d'un 1 ou d'un 0, sinon du symbole transmis sur 2 bits
|
|
dans la fenêtre fille.
|
|
Correction du nomnre de périodes affichées dans la fenêtre fille :
|
|
- maintenant, le nombre de périodes affichées correspond au cas étudié.
|
|
- la fréquence affichée coïncide avec le réglage
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/15 ericb
|
|
|
|
TODO : créer un layout proportionnel, et non avec des valeurs "magiques"
|
|
Correction du redimensionnement : maintenant, quel que soit le thème, les couleurs sont respectées.
|
|
Factorisation du code : mise en surbrillance, avec création de l'utilitaire highlightFrame()
|
|
Création de imgui_utils.h (devrait devenir une classe d'objets utiles)
|
|
Écriture du code qui permet d'écrire les bits autour des VToggleButtons
|
|
Remerciements
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/14 ericb
|
|
|
|
Ajout de la modulation 4-QAM (qui ressemble à un cas particulier de 4-PSK)
|
|
Création de imgui_utils.cxx
|
|
Factorisation de code : ajout de drawVToggleButton()
|
|
Ajout de drawVToggleButtons()
|
|
Ajout de la partie documentation
|
|
Ajout de la classe application
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/13 ericb
|
|
|
|
Bugfix : initialisation du thème corrigée. Tous les thèmes sont selectionables sans problème maintenant
|
|
Ajout du CMakeList.txt, proposé par merx
|
|
Essai de tests unitaires. À suivre demain avec les groupes 2 et 3
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/11 ericb
|
|
|
|
CODE : Partie 2 uniquement
|
|
Correction partielle du layout :
|
|
- identification de chaque paramètre utilisé ;
|
|
- définition et choix de valeurs cohérentes ;
|
|
- correction des alignements.
|
|
|
|
Simplification du code dans main + ajout de commentaires pour l'initialisation de dmod.
|
|
Initialisation du constructeur de la classe modulation : les types de modulations doivent etre initialisés.
|
|
Utiliser main(void) pour des raisons évidentes : on n'utilise pas d'arguments pour démarrer l'application.
|
|
Correction du layout
|
|
Utilisation d'un fichier pour la traduction. Exemple en français, mais qui pourra être facilement étendu à l'anglais.
|
|
Ajout d'une entrée de menu : choix d'un thème de couleurs
|
|
Implémentation des thèmes colorés : Light Green, Dark, Light Blue, Windows et Classic.
|
|
|
|
TODO : corriger le pb du layout qui perdure : la fenêtre n'est pas redimensionnable ...
|
|
|
|
DEBUT PARTIE2 : ajout d'une nouvelle arborescence appelée Code_final_partie2
|
|
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
PARTIE1
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/10 ericb
|
|
|
|
Ajout d'un slider en mode DEBUG : permet de voir l'effet d'une modification de k x fbase (k entier, peut varier de 2 à 10)
|
|
Correction des problèmes de compilation apportés par la modification du code.
|
|
Modulation numérique de fréquence : 4 x fbase plutôt que 2 x fbase pour le signal modulé => meilleure visibilité
|
|
Modulation numérique de Phase : modification de PSK en BPSK plus précis
|
|
Corrections de fautes de frappes, orthographe variée sur la page de présentation.
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/09 ericb
|
|
|
|
Ajout d'un menu " Appliqation -> Quitter " à titre d'exemple (fonctionnel)
|
|
TODO : améliorer l'algorithme pour le DPSK, qui n'a pas l'air d'être correct.
|
|
Correction du bug de la fréquence qui ne variait pas en modulation numérique de phase.
|
|
Mise à jour du README
|
|
Ajout de la modulation numérique de fréquence. FSK et M-FSK sont opérationnels et fonctionnent comme attendu.
|
|
Implémentation de la classe DignitalModulation. Fonctionne comme attendu pour la modulation d'amplitude numérique.
|
|
Remplacement de bits[] par am_bits[] (am pour amplitude modulation), on utilisera aussi bm_bits, fm_bits[] et m_qam_bits[].
|
|
Utilisation de M_PI (constante du système) au lieu de PI redéfinie maladroitement (nécessite des double).
|
|
Test : pas de changement notable en utilisant M_PI à la place de PI.
|
|
Ajouté : en mode DEBUG, un slider permet de voir ce qui se passe quand on modifie samples_per_bit
|
|
|
|
Bugfix : correction du Makefile qui n'ajoutait pas les symboles par défaut et qui compilait en double certains
|
|
fichiers .cxx en mode debug
|
|
|
|
Ajout de la définition de DEFAULT_SAMPLES_PER_SYMBOL, défini à 100 par défaut (valeur optimale)
|
|
Optimisation : calcul de l'amplitude remonté d'un niveau dans la boucle (ralentissait les calculs)
|
|
Modification de l'initialisation de la longueur du mot avec DEFAULT_WORD_SIZE
|
|
Suppression de BIT_COUNT, inapproprié.
|
|
Correction de l'indentation, qui était chaotique.
|
|
Cosmétique : variable de boucle définie à l'intérieur de la boucle, plutôt qu'à l'extérieur.
|
|
Ajout de deux membres privés dans la classe modulation : le type et la taille du mot
|
|
Création des assesseurs pour les membres privés
|
|
Ajout de DEFAULT_WORD_SIZE (8 bits par défaut), en remplacement de BIT_COUNT, peu précis
|
|
Compilation OK, pas de problème apparent.
|
|
WARNING : Ne pas utiliser d'autre valeur que 8, sinon segfault (layout pose problème)
|
|
|
|
TODO : voir https://github.com/ocornut/imgui/issues/1537
|
|
|
|
Amélioration temporaire du layout (espacements, etc).
|
|
Ajout du Changelog dans l'arborescence.
|
|
Ajout de la définition des dimensions des sliders verticaux dans modulations.h
|
|
Création de la classe modulations. Ajout dans l'arborescence.
|
|
Commit : modification du makefile, et ajout de modulations.cxx.
|
|
Test : compilation OK, mais la classe n'est pas encore utilisée (factorisation de code en cours)
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/08 ericb
|
|
|
|
Nettoyage de code, suppression de warnings, analyse de fonctionnement.
|
|
Remplacement des "if" par un switch pour les 3 cas de modulation numérique d'amplitude.
|
|
Factorisation de code : ajout de nouvelles entrées pour les modulations manquantes (typedef / modulations.h)
|
|
Codage d'un caractère sur 2 bits avec l'utilisation de la parité
|
|
Creation du fichier d'en-tête modulations.h et ajout dans le dépôt
|
|
Correction du positionnement des sliders verticaux #HACK, car c'est le layout qui devrait décider
|
|
Modification de la hauteur des sliders verticaux.
|
|
Utilisation de la police (font) DroidSans en runtime. Le chemin est codé en dur et la fonte doit
|
|
être placée dans le dossier fonts, au même niveau que build
|
|
Correction de la prise en compte de nouveaux includes dans le makefile
|
|
Tests du Makefile corrigé.
|
|
TODO : penser à gérer la licence de la fonte DroidSans quelque part dans l'arborescence
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/07 ericb
|
|
|
|
Groups 2 and 3
|
|
Ajout des boutons dont l'état est modiifiable (pas encore les sliders) dans la vue.
|
|
Dessin d'une sinusoïde de fréquence variable (probablement généré avec chatGPT)
|
|
|
|
(à compléter avec ce qui a été fait)
|
|
|
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
2026/01/06 ericb
|
|
|
|
Group 1 working, first tries (looks promising)
|
|
|
|
- starting with graphix3 code, to draw a window + an ImGui application inside an OpenGL context (orthogonal projection)
|
|
- added some controls : silders, buttons
|
|
- draw an SDL3 window + Dear ImGui (based on the example)
|
|
- draw some controls inside and check (SliderFloat : 0 -> 9, draw sin 2Pi(f+af)t (a -> alpha, with alpha between 0 and 9)
|
|
- Q : how to draw an sinusoid with IMGUI ? => cf demo widget
|
|
|
|
- Q : how to draw a vertical ON-OFF button ?
|
|
- Q : how to draw and make radio buttons work ?
|
|
- Q : how to add a text area ?
|
|
- Q : how to add tabs ?
|
|
|
|
|
|
|
|
|
|
|