Improvement to the DebounceInt library providing an easier to use interface much more alike the usual InterrupIn interface

Fork of DebounceInt by napoleon leoni

Revision:
3:3b5c7faadd5c
Parent:
2:bd5a3171ebc4
--- a/DebounceInt2.h	Tue Feb 25 06:37:35 2014 +0000
+++ b/DebounceInt2.h	Tue Feb 25 07:53:23 2014 +0000
@@ -43,7 +43,7 @@
 #define _DEBOUNCEINTDELAYDEFAULT 50000 //useconds, this number would be about 50 ms
 #define _MINDBOUNCEDELAY 50
 
-typedef void (*t_fhandler)(void);
+//typedef void (*t_fhandler)(void);
 
 class DebounceInt2 
 {
@@ -55,7 +55,7 @@
     InterruptIn* intRise;
     InterruptIn* intFall;
     bool riseAttached,fallAttached;
-    t_fhandler riseHandler,fallHandler;
+    FunctionPointer *riseHandler,*fallHandler;
     PinName pin;
 
 public://methods
@@ -63,10 +63,14 @@
     DebounceInt2(PinName pin);//Constructor with PinName, delay will remain default value
     DebounceInt2(PinName pin,unsigned int delay_us);//Constructor with PinName and specified delay in micro-seconds
     void setDelay(unsigned int); //method to modify delay for debounce in us
-    void rise(t_fhandler);     //attach interrupt handler for interrupt on rising edge
+    void rise(FunctionPointer);     //attach interrupt handler for interrupt on rising edge
+    template<typename T>
+    void rise(T* tptr, void (T::*mptr)(void));
     void disableRise(void);         //rise interrupt handler for rising edge
     void enableRise(void);          //unmask rise interrupt handler for rising edge
-    void fall(t_fhandler);     //attach interrupt handler for interrupt on falling edge
+    void fall(FunctionPointer);          //attach interrupt handler for interrupt on falling edge
+    template<typename T>
+    void fall(T* tptr, void (T::*mptr)(void));
     void disableFall(void);         //mask fall interrupt handler for rising edge
     void enableFall(void);          //unmask fall interrupt handler for rising edge