=head1 NAME

pyrocket - PyGTK control of Striker II and Dream Cheeky USB Missile Launchers

=head1 SYNOPSIS

pyrocket

=head1 DESCRIPTION

B<pyrocket> is used to operate USB foam dart launchers. It supports many models,
and for some, has considerably more functionality than the drivers provided by
the manufacturer. One may find it useful as a starting point for controlling
other USB devices, or just for waging cubicle warfare.

pyrocket automatically detects the launcher(s) and a joystick. For a
webcam-enabled device, a video window is provided.

=head1 HARDWARE SUPPORT

B<pyrocket> has been thoroughly tested on these devices:

=over 2

=item * The Yellow/Red B<USB Circus Cannon> sold by Dream Cheeky.

=item * The "original" Green/Black B<USB Missile Launcher> sold by Dream Cheeky.

=item * The "webcam" Blue/Black B<USB MSN Missile Launcher> sold by Dream Cheeky.

=item * The Striker II B<USB Laser Guided Missile Launcher> sold by Ninja Gizmos

=back

All hardware features are supported on these devices, including the
Striker II laser control and sensors for position extrema on the Dream Cheeky
models.

=head1 BUGS

=over 2

=item B<Spontaneous movement on startup>

With a joystick connected, the launcher spontaneously starts moving on
startup.  It does this every time the program is run after plugging in the
joystick, until any one of the joystick buttons (including D-pad) is
pressed (this can be done at any time after connecting).  This is probably
a bug in PyGame.

B<Workaround:> Press any button on the joystick after connecting it to USB.

=item B<Stuck limit switch>

The "right" limit-switch has been observed to stick in the "on" position.  It
remains so even after unplugging/replugging the launcher device.  This may be
a mechanical issue.

B<Workaround:> Enable the "Override" feature, then move to the right-most
extreme and back again.

=item B<Video doesn't work>

At the time of this writing, the USB webcam packaged with the Dream Cheeky MSN
Missile Launcher does not work.  The vendor/product ID as shown with `lsusb'
is reported as 0ac8:307b (Z-Star Microelectronics Corp. USB 1.1 WebCam).
This is a problem with the kernel driver.  Hopefully this will be fixed soon.

B<Workaround:> Use a different webcam, possibly attached with rubber bands.
Be creative.

=item B<My gray rocket launcher doesn't work>

The predecessor to the Striker II launcher has the same VID/PID, but uses
different USB commands.  There is a program out there called "pymissile" that
supposedly supports this launcher.  The original Striker launcher accepts
batteries and lacks a laser.

=back

=head1 AUTHORS

B<pyrocket> was written by Karl Ostmo <kostmo@gmail.com>.

=head1 ACKNOWLEDGEMENTS

Reverse engineering of the USB control messages for each rocket launcher was
accomplished with SnoopyPro: http://sourceforge.net/projects/usbsnoop/

=head1 COPYRIGHT

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.

On Debian GNU/Linux systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.

=cut
