IO is an event based input manager which permit to select which composents are manged on your system
Dependencies: C12832 FXOS8700Q LM75B MMA7660
Diff: FrdmK64f_Input.hpp
- Revision:
- 1:7be9a82f3ab8
- Parent:
- 0:2ac59c564ab0
- Child:
- 2:c871dc21467b
--- a/FrdmK64f_Input.hpp Tue Feb 23 17:25:07 2016 +0000 +++ b/FrdmK64f_Input.hpp Tue Feb 23 18:38:27 2016 +0000 @@ -5,31 +5,43 @@ template <class Parent> class FrdmK64f_Input : public Parent { - // Buttons - InterruptIn _buttonLeft; - InterruptIn _buttonRight; - -public: +public: // List of manged Inputs enum IDBinaryInput { ButtonLeft, - ButtonRight + ButtonRight, + IDBinaryInput_MAX }; + +private: + // Buttons + InterruptIn _buttonLeft; + InterruptIn _buttonRight; + bool _buttonEnable[2]; + +public: FrdmK64f_Input(void) - : _buttonLeft(SW2), _buttonRight(SW3) + : _buttonLeft(SW3), _buttonRight(SW2) { + memset(_buttonEnable, 1, sizeof(_buttonEnable)); + _buttonLeft.rise(this, &FrdmK64f_Input::onButtonLeftRise); _buttonLeft.fall(this, &FrdmK64f_Input::onButtonLeftFall); _buttonRight.rise(this, &FrdmK64f_Input::onButtonRightRise); _buttonRight.fall(this, &FrdmK64f_Input::onButtonRightFall); } - void onButtonLeftRise(void) { Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonLeft, Event::Rise)); } - void onButtonLeftFall(void) { Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonLeft, Event::Fall)); } - void onButtonRightRise(void) { Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonRight, Event::Rise)); } - void onButtonRightFall(void) { Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonRight, Event::Fall)); } + using Parent::setEnable; + void setEnable(FrdmK64f_Input::IDBinaryInput inp, bool act) { _buttonEnable[inp] = act; } + + // Not interresting section (do not use those methods) + // Callbacks for joystick + void onButtonLeftRise(void) { if (_buttonEnable[ButtonLeft]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonLeft, Event::Rise)); } + void onButtonLeftFall(void) { if (_buttonEnable[ButtonLeft]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonLeft, Event::Fall)); } + void onButtonRightRise(void) { if (_buttonEnable[ButtonRight]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonRight, Event::Rise)); } + void onButtonRightFall(void) { if (_buttonEnable[ButtonRight]) Parent::_events.push(Event(Event::FrdmK64f, Event::BinaryInput, ButtonRight, Event::Fall)); } // Callback for others sensors virtual void chechAnalog(void) { Parent::chechAnalog(); }