David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 1 | This directory contains the Linux USB Tranzport and Alphatrack Kernel drivers. |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 2 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 3 | See http://www.frontierdesign.com for details on these devices. |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 4 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 5 | Userspace test code is available from |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 6 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 7 | git://toutatis.isc.org/home/d/src/git/frontier.git |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 8 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 9 | At present the tranzport does reads/writes of 8 byte cmds to |
| 10 | /dev/tranzport0 to control the lights, screen, and wheel. |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 11 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 12 | At present the alphatrack accepts reads/writes of 12 byte cmds to |
| 13 | /dev/tranzport0 to control the lights, screen, fader and touchpad. |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 14 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 15 | The tranzport driver provides a rudimentary sysfs interface for the status of |
| 16 | the device and a writable parameter for turning wheel compression on and off. |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 17 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 18 | The API is nothing more than the USB commands issued to the device. Why? |
| 19 | |
| 20 | The control wheel/fader can generate events far too quickly for |
| 21 | a typical userspace application to keep up with them via libusb. Input |
| 22 | needs to be 100% accurate and fast in order for the alphatrack or tranzport |
| 23 | to be useful. |
| 24 | |
| 25 | UIO would be useful except that usb disconnect events need |
| 26 | to be handled correctly. |
| 27 | |
| 28 | A sysfs interface is perfect for simple userspace apps to do fun things with |
| 29 | the lights and screen. But it's fairly lousy for handling input events and |
| 30 | very lousy for watching the state of the shuttle wheel. |
| 31 | |
| 32 | A linux input events interface is great for the input events and shuttle wheel. |
| 33 | * It's theoretically OK on LEDs. |
| 34 | * A fader can be mapped to an absolute mouse device. |
| 35 | * But there is no LCD support at all, or fader feedback support in that API |
| 36 | |
| 37 | So, thus, these stubby drivers exist. |
| 38 | |
| 39 | In the end this could be driven by a midi layer, which handles all those |
| 40 | cases via a well defined API, but - among other things - is slow, doesn't do |
| 41 | flow control, and is a LOT of extra work, none of which is required at |
| 42 | the kernel level (probably). Frankly, I'd like to keep the |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 43 | core driver simple because the only realtime work really required is |
| 44 | the bottom half interrupt handler and the output overlapping. |
| 45 | |
David Täht | b3bc12d | 2009-01-20 08:33:23 -0600 | [diff] [blame] | 46 | Exposing some sort of clean api to userspace would be perfect. What that |
David Taht | 8da3dc2 | 2008-12-17 17:13:45 -0800 | [diff] [blame] | 47 | API looks like? Gah. beats me. |