receive RF22

Dependencies:   NTPClient RF22 mbed-rtos mbed

Revision:
0:81d7891e6235
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Mar 30 14:06:50 2016 +0000
@@ -0,0 +1,107 @@
+#include "mbed.h"
+#include "rtos.h"
+#include <time.h>
+#include <stdlib.h>
+#include <RF22.h>
+#include <RF22ReliableDatagram.h>
+
+// Sample programm for ReliableDatagramm Receiving
+// Uses address 2 and receives from Sender
+// See notebook http://mbed.org/users/charly/notebook/rfm22/ for connecting RFM22 to mbed
+
+int init();
+void affichage(uint8_t val);
+void receive_loop();
+
+Serial pc(USBTX, USBRX);
+
+int count =0;
+
+RF22ReliableDatagram rf22(0,D10,D11,D12,D13,D2);
+ 
+float frequency = 869.85;           // frequency --> ((selectable for each channel between 868.15, 868.3, 868.45, 868.825, 868.95, 869.075, 869.85 MHz) OOK -- ancienne valeur : 869.50
+ 
+const uint8_t sender_adress = 1;    // address of sender
+const uint8_t receiver_adress = 2;  // address of receiver
+
+int init()
+{
+    // initialize the device
+    if (!rf22.init())
+    {
+        pc.printf("RF22 init failed\n\r");
+        return 1;
+    }
+    // set to 19.2
+    if (!rf22.setModemConfig(RF22::OOK_Rb9_6Bw335))
+    {
+        pc.printf("setModemConfig failed");
+        return 1;
+    }
+    if (!rf22.setFrequency(frequency))
+    {
+        pc.printf("setFrequency failed");
+        return 1;
+    }
+    rf22.setTxPower(RF22_TXPOW_8DBM);
+        
+    rf22.setModeRx(); 
+    
+    pc.printf("I am sending with address %i to adress %i ...\n\r",sender_adress,receiver_adress  );
+    rf22.setThisAddress(sender_adress);     // sender-adress
+    
+    return 0;
+}
+
+
+void affichage(uint8_t val)
+{
+    uint8_t mask;
+    mask = 0x80;
+    int i;
+    
+    for(i=0 ; i<8 ; i++)
+    {
+        if((val & mask) == 0) pc.printf("0");
+        else pc.printf("1");
+        mask = mask >> 1;
+    }
+}
+
+
+void receive_loop() {
+    uint8_t buf[RF22_MAX_MESSAGE_LEN];
+    uint8_t len;
+    len = sizeof(buf);
+    
+    while (1) {    
+        if (rf22.recvfromAck(buf, &len))
+        {
+            pc.printf("\n\rgot message: >");
+            affichage((uint8_t)buf);
+            pc.printf("< : %d", buf);
+        }
+    }
+}
+
+int main() {
+
+    int b = 2;
+    pc.printf ("RECEIVER");
+ 
+    pc.baud(9600); // ancienne valeur : 115200
+    pc.printf("\n\rConnected to mbed\n\r");
+ 
+    pc.printf ("RF22-Test-Reliable-Receive V1.0\n\r");
+ 
+    if(init() == 0 ) b = 1;
+    
+    if(b == 1)
+    { 
+        receive_loop();     // start receiving
+    }
+    
+    return 0;
+}
+ 
+ 
\ No newline at end of file