This directory contains the Linux USB Tranzport and Alphatrack Kernel drivers.

See http://www.frontierdesign.com for details on these devices.

Userspace test code is available from

git://toutatis.isc.org/home/d/src/git/frontier.git

At present the tranzport does reads/writes of 8 byte cmds to
/dev/tranzport0 to control the lights, screen, and wheel.

At present the alphatrack accepts reads/writes of 12 byte cmds to
/dev/tranzport0 to control the lights, screen, fader and touchpad.

The tranzport driver provides a rudimentary sysfs interface for the status of
the device and a writable parameter for turning wheel compression on and off.

The API is nothing more than the USB commands issued to the device. Why?

The control wheel/fader can generate events far too quickly for
a typical userspace application to keep up with them via libusb. Input
needs to be 100% accurate and fast in order for the alphatrack or tranzport
to be useful.

UIO would be useful except that usb disconnect events need
to be handled correctly.

A sysfs interface is perfect for simple userspace apps to do fun things with
the lights and screen. But it's fairly lousy for handling input events and
very lousy for watching the state of the shuttle wheel.

A linux input events interface is great for the input events and shuttle wheel.
* It's theoretically OK on LEDs.
* A fader can be mapped to an absolute mouse device.
* But there is no LCD support at all, or fader feedback support in that API

So, thus, these stubby drivers exist.

In the end this could be driven by a midi layer, which handles all those
cases via a well defined API, but - among other things - is slow, doesn't do
flow control, and is a LOT of extra work, none of which is required at
the kernel level (probably). Frankly, I'd like to keep the
core driver simple because the only realtime work really required is
the bottom half interrupt handler and the output overlapping.

Exposing some sort of clean api to userspace would be perfect. What that
API looks like? Gah. beats me.
