From 8875dfd2e23f99c3ee84591a91126fadbc3ca3f7 Mon Sep 17 00:00:00 2001
From: Jochen Vothknecht <jochen3120@gmail.com>
Date: Fri, 17 Jun 2022 19:15:06 +0200
Subject: [PATCH] ST: Moar ServiceManager stuff

---
 .../SiliconTorch/Service/ServiceManager.cpp   | 18 ++++++++++-
 .../SiliconTorch/Service/ServiceManager.hpp   |  4 +--
 .../SiliconTorch/Service/__services__.cpp     | 12 ++++----
 .../SiliconTorch/Service/__services__.hpp     | 30 -------------------
 CLC-qthing/device_main.cpp                    | 10 +++++--
 5 files changed, 33 insertions(+), 41 deletions(-)
 delete mode 100644 CLC-qthing/SiliconTorch/Service/__services__.hpp

diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp
index f039414..a956ff2 100644
--- a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp
+++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp
@@ -16,7 +16,7 @@
 // #include <qthing>
 
 
-const char* TAG = "ServiceManager";
+static const char* TAG = "ServiceManager";
 
 
 namespace SiliconTorch {
@@ -24,13 +24,29 @@ namespace SiliconTorch {
   namespace ServiceManager {
 
 
+    void registerSiliconTorchServices(ServiceManager* mgr);
+
+
     ServiceManager::ServiceManager() {
 
+      registerSiliconTorchServices(this);
+
       // TODO: implement!
 
     }
 
 
+    void ServiceManager::registerService(Service* s) {
+      s->init();
+      s->postInit();
+
+      services[s->getName()] = s;
+
+      ESP_LOGI(TAG, "Registered service[ %s ]", s->getName().c_str());
+
+    }
+
+
 
   }
 }
diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp
index 1675e76..7407949 100644
--- a/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp
+++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp
@@ -24,7 +24,7 @@ namespace SiliconTorch {
     extern const str NVSStateKey;
 
 
-    using ServiceMap = std::map<str, Service>;
+    using ServiceMap = std::map<str, Service*>;
 
 
     class ServiceManager {
@@ -32,7 +32,7 @@ namespace SiliconTorch {
 
         ServiceManager();
 
-        void registerService(Service s);
+        void registerService(Service* s);
 
       private:
 
diff --git a/CLC-qthing/SiliconTorch/Service/__services__.cpp b/CLC-qthing/SiliconTorch/Service/__services__.cpp
index b1ffc11..3141a1f 100644
--- a/CLC-qthing/SiliconTorch/Service/__services__.cpp
+++ b/CLC-qthing/SiliconTorch/Service/__services__.cpp
@@ -6,17 +6,18 @@
 // #include <functional>
 
 // ESP32 specific
-#include "esp_log.h"
+// #include "esp_log.h"
 
 // project specific
-#include <Types.hpp>
+#include "FxCyanF.hpp"
+// #include <Types.hpp>
 // #include "SiliconTorch/NVSExplorer.hpp"
 
 // qthing stuff
 // #include <qthing>
 
 
-const char* TAG = "ServiceManager";
+// const char* TAG = "ServiceManager";
 
 
 namespace SiliconTorch {
@@ -24,10 +25,9 @@ namespace SiliconTorch {
   namespace ServiceManager {
 
 
-    void registerSiliconTorchServices(ServiceManager& mgr) {
-
-      // TODO: implement!
+    void registerSiliconTorchServices(ServiceManager* mgr) {
 
+      mgr->registerService(new SiliconTorch::Service::FxCyanF());
 
     }
 
diff --git a/CLC-qthing/SiliconTorch/Service/__services__.hpp b/CLC-qthing/SiliconTorch/Service/__services__.hpp
deleted file mode 100644
index 85ff54b..0000000
--- a/CLC-qthing/SiliconTorch/Service/__services__.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#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;
-
-
-
-
-
-  }
-}
diff --git a/CLC-qthing/device_main.cpp b/CLC-qthing/device_main.cpp
index 3831830..3167fa6 100644
--- a/CLC-qthing/device_main.cpp
+++ b/CLC-qthing/device_main.cpp
@@ -19,6 +19,7 @@
 
 #include "SiliconTorch/Service/FxCyanF.hpp"
 #include "SiliconTorch/Service/Service.hpp"
+#include "SiliconTorch/Service/ServiceManager.hpp"
 
 
 
@@ -28,6 +29,7 @@ CyanLight::CyanLightControl* ctrl = NULL;
 
 
 SiliconTorch::ServiceManager::Service* fxCyan = NULL;
+SiliconTorch::ServiceManager::ServiceManager* mgr = NULL;
 
 
 
@@ -52,9 +54,13 @@ void device_main() {
     SiliconTorch::NVSExplorer::NVSExplorer::instance();
 
 
-    fxCyan = new SiliconTorch::Service::FxCyanF();
+    mgr = new SiliconTorch::ServiceManager::ServiceManager();
 
-    fxCyan->start();
+
+
+    // fxCyan = new SiliconTorch::Service::FxCyanF();
+
+    // fxCyan->start();
 
 
     xSemaphoreGive(mutex000);
-- 
GitLab