diff --git a/CLC-qthing/CMakeLists.txt b/CLC-qthing/CMakeLists.txt index 8449b2a3f9bcc8e281a966fdabb7771e3e25beff..b0216f5c9739f40bf235acbb33eeed74fcf14db4 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 1a6b213b50b8b888fb8c28a4dbbe8fcd60fa7cb4..6cc519df8b01b02315bada7321765a853e51d613 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 663967764a7a6dd9cba93b8707d3f761062c6786..ac67758e35b9b3b2276e79b8cad9057e35939eec 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 0000000000000000000000000000000000000000..f03941402e05ab64a31568aeabfcf2337cede479 --- /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 0000000000000000000000000000000000000000..1675e7688b85c34c4410195d9776d227bf771523 --- /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 0000000000000000000000000000000000000000..b1ffc11ec4f12f876b8524ebeebaa99c73006a0c --- /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 0000000000000000000000000000000000000000..85ff54b78fc3584beeaa04d1d6a238dd766b6a20 --- /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; + + + + + + } +}