ArJoyHandler Class Reference

#include <ArJoyHandler.h>

List of all members.


Detailed Description

Interfaces to a joystick.

The joystick handler keeps track of the minimum and maximums for both axes, updating them to constantly be better calibrated. The speeds set influence what is returned by getAdjusted...

The joystick is not opened until init is called. What should basically be done to use this class is to 'init' a joystick, do a 'setSpeed' so you can use 'getAdusted', then at some point do a 'getButton' to see if a button is pressed, and then do a 'getAdjusted' to get the values to act on.

Also note that x is usually rotational velocity (since it right/left), whereas Y is translational (since it is up/down).

You can also use this to do multiple uses with the joystick, for example to have button 1 drive the robot while to have button 2 move the camera, you can get the different values you want (don't want to move the camera as quickly or as far as the robot) by using setSpeed before doing getAdjusted since setSpeed is fast and won't take any time.


Public Member Functions

 ArJoyHandler (bool useOSCal=true, bool useOldJoystick=false)
 Constructor.
void endCal (void)
 Ends the calibration process.
void getAdjusted (int *x, int *y, int *z=NULL)
 Gets the adjusted reading, as integers, based on the setSpeed.
double getAxis (unsigned int axis)
 Gets the floating (-1 to 1) location of the given joystick axis.
bool getButton (unsigned int button)
 Gets the button.
void getDoubles (double *x, double *y, double *z=NULL)
 Gets the adjusted reading, as floats, between -1.0 and 1.0.
unsigned int getNumAxes (void)
 Gets the number of axes the joystick has.
unsigned int getNumButtons (void)
 Gets the number of buttons the joystick has.
void getSpeeds (int *x, int *y, int *z)
 Gets the speeds that X and Y are set to.
void getStats (int *maxX, int *minX, int *maxY, int *minY, int *cenX, int *cenY)
 Gets the stats for the joystick, useful after calibrating to save values.
void getUnfiltered (int *x, int *y, int *z=NULL)
bool getUseOSCal (void)
 Gets whether to just use OS calibration or not.
bool haveJoystick (void)
 Returns if the joystick was successfully initialized or not.
bool haveZAxis (void)
 Returns true if we definitely have a Z axis (we don't know in windows unless it moves).
bool init (void)
 Intializes the joystick, returns true if successful.
void setSpeeds (int x, int y, int z=0)
 Sets the max that X or Y will return.
void setStats (int maxX, int minX, int maxY, int minY, int cenX, int cenY)
 Sets the stats for the joystick, useful for restoring calibrated settings.
void setUseOSCal (bool useOSCal)
 Sets whether to just use OS calibration or not.
void startCal (void)
 Starts the calibration process.
 ~ArJoyHandler ()
 Destructor.

Protected Member Functions

void getData (void)
void getNewData (void)
void getOldData (void)

Protected Attributes

std::map< unsigned int, int > myAxes
std::map< unsigned int, bool > myButtons
int myCenX
int myCenY
bool myFirstData
bool myHaveZ
bool myInitialized
int myJoyData
int myJoyDesc
char myJoyNameTemp [512]
int myJoyNumber
ArTime myLastDataGathered
ArTime myLastOpenTry
int myMaxX
int myMaxY
int myMinX
int myMinY
FILE * myOldJoyDesc
int myPhysMax
int myTopX
int myTopY
int myTopZ
bool myUseOld
bool myUseOSCal


Member Function Documentation

void ArJoyHandler::getUnfiltered ( int *  x,
int *  y,
int *  z = NULL 
)

Gets the unfilitered reading, mostly for internal use, maybe useful for Calibration


The documentation for this class was generated from the following file:
Generated on Thu Aug 6 09:39:35 2009 for Aria by  doxygen 1.5.1