diff --git a/RF24.cpp b/RF24.cpp
index d2b4025..190e67d 100644
--- a/RF24.cpp
+++ b/RF24.cpp
@@ -524,7 +524,7 @@ bool RF24::writeFast( const void* buf, uint8_t len )
}
}
- //Start Writing
+ //Start Writing
startWrite(buf,len);
return 1;
@@ -553,6 +553,10 @@ bool RF24::txStandBy(){
ce(LOW);
return 1;
}
+ if( get_status() & _BV(MAX_RT)){
+ write_register(STATUS,_BV(MAX_RT) );
+ return 0;
+ }
return 0;
}
diff --git a/RF24.h b/RF24.h
index 629cdab..7f242ea 100644
--- a/RF24.h
+++ b/RF24.h
@@ -270,7 +270,7 @@ public:
void stopListening(void);
/**
- * Optimization: Improved performance and reliability
+ * @note Optimization: Improved performance and reliability
* Write to the open writing pipe
*
* Be sure to call openWritingPipe() first to set the destination
@@ -293,16 +293,17 @@ public:
bool write( const void* buf, uint8_t len );
/**
- * Optimization: New Command
+ * @note Optimization: New Command
* Write to the open writing pipe filling up the FIFO buffers
*
* Be sure to call openWritingPipe() first to set the destination
* of where to write to.
*
* This will not block until the 3 FIFO buffers are filled with data.
- * Once the FIFOs are full, writeFast will simply return 0. From a user
- * perspective, just keep trying to send the same data. The library will
- * keep auto retrying the previous payload using the built in functionality.
+ * Once the FIFOs are full, writeFast will simply wait for success or
+ * timeout, and return 1 or 0 respectively. From a user perspective, just
+ * keep trying to send the same data. The library will keep auto retrying
+ * the current payload using the built in functionality.
*
* The maximum size of data written is the fixed payload size, see
* getPayloadSize(). However, you can write less, and the remainder
@@ -317,7 +318,7 @@ public:
bool writeFast( const void* buf, uint8_t len );
/**
- * Optimization: New Command
+ * @note Optimization: New Command
* Write to the open writing pipe
*
* Be sure to call openWritingPipe() first to set the destination
@@ -344,7 +345,7 @@ public:
bool writeBlocking( const void* buf, uint8_t len );
/**
- * Optimization: New Command
+ * @note Optimization: New Command
* This function should be called as soon as transmission is finished to
* drop the radio back to STANDBY-I mode. If not issued, the radio will
* remain in STANDBY-II mode which, per the data sheet, is not a recommended
@@ -781,8 +782,8 @@ public:
};
/**
- * @example GettingStarted.pde
- *
+ * @example GettingStarted.ino
+ * Updated: TMRh20
* This is an example which corresponds to my "Getting Started" blog post:
* Getting Started with nRF24L01+ on Arduino.
*
@@ -793,6 +794,17 @@ public:
* node can then see how long the whole cycle took.
*/
+/**
+ * @example Transfer.ino
+ * Updated: TMRh20
+ * This example demonstrates half-rate transfer using the FIFO buffers
+ *
+ * It is an example of how to use the RF24 class. Write this sketch to two
+ * different nodes. Put one of the nodes into 'transmit' mode by connecting
+ * with the serial monitor and sending a 'T'. The data transfer will begin,
+ * with the receiver displaying the payload count. (32Byte Payloads)
+ */
+
/**
* @example nordic_fob.pde
*
@@ -812,7 +824,7 @@ public:
*/
/**
- * @example pingpair.pde
+ * @example pingpair.ino
*
* This is an example of how to use the RF24 class. Write this sketch to two
* different nodes, connect the role_pin to ground on one. The ping node sends
diff --git a/examples/Transfer/Transfer.ino b/examples/Transfer/Transfer.ino
index 5949105..080c208 100644
--- a/examples/Transfer/Transfer.ino
+++ b/examples/Transfer/Transfer.ino
@@ -19,105 +19,92 @@ TMRh20 2014
#include "RF24.h"
#include "printf.h"
-// Hardware configuration
-// Set up nRF24L01 radio on SPI bus plus pins 9 & 10
+/************* USER Configuration *****************************/
+ // Hardware configuration
+RF24 radio(48,49); // Set up nRF24L01 radio on SPI bus plus pins 9 & 10
+boolean RADIO_NO = 0; //SET THIS TO 0 or 1 for 1st or 2nd radio
-RF24 radio(48,49);
+/***************************************************************/
-// Topology
-// Radio pipe addresses for the 2 nodes to communicate.
-const uint64_t pipes[2] = { 0xABCDABCD71LL, 0x544d52687CLL };
+const uint64_t pipes[2] = { 0xABCDABCD71LL, 0x544d52687CLL }; // Radio pipe addresses for the 2 nodes to communicate.
-// Role management
-// Set up role. This sketch uses the same software for all the nodes
-// in this system. Doing so greatly simplifies testing.
+byte data[32]; //Data buffer for testing data transfer speeds
-// The various roles supported by this sketch
-typedef enum { role_TX = 1, role_RX } role_e;
-
-// The debug-friendly names of those roles
-const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};
-
-//Set this to determine the default role of the current running sketch
-role_e role = role_RX;
-
-//Data buffer for testing data transfer speeds
-byte data[32];
-
-//Counter and timer for keeping track transfer info
-unsigned long counter, rxTimer;
+unsigned long counter, rxTimer; //Counter and timer for keeping track transfer info
float startTime, stopTime;
+bool TX=1,RX=0,role=0;
-void setup(void)
-{
+void setup(void) {
Serial.begin(57600);
printf_begin();
- printf("\n\rRF24/examples/GettingStarted/\n\r");
- printf("ROLE: %s\n\r",role_friendly_name[role]);
- printf("*** PRESS 'T' to begin transmitting to the other node\n\r");
- radio.begin(); // Setup and configure rf radio
+ radio.begin(); // Setup and configure rf radio
radio.setChannel(1);
radio.setPALevel(RF24_PA_MAX);
- radio.setAutoAck(1); // Ensure autoACK is enabled
- radio.setRetries(2,3); // Optionally, increase the delay between retries & # of retries
- //radio.disableCRC();
+ radio.setAutoAck(1); // Ensure autoACK is enabled
+ radio.setRetries(1,1); // Optionally, increase the delay between retries & # of retries
radio.setCRCLength(RF24_CRC_8);
- radio.openWritingPipe(pipes[1]);
- radio.openReadingPipe(1,pipes[0]);
-
+
+ if(RADIO_NO){ //Lets the two radios choose the correct pipes depending on user selection
+ radio.openWritingPipe(pipes[0]);
+ radio.openReadingPipe(1,pipes[1]);
+ }else{
+ radio.openWritingPipe(pipes[1]);
+ radio.openReadingPipe(1,pipes[0]);
+ }
+
radio.startListening(); // Start listening
radio.printDetails(); // Dump the configuration of the rf unit for debugging
+ printf("\n\rRF24/examples/Transfer Rates/\n\r");
+ printf("*** PRESS 'T' to begin transmitting to the other node\n\r");
+
randomSeed(analogRead(0)); //Seed for random number generation
for(int i=0; i<32; i++){
data[i] = random(255); //Load the buffer with random data
}
- radio.powerUp();
+ radio.powerUp(); //Power up the radio
}
void loop(void){
-
- //TX with pre-blocking writes
- if(role == role_TX){
+
+ if(role == TX){
delay(1500);
printf("Initiating Basic Data Transfer\n\r");
- float cycles = 10000;
+ float cycles = 1000; //Change this to a higher or lower number.
startTime = millis();
- for(int i=0; i