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

Committer:
co838_app56
Date:
2016-02-23
Revision:
0:2ac59c564ab0
Child:
1:7be9a82f3ab8

File content as of revision 0:2ac59c564ab0:

#pragma once

#include "mbed.h"

template <class Parent>
class FrdmK64f_Input : public Parent
{
    // Buttons
    InterruptIn         _buttonLeft;
    InterruptIn         _buttonRight;
    
public:

    enum IDBinaryInput
    {
        ButtonLeft,
        ButtonRight
    };

    FrdmK64f_Input(void)
        : _buttonLeft(SW2), _buttonRight(SW3)
    {
        _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)); }
    
    // Callback for others sensors
    virtual void    chechAnalog(void) { Parent::chechAnalog(); }
};