diff --git a/CONTRIBUTING_8md.html b/CONTRIBUTING_8md.html index a0fd5507..c337187e 100644 --- a/CONTRIBUTING_8md.html +++ b/CONTRIBUTING_8md.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: CONTRIBUTING.md File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
+
CONTRIBUTING.md File Reference
@@ -81,7 +94,8 @@
+ diff --git a/Network_Ping_8ino-example.html b/Network_Ping_8ino-example.html index d1f746ea..cc18a351 100644 --- a/Network_Ping_8ino-example.html +++ b/Network_Ping_8ino-example.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Network_Ping.ino @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@ - + + +
+
+
diff --git a/Network_Ping_Sleep_8ino-example.html b/Network_Ping_Sleep_8ino-example.html index a6834079..6e29bb36 100644 --- a/Network_Ping_Sleep_8ino-example.html +++ b/Network_Ping_Sleep_8ino-example.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Network_Ping_Sleep.ino @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@ - + + +
+
+
diff --git a/Network_Priority_RX_8ino-example.html b/Network_Priority_RX_8ino-example.html index 218bc9b4..d7de4de8 100644 --- a/Network_Priority_RX_8ino-example.html +++ b/Network_Priority_RX_8ino-example.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Network_Priority_RX.ino @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@ - + + +
+
+
diff --git a/Network_Priority_TX_8ino-example.html b/Network_Priority_TX_8ino-example.html index d2d03b41..b8d17a10 100644 --- a/Network_Priority_TX_8ino-example.html +++ b/Network_Priority_TX_8ino-example.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Network_Priority_TX.ino @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@ - + + +
+
+
diff --git a/RF24Network_8cpp.html b/RF24Network_8cpp.html index b18c342a..c34578b9 100644 --- a/RF24Network_8cpp.html +++ b/RF24Network_8cpp.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: RF24Network.cpp File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
+
@@ -123,7 +136,8 @@

+

diff --git a/RF24Network_8h.html b/RF24Network_8h.html index cc009b82..34d978dc 100644 --- a/RF24Network_8h.html +++ b/RF24Network_8h.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: RF24Network.h File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@
- + + +
+
Classes | @@ -362,7 +375,8 @@

+

diff --git a/RF24Network_8h_source.html b/RF24Network_8h_source.html index 9ee8efc4..c73f8cbd 100644 --- a/RF24Network_8h_source.html +++ b/RF24Network_8h_source.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: RF24Network.h Source File @@ -11,6 +11,8 @@ + + @@ -35,29 +37,35 @@
- + + +
+
-
USE_CURRENT_CHANNEL
#define USE_CURRENT_CHANNEL
Definition RF24Network.h:202
MAX_FRAME_SIZE
#define MAX_FRAME_SIZE
Definition RF24Network.h:195
RF24Network_config.h
-
MAX_PAYLOAD_SIZE
#define MAX_PAYLOAD_SIZE
Maximum size of fragmented network frames and fragmentation cache.
Definition RF24Network_config.h:61
-
MAIN_BUFFER_SIZE
#define MAIN_BUFFER_SIZE
The allocated size of the incoming frame buffer.
Definition RF24Network_config.h:72
+
MAX_PAYLOAD_SIZE
#define MAX_PAYLOAD_SIZE
Maximum size of fragmented network frames and fragmentation cache.
Definition RF24Network_config.h:67
+
MAIN_BUFFER_SIZE
#define MAIN_BUFFER_SIZE
The allocated size of the incoming frame buffer.
Definition RF24Network_config.h:78
ESBNetwork
Definition RF24Network.h:384
ESBNetwork::ESBNetwork
ESBNetwork(radio_t &_radio)
Definition RF24Network.cpp:63
ESBNetwork::external_queue
std::queue< RF24NetworkFrame > external_queue
Definition RF24Network.h:774
@@ -458,7 +466,8 @@ + diff --git a/RF24Network__config_8h.html b/RF24Network__config_8h.html index a4aba65a..5d354e99 100644 --- a/RF24Network__config_8h.html +++ b/RF24Network__config_8h.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: RF24Network_config.h File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
+
@@ -97,6 +110,8 @@ #define SLOW_ADDR_POLL_RESPONSE   10  Adds a delay to node prior to transmitting NETWORK_ADDR_RESPONSE messages.
  +#define NUM_PIPES   6 +  #define RF24NetworkMulticast  When defined, this will allow the use of multicasting messages.
  @@ -108,8 +123,6 @@   #define ENABLE_DYNAMIC_PAYLOADS   -#define NUM_PIPES   6 - 

