Matthaeus Vorraber
/
ButtonEventDemo
Check Flag
BtnEventM0.h
- Committer:
- hollegha2
- Date:
- 2014-10-27
- Revision:
- 0:35d70ff5c12e
- Child:
- 1:6e9e9eafb91a
File content as of revision 0:35d70ff5c12e:
class BtnEventM0 { public: int16_t pressed; BtnEventM0(PinName pin) : _isr(pin) { pressed=0; } int CheckFlag() { if( pressed ) { pressed=0; return 1; } return 0; } void CheckButton() { if( _isr.read() ) pressed = 1; } void Init() { _isr.rise(this, &BtnEventM0::RisingISR); } void RisingISR() { if( _isr.read() ) pressed = 1; } protected: InterruptIn _isr; }; /* class BtnEventM02 : public BtnEventM0 { public: BtnEventM02(PinName pin) : BtnEventM0(pin) { _tm.stop(); _tm.reset(); _state=1; } void Init() { _isr.rise(this, &BtnEventM02::RisingISR); } void RisingISR() { if( !_isr.read() ) return; pressed = 1; _tm.start(); _state = 2; } void CheckButton() { if( _state==1 ) return; if( _state==2 ) { if( !_isr.read() ) { _state = 1; return; } if( _tm.read_ms()>500 ) { _tm.reset(); _state = 3; pressed = 1; } } else if( _state==3 ) { if( !_isr.read() ) { _state = 1; return; } if( _tm.read_ms()>100 ) { _tm.reset(); _state = 3; pressed = 1; } } } private: int16_t _state; Timer _tm; }; */