Créer nouvelle touche Pynitel

Bonjour,

Lorsque le modem retourné ne parvient pas à se connecter, le minitel revoit le code 13 59 en hexadécimal (☐Y en oeil humain) . Sur mon serveur si un dérangement est créé par un appel humain, il ne se réamorce pas.

J’aimerai donc, sur ma page de saisie où le minitel attend un choix de l’utilisateur, lui dire que si il reçoit le code 13 59, il faut qu’il retourne attendre un nouvel appel téléphonique.

Si quelqu’un à une idée, il est le bienvenue.

A noter que sur Pynitel, dès l’instant où en héxa il recoit 13, il considère qu’il s’agit déjà d’une touche de fonction.

Bon bah j’ai finalement trouvé, je partage la solution si ça peut aider quelqu’un un jour ^^

Pour un Minitel 12, un échec de connexion, ou une déconnexion du client sans passer par la touche « Connexion/Fin » (genre il débranche le terminal de la prise électrique) le M12 renvoie la touche 25 et 27

Hou làlà - Je ne suis pas encore entré dans Python mais je t’invite à regarder un truc que j’ai fait il y a un moment https://github.com/64rulez/minitel-protocole
SEP/59 ==> Changement d’état du relais de prise de ligne
SEP/53 ==> Changement d’état de la détection de porteuse

Je n’ai malheureusement pas le détail du comportement du protocole du M12 (si quelqu’un l’a … qu’il partage !) et je ne connais pas par cœur le M2, je ne parle que de M1b pour la suite.

  1. Tu envoies une commande protocole ESC 9h pour connecter le modem (après l’avoir préalablement retourné, puisque tu es « serveur »)
  2. Le protocole te répond « j’ai changé l’état du relais de prise de ligne » avec SEP/59. S’il est serveur (retourné), il émet sa porteuse, sinon, il attend de recevoir la porteuse serveur. Dans les deux cas, une tempo est lancée.
  3. Deux cas peuvent se produire :
  • Succès : S’il est serveur (retourné), le modem distant a bien « entendu » sa porteuse serveur et émet à son tour sa porteuse « client », qui est bien reçue, et avant l’expiration de la tempo. Le protocole t’envoie SEP/53 pour te dire « J’entends bien l’autre, je suis vraiment connecté ».
  • Succès : S’il est « client » (non-retourné), un modem « serveur » distant envoie bien sa porteuse serveur, en conséquence, il émet à son tour sa porteuse « client », avant l’expiration de la tempo. Le protocole t’envoie aussi SEP/53.
  • Echec : Tout autre cas (dépassement de la tempo sans entendre l’autre), le protocole relâche le relais de prise de ligne et t’envoie un nouveau SEP/59 pour te dire « j’abandonne » et le retournement est annulé.
  • Dans tous les cas (succès ou échec), tout un tas de trucs sont réinitialisés, dont l’état des aiguillages et de diffusion des acquittements
    - Si tu veux savoir exactement dans quel état se trouve le modem à un moment donné, il faut interroger le protocole qui te répondra précisément
  1. Admettons un succès de connexion. Tôt ou tard, que tu sois serveur ou client, ton modem n’entendra plus la porteuse distante. Le protocole te le signalera avec un SEP/53, il relâchera le relais de prise de ligne et te le signalera aussi avec un SEP/59
  2. Admettons un succès de connexion et que tu souhaites mettre fin à celle-ci. Tu envoies au protocole ESC 9g (Escapeneufgé le bien connu), et rebelotte, SEP/53 et SEP/59 tu recevras et reinitialisations surviendront (dans ce cas, et aussi le cas 4 ? à vérifier) l’ordre de transmission des acquittements n’est pas absolument clair, mais en principe, c’est toi qui a demandé, donc, tu sais ce que tu fais)
  3. Pour « jouer », tu peux essayer de retourner le modem en mode connecté (avec l’acquittement en SEP/58 …)

Avec un modem Hayes, je trouve que c’est finalement encore plus compliqué qu’avec le protocole du Minitel ! [si tu es en ligne, envoyer +++ à la cadence qui va bien pour entrer en mode commande, attendre le status (OK ou 0), envoyer la commande qui va bien, attendre de nouveau le status …envoyer la commande pour sortir du mode commande … làlàlà sachant que n’importe quoi peut merder à tout moment ]