Dans ma quête pour savoir comment fonctionne mon M12 Phillips et pouvoir examiner son fonctionnement, je me suis mis à coder un émulateur.
Bien qu’il ne soit pas encore fonctionnel (non initialisation du modem, et bugs en tout genre), j’arrivais à afficher certaines pages correctement (répertoire):
Malheureusement cette version n’est pas non plus exempte d’erreurs (surtout dans le tableau des commandes) et je n’ai pas trouvé d’autre version pour la corriger.
Si vous voulez apporter des modifications ou ajouter des informations n’hésitez pas à me contacter.
En tout cas je continue à améliorer (et débugger :)) mon émulateur et je devrais avoir un schéma de fonctionnement à peu près correct du MBSL 4000FH5-5 dans peu de temps.
Si je me souviens bien, j’ai déjà vérifié par le passé que l’encodage de la commande TSM 0x61 fonctionne également, mais je n’ai pas encore eu l’occasion de formaliser cela sous forme de test. Il est également intéressant de noter que 0x03 est le codage équivalent sur l’EF9345.
J’ai commencé à écrire des tests pour valider les implémentations EF9345/TS9347 :
Dans le même repo, tu trouveras une carte USB qui peut être utilisée pour envoyer des commandes à la puce directement depuis un PC et voir le résultat immédiatement sur le PC lui-même:
Si tu veux, je peux trouver un moyen de te donner un accès à distance à la mienne (ou, si tu es à Paris, je peux simplement te prêter la mienne [son logiciel fonctionne sous Linux]).
Ma puce est soudée sur la carte mère du coup je ne peux pas tester pour l’instant.
Mon idée sur la formation des commandes étaient qu’elles n’étaient pas formées de manière random mais plus de manière orthogonale/modulaire et que TLM/TLA/CLL/TSM/TSA/CLS avaient la même structure avec bit 2: incrémentation sur Y, bit 1: 16/24bit et bit 5:AP/MP.
Il se peut aussi que certains bits ne soient pas checkés.
Un programme pour tester les commandes serait le suivant:
AP=0, MP=0, R1=1, R3=3
CLL
attendre la fin de la commande
pour toutes les commandes à tester:
AP=0, MP=0
CMD
attendre la fin de la commande
lire R1, AP, MP
(avec CMD une commande en lecture ou écriture et auto-incrémentation sur X)
Pour ceux que ça intéresse voici les logs de mon émulateur lorsqu’il tente d’afficher la page de l’horloge:
Il peut y avoir des erreurs dans les arguments passés à/depuis la puce vidéo car je suis en plein débuggage mais je ne pense pas que cela ait un grand impact vu que c’est l’affichage d’une page fixe.
J’ai remarqué aussi que même si la commande pour la puce n’ai pas par exemple 3 arguments, le programme utilise parfois une fonction plus générale et passe aussi une valeur au hasard.
Pour info A: addresse IO (0x20-0x2F) et D: les données envoyées
Il faudrait aussi tester si il n’y a pas d’autres effets secondaires à changer certains bits (par exemple changer Y quand X=40 et qu’il y a l’auto incrémentation)