🪡 Moves server on robot facade

This commit is contained in:
Rune Harlyk
2024-11-16 00:31:02 +01:00
parent ad86bc5fd4
commit d8ca913188
3 changed files with 54 additions and 57 deletions
+2 -2
View File
@@ -43,7 +43,7 @@
class Spot { class Spot {
public: public:
Spot(PsychicHttpServer *server); Spot();
void initialize(); void initialize();
@@ -75,7 +75,7 @@ class Spot {
} }
private: private:
PsychicHttpServer *_server; PsychicHttpServer _server;
WiFiService _wifiService; WiFiService _wifiService;
APService _apService; APService _apService;
EventSocket _socket; EventSocket _socket;
+1 -4
View File
@@ -1,9 +1,6 @@
#include <spot.h> #include <spot.h>
#include <PsychicHttpServer.h>
DRAM_ATTR PsychicHttpServer server; DRAM_ATTR Spot spot;
DRAM_ATTR Spot spot(&server);
void IRAM_ATTR SpotControlLoopEntry(void*) { void IRAM_ATTR SpotControlLoopEntry(void*) {
TickType_t xLastWakeTime = xTaskGetTickCount(); TickType_t xLastWakeTime = xTaskGetTickCount();
+51 -51
View File
@@ -2,12 +2,12 @@
static const char *TAG = "Spot"; static const char *TAG = "Spot";
Spot::Spot(PsychicHttpServer *server) Spot::Spot()
: :
#if FT_ENABLED(USE_MOTION) #if FT_ENABLED(USE_MOTION)
_motionService(&_servoController), _motionService(&_servoController)
#endif #endif
_server(server) { {
} }
void Spot::initialize() { void Spot::initialize() {
@@ -30,77 +30,77 @@ void Spot::initialize() {
} }
void Spot::setupServer() { void Spot::setupServer() {
_server->config.max_uri_handlers = _numberEndpoints; _server.config.max_uri_handlers = _numberEndpoints;
_server->maxUploadSize = _maxFileUpload; _server.maxUploadSize = _maxFileUpload;
_server->listen(_port); _server.listen(_port);
// WIFI // WIFI
_server->on("/api/wifi/scan", HTTP_GET, _wifiService.handleScan); _server.on("/api/wifi/scan", HTTP_GET, _wifiService.handleScan);
_server->on("/api/wifi/networks", HTTP_GET, _server.on("/api/wifi/networks", HTTP_GET,
[this](PsychicRequest *request) { return _wifiService.getNetworks(request); }); [this](PsychicRequest *request) { return _wifiService.getNetworks(request); });
_server->on("/api/wifi/sta/status", HTTP_GET, _server.on("/api/wifi/sta/status", HTTP_GET,
[this](PsychicRequest *request) { return _wifiService.getNetworkStatus(request); }); [this](PsychicRequest *request) { return _wifiService.getNetworkStatus(request); });
_server->on("/api/wifi/sta/settings", HTTP_GET, _server.on("/api/wifi/sta/settings", HTTP_GET,
[this](PsychicRequest *request) { return _wifiService.endpoint.getState(request); }); [this](PsychicRequest *request) { return _wifiService.endpoint.getState(request); });
_server->on("/api/wifi/sta/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { _server.on("/api/wifi/sta/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) {
return _wifiService.endpoint.handleStateUpdate(request, json); return _wifiService.endpoint.handleStateUpdate(request, json);
}); });
// AP // AP
_server->on("/api/wifi/ap/status", HTTP_GET, _server.on("/api/wifi/ap/status", HTTP_GET,
[this](PsychicRequest *request) { return _apService.getStatus(request); }); [this](PsychicRequest *request) { return _apService.getStatus(request); });
_server->on("/api/wifi/ap/settings", HTTP_GET, _server.on("/api/wifi/ap/settings", HTTP_GET,
[this](PsychicRequest *request) { return _apService.endpoint.getState(request); }); [this](PsychicRequest *request) { return _apService.endpoint.getState(request); });
_server->on("/api/wifi/ap/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { _server.on("/api/wifi/ap/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) {
return _apService.endpoint.handleStateUpdate(request, json); return _apService.endpoint.handleStateUpdate(request, json);
}); });
// CAMERA // CAMERA
_server->on("/api/camera/still", HTTP_GET, _server.on("/api/camera/still", HTTP_GET,
[this](PsychicRequest *request) { return _cameraService.cameraStill(request); }); [this](PsychicRequest *request) { return _cameraService.cameraStill(request); });
_server->on("/api/camera/stream", HTTP_GET, _server.on("/api/camera/stream", HTTP_GET,
[this](PsychicRequest *request) { return _cameraService.cameraStream(request); }); [this](PsychicRequest *request) { return _cameraService.cameraStream(request); });
_server->on("/api/camera/settings", HTTP_GET, _server.on("/api/camera/settings", HTTP_GET,
[this](PsychicRequest *request) { return _cameraService.endpoint.getState(request); }); [this](PsychicRequest *request) { return _cameraService.endpoint.getState(request); });
_server->on("/api/camera/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { _server.on("/api/camera/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) {
return _cameraService.endpoint.handleStateUpdate(request, json); return _cameraService.endpoint.handleStateUpdate(request, json);
}); });
// SYSTEM // SYSTEM
_server->on("/api/system/reset", HTTP_POST, system_service::handleReset); _server.on("/api/system/reset", HTTP_POST, system_service::handleReset);
_server->on("/api/system/restart", HTTP_POST, system_service::handleRestart); _server.on("/api/system/restart", HTTP_POST, system_service::handleRestart);
_server->on("/api/system/sleep", HTTP_POST, system_service::handleSleep); _server.on("/api/system/sleep", HTTP_POST, system_service::handleSleep);
_server->on("/api/system/status", HTTP_GET, system_service::getStatus); _server.on("/api/system/status", HTTP_GET, system_service::getStatus);
_server->on("/api/system/metrics", HTTP_GET, system_service::getMetrics); _server.on("/api/system/metrics", HTTP_GET, system_service::getMetrics);
// FILESYSTEM // FILESYSTEM
_server->on("/api/files", HTTP_GET, FileSystem::getFiles); _server.on("/api/files", HTTP_GET, FileSystem::getFiles);
_server->on("/api/files/delete", HTTP_POST, FileSystem::handleDelete); _server.on("/api/files/delete", HTTP_POST, FileSystem::handleDelete);
_server->on("/api/files/upload/*", HTTP_POST, FileSystem::uploadHandler); _server.on("/api/files/upload/*", HTTP_POST, FileSystem::uploadHandler);
_server->on("/api/files/edit", HTTP_POST, FileSystem::handleEdit); _server.on("/api/files/edit", HTTP_POST, FileSystem::handleEdit);
// SERVO // SERVO
_server->on("/api/servo/config", HTTP_GET, _server.on("/api/servo/config", HTTP_GET,
[this](PsychicRequest *request) { return _servoController.endpoint.getState(request); }); [this](PsychicRequest *request) { return _servoController.endpoint.getState(request); });
_server->on("/api/servo/config", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { _server.on("/api/servo/config", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) {
return _servoController.endpoint.handleStateUpdate(request, json); return _servoController.endpoint.handleStateUpdate(request, json);
}); });
// PERIPHERALS // PERIPHERALS
_server->on("/api/peripheral/settings", HTTP_GET, _server.on("/api/peripheral/settings", HTTP_GET,
[this](PsychicRequest *request) { return _peripherals.endpoint.getState(request); }); [this](PsychicRequest *request) { return _peripherals.endpoint.getState(request); });
_server->on("/api/peripheral/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { _server.on("/api/peripheral/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) {
return _peripherals.endpoint.handleStateUpdate(request, json); return _peripherals.endpoint.handleStateUpdate(request, json);
}); });
// MISC // MISC
_server->on("/api/ws/events", socket.getHandler()); _server.on("/api/ws/events", socket.getHandler());
_server->on("/api/features", feature_service::getFeatures); _server.on("/api/features", feature_service::getFeatures);
#if FT_ENABLED(USE_UPLOAD_FIRMWARE) #if FT_ENABLED(USE_UPLOAD_FIRMWARE)
_server->on("/api/firmware", HTTP_POST, _uploadFirmwareService.getHandler()); _server.on("/api/firmware", HTTP_POST, _uploadFirmwareService.getHandler());
#endif #endif
#if FT_ENABLED(USE_DOWNLOAD_FIRMWARE) #if FT_ENABLED(USE_DOWNLOAD_FIRMWARE)
_server->on("/api/firmware/download", HTTP_POST, [this](PsychicRequest *r, JsonVariant &json) { _server.on("/api/firmware/download", HTTP_POST, [this](PsychicRequest *r, JsonVariant &json) {
return _downloadFirmwareService.handleDownloadUpdate(r, json); return _downloadFirmwareService.handleDownloadUpdate(r, json);
}); });
#endif #endif
@@ -119,21 +119,21 @@ void Spot::setupServer() {
}; };
PsychicWebHandler *handler = new PsychicWebHandler(); PsychicWebHandler *handler = new PsychicWebHandler();
handler->onRequest(requestHandler); handler->onRequest(requestHandler);
_server->on(uri.c_str(), HTTP_GET, handler); _server.on(uri.c_str(), HTTP_GET, handler);
// Set default end-point for all non matching requests // Set default end-point for all non matching requests
// this is easier than using webServer.onNotFound() // this is easier than using webServer.onNotFound()
if (uri.equals("/index.html")) { if (uri.equals("/index.html")) {
_server->defaultEndpoint->setHandler(handler); _server.defaultEndpoint->setHandler(handler);
} }
}); });
#else #else
// Serve static resources from /www/ // Serve static resources from /www/
ESP_LOGV(TAG, "Registering routes from FS /www/ static resources"); ESP_LOGV(TAG, "Registering routes from FS /www/ static resources");
_server->serveStatic("/_app/", ESPFS, "/www/_app/"); _server.serveStatic("/_app/", ESPFS, "/www/_app/");
_server->serveStatic("/favicon.png", ESPFS, "/www/favicon.png"); _server.serveStatic("/favicon.png", ESPFS, "/www/favicon.png");
// Serving all other get requests with "/www/index.htm" // Serving all other get requests with "/www/index.htm"
_server->onNotFound([](PsychicRequest *request) { _server.onNotFound([](PsychicRequest *request) {
if (request->method() == HTTP_GET) { if (request->method() == HTTP_GET) {
PsychicFileResponse response(request, ESPFS, "/www/index.html", "text/html"); PsychicFileResponse response(request, ESPFS, "/www/index.html", "text/html");
return response.send(); return response.send();
@@ -143,7 +143,7 @@ void Spot::setupServer() {
}); });
#endif #endif
#ifdef SERVE_CONFIG_FILES #ifdef SERVE_CONFIG_FILES
_server->serveStatic("/api/config/", ESPFS, "/config/"); _server.serveStatic("/api/config/", ESPFS, "/config/");
#endif #endif
#if defined(ENABLE_CORS) #if defined(ENABLE_CORS)