diff --git a/esp32/lib/ESP32-sveltekit/CameraSettingsService.h b/esp32/lib/ESP32-sveltekit/CameraSettingsService.h index ca9a0ac..f25a2fe 100644 --- a/esp32/lib/ESP32-sveltekit/CameraSettingsService.h +++ b/esp32/lib/ESP32-sveltekit/CameraSettingsService.h @@ -5,10 +5,11 @@ namespace Camera { -#include +#include #include #include #include +#include #include #include #include @@ -17,20 +18,17 @@ namespace Camera { #include #define EVENT_CAMERA_SETTINGS "CameraSettings" -#define CAMERA_SETTINGS_PATH "/api/camera/settings" class CameraSettingsService : public StatefulService { public: - CameraSettingsService(PsychicHttpServer *server, FS *fs) - : _server(server), - _httpEndpoint(CameraSettings::read, CameraSettings::update, this, server, CAMERA_SETTINGS_PATH), + CameraSettingsService() + : endpoint(CameraSettings::read, CameraSettings::update, this), _eventEndpoint(CameraSettings::read, CameraSettings::update, this, EVENT_CAMERA_SETTINGS), - _fsPersistence(CameraSettings::read, CameraSettings::update, this, fs, CAMERA_SETTINGS_FILE) { + _fsPersistence(CameraSettings::read, CameraSettings::update, this, &ESPFS, CAMERA_SETTINGS_FILE) { addUpdateHandler([&](const String &originId) { updateCamera(); }, false); } void begin() { - _httpEndpoint.begin(); _eventEndpoint.begin(); _fsPersistence.readFromFS(); sensor_t *s = safe_sensor_get(); @@ -96,9 +94,9 @@ class CameraSettingsService : public StatefulService { safe_sensor_return(); } + StatefulHttpEndpoint endpoint; + private: - PsychicHttpServer *_server; - HttpEndpoint _httpEndpoint; EventEndpoint _eventEndpoint; FSPersistence _fsPersistence; }; diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp index 6dcfde9..768d9bb 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp @@ -18,7 +18,6 @@ ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEndpoints) : _server(server), _numberEndpoints(numberEndpoints), - _featureService(server), #if FT_ENABLED(USE_UPLOAD_FIRMWARE) _uploadFirmwareService(server), #endif @@ -30,16 +29,12 @@ ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEnd #endif #if FT_ENABLED(USE_BATTERY) _batteryService(&_peripherals), -#endif -#if FT_ENABLED(USE_CAMERA) - _cameraService(server), - _cameraSettingsService(server, &ESPFS), #endif _servoController(server, &ESPFS, &_peripherals), #if FT_ENABLED(USE_MOTION) _motionService(_server, &_servoController), #endif - _peripherals(server, &ESPFS) { + _featureService(server) { } void ESP32SvelteKit::begin() { @@ -96,6 +91,17 @@ void ESP32SvelteKit::setupServer() { }); #endif + // Camera + _server->on("/api/camera/still", HTTP_GET, + [this](PsychicRequest *request) { return _cameraService.cameraStill(request); }); + _server->on("/api/camera/stream", HTTP_GET, + [this](PsychicRequest *request) { return _cameraService.cameraStream(request); }); + _server->on("/api/camera/settings", HTTP_GET, + [this](PsychicRequest *request) { return _cameraSettingsService.endpoint.getState(request); }); + _server->on("/api/camera/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { + return _cameraSettingsService.endpoint.handleStateUpdate(request, json); + }); + // SYSTEM _server->on("/api/system/reset", HTTP_POST, system_service::handleReset); _server->on("/api/system/restart", HTTP_POST, system_service::handleRestart); @@ -109,13 +115,20 @@ void ESP32SvelteKit::setupServer() { _server->on("/api/files/upload/*", HTTP_POST, FileSystem::uploadHandler); _server->on("/api/files/edit", HTTP_POST, FileSystem::handleEdit); - // servo + // SERVO _server->on("/api/servo/config", HTTP_GET, [this](PsychicRequest *request) { return _servoController.endpoint.getState(request); }); _server->on("/api/servo/config", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { return _servoController.endpoint.handleStateUpdate(request, json); }); + // PERIPHERALS + _server->on("/api/peripheral/settings", HTTP_GET, + [this](PsychicRequest *request) { return _peripherals.endpoint.getState(request); }); + _server->on("/api/peripheral/settings", HTTP_POST, [this](PsychicRequest *request, JsonVariant &json) { + return _peripherals.endpoint.handleStateUpdate(request, json); + }); + // MISC _server->on("/api/ws/events", socket.getHandler()); diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h index 47aa080..8332780 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/esp32/lib/ESP32-sveltekit/Peripherals.h b/esp32/lib/ESP32-sveltekit/Peripherals.h index 550b698..1c658a6 100644 --- a/esp32/lib/ESP32-sveltekit/Peripherals.h +++ b/esp32/lib/ESP32-sveltekit/Peripherals.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -24,7 +25,6 @@ #include #define EVENT_CONFIGURATION_SETTINGS "peripheralSettings" -#define CONFIGURATION_SETTINGS_PATH "/api/peripheral/settings" #define EVENT_I2C_SCAN "i2cScan" @@ -58,10 +58,8 @@ class Peripherals : public StatefulService { public: - Peripherals(PsychicHttpServer *server, FS *fs) - : _server(server), - _httpEndpoint(PeripheralsConfiguration::read, PeripheralsConfiguration::update, this, server, - CONFIGURATION_SETTINGS_PATH), + Peripherals() + : endpoint(PeripheralsConfiguration::read, PeripheralsConfiguration::update, this), _eventEndpoint(PeripheralsConfiguration::read, PeripheralsConfiguration::update, this, EVENT_CONFIGURATION_SETTINGS), #if FT_ENABLED(USE_MAG) @@ -70,14 +68,13 @@ class Peripherals : public StatefulService { #if FT_ENABLED(USE_BMP) _bmp(10085), #endif - _fsPersistence(PeripheralsConfiguration::read, PeripheralsConfiguration::update, this, fs, + _fsPersistence(PeripheralsConfiguration::read, PeripheralsConfiguration::update, this, &ESPFS, DEVICE_CONFIG_FILE) { _accessMutex = xSemaphoreCreateMutex(); addUpdateHandler([&](const String &originId) { updatePins(); }, false); }; void begin() { - _httpEndpoint.begin(); _eventEndpoint.begin(); _fsPersistence.readFromFS(); @@ -346,6 +343,8 @@ class Peripherals : public StatefulService { return temperature; } + StatefulHttpEndpoint endpoint; + protected: void updateImu() { doc.clear(); @@ -399,8 +398,6 @@ class Peripherals : public StatefulService { float rightDistance() { return _right_distance; } private: - PsychicHttpServer *_server; - HttpEndpoint _httpEndpoint; EventEndpoint _eventEndpoint; FSPersistence _fsPersistence; diff --git a/esp32/lib/ESP32-sveltekit/CameraPins.h b/esp32/lib/ESP32-sveltekit/camera_pins.h similarity index 100% rename from esp32/lib/ESP32-sveltekit/CameraPins.h rename to esp32/lib/ESP32-sveltekit/camera_pins.h diff --git a/esp32/lib/ESP32-sveltekit/CameraService.cpp b/esp32/lib/ESP32-sveltekit/camera_service.cpp similarity index 89% rename from esp32/lib/ESP32-sveltekit/CameraService.cpp rename to esp32/lib/ESP32-sveltekit/camera_service.cpp index eb8126d..4f3e309 100644 --- a/esp32/lib/ESP32-sveltekit/CameraService.cpp +++ b/esp32/lib/ESP32-sveltekit/camera_service.cpp @@ -1,4 +1,4 @@ -#include +#include namespace Camera { @@ -29,17 +29,9 @@ sensor_t *safe_sensor_get() { void safe_sensor_return() { xSemaphoreGive(cameraMutex); } -CameraService::CameraService(PsychicHttpServer *server) : _server(server) {} -void CameraService::begin() { - InitializeCamera(); - _server->on(STILL_SERVICE_PATH, HTTP_GET, [this](PsychicRequest *request) { return cameraStill(request); }); - _server->on(STREAM_SERVICE_PATH, HTTP_GET, [this](PsychicRequest *request) { return cameraStream(request); }); +CameraService::CameraService() {} - ESP_LOGV(TAG, "Registered GET endpoint: %s", STILL_SERVICE_PATH); - ESP_LOGV(TAG, "Registered GET endpoint: %s", STREAM_SERVICE_PATH); -} - -esp_err_t CameraService::InitializeCamera() { +esp_err_t CameraService::begin() { camera_config_t camera_config; camera_config.ledc_channel = LEDC_CHANNEL_0; camera_config.ledc_timer = LEDC_TIMER_0; diff --git a/esp32/lib/ESP32-sveltekit/CameraService.h b/esp32/lib/ESP32-sveltekit/camera_service.h similarity index 74% rename from esp32/lib/ESP32-sveltekit/CameraService.h rename to esp32/lib/ESP32-sveltekit/camera_service.h index d8105c3..50085fa 100644 --- a/esp32/lib/ESP32-sveltekit/CameraService.h +++ b/esp32/lib/ESP32-sveltekit/camera_service.h @@ -13,12 +13,9 @@ namespace Camera { #include #if USE_CAMERA -#include +#include #endif -#define STREAM_SERVICE_PATH "/api/camera/stream" -#define STILL_SERVICE_PATH "/api/camera/still" - #define PART_BOUNDARY "frame" camera_fb_t *safe_camera_fb_get(); @@ -27,15 +24,15 @@ void safe_sensor_return(); class CameraService { public: - CameraService(PsychicHttpServer *server); + CameraService(); - void begin(); + esp_err_t begin(); + + esp_err_t cameraStill(PsychicRequest *request); + esp_err_t cameraStream(PsychicRequest *request); private: PsychicHttpServer *_server; - esp_err_t cameraStill(PsychicRequest *request); - esp_err_t cameraStream(PsychicRequest *request); - esp_err_t InitializeCamera(); }; } // namespace Camera