Waldemar Dworakowski / DigitalInDebounced

DigitalInDebounced.h

Committer:
Waldek
Date:
2014-06-02
Revision:
1:b59d305c4365
Parent:
0:76aea589cbdd
Child:
2:dabe90a0bdc1

File content as of revision 1:b59d305c4365:

#pragma once
#include "mbed.h"
#include "TimerSubscriber.h"

/*-------------------------------------------------------------

(c) W.D. 2014

-------------------------------------------------------------*/

/*  ------ sample usage------
*/
#define SAMPLES_TO_DEBOUNCE 64

extern TimerSubscriber timer_user;

class DigitalInDebounced : TimerDependent
{
public:
    DigitalInDebounced(PinName pin, unsigned int inDebounceTime=300);
    DigitalInDebounced(PinName pin, PinMode mode, unsigned int inDebounceTime=300);
    virtual ~DigitalInDebounced();
    bool read(void);
    bool is_stable(void) {return stable;};
//    bool current_state(void) {return recent;};
    bool current_state(void) {return Switch->read();};
    unsigned int rd_PreDivider (void) {return PreDivider;};
    unsigned int rd_Divider (void) {return Divider;};
    unsigned int rd_DebounceTime (void) {return DebounceTime;};
    unsigned int rd_DebounceCounter (void) {return DebounceCounter;};
    virtual void TimerEvent(void);
private:
    bool recent;
    bool stable;
    DigitalIn *Switch;
    unsigned int PreDivider;
    unsigned int Divider;
    unsigned int DebounceTime;
    unsigned int DebounceCounter;
    void DigitalInDebounced_common(DigitalIn *SwitchIn, unsigned int inDebounceTime);
};