From 62e86aa4c2e08a2f5a18b97d5631fd267a8cfed3 Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Wed, 31 Jul 2019 19:42:53 +0300 Subject: [PATCH] a basic web server --- Firmware/EggbotWireless/include/Config.h | 3 ++- Firmware/EggbotWireless/include/Globals.h | 9 ++++++++- Firmware/EggbotWireless/include/WebAPI.h | 19 +++++++++++++++++++ Firmware/EggbotWireless/src/ConfigManager.cpp | 3 ++- Firmware/EggbotWireless/src/Globals.cpp | 3 +++ Firmware/EggbotWireless/src/WebAPI.cpp | 18 ++++++++++++++++++ Firmware/EggbotWireless/src/main.cpp | 12 ++++++++++-- 7 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 Firmware/EggbotWireless/include/WebAPI.h create mode 100644 Firmware/EggbotWireless/src/WebAPI.cpp diff --git a/Firmware/EggbotWireless/include/Config.h b/Firmware/EggbotWireless/include/Config.h index d50fc20..27f4128 100644 --- a/Firmware/EggbotWireless/include/Config.h +++ b/Firmware/EggbotWireless/include/Config.h @@ -6,6 +6,7 @@ constexpr int i2cTimeout{10}, i2cTimeoutTries{10}; constexpr int lastStsTTL{10}; constexpr unsigned long powerTimeout{20000}, powerStartupDelay{100}; -constexpr const char *defSSID{"eggbot"}, *defPass{"eggbotwi"}; +constexpr const char *defSSID{"eggbot"}, *defPass{"eggbotwi"}, + *defName{"eggbot"}; #endif // CONFIG_H \ No newline at end of file diff --git a/Firmware/EggbotWireless/include/Globals.h b/Firmware/EggbotWireless/include/Globals.h index 4d5db96..2466460 100644 --- a/Firmware/EggbotWireless/include/Globals.h +++ b/Firmware/EggbotWireless/include/Globals.h @@ -2,5 +2,12 @@ #define GLOBALS_H #include +#include -#endif // GLOBALS_H \ No newline at end of file +#include "LocalCommand.h" +#include "common/Commands.h" + +extern std::queue commandQueue; +extern std::queue lCommandQueue; + +#endif // GLOBALS_H \ No newline at end of file diff --git a/Firmware/EggbotWireless/include/WebAPI.h b/Firmware/EggbotWireless/include/WebAPI.h new file mode 100644 index 0000000..526e9b5 --- /dev/null +++ b/Firmware/EggbotWireless/include/WebAPI.h @@ -0,0 +1,19 @@ +#ifndef WEB_API_H +#define WEB_API_H + +#include +#include + +class WebAPI { + private: + void handleNotFound(); + + public: + WebAPI(); + void init(); + void loopRoutine(); +}; + +extern WebAPI webApi; + +#endif // WEB_API_H \ No newline at end of file diff --git a/Firmware/EggbotWireless/src/ConfigManager.cpp b/Firmware/EggbotWireless/src/ConfigManager.cpp index b7a79bf..dd81038 100644 --- a/Firmware/EggbotWireless/src/ConfigManager.cpp +++ b/Firmware/EggbotWireless/src/ConfigManager.cpp @@ -4,7 +4,8 @@ #include "ConfigManager.h" const std::unordered_map defaults{ - {{"wifiMode", "ap"}, + {{"name", defName}, + {"wifiMode", "ap"}, {"wifiSSID", defSSID}, {"wifiPass", defPass}, {"defRpm", "2"}}}; diff --git a/Firmware/EggbotWireless/src/Globals.cpp b/Firmware/EggbotWireless/src/Globals.cpp index 3fb64a5..ab642fd 100644 --- a/Firmware/EggbotWireless/src/Globals.cpp +++ b/Firmware/EggbotWireless/src/Globals.cpp @@ -1 +1,4 @@ #include "Globals.h" + +std::queue commandQueue; +std::queue lCommandQueue; diff --git a/Firmware/EggbotWireless/src/WebAPI.cpp b/Firmware/EggbotWireless/src/WebAPI.cpp new file mode 100644 index 0000000..c085fc7 --- /dev/null +++ b/Firmware/EggbotWireless/src/WebAPI.cpp @@ -0,0 +1,18 @@ +#include "WebAPI.h" + +ESP8266WebServer server(80); + +WebAPI::WebAPI() {} + +void WebAPI::handleNotFound() { + server.send(404, "text/plain", "File Not Found\n\n"); +} + +void WebAPI::init() { + server.onNotFound(std::bind(&WebAPI::handleNotFound, this)); + server.begin(); +} + +void WebAPI::loopRoutine() { server.handleClient(); } + +WebAPI webApi; \ No newline at end of file diff --git a/Firmware/EggbotWireless/src/main.cpp b/Firmware/EggbotWireless/src/main.cpp index d9d45f0..1813427 100644 --- a/Firmware/EggbotWireless/src/main.cpp +++ b/Firmware/EggbotWireless/src/main.cpp @@ -4,6 +4,9 @@ #include #include #include +#include +#include + #include "ConfigManager.h" #include "Executor.h" #include "GCodeParser.h" @@ -11,10 +14,9 @@ #include "LocalExecutor.h" #include "Power.h" #include "WiFiManager.h" +#include "WebAPI.h" #include "common/Commands.h" -std::queue commandQueue; -std::queue lCommandQueue; bool shouldPrintSts; void setup() { @@ -23,6 +25,9 @@ void setup() { power.enable12v(); configManager.load(); wifiManager.init(); + + MDNS.begin(configManager.get("name").c_str()); + webApi.init(); } void printSts(Status status) { @@ -89,4 +94,7 @@ void commandsLoop() { void loop() { serialLoop(); commandsLoop(); + + MDNS.update(); + webApi.loopRoutine(); }