From 4e682fb17f2b24fbd4f90ea0702462474998f460 Mon Sep 17 00:00:00 2001 From: 2bndy5 <2bndy5@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:07:52 +0000 Subject: [PATCH] deploy: 9f03fca58af512da3a380d462e53ee2424110316 --- CONTRIBUTING_8md.html | 20 +- Makefile.html | 20 +- Makefile_source.html | 19 +- RF24Mesh_8cpp.html | 20 +- RF24Mesh_8cpp_source.html | 1141 +++++++++-------- RF24Mesh_8h.html | 22 +- RF24Mesh_8h_source.html | 103 +- RF24Mesh_Example_8cpp-example.html | 22 +- RF24Mesh_Example_8ino-example.html | 22 +- RF24Mesh_Example_Master_8cpp-example.html | 20 +- RF24Mesh_Example_Master_8ino-example.html | 20 +- ...h_Example_Node2NodeExtra_8ino-example.html | 22 +- RF24Mesh_Example_Node2Node_8ino-example.html | 22 +- RF24Mesh_Ncurses_Master_8cpp-example.html | 20 +- RF24Mesh_SerialConfig_8ino-example.html | 22 +- RF24Mesh__config_8h.html | 78 +- RF24Mesh__config_8h_source.html | 119 +- annotated.html | 20 +- classESBMesh-members.html | 43 +- classESBMesh.html | 155 ++- classESBNetwork.html | 20 +- classes.html | 20 +- deprecated.html | 20 +- dir_49e56c817e5e54854c35e136979f97ca.html | 20 +- doxygen-custom.css | 145 ++- doxygen.css | 31 +- doxygen_crawl.html | 96 +- dynsections.js | 4 + examples.html | 20 +- files.html | 20 +- functions.html | 20 +- functions_func.html | 20 +- functions_vars.html | 20 +- general__usage_8md.html | 20 +- globals.html | 25 +- globals_defs.html | 25 +- globals_type.html | 20 +- index.html | 20 +- main__page_8md.html | 20 +- md_CONTRIBUTING.html | 20 +- md_docs_2general__usage.html | 20 +- md_docs_2setup__config.html | 20 +- navtree.css | 149 +++ pages.html | 20 +- resize.js | 145 +++ search/all_10.js | 2 +- search/all_a.js | 4 +- search/all_c.js | 23 +- search/defines_0.js | 4 +- search/defines_1.js | 21 +- search/functions_6.js | 2 +- setup__config_8md.html | 20 +- structESBMesh_1_1addrListStruct-members.html | 20 +- structESBMesh_1_1addrListStruct.html | 20 +- 54 files changed, 2067 insertions(+), 939 deletions(-) create mode 100644 navtree.css create mode 100644 resize.js diff --git a/CONTRIBUTING_8md.html b/CONTRIBUTING_8md.html index ace8139..1c17e4a 100644 --- a/CONTRIBUTING_8md.html +++ b/CONTRIBUTING_8md.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: CONTRIBUTING.md File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
CONTRIBUTING.md File Reference
@@ -103,7 +116,8 @@
+ diff --git a/Makefile.html b/Makefile.html index 3a2418d..69ae4e9 100644 --- a/Makefile.html +++ b/Makefile.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Makefile File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
Makefile File Reference
@@ -105,7 +118,8 @@
+ diff --git a/Makefile_source.html b/Makefile_source.html index d50fbf6..102a836 100644 --- a/Makefile_source.html +++ b/Makefile_source.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Makefile Source File @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + + +
-
+ diff --git a/RF24Mesh_8cpp.html b/RF24Mesh_8cpp.html index 55c09a7..30c89a5 100644 --- a/RF24Mesh_8cpp.html +++ b/RF24Mesh_8cpp.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh.cpp File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
@@ -134,7 +147,8 @@

+

