Commit 2c971863 authored by maniacbug's avatar maniacbug

Fix bug introduced in the move to PROGMEM. Props to @basilrx for finding...

Fix bug introduced in the move to PROGMEM.  Props to @basilrx for finding this.  Also added a test case to demonstrate the bug, and guard against more like it in the future.
parent f6e59b9d
...@@ -649,7 +649,7 @@ void RF24::openReadingPipe(uint8_t child, uint64_t address) ...@@ -649,7 +649,7 @@ void RF24::openReadingPipe(uint8_t child, uint64_t address)
// Note it would be more efficient to set all of the bits for all open // Note it would be more efficient to set all of the bits for all open
// pipes at once. However, I thought it would make the calling code // pipes at once. However, I thought it would make the calling code
// more simple to do it this way. // more simple to do it this way.
write_register(EN_RXADDR,read_register(EN_RXADDR) | _BV(child_pipe_enable[child])); write_register(EN_RXADDR,read_register(EN_RXADDR) | _BV(pgm_read_byte(&child_pipe_enable[child])));
} }
} }
......
...@@ -89,6 +89,8 @@ const int interval = 100; //*< ms to wait between sends */ ...@@ -89,6 +89,8 @@ const int interval = 100; //*< ms to wait between sends */
char configuration = '1'; //*< Configuration key, one char sent in by the test framework to tell us how to configure, this is the default */ char configuration = '1'; //*< Configuration key, one char sent in by the test framework to tell us how to configure, this is the default */
uint8_t pipe_number = 1; // Which pipe to send on.
void one_ok(void) void one_ok(void)
{ {
// Have we received enough yet? // Have we received enough yet?
...@@ -203,6 +205,20 @@ void setup(void) ...@@ -203,6 +205,20 @@ void setup(void)
radio.enableDynamicPayloads(); radio.enableDynamicPayloads();
} }
// Config 4 tests out a higher pipe ##
if (configuration == '4' && role == role_sender)
{
// Set top 4 bytes of the address in pipe 1
radio.openReadingPipe(1,pipe & 0xFFFFFFFF00ULL);
// indicate the pipe to use
pipe_number = 5;
}
else if ( role == role_sender )
{
radio.openReadingPipe(5,0);
}
// //
// Open pipes to other nodes for communication // Open pipes to other nodes for communication
// //
...@@ -216,7 +232,7 @@ void setup(void) ...@@ -216,7 +232,7 @@ void setup(void)
} }
else else
{ {
radio.openReadingPipe(1,pipe); radio.openReadingPipe(pipe_number,pipe);
} }
// //
...@@ -230,7 +246,7 @@ void setup(void) ...@@ -230,7 +246,7 @@ void setup(void)
// Dump the configuration of the rf unit for debugging // Dump the configuration of the rf unit for debugging
// //
//radio.printDetails(); radio.printDetails();
// //
// Attach interrupt handler to interrupt #0 (using pin 2) // Attach interrupt handler to interrupt #0 (using pin 2)
...@@ -410,7 +426,7 @@ void check_radio(void) ...@@ -410,7 +426,7 @@ void check_radio(void)
// Add an ack packet for the next time around. // Add an ack packet for the next time around.
// Here we will report back how many bytes we got this time. // Here we will report back how many bytes we got this time.
radio.writeAckPayload( 1, &len, sizeof(len) ); radio.writeAckPayload( pipe_number, &len, sizeof(len) );
++message_count; ++message_count;
} }
} }
......
...@@ -14,3 +14,8 @@ stty 57600 raw ignbrk hup < /dev/ttyUSB0 ...@@ -14,3 +14,8 @@ stty 57600 raw ignbrk hup < /dev/ttyUSB0
sleep 1 sleep 1
stty 57600 raw ignbrk hup < /dev/ttyUSB1 stty 57600 raw ignbrk hup < /dev/ttyUSB1
expect test.ex 3 expect test.ex 3
sleep 1
stty 57600 raw ignbrk hup < /dev/ttyUSB0
sleep 1
stty 57600 raw ignbrk hup < /dev/ttyUSB1
expect test.ex 4
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment