Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: N5110 PinDetect PowerControl mbed
InputManager.cpp@18:709ea375b0df, 2015-05-11 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |