00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifdef WINGMAN
00024
00025 #include <stdio.h>
00026 #include "Inform.h"
00027 #include "ResizeArray.h"
00028
00029 extern "C" {
00030 #include "wingforce.h"
00031 }
00032 #include "P_Buttons.h"
00033 #include "P_JoystickButtons.h"
00034
00035 JoystickButtons::JoystickButtons() {
00036 joy = NULL;
00037 }
00038
00039 int JoystickButtons::do_start(const SensorConfig *config) {
00040 if (joy) return 0;
00041 const char *name = config->getname();
00042 char joyname[100];
00043 if(name[0]!='/') snprintf(joyname,100,"/%s",name);
00044 else snprintf(joyname,100,"%s",name);
00045 fprintf(stderr,"Opening joystick: %s\n",joyname);
00046 joy = joy_open(joyname);
00047 return (joy != NULL);
00048 }
00049
00050 JoystickButtons::~JoystickButtons() {
00051 joy_close(joy);
00052 }
00053
00054 void JoystickButtons::update() {
00055 int x, y, t, hat, buttons;
00056 int i;
00057
00058 if(joy==NULL) return;
00059
00060 joy_getstatus(joy, &x, &y, &t, &hat, &buttons);
00061
00062 for(i=0;i<MAX_BUTTONS;i++) {
00063 stat[i] = buttons%2;
00064 buttons >>= 1;
00065 }
00066 }
00067
00068 #endif //WINGMAN