2 Commits
v1.02 ... v1.11

Author SHA1 Message Date
4f58a04eae Version 1.11
Minor code optimization.
2022-12-12 18:58:03 +03:00
2ed860b78b Version 1.1
Added stop() function.
2022-12-11 09:39:20 +03:00
4 changed files with 54 additions and 26 deletions

View File

@ -116,6 +116,12 @@ myNet.setApSetting("SSID", "PASSWORD");
myNet.begin(); myNet.begin();
``` ```
### ESP-NOW Mesh network deinitialization
```cpp
myNet.stop();
```
### Sends broadcast message to all nodes ### Sends broadcast message to all nodes
```cpp ```cpp

View File

@ -1,5 +1,5 @@
name=ZHNetwork name=ZHNetwork
version=1.02 version=1.11
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

@ -1,31 +1,17 @@
#include "ZHNetwork.h" #include "ZHNetwork.h"
routing_vector_t routingVector; routing_vector_t ZHNetwork::routingVector;
incoming_queue_t queueForIncomingData; incoming_queue_t ZHNetwork::queueForIncomingData;
outgoing_queue_t queueForOutgoingData; outgoing_queue_t ZHNetwork::queueForOutgoingData;
waiting_queue_t queueForRoutingVectorWaiting; waiting_queue_t ZHNetwork::queueForRoutingVectorWaiting;
const char *firmware PROGMEM{"1.02"}; bool ZHNetwork::criticalProcessSemaphore{false};
const uint8_t broadcastMAC[6]{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; bool ZHNetwork::sentMessageSemaphore{false};
bool ZHNetwork::confirmReceivingSemaphore{false};
bool criticalProcessSemaphore{false}; bool ZHNetwork::confirmReceiving{false};
bool sentMessageSemaphore{false}; char ZHNetwork::netName_[20]{0};
bool confirmReceivingSemaphore{false}; uint8_t ZHNetwork::localMAC[6]{0};
bool confirmReceiving{false}; uint16_t ZHNetwork::lastMessageID[10]{0};
uint8_t localMAC[6]{0};
uint8_t numberOfAttemptsToSend{1};
uint16_t lastMessageID[10]{0};
uint64_t lastMessageSentTime{0};
work_mode_t workMode_{ESP_NOW};
char netName_[20]{0};
char apSsid_[32]{"ESP-NOW NODE"};
char apPassword_[64]{0};
char staSsid_[32]{0};
char staPassword_[64]{0};
uint8_t maxNumberOfAttempts_{3};
uint8_t maxWaitingTimeBetweenTransmissions_{50};
uint16_t maxTimeForRoutingInfoWaiting_{500};
ZHNetwork &ZHNetwork::setOnBroadcastReceivingCallback(on_message_t onBroadcastReceivingCallback) ZHNetwork &ZHNetwork::setOnBroadcastReceivingCallback(on_message_t onBroadcastReceivingCallback)
{ {
@ -130,6 +116,15 @@ error_code_t ZHNetwork::begin()
return SUCCESS; return SUCCESS;
} }
error_code_t stop()
{
WiFi.mode(WIFI_OFF);
esp_now_deinit();
esp_now_unregister_recv_cb();
esp_now_unregister_send_cb();
return SUCCESS;
}
void ZHNetwork::sendBroadcastMessage(const char *data) void ZHNetwork::sendBroadcastMessage(const char *data)
{ {
broadcastMessage(data, broadcastMAC, BROADCAST); broadcastMessage(data, broadcastMAC, BROADCAST);

View File

@ -97,6 +97,7 @@ public:
error_code_t setApSetting(const char *ssid, const char *password); error_code_t setApSetting(const char *ssid, const char *password);
error_code_t begin(void); error_code_t begin(void);
error_code_t stop(void);
void sendBroadcastMessage(const char *data); void sendBroadcastMessage(const char *data);
void sendUnicastMessage(const char *data, const uint8_t *target, const bool confirm = false); void sendUnicastMessage(const char *data, const uint8_t *target, const bool confirm = false);
@ -119,6 +120,32 @@ public:
uint16_t getMaxWaitingTimeForRoutingInfo(void); uint16_t getMaxWaitingTimeForRoutingInfo(void);
private: private:
static routing_vector_t routingVector;
static incoming_queue_t queueForIncomingData;
static outgoing_queue_t queueForOutgoingData;
static waiting_queue_t queueForRoutingVectorWaiting;
static bool criticalProcessSemaphore;
static bool sentMessageSemaphore;
static bool confirmReceivingSemaphore;
static bool confirmReceiving;
static uint8_t localMAC[6];
static uint16_t lastMessageID[10];
static char netName_[20];
const char *firmware{"1.11"};
const uint8_t broadcastMAC[6]{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
work_mode_t workMode_{ESP_NOW};
char apSsid_[32]{"ESP-NOW NODE"};
char apPassword_[64]{0};
char staSsid_[32]{0};
char staPassword_[64]{0};
uint8_t maxNumberOfAttempts_{3};
uint8_t maxWaitingTimeBetweenTransmissions_{50};
uint8_t numberOfAttemptsToSend{1};
uint16_t maxTimeForRoutingInfoWaiting_{500};
uint64_t lastMessageSentTime{0};
#if defined(ESP8266) #if defined(ESP8266)
static void onDataSent(uint8_t *mac, uint8_t status); static void onDataSent(uint8_t *mac, uint8_t status);
static void onDataReceive(uint8_t *mac, uint8_t *data, uint8_t length); static void onDataReceive(uint8_t *mac, uint8_t *data, uint8_t length);