diff --git a/.gitignore b/.gitignore
index 89cc49c..3b8da3a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,2 @@
.pio
-.vscode/.browse.c_cpp.db*
-.vscode/c_cpp_properties.json
-.vscode/launch.json
-.vscode/ipch
+.vscode
\ No newline at end of file
diff --git a/include/pages.h b/include/pages.h
index 74f0175..40b2b62 100644
--- a/include/pages.h
+++ b/include/pages.h
@@ -11,5 +11,6 @@
void sendResponseTrailer(AsyncResponseStream *response);
void sendButton(AsyncResponseStream *response, const char *title, const char *action, const char *css = "");
void sendTableRow(AsyncResponseStream *response, const char *name, uint32_t value);
+ void sendDebugForm(AsyncResponseStream *response, String slaveId, String reg, String function);
#endif /* PAGES_H */
\ No newline at end of file
diff --git a/src/pages.cpp b/src/pages.cpp
index a8f4012..d8555a2 100644
--- a/src/pages.cpp
+++ b/src/pages.cpp
@@ -7,6 +7,7 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
sendResponseHeader(response, "Main");
sendButton(response, "Status", "status");
sendButton(response, "Config", "config");
+ sendButton(response, "Debug", "debug");
sendButton(response, "Reboot", "reboot", "r");
sendResponseTrailer(response);
request->send(response);
@@ -54,7 +55,7 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
""
""
"
");
- response->printf("", config->getTcpPort());
+ response->printf("", config->getTcpPort());
response->print(" | "
""
""
@@ -70,7 +71,7 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
""
""
"");
- response->printf("", config->getDataBits());
+ response->printf("", config->getDataBits());
response->print(" | "
"
"
""
@@ -141,6 +142,49 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
}
request->redirect("/");
});
+ server->on("/debug", HTTP_GET, [](AsyncWebServerRequest *request){
+ dbgln("[webserver] GET /debug");
+ auto *response = request->beginResponseStream("text/html");
+ sendResponseHeader(response, "Debug");
+ sendDebugForm(response, "1", "1", "3");
+ sendButton(response, "Back", "/");
+ sendResponseTrailer(response);
+ request->send(response);
+ });
+ server->on("/debug", HTTP_POST, [rtu](AsyncWebServerRequest *request){
+ dbgln("[webserver] POST /debug");
+ String slaveId = "1";
+ if (request->hasParam("slave", true)){
+ slaveId = request->getParam("slave", true)->value();
+ }
+ String reg = "1";
+ if (request->hasParam("reg", true)){
+ reg = request->getParam("reg", true)->value();
+ }
+ String func = "3";
+ if (request->hasParam("func", true)){
+ func = request->getParam("func", true)->value();
+ }
+ ModbusMessage answer = rtu->syncRequest(0xdeadbeef, slaveId.toInt(), func.toInt(), reg.toInt(), 1);
+ auto *response = request->beginResponseStream("text/html");
+ sendResponseHeader(response, "Debug");
+ if (answer.getError() == SUCCESS){
+ auto count = answer[2];
+ response->print("Answer: 0x");
+ for (size_t i = 0; i < count; i++)
+ {
+ response->printf("%02x", answer[i + 3]);
+ }
+ response->print("");
+ }
+ else{
+ response->printf("Error: %#02x", answer.getError());
+ }
+ sendDebugForm(response, slaveId, reg, func);
+ sendButton(response, "Back", "/");
+ sendResponseTrailer(response);
+ request->send(response);
+ });
server->on("/favicon.ico", [](AsyncWebServerRequest *request){
dbgln("[webserver] GET /favicon.ico");
request->send(204);//TODO add favicon
@@ -185,6 +229,9 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
"input{"
"width:100%;"
"}"
+ ".e{"
+ "color:red;"
+ "}"
);
response->addHeader("ETag", __DATE__ "" __TIME__);
request->send(response);
@@ -228,4 +275,48 @@ void sendTableRow(AsyncResponseStream *response, const char *name, uint32_t valu
"%s: | "
"%d | "
"
", name, value);
+}
+
+void sendDebugForm(AsyncResponseStream *response, String slaveId, String reg, String function){
+ response->print(""
+ "");
+ response->print("");
}
\ No newline at end of file