move http stuff into own task

http_config
Peter Buchegger 2021-07-23 22:48:32 +02:00
rodzic 34a3c05c38
commit 904b5990a4
4 zmienionych plików z 79 dodań i 25 usunięć

Wyświetl plik

@ -8,6 +8,7 @@
#include <power_management.h>
#include "TaskAprsIs.h"
#include "TaskConfig.h"
#include "TaskDisplay.h"
#include "TaskEth.h"
#include "TaskFTP.h"
@ -27,12 +28,10 @@ TaskQueue<std::shared_ptr<APRSMessage>> toAprsIs;
TaskQueue<std::shared_ptr<APRSMessage>> fromModem;
TaskQueue<std::shared_ptr<APRSMessage>> toModem;
System LoRaSystem;
Configuration userConfig;
ConfigHTML html;
ConfigFactory fact;
const String config_filename = "/is-cfg.json";
AsyncWebServer server(80);
System LoRaSystem;
Configuration userConfig;
ConfigFactory fact;
const String config_filename("/is-cfg.json");
DisplayTask displayTask;
ModemTask modemTask(fromModem, toModem);
@ -43,6 +42,7 @@ NTPTask ntpTask;
FTPTask ftpTask;
AprsIsTask aprsIsTask(toAprsIs);
RouterTask routerTask(fromModem, toModem, toAprsIs);
ConfigTask configTask;
void setup() {
Serial.begin(115200);
@ -62,14 +62,7 @@ void setup() {
boardConfigs.push_back(&HELTEC_WIFI_LORA_32_V1);
boardConfigs.push_back(&HELTEC_WIFI_LORA_32_V2);
fact.addPage(&page);
fact.loadConfig(config_filename);
html.addPage(&page);
html.registerWebServer(server);
server.onNotFound([](AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
});
configTask.setup(LoRaSystem);
BoardFinder finder(boardConfigs);
BoardConfig const *boardConfig = finder.getBoardConfig(userConfig.board());
@ -107,6 +100,7 @@ void setup() {
LoRaSystem.setBoardConfig(boardConfig);
LoRaSystem.setUserConfig(&userConfig);
LoRaSystem.getTaskManager().addTask(&displayTask);
LoRaSystem.getTaskManager().addTask(&configTask);
if (userConfig.callsign() != "NOCALL-10") {
LoRaSystem.getTaskManager().addTask(&modemTask);
LoRaSystem.getTaskManager().addTask(&routerTask);
@ -143,17 +137,6 @@ void setup() {
void loop() {
LoRaSystem.getTaskManager().loop(LoRaSystem);
if (html.wasSaved()) {
fact.saveConfig(config_filename);
ESP.restart();
}
// we can start the http server just when we are connected to something
static bool httpServerInitDone = false;
if (LoRaSystem.isWifiEthConnected() && !httpServerInitDone) {
server.begin();
httpServerInitDone = true;
}
}
String create_lat_aprs(double lat) {

Wyświetl plik

@ -4,6 +4,7 @@
enum TaskNames
{
TaskAprsIs = 1,
TaskConfig,
TaskEth,
TaskFtp,
TaskModem,
@ -15,6 +16,7 @@ enum TaskNames
};
#define TASK_APRS_IS "AprsIsTask"
#define TASK_CONFIG "ConfigTask"
#define TASK_ETH "EthTask"
#define TASK_FTP "FTPTask"
#define TASK_MODEM "ModemTask"

45
src/TaskConfig.cpp 100644
Wyświetl plik

@ -0,0 +1,45 @@
#include <SPIFFS.h>
#include <logger.h>
#include "Task.h"
#include "TaskConfig.h"
#include "configuration.h"
ConfigTask::ConfigTask() : Task(TASK_CONFIG, TaskConfig), _server(80), _config_filename("/is-cfg.json"), _setupDone(false) {
}
ConfigTask::~ConfigTask() {
}
bool ConfigTask::setup(System &system) {
if (_setupDone) {
return true;
}
fact.addPage(&page);
fact.loadConfig(_config_filename);
_html.addPage(&page);
_html.registerWebServer(_server);
_server.onNotFound([](AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
});
_stateInfo = "waiting";
_setupDone = true;
return true;
}
bool ConfigTask::loop(System &system) {
// we can start the http server just when we are connected to something
static bool httpServerInitDone = false;
if (system.isWifiEthConnected() && !httpServerInitDone) {
_server.begin();
httpServerInitDone = true;
}
if (_html.wasSaved()) {
fact.saveConfig(_config_filename);
ESP.restart();
}
return true;
}

24
src/TaskConfig.h 100644
Wyświetl plik

@ -0,0 +1,24 @@
#ifndef TASK_CONFIG_H_
#define TASK_CONFIG_H_
#include "configuration.h"
#include <TaskManager.h>
class ConfigTask : public Task {
public:
ConfigTask();
virtual ~ConfigTask();
virtual bool setup(System &system) override;
virtual bool loop(System &system) override;
ConfigFactory fact;
private:
ConfigHTML _html;
AsyncWebServer _server;
const String _config_filename;
bool _setupDone;
};
#endif