Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions RF24Network.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ uint16_t RF24NetworkHeader::next_id = 1;
#if defined(RF24_LINUX)
/******************************************************************/
template<class radio_t>
ESBNetwork<radio_t>::ESBNetwork(radio_t& _radio) : radio(_radio), frame_size(MAX_FRAME_SIZE)
ESBNetwork<radio_t>::ESBNetwork(radio_t& _radio) : radio(_radio), frame_size(RF24NETWORK_MAX_FRAME_SIZE)
{
networkFlags = 0;
returnSysMsgs = 0;
Expand Down Expand Up @@ -144,7 +144,7 @@ uint8_t ESBNetwork<radio_t>::update(void)
#if defined(ENABLE_DYNAMIC_PAYLOADS) && !defined(XMEGA_D3)
frame_size = radio.getDynamicPayloadSize();
#else
frame_size = MAX_FRAME_SIZE;
frame_size = RF24NETWORK_MAX_FRAME_SIZE;
#endif
if (!frame_size) {
return NETWORK_CORRUPTION;
Expand Down Expand Up @@ -459,10 +459,7 @@ uint8_t ESBNetwork<radio_t>::enqueue(RF24NetworkHeader* header)
frag_queue.header.reserved = 0;
return false;
}
if (frag_queue.header.reserved == 0
|| (header->type != NETWORK_LAST_FRAGMENT && header->reserved != frag_queue.header.reserved)
|| frag_queue.header.id != header->id
|| (header->type == NETWORK_LAST_FRAGMENT && frag_queue.header.reserved != 1)) {
if (frag_queue.header.reserved == 0 || (header->type != NETWORK_LAST_FRAGMENT && header->reserved != frag_queue.header.reserved) || frag_queue.header.id != header->id || (header->type == NETWORK_LAST_FRAGMENT && frag_queue.header.reserved != 1)) {
#if defined(RF24NETWORK_DEBUG_FRAGMENTATION) || defined(RF24NETWORK_DEBUG_MINIMAL)
printf_P(PSTR("Drop frag %d Out of order\n\r"), header->reserved);
#endif
Expand All @@ -489,7 +486,6 @@ uint8_t ESBNetwork<radio_t>::enqueue(RF24NetworkHeader* header)
#if defined(DISABLE_USER_PAYLOADS)
return 0;
#endif

if ((uint16_t)(MAX_PAYLOAD_SIZE) - (next_frame - frame_queue) >= frag_queue.message_size) {
memcpy(next_frame, &frag_queue, 10);
memcpy(next_frame + 10, frag_queue.message_buffer, frag_queue.message_size);
Expand Down Expand Up @@ -788,7 +784,9 @@ bool ESBNetwork<radio_t>::main_write(RF24NetworkHeader& header, const void* mess
ok = _write(header, ((char*)message) + offset, fragmentLen, writeDirect);

if (!ok) {
delay(2);
uint32_t timer = millis() + 2;
while (millis() < timer) {
}
++retriesPerFrag;
}
else {
Expand Down
8 changes: 4 additions & 4 deletions RF24Network.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,9 @@
#define USER_TX_MULTICAST 4

#if defined NRF52_RADIO_LIBRARY
#define MAX_FRAME_SIZE 123 // Size of individual radio frames is larger with NRF52
#define RF24NETWORK_MAX_FRAME_SIZE 123 // Size of individual radio frames is larger with NRF52
#else
#define MAX_FRAME_SIZE 32 // Size of individual radio frames
#define RF24NETWORK_MAX_FRAME_SIZE 32 // Size of individual radio frames
#endif

#define FRAME_HEADER_SIZE 10 // Size of RF24Network frames - data
Expand Down Expand Up @@ -765,7 +765,7 @@ class ESBNetwork
* outgoing or incoming).
* @note The first 8 bytes of this buffer is latest handled frame's RF24NetworkHeader data.
*/
uint8_t frame_buffer[MAX_FRAME_SIZE];
uint8_t frame_buffer[RF24NETWORK_MAX_FRAME_SIZE];

/**
* **Linux platforms only**
Expand Down Expand Up @@ -956,7 +956,7 @@ class ESBNetwork

uint8_t frame_size; /* The outgoing frame's total size including the header info. Ranges [8, MAX_PAYLOAD_SIZE] */

unsigned int max_frame_payload_size = MAX_FRAME_SIZE - sizeof(RF24NetworkHeader); /* always 24 bytes to compensate for the frame's header */
unsigned int max_frame_payload_size = RF24NETWORK_MAX_FRAME_SIZE - sizeof(RF24NetworkHeader); /* always 24 bytes to compensate for the frame's header */

#if defined(RF24_LINUX)
std::queue<RF24NetworkFrame> frame_queue;
Expand Down