moved loading of config to request handler

This commit is contained in:
RaffaelW 2024-11-03 21:18:33 +01:00
parent fb142d0491
commit 366585b263
3 changed files with 35 additions and 49 deletions

View file

@ -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)
{

View file

@ -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<uint8_t>());
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<uint8_t>());
config.putInt("direction-2", direction2);
config.end();
request->send(200);
}
catch (::std::invalid_argument &e)
{
config.end();
request->send(400, "text/plain", e.what());
}
}

View file

@ -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);