Macro Definition Documentation

@@ -175,6 +188,21 @@

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

+
@@ -246,27 +274,13 @@

Enable dynamic payloads - If using different types of nRF24L01 modules, some may be incompatible when using this feature

- - -
-

◆ 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

-
+ diff --git a/RF24Network__config_8h_source.html b/RF24Network__config_8h_source.html index 51191bf5..591afc9e 100644 --- a/RF24Network__config_8h_source.html +++ b/RF24Network__config_8h_source.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: RF24Network_config.h Source File @@ -11,6 +11,8 @@ + + @@ -35,29 +37,35 @@ - + + + +
-
34 #define SLOW_ADDR_POLL_RESPONSE 10
35#endif // defined DOXYGEN_FORCED
36
-
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
+
41#define NUM_PIPES 6
+
42
+
43#if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__)
44
-
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
+
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)
79
-
80 #ifndef DISABLE_DYNAMIC_PAYLOADS
-
82 #define ENABLE_DYNAMIC_PAYLOADS
-
83 #endif // DISABLE_DYNAMIC_PAYLOADS
-
84
-
89 #define NUM_PIPES 6
+
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
@@ -216,7 +224,8 @@ + diff --git a/addressing_8md.html b/addressing_8md.html index 277b7c83..ef4ea056 100644 --- a/addressing_8md.html +++ b/addressing_8md.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: docs/addressing.md File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
+
docs/addressing.md File Reference
@@ -81,7 +94,8 @@
+ diff --git a/advanced__config_8md.html b/advanced__config_8md.html index 687c8e6f..70ba47ac 100644 --- a/advanced__config_8md.html +++ b/advanced__config_8md.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: docs/advanced_config.md File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
+
docs/advanced_config.md File Reference
@@ -81,7 +94,8 @@
+ diff --git a/annotated.html b/annotated.html index 2535ac1e..0a8c75bf 100644 --- a/annotated.html +++ b/annotated.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Class List @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@ - + + +
+
+
diff --git a/classESBNetwork-members.html b/classESBNetwork-members.html index a5bc9e3f..663faa74 100644 --- a/classESBNetwork-members.html +++ b/classESBNetwork-members.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Member List @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@
- + + +
+
ESBNetwork< radio_t > Member List
@@ -112,7 +125,8 @@
+ diff --git a/classESBNetwork.html b/classESBNetwork.html index 31302bd7..14256f2b 100644 --- a/classESBNetwork.html +++ b/classESBNetwork.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: ESBNetwork< radio_t > Class Template Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
+
@@ -233,8 +246,8 @@

-

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);
@@ -260,7 +273,7 @@

uint8_t ESBNetwork< radio_t >::update ( - void ) + void ) @@ -282,7 +295,7 @@

bool ESBNetwork< radio_t >::available ( - void ) + void ) @@ -331,17 +344,17 @@

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

@@ -369,17 +382,17 @@

uint16_t ESBNetwork< radio_t >::read ( - RF24NetworkHeader & header, + RF24NetworkHeader & header, - void * message, + void * message, - uint16_t maxlen = MAX_PAYLOAD_SIZE ) + uint16_t maxlen = MAX_PAYLOAD_SIZE )

@@ -419,12 +432,12 @@

