Test program for the Nordic Semi nRF24L01 Transceiver Module (http://www.sparkfun.com/products/691), talking to another module connected to SparkFun\'s Nordic Serial Interface Board (http://www.sparkfun.com/products/9019).

Dependencies:   mbed nRF24L01P

Revision:
11:004792c2729a
Parent:
10:10b4e41b67a7
Child:
12:a0b2288a6925
--- a/main.cpp	Wed Dec 19 12:15:00 2018 +0000
+++ b/main.cpp	Wed Dec 19 13:03:34 2018 +0000
@@ -37,6 +37,30 @@
     pc.printf( "(transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
 }
 
+void quitTest() {
+    
+    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
+    int rxDataCnt = 0;
+    txData[0] = 'q';
+    txData[1] = 'q';
+    
+    bool acked = false;
+    
+    while (!acked) {
+        my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, 2 );
+        if ( my_nrf24l01p.readable() ) {
+            rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
+            for (int i = 0; i < rxDataCnt; i++) {
+                char c = rxData[i];
+                if (c == 'q') {
+                    acked = true;
+                }    
+            }
+        }
+        wait(0.1);
+    }
+}
+
 void senderTest(int frequency, int outputPower, int dataRate, bool art) {
     my_nrf24l01p.setRfFrequency(frequency);
     my_nrf24l01p.setRfOutputPower(outputPower);
@@ -51,7 +75,7 @@
     
     for (int i = 0; i < 1000; i++) {
         char c = i % 100;
-        txData[txDataCnt++] = i % 100;
+        txData[txDataCnt++] = c;
         if (txDataCnt >= sizeof(txData)) {
 //            pc.printf("Printing txData: %d %d", txData[0], txData[1]);
             // Send the transmitbuffer via the nRF24L01+
@@ -59,7 +83,9 @@
             txDataCnt = 0;
         }
     }
-    my_nrf24l01p.write( NRF24L01P_PIPE_P0, "qq", 2 );
+    
+    quitTest();
+
     pc.printf("Finished run!\n\r\n\r");
 }
 
@@ -69,8 +95,12 @@
 //  "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
 //  only handles 4 byte transfers in the ATMega code.
 
-    char rxData[TRANSFER_SIZE];
-
+    char rxData[TRANSFER_SIZE]; 
+    
+    my_nrf24l01p.setRfFrequency(2400);
+    
+    printSettings();
+     
     my_nrf24l01p.powerUp();
     
 //    my_nrf24l01p.enableAutoAcknowledge(NRF24L01P_PIPE_P0);
@@ -88,18 +118,24 @@
         pc.printf(">> Receiving Modus << \n\r");
         while (reading) {
             if ( my_nrf24l01p.readable() ) {
+                pc.printf("Readable\n\r");
                 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
                 for (int i = 0; i < rxDataCnt; i++) {
-                    int x = rxData[i];
-                    if (x == 113) {
-                        if (rxPacketCnt == 0) {
+                    char c = rxData[i];
+                    if (c == 'q') {
+                        if (rxPacketCnt != 0) {
+                            char txData[TRANSFER_SIZE];
+                            txData[0] = 'q';
+                            txData[1] = 'q';
                             pc.printf("\n\r-----------\n\r");
                             pc.printf("DONE!: length = %d \r\n", rxPacketCnt);
                             pc.printf("-----------\n\r");
-                            rxPacketCnt = 0;     
+                            rxPacketCnt = 0;
+                            
+                            my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, 2);
                         }
                     } else {
-                        data[rxPacketCnt++] = x;
+                        data[rxPacketCnt++] = c;
                     }
                 }
                 rxDataCnt = 0;