mirror of
https://github.com/lora-aprs/LoRa_APRS_iGate.git
synced 2025-12-06 07:42:00 +01:00
remove of smart pointers
This commit is contained in:
parent
c6d73c33b2
commit
c1fd41a355
|
|
@ -15,11 +15,11 @@ ConfigurationManagement::ConfigurationManagement(String FilePath) : mFilePath(Fi
|
||||||
ConfigurationManagement::~ConfigurationManagement() {
|
ConfigurationManagement::~ConfigurationManagement() {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Configuration> ConfigurationManagement::readConfiguration() {
|
void ConfigurationManagement::readConfiguration(Configuration &conf) {
|
||||||
File file = SPIFFS.open(mFilePath);
|
File file = SPIFFS.open(mFilePath);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
logPrintlnE("Failed to open file for reading...");
|
logPrintlnE("Failed to open file for reading, using default configuration.");
|
||||||
return 0;
|
return;
|
||||||
}
|
}
|
||||||
DynamicJsonDocument data(2048);
|
DynamicJsonDocument data(2048);
|
||||||
DeserializationError error = deserializeJson(data, file);
|
DeserializationError error = deserializeJson(data, file);
|
||||||
|
|
@ -30,15 +30,13 @@ std::shared_ptr<Configuration> ConfigurationManagement::readConfiguration() {
|
||||||
// Serial.println();
|
// Serial.println();
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
std::shared_ptr<Configuration> conf = readProjectConfiguration(data);
|
readProjectConfiguration(data, conf);
|
||||||
|
|
||||||
// update config in memory to get the new fields:
|
// update config in memory to get the new fields:
|
||||||
writeConfiguration(conf);
|
writeConfiguration(conf);
|
||||||
|
|
||||||
return conf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigurationManagement::writeConfiguration(std::shared_ptr<Configuration> conf) {
|
void ConfigurationManagement::writeConfiguration(Configuration &conf) {
|
||||||
File file = SPIFFS.open(mFilePath, "w");
|
File file = SPIFFS.open(mFilePath, "w");
|
||||||
if (!file) {
|
if (!file) {
|
||||||
logPrintlnE("Failed to open file for writing...");
|
logPrintlnE("Failed to open file for writing...");
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ public:
|
||||||
explicit ConfigurationManagement(String FilePath);
|
explicit ConfigurationManagement(String FilePath);
|
||||||
virtual ~ConfigurationManagement();
|
virtual ~ConfigurationManagement();
|
||||||
|
|
||||||
std::shared_ptr<Configuration> readConfiguration();
|
void readConfiguration(Configuration &conf);
|
||||||
void writeConfiguration(std::shared_ptr<Configuration> conf);
|
void writeConfiguration(Configuration &conf);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual std::shared_ptr<Configuration> readProjectConfiguration(DynamicJsonDocument &data) = 0;
|
virtual void readProjectConfiguration(DynamicJsonDocument &data, Configuration &conf) = 0;
|
||||||
virtual void writeProjectConfiguration(std::shared_ptr<Configuration> conf, DynamicJsonDocument &data) = 0;
|
virtual void writeProjectConfiguration(Configuration &conf, DynamicJsonDocument &data) = 0;
|
||||||
|
|
||||||
const String mFilePath;
|
const String mFilePath;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ Display::Display() : _disp(0), _statusFrame(0), _displaySaveMode(false) {
|
||||||
Display::~Display() {
|
Display::~Display() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Display::setup(std::shared_ptr<BoardConfig> boardConfig) {
|
void Display::setup(BoardConfig const *const boardConfig) {
|
||||||
if (boardConfig->OledReset != 0) {
|
if (boardConfig->OledReset != 0) {
|
||||||
pinMode(boardConfig->OledReset, OUTPUT);
|
pinMode(boardConfig->OledReset, OUTPUT);
|
||||||
digitalWrite(boardConfig->OledReset, HIGH);
|
digitalWrite(boardConfig->OledReset, HIGH);
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ public:
|
||||||
Display();
|
Display();
|
||||||
~Display();
|
~Display();
|
||||||
|
|
||||||
void setup(std::shared_ptr<BoardConfig> boardConfig);
|
void setup(BoardConfig const *const boardConfig);
|
||||||
// setup functions
|
// setup functions
|
||||||
void showSpashScreen(String firmwareTitle, String version);
|
void showSpashScreen(String firmwareTitle, String version);
|
||||||
void setStatusFrame(std::shared_ptr<StatusFrame> frame);
|
void setStatusFrame(std::shared_ptr<StatusFrame> frame);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include "LoRa_APRS.h"
|
#include "LoRa_APRS.h"
|
||||||
|
|
||||||
LoRa_APRS::LoRa_APRS(std::shared_ptr<BoardConfig> boardConfig) : _LastReceivedMsg(0), _RxFrequency(LORA_RX_FREQUENCY), _TxFrequency(LORA_TX_FREQUENCY) {
|
LoRa_APRS::LoRa_APRS(BoardConfig const *const boardConfig) : _LastReceivedMsg(0), _RxFrequency(LORA_RX_FREQUENCY), _TxFrequency(LORA_TX_FREQUENCY) {
|
||||||
SPI.begin(boardConfig->LoraSck, boardConfig->LoraMiso, boardConfig->LoraMosi, boardConfig->LoraCS);
|
SPI.begin(boardConfig->LoraSck, boardConfig->LoraMiso, boardConfig->LoraMosi, boardConfig->LoraCS);
|
||||||
setPins(boardConfig->LoraCS, boardConfig->LoraReset, boardConfig->LoraIRQ);
|
setPins(boardConfig->LoraCS, boardConfig->LoraReset, boardConfig->LoraIRQ);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
class LoRa_APRS : public LoRaClass {
|
class LoRa_APRS : public LoRaClass {
|
||||||
public:
|
public:
|
||||||
explicit LoRa_APRS(std::shared_ptr<BoardConfig> boardConfig);
|
explicit LoRa_APRS(BoardConfig const *const boardConfig);
|
||||||
|
|
||||||
bool checkMessage();
|
bool checkMessage();
|
||||||
std::shared_ptr<APRSMessage> getMessage();
|
std::shared_ptr<APRSMessage> getMessage();
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,25 @@
|
||||||
|
|
||||||
#include "System.h"
|
#include "System.h"
|
||||||
|
|
||||||
System::System(std::shared_ptr<BoardConfig> boardConfig, std::shared_ptr<Configuration> userConfig) : _boardConfig(boardConfig), _userConfig(userConfig), _isWifiEthConnected(false) {
|
System::System() : _boardConfig(0), _userConfig(0), _isWifiEthConnected(false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
System::~System() {
|
System::~System() {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<BoardConfig> System::getBoardConfig() const {
|
void System::setBoardConfig(BoardConfig const *const boardConfig) {
|
||||||
|
_boardConfig = boardConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
void System::setUserConfig(Configuration const *const userConfig) {
|
||||||
|
_userConfig = userConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
BoardConfig const *const System::getBoardConfig() const {
|
||||||
return _boardConfig;
|
return _boardConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Configuration> System::getUserConfig() const {
|
Configuration const *const System::getUserConfig() const {
|
||||||
return _userConfig;
|
return _userConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,22 +10,25 @@
|
||||||
|
|
||||||
class System {
|
class System {
|
||||||
public:
|
public:
|
||||||
System(std::shared_ptr<BoardConfig> boardConfig, std::shared_ptr<Configuration> userConfig);
|
System();
|
||||||
~System();
|
~System();
|
||||||
|
|
||||||
std::shared_ptr<BoardConfig> getBoardConfig() const;
|
void setBoardConfig(BoardConfig const *const boardConfig);
|
||||||
std::shared_ptr<Configuration> getUserConfig() const;
|
void setUserConfig(Configuration const *const userConfig);
|
||||||
TaskManager & getTaskManager();
|
|
||||||
Display & getDisplay();
|
BoardConfig const *const getBoardConfig() const;
|
||||||
bool isWifiEthConnected() const;
|
Configuration const *const getUserConfig() const;
|
||||||
void connectedViaWifiEth(bool status);
|
TaskManager & getTaskManager();
|
||||||
|
Display & getDisplay();
|
||||||
|
bool isWifiEthConnected() const;
|
||||||
|
void connectedViaWifiEth(bool status);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<BoardConfig> _boardConfig;
|
BoardConfig const * _boardConfig;
|
||||||
std::shared_ptr<Configuration> _userConfig;
|
Configuration const *_userConfig;
|
||||||
TaskManager _taskManager;
|
TaskManager _taskManager;
|
||||||
Display _display;
|
Display _display;
|
||||||
bool _isWifiEthConnected;
|
bool _isWifiEthConnected;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ std::list<std::shared_ptr<Task>> TaskManager::getTasks() {
|
||||||
return _tasks;
|
return _tasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TaskManager::setup(std::shared_ptr<System> system) {
|
bool TaskManager::setup(System &system) {
|
||||||
logPrintlnV("will setup all tasks...");
|
logPrintlnV("will setup all tasks...");
|
||||||
for (std::shared_ptr<Task> &elem : _alwaysRunTasks) {
|
for (std::shared_ptr<Task> &elem : _alwaysRunTasks) {
|
||||||
logPrintD("call setup from ");
|
logPrintD("call setup from ");
|
||||||
|
|
@ -43,7 +43,7 @@ bool TaskManager::setup(std::shared_ptr<System> system) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TaskManager::loop(std::shared_ptr<System> system) {
|
bool TaskManager::loop(System &system) {
|
||||||
// logPrintlnD("will loop all tasks...");
|
// logPrintlnD("will loop all tasks...");
|
||||||
for (std::shared_ptr<Task> &elem : _alwaysRunTasks) {
|
for (std::shared_ptr<Task> &elem : _alwaysRunTasks) {
|
||||||
// logPrintD("call loop from ");
|
// logPrintD("call loop from ");
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,8 @@ public:
|
||||||
return _stateInfo;
|
return _stateInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) = 0;
|
virtual bool setup(System &system) = 0;
|
||||||
virtual bool loop(std::shared_ptr<System> system) = 0;
|
virtual bool loop(System &system) = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TaskDisplayState _state;
|
TaskDisplayState _state;
|
||||||
|
|
@ -66,8 +66,8 @@ public:
|
||||||
std::shared_ptr<Task> getTask(const char *name);
|
std::shared_ptr<Task> getTask(const char *name);
|
||||||
std::list<std::shared_ptr<Task>> getTasks();
|
std::list<std::shared_ptr<Task>> getTasks();
|
||||||
|
|
||||||
bool setup(std::shared_ptr<System> system);
|
bool setup(System &system);
|
||||||
bool loop(std::shared_ptr<System> system);
|
bool loop(System &system);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::list<std::shared_ptr<Task>> _tasks;
|
std::list<std::shared_ptr<Task>> _tasks;
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
String create_lat_aprs(double lat);
|
String create_lat_aprs(double lat);
|
||||||
String create_long_aprs(double lng);
|
String create_long_aprs(double lng);
|
||||||
|
|
||||||
std::shared_ptr<System> LoRaSystem;
|
System LoRaSystem;
|
||||||
|
|
||||||
TaskQueue<std::shared_ptr<APRSMessage>> toAprsIs;
|
TaskQueue<std::shared_ptr<APRSMessage>> toAprsIs;
|
||||||
TaskQueue<std::shared_ptr<APRSMessage>> fromModem;
|
TaskQueue<std::shared_ptr<APRSMessage>> fromModem;
|
||||||
|
|
@ -50,9 +50,11 @@ void setup() {
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
ProjectConfigurationManagement confmg;
|
ProjectConfigurationManagement confmg;
|
||||||
std::shared_ptr<Configuration> userConfig = confmg.readConfiguration();
|
Configuration userConfig;
|
||||||
BoardFinder finder(boardConfigs);
|
confmg.readConfiguration(userConfig);
|
||||||
std::shared_ptr<BoardConfig> boardConfig = finder.getBoardConfig(userConfig->board);
|
|
||||||
|
BoardFinder finder(boardConfigs);
|
||||||
|
std::shared_ptr<BoardConfig> boardConfig = finder.getBoardConfig(userConfig.board);
|
||||||
if (boardConfig == 0) {
|
if (boardConfig == 0) {
|
||||||
boardConfig = finder.searchBoardConfig();
|
boardConfig = finder.searchBoardConfig();
|
||||||
if (boardConfig == 0) {
|
if (boardConfig == 0) {
|
||||||
|
|
@ -60,7 +62,7 @@ void setup() {
|
||||||
while (true) {
|
while (true) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
userConfig->board = boardConfig->Name;
|
userConfig.board = boardConfig->Name;
|
||||||
confmg.writeConfiguration(userConfig);
|
confmg.writeConfiguration(userConfig);
|
||||||
logPrintlnI("will restart board now!");
|
logPrintlnI("will restart board now!");
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
|
|
@ -82,36 +84,37 @@ void setup() {
|
||||||
powerManagement->deactivateGPS();
|
powerManagement->deactivateGPS();
|
||||||
}
|
}
|
||||||
|
|
||||||
LoRaSystem = std::shared_ptr<System>(new System(boardConfig, userConfig));
|
LoRaSystem.setBoardConfig(boardConfig.get());
|
||||||
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new DisplayTask()));
|
LoRaSystem.setUserConfig(&userConfig);
|
||||||
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new ModemTask(fromModem)));
|
LoRaSystem.getTaskManager().addTask(std::shared_ptr<Task>(new DisplayTask()));
|
||||||
|
LoRaSystem.getTaskManager().addTask(std::shared_ptr<Task>(new ModemTask(fromModem)));
|
||||||
if (boardConfig->Type == eETH_BOARD) {
|
if (boardConfig->Type == eETH_BOARD) {
|
||||||
LoRaSystem->getTaskManager().addAlwaysRunTask(std::shared_ptr<Task>(new EthTask()));
|
LoRaSystem.getTaskManager().addAlwaysRunTask(std::shared_ptr<Task>(new EthTask()));
|
||||||
} else {
|
} else {
|
||||||
LoRaSystem->getTaskManager().addAlwaysRunTask(std::shared_ptr<Task>(new WifiTask()));
|
LoRaSystem.getTaskManager().addAlwaysRunTask(std::shared_ptr<Task>(new WifiTask()));
|
||||||
}
|
}
|
||||||
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new OTATask()));
|
LoRaSystem.getTaskManager().addTask(std::shared_ptr<Task>(new OTATask()));
|
||||||
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new NTPTask()));
|
LoRaSystem.getTaskManager().addTask(std::shared_ptr<Task>(new NTPTask()));
|
||||||
if (userConfig->ftp.active) {
|
if (userConfig.ftp.active) {
|
||||||
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new FTPTask()));
|
LoRaSystem.getTaskManager().addTask(std::shared_ptr<Task>(new FTPTask()));
|
||||||
}
|
}
|
||||||
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new AprsIsTask(toAprsIs)));
|
LoRaSystem.getTaskManager().addTask(std::shared_ptr<Task>(new AprsIsTask(toAprsIs)));
|
||||||
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new RouterTask(fromModem, toAprsIs)));
|
LoRaSystem.getTaskManager().addTask(std::shared_ptr<Task>(new RouterTask(fromModem, toAprsIs)));
|
||||||
|
|
||||||
LoRaSystem->getTaskManager().setup(LoRaSystem);
|
LoRaSystem.getTaskManager().setup(LoRaSystem);
|
||||||
|
|
||||||
LoRaSystem->getDisplay().showSpashScreen("LoRa APRS iGate", VERSION);
|
LoRaSystem.getDisplay().showSpashScreen("LoRa APRS iGate", VERSION);
|
||||||
|
|
||||||
if (userConfig->callsign == "NOCALL-10") {
|
if (userConfig.callsign == "NOCALL-10") {
|
||||||
logPrintlnE("You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!");
|
logPrintlnE("You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!");
|
||||||
LoRaSystem->getDisplay().showStatusScreen("ERROR", "You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!");
|
LoRaSystem.getDisplay().showStatusScreen("ERROR", "You have to change your settings in 'data/is-cfg.json' and upload it via \"Upload File System image\"!");
|
||||||
while (true)
|
while (true)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userConfig->display.overwritePin != 0) {
|
if (userConfig.display.overwritePin != 0) {
|
||||||
pinMode(userConfig->display.overwritePin, INPUT);
|
pinMode(userConfig.display.overwritePin, INPUT);
|
||||||
pinMode(userConfig->display.overwritePin, INPUT_PULLUP);
|
pinMode(userConfig.display.overwritePin, INPUT_PULLUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
delay(5000);
|
delay(5000);
|
||||||
|
|
@ -120,7 +123,7 @@ void setup() {
|
||||||
|
|
||||||
// cppcheck-suppress unusedFunction
|
// cppcheck-suppress unusedFunction
|
||||||
void loop() {
|
void loop() {
|
||||||
LoRaSystem->getTaskManager().loop(LoRaSystem);
|
LoRaSystem.getTaskManager().loop(LoRaSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
String create_lat_aprs(double lat) {
|
String create_lat_aprs(double lat) {
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,14 @@ AprsIsTask::AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs) : Task
|
||||||
AprsIsTask::~AprsIsTask() {
|
AprsIsTask::~AprsIsTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AprsIsTask::setup(std::shared_ptr<System> system) {
|
bool AprsIsTask::setup(System &system) {
|
||||||
_aprs_is = std::shared_ptr<APRS_IS>(new APRS_IS(system->getUserConfig()->callsign, system->getUserConfig()->aprs_is.passcode, "ESP32-APRS-IS", "0.2"));
|
_aprs_is = std::shared_ptr<APRS_IS>(new APRS_IS(system.getUserConfig()->callsign, system.getUserConfig()->aprs_is.passcode, "ESP32-APRS-IS", "0.2"));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AprsIsTask::loop(std::shared_ptr<System> system) {
|
bool AprsIsTask::loop(System &system) {
|
||||||
if (!system->isWifiEthConnected()) {
|
if (!system.isWifiEthConnected()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!_aprs_is->connected()) {
|
if (!_aprs_is->connected()) {
|
||||||
|
|
@ -42,12 +42,12 @@ bool AprsIsTask::loop(std::shared_ptr<System> system) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AprsIsTask::connect(std::shared_ptr<System> system) {
|
bool AprsIsTask::connect(System &system) {
|
||||||
logPrintI("connecting to APRS-IS server: ");
|
logPrintI("connecting to APRS-IS server: ");
|
||||||
logPrintI(system->getUserConfig()->aprs_is.server);
|
logPrintI(system.getUserConfig()->aprs_is.server);
|
||||||
logPrintI(" on port: ");
|
logPrintI(" on port: ");
|
||||||
logPrintlnI(String(system->getUserConfig()->aprs_is.port));
|
logPrintlnI(String(system.getUserConfig()->aprs_is.port));
|
||||||
if (!_aprs_is->connect(system->getUserConfig()->aprs_is.server, system->getUserConfig()->aprs_is.port)) {
|
if (!_aprs_is->connect(system.getUserConfig()->aprs_is.server, system.getUserConfig()->aprs_is.port)) {
|
||||||
logPrintlnE("Connection failed.");
|
logPrintlnE("Connection failed.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,15 +11,15 @@ public:
|
||||||
explicit AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs);
|
explicit AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs);
|
||||||
virtual ~AprsIsTask();
|
virtual ~AprsIsTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<APRS_IS> _aprs_is;
|
std::shared_ptr<APRS_IS> _aprs_is;
|
||||||
|
|
||||||
TaskQueue<std::shared_ptr<APRSMessage>> &_toAprsIs;
|
TaskQueue<std::shared_ptr<APRSMessage>> &_toAprsIs;
|
||||||
|
|
||||||
bool connect(std::shared_ptr<System> system);
|
bool connect(System &system);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -10,22 +10,22 @@ DisplayTask::DisplayTask() : Task("DisplayTask", 0) {
|
||||||
DisplayTask::~DisplayTask() {
|
DisplayTask::~DisplayTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DisplayTask::setup(std::shared_ptr<System> system) {
|
bool DisplayTask::setup(System &system) {
|
||||||
system->getDisplay().setup(system->getBoardConfig());
|
system.getDisplay().setup(system.getBoardConfig());
|
||||||
if (system->getUserConfig()->display.turn180) {
|
if (system.getUserConfig()->display.turn180) {
|
||||||
system->getDisplay().turn180();
|
system.getDisplay().turn180();
|
||||||
}
|
}
|
||||||
std::shared_ptr<StatusFrame> statusFrame = std::shared_ptr<StatusFrame>(new StatusFrame(system->getTaskManager().getTasks()));
|
std::shared_ptr<StatusFrame> statusFrame = std::shared_ptr<StatusFrame>(new StatusFrame(system.getTaskManager().getTasks()));
|
||||||
system->getDisplay().setStatusFrame(statusFrame);
|
system.getDisplay().setStatusFrame(statusFrame);
|
||||||
if (!system->getUserConfig()->display.alwaysOn) {
|
if (!system.getUserConfig()->display.alwaysOn) {
|
||||||
system->getDisplay().activateDisplaySaveMode();
|
system.getDisplay().activateDisplaySaveMode();
|
||||||
system->getDisplay().setDisplaySaveTimeout(system->getUserConfig()->display.timeout);
|
system.getDisplay().setDisplaySaveTimeout(system.getUserConfig()->display.timeout);
|
||||||
}
|
}
|
||||||
_stateInfo = system->getUserConfig()->callsign;
|
_stateInfo = system.getUserConfig()->callsign;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DisplayTask::loop(std::shared_ptr<System> system) {
|
bool DisplayTask::loop(System &system) {
|
||||||
system->getDisplay().update();
|
system.getDisplay().update();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ public:
|
||||||
DisplayTask();
|
DisplayTask();
|
||||||
virtual ~DisplayTask();
|
virtual ~DisplayTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ EthTask::EthTask() : Task(TASK_ETH, TaskEth) {
|
||||||
EthTask::~EthTask() {
|
EthTask::~EthTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EthTask::setup(std::shared_ptr<System> system) {
|
bool EthTask::setup(System &system) {
|
||||||
WiFi.onEvent(WiFiEvent);
|
WiFi.onEvent(WiFiEvent);
|
||||||
|
|
||||||
constexpr uint8_t ETH_NRST = 5;
|
constexpr uint8_t ETH_NRST = 5;
|
||||||
|
|
@ -73,14 +73,14 @@ bool EthTask::setup(std::shared_ptr<System> system) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EthTask::loop(std::shared_ptr<System> system) {
|
bool EthTask::loop(System &system) {
|
||||||
if (!eth_connected) {
|
if (!eth_connected) {
|
||||||
system->connectedViaWifiEth(false);
|
system.connectedViaWifiEth(false);
|
||||||
_stateInfo = "Ethernet not connected";
|
_stateInfo = "Ethernet not connected";
|
||||||
_state = Error;
|
_state = Error;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
system->connectedViaWifiEth(true);
|
system.connectedViaWifiEth(true);
|
||||||
_stateInfo = ETH.localIP().toString();
|
_stateInfo = ETH.localIP().toString();
|
||||||
_state = Okay;
|
_state = Okay;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@ public:
|
||||||
EthTask();
|
EthTask();
|
||||||
virtual ~EthTask();
|
virtual ~EthTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ FTPTask::FTPTask() : Task(TASK_FTP, TaskFtp), _beginCalled(false) {
|
||||||
FTPTask::~FTPTask() {
|
FTPTask::~FTPTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FTPTask::setup(std::shared_ptr<System> system) {
|
bool FTPTask::setup(System &system) {
|
||||||
_ftpServer = std::shared_ptr<FTPServer>(new FTPServer());
|
_ftpServer = std::shared_ptr<FTPServer>(new FTPServer());
|
||||||
for (Configuration::Ftp::User user : system->getUserConfig()->ftp.users) {
|
for (Configuration::Ftp::User user : system.getUserConfig()->ftp.users) {
|
||||||
logPrintD("Adding user to FTP Server: ");
|
logPrintD("Adding user to FTP Server: ");
|
||||||
logPrintlnD(user.name);
|
logPrintlnD(user.name);
|
||||||
_ftpServer->addUser(user.name, user.password);
|
_ftpServer->addUser(user.name, user.password);
|
||||||
|
|
@ -24,7 +24,7 @@ bool FTPTask::setup(std::shared_ptr<System> system) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FTPTask::loop(std::shared_ptr<System> system) {
|
bool FTPTask::loop(System &system) {
|
||||||
if (!_beginCalled) {
|
if (!_beginCalled) {
|
||||||
_ftpServer->begin();
|
_ftpServer->begin();
|
||||||
_beginCalled = true;
|
_beginCalled = true;
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ public:
|
||||||
FTPTask();
|
FTPTask();
|
||||||
virtual ~FTPTask();
|
virtual ~FTPTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<FTPServer> _ftpServer;
|
std::shared_ptr<FTPServer> _ftpServer;
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ ModemTask::ModemTask(TaskQueue<std::shared_ptr<APRSMessage>> &fromModem) : Task(
|
||||||
ModemTask::~ModemTask() {
|
ModemTask::~ModemTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ModemTask::setup(std::shared_ptr<System> system) {
|
bool ModemTask::setup(System &system) {
|
||||||
_lora_aprs = std::shared_ptr<LoRa_APRS>(new LoRa_APRS(system->getBoardConfig()));
|
_lora_aprs = std::shared_ptr<LoRa_APRS>(new LoRa_APRS(system.getBoardConfig()));
|
||||||
if (!_lora_aprs->begin(_lora_aprs->getRxFrequency())) {
|
if (!_lora_aprs->begin(_lora_aprs->getRxFrequency())) {
|
||||||
logPrintlnE("Starting LoRa failed!");
|
logPrintlnE("Starting LoRa failed!");
|
||||||
_stateInfo = "LoRa-Modem failed";
|
_stateInfo = "LoRa-Modem failed";
|
||||||
|
|
@ -21,19 +21,19 @@ bool ModemTask::setup(std::shared_ptr<System> system) {
|
||||||
while (true)
|
while (true)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
_lora_aprs->setRxFrequency(system->getUserConfig()->lora.frequencyRx);
|
_lora_aprs->setRxFrequency(system.getUserConfig()->lora.frequencyRx);
|
||||||
_lora_aprs->setTxFrequency(system->getUserConfig()->lora.frequencyTx);
|
_lora_aprs->setTxFrequency(system.getUserConfig()->lora.frequencyTx);
|
||||||
_lora_aprs->setTxPower(system->getUserConfig()->lora.power);
|
_lora_aprs->setTxPower(system.getUserConfig()->lora.power);
|
||||||
_lora_aprs->setSpreadingFactor(system->getUserConfig()->lora.spreadingFactor);
|
_lora_aprs->setSpreadingFactor(system.getUserConfig()->lora.spreadingFactor);
|
||||||
_lora_aprs->setSignalBandwidth(system->getUserConfig()->lora.signalBandwidth);
|
_lora_aprs->setSignalBandwidth(system.getUserConfig()->lora.signalBandwidth);
|
||||||
_lora_aprs->setCodingRate4(system->getUserConfig()->lora.codingRate4);
|
_lora_aprs->setCodingRate4(system.getUserConfig()->lora.codingRate4);
|
||||||
_lora_aprs->enableCrc();
|
_lora_aprs->enableCrc();
|
||||||
|
|
||||||
_stateInfo = "";
|
_stateInfo = "";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ModemTask::loop(std::shared_ptr<System> system) {
|
bool ModemTask::loop(System &system) {
|
||||||
if (_lora_aprs->checkMessage()) {
|
if (_lora_aprs->checkMessage()) {
|
||||||
std::shared_ptr<APRSMessage> msg = _lora_aprs->getMessage();
|
std::shared_ptr<APRSMessage> msg = _lora_aprs->getMessage();
|
||||||
// msg->getAPRSBody()->setData(msg->getAPRSBody()->getData() + " 123");
|
// msg->getAPRSBody()->setData(msg->getAPRSBody()->getData() + " 123");
|
||||||
|
|
@ -53,10 +53,10 @@ bool ModemTask::loop(std::shared_ptr<System> system) {
|
||||||
if (!path.isEmpty()) {
|
if (!path.isEmpty()) {
|
||||||
path += ",";
|
path += ",";
|
||||||
}
|
}
|
||||||
msg->setPath(path + "qAR," + system->getUserConfig()->callsign);
|
msg->setPath(path + "qAR," + system.getUserConfig()->callsign);
|
||||||
|
|
||||||
_fromModem.addElement(msg);
|
_fromModem.addElement(msg);
|
||||||
system->getDisplay().addFrame(std::shared_ptr<DisplayFrame>(new TextFrame("LoRa", msg->toString())));
|
system.getDisplay().addFrame(std::shared_ptr<DisplayFrame>(new TextFrame("LoRa", msg->toString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ public:
|
||||||
explicit ModemTask(TaskQueue<std::shared_ptr<APRSMessage>> &fromModem);
|
explicit ModemTask(TaskQueue<std::shared_ptr<APRSMessage>> &fromModem);
|
||||||
virtual ~ModemTask();
|
virtual ~ModemTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<LoRa_APRS> _lora_aprs;
|
std::shared_ptr<LoRa_APRS> _lora_aprs;
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,13 @@ NTPTask::NTPTask() : Task(TASK_NTP, TaskNtp), _beginCalled(false) {
|
||||||
NTPTask::~NTPTask() {
|
NTPTask::~NTPTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NTPTask::setup(std::shared_ptr<System> system) {
|
bool NTPTask::setup(System &system) {
|
||||||
_ntpClient = std::shared_ptr<NTPClient>(new NTPClient(system->getUserConfig()->ntpServer.c_str()));
|
_ntpClient = std::shared_ptr<NTPClient>(new NTPClient(system.getUserConfig()->ntpServer.c_str()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NTPTask::loop(std::shared_ptr<System> system) {
|
bool NTPTask::loop(System &system) {
|
||||||
if (!system->isWifiEthConnected()) {
|
if (!system.isWifiEthConnected()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!_beginCalled) {
|
if (!_beginCalled) {
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ public:
|
||||||
NTPTask();
|
NTPTask();
|
||||||
virtual ~NTPTask();
|
virtual ~NTPTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<NTPClient> _ntpClient;
|
std::shared_ptr<NTPClient> _ntpClient;
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ OTATask::OTATask() : Task(TASK_OTA, TaskOta), _beginCalled(false) {
|
||||||
OTATask::~OTATask() {
|
OTATask::~OTATask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OTATask::setup(std::shared_ptr<System> system) {
|
bool OTATask::setup(System &system) {
|
||||||
_ota = std::shared_ptr<ArduinoOTAClass>(new ArduinoOTAClass());
|
_ota = std::shared_ptr<ArduinoOTAClass>(new ArduinoOTAClass());
|
||||||
_ota->onStart([&]() {
|
_ota->onStart([&]() {
|
||||||
String type;
|
String type;
|
||||||
|
|
@ -44,12 +44,12 @@ bool OTATask::setup(std::shared_ptr<System> system) {
|
||||||
else if (error == OTA_END_ERROR)
|
else if (error == OTA_END_ERROR)
|
||||||
logPrintlnE("End Failed");
|
logPrintlnE("End Failed");
|
||||||
});
|
});
|
||||||
_ota->setHostname(system->getUserConfig()->callsign.c_str());
|
_ota->setHostname(system.getUserConfig()->callsign.c_str());
|
||||||
_stateInfo = "";
|
_stateInfo = "";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OTATask::loop(std::shared_ptr<System> system) {
|
bool OTATask::loop(System &system) {
|
||||||
if (!_beginCalled) {
|
if (!_beginCalled) {
|
||||||
_ota->begin();
|
_ota->begin();
|
||||||
_beginCalled = true;
|
_beginCalled = true;
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ public:
|
||||||
OTATask();
|
OTATask();
|
||||||
virtual ~OTATask();
|
virtual ~OTATask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<ArduinoOTAClass> _ota;
|
std::shared_ptr<ArduinoOTAClass> _ota;
|
||||||
|
|
|
||||||
|
|
@ -13,20 +13,20 @@ RouterTask::RouterTask(TaskQueue<std::shared_ptr<APRSMessage>> &fromModem, TaskQ
|
||||||
RouterTask::~RouterTask() {
|
RouterTask::~RouterTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterTask::setup(std::shared_ptr<System> system) {
|
bool RouterTask::setup(System &system) {
|
||||||
// setup beacon
|
// setup beacon
|
||||||
_beacon_timer.setTimeout(system->getUserConfig()->beacon.timeout * 60 * 1000);
|
_beacon_timer.setTimeout(system.getUserConfig()->beacon.timeout * 60 * 1000);
|
||||||
_beaconMsg = std::shared_ptr<APRSMessage>(new APRSMessage());
|
_beaconMsg = std::shared_ptr<APRSMessage>(new APRSMessage());
|
||||||
_beaconMsg->setSource(system->getUserConfig()->callsign);
|
_beaconMsg->setSource(system.getUserConfig()->callsign);
|
||||||
_beaconMsg->setDestination("APLG01");
|
_beaconMsg->setDestination("APLG01");
|
||||||
String lat = create_lat_aprs(system->getUserConfig()->beacon.positionLatitude);
|
String lat = create_lat_aprs(system.getUserConfig()->beacon.positionLatitude);
|
||||||
String lng = create_long_aprs(system->getUserConfig()->beacon.positionLongitude);
|
String lng = create_long_aprs(system.getUserConfig()->beacon.positionLongitude);
|
||||||
_beaconMsg->getBody()->setData(String("=") + lat + "L" + lng + "&" + system->getUserConfig()->beacon.message);
|
_beaconMsg->getBody()->setData(String("=") + lat + "L" + lng + "&" + system.getUserConfig()->beacon.message);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RouterTask::loop(std::shared_ptr<System> system) {
|
bool RouterTask::loop(System &system) {
|
||||||
// do routing
|
// do routing
|
||||||
if (!_fromModem.empty()) {
|
if (!_fromModem.empty()) {
|
||||||
_toAprsIs.addElement(_fromModem.getElement());
|
_toAprsIs.addElement(_fromModem.getElement());
|
||||||
|
|
@ -37,7 +37,7 @@ bool RouterTask::loop(std::shared_ptr<System> system) {
|
||||||
logPrintD("[" + timeString() + "] ");
|
logPrintD("[" + timeString() + "] ");
|
||||||
logPrintlnD(_beaconMsg->encode());
|
logPrintlnD(_beaconMsg->encode());
|
||||||
_toAprsIs.addElement(_beaconMsg);
|
_toAprsIs.addElement(_beaconMsg);
|
||||||
system->getDisplay().addFrame(std::shared_ptr<DisplayFrame>(new TextFrame("BEACON", _beaconMsg->toString())));
|
system.getDisplay().addFrame(std::shared_ptr<DisplayFrame>(new TextFrame("BEACON", _beaconMsg->toString())));
|
||||||
_beacon_timer.start();
|
_beacon_timer.start();
|
||||||
}
|
}
|
||||||
time_t diff = _beacon_timer.getTriggerTimeInSec();
|
time_t diff = _beacon_timer.getTriggerTimeInSec();
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ public:
|
||||||
RouterTask(TaskQueue<std::shared_ptr<APRSMessage>> &fromModem, TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs);
|
RouterTask(TaskQueue<std::shared_ptr<APRSMessage>> &fromModem, TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs);
|
||||||
virtual ~RouterTask();
|
virtual ~RouterTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TaskQueue<std::shared_ptr<APRSMessage>> &_fromModem;
|
TaskQueue<std::shared_ptr<APRSMessage>> &_fromModem;
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,12 @@ WifiTask::WifiTask() : Task(TASK_WIFI, TaskWifi), _oldWifiStatus(WL_IDLE_STATUS)
|
||||||
WifiTask::~WifiTask() {
|
WifiTask::~WifiTask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WifiTask::setup(std::shared_ptr<System> system) {
|
bool WifiTask::setup(System &system) {
|
||||||
// WiFi.onEvent(WiFiEvent);
|
// WiFi.onEvent(WiFiEvent);
|
||||||
WiFi.setHostname(system->getUserConfig()->callsign.c_str());
|
WiFi.setHostname(system.getUserConfig()->callsign.c_str());
|
||||||
_wiFiMulti = std::shared_ptr<WiFiMulti>(new WiFiMulti());
|
_wiFiMulti = std::shared_ptr<WiFiMulti>(new WiFiMulti());
|
||||||
;
|
;
|
||||||
for (Configuration::Wifi::AP ap : system->getUserConfig()->wifi.APs) {
|
for (Configuration::Wifi::AP ap : system.getUserConfig()->wifi.APs) {
|
||||||
logPrintD("Looking for AP: ");
|
logPrintD("Looking for AP: ");
|
||||||
logPrintlnD(ap.SSID);
|
logPrintlnD(ap.SSID);
|
||||||
_wiFiMulti->addAP(ap.SSID.c_str(), ap.password.c_str());
|
_wiFiMulti->addAP(ap.SSID.c_str(), ap.password.c_str());
|
||||||
|
|
@ -24,10 +24,10 @@ bool WifiTask::setup(std::shared_ptr<System> system) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WifiTask::loop(std::shared_ptr<System> system) {
|
bool WifiTask::loop(System &system) {
|
||||||
const uint8_t wifi_status = _wiFiMulti->run();
|
const uint8_t wifi_status = _wiFiMulti->run();
|
||||||
if (wifi_status != WL_CONNECTED) {
|
if (wifi_status != WL_CONNECTED) {
|
||||||
system->connectedViaWifiEth(false);
|
system.connectedViaWifiEth(false);
|
||||||
logPrintlnE("WiFi not connected!");
|
logPrintlnE("WiFi not connected!");
|
||||||
_oldWifiStatus = wifi_status;
|
_oldWifiStatus = wifi_status;
|
||||||
_stateInfo = "WiFi not connected";
|
_stateInfo = "WiFi not connected";
|
||||||
|
|
@ -39,7 +39,7 @@ bool WifiTask::loop(std::shared_ptr<System> system) {
|
||||||
_oldWifiStatus = wifi_status;
|
_oldWifiStatus = wifi_status;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
system->connectedViaWifiEth(true);
|
system.connectedViaWifiEth(true);
|
||||||
_stateInfo = WiFi.localIP().toString();
|
_stateInfo = WiFi.localIP().toString();
|
||||||
_state = Okay;
|
_state = Okay;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ public:
|
||||||
WifiTask();
|
WifiTask();
|
||||||
virtual ~WifiTask();
|
virtual ~WifiTask();
|
||||||
|
|
||||||
virtual bool setup(std::shared_ptr<System> system) override;
|
virtual bool setup(System &system) override;
|
||||||
virtual bool loop(std::shared_ptr<System> system) override;
|
virtual bool loop(System &system) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<WiFiMulti> _wiFiMulti;
|
std::shared_ptr<WiFiMulti> _wiFiMulti;
|
||||||
|
|
|
||||||
|
|
@ -4,96 +4,93 @@
|
||||||
|
|
||||||
#include "project_configuration.h"
|
#include "project_configuration.h"
|
||||||
|
|
||||||
std::shared_ptr<Configuration> ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocument &data) {
|
void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocument &data, Configuration &conf) {
|
||||||
std::shared_ptr<Configuration> conf = std::shared_ptr<Configuration>(new Configuration);
|
|
||||||
if (data.containsKey("callsign"))
|
if (data.containsKey("callsign"))
|
||||||
conf->callsign = data["callsign"].as<String>();
|
conf.callsign = data["callsign"].as<String>();
|
||||||
|
|
||||||
JsonArray aps = data["wifi"]["AP"].as<JsonArray>();
|
JsonArray aps = data["wifi"]["AP"].as<JsonArray>();
|
||||||
for (JsonVariant v : aps) {
|
for (JsonVariant v : aps) {
|
||||||
Configuration::Wifi::AP ap;
|
Configuration::Wifi::AP ap;
|
||||||
ap.SSID = v["SSID"].as<String>();
|
ap.SSID = v["SSID"].as<String>();
|
||||||
ap.password = v["password"].as<String>();
|
ap.password = v["password"].as<String>();
|
||||||
conf->wifi.APs.push_back(ap);
|
conf.wifi.APs.push_back(ap);
|
||||||
}
|
}
|
||||||
if (data.containsKey("beacon") && data["beacon"].containsKey("message"))
|
if (data.containsKey("beacon") && data["beacon"].containsKey("message"))
|
||||||
conf->beacon.message = data["beacon"]["message"].as<String>();
|
conf.beacon.message = data["beacon"]["message"].as<String>();
|
||||||
conf->beacon.positionLatitude = data["beacon"]["position"]["latitude"] | 0.0;
|
conf.beacon.positionLatitude = data["beacon"]["position"]["latitude"] | 0.0;
|
||||||
conf->beacon.positionLongitude = data["beacon"]["position"]["longitude"] | 0.0;
|
conf.beacon.positionLongitude = data["beacon"]["position"]["longitude"] | 0.0;
|
||||||
conf->beacon.timeout = data["beacon"]["timeout"] | 15;
|
conf.beacon.timeout = data["beacon"]["timeout"] | 15;
|
||||||
if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("passcode"))
|
if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("passcode"))
|
||||||
conf->aprs_is.passcode = data["aprs_is"]["passcode"].as<String>();
|
conf.aprs_is.passcode = data["aprs_is"]["passcode"].as<String>();
|
||||||
if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("server"))
|
if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("server"))
|
||||||
conf->aprs_is.server = data["aprs_is"]["server"].as<String>();
|
conf.aprs_is.server = data["aprs_is"]["server"].as<String>();
|
||||||
conf->aprs_is.port = data["aprs_is"]["port"] | 14580;
|
conf.aprs_is.port = data["aprs_is"]["port"] | 14580;
|
||||||
|
|
||||||
conf->lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000;
|
conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000;
|
||||||
conf->lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000;
|
conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000;
|
||||||
conf->lora.power = data["lora"]["power"] | 20;
|
conf.lora.power = data["lora"]["power"] | 20;
|
||||||
conf->lora.spreadingFactor = data["lora"]["spreading_factor"] | 12;
|
conf.lora.spreadingFactor = data["lora"]["spreading_factor"] | 12;
|
||||||
conf->lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125000;
|
conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125000;
|
||||||
conf->lora.codingRate4 = data["lora"]["coding_rate4"] | 5;
|
conf.lora.codingRate4 = data["lora"]["coding_rate4"] | 5;
|
||||||
conf->display.alwaysOn = data["display"]["always_on"] | true;
|
conf.display.alwaysOn = data["display"]["always_on"] | true;
|
||||||
conf->display.timeout = data["display"]["timeout"] | 10;
|
conf.display.timeout = data["display"]["timeout"] | 10;
|
||||||
conf->display.overwritePin = data["display"]["overwrite_pin"] | 0;
|
conf.display.overwritePin = data["display"]["overwrite_pin"] | 0;
|
||||||
conf->display.turn180 = data["display"]["turn180"] | true;
|
conf.display.turn180 = data["display"]["turn180"] | true;
|
||||||
|
|
||||||
conf->ftp.active = data["ftp"]["active"] | false;
|
conf.ftp.active = data["ftp"]["active"] | false;
|
||||||
JsonArray users = data["ftp"]["user"].as<JsonArray>();
|
JsonArray users = data["ftp"]["user"].as<JsonArray>();
|
||||||
for (JsonVariant u : users) {
|
for (JsonVariant u : users) {
|
||||||
Configuration::Ftp::User us;
|
Configuration::Ftp::User us;
|
||||||
us.name = u["name"].as<String>();
|
us.name = u["name"].as<String>();
|
||||||
us.password = u["password"].as<String>();
|
us.password = u["password"].as<String>();
|
||||||
conf->ftp.users.push_back(us);
|
conf.ftp.users.push_back(us);
|
||||||
}
|
}
|
||||||
if (conf->ftp.users.empty()) {
|
if (conf.ftp.users.empty()) {
|
||||||
Configuration::Ftp::User us;
|
Configuration::Ftp::User us;
|
||||||
us.name = "ftp";
|
us.name = "ftp";
|
||||||
us.password = "ftp";
|
us.password = "ftp";
|
||||||
conf->ftp.users.push_back(us);
|
conf.ftp.users.push_back(us);
|
||||||
}
|
}
|
||||||
if (data.containsKey("ntp_server"))
|
if (data.containsKey("ntp_server"))
|
||||||
conf->ntpServer = data["ntp_server"].as<String>();
|
conf.ntpServer = data["ntp_server"].as<String>();
|
||||||
|
|
||||||
if (data.containsKey("board"))
|
if (data.containsKey("board"))
|
||||||
conf->board = data["board"].as<String>();
|
conf.board = data["board"].as<String>();
|
||||||
|
|
||||||
return conf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectConfigurationManagement::writeProjectConfiguration(std::shared_ptr<Configuration> conf, DynamicJsonDocument &data) {
|
void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &conf, DynamicJsonDocument &data) {
|
||||||
data["callsign"] = conf->callsign;
|
data["callsign"] = conf.callsign;
|
||||||
JsonArray aps = data["wifi"].createNestedArray("AP");
|
JsonArray aps = data["wifi"].createNestedArray("AP");
|
||||||
for (Configuration::Wifi::AP ap : conf->wifi.APs) {
|
for (Configuration::Wifi::AP ap : conf.wifi.APs) {
|
||||||
JsonObject v = aps.createNestedObject();
|
JsonObject v = aps.createNestedObject();
|
||||||
v["SSID"] = ap.SSID;
|
v["SSID"] = ap.SSID;
|
||||||
v["password"] = ap.password;
|
v["password"] = ap.password;
|
||||||
}
|
}
|
||||||
data["beacon"]["message"] = conf->beacon.message;
|
data["beacon"]["message"] = conf.beacon.message;
|
||||||
data["beacon"]["position"]["latitude"] = conf->beacon.positionLatitude;
|
data["beacon"]["position"]["latitude"] = conf.beacon.positionLatitude;
|
||||||
data["beacon"]["position"]["longitude"] = conf->beacon.positionLongitude;
|
data["beacon"]["position"]["longitude"] = conf.beacon.positionLongitude;
|
||||||
data["beacon"]["timeout"] = conf->beacon.timeout;
|
data["beacon"]["timeout"] = conf.beacon.timeout;
|
||||||
data["aprs_is"]["passcode"] = conf->aprs_is.passcode;
|
data["aprs_is"]["passcode"] = conf.aprs_is.passcode;
|
||||||
data["aprs_is"]["server"] = conf->aprs_is.server;
|
data["aprs_is"]["server"] = conf.aprs_is.server;
|
||||||
data["aprs_is"]["port"] = conf->aprs_is.port;
|
data["aprs_is"]["port"] = conf.aprs_is.port;
|
||||||
data["lora"]["frequency_rx"] = conf->lora.frequencyRx;
|
data["lora"]["frequency_rx"] = conf.lora.frequencyRx;
|
||||||
data["lora"]["frequency_tx"] = conf->lora.frequencyTx;
|
data["lora"]["frequency_tx"] = conf.lora.frequencyTx;
|
||||||
data["lora"]["power"] = conf->lora.power;
|
data["lora"]["power"] = conf.lora.power;
|
||||||
data["lora"]["spreading_factor"] = conf->lora.spreadingFactor;
|
data["lora"]["spreading_factor"] = conf.lora.spreadingFactor;
|
||||||
data["lora"]["signal_bandwidth"] = conf->lora.signalBandwidth;
|
data["lora"]["signal_bandwidth"] = conf.lora.signalBandwidth;
|
||||||
data["lora"]["coding_rate4"] = conf->lora.codingRate4;
|
data["lora"]["coding_rate4"] = conf.lora.codingRate4;
|
||||||
data["display"]["always_on"] = conf->display.alwaysOn;
|
data["display"]["always_on"] = conf.display.alwaysOn;
|
||||||
data["display"]["timeout"] = conf->display.timeout;
|
data["display"]["timeout"] = conf.display.timeout;
|
||||||
data["display"]["overwrite_pin"] = conf->display.overwritePin;
|
data["display"]["overwrite_pin"] = conf.display.overwritePin;
|
||||||
data["display"]["turn180"] = conf->display.turn180;
|
data["display"]["turn180"] = conf.display.turn180;
|
||||||
data["ftp"]["active"] = conf->ftp.active;
|
data["ftp"]["active"] = conf.ftp.active;
|
||||||
JsonArray users = data["ftp"].createNestedArray("user");
|
JsonArray users = data["ftp"].createNestedArray("user");
|
||||||
for (Configuration::Ftp::User u : conf->ftp.users) {
|
for (Configuration::Ftp::User u : conf.ftp.users) {
|
||||||
JsonObject v = users.createNestedObject();
|
JsonObject v = users.createNestedObject();
|
||||||
v["name"] = u.name;
|
v["name"] = u.name;
|
||||||
v["password"] = u.password;
|
v["password"] = u.password;
|
||||||
}
|
}
|
||||||
data["ntp_server"] = conf->ntpServer;
|
data["ntp_server"] = conf.ntpServer;
|
||||||
|
|
||||||
data["board"] = conf->board;
|
data["board"] = conf.board;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,8 +101,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual std::shared_ptr<Configuration> readProjectConfiguration(DynamicJsonDocument &data) override;
|
virtual void readProjectConfiguration(DynamicJsonDocument &data, Configuration &conf) override;
|
||||||
virtual void writeProjectConfiguration(std::shared_ptr<Configuration> conf, DynamicJsonDocument &data) override;
|
virtual void writeProjectConfiguration(Configuration &conf, DynamicJsonDocument &data) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::shared_ptr<Configuration> load_config(std::shared_ptr<BoardConfig> boardConfig);
|
std::shared_ptr<Configuration> load_config(std::shared_ptr<BoardConfig> boardConfig);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue