- Rotary Phone Dial Linux Kernel Driver, eski döner çevirmeli telefonları Linux'un evdev giriş aygıtına dönüştüren bir çekirdek modülüdür
- Proje, basit bir örnek sürücü ve sanal makine tabanlı geliştirme ortamı sunarak eğitim ve test amaçları için de oldukça kullanışlıdır
- Gerçek donanım olmadan da geliştirme ve test yapılabilir; GPIO simülasyonu desteklenir
- Neredeyse tüm tuş eşleme yapılandırmalarını destekler ve ülkeden ülkeye değişen çeşitli pulse kodlama yöntemlerine uyum sağlayabilir
- Standart bir çekirdek modülü olduğu için Linux sistemlerine kolayca genişletilebilir ve entegre edilebilir
Rotary Phone Dial Linux Kernel Driver'a genel bakış
- Bu proje, eski döner çevirmeli telefonların kadranını Linux sisteminde standart bir giriş aygıtına (ör. sayısal tuş takımı) dönüştüren bir çekirdek modülüdür
- Aşağıdaki kişiler için kullanmayı düşünmeye değer olabilir
- Yavaş çevirme hızıyla sayı girişi yapmak isteyenler
- Eski analog telefonları dijital çağa taşımak isteyen kullanıcılar
- Gerçek donanım olmadan örnek bir çekirdek sürücüsü ile sanal geliştirme/test ortamına ihtiyaç duyan eğitmenler
- Diğer yaratıcı deneysel amaçlar
Devre bağlantısı
- Döner kadran temel olarak iki anahtardan oluşur: BUSY (açık durum) ve PULSE (kapalı durum)
- Bu iki anahtar, gömülü Linux çalıştırabilen bir sistemin GPIO pinlerine pull-up dirençleriyle birlikte bağlanır
- Kadran çevrildiğinde BUSY anahtarı kapalı duruma geçer; kadran başlangıç konumuna dönerken PULSE anahtarı tekrar tekrar açılıp kapanır
- Bağlantı ve pin dizilimi, ülkeye veya üreticiye göre değiştiğinden anahtar tepkilerini bir multimetreyle test etmek önerilir
- Pulse sinyalinin duty cycle'ı (açık/kapalı süresi) ve çözümleme yöntemi de ülke ve üreticiye göre farklılık gösterir
- Örnek: Almanya'da pulse başına 62 ms açık, 38 ms kapalı
- Genellikle bir ila dokuz pulse 1-9'a, on pulse ise 0'a karşılık gelir (İsveç vb. istisnalar vardır)
- Emin olunamıyorsa kadrandaki etiket kontrol edilmeli veya test yapılmalıdır
Kullanım
- Bu sürücü, standart bir çekirdek dışı modüldür (out-of-tree kernel module)
- Adımlar özetle şöyledir
- Aygıt ağacına
rotary-dial düğümü ekleyin, pulse-gpios ve busy-gpios alanlarını gerçek pinlere eşleyin
- Gerekirse
linux,keycodes özelliğiyle tuş kodu eşlemesini değiştirin
- Çekirdek kaynak yolu (
KDIR) için ortam değişkeni tanımlayıp derleyin, kurun ve modülü yükleyin
- Çekirdek modülü yüklendiğinde bir giriş aygıtı oluşturulur ve sayısal tuş takımı gibi çalışır
- Giriş aygıtı özellikleri ile kadran olayları evemu aracıyla izlenebilir
Geliştirme ve test için sanal makine (VM)
- Sürücü geliştirme ve uçtan uca test için bir sanal makine ortamı sunulur
- Bu VM, gpio-sim ile simüle edilen busy/pulse GPIO'larını devicetree'ye yama olarak eklenmiş şekilde sağlar
- Kullanıcı alanından GPIO'lar kontrol edilerek test senaryoları uygulanabilir
- Nix paket yöneticisi ve flakes özelliği etkinleştirildikten sonra VM derlenip çalıştırılabilir
- VM içinde doğrudan geliştirme kabuğuna giriş yapılır
- Sürücü derlendikten sonra modül yükleme/boşaltma da desteklenir
rotary_dialer aracıyla belirli pulse sayıları simüle edilerek kadran girişi test edilebilir
- (Örneğin İsveç tarzı kodlama ortamında 3 pulse, 2 rakamı olarak algılanır)
Testler
- Sürücüyle birlikte kapsamlı bir test paketi de sunulur
- VM ortamında
make test ile otomatik test senaryoları çalıştırılabilir
- Giriş aygıtı davranışının doğrulanması, kadrandan sayı girildiğinde doğru tuş kodunun üretilmesi, hatalı girişlerin işlenmesi gibi çeşitli durumlar kontrol edilebilir
Mainline'a girme durumu
- Geliştirici, döner kadranın geleceğine olumlu bakıyor; ancak Linus Torvalds'ın buna katılmayabileceğini esprili bir dille belirtiyor
1 yorum
Hacker News yorumları
synthetic programming(belgelenmemiş komutlar) kullanarak kısa bip sesleri üretip çevirme darbelerini tamamlamış. İsim girince (alfabe desteğiyle) numarayı bulup hemen arayan bir yöntem kullanmış. 10 yıl önce şirkette Keith Jarrett ile karşılaştığında insanların sık sık onun müzisyen olup olmadığını karıştırdığına dair bir anekdot da anlatıyor; kendisi ise ona HP-41C Synthetic Programming Manual'in yazarı olup olmadığını sormuş ve Jarrett'ın buna şaşkınlık ve sevinçle tepki verdiğini hatırlıyor. İlgili bağlantılar olarak kitap bilgisi ve synthetic programming bilgisi eklenmiş.ATDTyerineATDPkomutunun kullanılabildiğini hatırlatıyor.