- Rotary Phone Dial Linux Kernel Driver adalah modul kernel yang mengubah telepon putar lawas menjadi perangkat input evdev di Linux
- Proyek ini juga sangat berguna untuk tujuan pendidikan dan pengujian karena menyediakan driver contoh sederhana dan lingkungan pengembangan berbasis mesin virtual
- Pengembangan dan pengujian dapat dilakukan bahkan tanpa perangkat keras nyata, dan mendukung simulasi GPIO
- Mendukung hampir semua pengaturan keymapping, serta mampu menangani berbagai skema pengodean pulsa dari berbagai negara
- Karena merupakan modul kernel standar, proyek ini mudah diperluas dan diintegrasikan ke sistem Linux
Gambaran umum Rotary Phone Dial Linux Kernel Driver
- Proyek ini adalah modul kernel yang mengubah dial telepon putar lawas menjadi perangkat input standar pada sistem Linux (misalnya keypad numerik)
- Pengguna yang mungkin tertarik menggunakannya antara lain
- mereka yang ingin memasukkan angka lewat proses dialing yang lambat
- pengguna yang ingin membawa telepon analog lama ke era digital
- pendidik yang membutuhkan contoh driver kernel dan lingkungan pengembangan/pengujian virtual tanpa perangkat keras nyata
- serta untuk berbagai eksperimen kreatif lainnya
Cara menghubungkan rangkaian
- Dial putar pada dasarnya terdiri dari dua sakelar: BUSY (keadaan terbuka) dan PULSE (keadaan tertutup)
- Kedua sakelar ini dihubungkan ke pin GPIO pada sistem yang mendukung embedded Linux dengan resistor pull-up
- Saat dial diputar, sakelar BUSY berubah ke keadaan tertutup, dan selama dial kembali ke posisi semula, sakelar PULSE berulang kali membuka/menutup
- Karena sambungan dan penataan pin berbeda-beda menurut negara atau produsen, disarankan menguji respons sakelar dengan multimeter
- Duty cycle sinyal pulsa (waktu terbuka/tertutup) dan metode decoding juga berbeda menurut negara dan produsen
- Contoh: di Jerman, terbuka 62 ms dan tertutup 38 ms per pulsa
- Umumnya satu hingga sembilan pulsa berarti 1–9, dan sepuluh pulsa berarti 0 (ada pengecualian seperti Swedia)
- Jika ragu, periksa label pada dial atau lakukan pengujian
Cara penggunaan
- Driver ini adalah modul kernel eksternal standar (out-of-tree kernel module)
- Ringkasan langkah-langkahnya
- tambahkan node
rotary-dial ke device tree, lalu petakan pulse-gpios dan busy-gpios ke pin yang sesuai
- bila perlu, ubah peta keycode melalui properti
linux,keycodes
- tetapkan jalur sumber kernel (
KDIR) sebagai variabel lingkungan, lalu build, instal, dan muat modulnya
- Setelah modul kernel dimuat, perangkat input akan dibuat dan berfungsi sebagai keypad numerik
- Properti perangkat input dan event dial dapat dipantau dengan alat evemu
Mesin virtual (VM) untuk pengembangan dan pengujian
- Disediakan lingkungan mesin virtual untuk pengembangan driver dan pengujian end-to-end
- VM ini menyertakan patch devicetree dengan busy/pulse GPIO yang disimulasikan menggunakan gpio-sim
- GPIO dapat dikendalikan dari user space untuk membuat skenario pengujian
- VM dapat di-build dan dijalankan setelah mengaktifkan manajer paket Nix dan fitur flakes
- Di dalam VM, pengguna langsung masuk ke shell pengembangan
- Setelah driver di-build, pemuatan dan pelepasan modul juga didukung
- Alat
rotary_dialer dapat digunakan untuk mensimulasikan jumlah pulsa tertentu guna menguji input dial
- (misalnya, dalam lingkungan pengodean ala Swedia, 3 pulsa dikenali sebagai angka 2)
Pengujian
- Driver ini juga menyediakan test suite yang komprehensif
- Di lingkungan VM, kasus otomatis dapat dijalankan dengan
make test
- berbagai situasi dapat diperiksa, seperti verifikasi perilaku perangkat input, memastikan keycode yang benar dipancarkan saat angka didial, serta penanganan input yang salah
Apakah akan masuk mainline
- Pengembang menyebutkan secara bercanda bahwa ia optimistis terhadap masa depan dial putar, meski Linus Torvalds mungkin tidak sependapat
1 komentar
Komentar Hacker News