A game for Lab 4 of ECE 4180

Dependencies:   4DGL-uLCD-SE LSM9DS1_Library SDFileSystem mbed-rtos mbed wave_player

Committer:
Dogstopper
Date:
Mon Mar 14 18:54:12 2016 +0000
Revision:
5:68f6014f10bd
Parent:
3:27889fffc2f7
Final;

Who changed what in which revision?

UserRevisionLine numberNew 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 2:623f29bad35c 6 :imu(sda, scl, xgAddr, mAddr),
Dogstopper 0:6a49493943be 7 pushButton(digitalIn, PullUp)
Dogstopper 0:6a49493943be 8 {
Dogstopper 0:6a49493943be 9 imu.begin();
Dogstopper 0:6a49493943be 10 // imu.calibrate(1);
Dogstopper 0:6a49493943be 11 }
Dogstopper 0:6a49493943be 12
Dogstopper 2:623f29bad35c 13 Thread* InputHandler::start() {
Dogstopper 2:623f29bad35c 14 return new Thread(&InputHandler::threadStarter, this, osPriorityNormal,1024);
Dogstopper 0:6a49493943be 15 }
Dogstopper 0:6a49493943be 16
Dogstopper 0:6a49493943be 17 float InputHandler::getXAccel() {
Dogstopper 0:6a49493943be 18 stdio_mutex.lock();
Dogstopper 0:6a49493943be 19 float temp = xAccel;
Dogstopper 0:6a49493943be 20 stdio_mutex.unlock();
Dogstopper 0:6a49493943be 21 return temp;
Dogstopper 0:6a49493943be 22 }
Dogstopper 0:6a49493943be 23
Dogstopper 0:6a49493943be 24 float InputHandler::getYAccel() {
Dogstopper 0:6a49493943be 25 stdio_mutex.lock();
Dogstopper 3:27889fffc2f7 26 float temp = yAccel;
Dogstopper 0:6a49493943be 27 stdio_mutex.unlock();
Dogstopper 0:6a49493943be 28 return temp;
Dogstopper 0:6a49493943be 29 }
Dogstopper 0:6a49493943be 30
Dogstopper 0:6a49493943be 31 float InputHandler::getZAccel() {
Dogstopper 0:6a49493943be 32 stdio_mutex.lock();
Dogstopper 3:27889fffc2f7 33 float temp = zAccel;
Dogstopper 0:6a49493943be 34 stdio_mutex.unlock();
Dogstopper 0:6a49493943be 35 return temp;
Dogstopper 0:6a49493943be 36 }
Dogstopper 0:6a49493943be 37
Dogstopper 0:6a49493943be 38 bool InputHandler::getPushed() {
Dogstopper 0:6a49493943be 39 stdio_mutex.lock();
Dogstopper 0:6a49493943be 40 float temp = isPushed;
Dogstopper 0:6a49493943be 41 stdio_mutex.unlock();
Dogstopper 0:6a49493943be 42 return temp;
Dogstopper 0:6a49493943be 43 }
Dogstopper 0:6a49493943be 44
Dogstopper 0:6a49493943be 45 void InputHandler::threadStarter(void const *p) {
Dogstopper 0:6a49493943be 46 InputHandler *instance = (InputHandler*)p;
Dogstopper 0:6a49493943be 47 instance->retrieveInputs();
Dogstopper 0:6a49493943be 48 }
Dogstopper 0:6a49493943be 49
Dogstopper 0:6a49493943be 50 void InputHandler::retrieveInputs() {
Dogstopper 0:6a49493943be 51
Dogstopper 0:6a49493943be 52 while(true) {
Dogstopper 0:6a49493943be 53 imu.readAccel();
Dogstopper 0:6a49493943be 54
Dogstopper 0:6a49493943be 55 stdio_mutex.lock();
Dogstopper 0:6a49493943be 56 xAccel = -imu.calcAccel(imu.ax);
Dogstopper 0:6a49493943be 57 yAccel = -imu.calcAccel(imu.ay);
Dogstopper 0:6a49493943be 58 zAccel = -imu.calcAccel(imu.az);
Dogstopper 0:6a49493943be 59 isPushed = pushButton.read() == 0;
Dogstopper 2:623f29bad35c 60 //printf("\t\txAccel: %.6f\n\ryAccel: %.6f\n\risPushed: %s", xAccel, yAccel, isPushed ? "true" : "false");
Dogstopper 0:6a49493943be 61 stdio_mutex.unlock();
Dogstopper 0:6a49493943be 62
Dogstopper 3:27889fffc2f7 63 Thread::wait(30);
Dogstopper 0:6a49493943be 64 }
Dogstopper 0:6a49493943be 65 }