Andreas Garmannslund / Mbed 2 deprecated SimplePlatformGame

Dependencies:   N5110 PinDetect PowerControl mbed

Committer:
Siriagus
Date:
Mon May 11 04:40:23 2015 +0000
Revision:
18:709ea375b0df
Parent:
17:d6a3b29cab31
Fixed some formatting errors in documentation.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Siriagus 4:d6661b976359 1 #include "InputManager.h"
Siriagus 4:d6661b976359 2
Siriagus 17:d6a3b29cab31 3 /** @file InputManager.cpp
Siriagus 17:d6a3b29cab31 4 * @author Andreas Garmannslund
Siriagus 17:d6a3b29cab31 5 * @date April 2015
Siriagus 17:d6a3b29cab31 6 */
Siriagus 17:d6a3b29cab31 7
Siriagus 4:d6661b976359 8 InputManager::InputManager(PinName pinA, PinName pinB, PinName pinC, PinName joyH, PinName joyV, PinName joyBtn)
Siriagus 4:d6661b976359 9 {
Siriagus 4:d6661b976359 10 // Init joystick
Siriagus 4:d6661b976359 11 joystick = new Joystick(joyH, joyV, joyBtn);
Siriagus 4:d6661b976359 12 joystick->calibrate();
Siriagus 4:d6661b976359 13
Siriagus 4:d6661b976359 14 // Init buttons
Siriagus 4:d6661b976359 15 btnA = new PinDetect(pinA);
Siriagus 4:d6661b976359 16 btnB = new PinDetect(pinB);
Siriagus 4:d6661b976359 17 btnC = new PinDetect(pinC);
Siriagus 4:d6661b976359 18
Siriagus 4:d6661b976359 19 // Default sample frequency
Siriagus 4:d6661b976359 20 btnA->setSampleFrequency();
Siriagus 4:d6661b976359 21 btnB->setSampleFrequency();
Siriagus 4:d6661b976359 22 btnC->setSampleFrequency();
Siriagus 4:d6661b976359 23 }
Siriagus 4:d6661b976359 24
Siriagus 4:d6661b976359 25 InputManager::~InputManager()
Siriagus 4:d6661b976359 26 {
Siriagus 4:d6661b976359 27 delete joystick;
Siriagus 4:d6661b976359 28 delete btnA;
Siriagus 4:d6661b976359 29 delete btnB;
Siriagus 4:d6661b976359 30 delete btnC;
Siriagus 4:d6661b976359 31 }
Siriagus 4:d6661b976359 32
Siriagus 10:f2488a0ecab7 33 void InputManager::addBtnPressInterrupt(Input::Button button, void (*func)(void))
Siriagus 10:f2488a0ecab7 34 {
Siriagus 10:f2488a0ecab7 35 PinDetect *btn = getBtnPtr(button);
Siriagus 10:f2488a0ecab7 36 if (btn) // if not null pointer
Siriagus 10:f2488a0ecab7 37 btn->attach_asserted(func);
Siriagus 10:f2488a0ecab7 38 }
Siriagus 10:f2488a0ecab7 39
Siriagus 10:f2488a0ecab7 40 PinDetect* InputManager::getBtnPtr(Input::Button button)
Siriagus 4:d6661b976359 41 {
Siriagus 10:f2488a0ecab7 42 switch(button)
Siriagus 10:f2488a0ecab7 43 {
Siriagus 10:f2488a0ecab7 44 case Input::ButtonA:
Siriagus 10:f2488a0ecab7 45 return btnA;
Siriagus 10:f2488a0ecab7 46
Siriagus 10:f2488a0ecab7 47 case Input::ButtonB:
Siriagus 10:f2488a0ecab7 48 return btnB;
Siriagus 10:f2488a0ecab7 49
Siriagus 10:f2488a0ecab7 50 case Input::ButtonC:
Siriagus 10:f2488a0ecab7 51 return btnC;
Siriagus 10:f2488a0ecab7 52
Siriagus 10:f2488a0ecab7 53 default:
Siriagus 10:f2488a0ecab7 54 return 0; // Return 0 (nullptr) if invalid input
Siriagus 10:f2488a0ecab7 55 }
Siriagus 9:da608ae65df9 56 }
Siriagus 9:da608ae65df9 57
Siriagus 9:da608ae65df9 58 int InputManager::read(Input::Button button)
Siriagus 9:da608ae65df9 59 {
Siriagus 10:f2488a0ecab7 60 PinDetect *btn = getBtnPtr(button);
Siriagus 10:f2488a0ecab7 61 if (!btn) return 0; // Invalid button
Siriagus 9:da608ae65df9 62
Siriagus 10:f2488a0ecab7 63 return *btn; // Value of button
Siriagus 4:d6661b976359 64 }