diff --git a/RF24Mesh_8cpp_source.html b/RF24Mesh_8cpp_source.html index 76cb0ef..a32d872 100644 --- a/RF24Mesh_8cpp_source.html +++ b/RF24Mesh_8cpp_source.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh.cpp Source File @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + + +
-
89 }
90 else if (type == MESH_ADDR_RELEASE) {
91 uint16_t* fromAddr = (uint16_t*)network.frame_buffer;
-
92 for (uint8_t i = 0; i < addrListTop; i++) {
-
93 if (addrList[i].address == *fromAddr) {
-
94 addrList[i].address = 0;
-
95 }
-
96 }
-
97 }
-
98 }
-
99#endif
-
100
-
101 return type;
-
102}
+
92 releaseAddress(*fromAddr);
+
93 }
+
94 }
+
95#endif
+
96
+
97 return type;
+
98}
-
103
-
104/*****************************************************/
-
105
-
106template<class network_t, class radio_t>
-
-
107bool ESBMesh<network_t, radio_t>::write(uint16_t to_node, const void* data, uint8_t msg_type, size_t size)
-
108{
-
109 if (mesh_address == MESH_DEFAULT_ADDRESS) return 0;
-
110
-
111 RF24NetworkHeader header(to_node, msg_type);
-
112 return network.write(header, data, size);
-
113}
+
99
+
100/*****************************************************/
+
101
+
102template<class network_t, class radio_t>
+
+
103bool ESBMesh<network_t, radio_t>::write(uint16_t to_node, const void* data, uint8_t msg_type, size_t size)
+
104{
+
105 if (mesh_address == MESH_DEFAULT_ADDRESS) return 0;
+
106
+
107 RF24NetworkHeader header(to_node, msg_type);
+
108 return network.write(header, data, size);
+
109}
-
114
-
115/*****************************************************/
-
116
-
117template<class network_t, class radio_t>
-
-
118bool ESBMesh<network_t, radio_t>::write(const void* data, uint8_t msg_type, size_t size, uint8_t nodeID)
-
119{
-
120 if (mesh_address == MESH_DEFAULT_ADDRESS) return 0;
+
110
+
111/*****************************************************/
+
112
+
113template<class network_t, class radio_t>
+
+
114bool ESBMesh<network_t, radio_t>::write(const void* data, uint8_t msg_type, size_t size, uint8_t nodeID)
+
115{
+
116 if (mesh_address == MESH_DEFAULT_ADDRESS) return 0;
+
117
+
118 int16_t toNode = 0;
+
119 uint32_t lookupTimeout = millis() + MESH_WRITE_TIMEOUT;
+
120 uint32_t retryDelay = 5;
121
-
122 int16_t toNode = 0;
-
123 uint32_t lookupTimeout = millis() + MESH_WRITE_TIMEOUT;
-
124 uint32_t retryDelay = 5;
-
125
-
126 if (nodeID) {
-
127 while ((toNode = getAddress(nodeID)) < 0) {
-
128 if (millis() > lookupTimeout || toNode == -2) {
-
129 return 0;
-
130 }
-
131 retryDelay += 10;
-
132 delay(retryDelay);
-
133 }
-
134 }
-
135 return write(toNode, data, msg_type, size);
-
136}
+
122 if (nodeID) {
+
123 while ((toNode = getAddress(nodeID)) < 0) {
+
124 if (millis() > lookupTimeout || toNode == -2) {
+
125 return 0;
+
126 }
+
127 retryDelay += 10;
+
128 delay(retryDelay);
+
129 }
+
130 }
+
131 return write(toNode, data, msg_type, size);
+
132}
-
137
-
138/*****************************************************/
-
139
-
140template<class network_t, class radio_t>
-
- -
142{
-
143 radio.stopListening();
-
144 radio.setChannel(_channel);
-
145 radio.startListening();
-
146}
+
133
+
134/*****************************************************/
+
135
+
136template<class network_t, class radio_t>
+
+ +
138{
+
139 radio.stopListening();
+
140 radio.setChannel(_channel);
+
141 radio.startListening();
+
142}
-
147
-
148/*****************************************************/
-
149
-
150template<class network_t, class radio_t>
-
- -
152{
-
153 network.networkFlags = allow ? network.networkFlags & ~FLAG_NO_POLL : network.networkFlags | FLAG_NO_POLL;
-
154}
+
143
+
144/*****************************************************/
+
145
+
146template<class network_t, class radio_t>
+
+ +
148{
+
149 network.networkFlags = allow ? network.networkFlags & ~FLAG_NO_POLL : network.networkFlags | FLAG_NO_POLL;
+
150}
-
155
-
156/*****************************************************/
-
157
-
158template<class network_t, class radio_t>
-
- -
160{
-
161 // getAddress() doesn't use auto-ack; do a double-check to manually retry 1 more time
-
162 if (getAddress(_nodeID) < 1) {
-
163 if (getAddress(_nodeID) < 1) {
-
164 return false;
-
165 }
-
166 }
-
167 return true;
-
168}
+
151
+
152/*****************************************************/
+
153
+
154template<class network_t, class radio_t>
+
+ +
156{
+
157 // getAddress() doesn't use auto-ack; do a double-check to manually retry 1 more time
+
158 for (uint8_t i = 0; i < MESH_CONNECTION_CHECK_ATTEMPTS; i++) {
+
159
+
160 int16_t result = getAddress(_nodeID);
+
161 switch (result) {
+
162 case -2: return false; // Address not found in list or is default
+
163 case -1: continue; // Write failed or timed out
+
164 case 0: return false; // This is a master node
+
165 default:
+
166 if ((uint16_t)result == mesh_address) { // Successful address lookup if result == RF24Network address
+
167 return true;
+
168 }
+
169 break;
+
170 }
+
171 }
+
172 return false;
+
173}
-
169
-
170/*****************************************************/
-
171
-
172template<class network_t, class radio_t>
-
- -
174{ // Master will return and send 00 address for a nodeID with address 0, -1 if not found
-
175
-
176 //if (nodeID == _nodeID) return mesh_address;
-
177 if (!nodeID) return 0;
-
178 if (mesh_address == MESH_DEFAULT_ADDRESS) return -2;
-
179
-
180// Lets say 0 if nodeID 0, -1 if write failed or timed out, -2 if not found in list or address is default,
-
181#if !defined(MESH_NOMASTER)
-
182 if (!getNodeID()) { //Master Node
-
183 for (uint8_t i = 0; i < addrListTop; i++) {
-
184 if (addrList[i].nodeID == nodeID) {
-
185 return addrList[i].address;
-
186 }
-
187 }
-
188 return -2;
-
189 }
-
190#endif
-
191
-
192 RF24NetworkHeader header(00, MESH_ADDR_LOOKUP);
-
193 if (network.write(header, &nodeID, sizeof(nodeID))) {
-
194 uint32_t timer = millis();
-
195 while (network.update() != MESH_ADDR_LOOKUP) {
- -
197 if (millis() - timer > MESH_LOOKUP_TIMEOUT) {
-
198 return -1;
-
199 }
-
200 }
-
201 int16_t address = 0;
-
202 memcpy(&address, network.frame_buffer + sizeof(RF24NetworkHeader), sizeof(address));
-
203 return address;
-
204 }
-
205 return -1;
-
206}
+
174
+
175/*****************************************************/
+
176
+
177template<class network_t, class radio_t>
+
+ +
179{ // Master will return and send 00 address for a nodeID with address 0, -1 if not found
+
180
+
181 //if (nodeID == _nodeID) return mesh_address;
+
182 if (!nodeID) return 0;
+
183 if (mesh_address == MESH_DEFAULT_ADDRESS) return -2;
+
184
+
185// Lets say 0 if nodeID 0, -1 if write failed or timed out, -2 if not found in list or address is default,
+
186#if !defined(MESH_NOMASTER)
+
187 if (!getNodeID()) { //Master Node
+
188 for (uint8_t i = 0; i < addrListTop; i++) {
+
189 if (addrList[i].nodeID == nodeID) {
+
190 return addrList[i].address;
+
191 }
+
192 }
+
193 return -2;
+
194 }
+
195#endif
+
196
+
197 RF24NetworkHeader header(00, MESH_ADDR_LOOKUP);
+
198 if (network.write(header, &nodeID, sizeof(nodeID))) {
+
199 uint32_t timer = millis();
+
200 while (network.update() != MESH_ADDR_LOOKUP) {
+ +
202 if (millis() - timer > MESH_LOOKUP_TIMEOUT) {
+
203 return -1;
+
204 }
+
205 }
+
206 int16_t address = 0;
+
207 memcpy(&address, network.frame_buffer + sizeof(RF24NetworkHeader), sizeof(address));
+
208 return address;
+
209 }
+
210 return -1;
+
211}
-
207
-
208/*****************************************************/
-
209
-
210template<class network_t, class radio_t>
-
- -
212{
-
213 if (address == MESH_BLANK_ID) return _nodeID;
-
214 if (address == 0) return 0;
-
215 if (mesh_address == MESH_DEFAULT_ADDRESS) return -2;
-
216
-
217#if !defined(MESH_NOMASTER)
-
218 if (!mesh_address) { //Master Node
-
219 for (uint8_t i = 0; i < addrListTop; i++) {
-
220 if (addrList[i].address == address) {
-
221 return addrList[i].nodeID;
-
222 }
-
223 }
-
224 return -2;
-
225 }
-
226#endif
-
227
-
228 RF24NetworkHeader header(00, MESH_ID_LOOKUP);
-
229 if (network.write(header, &address, sizeof(address))) {
-
230 uint32_t timer = millis();
-
231 while (network.update() != MESH_ID_LOOKUP) {
- -
233 if (millis() - timer > MESH_LOOKUP_TIMEOUT) return -1;
-
234 }
-
235 int16_t ID = 0;
-
236 memcpy(&ID, &network.frame_buffer[sizeof(RF24NetworkHeader)], sizeof(ID));
-
237 return ID;
-
238 }
-
239 return -1;
-
240}
+
212
+
213/*****************************************************/
+
214
+
215template<class network_t, class radio_t>
+
+ +
217{
+
218 if (address == MESH_BLANK_ID) return _nodeID;
+
219 if (address == 0) return 0;
+
220 if (mesh_address == MESH_DEFAULT_ADDRESS) return -2;
+
221
+
222#if !defined(MESH_NOMASTER)
+
223 if (!mesh_address) { //Master Node
+
224 for (uint8_t i = 0; i < addrListTop; i++) {
+
225 if (addrList[i].address == address) {
+
226 return addrList[i].nodeID;
+
227 }
+
228 }
+
229 return -2;
+
230 }
+
231#endif
+
232
+
233 RF24NetworkHeader header(00, MESH_ID_LOOKUP);
+
234 if (network.write(header, &address, sizeof(address))) {
+
235 uint32_t timer = millis();
+
236 while (network.update() != MESH_ID_LOOKUP) {
+ +
238 if (millis() - timer > MESH_LOOKUP_TIMEOUT) return -1;
+
239 }
+
240 int16_t ID = 0;
+
241 memcpy(&ID, &network.frame_buffer[sizeof(RF24NetworkHeader)], sizeof(ID));
+
242 return ID;
+
243 }
+
244 return -1;
+
245}
-
241
-
242/*****************************************************/
-
243
-
244template<class network_t, class radio_t>
-
245uint8_t ESBMesh<network_t, radio_t>::getLevel(uint16_t address)
-
246{
-
247 uint8_t count = 0;
-
248 while (address) {
-
249 address >>= 3;
-
250 count++;
-
251 }
-
252 return count;
-
253}
-
254
-
255/*****************************************************/
-
256
-
257template<class network_t, class radio_t>
- -
259{
-
260 radio.stopListening();
- -
262 mesh_address = MESH_DEFAULT_ADDRESS;
-
263}
-
264
-
265/*****************************************************/
-
266
-
267template<class network_t, class radio_t>
-
- -
269{
-
270 if (mesh_address == MESH_DEFAULT_ADDRESS) return 0;
+
246
+
247/*****************************************************/
+
248
+
249template<class network_t, class radio_t>
+
250uint8_t ESBMesh<network_t, radio_t>::getLevel(uint16_t address)
+
251{
+
252 uint8_t count = 0;
+
253 while (address) {
+
254 address >>= 3;
+
255 count++;
+
256 }
+
257 return count;
+
258}
+
259
+
260/*****************************************************/
+
261
+
262template<class network_t, class radio_t>
+ +
264{
+
265 radio.stopListening();
+ +
267 mesh_address = MESH_DEFAULT_ADDRESS;
+
268}
+
269
+
270/*****************************************************/
271
-
272 RF24NetworkHeader header(00, MESH_ADDR_RELEASE);
-
273 if (network.write(header, 0, 0)) {
-
274 beginDefault();
-
275 return 1;
-
276 }
-
277 return 0;
-
278}
+
272template<class network_t, class radio_t>
+
+ +
274{
+
275 if (mesh_address == MESH_DEFAULT_ADDRESS) return 0;
+
276
+
277 RF24NetworkHeader header(00, MESH_ADDR_RELEASE);
+
278 if (network.write(header, 0, 0)) {
+
279 beginDefault();
+
280 return 1;
+
281 }
+
282 return 0;
+
283}
-
279
-
280/*****************************************************/
-
281
-
282template<class network_t, class radio_t>
-
- -
284{
-
285 if (radio.available()) network.update();
+
284
+
285/*****************************************************/
286
-
287 uint8_t reqCounter = 0;
-
288 uint8_t totalReqs = 0;
-
289
-
290 beginDefault();
-
291
-
292 uint32_t start = millis();
-
293 while (!requestAddress(reqCounter)) {
-
294 if (millis() - start > timeout) break;
-
295
-
296 uint32_t timeoutInternal = 50 + ((totalReqs + 1) * (reqCounter + 1)) * 2;
-
297 uint32_t startInternal = millis();
-
298 while (millis() - startInternal < timeoutInternal) {
- -
300 delay(1);
-
301 }
-
302 reqCounter++;
-
303 reqCounter = reqCounter % 4;
-
304 totalReqs++;
-
305 totalReqs = totalReqs % 10;
-
306 }
-
307 return mesh_address;
-
308}
+
287#ifndef MESH_NOMASTER
+
288template<class network_t, class radio_t>
+
+ +
290{
+
291 for (uint8_t i = 0; i < addrListTop; ++i) {
+
292 if (addrList[i].address == address) {
+
293 addrList[i].address = 0;
+
294 return true;
+
295 }
+
296 }
+
297 return false;
+
298}
-
309
-
310/*****************************************************/
-
311
-
312template<class network_t, class radio_t>
- -
314{
-
315 RF24NetworkHeader header(MESH_MULTICAST_ADDRESS, NETWORK_POLL);
-
316 //Find another radio, starting with level 0 multicast
-
317 IF_MESH_DEBUG(printf_P(PSTR("MSH Poll Level %d\n"), level));
-
318 network.multicast(header, 0, 0, level);
-
319
-
320 uint32_t timeout = millis() + 55;
-
321#define MESH_MAXPOLLS 4
-
322 uint16_t contactNode[MESH_MAXPOLLS];
-
323 uint8_t pollCount = 0;
-
324
-
325 while (millis() < timeout && pollCount < MESH_MAXPOLLS) {
-
326#if defined(MESH_DEBUG)
-
327 bool goodSignal = radio.testRPD();
-
328#endif
-
329 if (network.update() == NETWORK_POLL) {
-
330 uint16_t contact = 0;
-
331 memcpy(&contact, &network.frame_buffer[0], sizeof(contact));
+
299#endif
+
300
+
301/*****************************************************/
+
302
+
303template<class network_t, class radio_t>
+
+ +
305{
+
306 if (radio.available()) network.update();
+
307
+
308 uint8_t reqCounter = 0;
+
309 uint8_t totalReqs = 0;
+
310
+
311 beginDefault();
+
312
+
313 uint32_t start = millis();
+
314 while (!requestAddress(reqCounter)) {
+
315 if (millis() - start > timeout) break;
+
316
+
317 uint32_t timeoutInternal = 50 + ((totalReqs + 1) * (reqCounter + 1)) * 2;
+
318 uint32_t startInternal = millis();
+
319 while (millis() - startInternal < timeoutInternal) {
+ +
321 delay(1);
+
322 }
+
323 reqCounter++;
+
324 reqCounter = reqCounter % 4;
+
325 totalReqs++;
+
326 totalReqs = totalReqs % 10;
+
327 }
+
328 return mesh_address;
+
329}
+
+
330
+
331/*****************************************************/
332
-
333 // Drop duplicate polls to help prevent duplicate requests
-
334 bool isDupe = false;
-
335 for (uint8_t i = 0; i < pollCount; ++i) {
-
336 if (contact == contactNode[i]) {
-
337 isDupe = true;
-
338 break;
-
339 }
-
340 }
-
341 if (!isDupe) {
-
342 contactNode[pollCount] = contact;
-
343 ++pollCount;
-
344 IF_MESH_DEBUG(printf_P(PSTR("MSH Poll %c -64dbm from 0%o \n"), (goodSignal ? '>' : '<'), contact));
-
345 }
-
346
-
347 } // end if
-
348
- -
350 } // end while
-
351
-
352 IF_MESH_DEBUG(printf_P(PSTR("MSH Polls from level %d: %d\n"), level, pollCount));
+
333template<class network_t, class radio_t>
+ +
335{
+
336 RF24NetworkHeader header(MESH_MULTICAST_ADDRESS, NETWORK_POLL);
+
337 //Find another radio, starting with level 0 multicast
+
338 IF_RF24MESH_DEBUG(printf_P(PSTR("MSH Poll Level %d\n"), level));
+
339 network.multicast(header, 0, 0, level);
+
340
+
341 uint32_t timeout = millis() + 55;
+
342#define MESH_MAXPOLLS 4
+
343 uint16_t contactNode[MESH_MAXPOLLS];
+
344 uint8_t pollCount = 0;
+
345
+
346 while (millis() < timeout && pollCount < MESH_MAXPOLLS) {
+
347#if defined(RF24MESH_DEBUG)
+
348 bool goodSignal = radio.testRPD();
+
349#endif
+
350 if (network.update() == NETWORK_POLL) {
+
351 uint16_t contact = 0;
+
352 memcpy(&contact, &network.frame_buffer[0], sizeof(contact));
353
-
354 if (!pollCount) return 0;
-
355
-
356 for (uint8_t i = 0; i < pollCount; i++) {
-
357
-
358 bool gotResponse = 0;
-
359
-
360 // Request an address via the contact node
-
361 header.type = NETWORK_REQ_ADDRESS;
-
362 header.reserved = _nodeID;
-
363 header.to_node = contactNode[i];
-
364
-
365 // Do a direct write (no ack) to the contact node. Include the nodeId and address.
-
366 network.write(header, 0, 0, contactNode[i]);
+
354 // Drop duplicate polls to help prevent duplicate requests
+
355 bool isDupe = false;
+
356 for (uint8_t i = 0; i < pollCount; ++i) {
+
357 if (contact == contactNode[i]) {
+
358 isDupe = true;
+
359 break;
+
360 }
+
361 }
+
362 if (!isDupe) {
+
363 contactNode[pollCount] = contact;
+
364 ++pollCount;
+
365 IF_RF24MESH_DEBUG(printf_P(PSTR("MSH Poll %c -64dbm from 0%o \n"), (goodSignal ? '>' : '<'), contact));
+
366 }
367
-
368 IF_MESH_DEBUG(printf_P(PSTR("MSH Request address from: 0%o\n"), contactNode[i]));
+
368 } // end if
369
-
370 timeout = millis() + 225;
-
371
-
372 while (millis() < timeout) {
-
373 if (network.update() == NETWORK_ADDR_RESPONSE) {
-
374 if (network.frame_buffer[7] == _nodeID) {
-
375 uint16_t newAddy = 0;
-
376 memcpy(&newAddy, &network.frame_buffer[sizeof(RF24NetworkHeader)], sizeof(newAddy));
-
377 uint16_t mask = 0xFFFF;
-
378 newAddy &= ~(mask << (3 * getLevel(contactNode[i]))); // Get the level of contact node. Multiply by 3 to get the number of bits to shift (3 per digit)
-
379 if (newAddy == contactNode[i]) { // Then shift the mask by this much, and invert it bitwise. Apply the mask to the newly received
-
380 gotResponse = 1; // address to evalute whether 'subnet' of the assigned address matches the contact node address.
-
381 break;
-
382 }
-
383 }
-
384 }
- -
386 }
-
387
-
388 if (!gotResponse) {
-
389 continue;
-
390 }
-
391
-
392 uint16_t newAddress = 0;
-
393 memcpy(&newAddress, network.frame_buffer + sizeof(RF24NetworkHeader), sizeof(newAddress));
-
394
-
395 IF_MESH_DEBUG(printf_P(PSTR("Set address: Current: 0%o New: 0%o\n"), mesh_address, newAddress));
-
396 mesh_address = newAddress;
-
397
-
398 radio.stopListening();
-
399 network.begin(mesh_address);
-
400
-
401 // getNodeID() doesn't use auto-ack; do a double-check to manually retry 1 more time
-
402 if (getNodeID(mesh_address) != _nodeID) {
-
403 if (getNodeID(mesh_address) != _nodeID) {
-
404 beginDefault();
-
405 continue;
-
406 }
+ +
371 } // end while
+
372
+
373 IF_RF24MESH_DEBUG(printf_P(PSTR("MSH Polls from level %d: %d\n"), level, pollCount));
+
374
+
375 if (!pollCount) return 0;
+
376
+
377 for (uint8_t i = 0; i < pollCount; i++) {
+
378
+
379 bool gotResponse = 0;
+
380
+
381 // Request an address via the contact node
+
382 header.type = NETWORK_REQ_ADDRESS;
+
383 header.reserved = _nodeID;
+
384 header.to_node = contactNode[i];
+
385
+
386 // Do a direct write (no ack) to the contact node. Include the nodeId and address.
+
387 network.write(header, 0, 0, contactNode[i]);
+
388
+
389 IF_RF24MESH_DEBUG(printf_P(PSTR("MSH Request address from: 0%o\n"), contactNode[i]));
+
390
+
391 timeout = millis() + 225;
+
392
+
393 while (millis() < timeout) {
+
394 if (network.update() == NETWORK_ADDR_RESPONSE) {
+
395 if (network.frame_buffer[7] == _nodeID) {
+
396 uint16_t newAddy = 0;
+
397 memcpy(&newAddy, &network.frame_buffer[sizeof(RF24NetworkHeader)], sizeof(newAddy));
+
398 uint16_t mask = 0xFFFF;
+
399 newAddy &= ~(mask << (3 * getLevel(contactNode[i]))); // Get the level of contact node. Multiply by 3 to get the number of bits to shift (3 per digit)
+
400 if (newAddy == contactNode[i]) { // Then shift the mask by this much, and invert it bitwise. Apply the mask to the newly received
+
401 gotResponse = 1; // address to evalute whether 'subnet' of the assigned address matches the contact node address.
+
402 break;
+
403 }
+
404 }
+
405 }
+
407 }
-
408 return 1;
-
409 } // end for
-
410
-
411 return 0;
-
412}
-
413
-
414/*****************************************************/
+
408
+
409 if (!gotResponse) {
+
410 continue;
+
411 }
+
412
+
413 uint16_t newAddress = 0;
+
414 memcpy(&newAddress, network.frame_buffer + sizeof(RF24NetworkHeader), sizeof(newAddress));
415
-
416template<class network_t, class radio_t>
-
- -
418{
-
419 _nodeID = nodeID;
-
420}
-
+
416 IF_RF24MESH_DEBUG(printf_P(PSTR("Set address: Current: 0%o New: 0%o\n"), mesh_address, newAddress));
+
417 mesh_address = newAddress;
+
418
+
419 radio.stopListening();
+
420 network.begin(mesh_address);
421
-
422/*****************************************************/
-
423#if !defined(MESH_NOMASTER)
-
424
-
425template<class network_t, class radio_t>
-
-
426void ESBMesh<network_t, radio_t>::setStaticAddress(uint8_t nodeID, uint16_t address)
-
427{
-
428 setAddress(nodeID, address);
-
429}
+
422 // getNodeID() doesn't use auto-ack; do a double-check to manually retry 1 more time
+
423 if (getNodeID(mesh_address) != _nodeID) {
+
424 if (getNodeID(mesh_address) != _nodeID) {
+
425 beginDefault();
+
426 continue;
+
427 }
+
428 }
+
429 return 1;
+
430 } // end for
+
431
+
432 return 0;
+
433}
+
434
+
435/*****************************************************/
+
436
+
437template<class network_t, class radio_t>
+
+ +
439{
+
440 _nodeID = nodeID;
+
441}
+
+
442
+
443/*****************************************************/
+
444#if !defined(MESH_NOMASTER)
+
445
+
446template<class network_t, class radio_t>
+
+
447void ESBMesh<network_t, radio_t>::setStaticAddress(uint8_t nodeID, uint16_t address)
+
448{
+
449 setAddress(nodeID, address);
+
450}
-
430
-
431/*****************************************************/
-
432
-
433template<class network_t, class radio_t>
-
-
434void ESBMesh<network_t, radio_t>::setAddress(uint8_t nodeID, uint16_t address, bool searchBy)
-
435{
-
436 //Look for the node in the list
-
437 for (uint8_t i = 0; i < addrListTop; i++) {
-
438 if (searchBy == false) {
-
439 if (addrList[i].nodeID == nodeID) {
-
440 addrList[i].address = address;
-
441 #if defined(__linux) && !defined(__ARDUINO_X86__)
-
442 saveDHCP();
-
443 #endif
-
444 return; //Found & set, complete
-
445 }
-
446 }
-
447 else { // Search by address, set the nodeID
-
448 if (addrList[i].address == address) {
-
449 //printf("*** Addr 0%o Found, reassign fr ID %d to ID %d ***\n", addrList[i].address, addrList[i].nodeID, nodeID);
-
450 addrList[i].nodeID = nodeID;
-
451 #if defined(__linux) && !defined(__ARDUINO_X86__)
-
452 saveDHCP();
-
453 #endif
-
454 return;
-
455 }
-
456 }
-
457 }
-
458
-
459 if (addrListTop > 0 && addrListTop % MESH_MEM_ALLOC_SIZE == 0) {
-
460 addrList = (addrListStruct*)realloc(addrList, (addrListTop + MESH_MEM_ALLOC_SIZE) * sizeof(addrListStruct));
-
461 }
-
462 addrList[addrListTop].address = address;
-
463 addrList[addrListTop++].nodeID = nodeID; //Set the value AND increment Top without another line of code
-
464 #if defined(__linux) && !defined(__ARDUINO_X86__)
-
465 saveDHCP();
-
466 #endif
-
467}
+
451
+
452/*****************************************************/
+
453
+
454template<class network_t, class radio_t>
+
+
455void ESBMesh<network_t, radio_t>::setAddress(uint8_t nodeID, uint16_t address, bool searchBy)
+
456{
+
457 //Look for the node in the list
+
458 for (uint8_t i = 0; i < addrListTop; i++) {
+
459 if (searchBy == false) {
+
460 if (addrList[i].nodeID == nodeID) {
+
461 addrList[i].address = address;
+
462 #if defined(__linux) && !defined(__ARDUINO_X86__)
+
463 saveDHCP();
+
464 #endif
+
465 return; //Found & set, complete
+
466 }
+
467 }
+
468 else { // Search by address, set the nodeID
+
469 if (addrList[i].address == address) {
+
470 //printf("*** Addr 0%o Found, reassign fr ID %d to ID %d ***\n", addrList[i].address, addrList[i].nodeID, nodeID);
+
471 addrList[i].nodeID = nodeID;
+
472 #if defined(__linux) && !defined(__ARDUINO_X86__)
+
473 saveDHCP();
+
474 #endif
+
475 return;
+
476 }
+
477 }
+
478 }
+
479
+
480 if (addrListTop > 0 && addrListTop % MESH_MEM_ALLOC_SIZE == 0) {
+
481 addrList = (addrListStruct*)realloc(addrList, (addrListTop + MESH_MEM_ALLOC_SIZE) * sizeof(addrListStruct));
+
482 }
+
483 addrList[addrListTop].address = address;
+
484 addrList[addrListTop++].nodeID = nodeID; //Set the value AND increment Top without another line of code
+
485 #if defined(__linux) && !defined(__ARDUINO_X86__)
+
486 saveDHCP();
+
487 #endif
+
488}
-
468
-
469/*****************************************************/
-
470
-
471template<class network_t, class radio_t>
-
- -
473{
-
474
-
475 #if defined(__linux) && !defined(__ARDUINO_X86__)
-
476 std::ifstream infile("dhcplist.txt", std::ifstream::binary);
-
477 if (!infile) return;
-
478
-
479 infile.seekg(0, infile.end);
-
480 int length = infile.tellg();
-
481 infile.seekg(0, infile.beg);
-
482
-
483 addrListStruct tmpNode;
-
484
-
485 for (uint8_t i = 0; i < (length / sizeof(addrListStruct)); i++) {
-
486 infile.read((char*)&tmpNode, sizeof(addrListStruct));
-
487 setAddress(tmpNode.nodeID, tmpNode.address);
-
488 }
-
489 infile.close();
-
490 #endif
-
491}
+
489
+
490/*****************************************************/
+
491
+
492template<class network_t, class radio_t>
+
+ +
494{
+
495
+
496 #if defined(__linux) && !defined(__ARDUINO_X86__)
+
497 std::ifstream infile("dhcplist.txt", std::ifstream::binary);
+
498 if (!infile) return;
+
499
+
500 infile.seekg(0, infile.end);
+
501 int length = infile.tellg();
+
502 infile.seekg(0, infile.beg);
+
503
+
504 addrListStruct tmpNode;
+
505
+
506 for (uint8_t i = 0; i < (length / sizeof(addrListStruct)); i++) {
+
507 infile.read((char*)&tmpNode, sizeof(addrListStruct));
+
508 setAddress(tmpNode.nodeID, tmpNode.address);
+
509 }
+
510 infile.close();
+
511 #endif
+
512}
-
492
-
493/*****************************************************/
-
494
-
495template<class network_t, class radio_t>
-
- -
497{
-
498 #if defined(__linux) && !defined(__ARDUINO_X86__)
-
499 std::ofstream outfile("dhcplist.txt", std::ofstream::binary | std::ofstream::trunc);
-
500
-
501 for (int i = 0; i < addrListTop; i++) {
-
502 outfile.write((char*)&addrList[i], sizeof(addrListStruct));
-
503 }
-
504 outfile.close();
-
505 #endif // __linux & not X86
-
506}
+
513
+
514/*****************************************************/
+
515
+
516template<class network_t, class radio_t>
+
+ +
518{
+
519 #if defined(__linux) && !defined(__ARDUINO_X86__)
+
520 std::ofstream outfile("dhcplist.txt", std::ofstream::binary | std::ofstream::trunc);
+
521
+
522 for (int i = 0; i < addrListTop; i++) {
+
523 outfile.write((char*)&addrList[i], sizeof(addrListStruct));
+
524 }
+
525 outfile.close();
+
526 #endif // __linux & not X86
+
527}
-
507
-
508/*****************************************************/
-
509
-
510template<class network_t, class radio_t>
-
- -
512{
-
513 if (doDHCP)
-
514 doDHCP = false;
-
515 else
-
516 return;
-
517
-
518 RF24NetworkHeader header;
-
519 memcpy(&header, network.frame_buffer, sizeof(RF24NetworkHeader));
-
520
-
521 uint16_t newAddress;
-
522
-
523 // Get the unique id of the requester (ID is in header.reserved)
-
524 if (!header.reserved || header.type != NETWORK_REQ_ADDRESS) {
-
525 IF_MESH_DEBUG(printf_P(PSTR("MSH Invalid id or type rcvd\n")));
-
526 return;
-
527 }
528
-
529 uint16_t fwd_by = 0;
-
530 uint8_t shiftVal = 0;
-
531 bool extraChild = false;
-
532
-
533 if (header.from_node != MESH_DEFAULT_ADDRESS) {
-
534 fwd_by = header.from_node;
-
535 uint16_t m = fwd_by;
-
536 uint8_t count = 0;
-
537
-
538 while (m) { //Octal addresses convert nicely to binary in threes. Address 03 = B011 Address 033 = B011011
-
539 m >>= 3; //Find out how many digits are in the octal address
-
540 count += 3;
-
541 }
-
542 shiftVal = count; //Now we know how many bits to shift when adding a child node 1-5 (B001 to B101) to any address
-
543 }
-
544 else {
-
545 //If request is coming from level 1, add an extra child to the master
-
546 extraChild = 1;
-
547 }
-
548
-
549 // IF_MESH_DEBUG(printf_P(PSTR("%u: MSH Rcv addr req from_id %d\n"), millis(), header.reserved));
-
550
-
551 for (int i = MESH_MAX_CHILDREN + extraChild; i > 0; i--) { // For each of the possible addresses (5 max)
-
552
-
553 bool found = false;
-
554 newAddress = fwd_by | (i << shiftVal);
-
555
-
556 if (newAddress == MESH_DEFAULT_ADDRESS) continue;
-
557
-
558 for (uint8_t i = 0; i < addrListTop; i++) {
-
559 IF_MESH_DEBUG_MINIMAL(printf_P(PSTR("ID: %d ADDR: 0%o\n"), addrList[i].nodeID, addrList[i].address));
-
560 if (addrList[i].address == newAddress && addrList[i].nodeID != header.reserved) {
-
561 found = true;
-
562 break;
-
563 }
-
564 } // 3 conditions: 1. address in list = assigned to somebody else (bad); 2. address in list = assigned to this nodeID (ok); 3. address not in list (ok)
-
565
-
566 if (!found) {
-
567 header.type = NETWORK_ADDR_RESPONSE;
-
568 header.to_node = header.from_node;
-
569 //This is a routed request to 00
-
570
-
571 setAddress(header.reserved, newAddress);
-
572 // without this delay, address renewal fails for children with slower execution speed
-
573 #if defined(SLOW_ADDR_POLL_RESPONSE)
-
574 delay(SLOW_ADDR_POLL_RESPONSE);
-
575 #endif // defined (SLOW_ADDR_POLL_RESPONSE)
+
529/*****************************************************/
+
530
+
531template<class network_t, class radio_t>
+
+ +
533{
+
534 if (doDHCP)
+
535 doDHCP = false;
+
536 else
+
537 return;
+
538
+
539 RF24NetworkHeader header;
+
540 memcpy(&header, network.frame_buffer, sizeof(RF24NetworkHeader));
+
541
+
542 uint16_t newAddress;
+
543
+
544 // Get the unique id of the requester (ID is in header.reserved)
+
545 if (!header.reserved || header.type != NETWORK_REQ_ADDRESS) {
+
546 IF_RF24MESH_DEBUG(printf_P(PSTR("MSH Invalid id or type rcvd\n")));
+
547 return;
+
548 }
+
549
+
550 uint16_t fwd_by = 0;
+
551 uint8_t shiftVal = 0;
+
552 bool extraChild = false;
+
553
+
554 if (header.from_node != MESH_DEFAULT_ADDRESS) {
+
555 fwd_by = header.from_node;
+
556 uint16_t m = fwd_by;
+
557 uint8_t count = 0;
+
558
+
559 while (m) { //Octal addresses convert nicely to binary in threes. Address 03 = B011 Address 033 = B011011
+
560 m >>= 3; //Find out how many digits are in the octal address
+
561 count += 3;
+
562 }
+
563 shiftVal = count; //Now we know how many bits to shift when adding a child node 1-5 (B001 to B101) to any address
+
564 }
+
565 else {
+
566 //If request is coming from level 1, add an extra child to the master
+
567 extraChild = 1;
+
568 }
+
569
+
570 // IF_RF24MESH_DEBUG(printf_P(PSTR("%u: MSH Rcv addr req from_id %d\n"), millis(), header.reserved));
+
571
+
572 for (int i = MESH_MAX_CHILDREN + extraChild; i > 0; i--) { // For each of the possible addresses (5 max)
+
573
+
574 bool found = false;
+
575 newAddress = fwd_by | (i << shiftVal);
576
-
577 if (header.from_node != MESH_DEFAULT_ADDRESS) { //Is NOT node 01 to 05
-
578 //delay(2);
-
579 if (!network.write(header, &newAddress, sizeof(newAddress))) {
-
580 network.write(header, &newAddress, sizeof(newAddress));
-
581 }
-
582 }
-
583 else {
-
584 //delay(2);
-
585 network.write(header, &newAddress, sizeof(newAddress), header.to_node);
-
586 }
-
587
-
588 IF_MESH_DEBUG(printf_P(PSTR("Sent to 0%o phys: 0%o new: 0%o id: %d\n"), header.to_node, MESH_DEFAULT_ADDRESS, newAddress, header.reserved));
-
589 break;
-
590 }
-
591 else {
-
592 IF_MESH_DEBUG(printf_P(PSTR("not allocated\n")));
-
593 }
-
594 } // end for
-
595}
+
577 if (newAddress == MESH_DEFAULT_ADDRESS) continue;
+
578
+
579 for (uint8_t i = 0; i < addrListTop; i++) {
+
580 IF_RF24MESH_DEBUG_MINIMAL(printf_P(PSTR("ID: %d ADDR: 0%o\n"), addrList[i].nodeID, addrList[i].address));
+
581 if (addrList[i].address == newAddress && addrList[i].nodeID != header.reserved) {
+
582 found = true;
+
583 break;
+
584 }
+
585 } // 3 conditions: 1. address in list = assigned to somebody else (bad); 2. address in list = assigned to this nodeID (ok); 3. address not in list (ok)
+
586
+
587 if (!found) {
+
588 header.type = NETWORK_ADDR_RESPONSE;
+
589 header.to_node = header.from_node;
+
590 //This is a routed request to 00
+
591
+
592 setAddress(header.reserved, newAddress);
+
593 // without this delay, address renewal fails for children with slower execution speed
+
594 #if defined(SLOW_ADDR_POLL_RESPONSE)
+
595 delay(SLOW_ADDR_POLL_RESPONSE);
+
596 #endif // defined (SLOW_ADDR_POLL_RESPONSE)
+
597
+
598 if (header.from_node != MESH_DEFAULT_ADDRESS) { //Is NOT node 01 to 05
+
599 //delay(2);
+
600 if (!network.write(header, &newAddress, sizeof(newAddress))) {
+
601 network.write(header, &newAddress, sizeof(newAddress));
+
602 }
+
603 }
+
604 else {
+
605 //delay(2);
+
606 network.write(header, &newAddress, sizeof(newAddress), header.to_node);
+
607 }
+
608
+
609 IF_RF24MESH_DEBUG(printf_P(PSTR("Sent to 0%o phys: 0%o new: 0%o id: %d\n"), header.to_node, MESH_DEFAULT_ADDRESS, newAddress, header.reserved));
+
610 break;
+
611 }
+
612 else {
+
613 IF_RF24MESH_DEBUG(printf_P(PSTR("not allocated\n")));
+
614 }
+
615 } // end for
+
616}
-
596
-
597/*****************************************************/
-
598
-
599#endif // !MESH_NOMASTER
-
600
-
601template<class network_t, class radio_t>
-
-
602void ESBMesh<network_t, radio_t>::setCallback(void (*meshCallback)(void))
-
603{
-
604
-
605 this->meshCallback = meshCallback;
-
606}
+
617
+
618/*****************************************************/
+
619
+
620#endif // !MESH_NOMASTER
+
621
+
622template<class network_t, class radio_t>
+
+
623void ESBMesh<network_t, radio_t>::setCallback(void (*meshCallback)(void))
+
624{
+
625
+
626 this->meshCallback = meshCallback;
+
627}
-
607
-
608/*****************************************************/
-
609
-
610// ensure the compiler is aware of the possible datatype for the template class
-
611template class ESBMesh<ESBNetwork<RF24>, RF24>;
-
612#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840)
-
613template class ESBMesh<ESBNetwork<nrf_to_nrf>, nrf_to_nrf>;
-
614#endif
+
628
+
629/*****************************************************/
+
630
+
631// ensure the compiler is aware of the possible datatype for the template class
+
632template class ESBMesh<ESBNetwork<RF24>, RF24>;
+
633#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840)
+
634template class ESBMesh<ESBNetwork<nrf_to_nrf>, nrf_to_nrf>;
+
635#endif
#define MESH_MAXPOLLS
#define MESH_ADDR_LOOKUP
Definition RF24Mesh.h:25
@@ -760,40 +791,42 @@
#define MESH_ADDR_RELEASE
Definition RF24Mesh.h:26
#define MESH_BLANK_ID
Definition RF24Mesh.h:29
-
#define MESH_MULTICAST_ADDRESS
+
#define MESH_MULTICAST_ADDRESS
+
#define IF_RF24MESH_DEBUG(x)
#define MESH_MAX_CHILDREN
Set 1 to 4 (Default: 4) Restricts the maximum children per node.
-
#define MESH_LOOKUP_TIMEOUT
How long to wait in ms for a response during individual address lookups.
-
#define IF_MESH_DEBUG_MINIMAL(x)
-
#define IF_MESH_DEBUG(x)
-
#define MESH_DEFAULT_ADDRESS
+
#define MESH_LOOKUP_TIMEOUT
How long to wait in ms for a response during individual address lookups.
+
#define IF_RF24MESH_DEBUG_MINIMAL(x)
+
#define MESH_DEFAULT_ADDRESS
+
#define MESH_CONNECTION_CHECK_ATTEMPTS
Number of attempts to verify a connection.
#define MESH_MEM_ALLOC_SIZE
master node memory allocation
-
#define MESH_WRITE_TIMEOUT
How long RF24Mesh::write() retries address lookups before timing out. Allows multiple attempts.
+
#define MESH_WRITE_TIMEOUT
How long RF24Mesh::write() retries address lookups before timing out. Allows multiple attempts.
-
int16_t getNodeID(uint16_t address=MESH_BLANK_ID)
Definition RF24Mesh.cpp:211
-
void setStaticAddress(uint8_t nodeID, uint16_t address)
Definition RF24Mesh.cpp:426
-
void loadDHCP()
Definition RF24Mesh.cpp:472
-
uint16_t renewAddress(uint32_t timeout=MESH_RENEWAL_TIMEOUT)
Reconnect to the mesh and renew the current RF24Network address.
Definition RF24Mesh.cpp:283
-
void setChild(bool allow)
Definition RF24Mesh.cpp:151
-
bool checkConnection()
Definition RF24Mesh.cpp:159
+
int16_t getNodeID(uint16_t address=MESH_BLANK_ID)
Definition RF24Mesh.cpp:216
+
void setStaticAddress(uint8_t nodeID, uint16_t address)
Definition RF24Mesh.cpp:447
+
void loadDHCP()
Definition RF24Mesh.cpp:493
+
uint16_t renewAddress(uint32_t timeout=MESH_RENEWAL_TIMEOUT)
Reconnect to the mesh and renew the current RF24Network address.
Definition RF24Mesh.cpp:304
+
void setChild(bool allow)
Definition RF24Mesh.cpp:147
+
bool checkConnection()
Definition RF24Mesh.cpp:155
bool begin(uint8_t channel=MESH_DEFAULT_CHANNEL, rf24_datarate_e data_rate=RF24_1MBPS, uint32_t timeout=MESH_RENEWAL_TIMEOUT)
Definition RF24Mesh.cpp:26
-
void DHCP()
Definition RF24Mesh.cpp:511
-
bool releaseAddress()
Definition RF24Mesh.cpp:268
-
void saveDHCP()
Definition RF24Mesh.cpp:496
-
void setCallback(void(*meshCallback)(void))
Definition RF24Mesh.cpp:602
+
void DHCP()
Definition RF24Mesh.cpp:532
+
bool releaseAddress()
Definition RF24Mesh.cpp:273
+
void saveDHCP()
Definition RF24Mesh.cpp:517
+
void setCallback(void(*meshCallback)(void))
Definition RF24Mesh.cpp:623
uint8_t update()
Definition RF24Mesh.cpp:63
ESBMesh(radio_t &_radio, network_t &_network)
Definition RF24Mesh.cpp:14
-
void setNodeID(uint8_t nodeID)
Definition RF24Mesh.cpp:417
-
bool write(const void *data, uint8_t msg_type, size_t size, uint8_t nodeID=0)
Definition RF24Mesh.cpp:118
-
void setChannel(uint8_t _channel)
Definition RF24Mesh.cpp:141
-
void setAddress(uint8_t nodeID, uint16_t address, bool searchBy=false)
Definition RF24Mesh.cpp:434
-
int16_t getAddress(uint8_t nodeID)
Convert a nodeID into an RF24Network address.
Definition RF24Mesh.cpp:173
+
void setNodeID(uint8_t nodeID)
Definition RF24Mesh.cpp:438
+
bool write(const void *data, uint8_t msg_type, size_t size, uint8_t nodeID=0)
Definition RF24Mesh.cpp:114
+
void setChannel(uint8_t _channel)
Definition RF24Mesh.cpp:137
+
void setAddress(uint8_t nodeID, uint16_t address, bool searchBy=false)
Definition RF24Mesh.cpp:455
+
int16_t getAddress(uint8_t nodeID)
Convert a nodeID into an RF24Network address.
Definition RF24Mesh.cpp:178
A struct for storing a nodeID and an address in a single element of the ESBMesh::addrList array.
Definition RF24Mesh.h:322
uint8_t nodeID
The nodeID of an network node (child)
Definition RF24Mesh.h:324
uint16_t address
The logical address of an network node (child)
Definition RF24Mesh.h:326
+
diff --git a/RF24Mesh_8h.html b/RF24Mesh_8h.html index 3055386..2dad26a 100644 --- a/RF24Mesh_8h.html +++ b/RF24Mesh_8h.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh.h File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
Classes | @@ -250,14 +263,15 @@

ESBMesh<ESBNetwork<RF24>, RF24> mesh(radio, network);

-

Definition at line 384 of file RF24Mesh.h.

+

Definition at line 396 of file RF24Mesh.h.

+
diff --git a/RF24Mesh_8h_source.html b/RF24Mesh_8h_source.html index 1de3d7c..522e5b5 100644 --- a/RF24Mesh_8h_source.html +++ b/RF24Mesh_8h_source.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh.h Source File @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
-
336 // Pointer used for dynamic memory allocation of address list
343 uint8_t addrListTop;
-
344#endif
-
347private:
-
348 radio_t& radio;
-
349 network_t& network;
-
350
-
352 void (*meshCallback)(void);
-
353
-
355 bool requestAddress(uint8_t level);
-
356
-
357#if !defined(MESH_NOMASTER)
-
359 bool doDHCP;
-
361 bool addrMemAllocated;
-
362#endif
-
363
-
365 void beginDefault();
-
367 bool meshStarted;
-
369 uint8_t getLevel(uint16_t address);
-
370};
+
344
+
355 bool releaseAddress(uint16_t address);
+
356#endif
+
359private:
+
360 radio_t& radio;
+
361 network_t& network;
+
362
+
364 void (*meshCallback)(void);
+
365
+
367 bool requestAddress(uint8_t level);
+
368
+
369#if !defined(MESH_NOMASTER)
+
371 bool doDHCP;
+
373 bool addrMemAllocated;
+
374#endif
+
375
+
377 void beginDefault();
+
379 bool meshStarted;
+
381 uint8_t getLevel(uint16_t address);
+
382};
-
371
- -
385#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52833)
-
386typedef ESBMesh<ESBNetwork<nrf_to_nrf>, nrf_to_nrf> RF52Mesh;
-
387#endif
-
388
-
460#endif // define __RF24MESH_H__
-
ESBMesh< ESBNetwork< RF24 >, RF24 > RF24Mesh
Definition RF24Mesh.h:384
+
383
+ +
397#if defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) || defined(ARDUINO_ARCH_NRF52833)
+
398typedef ESBMesh<ESBNetwork<nrf_to_nrf>, nrf_to_nrf> RF52Mesh;
+
399#endif
+
400
+
472#endif // define __RF24MESH_H__
+
ESBMesh< ESBNetwork< RF24 >, RF24 > RF24Mesh
Definition RF24Mesh.h:396
#define MESH_BLANK_ID
Definition RF24Mesh.h:29
#define MESH_DEFAULT_CHANNEL
Radio channel to operate on 1-127.
#define MESH_RENEWAL_TIMEOUT
How long to attempt address renewal in milliseconds.
-
int16_t getNodeID(uint16_t address=MESH_BLANK_ID)
Definition RF24Mesh.cpp:211
-
void setStaticAddress(uint8_t nodeID, uint16_t address)
Definition RF24Mesh.cpp:426
-
void loadDHCP()
Definition RF24Mesh.cpp:472
-
uint16_t renewAddress(uint32_t timeout=MESH_RENEWAL_TIMEOUT)
Reconnect to the mesh and renew the current RF24Network address.
Definition RF24Mesh.cpp:283
-
void setChild(bool allow)
Definition RF24Mesh.cpp:151
-
bool checkConnection()
Definition RF24Mesh.cpp:159
+
int16_t getNodeID(uint16_t address=MESH_BLANK_ID)
Definition RF24Mesh.cpp:216
+
void setStaticAddress(uint8_t nodeID, uint16_t address)
Definition RF24Mesh.cpp:447
+
void loadDHCP()
Definition RF24Mesh.cpp:493
+
uint16_t renewAddress(uint32_t timeout=MESH_RENEWAL_TIMEOUT)
Reconnect to the mesh and renew the current RF24Network address.
Definition RF24Mesh.cpp:304
+
void setChild(bool allow)
Definition RF24Mesh.cpp:147
+
bool checkConnection()
Definition RF24Mesh.cpp:155
bool begin(uint8_t channel=MESH_DEFAULT_CHANNEL, rf24_datarate_e data_rate=RF24_1MBPS, uint32_t timeout=MESH_RENEWAL_TIMEOUT)
Definition RF24Mesh.cpp:26
-
void DHCP()
Definition RF24Mesh.cpp:511
-
bool releaseAddress()
Definition RF24Mesh.cpp:268
-
void saveDHCP()
Definition RF24Mesh.cpp:496
-
void setCallback(void(*meshCallback)(void))
Definition RF24Mesh.cpp:602
+
void DHCP()
Definition RF24Mesh.cpp:532
+
bool releaseAddress()
Definition RF24Mesh.cpp:273
+
void saveDHCP()
Definition RF24Mesh.cpp:517
+
void setCallback(void(*meshCallback)(void))
Definition RF24Mesh.cpp:623
uint8_t update()
Definition RF24Mesh.cpp:63
uint8_t addrListTop
The number of entries in the addrListStruct of assigned addresses.
Definition RF24Mesh.h:343
ESBMesh(radio_t &_radio, network_t &_network)
Definition RF24Mesh.cpp:14
addrListStruct * addrList
A array of addrListStruct elements for assigned addresses.
Definition RF24Mesh.h:341
-
void setNodeID(uint8_t nodeID)
Definition RF24Mesh.cpp:417
-
bool write(const void *data, uint8_t msg_type, size_t size, uint8_t nodeID=0)
Definition RF24Mesh.cpp:118
-
void setChannel(uint8_t _channel)
Definition RF24Mesh.cpp:141
-
void setAddress(uint8_t nodeID, uint16_t address, bool searchBy=false)
Definition RF24Mesh.cpp:434
+
void setNodeID(uint8_t nodeID)
Definition RF24Mesh.cpp:438
+
bool write(const void *data, uint8_t msg_type, size_t size, uint8_t nodeID=0)
Definition RF24Mesh.cpp:114
+
void setChannel(uint8_t _channel)
Definition RF24Mesh.cpp:137
+
void setAddress(uint8_t nodeID, uint16_t address, bool searchBy=false)
Definition RF24Mesh.cpp:455
uint16_t mesh_address
Definition RF24Mesh.h:208
-
int16_t getAddress(uint8_t nodeID)
Convert a nodeID into an RF24Network address.
Definition RF24Mesh.cpp:173
+
int16_t getAddress(uint8_t nodeID)
Convert a nodeID into an RF24Network address.
Definition RF24Mesh.cpp:178
A struct for storing a nodeID and an address in a single element of the ESBMesh::addrList array.
Definition RF24Mesh.h:322
uint8_t nodeID
The nodeID of an network node (child)
Definition RF24Mesh.h:324
@@ -280,7 +290,8 @@
+
diff --git a/RF24Mesh_Example_8cpp-example.html b/RF24Mesh_Example_8cpp-example.html index ac77d3c..7923e8a 100644 --- a/RF24Mesh_Example_8cpp-example.html +++ b/RF24Mesh_Example_8cpp-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_Example.cpp @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + +
+
+
return 0;
}
-
#define MESH_DEFAULT_ADDRESS
+
#define MESH_DEFAULT_ADDRESS
Definition RF24Mesh.h:72
+ diff --git a/RF24Mesh_Example_8ino-example.html b/RF24Mesh_Example_8ino-example.html index e663d49..c696153 100644 --- a/RF24Mesh_Example_8ino-example.html +++ b/RF24Mesh_Example_8ino-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_Example.ino @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
}
}
-
#define MESH_DEFAULT_ADDRESS
+
#define MESH_DEFAULT_ADDRESS
Definition RF24Mesh.h:72
+ diff --git a/RF24Mesh_Example_Master_8cpp-example.html b/RF24Mesh_Example_Master_8cpp-example.html index bf4e056..c6fb118 100644 --- a/RF24Mesh_Example_Master_8cpp-example.html +++ b/RF24Mesh_Example_Master_8cpp-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_Example_Master.cpp @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/RF24Mesh_Example_Master_8ino-example.html b/RF24Mesh_Example_Master_8ino-example.html index 9a81faa..72206e9 100644 --- a/RF24Mesh_Example_Master_8ino-example.html +++ b/RF24Mesh_Example_Master_8ino-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_Example_Master.ino @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/RF24Mesh_Example_Node2NodeExtra_8ino-example.html b/RF24Mesh_Example_Node2NodeExtra_8ino-example.html index e0c63c9..d724e84 100644 --- a/RF24Mesh_Example_Node2NodeExtra_8ino-example.html +++ b/RF24Mesh_Example_Node2NodeExtra_8ino-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_Example_Node2NodeExtra.ino @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
}
}
-
#define MESH_DEFAULT_ADDRESS
+
#define MESH_DEFAULT_ADDRESS
Definition RF24Mesh.h:72
+ diff --git a/RF24Mesh_Example_Node2Node_8ino-example.html b/RF24Mesh_Example_Node2Node_8ino-example.html index da8bf69..548315d 100644 --- a/RF24Mesh_Example_Node2Node_8ino-example.html +++ b/RF24Mesh_Example_Node2Node_8ino-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_Example_Node2Node.ino @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
}
}
-
#define MESH_DEFAULT_ADDRESS
+
#define MESH_DEFAULT_ADDRESS
Definition RF24Mesh.h:72
+ diff --git a/RF24Mesh_Ncurses_Master_8cpp-example.html b/RF24Mesh_Ncurses_Master_8cpp-example.html index dc529bc..b622567 100644 --- a/RF24Mesh_Ncurses_Master_8cpp-example.html +++ b/RF24Mesh_Ncurses_Master_8cpp-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_Ncurses_Master.cpp @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/RF24Mesh_SerialConfig_8ino-example.html b/RF24Mesh_SerialConfig_8ino-example.html index ce744e2..6f454cb 100644 --- a/RF24Mesh_SerialConfig_8ino-example.html +++ b/RF24Mesh_SerialConfig_8ino-example.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_SerialConfig.ino @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
}
}
-
#define MESH_DEFAULT_ADDRESS
+
#define MESH_DEFAULT_ADDRESS
Definition RF24Mesh.h:72
+ diff --git a/RF24Mesh__config_8h.html b/RF24Mesh__config_8h.html index 7f13784..63baef1 100644 --- a/RF24Mesh__config_8h.html +++ b/RF24Mesh__config_8h.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_config.h File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
@@ -120,6 +133,9 @@ #define MESH_MEM_ALLOC_SIZE   10  master node memory allocation
  +#define MESH_CONNECTION_CHECK_ATTEMPTS   3 + Number of attempts to verify a connection.
