diff --git a/ESP/ini/boards.ini b/ESP/ini/boards.ini index 868b7fcc..68220fcd 100644 --- a/ESP/ini/boards.ini +++ b/ESP/ini/boards.ini @@ -103,6 +103,7 @@ build_type = debug build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=4 -DDEBUG_MODE=1 + -DARDUINO_USB_CDC_ON_BOOT=1 -DSERIAL_MANAGER_USE_HIGHER_FREQUENCY ${pinoutsESPS3WROVER.build_flags} upload_flags = --no-stub @@ -114,6 +115,7 @@ build_type = release build_flags = ${env.build_flags} -DDEBUG_MODE=0 -DCORE_DEBUG_LEVEL=1 + -DARDUINO_USB_CDC_ON_BOOT=1 -DSERIAL_MANAGER_USE_HIGHER_FREQUENCY ${pinoutsESPS3WROVER.build_flags} upload_flags = --no-stub @@ -150,6 +152,7 @@ build_type = debug build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=4 -DDEBUG_MODE=1 + -DARDUINO_USB_CDC_ON_BOOT=1 -DSERIAL_MANAGER_USE_HIGHER_FREQUENCY ${pinoutsESPS3WROOM.build_flags} @@ -159,6 +162,7 @@ build_type = release build_flags = ${env.build_flags} -DDEBUG_MODE=0 -DCORE_DEBUG_LEVEL=1 + -DARDUINO_USB_CDC_ON_BOOT=1 -DSERIAL_MANAGER_USE_HIGHER_FREQUENCY ${pinoutsESPS3WROOM.build_flags} @@ -199,6 +203,7 @@ build_type = debug build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=4 -DDEBUG_MODE=1 + -DARDUINO_USB_CDC_ON_BOOT=1 -DSERIAL_MANAGER_USE_HIGHER_FREQUENCY ${pinoutSWROOMBABBLES3.build_flags} upload_flags = --no-stub @@ -214,6 +219,7 @@ build_type = debug build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=1 -DDEBUG_MODE=0 + -DARDUINO_USB_CDC_ON_BOOT=1 -DSERIAL_MANAGER_USE_HIGHER_FREQUENCY ${pinoutSWROOMBABBLES3.build_flags} upload_flags = --no-stub @@ -261,8 +267,6 @@ build_type = debug build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=4 -DDEBUG_MODE=1 - #-DARDUINO_USB_MODE=1 - #-DARDUINO_USB_CDC_ON_BOOT=1 -DSERIAL_MANAGER_USE_HIGHER_FREQUENCY ${pinoutsESPS3XIAOSENSE.build_flags} diff --git a/ESP/ini/dev_config.ini b/ESP/ini/dev_config.ini index 236c83be..bf3366c6 100644 --- a/ESP/ini/dev_config.ini +++ b/ESP/ini/dev_config.ini @@ -18,14 +18,14 @@ monitor_filters = esp32_exception_decoder board_build.partitions = min_spiffs.csv ;build_unflags = -Os ; disable optimization for size +lib_compat_mode = strict lib_ldf_mode = deep+ ;115200 is used for compatability - if you are on windows and want the code to flash faster use 921600 upload_speed = 921600 lib_deps = # https://github.com/espressif/esp32-camera esp32-camera - https://github.com/me-no-dev/ESPAsyncWebServer.git - https://github.com/me-no-dev/AsyncTCP.git + ESP32Async/ESPAsyncWebServer @ 3.6.0 https://github.com/bblanchon/ArduinoJson.git extra_scripts = pre:tools/customname.py diff --git a/ESP/lib/src/network/api/baseAPI/baseAPI.cpp b/ESP/lib/src/network/api/baseAPI/baseAPI.cpp index d3ce8087..d8461aed 100644 --- a/ESP/lib/src/network/api/baseAPI/baseAPI.cpp +++ b/ESP/lib/src/network/api/baseAPI/baseAPI.cpp @@ -1,13 +1,5 @@ #include "baseAPI.hpp" -//! These have to be called before the constructor of the class because they are -//! static C++ 11 does not have inline variables, sadly. So we have to do this. -// const char *BaseAPI::MIMETYPE_HTML{"text/html"}; -// const char *BaseAPI::MIMETYPE_CSS{"text/css"}; -// const char *BaseAPI::MIMETYPE_JS{"application/javascript"}; -// const char *BaseAPI::MIMETYPE_PNG{"image/png"}; -// const char *BaseAPI::MIMETYPE_JPG{"image/jpeg"}; -// const char *BaseAPI::MIMETYPE_ICO{"image/x-icon"}; const char* BaseAPI::MIMETYPE_JSON{"application/json"}; BaseAPI::BaseAPI(ProjectConfig& projectConfig, @@ -79,7 +71,7 @@ void BaseAPI::setWiFi(AsyncWebServerRequest* request) { log_d("Number of Params: %d", params); for (int i = 0; i < params; i++) { - AsyncWebParameter* param = request->getParam(i); + const AsyncWebParameter* param = request->getParam(i); if (param->name() == "networkName") { networkName.assign(param->value().c_str()); } else if (param->name() == "ssid") { @@ -102,17 +94,6 @@ void BaseAPI::setWiFi(AsyncWebServerRequest* request) { projectConfig.setWifiConfig(networkName, ssid, password, channel, power, adhoc, true); - /* if (WiFiStateManager->getCurrentState() == - WiFiState_e::WiFiState_ADHOC) - { - projectConfig.setAPWifiConfig(ssid, password, &channel, adhoc, - true); - } - else - { - - } */ - request->send(200, MIMETYPE_JSON, "{\"msg\":\"Done. Wifi Creds have been set.\"}"); break; @@ -178,7 +159,7 @@ void BaseAPI::setDeviceConfig(AsyncWebServerRequest* request) { int ota_port; for (int i = 0; i < params; i++) { - AsyncWebParameter* param = request->getParam(i); + const AsyncWebParameter* param = request->getParam(i); if (param->name() == "hostname") { std::string result = param->value().c_str(); @@ -216,7 +197,7 @@ void BaseAPI::setWiFiTXPower(AsyncWebServerRequest* request) { uint8_t txPower = 0; for (int i = 0; i < params; i++) { - AsyncWebParameter* param = request->getParam(i); + const AsyncWebParameter* param = request->getParam(i); if (param->name() == "txpower" || param->name() == "txPower") { txPower = atoi(param->value().c_str()); } @@ -275,7 +256,7 @@ void BaseAPI::setCamera(AsyncWebServerRequest* request) { //! be set in a specific order This means the order of the URL params does //! not matter for (int i = 0; i < params; i++) { - AsyncWebParameter* param = request->getParam(i); + const AsyncWebParameter* param = request->getParam(i); if (param->name() == "framesize") { temp_camera_framesize = (uint8_t)param->value().toInt(); } else if (param->name() == "vflip") { @@ -392,7 +373,6 @@ void BaseAPI::beginOTA() { "{\"id\": \"" + _id + "\", \"hardware\": \"ESP32\"}"); }); - // Note: HTT_GET server.on("/update", 0b00000001, [&](AsyncWebServerRequest* request) { log_d("[DEBUG] Free Heap: %d", ESP.getFreeHeap()); checkAuthentication(request, login, password); @@ -406,7 +386,8 @@ void BaseAPI::beginOTA() { response->addHeader("Content-Encoding", "gzip"); request->send(response); }); - // Note: HTT_POST + + // HTTP_POST server.on( "/update", 0b00000010, [&](AsyncWebServerRequest* request) { diff --git a/ESP/lib/src/network/api/baseAPI/baseAPI.hpp b/ESP/lib/src/network/api/baseAPI/baseAPI.hpp index 4b6a544c..0c3923b3 100644 --- a/ESP/lib/src/network/api/baseAPI/baseAPI.hpp +++ b/ESP/lib/src/network/api/baseAPI/baseAPI.hpp @@ -3,7 +3,6 @@ //! Warning do not format this file with clang-format or it will break the code -#include #include #include @@ -11,16 +10,14 @@ #define WEBSERVER_H -/* #define XHTTP_GET 0b00000001; -#define XHTTP_POST 0b00000010; -#define XHTTP_DELETE 0b00000100; -#define XHTTP_PUT 0b00001000; -#define XHTTP_PATCH 0b00010000; -#define XHTTP_HEAD 0b00100000; -#define XHTTP_OPTIONS 0b01000000; -#define XHTTP_ANY 0b01111111; */ +// hack, we have to include it JUST so the macro executes and defines HTTP_* +// methods cause it's beging included later in streamServer.hpp, but then the +// macro executes too late and tries to redefine the methods, failing. but if we +// don't include it here, then ESPAsyncWebServer fails to compile due to +// WEBSERVER_H which has to be set because if it isn't, ESPAsyncWebServer will +// define the methods and thus the circus continues +#include -// constexpr int HTTP_GET = 0b00000001; constexpr int HTTP_ANY = 0b01111111; #include @@ -28,18 +25,15 @@ constexpr int HTTP_ANY = 0b01111111; #include #include - #include #include #include "Hash.h" - -#include "data/utilities/network_utilities.hpp" -#include "tasks/tasks.hpp" - #include "data/StateManager/StateManager.hpp" #include "data/config/project_config.hpp" +#include "data/utilities/network_utilities.hpp" #include "elegantWebpage.h" #include "io/camera/cameraHandler.hpp" +#include "tasks/tasks.hpp" class BaseAPI { protected: @@ -47,11 +41,6 @@ class BaseAPI { bool _authRequired; static const char* MIMETYPE_HTML; - /* static const char *MIMETYPE_CSS; */ - /* static const char *MIMETYPE_JS; */ - /* static const char *MIMETYPE_PNG; */ - /* static const char *MIMETYPE_JPG; */ - /* static const char *MIMETYPE_ICO; */ static const char* MIMETYPE_JSON; protected: @@ -100,33 +89,34 @@ class BaseAPI { typedef std::unordered_map networkMethodsMap_t; - ProjectConfig &projectConfig; - /// @brief Local instance of the AsyncWebServer - so that we dont need to use new and delete - AsyncWebServer server; + ProjectConfig& projectConfig; + /// @brief Local instance of the AsyncWebServer - so that we dont need to use + /// new and delete + AsyncWebServer server; #ifndef SIM_ENABLED - CameraHandler &camera; + CameraHandler& camera; #endif // SIM_ENABLED -public : - BaseAPI(ProjectConfig& projectConfig, + public: + BaseAPI(ProjectConfig& projectConfig, #ifndef SIM_ENABLED - CameraHandler& camera, + CameraHandler& camera, #endif // SIM_ENABLED - const std::string& api_url, + const std::string& api_url, #ifndef SIM_ENABLED - int port = 81 + int port = 81 #else - int port = 80 + int port = 80 #endif ); - virtual ~BaseAPI(); - virtual void begin(); - void checkAuthentication(AsyncWebServerRequest* request, - const char* login, - const char* password); - void beginOTA(); - void notFound(AsyncWebServerRequest* request) const; + virtual ~BaseAPI(); + virtual void begin(); + void checkAuthentication(AsyncWebServerRequest* request, + const char* login, + const char* password); + void beginOTA(); + void notFound(AsyncWebServerRequest* request) const; }; #endif // BASEAPI_HPP