From 52d41dd9f608b3bb44bf8e63e13d4737cc330e88 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Sun, 21 Mar 2021 22:29:31 +0100 Subject: [PATCH] big changes: - task manager working now in round robbin and returning after every task to arduino - adding a system class which is managing all bigger things --- .vscode/settings.json | 46 ++++++++++++++++++++- lib/Display/Display.cpp | 3 ++ lib/Display/Display.h | 13 +----- lib/System/System.cpp | 24 +++++++++++ lib/System/System.h | 28 +++++++++++++ lib/{TaskManager => System}/TaskManager.cpp | 18 +++++--- lib/{TaskManager => System}/TaskManager.h | 32 +++++++------- lib/{TaskManager => System}/TaskQueue.h | 0 lib/{TaskManager => System}/Timer.cpp | 0 lib/{TaskManager => System}/Timer.h | 0 src/LoRa_APRS_iGate.cpp | 35 ++++++++-------- src/TaskAprsIs.cpp | 28 ++++++------- src/TaskAprsIs.h | 6 +-- src/TaskDisplay.cpp | 24 +++++------ src/TaskDisplay.h | 4 +- src/TaskEth.cpp | 4 +- src/TaskEth.h | 4 +- src/TaskFTP.cpp | 6 +-- src/TaskFTP.h | 4 +- src/TaskLora.cpp | 22 +++++----- src/TaskLora.h | 4 +- src/TaskNTP.cpp | 6 +-- src/TaskNTP.h | 4 +- src/TaskOTA.cpp | 6 +-- src/TaskOTA.h | 4 +- src/TaskWifi.cpp | 8 ++-- src/TaskWifi.h | 4 +- 27 files changed, 216 insertions(+), 121 deletions(-) create mode 100644 lib/System/System.cpp create mode 100644 lib/System/System.h rename lib/{TaskManager => System}/TaskManager.cpp (83%) rename lib/{TaskManager => System}/TaskManager.h (71%) rename lib/{TaskManager => System}/TaskQueue.h (100%) rename lib/{TaskManager => System}/Timer.cpp (100%) rename lib/{TaskManager => System}/Timer.h (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 38d51f2..9f66321 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,48 @@ { "files.insertFinalNewline": true, - "editor.formatOnSave": true + "editor.formatOnSave": true, + "files.associations": { + "*.h": "cpp", + "array": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "list": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "limits": "cpp", + "memory": "cpp", + "new": "cpp", + "ostream": "cpp", + "numeric": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "cinttypes": "cpp", + "utility": "cpp", + "typeinfo": "cpp" + } } \ No newline at end of file diff --git a/lib/Display/Display.cpp b/lib/Display/Display.cpp index a34b226..ac653f5 100644 --- a/lib/Display/Display.cpp +++ b/lib/Display/Display.cpp @@ -5,6 +5,9 @@ Display::Display() : _disp(0), _statusFrame(0), _displayOff(false), _displaySaveMode(false) { } +Display::~Display() { +} + void Display::setup(std::shared_ptr boardConfig) { if (boardConfig->OledReset != 0) { pinMode(boardConfig->OledReset, OUTPUT); diff --git a/lib/Display/Display.h b/lib/Display/Display.h index fa0aa26..681054c 100644 --- a/lib/Display/Display.h +++ b/lib/Display/Display.h @@ -25,13 +25,8 @@ public: class Display { public: - static Display &instance() { - static Display _instance; - return _instance; - } - - ~Display() { - } + Display(); + ~Display(); void setup(std::shared_ptr boardConfig); void turn180(); @@ -56,10 +51,6 @@ private: bool _displayOff; bool _displaySaveMode; - Display(); - Display(const Display &); - Display &operator=(const Display &); - void activateDisplay(); void deactivateDisplay(); }; diff --git a/lib/System/System.cpp b/lib/System/System.cpp new file mode 100644 index 0000000..031b753 --- /dev/null +++ b/lib/System/System.cpp @@ -0,0 +1,24 @@ + +#include "System.h" + +System::System(std::shared_ptr boardConfig, std::shared_ptr userConfig) : _boardConfig(boardConfig), _userConfig(userConfig) { +} + +System::~System() { +} + +std::shared_ptr System::getBoardConfig() const { + return _boardConfig; +} + +std::shared_ptr System::getUserConfig() const { + return _userConfig; +} + +TaskManager &System::getTaskManager() { + return _taskManager; +} + +Display &System::getDisplay() { + return _display; +} diff --git a/lib/System/System.h b/lib/System/System.h new file mode 100644 index 0000000..d65feac --- /dev/null +++ b/lib/System/System.h @@ -0,0 +1,28 @@ +#ifndef SYSTEM_H_ +#define SYSTEM_H_ + +#include + +#include "TaskManager.h" +#include +#include +#include + +class System { +public: + System(std::shared_ptr boardConfig, std::shared_ptr userConfig); + ~System(); + + std::shared_ptr getBoardConfig() const; + std::shared_ptr getUserConfig() const; + TaskManager & getTaskManager(); + Display & getDisplay(); + +private: + std::shared_ptr _boardConfig; + std::shared_ptr _userConfig; + TaskManager _taskManager; + Display _display; +}; + +#endif diff --git a/lib/TaskManager/TaskManager.cpp b/lib/System/TaskManager.cpp similarity index 83% rename from lib/TaskManager/TaskManager.cpp rename to lib/System/TaskManager.cpp index 5a338e8..f2cbbe8 100644 --- a/lib/TaskManager/TaskManager.cpp +++ b/lib/System/TaskManager.cpp @@ -23,24 +23,30 @@ std::list> TaskManager::getTasks() { return _tasks; } -bool TaskManager::setup(std::shared_ptr config, std::shared_ptr boardConfig) { +bool TaskManager::setup(std::shared_ptr system) { logPrintlnV("will setup all tasks..."); for (std::shared_ptr &elem : _tasks) { logPrintW("call setup from "); logPrintlnW(elem->getName()); - if (!elem->setup(config, boardConfig)) { - return false; - } + elem->setup(system); } + _nextTask = _tasks.begin(); return true; } -bool TaskManager::loop(std::shared_ptr config) { +bool TaskManager::loop(std::shared_ptr system) { // logPrintlnD("will loop all tasks..."); + if (_nextTask == _tasks.end()) { + _nextTask = _tasks.begin(); + } + bool ret = (*_nextTask)->loop(system); + _nextTask++; + return ret; + for (std::shared_ptr &elem : _tasks) { // logPrintD("call loop from "); // logPrintlnD(elem->getName()); - if (!elem->loop(config)) { + if (!elem->loop(system)) { return false; } } diff --git a/lib/TaskManager/TaskManager.h b/lib/System/TaskManager.h similarity index 71% rename from lib/TaskManager/TaskManager.h rename to lib/System/TaskManager.h index 0495b69..6851fc7 100644 --- a/lib/TaskManager/TaskManager.h +++ b/lib/System/TaskManager.h @@ -2,14 +2,17 @@ #define TASK_MANAGER_H_ #include -#include -#include -#include #include #include +#include +#include +#include + #include "TaskQueue.h" +class System; + enum TaskDisplayState { Error, @@ -40,8 +43,8 @@ public: return _stateInfo; } - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) = 0; - virtual bool loop(std::shared_ptr config) = 0; + virtual bool setup(std::shared_ptr system) = 0; + virtual bool loop(std::shared_ptr system) = 0; protected: TaskDisplayState _state; @@ -54,11 +57,7 @@ private: class TaskManager { public: - static TaskManager &instance() { - static TaskManager _instance; - return _instance; - } - + TaskManager(); ~TaskManager() { } @@ -66,15 +65,12 @@ public: std::shared_ptr getTask(const char *name); std::list> getTasks(); - bool setup(std::shared_ptr config, std::shared_ptr boardConfig); - bool loop(std::shared_ptr config); + bool setup(std::shared_ptr system); + bool loop(std::shared_ptr system); private: - std::list> _tasks; - - TaskManager(); - TaskManager(const TaskManager &); - TaskManager &operator=(const TaskManager &); + std::list> _tasks; + std::list>::iterator _nextTask; }; class StatusFrame : public DisplayFrame { @@ -91,4 +87,6 @@ private: std::list> _tasks; }; +#include "System.h" + #endif diff --git a/lib/TaskManager/TaskQueue.h b/lib/System/TaskQueue.h similarity index 100% rename from lib/TaskManager/TaskQueue.h rename to lib/System/TaskQueue.h diff --git a/lib/TaskManager/Timer.cpp b/lib/System/Timer.cpp similarity index 100% rename from lib/TaskManager/Timer.cpp rename to lib/System/Timer.cpp diff --git a/lib/TaskManager/Timer.h b/lib/System/Timer.h similarity index 100% rename from lib/TaskManager/Timer.h rename to lib/System/Timer.h diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index 2eb5f57..eacfac0 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -22,9 +23,8 @@ String create_lat_aprs(double lat); String create_long_aprs(double lng); -std::shared_ptr userConfig; -std::shared_ptr boardConfig; -HardwareSerial Serial(0); +std::shared_ptr LoRaSystem; +HardwareSerial Serial(0); // cppcheck-suppress unusedFunction void setup() { @@ -35,7 +35,7 @@ void setup() { logPrintlnW("Version: " VERSION); ProjectConfigurationManagement confmg; - userConfig = confmg.readConfiguration(); + std::shared_ptr userConfig = confmg.readConfiguration(); std::list> boardConfigs; // clang-format off @@ -49,8 +49,8 @@ void setup() { boardConfigs.push_back(std::shared_ptr(new BoardConfig("HELTEC_WIFI_LORA_32_V2", eHELTEC_WIFI_LORA_32_V2, 4, 15, 0x3C, 16, 5, 19, 27, 18, 14, 26))); // clang-format on - BoardFinder finder(boardConfigs); - boardConfig = finder.getBoardConfig(userConfig->board); + BoardFinder finder(boardConfigs); + std::shared_ptr boardConfig = finder.getBoardConfig(userConfig->board); if (boardConfig == 0) { boardConfig = finder.searchBoardConfig(); if (boardConfig == 0) { @@ -81,24 +81,25 @@ void setup() { } load_config(boardConfig); + LoRaSystem = std::shared_ptr(new System(boardConfig, userConfig)); - TaskManager::instance().addTask(std::shared_ptr(new DisplayTask())); - TaskManager::instance().addTask(std::shared_ptr(new LoraTask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new DisplayTask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new LoraTask())); if (boardConfig->Type == eETH_BOARD) { - TaskManager::instance().addTask(std::shared_ptr(new EthTask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new EthTask())); } else { - TaskManager::instance().addTask(std::shared_ptr(new WifiTask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new WifiTask())); } - TaskManager::instance().addTask(std::shared_ptr(new OTATask())); - TaskManager::instance().addTask(std::shared_ptr(new NTPTask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new OTATask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new NTPTask())); if (userConfig->ftp.active) { - TaskManager::instance().addTask(std::shared_ptr(new FTPTask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new FTPTask())); } - TaskManager::instance().addTask(std::shared_ptr(new AprsIsTask())); + LoRaSystem->getTaskManager().addTask(std::shared_ptr(new AprsIsTask())); - TaskManager::instance().setup(userConfig, boardConfig); + LoRaSystem->getTaskManager().setup(LoRaSystem); - Display::instance().showSpashScreen("LoRa APRS iGate", VERSION); + LoRaSystem->getDisplay().showSpashScreen("LoRa APRS iGate", VERSION); if (userConfig->display.overwritePin != 0) { pinMode(userConfig->display.overwritePin, INPUT); @@ -111,7 +112,7 @@ void setup() { // cppcheck-suppress unusedFunction void loop() { - TaskManager::instance().loop(userConfig); + LoRaSystem->getTaskManager().loop(LoRaSystem); } String create_lat_aprs(double lat) { diff --git a/src/TaskAprsIs.cpp b/src/TaskAprsIs.cpp index 43d0ccd..1d3daf1 100644 --- a/src/TaskAprsIs.cpp +++ b/src/TaskAprsIs.cpp @@ -14,23 +14,23 @@ AprsIsTask::AprsIsTask() : Task(TASK_APRS_IS, TaskAprsIs) { AprsIsTask::~AprsIsTask() { } -bool AprsIsTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { - _beacon_timer.setTimeout(minutesToTime_t(config->beacon.timeout)); - _aprs_is = std::shared_ptr(new APRS_IS(config->callsign, config->aprs_is.passcode, "ESP32-APRS-IS", "0.2")); +bool AprsIsTask::setup(std::shared_ptr system) { + _beacon_timer.setTimeout(minutesToTime_t(system->getUserConfig()->beacon.timeout)); + _aprs_is = std::shared_ptr(new APRS_IS(system->getUserConfig()->callsign, system->getUserConfig()->aprs_is.passcode, "ESP32-APRS-IS", "0.2")); _beaconMsg = std::shared_ptr(new APRSMessage()); - _beaconMsg->setSource(config->callsign); + _beaconMsg->setSource(system->getUserConfig()->callsign); _beaconMsg->setDestination("APLG01"); - String lat = create_lat_aprs(config->beacon.positionLatitude); - String lng = create_long_aprs(config->beacon.positionLongitude); - _beaconMsg->getBody()->setData(String("=") + lat + "L" + lng + "&" + config->beacon.message); + String lat = create_lat_aprs(system->getUserConfig()->beacon.positionLatitude); + String lng = create_long_aprs(system->getUserConfig()->beacon.positionLongitude); + _beaconMsg->getBody()->setData(String("=") + lat + "L" + lng + "&" + system->getUserConfig()->beacon.message); return true; } -bool AprsIsTask::loop(std::shared_ptr config) { +bool AprsIsTask::loop(std::shared_ptr system) { if (!_aprs_is->connected()) { - if (!connect(config)) { + if (!connect(system)) { _stateInfo = "not connected"; _state = Error; return false; @@ -51,7 +51,7 @@ bool AprsIsTask::loop(std::shared_ptr config) { logPrintD("[" + timeString() + "] "); logPrintlnD(_beaconMsg->encode()); _aprs_is->sendMessage(_beaconMsg); - Display::instance().addFrame(std::shared_ptr(new TextFrame("BEACON", _beaconMsg->toString()))); + system->getDisplay().addFrame(std::shared_ptr(new TextFrame("BEACON", _beaconMsg->toString()))); _beacon_timer.start(); } time_t diff = _beacon_timer.getTriggerTime() - now(); @@ -60,12 +60,12 @@ bool AprsIsTask::loop(std::shared_ptr config) { return true; } -bool AprsIsTask::connect(std::shared_ptr config) { +bool AprsIsTask::connect(std::shared_ptr system) { logPrintI("connecting to APRS-IS server: "); - logPrintI(config->aprs_is.server); + logPrintI(system->getUserConfig()->aprs_is.server); logPrintI(" on port: "); - logPrintlnI(String(config->aprs_is.port)); - if (!_aprs_is->connect(config->aprs_is.server, config->aprs_is.port)) { + logPrintlnI(String(system->getUserConfig()->aprs_is.port)); + if (!_aprs_is->connect(system->getUserConfig()->aprs_is.server, system->getUserConfig()->aprs_is.port)) { logPrintlnE("Connection failed."); return false; } diff --git a/src/TaskAprsIs.h b/src/TaskAprsIs.h index 0d0757e..67b1d31 100644 --- a/src/TaskAprsIs.h +++ b/src/TaskAprsIs.h @@ -11,8 +11,8 @@ public: AprsIsTask(); virtual ~AprsIsTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; TaskQueue> inputQueue; @@ -21,7 +21,7 @@ private: std::shared_ptr _beaconMsg; Timer _beacon_timer; - bool connect(std::shared_ptr config); + bool connect(std::shared_ptr system); }; #endif diff --git a/src/TaskDisplay.cpp b/src/TaskDisplay.cpp index 3a42829..699e450 100644 --- a/src/TaskDisplay.cpp +++ b/src/TaskDisplay.cpp @@ -10,22 +10,22 @@ DisplayTask::DisplayTask() : Task("DisplayTask", 0) { DisplayTask::~DisplayTask() { } -bool DisplayTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { - Display::instance().setup(boardConfig); - if (config->display.turn180) { - Display::instance().turn180(); +bool DisplayTask::setup(std::shared_ptr system) { + system->getDisplay().setup(system->getBoardConfig()); + if (system->getUserConfig()->display.turn180) { + system->getDisplay().turn180(); } - std::shared_ptr statusFrame = std::shared_ptr(new StatusFrame(TaskManager::instance().getTasks())); - Display::instance().setStatusFrame(statusFrame); - if (!config->display.alwaysOn) { - Display::instance().activateDisplaySaveMode(); - Display::instance().setDisplayTimeout(config->display.timeout); + std::shared_ptr statusFrame = std::shared_ptr(new StatusFrame(system->getTaskManager().getTasks())); + system->getDisplay().setStatusFrame(statusFrame); + if (!system->getUserConfig()->display.alwaysOn) { + system->getDisplay().activateDisplaySaveMode(); + system->getDisplay().setDisplayTimeout(system->getUserConfig()->display.timeout); } - _stateInfo = config->callsign; + _stateInfo = system->getUserConfig()->callsign; return true; } -bool DisplayTask::loop(std::shared_ptr config) { - Display::instance().update(); +bool DisplayTask::loop(std::shared_ptr system) { + system->getDisplay().update(); return true; } diff --git a/src/TaskDisplay.h b/src/TaskDisplay.h index 4980dee..80cb98e 100644 --- a/src/TaskDisplay.h +++ b/src/TaskDisplay.h @@ -9,8 +9,8 @@ public: DisplayTask(); virtual ~DisplayTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; }; #endif diff --git a/src/TaskEth.cpp b/src/TaskEth.cpp index a9a5d29..bbb6346 100644 --- a/src/TaskEth.cpp +++ b/src/TaskEth.cpp @@ -48,7 +48,7 @@ EthTask::EthTask() : Task(TASK_ETH, TaskEth) { EthTask::~EthTask() { } -bool EthTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { +bool EthTask::setup(std::shared_ptr system) { WiFi.onEvent(WiFiEvent); constexpr uint8_t ETH_NRST = 5; @@ -73,7 +73,7 @@ bool EthTask::setup(std::shared_ptr config, std::shared_ptr config) { +bool EthTask::loop(std::shared_ptr system) { if (!eth_connected) { _stateInfo = "Ethernet not connected"; _state = Error; diff --git a/src/TaskEth.h b/src/TaskEth.h index 79d0a47..8597369 100644 --- a/src/TaskEth.h +++ b/src/TaskEth.h @@ -8,8 +8,8 @@ public: EthTask(); virtual ~EthTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; private: }; diff --git a/src/TaskFTP.cpp b/src/TaskFTP.cpp index a44189f..b2e67fb 100644 --- a/src/TaskFTP.cpp +++ b/src/TaskFTP.cpp @@ -12,9 +12,9 @@ FTPTask::FTPTask() : Task(TASK_FTP, TaskFtp), _beginCalled(false) { FTPTask::~FTPTask() { } -bool FTPTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { +bool FTPTask::setup(std::shared_ptr system) { _ftpServer = std::shared_ptr(new FTPServer()); - for (Configuration::Ftp::User user : config->ftp.users) { + for (Configuration::Ftp::User user : system->getUserConfig()->ftp.users) { logPrintD("Adding user to FTP Server: "); logPrintlnD(user.name); _ftpServer->addUser(user.name, user.password); @@ -24,7 +24,7 @@ bool FTPTask::setup(std::shared_ptr config, std::shared_ptr config) { +bool FTPTask::loop(std::shared_ptr system) { if (!_beginCalled) { _ftpServer->begin(); _beginCalled = true; diff --git a/src/TaskFTP.h b/src/TaskFTP.h index 85c7fd7..46d27cf 100644 --- a/src/TaskFTP.h +++ b/src/TaskFTP.h @@ -9,8 +9,8 @@ public: FTPTask(); virtual ~FTPTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; private: std::shared_ptr _ftpServer; diff --git a/src/TaskLora.cpp b/src/TaskLora.cpp index 9194fb7..25ea9c7 100644 --- a/src/TaskLora.cpp +++ b/src/TaskLora.cpp @@ -12,8 +12,8 @@ LoraTask::LoraTask() : Task(TASK_LORA, TaskLora) { LoraTask::~LoraTask() { } -bool LoraTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { - _lora_aprs = std::shared_ptr(new LoRa_APRS(boardConfig)); +bool LoraTask::setup(std::shared_ptr system) { + _lora_aprs = std::shared_ptr(new LoRa_APRS(system->getBoardConfig())); if (!_lora_aprs->begin(_lora_aprs->getRxFrequency())) { logPrintlnE("Starting LoRa failed!"); _stateInfo = "LoRa-Modem failed"; @@ -21,19 +21,19 @@ bool LoraTask::setup(std::shared_ptr config, std::shared_ptrsetRxFrequency(config->lora.frequencyRx); - _lora_aprs->setTxFrequency(config->lora.frequencyTx); - _lora_aprs->setTxPower(config->lora.power); - _lora_aprs->setSpreadingFactor(config->lora.spreadingFactor); - _lora_aprs->setSignalBandwidth(config->lora.signalBandwidth); - _lora_aprs->setCodingRate4(config->lora.codingRate4); + _lora_aprs->setRxFrequency(system->getUserConfig()->lora.frequencyRx); + _lora_aprs->setTxFrequency(system->getUserConfig()->lora.frequencyTx); + _lora_aprs->setTxPower(system->getUserConfig()->lora.power); + _lora_aprs->setSpreadingFactor(system->getUserConfig()->lora.spreadingFactor); + _lora_aprs->setSignalBandwidth(system->getUserConfig()->lora.signalBandwidth); + _lora_aprs->setCodingRate4(system->getUserConfig()->lora.codingRate4); _lora_aprs->enableCrc(); _stateInfo = ""; return true; } -bool LoraTask::loop(std::shared_ptr config) { +bool LoraTask::loop(std::shared_ptr system) { if (_lora_aprs->checkMessage()) { std::shared_ptr msg = _lora_aprs->getMessage(); // msg->getAPRSBody()->setData(msg->getAPRSBody()->getData() + " 123"); @@ -44,9 +44,9 @@ bool LoraTask::loop(std::shared_ptr config) { logPrintD(String(_lora_aprs->packetRssi())); logPrintD(" and SNR "); logPrintlnD(String(_lora_aprs->packetSnr())); - std::shared_ptr is_thread = std::static_pointer_cast(TaskManager::instance().getTask(TASK_APRS_IS)); + std::shared_ptr is_thread = std::static_pointer_cast(system->getTaskManager().getTask(TASK_APRS_IS)); is_thread->inputQueue.addElement(msg); - Display::instance().addFrame(std::shared_ptr(new TextFrame("LoRa", msg->toString()))); + system->getDisplay().addFrame(std::shared_ptr(new TextFrame("LoRa", msg->toString()))); } if (!inputQueue.empty()) { diff --git a/src/TaskLora.h b/src/TaskLora.h index 75aac8f..b274f5b 100644 --- a/src/TaskLora.h +++ b/src/TaskLora.h @@ -10,8 +10,8 @@ public: LoraTask(); virtual ~LoraTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; TaskQueue> inputQueue; diff --git a/src/TaskNTP.cpp b/src/TaskNTP.cpp index 5371981..d5d0f74 100644 --- a/src/TaskNTP.cpp +++ b/src/TaskNTP.cpp @@ -11,12 +11,12 @@ NTPTask::NTPTask() : Task(TASK_NTP, TaskNtp), _beginCalled(false) { NTPTask::~NTPTask() { } -bool NTPTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { - _ntpClient = std::shared_ptr(new NTPClient(config->ntpServer.c_str())); +bool NTPTask::setup(std::shared_ptr system) { + _ntpClient = std::shared_ptr(new NTPClient(system->getUserConfig()->ntpServer.c_str())); return true; } -bool NTPTask::loop(std::shared_ptr config) { +bool NTPTask::loop(std::shared_ptr system) { if (!_beginCalled) { _ntpClient->begin(); _beginCalled = true; diff --git a/src/TaskNTP.h b/src/TaskNTP.h index 88ae419..a18103e 100644 --- a/src/TaskNTP.h +++ b/src/TaskNTP.h @@ -9,8 +9,8 @@ public: NTPTask(); virtual ~NTPTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; private: std::shared_ptr _ntpClient; diff --git a/src/TaskOTA.cpp b/src/TaskOTA.cpp index 5cd7a35..45ba900 100644 --- a/src/TaskOTA.cpp +++ b/src/TaskOTA.cpp @@ -10,7 +10,7 @@ OTATask::OTATask() : Task(TASK_OTA, TaskOta), _beginCalled(false) { OTATask::~OTATask() { } -bool OTATask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { +bool OTATask::setup(std::shared_ptr system) { _ota = std::shared_ptr(new ArduinoOTAClass()); _ota->onStart([&]() { String type; @@ -44,12 +44,12 @@ bool OTATask::setup(std::shared_ptr config, std::shared_ptrsetHostname(config->callsign.c_str()); + _ota->setHostname(system->getUserConfig()->callsign.c_str()); _stateInfo = ""; return true; } -bool OTATask::loop(std::shared_ptr config) { +bool OTATask::loop(std::shared_ptr system) { if (!_beginCalled) { _ota->begin(); _beginCalled = true; diff --git a/src/TaskOTA.h b/src/TaskOTA.h index 8e3e372..ab781d8 100644 --- a/src/TaskOTA.h +++ b/src/TaskOTA.h @@ -9,8 +9,8 @@ public: OTATask(); virtual ~OTATask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; private: std::shared_ptr _ota; diff --git a/src/TaskWifi.cpp b/src/TaskWifi.cpp index fe37c5b..177fc36 100644 --- a/src/TaskWifi.cpp +++ b/src/TaskWifi.cpp @@ -11,12 +11,12 @@ WifiTask::WifiTask() : Task(TASK_WIFI, TaskWifi), _oldWifiStatus(WL_IDLE_STATUS) WifiTask::~WifiTask() { } -bool WifiTask::setup(std::shared_ptr config, std::shared_ptr boardConfig) { +bool WifiTask::setup(std::shared_ptr system) { // WiFi.onEvent(WiFiEvent); - WiFi.setHostname(config->callsign.c_str()); + WiFi.setHostname(system->getUserConfig()->callsign.c_str()); _wiFiMulti = std::shared_ptr(new WiFiMulti()); ; - for (Configuration::Wifi::AP ap : config->wifi.APs) { + for (Configuration::Wifi::AP ap : system->getUserConfig()->wifi.APs) { logPrintD("Looking for AP: "); logPrintlnD(ap.SSID); _wiFiMulti->addAP(ap.SSID.c_str(), ap.password.c_str()); @@ -24,7 +24,7 @@ bool WifiTask::setup(std::shared_ptr config, std::shared_ptr config) { +bool WifiTask::loop(std::shared_ptr system) { const uint8_t wifi_status = _wiFiMulti->run(); if (wifi_status != WL_CONNECTED) { logPrintlnE("WiFi not connected!"); diff --git a/src/TaskWifi.h b/src/TaskWifi.h index 4e99f0b..b6758e2 100644 --- a/src/TaskWifi.h +++ b/src/TaskWifi.h @@ -9,8 +9,8 @@ public: WifiTask(); virtual ~WifiTask(); - virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) override; - virtual bool loop(std::shared_ptr config) override; + virtual bool setup(std::shared_ptr system) override; + virtual bool loop(std::shared_ptr system) override; private: std::shared_ptr _wiFiMulti;