+  #define MESH_LOOKUP_TIMEOUT   135  How long to wait in ms for a response during individual address lookups.
  @@ -130,10 +146,10 @@   #define MESH_MULTICAST_ADDRESS   NETWORK_MULTICAST_ADDRESS   -#define IF_MESH_DEBUG_MINIMAL(x) -  -#define IF_MESH_DEBUG(x) -  +#define IF_RF24MESH_DEBUG_MINIMAL(x) +  +#define IF_RF24MESH_DEBUG(x) + 

Detailed Description

macro definitions for configuring RF24Mesh

@@ -216,6 +232,25 @@

Definition at line 54 of file RF24Mesh_config.h.

+

+
+ +

◆ MESH_CONNECTION_CHECK_ATTEMPTS

+ +
+
+ + + + +
#define MESH_CONNECTION_CHECK_ATTEMPTS   3
+
+ +

Number of attempts to verify a connection.

+

On child nodes, when calling mesh.checkConnection();, configure how many attempts will be made to contact the master node to verify connectivity Raising this number can result in a more stable mesh, since nodes can more easily verify that a connection is active

+ +

Definition at line 64 of file RF24Mesh_config.h.

+
@@ -233,7 +268,7 @@

See also
RF24Mesh::getNodeID and RF24Mesh::getAddress If using distant nodes or a large number of nodes this value can be increased in general or for specific nodes. For Level 1 nodes a response typically takes 2-3ms in good conditions. For Level 2 nodes: 4-5ms, Level 3: 6-15ms, Level 4: 10-25ms
-

