- Rotary Phone Dial Linux Kernel Driver est un module noyau qui convertit un ancien téléphone à cadran en périphérique d’entrée evdev pour Linux
- Le projet fournit aussi un pilote d’exemple simple et un environnement de développement basé sur une machine virtuelle, ce qui le rend très utile à des fins d’enseignement et de test
- Le développement et les tests sont possibles même sans matériel réel, avec prise en charge de la simulation GPIO
- Il prend en charge presque tous les réglages de mappage de touches et peut aussi s’adapter aux différents schémas d’encodage par impulsions selon les pays
- Comme il s’agit d’un module noyau standard, il peut être facilement étendu et intégré à un système Linux
Présentation de Rotary Phone Dial Linux Kernel Driver
- Ce projet est un module noyau qui transforme le cadran rotatif d’un ancien téléphone en périphérique d’entrée standard pour un système Linux (par ex. un pavé numérique)
- Il peut intéresser notamment les personnes suivantes
- celles qui veulent saisir des chiffres via une numérotation lente au cadran
- les utilisateurs qui souhaitent faire entrer un ancien téléphone analogique dans l’ère numérique
- les enseignants qui ont besoin d’un pilote noyau d’exemple et d’un environnement virtuel de développement/test sans matériel réel
- ou encore pour d’autres expérimentations créatives
Câblage du circuit
- Un cadran rotatif se compose essentiellement de deux interrupteurs : BUSY (état ouvert) et PULSE (état fermé)
- Ces deux interrupteurs sont reliés aux broches GPIO d’un système capable d’exécuter Linux embarqué, avec des résistances de pull-up
- Quand on tourne le cadran, l’interrupteur BUSY passe à l’état fermé, puis pendant le retour du cadran à sa position initiale, l’interrupteur PULSE alterne de façon répétée entre ouvert et fermé
- Le branchement et le brochage varient selon le pays ou le fabricant ; il est donc recommandé de tester la réponse des interrupteurs avec un multimètre
- Le rapport cyclique du signal d’impulsion (durée ouvert/fermé) ainsi que la méthode de décodage diffèrent aussi selon les pays et les fabricants
- Exemple : en Allemagne, une impulsion correspond à 62 ms ouvert et 38 ms fermé
- En général, une à neuf impulsions correspondent à 1 à 9, et dix impulsions à 0 (avec des exceptions, comme la Suède)
- En cas de doute, il faut vérifier l’étiquette du cadran ou effectuer des tests
Utilisation
- Ce pilote est un module noyau externe standard (out-of-tree kernel module)
- En résumé, les étapes sont les suivantes
- ajouter un nœud
rotary-dial dans l’arbre des périphériques, et mapper pulse-gpios ainsi que busy-gpios vers les broches réelles
- si nécessaire, modifier la table des keycodes avec la propriété
linux,keycodes
- définir le chemin des sources du noyau (
KDIR) comme variable d’environnement, puis compiler, installer et charger le module
- Une fois le module noyau chargé, un périphérique d’entrée est créé et se comporte comme un pavé numérique
- L’outil evemu permet de surveiller les propriétés du périphérique d’entrée ainsi que les événements du cadran
Machine virtuelle (VM) pour le développement et les tests
- Un environnement de machine virtuelle est fourni pour le développement du pilote et les tests end-to-end
- Cette VM fournit des GPIO busy/pulse simulés via gpio-sim, injectés dans le devicetree
- Il est possible de contrôler les GPIO depuis l’espace utilisateur afin de mettre en œuvre des scénarios de test
- La VM peut être construite et exécutée après activation du gestionnaire de paquets Nix et de la fonctionnalité flakes
- Dans la VM, on arrive directement dans un shell de développement à la connexion
- Le chargement et le déchargement du module sont également pris en charge après compilation du pilote
- L’outil
rotary_dialer permet de simuler un nombre précis d’impulsions pour tester la saisie au cadran
- (dans un environnement de codage suédois, 3 impulsions sont reconnues comme le chiffre 2, par exemple)
Tests
- Le pilote est fourni avec une suite de tests complète
- Dans l’environnement VM,
make test permet d’exécuter des cas automatisés
- on peut vérifier diverses situations, comme le bon fonctionnement du périphérique d’entrée, l’émission du keycode correct lors de la saisie d’un chiffre au cadran, ou encore le traitement des entrées invalides
Intégration dans le mainline
- Le développeur se dit optimiste sur l’avenir du cadran rotatif, tout en plaisantant sur le fait que Linus Torvalds pourrait ne pas partager cet avis
1 commentaires
Commentaires sur Hacker News