Skip to content
This repository was archived by the owner on Dec 14, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions ESP/ini/boards.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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}

Expand All @@ -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}

Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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}

Expand Down
4 changes: 2 additions & 2 deletions ESP/ini/dev_config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
31 changes: 6 additions & 25 deletions ESP/lib/src/network/api/baseAPI/baseAPI.cpp
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -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") {
Expand All @@ -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;
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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());
}
Expand Down Expand Up @@ -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") {
Expand Down Expand Up @@ -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);
Expand All @@ -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) {
Expand Down
64 changes: 27 additions & 37 deletions ESP/lib/src/network/api/baseAPI/baseAPI.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,55 +3,44 @@

//! Warning do not format this file with clang-format or it will break the code

#include <unordered_map>
#include <string>
#include <unordered_map>

#include <stdlib_noniso.h>

#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 <http_parser.h>

// constexpr int HTTP_GET = 0b00000001;
constexpr int HTTP_ANY = 0b01111111;

#include <Update.h>
#include <esp_int_wdt.h>
#include <esp_task_wdt.h>

#include <AsyncTCP.h>

#include <ESPAsyncWebServer.h>
#include <FS.h>
#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:
std::string api_url;
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:
Expand Down Expand Up @@ -100,33 +89,34 @@ class BaseAPI {
typedef std::unordered_map<std::string, WebRequestMethodComposite>
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
Loading