Definition at line 74 of file RF24Mesh_config.h.

+

Definition at line 84 of file RF24Mesh_config.h.

@@ -251,7 +286,7 @@

RF24Mesh::write() retries address lookups before timing out. Allows multiple attempts.

-

Definition at line 79 of file RF24Mesh_config.h.

+

Definition at line 89 of file RF24Mesh_config.h.

@@ -269,7 +304,7 @@

Examples
RF24Mesh_Example.cpp, RF24Mesh_Example.ino, RF24Mesh_Example_Node2Node.ino, RF24Mesh_Example_Node2NodeExtra.ino, and RF24Mesh_SerialConfig.ino.
-

Definition at line 83 of file RF24Mesh_config.h.

+

Definition at line 93 of file RF24Mesh_config.h.

@@ -285,52 +320,53 @@

-

Definition at line 86 of file RF24Mesh_config.h.

+

Definition at line 96 of file RF24Mesh_config.h.

- -

◆ IF_MESH_DEBUG_MINIMAL

+ +

◆ IF_RF24MESH_DEBUG_MINIMAL

- + - +
#define IF_MESH_DEBUG_MINIMAL#define IF_RF24MESH_DEBUG_MINIMAL ( x) x)
-

Definition at line 104 of file RF24Mesh_config.h.

