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: mbed N5110 ShiftReg PinDetect
InputManager.h@18:709ea375b0df, 2015-05-11 (annotated)
- Committer:
- Siriagus
- Date:
- Mon May 11 04:40:23 2015 +0000
- Revision:
- 18:709ea375b0df
- Parent:
- 17:d6a3b29cab31
- Child:
- 19:89c3eeb3761b
Fixed some formatting errors in documentation.
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| Siriagus | 4:d6661b976359 | 1 | #ifndef INPUT_H | 
| Siriagus | 4:d6661b976359 | 2 | #define INPUT_H | 
| Siriagus | 4:d6661b976359 | 3 | |
| Siriagus | 4:d6661b976359 | 4 | #include "N5110.h" | 
| Siriagus | 4:d6661b976359 | 5 | #include "PinDetect.h" | 
| Siriagus | 4:d6661b976359 | 6 | #include "Joystick.h" | 
| Siriagus | 4:d6661b976359 | 7 | |
| Siriagus | 17:d6a3b29cab31 | 8 | /// @file InputManager.h | 
| Siriagus | 10:f2488a0ecab7 | 9 | |
| Siriagus | 9:da608ae65df9 | 10 | struct Input | 
| Siriagus | 9:da608ae65df9 | 11 | { | 
| Siriagus | 10:f2488a0ecab7 | 12 | /** Used as identificator for the different buttons */ | 
| Siriagus | 9:da608ae65df9 | 13 | enum Button{ButtonA, ButtonB, ButtonC}; | 
| Siriagus | 9:da608ae65df9 | 14 | }; | 
| Siriagus | 9:da608ae65df9 | 15 | |
| Siriagus | 10:f2488a0ecab7 | 16 | /// Used to manage user input from buttons and thumb joystick | 
| Siriagus | 4:d6661b976359 | 17 | class InputManager | 
| Siriagus | 4:d6661b976359 | 18 | { | 
| Siriagus | 4:d6661b976359 | 19 | public: | 
| Siriagus | 4:d6661b976359 | 20 | |
| Siriagus | 10:f2488a0ecab7 | 21 | /** Creates a new InputManager object | 
| Siriagus | 10:f2488a0ecab7 | 22 | * @param pinA Pin connected to button A | 
| Siriagus | 10:f2488a0ecab7 | 23 | * @param pinB Pin connected to button B | 
| Siriagus | 10:f2488a0ecab7 | 24 | * @param pinc Pin connected to button C | 
| Siriagus | 10:f2488a0ecab7 | 25 | * @param x Pin connected to the horizontal potentiometer of the joystick | 
| Siriagus | 10:f2488a0ecab7 | 26 | * @param y Pin connected to the vertical potentiometer of the joystick | 
| Siriagus | 10:f2488a0ecab7 | 27 | * @param button Pin connected to the button of the thumb joystick | 
| Siriagus | 10:f2488a0ecab7 | 28 | */ | 
| Siriagus | 4:d6661b976359 | 29 | InputManager(PinName pinA, PinName pinB, PinName pinC, PinName joyH, PinName joyV, PinName joyBtn); | 
| Siriagus | 10:f2488a0ecab7 | 30 | |
| Siriagus | 10:f2488a0ecab7 | 31 | /** Deconstructor. Frees allocated memory related to the buttons and the joystick **/ | 
| Siriagus | 4:d6661b976359 | 32 | ~InputManager(); | 
| Siriagus | 4:d6661b976359 | 33 | |
| Siriagus | 4:d6661b976359 | 34 | Joystick *joystick; | 
| Siriagus | 10:f2488a0ecab7 | 35 | |
| Siriagus | 10:f2488a0ecab7 | 36 | /** @brief Adds a button interrupt which is invoked when the button is pressed. Button needs to be released for the interrupt to occur again. | 
| Siriagus | 10:f2488a0ecab7 | 37 | * @param button Name of the button. | 
| Siriagus | 10:f2488a0ecab7 | 38 | * @param func Callback function. | 
| Siriagus | 10:f2488a0ecab7 | 39 | */ | 
| Siriagus | 10:f2488a0ecab7 | 40 | void addBtnPressInterrupt(Input::Button button, void (*func)(void)); | 
| Siriagus | 10:f2488a0ecab7 | 41 | |
| Siriagus | 10:f2488a0ecab7 | 42 | |
| Siriagus | 10:f2488a0ecab7 | 43 | /** Reads the current value of a button. | 
| Siriagus | 10:f2488a0ecab7 | 44 | * @param button The button we want to read. | 
| Siriagus | 10:f2488a0ecab7 | 45 | * @return Returns 1 if button is pressed, 0 otherwise. | 
| Siriagus | 10:f2488a0ecab7 | 46 | */ | 
| Siriagus | 10:f2488a0ecab7 | 47 | int read(Input::Button button); | 
| Siriagus | 10:f2488a0ecab7 | 48 | |
| Siriagus | 10:f2488a0ecab7 | 49 | private: | 
| Siriagus | 10:f2488a0ecab7 | 50 | /// Button objects | 
| Siriagus | 4:d6661b976359 | 51 | PinDetect *btnA; | 
| Siriagus | 4:d6661b976359 | 52 | PinDetect *btnB; | 
| Siriagus | 4:d6661b976359 | 53 | PinDetect *btnC; | 
| Siriagus | 4:d6661b976359 | 54 | |
| Siriagus | 10:f2488a0ecab7 | 55 | /** Returns a pointer to the actual button object | 
| Siriagus | 10:f2488a0ecab7 | 56 | * @param button The requested button. | 
| Siriagus | 10:f2488a0ecab7 | 57 | * @return Pointer to the button. | 
| Siriagus | 10:f2488a0ecab7 | 58 | */ | 
| Siriagus | 18:709ea375b0df | 59 | PinDetect* getBtnPtr(Input::Button button); | 
| Siriagus | 4:d6661b976359 | 60 | }; | 
| Siriagus | 4:d6661b976359 | 61 | |
| Siriagus | 4:d6661b976359 | 62 | #endif | 
| Siriagus | 4:d6661b976359 | 63 |