Controller.cpp

00001 #include "Controller.h"
00002 
00003 Controller::Controller()
00004 {
00005 
00006         oldJSValues.resize(8);
00007         oldButtonValues.resize(20);
00008         newJSValues.resize(8);
00009         newButtonValues.resize(20);
00010 
00011         BUTTON_A = 0;
00012         BUTTON_B = 1;
00013         BUTTON_X = 2;
00014         BUTTON_Y = 3;
00015         RIGHT_TRIGGER = 4;
00016         RIGHT_BUMPER = 5;
00017         LEFT_TRIGGER = 6;
00018         LEFT_BUMPER = 7;
00019         RIGHT_STICK = 8;
00020         LEFT_STICK = 9;
00021         JS_X_AXIS = 10;
00022         JS_Y_AXIS = 11;
00023 
00024         inputType = 0;
00025         shouldCalibrate = false;
00026 }
00027 
00028 void Controller::update(bool isButton, int index, int value)
00029 {
00030         controllerLock.lock();
00031         if (isButton)
00032         {
00033                 oldButtonValues[index] = newButtonValues[index];
00034                 newButtonValues[index] = value;
00035         }
00036         else
00037         {
00038                 oldJSValues[index] = newJSValues[index];
00039                 newJSValues[index] = value;
00040         }
00041         controllerLock.unlock();
00042 }
00043 
00044 void Controller::calibrate()
00045 {
00046         calibrationMonitor.lock();
00047         cout << "Press button A: ";
00048         calibrationMonitor.wait();
00049         BUTTON_A = inputType;
00050 
00051         cout << "Press button B: ";
00052         calibrationMonitor.wait();
00053         BUTTON_A = inputType;
00054 
00055         cout << "Press button X: ";
00056         calibrationMonitor.wait();
00057 
00058         cout << "Press button Y: ";
00059         calibrationMonitor.wait();
00060 
00061         cout << "Press button A: ";
00062         calibrationMonitor.wait();
00063 
00064         cout << "Press button A: ";
00065         calibrationMonitor.wait();
00066 
00067         cout << "Press button A: ";
00068         calibrationMonitor.wait();
00069 
00070         cout << "Press button A: ";
00071 
00072         shouldCalibrate = false;
00073         calibrationMonitor.unlock();
00074 }
00075 
00076 bool Controller::buttonPressed(int button)
00077 {
00078         bool pressed = false;
00079         controllerLock.lock();
00080         if (oldButtonValues[button] == 1 && newButtonValues[button] == 0)
00081                 pressed = true;
00082         else
00083                 pressed = false;
00084         controllerLock.unlock();
00085         return pressed;
00086 }
00087 
00088 bool Controller::buttonHeld(int button)
00089 {
00090         bool held = false;
00091         controllerLock.lock();
00092         if (oldButtonValues[button] == 1 && newButtonValues[button] == 1)
00093                 held = true;
00094         else
00095                 held = false;
00096         controllerLock.unlock();
00097         return held;
00098 }
00099 
00100 int Controller::getPreviousJSValue(int axis)
00101 {
00102         int value = 0;
00103         controllerLock.lock();
00104         value = oldJSValues[axis];
00105         controllerLock.unlock();
00106         return value;
00107 }
00108 
00109 int Controller::getCurrentJSValue(int axis)
00110 {
00111         int value = 0;
00112         controllerLock.lock();
00113         value = newJSValues[axis];
00114         controllerLock.unlock();
00115         return value;
00116 }
00117 
00118 bool Controller::needCalibration()
00119 {
00120         bool needed = false;
00121         calibrationMonitor.lock();
00122         needed = shouldCalibrate;
00123         calibrationMonitor.unlock();
00124         return needed;
00125 }
00126 
00127 void Controller::assignInput(int index)
00128 {
00129         calibrationMonitor.lock();
00130         inputType = index;
00131         calibrationMonitor.notify();
00132         calibrationMonitor.unlock();
00133 }
00134 
00135 void Controller::setCalibration(bool needed)
00136 {
00137         calibrationMonitor.lock();
00138         shouldCalibrate = needed;
00139         calibrationMonitor.unlock();
00140 }
Generated on Sun May 8 08:41:32 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3