IO is an event based input manager which permit to select which composents are manged on your system
Dependencies: C12832 FXOS8700Q LM75B MMA7660
FrdmK64f_Input.hpp@1:7be9a82f3ab8, 2016-02-23 (annotated)
- Committer:
- co838_app56
- Date:
- Tue Feb 23 18:38:27 2016 +0000
- Revision:
- 1:7be9a82f3ab8
- Parent:
- 0:2ac59c564ab0
- Child:
- 2:c871dc21467b
Can now disable buttons
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
co838_app56 | 0:2ac59c564ab0 | 1 | #pragma once |
co838_app56 | 0:2ac59c564ab0 | 2 | |
co838_app56 | 0:2ac59c564ab0 | 3 | #include "mbed.h" |
co838_app56 | 0:2ac59c564ab0 | 4 | |
co838_app56 | 0:2ac59c564ab0 | 5 | template <class Parent> |
co838_app56 | 0:2ac59c564ab0 | 6 | class FrdmK64f_Input : public Parent |
co838_app56 | 0:2ac59c564ab0 | 7 | { |
co838_app56 | 1:7be9a82f3ab8 | 8 | public: // List of manged Inputs |
co838_app56 | 0:2ac59c564ab0 | 9 | |
co838_app56 | 0:2ac59c564ab0 | 10 | enum IDBinaryInput |
co838_app56 | 0:2ac59c564ab0 | 11 | { |
co838_app56 | 0:2ac59c564ab0 | 12 | ButtonLeft, |
co838_app56 | 1:7be9a82f3ab8 | 13 | ButtonRight, |
co838_app56 | 1:7be9a82f3ab8 | 14 | IDBinaryInput_MAX |
co838_app56 | 0:2ac59c564ab0 | 15 | }; |
co838_app56 | 1:7be9a82f3ab8 | 16 | |
co838_app56 | 1:7be9a82f3ab8 | 17 | private: |
co838_app56 | 0:2ac59c564ab0 | 18 | |
co838_app56 | 1:7be9a82f3ab8 | 19 | // Buttons |
co838_app56 | 1:7be9a82f3ab8 | 20 | InterruptIn _buttonLeft; |
co838_app56 | 1:7be9a82f3ab8 | 21 | InterruptIn _buttonRight; |
co838_app56 | 1:7be9a82f3ab8 | 22 | bool _buttonEnable[2]; |
co838_app56 | 1:7be9a82f3ab8 | 23 | |
co838_app56 | 1:7be9a82f3ab8 | 24 | public: |
co838_app56 | 0:2ac59c564ab0 | 25 | FrdmK64f_Input(void) |
co838_app56 | 1:7be9a82f3ab8 | 26 | : _buttonLeft(SW3), _buttonRight(SW2) |
co838_app56 | 0:2ac59c564ab0 | 27 | { |
co838_app56 | 1:7be9a82f3ab8 | 28 | memset(_buttonEnable, 1, sizeof(_buttonEnable)); |
co838_app56 | 1:7be9a82f3ab8 | 29 | |
co838_app56 | 0:2ac59c564ab0 | 30 | _buttonLeft.rise(this, &FrdmK64f_Input::onButtonLeftRise); |
co838_app56 | 0:2ac59c564ab0 | 31 | _buttonLeft.fall(this, &FrdmK64f_Input::onButtonLeftFall); |
co838_app56 | 0:2ac59c564ab0 | 32 | _buttonRight.rise(this, &FrdmK64f_Input::onButtonRightRise); |
co838_app56 | 0:2ac59c564ab0 | 33 | _buttonRight.fall(this, &FrdmK64f_Input::onButtonRightFall); |
co838_app56 | 0:2ac59c564ab0 | 34 | } |
co838_app56 | 0:2ac59c564ab0 | 35 | |
co838_app56 | 1:7be9a82f3ab8 | 36 | using Parent::setEnable; |
co838_app56 | 1:7be9a82f3ab8 | 37 | void setEnable(FrdmK64f_Input::IDBinaryInput inp, bool act) { _buttonEnable[inp] = act; } |
co838_app56 | 1:7be9a82f3ab8 | 38 | |
co838_app56 | 1:7be9a82f3ab8 | 39 | // Not interresting section (do not use those methods) |
co838_app56 | 1:7be9a82f3ab8 | 40 | // Callbacks for joystick |
co838_app56 | 1:7be9a82f3ab8 | 41 | void onButtonLeftRise(void) { if (_buttonEnable[ButtonLeft]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonLeft, Event::Rise)); } |
co838_app56 | 1:7be9a82f3ab8 | 42 | void onButtonLeftFall(void) { if (_buttonEnable[ButtonLeft]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonLeft, Event::Fall)); } |
co838_app56 | 1:7be9a82f3ab8 | 43 | void onButtonRightRise(void) { if (_buttonEnable[ButtonRight]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonRight, Event::Rise)); } |
co838_app56 | 1:7be9a82f3ab8 | 44 | void onButtonRightFall(void) { if (_buttonEnable[ButtonRight]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonRight, Event::Fall)); } |
co838_app56 | 0:2ac59c564ab0 | 45 | |
co838_app56 | 0:2ac59c564ab0 | 46 | // Callback for others sensors |
co838_app56 | 0:2ac59c564ab0 | 47 | virtual void chechAnalog(void) { Parent::chechAnalog(); } |
co838_app56 | 0:2ac59c564ab0 | 48 | }; |