-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathweb.h
126 lines (102 loc) · 3.41 KB
/
web.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>
/*\
cd ~/.arduino15/packages/esp32/hardware/esp32/1.0.4/libraries
rm -Rf WebServer
svn checkout https://github.com/espressif/arduino-esp32/trunk/libraries/WebServer
\*/
#include <uri/UriBraces.h>
#include <uri/UriRegex.h>
WebServer server(80);
bool webServerRunning = false;
const char* indexPage = ""
"<!doctype html>"
"<html>"
"<head>"
"<meta charset='utf-8' />"
"<link rel='stylesheet' href='/index.css' />"
"<style>"
"input[type=range] {"
" transform: translate(0.5rem, 160px) rotate( -90deg );"
" transform-origin: center left;"
" position: absolute;"
"}"
".range-holder {"
" display: inline-block;"
" min-width: 5em;"
" text-align: center;"
" font-size: .55em;"
" font-family: arial;"
"}"
"[data-freq]::after {"
" content: attr( data-freq );"
"}"
"</style>"
"</head>"
"<body>"
"<div>"
" <div class='range-holder' data-freq='63 Hz' ><input type='range' value='%d'></div>"
" <div class='range-holder' data-freq='160 Hz' ><input type='range' value='%d'></div>"
" <div class='range-holder' data-freq='400 Hz' ><input type='range' value='%d'></div>"
" <div class='range-holder' data-freq='1 KHz' ><input type='range' value='%d'></div>"
" <div class='range-holder' data-freq='2.5KHz' ><input type='range' value='%d'></div>"
" <div class='range-holder' data-freq='6.25 KHz'><input type='range' value='%d'></div>"
" <div class='range-holder' data-freq='16 KHz' ><input type='range' value='%d'></div>"
"</div>"
"<script>"
"const rangeHolders = document.querySelectorAll('input[type=range]');"
"function rangeChangedHandler(event) {"
" const apiurl = '/level/' + event.target.getAttribute('data-index' ) + '/' + event.target.value;"
" top.location = apiurl;"
"};"
"rangeHolders.forEach( function( rangeHolder, index ) {"
" rangeHolder.setAttribute( 'data-index', index );"
" rangeHolder.addEventListener( 'change', rangeChangedHandler, false );"
"});"
"</script>"
"</body>"
"</html>"
;
int getPref( int band, const char* name="band" );
void setPref( int band, int value, const char* name="band" );
void sendForm() {
char temp[2048];
//const char* tpl = "Band: %2d %2d %2d %2d %2d %2d %2d\n---------------------------------\nGain: %2d %2d %2d %2d %2d %2d %2d\n";
snprintf( temp, 2048, indexPage,
//0, 1, 2, 3, 4, 5, 6,
getPref( 0 ),
getPref( 1 ),
getPref( 2 ),
getPref( 3 ),
getPref( 4 ),
getPref( 5 ),
getPref( 6 )
);
server.send(200, "text/html", temp );
}
void handleRoot() {
int band = atoi( server.pathArg(0).c_str() );
int value = atoi( server.pathArg(1).c_str() );
if( value > 99 ) value = 99;
//setSpectrumFactor( band, value );
setPref( band, value );
//sendForm();
server.sendHeader("Location", "/", true);
server.send(302, "text/plain", ""); // Empty content inhibits Content-length header so we have to close the socket ourselves.
}
void handleNotFound() {
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}