+

Definition at line 114 of file RF24Mesh_config.h.

- -

◆ IF_MESH_DEBUG

+ +

◆ IF_RF24MESH_DEBUG

- + - +
#define IF_MESH_DEBUG#define IF_RF24MESH_DEBUG ( x) x)
-

Definition at line 110 of file RF24Mesh_config.h.

+

Definition at line 120 of file RF24Mesh_config.h.

+ diff --git a/RF24Mesh__config_8h_source.html b/RF24Mesh__config_8h_source.html index fa07208..7ee9f75 100644 --- a/RF24Mesh__config_8h_source.html +++ b/RF24Mesh__config_8h_source.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: RF24Mesh_config.h Source File @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + + +
-
54 #define MESH_MEM_ALLOC_SIZE 10
55#endif // MESH_MEM_ALLOC_SIZE
56
-
57/**************************/
-
58/*** Debug ***/
-
59//#define MESH_DEBUG_MINIMAL /** Uncomment for the Master Node to print out address assignments as they are assigned */
-
60//#define MESH_DEBUG /** Uncomment to enable debug output to serial **/
-
61/**************************/
-
62
-
63/*** Other Configuration ***/
-
64//#define MESH_MIN_SAVE_TIME 30000 /** UNUSED Minimum time required before changing nodeID. Prevents excessive writing to EEPROM */
-
65
-
73#ifndef MESH_LOOKUP_TIMEOUT
-
74 #define MESH_LOOKUP_TIMEOUT 135
-
75#endif // MESH_LOOKUP_TIMEOUT
-
76
-
78#ifndef MESH_WRITE_TIMEOUT
-
79 #define MESH_WRITE_TIMEOUT 115
-
80#endif // MESH_WRITE_TIMEOUT
-
81
-
82#ifndef MESH_DEFAULT_ADDRESS
-
83 #define MESH_DEFAULT_ADDRESS NETWORK_DEFAULT_ADDRESS
-
84#endif // MESH_DEFAULT_ADDRESS
-
85
-
86#define MESH_MULTICAST_ADDRESS NETWORK_MULTICAST_ADDRESS
-
87
-
88//#define MESH_MAX_ADDRESSES 255 /* UNUSED Determines the max size of the array used for storing addresses on the Master Node */
-
89//#define MESH_ADDRESS_HOLD_TIME 30000 /* UNUSED How long before a released address becomes available */
-
90
-
91#if (defined(__linux) || defined(linux)) && !defined(__ARDUINO_X86__) && !defined(USE_RF24_LIB_SRC)
-
92 #include <RF24/RF24_config.h>
-
93
-
94//ATXMega
-
95#elif defined(XMEGA)
-
96 #include "../../rf24lib/rf24lib/RF24_config.h"
-
97#else
-
98 #include <RF24_config.h>
-
99#endif
+
63#ifndef MESH_CONNECTION_CHECK_ATTEMPTS
+
64 #define MESH_CONNECTION_CHECK_ATTEMPTS 3
+
65#endif
+
66
+
67/**************************/
+
68/*** Debug ***/
+
69//#define RF24MESH_DEBUG_MINIMAL /** Uncomment for the Master Node to print out address assignments as they are assigned */
+
70//#define RF24MESH_DEBUG /** Uncomment to enable debug output to serial **/
+
71/**************************/
+
72
+
73/*** Other Configuration ***/
+
74//#define MESH_MIN_SAVE_TIME 30000 /** UNUSED Minimum time required before changing nodeID. Prevents excessive writing to EEPROM */
+
75
+
83#ifndef MESH_LOOKUP_TIMEOUT
+
84 #define MESH_LOOKUP_TIMEOUT 135
+
85#endif // MESH_LOOKUP_TIMEOUT
+
86
+
88#ifndef MESH_WRITE_TIMEOUT
+
89 #define MESH_WRITE_TIMEOUT 115
+
90#endif // MESH_WRITE_TIMEOUT
+
91
+
92#ifndef MESH_DEFAULT_ADDRESS
+
93 #define MESH_DEFAULT_ADDRESS NETWORK_DEFAULT_ADDRESS
+
94#endif // MESH_DEFAULT_ADDRESS
+
95
+
96#define MESH_MULTICAST_ADDRESS NETWORK_MULTICAST_ADDRESS
+
97
+
98//#define MESH_MAX_ADDRESSES 255 /* UNUSED Determines the max size of the array used for storing addresses on the Master Node */
+
99//#define MESH_ADDRESS_HOLD_TIME 30000 /* UNUSED How long before a released address becomes available */
100
-
101#if defined(MESH_DEBUG_MINIMAL)
-
102 #define IF_MESH_DEBUG_MINIMAL(x) ({ x; })
-
103#else
-
104 #define IF_MESH_DEBUG_MINIMAL(x)
-
105#endif
-
106
-
107#if defined(MESH_DEBUG)
-
108 #define IF_MESH_DEBUG(x) ({ x; })
-
109#else
-
110 #define IF_MESH_DEBUG(x)
-
111#endif
-
112
-
113#endif // __RF24MESH_CONFIG_H__
+
101#if (defined(__linux) || defined(linux)) && !defined(__ARDUINO_X86__) && !defined(USE_RF24_LIB_SRC)
+
102 #include <RF24/RF24_config.h>
+
103
+
104//ATXMega
+
105#elif defined(XMEGA)
+
106 #include "../../rf24lib/rf24lib/RF24_config.h"
+
107#else
+
108 #include <RF24_config.h>
+
109#endif
+
110
+
111#if defined(RF24MESH_DEBUG_MINIMAL)
+
112 #define IF_RF24MESH_DEBUG_MINIMAL(x) ({ x; })
+
113#else
+
114 #define IF_RF24MESH_DEBUG_MINIMAL(x)
+
115#endif
+
116
+
117#if defined(RF24MESH_DEBUG)
+
118 #define IF_RF24MESH_DEBUG(x) ({ x; })
+
119#else
+
120 #define IF_RF24MESH_DEBUG(x)
+
121#endif
+
122
+
123#endif // __RF24MESH_CONFIG_H__
+ diff --git a/annotated.html b/annotated.html index 644b59a..04a56a8 100644 --- a/annotated.html +++ b/annotated.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Class List @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/classESBMesh-members.html b/classESBMesh-members.html index 0765718..bd57cd4 100644 --- a/classESBMesh-members.html +++ b/classESBMesh-members.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Member List @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
ESBMesh< network_t, radio_t > Member List
@@ -116,21 +129,23 @@ loadDHCP()ESBMesh< network_t, radio_t > mesh_addressESBMesh< network_t, radio_t > releaseAddress()ESBMesh< network_t, radio_t > - renewAddress(uint32_t timeout=MESH_RENEWAL_TIMEOUT)ESBMesh< network_t, radio_t > - saveDHCP()ESBMesh< network_t, radio_t > - setAddress(uint8_t nodeID, uint16_t address, bool searchBy=false)ESBMesh< network_t, radio_t > - setCallback(void(*meshCallback)(void))ESBMesh< network_t, radio_t > - setChannel(uint8_t _channel)ESBMesh< network_t, radio_t > - setChild(bool allow)ESBMesh< network_t, radio_t > - setNodeID(uint8_t nodeID)ESBMesh< network_t, radio_t > - setStaticAddress(uint8_t nodeID, uint16_t address)ESBMesh< network_t, radio_t > - update()ESBMesh< network_t, radio_t > - write(const void *data, uint8_t msg_type, size_t size, uint8_t nodeID=0)ESBMesh< network_t, radio_t > - write(uint16_t to_node, const void *data, uint8_t msg_type, size_t size)ESBMesh< network_t, radio_t > + releaseAddress(uint16_t address)ESBMesh< network_t, radio_t > + renewAddress(uint32_t timeout=MESH_RENEWAL_TIMEOUT)ESBMesh< network_t, radio_t > + saveDHCP()ESBMesh< network_t, radio_t > + setAddress(uint8_t nodeID, uint16_t address, bool searchBy=false)ESBMesh< network_t, radio_t > + setCallback(void(*meshCallback)(void))ESBMesh< network_t, radio_t > + setChannel(uint8_t _channel)ESBMesh< network_t, radio_t > + setChild(bool allow)ESBMesh< network_t, radio_t > + setNodeID(uint8_t nodeID)ESBMesh< network_t, radio_t > + setStaticAddress(uint8_t nodeID, uint16_t address)ESBMesh< network_t, radio_t > + update()ESBMesh< network_t, radio_t > + write(const void *data, uint8_t msg_type, size_t size, uint8_t nodeID=0)ESBMesh< network_t, radio_t > + write(uint16_t to_node, const void *data, uint8_t msg_type, size_t size)ESBMesh< network_t, radio_t >
+ diff --git a/classESBMesh.html b/classESBMesh.html index 577786f..9e6dd56 100644 --- a/classESBMesh.html +++ b/classESBMesh.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: ESBMesh< network_t, radio_t > Class Template Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
Classes | @@ -144,16 +157,6 @@ Public Attributes

