A debouncing InterruptIn wrapper
ButtonIn.h@0:2e999fcd4c7b, 2012-02-06 (annotated)
- Committer:
- evwijk
- Date:
- Mon Feb 06 19:53:40 2012 +0000
- Revision:
- 0:2e999fcd4c7b
- Child:
- 1:e806603f0088
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
evwijk | 0:2e999fcd4c7b | 1 | #include "mbed.h" |
evwijk | 0:2e999fcd4c7b | 2 | |
evwijk | 0:2e999fcd4c7b | 3 | #ifndef _ButtonIn_ |
evwijk | 0:2e999fcd4c7b | 4 | #define _ButtonIn_ |
evwijk | 0:2e999fcd4c7b | 5 | |
evwijk | 0:2e999fcd4c7b | 6 | |
evwijk | 0:2e999fcd4c7b | 7 | class ButtonInCallbackInstance; |
evwijk | 0:2e999fcd4c7b | 8 | |
evwijk | 0:2e999fcd4c7b | 9 | |
evwijk | 0:2e999fcd4c7b | 10 | class ButtonIn { |
evwijk | 0:2e999fcd4c7b | 11 | |
evwijk | 0:2e999fcd4c7b | 12 | private: |
evwijk | 0:2e999fcd4c7b | 13 | InterruptIn _button; |
evwijk | 0:2e999fcd4c7b | 14 | Timeout _buttonDownTimeout; |
evwijk | 0:2e999fcd4c7b | 15 | |
evwijk | 0:2e999fcd4c7b | 16 | bool _buttonCanPress; |
evwijk | 0:2e999fcd4c7b | 17 | void (*_callback)(void); |
evwijk | 0:2e999fcd4c7b | 18 | ButtonInCallbackInstance *_callbackInstance; |
evwijk | 0:2e999fcd4c7b | 19 | void (ButtonInCallbackInstance::*_callbackMethod)(void); |
evwijk | 0:2e999fcd4c7b | 20 | |
evwijk | 0:2e999fcd4c7b | 21 | void click(); |
evwijk | 0:2e999fcd4c7b | 22 | void call(); |
evwijk | 0:2e999fcd4c7b | 23 | void reset(); |
evwijk | 0:2e999fcd4c7b | 24 | |
evwijk | 0:2e999fcd4c7b | 25 | |
evwijk | 0:2e999fcd4c7b | 26 | |
evwijk | 0:2e999fcd4c7b | 27 | public: |
evwijk | 0:2e999fcd4c7b | 28 | ButtonIn(PinName buttonPin); |
evwijk | 0:2e999fcd4c7b | 29 | |
evwijk | 0:2e999fcd4c7b | 30 | |
evwijk | 0:2e999fcd4c7b | 31 | void attach(void (*method)(void) = 0); |
evwijk | 0:2e999fcd4c7b | 32 | |
evwijk | 0:2e999fcd4c7b | 33 | template<class T> |
evwijk | 0:2e999fcd4c7b | 34 | void attach(T* instance, void (T::*method)(void)); |
evwijk | 0:2e999fcd4c7b | 35 | }; |
evwijk | 0:2e999fcd4c7b | 36 | |
evwijk | 0:2e999fcd4c7b | 37 | #endif |