Programm for decoding radio-signals sent by a ETH-Window-Shutter-Contact, received with a RFM12B-module

Dependencies:   TextLCD mbed

Revision:
1:fc72e0bdb693
Parent:
0:96794c9fc5a3
--- a/rfm12b.h	Wed Mar 02 20:46:57 2011 +0000
+++ b/rfm12b.h	Thu Apr 07 19:54:09 2011 +0000
@@ -3,14 +3,19 @@
 
 #include <mbed.h>
 
+/*!
+ * \file       rfm12b.h
+ * \brief      class for rfm2b in rawmode - only receive part implemented
+ * \author     Karl Zweimüller based on code from WED 6.9.2009
+ */
+
 typedef unsigned char Byte;    // used to be uint8_t : something a byte wide, whatever ....
 
 /** This Class handles a rfm12b transceiver
  * see http://www.hoperf.com/rf_fsk/rfm12b.htm
- * 
+ *
 */
-class rfm12b
-{
+class rfm12b {
 public:
     /** Create a rfm12b object
     *
@@ -21,15 +26,15 @@
     * @param rxdata  Data-Pin for received data. A DigitalIn of mbed
     */
     rfm12b(PinName mosi, PinName miso, PinName sclk, PinName nsel, PinName rxdata);
-    
+
     /** init the spi-interface
     */
     void init_spi();
-    
+
     /** initialize the device
     */
     void RFM_init(void);
-    
+
     /** write and read 16 bit
     */
     uint16_t rfm_spi16(uint16_t outval);
@@ -45,14 +50,29 @@
         m_pinRXData->rise(fptr);
     }
 
+    template<typename T>
+    /** attach an object member function to be called when the data-pin changes from 0->1 and from 1->0
+    *
+    * @param tptr pointer to object
+    * @param mprt pointer ro member function
+    *
+    */
+    void attachISR(T* tptr, void (T::*mptr)(void)) {
+        if ((mptr != NULL) && (tptr != NULL)) {
+            m_pinRXData->fall(tptr, mptr);
+            m_pinRXData->rise(tptr, mptr);
+        }
+    }
+
+
 
 private:
 
-  
+
     DigitalOut    *cs;          //chipselect
     InterruptIn   *m_pinRXData; //rx data pin
     SPI           *rfm12b_spi;  //spi-interface
-  
+
 
 };