uint8_t _nodeID   -
Address list struct
-

helping members for managing the list of assigned addresses

-
See also
the addrListStruct struct reference
-
-addrListStructaddrList - A array of addrListStruct elements for assigned addresses.
-  -uint8_t addrListTop - The number of entries in the addrListStruct of assigned addresses.
-  +

Advanced Operation

For advanced configuration and usage of the mesh

@@ -184,6 +187,19 @@
 
void loadDHCP ()
 
+ + + + + + + + + +

Address list struct

helping members for managing the list of assigned addresses

+
See also
the addrListStruct struct reference
+
addrListStructaddrList
 A array of addrListStruct elements for assigned addresses.
 
uint8_t addrListTop
 The number of entries in the addrListStruct of assigned addresses.
 
bool releaseAddress (uint16_t address)
 

Detailed Description

template<class network_t = ESBNetwork<RF24>, class radio_t = RF24>
@@ -210,7 +226,7 @@

ESBMesh< network_t, radio_t >::ESBMesh ( - radio_t & _radio, + radio_t & _radio, @@ -253,17 +269,17 @@

bool ESBMesh< network_t, radio_t >::begin ( - uint8_t channel = MESH_DEFAULT_CHANNEL, + uint8_t channel = MESH_DEFAULT_CHANNEL, - rf24_datarate_e data_rate = RF24_1MBPS, + rf24_datarate_e data_rate = RF24_1MBPS, - uint32_t timeout = MESH_RENEWAL_TIMEOUT ) + uint32_t timeout = MESH_RENEWAL_TIMEOUT )

@@ -295,7 +311,7 @@

uint8_t ESBMesh< network_t, radio_t >::update ( - ) + ) @@ -318,22 +334,22 @@

bool ESBMesh< network_t, radio_t >::write ( - const void * data, + const void * data, - uint8_t msg_type, + uint8_t msg_type, - size_t size, + size_t size, - uint8_t nodeID = 0 ) + uint8_t nodeID = 0 )

@@ -352,7 +368,7 @@

Returns
True if success; false if failed
-

Definition at line 118 of file RF24Mesh.cpp.

+

Definition at line 114 of file RF24Mesh.cpp.

@@ -381,7 +397,7 @@

Definition at line 417 of file RF24Mesh.cpp.

+

Definition at line 438 of file RF24Mesh.cpp.

@@ -396,7 +412,7 @@

uint16_t ESBMesh< network_t, radio_t >::renewAddress ( - uint32_t timeout = MESH_RENEWAL_TIMEOUT) + uint32_t timeout = MESH_RENEWAL_TIMEOUT) @@ -413,7 +429,7 @@

Returns
The newly assigned RF24Network address. If the connecting process fails, then MESH_DEFAULT_ADDRESS is returned because all consciously unconnected nodes use that address.
-

Definition at line 283 of file RF24Mesh.cpp.

+

Definition at line 304 of file RF24Mesh.cpp.

@@ -428,7 +444,7 @@

void ESBMesh< network_t, radio_t >::DHCP ( - ) + ) @@ -436,7 +452,7 @@

Warning
On master nodes, It is required to call this function immediately after calling ESBMesh::update() to ensure address requests are handled appropriately.
-

Definition at line 511 of file RF24Mesh.cpp.

+

Definition at line 532 of file RF24Mesh.cpp.

@@ -451,7 +467,7 @@

int16_t ESBMesh< network_t, radio_t >::getNodeID ( - uint16_t address = MESH_BLANK_ID) + uint16_t address = MESH_BLANK_ID) @@ -464,7 +480,7 @@

Returns
The unique identifier of the node in the range [1, 255] or -1 if node was not found.
-

Definition at line 211 of file RF24Mesh.cpp.

+

Definition at line 216 of file RF24Mesh.cpp.

@@ -479,7 +495,7 @@

bool ESBMesh< network_t, radio_t >::checkConnection ( - ) + ) @@ -487,12 +503,12 @@

Note
If this function fails, address renewal should typically be done.
Returns
1 if connected, 0 if mesh not responding
-

Definition at line 159 of file RF24Mesh.cpp.

+

Definition at line 155 of file RF24Mesh.cpp.

-

◆ releaseAddress()

+

◆ releaseAddress() [1/2]

@@ -542,7 +558,7 @@

