A debouncing InterruptIn wrapper

Revision:
1:e806603f0088
Parent:
0:2e999fcd4c7b
Child:
2:c353357a97e4
--- a/ButtonIn.cpp	Mon Feb 06 19:53:40 2012 +0000
+++ b/ButtonIn.cpp	Tue Feb 07 09:31:26 2012 +0000
@@ -1,38 +1,43 @@
-#include "ButtonIn.h"
-
-ButtonIn::ButtonIn(PinName buttonPin) :
-    _button(buttonPin) {
-        _buttonCanPress = true;
-        _callback = NULL;
-        _callbackInstance = NULL;
-        _callbackMethod = NULL;
-        _button.rise(this, &ButtonIn::click);
-}
-
-void ButtonIn::attach(void (*method)(void)) {
-    _callback = method;
-}
-    
-template<class T>
-void attach(T* instance, void (T::*method)(void)) {
-    _callbackInstance = (ButtonInCallbackInstance *)instance;
-    _callbackMethod = (void (ButtonInCallbackInstance::*)(void))method;
-}
-
-void ButtonIn::click() {
-    if (_buttonCanPress) {
-        _buttonCanPress = false;
-        _buttonDownTimeout.attach(this, &ButtonIn::reset, 0.5);
-    }
-}
-
-void ButtonIn::call() {
-    if (_callback != NULL)
-        (*_callback)();
-    else
-        (_callbackInstance->*_callbackMethod)();        
-}
-
-void ButtonIn::reset() {
-    _buttonCanPress = true;
+#include "ButtonIn.h"
+
+ButtonIn::ButtonIn(PinName buttonPin) :
+    _button(buttonPin) {
+        _buttonCanPress = true;
+        _callback = NULL;
+        _callbackInstance = NULL;
+        _callbackMethod = NULL;
+        _button.rise(this, &ButtonIn::click);
+}
+
+void ButtonIn::attach(void (*method)(void)) {
+    _callback = method;
+}
+    
+template<class T>
+void attach(T* instance, void (T::*method)(void)) {
+    _callbackInstance = (ButtonInCallbackInstance *)instance;
+    _callbackMethod = (void (ButtonInCallbackInstance::*)(void))method;
+}
+
+void ButtonIn::click() {
+    printf("click\r\n");
+    if (_buttonCanPress) {
+        _buttonCanPress = false;
+        printf("press\r\n");
+        //_buttonDownTimer.reset();
+        _buttonDownTimeout.attach(this, &ButtonIn::reset, 5);
+        call();
+    }
+}
+
+void ButtonIn::call() {
+    printf("call\r\n");
+    if (_callback != NULL)
+        (*_callback)();
+    else
+        (_callbackInstance->*_callbackMethod)();        
+}
+
+void ButtonIn::reset() {
+    _buttonCanPress = true;
 }
\ No newline at end of file