diff --git a/src/webserver.h b/src/webserver.h
index ca01466..90a9675 100644
--- a/src/webserver.h
+++ b/src/webserver.h
@@ -39,8 +39,12 @@ void initWebserver()
{
HtmlTag headTag{"head", content};
- HtmlTag titleTag{"title", content};
- content += "Bobbycar remote";
+ {
+ HtmlTag titleTag{"title", content};
+ content += "Bobbycar remote";
+ }
+
+ content += "";
}
{
@@ -76,7 +80,9 @@ void initWebserver()
if (i == selectedIndex)
content += " style=\"border: 1px solid black;\"";
- content += '>' + menuItem.text() + "";
+ content += ">" + menuItem.text() + "";
i++;
});
@@ -137,6 +143,44 @@ void initWebserver()
webServer.send(302, "text/html", "ok");
});
+ webServer.on("/triggerItem", HTTP_GET, [](){
+ if (!webServer.hasArg("index"))
+ {
+ webServer.send(400, "text/plain", "index parameter missing");
+ return;
+ }
+
+ if (!currentDisplay)
+ {
+ webServer.send(400, "text/plain", "currentDisplay is null");
+ return;
+ }
+
+ auto *menuDisplay = currentDisplay->asMenuDisplay();
+ if (!menuDisplay)
+ {
+ webServer.send(400, "text/plain", "currentDisplay is not a menu display");
+ return;
+ }
+
+ const auto indexStr = webServer.arg("index");
+
+ char *ptr;
+ const auto index = std::strtol(std::begin(indexStr), &ptr, 10);
+
+ if (ptr != std::end(indexStr))
+ {
+ webServer.send(400, "text/plain", "index could not be parsed");
+ return;
+ }
+
+ menuDisplay->itemPressed(index);
+
+ webServer.sendHeader("Connection", "close");
+ webServer.sendHeader("Location", "/");
+ webServer.send(302, "text/html", "ok");
+ });
+
webServer.on("/setValue", HTTP_GET, [](){
if (!webServer.hasArg("value"))
{
@@ -153,16 +197,16 @@ void initWebserver()
auto *changeValueDisplay = currentDisplay->asChangeValueDisplayInterface();
if (!changeValueDisplay)
{
- webServer.send(400, "text/plain", "currentDisplay is a change value display");
+ webServer.send(400, "text/plain", "currentDisplay is not a change value display");
return;
}
const auto valueStr = webServer.arg("value");
- char *egal;
- const auto value = std::strtol(std::begin(valueStr), &egal, 10);
+ char *ptr;
+ const auto value = std::strtol(std::begin(valueStr), &ptr, 10);
- if (egal != std::end(valueStr))
+ if (ptr != std::end(valueStr))
{
webServer.send(400, "text/plain", "value could not be parsed");
return;