Returns
The RF24Network address of the node, -2 if successful but not in list, -1 if failed.
-

Definition at line 173 of file RF24Mesh.cpp.

+

Definition at line 178 of file RF24Mesh.cpp.

@@ -557,17 +573,17 @@

bool ESBMesh< network_t, radio_t >::write ( - uint16_t to_node, + uint16_t to_node, - const void * data, + const void * data, - uint8_t msg_type, + uint8_t msg_type, @@ -579,7 +595,7 @@

Definition at line 107 of file RF24Mesh.cpp.

+

Definition at line 103 of file RF24Mesh.cpp.

@@ -606,7 +622,7 @@

Definition at line 141 of file RF24Mesh.cpp.

+

Definition at line 137 of file RF24Mesh.cpp.

@@ -633,7 +649,7 @@

Definition at line 151 of file RF24Mesh.cpp.

+

Definition at line 147 of file RF24Mesh.cpp.

@@ -648,7 +664,7 @@

void ESBMesh< network_t, radio_t >::setCallback ( - void(*)(void) meshCallback) + void(* meshCallback )(void)) @@ -665,7 +681,7 @@

Definition at line 602 of file RF24Mesh.cpp.

+

Definition at line 623 of file RF24Mesh.cpp.

@@ -680,17 +696,17 @@

void ESBMesh< network_t, radio_t >::setAddress ( - uint8_t nodeID, + uint8_t nodeID, - uint16_t address, + uint16_t address, - bool searchBy = false ) + bool searchBy = false )
@@ -710,7 +726,7 @@

Definition at line 434 of file RF24Mesh.cpp.

+

Definition at line 455 of file RF24Mesh.cpp.

@@ -725,14 +741,14 @@

void ESBMesh< network_t, radio_t >::saveDHCP ( - ) + )

Save the addrList to a binary file named "dhcplist.txt".

Note
This function is for use on the master node only and only on Linux or x86 platforms.
-

Definition at line 496 of file RF24Mesh.cpp.

+

Definition at line 517 of file RF24Mesh.cpp.

@@ -747,14 +763,14 @@

void ESBMesh< network_t, radio_t >::loadDHCP ( - ) + )

Load the addrList from a binary file named "dhcplist.txt".

Note
This function is for use on the master node only and only on Linux or x86 platforms.
-

Definition at line 472 of file RF24Mesh.cpp.

+

Definition at line 493 of file RF24Mesh.cpp.

@@ -769,7 +785,7 @@

