diff --git a/src/TaskAprsIs.cpp b/src/TaskAprsIs.cpp index b79f091..8044293 100644 --- a/src/TaskAprsIs.cpp +++ b/src/TaskAprsIs.cpp @@ -19,7 +19,6 @@ AprsIsTask::~AprsIsTask() bool AprsIsTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { _aprs_is = std::shared_ptr(new APRS_IS(config->callsign, config->aprs_is.passcode , "ESP32-APRS-IS", "0.1")); - connect(config); _beaconMsg = std::shared_ptr(new APRSMessage()); _beaconMsg->setSource(config->callsign); @@ -35,8 +34,9 @@ bool AprsIsTask::loop(std::shared_ptr config) { if(!_aprs_is->connected()) { - connect(config); + return connect(config); } + _aprs_is->getAPRSMessage(); if(!inputQueue.empty()) @@ -57,19 +57,18 @@ bool AprsIsTask::loop(std::shared_ptr config) return true; } -void AprsIsTask::connect(std::shared_ptr config) +bool AprsIsTask::connect(std::shared_ptr config) { logPrintI("connecting to APRS-IS server: "); logPrintI(config->aprs_is.server); logPrintI(" on port: "); logPrintlnI(String(config->aprs_is.port)); //show_display("INFO", "Connecting to APRS-IS server"); - while(!_aprs_is->connect(config->aprs_is.server, config->aprs_is.port)) + if(!_aprs_is->connect(config->aprs_is.server, config->aprs_is.port)) { logPrintlnE("Connection failed."); - logPrintlnI("Waiting 1 seconds before retrying..."); - //show_display("ERROR", "Server connection failed!", "waiting 5 sec"); - delay(1000); + return false; } logPrintlnI("Connected to APRS-IS server!"); + return true; } diff --git a/src/TaskAprsIs.h b/src/TaskAprsIs.h index 3b393b4..4c99e0c 100644 --- a/src/TaskAprsIs.h +++ b/src/TaskAprsIs.h @@ -21,7 +21,7 @@ private: std::shared_ptr _beaconMsg; time_t _beacon_next_time; - void connect(std::shared_ptr config); + bool connect(std::shared_ptr config); }; #endif diff --git a/src/TaskFTP.cpp b/src/TaskFTP.cpp index 0ddf27b..7ac0e85 100644 --- a/src/TaskFTP.cpp +++ b/src/TaskFTP.cpp @@ -6,7 +6,7 @@ #include "Task.h" FTPTask::FTPTask() - : Task(TASK_FTP) + : Task(TASK_FTP), _beginCalled(false) { } @@ -26,8 +26,6 @@ bool FTPTask::setup(std::shared_ptr config, std::shared_ptraddUser(user.name, user.password); } _ftpServer->addFilesystem("SPIFFS", &SPIFFS); - _ftpServer->begin(); - logPrintlnI("FTP Server init done!"); } return true; } @@ -36,6 +34,11 @@ bool FTPTask::loop(std::shared_ptr config) { if(config->ftp.active) { + if(!_beginCalled) + { + _ftpServer->begin(); + _beginCalled = true; + } _ftpServer->handle(); static bool configWasOpen = false; if(configWasOpen && _ftpServer->countConnections() == 0) diff --git a/src/TaskFTP.h b/src/TaskFTP.h index 5bb83d2..716424c 100644 --- a/src/TaskFTP.h +++ b/src/TaskFTP.h @@ -15,6 +15,7 @@ public: private: std::shared_ptr _ftpServer; + bool _beginCalled; }; #endif diff --git a/src/TaskLora.cpp b/src/TaskLora.cpp index 0f515c9..7424c46 100644 --- a/src/TaskLora.cpp +++ b/src/TaskLora.cpp @@ -30,7 +30,6 @@ bool LoraTask::setup(std::shared_ptr config, std::shared_ptrsetSignalBandwidth(config->lora.signalBandwidth); _lora_aprs->setCodingRate4(config->lora.codingRate4); _lora_aprs->enableCrc(); - logPrintlnI("LoRa init done!"); //show_display("INFO", "LoRa init done!", 2000); return true; @@ -52,5 +51,12 @@ bool LoraTask::loop(std::shared_ptr config) std::shared_ptr is_thread = std::static_pointer_cast(TaskManager::instance().getTask(TASK_APRS_IS)); is_thread->inputQueue.addElement(msg); } + + if(!inputQueue.empty()) + { + std::shared_ptr msg = inputQueue.getElement(); + _lora_aprs->sendMessage(msg); + } + return true; } diff --git a/src/TaskLora.h b/src/TaskLora.h index c0a02be..db2201d 100644 --- a/src/TaskLora.h +++ b/src/TaskLora.h @@ -14,6 +14,8 @@ public: virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; virtual bool loop(std::shared_ptr config) override; + TaskQueue> inputQueue; + private: std::shared_ptr _lora_aprs; }; diff --git a/src/TaskNTP.cpp b/src/TaskNTP.cpp index 3da2af0..972877c 100644 --- a/src/TaskNTP.cpp +++ b/src/TaskNTP.cpp @@ -5,7 +5,7 @@ #include "Task.h" NTPTask::NTPTask() - : Task(TASK_NTP) + : Task(TASK_NTP), _beginCalled(false) { } @@ -16,27 +16,21 @@ NTPTask::~NTPTask() bool NTPTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { _ntpClient = std::shared_ptr(new NTPClient(config->ntpServer.c_str())); - _ntpClient->begin(); - while(!_ntpClient->forceUpdate()) - { - logPrintlnW("NTP Client force update issue! Waiting 1 sek..."); - logPrintlnD(_ntpClient->getFormattedTime()); - //show_display("WARN", "NTP Client force update issue! Waiting 1 sek...", 1000); - sleep(1); - } - setTime(_ntpClient->getEpochTime()); - logPrintI("Current time: "); - logPrintlnI(_ntpClient->getFormattedTime()); - logPrintlnI("NTP Client init done!"); - //show_display("INFO", "NTP Client init done!", 2000); return true; } bool NTPTask::loop(std::shared_ptr config) { + if(!_beginCalled) + { + _ntpClient->begin(); + _beginCalled = true; + } if(_ntpClient->update()) { setTime(_ntpClient->getEpochTime()); + logPrintI("Current time: "); + logPrintlnI(_ntpClient->getFormattedTime()); } return true; } diff --git a/src/TaskNTP.h b/src/TaskNTP.h index c5895b6..ef5240b 100644 --- a/src/TaskNTP.h +++ b/src/TaskNTP.h @@ -15,6 +15,7 @@ public: private: std::shared_ptr _ntpClient; + bool _beginCalled; }; #endif diff --git a/src/TaskOTA.cpp b/src/TaskOTA.cpp index f4b5b64..17ac831 100644 --- a/src/TaskOTA.cpp +++ b/src/TaskOTA.cpp @@ -4,7 +4,7 @@ #include "Task.h" OTATask::OTATask() - : Task(TASK_OTA) + : Task(TASK_OTA), _beginCalled(false) { } @@ -49,13 +49,16 @@ bool OTATask::setup(std::shared_ptr config, std::shared_ptrsetHostname(config->callsign.c_str()); - _ota->begin(); - logPrintlnI("OTA init done!"); return true; } bool OTATask::loop(std::shared_ptr config) { + if(!_beginCalled) + { + _ota->begin(); + _beginCalled = true; + } _ota->handle(); return true; } diff --git a/src/TaskOTA.h b/src/TaskOTA.h index 4700132..f9aa88f 100644 --- a/src/TaskOTA.h +++ b/src/TaskOTA.h @@ -15,6 +15,7 @@ public: private: std::shared_ptr _ota; + bool _beginCalled; }; #endif diff --git a/src/TaskWifi.cpp b/src/TaskWifi.cpp index 1266074..1936ae2 100644 --- a/src/TaskWifi.cpp +++ b/src/TaskWifi.cpp @@ -16,7 +16,6 @@ WifiTask::~WifiTask() bool WifiTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { //WiFi.onEvent(WiFiEvent); - //WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE); WiFi.setHostname(config->callsign.c_str()); _wiFiMulti = std::shared_ptr(new WiFiMulti());; for(Configuration::Wifi::AP ap : config->wifi.APs) @@ -25,17 +24,6 @@ bool WifiTask::setup(std::shared_ptr config, std::shared_ptraddAP(ap.SSID.c_str(), ap.password.c_str()); } - logPrintlnI("Waiting for WiFi"); - //show_display("INFO", "Waiting for WiFi"); - while(_wiFiMulti->run() != WL_CONNECTED) - { - //show_display("INFO", "Waiting for WiFi", "...."); - delay(500); - } - logPrintlnI("WiFi connected"); - logPrintD("IP address: "); - logPrintlnD(WiFi.localIP().toString()); - //show_display("INFO", "WiFi connected", "IP: ", WiFi.localIP().toString(), 2000); return true; } @@ -45,8 +33,9 @@ bool WifiTask::loop(std::shared_ptr config) if(wifi_status != WL_CONNECTED) { logPrintlnE("WiFi not connected!"); - //show_display("ERROR", "WiFi not connected!"); - delay(1000); + return false; } + //logPrintD("IP address: "); + //logPrintlnD(WiFi.localIP().toString()); return true; }