diff --git a/globals_type.html b/CHANGELOG_8md.html similarity index 61% rename from globals_type.html rename to CHANGELOG_8md.html index 91bc11b9..3c6fb67a 100644 --- a/globals_type.html +++ b/CHANGELOG_8md.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: File Members - +Newly Optimized RF24Network Layer: CHANGELOG.md File Reference - - - - @@ -28,44 +23,32 @@ -
Optimized RF24Network Layer v2.0.1 +
Newly Optimized RF24Network Layer v1.0.21
-
2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
+
2020 - Optimized RF24 Network Layer for NRF24L01 radios
- + - - -
-
+
+
+
CHANGELOG.md File Reference
+
-
Here is a list of all typedefs with links to the files they belong to:
- diff --git a/CONTRIBUTING_8md.html b/CONTRIBUTING_8md.html index c337187e..b8713fe0 100644 --- a/CONTRIBUTING_8md.html +++ b/CONTRIBUTING_8md.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: CONTRIBUTING.md File Reference - +Newly Optimized RF24Network Layer: CONTRIBUTING.md File Reference - - - - @@ -28,42 +23,32 @@ -
Optimized RF24Network Layer v2.0.1 +
Newly Optimized RF24Network Layer v1.0.21
-
2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
+
2020 - Optimized RF24 Network Layer for NRF24L01 radios
- + - -
-
CONTRIBUTING.md File Reference
@@ -94,8 +78,7 @@
- diff --git a/Network_Ping_8ino-example.html b/Network_Ping_8ino-example.html index cc18a351..0829da6a 100644 --- a/Network_Ping_8ino-example.html +++ b/Network_Ping_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Network_Ping.ino - +Newly Optimized RF24Network Layer: Network_Ping.ino - - - - @@ -28,44 +23,33 @@ -
Optimized RF24Network Layer v2.0.1 +
Newly Optimized RF24Network Layer v1.0.21
-
2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
+
2020 - Optimized RF24 Network Layer for NRF24L01 radios
- + - -
-
Network_Ping.ino
-

Example to give users an understanding of addressing and topology in the mesh network Using this sketch, each node will send a ping to the base every few seconds. The RF24Network library will route the message across the mesh to the correct node.

+

Example to give users an understanding of addressing and topology in the mesh network Using this sketch, each node will send a ping to the base every few seconds. The RF24Network library will route the message across the mesh to the correct node.

