131 lines
4.0 KiB
C++
Raw Normal View History

2022-01-10 00:55:04 +01:00
#include "webui.h"
2022-01-07 21:02:27 +01:00
AsyncWebServer webServer(80);
2022-01-09 20:51:16 +01:00
const char *PARAM_MESSAGE = "message";
2022-01-07 21:02:27 +01:00
String processor(const String &var);
2022-02-15 20:58:32 +01:00
void WebserverPOST_Callback(AsyncWebServerRequest *request);
void WebserverNotFound_Callback(AsyncWebServerRequest *request);
2022-02-15 20:58:32 +01:00
void Webserver_Callback(AsyncWebServerRequest *request);
void initWebUI()
2022-01-08 03:14:26 +01:00
{
if (!LittleFS.begin())
2022-01-08 03:14:26 +01:00
{
Serial.println("An Error has occurred while mounting LittleFS");
return;
2022-01-09 20:51:16 +01:00
}
2022-02-15 20:58:32 +01:00
webServer.serveStatic("/static/", LittleFS, "/static/");
webServer.onNotFound(WebserverNotFound_Callback);
2022-02-15 20:58:32 +01:00
webServer.on("/index.htm", HTTP_GET, Webserver_Callback);
webServer.on("/", HTTP_POST, WebserverPOST_Callback);
2022-01-09 20:51:16 +01:00
webServer.begin();
2022-01-07 21:02:27 +01:00
}
void UpdateWebUI()
{
}
String processor(const String &var)
2022-01-08 03:14:26 +01:00
{
2022-02-15 20:58:32 +01:00
if (var == "TANK_REMAIN_CAPACITY")
return String((PersistenceData.tankRemain_µl / 10) / LubeConfig.tankCapacity_ml);
if (var == "LUBE_DISTANCE_NORMAL")
return String(LubeConfig.DistancePerLube_Default);
if (var == "LUBE_DISTANCE_RAIN")
return String(LubeConfig.DistancePerLube_Rain);
if (var == "TANK_CAPACITY")
return String(LubeConfig.tankCapacity_ml);
if (var == "AMOUNT_PER_DOSE")
return String(LubeConfig.amountPerDose_µl);
if (var == "TANK_REMIND")
return String(LubeConfig.TankRemindAtPercentage);
if (var == "PULSE_PER_REV")
return String(LubeConfig.PulsePerRevolution);
if (var == "TIRE_WIDTH_MM")
return String(LubeConfig.TireWidth_mm);
if (var == "TIRE_RATIO")
return String(LubeConfig.TireWidthHeight_Ratio);
if (var == "RIM_DIAMETER")
return String(LubeConfig.RimDiameter_Inch);
if (var == "DISTANCE_PER_REV")
return String(LubeConfig.DistancePerRevolution_mm);
if (var == "BLEEDING_PULSES")
return String(LubeConfig.BleedingPulses);
if (var == "SPEED_SOURCE")
return String(SpeedSourceString[LubeConfig.SpeedSource]);
if (var == "GPS_BAUD")
return String(GPSBaudRateString[LubeConfig.GPSBaudRate]);
#if PCB_REVISION == 13
if (var == "CAN_SOURCE")
return String(CANSourceString[LubeConfig.CANSource]);
#endif
if (var == "CONFIG_CHECKSUM")
return String(LubeConfig.checksum, 16);
if (var == "WRITE_CYCLE_COUNT")
return String(PersistenceData.writeCycleCounter);
if (var == "TANK_REMAIN_UL")
return String(PersistenceData.tankRemain_µl);
if (var == "TRAVEL_DISTANCE_HIGHRES")
return String(PersistenceData.TravelDistance_highRes);
if (var == "PERSISTANCE_CHECKSUM")
return String(PersistenceData.checksum, 16);
if (var == "SHOW_IMPULSE_SETTINGS")
return LubeConfig.SpeedSource == SOURCE_IMPULSE ? "" : "hidden";
if (var == "SHOW_CAN_SETTINGS")
return LubeConfig.SpeedSource == SOURCE_CAN ? "" : "hidden";
if (var == "SHOW_GPS_SETTINGS")
return LubeConfig.SpeedSource == SOURCE_GPS ? "" : "hidden";
if (var == "SOURCE_SELECT_OPTIONS")
{
String temp;
for (uint32_t i = 0; i < SpeedSourceString_Elements; i++)
temp = temp + "<option value=\"" + i + "\">" + SpeedSourceString[i] + "</option>";
return temp;
}
if (var == "CANSOURCE_SELECT_OPTIONS")
{
String temp;
for (uint32_t i = 0; i < CANSourceString_Elements; i++)
temp = temp + "<option value=\"" + i + "\">" + CANSourceString[i] + "</option>";
return temp;
}
if (var == "GPSBAUD_SELECT_OPTIONS")
{
String temp;
for (uint32_t i = 0; i < GPSBaudRateString_Elements; i++)
temp = temp + "<option value=\"" + i + "\">" + GPSBaudRateString[i] + "</option>";
return temp;
}
2022-01-09 20:51:16 +01:00
if (var == "PLACEHOLDER")
return "placeholder";
2022-01-09 20:51:16 +01:00
return String();
}
2022-02-15 20:58:32 +01:00
void Webserver_Callback(AsyncWebServerRequest *request)
{
request->send(LittleFS, "/index.htm", String(), false, processor);
}
void WebserverPOST_Callback(AsyncWebServerRequest *request)
{
String message;
if (request->hasParam(PARAM_MESSAGE, true))
{
message = request->getParam(PARAM_MESSAGE, true)->value();
2022-02-15 20:58:32 +01:00
Serial.printf("POST: %s", message.c_str());
}
2022-01-08 03:14:26 +01:00
}
2022-01-12 01:10:21 +01:00
void WebserverNotFound_Callback(AsyncWebServerRequest *request)
2022-01-12 01:10:21 +01:00
{
request->send(404, "text/plain", "Not found");
2022-01-12 01:10:21 +01:00
}