Version 1.02

Minor code optimization.
This commit is contained in:
Alexey Zholtikov 2022-12-11 09:13:25 +03:00
parent 7a1b67102e
commit 425e5035c9
3 changed files with 15 additions and 31 deletions

View File

@ -1,5 +1,5 @@
name=ZHNetwork name=ZHNetwork
version=1.01 version=1.02
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 char *firmware PROGMEM{"1.01"}; const char *firmware PROGMEM{"1.02"};
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};
@ -62,23 +62,20 @@ error_code_t ZHNetwork::setNetName(const char *netName)
{ {
if (strlen(netName) < 1 || strlen(netName) > 20) if (strlen(netName) < 1 || strlen(netName) > 20)
return ERROR; return ERROR;
memset(&netName_, 0, strlen(netName));
strcpy(netName_, netName); strcpy(netName_, netName);
return SUCCESS; return SUCCESS;
} }
String ZHNetwork::getNetName() String ZHNetwork::getNetName()
{ {
return String(netName_); return netName_;
} }
error_code_t ZHNetwork::setStaSetting(const char *ssid, const char *password) error_code_t ZHNetwork::setStaSetting(const char *ssid, const char *password)
{ {
if (strlen(ssid) < 1 || strlen(ssid) > 32 || strlen(password) > 64) if (strlen(ssid) < 1 || strlen(ssid) > 32 || strlen(password) > 64)
return ERROR; return ERROR;
memset(&staSsid_, 0, strlen(ssid));
strcpy(staSsid_, ssid); strcpy(staSsid_, ssid);
memset(&staPassword_, 0, strlen(password));
strcpy(staPassword_, password); strcpy(staPassword_, password);
return SUCCESS; return SUCCESS;
} }
@ -87,9 +84,7 @@ error_code_t ZHNetwork::setApSetting(const char *ssid, const char *password)
{ {
if (strlen(ssid) < 1 || strlen(ssid) > 32 || strlen(password) < 8 || strlen(password) > 64) if (strlen(ssid) < 1 || strlen(ssid) > 32 || strlen(password) < 8 || strlen(password) > 64)
return ERROR; return ERROR;
memset(&apSsid_, 0, strlen(ssid));
strcpy(apSsid_, ssid); strcpy(apSsid_, ssid);
memset(&apPassword_, 0, strlen(password));
strcpy(apPassword_, password); strcpy(apPassword_, password);
return SUCCESS; return SUCCESS;
} }
@ -193,7 +188,6 @@ void ZHNetwork::maintenance()
} }
} }
waiting_data_t waitingData; waiting_data_t waitingData;
esp_memset(&waitingData, 0, sizeof(waiting_data_t));
waitingData.time = millis(); waitingData.time = millis();
memcpy(&waitingData.intermediateTargetMAC, &outgoingData.intermediateTargetMAC, 6); memcpy(&waitingData.intermediateTargetMAC, &outgoingData.intermediateTargetMAC, 6);
memcpy(&waitingData.transmittedData, &outgoingData.transmittedData, sizeof(transmitted_data_t)); memcpy(&waitingData.transmittedData, &outgoingData.transmittedData, sizeof(transmitted_data_t));
@ -413,7 +407,6 @@ void ZHNetwork::maintenance()
{ {
queueForRoutingVectorWaiting.pop(); queueForRoutingVectorWaiting.pop();
outgoing_data_t outgoingData; outgoing_data_t outgoingData;
esp_memset(&outgoingData, 0, sizeof(outgoing_data_t));
memcpy(&outgoingData.transmittedData, &waitingData.transmittedData, sizeof(transmitted_data_t)); memcpy(&outgoingData.transmittedData, &waitingData.transmittedData, sizeof(transmitted_data_t));
memcpy(&outgoingData.intermediateTargetMAC, &routingTable.intermediateTargetMAC, 6); memcpy(&outgoingData.intermediateTargetMAC, &routingTable.intermediateTargetMAC, 6);
queueForOutgoingData.push(outgoingData); queueForOutgoingData.push(outgoingData);
@ -601,7 +594,6 @@ void IRAM_ATTR ZHNetwork::onDataReceive(uint8_t *mac, uint8_t *data, uint8_t len
void ZHNetwork::broadcastMessage(const char *data, const uint8_t *target, message_type_t type) void ZHNetwork::broadcastMessage(const char *data, const uint8_t *target, message_type_t type)
{ {
outgoing_data_t outgoingData; outgoing_data_t outgoingData;
esp_memset(&outgoingData, 0, sizeof(outgoing_data_t));
outgoingData.transmittedData.messageType = type; outgoingData.transmittedData.messageType = type;
outgoingData.transmittedData.messageID = ((uint16_t)random(32767) << 8) | (uint16_t)random(32767); outgoingData.transmittedData.messageID = ((uint16_t)random(32767) << 8) | (uint16_t)random(32767);
memcpy(&outgoingData.transmittedData.netName, &netName_, 20); memcpy(&outgoingData.transmittedData.netName, &netName_, 20);
@ -636,7 +628,6 @@ void ZHNetwork::broadcastMessage(const char *data, const uint8_t *target, messag
void ZHNetwork::unicastMessage(const char *data, const uint8_t *target, const uint8_t *sender, message_type_t type) void ZHNetwork::unicastMessage(const char *data, const uint8_t *target, const uint8_t *sender, message_type_t type)
{ {
outgoing_data_t outgoingData; outgoing_data_t outgoingData;
esp_memset(&outgoingData, 0, sizeof(outgoing_data_t));
outgoingData.transmittedData.messageType = type; outgoingData.transmittedData.messageType = type;
outgoingData.transmittedData.messageID = ((uint16_t)random(32767) << 8) | (uint16_t)random(32767); outgoingData.transmittedData.messageID = ((uint16_t)random(32767) << 8) | (uint16_t)random(32767);
memcpy(&outgoingData.transmittedData.netName, &netName_, 20); memcpy(&outgoingData.transmittedData.netName, &netName_, 20);

View File

@ -15,46 +15,39 @@
// #define PRINT_LOG // Uncomment to display to serial port the full operation log. // #define PRINT_LOG // Uncomment to display to serial port the full operation log.
#if defined(ESP8266)
#define esp_memset memset // Just for remove the compiler notice for ESP8266 at "memset". I don't know why this is happening...
#endif
#if defined(ESP32)
#define esp_memset memset
#endif
typedef struct typedef struct
{ {
uint8_t messageType; uint8_t messageType{0};
uint16_t messageID; uint16_t messageID{0};
char netName[20]; char netName[20]{0};
uint8_t originalTargetMAC[6]; uint8_t originalTargetMAC[6]{0};
uint8_t originalSenderMAC[6]; uint8_t originalSenderMAC[6]{0};
char message[200]; char message[200]{0};
} transmitted_data_t; } transmitted_data_t;
typedef struct typedef struct
{ {
uint8_t intermediateTargetMAC[6]; uint8_t intermediateTargetMAC[6]{0};
transmitted_data_t transmittedData; transmitted_data_t transmittedData;
} outgoing_data_t; } outgoing_data_t;
typedef struct typedef struct
{ {
uint8_t intermediateSenderMAC[6]; uint8_t intermediateSenderMAC[6]{0};
transmitted_data_t transmittedData; transmitted_data_t transmittedData;
} incoming_data_t; } incoming_data_t;
typedef struct typedef struct
{ {
uint64_t time; uint64_t time{0};
uint8_t intermediateTargetMAC[6]; uint8_t intermediateTargetMAC[6]{0};
transmitted_data_t transmittedData; transmitted_data_t transmittedData;
} waiting_data_t; } waiting_data_t;
typedef struct typedef struct
{ {
uint8_t originalTargetMAC[6]; uint8_t originalTargetMAC[6]{0};
uint8_t intermediateTargetMAC[6]; uint8_t intermediateTargetMAC[6]{0};
} routing_table_t; } routing_table_t;
typedef enum typedef enum