From 37d04daddd36bec85356da4816c5c73fe52921f7 Mon Sep 17 00:00:00 2001 From: Jochen Vothknecht <jochen3120@gmail.com> Date: Fri, 17 Jun 2022 09:24:09 +0200 Subject: [PATCH] =?UTF-8?q?ST:=20Moar=20ServiceManager=20work=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLC-qthing/CMakeLists.txt | 2 +- CLC-qthing/SiliconTorch/Service/Service.cpp | 13 ++++-- CLC-qthing/SiliconTorch/Service/Service.hpp | 4 +- .../SiliconTorch/Service/ServiceManager.cpp | 36 +++++++++++++++ .../SiliconTorch/Service/ServiceManager.hpp | 46 +++++++++++++++++++ .../SiliconTorch/Service/__services__.cpp | 36 +++++++++++++++ .../SiliconTorch/Service/__services__.hpp | 30 ++++++++++++ 7 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 CLC-qthing/SiliconTorch/Service/ServiceManager.cpp create mode 100644 CLC-qthing/SiliconTorch/Service/ServiceManager.hpp create mode 100644 CLC-qthing/SiliconTorch/Service/__services__.cpp create mode 100644 CLC-qthing/SiliconTorch/Service/__services__.hpp diff --git a/CLC-qthing/CMakeLists.txt b/CLC-qthing/CMakeLists.txt index 8449b2a..b0216f5 100644 --- a/CLC-qthing/CMakeLists.txt +++ b/CLC-qthing/CMakeLists.txt @@ -1,6 +1,6 @@ idf_component_register( SRC_DIRS - "." "SiliconTorch" "SpiderLib" + "." "SiliconTorch" "SiliconTorch/Service" "SpiderLib" INCLUDE_DIRS "." "SpiderLib" diff --git a/CLC-qthing/SiliconTorch/Service/Service.cpp b/CLC-qthing/SiliconTorch/Service/Service.cpp index 1a6b213..6cc519d 100644 --- a/CLC-qthing/SiliconTorch/Service/Service.cpp +++ b/CLC-qthing/SiliconTorch/Service/Service.cpp @@ -35,6 +35,9 @@ namespace SiliconTorch { } void Service::postInit() { + + attrsLocked = true; + u8 state = 0; // disabled -> 0 enabled -> 1 state = NVSExplorer::NVSExplorer::instance().getUnsignedInt(getNameSpace(), NVSStateKey, state); @@ -72,8 +75,7 @@ namespace SiliconTorch { void Service::setName(const str& name) { - if (!nameSet) { - nameSet = true; + if (!attrsLocked) { this->name = name; } else { // TODO: report error somehow? @@ -81,8 +83,7 @@ namespace SiliconTorch { } void Service::setNameSpace(const str& nameSpace) { - if (!nameSpaceSet) { - nameSpaceSet = true; + if (!attrsLocked) { this->nameSpace = nameSpace; } else { // TODO: report error somehow? @@ -90,7 +91,11 @@ namespace SiliconTorch { } void Service::setStartOrder(u16 startOrder) { + if (!attrsLocked) { this->startOrder = startOrder; + } else { + // TODO: report error somehow? + } } diff --git a/CLC-qthing/SiliconTorch/Service/Service.hpp b/CLC-qthing/SiliconTorch/Service/Service.hpp index 6639677..ac67758 100644 --- a/CLC-qthing/SiliconTorch/Service/Service.hpp +++ b/CLC-qthing/SiliconTorch/Service/Service.hpp @@ -65,10 +65,8 @@ namespace SiliconTorch { NVSState nvsState = Disabled; - bool nameSet = false; + bool attrsLocked = false; str name = ""; - - bool nameSpaceSet = false; str nameSpace = ""; u16 startOrder = 1337; diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp new file mode 100644 index 0000000..f039414 --- /dev/null +++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp @@ -0,0 +1,36 @@ +#include "ServiceManager.hpp" + +// C++ system level +// #include <cstring> // memset, strncmp +// #include <cstdlib> // TODO: is this for memcpy? +// #include <functional> + +// ESP32 specific +#include "esp_log.h" + +// project specific +#include <Types.hpp> +// #include "SiliconTorch/NVSExplorer.hpp" + +// qthing stuff +// #include <qthing> + + +const char* TAG = "ServiceManager"; + + +namespace SiliconTorch { + + namespace ServiceManager { + + + ServiceManager::ServiceManager() { + + // TODO: implement! + + } + + + + } +} diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp new file mode 100644 index 0000000..1675e76 --- /dev/null +++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp @@ -0,0 +1,46 @@ +#pragma once + +// C++ system level +#include <map> +// #include <cstring> // memset, strncmp +// #include <cstdlib> // TODO: is this for memcpy? +// #include <functional> + +// ESP32 specific +#include "esp_log.h" + +// project specific +#include <Types.hpp> +#include "Service.hpp" + +// qthing stuff +// #include <qthing> + + +namespace SiliconTorch { + + namespace ServiceManager { + + extern const str NVSStateKey; + + + using ServiceMap = std::map<str, Service>; + + + class ServiceManager { + public: + + ServiceManager(); + + void registerService(Service s); + + private: + + bool registrationLocked = false; + ServiceMap services; + + }; + + + } +} diff --git a/CLC-qthing/SiliconTorch/Service/__services__.cpp b/CLC-qthing/SiliconTorch/Service/__services__.cpp new file mode 100644 index 0000000..b1ffc11 --- /dev/null +++ b/CLC-qthing/SiliconTorch/Service/__services__.cpp @@ -0,0 +1,36 @@ +#include "ServiceManager.hpp" + +// C++ system level +// #include <cstring> // memset, strncmp +// #include <cstdlib> // TODO: is this for memcpy? +// #include <functional> + +// ESP32 specific +#include "esp_log.h" + +// project specific +#include <Types.hpp> +// #include "SiliconTorch/NVSExplorer.hpp" + +// qthing stuff +// #include <qthing> + + +const char* TAG = "ServiceManager"; + + +namespace SiliconTorch { + + namespace ServiceManager { + + + void registerSiliconTorchServices(ServiceManager& mgr) { + + // TODO: implement! + + + } + + + } +} diff --git a/CLC-qthing/SiliconTorch/Service/__services__.hpp b/CLC-qthing/SiliconTorch/Service/__services__.hpp new file mode 100644 index 0000000..85ff54b --- /dev/null +++ b/CLC-qthing/SiliconTorch/Service/__services__.hpp @@ -0,0 +1,30 @@ +#pragma once + +// C++ system level +// #include <cstring> // memset, strncmp +// #include <cstdlib> // TODO: is this for memcpy? +// #include <functional> + +// ESP32 specific +#include "esp_log.h" + +// project specific +#include <Types.hpp> +#include "Service.hpp" + +// qthing stuff +// #include <qthing> + + +namespace SiliconTorch { + + namespace ServiceManager { + + extern const str NVSStateKey; + + + + + + } +} -- GitLab