diff --git a/lib/Network/NetworkConnection.cpp b/lib/NetworkUtils/NetworkConnection.cpp similarity index 80% rename from lib/Network/NetworkConnection.cpp rename to lib/NetworkUtils/NetworkConnection.cpp index 596718c..b5baca1 100644 --- a/lib/Network/NetworkConnection.cpp +++ b/lib/NetworkUtils/NetworkConnection.cpp @@ -1,35 +1,35 @@ #include "NetworkConnection.h" -using namespace Network; +using namespace NetworkUtils; -void Connection::setup(bool useDhcp) { +void NetworkConnection::setup(bool useDhcp) { setUseDhcp(useDhcp); #if defined(ARDUINO_ARCH_ESP8266) - wifi_set_event_handler_cb(Connection::onEvent); + wifi_set_event_handler_cb(NetworkConnection::onEvent); #elif defined(ARDUINO_ARCH_ESP32) - WiFi.onEvent(Connection::onEvent); + WiFi.onEvent(NetworkConnection::onEvent); #endif } -void Connection::reset() { +void NetworkConnection::reset() { status = Status::NONE; disconnectReason = DisconnectReason::NONE; } -void Connection::setUseDhcp(bool value) { +void NetworkConnection::setUseDhcp(bool value) { useDhcp = value; } -Connection::Status Connection::getStatus() { +NetworkConnection::Status NetworkConnection::getStatus() { return status; } -Connection::DisconnectReason Connection::getDisconnectReason() { +NetworkConnection::DisconnectReason NetworkConnection::getDisconnectReason() { return disconnectReason; } #if defined(ARDUINO_ARCH_ESP8266) -void Connection::onEvent(System_Event_t *event) { +void NetworkConnection::onEvent(System_Event_t *event) { switch (event->event) { case EVENT_STAMODE_CONNECTED: status = useDhcp ? Status::CONNECTING : Status::CONNECTED; @@ -75,7 +75,7 @@ void Connection::onEvent(System_Event_t *event) { } } #elif defined(ARDUINO_ARCH_ESP32) -void Connection::onEvent(WiFiEvent_t event, WiFiEventInfo_t info) { +void NetworkConnection::onEvent(WiFiEvent_t event, WiFiEventInfo_t info) { switch (event) { case ARDUINO_EVENT_WIFI_STA_CONNECTED: status = useDhcp ? Status::CONNECTING : Status::CONNECTED; @@ -106,7 +106,7 @@ void Connection::onEvent(WiFiEvent_t event, WiFiEventInfo_t info) { } #endif -Connection::DisconnectReason Connection::convertDisconnectReason(uint8_t reason) { +NetworkConnection::DisconnectReason NetworkConnection::convertDisconnectReason(uint8_t reason) { switch (reason) { #if defined(ARDUINO_ARCH_ESP8266) case REASON_BEACON_TIMEOUT: @@ -145,6 +145,6 @@ Connection::DisconnectReason Connection::convertDisconnectReason(uint8_t reason) } } -bool Connection::useDhcp = false; -Connection::Status Connection::status = Status::NONE; -Connection::DisconnectReason Connection::disconnectReason = DisconnectReason::NONE; \ No newline at end of file +bool NetworkConnection::useDhcp = false; +NetworkConnection::Status NetworkConnection::status = Status::NONE; +NetworkConnection::DisconnectReason NetworkConnection::disconnectReason = DisconnectReason::NONE; \ No newline at end of file diff --git a/lib/Network/NetworkConnection.h b/lib/NetworkUtils/NetworkConnection.h similarity index 94% rename from lib/Network/NetworkConnection.h rename to lib/NetworkUtils/NetworkConnection.h index d7ccc66..e266cf9 100644 --- a/lib/Network/NetworkConnection.h +++ b/lib/NetworkUtils/NetworkConnection.h @@ -5,8 +5,8 @@ #include #endif -namespace Network { - struct Connection { +namespace NetworkUtils { + struct NetworkConnection { enum class Status { CONNECTED, CONNECTING, diff --git a/lib/Network/NetworkManager.h b/lib/NetworkUtils/NetworkMgr.h similarity index 86% rename from lib/Network/NetworkManager.h rename to lib/NetworkUtils/NetworkMgr.h index 1b40ae2..0415216 100644 --- a/lib/Network/NetworkManager.h +++ b/lib/NetworkUtils/NetworkMgr.h @@ -7,35 +7,35 @@ #endif #include -namespace Network { - class Manager { +namespace NetworkUtils { + class NetworkMgr { public: typedef std::function YieldCallback; typedef std::function DelayCallback; - Manager() { - Connection::setup(this->useDhcp); + NetworkMgr() { + NetworkConnection::setup(this->useDhcp); this->resetWifi(); } - Manager* setYieldCallback(YieldCallback callback = nullptr) { + NetworkMgr* setYieldCallback(YieldCallback callback = nullptr) { this->yieldCallback = callback; return this; } - Manager* setDelayCallback(DelayCallback callback = nullptr) { + NetworkMgr* setDelayCallback(DelayCallback callback = nullptr) { this->delayCallback = callback; return this; } - Manager* setHostname(const char* value) { + NetworkMgr* setHostname(const char* value) { this->hostname = value; return this; } - Manager* setApCredentials(const char* ssid, const char* password = nullptr, byte channel = 0) { + NetworkMgr* setApCredentials(const char* ssid, const char* password = nullptr, byte channel = 0) { this->apName = ssid; this->apPassword = password; this->apChannel = channel; @@ -43,7 +43,7 @@ namespace Network { return this; } - Manager* setStaCredentials(const char* ssid = nullptr, const char* password = nullptr, byte channel = 0) { + NetworkMgr* setStaCredentials(const char* ssid = nullptr, const char* password = nullptr, byte channel = 0) { this->staSsid = ssid; this->staPassword = password; this->staChannel = channel; @@ -51,14 +51,14 @@ namespace Network { return this; } - Manager* setUseDhcp(bool value) { + NetworkMgr* setUseDhcp(bool value) { this->useDhcp = value; - Connection::setup(this->useDhcp); + NetworkConnection::setup(this->useDhcp); return this; } - Manager* setStaticConfig(const char* ip, const char* gateway, const char* subnet, const char* dns) { + NetworkMgr* setStaticConfig(const char* ip, const char* gateway, const char* subnet, const char* dns) { this->staticIp.fromString(ip); this->staticGateway.fromString(gateway); this->staticSubnet.fromString(subnet); @@ -67,7 +67,7 @@ namespace Network { return this; } - Manager* setStaticConfig(IPAddress& ip, IPAddress& gateway, IPAddress& subnet, IPAddress& dns) { + NetworkMgr* setStaticConfig(IPAddress& ip, IPAddress& gateway, IPAddress& subnet, IPAddress& dns) { this->staticIp = ip; this->staticGateway = gateway; this->staticSubnet = subnet; @@ -81,11 +81,11 @@ namespace Network { } bool isConnected() { - return this->isStaEnabled() && Connection::getStatus() == Connection::Status::CONNECTED; + return this->isStaEnabled() && NetworkConnection::getStatus() == NetworkConnection::Status::CONNECTED; } bool isConnecting() { - return this->isStaEnabled() && Connection::getStatus() == Connection::Status::CONNECTING; + return this->isStaEnabled() && NetworkConnection::getStatus() == NetworkConnection::Status::CONNECTING; } bool isStaEnabled() { @@ -156,7 +156,9 @@ namespace Network { } WiFi.persistent(false); + #if !defined(ESP_ARDUINO_VERSION_MAJOR) || ESP_ARDUINO_VERSION_MAJOR < 3 WiFi.setAutoConnect(false); + #endif WiFi.setAutoReconnect(false); #ifdef ARDUINO_ARCH_ESP8266 @@ -253,9 +255,9 @@ namespace Network { while (millis() - beginConnectionTime < timeout) { this->delayCallback(100); - Connection::Status status = Connection::getStatus(); - if (status != Connection::Status::CONNECTING && status != Connection::Status::NONE) { - return status == Connection::Status::CONNECTED; + NetworkConnection::Status status = NetworkConnection::getStatus(); + if (status != NetworkConnection::Status::CONNECTING && status != NetworkConnection::Status::NONE) { + return status == NetworkConnection::Status::CONNECTED; } } @@ -266,7 +268,7 @@ namespace Network { if (this->isConnected() && !this->hasStaCredentials()) { Log.sinfoln(FPSTR(L_NETWORK), F("Reset")); this->resetWifi(); - Connection::reset(); + NetworkConnection::reset(); this->delayCallback(200); } else if (this->isConnected() && !this->reconnectFlag) { @@ -305,7 +307,7 @@ namespace Network { Log.sinfoln( FPSTR(L_NETWORK), F("Disconnected, reason: %d, uptime: %lu s."), - Connection::getDisconnectReason(), + NetworkConnection::getDisconnectReason(), (millis() - this->connectedTime) / 1000 ); } @@ -327,16 +329,16 @@ namespace Network { } else if (this->isConnecting() && millis() - this->prevReconnectingTime > this->resetConnectionTimeout) { Log.swarningln(FPSTR(L_NETWORK), F("Connection timeout, reset wifi...")); this->resetWifi(); - Connection::reset(); + NetworkConnection::reset(); this->delayCallback(200); } else if (!this->isConnecting() && this->hasStaCredentials() && (!this->prevReconnectingTime || millis() - this->prevReconnectingTime > this->reconnectInterval)) { Log.sinfoln(FPSTR(L_NETWORK), F("Try connect...")); this->reconnectFlag = false; - Connection::reset(); + NetworkConnection::reset(); if (!this->connect(true, this->connectionTimeout)) { - Log.straceln(FPSTR(L_NETWORK), F("Connection failed. Status: %d, reason: %d"), Connection::getStatus(), Connection::getDisconnectReason()); + Log.straceln(FPSTR(L_NETWORK), F("Connection failed. Status: %d, reason: %d"), NetworkConnection::getStatus(), NetworkConnection::getDisconnectReason()); } this->prevReconnectingTime = millis(); diff --git a/src/MainTask.h b/src/MainTask.h index 369e6f8..d15c8f0 100644 --- a/src/MainTask.h +++ b/src/MainTask.h @@ -1,6 +1,8 @@ #include -extern Network::Manager* network; +using namespace NetworkUtils; + +extern NetworkMgr* network; extern MqttTask* tMqtt; extern OpenThermTask* tOt; extern FileData fsSettings, fsNetworkSettings; diff --git a/src/PortalTask.h b/src/PortalTask.h index 1f38ba6..846e2f2 100644 --- a/src/PortalTask.h +++ b/src/PortalTask.h @@ -14,7 +14,9 @@ using WebServer = ESP8266WebServer; #include #include -extern Network::Manager* network; +using namespace NetworkUtils; + +extern NetworkMgr* network; extern FileData fsSettings, fsNetworkSettings; extern MqttTask* tMqtt; @@ -359,7 +361,7 @@ protected: for (short int i = 0; i < apCount; i++) { String ssid = WiFi.SSID(i); doc[i]["ssid"] = ssid; - doc[i]["signalQuality"] = Network::Manager::rssiToSignalQuality(WiFi.RSSI(i)); + doc[i]["signalQuality"] = NetworkMgr::rssiToSignalQuality(WiFi.RSSI(i)); doc[i]["channel"] = WiFi.channel(i); doc[i]["hidden"] = !ssid.length(); doc[i]["encryptionType"] = WiFi.encryptionType(i); @@ -496,7 +498,7 @@ protected: doc["network"]["mac"] = network->getStaMac(); doc["network"]["connected"] = isConnected; doc["network"]["ssid"] = network->getStaSsid(); - doc["network"]["signalQuality"] = isConnected ? Network::Manager::rssiToSignalQuality(network->getRssi()) : 0; + doc["network"]["signalQuality"] = isConnected ? NetworkMgr::rssiToSignalQuality(network->getRssi()) : 0; doc["network"]["channel"] = isConnected ? network->getStaChannel() : 0; doc["network"]["ip"] = isConnected ? network->getStaIp().toString() : ""; doc["network"]["subnet"] = isConnected ? network->getStaSubnet().toString() : ""; diff --git a/src/main.cpp b/src/main.cpp index 2a4f053..bc52f3b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,11 +4,11 @@ #include #include #include -#include "ESPTelnetStream.h" +#include #include -#include +#include #include "Settings.h" -#include +#include "utils.h" #if defined(ARDUINO_ARCH_ESP32) #include @@ -27,11 +27,13 @@ #include "PortalTask.h" #include "MainTask.h" +using namespace NetworkUtils; + // Vars FileData fsNetworkSettings(&LittleFS, "/network.conf", 'n', &networkSettings, sizeof(networkSettings), 1000); FileData fsSettings(&LittleFS, "/settings.conf", 's', &settings, sizeof(settings), 60000); ESPTelnetStream* telnetStream = nullptr; -Network::Manager* network = nullptr; +NetworkMgr* network = nullptr; // Tasks MqttTask* tMqtt; @@ -130,7 +132,7 @@ void setup() { Log.setLevel(settings.system.debug ? TinyLogger::Level::VERBOSE : TinyLogger::Level::INFO); // network - network = (new Network::Manager) + network = (new NetworkMgr) ->setHostname(networkSettings.hostname) ->setStaCredentials( #ifdef WOKWI