Fonctions
Tout ce qui suit tourne sur le XIAO et s'affiche sur le Minitel. L'application du téléphone fonctionne à côté, avec la même identité, les mêmes contacts et les mêmes canaux.
- Conversations et historique
- La page Actions
- Dernières nouvelles
- Contacts, stations entendues et proches
- Salons et administration des relais
- Chemin et trace
- Graphiques
- Régions
- Émojis et texte venu de la radio
- Taper les accents
- La page d'accueil animée
- Date et heure
- Bluetooth, code d'appairage, alimentation
- Télémesure : qui peut lire quoi
- USB : pilotage, relevés d'écran, visite
- Capture des plantages
- La liaison, la veille et le répertoire
Conversations et historique
Sommaire 1 liste tous les canaux configurés, les conversations privées et les salons, la plus récente en tête : nombre de non-lus, heure du dernier message, région d'envoi du canal (en 80 colonnes) et dernier message. Un numéro suivi de Envoi ouvre la conversation.
- Les messages se lisent
hh:mm Auteur > texte, le plus récent en bas ; Retour remonte le temps, Suite revient vers le présent. La rangée 24 est la ligne de saisie ; en 80 colonnes, elle indique combien d'octets il reste avant la limite de MeshCore (pour un canal, en gardant la place de votre nom). - Accusés de réception des messages privés et des salons :
(...), puis(reçu)à l'accusé, ou(échec ?)après trois essais, le dernier en diffusion. Les messages envoyés depuis le téléphone portent(appli)jusqu'à leur accusé. - Répétitions entendues. Vos propres messages sur un canal, depuis le Minitel ou l'appli, indiquent combien de fois on les a entendus répétés par les relais :
(répété 3 fois),(aucune répétition entendue), ou(envoi...)tant que le paquet n'est pas parti (en 40 colonnes :(r3),(r0)). Seules comptent les copies que ce nœud entend. - Comment chaque message est arrivé :
[direct +7 dB]ou[3 sauts -2 dB](en 40 colonnes :[d+7],[3s-2]), c'est-à-dire en direct ou le nombre de sauts, et le SNR du dernier saut. - Chaque message reçu fait sonner le Minitel (Réglages 9 coupe la sonnerie ; une conversation en silence ne sonne jamais).
- Historique en mémoire flash. 40 messages par conversation, jusqu'à 48 conversations (environ 350 Ko des 2 Mo de flash QSPI du XIAO), écrits 10 s après le dernier message : une coupure de courant n'en perd que quelques secondes. Depuis le Sommaire, Suite saute à la prochaine conversation non lue.
- Rapatrier l'historique. Un nouveau canal commence vide. Ses messages passés peuvent être importés par USB avec
hist add. Les messages importés sont classés par heure, ne sonnent pas, ne comptent pas comme non lus et ne partent jamais sur la radio ; ils portent un°après l'heure.
À l'écran : Conversations, Une conversation de canal, Une conversation privée
La page Actions
Dans une conversation, les flèches ↑ et ↓ choisissent un message (son heure clignote en inverse). Envoi sur une ligne de saisie vide ouvre la page Actions, pour cette conversation et le message choisi ; avec du texte sur la ligne, Envoi l'envoie, tout simplement. La ligne de saisie n'est jamais que du texte. Comme partout : numéro puis Envoi ; Retour ramène à la conversation telle qu'elle était.
| Entrée | Quand | Effet |
|---|---|---|
| Répondre | message choisi, d'un tiers, sur un canal ou un salon | Retour à la conversation avec @[auteur] devant la ligne, la forme de mention des applis. Les messages qui vous nomment montrent leur auteur en inverse. |
| Renvoyer | votre message privé ou de salon sans accusé | Renvoyé avec le même horodatage : le destinataire ignore le doublon et accuse quand même réception. |
| Effacer ce message | message choisi | Après confirmation, le message n'apparaît plus nulle part sur le Minitel (l'appli garde sa copie). |
| Détails | message choisi | Tout ce qui est gardé : sens, auteur, date à la seconde, sauts et SNR, accusé, répétitions entendues, taille, texte entier. |
| Rechercher un mot | toujours | Sans tenir compte des majuscules ni des accents (« ete » trouve « Été ») ; Suite passe à l'occurrence précédente. |
| Réponses rapides | toujours | Dix textes prêts (Réglages 12) à ajouter à la ligne ; {pos} devient votre position. |
| Silence | toujours | Plus de sonnerie, le compteur ne clignote plus et Suite l'ignore ; la liste la marque s. |
| Tout marquer lu | toujours | Toutes les conversations. |
| Fiche du canal / du contact | s'il existe | La fiche ; Retour y ramène à la conversation. |
| Supprimer la conversation | toujours | La conversation et son historique, après confirmation. |
À l'écran : Actions, Détails d'un message, Rechercher un mot
Dernières nouvelles
Sommaire 2 rassemble les derniers messages de toutes les conversations, par ordre d'heure, le plus récent en bas, chacun avec son étiquette (#canal, @contact, &salon), l'heure, l'auteur et le texte. Les non-lus clignotent ; consulter la page ne marque rien comme lu. Numéro puis Envoi ouvre la conversation pour répondre. Un canal trop bavard peut être masqué de cette page depuis sa fiche.
À l'écran : Dernières nouvelles
Contacts, stations entendues et proches
Sommaire 3 liste les contacts par dernière annonce : type, nom, sauts (? quand le chemin est inconnu et que les messages partent en diffusion), dernière annonce et début de clé. Les favoris viennent en tête, marqués *. Une lettre puis Envoi :
Eles stations entendues depuis le démarrage, contacts ou non ;Cretour aux contacts ;Ples stations proches : contacts et stations entendues qui annoncent une position, la plus proche en tête, avec distance, cap (N, NNE…), sauts, et s'il s'agit d'un contact ;Najouter un contact par sa clé publique (64 chiffres hexadécimaux, un type, un nom) ;Sidem pour un salon ;Ala page d'annonce.
Une fiche contact (numéro puis Envoi) montre le nom, la clé, le chemin, la dernière annonce, la position et une petite courbe du SNR de ses derniers messages, avec les actions : écrire ; ajouter une station entendue ; se connecter à un salon ; oublier le mot de passe ; oublier le chemin ; tracer le chemin ; administration ; partager le contact (sa dernière annonce renvoyée aux voisins directs, comme le partage de l'appli) ; supprimer ; favori (le même drapeau que l'appli) ; permissions de télémesure.
Correspondants absents. Un nœud qui n'a pas fait d'annonce depuis la création de votre identité n'est pas dans vos contacts : ses messages privés ne peuvent pas être déchiffrés, ils sont perdus, et vous ne pouvez pas lui écrire. Ajoutez-le avec N et sa clé publique, ou vérifiez l'ajout automatique (Réglages 7). Réglages 13 affiche votre nom et votre clé à donner aux autres.
À l'écran : Contacts, Stations entendues, Stations proches, Fiche contact, Mon identité
Salons et administration des relais
- Salons. Le mot de passe se tape sous forme d'étoiles, n'est enregistré qu'après une connexion réussie et n'est jamais affiché. Une conversation de salon se connecte à la première ouverture, avec le mot de passe enregistré ou en le demandant. Si un message reste sans accusé, le Minitel se reconnecte.
- Administration (fiche, action 7) des relais, salons et capteurs : connexion (invité, lecture seule, lecture/écriture ou administrateur) ; état (batterie, durée de fonctionnement, file d'envoi, bruit, RSSI/SNR, compteurs, temps d'émission, doublons, erreurs) ; voisins du relais, du plus fort au plus faible, avec leur nom quand il est connu ; télémesure (canaux Cayenne LPP : tension, température, humidité, pression, position…).
- Console à distance. Tapez une commande du relais puis Envoi ; la réponse s'affiche telle quelle (nettoyée comme tout texte). Répétition rappelle les cinq dernières commandes de ce relais.
À l'écran : Administration d'un relais
Chemin et trace
La fiche montre le chemin sous forme d'empreintes de relais (a3>7f>12). Oublier le chemin (comme dans l'appli) fait partir le prochain message en diffusion pour en apprendre un nouveau. Tracer envoie un paquet de trace par chaque relais du chemin, aller et retour (A B C B A) : la page donne pour chaque relais le SNR auquel il a reçu le paquet, le SNR du retour et le temps aller-retour.
Graphiques
Sommaire 8 : des statistiques radio gardées en mémoire depuis le démarrage (environ 1,5 Ko, une mesure par minute). En 40 colonnes, les courbes sont dessinées en mosaïque Vidéotex G1 (2 × 3 pavés par caractère, une zone de 70 × 45) ; en 80 colonnes, en caractères. Suite change la fenêtre (2 h, 1 h, 30 min) ou la page d'un histogramme ; la rangée 22 donne le minimum, la moyenne et le maximum.
| N° | Graphique |
|---|---|
| 1, 2 | SNR et RSSI des paquets reçus : barre min–max et moyenne par minute, sur 2 h |
| 3 | Bruit de fond, minute par minute |
| 4 | Trafic radio : paquets reçus par minute, et émis |
| 5 | Temps d'émission par tranche de 10 min, avec en pointillé la limite de la sous-bande (869,4–869,65 MHz : 10 % ; 868,0–868,6 et 869,7–870,0 : 1 % ; 868,7–869,2 : 0,1 %) |
| 6 | Batterie, toutes les 5 min sur 10 h |
| 7 | Les mieux entendus : les stations reçues en direct, par le SNR de leur dernière annonce |
| 8, 9 | Nombre de sauts des paquets reçus en diffusion ; messages par canal |
À l'écran : Graphiques, Graphique 1 : SNR, Graphique 4 : Trafic radio, Graphique 5 : Temps d'émission, Graphique 7 : Les mieux entendus
Régions
MeshCore peut limiter une diffusion à une région. 3615 MESHCORE les nomme comme la communauté française, selon les règles de nommage et le générateur de région de Gaulix : eu, fr, fr-<région>, fr-<département>, par exemple eu > fr > fr-bre > fr-35. Les départements d'outre-mer n'ont pas de niveau région ; la Corse est fr-cor.
- Choix de la région (Réglages 5, et pour chaque canal) : aucune,
eu,fr, les 13 régions de métropole et les 5 d'outre-mer, puis leurs départements avec nom et préfecture.Tpermet de taper un code (35,2A,fr-bre,bre…), vérifié dans les tables. - Régions automatiques (Réglages 6) propose sans jamais rien appliquer seul : la région par défaut d'après la position du nœud (son département, comme Gaulix le recommande pour un compagnon) et une région par canal devinée d'après son nom (
#rennes → fr-35,Public → fr).Dpermet de saisir son département, qui l'emporte sur la position (juste pour environ 83 % des communes). - Quand le nom d'un nouveau canal évoque une région, elle est proposée aussitôt. La région d'un canal s'applique à tout ce qui y est envoyé, depuis le Minitel comme depuis l'appli.
- Les tables viennent du Code officiel géographique 2026 de l'INSEE et de geo.api.gouv.fr (préfectures, emprise des communes), recoupés avec l'ISO 3166-2.
À l'écran : Choix de la région, Régions automatiques, Canaux, Fiche canal (Public)
Emojis et texte venu de la radio
Le texte reçu par radio n'est pas digne de confiance : tous les caractères de contrôle C0 et C1 et DEL sont supprimés, si bien qu'aucune séquence d'échappement, de protocole ou SS2 cachée dans un message ou un nom ne peut atteindre le terminal. L'UTF-8 est ramené à ce que le Minitel sait afficher :
- les accents que le Minitel connaît sont gardés, les autres caractères deviennent leur plus proche équivalent ASCII, le reste
?; - les émojis deviennent des codes ASCII : d'abord des émoticônes choisies à la main (
:-),<3,(y)), sinon le code court de GitHub ou Slack (:pizza:,:satellite:), sinon le nom court Unicode ; les drapeaux deviennent:flag-fr:. La table est produite à partir de l'emoji-test.txtd'Unicode (Emoji 18.0), de github/gemoji et d'iamcal/emoji-data.
Taper les accents
Trois niveaux, la manière du Minitel d'abord :
- Les touches d'accent (40 colonnes, Vidéotex). Les touches mortes du clavier : Maj+Suite puis la lettre donne l'accent grave, +Retour l'aigu, +Sommaire le circonflexe, +Guide le tréma ; Ctrl+Correction donne ç.
- Les touches du jeu français (les deux modes). Ctrl+1, 2, 3 donnent é, ù, è ; en 80 colonnes, Ctrl+Correction (ou Maj+Annulation) donne ç, et
^(Maj+0) ou¨(Maj+Guide) puis la lettre donnent ê, ë, comme sur une machine à écrire (^^tape^). - La composition (Réglages 14, active par défaut) : un préfixe, l'accent, la lettre.
*'e→ é,*`e→ è,*^e→ ê,*"e→ ë,*,c→ ç,*oe→ œ,*=e→ €,*/→\,**→*. Une séquence qui n'existe pas s'écrit telle quelle :*bonjour*ou5*3ne changent pas. La partie en attente s'affiche en inverse au bout de la ligne.
En 80 colonnes, le clavier n'envoie rien pour Maj+Suite, Retour, Sommaire ni pour les Ctrl de œ et ß : passez par la composition. Maj+Annulation et Ctrl+Correction envoient le même octet, qui est ç : la barre oblique inverse s'obtient par */. Les combinaisons Fnct+lettre sont des commandes locales du terminal. Le texte est gardé et envoyé en UTF-8. En 80 colonnes, le jeu français du Minitel n'a que à é è ù ç (plus ° £ §) : les autres lettres accentuées partent correctement mais s'affichent sans accent. Guide deux fois ouvre l'écran Guide, qui rappelle les touches du mode en cours.
À l'écran : Guide
La page d'accueil animée
Comme la page d'accueil d'un service Télétel, elle s'affiche au démarrage et chaque fois que le terminal est réinitialisé (mise sous tension, réveil), quelle que soit la page ouverte, jusqu'à ce qu'on appuie sur une touche ; Sommaire 7 la rejoue. Quatre scènes tournent, chacune dévoilée puis tenue 18 s :
- le logo du maillage, les nœuds puis les liens (mosaïques G1 en 40 colonnes, dessin en caractères en 80), puis 3615 MESHCORE en double taille ;
- Radio : une antenne et ses ondes, la fréquence, BW/SF/CR, la puissance, le bruit de fond, le SNR moyen de la dernière minute, les paquets ;
- Identité : le nom, le début de la clé publique qui apparaît pavé par pavé, la position, le département et la région, le Bluetooth, la batterie ;
- Réseau : contacts, stations entendues, conversations et non-lus qui défilent, le dernier message.
Seules les rangées modifiées sont envoyées, une image n'est préparée que quand la précédente est partie (au plus toutes les 130 ms) et le clignotement est celui du terminal : rien ne s'accumule, et une touche entre dans le service aussitôt.
À l'écran : Accueil animé, Accueil 1/4 : le logo, Accueil 2/4 : la radio, Accueil 3/4 : l'identité, Accueil 4/4 : le réseau
Date et heure
Sommaire 6 affiche l'heure dans le fuseau du compagnon et la règle à partir d'une saisie locale JJ/MM/AAAA HH:MM ; le fuseau horaire (en heures entières, à changer deux fois par an) se règle sur la même page. Tant que l'horloge n'est pas réglée, l'heure est prise automatiquement dès que deux nœuds s'accordent à ±2 minutes. L'envoi demande une horloge réglée, ou l'option « envoyer sans heure ».
À l'écran : Date et heure
Bluetooth, code d'appairage, alimentation
Réglages 15 affiche l'état du Bluetooth, le code d'appairage que demande le téléphone et la batterie. On peut y couper le Bluetooth jusqu'au prochain redémarrage, changer le code d'appairage (le « device PIN » de l'appli), redémarrer ou éteindre. Avant un redémarrage ou un arrêt, l'historique, l'index des conversations et une éventuelle écriture de contacts en attente sont enregistrés.
À l'écran : Bluetooth et alimentation, État et statistiques
Télémesure : qui peut lire quoi
Réglages 7, entrées 8 à 10, règle qui peut lire la télémesure de ce nœud, comme dans l'appli : batterie et données de base, position, capteurs. Chacune vaut personne, contacts autorisés ou tous. Pour contacts autorisés, la fiche de chaque contact (action 11) donne ses permissions : B batterie, P position, C capteurs.
À l'écran : Ajout automatique des contacts
USB : pilotage, relevés d'écran, visite
Le port série USB du XIAO (115200 bauds) offre une ligne de commande locale, destinée à l'ordinateur plutôt qu'à l'utilisateur :
- Sauvegarde de l'identité (
get prv.key/set prv.key), fuseau horaire, réglage de l'horloge, import d'historique. - Relevés d'écran.
screensort le modèle d'écran exactement tel que le terminal l'affiche, rangée par rangée, avec tous les attributs ;screen watchen enchaîne au rythme du micrologiciel.tools/screenshot/en tire une image photographique d'un Minitel 2 (PNG ou GIF animé), et ce site redessine les mêmes relevés en texte. - Pilotage.
key,type,typehex,wait idle,ui state,ui reset: toute action du clavier, depuis un script, traitée exactement comme une vraie touche. Cela marche même Minitel éteint : le modèle d'écran reste à jour et le terminal est redessiné à son retour. - La visite.
tools/tour/tour.pyparcourt toutes les pages dans les deux modes avec ces commandes, sans jamais rien émettre sur la radio, et reconstruit la galerie.
La liste complète est dans la référence.
Capture des plantages
Le micrologiciel remplace les gestionnaires d'erreur du cœur (HardFault, MemManage, BusFault, UsageFault) par les siens, qui gardent le compteur ordinal et le registre de lien fautifs, xPSR, les registres d'état d'erreur (CFSR, HFSR, MMFAR, BFAR), la tâche FreeRTOS et la durée de fonctionnement dans une mémoire qui survit au redémarrage. Au démarrage suivant, l'enregistrement s'affiche avec la commande USB boot et sur la page État, et reste en flash jusqu'à boot clear. Comme chaque compilation garde son ELF, crash2line.sh <pc> <lr> retrouve le fichier et la ligne. Réglages 11 indique aussi la pile jamais utilisée de la tâche principale et le tas libre.
La liaison, la veille et le répertoire
Le Minitel parle en 7E1 ; l'UART du nRF52840 n'a pas de mode 7 bits, donc le port tourne en 8N1 et la parité paire est mise dans le bit 7 par logiciel (les mêmes 10 bits sur le fil). Un automate non bloquant essaie 9600, 1200, 4800 puis 300 bauds, lit l'identifiant de la ROM, passe le terminal à 9600 bauds, choisit Mixte 80 ou Vidéotex 40 colonnes, coupe l'écho local et vérifie l'état. La sortie passe par une file de 1 Ko envoyée par DMA, et seules les rangées modifiées partent : le réseau n'attend jamais le Minitel.
Quand on l'allume ou qu'il sort de veille, le Minitel revient à 1200 bauds en Vidéotex, sur son menu local. Le micrologiciel s'en aperçoit (demande d'état sans réponse, acquittement de réinitialisation, parité fausse, touche après un long silence), recommence et affiche la page d'accueil. Si le terminal ne répond plus du tout (le plus souvent, le répertoire), il tente une fois la réinitialisation par le protocole ; à la main, Fnct+Sommaire sort du répertoire et Fnct+E puis A désactive la mise en veille automatique (Fnct+E puis M la réactive). La commande USB link log montre ce qui s'est passé.