Version 1.01

Optimizing using RAM on PRINT_LOG mode.
This commit is contained in:
Alexey Zholtikov 2022-12-10 15:11:11 +03:00
parent 2a3178b5d4
commit 67dcf3f407
2 changed files with 80 additions and 80 deletions

View File

@ -1,5 +1,5 @@
name=ZHNetwork name=ZHNetwork
version=1.0 version=1.01
author=Alexey Zholtikov author=Alexey Zholtikov
maintainer=Alexey Zholtikov maintainer=Alexey Zholtikov
sentence=ESP-NOW based Mesh network for ESP8266/ESP32 sentence=ESP-NOW based Mesh network for ESP8266/ESP32

View File

@ -5,7 +5,7 @@ incoming_queue_t queueForIncomingData;
outgoing_queue_t queueForOutgoingData; outgoing_queue_t queueForOutgoingData;
waiting_queue_t queueForRoutingVectorWaiting; waiting_queue_t queueForRoutingVectorWaiting;
const String firmware{"1.0"}; const char *firmware PROGMEM{"1.0"};
const uint8_t broadcastMAC[6]{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; const uint8_t broadcastMAC[6]{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
bool criticalProcessSemaphore{false}; bool criticalProcessSemaphore{false};
@ -154,7 +154,7 @@ void ZHNetwork::maintenance()
if (confirmReceiving) if (confirmReceiving)
{ {
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.println("OK."); Serial.println(F("OK."));
#endif #endif
outgoing_data_t outgoingData = queueForOutgoingData.front(); outgoing_data_t outgoingData = queueForOutgoingData.front();
queueForOutgoingData.pop(); queueForOutgoingData.pop();
@ -167,7 +167,7 @@ void ZHNetwork::maintenance()
else else
{ {
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.println("FAULT."); Serial.println(F("FAULT."));
#endif #endif
if (numberOfAttemptsToSend < maxNumberOfAttempts_) if (numberOfAttemptsToSend < maxNumberOfAttempts_)
++numberOfAttemptsToSend; ++numberOfAttemptsToSend;
@ -186,9 +186,9 @@ void ZHNetwork::maintenance()
{ {
routingVector.erase(routingVector.begin() + i); routingVector.erase(routingVector.begin() + i);
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("CHECKING ROUTING TABLE... Routing to MAC "); Serial.print(F("CHECKING ROUTING TABLE... Routing to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.println(" deleted."); Serial.println(F(" deleted."));
#endif #endif
} }
} }
@ -220,33 +220,33 @@ void ZHNetwork::maintenance()
switch (outgoingData.transmittedData.messageType) switch (outgoingData.transmittedData.messageType)
{ {
case BROADCAST: case BROADCAST:
Serial.print("BROADCAST"); Serial.print(F("BROADCAST"));
break; break;
case UNICAST: case UNICAST:
Serial.print("UNICAST"); Serial.print(F("UNICAST"));
break; break;
case UNICAST_WITH_CONFIRM: case UNICAST_WITH_CONFIRM:
Serial.print("UNICAST_WITH_CONFIRM"); Serial.print(F("UNICAST_WITH_CONFIRM"));
break; break;
case DELIVERY_CONFIRM_RESPONSE: case DELIVERY_CONFIRM_RESPONSE:
Serial.print("DELIVERY_CONFIRM_RESPONSE"); Serial.print(F("DELIVERY_CONFIRM_RESPONSE"));
break; break;
case SEARCH_REQUEST: case SEARCH_REQUEST:
Serial.print("SEARCH_REQUEST"); Serial.print(F("SEARCH_REQUEST"));
break; break;
case SEARCH_RESPONSE: case SEARCH_RESPONSE:
Serial.print("SEARCH_RESPONSE"); Serial.print(F("SEARCH_RESPONSE"));
break; break;
default: default:
break; break;
} }
Serial.print(" message from MAC "); Serial.print(F(" message from MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC)); Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.print(" via MAC "); Serial.print(F(" via MAC "));
Serial.print(macToString(outgoingData.intermediateTargetMAC)); Serial.print(macToString(outgoingData.intermediateTargetMAC));
Serial.print(" sended. Status "); Serial.print(F(" sended. Status "));
#endif #endif
} }
if (!queueForIncomingData.empty()) if (!queueForIncomingData.empty())
@ -261,9 +261,9 @@ void ZHNetwork::maintenance()
{ {
case BROADCAST: case BROADCAST:
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("BROADCAST message from MAC "); Serial.print(F("BROADCAST message from MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.println(" received."); Serial.println(F(" received."));
#endif #endif
if (onBroadcastReceivingCallback) if (onBroadcastReceivingCallback)
onBroadcastReceivingCallback(incomingData.transmittedData.message, incomingData.transmittedData.originalSenderMAC); onBroadcastReceivingCallback(incomingData.transmittedData.message, incomingData.transmittedData.originalSenderMAC);
@ -271,13 +271,13 @@ void ZHNetwork::maintenance()
break; break;
case UNICAST: case UNICAST:
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("UNICAST message from MAC "); Serial.print(F("UNICAST message from MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(incomingData.transmittedData.originalTargetMAC)); Serial.print(macToString(incomingData.transmittedData.originalTargetMAC));
Serial.print(" via MAC "); Serial.print(F(" via MAC "));
Serial.print(macToString(incomingData.intermediateSenderMAC)); Serial.print(macToString(incomingData.intermediateSenderMAC));
Serial.println(" received."); Serial.println(F(" received."));
#endif #endif
if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC)) if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC))
{ {
@ -289,13 +289,13 @@ void ZHNetwork::maintenance()
break; break;
case UNICAST_WITH_CONFIRM: case UNICAST_WITH_CONFIRM:
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("UNICAST_WITH_CONFIRM message from MAC "); Serial.print(F("UNICAST_WITH_CONFIRM message from MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(incomingData.transmittedData.originalTargetMAC)); Serial.print(macToString(incomingData.transmittedData.originalTargetMAC));
Serial.print(" via MAC "); Serial.print(F(" via MAC "));
Serial.print(macToString(incomingData.intermediateSenderMAC)); Serial.print(macToString(incomingData.intermediateSenderMAC));
Serial.println(" received."); Serial.println(F(" received."));
#endif #endif
if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC)) if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC))
{ {
@ -308,13 +308,13 @@ void ZHNetwork::maintenance()
break; break;
case DELIVERY_CONFIRM_RESPONSE: case DELIVERY_CONFIRM_RESPONSE:
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("DELIVERY_CONFIRM_RESPONSE message from MAC "); Serial.print(F("DELIVERY_CONFIRM_RESPONSE message from MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(incomingData.transmittedData.originalTargetMAC)); Serial.print(macToString(incomingData.transmittedData.originalTargetMAC));
Serial.print(" via MAC "); Serial.print(F(" via MAC "));
Serial.print(macToString(incomingData.intermediateSenderMAC)); Serial.print(macToString(incomingData.intermediateSenderMAC));
Serial.println(" received."); Serial.println(F(" received."));
#endif #endif
if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC)) if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC))
{ {
@ -326,11 +326,11 @@ void ZHNetwork::maintenance()
break; break;
case SEARCH_REQUEST: case SEARCH_REQUEST:
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("SEARCH_REQUEST message from MAC "); Serial.print(F("SEARCH_REQUEST message from MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(incomingData.transmittedData.originalTargetMAC)); Serial.print(macToString(incomingData.transmittedData.originalTargetMAC));
Serial.println(" received."); Serial.println(F(" received."));
#endif #endif
if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC)) if (macToString(incomingData.transmittedData.originalTargetMAC) == macToString(localMAC))
broadcastMessage("", incomingData.transmittedData.originalSenderMAC, SEARCH_RESPONSE); broadcastMessage("", incomingData.transmittedData.originalSenderMAC, SEARCH_RESPONSE);
@ -340,11 +340,11 @@ void ZHNetwork::maintenance()
break; break;
case SEARCH_RESPONSE: case SEARCH_RESPONSE:
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("SEARCH_RESPONSE message from MAC "); Serial.print(F("SEARCH_RESPONSE message from MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(incomingData.transmittedData.originalTargetMAC)); Serial.print(macToString(incomingData.transmittedData.originalTargetMAC));
Serial.println(" received."); Serial.println(F(" received."));
#endif #endif
if (macToString(incomingData.transmittedData.originalTargetMAC) != macToString(localMAC)) if (macToString(incomingData.transmittedData.originalTargetMAC) != macToString(localMAC))
forward = true; forward = true;
@ -375,11 +375,11 @@ void ZHNetwork::maintenance()
memcpy(&routingTable.intermediateTargetMAC, &incomingData.intermediateSenderMAC, 6); memcpy(&routingTable.intermediateTargetMAC, &incomingData.intermediateSenderMAC, 6);
routingVector.at(i) = routingTable; routingVector.at(i) = routingTable;
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("CHECKING ROUTING TABLE... Routing to MAC "); Serial.print(F("CHECKING ROUTING TABLE... Routing to MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.print(" updated. Target is "); Serial.print(F(" updated. Target is "));
Serial.print(macToString(incomingData.intermediateSenderMAC)); Serial.print(macToString(incomingData.intermediateSenderMAC));
Serial.println("."); Serial.println(F("."));
#endif #endif
} }
} }
@ -393,11 +393,11 @@ void ZHNetwork::maintenance()
memcpy(&routingTable.intermediateTargetMAC, &incomingData.intermediateSenderMAC, 6); memcpy(&routingTable.intermediateTargetMAC, &incomingData.intermediateSenderMAC, 6);
routingVector.push_back(routingTable); routingVector.push_back(routingTable);
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("CHECKING ROUTING TABLE... Routing to MAC "); Serial.print(F("CHECKING ROUTING TABLE... Routing to MAC "));
Serial.print(macToString(incomingData.transmittedData.originalSenderMAC)); Serial.print(macToString(incomingData.transmittedData.originalSenderMAC));
Serial.print(" added. Target is "); Serial.print(F(" added. Target is "));
Serial.print(macToString(incomingData.intermediateSenderMAC)); Serial.print(macToString(incomingData.intermediateSenderMAC));
Serial.println("."); Serial.println(F("."));
#endif #endif
} }
} }
@ -418,11 +418,11 @@ void ZHNetwork::maintenance()
memcpy(&outgoingData.intermediateTargetMAC, &routingTable.intermediateTargetMAC, 6); memcpy(&outgoingData.intermediateTargetMAC, &routingTable.intermediateTargetMAC, 6);
queueForOutgoingData.push(outgoingData); queueForOutgoingData.push(outgoingData);
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("CHECKING ROUTING TABLE... Routing to MAC "); Serial.print(F("CHECKING ROUTING TABLE... Routing to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.print(" found. Target is "); Serial.print(F(" found. Target is "));
Serial.print(macToString(outgoingData.intermediateTargetMAC)); Serial.print(macToString(outgoingData.intermediateTargetMAC));
Serial.println("."); Serial.println(F("."));
#endif #endif
return; return;
} }
@ -431,30 +431,30 @@ void ZHNetwork::maintenance()
{ {
queueForRoutingVectorWaiting.pop(); queueForRoutingVectorWaiting.pop();
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("CHECKING ROUTING TABLE... Routing to MAC "); Serial.print(F("CHECKING ROUTING TABLE... Routing to MAC "));
Serial.print(macToString(waitingData.transmittedData.originalTargetMAC)); Serial.print(macToString(waitingData.transmittedData.originalTargetMAC));
Serial.println(" not found."); Serial.println(F(" not found."));
switch (waitingData.transmittedData.messageType) switch (waitingData.transmittedData.messageType)
{ {
case UNICAST: case UNICAST:
Serial.print("UNICAST"); Serial.print(F("UNICAST"));
break; break;
case UNICAST_WITH_CONFIRM: case UNICAST_WITH_CONFIRM:
Serial.print("UNICAST_WITH_CONFIRM"); Serial.print(F("UNICAST_WITH_CONFIRM"));
break; break;
case DELIVERY_CONFIRM_RESPONSE: case DELIVERY_CONFIRM_RESPONSE:
Serial.print("DELIVERY_CONFIRM_RESPONSE"); Serial.print(F("DELIVERY_CONFIRM_RESPONSE"));
break; break;
default: default:
break; break;
} }
Serial.print(" message from MAC "); Serial.print(F(" message from MAC "));
Serial.print(macToString(waitingData.transmittedData.originalSenderMAC)); Serial.print(macToString(waitingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(waitingData.transmittedData.originalTargetMAC)); Serial.print(macToString(waitingData.transmittedData.originalTargetMAC));
Serial.print(" via MAC "); Serial.print(F(" via MAC "));
Serial.print(macToString(waitingData.intermediateTargetMAC)); Serial.print(macToString(waitingData.intermediateTargetMAC));
Serial.println(" undelivered."); Serial.println(F(" undelivered."));
#endif #endif
if (waitingData.transmittedData.messageType == UNICAST_WITH_CONFIRM && macToString(waitingData.transmittedData.originalSenderMAC) == macToString(localMAC)) if (waitingData.transmittedData.messageType == UNICAST_WITH_CONFIRM && macToString(waitingData.transmittedData.originalSenderMAC) == macToString(localMAC))
if (onConfirmReceivingCallback) if (onConfirmReceivingCallback)
@ -614,22 +614,22 @@ void ZHNetwork::broadcastMessage(const char *data, const uint8_t *target, messag
switch (outgoingData.transmittedData.messageType) switch (outgoingData.transmittedData.messageType)
{ {
case BROADCAST: case BROADCAST:
Serial.print("BROADCAST"); Serial.print(F("BROADCAST"));
break; break;
case SEARCH_REQUEST: case SEARCH_REQUEST:
Serial.print("SEARCH_REQUEST"); Serial.print(F("SEARCH_REQUEST"));
break; break;
case SEARCH_RESPONSE: case SEARCH_RESPONSE:
Serial.print("SEARCH_RESPONSE"); Serial.print(F("SEARCH_RESPONSE"));
break; break;
default: default:
break; break;
} }
Serial.print(" message from MAC "); Serial.print(F(" message from MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC)); Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.println(" added to queue."); Serial.println(F(" added to queue."));
#endif #endif
} }
@ -651,32 +651,32 @@ void ZHNetwork::unicastMessage(const char *data, const uint8_t *target, const ui
memcpy(&outgoingData.intermediateTargetMAC, &routingTable.intermediateTargetMAC, 6); memcpy(&outgoingData.intermediateTargetMAC, &routingTable.intermediateTargetMAC, 6);
queueForOutgoingData.push(outgoingData); queueForOutgoingData.push(outgoingData);
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("CHECKING ROUTING TABLE... Routing to MAC "); Serial.print(F("CHECKING ROUTING TABLE... Routing to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.print(" found. Target is "); Serial.print(F(" found. Target is "));
Serial.print(macToString(outgoingData.intermediateTargetMAC)); Serial.print(macToString(outgoingData.intermediateTargetMAC));
Serial.println("."); Serial.println(F("."));
switch (outgoingData.transmittedData.messageType) switch (outgoingData.transmittedData.messageType)
{ {
case UNICAST: case UNICAST:
Serial.print("UNICAST"); Serial.print(F("UNICAST"));
break; break;
case UNICAST_WITH_CONFIRM: case UNICAST_WITH_CONFIRM:
Serial.print("UNICAST_WITH_CONFIRM"); Serial.print(F("UNICAST_WITH_CONFIRM"));
break; break;
case DELIVERY_CONFIRM_RESPONSE: case DELIVERY_CONFIRM_RESPONSE:
Serial.print("DELIVERY_CONFIRM_RESPONSE"); Serial.print(F("DELIVERY_CONFIRM_RESPONSE"));
break; break;
default: default:
break; break;
} }
Serial.print(" message from MAC "); Serial.print(F(" message from MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC)); Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.print(" via MAC "); Serial.print(F(" via MAC "));
Serial.print(macToString(outgoingData.intermediateTargetMAC)); Serial.print(macToString(outgoingData.intermediateTargetMAC));
Serial.println(" added to queue."); Serial.println(F(" added to queue."));
#endif #endif
return; return;
} }
@ -684,31 +684,31 @@ void ZHNetwork::unicastMessage(const char *data, const uint8_t *target, const ui
memcpy(&outgoingData.intermediateTargetMAC, target, 6); memcpy(&outgoingData.intermediateTargetMAC, target, 6);
queueForOutgoingData.push(outgoingData); queueForOutgoingData.push(outgoingData);
#ifdef PRINT_LOG #ifdef PRINT_LOG
Serial.print("CHECKING ROUTING TABLE... Routing to MAC "); Serial.print(F("CHECKING ROUTING TABLE... Routing to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.print(" not found. Target is "); Serial.print(F(" not found. Target is "));
Serial.print(macToString(outgoingData.intermediateTargetMAC)); Serial.print(macToString(outgoingData.intermediateTargetMAC));
Serial.println("."); Serial.println(F("."));
switch (outgoingData.transmittedData.messageType) switch (outgoingData.transmittedData.messageType)
{ {
case UNICAST: case UNICAST:
Serial.print("UNICAST"); Serial.print(F("UNICAST"));
break; break;
case UNICAST_WITH_CONFIRM: case UNICAST_WITH_CONFIRM:
Serial.print("UNICAST_WITH_CONFIRM"); Serial.print(F("UNICAST_WITH_CONFIRM"));
break; break;
case DELIVERY_CONFIRM_RESPONSE: case DELIVERY_CONFIRM_RESPONSE:
Serial.print("DELIVERY_CONFIRM_RESPONSE"); Serial.print(F("DELIVERY_CONFIRM_RESPONSE"));
break; break;
default: default:
break; break;
} }
Serial.print(" message from MAC "); Serial.print(F(" message from MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC)); Serial.print(macToString(outgoingData.transmittedData.originalSenderMAC));
Serial.print(" to MAC "); Serial.print(F(" to MAC "));
Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC)); Serial.print(macToString(outgoingData.transmittedData.originalTargetMAC));
Serial.print(" via MAC "); Serial.print(F(" via MAC "));
Serial.print(macToString(outgoingData.intermediateTargetMAC)); Serial.print(macToString(outgoingData.intermediateTargetMAC));
Serial.println(" added to queue."); Serial.println(F(" added to queue."));
#endif #endif
} }