117 lines
2.9 KiB
C++
117 lines
2.9 KiB
C++
#include <WebServer.h>
|
|
#include <cmath>
|
|
#include "server.h"
|
|
#include "mode/Mode.h"
|
|
#include "mode.h"
|
|
#include "display.h"
|
|
#include "config.h"
|
|
|
|
WebServer server(80);
|
|
|
|
void web_index();
|
|
|
|
void web_setMode();
|
|
|
|
void web_brighter();
|
|
|
|
void web_darker();
|
|
|
|
void web_faster();
|
|
|
|
void web_slower();
|
|
|
|
void web_fps_on();
|
|
|
|
void web_fps_off();
|
|
|
|
void redirect();
|
|
|
|
void server_setup() {
|
|
server.on("/", web_index);
|
|
server.on("/mode", web_setMode);
|
|
server.on("/brighter", web_brighter);
|
|
server.on("/darker", web_darker);
|
|
server.on("/faster", web_faster);
|
|
server.on("/slower", web_slower);
|
|
server.on("/fps/on", web_fps_on);
|
|
server.on("/fps/off", web_fps_off);
|
|
server.begin();
|
|
}
|
|
|
|
void server_loop() {
|
|
server.handleClient();
|
|
}
|
|
|
|
void web_index() {
|
|
server.setContentLength(CONTENT_LENGTH_UNKNOWN);
|
|
server.send(200, "text/html", "");
|
|
server.sendContent(R"(<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />)");
|
|
server.sendContent(R"(<meta http-equiv="Pragma" content="no-cache" />)");
|
|
server.sendContent(R"(<meta http-equiv="Expires" content="0" />)");
|
|
|
|
server.sendContent(R"(<a href="/mode?mode=0">NONE</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=1">BORDER</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=2">CLOCK</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=3">GAME_OF_LIFE_BLACK_WHITE</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=4">GAME_OF_LIFE_GRAYSCALE</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=5">GAME_OF_LIFE_COLOR_FADE</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=6">GAME_OF_LIFE_RANDOM_COLOR</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=7">PONG</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=8">SPACE_INVADERS</a><br>)");
|
|
server.sendContent(R"(<a href="/mode?mode=9">NEW_YEAR</a><br>)");
|
|
|
|
server.sendContent(R"(Helligkeit: <a href="/brighter">+</a> / <a href="/darker">-</a><br>)");
|
|
server.sendContent(R"(Geschwindigkeit: <a href="/faster">+</a> / <a href="/slower">-</a><br>)");
|
|
server.sendContent(R"(FPS: <a href="/fps/on">EIN</a> / <a href="/fps/off">AUS</a><br>)");
|
|
server.client().flush();
|
|
}
|
|
|
|
void web_setMode() {
|
|
if (!server.hasArg("mode")) {
|
|
server.send(400, "text/plain", "Missing 'mode'");
|
|
return;
|
|
}
|
|
double value = strtod(server.arg("mode").c_str(), nullptr);
|
|
if (isnan(value)) {
|
|
server.send(400, "text/plain", "'mode' not a number");
|
|
return;
|
|
}
|
|
setMode((ModeId) value);
|
|
redirect();
|
|
}
|
|
|
|
void web_brighter() {
|
|
setBrightness(display.getBrightness() + 10);
|
|
redirect();
|
|
}
|
|
|
|
void web_darker() {
|
|
setBrightness(display.getBrightness() - 10);
|
|
redirect();
|
|
}
|
|
|
|
void web_faster() {
|
|
setSpeed(config.speed * 1.1);
|
|
redirect();
|
|
}
|
|
|
|
void web_slower() {
|
|
setSpeed(config.speed / 1.1);
|
|
redirect();
|
|
}
|
|
|
|
void web_fps_on() {
|
|
display.fpsShow = true;
|
|
redirect();
|
|
}
|
|
|
|
void web_fps_off() {
|
|
display.fpsShow = false;
|
|
redirect();
|
|
}
|
|
|
|
void redirect() {
|
|
server.sendHeader("location", "/");
|
|
server.send(302, "text/plain", "ok");
|
|
}
|