radio echo app

Dependencies:   mbed nRF24L01P

Revision:
3:335c4028bf36
Parent:
2:352f66e435da
Child:
4:018a8915c9e0
--- a/main_echo.cpp	Tue Nov 15 08:41:29 2016 +0000
+++ b/main_echo.cpp	Tue Nov 15 15:49:47 2016 +0000
@@ -4,23 +4,23 @@
 //***************************************************************************//
 // !!! SETTINGS !!!
 
-#define DATA_RATE       NRF24L01P_DATARATE_250_KBPS    
-//#define DATA_RATE       NRF24L01P_DATARATE_1_MBPS     
+//#define DATA_RATE       NRF24L01P_DATARATE_250_KBPS    
+#define DATA_RATE       NRF24L01P_DATARATE_1_MBPS     
 //#define DATA_RATE       NRF24L01P_DATARATE_2_MBPS    
 
-#define POWER           NRF24L01P_TX_PWR_ZERO_DB
+//#define POWER           NRF24L01P_TX_PWR_ZERO_DB
 //#define POWER           NRF24L01P_TX_PWR_MINUS_6_DB
 //#define POWER           NRF24L01P_TX_PWR_MINUS_12_DB
-//#define POWER           NRF24L01P_TX_PWR_MINUS_18_DB
+#define POWER           NRF24L01P_TX_PWR_MINUS_18_DB
 
 #define CHANNEL         0 // 0 - 30
 
 
-#define RX_ADDRESS      ((unsigned long long) 0xABCDEF02)
-#define TX_ADDRESS      ((unsigned long long) 0xABCDEF00)
-#define ECHO_DELAY      0.2
+#define RX_ADDRESS      ((unsigned long long) 0xABCDEF00)
+#define TX_ADDRESS      ((unsigned long long) 0xABCDEF01)
+#define ECHO_DELAY      0.1
 
-#define TRANSFER_SIZE   1
+#define TRANSFER_SIZE   32
 
 //***************************************************************************//
 
@@ -53,19 +53,28 @@
     radio.setAirDataRate(DATA_RATE);
     radio.setRfOutputPower(POWER);
     radio.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY + 4 * CHANNEL);
-    radio.setRxAddress(RX_ADDRESS, 4);
+    
+    radio.setCrcWidth(NRF24L01P_CRC_8_BIT);
+    radio.enableAutoAcknowledge(NRF24L01P_PIPE_P0);
+    radio.enableAutoAcknowledge(NRF24L01P_PIPE_P1);
+    radio.enableAutoRetransmit(0x0F, 0x0F);
+    
     radio.setTxAddress(TX_ADDRESS, 4);
-    radio.setCrcWidth(NRF24L01P_CRC_8_BIT);
-
+    radio.setRxAddress(TX_ADDRESS, 4, NRF24L01P_PIPE_P0);
+    
+    radio.setRxAddress(RX_ADDRESS, 4, NRF24L01P_PIPE_P1);
+    
     // Display the (default) setup of the nRF24L01+ chip
     pc.printf( "nRF24L01+ Frequency    : %d MHz\r\n",  radio.getRfFrequency() );
     pc.printf( "nRF24L01+ Output power : %d dBm\r\n",  radio.getRfOutputPower() );
     pc.printf( "nRF24L01+ Data Rate    : %d kbps\r\n", radio.getAirDataRate() );
     pc.printf( "nRF24L01+ TX Address   : 0x%010llX\r\n", radio.getTxAddress() );
-    pc.printf( "nRF24L01+ RX Address   : 0x%010llX\r\n", radio.getRxAddress() );
+    pc.printf( "nRF24L01+ RX0 Address   : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P0) );
+    pc.printf( "nRF24L01+ RX1 Address   : 0x%010llX\r\n", radio.getRxAddress(NRF24L01P_PIPE_P1) );
 
 
-    radio.setTransferSize( TRANSFER_SIZE );
+    radio.setTransferSize(TRANSFER_SIZE, NRF24L01P_PIPE_P0);
+    radio.setTransferSize(TRANSFER_SIZE, NRF24L01P_PIPE_P1);
     
     myled1 = 0;
 
@@ -73,24 +82,33 @@
     radio.enable();
 
     while (1) {
-        int tx_bytes;
-        int rx_bytes;
+        int tx_bytes=0;
+        int rx_bytes=0;
 
-        if(radio.readable()){
+        if(radio.readable(NRF24L01P_PIPE_P1)){
 
-            rx_bytes = radio.read(NRF24L01P_PIPE_P0, rxData, sizeof(rxData));
+            rx_bytes = radio.read(NRF24L01P_PIPE_P1, rxData, sizeof(rxData));
             myled1 = 1;
+            pc.printf("PING RECV\r\n");
             
             wait(ECHO_DELAY);
             
             tx_bytes = radio.write(NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE);
             myled1 = 0;
+            pc.printf("PONG SEND\r\n");
         }
         
         if(send_data){
             tx_bytes = radio.write(NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE);
             send_data = false;
+            pc.printf("INIT SEND\r\n");
         }
         
+        if(tx_bytes < 0)
+            pc.printf("TX ERROR\r\n");
+            
+        if(tx_bytes > 0)    
+            pc.printf("RETR: %d\r\n", radio.getRetrCount());
+        
     }
 }