IO is an event based input manager which permit to select which composents are manged on your system

Dependencies:   C12832 FXOS8700Q LM75B MMA7660

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?

UserRevisionLine numberNew 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 };