- Rotary Phone Dial Linux Kernel Driver es un módulo del kernel que convierte un antiguo teléfono de disco en un dispositivo de entrada evdev para Linux
- El proyecto también resulta muy útil con fines de educación y pruebas, ya que ofrece un controlador de ejemplo sencillo y un entorno de desarrollo basado en máquina virtual
- Permite desarrollo y pruebas incluso sin hardware real, y admite simulación de GPIO
- Soporta casi cualquier configuración de asignación de teclas y puede adaptarse a diversos esquemas de codificación por pulsos de distintos países
- Como es un módulo estándar del kernel, se puede extender e integrar fácilmente en sistemas Linux
Resumen de Rotary Phone Dial Linux Kernel Driver
- Este proyecto es un módulo del kernel que convierte el dial rotatorio de un teléfono antiguo en un dispositivo de entrada estándar de Linux (por ejemplo, un teclado numérico)
- Podría interesarle a personas como las siguientes
- Quienes quieran introducir números mediante un marcado lento
- Usuarios que quieran llevar un teléfono analógico de antaño a la era digital
- Educadores que necesiten un controlador de ejemplo del kernel y un entorno virtual de desarrollo/pruebas sin hardware real
- Otros fines de experimentación creativa
Cómo conectar el circuito
- El dial rotatorio está compuesto básicamente por dos interruptores: BUSY (estado abierto) y PULSE (estado cerrado)
- Estos dos interruptores se conectan, junto con resistencias pull-up, a los pines GPIO de un sistema capaz de ejecutar Linux embebido
- Al girar el dial, el interruptor BUSY cambia al estado cerrado, y mientras el dial vuelve a su posición original, el interruptor PULSE repite la apertura y el cierre
- La conexión y la distribución de pines varían según el país o el fabricante, por lo que se recomienda probar la respuesta de los interruptores con un multímetro
- El ciclo de trabajo de la señal de pulsos (tiempo abierto/cerrado) y el método de decodificación también difieren según el país y el fabricante
- Ejemplo: en Alemania, por cada pulso son 62 ms abierto y 38 ms cerrado
- Por lo general, de uno a nueve pulsos corresponden a 1–9, y diez pulsos corresponden a 0 (aunque hay excepciones, como Suecia)
- Si hay dudas, conviene revisar la etiqueta del dial o hacer pruebas
Uso
- Este controlador es un módulo externo estándar del kernel (out-of-tree kernel module)
- Resumen de los pasos
- Agregar un nodo
rotary-dial al árbol de dispositivos y mapear pulse-gpios y busy-gpios a los pines reales
- Si es necesario, cambiar el mapa de códigos de tecla con la propiedad
linux,keycodes
- Definir la ruta del código fuente del kernel (
KDIR) como variable de entorno, luego compilar, instalar y cargar el módulo
- Cuando se carga el módulo del kernel, se crea un dispositivo de entrada que funciona como teclado numérico
- Se puede usar la herramienta evemu para monitorear las propiedades del dispositivo de entrada y los eventos del dial
Máquina virtual (VM) para desarrollo y pruebas
- Se proporciona un entorno de máquina virtual para el desarrollo del controlador y las pruebas end-to-end
- Esta VM incluye un parche al devicetree con GPIO busy/pulse simulados mediante gpio-sim
- Es posible controlar los GPIO desde espacio de usuario para implementar escenarios de prueba
- Se puede compilar y ejecutar la VM tras habilitar el gestor de paquetes Nix y la función flakes
- Dentro de la VM se inicia sesión directamente en un shell de desarrollo
- También se admite cargar y descargar el módulo después de compilar el controlador
- La herramienta
rotary_dialer permite simular una cantidad específica de pulsos para probar la entrada del dial
- (Por ejemplo, en un entorno con codificación sueca, 3 pulsos se reconocen como el número 2)
Pruebas
- El controlador incluye una suite de pruebas integral
- En el entorno de VM, se pueden ejecutar casos automatizados con
make test
- Es posible verificar el funcionamiento del dispositivo de entrada, confirmar que al marcar números se emiten los códigos de tecla correctos y revisar diversos escenarios como el manejo de entradas inválidas
Estado de incorporación al mainline
- El desarrollador comenta en tono humorístico que ve el futuro del dial rotatorio de forma positiva, aunque Linus Torvalds podría no estar de acuerdo
1 comentarios
Comentarios de Hacker News