From a7eec4f7f2341c0276992b575e6b5c20f2f504ca Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Fri, 8 Nov 2024 17:03:31 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Refactors=20feature=20service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp | 7 +-- esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h | 5 +- esp32/lib/ESP32-sveltekit/FeaturesService.cpp | 57 ------------------- esp32/lib/ESP32-sveltekit/FeaturesService.h | 45 --------------- esp32/lib/ESP32-sveltekit/Peripherals.h | 2 +- esp32/lib/ESP32-sveltekit/camera_service.h | 2 +- esp32/lib/ESP32-sveltekit/features.cpp | 29 ++++++++++ .../{Features.h => features.h} | 24 ++++---- 8 files changed, 46 insertions(+), 125 deletions(-) delete mode 100644 esp32/lib/ESP32-sveltekit/FeaturesService.cpp delete mode 100644 esp32/lib/ESP32-sveltekit/FeaturesService.h create mode 100644 esp32/lib/ESP32-sveltekit/features.cpp rename esp32/lib/ESP32-sveltekit/{Features.h => features.h} (69%) diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp index 768d9bb..4ea2e14 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp @@ -16,8 +16,7 @@ #include ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEndpoints) - : _server(server), - _numberEndpoints(numberEndpoints), + : _numberEndpoints(numberEndpoints), #if FT_ENABLED(USE_UPLOAD_FIRMWARE) _uploadFirmwareService(server), #endif @@ -34,7 +33,7 @@ ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEnd #if FT_ENABLED(USE_MOTION) _motionService(_server, &_servoController), #endif - _featureService(server) { + _server(server) { } void ESP32SvelteKit::begin() { @@ -131,6 +130,7 @@ void ESP32SvelteKit::setupServer() { // MISC _server->on("/api/ws/events", socket.getHandler()); + _server->on("/api/features", feature_service::getFeatures); #ifdef EMBED_WWW ESP_LOGV("ESP32SvelteKit", "Registering routes from PROGMEM static resources"); @@ -193,7 +193,6 @@ void ESP32SvelteKit::setupMDNS() { void ESP32SvelteKit::startServices() { _apService.begin(); - _featureService.begin(); #if FT_ENABLED(USE_UPLOAD_FIRMWARE) _uploadFirmwareService.begin(); diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h index 8332780..0478a79 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include #include @@ -76,8 +76,6 @@ class ESP32SvelteKit { BatteryService *getBatteryService() { return &_batteryService; } #endif - FeaturesService *getFeatureService() { return &_featureService; } - #if FT_ENABLED(USE_MOTION) MotionService *getMotionService() { return &_motionService; } #endif @@ -102,7 +100,6 @@ class ESP32SvelteKit { private: PsychicHttpServer *_server; unsigned int _numberEndpoints; - FeaturesService _featureService; WiFiService _wifiService; APService _apService; EventSocket _socket; diff --git a/esp32/lib/ESP32-sveltekit/FeaturesService.cpp b/esp32/lib/ESP32-sveltekit/FeaturesService.cpp deleted file mode 100644 index 1010b96..0000000 --- a/esp32/lib/ESP32-sveltekit/FeaturesService.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/** - * ESP32 SvelteKit - * - * A simple, secure and extensible framework for IoT projects for ESP32 platforms - * with responsive Sveltekit front-end built with TailwindCSS and DaisyUI. - * https://github.com/theelims/ESP32-sveltekit - * - * Copyright (C) 2018 - 2023 rjwats - * Copyright (C) 2023 theelims - * Copyright (C) 2024 runeharlyk - * - * All Rights Reserved. This software may be modified and distributed under - * the terms of the LGPL v3 license. See the LICENSE file for details. - **/ - -#include - -FeaturesService::FeaturesService(PsychicHttpServer *server) : _server(server) {} - -void FeaturesService::begin() { - _server->on(FEATURES_SERVICE_PATH, HTTP_GET, [&](PsychicRequest *request) { - PsychicJsonResponse response = PsychicJsonResponse(request, false); - JsonObject root = response.getRoot(); - - root["ntp"] = USE_NTP; - root["upload_firmware"] = USE_UPLOAD_FIRMWARE; - root["download_firmware"] = USE_DOWNLOAD_FIRMWARE; - root["sleep"] = USE_SLEEP; - root["battery"] = USE_BATTERY; - root["analytics"] = USE_ANALYTICS; - root["camera"] = USE_CAMERA; - root["imu"] = USE_IMU; - root["mag"] = USE_MAG; - root["bmp"] = USE_BMP; - root["sonar"] = USE_USS; - root["firmware_version"] = APP_VERSION; - root["firmware_name"] = APP_NAME; - root["firmware_built_target"] = BUILD_TARGET; - - // Iterate over user features - for (auto &element : userFeatures) { - root[element.feature.c_str()] = element.enabled; - } - - return response.send(); - }); - - ESP_LOGV("FeaturesService", "Registered GET endpoint: %s", FEATURES_SERVICE_PATH); -} - -void FeaturesService::addFeature(String feature, bool enabled) { - UserFeature newFeature; - newFeature.feature = feature; - newFeature.enabled = enabled; - - userFeatures.push_back(newFeature); -} \ No newline at end of file diff --git a/esp32/lib/ESP32-sveltekit/FeaturesService.h b/esp32/lib/ESP32-sveltekit/FeaturesService.h deleted file mode 100644 index 824bf50..0000000 --- a/esp32/lib/ESP32-sveltekit/FeaturesService.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef FeaturesService_h -#define FeaturesService_h - -/** - * ESP32 SvelteKit - * - * A simple, secure and extensible framework for IoT projects for ESP32 platforms - * with responsive Sveltekit front-end built with TailwindCSS and DaisyUI. - * https://github.com/theelims/ESP32-sveltekit - * - * Copyright (C) 2018 - 2023 rjwats - * Copyright (C) 2023 theelims - * - * All Rights Reserved. This software may be modified and distributed under - * the terms of the LGPL v3 license. See the LICENSE file for details. - **/ - -#include - -#include -#include -#include -#include - -#define FEATURES_SERVICE_PATH "/api/features" - -typedef struct { - String feature; - bool enabled; -} UserFeature; - -class FeaturesService { - public: - FeaturesService(PsychicHttpServer *server); - - void begin(); - - void addFeature(String feature, bool enabled); - - private: - PsychicHttpServer *_server; - std::vector userFeatures; -}; - -#endif diff --git a/esp32/lib/ESP32-sveltekit/Peripherals.h b/esp32/lib/ESP32-sveltekit/Peripherals.h index 1c658a6..3d4da27 100644 --- a/esp32/lib/ESP32-sveltekit/Peripherals.h +++ b/esp32/lib/ESP32-sveltekit/Peripherals.h @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include diff --git a/esp32/lib/ESP32-sveltekit/camera_service.h b/esp32/lib/ESP32-sveltekit/camera_service.h index 50085fa..3908859 100644 --- a/esp32/lib/ESP32-sveltekit/camera_service.h +++ b/esp32/lib/ESP32-sveltekit/camera_service.h @@ -6,7 +6,7 @@ #include #include #include -#include +#include namespace Camera { diff --git a/esp32/lib/ESP32-sveltekit/features.cpp b/esp32/lib/ESP32-sveltekit/features.cpp new file mode 100644 index 0000000..e9e9211 --- /dev/null +++ b/esp32/lib/ESP32-sveltekit/features.cpp @@ -0,0 +1,29 @@ +#include + +namespace feature_service { + +void features(JsonObject &root) { + root["ntp"] = USE_NTP; + root["upload_firmware"] = USE_UPLOAD_FIRMWARE; + root["download_firmware"] = USE_DOWNLOAD_FIRMWARE; + root["sleep"] = USE_SLEEP; + root["battery"] = USE_BATTERY; + root["analytics"] = USE_ANALYTICS; + root["camera"] = USE_CAMERA; + root["imu"] = USE_IMU; + root["mag"] = USE_MAG; + root["bmp"] = USE_BMP; + root["sonar"] = USE_USS; + root["firmware_version"] = APP_VERSION; + root["firmware_name"] = APP_NAME; + root["firmware_built_target"] = BUILD_TARGET; +} + +esp_err_t getFeatures(PsychicRequest *request) { + PsychicJsonResponse response = PsychicJsonResponse(request, false); + JsonObject root = response.getRoot(); + features(root); + return response.send(); +} + +} // namespace feature_service \ No newline at end of file diff --git a/esp32/lib/ESP32-sveltekit/Features.h b/esp32/lib/ESP32-sveltekit/features.h similarity index 69% rename from esp32/lib/ESP32-sveltekit/Features.h rename to esp32/lib/ESP32-sveltekit/features.h index 7420ea3..31371e0 100644 --- a/esp32/lib/ESP32-sveltekit/Features.h +++ b/esp32/lib/ESP32-sveltekit/features.h @@ -1,19 +1,9 @@ #ifndef Features_h #define Features_h -/** - * ESP32 SvelteKit - * - * A simple, secure and extensible framework for IoT projects for ESP32 platforms - * with responsive Sveltekit front-end built with TailwindCSS and DaisyUI. - * https://github.com/theelims/ESP32-sveltekit - * - * Copyright (C) 2018 - 2023 rjwats - * Copyright (C) 2023 theelims - * - * All Rights Reserved. This software may be modified and distributed under - * the terms of the LGPL v3 license. See the LICENSE file for details. - **/ +#include +#include +#include #define FT_ENABLED(feature) feature @@ -77,4 +67,12 @@ #define USE_GPS 0 #endif +namespace feature_service { + +void features(JsonObject &root); + +esp_err_t getFeatures(PsychicRequest *request); + +} // namespace feature_service + #endif