A debouncing InterruptIn wrapper

Revision:
1:e806603f0088
Parent:
0:2e999fcd4c7b
Child:
2:c353357a97e4
--- a/ButtonIn.h	Mon Feb 06 19:53:40 2012 +0000
+++ b/ButtonIn.h	Tue Feb 07 09:31:26 2012 +0000
@@ -1,37 +1,37 @@
-#include "mbed.h"
-
-#ifndef _ButtonIn_
-#define _ButtonIn_
-
-
-class ButtonInCallbackInstance;
-
-
-class ButtonIn {
-
-private:
-    InterruptIn _button;
-    Timeout     _buttonDownTimeout;
-    
-    bool _buttonCanPress;
-    void (*_callback)(void);
-    ButtonInCallbackInstance *_callbackInstance;
-    void (ButtonInCallbackInstance::*_callbackMethod)(void);
-
-    void click();
-    void call();
-    void reset();
-
-
-
-public:
-    ButtonIn(PinName buttonPin);
-
-
-    void attach(void (*method)(void) = 0);
-
-    template<class T>
-    void attach(T* instance, void (T::*method)(void));
-};
-
+#include "mbed.h"
+
+#ifndef _ButtonIn_
+#define _ButtonIn_
+
+
+class ButtonInCallbackInstance;
+
+
+class ButtonIn {
+
+private:
+    InterruptIn _button;
+    Timeout     _buttonDownTimeout;
+    
+    volatile bool _buttonCanPress;
+    void (*_callback)(void);
+    ButtonInCallbackInstance *_callbackInstance;
+    void (ButtonInCallbackInstance::*_callbackMethod)(void);
+
+    void click();
+    void call();
+    void reset();
+
+
+
+public:
+    ButtonIn(PinName buttonPin);
+
+
+    void attach(void (*method)(void) = 0);
+
+    template<class T>
+    void attach(T* instance, void (T::*method)(void));
+};
+
 #endif
\ No newline at end of file