Version 1.02
Minor code optimization.
This commit is contained in:
parent
7a1b67102e
commit
425e5035c9
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user