#include <avr/pgmspace.h>
#include "printf.h"
@@ -120,7 +104,7 @@
RF24 radio(7, 8); // CE & CS pins to use (Using 7,8 on Uno,Nano)
-
RF24Network network(radio);
+
RF24Network network(radio);
uint16_t this_node; // Our node address
@@ -300,15 +284,14 @@
}
}
-
Definition RF24Network.h:384
-
Definition RF24Network.h:229
-
unsigned char type
Definition RF24Network.h:246
-
uint16_t from_node
Definition RF24Network.h:231
+
Definition: RF24Network.h:375
+
Definition: RF24Network.h:226
+
unsigned char type
Definition: RF24Network.h:243
+
uint16_t from_node
Definition: RF24Network.h:228
- diff --git a/Network_Ping_Sleep_8ino-example.html b/Network_Ping_Sleep_8ino-example.html index 6e29bb36..d3470417 100644 --- a/Network_Ping_Sleep_8ino-example.html +++ b/Network_Ping_Sleep_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Network_Ping_Sleep.ino - +Newly Optimized RF24Network Layer: Network_Ping_Sleep.ino - - - - @@ -28,44 +23,33 @@ -
Optimized RF24Network Layer v2.0.1 +
Newly Optimized RF24Network Layer v1.0.21
-
2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
+
2020 - Optimized RF24 Network Layer for NRF24L01 radios
- + - -
-
  • Using this sketch, each node will send a ping to every other node in the network every few seconds.
  • -
  • The RF24Network library will route the message across the mesh to the correct node.
  • +
  • The RF24Network library will route the message across the mesh to the correct node.
  • #include <avr/pgmspace.h>
    @@ -130,7 +114,7 @@
    RF24 radio(7, 8); // CE & CS pins to use (Using 7,8 on Uno,Nano)
    -
    RF24Network network(radio);
    +
    RF24Network network(radio);
    uint16_t this_node; // Our node address
    @@ -347,15 +331,14 @@
    }
    }
    -
    Definition RF24Network.h:384
    -
    Definition RF24Network.h:229
    -
    unsigned char type
    Definition RF24Network.h:246
    -
    uint16_t from_node
    Definition RF24Network.h:231
    +
    Definition: RF24Network.h:375
    +
    Definition: RF24Network.h:226
    +
    unsigned char type
    Definition: RF24Network.h:243
    +
    uint16_t from_node
    Definition: RF24Network.h:228
    -
    diff --git a/Network_Priority_RX_8ino-example.html b/Network_Priority_RX_8ino-example.html index d7de4de8..0b4a7c9d 100644 --- a/Network_Priority_RX_8ino-example.html +++ b/Network_Priority_RX_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Network_Priority_RX.ino - +Newly Optimized RF24Network Layer: Network_Priority_RX.ino - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    Network_Priority_RX.ino
    -

    An example of handling/prioritizing different types of data passing through the RF24Network

    +

    An example of handling/prioritizing different types of data passing through the RF24Network

    #include "printf.h"
    #include <RF24.h>
    @@ -99,7 +83,7 @@
    RF24 radio(7, 8); // nRF24L01(+) radio attached using Getting Started board
    -
    RF24Network network(radio); // Network uses that radio
    +
    RF24Network network(radio); // Network uses that radio
    const uint16_t this_node = 00; // Address of our node in Octal format
    const uint16_t other_node = 01; // Address of the other node in Octal format
    @@ -182,7 +166,7 @@
    RF24NetworkHeader header; // Create an empty header
    uint16_t dataSize = network.peek(header); // Peek to get the size of the data
    uint32_t someVariable;
    -
    if (header.type == 32) { // If a certain header type is recieved
    +
    if (header.type = 32) { // If a certain header type is recieved
    network.read(header, &someVariable, sizeof(someVariable)); // Handle the data a specific way
    Serial.print(F("RX User Data:\nHeader Type "));
    Serial.print(header.type);
    @@ -196,15 +180,14 @@
    }
    } //loop
    -
    Definition RF24Network.h:384
    -
    #define EXTERNAL_DATA_TYPE
    Definition RF24Network.h:103
    -
    Definition RF24Network.h:229
    -
    unsigned char type
    Definition RF24Network.h:246
    +
    Definition: RF24Network.h:375
    +
    #define EXTERNAL_DATA_TYPE
    Definition: RF24Network.h:103
    +
    Definition: RF24Network.h:226
    +
    unsigned char type
    Definition: RF24Network.h:243
    - diff --git a/Network_Priority_TX_8ino-example.html b/Network_Priority_TX_8ino-example.html index b8d17a10..40c711b1 100644 --- a/Network_Priority_TX_8ino-example.html +++ b/Network_Priority_TX_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Network_Priority_TX.ino - +Newly Optimized RF24Network Layer: Network_Priority_TX.ino - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    Network_Priority_TX.ino
    -

    An example of handling/prioritizing different types of data passing through the RF24Network

    +

    An example of handling/prioritizing different types of data passing through the RF24Network

    #include <RF24.h>
    #include <RF24Network.h>
    @@ -99,7 +83,7 @@
    RF24 radio(7, 8); // nRF24L01(+) radio attached using Getting Started board
    -
    RF24Network network(radio); // Network uses that radio
    +
    RF24Network network(radio); // Network uses that radio
    const uint16_t this_node = 01; // Address of our node in Octal format
    const uint16_t other_node = 00; // Address of the other node in Octal format
    @@ -170,14 +154,13 @@
    } //loop
    -
    Definition RF24Network.h:384
    -
    #define EXTERNAL_DATA_TYPE
    Definition RF24Network.h:103
    -
    Definition RF24Network.h:229
    +
    Definition: RF24Network.h:375
    +
    #define EXTERNAL_DATA_TYPE
    Definition: RF24Network.h:103
    +
    Definition: RF24Network.h:226
    - diff --git a/RF24Network_8cpp.html b/RF24Network_8cpp.html index c34578b9..9bcca338 100644 --- a/RF24Network_8cpp.html +++ b/RF24Network_8cpp.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: RF24Network.cpp File Reference - +Newly Optimized RF24Network Layer: RF24Network.cpp File Reference - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    @@ -99,9 +83,9 @@
    - + - +

    Macros

    #define NETWORK_MULTICAST_ADDRESS_LEVEL_2   010
    #define NETWORK_MULTICAST_ADDRESS_LEVEL_2   010
     
    #define NETWORK_MULTICAST_ADDRESS_LEVEL_4   01000
    #define NETWORK_MULTICAST_ADDRESS_LEVEL_4   01000
     

    Macro Definition Documentation

    @@ -136,8 +120,7 @@

    -

    diff --git a/RF24Network_8h.html b/RF24Network_8h.html index 34d978dc..0f2a4120 100644 --- a/RF24Network_8h.html +++ b/RF24Network_8h.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: RF24Network.h File Reference - +Newly Optimized RF24Network Layer: RF24Network.h File Reference - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    +Macros
    RF24Network.h File Reference
    @@ -107,63 +90,58 @@   struct  RF24NetworkFrame   -class  ESBNetwork< radio_t > +class  RF24Network   - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + -

    Macros

    #define MIN_USER_DEFINED_HEADER_TYPE   0
    #define MIN_USER_DEFINED_HEADER_TYPE   0
     
    #define MAX_USER_DEFINED_HEADER_TYPE   127
    #define MAX_USER_DEFINED_HEADER_TYPE   127
     
    #define NETWORK_ADDR_RESPONSE   128
    #define NETWORK_ADDR_RESPONSE   128
     
    #define NETWORK_PING   130
    #define NETWORK_PING   130
     
    #define EXTERNAL_DATA_TYPE   131
    #define EXTERNAL_DATA_TYPE   131
     
    #define NETWORK_FIRST_FRAGMENT   148
    #define NETWORK_FIRST_FRAGMENT   148
     
    #define NETWORK_MORE_FRAGMENTS   149
    #define NETWORK_MORE_FRAGMENTS   149
     
    #define NETWORK_LAST_FRAGMENT   150
    #define NETWORK_LAST_FRAGMENT   150
     
    #define NETWORK_ACK   193
    #define NETWORK_ACK   193
     
    #define NETWORK_POLL   194
    #define NETWORK_POLL   194
     
    #define NETWORK_REQ_ADDRESS   195
    #define NETWORK_REQ_ADDRESS   195
     
    #define NETWORK_MORE_FRAGMENTS_NACK   200
    #define NETWORK_MORE_FRAGMENTS_NACK   200
     
    #define TX_NORMAL   0
    #define TX_NORMAL   0
     
    #define TX_ROUTED   1
    #define TX_ROUTED   1
     
    #define USER_TX_TO_PHYSICAL_ADDRESS   2
    #define USER_TX_TO_PHYSICAL_ADDRESS   2
     
    #define USER_TX_TO_LOGICAL_ADDRESS   3
    #define USER_TX_TO_LOGICAL_ADDRESS   3
     
    #define USER_TX_MULTICAST   4
    #define USER_TX_MULTICAST   4
     
    #define MAX_FRAME_SIZE   32
    #define MAX_FRAME_SIZE   32
     
    #define FRAME_HEADER_SIZE   10
    #define FRAME_HEADER_SIZE   10
     
    #define USE_CURRENT_CHANNEL   255
    #define USE_CURRENT_CHANNEL   255
     
    #define FLAG_FAST_FRAG   4
    #define FLAG_FAST_FRAG   4
     
    #define FLAG_NO_POLL   8
    #define FLAG_NO_POLL   8
     
    - - -

    -Typedefs

    typedef ESBNetwork< RF24 > RF24Network
     

    Detailed Description

    -

    Class declaration for RF24Network

    +

    Class declaration for RF24Network

    Macro Definition Documentation

    ◆ MIN_USER_DEFINED_HEADER_TYPE

    @@ -316,7 +294,7 @@

    -

    A sentinel value signifying that the current radio channel should be unchanged when setting up the network node with RF24Network::begin(uint8_t _channel, uint16_t _node_address).

    +

    A sentinel value signifying that the current radio channel should be unchanged when setting up the network node with RF24Network::begin(uint8_t _channel, uint16_t _node_address).

    @@ -331,7 +309,7 @@

    -

    This flag (when asserted in RF24Network::networkFlags) prevents repetitively configuring the radio during transmission of fragmented messages.

    +

    This flag (when asserted in RF24Network::networkFlags) prevents repetitively configuring the radio during transmission of fragmented messages.

    @@ -346,37 +324,14 @@

    -

    This flag (when asserted in RF24Network::networkFlags) prevents a node from responding to mesh nodes looking to connect to the network. Calling RF24Mesh::setChild() uses this flag accordingly.

    +

    This flag (when asserted in RF24Network::networkFlags) prevents a node from responding to mesh nodes looking to connect to the network. Calling RF24Mesh::setChild() uses this flag accordingly.

    - - -

    Typedef Documentation

    - -

    ◆ RF24Network

    - -
    -
    - - - - -
    typedef ESBNetwork<RF24> RF24Network
    -
    -

    A type definition of the template class ESBNetwork to maintain backward compatibility.

    -
    RF24 radio(7, 8);
    -
    -
    RF24Network network(radio);
    -
    // is equivalent to
    -
    ESBNetwork<RF24> network(radio);
    -
    Definition RF24Network.h:384
    -
    - diff --git a/RF24Network_8h_source.html b/RF24Network_8h_source.html index c73f8cbd..529f387f 100644 --- a/RF24Network_8h_source.html +++ b/RF24Network_8h_source.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: RF24Network.h Source File - +Newly Optimized RF24Network Layer: RF24Network.h Source File - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    41#define MAX_USER_DEFINED_HEADER_TYPE 127
    42
    43// ACK Response Types
    -
    72#define NETWORK_ADDR_RESPONSE 128
    +
    72#define NETWORK_ADDR_RESPONSE 128
    73
    79#define NETWORK_PING 130
    80
    @@ -153,7 +137,7 @@
    180// The following 2 atrifacts now exist in RF24Mesh as their significance was specific to RF24Mesh.
    181//#define NETWORK_ADDR_LOOKUP 196
    182//#define NETWORK_ADDR_RELEASE 197
    -
    185/* This isn't actually used anywhere. */
    +
    185/* This isn't actually used anywhere. */
    186#define NETWORK_MORE_FRAGMENTS_NACK 200
    187
    188/* Internal defines for handling written payloads */
    @@ -172,302 +156,278 @@
    214#define FLAG_NO_POLL 8
    215
    216class RF24;
    -
    217#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52833)
    -
    218class nrf_to_nrf;
    -
    219#endif
    -
    220
    -
    - -
    229{
    -
    231 uint16_t from_node;
    +
    217
    + +
    226{
    +
    228 uint16_t from_node;
    +
    229
    +
    231 uint16_t to_node;
    232
    -
    234 uint16_t to_node;
    +
    234 uint16_t id;
    235
    -
    237 uint16_t id;
    -
    238
    -
    246 unsigned char type;
    -
    247
    -
    254 unsigned char reserved;
    +
    243 unsigned char type;
    +
    244
    +
    251 unsigned char reserved;
    +
    252
    +
    254 static uint16_t next_id;
    255
    -
    257 static uint16_t next_id;
    -
    258
    - -
    265
    -
    287 RF24NetworkHeader(uint16_t _to, unsigned char _type = 0) : to_node(_to), id(next_id++), type(_type) {}
    -
    288
    -
    298 const char* toString(void) const;
    -
    299};
    -
    -
    300
    -
    - -
    312{
    - + +
    262
    +
    284 RF24NetworkHeader(uint16_t _to, unsigned char _type = 0) : to_node(_to), id(next_id++), type(_type) {}
    +
    285
    +
    295 const char* toString(void) const;
    +
    296};
    +
    297
    + +
    309{
    + +
    312
    +
    314 uint16_t message_size;
    315
    -
    317 uint16_t message_size;
    -
    318
    -
    323#if defined(RF24_LINUX)
    -
    324 uint8_t message_buffer[MAX_PAYLOAD_SIZE]; // Array to store the message
    -
    325#else
    -
    326 uint8_t* message_buffer; // Pointer to the buffer storing the actual message
    -
    327#endif
    -
    328
    - -
    335
    -
    346#if defined(RF24_LINUX) || defined(DOXYGEN_FORCED)
    -
    -
    347 RF24NetworkFrame(RF24NetworkHeader& _header, const void* _message = NULL, uint16_t _len = 0) : header(_header), message_size(_len)
    -
    348 {
    -
    349 if (_message && _len) {
    -
    350 memcpy(message_buffer, _message, _len);
    -
    351 }
    -
    352 }
    -
    -
    353#endif
    -
    354#if defined(DOXYGEN_FORCED) || !defined(RF24_LINUX)
    -
    -
    365 RF24NetworkFrame(RF24NetworkHeader& _header, uint16_t _message_size) : header(_header), message_size(_message_size)
    -
    366 {
    -
    367 }
    -
    -
    368#endif
    -
    369};
    -
    -
    370
    -
    382template<class radio_t = RF24>
    -
    - -
    384{
    -
    385
    -
    393public:
    -
    411 ESBNetwork(radio_t& _radio);
    -
    412
    -
    -
    433 inline void begin(uint16_t _node_address)
    -
    434 {
    -
    435 begin(USE_CURRENT_CHANNEL, _node_address);
    -
    436 }
    -
    -
    437
    -
    446 uint8_t update(void);
    -
    447
    -
    453 bool available(void);
    -
    454
    -
    465 uint16_t peek(RF24NetworkHeader& header);
    -
    466
    -
    480 void peek(RF24NetworkHeader& header, void* message, uint16_t maxlen = MAX_PAYLOAD_SIZE);
    -
    481
    -
    504 uint16_t read(RF24NetworkHeader& header, void* message, uint16_t maxlen = MAX_PAYLOAD_SIZE);
    +
    320#if defined(RF24_LINUX)
    +
    321 uint8_t message_buffer[MAX_PAYLOAD_SIZE]; // Array to store the message
    +
    322#else
    +
    323 uint8_t* message_buffer; // Pointer to the buffer storing the actual message
    +
    324#endif
    +
    325
    + +
    332
    +
    343#if defined(RF24_LINUX) || defined(DOXYGEN_FORCED)
    +
    344 RF24NetworkFrame(RF24NetworkHeader& _header, const void* _message = NULL, uint16_t _len = 0) : header(_header), message_size(_len)
    +
    345 {
    +
    346 if (_message && _len) {
    +
    347 memcpy(message_buffer, _message, _len);
    +
    348 }
    +
    349 }
    +
    350#endif
    +
    351#if defined(DOXYGEN_FORCED) || !defined(RF24_LINUX)
    +
    362 RF24NetworkFrame(RF24NetworkHeader& _header, uint16_t _message_size) : header(_header), message_size(_message_size)
    +
    363 {
    +
    364 }
    +
    365#endif
    +
    366};
    +
    367
    + +
    375{
    +
    376
    +
    384public:
    +
    390 RF24Network(RF24& _radio);
    +
    391
    +
    412 inline void begin(uint16_t _node_address)
    +
    413 {
    +
    414 begin(USE_CURRENT_CHANNEL, _node_address);
    +
    415 }
    +
    416
    +
    425 uint8_t update(void);
    +
    426
    +
    432 bool available(void);
    +
    433
    +
    444 uint16_t peek(RF24NetworkHeader& header);
    +
    445
    +
    459 void peek(RF24NetworkHeader& header, void* message, uint16_t maxlen = MAX_PAYLOAD_SIZE);
    +
    460
    +
    483 uint16_t read(RF24NetworkHeader& header, void* message, uint16_t maxlen = MAX_PAYLOAD_SIZE);
    +
    484
    +
    504 bool write(RF24NetworkHeader& header, const void* message, uint16_t len);
    505
    -
    525 bool write(RF24NetworkHeader& header, const void* message, uint16_t len);
    -
    526
    -
    555 void multicastLevel(uint8_t level);
    -
    556
    - +
    534 void multicastLevel(uint8_t level);
    +
    535
    + +
    544
    +
    553 void setup_watchdog(uint8_t prescalar);
    +
    554
    +
    564 uint32_t txTimeout;
    565
    -
    574 void setup_watchdog(uint8_t prescalar);
    +
    574 uint16_t routeTimeout;
    575
    -
    585 uint32_t txTimeout;
    -
    586
    -
    595 uint16_t routeTimeout;
    +
    584#if defined(ENABLE_NETWORK_STATS) || defined(DOXYGEN_FORCED)
    +
    585
    +
    595 void failures(uint32_t* _fails, uint32_t* _ok);
    596
    -
    605#if defined(ENABLE_NETWORK_STATS) || defined(DOXYGEN_FORCED)
    -
    606
    -
    616 void failures(uint32_t* _fails, uint32_t* _ok);
    +
    597#endif // defined (ENABLE_NETWORK_STATS)
    +
    598#if defined(RF24NetworkMulticast)
    +
    599
    +
    616 bool multicast(RF24NetworkHeader& header, const void* message, uint16_t len, uint8_t level = 7);
    617
    -
    618#endif // defined (ENABLE_NETWORK_STATS)
    -
    619#if defined(RF24NetworkMulticast)
    -
    620
    -
    637 bool multicast(RF24NetworkHeader& header, const void* message, uint16_t len, uint8_t level = 7);
    -
    638
    -
    639#endif
    -
    640
    -
    646 bool write(RF24NetworkHeader& header, const void* message, uint16_t len, uint16_t writeDirect);
    -
    647
    -
    680 bool sleepNode(unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE = 0); //added interrupt mode support (default 0=LOW)
    -
    681
    -
    687 uint16_t parent() const;
    -
    688
    -
    692 uint16_t addressOfPipe(uint16_t node, uint8_t pipeNo);
    -
    693
    -
    703 bool is_valid_address(uint16_t node);
    -
    704
    -
    734 void begin(uint8_t _channel, uint16_t _node_address);
    -
    735
    - -
    754
    -
    773#if defined(RF24_LINUX) || defined(DOXYGEN_FORCED)
    -
    774 std::queue<RF24NetworkFrame> external_queue;
    -
    775#endif
    -
    776
    -
    777#if (!defined(DISABLE_FRAGMENTATION) && !defined(RF24_LINUX)) || defined(DOXYGEN_FORCED)
    - -
    797#endif
    -
    798
    - -
    816
    - -
    832
    -
    833protected:
    -
    834#if defined(RF24NetworkMulticast)
    - -
    840#endif
    -
    847 uint16_t node_address;
    -
    848
    -
    849private:
    -
    867 bool write(uint16_t to_node, uint8_t sendType);
    -
    868
    -
    876 bool write_to_pipe(uint16_t node, uint8_t pipe, bool multicast);
    -
    877
    -
    886 uint8_t enqueue(RF24NetworkHeader* header);
    -
    887
    -
    888 /*
    -
    889 * Called from begin(), this sets up the radio to act accordingly per the
    -
    890 * logical `_node_address` parameter passed to `begin()`.
    -
    891 *
    -
    892 * Based on the value of the private member `node_address`, the resulting confiuration affects
    -
    893 * private members `node_mask`, `parent_node`, `parent_pipe`, and `_multicast_level`.
    -
    894 */
    -
    895 void setup_address(void);
    -
    896
    -
    897 /*
    -
    898 * This (non-overloaded) function copies the outgoing frame into the `frame_buffer` and detirmines
    -
    899 * the initial values passed into `logicalToPhysicalAddress()` (based on the value passed
    -
    900 * to the `writeDirect` parameter). This is always called from either of the overloaded public
    -
    901 * `write()` functions.
    -
    902 */
    -
    903 bool _write(RF24NetworkHeader& header, const void* message, uint16_t len, uint16_t writeDirect);
    +
    618#endif
    +
    619
    +
    625 bool write(RF24NetworkHeader& header, const void* message, uint16_t len, uint16_t writeDirect);
    +
    626
    +
    659 bool sleepNode(unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE = 0); //added interrupt mode support (default 0=LOW)
    +
    660
    +
    666 uint16_t parent() const;
    +
    667
    +
    671 uint16_t addressOfPipe(uint16_t node, uint8_t pipeNo);
    +
    672
    +
    682 bool is_valid_address(uint16_t node);
    +
    683
    +
    713 void begin(uint8_t _channel, uint16_t _node_address);
    +
    714
    + +
    733
    +
    752#if defined(RF24_LINUX) || defined(DOXYGEN_FORCED)
    +
    753 std::queue<RF24NetworkFrame> external_queue;
    +
    754#endif
    +
    755
    +
    756#if (!defined(DISABLE_FRAGMENTATION) && !defined(RF24_LINUX)) || defined(DOXYGEN_FORCED)
    + +
    776#endif
    +
    777
    + +
    795
    + +
    811
    +
    812protected:
    +
    813#if defined(RF24NetworkMulticast)
    + +
    819#endif
    +
    826 uint16_t node_address;
    +
    827
    +
    828private:
    +
    846 bool write(uint16_t to_node, uint8_t sendType);
    +
    847
    +
    855 bool write_to_pipe(uint16_t node, uint8_t pipe, bool multicast);
    +
    856
    +
    865 uint8_t enqueue(RF24NetworkHeader* header);
    +
    866
    +
    867 /*
    +
    868 * Called from begin(), this sets up the radio to act accordingly per the
    +
    869 * logical `_node_address` parameter passed to `begin()`.
    +
    870 *
    +
    871 * Based on the value of the private member `node_address`, the resulting confiuration affects
    +
    872 * private members `node_mask`, `parent_node`, `parent_pipe`, and `_multicast_level`.
    +
    873 */
    +
    874 void setup_address(void);
    +
    875
    +
    876 /*
    +
    877 * This (non-overloaded) function copies the outgoing frame into the `frame_buffer` and detirmines
    +
    878 * the initial values passed into `logicalToPhysicalAddress()` (based on the value passed
    +
    879 * to the `writeDirect` parameter). This is always called from either of the overloaded public
    +
    880 * `write()` functions.
    +
    881 */
    +
    882 bool _write(RF24NetworkHeader& header, const void* message, uint16_t len, uint16_t writeDirect);
    +
    883
    +
    884 struct logicalToPhysicalStruct
    +
    885 {
    +
    887 uint16_t send_node;
    +
    889 uint8_t send_pipe;
    +
    891 bool multicast;
    +
    892 };
    +
    893
    +
    894 /*
    +
    895 * Translates an outgoing frame's header information into the current node's
    +
    896 * required information (`logicalToPhysicalStruct`) for making the transmission.
    +
    897 *
    +
    898 * This returns void because the translated results are stored in the
    +
    899 * `logicalToPhysicalStruct` passed by reference.
    +
    900 */
    +
    901 void logicalToPhysicalAddress(logicalToPhysicalStruct* conversionInfo);
    +
    902
    +
    903 /********* only called from `logicalToPhysicalAddress()` ***************/
    904
    -
    905 struct logicalToPhysicalStruct
    -
    906 {
    -
    908 uint16_t send_node;
    -
    910 uint8_t send_pipe;
    -
    912 bool multicast;
    -
    913 };
    -
    914
    -
    915 /*
    -
    916 * Translates an outgoing frame's header information into the current node's
    -
    917 * required information (`logicalToPhysicalStruct`) for making the transmission.
    -
    918 *
    -
    919 * This returns void because the translated results are stored in the
    -
    920 * `logicalToPhysicalStruct` passed by reference.
    -
    921 */
    -
    922 void logicalToPhysicalAddress(logicalToPhysicalStruct* conversionInfo);
    -
    923
    -
    924 /********* only called from `logicalToPhysicalAddress()` ***************/
    -
    925
    -
    926 /* Returns true if the given logical address (`node` parameter) is a direct child of the current node; otherwise returns false. */
    -
    927 bool is_direct_child(uint16_t node);
    -
    928 /* Returns true if the given logical address (`node` parameter) is a descendent of the current node; otherwise returns false. */
    -
    929 bool is_descendant(uint16_t node);
    -
    930 /* Returns a logical address for the first child en route to a child node */
    -
    931 uint16_t direct_child_route_to(uint16_t node);
    -
    932
    -
    933 /***********************************************************************/
    -
    934
    -
    935 radio_t& radio;
    -
    937 uint8_t frame_size; /* The outgoing frame's total size including the header info. Ranges [8, MAX_PAYLOAD_SIZE] */
    -
    938 const static unsigned int max_frame_payload_size = MAX_FRAME_SIZE - sizeof(RF24NetworkHeader); /* always 24 bytes to compensate for the frame's header */
    +
    905 /* Returns true if the given logical address (`node` parameter) is a direct child of the current node; otherwise returns false. */
    +
    906 bool is_direct_child(uint16_t node);
    +
    907 /* Returns true if the given logical address (`node` parameter) is a descendent of the current node; otherwise returns false. */
    +
    908 bool is_descendant(uint16_t node);
    +
    909 /* Returns a logical address for the first child en route to a child node */
    +
    910 uint16_t direct_child_route_to(uint16_t node);
    +
    911
    +
    912 /***********************************************************************/
    +
    913
    +
    914 RF24& radio;
    +
    916 uint8_t frame_size; /* The outgoing frame's total size including the header info. Ranges [8, MAX_PAYLOAD_SIZE] */
    +
    917 const static unsigned int max_frame_payload_size = MAX_FRAME_SIZE - sizeof(RF24NetworkHeader); /* always 24 bytes to compensate for the frame's header */
    +
    918
    +
    919#if defined(RF24_LINUX)
    +
    920 std::queue<RF24NetworkFrame> frame_queue;
    +
    921 std::map<uint16_t, RF24NetworkFrame> frameFragmentsCache;
    +
    922 bool appendFragmentToFrame(RF24NetworkFrame frame);
    +
    923#else // Not Linux:
    +
    924
    +
    925 #if defined(DISABLE_USER_PAYLOADS)
    +
    926 uint8_t frame_queue[1];
    +
    927 #else
    +
    928 uint8_t frame_queue[MAIN_BUFFER_SIZE];
    +
    929 #endif
    +
    930
    +
    931 uint8_t* next_frame;
    +
    933 #if !defined(DISABLE_FRAGMENTATION)
    +
    934 RF24NetworkFrame frag_queue; /* a cache for re-assembling incoming message fragments */
    +
    935 uint8_t frag_queue_message_buffer[MAX_PAYLOAD_SIZE]; //frame size + 1
    +
    936 #endif
    +
    937
    +
    938#endif // Linux/Not Linux
    939
    -
    940#if defined(RF24_LINUX)
    -
    941 std::queue<RF24NetworkFrame> frame_queue;
    -
    942 std::map<uint16_t, RF24NetworkFrame> frameFragmentsCache;
    -
    943 bool appendFragmentToFrame(RF24NetworkFrame frame);
    -
    944#else // Not Linux:
    -
    945
    -
    946 #if defined(DISABLE_USER_PAYLOADS)
    -
    947 uint8_t frame_queue[1];
    -
    948 #else
    -
    949 uint8_t frame_queue[MAIN_BUFFER_SIZE];
    -
    950 #endif
    +
    940 uint16_t parent_node;
    +
    941 uint8_t parent_pipe;
    +
    942 uint16_t node_mask;
    +
    944 /* Given the Logical node address & a pipe number, this returns the Physical address assigned to the radio's pipes. */
    +
    945 uint64_t pipe_address(uint16_t node, uint8_t pipe);
    +
    946
    +
    947#if defined ENABLE_NETWORK_STATS
    +
    948 uint32_t nFails;
    +
    949 uint32_t nOK;
    +
    950#endif
    951
    -
    952 uint8_t* next_frame;
    -
    954 #if !defined(DISABLE_FRAGMENTATION)
    -
    955 RF24NetworkFrame frag_queue; /* a cache for re-assembling incoming message fragments */
    -
    956 uint8_t frag_queue_message_buffer[MAX_PAYLOAD_SIZE]; //frame size + 1
    -
    957 #endif
    -
    958
    -
    959#endif // Linux/Not Linux
    -
    960
    -
    961 uint16_t parent_node;
    -
    962 uint8_t parent_pipe;
    -
    963 uint16_t node_mask;
    -
    965 /* Given the Logical node address & a pipe number, this returns the Physical address assigned to the radio's pipes. */
    -
    966 uint64_t pipe_address(uint16_t node, uint8_t pipe);
    -
    967
    -
    968#if defined ENABLE_NETWORK_STATS
    -
    969 uint32_t nFails;
    -
    970 uint32_t nOK;
    -
    971#endif
    -
    972
    -
    973#if defined(RF24NetworkMulticast)
    -
    974 /* translates network level number (0-3) to a Logical address (used for TX multicasting) */
    -
    975 uint16_t levelToAddress(uint8_t level);
    -
    976#endif
    -
    977
    -
    979};
    -
    -
    980
    - -
    993#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52833)
    -
    994typedef ESBNetwork<nrf_to_nrf> RF52Network;
    -
    995#endif
    -
    996
    -
    1066#endif // __RF24NETWORK_H__
    -
    ESBNetwork< RF24 > RF24Network
    Definition RF24Network.h:992
    -
    #define USE_CURRENT_CHANNEL
    Definition RF24Network.h:202
    -
    #define MAX_FRAME_SIZE
    Definition RF24Network.h:195
    +
    952#if defined(RF24NetworkMulticast)
    +
    953 /* translates network level number (0-3) to a Logical address (used for TX multicasting) */
    +
    954 uint16_t levelToAddress(uint8_t level);
    +
    955#endif
    +
    956
    +
    958};
    +
    959
    +
    1029#endif // __RF24NETWORK_H__
    +
    #define USE_CURRENT_CHANNEL
    Definition: RF24Network.h:202
    +
    #define MAX_FRAME_SIZE
    Definition: RF24Network.h:195
    -
    #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:384
    -
    ESBNetwork(radio_t &_radio)
    Definition RF24Network.cpp:63
    -
    std::queue< RF24NetworkFrame > external_queue
    Definition RF24Network.h:774
    -
    bool sleepNode(unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE=0)
    -
    bool returnSysMsgs
    Definition RF24Network.h:815
    -
    void multicastLevel(uint8_t level)
    Definition RF24Network.cpp:1159
    -
    uint16_t node_address
    Definition RF24Network.h:847
    -
    bool multicast(RF24NetworkHeader &header, const void *message, uint16_t len, uint8_t level=7)
    Definition RF24Network.cpp:673
    -
    bool available(void)
    Definition RF24Network.cpp:547
    -
    void begin(uint16_t _node_address)
    Definition RF24Network.h:433
    -
    uint16_t routeTimeout
    Timeout for routed payloads.
    Definition RF24Network.h:595
    -
    void setup_watchdog(uint8_t prescalar)
    -
    void failures(uint32_t *_fails, uint32_t *_ok)
    -
    uint8_t update(void)
    Definition RF24Network.cpp:130
    -
    uint32_t txTimeout
    Network timeout value.
    Definition RF24Network.h:585
    -
    uint8_t networkFlags
    Definition RF24Network.h:831
    -
    RF24NetworkFrame * frag_ptr
    Definition RF24Network.h:796
    -
    uint16_t peek(RF24NetworkHeader &header)
    Definition RF24Network.cpp:571
    -
    uint8_t _multicast_level
    Definition RF24Network.h:839
    -
    uint16_t addressOfPipe(uint16_t node, uint8_t pipeNo)
    Definition RF24Network.cpp:1099
    -
    bool is_valid_address(uint16_t node)
    Definition RF24Network.cpp:1127
    -
    uint8_t frame_buffer[MAX_FRAME_SIZE]
    The raw system frame buffer.
    Definition RF24Network.h:753
    -
    uint16_t read(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)
    Definition RF24Network.cpp:617
    -
    bool multicastRelay
    Definition RF24Network.h:564
    -
    uint16_t parent() const
    Definition RF24Network.cpp:560
    -
    bool write(RF24NetworkHeader &header, const void *message, uint16_t len)
    Definition RF24Network.cpp:685
    -
    Definition RF24Network.h:312
    -
    RF24NetworkFrame(RF24NetworkHeader &_header, uint16_t _message_size)
    Definition RF24Network.h:365
    -
    RF24NetworkFrame(RF24NetworkHeader &_header, const void *_message=NULL, uint16_t _len=0)
    Definition RF24Network.h:347
    -
    uint8_t * message_buffer
    Definition RF24Network.h:326
    -
    RF24NetworkHeader header
    Definition RF24Network.h:314
    -
    uint16_t message_size
    Definition RF24Network.h:317
    -
    RF24NetworkFrame()
    Definition RF24Network.h:334
    -
    Definition RF24Network.h:229
    -
    const char * toString(void) const
    Definition RF24Network.cpp:1019
    -
    unsigned char reserved
    Definition RF24Network.h:254
    -
    RF24NetworkHeader(uint16_t _to, unsigned char _type=0)
    Definition RF24Network.h:287
    -
    RF24NetworkHeader()
    Definition RF24Network.h:264
    -
    unsigned char type
    Definition RF24Network.h:246
    -
    uint16_t id
    Definition RF24Network.h:237
    -
    uint16_t to_node
    Definition RF24Network.h:234
    -
    static uint16_t next_id
    Definition RF24Network.h:257
    -
    uint16_t from_node
    Definition RF24Network.h:231
    +
    #define MAX_PAYLOAD_SIZE
    Maximum size of fragmented network frames and fragmentation cache.
    Definition: RF24Network_config.h:61
    +
    #define MAIN_BUFFER_SIZE
    The allocated size of the incoming frame buffer.
    Definition: RF24Network_config.h:72
    +
    Definition: RF24Network.h:375
    +
    bool available(void)
    Definition: RF24Network.cpp:536
    +
    uint16_t node_address
    Definition: RF24Network.h:826
    +
    RF24NetworkFrame * frag_ptr
    Definition: RF24Network.h:775
    +
    uint8_t networkFlags
    Definition: RF24Network.h:810
    +
    void multicastLevel(uint8_t level)
    Definition: RF24Network.cpp:1130
    +
    uint8_t _multicast_level
    Definition: RF24Network.h:818
    +
    uint16_t routeTimeout
    Timeout for routed payloads.
    Definition: RF24Network.h:574
    +
    uint16_t read(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)
    Definition: RF24Network.cpp:602
    +
    uint32_t txTimeout
    Network timeout value.
    Definition: RF24Network.h:564
    +
    bool multicast(RF24NetworkHeader &header, const void *message, uint16_t len, uint8_t level=7)
    Definition: RF24Network.cpp:657
    +
    uint8_t frame_buffer[MAX_FRAME_SIZE]
    The raw system frame buffer.
    Definition: RF24Network.h:732
    +
    uint16_t addressOfPipe(uint16_t node, uint8_t pipeNo)
    Definition: RF24Network.cpp:1073
    +
    uint16_t parent() const
    Definition: RF24Network.cpp:548
    +
    void begin(uint16_t _node_address)
    Definition: RF24Network.h:412
    +
    std::queue< RF24NetworkFrame > external_queue
    Definition: RF24Network.h:753
    +
    bool is_valid_address(uint16_t node)
    Definition: RF24Network.cpp:1099
    +
    uint16_t peek(RF24NetworkHeader &header)
    Definition: RF24Network.cpp:558
    +
    bool write(RF24NetworkHeader &header, const void *message, uint16_t len)
    Definition: RF24Network.cpp:668
    +
    void setup_watchdog(uint8_t prescalar)
    +
    void failures(uint32_t *_fails, uint32_t *_ok)
    +
    bool sleepNode(unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE=0)
    +
    uint8_t update(void)
    Definition: RF24Network.cpp:123
    +
    bool multicastRelay
    Definition: RF24Network.h:543
    +
    bool returnSysMsgs
    Definition: RF24Network.h:794
    +
    Definition: RF24Network.h:309
    +
    RF24NetworkFrame(RF24NetworkHeader &_header, uint16_t _message_size)
    Definition: RF24Network.h:362
    +
    RF24NetworkFrame(RF24NetworkHeader &_header, const void *_message=NULL, uint16_t _len=0)
    Definition: RF24Network.h:344
    +
    uint8_t * message_buffer
    Definition: RF24Network.h:323
    +
    RF24NetworkHeader header
    Definition: RF24Network.h:311
    +
    uint16_t message_size
    Definition: RF24Network.h:314
    +
    RF24NetworkFrame()
    Definition: RF24Network.h:331
    +
    Definition: RF24Network.h:226
    +
    const char * toString(void) const
    Definition: RF24Network.cpp:997
    +
    unsigned char reserved
    Definition: RF24Network.h:251
    +
    RF24NetworkHeader(uint16_t _to, unsigned char _type=0)
    Definition: RF24Network.h:284
    +
    RF24NetworkHeader()
    Definition: RF24Network.h:261
    +
    unsigned char type
    Definition: RF24Network.h:243
    +
    uint16_t id
    Definition: RF24Network.h:234
    +
    uint16_t to_node
    Definition: RF24Network.h:231
    +
    static uint16_t next_id
    Definition: RF24Network.h:254
    +
    uint16_t from_node
    Definition: RF24Network.h:228
    - diff --git a/RF24Network__config_8h.html b/RF24Network__config_8h.html index 5d354e99..63eda05a 100644 --- a/RF24Network__config_8h.html +++ b/RF24Network__config_8h.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: RF24Network_config.h File Reference - +Newly Optimized RF24Network Layer: RF24Network_config.h File Reference - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    @@ -98,30 +82,28 @@ - + - + - + - + - - - + - + - + - +

    Macros

    #define NETWORK_DEFAULT_ADDRESS   04444
    #define NETWORK_DEFAULT_ADDRESS   04444
     A reserved valid address for use with RF24Mesh (when a mesh node requests an assigned address)
     
    #define NETWORK_MULTICAST_ADDRESS   0100
    #define NETWORK_MULTICAST_ADDRESS   0100
     A sentinel address value for multicasting purposes.
     
    #define NETWORK_AUTO_ROUTING   070
    #define NETWORK_AUTO_ROUTING   070
     A sentinel value for internally indicating that the frame should be automatically routed as necessary.
     
    #define SLOW_ADDR_POLL_RESPONSE   10
    #define SLOW_ADDR_POLL_RESPONSE   10
     Adds a delay to node prior to transmitting NETWORK_ADDR_RESPONSE messages.
     
    #define NUM_PIPES   6
     
    #define RF24NetworkMulticast
    #define RF24NetworkMulticast
     When defined, this will allow the use of multicasting messages.
     
    #define MAX_PAYLOAD_SIZE   144
    #define MAX_PAYLOAD_SIZE   144
     Maximum size of fragmented network frames and fragmentation cache.
     
    #define MAIN_BUFFER_SIZE   (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)
    #define MAIN_BUFFER_SIZE   (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)
     The allocated size of the incoming frame buffer.
     
    #define ENABLE_DYNAMIC_PAYLOADS
    #define ENABLE_DYNAMIC_PAYLOADS
     

    Macro Definition Documentation

    @@ -188,21 +170,6 @@

    NETWORK_ADDR_RESPONSE messages.

    By default this is undefined for speed. This defined number of milliseconds is only applied to the master node when replying to a child trying to connect to the mesh network.

    Note
    It is advised to define this if any child node is running CircuitPython because the execution speed in pure python is inherently slower than it is in C++.
    -

    -
    - -

    ◆ NUM_PIPES

    - -
    -
    - - - - -
    #define NUM_PIPES   6
    -
    -

    The number of 'pipes' available for addressing in the current device Networks with NRF24L01 devices only have 6 pipes NRF52x networks support up to 8 pipes

    -
    @@ -251,7 +218,7 @@

    - +
    #define MAIN_BUFFER_SIZE   (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)#define MAIN_BUFFER_SIZE   (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)
    @@ -279,8 +246,7 @@

    -

    diff --git a/RF24Network__config_8h_source.html b/RF24Network__config_8h_source.html index 591afc9e..31f7b787 100644 --- a/RF24Network__config_8h_source.html +++ b/RF24Network__config_8h_source.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: RF24Network_config.h Source File - +Newly Optimized RF24Network Layer: RF24Network_config.h Source File - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    34 #define SLOW_ADDR_POLL_RESPONSE 10
    35#endif // defined DOXYGEN_FORCED
    36
    -
    41#define NUM_PIPES 6
    -
    42
    -
    43#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__)
    +
    37#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__)
    +
    38
    +
    39 /********** USER CONFIG - non ATTiny **************/
    +
    40
    +
    41 //#define ENABLE_SLEEP_MODE //AVR only
    +
    43 #define RF24NetworkMulticast
    44
    -
    45 /********** USER CONFIG - non ATTiny **************/
    -
    46
    -
    47 //#define ENABLE_SLEEP_MODE //AVR only
    -
    49 #define RF24NetworkMulticast
    -
    50
    -
    51 /* Saves memory by disabling fragmentation */
    -
    52 //#define DISABLE_FRAGMENTATION
    -
    53
    -
    54 /* System defines */
    -
    55
    -
    63 #ifndef MAX_PAYLOAD_SIZE
    -
    64 #if defined linux || defined __linux
    -
    65 #define MAX_PAYLOAD_SIZE 1514
    -
    66 #else
    -
    67 #define MAX_PAYLOAD_SIZE 144
    -
    68 #endif
    -
    69 #endif // MAX_PAYLOAD_SIZE
    -
    70
    -
    78 #define MAIN_BUFFER_SIZE (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)
    +
    45 /* Saves memory by disabling fragmentation */
    +
    46 //#define DISABLE_FRAGMENTATION
    +
    47
    +
    48 /* System defines */
    +
    49
    +
    57 #ifndef MAX_PAYLOAD_SIZE
    +
    58 #if defined linux || defined __linux
    +
    59 #define MAX_PAYLOAD_SIZE 1514
    +
    60 #else
    +
    61 #define MAX_PAYLOAD_SIZE 144
    +
    62 #endif
    +
    63 #endif // MAX_PAYLOAD_SIZE
    +
    64
    +
    72 #define MAIN_BUFFER_SIZE (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)
    +
    73
    +
    74 /* Disable user payloads. Saves memory when used with RF24Ethernet or software that uses external data.*/
    +
    75 //#define DISABLE_USER_PAYLOADS
    +
    76
    +
    77 /* Enable tracking of success and failures for all transmissions, routed and user initiated */
    +
    78 //#define ENABLE_NETWORK_STATS
    79
    -
    80 /* Disable user payloads. Saves memory when used with RF24Ethernet or software that uses external data.*/
    -
    81 //#define DISABLE_USER_PAYLOADS
    -
    82
    -
    83 /* Enable tracking of success and failures for all transmissions, routed and user initiated */
    -
    84 //#define ENABLE_NETWORK_STATS
    -
    85
    -
    86 #ifndef DISABLE_DYNAMIC_PAYLOADS
    -
    88 #define ENABLE_DYNAMIC_PAYLOADS
    -
    89 #endif // DISABLE_DYNAMIC_PAYLOADS
    -
    90
    -
    91 /* Debug Options */
    -
    92 //#define RF24NETWORK_DEBUG
    -
    93 //#define RF24NETWORK_DEBUG_MINIMAL
    -
    94 //#define RF24NETWORK_DEBUG_ROUTING
    -
    95 //#define RF24NETWORK_DEBUG_FRAGMENTATION
    -
    96 //#define RF24NETWORK_DEBUG_FRAGMENTATION_L2
    -
    97 /*************************************/
    -
    98
    -
    99#else // Different set of defaults for ATTiny - fragmentation is disabled and user payloads are set to 3 max
    -
    100 /********** USER CONFIG - ATTiny **************/
    -
    101 //#define ENABLE_SLEEP_MODE //AVR only
    -
    102 #define RF24NetworkMulticast
    -
    103 // NOTE: Only 24 bytes of a payload are used when DISABLE_FRAGMENTATION is defined
    -
    104 #define MAX_PAYLOAD_SIZE 72
    -
    105 #define MAIN_BUFFER_SIZE (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)
    -
    106 #define DISABLE_FRAGMENTATION
    -
    107 #define ENABLE_DYNAMIC_PAYLOADS
    -
    108 //#define DISABLE_USER_PAYLOADS
    -
    109#endif
    -
    110/*************************************/
    -
    111
    -
    112#endif // RF24_NETWORK_CONFIG_H
    -
    113
    -
    114#ifdef __cplusplus
    -
    115
    -
    116#if (defined(__linux) || defined(linux)) && !defined(__ARDUINO_X86__) && !defined(USE_RF24_LIB_SRC)
    -
    117 #include <RF24/RF24_config.h>
    -
    118
    -
    119// ATXMega
    -
    120#elif defined(XMEGA)
    -
    121 #include "../../rf24lib/rf24lib/RF24_config.h"
    -
    122#else
    -
    123 #include <RF24_config.h>
    -
    124#endif
    -
    125
    -
    126#if !defined(ARDUINO_ARCH_AVR)
    -
    127 // sprintf is used by RF24NetworkHeader::toString
    -
    128 #ifndef sprintf_P
    -
    129 #define sprintf_P sprintf
    -
    130 #endif
    +
    80 #ifndef DISABLE_DYNAMIC_PAYLOADS
    +
    82 #define ENABLE_DYNAMIC_PAYLOADS
    +
    83 #endif // DISABLE_DYNAMIC_PAYLOADS
    +
    84
    +
    85 /* Debug Options */
    +
    86 //#define RF24NETWORK_DEBUG
    +
    87 //#define RF24NETWORK_DEBUG_MINIMAL
    +
    88 //#define RF24NETWORK_DEBUG_ROUTING
    +
    89 //#define RF24NETWORK_DEBUG_FRAGMENTATION
    +
    90 //#define RF24NETWORK_DEBUG_FRAGMENTATION_L2
    +
    91 /*************************************/
    +
    92
    +
    93#else // Different set of defaults for ATTiny - fragmentation is disabled and user payloads are set to 3 max
    +
    94 /********** USER CONFIG - ATTiny **************/
    +
    95 //#define ENABLE_SLEEP_MODE //AVR only
    +
    96 #define RF24NetworkMulticast
    +
    97 // NOTE: Only 24 bytes of a payload are used when DISABLE_FRAGMENTATION is defined
    +
    98 #define MAX_PAYLOAD_SIZE 72
    +
    99 #define MAIN_BUFFER_SIZE (MAX_PAYLOAD_SIZE + FRAME_HEADER_SIZE)
    +
    100 #define DISABLE_FRAGMENTATION
    +
    101 #define ENABLE_DYNAMIC_PAYLOADS
    +
    102 //#define DISABLE_USER_PAYLOADS
    +
    103#endif
    +
    104/*************************************/
    +
    105
    +
    106#endif // RF24_NETWORK_CONFIG_H
    +
    107
    +
    108#ifdef __cplusplus
    +
    109
    +
    110#if (defined(__linux) || defined(linux)) && !defined(__ARDUINO_X86__) && !defined(USE_RF24_LIB_SRC)
    +
    111 #include <RF24/RF24_config.h>
    +
    112
    +
    113// ATXMega
    +
    114#elif defined(XMEGA)
    +
    115 #include "../../rf24lib/rf24lib/RF24_config.h"
    +
    116#else
    +
    117 #include <RF24_config.h>
    +
    118#endif
    +
    119
    +
    120#if !defined(ARDUINO_ARCH_AVR)
    +
    121 // sprintf is used by RF24NetworkHeader::toString
    +
    122 #ifndef sprintf_P
    +
    123 #define sprintf_P sprintf
    +
    124 #endif
    +
    125#endif
    +
    126
    +
    127#ifdef RF24NETWORK_DEBUG
    +
    128 #define IF_RF24NETWORK_DEBUG(x) ({ x; })
    +
    129#else
    +
    130 #define IF_RF24NETWORK_DEBUG(x)
    131#endif
    -
    132
    -
    133#ifdef RF24NETWORK_DEBUG
    -
    134 #define IF_RF24NETWORK_DEBUG(x) ({ x; })
    -
    135#else
    -
    136 #define IF_RF24NETWORK_DEBUG(x)
    -
    137#endif
    -
    138#if defined(RF24NETWORK_DEBUG_MINIMAL)
    -
    139 #define IF_RF24NETWORK_DEBUG_MINIMAL(x) ({ x; })
    +
    132#if defined(RF24NETWORK_DEBUG_MINIMAL)
    +
    133 #define IF_RF24NETWORK_DEBUG_MINIMAL(x) ({ x; })
    +
    134#else
    +
    135 #define IF_RF24NETWORK_DEBUG_MINIMAL(x)
    +
    136#endif
    +
    137
    +
    138#if defined(RF24NETWORK_DEBUG_FRAGMENTATION)
    +
    139 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION(x) ({ x; })
    140#else
    -
    141 #define IF_RF24NETWORK_DEBUG_MINIMAL(x)
    +
    141 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION(x)
    142#endif
    143
    -
    144#if defined(RF24NETWORK_DEBUG_FRAGMENTATION)
    -
    145 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION(x) ({ x; })
    +
    144#if defined(RF24NETWORK_DEBUG_FRAGMENTATION_L2)
    +
    145 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION_L2(x) ({ x; })
    146#else
    -
    147 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION(x)
    +
    147 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION_L2(x)
    148#endif
    149
    -
    150#if defined(RF24NETWORK_DEBUG_FRAGMENTATION_L2)
    -
    151 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION_L2(x) ({ x; })
    +
    150#if defined(RF24NETWORK_DEBUG_ROUTING)
    +
    151 #define IF_RF24NETWORK_DEBUG_ROUTING(x) ({ x; })
    152#else
    -
    153 #define IF_RF24NETWORK_DEBUG_FRAGMENTATION_L2(x)
    +
    153 #define IF_RF24NETWORK_DEBUG_ROUTING(x)
    154#endif
    155
    -
    156#if defined(RF24NETWORK_DEBUG_ROUTING)
    -
    157 #define IF_RF24NETWORK_DEBUG_ROUTING(x) ({ x; })
    -
    158#else
    -
    159 #define IF_RF24NETWORK_DEBUG_ROUTING(x)
    -
    160#endif
    -
    161
    -
    162#endif // RF24_CONFIG_H
    +
    156#endif // RF24_CONFIG_H
    - diff --git a/addressing_8md.html b/addressing_8md.html index ef4ea056..7dbf514f 100644 --- a/addressing_8md.html +++ b/addressing_8md.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: docs/addressing.md File Reference - +Newly Optimized RF24Network Layer: docs/addressing.md File Reference - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    docs/addressing.md File Reference
    @@ -94,8 +78,7 @@
    - diff --git a/advanced__config_8md.html b/advanced__config_8md.html index 70ba47ac..306031a7 100644 --- a/advanced__config_8md.html +++ b/advanced__config_8md.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: docs/advanced_config.md File Reference - +Newly Optimized RF24Network Layer: docs/advanced_config.md File Reference - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    docs/advanced_config.md File Reference
    @@ -94,8 +78,7 @@
    - diff --git a/annotated.html b/annotated.html index 0a8c75bf..f1e1fec3 100644 --- a/annotated.html +++ b/annotated.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Class List - +Newly Optimized RF24Network Layer: Class List - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    Here are the classes, structs, unions and interfaces with brief descriptions:
    - +
     CESBNetwork
     CRF24Network
     CRF24NetworkFrame
     CRF24NetworkHeader
    @@ -101,8 +85,7 @@
    -
    diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 00000000..940a0b95 Binary files /dev/null and b/bdwn.png differ diff --git a/classESBNetwork-members.html b/classESBNetwork-members.html deleted file mode 100644 index 663faa74..00000000 --- a/classESBNetwork-members.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -Optimized RF24Network Layer: Member List - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Optimized RF24Network Layer v2.0.1 -
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    -
    -
    - - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    -
    -
    ESBNetwork< radio_t > Member List
    -
    -
    - -

    This is the complete list of members for ESBNetwork< radio_t >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _multicast_levelESBNetwork< radio_t >protected
    addressOfPipe(uint16_t node, uint8_t pipeNo)ESBNetwork< radio_t >
    available(void)ESBNetwork< radio_t >
    begin(uint16_t _node_address)ESBNetwork< radio_t >inline
    begin(uint8_t _channel, uint16_t _node_address)ESBNetwork< radio_t >
    ESBNetwork(radio_t &_radio)ESBNetwork< radio_t >
    external_queueESBNetwork< radio_t >
    failures(uint32_t *_fails, uint32_t *_ok)ESBNetwork< radio_t >
    frag_ptrESBNetwork< radio_t >
    frame_bufferESBNetwork< radio_t >
    is_valid_address(uint16_t node)ESBNetwork< radio_t >
    multicast(RF24NetworkHeader &header, const void *message, uint16_t len, uint8_t level=7)ESBNetwork< radio_t >
    multicastLevel(uint8_t level)ESBNetwork< radio_t >
    multicastRelayESBNetwork< radio_t >
    networkFlagsESBNetwork< radio_t >
    node_addressESBNetwork< radio_t >protected
    parent() constESBNetwork< radio_t >
    peek(RF24NetworkHeader &header)ESBNetwork< radio_t >
    peek(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)ESBNetwork< radio_t >
    read(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)ESBNetwork< radio_t >
    returnSysMsgsESBNetwork< radio_t >
    routeTimeoutESBNetwork< radio_t >
    setup_watchdog(uint8_t prescalar)ESBNetwork< radio_t >
    sleepNode(unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE=0)ESBNetwork< radio_t >
    txTimeoutESBNetwork< radio_t >
    update(void)ESBNetwork< radio_t >
    write(RF24NetworkHeader &header, const void *message, uint16_t len)ESBNetwork< radio_t >
    write(RF24NetworkHeader &header, const void *message, uint16_t len, uint16_t writeDirect)ESBNetwork< radio_t >
    - - -
    - - diff --git a/classRF24Network-members.html b/classRF24Network-members.html new file mode 100644 index 00000000..3895651f --- /dev/null +++ b/classRF24Network-members.html @@ -0,0 +1,115 @@ + + + + + + + +Newly Optimized RF24Network Layer: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Newly Optimized RF24Network Layer v1.0.21 +
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RF24Network Member List
    +
    +
    + +

    This is the complete list of members for RF24Network, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    _multicast_levelRF24Networkprotected
    addressOfPipe(uint16_t node, uint8_t pipeNo)RF24Network
    available(void)RF24Network
    begin(uint16_t _node_address)RF24Networkinline
    begin(uint8_t _channel, uint16_t _node_address)RF24Network
    external_queueRF24Network
    failures(uint32_t *_fails, uint32_t *_ok)RF24Network
    frag_ptrRF24Network
    frame_bufferRF24Network
    is_valid_address(uint16_t node)RF24Network
    multicast(RF24NetworkHeader &header, const void *message, uint16_t len, uint8_t level=7)RF24Network
    multicastLevel(uint8_t level)RF24Network
    multicastRelayRF24Network
    networkFlagsRF24Network
    node_addressRF24Networkprotected
    parent() constRF24Network
    peek(RF24NetworkHeader &header)RF24Network
    peek(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)RF24Network
    read(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)RF24Network
    returnSysMsgsRF24Network
    RF24Network(RF24 &_radio)RF24Network
    routeTimeoutRF24Network
    setup_watchdog(uint8_t prescalar)RF24Network
    sleepNode(unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE=0)RF24Network
    txTimeoutRF24Network
    update(void)RF24Network
    write(RF24NetworkHeader &header, const void *message, uint16_t len)RF24Network
    write(RF24NetworkHeader &header, const void *message, uint16_t len, uint16_t writeDirect)RF24Network
    + + + + diff --git a/classESBNetwork.html b/classRF24Network.html similarity index 52% rename from classESBNetwork.html rename to classRF24Network.html index 14256f2b..a91bedb8 100644 --- a/classESBNetwork.html +++ b/classRF24Network.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: ESBNetwork< radio_t > Class Template Reference - +Newly Optimized RF24Network Layer: RF24Network Class Reference - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    -
    ESBNetwork< radio_t > Class Template Reference
    +Classes | +List of all members
    +
    RF24Network Class Reference
    @@ -101,117 +86,102 @@
    Primary Interface

    These are the main methods you need to operate the network

    ESBNetwork (radio_t &_radio) -  -void begin (uint16_t _node_address) -  -uint8_t update (void) -  -bool available (void) -  -uint16_t peek (RF24NetworkHeader &header) -  -void peek (RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE) -  -uint16_t read (RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE) -  -bool write (RF24NetworkHeader &header, const void *message, uint16_t len) -  + RF24Network (RF24 &_radio) +  +void begin (uint16_t _node_address) +  +uint8_t update (void) +  +bool available (void) +  +uint16_t peek (RF24NetworkHeader &header) +  +void peek (RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE) +  +uint16_t read (RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE) +  +bool write (RF24NetworkHeader &header, const void *message, uint16_t len) + 
    Advanced Operation

    For advanced operation of the network

    -void failures (uint32_t *_fails, uint32_t *_ok) -  -bool multicast (RF24NetworkHeader &header, const void *message, uint16_t len, uint8_t level=7) -  -bool write (RF24NetworkHeader &header, const void *message, uint16_t len, uint16_t writeDirect) -  -bool sleepNode (unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE=0) -  -uint16_t parent () const -  -uint16_t addressOfPipe (uint16_t node, uint8_t pipeNo) -  -bool is_valid_address (uint16_t node) -  +void failures (uint32_t *_fails, uint32_t *_ok) +  +bool multicast (RF24NetworkHeader &header, const void *message, uint16_t len, uint8_t level=7) +  +bool write (RF24NetworkHeader &header, const void *message, uint16_t len, uint16_t writeDirect) +  +bool sleepNode (unsigned int cycles, int interruptPin, uint8_t INTERRUPT_MODE=0) +  +uint16_t parent () const +  +uint16_t addressOfPipe (uint16_t node, uint8_t pipeNo) +  +bool is_valid_address (uint16_t node) + 
    Deprecated

    Maintained for backwards compatibility

    -void begin (uint8_t _channel, uint16_t _node_address) -  +void begin (uint8_t _channel, uint16_t _node_address) +  - - - - - - - - - - - - + + + + + + + + + + + +

    Advanced Configuration

    For advanced configuration of the network

    bool multicastRelay
     
    uint32_t txTimeout
     Network timeout value.
     
    uint16_t routeTimeout
     Timeout for routed payloads.
     
    void multicastLevel (uint8_t level)
     
    void setup_watchdog (uint8_t prescalar)
     
    bool multicastRelay
     
    uint32_t txTimeout
     Network timeout value.
     
    uint16_t routeTimeout
     Timeout for routed payloads.
     
    void multicastLevel (uint8_t level)
     
    void setup_watchdog (uint8_t prescalar)
     
    - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +

    External Applications/Systems

    Interface for External Applications and Systems ( RF24Mesh, RF24Ethernet )

    uint8_t frame_buffer [MAX_FRAME_SIZE]
     The raw system frame buffer.
     
    std::queue< RF24NetworkFrameexternal_queue
     
    RF24NetworkFramefrag_ptr
     
    bool returnSysMsgs
     
    uint8_t networkFlags
     
    uint8_t _multicast_level
     
    uint16_t node_address
     
    uint8_t frame_buffer [MAX_FRAME_SIZE]
     The raw system frame buffer.
     
    std::queue< RF24NetworkFrameexternal_queue
     
    RF24NetworkFramefrag_ptr
     
    bool returnSysMsgs
     
    uint8_t networkFlags
     
    uint8_t _multicast_level
     
    uint16_t node_address
     

    Detailed Description

    -
    template<class radio_t = RF24>
    -class ESBNetwork< radio_t >

    2014-2021 - Optimized Network Layer for RF24 Radios

    -

    This class implements an OSI Network Layer using nRF24L01(+) radios driven by RF24 library.

    -
    Template Parameters
    - - -
    radio_tThe radio object's type. Defaults to RF24 for legacy behavior. This new abstraction is really meant for using the nRF52840 SoC as a drop-in replacement for the nRF24L01 radio. For more detail, see the nrf_to_nrf Arduino library.
    -
    -
    +

    2014-2021 - Optimized Network Layer for RF24 Radios

    +

    This class implements an OSI Network Layer using nRF24L01(+) radios driven by RF24 library.

    Examples
    Network_Ping.ino, Network_Ping_Sleep.ino, Network_Priority_RX.ino, Network_Priority_TX.ino, helloworld_rx.ino, helloworld_rx_advanced.ino, helloworld_tx.ino, and helloworld_tx_advanced.ino.

    Constructor & Destructor Documentation

    - -

    ◆ ESBNetwork()

    + +

    ◆ RF24Network()

    -
    -template<class radio_t >
    - + - + +
    ESBNetwork< radio_t >::ESBNetwork RF24Network::RF24Network (radio_t & _radio)RF24 & _radio)

    Construct the network

    -

    v2.0 supports a backward compatible constructor:

    RF24 radio(7, 8);
    -
    RF24Network network(radio); // for nRF24L01
    -
    -
    nrf_to_nrf radio1;
    -
    RF52Network network(radio1); // for nRF52xxx family
    -
    Definition RF24Network.h:384
    -
    See also
    v2.0 supports nrf_to_nrf Arduino library for nrf52 chips' internal radio.
    Parameters
    @@ -222,21 +192,20 @@

    Member Function Documentation

    - -

    ◆ begin() [1/2]

    + +

    ◆ begin() [1/2]

    -
    -template<class radio_t = RF24>
    _radioThe underlying radio driver instance
    - +
    - + - + +
    void ESBNetwork< radio_t >::begin void RF24Network::begin (uint16_t _node_address)uint16_t _node_address)
    @@ -246,13 +215,13 @@

    -

    Bring up the network using the current radio frequency/channel. Calling begin brings up the network, and configures the address, which designates the location of the node within RF24Network topology.

    -
    Note
    Node addresses are specified in Octal format, see RF24Network Addressing for more information. The address 04444 is reserved for RF24Mesh usage (when a mesh node is connecting to the network).
    +

    Bring up the network using the current radio frequency/channel. Calling begin brings up the network, and configures the address, which designates the location of the node within RF24Network topology.

    +
    Note
    Node addresses are specified in Octal format, see RF24Network Addressing for more information. The address 04444 is reserved for RF24Mesh usage (when a mesh node is connecting to the network).
    Warning
    Be sure to first call RF24::begin() to initialize the radio properly.

    Example 1: Begin on current radio channel with address 0 (master node)

    network.begin(00);

    Example 2: Begin with address 01 (child of master)

    network.begin(01);

    Example 3: Begin with address 011 (child of 01, grandchild of master)

    network.begin(011);
    -
    See also
    begin(uint8_t _channel, uint16_t _node_address)
    +
    See also
    begin(uint8_t _channel, uint16_t _node_address)
    Parameters
    @@ -262,18 +231,17 @@

    -

    ◆ update()

    + +

    ◆ update()

    -
    -template<class radio_t >

    _node_addressThe logical address of this node.
    - + - + +
    uint8_t ESBNetwork< radio_t >::update uint8_t RF24Network::update (void )void )
    @@ -284,18 +252,17 @@

    -

    ◆ available()

    + +

    ◆ available()

    -
    -template<class radio_t >
    - + - + +
    bool ESBNetwork< radio_t >::available bool RF24Network::available (void )void )
    @@ -305,18 +272,17 @@

    -

    ◆ peek() [1/2]

    + +

    ◆ peek() [1/2]

    -
    -template<class radio_t >
    - + - + +
    uint16_t ESBNetwork< radio_t >::peek uint16_t RF24Network::peek (RF24NetworkHeader & header)RF24NetworkHeaderheader)
    @@ -333,33 +299,39 @@

    -

    ◆ peek() [2/2]

    + +

    ◆ peek() [2/2]

    -
    -template<class radio_t >
    - + - + + - + + - + + + + + + +
    void ESBNetwork< radio_t >::peek void RF24Network::peek (RF24NetworkHeader & header, RF24NetworkHeaderheader,
    void * message, void * message,
    uint16_t maxlen = MAX_PAYLOAD_SIZE )uint16_t maxlen = MAX_PAYLOAD_SIZE 
    )

    Read the next available payload

    -

    Reads the next available payload without advancing to the next incoming message. Useful for doing a transparent packet manipulation layer on top of RF24Network.

    +

    Reads the next available payload without advancing to the next incoming message. Useful for doing a transparent packet manipulation layer on top of RF24Network.

    Parameters
    @@ -371,28 +343,34 @@

    -

    ◆ read()

    + +

    ◆ read()

    -
    -template<class radio_t >

    [out]headerThe RF24NetworkHeader (envelope) of this message
    - + - + + - + + - + + + + + + +
    uint16_t ESBNetwork< radio_t >::read uint16_t RF24Network::read (RF24NetworkHeader & header, RF24NetworkHeaderheader,
    void * message, void * message,
    uint16_t maxlen = MAX_PAYLOAD_SIZE )uint16_t maxlen = MAX_PAYLOAD_SIZE 
    )
    @@ -406,14 +384,14 @@

    Serial.println(time);

    }
    }
    -
    Definition RF24Network.h:229
    -
    unsigned char type
    Definition RF24Network.h:246
    +
    Definition: RF24Network.h:226
    +
    unsigned char type
    Definition: RF24Network.h:243

    Parameters
    - +
    [out]headerThe RF24NetworkHeader (envelope) of this message
    [out]messagePointer to memory where the message should be placed
    maxlenThe largest message size which can be held in message . If this parameter is left unspecified, the entire length of the message is fetched. Hint: Use peek(RF24NetworkHeader &) to get the length of next available message in the queue.
    maxlenThe largest message size which can be held in message . If this parameter is left unspecified, the entire length of the message is fetched. Hint: Use peek(RF24NetworkHeader &) to get the length of next available message in the queue.
    @@ -421,33 +399,39 @@

    -

    ◆ write() [1/2]

    + +

    ◆ write() [1/2]

    -
    -template<class radio_t >
    - + - + + - + + - + + + + + + +
    bool ESBNetwork< radio_t >::write bool RF24Network::write (RF24NetworkHeader & header, RF24NetworkHeaderheader,
    const void * message, const void * message,
    uint16_t len )uint16_t len 
    )

    Send a message

    -
    Note
    RF24Network now supports fragmentation for very long messages, send as normal. Fragmentation may need to be enabled or configured by editing the RF24Network_config.h file. Default max payload size is 120 bytes.
    +
    Note
    RF24Network now supports fragmentation for very long messages, send as normal. Fragmentation may need to be enabled or configured by editing the RF24Network_config.h file. Default max payload size is 120 bytes.
    uint32_t time = millis();
    uint16_t to = 00; // Send to master
    RF24NetworkHeader header(to, 'T'); // Send header type 'T'
    @@ -464,18 +448,17 @@

    -

    ◆ multicastLevel()

    + +

    ◆ multicastLevel()

    -
    -template<class radio_t >
    - + - + +
    void ESBNetwork< radio_t >::multicastLevel void RF24Network::multicastLevel (uint8_t level)uint8_t level)
    @@ -489,8 +472,8 @@

    This optional function is used to override the default level set when a node's logical address changes, and it can be used to create custom multicast groups that all share a single address.

    See also
    @@ -503,25 +486,24 @@

    -

    ◆ setup_watchdog()

    + +

    ◆ setup_watchdog()

    -
    -template<class radio_t = RF24>
    - + - + +
    void ESBNetwork< radio_t >::setup_watchdog void RF24Network::setup_watchdog (uint8_t prescalar)uint8_t prescalar)

    Set up the watchdog timer for sleep mode using the number 0 through 10 to represent the following time periods:
    - wdt_16ms = 0, wdt_32ms, wdt_64ms, wdt_128ms, wdt_250ms, wdt_500ms, wdt_1s, wdt_2s, wdt_4s, wdt_8s

    setup_watchdog(7); // Sets the WDT to trigger every second
    -
    void setup_watchdog(uint8_t prescalar)
    + wdt_16ms = 0, wdt_32ms, wdt_64ms, wdt_128ms, wdt_250ms, wdt_500ms, wdt_1s, wdt_2s, wdt_4s, wdt_8s

    setup_watchdog(7); // Sets the WDT to trigger every second
    +
    void setup_watchdog(uint8_t prescalar)
    Parameters
    @@ -531,23 +513,28 @@

    -

    ◆ failures()

    + +

    ◆ failures()

    -
    -template<class radio_t = RF24>

    prescalarThe WDT prescaler to define how often the node will wake up. When defining sleep mode cycles, this time period is 1 cycle.
    - + - + + - + + + + + + +
    void ESBNetwork< radio_t >::failures void RF24Network::failures (uint32_t * _fails, uint32_t * _fails,
    uint32_t * _ok )uint32_t * _ok 
    )
    @@ -557,40 +544,47 @@

    -

    ◆ multicast()

    + +

    ◆ multicast()

    -
    -template<class radio_t >
    - + - + + - + + - + + - + + + + + + +
    bool ESBNetwork< radio_t >::multicast bool RF24Network::multicast (RF24NetworkHeader & header, RF24NetworkHeaderheader,
    const void * message, const void * message,
    uint16_t len, uint16_t len,
    uint8_t level = 7 )uint8_t level = 7 
    )

    Send a multicast message to multiple nodes at once Allows messages to be rapidly broadcast through the network

    Multicasting is arranged in levels, with all nodes on the same level listening to the same address Levels are assigned by network level ie: nodes 01-05: Level 1, nodes 011-055: Level 2

    See also
    Parameters
    @@ -598,7 +592,7 @@

    header

    reference to the RF24NetworkHeader object used for this message
    messagePointer to memory where the message is located
    lenThe size of the message
    levelMulticast level to broadcast to. If this parameter is unspecified, then the node's current multicastLevel() is used.
    levelMulticast level to broadcast to. If this parameter is unspecified, then the node's current multicastLevel() is used.
    @@ -606,33 +600,40 @@

    -

    ◆ write() [2/2]

    + +

    ◆ write() [2/2]

    -
    -template<class radio_t >
    - + - + + - + + - + + - + + + + + + +
    bool ESBNetwork< radio_t >::write bool RF24Network::write (RF24NetworkHeader & header, RF24NetworkHeaderheader,
    const void * message, const void * message,
    uint16_t len, uint16_t len,
    uint16_t writeDirect )uint16_t writeDirect 
    )
    @@ -640,34 +641,40 @@

    -

    ◆ sleepNode()

    + +

    ◆ sleepNode()

    -
    -template<class radio_t = RF24>
    - + - + + - + + - + + + + + + +
    bool ESBNetwork< radio_t >::sleepNode bool RF24Network::sleepNode (unsigned int cycles, unsigned int cycles,
    int interruptPin, int interruptPin,
    uint8_t INTERRUPT_MODE = 0 )uint8_t INTERRUPT_MODE = 0 
    )

    Sleep this node - For AVR devices only

    Note
    NEW - Nodes can now be slept while the radio is not actively transmitting. This must be manually enabled by uncommenting the #define ENABLE_SLEEP_MODE in RF24Network_config.h
    -The watchdog timer should be configured in the sketch's setup() if using sleep mode. This function will sleep the node, with the radio still active in receive mode. See setup_watchdog().
    +The watchdog timer should be configured in the sketch's setup() if using sleep mode. This function will sleep the node, with the radio still active in receive mode. See setup_watchdog().

    The node can be awoken in two ways, both of which can be enabled simultaneously:

    1. An interrupt - usually triggered by the radio receiving a payload. Must use pin 2 (interrupt 0) or 3 (interrupt 1) on Uno, Nano, etc.
    2. The watchdog timer waking the MCU after a designated period of time, can also be used instead of delays to control transmission intervals.
    3. @@ -702,18 +709,16 @@

      -

      ◆ parent()

      + +

      ◆ parent()

      -
      -template<class radio_t >
      - + - +
      uint16_t ESBNetwork< radio_t >::parent uint16_t RF24Network::parent ()) const
      @@ -723,47 +728,51 @@

      -

      ◆ addressOfPipe()

      + +

      ◆ addressOfPipe()

      -
      -template<class radio_t >
      - + - + + - + + + + + + +
      uint16_t ESBNetwork< radio_t >::addressOfPipe uint16_t RF24Network::addressOfPipe (uint16_t node, uint16_t node,
      uint8_t pipeNo )uint8_t pipeNo 
      )
      -

      Provided a node address and a pipe number, will return the RF24Network address of that child pipe for that node.

      +

      Provided a node address and a pipe number, will return the RF24Network address of that child pipe for that node.

      - -

      ◆ is_valid_address()

      + +

      ◆ is_valid_address()

      -
      -template<class radio_t >
      - + - + +
      bool ESBNetwork< radio_t >::is_valid_address bool RF24Network::is_valid_address (uint16_t node)uint16_t node)
      -

      Validate a network address as a proper logical address

      Note
      Addresses are specified in octal form, ie 011, 034. Review RF24Network addressing for more information.
      +

      Validate a network address as a proper logical address

      Note
      Addresses are specified in octal form, ie 011, 034. Review RF24Network addressing for more information.
      Parameters
      @@ -775,27 +784,32 @@

      -

      ◆ begin() [2/2]

      + +

      ◆ begin() [2/2]

      -
      -template<class radio_t >

      nodeThe specified logical address of a network node.
      - + - + + - + + + + + + +
      void ESBNetwork< radio_t >::begin void RF24Network::begin (uint8_t _channel, uint8_t _channel,
      uint16_t _node_address )uint16_t _node_address 
      )
      -

      Bring up the network on a specific radio frequency/channel.

      Deprecated
      Use RF24::setChannel() to configure the radio channel. Use ESBNetwork::begin(uint16_t _node_address) to set the node address.
      +

      Bring up the network on a specific radio frequency/channel.

      Deprecated:
      Use RF24::setChannel() to configure the radio channel. Use RF24Network::begin(uint16_t _node_address) to set the node address.

      Example 1: Begin on channel 90 with address 0 (master node)

      network.begin(90, 0);

      Example 2: Begin on channel 90 with address 01 (child of master)

      network.begin(90, 01);

      Example 3: Begin on channel 90 with address 011 (child of 01, grandchild of master)

      network.begin(90, 011);
      @@ -810,34 +824,30 @@

      Member Data Documentation

      - -

      ◆ multicastRelay

      + +

      ◆ multicastRelay

      -
      -template<class radio_t = RF24>
      - +
      bool ESBNetwork< radio_t >::multicastRelaybool RF24Network::multicastRelay

      Enabling this will allow this node to automatically forward received multicast frames to the next highest multicast level. Forwarded frames will also be enqueued on the forwarding node as a received frame.

      -

      This is disabled by default.

      See also
      multicastLevel()
      +

      This is disabled by default.

      See also
      multicastLevel()
      - -

      ◆ txTimeout

      + +

      ◆ txTimeout

      -
      -template<class radio_t = RF24>
      - +
      uint32_t ESBNetwork< radio_t >::txTimeoutuint32_t RF24Network::txTimeout
      @@ -848,16 +858,14 @@

      -

      ◆ routeTimeout

      + +

      ◆ routeTimeout

      -
      -template<class radio_t = RF24>
      - +
      uint16_t ESBNetwork< radio_t >::routeTimeoutuint16_t RF24Network::routeTimeout
      @@ -867,16 +875,14 @@

      -

      ◆ frame_buffer

      + +

      ◆ frame_buffer

      -
      -template<class radio_t = RF24>
      - +
      uint8_t ESBNetwork< radio_t >::frame_buffer[MAX_FRAME_SIZE]uint8_t RF24Network::frame_buffer[MAX_FRAME_SIZE]
      @@ -887,16 +893,14 @@

      -

      ◆ external_queue

      + +

      ◆ external_queue

      -
      -template<class radio_t = RF24>
      - +
      std::queue<RF24NetworkFrame> ESBNetwork< radio_t >::external_queuestd::queue<RF24NetworkFrame> RF24Network::external_queue
      @@ -910,51 +914,47 @@

      memcpy(&myBuffer, &f.message_buffer, dataSize);

      network.external_queue.pop();
      }
      -
      Definition RF24Network.h:312
      -
      uint8_t * message_buffer
      Definition RF24Network.h:326
      -
      uint16_t message_size
      Definition RF24Network.h:317
      +
      Definition: RF24Network.h:309
      +
      uint8_t * message_buffer
      Definition: RF24Network.h:323
      +
      uint16_t message_size
      Definition: RF24Network.h:314

      - -

      ◆ frag_ptr

      + +

      ◆ frag_ptr

      -
      -template<class radio_t = RF24>
      - +
      RF24NetworkFrame* ESBNetwork< radio_t >::frag_ptrRF24NetworkFrame* RF24Network::frag_ptr

      ARDUINO platforms only

      -

      The frag_ptr is only used with Arduino (not RPi/Linux) and is mainly used for external data systems like RF24Ethernet. When a payload of type EXTERNAL_DATA_TYPE is received, and returned from update(), the frag_ptr will always point to the starting memory location of the received frame. This is used by external data systems (RF24Ethernet) to immediately copy the received data to a buffer, without using the user-cache.

      +

      The frag_ptr is only used with Arduino (not RPi/Linux) and is mainly used for external data systems like RF24Ethernet. When a payload of type EXTERNAL_DATA_TYPE is received, and returned from update(), the frag_ptr will always point to the starting memory location of the received frame. This is used by external data systems (RF24Ethernet) to immediately copy the received data to a buffer, without using the user-cache.

      See also
      RF24NetworkFrame
      uint8_t return_type = network.update();
      if(return_type == EXTERNAL_DATA_TYPE) {
      memcpy(&myDataBuffer, network.frag_ptr->message_buffer, network.frag_ptr->message_size);
      }
      -
      #define EXTERNAL_DATA_TYPE
      Definition RF24Network.h:103
      +
      #define EXTERNAL_DATA_TYPE
      Definition: RF24Network.h:103

      Linux devices (defined as RF24_LINUX) currently cache all payload types, and do not utilize frag_ptr.

      - -

      ◆ returnSysMsgs

      + +

      ◆ returnSysMsgs

      -
      -template<class radio_t = RF24>
      - +
      bool ESBNetwork< radio_t >::returnSysMsgsbool RF24Network::returnSysMsgs
      -

      Variable to determine whether update() will return after the radio buffers have been emptied (DEFAULT), or whether to return immediately when (most) system types are received.

      +

      Variable to determine whether update() will return after the radio buffers have been emptied (DEFAULT), or whether to return immediately when (most) system types are received.

      As an example, this is used with RF24Mesh to catch and handle system messages without loading them into the user cache.

      The following reserved/system message types are handled automatically, and not returned.

      @@ -974,16 +974,14 @@

      -

      ◆ networkFlags

      + +

      ◆ networkFlags

      -
      -template<class radio_t = RF24>

      - +
      uint8_t ESBNetwork< radio_t >::networkFlagsuint8_t RF24Network::networkFlags
      @@ -1001,19 +999,17 @@

      -

      ◆ _multicast_level

      + +

      ◆ _multicast_level

      -
      -template<class radio_t = RF24>
      @@ -1022,23 +1018,21 @@

      -

      The current node's network level (used for multicast TX/RX-ing).

      See also
      Use multicastLevel() to adjust this when needed.
      +

      The current node's network level (used for multicast TX/RX-ing).

      See also
      Use multicastLevel() to adjust this when needed.
      - -

      ◆ node_address

      + +

      ◆ node_address

      -
      -template<class radio_t = RF24>

      - +
      uint8_t ESBNetwork< radio_t >::_multicast_leveluint8_t RF24Network::_multicast_level
      @@ -1054,8 +1048,7 @@

      - diff --git a/classes.html b/classes.html index 9b6b1ae2..ae04866f 100644 --- a/classes.html +++ b/classes.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Class Index - +Newly Optimized RF24Network Layer: Class Index - - - - @@ -28,44 +23,33 @@

      - +
      uint16_t ESBNetwork< radio_t >::node_addressuint16_t RF24Network::node_address
      -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      Class Index
      -

      diff --git a/clipboard.js b/clipboard.js deleted file mode 100644 index 42c1fb0e..00000000 --- a/clipboard.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - -The code below is based on the Doxygen Awesome project, see -https://github.com/jothepro/doxygen-awesome-css - -MIT License - -Copyright (c) 2021 - 2022 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -*/ - -let clipboard_title = "Copy to clipboard" -let clipboard_icon = `` -let clipboard_successIcon = `` -let clipboard_successDuration = 1000 - -$(function() { - if(navigator.clipboard) { - const fragments = document.getElementsByClassName("fragment") - for(const fragment of fragments) { - const clipboard_div = document.createElement("div") - clipboard_div.classList.add("clipboard") - clipboard_div.innerHTML = clipboard_icon - clipboard_div.title = clipboard_title - $(clipboard_div).click(function() { - const content = this.parentNode.cloneNode(true) - // filter out line number and folded fragments from file listings - content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) - let text = content.textContent - // remove trailing newlines and trailing spaces from empty lines - text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') - navigator.clipboard.writeText(text); - this.classList.add("success") - this.innerHTML = clipboard_successIcon - window.setTimeout(() => { // switch back to normal icon after timeout - this.classList.remove("success") - this.innerHTML = clipboard_icon - }, clipboard_successDuration); - }) - fragment.insertBefore(clipboard_div, fragment.firstChild) - } - } -}) diff --git a/cookie.js b/cookie.js deleted file mode 100644 index 53ad21d9..00000000 --- a/cookie.js +++ /dev/null @@ -1,58 +0,0 @@ -/*! - Cookie helper functions - Copyright (c) 2023 Dimitri van Heesch - Released under MIT license. -*/ -let Cookie = { - cookie_namespace: 'doxygen_', - - readSetting(cookie,defVal) { - if (window.chrome) { - const val = localStorage.getItem(this.cookie_namespace+cookie) || - sessionStorage.getItem(this.cookie_namespace+cookie); - if (val) return val; - } else { - let myCookie = this.cookie_namespace+cookie+"="; - if (document.cookie) { - const index = document.cookie.indexOf(myCookie); - if (index != -1) { - const valStart = index + myCookie.length; - let valEnd = document.cookie.indexOf(";", valStart); - if (valEnd == -1) { - valEnd = document.cookie.length; - } - return document.cookie.substring(valStart, valEnd); - } - } - } - return defVal; - }, - - writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete - if (window.chrome) { - if (days==0) { - sessionStorage.setItem(this.cookie_namespace+cookie,val); - } else { - localStorage.setItem(this.cookie_namespace+cookie,val); - } - } else { - let date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; - document.cookie = this.cookie_namespace + cookie + "=" + - val + "; SameSite=Lax;" + expiration + "path=/"; - } - }, - - eraseSetting(cookie) { - if (window.chrome) { - if (localStorage.getItem(this.cookie_namespace+cookie)) { - localStorage.removeItem(this.cookie_namespace+cookie); - } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { - sessionStorage.removeItem(this.cookie_namespace+cookie); - } - } else { - this.writeSetting(cookie,'',-1); - } - }, -} diff --git a/darkmode_toggle.js b/darkmode_toggle.js index b9c7364d..e2331dc8 100644 --- a/darkmode_toggle.js +++ b/darkmode_toggle.js @@ -28,10 +28,6 @@ SOFTWARE. */ class DarkModeToggle extends HTMLElement { - - static darkmode_cookie_name = ''+'prefers-dark'; - static lightmode_cookie_name = ''+'prefers-light'; - static icon = ''; static title = "Toggle Light/Dark Mode" @@ -61,30 +57,29 @@ class DarkModeToggle extends HTMLElement { const toggleButton = document.createElement('dark-mode-toggle') toggleButton.title = DarkModeToggle.title toggleButton.innerHTML = DarkModeToggle.icon - toggleButton.tabIndex = 0; function addButton() { - const titleArea = document.getElementById("titlearea"); - const searchBox = document.getElementById("MSearchBox"); - const mainMenu = document.getElementById("main-menu"); - const navRow1 = document.getElementById("navrow1"); - let mainMenuVisible = false; + var titleArea = document.getElementById("titlearea"); + var searchBox = document.getElementById("MSearchBox"); + var mainMenu = document.getElementById("main-menu"); + var navRow1 = document.getElementById("navrow1"); + var mainMenuVisible = false; if (mainMenu) { - const menuStyle = window.getComputedStyle(mainMenu); + var menuStyle = window.getComputedStyle(mainMenu); mainMenuVisible = menuStyle.display!=='none' } - const searchBoxPos1 = document.getElementById("searchBoxPos1"); + var searchBoxPos1 = document.getElementById("searchBoxPos1"); if (searchBox) { // (1) search box visible searchBox.parentNode.appendChild(toggleButton) } else if (navRow1) { // (2) no search box, static menu bar - const li = document.createElement('li'); + var li = document.createElement('li'); li.style = 'float: right;' li.appendChild(toggleButton); toggleButton.style = 'width: 24px; height: 25px; padding-top: 11px; float: right;'; - const row = document.querySelector('#navrow1 > ul:first-of-type'); + var row = document.querySelector('#navrow1 > ul:first-of-type'); row.appendChild(li) } else if (mainMenu && mainMenuVisible) { // (3) no search box + dynamic menu bar expanded - const li = document.createElement('li'); + var li = document.createElement('li'); li.style = 'float: right;' li.appendChild(toggleButton); toggleButton.style = 'width: 14px; height: 36px; padding-top: 10px; float: right;'; @@ -99,16 +94,11 @@ class DarkModeToggle extends HTMLElement { } } - $(document).ready(() => addButton()); - $(window).resize(() => addButton()); - let inFocus = false; - $(document).focusin(() => inFocus = true); - $(document).focusout(() => inFocus = false); - $(document).keyup(function(e) { - if (e.keyCode==27 && !inFocus) { // escape key maps to keycode `27` - e.stopPropagation(); - DarkModeToggle.userPreference = !DarkModeToggle.userPreference - } + $(document).ready(function(){ + addButton(); + }) + $(window).resize(function(){ + addButton(); }) DarkModeToggle.setDarkModeVisibility(DarkModeToggle.darkModeEnabled) }) @@ -118,7 +108,32 @@ class DarkModeToggle extends HTMLElement { constructor() { super(); this.onclick=this.toggleDarkMode - this.onkeypress=function(e){if (e.keyCode==13) { this.toggleDarkMode(); }}; + } + + static createCookie(name, value, days) { + if (days) { + var date = new Date(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + var expires = "; expires=" + date.toGMTString(); + } + else var expires = ""; + + document.cookie = name + "=" + value + expires + "; path=/"; + } + + static readCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for (var i = 0; i < ca.length; i++) { + var c = ca[i]; + while (c.charAt(0) == ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); + } + return null; + } + + static eraseCookie(name) { + DarkModeToggle.createCookie(name, "", -1); } /** @@ -129,29 +144,54 @@ class DarkModeToggle extends HTMLElement { } static get prefersDarkModeInLightMode() { - return Cookie.readSetting(DarkModeToggle.darkmode_cookie_name,'0')=='1'; + if (window.chrome) { // Chrome supports localStorage in combination with file:// but not cookies + return localStorage.getItem(DarkModeToggle.prefersDarkModeInLightModeKey) + } else { // Other browsers support cookies in combination with file:// but not localStorage + return DarkModeToggle.readCookie('doxygen_prefers_dark')=='1' + } } static set prefersDarkModeInLightMode(preference) { - if (preference) { - Cookie.writeSetting(DarkModeToggle.darkmode_cookie_name,'1'); + if (window.chrome) { + if (preference) { + localStorage.setItem(DarkModeToggle.prefersDarkModeInLightModeKey, true) + } else { + localStorage.removeItem(DarkModeToggle.prefersDarkModeInLightModeKey) + } } else { - Cookie.eraseSetting(DarkModeToggle.darkmode_cookie_name); + if (preference) { + DarkModeToggle.createCookie('doxygen_prefers_dark','1',365) + } else { + DarkModeToggle.eraseCookie('doxygen_prefers_dark') + } } } static get prefersLightModeInDarkMode() { - return Cookie.readSetting(DarkModeToggle.lightmode_cookie_name,'0')=='1' + if (window.chrome) { // Chrome supports localStorage in combination with file:// but not cookies + return localStorage.getItem(DarkModeToggle.prefersLightModeInDarkModeKey) + } else { // Other browsers support cookies in combination with file:// but not localStorage + return DarkModeToggle.readCookie('doxygen_prefers_light')=='1' + } } static set prefersLightModeInDarkMode(preference) { - if (preference) { - Cookie.writeSetting(DarkModeToggle.lightmode_cookie_name,'1'); + if (window.chrome) { + if (preference) { + localStorage.setItem(DarkModeToggle.prefersLightModeInDarkModeKey, true) + } else { + localStorage.removeItem(DarkModeToggle.prefersLightModeInDarkModeKey) + } } else { - Cookie.eraseSetting(DarkModeToggle.lightmode_cookie_name); + if (preference) { + DarkModeToggle.createCookie('doxygen_prefers_light','1',365) + } else { + DarkModeToggle.eraseCookie('doxygen_prefers_light') + } } } + /** * @returns `true` for dark-mode, `false` for light-mode user preference */ @@ -179,7 +219,7 @@ class DarkModeToggle extends HTMLElement { } static setDarkModeVisibility(enable) { - let darkModeStyle, lightModeStyle; + var darkModeStyle, lightModeStyle; if(enable) { darkModeStyle = 'inline-block'; lightModeStyle = 'none' @@ -187,8 +227,12 @@ class DarkModeToggle extends HTMLElement { darkModeStyle = 'none'; lightModeStyle = 'inline-block' } - document.querySelectorAll('.dark-mode-visible' ).forEach(el => el.style.display = darkModeStyle); - document.querySelectorAll('.light-mode-visible').forEach(el => el.style.display = lightModeStyle); + document.querySelectorAll('.dark-mode-visible').forEach(function(el) { + el.style.display = darkModeStyle; + }); + document.querySelectorAll('.light-mode-visible').forEach(function(el) { + el.style.display = lightModeStyle; + }); } static enableDarkMode(enable) { if(enable) { diff --git a/deprecated.html b/deprecated.html index ab1a9157..38538eb8 100644 --- a/deprecated.html +++ b/deprecated.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Deprecated List - +Newly Optimized RF24Network Layer: Deprecated List - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      -
      Deprecated List
      +
      Deprecated List
      -
      Member ESBNetwork< radio_t >::begin (uint8_t _channel, uint16_t _node_address)
      -
      Use RF24::setChannel() to configure the radio channel. Use ESBNetwork::begin(uint16_t _node_address) to set the node address.
      +
      Member RF24Network::begin (uint8_t _channel, uint16_t _node_address)
      +
      Use RF24::setChannel() to configure the radio channel. Use RF24Network::begin(uint16_t _node_address) to set the node address.
      -
      diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html index 54e6232c..1bfdb9a5 100644 --- a/dir_49e56c817e5e54854c35e136979f97ca.html +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: docs Directory Reference - +Newly Optimized RF24Network Layer: docs Directory Reference - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      docs Directory Reference
      @@ -98,8 +82,7 @@
      -

      diff --git a/doc.png b/doc.png new file mode 100644 index 00000000..17edabff Binary files /dev/null and b/doc.png differ diff --git a/doc.svg b/doc.svg deleted file mode 100644 index 0b928a53..00000000 --- a/doc.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docd.png b/docd.png new file mode 100644 index 00000000..d7c94fda Binary files /dev/null and b/docd.png differ diff --git a/docd.svg b/docd.svg deleted file mode 100644 index ac18b275..00000000 --- a/docd.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/doxygen-custom.css b/doxygen-custom.css index 4a3c469c..7d56191d 100644 --- a/doxygen-custom.css +++ b/doxygen-custom.css @@ -1,166 +1,3 @@ table.markdownTable th { color: unset; } - -/* overrides from default CSS for some admonitions */ -dl.note, -dl.remark, -dl.warning, -dl.attention, -dl.important, -dl.deprecated, -dl.see { - color: unset; - box-shadow: 5px 5px 5px hsla(0, 0%, 19.2%, 0.5); -} - -dl.remark { - background: var(--remark-color-bg); - border-left: 8px solid var(--remark-color-hl); -} - -dl.remark dt { - color: var(--remark-color-hl); -} - -dl.important dt { - color: var(--important-color-hl); -} - -dl.important { - background: var(--important-color-bg); - border-left: 8px solid var(--important-color-hl); -} - -dl.attention dt { - color: var(--attention-color-hl); -} - -dl.attention { - background: var(--attention-color-bg); - border-left: 8px solid var(--attention-color-hl); -} - -dl.deprecated dt { - color: var(--deprecated-color-hl); -} - -dl.deprecated { - background: var(--deprecated-color-bg); - border-left: 8px solid var(--deprecated-color-hl); -} - -/* special rules to accent `/see` or `/sa` command output */ -dl.see { - background: var(--seealso-color-bg); - border-left: 8px solid var(--seealso-color-hl); -} - -dl.see dt { - color: var(--seealso-color-hl); -} - -dl.see { - padding: 10px; - margin: 10px 0px; - overflow: hidden; - margin-left: 0; - border-radius: 4px; -} - -dl.see dd { - margin-left: 0; -} - -/* admonition icons */ -dl.note dt::before { - background-color: var(--note-color-hl); - mask-image: var(--note-icon); -} - -dl.see dt::before { - background-color: var(--seealso-color-hl); - mask-image: var(--seealso-icon); -} - -dl.remark dt::before { - background-color: var(--remark-color-hl); - mask-image: var(--remark-icon); -} - -dl.warning dt::before { - background-color: var(--warning-color-hl); - mask-image: var(--warning-icon); -} - -dl.deprecated dt::before { - background-color: var(--deprecated-color-hl); - mask-image: var(--deprecated-icon); -} - -dl.important dt::before { - background-color: var(--important-color-hl); - mask-image: var(--important-icon); -} - -dl.attention dt::before { - background-color: var(--attention-color-hl); - mask-image: var(--attention-icon); -} - -dl.note dt::before, -dl.see dt::before, -dl.warning dt::before, -dl.remark dt::before, -dl.deprecated dt::before, -dl.important dt::before, -dl.attention dt::before { - vertical-align: middle; - background-repeat: no-repeat; - content: ""; - display: inline-block; - height: 2em; - width: 2em; - margin-right: 0.25rem; -} - -dl.note dt, -dl.see dt, -dl.warning dt, -dl.remark dt, -dl.deprecated dt, -dl.important dt, -dl.attention dt { - margin-top: -0.35em; - margin-bottom: 0.5em; -} - -/* icon SVG data */ -*:root { - --note-icon: url('data:image/svg+xml;utf8,'); - --warning-icon: url('data:image/svg+xml;utf8,'); - --remark-icon: url('data:image/svg+xml;utf8,'); - --attention-icon: url('data:image/svg+xml;utf8,'); - --important-icon: url('data:image/svg+xml;utf8,'); - --seealso-icon: url('data:image/svg+xml;utf8,'); - --deprecated-icon: url('data:image/svg+xml;utf8,'); -} - -/* color overrides */ -html, -html.dark-mode { - --note-color-hl: hsl(213.7, 92.8%, 62%); - --note-color-bg: hsla(213.7, 92.8%, 62%, 12.5%); - --warning-color-hl: hsl(40.6, 72.1%, 47.8%); - --warning-color-bg: hsla(40.6, 72.1%, 47.8%, 12.5%); - --attention-color-hl: hsl(2.7, 92.6%, 62.9%); - --attention-color-bg: hsla(2.7, 92.6%, 62.9%, 12.5%); - --deprecated-color-hl: hsl(0, 0%, 47%); - --deprecated-color-bg: hsla(0, 0%, 47%, 12.5%); - --seealso-color-hl: hsl(323, 72%, 52%); - --seealso-color-bg: hsla(323, 72%, 52%, 12.5%); - --remark-color-hl: hsl(128.4, 49.2%, 48.6%); - --remark-color-bg: hsla(128.4, 49.2%, 48.6%, 12.5%); - --important-color-hl: hsl(262.4, 89.8%, 73.1%); - --important-color-bg: hsla(262.4, 89.8%, 73.1%, 12.5%); -} \ No newline at end of file diff --git a/doxygen.css b/doxygen.css index d6d0679a..1402220b 100644 --- a/doxygen.css +++ b/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.11.0*/ +/* The standard CSS for doxygen 1.9.6*/ html { /* page base colors */ @@ -39,9 +39,7 @@ html { --icon-background-color: #728DC1; --icon-foreground-color: white; ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg'); +--icon-doc-image: url('doc.png'); /* brief member declaration list */ --memdecl-background-color: #F9FAFC; @@ -102,7 +100,6 @@ html { --toc-background-color: #F4F6FA; --toc-border-color: #D8DFEE; --toc-header-color: #4665A2; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); /** search field */ --search-background-color: white; @@ -128,7 +125,6 @@ html { --code-preprocessor-color: #806020; --code-string-literal-color: #002080; --code-char-literal-color: #008080; ---code-xml-cdata-color: black; --code-vhdl-digit-color: #FF00FF; --code-vhdl-char-color: #000000; --code-vhdl-keyword-color: #700070; @@ -145,7 +141,6 @@ html { --fragment-lineno-link-bg-color: #D8D8D8; --fragment-lineno-link-hover-fg-color: #4665A2; --fragment-lineno-link-hover-bg-color: #C8C8C8; ---fragment-copy-ok-color: #2EC82E; --tooltip-foreground-color: black; --tooltip-background-color: white; --tooltip-border-color: gray; @@ -153,15 +148,10 @@ html { --tooltip-declaration-color: #006318; --tooltip-link-color: #4665A2; --tooltip-shadow: 1px 1px 7px gray; ---fold-line-color: #808080; ---fold-minus-image: url('minus.svg'); ---fold-plus-image: url('plus.svg'); ---fold-minus-image-relpath: url('../../minus.svg'); ---fold-plus-image-relpath: url('../../plus.svg'); /** font-family */ --font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-monospace: monospace,fixed; --font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; --font-family-title: Tahoma,Arial,sans-serif; --font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; @@ -169,28 +159,6 @@ html { --font-family-icon: Arial,Helvetica; --font-family-tooltip: Roboto,sans-serif; -/** special sections */ ---warning-color-bg: #f8d1cc; ---warning-color-hl: #b61825; ---warning-color-text: #75070f; ---note-color-bg: #faf3d8; ---note-color-hl: #f3a600; ---note-color-text: #5f4204; ---todo-color-bg: #e4f3ff; ---todo-color-hl: #1879C4; ---todo-color-text: #274a5c; ---test-color-bg: #e8e8ff; ---test-color-hl: #3939C4; ---test-color-text: #1a1a5c; ---deprecated-color-bg: #ecf0f3; ---deprecated-color-hl: #5b6269; ---deprecated-color-text: #43454a; ---bug-color-bg: #e4dafd; ---bug-color-hl: #5b2bdd; ---bug-color-text: #2a0d72; ---invariant-color-bg: #d8f1e3; ---invariant-color-hl: #44b86f; ---invariant-color-text: #265532; } html.dark-mode { @@ -232,9 +200,7 @@ html.dark-mode { --icon-background-color: #334975; --icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.svg'); ---icon-folder-open-image: url('folderopend.svg'); ---icon-folder-closed-image: url('folderclosedd.svg'); +--icon-doc-image: url('docd.png'); /* brief member declaration list */ --memdecl-background-color: #0B101A; @@ -295,7 +261,6 @@ html.dark-mode { --toc-background-color: #151E30; --toc-border-color: #202E4A; --toc-header-color: #A3B4D7; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); /** search field */ --search-background-color: black; @@ -321,15 +286,14 @@ html.dark-mode { --code-preprocessor-color: #65CABE; --code-string-literal-color: #7EC699; --code-char-literal-color: #00E0F0; ---code-xml-cdata-color: #C9D1D9; --code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #C0C0C0; ---code-vhdl-keyword-color: #CF53C9; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; --code-vhdl-logic-color: #FF0000; --code-link-color: #79C0FF; --code-external-link-color: #79C0FF; --fragment-foreground-color: #C9D1D9; ---fragment-background-color: #090D16; +--fragment-background-color: black; --fragment-border-color: #30363D; --fragment-lineno-border-color: #30363D; --fragment-lineno-background-color: black; @@ -338,7 +302,6 @@ html.dark-mode { --fragment-lineno-link-bg-color: #303030; --fragment-lineno-link-hover-fg-color: #8E96A1; --fragment-lineno-link-hover-bg-color: #505050; ---fragment-copy-ok-color: #0EA80E; --tooltip-foreground-color: #C9D1D9; --tooltip-background-color: #202020; --tooltip-border-color: #C9D1D9; @@ -346,15 +309,10 @@ html.dark-mode { --tooltip-declaration-color: #20C348; --tooltip-link-color: #79C0FF; --tooltip-shadow: none; ---fold-line-color: #808080; ---fold-minus-image: url('minusd.svg'); ---fold-plus-image: url('plusd.svg'); ---fold-minus-image-relpath: url('../../minusd.svg'); ---fold-plus-image-relpath: url('../../plusd.svg'); /** font-family */ --font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-monospace: monospace,fixed; --font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; --font-family-title: Tahoma,Arial,sans-serif; --font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; @@ -362,28 +320,6 @@ html.dark-mode { --font-family-icon: Arial,Helvetica; --font-family-tooltip: Roboto,sans-serif; -/** special sections */ ---warning-color-bg: #2e1917; ---warning-color-hl: #ad2617; ---warning-color-text: #f5b1aa; ---note-color-bg: #3b2e04; ---note-color-hl: #f1b602; ---note-color-text: #ceb670; ---todo-color-bg: #163750; ---todo-color-hl: #1982D2; ---todo-color-text: #dcf0fa; ---test-color-bg: #121258; ---test-color-hl: #4242cf; ---test-color-text: #c0c0da; ---deprecated-color-bg: #2e323b; ---deprecated-color-hl: #738396; ---deprecated-color-text: #abb0bd; ---bug-color-bg: #2a2536; ---bug-color-hl: #7661b3; ---bug-color-text: #ae9ed6; ---invariant-color-bg: #303a35; ---invariant-color-hl: #76ce96; ---invariant-color-text: #cceed5; } body { @@ -401,6 +337,8 @@ body, table, div, p, dl { /* @group Heading Levels */ .title { + font-weight: 400; + font-size: 14px; font-family: var(--font-family-normal); line-height: 28px; font-size: 150%; @@ -533,12 +471,6 @@ div.qindex{ color: var(--index-separator-color); } -#main-menu a:focus { - outline: auto; - z-index: 10; - position: relative; -} - dt.alphachar{ font-size: 180%; font-weight: bold; @@ -598,13 +530,7 @@ a { } a:hover { - text-decoration: none; - background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); -} - -a:hover > span.arrow { - text-decoration: none; - background : var(--nav-background-color); + text-decoration: underline; } a.el { @@ -655,24 +581,7 @@ dl.el { margin-left: -1cm; } -ul.check { - list-style:none; - text-indent: -16px; - padding-left: 38px; -} -li.unchecked:before { - content: "\2610\A0"; -} -li.checked:before { - content: "\2611\A0"; -} - -ol { - text-indent: 0px; -} - ul { - text-indent: 0px; overflow: visible; } @@ -697,70 +606,37 @@ ul.multicol { .fragment { text-align: left; direction: ltr; - overflow-x: auto; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ overflow-y: hidden; - position: relative; - min-height: 12px; - margin: 10px 0px; - padding: 10px 10px; - border: 1px solid var(--fragment-border-color); - border-radius: 4px; - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); } pre.fragment { - word-wrap: break-word; - font-size: 10pt; - line-height: 125%; - font-family: var(--font-family-monospace); -} - -.clipboard { - width: 24px; - height: 24px; - right: 5px; - top: 5px; - opacity: 0; - position: absolute; - display: inline; + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; overflow: auto; - fill: var(--fragment-foreground-color); - justify-content: center; - align-items: center; - cursor: pointer; -} - -.clipboard.success { - border: 1px solid var(--fragment-foreground-color); - border-radius: 4px; -} - -.fragment:hover .clipboard, .clipboard.success { - opacity: .28; -} - -.clipboard:hover, .clipboard.success { - opacity: 1 !important; -} - -.clipboard:active:not([class~=success]) svg { - transform: scale(.91); -} - -.clipboard.success svg { - fill: var(--fragment-copy-ok-color); + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; } -.clipboard.success { - border-color: var(--fragment-copy-ok-color); +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); } div.line { font-family: var(--font-family-monospace); font-size: 13px; min-height: 13px; - line-height: 1.2; + line-height: 1.0; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ @@ -793,18 +669,6 @@ div.line.glow { box-shadow: 0 0 10px var(--glow-color); } -span.fold { - margin-left: 5px; - margin-right: 1px; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; - display: inline-block; - width: 12px; - height: 12px; - background-repeat:no-repeat; - background-position:center; -} span.lineno { padding-right: 4px; @@ -876,6 +740,10 @@ img.light-mode-visible { display: none; } +img.formulaDsp { + +} + img.formulaInl, img.inline { vertical-align: middle; } @@ -938,10 +806,6 @@ span.charliteral { color: var(--code-char-literal-color); } -span.xmlcdata { - color: var(--code-xml-cdata-color); -} - span.vhdldigit { color: var(--code-vhdl-digit-color); } @@ -1175,25 +1039,17 @@ dl.reflist dd { .paramtype { white-space: nowrap; - padding: 0px; - padding-bottom: 1px; } .paramname { + color: var(--memdef-param-name-color); white-space: nowrap; - padding: 0px; - padding-bottom: 1px; - margin-left: 2px; } - .paramname em { - color: var(--memdef-param-name-color); font-style: normal; - margin-right: 1px; } - -.paramname .paramdefval { - font-family: var(--font-family-monospace); +.paramname code { + line-height: 14px; } .params, .retval, .exception, .tparams { @@ -1364,7 +1220,8 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:var(--icon-folder-open-image); + background-image:url('folderopen.png'); + background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -1374,7 +1231,8 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:var(--icon-folder-closed-image); + background-image:url('folderclosed.png'); + background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -1527,6 +1385,7 @@ table.fieldtable { { height:32px; display:block; + text-decoration: none; outline: none; color: var(--nav-text-normal-color); font-family: var(--font-family-nav); @@ -1615,8 +1474,7 @@ dl { padding: 0 0 0 0; } -/* - +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ dl.section { margin-left: 0px; padding-left: 0px; @@ -1629,7 +1487,7 @@ dl.note { border-color: #D0C000; } -dl.warning, dl.attention, dl.important { +dl.warning, dl.attention { margin-left: -7px; padding-left: 3px; border-left: 4px solid; @@ -1671,103 +1529,8 @@ dl.bug { border-color: #C08050; } -*/ - -dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { - font-weight: bold !important; -} - -dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, -dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { - padding: 10px; - margin: 10px 0px; - overflow: hidden; - margin-left: 0; - border-radius: 4px; -} - dl.section dd { - margin-bottom: 2px; -} - -dl.warning, dl.attention, dl.important { - background: var(--warning-color-bg); - border-left: 8px solid var(--warning-color-hl); - color: var(--warning-color-text); -} - -dl.warning dt, dl.attention dt, dl.important dt { - color: var(--warning-color-hl); -} - -dl.note, dl.remark { - background: var(--note-color-bg); - border-left: 8px solid var(--note-color-hl); - color: var(--note-color-text); -} - -dl.note dt, dl.remark dt { - color: var(--note-color-hl); -} - -dl.todo { - background: var(--todo-color-bg); - border-left: 8px solid var(--todo-color-hl); - color: var(--todo-color-text); -} - -dl.todo dt { - color: var(--todo-color-hl); -} - -dl.test { - background: var(--test-color-bg); - border-left: 8px solid var(--test-color-hl); - color: var(--test-color-text); -} - -dl.test dt { - color: var(--test-color-hl); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; -} - -dl.bug { - background: var(--bug-color-bg); - border-left: 8px solid var(--bug-color-hl); - color: var(--bug-color-text); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; -} - -dl.deprecated { - background: var(--deprecated-color-bg); - border-left: 8px solid var(--deprecated-color-hl); - color: var(--deprecated-color-text); -} - -dl.deprecated dt a { - color: var(--deprecated-color-hl) !important; -} - -dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, -dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, -dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { - margin-inline-start: 0px; -} - -dl.invariant, dl.pre, dl.post { - background: var(--invariant-color-bg); - border-left: 8px solid var(--invariant-color-hl); - color: var(--invariant-color-text); -} - -dl.invariant dt, dl.pre dt, dl.post dt { - color: var(--invariant-color-hl); + margin-bottom: 6px; } @@ -1782,12 +1545,12 @@ dl.invariant dt, dl.pre dt, dl.post dt { vertical-align: bottom; border-collapse: separate; } - + #projectlogo img -{ +{ border: 0px none; } - + #projectalign { vertical-align: middle; @@ -1888,7 +1651,7 @@ div.toc { } div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + background: url("bdwn.png") no-repeat scroll 0 5px transparent; font: 10px/1.2 var(--font-family-toc); margin-top: 5px; padding-left: 10px; @@ -1917,11 +1680,11 @@ div.toc li.level2 { } div.toc li.level3 { - margin-left: 15px; + margin-left: 30px; } div.toc li.level4 { - margin-left: 15px; + margin-left: 45px; } span.emoji { diff --git a/doxygen.svg b/doxygen.svg index 79a76354..d42dad52 100644 --- a/doxygen.svg +++ b/doxygen.svg @@ -1,6 +1,4 @@ - @@ -19,7 +17,7 @@ - + diff --git a/doxygen_crawl.html b/doxygen_crawl.html deleted file mode 100644 index 24ccd941..00000000 --- a/doxygen_crawl.html +++ /dev/null @@ -1,249 +0,0 @@ - - - -Validator / crawler helper - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dynsections.js b/dynsections.js index b05f4c8d..f579fbf3 100644 --- a/dynsections.js +++ b/dynsections.js @@ -22,177 +22,102 @@ @licend The above is the entire license notice for the JavaScript code in this file */ - -function toggleVisibility(linkObj) { - return dynsection.toggleVisibility(linkObj); +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; } -let dynsection = { - - // helper function - updateStripes : function() { - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); - }, - - toggleVisibility : function(linkObj) { - const base = $(linkObj).attr('id'); - const summary = $('#'+base+'-summary'); - const content = $('#'+base+'-content'); - const trigger = $('#'+base+'-trigger'); - const src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; - }, - - toggleLevel : function(level) { - $('table.directory tr').each(function() { - const l = this.id.split('_').length-1; - const i = $('#img'+this.id.substring(3)); - const a = $('#arr'+this.id.substring(3)); - if (l'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - const id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - const start = $(this).attr('data-start'); - const end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - const line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); - } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); - }, -}; +function toggleInherit(id) +{ + var rows = $('tr.inherit.'+id); + var img = $('tr.inherit_header.'+id+' img'); + var src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } +} /* @license-end */ diff --git a/examples.html b/examples.html index 6cdcc783..cba96f54 100644 --- a/examples.html +++ b/examples.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Examples - +Newly Optimized RF24Network Layer: Examples - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      -
      diff --git a/files.html b/files.html index 06e5d5d1..f3230642 100644 --- a/files.html +++ b/files.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: File List - +Newly Optimized RF24Network Layer: File List - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      -
      diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 00000000..bb8ab35e Binary files /dev/null and b/folderclosed.png differ diff --git a/folderclosed.svg b/folderclosed.svg deleted file mode 100644 index b04bed2e..00000000 --- a/folderclosed.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/folderclosedd.svg b/folderclosedd.svg deleted file mode 100644 index 52f0166a..00000000 --- a/folderclosedd.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/folderopen.png b/folderopen.png new file mode 100644 index 00000000..d6c7f676 Binary files /dev/null and b/folderopen.png differ diff --git a/folderopen.svg b/folderopen.svg deleted file mode 100644 index f6896dd2..00000000 --- a/folderopen.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/folderopend.svg b/folderopend.svg deleted file mode 100644 index 2d1f06e7..00000000 --- a/folderopend.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/functions.html b/functions.html index ea6c1b62..e20c8cc4 100644 --- a/functions.html +++ b/functions.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Class Members - +Newly Optimized RF24Network Layer: Class Members - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      Here is a list of all class members with links to the classes they belong to:

      - _ -

      - a -

      - b -

      - e -

      - f -

      @@ -127,69 +110,69 @@

      - h -

      -

      diff --git a/functions_func.html b/functions_func.html index e4673f26..da106c76 100644 --- a/functions_func.html +++ b/functions_func.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Class Members - Functions - +Newly Optimized RF24Network Layer: Class Members - Functions - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      -
      Here is a list of all functions with links to the classes they belong to:
      -
      diff --git a/functions_vars.html b/functions_vars.html index 86df9524..1955e147 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Class Members - Variables - +Newly Optimized RF24Network Layer: Class Members - Variables - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      -
      Here is a list of all variables with links to the classes they belong to:
      -
      diff --git a/globals.html b/globals.html index 640767f1..41cc47de 100644 --- a/globals.html +++ b/globals.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: File Members - +Newly Optimized RF24Network Layer: File Members - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      - n -

      - r -

      @@ -157,8 +139,7 @@

      - u -

      -
      diff --git a/globals_defs.html b/globals_defs.html index 7709aadd..4778fcb1 100644 --- a/globals_defs.html +++ b/globals_defs.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: File Members - +Newly Optimized RF24Network Layer: File Members - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -

    -
    -
    -
    Here is a list of all macros with links to the files they belong to:

    - e -

    -
    diff --git a/group__DEFINED__TYPES.html b/group__DEFINED__TYPES.html index 4962d2fd..1dfc2415 100644 --- a/group__DEFINED__TYPES.html +++ b/group__DEFINED__TYPES.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Reserved System Message Types - +Newly Optimized RF24Network Layer: Reserved System Message Types - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + -
    -
    -

    Macros

    -#define NETWORK_ADDR_RESPONSE   128 +#define NETWORK_ADDR_RESPONSE   128   -#define NETWORK_PING   130 +#define NETWORK_PING   130   -#define EXTERNAL_DATA_TYPE   131 +#define EXTERNAL_DATA_TYPE   131   -#define NETWORK_FIRST_FRAGMENT   148 +#define NETWORK_FIRST_FRAGMENT   148   -#define NETWORK_MORE_FRAGMENTS   149 +#define NETWORK_MORE_FRAGMENTS   149   -#define NETWORK_LAST_FRAGMENT   150 +#define NETWORK_LAST_FRAGMENT   150   -#define NETWORK_ACK   193 +#define NETWORK_ACK   193   -#define NETWORK_POLL   194 +#define NETWORK_POLL   194   -#define NETWORK_REQ_ADDRESS   195 +#define NETWORK_REQ_ADDRESS   195  

    Detailed Description

    @@ -122,7 +106,7 @@
  • User types (1 - 127) 1 - 64 will NOT be acknowledged
  • System types (128 - 255) 192 - 255 will NOT be acknowledged
  • -

    System types can also contain message data.

    +

    System types can also contain message data.

    Macro Definition Documentation

    ◆ NETWORK_ADDR_RESPONSE

    @@ -135,7 +119,7 @@

    -

    A NETWORK_ADDR_RESPONSE type is utilized to manually route custom messages containing a single RF24Network address.

    +

    A NETWORK_ADDR_RESPONSE type is utilized to manually route custom messages containing a single RF24Network address.

    Used by RF24Mesh

    If a node receives a message of this type that is directly addressed to it, it will read the included message, and forward the payload on to the proper recipient.

    This allows nodes to forward multicast messages to the master node, receive a response, and forward it back to the requester.

    @@ -168,7 +152,7 @@

    -

    External data types are used to define messages that will be passed to an external data system. This allows RF24Network to route and pass any type of data, such as TCP/IP frames, while still being able to utilize standard RF24Network messages etc.

    +

    External data types are used to define messages that will be passed to an external data system. This allows RF24Network to route and pass any type of data, such as TCP/IP frames, while still being able to utilize standard RF24Network messages etc.

    Examples
    Network_Priority_RX.ino, and Network_Priority_TX.ino.
    @@ -229,7 +213,7 @@

    -

    Messages of this type indicate the last fragment in a sequence of message fragments. Messages of this type do not receive a NETWORK_ACK

    +

    Messages of this type indicate the last fragment in a sequence of message fragments. Messages of this type do not receive a NETWORK_ACK

    @@ -246,7 +230,7 @@

    Messages of this type signal the sender that a network-wide transmission has been completed.

    diff --git a/helloworld_rx_8ino-example.html b/helloworld_rx_8ino-example.html index a84e2888..ababbb23 100644 --- a/helloworld_rx_8ino-example.html +++ b/helloworld_rx_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: helloworld_rx.ino - +Newly Optimized RF24Network Layer: helloworld_rx.ino - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + -
    -
    -
    helloworld_rx.ino
    -

    Simplest possible example of using RF24Network. Put this sketch on one node, and helloworld_tx.pde on the other. Tx will send Rx a nice message every 2 seconds which rx will print out for us.

    +

    Simplest possible example of using RF24Network. Put this sketch on one node, and helloworld_tx.pde on the other. Tx will send Rx a nice message every 2 seconds which rx will print out for us.

    #include <SPI.h>
    #include <RF24.h>
    @@ -100,7 +84,7 @@
    RF24 radio(7, 8); // nRF24L01(+) radio attached using Getting Started board
    -
    RF24Network network(radio); // Network uses that radio
    +
    RF24Network network(radio); // Network uses that radio
    const uint16_t this_node = 00; // Address of our node in Octal format (04, 031, etc)
    const uint16_t other_node = 01; // Address of the other node in Octal format
    @@ -143,13 +127,12 @@
    }
    }
    -
    Definition RF24Network.h:384
    -
    Definition RF24Network.h:229
    +
    Definition: RF24Network.h:375
    +
    Definition: RF24Network.h:226
    -

    diff --git a/helloworld_rx_advanced_8ino-example.html b/helloworld_rx_advanced_8ino-example.html index 2b35f0fc..11b6f20f 100644 --- a/helloworld_rx_advanced_8ino-example.html +++ b/helloworld_rx_advanced_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: helloworld_rx_advanced.ino - +Newly Optimized RF24Network Layer: helloworld_rx_advanced.ino - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + -
    -
    -
    RF24 radio(7, 8); // nRF24L01(+) radio attached using Getting Started board
    -
    RF24Network network(radio); // Network uses that radio
    +
    RF24Network network(radio); // Network uses that radio
    const uint16_t this_node = 00; // Address of our node in Octal format ( 04,031, etc)
    const uint16_t other_node = 01; // Address of the other node in Octal format
    @@ -165,14 +149,13 @@
    }
    }
    -
    #define MAX_PAYLOAD_SIZE
    Maximum size of fragmented network frames and fragmentation cache.
    Definition RF24Network_config.h:67
    -
    Definition RF24Network.h:384
    -
    Definition RF24Network.h:229
    +
    #define MAX_PAYLOAD_SIZE
    Maximum size of fragmented network frames and fragmentation cache.
    Definition: RF24Network_config.h:61
    +
    Definition: RF24Network.h:375
    +
    Definition: RF24Network.h:226
    -
    diff --git a/helloworld_tx_8ino-example.html b/helloworld_tx_8ino-example.html index 9cb4d810..53caaf72 100644 --- a/helloworld_tx_8ino-example.html +++ b/helloworld_tx_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: helloworld_tx.ino - +Newly Optimized RF24Network Layer: helloworld_tx.ino - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + -
    -
    -
    helloworld_tx.ino
    -

    Simplest possible example of using RF24Network. Put this sketch on one node, and helloworld_rx.pde on the other. Tx will send Rx a nice message every 2 seconds which rx will print out for us.

    +

    Simplest possible example of using RF24Network. Put this sketch on one node, and helloworld_rx.pde on the other. Tx will send Rx a nice message every 2 seconds which rx will print out for us.

    #include <SPI.h>
    #include <RF24.h>
    @@ -99,7 +83,7 @@
    RF24 radio(7, 8); // nRF24L01(+) radio attached using Getting Started board
    -
    RF24Network network(radio); // Network uses that radio
    +
    RF24Network network(radio); // Network uses that radio
    const uint16_t this_node = 01; // Address of our node in Octal format
    const uint16_t other_node = 00; // Address of the other node in Octal format
    @@ -150,13 +134,12 @@
    }
    }
    -
    Definition RF24Network.h:384
    -
    Definition RF24Network.h:229
    +
    Definition: RF24Network.h:375
    +
    Definition: RF24Network.h:226
    - diff --git a/helloworld_tx_advanced_8ino-example.html b/helloworld_tx_advanced_8ino-example.html index 1eed266c..3c371e2e 100644 --- a/helloworld_tx_advanced_8ino-example.html +++ b/helloworld_tx_advanced_8ino-example.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: helloworld_tx_advanced.ino - +Newly Optimized RF24Network Layer: helloworld_tx_advanced.ino - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    RF24 radio(7, 8); // nRF24L01(+) radio attached using Getting Started board
    -
    RF24Network network(radio); // Network uses that radio
    +
    RF24Network network(radio); // Network uses that radio
    const uint16_t this_node = 01; // Address of our node in Octal format
    const uint16_t other_node = 00; // Address of the other node in Octal format
    @@ -170,14 +154,13 @@
    }
    }
    -
    #define MAX_PAYLOAD_SIZE
    Maximum size of fragmented network frames and fragmentation cache.
    Definition RF24Network_config.h:67
    -
    Definition RF24Network.h:384
    -
    Definition RF24Network.h:229
    +
    #define MAX_PAYLOAD_SIZE
    Maximum size of fragmented network frames and fragmentation cache.
    Definition: RF24Network_config.h:61
    +
    Definition: RF24Network.h:375
    +
    Definition: RF24Network.h:226
    - diff --git a/index.html b/index.html index 9a32303d..8f284e8a 100644 --- a/index.html +++ b/index.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Network Layer for RF24 Radios - +Newly Optimized RF24Network Layer: Network Layer for RF24 Radios - - - - @@ -28,44 +23,33 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    -

    -

    This class implements an OSI Network Layer using nRF24L01(+) radios driven by the newly optimized RF24 library fork or using nRF52x radios with the newly created nrf_to_nrf library.

    +

    +

    This class implements an OSI Network Layer using nRF24L01(+) radios driven by the newly optimized RF24 library fork.

    See also
    RF24 Library docs for general RF24 configuration and setup.
    -

    +

    Purpose/Goal

    Original: Create an alternative to ZigBee radios for Arduino communication.

    New: Enhance the current functionality for maximum efficiency, reliability, and speed

    Xbees are excellent little radios, backed up by a mature and robust standard protocol stack. They are also expensive.

    -

    For many Arduino uses, they seem like overkill. So I am working to improve the current standard for nRF24L01 radios. The best RF24 modules are available for less than $6 from many sources. With the RF24Network layer, I hope to cover many common communication scenarios.

    +

    For many Arduino uses, they seem like overkill. So I am working to improve the current standard for nRF24L01 radios. The best RF24 modules are available for less than $6 from many sources. With the RF24Network layer, I hope to cover many common communication scenarios.

    Please see TMRh20's blog post for a comparison against the ZigBee protocols

    -

    -News - 2023 API Changes

    -

    Introducing RF24Network & RF24Mesh v2.0 with some significant API changes, adding the use of C++ Templates in order to support a range of ESB enabled radios, most recently NRF52x radios.

    -

    Important Notes:

      -
    • Any network layer that uses v2 needs to have RF24Network/RF24Mesh dependencies of v2 or newer. RF24 v1.x is an exception here.
    • -
    • General usage should remain backward compatible, see the included examples of the related libraries for more info
    • -
    • Any third party libs that extend the network/mesh layer may also need to be updated to incorporate the new templated class prototypes:
      template<class radio_t>
      -
      class ESBNetwork;
      -
      -
      template<class network_t, class radio_t>
      -
      class ESBMesh;
      -
      Definition RF24Network.h:384
      -
    • -
    • Third party libs should also be able to use the backward-compatible typedef in their template:
        -
      • ESBGateway.h:
        template<typename network_t, typename mesh_t>
        -
        class ESBGateway
        -
        and inform the compiler what types they intend to support:
      • -
      • ESBGateway.cpp:
        template class ESBGateway<RF24Network, RF24Mesh>;
        -
      • -
      -
    • -
    • The auto installers do not perform a version check like package managers, so having the correct versions of the software is important.
    • -
    • We will be maintaining the v1.x versions with bugfixes etc for those who cannot or do not wish to migrate to the newer template approach.
    • -
    +

    +News

    Please see the recent changes listed in the github releases page

    -

    +

    Features

    -

    +

    The layer provides

    • Network ACKs: Efficient acknowledgement of network-wide transmissions, via dynamic radio acks and network protocol acks.
    • @@ -160,34 +122,35 @@

    • Message Forwarding. Messages can be sent from one node to any other, and this layer will get them there no matter how many hops it takes.
    • Ad-hoc Joining. A node can join a network without any changes to any existing nodes.
    -

    +

    The layer does not provide

    -

    +

    How to learn more

    -

    +

    Additional Information & Add-ons

    -

    +

    Topology for Mesh Networks using nRF24L01(+)

    -

    This network layer takes advantage of the fundamental capability of the nRF24L01(+) radio to listen actively to up to 6 other radios at once (8 with NRF52x). The network is arranged in a Tree Topology, where one node is the base, and all other nodes are children either of that node, or of another. Unlike a true mesh network, multiple nodes are not connected together, so there is only one path to any given node.

    -

    +

    This network layer takes advantage of the fundamental capability of the nRF24L01(+) radio to listen actively to up to 6 other radios at once. The network is arranged in a Tree Topology, where one node is the base, and all other nodes are children either of that node, or of another. Unlike a true mesh network, multiple nodes are not connected together, so there is only one path to any given node.

    +

    Octal Addressing and Topology

    Each node must be assigned an 15-bit address by the administrator. This address exactly describes the position of the node within the tree. The address is an octal number. Each digit in the address represents a position in the tree further from the base.

      @@ -196,29 +159,26 @@

    • Node 021 is the second child of node 01.
    • Node 0321 is the third child of node 021, an so on.
    • The largest node address is 05555, so up to 781 nodes are allowed on a single channel. An example topology is shown below, with 5 nodes in direct communication with the master node, and multiple leaf nodes spread out at a distance, using intermediate nodes to reach other nodes.
    • -
    • With the newer NRF52x devices, up to 3200 nodes are allowed on a single channel
    -

    +

    How routing is handled

    -

    When sending a message using ESBNetwork::write(), you fill in the header with the logical node address. The network layer figures out the right path to find that node, and sends it through the system until it gets to the right place. This works even if the two nodes are far separated, as it will send the message down to the base node, and then back out to the final destination.

    -

    All of this work is handled by the ESBNetwork::update() method, so be sure to call it regularly or your network will miss packets.

    -

    +

    When sending a message using RF24Network::write(), you fill in the header with the logical node address. The network layer figures out the right path to find that node, and sends it through the system until it gets to the right place. This works even if the two nodes are far separated, as it will send the message down to the base node, and then back out to the final destination.

    +

    All of this work is handled by the RF24Network::update() method, so be sure to call it regularly or your network will miss packets.

    +

    Starting up a node

    When a node starts up, it only has to contact its parent to establish communication. No direct connection to the Base node is needed. This is useful in situations where relay nodes are being used to bridge the distance to the base, so leaf nodes are out of range of the base.

    -

    +

    Directionality

    By default all nodes are always listening, so messages will quickly reach their destination.

    -

    You may choose to sleep any nodes on the network if using interrupts. This is useful in a case where the nodes are operating on batteries and need to sleep. This greatly decreases the power requirements for a sensor network. The leaf nodes can sleep most of the time, and wake every few minutes to send in a reading. Routing nodes can be triggered to wake up whenever a payload is received See ESBNetwork::sleepNode() in the class documentation, and RF24Network_config.h to enable sleep mode.

    +

    You may choose to sleep any nodes on the network if using interrupts. This is useful in a case where the nodes are operating on batteries and need to sleep. This greatly decreases the power requirements for a sensor network. The leaf nodes can sleep most of the time, and wake every few minutes to send in a reading. Routing nodes can be triggered to wake up whenever a payload is received See RF24Network::sleepNode() in the class documentation, and RF24Network_config.h to enable sleep mode.

    -
    -
    diff --git a/main__page_8md.html b/main__page_8md.html index e1c207f4..8919dd31 100644 --- a/main__page_8md.html +++ b/main__page_8md.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: docs/main_page.md File Reference - +Newly Optimized RF24Network Layer: docs/main_page.md File Reference - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    docs/main_page.md File Reference
    @@ -94,8 +78,7 @@
    -
    diff --git a/md_CHANGELOG.html b/md_CHANGELOG.html new file mode 100644 index 00000000..40db8364 --- /dev/null +++ b/md_CHANGELOG.html @@ -0,0 +1,1108 @@ + + + + + + + +Newly Optimized RF24Network Layer: Changelog + + + + + + + + + + + +
    +
    + + + + + + +
    +
    Newly Optimized RF24Network Layer v1.0.21 +
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    Changelog
    +
    +
    +

    All notable changes to this project will be documented in this file.

    +

    The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.20...v1.0.21" >1.0.21</a> - 2024-10-06

    +

    +<!-- 1 --> 🚀 Added

    + +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Remove sphinx and update RTD config in 10e7785
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    + +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Change SERIAL_DEBUG into RF24NETWORK_DEBUG in 5a71a66
    • +
    • [CMake] default to SPIDEV driver in 2bf2412
    • +
    +

    Full commit diff: v1.0.20...v1.0.21

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.19...v1.0.20" >1.0.20</a> - 2024-06-11

    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix for Multicast to level 4 in 0a4ac30
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Update for 64-bit OS in 5cee39c
    • +
    • 1.x update clang format in b5564c1
    • +
    • Bump version to v1.0.20 in 09160e9
    • +
    +

    Full commit diff: v1.0.19...v1.0.20

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.18...v1.0.19" >1.0.19</a> - 2023-06-21

    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Limit PIO dep on nrf2nrf to nordicnrf52 platform in 1955b6f
    • +
    • Bump patch version in 31ea51c
    • +
    +

    Full commit diff: v1.0.18...v1.0.19

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.17...v1.0.18" >1.0.18</a> - 2023-06-06

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Support NRF52x by @TMRh20 in 7a7a854
    • +
    • Add deploy-release arg to PIO reusable CI call by @2bndy5 in 89fa59a
    • +
    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Workaround for printf issue by @TMRh20 in #207
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix 200 by @2bndy5 in #202
    • +
    • Fix badge in README by @2bndy5 in 2a7c942
    • +
    +

    +<!-- 8 --> 📝 Documentation

    +
      +
    • Manually trigger docs CI by @2bndy5 in 5bdbe14
    • +
    • Doc updates and reusable CI by @2bndy5 in #203
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Default to large max payload size by @TMRh20 in #196
    • +
    • Update for nrf52 by @TMRh20 in 229b886
    • +
    • Revert NRF52 changes by @TMRh20 in 8c90bbe
    • +
    • Update version for release by @TMRh20 in 7c41ace
    • +
    +

    Full commit diff: v1.0.17...v1.0.18

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.16...v1.0.17" >1.0.17</a> - 2022-07-09

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Add .clang-format config and adjust CI workflows by @2bndy5 in d7a449a
    • +
    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Remove old astyle config by @2bndy5 in 9003bc8
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix py wrappers linker order by @2bndy5 in ebfdba2
    • +
    • Fix setup.py for no IRQ support by @2bndy5 in ffcdf8d
    • +
    +

    +<!-- 8 --> 📝 Documentation

    +
      +
    • Various improvments to docs by @2bndy5 in #193
    • +
    • Update .readthedocs.yaml by @2bndy5 in 7fb9ce5
    • +
    • Update sphinx doc config by @2bndy5 in 1aacb14
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Only run linux CI on "created release" events by @2bndy5 in 36a2ca7
    • +
    • Update actions/checkout to v2 by @2bndy5 in f47339e
    • +
    • Conditionally build examples with pigpio by @2bndy5 in 20c8621
    • +
    • Revert "conditionally build examples with pigpio" by @2bndy5 in 5e5af7e
    • +
    • Reduce duplicate messages in cmake output by @2bndy5 in 3e4404b
    • +
    • Syntax is/was invalid because IDK Makefile syntax by @2bndy5 in 6854923
    • +
    • Attempt 3 to modify the Makefile by @2bndy5 in 3985205
    • +
    • Makefile syntax doesn't like recursive var values by @2bndy5 in 256a204
    • +
    • Hardcode -lpigpio if RPi is detected in makefile by @2bndy5 in 21e3116
    • +
    • (wtf) RPi not detected on my RPi4? by @2bndy5 in 2046b15
    • +
    • Undo my changes to the Makefile by @2bndy5 in 2c42989
    • +
    • [cmake] build examples w/ a specified driver by @2bndy5 in dcb895b
    • +
    • -DRF24_NO_IRQ when no pigpio while building lib by @2bndy5 in b78096d
    • +
    • Allow RF24_NO_IRQ for building examples by @2bndy5 in 296efb5
    • +
    • Merge remote-tracking branch 'origin/pigpio-support' by @TMRh20 in 5d994b1
    • +
    • Update python examples by @2bndy5 in a20c632
    • +
    • Merge pull request #194 from nRF24/update-py-examples by @TMRh20 in #194
    • +
    • Ran clang-format on all C++ sources by @2bndy5 in 1e79873
    • +
    • Enable size delta reports in Arduino CI by @2bndy5 in 0222a34
    • +
    • Avoid duplicate builds for reported boards by @2bndy5 in 0d96436
    • +
    • Duplicate builds needed to compute size deltas by @2bndy5 in eb40f2e
    • +
    • Revert add duplicate build jobs; use matrix params by @2bndy5 in 680f7f1
    • +
    • Allow short case labels by @2bndy5 in d7006b4
    • +
    • Merge pull request #195 from nRF24/clang-format by @TMRh20 in #195
    • +
    • Disable latex builds on RTD by @2bndy5 in 82b7037
    • +
    • Minor version bump by @2bndy5 in 122cb6c
    • +
    +

    Full commit diff: v1.0.16...v1.0.17

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.15...v1.0.16" >1.0.16</a> - 2021-11-17

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Add CMake 4 Linux; clean up tests/jamfile relics by @2bndy5 in 1e600d7
    • +
    • Add CMake user preset json to ignore by @2bndy5 in 733177e
    • +
    • Add if(!radio.begin()) to linux examples; fmt code by @2bndy5 in 74f446a
    • +
    • Add note about MAIN_BUFFER_SIZE by @2bndy5 in 2658760
    • +
    • Add to last commit for completeness by @2bndy5 in d42fe5e
    • +
    • Add newer begin() to py wrapper by @2bndy5 in 20977e0
    • +
    • Add comments about ATTiny defaults by @2bndy5 in 8892524
    • +
    • Add PicoSDK CI workflow by @2bndy5 in 2921124
    • +
    • Merge pull request #176 from nRF24/CMake-4-Linux by @TMRh20 in #176
    • +
    • Add link to blog for zigbee vs nrf by @TMRh20 in 3b1352c
    • +
    • Add multicast description by @TMRh20 in 6dcd5f8
    • +
    +

    +<!-- 2 --> 🚫 Deprecated

    +
      +
    • Examples don't use deprecated begin(channel, addr) by @2bndy5 in 5b8a9bf
    • +
    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Remove useless line from docs code snippet by @2bndy5 in f01c4cd
    • +
    • Remove useless boost.py overload macros by @2bndy5 in 49e04db
    • +
    • [no ci] remove doc artifact about new flag by @2bndy5 in d03d6ee
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix bad link in docs; uniform SERIAL_DEBUG* calls by @2bndy5 in 95b5e09
    • +
    • Fix warnings about lu by @2bndy5 in 2df98c8
    • +
    • Fix problem in last commit by @2bndy5 in ae8ec89
    • +
    • Fix url from last commit by @2bndy5 in f33bacf
    • +
    • Fix formatting in an example by @2bndy5 in 8acdf8e
    • +
    • Fix image display by @TMRh20 in d9e7909
    • +
    +

    +<!-- 8 --> 📝 Documentation

    +
      +
    • Enhance docs by @2bndy5 in eb2a6ea
    • +
    • Update some docs; use macro instead of def'd value by @2bndy5 in 9f2e62b
    • +
    • [docs] expand on use of frame_buffer by @2bndy5 in 86c0d3b
    • +
    • Ammend multicast* docs by @2bndy5 in 321ce84
    • +
    • Docs ready for RTD hosting by @2bndy5 in 9d92dbd
    • +
    • Use URL blob for new img in docs main pg by @2bndy5 in 0df0abf
    • +
    • Sphinx docs conf.py gets lib ver from json by @2bndy5 in dbaf785
    • +
    • More docs updates by @2bndy5 in 55e9032
    • +
    • More doc updates by @2bndy5 in 0c41d05
    • +
    • Smal docs update by @2bndy5 in 2a29943
    • +
    • [docs] fix multiline API signatures by @2bndy5 in 2498529
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Initial CMake files for pico-sdk by @kripton in #174
    • +
    • This builds locally by @2bndy5 in cfe3c5c
    • +
    • Avoid duplicate workflows when PR is open by @2bndy5 in 47da072
    • +
    • Conform code fmt; limit CI triggers by @2bndy5 in 2ac9a46
    • +
    • Missed a fmt inconsistency by @2bndy5 in 4c87a28
    • +
    • Update CI scripts by @2bndy5 in 01f2200
    • +
    • [no ci] rename uploaded artifact by @2bndy5 in 3ad612a
    • +
    • Default BUILD_TYPE to Release by @2bndy5 in 49827f1
    • +
    • Update CONTRIBUTING.md by @2bndy5 in dc9baae
    • +
    • Manually trigger CI workflows by @2bndy5 in 58f116a
    • +
    • Gimme them badges by @2bndy5 in 634f7a5
    • +
    • Run new PlatformIO CI by @2bndy5 in 3cdb937
    • +
    • PIO CI needs to know about dependencies by @2bndy5 in 6704178
    • +
    • Force install deps in PIO workflow by @2bndy5 in 4dd3c19
    • +
    • Pio lib install now installs deps from json by @2bndy5 in 9233555
    • +
    • [library.json] update excludes feild by @2bndy5 in 8466197
    • +
    • Polish library.json by @2bndy5 in 6eec391
    • +
    • Exclude linux stuff from PIO & validate lib.json by @2bndy5 in f05ebda
    • +
    • [PIO CI] rename artifact by @2bndy5 in ab81be6
    • +
    • Exclude more useless stuff from PIO pkg by @2bndy5 in 7986d7a
    • +
    • Testing examples on qtpy (atsamd21) by @2bndy5 in 795ae09
    • +
    • Consolidate duplicate includes by @2bndy5 in 23ef6da
    • +
    • Use CMake CLI to change RF24Network_config macros by @2bndy5 in 2d6780e
    • +
    • Trigger arduino CI by @2bndy5 in adfb1ad
    • +
    • Uniform examples by @2bndy5 in bcf5471
    • +
    • Use macro name instead of macro value by @2bndy5 in 251255e
    • +
    • Solution for #179 by @2bndy5 in 72533fe
    • +
    • Use iu instead of ui by @2bndy5 in 3f48c4f
    • +
    • Use just u by @2bndy5 in 9926e15
    • +
    • [py wrapper] augment setup.py by @2bndy5 in 58c69b3
    • +
    • Py pkgs from apt are very out-of-date by @2bndy5 in 790e441
    • +
    • Let maxlen param be optional by @2bndy5 in bd01c62
    • +
    • + temp.py for testing; adjust read/peek overloads by @2bndy5 in 1195151
    • +
    • Working solution for #181 by @2bndy5 in aaa78a9
    • +
    • Explain NETWORK_ACK better by @2bndy5 in ca156a1
    • +
    • Use MESH_SLOW_ADDR_RESPONSE to slow POLL responses by @2bndy5 in f301912
    • +
    • Move SLOW_RESPONSE macro to Network lvl by @2bndy5 in b7d052d
    • +
    • Revert SLOW_ADDR_POLL_RESPONSE by @2bndy5 in 763ed5a
    • +
    • Introduce FLAG_FIRST_FRAG to avoid repetitive SPI calls by @2bndy5 in d6ecb50
    • +
    • Revert "revert SLOW_ADDR_POLL_RESPONSE" by @2bndy5 in 5b9b5e5
    • +
    • Testing optimizational solutions on Linux by @2bndy5 in 4ea2952
    • +
    • Use message type instead of a new flag by @2bndy5 in 859f9c4
    • +
    • Update python examples by @2bndy5 in 33d26fe
    • +
    • Resolves nRF24/RF24Mesh#197 by @2bndy5 in fde923a
    • +
    • Resolves #185 by @2bndy5 in 1794450
    • +
    • Relative CMakeLists.txt by @2bndy5 in 8b4dd69
    • +
    • Satisfy #187 by @2bndy5 in 936d564
    • +
    • [CMake] distinguish project_option/warnings by @2bndy5 in 50b5be2
    • +
    • Allow pybind11 to build in source by @2bndy5 in 149ebcd
    • +
    • Satisfy #186 by @2bndy5 in 553b1a5
    • +
    • Working blindly with GH runner's FS by @2bndy5 in 5b6b2e0
    • +
    • Checkout RF24 lib's rp2xxx branch by @2bndy5 in 0762837
    • +
    • LOL. checkout the actual RF24 repo by @2bndy5 in 279d9f2
    • +
    • Save the artifacts from proper path by @2bndy5 in 739d366
    • +
    • [no ci] gimme that badge by @2bndy5 in 13b6fb0
    • +
    • Update root CMakeLists.txt by @2bndy5 in d275379
    • +
    • Introduce undefined macro USE_RF24_LIB_SRC by @2bndy5 in 2a36d4b
    • +
    • Further the utility of USE_RF24_LIB_SRC macro by @2bndy5 in 88645ac
    • +
    • [CMakeLists.txt] fix last commit by @2bndy5 in 6ff8bdd
    • +
    • Declare failures() if defined ENABLE_NET_STATS by @2bndy5 in b221759
    • +
    • Auto-publish new releases to PIO by @2bndy5 in 3e0cee1
    • +
    • Use –non-interactive option in PIO CI by @2bndy5 in d5e0e6b
    • +
    • Linux CI uses RF24 master branch by @2bndy5 in 97d3679
    • +
    • Typo in linux CI triggers' paths by @2bndy5 in 7653422
    • +
    • Reviewed pico examples by @2bndy5 in 110b22a
    • +
    • Gimme that RTD badge by @2bndy5 in 81b6ab9
    • +
    • Max net lvl is 4 (not 3) by @2bndy5 in 6a01eba
    • +
    • Merge branch 'master' into CMake-4-Linux by @TMRh20 in 1b0fabe
    • +
    +

    Full commit diff: v1.0.15...v1.0.16

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.14...v1.0.15" >1.0.15</a> - 2021-04-13

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Add RF24 as dependency lib by @2bndy5 in d9d6f16
    • +
    • Add linux CI workflow by @2bndy5 in 5ae85a1
    • +
    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Remove synch.*; fmt examples; (+) Arduino CI by @2bndy5 in 876762b
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix unmatched parenthesis by @2bndy5 in 6eb8629
    • +
    +

    +<!-- 8 --> 📝 Documentation

    +
      +
    • Docs abstraction & code formating; update python examples by @2bndy5 in #170
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Isolate sleep to avr only by @2bndy5 in e655b37
    • +
    • Define ENABLE_SLEEP_MODE for sleep example by @2bndy5 in 6c89b65
    • +
    • Just don't build the sleep example (need advice) by @2bndy5 in 1c8c61f
    • +
    • Skip any example that includes avr/pgmspace by @2bndy5 in 022c797
    • +
    • Bad yml workflow structure by @2bndy5 in aeb813e
    • +
    • Fetch all history on checkout action by @2bndy5 in 9ae9449
    • +
    • Clone RF24 directly from CLI (no checkout action) by @2bndy5 in 551c350
    • +
    • Display contents of usr/local/lib & include/rf24 by @2bndy5 in 7fc71ae
    • +
    • Typo by @2bndy5 in 3b1268c
    • +
    • How is librf24-bcm.so incompatible? by @2bndy5 in 43f4197
    • +
    • File root to symlink by @2bndy5 in bd907d4
    • +
    • Abandon linux build CI for now by @2bndy5 in ef0fd5b
    • +
    • Oops (-) AStyle.exe & ignore *.exe by @2bndy5 in 355b88a
    • +
    • Merge pull request #166 from nRF24/add-arduino-ci by @TMRh20 in #166
    • +
    • Make most #defines in RF24Network_config.h conditional so they can be set from project code or compiler command line. by @kripton in #171
    • +
    • Version bump (patch+1) by @2bndy5 in 0afb14d
    • +
    +

    Full commit diff: v1.0.14...v1.0.15

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.13...v1.0.14" >1.0.14</a> - 2020-12-14

    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Remove dual head radio stuff by @TMRh20 in 69c0e91
    • +
    • Remove redundant call to available() by @TMRh20 in 23d7fc4
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix warnings; can't do anything about c'tor params by @2bndy5 in 054a8ea
    • +
    • Fix missing images by @2bndy5 in b4e68d0
    • +
    +

    +<!-- 8 --> 📝 Documentation

    +
      +
    • Redirect doc links to nRF24 org by @2bndy5 in bea7a94
    • +
    • Merge pull request #162 from 2bndy5/master by @TMRh20 in #162
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Edit doxyfile OUTPUT_DIR & add workflow by @2bndy5 in 3f1e75a
    • +
    • Format doxygen css file & include latest changes by @2bndy5 in 51d72ba
    • +
    • Only run doxygen on master branch by @2bndy5 in 4569034
    • +
    • Merge pull request #163 from 2bndy5/master by @2bndy5 in #163
    • +
    • Simplify update() function by @TMRh20 in 597e7d2
    • +
    • Update library.json by @TMRh20 in 78d1ff5
    • +
    • Update library.properties by @TMRh20 in 710d1a5
    • +
    +

    Full commit diff: v1.0.13...v1.0.14

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.12...v1.0.13" >1.0.13</a> - 2020-08-30

    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Bugfix affecting RF24Mesh by @TMRh20 in 610d237
    • +
    • Update library.properties by @TMRh20 in dbeecc9
    • +
    • Update library.json by @TMRh20 in 55a6eef
    • +
    +

    Full commit diff: v1.0.12...v1.0.13

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.11...v1.0.12" >1.0.12</a> - 2020-08-17

    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Allow any size MAX_PAYLOAD_SIZE by @TMRh20 in 3474b15
    • +
    • Bug fix & cleanup by @TMRh20 in 17120b3
    • +
    • Bug fix & adjustment by @TMRh20 in e5c6d5d
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Don't rtrn hdr type for routed payloads by @TMRh20 in 1e261b7
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Update for release by @TMRh20 in 86f4955
    • +
    +

    Full commit diff: v1.0.11...v1.0.12

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.10...v1.0.11" >1.0.11</a> - 2020-08-08

    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • General cleanup & fixes by @TMRh20 in 75348f1
    • +
    • Remove warings by @TMRh20 in e9a68a2
    • +
    • Remove incoming holds by @TMRh20 in a2db440
    • +
    • Bit of a clean up by @TMRh20 in 0aa83e0
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix config for ATTiny by @TMRh20 in 8df2ed9
    • +
    +

    +<!-- 8 --> 📝 Documentation

    +
      +
    • Update readme to just point to the official docs by @TMRh20 in f32e2b1
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Removal of BCM2835 constants by @TMRh20 in 2d75981
    • +
    • Update for release & architectures by @TMRh20 in f9d23b0
    • +
    • Update for release by @TMRh20 in 293c55e
    • +
    +

    Full commit diff: v1.0.10...v1.0.11

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.9...v1.0.10" >1.0.10</a> - 2020-07-16

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Add detection of certain failures by @TMRh20 in 4a40d32
    • +
    • Add 2 new examples by @TMRh20 in c1cb484
    • +
    • Add examples, update docs by @TMRh20 in c8cb7fa
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Update library.properties by @TMRh20 in 7628187
    • +
    • Update version for release by @TMRh20 in 4023933
    • +
    +

    Full commit diff: v1.0.9...v1.0.10

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.8...v1.0.9" >1.0.9</a> - 2019-05-08

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Added packet peek functionality by @Avamander in #106
    • +
    • Adds define NETWORK_DEFAULT_ADDRESS by @MAKOMO in 1177ebd
    • +
    • Adds delay to avoid clashes on multicastRelay by @MAKOMO in 394286d
    • +
    • Adding overload peek function for the expanded peek functionality. by @cnlangness in 2a8234f
    • +
    • Adding additional overload items. by @cnlangness in d0bdb38
    • +
    • Adding missing length definition. by @cnlangness in c939062
    • +
    • Adding type definition of a tuple for peek. by @cnlangness in eae724f
    • +
    • Add timeout to update() while loop by @TMRh20 in df7dab1
    • +
    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Redefinition of returnVal removed by @wilmsn in 460bf34
    • +
    • Merge pull request #125 from wilmsn/patch-1 by @TMRh20 in #125
    • +
    • Edit docs: max # of nodes, remove dual head ref by @TMRh20 in a35ce88
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fixed dependecy issue by @ivankravets in 0656885
    • +
    • Fixes position of NETWORK_DEFAULT_ADDRESS define by @MAKOMO in 4f4b239
    • +
    • Fix/adds debug messages and tightens multi-cast relay delay by @MAKOMO in 840c856
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Create LICENSE by @Avamander in 2292755
    • +
    • Update library.properties by @Avamander in a2ce4ae
    • +
    • Update version to 1.0.8 by @ivankravets in #121
    • +
    • Update library.json by @Avamander in 2e11c3b
    • +
    • Merge pull request #122 from ivankravets/patch-3 by @TMRh20 in #122
    • +
    • Comment RPi incompatible debug messages by @MAKOMO in a9a91c8
    • +
    • Merge pull request #116 from MAKOMO/master by @TMRh20 in #116
    • +
    • Update helloworld_tx.ino by @Avamander in 9950344
    • +
    • Update helloworld_rx.ino by @Avamander in 2d10995
    • +
    • Attempt 1 at fix for issue #126. by @cnlangness in c6c554f
    • +
    • Removing the type definition to address peek reading the message and not allowing a read of the message. by @cnlangness in 90d841a
    • +
    • Updating the classes portion for the peek return of the header. by @cnlangness in 2fbb79f
    • +
    • Merge pull request #127 from cnlangness/patch_126 by @TMRh20 in #127
    • +
    • Update library.json by @Avamander in 0e1e982
    • +
    • Update library.properties by @Avamander in 5e0fcbe
    • +
    • Update version for release by @TMRh20 in 2d93030
    • +
    +

    Full commit diff: v1.0.8...v1.0.9

    +

    +New Contributors

    +
      +
    • @cnlangness made their first contribution
    • +
    • @wilmsn made their first contribution
    • +
    • @MAKOMO made their first contribution
    • +
    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.7...v1.0.8" >1.0.8</a> - 2017-01-25

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Support for ATXMega256D3 by @akatran in df6d268
    • +
    • Added warning about having sleep mode defined. by @Avamander in 69b497c
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Miscalculation of max fragments by @TMRh20 in 53e1a44
    • +
    • Fix typo by @comdata in 46fb07e
    • +
    • Fixed typo by @comdata in 9fac7f5
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Per RF24 issue change binary values to hex by @TMRh20 in 85550ee
    • +
    • Possibility to setup the interrupt_mode in sleepnode by @ricgyver in 7169f23
    • +
    • Styling of the interrupt setup by @ricgyver in 69b7340
    • +
    • Merge pull request #99 from ricmail85/master by @ricgyver in #99
    • +
    • Merge branch 'master' of https://github.com/TMRh20/RF24Network by @akatran in 4b3ae24
    • +
    • Update from TMRh20/master and merge with local. by @akatran in 430dcae
    • +
    • Update README.md by @akatran in 379cb54
    • +
    • Change README.md back to defaults. by @akatran in 0dbde60
    • +
    • Merge remote-tracking branch 'refs/remotes/TMRh20/master' by @akatran in fbe0473
    • +
    • Changes to include XMega D3 family. by @akatran in 3d85de9
    • +
    • Merge pull request #76 from akatran/master by @akatran in #76
    • +
    • Undefine sleep mode for ESP by @comdata in 302eb03
    • +
    • Merge pull request #1 from comdata/patch-1 by @comdata in 415fdc9
    • +
    • Made sure sleep mode is not defined if using ESP8266. by @Avamander in #102
    • +
    • Update library.properties by @Avamander in c30db56
    • +
    +

    Full commit diff: v1.0.7...v1.0.8

    +

    +New Contributors

    +
      +
    • @comdata made their first contribution
    • +
    • @akatran made their first contribution in #76
    • +
    • @ricgyver made their first contribution in #99
    • +
    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.6...v1.0.7" >1.0.7</a> - 2016-09-20

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Merge pull request #90 from aaddame/master by @Avamander in #90
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix peek length by @TMRh20 in 3fe2560
    • +
    • Don't use W_TX_PAYLOAD_NO_ACK flag by @TMRh20 in deeb0b2
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Update RF24Network_config.h by @aaddame in 1d4f7f7
    • +
    • Revert "Update RF24Network_config.h" by @TMRh20 in 415fa8d
    • +
    • Merge pull request #91 from TMRh20/revert-90-master by @TMRh20 in #91
    • +
    • Initialize variables per #83 @mz-fuzzy by @TMRh20 in a00090c
    • +
    • Errors/Crashing on non-AVR, non-Linux devices by @TMRh20 in 61a35e4
    • +
    • Update library properties for release by @TMRh20 in 01cdecb
    • +
    +

    Full commit diff: v1.0.6...v1.0.7

    +

    +New Contributors

    +
      +
    • @aaddame made their first contribution
    • +
    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.5...v1.0.6" >1.0.6</a> - 2016-04-12

    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Fix alignment/padding issues non-linux devices #78 by @TMRh20 in 609bc2f
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Linux examples makefile fix for ubuntu - moving by @martin-mat in 0849bee
    • +
    • Increment Version for latest fix by @TMRh20 in dd4e04d
    • +
    +

    Full commit diff: v1.0.5...v1.0.6

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.4...v1.0.5" >1.0.5</a> - 2016-03-27

    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Fix incorrect pipe for node 05, other by @TMRh20 in 3a42eb9
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix peek per #78 & #80 by @TMRh20 in 09a9ccf
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • RPI2 autodetection by @yozik04 in 4812504
    • +
    • Renamed readme files. by @Avamander in 3bbe66b
    • +
    • Archived old sketch to consume less space. by @Avamander in 7e47a11
    • +
    • Merge pull request #81 from Avamander/master by @Avamander in 6f622f8
    • +
    • Update pyRF24Network.cpp by @gregj1 in 796c6d0
    • +
    • Merge pull request #75 from gregj1/master by @martin-mat in 6909ede
    • +
    • Testing changes for #78 & #80 by @TMRh20 in 18a0a2e
    • +
    • Merge remote-tracking branch 'refs/remotes/origin/Development' by @TMRh20 in 0e102a2
    • +
    • Minor change for network_poll by @TMRh20 in 4c1293d
    • +
    • Increment version for release by @TMRh20 in a25d806
    • +
    +

    Full commit diff: v1.0.4...v1.0.5

    +

    +New Contributors

    +
      +
    • @gregj1 made their first contribution
    • +
    • @yozik04 made their first contribution
    • +
    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.3...v1.0.4" >1.0.4</a> - 2015-12-15

    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix for last change by @TMRh20 in 5f1cf94
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Adjustment for last change by @TMRh20 in 950c94e
    • +
    • Update library properties by @TMRh20 in 49897bd
    • +
    +

    Full commit diff: v1.0.3...v1.0.4

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.2...v1.0.3" >1.0.3</a> - 2015-12-14

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Adds helloworld_tx.python3.py by @joernesdohr in cdaa108
    • +
    • Adds helloworld_rx.python3.py by @joernesdohr in 84f8dff
    • +
    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Removes getPayloadsize reference by @joernesdohr in dd7808f
    • +
    • Removes build folder by @joernesdohr in 31d4694
    • +
    • Removes obsolete Python 3 specific examples by @joernesdohr in 61be0bf
    • +
    • Increase throughput, adjust delays, etc by @TMRh20 in baacbd2
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fixes copy-paste error by @joernesdohr in ba96a30
    • +
    • Fix payload struct format by @joernesdohr in b9d7bdd
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Changes std::string to Python MemoryView object to fix String encoding errors in Python 3 by @joernesdohr in 3f0b2ef
    • +
    • Merge remote-tracking branch 'remotes/upstream/master' by @joernesdohr in f6e0360
    • +
    • Changed String objects to bp:object types in Python wrapper by @joernesdohr in b0fbd1d
    • +
    • Updates wrapper definition by @joernesdohr in e9846e4
    • +
    • Updates setup.py to compile Python wrapper with libboost python 3 if available by @joernesdohr in 1dcd3f5
    • +
    • Changes struct format to two unsigned Long types in helloworld python examples by @joernesdohr in 736234c
    • +
    • Forgot sys module import by @joernesdohr in 4e2889b
    • +
    • Changes radio pin configuration by @joernesdohr in 8406ca5
    • +
    • Changes incorrect self.radio to radio variable by @joernesdohr in ace215b
    • +
    • Reading 8 bit, not 12 by @joernesdohr in 4601267
    • +
    • Bytearray to String with str() in Python 2.7 by @joernesdohr in 814c5e0
    • +
    • Makes helloworld_rx.py, helloworld_tx.py scrips compatible with Python 3. Fixes millis() byte length by @joernesdohr in 5e6a16e
    • +
    • Merge pull request #68 from joernesdohr/master by @TMRh20 in 53b0a75
    • +
    • Update library.properties by @Avamander in 7e2768d
    • +
    +

    Full commit diff: v1.0.2...v1.0.3

    +

    +New Contributors

    +
      +
    • @joernesdohr made their first contribution
    • +
    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0.1...v1.0.2" >1.0.2</a> - 2015-11-27

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Add flag to prevent polling. Fix header type change. by @TMRh20 in cce19b2
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fix for ATtiny per #67 by @TMRh20 in 7eba4ad
    • +
    • Fix per #66 by @TMRh20 in 8552324
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Cleanup config.h file by @TMRh20 in d4c6790
    • +
    • Increment version by @TMRh20 in 612b569
    • +
    +

    Full commit diff: v1.0.1...v1.0.2

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/v1.0...v1.0.1" >1.0.1</a> - 2015-11-06

    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Slight modification for RF24Mesh changes by @TMRh20 in 9c1803a
    • +
    +

    Full commit diff: v1.0...v1.0.1

    +

    +<a href="https://github.com/nRF24/RF24Network/compare/f54c0ac0ee74d2fc9490740004bd3222b170ae85...v1.0" >1.0</a> - 2015-09-26

    +

    +<!-- 1 --> 🚀 Added

    +
      +
    • Added gitignore by @maniacbug in 89c2a82
    • +
    • Added by @maniacbug in aa79084
    • +
    • Added more debugging text by @maniacbug in 4c9141b
    • +
    • Added id field to header by @maniacbug in 48d22a6
    • +
    • Add gitignore by @maniacbug in 12c22a1
    • +
    • Added upload caability by @maniacbug in 7f70e7d
    • +
    • Added node configuration capability by @maniacbug in 7cfee69
    • +
    • Added an error message if no good address is found by @maniacbug in 108dd5e
    • +
    • Added copyright header by @maniacbug in 8c5aa77
    • +
    • Added -Wextra -Werror and cleaned up the resulting errors by @maniacbug in a39c724
    • +
    • Added vesion tracking for git. Is this overkill for an example?? by @maniacbug in 2a2f893
    • +
    • Added type and time fields to header by @maniacbug in 550bf11
    • +
    • Add version.h by @maniacbug in 031d39f
    • +
    • Added checking for valid address by @maniacbug in 82576d0
    • +
    • Added version.h back into meshping.pde by @maniacbug in 79e49a3
    • +
    • Added stub test framework by @maniacbug in fc43ebc
    • +
    • Added 'echo' ping test by @maniacbug in 99f61e4
    • +
    • Added Sync::reset, so resetting data doesn't turn into spurrious sync messages by @maniacbug in 0be5493
    • +
    • Add optional TX LED by @maniacbug in 6bf2d2c
    • +
    • Added build instructions for Duinode V1 by @maniacbug in 42a43be
    • +
    • Added startup LED sequence and ability to enter test mode by @maniacbug in 5999a2c
    • +
    • Added extra LED indicators in test mode by @maniacbug in 5954338
    • +
    • Added calibration mode, and theUpdater by @maniacbug in 78bea2f
    • +
    • Add relay role, configurable in eeprom by @maniacbug in 1fa87ee
    • +
    • Add manual temperature calibration by @maniacbug in 3a1a2a7
    • +
    • Add lost packets to S message by @maniacbug in 50bd166
    • +
    • Add radio sending retries. Needed now that RF24 doesn't have them by @maniacbug in 7d4b5b1
    • +
    • Add eeprom_update_block for older avrlibc's which are missing it by @maniacbug in 95241ba
    • +
    • Add sleep for ATTiny #8 by @TMRh20 in 80a6dcd
    • +
    • Add compatibility for Arduino ESP8266 architecture by @crcastle in 1839bce
    • +
    • Add Pandora's box routing by @TMRh20 in 2474311
    • +
    • Add network wide multicasting and multicast routing by @TMRh20 in 6e25453
    • +
    • Add a frame structure for each message. by @reixd in fda8602
    • +
    • Add copyright by @reixd in b1e8590
    • +
    • Add conversion by @TMRh20 in 8261dc2
    • +
    • Add support for RF24Mesh address lookups by @TMRh20 in d8dc1d6
    • +
    • Add fragmentation for Arduino, related changes by @TMRh20 in a6b3b5e
    • +
    • Add config of user buffer size to _config.h file by @TMRh20 in 1ce964c
    • +
    • Add separate defaults for ATTiny, minor debug chg by @TMRh20 in a1706ef
    • +
    • Add returnSysMsgs variable by @TMRh20 in 506239c
    • +
    • Added sleepInterrupted Flag to determine if SleepNode was Interrupted by @dsbaha in ce3b522
    • +
    +

    +<!-- 3 --> 🗑️ Removed

    +
      +
    • Removed explicity directionality in the net layer by @maniacbug in 7fb1a5a
    • +
    • Removed time from header. Added reserved byte for future use. by @maniacbug in 13d52c2
    • +
    • Removed NodeLine struct, not neeed anymore by @maniacbug in 3684a91
    • +
    • Remove serial debugging by @maniacbug in 3a30dbe
    • +
    • Remove directionality by @maniacbug in 32e49c8
    • +
    • Remove use of 'prog_char' for compliance with GCC 4.6.2. by @maniacbug in 98830b3
    • +
    • Refactor platform pin names to use same names as my 1284P platform. Remove un-needed counter from S message, which duplicates the id in the header. Print node names in octal. by @maniacbug in da171e8
    • +
    • Optimized Network Lib: Sleep, Extended Timeouts by @TMRh20 in e8df6e9
    • +
    • Disable broken sleep mode by @TMRh20 in 9428e97
    • +
    • Update the pin layout table and consolidate the RPi readme files. by @reixd in 69af19c
    • +
    • Fix RF24NetworkHeader::toString() and remove commented out line by @flavio-fernandes in 37bd59a
    • +
    • Merge pull request #30 from flavio-fernandes/master by @TMRh20 in ed05223
    • +
    • Use the RF24NetworkFrame type for internal management of frames by @reixd in 64147ff
    • +
    • Fully functional fragmentation and reassembly implementation for large payloads. by @reixd in d49e957
    • +
    • Fully functional fragmentation implementation for large payloads. by @reixd in a4dbdd1
    • +
    • Remove not needed CircularBuffer data structure by @reixd in f454415
    • +
    • Cleanup code. by @reixd in ee420d1
    • +
    • Remove unwanted check in appendFragmentToFrame(). by @reixd in e0ec131
    • +
    • Cleanup for Aduino code by @TMRh20 in 94dfbd5
    • +
    • Clean up a bit from recent changes by @TMRh20 in 8062093
    • +
    • Fragmentation and cache cleanup by @TMRh20 in 44f5594
    • +
    • Fragmentation/Re-assembly improvements by @TMRh20 in 56716ae
    • +
    • Remove stray printf by @TMRh20 in 403c2ad
    • +
    • Remove leftover printf from last commit by @TMRh20 in 1b0a701
    • +
    • Fixes, Changes & Improvements by @TMRh20 in 1296058
    • +
    • Update RF24Network_config.h file by @TMRh20 in 19d4631
    • +
    • Much improved handling of user data by @TMRh20 in ac45c6a
    • +
    • Fix for #124 by @TMRh20 in c88ccdc
    • +
    +

    +<!-- 4 --> 🛠️ Fixed

    +
      +
    • Fixed problem with buffer. Throw out bogus packets. by @maniacbug in 20ab90d
    • +
    • Fixed version.h by @maniacbug in e112cb9
    • +
    • Fixed a bug where radio was not automatically listening. Also, pipes 2+ were not being opened correctly. by @maniacbug in 5bab390
    • +
    • Fixed a bug, now properly pings base. by @maniacbug in 97b957b
    • +
    • Fixed missing includes, thanks to Spoiler for reporting the problem. by @maniacbug in e03ee47
    • +
    • Fix a couple bugs by @maniacbug in c25b5bd
    • +
    • Fix bug where relay nodes were shutting down the radio by @maniacbug in 5fafdc5
    • +
    • Fix formula comment by @maniacbug in 9a06b03
    • +
    • Fix bug in Celsius calculation, was forgetting to convert to 1.1V max by @maniacbug in ecf5f11
    • +
    • Standby-I in sleep mode, other changes by @TMRh20 in f88f3cb
    • +
    • Fix typo in readme for RPi by @TMRh20 in 288797a
    • +
    • Fix for ATTiny in IDE 1.5.7 by @TMRh20 in 9f19793
    • +
    • Fix wrong pin layout by @reixd in 89bc249
    • +
    • Fix some indentation issues. by @reixd in 5696f31
    • +
    • Fixes/Workarounds for fragmentation support by @TMRh20 in e34a394
    • +
    • Fix compile errors by @TMRh20 in f20337c
    • +
    • Fix compile errors by @TMRh20 in bf287d6
    • +
    • Corrupt payloads Add: Address Confirm by @TMRh20 in c73eabc
    • +
    • Fix fragmentation, frag test changes by @TMRh20 in 90d826b
    • +
    • Fix compile errors on IDE 1.05 by @TMRh20 in 333d332
    • +
    • Fix compile error with IDE 1.0.5 by @TMRh20 in 840036b
    • +
    • Fix broken routing on Arduino by @TMRh20 in bdc6dc2
    • +
    • Fix external data disabled without debug minimal by @TMRh20 in 1f1a0ce
    • +
    • Fixes etc by @TMRh20 in 18aaa23
    • +
    • Fix broken responses for RF24Mesh by @TMRh20 in b4090e8
    • +
    • External data type with small payloads by @TMRh20 in 8f97fe1
    • +
    • Multicast relay interfering with RF24Mesh by @TMRh20 in 0771e19
    • +
    • RPi reassembly for multicast payloads by @TMRh20 in a413e14
    • +
    • Fix non-fragmented writes from last change by @TMRh20 in 8cb0b35
    • +
    • Fix mistake in read function for Arduino by @TMRh20 in a3b27d9
    • +
    • Fix memory issue, code clean up, testing changes by @TMRh20 in c90027f
    • +
    • Fix one thing, break another... by @TMRh20 in 3e2da3a
    • +
    • Fix for RF24Mesh by @TMRh20 in 3bf56cb
    • +
    • Multicast, network_ack, RF24Mesh, debug by @TMRh20 in ee34bf1
    • +
    • Fix example Makefile for non-RPi by @TMRh20 in ebc57bd
    • +
    • Hanging on Due/Teensy by @TMRh20 in 5622c65
    • +
    • Fixes for #48 by @TMRh20 in f866332
    • +
    • Fix for ATtiny - buffer size declaration by @TMRh20 in e60d6ea
    • +
    • Fix unicast write after latest ack changes by @TMRh20 in 37abbca
    • +
    +

    +<!-- 7 -->🚦 Tests

    +
      +
    • Finder, echo, and sync tests all working nicely now. Yay by @maniacbug in 06a2341
    • +
    +

    +<!-- 8 --> 📝 Documentation

    +
      +
    • Massive documentation update by @maniacbug in b23ff53
    • +
    • Docupdate by @maniacbug in 7d31cc4
    • +
    • Docfix by @maniacbug in f154300
    • +
    • Moredocs by @maniacbug in 3b216f9
    • +
    • Updatedocs by @maniacbug in 6c7479a
    • +
    • Docs by @maniacbug in e5e22f0
    • +
    • Trying to fix a broken doc page link by @maniacbug in 5dbd26b
    • +
    • Minor doc change, Fix example topology by @TMRh20 in 3494280
    • +
    • Update to main doc page by @TMRh20 in 0e24467
    • +
    • Staggered timeouts, Dual head mode by @TMRh20 in b47f480
    • +
    • @PlatformIO Library Registry manifest file by @ivankravets in 2db741c
    • +
    • SleepNodeInterrupted, doc cleanup by @TMRh20 in dc8cf7b
    • +
    +

    +<!-- 9 --> 🗨️ Changed

    +
      +
    • Initial interface defined by @maniacbug in f54c0ac
    • +
    • Modified for OSX by @maniacbug in 11c351f
    • +
    • Implemented begin() by @maniacbug in eb2b8f4
    • +
    • Implemented everything. Ready to test by @maniacbug in cc00335
    • +
    • Explicitly handle the case of sending to ourself by @maniacbug in 7c2a253
    • +
    • Various cleanups by @maniacbug in 582d245
    • +
    • Update by @maniacbug in 873ae7e
    • +
    • More by @maniacbug in d7be898
    • +
    • Fully working now by @maniacbug in 26bf3ad
    • +
    • Trying to get headerscan to work, and failed by @maniacbug in 18163e9
    • +
    • Move to eeprom-based node address identification by @maniacbug in 1429fa0
    • +
    • Allow addresses from 0-9 by @maniacbug in a7348ba
    • +
    • New example by @maniacbug in 9eb2a8c
    • +
    • Update comments by @maniacbug in 57c40ed
    • +
    • Implemented uni-directional mode by @maniacbug in 5329633
    • +
    • Refactored sleep helpers by @maniacbug in 9ea4cb4
    • +
    • Morecomments by @maniacbug in 6e16fc0
    • +
    • Major conversion to octal addressing by @maniacbug in c4fb0dc
    • +
    • Converting to octal addressing. Not done yet. by @maniacbug in bbef737
    • +
    • Finished moving sensornet to octal addressing by @maniacbug in 59c6296
    • +
    • Sensornet now actually takes a sensor reading. by @maniacbug in ce1ccb0
    • +
    • Meshping now only pings the base. by @maniacbug in 734dc66
    • +
    • Always build usb ports by @maniacbug in e4f56cc
    • +
    • Now maintains a list of known nodes, and pings those. by @maniacbug in e60373a
    • +
    • Base now sends out the list of nodes to all nodes on the network by @maniacbug in 17abe16
    • +
    • Comments by @maniacbug in 54c7144
    • +
    • Stylistic node address changes by @maniacbug in 6d59a38
    • +
    • Always open all pipes for reading. This is possible now that we know exactly what nodes to listen for. by @maniacbug in fce4cf4
    • +
    • Cleaned up serial debug prints by @maniacbug in 59fb4d4
    • +
    • Moredebugginginfo by @maniacbug in 8857b6a
    • +
    • Use node index in eeprom instead of node address by @maniacbug in 8b2642e
    • +
    • Converte header-to-string to print proper octal addresses by @maniacbug in 7b64c51
    • +
    • Two new super-simple examples by @maniacbug in a4571e6
    • +
    • Arduino.h for Arduino 1.0 by @maniacbug in ab3c980
    • +
    • Using new-style build system by @maniacbug in 6dd0a51
    • +
    • Update to 1.0 Arduino and Maple. And an example for Maple. by @maniacbug in 1abad5b
    • +
    • Better indicator of ok/failure via LED by @maniacbug in 44e7980
    • +
    • Update test to actually start the network by @maniacbug in 6754887
    • +
    • Renames by @maniacbug in 9438bd1
    • +
    • Handle zero-length messages (where the header is enough info) by @maniacbug in 1ea7f80
    • +
    • Experimental functionality to keep a variable space in sync, including unit test by @maniacbug in bf24995
    • +
    • Initial implementation of FINDER message on RX by @maniacbug in 879fb9a
    • +
    • Conversions to Arduino 1.0 by @maniacbug in eeffa16
    • +
    • Updated Jamfile from most recent Maple changes by @maniacbug in d0cbe6e
    • +
    • Finder test works. Other problems with not receiving packet #2 on tx side and #3 on rx side. by @maniacbug in 9a321c3
    • +
    • Stub finder class. Will take over finder message duties by @maniacbug in 6416d82
    • +
    • Moved finder to separate object, compiles. by @maniacbug in 641e1eb
    • +
    • Using new location for cxxtest by @maniacbug in 267ef8c
    • +
    • Merge branch 'topic_echo' of nero:/srv/git/RF24Network into topic_echo by @maniacbug in 6730408
    • +
    • Moved network startup into main(), so it only fires up the network ONCE. Compiles only, not tested. by @maniacbug in 37e55d4
    • +
    • Merge branch 'topic_echo' by @maniacbug in a10fc9a
    • +
    • Update sensornet example to 1.0 by @maniacbug in 942b664
    • +
    • Updated sensornet example to send TWO sensor values by @maniacbug in 02e50fb
    • +
    • Increase use of PROGMEM, less RAM use by @maniacbug in d55df40
    • +
    • Inconsequential standards compliance change by @maniacbug in ba94b74
    • +
    • Move to channel 92 for compatability with NanodeUIP/examples/sensor_gateway_rf24 by @maniacbug in 09dc4e7
    • +
    • Turn off serial debugging by @maniacbug in 4088dd4
    • +
    • Use latest Jamfiles by @maniacbug in 95835ec
    • +
    • Use Getting Starting board, and other changes designed to make it easier for beginners. by @maniacbug in 9b4f8d5
    • +
    • Use latest Jamfile by @maniacbug in 598e78c
    • +
    • Using Getting Started board. REmove old PSTR warning workarounds, unneeded in gcc >=4.6 by @maniacbug in b8efa19
    • +
    • Ignore 8000000 directory too by @maniacbug in d86062b
    • +
    • Modernize based on latest approach to multiple nodes. by @maniacbug in 1b4aef1
    • +
    • Made multi-platform aware. Moved message definition out to own file. Making first-level nodes not sleep. Added packet counter. by @maniacbug in eda3268
    • +
    • Shell file for creating a 8MHz DuinodeV3 build by @maniacbug in 6b90d10
    • +
    • Sent voltage reading as a meaningful reading by @maniacbug in 442edb2
    • +
    • Change temperature sensor to transmit meaningful C*256 values by @maniacbug in 7c76f97
    • +
    • Move usb ports by @maniacbug in b76752a
    • +
    • Hardware definition for V5 duinodes by @maniacbug in f797b2e
    • +
    • Refactor the constant checking for valid LED pins into a class. Also added the ability to turn test mode OFF. by @maniacbug in d1ada9a
    • +
    • Rename LED::set to LED::write, and change led status to bool by @maniacbug in 54af0f9
    • +
    • Using operator= for leds by @maniacbug in c435724
    • +
    • Renames and cleanups by @maniacbug in d311cff
    • +
    • Use a struct for eeprom info by @maniacbug in 1c7d712
    • +
    • Get header from correct place by @maniacbug in 01a317a
    • +
    • Tweaks for current build system by @maniacbug in 887dc6f
    • +
    • Use 8s interval for readings by @maniacbug in 962e5fa
    • +
    • Jamfile changes to fit in all-up Arduino jam-based build system by @maniacbug in 9d56d5a
    • +
    • Bring more examples into all-up jam-based build system by @maniacbug in 7a7bbfb
    • +
    • Better handling for test mode. Prints a message, sends more often by @maniacbug in 0281913
    • +
    • Slight refactoring of eeprom handling. by @maniacbug in b550786
    • +
    • More messaging around node config changes by @maniacbug in 5042b2c
    • +
    • Make it easy to send a packet to your direct parent without having to work out the exact address by @maniacbug in 629c333
    • +
    • Send test packet to parent, not all the way to base. Factor out voltage/temp-sending helpers by @maniacbug in 832fb9a
    • +
    • Respond to test message with calibration messages by @maniacbug in 7432b0d
    • +
    • Receive and print calibration messages by @maniacbug in ecff492
    • +
    • Only send calibration request messages during calibration mode by @maniacbug in d17ff67
    • +
    • Automatically collects calibration data by @maniacbug in d9e291b
    • +
    • Automatically applies calibration data by @maniacbug in 1092c6c
    • +
    • Commit temp calibration to eeprom by @maniacbug in 01ded76
    • +
    • Make sending to ones own parent more explicit by @maniacbug in cb6d43a
    • +
    • Increase sending period to 30 seconds by @maniacbug in b66483b
    • +
    • Handle the case here read() gets a 0 len by @maniacbug in 5953473
    • +
    • Harden against accidentally setting node address to 0 by @maniacbug in a9961f2
    • +
    • Initial implemntation of system config k/K messages by @maniacbug in 174609e
    • +
    • Reliably fetch system config from parent by @maniacbug in 42977db
    • +
    • Changes needed for relay nodes to deal with problems found in deployment by @maniacbug in 59b347e
    • +
    • Account for an 'invalid' radio by @maniacbug in bd2bc20
    • +
    • Raspberry Pi support by @TMRh20 in 1fa44cc
    • +
    • Https://github.com/TMRh20/RF24/pull/2 by @TMRh20 in fab8a65
    • +
    • Update makefile and examples by @TMRh20 in 37406db
    • +
    • Modify for Due support per #4 by @TMRh20 in fe1fe3b
    • +
    • Updated examples: Addressing by @TMRh20 in 5c0efe5
    • +
    • Select a standard pin layout for the examples. by @reixd in f39c958
    • +
    • Merge pull request #23 from reixd/examples by @TMRh20 in 5014442
    • +
    • Update Doxyfile to current by @TMRh20 in 0be242c
    • +
    • Update readme for RF24 RPi/Arduino code merge by @TMRh20 in 9b1b674
    • +
    • Correct readme for RF24 core lib install on RPi by @TMRh20 in 420b4a7
    • +
    • Python wrapper for RPi added in cba2626
    • +
    • Merge pull request #27 from mz-fuzzy/master by @TMRh20 in 697ead9
    • +
    • Intel gallileo support by @spaniakos in 3e46b9a
    • +
    • Header should work also on non-Arduino ENVs by @lnxbil in 5a22075
    • +
    • Merge pull request #36 from lnxbil/header-fix-for-non-arduino by @TMRh20 in dd7d04b
    • +
    • Merge remote-tracking branch 'upstream/master' by @spaniakos in ac63091
    • +
    • Merge pull request #38 from spaniakos/master by @TMRh20 in c8a3e85
    • +
    • Merge pull request #50 from ivankravets/patch-1 by @TMRh20 in e32e350
    • +
    • Merge pull request #52 from crcastle/patch-1 by @TMRh20 in 546e238
    • +
    • Development for planned changes by @TMRh20 in ad40fcb
    • +
    • Small update to correct issues by @TMRh20 in b405da4
    • +
    • Changes to routing by @TMRh20 in 213ce12
    • +
    • Extendend the frame struct to allow setting payload. by @reixd in 03a1bc7
    • +
    • Many changes in the fragmentation by @reixd in e1bfd7a
    • +
    • Change isEmpty test by @reixd in a20004f
    • +
    • Delete not needed data structure by @reixd in 4967084
    • +
    • Merge branch 'feature/fragmentation_v2' of https://github.com/reixd/RF24Network into feature/fragmentation_v2 by @reixd in fb4254c
    • +
    • Merge pull request #13 from reixd/feature/fragmentation_v2 by @TMRh20 in 68aee19
    • +
    • Arduino support for routing fragmented payloads by @TMRh20 in cf2c29f
    • +
    • Per #14 add first/last fragment, debugging cleanup by @TMRh20 in a4b6076
    • +
    • #15 Fix user-defined header types w/fragmentation by @TMRh20 in 6a79f9b
    • +
    • #15 #14 Improve fragmentation and transfer speed by @TMRh20 in 14db5e3
    • +
    • Set MAX_USER_DEFINED_HEADER_TYPE for better readibility. by @reixd in 16fe4f1
    • +
    • Merge remote-tracking branch 'origin/TMRh20' into Development by @TMRh20 in 0d69e00
    • +
    • Sending large/frag payloads on Arduino by @TMRh20 in c4ddcfa
    • +
    • Define disable_fragmentation for Arduino by @TMRh20 in f75d06e
    • +
    • Testing some changes/additions by @TMRh20 in 48de499
    • +
    • Testing some RPi changes/additions by @TMRh20 in e3d0100
    • +
    • Merge remote-tracking branch 'origin/TMRh20' into Development by @TMRh20 in ade6bd3
    • +
    • Small fixes by @TMRh20 in 5f29c22
    • +
    • Minor updates for RF24Mesh by @TMRh20 in 420ca1e
    • +
    • Update config file by @TMRh20 in eff7ee0
    • +
    • Cleanup, change non-debug printf, minor changes by @TMRh20 in 324e413
    • +
    • A bit of cleanup and additions for RF24Mesh testing by @TMRh20 in 414192f
    • +
    • Minor changes for auto-addressing reqs by @TMRh20 in e7fd5a7
    • +
    • Major changes - Network ACKs, Fixes by @TMRh20 in 1560be5
    • +
    • Simplify system msg handling, add addr release by @TMRh20 in 9bb97f4
    • +
    • Forgot to add addr release for RPi by @TMRh20 in 4a66840
    • +
    • Update readme for RF24 RPi/Arduino code merge by @TMRh20 in b2a7fd3
    • +
    • Update other readme for RF24/RPi code merge by @TMRh20 in 31ba314
    • +
    • Correct RF24 Core lib install info (code merge) by @TMRh20 in f881426
    • +
    • Set default max payload to 128bytes for Arduino by @TMRh20 in 1dd7282
    • +
    • RPi - Sending multicast fragments by @TMRh20 in 596dd3c
    • +
    • Rough Arduino/RPi code merge by @TMRh20 in 3b44981
    • +
    • Re-enable user payloads by @TMRh20 in 40b5824
    • +
    • Intel galilleo support added by @spaniakos in f404507
    • +
    • Intel galileo support added by @spaniakos in f56bb0a
    • +
    • Merge pull request #33 from spaniakos/Development by @TMRh20 in 549cb67
    • +
    • Reduce Errors - add 200ms delay to writes by @TMRh20 in 622989c
    • +
    • Intel Galileo Support by @spaniakos in 276a598
    • +
    • Delete RF24Network.o by @spaniakos in 1215f3d
    • +
    • Delete librf24network.so.1.0 by @spaniakos in 0faca8c
    • +
    • Revert change by @spaniakos in 1f6b56b
    • +
    • Merge pull request #39 from spaniakos/Development by @TMRh20 in acf9dd0
    • +
    • Update config file for RF24Ethernet by @TMRh20 in fdaf171
    • +
    • Revert 'optimization' ... dejavu by @TMRh20 in 001aa0e
    • +
    • Code cleanup and fixes by @TMRh20 in d185bd0
    • +
    • Revert - Sleep_mode should be disabled by default by @TMRh20 in 26485db
    • +
    • Update Makefile for non-RPi Linux devices by @TMRh20 in c6fbaaf
    • +
    • Update Makefile with better RPi detection by @TMRh20 in c1c3a45
    • +
    • Return external_data_types for RPi/Linux devices by @TMRh20 in aae90b7
    • +
    • Revert changes to RF24Network_config.h by @TMRh20 in 30c5205
    • +
    • Introduce network.external_queue by @TMRh20 in ce0b421
    • +
    • Allow begin() on the current channel by @TMRh20 in 76eb89d
    • +
    • Reduce CPU usage, simplify reassembly on Linux/RPi by @TMRh20 in 22be01d
    • +
    • Init frag buffers in constructor (Arduino) by @TMRh20 in 3d0eff5
    • +
    • Merge remote-tracking branch 'origin/Development' by @TMRh20 in ceecf38
    • +
    • Examples should be excluded from platformio library.json file by @gehel in 759e805
    • +
    • Merge pull request #58 from gehel/master by @TMRh20 in cb56755
    • +
    • Test chgs for backwards compat with clones by @TMRh20 in 5b366aa
    • +
    • Re-enable dynamic payloads by default by @TMRh20 in 27446c3
    • +
    • Merge branch 'Development' by @TMRh20 in 5e62300
    • +
    • Create library.properties by @Avamander in a08de45
    • +
    • Merge pull request #60 from Avamander/patch-1 by @TMRh20 in bb41408
    • +
    +

    Full commit diff: f54c0ac...v1.0

    +

    +New Contributors

    +
      +
    • @gehel made their first contribution
    • +
    • @crcastle made their first contribution
    • +
    • @dsbaha made their first contribution
    • +
    • @spaniakos made their first contribution
    • +
    • @lnxbil made their first contribution
    • +
    • @flavio-fernandes made their first contribution
    • +
    • @ made their first contribution
    • +
    • @reixd made their first contribution
    • +
    • @maniacbug made their first contribution
    • +
    +
    +
    + + + + diff --git a/md_CONTRIBUTING.html b/md_CONTRIBUTING.html index 58b6f95a..f3508893 100644 --- a/md_CONTRIBUTING.html +++ b/md_CONTRIBUTING.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: CONTRIBUTING - +Newly Optimized RF24Network Layer: CONTRIBUTING - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    -
    CONTRIBUTING
    +
    CONTRIBUTING
    -

    These are the current requirements for getting your code included in RF24Network:

    +

    These are the current requirements for getting your code included in RF24Network:

    -
    diff --git a/md_docs_2addressing.html b/md_docs_addressing.html similarity index 60% rename from md_docs_2addressing.html rename to md_docs_addressing.html index 7102d34d..e8613395 100644 --- a/md_docs_2addressing.html +++ b/md_docs_addressing.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Addressing Format: Understanding Addressing and Topology - +Newly Optimized RF24Network Layer: Addressing Format: Understanding Addressing and Topology - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    -
    Addressing Format: Understanding Addressing and Topology
    +
    Addressing Format: Understanding Addressing and Topology
    -

    -

    An overview of addressing in RF24Network

    -

    +

    An overview of addressing in RF24Network

    +

    Overview

    The nrf24 radio modules typically use a 40-bit address format, requiring 5-bytes of storage space per address, and allowing a wide array of addresses to be utilized. In addition, the radios are limited to direct communication with 6 other nodes while using the Enhanced-Shock-Burst (ESB) functionality of the radios.

    -

    The NRF52x modules use a similar format for addressing, but can communicate directly with 8 other nodes while using the Enhanced-Shock-Burst (ESB) functionality of the radios.

    -

    RF24Network uses a simple method of data compression to store the addresses using only 2 bytes, in a format designed to represent the network topology in an intuitive way. See the Topology and Overview page for more info regarding topology.

    -

    +

    RF24Network uses a simple method of data compression to store the addresses using only 2 bytes, in a format designed to represent the network topology in an intuitive way. See the Topology and Overview page for more info regarding topology.

    +

    Decimal, Octal and Binary formats

    Say we want to designate a logical address to a node, using a tree topology as defined by the manufacturer. In the simplest format, we could assign the first node the address of 1, the second 2, and so on. Since a single node can only connect to 6 other nodes (1 parent and 5 children) subnets need to be created if using more than 6 nodes. In this case, the

    • children of node 1 could simply be designated as 11, 21, 31, 41, and 51
    • children of node 2 could be designated as 12, 22, 32, 42, and 52
    -

    The above example is exactly how RF24Network manages the addresses, but they are represented in Octal format.

    -

    -Available Addresses

    -

    RF24Network supports various configurations, but by default has multicast enabled. This means one additional pipe is taken up on each node for multicasting. The master node will support 5 nodes (01 through 05) and 1 multicast address, while the nodes themselves will support 4 nodes (01n to 04n etc), 1 multicast address and 1 parent pipe. Users can edit RF24Network_config.h and comment out #define RF24NetworkMulticast as well. This allows the master to support 5 children, with nodes supporting 5 children also. See the Topology and Overview page for more info regarding topology.

    -

    With the newer NRF52x devices, the master node will support 7 nodes (01 through 07) and 1 multicast address, while the nodes themselves support 6 nodes (01n to 06n etc), 1 multicast address and 1 parent pipe.

    -

    +

    The above example is exactly how RF24Network manages the addresses, but they are represented in Octal format.

    +

    Decimal, Octal and Binary

    @@ -136,7 +113,7 @@

    111 0157 01101111

    Since the numbers 0-7 can be represented in exactly three bits, each digit is represented by exactly 3 bits when viewed in octal format. This allows a very simple method of managing addresses via masking and bit shifting.

    -

    +

    Displaying Addresses

    When using Arduino devices, octal addresses can be printed in the following manner:

    uint16_t address = 0111;
    @@ -146,15 +123,14 @@

    printf("0%o\n", address);

    See also

    -
    diff --git a/md_docs_2advanced__config.html b/md_docs_advanced_config.html similarity index 65% rename from md_docs_2advanced__config.html rename to md_docs_advanced_config.html index eac2f269..78a6990a 100644 --- a/md_docs_2advanced__config.html +++ b/md_docs_advanced_config.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Advanced Configuration - +Newly Optimized RF24Network Layer: Advanced Configuration - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    -
    Advanced Configuration
    +
    Advanced Configuration
    -

    -

    RF24Network offers many features, some of which can be configured by editing the RF24Network_config.h file

    +

    RF24Network offers many features, some of which can be configured by editing the RF24Network_config.h file

    +See RF24Network::multicastRelay @@ -109,18 +92,13 @@ - - - - - +
    Configuration Option Description
    #define RF24NetworkMulticast This option allows nodes to send and receive multicast payloads.
    Nodes with multicast enabled can also be configured to relay multicast payloads on to further multicast levels.
    -See ESBNetwork::multicastRelay
    #define DISABLE_FRAGMENTATION Fragmentation is enabled by default, and uses an additional 144 bytes of memory.
    #define ENABLE_SLEEP_MODE Uncomment this option to enable sleep mode for AVR devices. (ATTiny,Uno, etc)
    #define ENABLE_NETWORK_STATS Enable counting of all successful or failed transmissions, routed or sent directly
    #define NUM_PIPES Define the number of pipes for addressing. The max value is generally hardware dependant. NRF24 supports 6 pipes, NRF52x supports 8 pipes
    #define MAX_FRAME_SIZE Found in RF24Network.h, this allows users to set the maximum frame size used internally. NRF24 supports 32-bytes, NRF52x supports 123-bytes, or 111 if encryption is enabled
    #define ENABLE_NETWORK_STATS Enable counting of all successful or failed transmissions, routed or sent directly
    -
    diff --git a/md_docs_2tuning.html b/md_docs_tuning.html similarity index 62% rename from md_docs_2tuning.html rename to md_docs_tuning.html index fbe4adb7..767635c3 100644 --- a/md_docs_2tuning.html +++ b/md_docs_tuning.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Performance and Data Loss: Tuning the Network - +Newly Optimized RF24Network Layer: Performance and Data Loss: Tuning the Network - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    -
    Performance and Data Loss: Tuning the Network
    +
    Performance and Data Loss: Tuning the Network
    -

    -

    Tips and examples for tuning the network and general operation.

    +

    Tips and examples for tuning the network and general operation.

    Observe:

    @image html images/topologyImage.jpg width=70% height=70%

    -

    +

    Understanding Radio Communication and Topology

    When a transmission takes place from one radio module to another, the receiving radio will communicate back to the sender with an acknowledgement (ACK) packet, to indicate success. If the sender does not receive an ACK, the radio automatically engages in a series of timed retries, at set intervals. The radios use techniques like addressing and numbering of payloads to manage this, but it is all done automatically by the nrf chip, out of sight from the user.

    When working over a radio network, some of these automated techniques can actually hinder data transmission to a degree. Retrying failed payloads over and over on a radio network can hinder communication for nearby nodes, or reduce throughput and errors on routing nodes.

    -

    Radios in this network are linked by addresses assigned to pipes. Each radio can listen to 6 addresses on 6 pipes, (8 pipes on NRF52x) therefore each radio has a parent pipe and 4-5 child pipes, which are used to form a tree structure. Nodes communicate directly with their parent and children nodes. Any other traffic to or from a node must be routed through the network.

    -

    +

    Radios in this network are linked by addresses assigned to pipes. Each radio can listen to 6 addresses on 6 pipes, therefore each radio has a parent pipe and 4-5 child pipes, which are used to form a tree structure. Nodes communicate directly with their parent and children nodes. Any other traffic to or from a node must be routed through the network.

    +

    Topology of RF24Network

    -

    Anybody who is familiar at all with IP networking should be able to easily understand RF24Network topology. The master node can be seen as the gateway, with (by default) up to 5 directly connected nodes. Each of those nodes creates a subnet below it, with up to 4 additional child nodes. The numbering scheme can also be related to IP addresses, for purposes of understanding the topology via subnetting. Nodes can have 5 children if multicast is disabled.

    -

    +

    Anybody who is familiar at all with IP networking should be able to easily understand RF24Network topology. The master node can be seen as the gateway, with up to 4 directly connected nodes. Each of those nodes creates a subnet below it, with up to 4 additional child nodes. The numbering scheme can also be related to IP addresses, for purposes of understanding the topology via subnetting. Nodes can have 5 children if multicast is disabled.

    +

    Expressing RF24Network addresses in IP format

    As an example, we could designate the master node in theory, as Address 10.10.10.10

    • The children nodes of the master would be 10.10.10.1, 10.10.10.2, 10.10.10.3, 10.10.10.4 and 10.10.10.5
    • The children nodes of 10.10.10.1 would be 10.10.1.1, 10.10.2.1, 10.10.3.1, 10.10.4.1 and 10.10.5.1
    -

    In RF24Network, the master is just 00

    +

    In RF24Network, the master is just 00

    • Children of master are 01, 02, 03, 04, 05
    • Children of 01 are 011, 021, 031, 041, 051
    -

    +

    Multicast

    -

    Multicast is enabled by default, which limits the master node to 5 child pipes and other nodes to 4 when using RF24 modules. Nodes are arranged in multicast 'levels' with the master node being level 0, nodes 01-05 are level 1, nodes n1-n5 are level 2, and so on. The multicast level of each node can be configured as desired by the user, or multicast can be disabled by editing RF24Network_config.h. For example, if all nodes are in range of the master node, all nodes can be configured to use multicast level 1, allowing the master node to contact all of them by sending a single payload. Multicasting is also used by the RF24Mesh layer for dynamic addressing requests.

    -

    +

    Multicast is enabled by default, which limits the master node to 5 child pipes and other nodes to 4. Nodes are arranged in multicast 'levels' with the master node being level 0, nodes 01-05 are level 1, nodes n1-n5 are level 2, and so on. The multicast level of each node can be configured as desired by the user, or multicast can be disabled by editing RF24Network_config.h. For example, if all nodes are in range of the master node, all nodes can be configured to use multicast level 1, allowing the master node to contact all of them by sending a single payload. Multicasting is also used by the RF24Mesh layer for dynamic addressing requests.

    +

    Routing

    -

    Routing of traffic is handled invisibly to the user, by the network layer. If the network addresses are assigned in accordance with the physical layout of the network, nodes will route traffic automatically as required. Users simply construct a header containing the appropriate destination address, and the network will forward it through to the correct node. Individual nodes only route individual fragments, so if using fragmentation, routing nodes do not need it enabled, unless sending or receiving fragmented payloads themselves.

    +

    Routing of traffic is handled invisibly to the user, by the network layer. If the network addresses are assigned in accordance with the physical layout of the network, nodes will route traffic automatically as required. Users simply constuct a header containing the appropriate destination address, and the network will forward it through to the correct node. Individual nodes only route individual fragments, so if using fragmentation, routing nodes do not need it enabled, unless sending or receiving fragmented payloads themselves.

    If routing data between parent and child nodes (marked by direct links on the topology image above) the network uses built-in acknowledgement and retry functions of the chip to prevent data loss. When payloads are sent to other nodes, they need to be routed. Routing is managed using a combination of built in ACK requests, and software driven network ACKs. This allows all routing nodes to forward data very quickly, with only the final routing node confirming delivery and sending back an acknowledgement.

    Example: Node 00 sends to node 01. The nodes will use the built in auto-retry and auto-ack functions.

    Example: Node 00 sends to node 011. Node 00 will send to node 01 as before. Node 01 will forward the message to 011. If delivery was successful, node 01 will also forward a message back to node 00, indicating success.

    Old Functionality: Node 00 sends to node 011 using auto-ack. Node 00 first sends to 01, 01 acknowledges. Node 01 forwards the payload to 011 using auto-ack. If the payload fails between 01 and 011, node 00 has no way of knowing.

    Note
    When retrying failed payloads that have been routed, there is a chance of duplicate payloads if the network-ack is not successful. In this case, it is left up to the user to manage retries and filtering of duplicate payloads.

    Acknowledgements can and should be managed by the application or user. If requesting a response from another node, an acknowledgement is not required, so a user defined type of 0-64 should be used, to prevent the network from responding with an acknowledgement. If not requesting a response, and wanting to know if the payload was successful or not, users can utilize header types 65-127.

    -

    +

    Tuning Overview

    The RF24 radio modules are generally only capable of either sending or receiving data at any given time, but have built-in auto-retry mechanisms to prevent the loss of data. These values are adjusted automatically by the library on startup, but can be further adjusted to reduce data loss, and thus increase throughput of the network. This page is intended to provide a general overview of its operation within the context of the network library, and provide guidance for adjusting these values.

    -

    +

    Auto-Retry Timing

    The core radio library provides the functionality of adjusting the internal auto-retry interval of the radio modules. In the network configuration, the radios can be set to automatically retry failed transmissions at intervals ranging anywhere from 500us (0.5ms) up to 4000us (4ms). When operating any number of radios larger than two, it is important to stagger the assigned intervals, to prevent the radios from interfering with each other at the radio frequency (RF) layer.

    The library should provide fairly good working values, as it simply staggers the assigned values within groups of radios in direct communication. This value can be set manually by calling radio.setRetries(X, 15); and adjusting the value of X from 1 to 15 (steps of 250us).

    -

    +

    Auto-Retry Count and Extended Timeouts

    -

    The core radio library also provides the ability to adjust the internal auto-retry count of the radio modules. The default setting is 15 automatic retries per payload, and can be extended by configuring the network.txTimeout variable. This default retry count should generally be left at 15, as per the example in the above section. An interval/retry setting of (15,15) will provide 15 retries at intervals of 4ms, taking up to 60ms per payload. The library now provides staggered timeout periods by default, but they can also be adjusted on a per-node basis.

    +

    The core radio library also provides the ability to adjust the internal auto-retry count of the radio modules. The default setting is 15 automatic retries per payload, and can be extended by configuring the network.txTimeout variable. This default retry count should generally be left at 15, as per the example in the above section. An interval/retry setting of (15,15) will provide 15 retrys at intervals of 4ms, taking up to 60ms per payload. The library now provides staggered timeout periods by default, but they can also be adjusted on a per-node basis.

    The txTimeout variable is used to extend the retry count to a defined duration in milliseconds. See the network.txTimeout variable. Timeout periods of extended duration (500+) will generally not help when payloads are failing due to data collisions, it will only extend the duration of the errors. Extended duration timeouts should generally only be configured on leaf nodes that do not receive data.

    -

    -Usage with NRF52x devices

    -
      -
    1. Users can utilize large payloads by calling radio.begin(); then radio.enableDynamicPayloads(123); prior to calling network.begin();. Users would also need to edit RF24Network.h and set MAX_FRAME_SIZE to a maximum of 111 if encryption is enabled, 123 without encryption.
    2. -
    3. Users can allow more nodes by modifying RF24Network_config.h and setting NUM_PIPES to 8 (Allows master to have 7 child nodes, other nodes can have 6 children by default)
    4. -
    5. The MAX_PAYLOAD_SIZE is also defined in RF24Network_config.h. Raise to a multiple of 123 to allow multiple large payloads to be cached in memory.
    6. -
    -
    See also
    -
    -

    +

    Scenarios

    -

    +

    Example 1

    Network with master node and three leaf nodes that send data to the master node. None of the leaf nodes need to receive data.

      @@ -180,7 +150,7 @@

      Leaf 03: network.txTimeout = 653;

    -

    +

    Example 2

    Network with master node and three leaf nodes that send data to the master node. The second leaf node needs to receive configuration data from the master at set intervals of 1 second, and send data back to the master node. The other leaf nodes will send basic sensor information every few seconds, and a few dropped payloads will not affect the operation greatly.

      @@ -190,14 +160,13 @@

    1. Second leaf node configured with a similar timeout period and retry delay:
      radio.setRetries(8, 15);
      network.txTimeout = 553;
    2. -
    3. First and third leaf nodes configured with default timeout periods or slightly increased timeout periods.
    4. +
    5. First and third leaf nodes configured with default timeout periods or slightly increased timout periods.
    -
    diff --git a/md_docs_2zigabee.html b/md_docs_zigabee.html similarity index 65% rename from md_docs_2zigabee.html rename to md_docs_zigabee.html index ec22c597..594de74a 100644 --- a/md_docs_2zigabee.html +++ b/md_docs_zigabee.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Comparison to ZigBee - +Newly Optimized RF24Network Layer: Comparison to ZigBee - - - - @@ -28,42 +23,32 @@ -
    Optimized RF24Network Layer v2.0.1 +
    Newly Optimized RF24Network Layer v1.0.21
    -
    2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
    +
    2020 - Optimized RF24 Network Layer for NRF24L01 radios
    - + - -
    -
    -
    Comparison to ZigBee
    +
    Comparison to ZigBee
    -

    -

    This network layer is influenced by the design of ZigBee, but does not implement it directly.

    -

    +

    This network layer is influenced by the design of ZigBee, but does not implement it directly.

    +

    Which is better?

    ZigBee is a much more robust, feature-rich set of protocols, with many different vendors providing compatible chips.

    -

    RF24Network is cheap. While ZigBee radios are well over $20, nRF24L01 modules can be found for under $2.

    -

    +

    RF24Network is cheap. While ZigBee radios are well over $20, nRF24L01 modules can be found for under $2.

    +

    Similiarities & Differences

    -

    Here are some comparisons between RF24Network and ZigBee.

    +

    Here are some comparisons between RF24Network and ZigBee.

    • Both networks support Star and Tree topologies. Only Zigbee supports a true mesh.
    • In ZigBee networks, only leaf nodes can sleep
    • ZigBee nodes are configured using AT commands, or a separate Windows application. RF24 nodes are configured by recompiliing the firmware or writing to EEPROM.
    • A paper was written comparing the performance of Zigbee vs nRF24l01+, see TMRh20s Blog for a detailed overview.
    -

    +

    Node Naming

    • Leaf node: A node at the outer edge of the network with no children. ZigBee calls it an End Device node.
    • @@ -123,8 +106,7 @@

    -

    diff --git a/menu.js b/menu.js index 0fd1e990..b0b26936 100644 --- a/menu.js +++ b/menu.js @@ -22,14 +22,15 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { function makeTree(data,relPath) { - let result=''; + var result=''; if ('children' in data) { result+='
      '; - for (let i in data.children) { - let url; - const link = data.children[i].url; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; if (link.substring(0,1)=='^') { url = link.substring(1); } else { @@ -43,7 +44,7 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { } return result; } - let searchBoxHtml; + var searchBoxHtml; if (searchEnabled) { if (serverSide) { searchBoxHtml='
      '+ @@ -87,28 +88,29 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { if (searchBoxHtml) { $('#main-menu').append('
    • '); } - const $mainMenuState = $('#main-menu-state'); - let prevWidth = 0; + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; if ($mainMenuState.length) { - const initResizableIfExists = function() { - if (typeof initResizable==='function') initResizable(treeview); + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); } // animate mobile menu - $mainMenuState.change(function() { - const $menu = $('#main-menu'); - let options = { duration: 250, step: initResizableIfExists }; + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; if (this.checked) { - options['complete'] = () => $menu.css('display', 'block'); + options['complete'] = function() { $menu.css('display', 'block') }; $menu.hide().slideDown(options); } else { - options['complete'] = () => $menu.css('display', 'none'); + options['complete'] = function() { $menu.css('display', 'none') }; $menu.show().slideUp(options); } }); // set default menu visibility - const resetState = function() { - const $menu = $('#main-menu'); - const newWidth = $(window).outerWidth(); + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); if (newWidth!=prevWidth) { if ($(window).outerWidth()<768) { $mainMenuState.prop('checked',false); $menu.hide(); diff --git a/menudata.js b/menudata.js index 2ae75c43..dc4ff9fe 100644 --- a/menudata.js +++ b/menudata.js @@ -25,7 +25,7 @@ var menudata={children:[ {text:"Main Page",url:"index.html"}, {text:"Related Pages",url:"pages.html"}, -{text:"Topics",url:"topics.html"}, +{text:"Modules",url:"modules.html"}, {text:"Classes",url:"annotated.html",children:[ {text:"Class List",url:"annotated.html"}, {text:"Class Index",url:"classes.html"}, @@ -60,7 +60,6 @@ var menudata={children:[ {text:"s",url:"globals.html#index_s"}, {text:"t",url:"globals.html#index_t"}, {text:"u",url:"globals.html#index_u"}]}, -{text:"Typedefs",url:"globals_type.html"}, {text:"Macros",url:"globals_defs.html",children:[ {text:"e",url:"globals_defs.html#index_e"}, {text:"f",url:"globals_defs.html#index_f"}, diff --git a/minus.svg b/minus.svg deleted file mode 100644 index f70d0c1a..00000000 --- a/minus.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/minusd.svg b/minusd.svg deleted file mode 100644 index 5f8e8796..00000000 --- a/minusd.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/topics.html b/modules.html similarity index 65% rename from topics.html rename to modules.html index cdd16c7f..d5972439 100644 --- a/topics.html +++ b/modules.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Topics - +Newly Optimized RF24Network Layer: Modules - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      -
      -
      Topics
      +
      Modules
      -
      Here is a list of all topics with brief descriptions:
      +
      Here is a list of all modules:
       Reserved System Message Types
      @@ -99,8 +83,7 @@
      -
      diff --git a/navtree.css b/navtree.css deleted file mode 100644 index 69211d4a..00000000 --- a/navtree.css +++ /dev/null @@ -1,149 +0,0 @@ -#nav-tree .children_ul { - margin:0; - padding:4px; -} - -#nav-tree ul { - list-style:none outside none; - margin:0px; - padding:0px; -} - -#nav-tree li { - white-space:nowrap; - margin:0px; - padding:0px; -} - -#nav-tree .plus { - margin:0px; -} - -#nav-tree .selected { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: var(--nav-text-active-color); - text-shadow: var(--nav-text-active-shadow); -} - -#nav-tree .selected .arrow { - color: var(--nav-arrow-selected-color); - text-shadow: none; -} - -#nav-tree img { - margin:0px; - padding:0px; - border:0px; - vertical-align: middle; -} - -#nav-tree a { - text-decoration:none; - padding:0px; - margin:0px; -} - -#nav-tree .label { - margin:0px; - padding:0px; - font: 12px var(--font-family-nav); -} - -#nav-tree .label a { - padding:2px; -} - -#nav-tree .selected a { - text-decoration:none; - color:var(--nav-text-active-color); -} - -#nav-tree .children_ul { - margin:0px; - padding:0px; -} - -#nav-tree .item { - margin:0px; - padding:0px; -} - -#nav-tree { - padding: 0px 0px; - font-size:14px; - overflow:auto; -} - -#doc-content { - overflow:auto; - display:block; - padding:0px; - margin:0px; - -webkit-overflow-scrolling : touch; /* iOS 5+ */ -} - -#side-nav { - padding:0 6px 0 0; - margin: 0px; - display:block; - position: absolute; - left: 0px; - width: $width; - overflow : hidden; -} - -.ui-resizable .ui-resizable-handle { - display:block; -} - -.ui-resizable-e { - background-image:var(--nav-splitbar-image); - background-size:100%; - background-repeat:repeat-y; - background-attachment: scroll; - cursor:ew-resize; - height:100%; - right:0; - top:0; - width:6px; -} - -.ui-resizable-handle { - display:none; - font-size:0.1px; - position:absolute; - z-index:1; -} - -#nav-tree-contents { - margin: 6px 0px 0px 0px; -} - -#nav-tree { - background-repeat:repeat-x; - background-color: var(--nav-background-color); - -webkit-overflow-scrolling : touch; /* iOS 5+ */ -} - -#nav-sync { - position:absolute; - top:5px; - right:24px; - z-index:0; -} - -#nav-sync img { - opacity:0.3; -} - -#nav-sync img:hover { - opacity:0.9; -} - -@media print -{ - #nav-tree { display: none; } - div.ui-resizable-handle { display: none; position: relative; } -} - diff --git a/new_favicon.ico b/new_favicon.ico deleted file mode 100644 index c15a1650..00000000 Binary files a/new_favicon.ico and /dev/null differ diff --git a/pages.html b/pages.html index f3c3c105..27b0e4b2 100644 --- a/pages.html +++ b/pages.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Related Pages - +Newly Optimized RF24Network Layer: Related Pages - - - - @@ -28,44 +23,33 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + -
      -
      - -
      diff --git a/plus.svg b/plus.svg deleted file mode 100644 index 07520165..00000000 --- a/plus.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/plusd.svg b/plusd.svg deleted file mode 100644 index 0c65bfe9..00000000 --- a/plusd.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/resize.js b/resize.js deleted file mode 100644 index 7d8cdc7d..00000000 --- a/resize.js +++ /dev/null @@ -1,145 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ - -function initResizable(treeview) { - let sidenav,navtree,content,header,footer,barWidth=6; - const RESIZE_COOKIE_NAME = ''+'width'; - - function resizeWidth() { - const sidenavWidth = $(sidenav).outerWidth(); - content.css({marginLeft:parseInt(sidenavWidth)+"px"}); - if (typeof page_layout!=='undefined' && page_layout==1) { - footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); - } - Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); - } - - function restoreWidth(navWidth) { - content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); - if (typeof page_layout!=='undefined' && page_layout==1) { - footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); - } - sidenav.css({width:navWidth + "px"}); - } - - function resizeHeight(treeview) { - const headerHeight = header.outerHeight(); - const windowHeight = $(window).height(); - let contentHeight; - if (treeview) - { - const footerHeight = footer.outerHeight(); - let navtreeHeight,sideNavHeight; - if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ - contentHeight = windowHeight - headerHeight - footerHeight; - navtreeHeight = contentHeight; - sideNavHeight = contentHeight; - } else if (page_layout==1) { /* DISABLE_INDEX=YES */ - contentHeight = windowHeight - footerHeight; - navtreeHeight = windowHeight - headerHeight; - sideNavHeight = windowHeight; - } - navtree.css({height:navtreeHeight + "px"}); - sidenav.css({height:sideNavHeight + "px"}); - } - else - { - contentHeight = windowHeight - headerHeight; - } - content.css({height:contentHeight + "px"}); - if (location.hash.slice(1)) { - (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); - } - } - - function collapseExpand() { - let newWidth; - if (sidenav.width()>0) { - newWidth=0; - } else { - const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); - newWidth = (width>250 && width<$(window).width()) ? width : 250; - } - restoreWidth(newWidth); - const sidenavWidth = $(sidenav).outerWidth(); - Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); - } - - header = $("#top"); - content = $("#doc-content"); - footer = $("#nav-path"); - sidenav = $("#side-nav"); - if (!treeview) { -// title = $("#titlearea"); -// titleH = $(title).height(); -// let animating = false; -// content.on("scroll", function() { -// slideOpts = { duration: 200, -// step: function() { -// contentHeight = $(window).height() - header.outerHeight(); -// content.css({ height : contentHeight + "px" }); -// }, -// done: function() { animating=false; } -// }; -// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { -// title.slideUp(slideOpts); -// animating=true; -// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { -// title.slideDown(slideOpts); -// animating=true; -// } -// }); - } else { - navtree = $("#nav-tree"); - $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); - $(sidenav).resizable({ minWidth: 0 }); - } - $(window).resize(function() { resizeHeight(treeview); }); - if (treeview) - { - const device = navigator.userAgent.toLowerCase(); - const touch_device = device.match(/(iphone|ipod|ipad|android)/); - if (touch_device) { /* wider split bar for touch only devices */ - $(sidenav).css({ paddingRight:'20px' }); - $('.ui-resizable-e').css({ width:'20px' }); - $('#nav-sync').css({ right:'34px' }); - barWidth=20; - } - const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); - if (width) { restoreWidth(width); } else { resizeWidth(); } - } - resizeHeight(treeview); - const url = location.href; - const i=url.indexOf("#"); - if (i>=0) window.location.hash=url.substr(i); - const _preventDefault = function(evt) { evt.preventDefault(); }; - if (treeview) - { - $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); - $(".ui-resizable-handle").dblclick(collapseExpand); - } - $(window).on('load',resizeHeight); -} -/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js index 895db538..bac3e1f6 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['1_0',['Example 1',['../md_docs_2tuning.html#autotoc_md31',1,'']]] + ['_5fmulticast_5flevel_0',['_multicast_level',['../classRF24Network.html#a5b89e48e46eebb615b2ef152f057aca7',1,'RF24Network']]] ]; diff --git a/search/all_1.js b/search/all_1.js index ff67fd2f..f3a55d81 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -1,5 +1,9 @@ var searchData= [ - ['2_0',['Example 2',['../md_docs_2tuning.html#autotoc_md32',1,'']]], - ['2023_20api_20changes_1',['News - 2023 API Changes',['../index.html#autotoc_md9',1,'']]] + ['addressing_20format_3a_20understanding_20addressing_20and_20topology_0',['Addressing Format: Understanding Addressing and Topology',['../md_docs_addressing.html',1,'']]], + ['addressing_2emd_1',['addressing.md',['../addressing_8md.html',1,'']]], + ['addressofpipe_2',['addressOfPipe',['../classRF24Network.html#aa4a11edb3860f4a0e3808bccad36a5dc',1,'RF24Network']]], + ['advanced_20configuration_3',['Advanced Configuration',['../md_docs_advanced_config.html',1,'']]], + ['advanced_5fconfig_2emd_4',['advanced_config.md',['../advanced__config_8md.html',1,'']]], + ['available_5',['available',['../classRF24Network.html#a0e111e70bb7b95d885983ce92c89159e',1,'RF24Network']]] ]; diff --git a/search/all_10.js b/search/all_10.js index d1b97253..66679aad 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -1,9 +1,4 @@ var searchData= [ - ['parent_0',['parent',['../classESBNetwork.html#aee407cd116e3157f6e81a191e8e46a0a',1,'ESBNetwork']]], - ['peek_1',['peek',['../classESBNetwork.html#aaab290edc4485315a36de4c9e17a4134',1,'ESBNetwork::peek(RF24NetworkHeader &header)'],['../classESBNetwork.html#a583d2e7096d502e97b5e9b12d935f711',1,'ESBNetwork::peek(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)']]], - ['performance_20and_20data_20loss_3a_20tuning_20the_20network_2',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['provide_3',['The layer does not provide',['../index.html#autotoc_md12',1,'']]], - ['provides_4',['The layer provides',['../index.html#autotoc_md11',1,'']]], - ['purpose_20goal_5',['Purpose/Goal',['../index.html#autotoc_md8',1,'']]] + ['write_0',['write',['../classRF24Network.html#ac8e9571bb3d2c20d00955b8f5c15b541',1,'RF24Network::write(RF24NetworkHeader &header, const void *message, uint16_t len)'],['../classRF24Network.html#a3d99643014071fef706c0320c8011648',1,'RF24Network::write(RF24NetworkHeader &header, const void *message, uint16_t len, uint16_t writeDirect)']]] ]; diff --git a/search/all_11.js b/search/all_11.js index f4a11db6..6641c200 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -1,23 +1,4 @@ var searchData= [ - ['radio_20communication_20and_20topology_0',['Understanding Radio Communication and Topology',['../md_docs_2tuning.html#autotoc_md21',1,'']]], - ['radios_1',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['read_2',['read',['../classESBNetwork.html#ad3959000f609c598f9b98106f3f85f7b',1,'ESBNetwork']]], - ['reserved_3',['reserved',['../structRF24NetworkHeader.html#a80672a22cedcf24db8abbcef2eea9cfd',1,'RF24NetworkHeader']]], - ['reserved_20system_20message_20types_4',['Reserved System Message Types',['../group__DEFINED__TYPES.html',1,'']]], - ['retry_20count_20and_20extended_20timeouts_5',['Auto-Retry Count and Extended Timeouts',['../md_docs_2tuning.html#autotoc_md28',1,'']]], - ['retry_20timing_6',['Auto-Retry Timing',['../md_docs_2tuning.html#autotoc_md27',1,'']]], - ['returnsysmsgs_7',['returnSysMsgs',['../classESBNetwork.html#a38f2b8e2665e9512e6953992cf08888f',1,'ESBNetwork']]], - ['rf24_20radios_8',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['rf24network_9',['RF24Network',['../RF24Network_8h.html#a014b0acbf07d381d57645ae9153288b6',1,'RF24Network: RF24Network.h'],['../md_docs_2tuning.html#autotoc_md22',1,'Topology of RF24Network']]], - ['rf24network_20addresses_20in_20ip_20format_10',['Expressing RF24Network addresses in IP format',['../md_docs_2tuning.html#autotoc_md23',1,'']]], - ['rf24network_2ecpp_11',['RF24Network.cpp',['../RF24Network_8cpp.html',1,'']]], - ['rf24network_2eh_12',['RF24Network.h',['../RF24Network_8h.html',1,'']]], - ['rf24network_5fconfig_2eh_13',['RF24Network_config.h',['../RF24Network__config_8h.html',1,'']]], - ['rf24networkframe_14',['RF24NetworkFrame',['../structRF24NetworkFrame.html',1,'RF24NetworkFrame'],['../structRF24NetworkFrame.html#af6598f176be18e6c64173627674672f2',1,'RF24NetworkFrame::RF24NetworkFrame()'],['../structRF24NetworkFrame.html#a184eb90d3503111aada5f54f66ed88fb',1,'RF24NetworkFrame::RF24NetworkFrame(RF24NetworkHeader &_header, const void *_message=NULL, uint16_t _len=0)'],['../structRF24NetworkFrame.html#a057d001f6896cb43d55619f73c8f43b6',1,'RF24NetworkFrame::RF24NetworkFrame(RF24NetworkHeader &_header, uint16_t _message_size)']]], - ['rf24networkheader_15',['RF24NetworkHeader',['../structRF24NetworkHeader.html',1,'RF24NetworkHeader'],['../structRF24NetworkHeader.html#aacf67806892c3bbcacfbff2554b64fd5',1,'RF24NetworkHeader::RF24NetworkHeader()'],['../structRF24NetworkHeader.html#a99e675f31589d72cf2fe036e77988026',1,'RF24NetworkHeader::RF24NetworkHeader(uint16_t _to, unsigned char _type=0)']]], - ['rf24networkmulticast_16',['RF24NetworkMulticast',['../RF24Network__config_8h.html#afa838938e02d347e06289d76ed8f2bf0',1,'RF24Network_config.h']]], - ['routetimeout_17',['routeTimeout',['../classESBNetwork.html#a657d583b2f6ae0ec61a6fa771431470a',1,'ESBNetwork']]], - ['routing_18',['Routing',['../md_docs_2tuning.html#autotoc_md25',1,'']]], - ['routing_20is_20handled_19',['How routing is handled',['../index.html#autotoc_md17',1,'']]] + ['zigabee_2emd_0',['zigabee.md',['../zigabee_8md.html',1,'']]] ]; diff --git a/search/all_12.js b/search/all_12.js deleted file mode 100644 index c693c676..00000000 --- a/search/all_12.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['scenarios_0',['Scenarios',['../md_docs_2tuning.html#autotoc_md30',1,'']]], - ['setup_5fwatchdog_1',['setup_watchdog',['../classESBNetwork.html#a77a3c8cc72b0c5e073501ef5f3744591',1,'ESBNetwork']]], - ['similiarities_20differences_2',['Similiarities & Differences',['../md_docs_2zigabee.html#autotoc_md35',1,'']]], - ['sleepnode_3',['sleepNode',['../classESBNetwork.html#a2d92a9ed0c845df12dc4180356955ad8',1,'ESBNetwork']]], - ['slow_5faddr_5fpoll_5fresponse_4',['SLOW_ADDR_POLL_RESPONSE',['../RF24Network__config_8h.html#aff1e5ff5e11dd91d16cc45b8f73d2e94',1,'RF24Network_config.h']]], - ['starting_20up_20a_20node_5',['Starting up a node',['../index.html#autotoc_md18',1,'']]], - ['system_20message_20types_6',['Reserved System Message Types',['../group__DEFINED__TYPES.html',1,'']]] -]; diff --git a/search/all_13.js b/search/all_13.js deleted file mode 100644 index 72ee373a..00000000 --- a/search/all_13.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['the_20layer_20does_20not_20provide_0',['The layer does not provide',['../index.html#autotoc_md12',1,'']]], - ['the_20layer_20provides_1',['The layer provides',['../index.html#autotoc_md11',1,'']]], - ['the_20network_2',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['timeouts_3',['Auto-Retry Count and Extended Timeouts',['../md_docs_2tuning.html#autotoc_md28',1,'']]], - ['timing_4',['Auto-Retry Timing',['../md_docs_2tuning.html#autotoc_md27',1,'']]], - ['to_20learn_20more_5',['How to learn more',['../index.html#autotoc_md13',1,'']]], - ['to_20zigbee_6',['Comparison to ZigBee',['../md_docs_2zigabee.html',1,'']]], - ['to_5fnode_7',['to_node',['../structRF24NetworkHeader.html#adb8d6d05bb359b4b89322d15055e73a1',1,'RF24NetworkHeader']]], - ['topology_8',['Topology',['../md_docs_2addressing.html',1,'Addressing Format: Understanding Addressing and Topology'],['../index.html#autotoc_md16',1,'Octal Addressing and Topology'],['../md_docs_2tuning.html#autotoc_md21',1,'Understanding Radio Communication and Topology']]], - ['topology_20for_20mesh_20networks_20using_20nrf24l01_9',['Topology for Mesh Networks using nRF24L01(+)',['../index.html#autotoc_md15',1,'']]], - ['topology_20of_20rf24network_10',['Topology of RF24Network',['../md_docs_2tuning.html#autotoc_md22',1,'']]], - ['tostring_11',['toString',['../structRF24NetworkHeader.html#a70efc9fd32fd3f73a98d96f57c04c815',1,'RF24NetworkHeader']]], - ['tuning_20overview_12',['Tuning Overview',['../md_docs_2tuning.html#autotoc_md26',1,'']]], - ['tuning_20the_20network_13',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['tuning_2emd_14',['tuning.md',['../tuning_8md.html',1,'']]], - ['tx_5fnormal_15',['TX_NORMAL',['../RF24Network_8h.html#ad0da85e1332b474b17de9b77d580bd73',1,'RF24Network.h']]], - ['tx_5frouted_16',['TX_ROUTED',['../RF24Network_8h.html#aea221535d8326d4ea6a483c9715a5d0c',1,'RF24Network.h']]], - ['txtimeout_17',['txTimeout',['../classESBNetwork.html#a93188f3c0600e0b5f0e3d5e57eb86513',1,'ESBNetwork']]], - ['type_18',['type',['../structRF24NetworkHeader.html#ac99ab14e561670f4445d1fea7775e2db',1,'RF24NetworkHeader']]], - ['types_19',['Reserved System Message Types',['../group__DEFINED__TYPES.html',1,'']]] -]; diff --git a/search/all_14.js b/search/all_14.js deleted file mode 100644 index a7eda351..00000000 --- a/search/all_14.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['understanding_20addressing_20and_20topology_0',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['understanding_20radio_20communication_20and_20topology_1',['Understanding Radio Communication and Topology',['../md_docs_2tuning.html#autotoc_md21',1,'']]], - ['up_20a_20node_2',['Starting up a node',['../index.html#autotoc_md18',1,'']]], - ['update_3',['update',['../classESBNetwork.html#a828adf45c3b8a82b08644510f29a32d3',1,'ESBNetwork']]], - ['usage_20with_20nrf52x_20devices_4',['Usage with NRF52x devices',['../md_docs_2tuning.html#autotoc_md29',1,'']]], - ['use_5fcurrent_5fchannel_5',['USE_CURRENT_CHANNEL',['../RF24Network_8h.html#a3701f6ea99dcf399641f2ad29303f8cc',1,'RF24Network.h']]], - ['user_5ftx_5fmulticast_6',['USER_TX_MULTICAST',['../RF24Network_8h.html#ae2f8b695f040aa6f1e8ec92b438aa303',1,'RF24Network.h']]], - ['user_5ftx_5fto_5flogical_5faddress_7',['USER_TX_TO_LOGICAL_ADDRESS',['../RF24Network_8h.html#a4726586dd8fbf75bbfffffd18ebdbeb3',1,'RF24Network.h']]], - ['user_5ftx_5fto_5fphysical_5faddress_8',['USER_TX_TO_PHYSICAL_ADDRESS',['../RF24Network_8h.html#afbef4cc504fbd93102265ff8d01cbafc',1,'RF24Network.h']]], - ['using_20nrf24l01_9',['Topology for Mesh Networks using nRF24L01(+)',['../index.html#autotoc_md15',1,'']]] -]; diff --git a/search/all_15.js b/search/all_15.js deleted file mode 100644 index 874c5e98..00000000 --- a/search/all_15.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['which_20is_20better_0',['Which is better?',['../md_docs_2zigabee.html#autotoc_md34',1,'']]], - ['with_20nrf52x_20devices_1',['Usage with NRF52x devices',['../md_docs_2tuning.html#autotoc_md29',1,'']]], - ['write_2',['write',['../classESBNetwork.html#af53965174dcc8f7bdbec70046f5e72bf',1,'ESBNetwork::write(RF24NetworkHeader &header, const void *message, uint16_t len)'],['../classESBNetwork.html#a1170b3e9e3c606daf17d1be45c9497db',1,'ESBNetwork::write(RF24NetworkHeader &header, const void *message, uint16_t len, uint16_t writeDirect)']]] -]; diff --git a/search/all_16.js b/search/all_16.js deleted file mode 100644 index 984e9a07..00000000 --- a/search/all_16.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['zigabee_2emd_0',['zigabee.md',['../zigabee_8md.html',1,'']]], - ['zigbee_1',['Comparison to ZigBee',['../md_docs_2zigabee.html',1,'']]] -]; diff --git a/search/all_2.js b/search/all_2.js index 5730c80e..65b80bf8 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['_5fmulticast_5flevel_0',['_multicast_level',['../classESBNetwork.html#aab52703c149001e4d3e1ae7c8311f8e0',1,'ESBNetwork']]] + ['begin_0',['begin',['../classRF24Network.html#aad6a74b55514a26e95e20eaa6a093a0b',1,'RF24Network::begin(uint16_t _node_address)'],['../classRF24Network.html#abf0da46b2e78b2010171c9f20cba8bae',1,'RF24Network::begin(uint8_t _channel, uint16_t _node_address)']]] ]; diff --git a/search/all_3.js b/search/all_3.js index 382c96e1..0c108180 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -1,24 +1,8 @@ var searchData= [ - ['a_20node_0',['Starting up a node',['../index.html#autotoc_md18',1,'']]], - ['add_20ons_1',['Additional Information & Add-ons',['../index.html#autotoc_md14',1,'']]], - ['additional_20information_20add_20ons_2',['Additional Information & Add-ons',['../index.html#autotoc_md14',1,'']]], - ['addresses_3',['Addresses',['../md_docs_2addressing.html#autotoc_md3',1,'Available Addresses'],['../md_docs_2addressing.html#autotoc_md5',1,'Displaying Addresses']]], - ['addresses_20in_20ip_20format_4',['Expressing RF24Network addresses in IP format',['../md_docs_2tuning.html#autotoc_md23',1,'']]], - ['addressing_20and_20topology_5',['Addressing and Topology',['../md_docs_2addressing.html',1,'Addressing Format: Understanding Addressing and Topology'],['../index.html#autotoc_md16',1,'Octal Addressing and Topology']]], - ['addressing_20format_3a_20understanding_20addressing_20and_20topology_6',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['addressing_2emd_7',['addressing.md',['../addressing_8md.html',1,'']]], - ['addressofpipe_8',['addressOfPipe',['../classESBNetwork.html#aac2bef365c0cf9e4b12492f36d163ed8',1,'ESBNetwork']]], - ['advanced_20configuration_9',['Advanced Configuration',['../md_docs_2advanced__config.html',1,'']]], - ['advanced_5fconfig_2emd_10',['advanced_config.md',['../advanced__config_8md.html',1,'']]], - ['and_20binary_11',['Decimal, Octal and Binary',['../md_docs_2addressing.html#autotoc_md4',1,'']]], - ['and_20binary_20formats_12',['Decimal, Octal and Binary formats',['../md_docs_2addressing.html#autotoc_md2',1,'']]], - ['and_20data_20loss_3a_20tuning_20the_20network_13',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['and_20extended_20timeouts_14',['Auto-Retry Count and Extended Timeouts',['../md_docs_2tuning.html#autotoc_md28',1,'']]], - ['and_20topology_15',['and Topology',['../md_docs_2addressing.html',1,'Addressing Format: Understanding Addressing and Topology'],['../index.html#autotoc_md16',1,'Octal Addressing and Topology'],['../md_docs_2tuning.html#autotoc_md21',1,'Understanding Radio Communication and Topology']]], - ['api_20changes_16',['News - 2023 API Changes',['../index.html#autotoc_md9',1,'']]], - ['auto_20retry_20count_20and_20extended_20timeouts_17',['Auto-Retry Count and Extended Timeouts',['../md_docs_2tuning.html#autotoc_md28',1,'']]], - ['auto_20retry_20timing_18',['Auto-Retry Timing',['../md_docs_2tuning.html#autotoc_md27',1,'']]], - ['available_19',['available',['../classESBNetwork.html#a40bcc2562b1faf1c72eccf52efa1f5cd',1,'ESBNetwork']]], - ['available_20addresses_20',['Available Addresses',['../md_docs_2addressing.html#autotoc_md3',1,'']]] + ['changelog_0',['Changelog',['../md_CHANGELOG.html',1,'']]], + ['changelog_2emd_1',['CHANGELOG.md',['../CHANGELOG_8md.html',1,'']]], + ['comparison_20to_20zigbee_2',['Comparison to ZigBee',['../md_docs_zigabee.html',1,'']]], + ['contributing_3',['CONTRIBUTING',['../md_CONTRIBUTING.html',1,'']]], + ['contributing_2emd_4',['CONTRIBUTING.md',['../CONTRIBUTING_8md.html',1,'']]] ]; diff --git a/search/all_4.js b/search/all_4.js index d856f53d..4d858458 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -1,7 +1,4 @@ var searchData= [ - ['begin_0',['begin',['../classESBNetwork.html#a48195ce31a771672723628579c6c80f5',1,'ESBNetwork::begin(uint16_t _node_address)'],['../classESBNetwork.html#ab2bf0e2d6c4e5b976f7d0f10c5789f2b',1,'ESBNetwork::begin(uint8_t _channel, uint16_t _node_address)']]], - ['better_1',['Which is better?',['../md_docs_2zigabee.html#autotoc_md34',1,'']]], - ['binary_2',['Decimal, Octal and Binary',['../md_docs_2addressing.html#autotoc_md4',1,'']]], - ['binary_20formats_3',['Decimal, Octal and Binary formats',['../md_docs_2addressing.html#autotoc_md2',1,'']]] + ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]] ]; diff --git a/search/all_5.js b/search/all_5.js index 45b8266b..fd14a09c 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -1,10 +1,6 @@ var searchData= [ - ['changes_0',['News - 2023 API Changes',['../index.html#autotoc_md9',1,'']]], - ['communication_20and_20topology_1',['Understanding Radio Communication and Topology',['../md_docs_2tuning.html#autotoc_md21',1,'']]], - ['comparison_20to_20zigbee_2',['Comparison to ZigBee',['../md_docs_2zigabee.html',1,'']]], - ['configuration_3',['Advanced Configuration',['../md_docs_2advanced__config.html',1,'']]], - ['contributing_4',['CONTRIBUTING',['../md_CONTRIBUTING.html',1,'']]], - ['contributing_2emd_5',['CONTRIBUTING.md',['../CONTRIBUTING_8md.html',1,'']]], - ['count_20and_20extended_20timeouts_6',['Auto-Retry Count and Extended Timeouts',['../md_docs_2tuning.html#autotoc_md28',1,'']]] + ['enable_5fdynamic_5fpayloads_0',['ENABLE_DYNAMIC_PAYLOADS',['../RF24Network__config_8h.html#ad899459e243820796dd98c2afb044218',1,'RF24Network_config.h']]], + ['external_5fdata_5ftype_1',['EXTERNAL_DATA_TYPE',['../group__DEFINED__TYPES.html#gac6bbd2772e776d10ca7c5f3c7eddf982',1,'RF24Network.h']]], + ['external_5fqueue_2',['external_queue',['../classRF24Network.html#ab387a2137dc1b62c1bf5cc783e34e2c0',1,'RF24Network']]] ]; diff --git a/search/all_6.js b/search/all_6.js index 8928a2d5..175248c0 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -1,12 +1,10 @@ var searchData= [ - ['data_20loss_3a_20tuning_20the_20network_0',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['decimal_20octal_20and_20binary_1',['Decimal, Octal and Binary',['../md_docs_2addressing.html#autotoc_md4',1,'']]], - ['decimal_20octal_20and_20binary_20formats_2',['Decimal, Octal and Binary formats',['../md_docs_2addressing.html#autotoc_md2',1,'']]], - ['deprecated_20list_3',['Deprecated List',['../deprecated.html',1,'']]], - ['devices_4',['Usage with NRF52x devices',['../md_docs_2tuning.html#autotoc_md29',1,'']]], - ['differences_5',['Similiarities & Differences',['../md_docs_2zigabee.html#autotoc_md35',1,'']]], - ['directionality_6',['Directionality',['../index.html#autotoc_md19',1,'']]], - ['displaying_20addresses_7',['Displaying Addresses',['../md_docs_2addressing.html#autotoc_md5',1,'']]], - ['does_20not_20provide_8',['The layer does not provide',['../index.html#autotoc_md12',1,'']]] + ['failures_0',['failures',['../classRF24Network.html#acb84d7556df00c933208ecf44b227a4f',1,'RF24Network']]], + ['flag_5ffast_5ffrag_1',['FLAG_FAST_FRAG',['../RF24Network_8h.html#a00fc52e4f9f6e4716c365bf201163b7e',1,'RF24Network.h']]], + ['flag_5fno_5fpoll_2',['FLAG_NO_POLL',['../RF24Network_8h.html#a4b3df085f3e9afddfa6d9647cd142c44',1,'RF24Network.h']]], + ['frag_5fptr_3',['frag_ptr',['../classRF24Network.html#a1c994c5fdcb2173b187c52b641aaeae0',1,'RF24Network']]], + ['frame_5fbuffer_4',['frame_buffer',['../classRF24Network.html#aa06f1fdd0fd986d427c2c5193b47b212',1,'RF24Network']]], + ['frame_5fheader_5fsize_5',['FRAME_HEADER_SIZE',['../RF24Network_8h.html#a6a4e3b4099bd5e93bfec5835b2379eb8',1,'RF24Network.h']]], + ['from_5fnode_6',['from_node',['../structRF24NetworkHeader.html#aff9461f6546b5b7c87465809eb4f9f56',1,'RF24NetworkHeader']]] ]; diff --git a/search/all_7.js b/search/all_7.js index cddce713..a005a59c 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -1,11 +1,4 @@ var searchData= [ - ['enable_5fdynamic_5fpayloads_0',['ENABLE_DYNAMIC_PAYLOADS',['../RF24Network__config_8h.html#ad899459e243820796dd98c2afb044218',1,'RF24Network_config.h']]], - ['esbnetwork_1',['ESBNetwork',['../classESBNetwork.html',1,'ESBNetwork< radio_t >'],['../classESBNetwork.html#a0ac71a8989fe3d7cdc86b1bb538a8251',1,'ESBNetwork::ESBNetwork()']]], - ['example_201_2',['Example 1',['../md_docs_2tuning.html#autotoc_md31',1,'']]], - ['example_202_3',['Example 2',['../md_docs_2tuning.html#autotoc_md32',1,'']]], - ['expressing_20rf24network_20addresses_20in_20ip_20format_4',['Expressing RF24Network addresses in IP format',['../md_docs_2tuning.html#autotoc_md23',1,'']]], - ['extended_20timeouts_5',['Auto-Retry Count and Extended Timeouts',['../md_docs_2tuning.html#autotoc_md28',1,'']]], - ['external_5fdata_5ftype_6',['EXTERNAL_DATA_TYPE',['../group__DEFINED__TYPES.html#gac6bbd2772e776d10ca7c5f3c7eddf982',1,'RF24Network.h']]], - ['external_5fqueue_7',['external_queue',['../classESBNetwork.html#a1af1d7e26417c772adb897122d4368f1',1,'ESBNetwork']]] + ['header_0',['header',['../structRF24NetworkFrame.html#a4b4bfaf451ededfb78e116d5abe17bcc',1,'RF24NetworkFrame']]] ]; diff --git a/search/all_8.js b/search/all_8.js index b5e7a93f..b3fd54a6 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -1,16 +1,5 @@ var searchData= [ - ['failures_0',['failures',['../classESBNetwork.html#a7b4a446024163631477abf6bb641d759',1,'ESBNetwork']]], - ['features_1',['Features',['../index.html#autotoc_md10',1,'']]], - ['flag_5ffast_5ffrag_2',['FLAG_FAST_FRAG',['../RF24Network_8h.html#a00fc52e4f9f6e4716c365bf201163b7e',1,'RF24Network.h']]], - ['flag_5fno_5fpoll_3',['FLAG_NO_POLL',['../RF24Network_8h.html#a4b3df085f3e9afddfa6d9647cd142c44',1,'RF24Network.h']]], - ['for_20mesh_20networks_20using_20nrf24l01_4',['Topology for Mesh Networks using nRF24L01(+)',['../index.html#autotoc_md15',1,'']]], - ['for_20rf24_20radios_5',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['format_6',['Expressing RF24Network addresses in IP format',['../md_docs_2tuning.html#autotoc_md23',1,'']]], - ['format_3a_20understanding_20addressing_20and_20topology_7',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['formats_8',['Decimal, Octal and Binary formats',['../md_docs_2addressing.html#autotoc_md2',1,'']]], - ['frag_5fptr_9',['frag_ptr',['../classESBNetwork.html#aa68d02f91212108906bac54f6d141e7e',1,'ESBNetwork']]], - ['frame_5fbuffer_10',['frame_buffer',['../classESBNetwork.html#ac31a18d03d70371890d16d242a341631',1,'ESBNetwork']]], - ['frame_5fheader_5fsize_11',['FRAME_HEADER_SIZE',['../RF24Network_8h.html#a6a4e3b4099bd5e93bfec5835b2379eb8',1,'RF24Network.h']]], - ['from_5fnode_12',['from_node',['../structRF24NetworkHeader.html#aff9461f6546b5b7c87465809eb4f9f56',1,'RF24NetworkHeader']]] + ['id_0',['id',['../structRF24NetworkHeader.html#ad05daaac28b7d1e7a7ef749f7f0ce317',1,'RF24NetworkHeader']]], + ['is_5fvalid_5faddress_1',['is_valid_address',['../classRF24Network.html#ab41da035bd7f469ea4364a06ab4efd1b',1,'RF24Network']]] ]; diff --git a/search/all_9.js b/search/all_9.js index 98204128..dd6aaf45 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,4 +1,14 @@ var searchData= [ - ['goal_0',['Purpose/Goal',['../index.html#autotoc_md8',1,'']]] + ['main_5fbuffer_5fsize_0',['MAIN_BUFFER_SIZE',['../RF24Network__config_8h.html#a7d4c071d4189c387b2d764a6a4b9283c',1,'RF24Network_config.h']]], + ['main_5fpage_2emd_1',['main_page.md',['../main__page_8md.html',1,'']]], + ['max_5fframe_5fsize_2',['MAX_FRAME_SIZE',['../RF24Network_8h.html#ad15d35a0d29a9dbf9324e3859ce3b008',1,'RF24Network.h']]], + ['max_5fpayload_5fsize_3',['MAX_PAYLOAD_SIZE',['../RF24Network__config_8h.html#a6303f7392a2d06be5a121c54278d561b',1,'RF24Network_config.h']]], + ['max_5fuser_5fdefined_5fheader_5ftype_4',['MAX_USER_DEFINED_HEADER_TYPE',['../RF24Network_8h.html#af181b456ebc98935b7a5039e86a537a5',1,'RF24Network.h']]], + ['message_5fbuffer_5',['message_buffer',['../structRF24NetworkFrame.html#a2ca805d90caa7aef8005fafd2c55fbc6',1,'RF24NetworkFrame']]], + ['message_5fsize_6',['message_size',['../structRF24NetworkFrame.html#a6d44701fc5ef58ed6f674fde132bedff',1,'RF24NetworkFrame']]], + ['min_5fuser_5fdefined_5fheader_5ftype_7',['MIN_USER_DEFINED_HEADER_TYPE',['../RF24Network_8h.html#a09198484bcfa0f13c7499304ce8bb6a7',1,'RF24Network.h']]], + ['multicast_8',['multicast',['../classRF24Network.html#a96a66907061c54ee1fea6ea7f78d6827',1,'RF24Network']]], + ['multicastlevel_9',['multicastLevel',['../classRF24Network.html#a4fb7c61eee75d708a4ba20bb1caec54f',1,'RF24Network']]], + ['multicastrelay_10',['multicastRelay',['../classRF24Network.html#add7408ca2b2f9ab15331ba77a747f7bb',1,'RF24Network']]] ]; diff --git a/search/all_a.js b/search/all_a.js index cd7899b8..81f47fee 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,7 +1,21 @@ var searchData= [ - ['handled_0',['How routing is handled',['../index.html#autotoc_md17',1,'']]], - ['header_1',['header',['../structRF24NetworkFrame.html#a4b4bfaf451ededfb78e116d5abe17bcc',1,'RF24NetworkFrame']]], - ['how_20routing_20is_20handled_2',['How routing is handled',['../index.html#autotoc_md17',1,'']]], - ['how_20to_20learn_20more_3',['How to learn more',['../index.html#autotoc_md13',1,'']]] + ['network_20layer_20for_20rf24_20radios_0',['Network Layer for RF24 Radios',['../index.html',1,'']]], + ['network_5fack_1',['NETWORK_ACK',['../group__DEFINED__TYPES.html#gac60baa80629bef34c13bd6a171f278c7',1,'RF24Network.h']]], + ['network_5faddr_5fresponse_2',['NETWORK_ADDR_RESPONSE',['../group__DEFINED__TYPES.html#ga25ad7c77b5ffa6acd7a5d9002a25a71b',1,'RF24Network.h']]], + ['network_5fauto_5frouting_3',['NETWORK_AUTO_ROUTING',['../RF24Network__config_8h.html#acd1e22fa0e2085482a2049c6339b53dc',1,'RF24Network_config.h']]], + ['network_5fdefault_5faddress_4',['NETWORK_DEFAULT_ADDRESS',['../RF24Network__config_8h.html#ad24658d1cd8d37f7bd9f78f79624f81e',1,'RF24Network_config.h']]], + ['network_5ffirst_5ffragment_5',['NETWORK_FIRST_FRAGMENT',['../group__DEFINED__TYPES.html#gaf9101b6aa5fd99550576e17cb10dbc4f',1,'RF24Network.h']]], + ['network_5flast_5ffragment_6',['NETWORK_LAST_FRAGMENT',['../group__DEFINED__TYPES.html#ga4df95ef2c4f33361e28e47219c5f07fa',1,'RF24Network.h']]], + ['network_5fmore_5ffragments_7',['NETWORK_MORE_FRAGMENTS',['../group__DEFINED__TYPES.html#ga93ad5d5d56e908110f0769eb96679633',1,'RF24Network.h']]], + ['network_5fmore_5ffragments_5fnack_8',['NETWORK_MORE_FRAGMENTS_NACK',['../RF24Network_8h.html#a359c70d3c925dc46c47efa65b3850e47',1,'RF24Network.h']]], + ['network_5fmulticast_5faddress_9',['NETWORK_MULTICAST_ADDRESS',['../RF24Network__config_8h.html#a9384801ca5f2283143ab651994179e8c',1,'RF24Network_config.h']]], + ['network_5fmulticast_5faddress_5flevel_5f2_10',['NETWORK_MULTICAST_ADDRESS_LEVEL_2',['../RF24Network_8cpp.html#a63d136981c3c1939843500f811e5a907',1,'RF24Network.cpp']]], + ['network_5fmulticast_5faddress_5flevel_5f4_11',['NETWORK_MULTICAST_ADDRESS_LEVEL_4',['../RF24Network_8cpp.html#ac526d119155cb828fad3c439d9839983',1,'RF24Network.cpp']]], + ['network_5fping_12',['NETWORK_PING',['../group__DEFINED__TYPES.html#gae678555396e5ea61506a0484cb2e0260',1,'RF24Network.h']]], + ['network_5fpoll_13',['NETWORK_POLL',['../group__DEFINED__TYPES.html#ga8cbda56553334074392866d4b8359388',1,'RF24Network.h']]], + ['network_5freq_5faddress_14',['NETWORK_REQ_ADDRESS',['../group__DEFINED__TYPES.html#gadb43d169421055bc8a3e7da428da1c30',1,'RF24Network.h']]], + ['networkflags_15',['networkFlags',['../classRF24Network.html#a476806538919b167465181ab872e0cad',1,'RF24Network']]], + ['next_5fid_16',['next_id',['../structRF24NetworkHeader.html#af02a00fa410f6c34bb395f7d0afe2bfd',1,'RF24NetworkHeader']]], + ['node_5faddress_17',['node_address',['../classRF24Network.html#a17017b584633bb969d004c4c43ca5c82',1,'RF24Network']]] ]; diff --git a/search/all_b.js b/search/all_b.js index d7e0cc40..262ac968 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -1,10 +1,6 @@ var searchData= [ - ['id_0',['id',['../structRF24NetworkHeader.html#ad05daaac28b7d1e7a7ef749f7f0ce317',1,'RF24NetworkHeader']]], - ['in_20ip_20format_1',['Expressing RF24Network addresses in IP format',['../md_docs_2tuning.html#autotoc_md23',1,'']]], - ['information_20add_20ons_2',['Additional Information & Add-ons',['../index.html#autotoc_md14',1,'']]], - ['ip_20format_3',['Expressing RF24Network addresses in IP format',['../md_docs_2tuning.html#autotoc_md23',1,'']]], - ['is_20better_4',['Which is better?',['../md_docs_2zigabee.html#autotoc_md34',1,'']]], - ['is_20handled_5',['How routing is handled',['../index.html#autotoc_md17',1,'']]], - ['is_5fvalid_5faddress_6',['is_valid_address',['../classESBNetwork.html#ab09e06857bfa68fdbd93f31e27ac07d7',1,'ESBNetwork']]] + ['parent_0',['parent',['../classRF24Network.html#aa6919435695051d522dfcce4e8395f5e',1,'RF24Network']]], + ['peek_1',['peek',['../classRF24Network.html#abac371cf064c23d181c5dd56f528bd08',1,'RF24Network::peek(RF24NetworkHeader &header)'],['../classRF24Network.html#a11b612ccb5e1fcc547b7984f9cff37a5',1,'RF24Network::peek(RF24NetworkHeader &header, void *message, uint16_t maxlen=MAX_PAYLOAD_SIZE)']]], + ['performance_20and_20data_20loss_3a_20tuning_20the_20network_2',['Performance and Data Loss: Tuning the Network',['../md_docs_tuning.html',1,'']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 5c99a3c1..448e648c 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -1,9 +1,15 @@ var searchData= [ - ['layer_20does_20not_20provide_0',['The layer does not provide',['../index.html#autotoc_md12',1,'']]], - ['layer_20for_20rf24_20radios_1',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['layer_20provides_2',['The layer provides',['../index.html#autotoc_md11',1,'']]], - ['learn_20more_3',['How to learn more',['../index.html#autotoc_md13',1,'']]], - ['list_4',['Deprecated List',['../deprecated.html',1,'']]], - ['loss_3a_20tuning_20the_20network_5',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]] + ['read_0',['read',['../classRF24Network.html#a6630ab36b8a42cc376c925721f39188d',1,'RF24Network']]], + ['reserved_1',['reserved',['../structRF24NetworkHeader.html#a80672a22cedcf24db8abbcef2eea9cfd',1,'RF24NetworkHeader']]], + ['reserved_20system_20message_20types_2',['Reserved System Message Types',['../group__DEFINED__TYPES.html',1,'']]], + ['returnsysmsgs_3',['returnSysMsgs',['../classRF24Network.html#afb6b1d5c0fa3d982425f7a1f4fb48d13',1,'RF24Network']]], + ['rf24network_4',['RF24Network',['../classRF24Network.html#a814229a5a4e8e30f88a4bdce05807e50',1,'RF24Network::RF24Network()'],['../classRF24Network.html',1,'RF24Network']]], + ['rf24network_2ecpp_5',['RF24Network.cpp',['../RF24Network_8cpp.html',1,'']]], + ['rf24network_2eh_6',['RF24Network.h',['../RF24Network_8h.html',1,'']]], + ['rf24network_5fconfig_2eh_7',['RF24Network_config.h',['../RF24Network__config_8h.html',1,'']]], + ['rf24networkframe_8',['RF24NetworkFrame',['../structRF24NetworkFrame.html#af6598f176be18e6c64173627674672f2',1,'RF24NetworkFrame::RF24NetworkFrame()'],['../structRF24NetworkFrame.html#a184eb90d3503111aada5f54f66ed88fb',1,'RF24NetworkFrame::RF24NetworkFrame(RF24NetworkHeader &_header, const void *_message=NULL, uint16_t _len=0)'],['../structRF24NetworkFrame.html#a057d001f6896cb43d55619f73c8f43b6',1,'RF24NetworkFrame::RF24NetworkFrame(RF24NetworkHeader &_header, uint16_t _message_size)'],['../structRF24NetworkFrame.html',1,'RF24NetworkFrame']]], + ['rf24networkheader_9',['RF24NetworkHeader',['../structRF24NetworkHeader.html',1,'RF24NetworkHeader'],['../structRF24NetworkHeader.html#aacf67806892c3bbcacfbff2554b64fd5',1,'RF24NetworkHeader::RF24NetworkHeader()'],['../structRF24NetworkHeader.html#a99e675f31589d72cf2fe036e77988026',1,'RF24NetworkHeader::RF24NetworkHeader(uint16_t _to, unsigned char _type=0)']]], + ['rf24networkmulticast_10',['RF24NetworkMulticast',['../RF24Network__config_8h.html#afa838938e02d347e06289d76ed8f2bf0',1,'RF24Network_config.h']]], + ['routetimeout_11',['routeTimeout',['../classRF24Network.html#a657fd03730b6c9084cc440b4fe0177c3',1,'RF24Network']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 3bc9770e..07a03005 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,18 +1,6 @@ var searchData= [ - ['main_5fbuffer_5fsize_0',['MAIN_BUFFER_SIZE',['../RF24Network__config_8h.html#a7d4c071d4189c387b2d764a6a4b9283c',1,'RF24Network_config.h']]], - ['main_5fpage_2emd_1',['main_page.md',['../main__page_8md.html',1,'']]], - ['max_5fframe_5fsize_2',['MAX_FRAME_SIZE',['../RF24Network_8h.html#ad15d35a0d29a9dbf9324e3859ce3b008',1,'RF24Network.h']]], - ['max_5fpayload_5fsize_3',['MAX_PAYLOAD_SIZE',['../RF24Network__config_8h.html#a6303f7392a2d06be5a121c54278d561b',1,'RF24Network_config.h']]], - ['max_5fuser_5fdefined_5fheader_5ftype_4',['MAX_USER_DEFINED_HEADER_TYPE',['../RF24Network_8h.html#af181b456ebc98935b7a5039e86a537a5',1,'RF24Network.h']]], - ['mesh_20networks_20using_20nrf24l01_5',['Topology for Mesh Networks using nRF24L01(+)',['../index.html#autotoc_md15',1,'']]], - ['message_20types_6',['Reserved System Message Types',['../group__DEFINED__TYPES.html',1,'']]], - ['message_5fbuffer_7',['message_buffer',['../structRF24NetworkFrame.html#a2ca805d90caa7aef8005fafd2c55fbc6',1,'RF24NetworkFrame']]], - ['message_5fsize_8',['message_size',['../structRF24NetworkFrame.html#a6d44701fc5ef58ed6f674fde132bedff',1,'RF24NetworkFrame']]], - ['min_5fuser_5fdefined_5fheader_5ftype_9',['MIN_USER_DEFINED_HEADER_TYPE',['../RF24Network_8h.html#a09198484bcfa0f13c7499304ce8bb6a7',1,'RF24Network.h']]], - ['more_10',['How to learn more',['../index.html#autotoc_md13',1,'']]], - ['multicast_11',['Multicast',['../md_docs_2tuning.html#autotoc_md24',1,'']]], - ['multicast_12',['multicast',['../classESBNetwork.html#a3e6e9e74461290d6f648e972ee4aaf91',1,'ESBNetwork']]], - ['multicastlevel_13',['multicastLevel',['../classESBNetwork.html#a3c2b5449bd374c0d5a6ae11e3b4f1c02',1,'ESBNetwork']]], - ['multicastrelay_14',['multicastRelay',['../classESBNetwork.html#ad9b7bd82837e7a92f4dde9754fb4d03f',1,'ESBNetwork']]] + ['setup_5fwatchdog_0',['setup_watchdog',['../classRF24Network.html#acb09129760ac9b171833af3055b2b6f5',1,'RF24Network']]], + ['sleepnode_1',['sleepNode',['../classRF24Network.html#acc3e7809ffc7ff48579811d2e063142a',1,'RF24Network']]], + ['slow_5faddr_5fpoll_5fresponse_2',['SLOW_ADDR_POLL_RESPONSE',['../RF24Network__config_8h.html#aff1e5ff5e11dd91d16cc45b8f73d2e94',1,'RF24Network_config.h']]] ]; diff --git a/search/all_e.js b/search/all_e.js index 83e9ccd2..23821a67 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -1,31 +1,10 @@ var searchData= [ - ['naming_0',['Node Naming',['../md_docs_2zigabee.html#autotoc_md36',1,'']]], - ['network_1',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['network_20layer_20for_20rf24_20radios_2',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['network_5fack_3',['NETWORK_ACK',['../group__DEFINED__TYPES.html#gac60baa80629bef34c13bd6a171f278c7',1,'RF24Network.h']]], - ['network_5faddr_5fresponse_4',['NETWORK_ADDR_RESPONSE',['../group__DEFINED__TYPES.html#ga25ad7c77b5ffa6acd7a5d9002a25a71b',1,'RF24Network.h']]], - ['network_5fauto_5frouting_5',['NETWORK_AUTO_ROUTING',['../RF24Network__config_8h.html#acd1e22fa0e2085482a2049c6339b53dc',1,'RF24Network_config.h']]], - ['network_5fdefault_5faddress_6',['NETWORK_DEFAULT_ADDRESS',['../RF24Network__config_8h.html#ad24658d1cd8d37f7bd9f78f79624f81e',1,'RF24Network_config.h']]], - ['network_5ffirst_5ffragment_7',['NETWORK_FIRST_FRAGMENT',['../group__DEFINED__TYPES.html#gaf9101b6aa5fd99550576e17cb10dbc4f',1,'RF24Network.h']]], - ['network_5flast_5ffragment_8',['NETWORK_LAST_FRAGMENT',['../group__DEFINED__TYPES.html#ga4df95ef2c4f33361e28e47219c5f07fa',1,'RF24Network.h']]], - ['network_5fmore_5ffragments_9',['NETWORK_MORE_FRAGMENTS',['../group__DEFINED__TYPES.html#ga93ad5d5d56e908110f0769eb96679633',1,'RF24Network.h']]], - ['network_5fmore_5ffragments_5fnack_10',['NETWORK_MORE_FRAGMENTS_NACK',['../RF24Network_8h.html#a359c70d3c925dc46c47efa65b3850e47',1,'RF24Network.h']]], - ['network_5fmulticast_5faddress_11',['NETWORK_MULTICAST_ADDRESS',['../RF24Network__config_8h.html#a9384801ca5f2283143ab651994179e8c',1,'RF24Network_config.h']]], - ['network_5fmulticast_5faddress_5flevel_5f2_12',['NETWORK_MULTICAST_ADDRESS_LEVEL_2',['../RF24Network_8cpp.html#a63d136981c3c1939843500f811e5a907',1,'RF24Network.cpp']]], - ['network_5fmulticast_5faddress_5flevel_5f4_13',['NETWORK_MULTICAST_ADDRESS_LEVEL_4',['../RF24Network_8cpp.html#ac526d119155cb828fad3c439d9839983',1,'RF24Network.cpp']]], - ['network_5fping_14',['NETWORK_PING',['../group__DEFINED__TYPES.html#gae678555396e5ea61506a0484cb2e0260',1,'RF24Network.h']]], - ['network_5fpoll_15',['NETWORK_POLL',['../group__DEFINED__TYPES.html#ga8cbda56553334074392866d4b8359388',1,'RF24Network.h']]], - ['network_5freq_5faddress_16',['NETWORK_REQ_ADDRESS',['../group__DEFINED__TYPES.html#gadb43d169421055bc8a3e7da428da1c30',1,'RF24Network.h']]], - ['networkflags_17',['networkFlags',['../classESBNetwork.html#a9d4ab7fc671cdb2573535bfd0c9e2050',1,'ESBNetwork']]], - ['networks_20using_20nrf24l01_18',['Topology for Mesh Networks using nRF24L01(+)',['../index.html#autotoc_md15',1,'']]], - ['news_202023_20api_20changes_19',['News - 2023 API Changes',['../index.html#autotoc_md9',1,'']]], - ['next_5fid_20',['next_id',['../structRF24NetworkHeader.html#af02a00fa410f6c34bb395f7d0afe2bfd',1,'RF24NetworkHeader']]], - ['node_21',['Starting up a node',['../index.html#autotoc_md18',1,'']]], - ['node_20naming_22',['Node Naming',['../md_docs_2zigabee.html#autotoc_md36',1,'']]], - ['node_5faddress_23',['node_address',['../classESBNetwork.html#a3e5aa077d46a74acd31ca5242bb0c0a4',1,'ESBNetwork']]], - ['not_20provide_24',['The layer does not provide',['../index.html#autotoc_md12',1,'']]], - ['nrf24l01_25',['Topology for Mesh Networks using nRF24L01(+)',['../index.html#autotoc_md15',1,'']]], - ['nrf52x_20devices_26',['Usage with NRF52x devices',['../md_docs_2tuning.html#autotoc_md29',1,'']]], - ['num_5fpipes_27',['NUM_PIPES',['../RF24Network__config_8h.html#aea10fcc3ece9abf30d548a2cba57d2aa',1,'RF24Network_config.h']]] + ['to_5fnode_0',['to_node',['../structRF24NetworkHeader.html#adb8d6d05bb359b4b89322d15055e73a1',1,'RF24NetworkHeader']]], + ['tostring_1',['toString',['../structRF24NetworkHeader.html#a70efc9fd32fd3f73a98d96f57c04c815',1,'RF24NetworkHeader']]], + ['tuning_2emd_2',['tuning.md',['../tuning_8md.html',1,'']]], + ['tx_5fnormal_3',['TX_NORMAL',['../RF24Network_8h.html#ad0da85e1332b474b17de9b77d580bd73',1,'RF24Network.h']]], + ['tx_5frouted_4',['TX_ROUTED',['../RF24Network_8h.html#aea221535d8326d4ea6a483c9715a5d0c',1,'RF24Network.h']]], + ['txtimeout_5',['txTimeout',['../classRF24Network.html#a8838b42717e7c9da37213b020db1f88c',1,'RF24Network']]], + ['type_6',['type',['../structRF24NetworkHeader.html#ac99ab14e561670f4445d1fea7775e2db',1,'RF24NetworkHeader']]] ]; diff --git a/search/all_f.js b/search/all_f.js index deeb7a8b..6b11e74b 100644 --- a/search/all_f.js +++ b/search/all_f.js @@ -1,9 +1,8 @@ var searchData= [ - ['octal_20addressing_20and_20topology_0',['Octal Addressing and Topology',['../index.html#autotoc_md16',1,'']]], - ['octal_20and_20binary_1',['Decimal, Octal and Binary',['../md_docs_2addressing.html#autotoc_md4',1,'']]], - ['octal_20and_20binary_20formats_2',['Decimal, Octal and Binary formats',['../md_docs_2addressing.html#autotoc_md2',1,'']]], - ['of_20rf24network_3',['Topology of RF24Network',['../md_docs_2tuning.html#autotoc_md22',1,'']]], - ['ons_4',['Additional Information & Add-ons',['../index.html#autotoc_md14',1,'']]], - ['overview_5',['Overview',['../md_docs_2addressing.html#autotoc_md1',1,'Overview'],['../md_docs_2tuning.html#autotoc_md26',1,'Tuning Overview']]] + ['update_0',['update',['../classRF24Network.html#ad59983f89b09d17d7d9b0581f658a41c',1,'RF24Network']]], + ['use_5fcurrent_5fchannel_1',['USE_CURRENT_CHANNEL',['../RF24Network_8h.html#a3701f6ea99dcf399641f2ad29303f8cc',1,'RF24Network.h']]], + ['user_5ftx_5fmulticast_2',['USER_TX_MULTICAST',['../RF24Network_8h.html#ae2f8b695f040aa6f1e8ec92b438aa303',1,'RF24Network.h']]], + ['user_5ftx_5fto_5flogical_5faddress_3',['USER_TX_TO_LOGICAL_ADDRESS',['../RF24Network_8h.html#a4726586dd8fbf75bbfffffd18ebdbeb3',1,'RF24Network.h']]], + ['user_5ftx_5fto_5fphysical_5faddress_4',['USER_TX_TO_PHYSICAL_ADDRESS',['../RF24Network_8h.html#afbef4cc504fbd93102265ff8d01cbafc',1,'RF24Network.h']]] ]; diff --git a/search/classes_0.js b/search/classes_0.js index a7f0a29e..bd52449b 100644 --- a/search/classes_0.js +++ b/search/classes_0.js @@ -1,4 +1,6 @@ var searchData= [ - ['esbnetwork_0',['ESBNetwork',['../classESBNetwork.html',1,'']]] + ['rf24network_0',['RF24Network',['../classRF24Network.html',1,'']]], + ['rf24networkframe_1',['RF24NetworkFrame',['../structRF24NetworkFrame.html',1,'']]], + ['rf24networkheader_2',['RF24NetworkHeader',['../structRF24NetworkHeader.html',1,'']]] ]; diff --git a/search/classes_1.js b/search/classes_1.js deleted file mode 100644 index bb0ab9ac..00000000 --- a/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['rf24networkframe_0',['RF24NetworkFrame',['../structRF24NetworkFrame.html',1,'']]], - ['rf24networkheader_1',['RF24NetworkHeader',['../structRF24NetworkHeader.html',1,'']]] -]; diff --git a/search/close.svg b/search/close.svg index 337d6cc1..a933eea1 100644 --- a/search/close.svg +++ b/search/close.svg @@ -1,14 +1,27 @@ - + + + + image/svg+xml + + + + + - + + + + image/svg+xml + + + + + - + + + + image/svg+xml + + + + + - + + sodipodi:docname="mag_sel.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + image/svg+xml + + + + + + + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + inkscape:connector-curvature="0" /> diff --git a/search/mag_seld.svg b/search/mag_seld.svg index c906f84c..6e720dcc 100644 --- a/search/mag_seld.svg +++ b/search/mag_seld.svg @@ -1,31 +1,74 @@ - + + sodipodi:docname="mag_sel.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + + + + image/svg+xml + + + + + + + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + inkscape:connector-curvature="0" /> diff --git a/search/pages_0.js b/search/pages_0.js index 98937d95..a8b9c81e 100644 --- a/search/pages_0.js +++ b/search/pages_0.js @@ -1,8 +1,5 @@ var searchData= [ - ['addressing_20and_20topology_0',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['addressing_20format_3a_20understanding_20addressing_20and_20topology_1',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['advanced_20configuration_2',['Advanced Configuration',['../md_docs_2advanced__config.html',1,'']]], - ['and_20data_20loss_3a_20tuning_20the_20network_3',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['and_20topology_4',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]] + ['addressing_20format_3a_20understanding_20addressing_20and_20topology_0',['Addressing Format: Understanding Addressing and Topology',['../md_docs_addressing.html',1,'']]], + ['advanced_20configuration_1',['Advanced Configuration',['../md_docs_advanced_config.html',1,'']]] ]; diff --git a/search/pages_1.js b/search/pages_1.js index 97383495..a32c0c58 100644 --- a/search/pages_1.js +++ b/search/pages_1.js @@ -1,6 +1,6 @@ var searchData= [ - ['comparison_20to_20zigbee_0',['Comparison to ZigBee',['../md_docs_2zigabee.html',1,'']]], - ['configuration_1',['Advanced Configuration',['../md_docs_2advanced__config.html',1,'']]], + ['changelog_0',['Changelog',['../md_CHANGELOG.html',1,'']]], + ['comparison_20to_20zigbee_1',['Comparison to ZigBee',['../md_docs_zigabee.html',1,'']]], ['contributing_2',['CONTRIBUTING',['../md_CONTRIBUTING.html',1,'']]] ]; diff --git a/search/pages_2.js b/search/pages_2.js index e93f5ebf..4d858458 100644 --- a/search/pages_2.js +++ b/search/pages_2.js @@ -1,5 +1,4 @@ var searchData= [ - ['data_20loss_3a_20tuning_20the_20network_0',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['deprecated_20list_1',['Deprecated List',['../deprecated.html',1,'']]] + ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]] ]; diff --git a/search/pages_3.js b/search/pages_3.js index 4b284623..b4b26f78 100644 --- a/search/pages_3.js +++ b/search/pages_3.js @@ -1,5 +1,4 @@ var searchData= [ - ['for_20rf24_20radios_0',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['format_3a_20understanding_20addressing_20and_20topology_1',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]] + ['network_20layer_20for_20rf24_20radios_0',['Network Layer for RF24 Radios',['../index.html',1,'']]] ]; diff --git a/search/pages_4.js b/search/pages_4.js index acda54ef..a40a3425 100644 --- a/search/pages_4.js +++ b/search/pages_4.js @@ -1,6 +1,4 @@ var searchData= [ - ['layer_20for_20rf24_20radios_0',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['list_1',['Deprecated List',['../deprecated.html',1,'']]], - ['loss_3a_20tuning_20the_20network_2',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]] + ['performance_20and_20data_20loss_3a_20tuning_20the_20network_0',['Performance and Data Loss: Tuning the Network',['../md_docs_tuning.html',1,'']]] ]; diff --git a/search/pages_5.js b/search/pages_5.js deleted file mode 100644 index 82a35a15..00000000 --- a/search/pages_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['network_0',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['network_20layer_20for_20rf24_20radios_1',['Network Layer for RF24 Radios',['../index.html',1,'']]] -]; diff --git a/search/pages_6.js b/search/pages_6.js deleted file mode 100644 index c6a84dbd..00000000 --- a/search/pages_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['performance_20and_20data_20loss_3a_20tuning_20the_20network_0',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]] -]; diff --git a/search/pages_7.js b/search/pages_7.js deleted file mode 100644 index 01dca415..00000000 --- a/search/pages_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['radios_0',['Network Layer for RF24 Radios',['../index.html',1,'']]], - ['rf24_20radios_1',['Network Layer for RF24 Radios',['../index.html',1,'']]] -]; diff --git a/search/pages_8.js b/search/pages_8.js deleted file mode 100644 index 387b9638..00000000 --- a/search/pages_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['the_20network_0',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['to_20zigbee_1',['Comparison to ZigBee',['../md_docs_2zigabee.html',1,'']]], - ['topology_2',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['tuning_20the_20network_3',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]] -]; diff --git a/search/pages_9.js b/search/pages_9.js deleted file mode 100644 index dec699eb..00000000 --- a/search/pages_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['understanding_20addressing_20and_20topology_0',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]] -]; diff --git a/search/pages_a.js b/search/pages_a.js deleted file mode 100644 index 0bd3ebb9..00000000 --- a/search/pages_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zigbee_0',['Comparison to ZigBee',['../md_docs_2zigabee.html',1,'']]] -]; diff --git a/search/search.js b/search/search.js index 666af01e..e103a262 100644 --- a/search/search.js +++ b/search/search.js @@ -22,9 +22,58 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -const SEARCH_COOKIE_NAME = ''+'search_grp'; +function convertToId(search) +{ + var result = ''; + for (i=0;i document.getElementById("MSearchField"); - this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); - this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); - this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); - this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); - this.DOMSearchClose = () => document.getElementById("MSearchClose"); - this.DOMSearchBox = () => document.getElementById("MSearchBox"); + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); } + + this.DOMSearchSelect = function() + { return document.getElementById("MSearchSelect"); } + + this.DOMSearchSelectWindow = function() + { return document.getElementById("MSearchSelectWindow"); } + + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); } + + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); } + + this.DOMSearchClose = function() + { return document.getElementById("MSearchClose"); } + + this.DOMSearchBox = function() + { return document.getElementById("MSearchBox"); } // ------------ Event Handlers // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) { + this.OnSearchFieldFocus = function(isActive) + { this.Activate(isActive); } - this.OnSearchSelectShow = function() { - const searchSelectWindow = this.DOMSearchSelectWindow(); - const searchField = this.DOMSearchSelect(); + this.OnSearchSelectShow = function() + { + var searchSelectWindow = this.DOMSearchSelectWindow(); + var searchField = this.DOMSearchSelect(); - const left = getXPos(searchField); - const top = getYPos(searchField) + searchField.offsetHeight; + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; // show search selection popup searchSelectWindow.style.display='block'; @@ -102,44 +146,55 @@ function SearchBox(name, resultsPath, extension) { searchSelectWindow.style.top = top + 'px'; // stop selection hide timer - if (this.hideTimeout) { + if (this.hideTimeout) + { clearTimeout(this.hideTimeout); this.hideTimeout=0; } return false; // to avoid "image drag" default event } - this.OnSearchSelectHide = function() { - this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.OnSearchSelectHide = function() + { + this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", this.closeSelectionTimeout); } // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) { - if (this.keyTimeout) { // kill running timer + this.OnSearchFieldChange = function(evt) + { + if (this.keyTimeout) // kill running timer + { clearTimeout(this.keyTimeout); this.keyTimeout = 0; } - const e = evt ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) { - if (e.shiftKey==1) { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) + { + if (e.shiftKey==1) + { this.OnSearchSelectShow(); - const win=this.DOMSearchSelectWindow(); - for (let i=0;i do a search + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) // something was found -> do a search + { this.Search(); } } - this.OnSearchSelectKey = function(evt) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) { // Up + } + else if (e.keyCode==38 && this.searchIndex>0) // Up + { this.searchIndex--; this.OnSelectItem(this.searchIndex); - } else if (e.keyCode==13 || e.keyCode==27) { - e.stopPropagation(); + } + else if (e.keyCode==13 || e.keyCode==27) + { this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); this.DOMSearchField().focus(); @@ -239,75 +299,78 @@ function SearchBox(name, resultsPath, extension) { // --------- Actions // Closes the results window. - this.CloseResultsWindow = function() { + this.CloseResultsWindow = function() + { this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; this.Activate(false); } - this.CloseSelectionWindow = function() { + this.CloseSelectionWindow = function() + { this.DOMSearchSelectWindow().style.display = 'none'; } // Performs a search. - this.Search = function() { + this.Search = function() + { this.keyTimeout = 0; // strip leading whitespace - const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - const code = searchValue.toLowerCase().charCodeAt(0); - let idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { idxChar = searchValue.substr(0, 2); } - let jsFile; - let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) { - const hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; } - const loadJS = function(url, impl, loc) { - const scriptTag = document.createElement('script'); + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); scriptTag.src = url; scriptTag.onload = impl; scriptTag.onreadystatechange = impl; loc.appendChild(scriptTag); } - const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - const domSearchBox = this.DOMSearchBox(); - const domPopupSearchResults = this.DOMPopupSearchResults(); - const domSearchClose = this.DOMSearchClose(); - const resultsPath = this.resultsPath; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; - const handleResults = function() { + var handleResults = function() { document.getElementById("Loading").style.display="none"; if (typeof searchData !== 'undefined') { createResults(resultsPath); document.getElementById("NoMatches").style.display="none"; } + + searchResults.Search(searchValue); - if (idx!=-1) { - searchResults.Search(searchValue); - } else { // no file with search results => force empty search results - searchResults.Search('===='); - } - - if (domPopupSearchResultsWindow.style.display!='block') { + if (domPopupSearchResultsWindow.style.display!='block') + { domSearchClose.style.display = 'inline-block'; - let left = getXPos(domSearchBox) + 150; - let top = getYPos(domSearchBox) + 20; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; domPopupSearchResultsWindow.style.display = 'block'; left -= domPopupSearchResults.offsetWidth; - const maxWidth = document.body.clientWidth; - const maxHeight = document.body.clientHeight; - let width = 300; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; if (left<10) left=10; if (width+left+8>maxWidth) width=maxWidth-left-8; - let height = 400; + var height = 400; if (height+top+8>maxHeight) height=maxHeight-top-8; domPopupSearchResultsWindow.style.top = top + 'px'; domPopupSearchResultsWindow.style.left = left + 'px'; @@ -329,13 +392,17 @@ function SearchBox(name, resultsPath, extension) { // Activates or deactivates the search panel, resetting things to // their default values if necessary. - this.Activate = function(isActive) { + this.Activate = function(isActive) + { if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) { + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { this.DOMSearchBox().className = 'MSearchBoxActive'; this.searchActive = true; - } else if (!isActive) { // directly remove the panel + } + else if (!isActive) // directly remove the panel + { this.DOMSearchBox().className = 'MSearchBoxInactive'; this.searchActive = false; this.lastSearchValue = '' @@ -348,347 +415,402 @@ function SearchBox(name, resultsPath, extension) { // ----------------------------------------------------------------------- // The class that handles everything on the search results page. -function SearchResults() { - - function convertToId(search) { - let result = ''; - for (let i=0;i. - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) { - const parentElement = document.getElementById(id); - let element = parentElement.firstChild; + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); - while (element && element!=parentElement) { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { - return element; + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } } + } - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { - element = element.firstChild; - } else if (element.nextSibling) { - element = element.nextSibling; - } else { - do { - element = element.parentNode; + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) { - element = element.nextSibling; + else + { + element.style.display = 'block'; } } } - } - this.Toggle = function(id) { - const element = this.FindChildElement(id); - if (element) { - if (element.style.display == 'block') { - element.style.display = 'none'; - } else { - element.style.display = 'block'; + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); } - } - } - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) { - if (!search) { // get search word from URL - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - const resultRows = document.getElementsByTagName("div"); - let matches = 0; - - let i = 0; - while (i < resultRows.length) { - const row = resultRows.item(i); - if (row.className == "SRResult") { - let rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) { - row.style.display = 'block'; - matches++; - } else { - row.style.display = 'none'; + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } } + i++; } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) { // no results - document.getElementById("NoMatches").style.display='block'; - } else { // at least one result - document.getElementById("NoMatches").style.display='none'; + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; } - this.lastMatchCount = matches; - return true; - } - // return the first item with index index or higher that is visible - this.NavNext = function(index) { - let focusItem; - for (;;) { - const focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { - break; - } else if (!focusItem) { // last element - break; - } - focusItem=null; - index++; - } - return focusItem; - } + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } - this.NavPrev = function(index) { - let focusItem; - for (;;) { - const focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { - break; - } else if (!focusItem) { // last element - break; + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; } - focusItem=null; - index--; + return focusItem; } - return focusItem; - } - this.ProcessKeys = function(e) { - if (e.type == "keydown") { - this.repeatOn = false; - this.lastKey = e.keyCode; - } else if (e.type == "keypress") { - if (!this.repeatOn) { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } } - } else if (e.type == "keyup") { - this.lastKey = 0; - this.repeatOn = false; + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; } - return this.lastKey!=0; - } - this.Nav = function(evt,itemIndex) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) { // Up - const newIndex = itemIndex-1; - let focusItem = this.NavPrev(newIndex); - if (focusItem) { - let child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') { // children visible - let n=0; - let tmpElem; - for (;;) { // search for last child - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) { - focusItem = tmpElem; - } else { // found it! - break; + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; } - n++; } } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); } - if (focusItem) { - focusItem.focus(); - } else { // return focus to search field + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); document.getElementById("MSearchField").focus(); } - } else if (this.lastKey==40) { // Down - const newIndex = itemIndex+1; - let focusItem; - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') { // children visible - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } else if (this.lastKey==39) { // Right - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } else if (this.lastKey==37) { // Left - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } else if (this.lastKey==27) { // Escape - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } else if (this.lastKey==13) { // Enter - return true; + else if (this.lastKey==13) // Enter + { + return true; + } + return false; } - return false; - } - this.NavChild = function(evt,itemIndex,childIndex) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) { // Up - if (childIndex>0) { - const newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } else { // already at first child, jump to parent - document.getElementById('Item'+itemIndex).focus(); - } - } else if (this.lastKey==40) { // Down - const newIndex = childIndex+1; - let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) { // last child, jump to parent next parent - elem = this.NavNext(itemIndex+1); - } - if (elem) { - elem.focus(); - } - } else if (this.lastKey==27) { // Escape - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } else if (this.lastKey==13) { // Enter - return true; + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; } - return false; - } } -function createResults(resultsPath) { - - function setKeyActions(elem,action) { - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); - } +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} - function setClassAttr(elem,attr) { - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); - } +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} - const results = document.getElementById("SRResults"); +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); results.innerHTML = ''; - searchData.forEach((elem,index) => { - const id = elem[0]; - const srResult = document.createElement('div'); + for (var e=0; e - + -Optimized RF24Network Layer: Member List - +Newly Optimized RF24Network Layer: Member List - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      RF24NetworkFrame Member List
      @@ -103,8 +87,7 @@
      -
      diff --git a/structRF24NetworkFrame.html b/structRF24NetworkFrame.html index 3c53904a..d9cc81b2 100644 --- a/structRF24NetworkFrame.html +++ b/structRF24NetworkFrame.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: RF24NetworkFrame Struct Reference - +Newly Optimized RF24Network Layer: RF24NetworkFrame Struct Reference - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      Public Member Functions | @@ -100,20 +84,20 @@ - + - + - +

      Public Member Functions

       RF24NetworkFrame ()
       RF24NetworkFrame ()
       
       RF24NetworkFrame (RF24NetworkHeader &_header, const void *_message=NULL, uint16_t _len=0)
       RF24NetworkFrame (RF24NetworkHeader &_header, const void *_message=NULL, uint16_t _len=0)
       
       RF24NetworkFrame (RF24NetworkHeader &_header, uint16_t _message_size)
       RF24NetworkFrame (RF24NetworkHeader &_header, uint16_t _message_size)
       
      - + - + - +

      Public Attributes

      RF24NetworkHeader header
      RF24NetworkHeader header
       
      uint16_t message_size
      uint16_t message_size
       
      uint8_t * message_buffer
      uint8_t * message_buffer
       

      Detailed Description

      @@ -136,7 +120,7 @@

      RF24NetworkFrame::RF24NetworkFrame ( - ) + ) @@ -163,17 +147,25 @@

      RF24NetworkFrame::RF24NetworkFrame ( - RF24NetworkHeader & _header, + RF24NetworkHeader &  + _header, - const void * _message = NULL, + const void *  + _message = NULL, - uint16_t _len = 0 ) + uint16_t  + _len = 0  + + + + ) + @@ -185,7 +177,7 @@

      Parameters
      - +
      _headerThe RF24Network header to be stored in the frame
      _headerThe RF24Network header to be stored in the frame
      _messageThe 'message' or data.
      _lenThe size of the 'message' or data.
      @@ -207,12 +199,19 @@

      RF24NetworkFrame::RF24NetworkFrame ( - RF24NetworkHeader & _header, + RF24NetworkHeader &  + _header, - uint16_t _message_size ) + uint16_t  + _message_size  + + + + ) + @@ -222,10 +221,10 @@

      Constructor for Arduino/AVR/etc. platforms - create a network frame with data Frames are constructed and handled differently on Arduino/AVR and Linux devices (#if defined RF24_LINUX)

      -
      See also
      ESBNetwork.frag_ptr
      +
      See also
      RF24Network.frag_ptr
      Parameters
      - +
      _headerThe RF24Network header to be stored in the frame
      _headerThe RF24Network header to be stored in the frame
      _message_sizeThe size of the 'message' or data
      @@ -283,8 +282,7 @@

      -

      diff --git a/structRF24NetworkHeader-members.html b/structRF24NetworkHeader-members.html index 441ac6e5..31739028 100644 --- a/structRF24NetworkHeader-members.html +++ b/structRF24NetworkHeader-members.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: Member List - +Newly Optimized RF24Network Layer: Member List - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      RF24NetworkHeader Member List
      @@ -106,8 +90,7 @@
      -
      diff --git a/structRF24NetworkHeader.html b/structRF24NetworkHeader.html index 67ffed43..518f63db 100644 --- a/structRF24NetworkHeader.html +++ b/structRF24NetworkHeader.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: RF24NetworkHeader Struct Reference - +Newly Optimized RF24Network Layer: RF24NetworkHeader Struct Reference - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      Public Member Functions | @@ -101,29 +85,29 @@ - + - + - +

      Public Member Functions

       RF24NetworkHeader ()
       RF24NetworkHeader ()
       
       RF24NetworkHeader (uint16_t _to, unsigned char _type=0)
       RF24NetworkHeader (uint16_t _to, unsigned char _type=0)
       
      const char * toString (void) const
      const char * toString (void) const
       
      - + - + - + - + - +

      Public Attributes

      uint16_t from_node
      uint16_t from_node
       
      uint16_t to_node
      uint16_t to_node
       
      uint16_t id
      uint16_t id
       
      unsigned char type
      unsigned char type
       
      unsigned char reserved
      unsigned char reserved
       
      - +

      Static Public Attributes

      static uint16_t next_id = 1
      static uint16_t next_id = 1
       

      Detailed Description

      @@ -145,7 +129,7 @@

      RF24NetworkHeader::RF24NetworkHeader ( - ) + ) @@ -172,12 +156,19 @@

      RF24NetworkHeader::RF24NetworkHeader ( - uint16_t _to, + uint16_t  + _to, - unsigned char _type = 0 ) + unsigned char  + _type = 0  + + + + ) + @@ -194,7 +185,7 @@

      RF24NetworkHeader header(recipient_address, 't');

      network.write(header, &message, sizeof(message));
      -
      Definition RF24Network.h:229
      +
      Definition: RF24Network.h:226
      Parameters
      @@ -215,7 +206,8 @@

      const char * RF24NetworkHeader::toString

      - + +
      _toThe Octal format, logical node address where the message is going
      (void )void ) const
      @@ -334,8 +326,7 @@

      -

      diff --git a/tabs.css b/tabs.css index fe4854aa..71c8a470 100644 --- a/tabs.css +++ b/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/tuning_8md.html b/tuning_8md.html index d9f88ac9..1cedaa17 100644 --- a/tuning_8md.html +++ b/tuning_8md.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: docs/tuning.md File Reference - +Newly Optimized RF24Network Layer: docs/tuning.md File Reference - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      docs/tuning.md File Reference
      @@ -94,8 +78,7 @@
      -
      diff --git a/zigabee_8md.html b/zigabee_8md.html index 53a177f7..6f3fe1ec 100644 --- a/zigabee_8md.html +++ b/zigabee_8md.html @@ -3,17 +3,12 @@ - + -Optimized RF24Network Layer: docs/zigabee.md File Reference - +Newly Optimized RF24Network Layer: docs/zigabee.md File Reference - - - - @@ -28,42 +23,32 @@ -
      Optimized RF24Network Layer v2.0.1 +
      Newly Optimized RF24Network Layer v1.0.21
      -
      2024 - Optimized RF24 Network Layer for NRF24L01 & NRF52x radios
      +
      2020 - Optimized RF24 Network Layer for NRF24L01 radios
      - + - -
      -
      docs/zigabee.md File Reference
      @@ -94,8 +78,7 @@
      -