A game for Lab 4 of ECE 4180
Dependencies: 4DGL-uLCD-SE LSM9DS1_Library SDFileSystem mbed-rtos mbed wave_player
InputHandler.cpp@0:6a49493943be, 2016-03-10 (annotated)
- Committer:
- Dogstopper
- Date:
- Thu Mar 10 20:10:35 2016 +0000
- Revision:
- 0:6a49493943be
- Child:
- 1:61b8141da36e
- Child:
- 2:623f29bad35c
Initial;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Dogstopper | 0:6a49493943be | 1 | #include "InputHandler.h" |
Dogstopper | 0:6a49493943be | 2 | |
Dogstopper | 0:6a49493943be | 3 | #define START_THREAD 1 |
Dogstopper | 0:6a49493943be | 4 | |
Dogstopper | 0:6a49493943be | 5 | InputHandler::InputHandler(PinName sda, PinName scl, uint8_t xgAddr, uint8_t mAddr, PinName digitalIn) |
Dogstopper | 0:6a49493943be | 6 | :thread(&InputHandler::threadStarter, this, osPriorityNormal,1024), |
Dogstopper | 0:6a49493943be | 7 | imu(sda, scl, xgAddr, mAddr), |
Dogstopper | 0:6a49493943be | 8 | pushButton(digitalIn, PullUp) |
Dogstopper | 0:6a49493943be | 9 | { |
Dogstopper | 0:6a49493943be | 10 | imu.begin(); |
Dogstopper | 0:6a49493943be | 11 | // imu.calibrate(1); |
Dogstopper | 0:6a49493943be | 12 | } |
Dogstopper | 0:6a49493943be | 13 | |
Dogstopper | 0:6a49493943be | 14 | void InputHandler::start() { |
Dogstopper | 0:6a49493943be | 15 | thread.signal_set(START_THREAD); |
Dogstopper | 0:6a49493943be | 16 | } |
Dogstopper | 0:6a49493943be | 17 | |
Dogstopper | 0:6a49493943be | 18 | float InputHandler::getXAccel() { |
Dogstopper | 0:6a49493943be | 19 | stdio_mutex.lock(); |
Dogstopper | 0:6a49493943be | 20 | float temp = xAccel; |
Dogstopper | 0:6a49493943be | 21 | stdio_mutex.unlock(); |
Dogstopper | 0:6a49493943be | 22 | return temp; |
Dogstopper | 0:6a49493943be | 23 | } |
Dogstopper | 0:6a49493943be | 24 | |
Dogstopper | 0:6a49493943be | 25 | float InputHandler::getYAccel() { |
Dogstopper | 0:6a49493943be | 26 | stdio_mutex.lock(); |
Dogstopper | 0:6a49493943be | 27 | float temp = (yAccel);// + 1.0) / 2.0; |
Dogstopper | 0:6a49493943be | 28 | stdio_mutex.unlock(); |
Dogstopper | 0:6a49493943be | 29 | return temp; |
Dogstopper | 0:6a49493943be | 30 | } |
Dogstopper | 0:6a49493943be | 31 | |
Dogstopper | 0:6a49493943be | 32 | float InputHandler::getZAccel() { |
Dogstopper | 0:6a49493943be | 33 | stdio_mutex.lock(); |
Dogstopper | 0:6a49493943be | 34 | float temp = (zAccel);// + 1.0) / 2.0; |
Dogstopper | 0:6a49493943be | 35 | stdio_mutex.unlock(); |
Dogstopper | 0:6a49493943be | 36 | return temp; |
Dogstopper | 0:6a49493943be | 37 | } |
Dogstopper | 0:6a49493943be | 38 | |
Dogstopper | 0:6a49493943be | 39 | bool InputHandler::getPushed() { |
Dogstopper | 0:6a49493943be | 40 | stdio_mutex.lock(); |
Dogstopper | 0:6a49493943be | 41 | float temp = isPushed; |
Dogstopper | 0:6a49493943be | 42 | stdio_mutex.unlock(); |
Dogstopper | 0:6a49493943be | 43 | return temp; |
Dogstopper | 0:6a49493943be | 44 | } |
Dogstopper | 0:6a49493943be | 45 | |
Dogstopper | 0:6a49493943be | 46 | void InputHandler::threadStarter(void const *p) { |
Dogstopper | 0:6a49493943be | 47 | InputHandler *instance = (InputHandler*)p; |
Dogstopper | 0:6a49493943be | 48 | instance->retrieveInputs(); |
Dogstopper | 0:6a49493943be | 49 | } |
Dogstopper | 0:6a49493943be | 50 | |
Dogstopper | 0:6a49493943be | 51 | void InputHandler::retrieveInputs() { |
Dogstopper | 0:6a49493943be | 52 | thread.signal_wait(START_THREAD); |
Dogstopper | 0:6a49493943be | 53 | |
Dogstopper | 0:6a49493943be | 54 | while(true) { |
Dogstopper | 0:6a49493943be | 55 | imu.readAccel(); |
Dogstopper | 0:6a49493943be | 56 | |
Dogstopper | 0:6a49493943be | 57 | stdio_mutex.lock(); |
Dogstopper | 0:6a49493943be | 58 | xAccel = -imu.calcAccel(imu.ax); |
Dogstopper | 0:6a49493943be | 59 | yAccel = -imu.calcAccel(imu.ay); |
Dogstopper | 0:6a49493943be | 60 | zAccel = -imu.calcAccel(imu.az); |
Dogstopper | 0:6a49493943be | 61 | isPushed = pushButton.read() == 0; |
Dogstopper | 0:6a49493943be | 62 | //printf("xAccel: %.6f\n\ryAccel: %.6f\n\risPushed: %s", xAccel, yAccel, isPushed ? "true" : "false"); |
Dogstopper | 0:6a49493943be | 63 | stdio_mutex.unlock(); |
Dogstopper | 0:6a49493943be | 64 | |
Dogstopper | 0:6a49493943be | 65 | Thread::wait(20); // ~60Hz |
Dogstopper | 0:6a49493943be | 66 | } |
Dogstopper | 0:6a49493943be | 67 | } |