#pragma once #include "esp_http_server.h" class WebServer { public: static WebServer& instance(); void start(); void stop(); bool isRunning() const { return server_ != nullptr; } private: WebServer() = default; ~WebServer(); WebServer(const WebServer&) = delete; WebServer& operator=(const WebServer&) = delete; httpd_handle_t server_ = nullptr; // HTTP handlers static esp_err_t rootHandler(httpd_req_t* req); static esp_err_t staticFileHandler(httpd_req_t* req); static esp_err_t imagesHandler(httpd_req_t* req); static esp_err_t getConfigHandler(httpd_req_t* req); static esp_err_t postConfigHandler(httpd_req_t* req); static esp_err_t postSaveHandler(httpd_req_t* req); static esp_err_t postResetHandler(httpd_req_t* req); static esp_err_t getKnxAddressesHandler(httpd_req_t* req); static esp_err_t postUsbModeHandler(httpd_req_t* req); static esp_err_t getStatusHandler(httpd_req_t* req); // Helper functions static const char* getContentType(const char* filepath); static esp_err_t sendFile(httpd_req_t* req, const char* filepath); };