- Rotary Phone Dial Linux Kernel Driver एक kernel module है जो पुराने dial-type टेलीफोन को Linux के evdev input device में बदल देता है
- यह प्रोजेक्ट सरल example driver और virtual machine-आधारित development environment प्रदान करता है, इसलिए शिक्षा और testing उद्देश्यों के लिए भी बेहद उपयोगी है
- वास्तविक hardware के बिना भी development और testing संभव है, और GPIO simulation का समर्थन करता है
- यह लगभग सभी keymapping settings को support करता है, और विभिन्न देशों की अलग-अलग pulse encoding schemes के साथ भी काम कर सकता है
- चूंकि यह एक standard kernel module है, इसलिए इसे Linux systems में आसानी से extend और integrate किया जा सकता है
Rotary Phone Dial Linux Kernel Driver अवलोकन
- यह प्रोजेक्ट पुराने rotary टेलीफोन के dial को Linux system के standard input device (जैसे: numeric keypad) में बदलने वाला एक kernel module है
- निम्न प्रकार के लोग इसका उपयोग करने पर विचार कर सकते हैं
- यदि आप धीमी dialing के जरिए नंबर input करना चाहते हैं
- ऐसे उपयोगकर्ता जो पुराने analog telephone को digital युग में लाना चाहते हैं
- शिक्षक, जिन्हें वास्तविक hardware के बिना example kernel driver और virtual development/testing environment चाहिए
- या अन्य रचनात्मक प्रयोगों के लिए
सर्किट कनेक्शन विधि
- rotary dial मूल रूप से दो switches से बना होता है: BUSY (open state) और PULSE (closed state)
- इन दोनों switches को pull-up resistor के साथ embedded Linux समर्थित system के GPIO pins से जोड़ा जाता है
- dial घुमाने पर BUSY switch closed state में बदल जाता है, और जब dial अपनी मूल स्थिति में लौटता है तब PULSE switch बार-बार open/close होता है
- wiring और pin layout देश या निर्माता के अनुसार अलग हो सकते हैं, इसलिए multimeter से switch behavior को test करना recommended है
- pulse signal का duty cycle (open/close timing) और decoding method भी देश और निर्माता के अनुसार अलग होते हैं
- उदाहरण: Germany में प्रति pulse 62ms open, 38ms closed
- सामान्यतः एक से नौ pulses का अर्थ 1~9 होता है, और दस pulses का अर्थ 0 होता है (Sweden आदि में अपवाद हैं)
- यदि स्पष्ट न हो, तो dial के label की जाँच करें या परीक्षण करें
उपयोग
- यह driver एक standard out-of-tree kernel module है
- चरणों का सारांश
- device tree में
rotary-dial node जोड़ें, और pulse-gpios तथा busy-gpios को वास्तविक pins से map करें
- आवश्यकता होने पर
linux,keycodes property से keycode map बदलें
- environment variable के रूप में kernel source path (
KDIR) सेट करें, फिर build और install करके module load करें
- kernel module load होने पर input device बन जाता है और numeric keypad की तरह काम करता है
- evemu tool से input device properties और dial events को monitor किया जा सकता है
development और testing के लिए virtual machine (VM)
- driver development और end-to-end testing के लिए virtual machine environment प्रदान किया गया है
- यह VM devicetree में gpio-sim से simulate किए गए busy/pulse GPIO को patch करके उपलब्ध कराया जाता है
- user space से GPIO को control करके test scenarios लागू किए जा सकते हैं
- Nix package manager और flakes feature enable करने के बाद VM को build और run किया जा सकता है
- VM के भीतर सीधे development shell में login हो जाता है
- driver build करने के बाद module loading/unloading भी supported है
rotary_dialer tool से pulse की एक निश्चित संख्या simulate करके dial input test किया जा सकता है
- (उदाहरण के लिए, Sweden-style coding environment में 3 pulses को संख्या 2 के रूप में पहचाना जाता है)
testing
- driver के साथ एक comprehensive test suite भी दी गई है
- VM environment में
make test से automated cases चलाए जा सकते हैं
- input device behavior का verification, dial से संख्या input पर सही keycode emission की जाँच, गलत input handling आदि जैसे कई scenarios की जाँच संभव है
mainline में शामिल होने की स्थिति
- developer ने मज़ाकिया अंदाज़ में कहा है कि वह rotary dial के भविष्य को सकारात्मक रूप से देखते हैं, हालांकि Linus Torvalds शायद सहमत न हों
1 टिप्पणियां
Hacker News की राय
synthetic programming(undocumented commands) का उपयोग करके छोटी beep ध्वनियाँ बनाकर dial pulse पूरे किए थे। नाम (alphabet support) डालने पर नंबर खोजकर तुरंत कॉल करने वाला तरीका इस्तेमाल किया था। 10 साल पहले कंपनी में Keith Jarrett से मिलने पर लोग अक्सर उन्हें musician समझ लेते थे, लेकिन इन्होंने उल्टा उनसे पूछा कि क्या वे HP-41C Synthetic Programming Manual के लेखक हैं, तो उन्होंने हैरानी और खुशी जताई थी। साथ में किताब की जानकारी और synthetic programming जानकारी के लिंक भी जोड़े