- Rotary Phone Dial Linux Kernel Driver là một module kernel chuyển đổi điện thoại quay số kiểu cũ thành thiết bị nhập liệu evdev trên Linux
- Dự án này cung cấp một trình điều khiển mẫu đơn giản cùng môi trường phát triển dựa trên máy ảo, nên cũng rất hữu ích cho mục đích giáo dục và kiểm thử
- Có thể phát triển và kiểm thử ngay cả khi không có phần cứng thực, đồng thời hỗ trợ mô phỏng GPIO
- Hỗ trợ gần như mọi cấu hình ánh xạ phím và có thể tương thích với nhiều kiểu mã hóa xung khác nhau của từng quốc gia
- Vì là module kernel tiêu chuẩn nên có thể mở rộng và tích hợp vào hệ thống Linux một cách dễ dàng
Tổng quan về Rotary Phone Dial Linux Kernel Driver
- Dự án này là một module kernel chuyển mặt quay số của điện thoại xoay kiểu cũ thành thiết bị nhập liệu tiêu chuẩn của hệ thống Linux (ví dụ: bàn phím số)
- Những người sau có thể cân nhắc sử dụng
- Muốn nhập số bằng cách quay số với tốc độ chậm
- Người dùng muốn đưa điện thoại analog đời cũ vào thời đại số
- Giảng viên/người dạy học cần một trình điều khiển kernel mẫu và môi trường phát triển/kiểm thử ảo mà không cần phần cứng thực
- Hoặc các mục đích thử nghiệm sáng tạo khác
Cách nối mạch
- Về cơ bản, bộ quay số gồm hai công tắc: BUSY (trạng thái mở) và PULSE (trạng thái đóng)
- Hai công tắc này được nối với các chân GPIO của hệ thống có thể chạy Linux nhúng, kèm theo điện trở kéo lên
- Khi quay số, công tắc BUSY chuyển sang trạng thái đóng, và trong lúc mặt quay trở về vị trí ban đầu, công tắc PULSE sẽ lặp lại việc mở/đóng nhiều lần
- Cách đấu nối và sơ đồ chân khác nhau tùy theo quốc gia hoặc nhà sản xuất, vì vậy nên dùng đồng hồ vạn năng để kiểm tra phản ứng của công tắc
- Chu kỳ hoạt động (thời gian mở/đóng) của tín hiệu xung và cách giải mã cũng khác nhau theo từng quốc gia và nhà sản xuất
- Ví dụ: ở Đức, mỗi xung có 62ms mở và 38ms đóng
- Thông thường, một đến chín xung tương ứng với 1–9, còn mười xung tương ứng với 0 (dù có ngoại lệ như Thụy Điển)
- Nếu chưa chắc chắn, nên kiểm tra nhãn trên bộ quay số hoặc tự kiểm thử
Cách sử dụng
- Trình điều khiển này là một module kernel ngoài cây nguồn tiêu chuẩn (out-of-tree kernel module)
- Tóm tắt các bước
- Thêm node
rotary-dial vào device tree, ánh xạ pulse-gpios và busy-gpios tới các chân thực tế
- Nếu cần, thay đổi ánh xạ keycode bằng thuộc tính
linux,keycodes
- Chỉ định đường dẫn mã nguồn kernel (
KDIR) bằng biến môi trường, sau đó build, cài đặt và nạp module
- Khi module kernel được nạp, một thiết bị nhập liệu sẽ được tạo ra và hoạt động như bàn phím số
- Có thể dùng công cụ evemu để theo dõi thuộc tính thiết bị nhập liệu và các sự kiện quay số
Máy ảo (VM) cho phát triển và kiểm thử
- Cung cấp môi trường máy ảo cho phát triển trình điều khiển và kiểm thử end-to-end
- VM này vá devicetree với các GPIO busy/pulse được mô phỏng bằng gpio-sim
- Có thể điều khiển GPIO từ không gian người dùng để triển khai các kịch bản kiểm thử
- Có thể build và chạy VM sau khi bật trình quản lý gói Nix và tính năng flakes
- Khi vào VM, hệ thống sẽ đăng nhập thẳng vào shell phát triển
- Sau khi build trình điều khiển, cũng hỗ trợ nạp/gỡ module
- Có thể dùng công cụ
rotary_dialer để mô phỏng số lượng xung cụ thể nhằm kiểm tra nhập liệu quay số
- (Ví dụ trong môi trường mã hóa kiểu Thụy Điển, 3 xung sẽ được nhận là số 2)
Kiểm thử
- Trình điều khiển đi kèm bộ kiểm thử toàn diện
- Trong môi trường VM, có thể chạy các ca kiểm thử tự động bằng
make test
- Có thể kiểm tra nhiều tình huống như xác minh hoạt động của thiết bị nhập liệu, xác nhận việc phát ra keycode đúng khi quay số, xử lý đầu vào sai, v.v.
Có được đưa vào mainline hay không
- Tác giả nói đùa rằng mình lạc quan về tương lai của quay số kiểu xoay, nhưng Linus Torvalds có thể sẽ không đồng ý
1 bình luận
Ý kiến trên Hacker News