interactive: Make libraries buildable

Some confusion with the types and scope is resolved by making the ring
buffer a cpp file (it's all C though), and adding a header for the
definition of pins.

Signed-off-by: Joel Stanley <joel@jms.id.au>
interactive: improve error message when timeout

When the frequency input times out, we print Error. Change it so the
user has a better chance of knowing what's going on.

Signed-off-by: Joel Stanley <joel@jms.id.au>
Add gitignore

Signed-off-by: Joel Stanley <joel@jms.id.au>
interactive: Remove executable bits from TimerOne

Signed-off-by: Joel Stanley <joel@jms.id.au>
interactive: Add channel selection

Using the new menu item 'A' (case insensitive), a user can select from a
list of predefined channels. This eases configuration when setting up
more than one device, with the TX being 1500Hz above the RX.

Note that we listen on the third harmonic of the TX to avoid issues with
the RX stage not be able to tune very well above 27MHz (due to phase
imbalance issues).

Signed-off-by: Joel Stanley <joel@jms.id.au>
interactive: Add version string

Useful when debugging to ensure you're actually flashing the version you
think you are. Displays a string like follows:

 0.1 Dec 7 2014 21:51:34

Signed-off-by: Joel Stanley <joel@jms.id.au>
interactive: Workaround for old versions of GCC

The Arduino distribution for OSX ships an ancient version of GCC (4.3.2
vs 4.8.1 that Ubuntu has). This creates a binary that is 32% larger, and
appears to fail to access data placed in the PROGDATA section correctly.

Add a workaround so users do not hit this bug. When we get to the bottom
of it, we can remove the SRAM version and leave the lookup table in
flash.

Signed-off-by: Joel Stanley <joel@jms.id.au>