Dependents:   BULME-TIMER_V1 BULME-TIMER_V2 Diplomarbeit_V1

button.h

Committer:
ladner
Date:
2016-04-22
Revision:
0:e627eaaa3dc2

File content as of revision 0:e627eaaa3dc2:

#include "mbed.h"

class dPrell
{
    public:
    dPrell(PinName pin):data(pin),interrupt(pin)
    {
        time = 500;
        Run();
        interrupt.rise(this,&dPrell::druck);
        interrupt.fall(this,&dPrell::druck);
    }
    void rise(void (*fptr)(void))
    {
        press.attach(fptr);
    }
    void fall(void (*fptr)(void))
    {
        release.attach(fptr);
    }
    void setTime(timestamp_t in)
    {
        time = in;
    }
    void mode(PinMode mode)
    {
        interrupt.mode(mode);
    }
    void trig()
    {
        Run();
    }
    protected:
    void druck()
    {
        if (last == data)
            return;
        else 
        {
            if (data&En)
            {
                    press.call();
                    En=0;
                    res.attach_us(this,&dPrell::Run,time);
            }
            if((data==0)&En)
            {
                release.call();
                En=0;
                res.attach_us(this,&dPrell::Run,time);
            }
        }
        last = data;
    }
    void Run()
    {
        last = data;
        En = 1;
    }
    timestamp_t time;
    DigitalIn data;
    Timeout res;
    InterruptIn interrupt;
    char last;
    char En;
    FunctionPointer  press;
    FunctionPointer  release;
};