void ESBMesh< network_t, radio_t >::setStaticAddress ( - uint8_t nodeID, + uint8_t nodeID, @@ -780,7 +796,37 @@

Deprecated
For backward compatibility with older code. Use the synonymous setAddress() instead.
-

Definition at line 426 of file RF24Mesh.cpp.

+

Definition at line 447 of file RF24Mesh.cpp.

+ + + + +

◆ releaseAddress() [2/2]

+ +
+
+
+template<class network_t , class radio_t >
+ + + + + + + +
bool ESBMesh< network_t, radio_t >::releaseAddress (uint16_t address)
+
+

Releases the specified address if leased to a mesh node's ID.

+

This is specific to master nodes, so network administrators can manage assigned addresses without notifying the nodes that might be appropriating them.

+
Parameters
+ + +
addressThe address to release from any mesh node.
+
+
+
Returns
True if successfully released, otherwise false.
+ +

Definition at line 289 of file RF24Mesh.cpp.

@@ -872,7 +918,8 @@

+ diff --git a/classESBNetwork.html b/classESBNetwork.html index bd47b3e..cc2ccf1 100644 --- a/classESBNetwork.html +++ b/classESBNetwork.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: ESBNetwork< radio_t > Class Template Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
ESBNetwork< radio_t > Class Template Reference
@@ -111,7 +124,8 @@
+ diff --git a/classes.html b/classes.html index cc43fe7..9a0004f 100644 --- a/classes.html +++ b/classes.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Class Index @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/deprecated.html b/deprecated.html index f26c199..a66a13d 100644 --- a/deprecated.html +++ b/deprecated.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Deprecated List @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
Deprecated List
@@ -102,7 +115,8 @@
+
diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html index d2edf0f..7323c9b 100644 --- a/dir_49e56c817e5e54854c35e136979f97ca.html +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: docs Directory Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + + +
docs Directory Reference
@@ -107,7 +120,8 @@
+ diff --git a/doxygen-custom.css b/doxygen-custom.css index 2b5ef5a..4a3c469 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 9cf4f26..d6d0679 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 1ed9e31..d65a12e 100644 --- a/doxygen_crawl.html +++ b/doxygen_crawl.html @@ -4,7 +4,7 @@ Validator / crawler helper - + @@ -79,5 +79,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js index 24dfe9c..8985f42 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 ee3b906..8d605ee 100644 --- a/examples.html +++ b/examples.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Examples @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/files.html b/files.html index a3584df..f038e90 100644 --- a/files.html +++ b/files.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: File List @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
+
diff --git a/functions.html b/functions.html index 3ff335a..cd3d537 100644 --- a/functions.html +++ b/functions.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Class Members @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
+
diff --git a/functions_func.html b/functions_func.html index d6700c7..90e1686 100644 --- a/functions_func.html +++ b/functions_func.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Class Members - Functions @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
+
diff --git a/functions_vars.html b/functions_vars.html index 958d9b3..a1000a3 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Class Members - Variables @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
+
diff --git a/general__usage_8md.html b/general__usage_8md.html index dfad5fc..c385e67 100644 --- a/general__usage_8md.html +++ b/general__usage_8md.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: docs/general_usage.md File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
docs/general_usage.md File Reference
@@ -103,7 +116,8 @@
+ diff --git a/globals.html b/globals.html index 3104954..aaad76c 100644 --- a/globals.html +++ b/globals.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: File Members @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
Here is a list of all file members with links to the files they belong to:
+
diff --git a/globals_defs.html b/globals_defs.html index 4871be3..df87a98 100644 --- a/globals_defs.html +++ b/globals_defs.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: File Members @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
Here is a list of all macros with links to the files they belong to:
+
diff --git a/globals_type.html b/globals_type.html index 4fadcfc..1770ef9 100644 --- a/globals_type.html +++ b/globals_type.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: File Members @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/index.html b/index.html index fae1766..d7ebe3d 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Mesh Networking Layer for RF24 Radios @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
+
diff --git a/main__page_8md.html b/main__page_8md.html index f45e41c..e72e1d0 100644 --- a/main__page_8md.html +++ b/main__page_8md.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: docs/main_page.md File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
docs/main_page.md File Reference
@@ -103,7 +116,8 @@
+ diff --git a/md_CONTRIBUTING.html b/md_CONTRIBUTING.html index 888904c..c3df375 100644 --- a/md_CONTRIBUTING.html +++ b/md_CONTRIBUTING.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: CONTRIBUTING @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
CONTRIBUTING
@@ -111,7 +124,8 @@
+
diff --git a/md_docs_2general__usage.html b/md_docs_2general__usage.html index f0fbb64..cb6b7e4 100644 --- a/md_docs_2general__usage.html +++ b/md_docs_2general__usage.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: General Usage @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
General Usage
@@ -149,7 +162,8 @@

+
diff --git a/md_docs_2setup__config.html b/md_docs_2setup__config.html index b444cc6..45ed8b3 100644 --- a/md_docs_2setup__config.html +++ b/md_docs_2setup__config.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Setup And Config @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
Setup And Config
@@ -172,7 +185,8 @@

+
diff --git a/navtree.css b/navtree.css new file mode 100644 index 0000000..69211d4 --- /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 0b84df4..6eb2474 100644 --- a/pages.html +++ b/pages.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Related Pages @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + +
+
+
diff --git a/resize.js b/resize.js new file mode 100644 index 0000000..7d8cdc7 --- /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_10.js b/search/all_10.js index d52c8a5..a0ac792 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -3,7 +3,7 @@ var searchData= ['radios_0',['Mesh Networking Layer for RF24 Radios',['../index.html',1,'']]], ['raspberry_20pi_20linux_1',['Raspberry Pi/Linux',['../md_docs_2general__usage.html#autotoc_md3',1,'']]], ['reduce_20resource_20consumption_2',['Reduce resource consumption',['../md_docs_2setup__config.html#autotoc_md21',1,'']]], - ['releaseaddress_3',['releaseAddress',['../classESBMesh.html#a63bf04a5a8c9a5c66618dd95f8e3af99',1,'ESBMesh']]], + ['releaseaddress_3',['releaseAddress',['../classESBMesh.html#a63bf04a5a8c9a5c66618dd95f8e3af99',1,'ESBMesh::releaseAddress()'],['../classESBMesh.html#a68f9fbcd78ded76537c41163f9700c23',1,'ESBMesh::releaseAddress(uint16_t address)']]], ['renewaddress_4',['renewAddress',['../classESBMesh.html#a234862c9d9729b3ca11fcb9b29ec55b1',1,'ESBMesh']]], ['requirements_5',['Requirements',['../md_docs_2setup__config.html#autotoc_md16',1,'Hardware Requirements'],['../md_docs_2setup__config.html#autotoc_md15',1,'Requirements'],['../md_docs_2setup__config.html#autotoc_md17',1,'Software Requirements']]], ['resource_20consumption_6',['Reduce resource consumption',['../md_docs_2setup__config.html#autotoc_md21',1,'']]], diff --git a/search/all_a.js b/search/all_a.js index 6e13169..67a31ee 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,7 +1,7 @@ var searchData= [ - ['if_5fmesh_5fdebug_0',['IF_MESH_DEBUG',['../RF24Mesh__config_8h.html#a8d4bf8ac17495dc172a94729a11e62ad',1,'RF24Mesh_config.h']]], - ['if_5fmesh_5fdebug_5fminimal_1',['IF_MESH_DEBUG_MINIMAL',['../RF24Mesh__config_8h.html#a6103680c1abbb354076da7af72753dd3',1,'RF24Mesh_config.h']]], + ['if_5frf24mesh_5fdebug_0',['IF_RF24MESH_DEBUG',['../RF24Mesh__config_8h.html#a2a55a0c483ba3540629d29a9cf63e84b',1,'RF24Mesh_config.h']]], + ['if_5frf24mesh_5fdebug_5fminimal_1',['IF_RF24MESH_DEBUG_MINIMAL',['../RF24Mesh__config_8h.html#a8d2559907bd94ebf3bf2be303ca8d7c2',1,'RF24Mesh_config.h']]], ['installation_2',['Installation',['../md_docs_2setup__config.html#autotoc_md18',1,'']]], ['it_20work_3',['How does it work?',['../index.html#autotoc_md12',1,'']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 3cd871d..fcaac62 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -10,15 +10,16 @@ var searchData= ['mesh_5faddress_7',['mesh_address',['../classESBMesh.html#af4fb53ec09a55b794a376c601ed9b0ec',1,'ESBMesh']]], ['mesh_5fblank_5fid_8',['MESH_BLANK_ID',['../RF24Mesh_8h.html#ac9eca43efb96d3214debce1d098f3b5b',1,'RF24Mesh.h']]], ['mesh_5fcallback_9',['MESH_CALLBACK',['../RF24Mesh_8h.html#a7624f49a901f183603bc0cf85231b6e1',1,'RF24Mesh.h']]], - ['mesh_5fdefault_5faddress_10',['MESH_DEFAULT_ADDRESS',['../RF24Mesh__config_8h.html#a9aa307506ecde1e60194a4eed4e073c9',1,'RF24Mesh_config.h']]], - ['mesh_5fdefault_5fchannel_11',['MESH_DEFAULT_CHANNEL',['../RF24Mesh__config_8h.html#a8a8ab350f590431aad2791ed1cf36177',1,'RF24Mesh_config.h']]], - ['mesh_5fid_5flookup_12',['MESH_ID_LOOKUP',['../RF24Mesh_8h.html#a3a8a9cb5ab86651611a15fa52742ccc7',1,'RF24Mesh.h']]], - ['mesh_5flookup_5ftimeout_13',['MESH_LOOKUP_TIMEOUT',['../RF24Mesh__config_8h.html#a57000c827c68ddc0ba6f2a04efa3ef35',1,'RF24Mesh_config.h']]], - ['mesh_5fmax_5fchildren_14',['MESH_MAX_CHILDREN',['../RF24Mesh__config_8h.html#a34a829ec67e8c11ed0416fe1ee5e3bae',1,'RF24Mesh_config.h']]], - ['mesh_5fmaxpolls_15',['MESH_MAXPOLLS',['../RF24Mesh_8cpp.html#a54159bb34efc87c1eed997bae071b8c0',1,'RF24Mesh.cpp']]], - ['mesh_5fmem_5falloc_5fsize_16',['MESH_MEM_ALLOC_SIZE',['../RF24Mesh__config_8h.html#af717a331ff344489e9e299f2e3fadaf0',1,'RF24Mesh_config.h']]], - ['mesh_5fmulticast_5faddress_17',['MESH_MULTICAST_ADDRESS',['../RF24Mesh__config_8h.html#a08953747b6affc39e66a81acc7baf9db',1,'RF24Mesh_config.h']]], - ['mesh_5frenewal_5ftimeout_18',['MESH_RENEWAL_TIMEOUT',['../RF24Mesh__config_8h.html#ab7aba6d7a94d3c79a7ed4f61ee19af21',1,'RF24Mesh_config.h']]], - ['mesh_5fwrite_5ftimeout_19',['MESH_WRITE_TIMEOUT',['../RF24Mesh__config_8h.html#afd5121b771fe8bd255f70863b2127d6e',1,'RF24Mesh_config.h']]], - ['more_20',['How to learn more',['../index.html#autotoc_md13',1,'']]] + ['mesh_5fconnection_5fcheck_5fattempts_10',['MESH_CONNECTION_CHECK_ATTEMPTS',['../RF24Mesh__config_8h.html#ad1620263ea0eec5160fbee3cdb463a0f',1,'RF24Mesh_config.h']]], + ['mesh_5fdefault_5faddress_11',['MESH_DEFAULT_ADDRESS',['../RF24Mesh__config_8h.html#a9aa307506ecde1e60194a4eed4e073c9',1,'RF24Mesh_config.h']]], + ['mesh_5fdefault_5fchannel_12',['MESH_DEFAULT_CHANNEL',['../RF24Mesh__config_8h.html#a8a8ab350f590431aad2791ed1cf36177',1,'RF24Mesh_config.h']]], + ['mesh_5fid_5flookup_13',['MESH_ID_LOOKUP',['../RF24Mesh_8h.html#a3a8a9cb5ab86651611a15fa52742ccc7',1,'RF24Mesh.h']]], + ['mesh_5flookup_5ftimeout_14',['MESH_LOOKUP_TIMEOUT',['../RF24Mesh__config_8h.html#a57000c827c68ddc0ba6f2a04efa3ef35',1,'RF24Mesh_config.h']]], + ['mesh_5fmax_5fchildren_15',['MESH_MAX_CHILDREN',['../RF24Mesh__config_8h.html#a34a829ec67e8c11ed0416fe1ee5e3bae',1,'RF24Mesh_config.h']]], + ['mesh_5fmaxpolls_16',['MESH_MAXPOLLS',['../RF24Mesh_8cpp.html#a54159bb34efc87c1eed997bae071b8c0',1,'RF24Mesh.cpp']]], + ['mesh_5fmem_5falloc_5fsize_17',['MESH_MEM_ALLOC_SIZE',['../RF24Mesh__config_8h.html#af717a331ff344489e9e299f2e3fadaf0',1,'RF24Mesh_config.h']]], + ['mesh_5fmulticast_5faddress_18',['MESH_MULTICAST_ADDRESS',['../RF24Mesh__config_8h.html#a08953747b6affc39e66a81acc7baf9db',1,'RF24Mesh_config.h']]], + ['mesh_5frenewal_5ftimeout_19',['MESH_RENEWAL_TIMEOUT',['../RF24Mesh__config_8h.html#ab7aba6d7a94d3c79a7ed4f61ee19af21',1,'RF24Mesh_config.h']]], + ['mesh_5fwrite_5ftimeout_20',['MESH_WRITE_TIMEOUT',['../RF24Mesh__config_8h.html#afd5121b771fe8bd255f70863b2127d6e',1,'RF24Mesh_config.h']]], + ['more_21',['How to learn more',['../index.html#autotoc_md13',1,'']]] ]; diff --git a/search/defines_0.js b/search/defines_0.js index 3f4dd39..9ba1530 100644 --- a/search/defines_0.js +++ b/search/defines_0.js @@ -1,5 +1,5 @@ var searchData= [ - ['if_5fmesh_5fdebug_0',['IF_MESH_DEBUG',['../RF24Mesh__config_8h.html#a8d4bf8ac17495dc172a94729a11e62ad',1,'RF24Mesh_config.h']]], - ['if_5fmesh_5fdebug_5fminimal_1',['IF_MESH_DEBUG_MINIMAL',['../RF24Mesh__config_8h.html#a6103680c1abbb354076da7af72753dd3',1,'RF24Mesh_config.h']]] + ['if_5frf24mesh_5fdebug_0',['IF_RF24MESH_DEBUG',['../RF24Mesh__config_8h.html#a2a55a0c483ba3540629d29a9cf63e84b',1,'RF24Mesh_config.h']]], + ['if_5frf24mesh_5fdebug_5fminimal_1',['IF_RF24MESH_DEBUG_MINIMAL',['../RF24Mesh__config_8h.html#a8d2559907bd94ebf3bf2be303ca8d7c2',1,'RF24Mesh_config.h']]] ]; diff --git a/search/defines_1.js b/search/defines_1.js index be0f110..0b1b259 100644 --- a/search/defines_1.js +++ b/search/defines_1.js @@ -4,14 +4,15 @@ var searchData= ['mesh_5faddr_5frelease_1',['MESH_ADDR_RELEASE',['../RF24Mesh_8h.html#a83db195f6171205bc2847cf0406aafd8',1,'RF24Mesh.h']]], ['mesh_5fblank_5fid_2',['MESH_BLANK_ID',['../RF24Mesh_8h.html#ac9eca43efb96d3214debce1d098f3b5b',1,'RF24Mesh.h']]], ['mesh_5fcallback_3',['MESH_CALLBACK',['../RF24Mesh_8h.html#a7624f49a901f183603bc0cf85231b6e1',1,'RF24Mesh.h']]], - ['mesh_5fdefault_5faddress_4',['MESH_DEFAULT_ADDRESS',['../RF24Mesh__config_8h.html#a9aa307506ecde1e60194a4eed4e073c9',1,'RF24Mesh_config.h']]], - ['mesh_5fdefault_5fchannel_5',['MESH_DEFAULT_CHANNEL',['../RF24Mesh__config_8h.html#a8a8ab350f590431aad2791ed1cf36177',1,'RF24Mesh_config.h']]], - ['mesh_5fid_5flookup_6',['MESH_ID_LOOKUP',['../RF24Mesh_8h.html#a3a8a9cb5ab86651611a15fa52742ccc7',1,'RF24Mesh.h']]], - ['mesh_5flookup_5ftimeout_7',['MESH_LOOKUP_TIMEOUT',['../RF24Mesh__config_8h.html#a57000c827c68ddc0ba6f2a04efa3ef35',1,'RF24Mesh_config.h']]], - ['mesh_5fmax_5fchildren_8',['MESH_MAX_CHILDREN',['../RF24Mesh__config_8h.html#a34a829ec67e8c11ed0416fe1ee5e3bae',1,'RF24Mesh_config.h']]], - ['mesh_5fmaxpolls_9',['MESH_MAXPOLLS',['../RF24Mesh_8cpp.html#a54159bb34efc87c1eed997bae071b8c0',1,'RF24Mesh.cpp']]], - ['mesh_5fmem_5falloc_5fsize_10',['MESH_MEM_ALLOC_SIZE',['../RF24Mesh__config_8h.html#af717a331ff344489e9e299f2e3fadaf0',1,'RF24Mesh_config.h']]], - ['mesh_5fmulticast_5faddress_11',['MESH_MULTICAST_ADDRESS',['../RF24Mesh__config_8h.html#a08953747b6affc39e66a81acc7baf9db',1,'RF24Mesh_config.h']]], - ['mesh_5frenewal_5ftimeout_12',['MESH_RENEWAL_TIMEOUT',['../RF24Mesh__config_8h.html#ab7aba6d7a94d3c79a7ed4f61ee19af21',1,'RF24Mesh_config.h']]], - ['mesh_5fwrite_5ftimeout_13',['MESH_WRITE_TIMEOUT',['../RF24Mesh__config_8h.html#afd5121b771fe8bd255f70863b2127d6e',1,'RF24Mesh_config.h']]] + ['mesh_5fconnection_5fcheck_5fattempts_4',['MESH_CONNECTION_CHECK_ATTEMPTS',['../RF24Mesh__config_8h.html#ad1620263ea0eec5160fbee3cdb463a0f',1,'RF24Mesh_config.h']]], + ['mesh_5fdefault_5faddress_5',['MESH_DEFAULT_ADDRESS',['../RF24Mesh__config_8h.html#a9aa307506ecde1e60194a4eed4e073c9',1,'RF24Mesh_config.h']]], + ['mesh_5fdefault_5fchannel_6',['MESH_DEFAULT_CHANNEL',['../RF24Mesh__config_8h.html#a8a8ab350f590431aad2791ed1cf36177',1,'RF24Mesh_config.h']]], + ['mesh_5fid_5flookup_7',['MESH_ID_LOOKUP',['../RF24Mesh_8h.html#a3a8a9cb5ab86651611a15fa52742ccc7',1,'RF24Mesh.h']]], + ['mesh_5flookup_5ftimeout_8',['MESH_LOOKUP_TIMEOUT',['../RF24Mesh__config_8h.html#a57000c827c68ddc0ba6f2a04efa3ef35',1,'RF24Mesh_config.h']]], + ['mesh_5fmax_5fchildren_9',['MESH_MAX_CHILDREN',['../RF24Mesh__config_8h.html#a34a829ec67e8c11ed0416fe1ee5e3bae',1,'RF24Mesh_config.h']]], + ['mesh_5fmaxpolls_10',['MESH_MAXPOLLS',['../RF24Mesh_8cpp.html#a54159bb34efc87c1eed997bae071b8c0',1,'RF24Mesh.cpp']]], + ['mesh_5fmem_5falloc_5fsize_11',['MESH_MEM_ALLOC_SIZE',['../RF24Mesh__config_8h.html#af717a331ff344489e9e299f2e3fadaf0',1,'RF24Mesh_config.h']]], + ['mesh_5fmulticast_5faddress_12',['MESH_MULTICAST_ADDRESS',['../RF24Mesh__config_8h.html#a08953747b6affc39e66a81acc7baf9db',1,'RF24Mesh_config.h']]], + ['mesh_5frenewal_5ftimeout_13',['MESH_RENEWAL_TIMEOUT',['../RF24Mesh__config_8h.html#ab7aba6d7a94d3c79a7ed4f61ee19af21',1,'RF24Mesh_config.h']]], + ['mesh_5fwrite_5ftimeout_14',['MESH_WRITE_TIMEOUT',['../RF24Mesh__config_8h.html#afd5121b771fe8bd255f70863b2127d6e',1,'RF24Mesh_config.h']]] ]; diff --git a/search/functions_6.js b/search/functions_6.js index 29b3b1f..cb2108e 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['releaseaddress_0',['releaseAddress',['../classESBMesh.html#a63bf04a5a8c9a5c66618dd95f8e3af99',1,'ESBMesh']]], + ['releaseaddress_0',['releaseAddress',['../classESBMesh.html#a63bf04a5a8c9a5c66618dd95f8e3af99',1,'ESBMesh::releaseAddress()'],['../classESBMesh.html#a68f9fbcd78ded76537c41163f9700c23',1,'ESBMesh::releaseAddress(uint16_t address)']]], ['renewaddress_1',['renewAddress',['../classESBMesh.html#a234862c9d9729b3ca11fcb9b29ec55b1',1,'ESBMesh']]] ]; diff --git a/setup__config_8md.html b/setup__config_8md.html index df5031c..239f121 100644 --- a/setup__config_8md.html +++ b/setup__config_8md.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: docs/setup_config.md File Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@
- + + +
+
docs/setup_config.md File Reference
@@ -103,7 +116,8 @@
+ diff --git a/structESBMesh_1_1addrListStruct-members.html b/structESBMesh_1_1addrListStruct-members.html index 46ffd87..8792be4 100644 --- a/structESBMesh_1_1addrListStruct-members.html +++ b/structESBMesh_1_1addrListStruct-members.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: Member List @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + + +
ESBMesh< network_t, radio_t >::addrListStruct Member List
@@ -113,7 +126,8 @@
+ diff --git a/structESBMesh_1_1addrListStruct.html b/structESBMesh_1_1addrListStruct.html index 8a3eabe..67a46fd 100644 --- a/structESBMesh_1_1addrListStruct.html +++ b/structESBMesh_1_1addrListStruct.html @@ -3,7 +3,7 @@ - + RF24Mesh - Automated Networking for nrf24L01 & nrf52x radios: ESBMesh< network_t, radio_t >::addrListStruct Struct Reference @@ -11,6 +11,8 @@ + + @@ -40,11 +42,16 @@ - + + + +
Public Attributes | @@ -176,7 +189,8 @@

+