We only need to call server_mainloop() once in the Hydra (or any device) because it is a method in the unique base class for the object.
Added button reports to the IDEA drive.  Added code to handle limit switches.  The drive will now report when it has entered a limit-switch area, and will refuse to follow commands further into that area.  There is something wrong with the programming mode that was supposed to make it abort moves based on interrupts when the inputs triggered.  I've asked the manufacturer for help -- the manual has a description that is inconsistent with the device behavior.
Added a hack to make the IDEA drive go to the limits (or a bit past) in several steps until we can figure out how to make the interrupt-driven stopping work with the motors.
Adding a configuration-file entry to tell the IDEA drive where it should set the position upon reset.  (untested)
Uses the same subroutine for high and low limit switches on IDEA drive.  Comments how to make the code actually use the interrupts (you need to write the interrupt enable inside a program that also does the move -- it cannot be done in 'real time' mode).
Applying patches from Johannes Zarl to reduce spam and direct messages properly on the WiiMote.
Merge https://github.com/rpavlik/vrpn