From 366585b2632e9c9a7a0456b3ed36273536a32e6b Mon Sep 17 00:00:00 2001 From: RaffaelW Date: Sun, 3 Nov 2024 21:18:33 +0100 Subject: [PATCH] moved loading of config to request handler --- src/main.cpp | 8 +++--- src/routes/config.cpp | 62 ++++++++++++++++++++----------------------- src/routes/config.h | 14 +--------- 3 files changed, 35 insertions(+), 49 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1206fe8..339c957 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,7 +20,7 @@ void setup() { Serial.begin(9600); - config.begin("dmx", false); + config.begin("dmx", true); uint8_t universe1 = config.getUChar("universe-1", 1); uint8_t universe2 = config.getUChar("universe-2", 1); @@ -40,6 +40,8 @@ void setup() IPAddress defaultGateway(192, 168, 1, 1); IPAddress gateway = config.getUInt("gateway", defaultGateway); + config.end(); + // WiFi stuff // WiFi.begin(ssid, pwd); WiFi.softAP(ssid, pwd); @@ -79,8 +81,8 @@ void setup() server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html"); - server.on("/config", HTTP_GET, [&, ipMethod, defaultIp, subnet, connection, gateway, ssid, pwd, direction1, universe1, direction2, universe2](AsyncWebServerRequest *request) - { onGetConfig(connection, ssid, pwd, ipMethod, defaultIp, subnet, gateway, universe1, direction1, universe2, direction2, request); }); + server.on("/config", HTTP_GET, [](AsyncWebServerRequest *request) + { onGetConfig(config, request); }); server.onRequestBody([](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { diff --git a/src/routes/config.cpp b/src/routes/config.cpp index 5c8d8a8..5589d5f 100644 --- a/src/routes/config.cpp +++ b/src/routes/config.cpp @@ -70,42 +70,33 @@ Direction parseDirection(uint8_t direction) #pragma endregion -void onGetConfig( - Connection connection, - String ssid, - String pwd, - IpMethod ipMethod, - uint32_t ip, - uint32_t subnet, - uint32_t gateway, - uint8_t universe1, - Direction direction1, - uint8_t universe2, - Direction direction2, - AsyncWebServerRequest *request) +void onGetConfig(Preferences config, AsyncWebServerRequest *request) { + config.begin("dmx", true); + + IPAddress defaultIp(192, 168, 1, 201); + IPAddress ip = config.getUInt("ip", defaultIp); + + IPAddress defaultSubnet(255, 255, 255, 0); + IPAddress subnet = config.getUInt("subnet", defaultSubnet); + + IPAddress defaultGateway(192, 168, 1, 1); + IPAddress gateway = config.getUInt("gateway", defaultGateway); + JsonDocument doc; + doc["connection"] = config.getUInt("connection", WiFiSta); + doc["ssid"] = config.getString("ssid", "artnet"); + doc["password"] = config.getString("password", "mbgmbgmbg"); + doc["ip-method"] = config.getUInt("ip-method"), Static; + doc["ip"] = ip.toString(); + doc["subnet"] = subnet.toString(); + doc["gateway"] = gateway.toString(); + doc["universe-1"] = config.getUChar("universe-1", 1); + doc["direction-1"] = config.getUInt("direction-1", Output); + doc["universe-2"] = config.getUChar("universe-2", 1); + doc["direction-2"] = config.getUInt("direction-2", Input); - IPAddress ipAddr = ip; - String ipString = ipAddr.toString(); - - ipAddr = subnet; - String subnetString = ipAddr.toString(); - - ipAddr = gateway; - String gatewayString = ipAddr.toString(); - - doc["connection"] = connection; - doc["ssid"] = ssid; - doc["password"] = pwd; - doc["ip-method"] = ipMethod; - doc["ip"] = ipString; - doc["subnet"] = subnetString; - doc["gateway"] = gatewayString; - doc["universe-1"] = universe1; - doc["direction-1"] = direction1; - doc["universe-2"] = universe2; - doc["direction-2"] = direction2; + config.end(); String jsonString; serializeJson(doc, jsonString); @@ -122,6 +113,8 @@ void onPutConfig(AsyncWebServerRequest *request, uint8_t *data, size_t len, size try { + config.begin("dmx", false); + IpMethod ipMethod = parseIpMethod(doc["ip-method"].as()); config.putUInt("ip-method", ipMethod); @@ -155,10 +148,13 @@ void onPutConfig(AsyncWebServerRequest *request, uint8_t *data, size_t len, size Direction direction2 = parseDirection(doc["direction-2"].as()); config.putInt("direction-2", direction2); + config.end(); + request->send(200); } catch (::std::invalid_argument &e) { + config.end(); request->send(400, "text/plain", e.what()); } } diff --git a/src/routes/config.h b/src/routes/config.h index d6d9963..918744d 100644 --- a/src/routes/config.h +++ b/src/routes/config.h @@ -31,19 +31,7 @@ enum Direction }; const uint8_t DIRECTION_SIZE = 2; -void onGetConfig( - Connection connection, - String ssid, - String pwd, - IpMethod ipMethod, - uint32_t ip, - uint32_t subnet, - uint32_t gateway, - uint8_t universe1, - Direction direction1, - uint8_t universe2, - Direction direction2, - AsyncWebServerRequest *request); +void onGetConfig(Preferences config, AsyncWebServerRequest *request); void onPutConfig(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total);