9#ifndef __RF24NETWORK_H__
10#define __RF24NETWORK_H__
22#if (defined(__linux) || defined(linux)) && !defined(__ARDUINO_X86__)
35#elif defined(XMEGA_D3)
36 #include "../../rf24lib/rf24lib/RF24.h"
40#define MIN_USER_DEFINED_HEADER_TYPE 0
41#define MAX_USER_DEFINED_HEADER_TYPE 127
72#define NETWORK_ADDR_RESPONSE 128
79#define NETWORK_PING 130
103#define EXTERNAL_DATA_TYPE 131
108#define NETWORK_FIRST_FRAGMENT 148
113#define NETWORK_MORE_FRAGMENTS 149
119#define NETWORK_LAST_FRAGMENT 150
128#define NETWORK_OVERRUN 160
133#define NETWORK_CORRUPTION 161
171#define NETWORK_ACK 193
180#define NETWORK_POLL 194
188#define NETWORK_REQ_ADDRESS 195
196#define NETWORK_MORE_FRAGMENTS_NACK 200
201#define USER_TX_TO_PHYSICAL_ADDRESS 2
202#define USER_TX_TO_LOGICAL_ADDRESS 3
203#define USER_TX_MULTICAST 4
205#if defined NRF52_RADIO_LIBRARY
206 #define MAX_FRAME_SIZE 123
208 #define MAX_FRAME_SIZE 32
211#define FRAME_HEADER_SIZE 10
217#define USE_CURRENT_CHANNEL 255
223#define FLAG_FAST_FRAG 4
229#define FLAG_NO_POLL 8
232#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52833)
338#if defined(RF24_LINUX)
361#if defined(RF24_LINUX) || defined(DOXYGEN_FORCED)
364 if (_message && _len) {
369#if defined(DOXYGEN_FORCED) || !defined(RF24_LINUX)
397template<
class radio_t = RF24>
448 inline void begin(uint16_t _node_address)
620#if defined(ENABLE_NETWORK_STATS) || defined(DOXYGEN_FORCED)
634#if defined(RF24NetworkMulticast)
695 bool sleepNode(
unsigned int cycles,
int interruptPin, uint8_t INTERRUPT_MODE = 0);
749 void begin(uint8_t _channel, uint16_t _node_address);
788#if defined(RF24_LINUX) || defined(DOXYGEN_FORCED)
792#if (!defined(DISABLE_FRAGMENTATION) && !defined(RF24_LINUX)) || defined(DOXYGEN_FORCED)
849#if defined(RF24NetworkMulticast)
882 bool write(uint16_t to_node, uint8_t sendType);
891 bool write_to_pipe(uint16_t node, uint8_t pipe,
bool multicast);
910 void setup_address(
void);
918 bool _write(
RF24NetworkHeader& header,
const void* message, uint16_t len, uint16_t writeDirect);
923 inline bool main_write(
RF24NetworkHeader& header,
const void* message, uint16_t len, uint16_t writeDirect);
925 struct logicalToPhysicalStruct
942 void logicalToPhysicalAddress(logicalToPhysicalStruct* conversionInfo);
947 bool is_direct_child(uint16_t node);
949 bool is_descendant(uint16_t node);
951 uint16_t direct_child_route_to(uint16_t node);
961#if defined(RF24_LINUX)
962 std::queue<RF24NetworkFrame> frame_queue;
963 std::map<uint16_t, RF24NetworkFrame> frameFragmentsCache;
967 #if defined(DISABLE_USER_PAYLOADS)
968 uint8_t frame_queue[1];
975 #if !defined(DISABLE_FRAGMENTATION)
982 uint16_t parent_node;
987 void pipe_address(uint16_t node, uint8_t pipe, uint8_t* address);
989#if defined ENABLE_NETWORK_STATS
994#if defined(RF24NetworkMulticast)
996 uint16_t levelToAddress(uint8_t level);
1014#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52833)
ESBNetwork< RF24 > RF24Network
Definition RF24Network.h:1013
#define USE_CURRENT_CHANNEL
Definition RF24Network.h:217
#define MAX_FRAME_SIZE
Definition RF24Network.h:208
#define MAX_PAYLOAD_SIZE
Maximum size of fragmented network frames and fragmentation cache.
Definition RF24Network_config.h:67
#define MAIN_BUFFER_SIZE
The allocated size of the incoming frame buffer.
Definition RF24Network_config.h:78
Definition RF24Network.h:399
ESBNetwork(radio_t &_radio)
Definition RF24Network.cpp:63
bool write(RF24NetworkHeader &header, const void *message, uint16_t len, uint16_t writeDirect)
std::queue< RF24NetworkFrame > external_queue
Definition RF24Network.h:789
bool sleepNode(unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE=0)
bool returnSysMsgs
Definition RF24Network.h:830
void multicastLevel(uint8_t level)
Definition RF24Network.cpp:1187
uint16_t node_address
Definition RF24Network.h:862
bool multicast(RF24NetworkHeader &header, const void *message, uint16_t len, uint8_t level=7)
Definition RF24Network.cpp:682
bool available(void)
Definition RF24Network.cpp:556
void begin(uint16_t _node_address)
Definition RF24Network.h:448
uint16_t routeTimeout
Timeout for routed payloads.
Definition RF24Network.h:610
void setup_watchdog(uint8_t prescalar)
void failures(uint32_t *_fails, uint32_t *_ok)
uint8_t update(void)
Definition RF24Network.cpp:133
uint32_t txTimeout
Network timeout value.
Definition RF24Network.h:600
uint8_t networkFlags
Definition RF24Network.h:846
RF24NetworkFrame * frag_ptr
Definition RF24Network.h:811
uint16_t peek(RF24NetworkHeader &header)
Definition RF24Network.cpp:580
uint8_t _multicast_level
Definition RF24Network.h:854
uint16_t addressOfPipe(uint16_t node, uint8_t pipeNo)
Definition RF24Network.cpp:1127
bool is_valid_address(uint16_t node)
Definition RF24Network.cpp:1155
uint8_t frame_buffer[MAX_FRAME_SIZE]
The raw system frame buffer.
Definition RF24Network.h:768
uint16_t read(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)
Definition RF24Network.cpp:626
bool multicastRelay
Definition RF24Network.h:579
uint16_t parent() const
Definition RF24Network.cpp:569
bool write(RF24NetworkHeader &header, const void *message, uint16_t len)
Definition RF24Network.cpp:694
Definition RF24Network.h:327
RF24NetworkFrame(RF24NetworkHeader &_header, uint16_t _message_size)
Definition RF24Network.h:380
RF24NetworkFrame(RF24NetworkHeader &_header, const void *_message=NULL, uint16_t _len=0)
Definition RF24Network.h:362
uint8_t * message_buffer
Definition RF24Network.h:341
RF24NetworkHeader header
Definition RF24Network.h:329
uint16_t message_size
Definition RF24Network.h:332
RF24NetworkFrame()
Definition RF24Network.h:349