bool ESBNetwork< radio_t >::write ( - RF24NetworkHeader & header, + RF24NetworkHeader & header, - const void * message, + const void * message, @@ -529,7 +542,7 @@

void ESBNetwork< radio_t >::failures ( - uint32_t * _fails, + uint32_t * _fails, @@ -555,22 +568,22 @@

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

@@ -604,17 +617,17 @@

bool ESBNetwork< radio_t >::write ( - RF24NetworkHeader & header, + RF24NetworkHeader & header, - const void * message, + const void * message, - uint16_t len, + uint16_t len, @@ -638,17 +651,17 @@

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

@@ -700,7 +713,7 @@

uint16_t ESBNetwork< radio_t >::parent ( - ) + ) const @@ -721,7 +734,7 @@

uint16_t ESBNetwork< radio_t >::addressOfPipe ( - uint16_t node, + uint16_t node, @@ -750,7 +763,7 @@

-

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
@@ -773,7 +786,7 @@

void ESBNetwork< radio_t >::begin

- + @@ -1041,7 +1054,8 @@

+ diff --git a/classes.html b/classes.html index 6cc99aa8..9b6b1ae2 100644 --- a/classes.html +++ b/classes.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Class Index @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@

nodeThe specified logical address of a network node.
(uint8_t _channel, uint8_t _channel,

- + +

+
+
+
diff --git a/deprecated.html b/deprecated.html index f03f9a05..ab1a9157 100644 --- a/deprecated.html +++ b/deprecated.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Deprecated List @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@
- + + +
+
Deprecated List
@@ -86,7 +99,8 @@
+
diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html index c056332b..54e6232c 100644 --- a/dir_49e56c817e5e54854c35e136979f97ca.html +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: docs Directory Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@
- + + + +
docs Directory Reference
@@ -85,7 +98,8 @@
+ diff --git a/doxygen-custom.css b/doxygen-custom.css index 2b5ef5a1..4a3c469c 100644 --- a/doxygen-custom.css +++ b/doxygen-custom.css @@ -2,33 +2,74 @@ table.markdownTable th { color: unset; } -/* overrides from default CSSS for some admonitions */ -dl.note, dl.remark, -dl.warning, dl.attention { +/* 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); + background: var(--remark-color-bg); + border-left: 8px solid var(--remark-color-hl); } + dl.remark dt { - color: var(--remark-color-hl); + 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); + background: var(--seealso-color-bg); + border-left: 8px solid var(--seealso-color-hl); } + dl.see dt { - color: var(--seealso-color-hl); + color: var(--seealso-color-hl); } + dl.see { padding: 10px; - margin: 10px 0px; - overflow: hidden; - margin-left: 0; - border-radius: 4px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.see dd { + margin-left: 0; } /* admonition icons */ @@ -36,72 +77,90 @@ 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 { - vertical-align: middle; - background-repeat: no-repeat; - content: ""; - display: inline-block; - height: 2em; - width: 2em; +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.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,'); - --seealso-icon: url('data:image/svg+xml;utf8,'); + --note-icon: url('data:image/svg+xml;utf8,'); --warning-icon: url('data:image/svg+xml;utf8,'); - --remark-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 { - /* light theme CSS variables */ - --note-color-bg: hsla(47.6, 77.3%, 91.4%, 65%); - --warning-color-bg: hsla(6.8, 75.9%, 88.6%, 65%); - --deprecated-color-bg: hsla(205.7, 22.6%, 93.9%, 65%); - --seealso-color-bg: hsla(215, 76%, 89%, 65%); - --seealso-color-hl: hsl(215, 98%, 48%); - --remark-color-bg: hsla(133, 75%, 89%, 65%); - --remark-color-hl: hsl(133, 98.9%, 35.3%); -} - +html, html.dark-mode { - /* dark theme CSS variables */ - --note-color-bg: hsla(45.8, 87.3%, 12.4%, 65%); - --warning-color-bg: hsla(5.2, 33.3%, 13.5%, 65%); - --deprecated-color-bg: hsla(221.5, 12.4%, 20.6%, 65%); - --seealso-color-bg: hsla(215, 33%, 14%, 0.65); - --seealso-color-hl: hsl(215, 98%, 48%); - --remark-color-bg: hsla(133, 32%, 14%, 65%); - --remark-color-hl: hsl(133, 98%, 48%); + --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 9cf4f26e..d6d0679a 100644 --- a/doxygen.css +++ b/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.10.0*/ +/* The standard CSS for doxygen 1.11.0*/ html { /* page base colors */ @@ -655,7 +655,24 @@ 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; } @@ -1612,7 +1629,7 @@ dl.note { border-color: #D0C000; } -dl.warning, dl.attention { +dl.warning, dl.attention, dl.important { margin-left: -7px; padding-left: 3px; border-left: 4px solid; @@ -1660,7 +1677,7 @@ dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { font-weight: bold !important; } -dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +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; @@ -1673,13 +1690,13 @@ dl.section dd { margin-bottom: 2px; } -dl.warning, dl.attention { +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.warning dt, dl.attention dt, dl.important dt { color: var(--warning-color-hl); } @@ -1737,7 +1754,9 @@ dl.deprecated dt a { color: var(--deprecated-color-hl) !important; } -dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { +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; } diff --git a/doxygen_crawl.html b/doxygen_crawl.html index 187920d9..24ccd941 100644 --- a/doxygen_crawl.html +++ b/doxygen_crawl.html @@ -4,7 +4,7 @@ Validator / crawler helper - + @@ -102,5 +102,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js index 8f493264..b05f4c8d 100644 --- a/dynsections.js +++ b/dynsections.js @@ -23,6 +23,10 @@ @licend The above is the entire license notice for the JavaScript code in this file */ +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + let dynsection = { // helper function diff --git a/examples.html b/examples.html index d0ee1f8f..6cdcc783 100644 --- a/examples.html +++ b/examples.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Examples @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@ - + + +
+
+
diff --git a/files.html b/files.html index dc152342..06e5d5d1 100644 --- a/files.html +++ b/files.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: File List @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@
- + + +
+
+
diff --git a/functions.html b/functions.html index 27f96ab4..ea6c1b62 100644 --- a/functions.html +++ b/functions.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Class Members @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@
- + + +
+
- w -

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. 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 (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.

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.

@@ -183,6 +196,7 @@

  • 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
  • @@ -203,7 +217,8 @@

    + diff --git a/main__page_8md.html b/main__page_8md.html index 1289a9b3..e1c207f4 100644 --- a/main__page_8md.html +++ b/main__page_8md.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: docs/main_page.md File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    docs/main_page.md File Reference
    @@ -81,7 +94,8 @@
    + diff --git a/md_CONTRIBUTING.html b/md_CONTRIBUTING.html index 4c27ab3b..58b6f95a 100644 --- a/md_CONTRIBUTING.html +++ b/md_CONTRIBUTING.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: CONTRIBUTING @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    CONTRIBUTING
    @@ -95,7 +108,8 @@
    +
    diff --git a/md_docs_2addressing.html b/md_docs_2addressing.html index 59fd1c81..7102d34d 100644 --- a/md_docs_2addressing.html +++ b/md_docs_2addressing.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Addressing Format: Understanding Addressing and Topology @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    Addressing Format: Understanding Addressing and Topology
    @@ -92,6 +105,7 @@

    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.

    Decimal, Octal and Binary formats

    @@ -104,6 +118,7 @@

    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.

    Decimal, Octal and Binary

    @@ -138,7 +153,8 @@

    + diff --git a/md_docs_2advanced__config.html b/md_docs_2advanced__config.html index 05989442..eac2f269 100644 --- a/md_docs_2advanced__config.html +++ b/md_docs_2advanced__config.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Advanced Configuration @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@

    - + + +
    +
    Advanced Configuration
    @@ -96,13 +109,18 @@ #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 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
    + diff --git a/md_docs_2tuning.html b/md_docs_2tuning.html index 34412594..fbe4adb7 100644 --- a/md_docs_2tuning.html +++ b/md_docs_2tuning.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Performance and Data Loss: Tuning the Network @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    Performance and Data Loss: Tuning the Network
    @@ -88,8 +101,9 @@
  • Tuning Overview
  • Auto-Retry Timing
  • Auto-Retry Count and Extended Timeouts
  • -
  • Scenarios @@ -102,10 +116,10 @@

    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, 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, (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.

    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 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.

    +

    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.

    Expressing RF24Network addresses in IP format

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

    @@ -120,7 +134,7 @@

    Multicast

    -

    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.

    +

    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.

    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.

    @@ -142,8 +156,20 @@

    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 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.

      @@ -154,7 +180,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.

      @@ -170,7 +196,8 @@

    + diff --git a/md_docs_2zigabee.html b/md_docs_2zigabee.html index ac7060bc..ec22c597 100644 --- a/md_docs_2zigabee.html +++ b/md_docs_2zigabee.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Comparison to ZigBee @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    Comparison to ZigBee
    -

    +

    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.

    -

    +

    Similiarities & Differences

    Here are some comparisons between RF24Network and ZigBee.

      @@ -99,7 +112,7 @@

    • 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.
    • @@ -110,7 +123,8 @@

    +
    diff --git a/menu.js b/menu.js index 717761d0..0fd1e990 100644 --- a/menu.js +++ b/menu.js @@ -22,7 +22,7 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { function makeTree(data,relPath) { let result=''; if ('children' in data) { @@ -91,7 +91,7 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { let prevWidth = 0; if ($mainMenuState.length) { const initResizableIfExists = function() { - if (typeof initResizable==='function') initResizable(); + if (typeof initResizable==='function') initResizable(treeview); } // animate mobile menu $mainMenuState.change(function() { diff --git a/navtree.css b/navtree.css new file mode 100644 index 00000000..69211d4a --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#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/pages.html b/pages.html index 5d7d7ff4..f3c3c105 100644 --- a/pages.html +++ b/pages.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Related Pages @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@
    - + +
    +
    +
    +
    diff --git a/resize.js b/resize.js new file mode 100644 index 00000000..7d8cdc7d --- /dev/null +++ b/resize.js @@ -0,0 +1,145 @@ +/* + @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 83d428f3..895db538 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_md30',1,'']]] + ['1_0',['Example 1',['../md_docs_2tuning.html#autotoc_md31',1,'']]] ]; diff --git a/search/all_1.js b/search/all_1.js index f9da4c7f..ff67fd2f 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -1,5 +1,5 @@ var searchData= [ - ['2_0',['Example 2',['../md_docs_2tuning.html#autotoc_md31',1,'']]], + ['2_0',['Example 2',['../md_docs_2tuning.html#autotoc_md32',1,'']]], ['2023_20api_20changes_1',['News - 2023 API Changes',['../index.html#autotoc_md9',1,'']]] ]; diff --git a/search/all_12.js b/search/all_12.js index 9fdb3b82..c693c676 100644 --- a/search/all_12.js +++ b/search/all_12.js @@ -1,8 +1,8 @@ var searchData= [ - ['scenarios_0',['Scenarios',['../md_docs_2tuning.html#autotoc_md29',1,'']]], + ['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_md34',1,'']]], + ['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,'']]], diff --git a/search/all_14.js b/search/all_14.js index c1f9b5d1..a7eda351 100644 --- a/search/all_14.js +++ b/search/all_14.js @@ -4,9 +4,10 @@ var searchData= ['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']]], - ['use_5fcurrent_5fchannel_4',['USE_CURRENT_CHANNEL',['../RF24Network_8h.html#a3701f6ea99dcf399641f2ad29303f8cc',1,'RF24Network.h']]], - ['user_5ftx_5fmulticast_5',['USER_TX_MULTICAST',['../RF24Network_8h.html#ae2f8b695f040aa6f1e8ec92b438aa303',1,'RF24Network.h']]], - ['user_5ftx_5fto_5flogical_5faddress_6',['USER_TX_TO_LOGICAL_ADDRESS',['../RF24Network_8h.html#a4726586dd8fbf75bbfffffd18ebdbeb3',1,'RF24Network.h']]], - ['user_5ftx_5fto_5fphysical_5faddress_7',['USER_TX_TO_PHYSICAL_ADDRESS',['../RF24Network_8h.html#afbef4cc504fbd93102265ff8d01cbafc',1,'RF24Network.h']]], - ['using_20nrf24l01_8',['Topology for Mesh Networks using nRF24L01(+)',['../index.html#autotoc_md15',1,'']]] + ['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 index ae89ba34..874c5e98 100644 --- a/search/all_15.js +++ b/search/all_15.js @@ -1,5 +1,6 @@ var searchData= [ - ['which_20is_20better_0',['Which is better?',['../md_docs_2zigabee.html#autotoc_md33',1,'']]], - ['write_1',['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)']]] + ['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_3.js b/search/all_3.js index abf0bacd..382c96e1 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -5,7 +5,7 @@ var searchData= ['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',['Octal Addressing and Topology',['../index.html#autotoc_md16',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']]], @@ -15,11 +15,10 @@ var searchData= ['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',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['and_20topology_16',['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_17',['News - 2023 API Changes',['../index.html#autotoc_md9',1,'']]], - ['auto_20retry_20count_20and_20extended_20timeouts_18',['Auto-Retry Count and Extended Timeouts',['../md_docs_2tuning.html#autotoc_md28',1,'']]], - ['auto_20retry_20timing_19',['Auto-Retry Timing',['../md_docs_2tuning.html#autotoc_md27',1,'']]], - ['available_20',['available',['../classESBNetwork.html#a40bcc2562b1faf1c72eccf52efa1f5cd',1,'ESBNetwork']]], - ['available_20addresses_21',['Available Addresses',['../md_docs_2addressing.html#autotoc_md3',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,'']]] ]; diff --git a/search/all_4.js b/search/all_4.js index d3358532..d856f53d 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -1,7 +1,7 @@ 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_md33',1,'']]], + ['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,'']]] ]; diff --git a/search/all_6.js b/search/all_6.js index cf40ac66..8928a2d5 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -4,8 +4,9 @@ var searchData= ['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,'']]], - ['differences_4',['Similiarities & Differences',['../md_docs_2zigabee.html#autotoc_md34',1,'']]], - ['directionality_5',['Directionality',['../index.html#autotoc_md19',1,'']]], - ['displaying_20addresses_6',['Displaying Addresses',['../md_docs_2addressing.html#autotoc_md5',1,'']]], - ['does_20not_20provide_7',['The layer does not provide',['../index.html#autotoc_md12',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,'']]] ]; diff --git a/search/all_7.js b/search/all_7.js index 2e457116..cddce713 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -2,8 +2,8 @@ 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_md30',1,'']]], - ['example_202_3',['Example 2',['../md_docs_2tuning.html#autotoc_md31',1,'']]], + ['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']]], diff --git a/search/all_b.js b/search/all_b.js index 16befd6b..d7e0cc40 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -4,7 +4,7 @@ var searchData= ['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_md33',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']]] ]; diff --git a/search/all_d.js b/search/all_d.js index cff980e2..3bc9770e 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -11,8 +11,8 @@ var searchData= ['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',['../classESBNetwork.html#a3e6e9e74461290d6f648e972ee4aaf91',1,'ESBNetwork']]], - ['multicast_12',['Multicast',['../md_docs_2tuning.html#autotoc_md24',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']]] ]; diff --git a/search/all_e.js b/search/all_e.js index 0db70304..83e9ccd2 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -1,6 +1,6 @@ var searchData= [ - ['naming_0',['Node Naming',['../md_docs_2zigabee.html#autotoc_md35',1,'']]], + ['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']]], @@ -22,9 +22,10 @@ var searchData= ['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_md35',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,'']]], - ['num_5fpipes_26',['NUM_PIPES',['../RF24Network__config_8h.html#aea10fcc3ece9abf30d548a2cba57d2aa',1,'RF24Network_config.h']]] + ['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']]] ]; diff --git a/search/pages_0.js b/search/pages_0.js index c5a35749..98937d95 100644 --- a/search/pages_0.js +++ b/search/pages_0.js @@ -1,7 +1,8 @@ var searchData= [ - ['addressing_20format_3a_20understanding_20addressing_20and_20topology_0',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]], - ['advanced_20configuration_1',['Advanced Configuration',['../md_docs_2advanced__config.html',1,'']]], - ['and_20data_20loss_3a_20tuning_20the_20network_2',['Performance and Data Loss: Tuning the Network',['../md_docs_2tuning.html',1,'']]], - ['and_20topology_3',['Addressing Format: Understanding Addressing and Topology',['../md_docs_2addressing.html',1,'']]] + ['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,'']]] ]; diff --git a/structRF24NetworkFrame-members.html b/structRF24NetworkFrame-members.html index 8e9e1328..3ae0cec8 100644 --- a/structRF24NetworkFrame-members.html +++ b/structRF24NetworkFrame-members.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Member List @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@
    - + + +
    +
    RF24NetworkFrame Member List
    @@ -90,7 +103,8 @@
    +
    diff --git a/structRF24NetworkFrame.html b/structRF24NetworkFrame.html index 28013dca..3c53904a 100644 --- a/structRF24NetworkFrame.html +++ b/structRF24NetworkFrame.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: RF24NetworkFrame Struct Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    Public Member Functions | @@ -123,7 +136,7 @@

    RF24NetworkFrame::RF24NetworkFrame ( - ) + ) @@ -150,17 +163,17 @@

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

    RF24NetworkFrame::RF24NetworkFrame ( - RF24NetworkHeader & _header, + RF24NetworkHeader & _header, @@ -270,7 +283,8 @@

    +

    diff --git a/structRF24NetworkHeader-members.html b/structRF24NetworkHeader-members.html index 1d78a390..441ac6e5 100644 --- a/structRF24NetworkHeader-members.html +++ b/structRF24NetworkHeader-members.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Member List @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@
    - + + +
    +
    RF24NetworkHeader Member List
    @@ -93,7 +106,8 @@
    +
    diff --git a/structRF24NetworkHeader.html b/structRF24NetworkHeader.html index 8641b261..67ffed43 100644 --- a/structRF24NetworkHeader.html +++ b/structRF24NetworkHeader.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: RF24NetworkHeader Struct Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    diff --git a/topics.html b/topics.html index eff49850..cdd16c7f 100644 --- a/topics.html +++ b/topics.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: Topics @@ -11,6 +11,8 @@ + + @@ -35,24 +37,35 @@
    - + +
    +
    +
    +
    diff --git a/tuning_8md.html b/tuning_8md.html index 28011acc..d9f88ac9 100644 --- a/tuning_8md.html +++ b/tuning_8md.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: docs/tuning.md File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@
    - + + +
    +
    docs/tuning.md File Reference
    @@ -81,7 +94,8 @@
    + diff --git a/zigabee_8md.html b/zigabee_8md.html index c0287f24..53a177f7 100644 --- a/zigabee_8md.html +++ b/zigabee_8md.html @@ -3,7 +3,7 @@ - + Optimized RF24Network Layer: docs/zigabee.md File Reference @@ -11,6 +11,8 @@ + + @@ -35,23 +37,33 @@ - + + +
    +
    docs/zigabee.md File Reference
    @@ -81,7 +94,8 @@
    +