From 64c80c661b583ab14f7e163c0abc0cc9572126c2 Mon Sep 17 00:00:00 2001
From: Jochen Vothknecht <jochen3120@gmail.com>
Date: Fri, 10 Jun 2022 18:48:44 +0200
Subject: [PATCH] Moving LambdaTask into SpiderLib and make stack size
 configurable

---
 CLC-qthing/SiliconTorch/CyanBus.cpp                  |  9 +++------
 CLC-qthing/SiliconTorch/CyanBus.hpp                  |  9 +++------
 CLC-qthing/SiliconTorch/FxCyanF.hpp                  |  2 +-
 CLC-qthing/SiliconTorch/SiliconTorch.cpp             |  5 +----
 .../{SiliconTorch => SpiderLib}/LambdaTask.cpp       | 12 ++++++------
 .../{SiliconTorch => SpiderLib}/LambdaTask.hpp       |  7 +++++--
 CLC-qthing/SpiderLib/SpiderLib.hpp                   |  1 +
 7 files changed, 20 insertions(+), 25 deletions(-)
 rename CLC-qthing/{SiliconTorch => SpiderLib}/LambdaTask.cpp (69%)
 rename CLC-qthing/{SiliconTorch => SpiderLib}/LambdaTask.hpp (79%)

diff --git a/CLC-qthing/SiliconTorch/CyanBus.cpp b/CLC-qthing/SiliconTorch/CyanBus.cpp
index 13e5b35..b53af7d 100644
--- a/CLC-qthing/SiliconTorch/CyanBus.cpp
+++ b/CLC-qthing/SiliconTorch/CyanBus.cpp
@@ -15,10 +15,7 @@
 
 // project specific
 #include "CyanBusCRC.hpp"
-#include "LambdaTask.hpp"
-#include "SpiderLib/Callback.hpp"
-#include "SpiderLib/CallbackMap.hpp"
-#include "SpiderLib/NumberTypes.hpp"
+#include <SpiderLib.hpp>
 
 // qthing stuff
 // #include ""
@@ -102,11 +99,11 @@ namespace SiliconTorch {
       rxEN(true);
 
 
-      readerTaskHandle = new Util::LambdaTask([&](){ readerTask(); });
+      readerTaskHandle = new SpiderLib::Util::LambdaTask([&](){ readerTask(); });
 
       // packetQ = xQueueCreate(3, sizeof(CyanData));
       packetQ = xQueueCreate(3, MTU);
-      packetTaskHandle = new Util::LambdaTask([&](){ packetTask(); });
+      packetTaskHandle = new SpiderLib::Util::LambdaTask([&](){ packetTask(); });
     }
 
     void CyanBus::readerTask() {
diff --git a/CLC-qthing/SiliconTorch/CyanBus.hpp b/CLC-qthing/SiliconTorch/CyanBus.hpp
index de76ae3..f6c8d00 100644
--- a/CLC-qthing/SiliconTorch/CyanBus.hpp
+++ b/CLC-qthing/SiliconTorch/CyanBus.hpp
@@ -9,10 +9,7 @@
 #include "freertos/queue.h"
 
 // project specific
-#include "LambdaTask.hpp"
-#include "SpiderLib/Callback.hpp"
-#include "SpiderLib/CallbackMap.hpp"
-#include "SpiderLib/NumberTypes.hpp"
+#include <SpiderLib.hpp>
 
 // qthing stuff
 // #include ""
@@ -73,8 +70,8 @@ namespace SiliconTorch {
         void readerTask();
         void packetTask();
 
-        Util::LambdaTask* readerTaskHandle = NULL;
-        Util::LambdaTask* packetTaskHandle = NULL;
+        SpiderLib::Util::LambdaTask* readerTaskHandle = NULL;
+        SpiderLib::Util::LambdaTask* packetTaskHandle = NULL;
 
     };
   }
diff --git a/CLC-qthing/SiliconTorch/FxCyanF.hpp b/CLC-qthing/SiliconTorch/FxCyanF.hpp
index 0a7d19e..b85de52 100644
--- a/CLC-qthing/SiliconTorch/FxCyanF.hpp
+++ b/CLC-qthing/SiliconTorch/FxCyanF.hpp
@@ -98,7 +98,7 @@ namespace SiliconTorch {
     };
 
 
-    FxCyanF* configureFromNVS(FxCyanF);
+    FxCyanF* configureFromNVS();
 
   }
 }
diff --git a/CLC-qthing/SiliconTorch/SiliconTorch.cpp b/CLC-qthing/SiliconTorch/SiliconTorch.cpp
index 857f2e1..c966c26 100644
--- a/CLC-qthing/SiliconTorch/SiliconTorch.cpp
+++ b/CLC-qthing/SiliconTorch/SiliconTorch.cpp
@@ -15,10 +15,7 @@
 
 // project specific
 #include "CyanBusCRC.hpp"
-#include "LambdaTask.hpp"
-#include "SpiderLib/Callback.hpp"
-#include "SpiderLib/CallbackMap.hpp"
-#include "SpiderLib/NumberTypes.hpp"
+#include <SpiderLib.hpp>
 
 // qthing stuff
 // #include ""
diff --git a/CLC-qthing/SiliconTorch/LambdaTask.cpp b/CLC-qthing/SpiderLib/LambdaTask.cpp
similarity index 69%
rename from CLC-qthing/SiliconTorch/LambdaTask.cpp
rename to CLC-qthing/SpiderLib/LambdaTask.cpp
index 5d9fef9..74f246a 100644
--- a/CLC-qthing/SiliconTorch/LambdaTask.cpp
+++ b/CLC-qthing/SpiderLib/LambdaTask.cpp
@@ -5,7 +5,7 @@
 #include "freertos/task.h"
 
 // project specific
-#include "SpiderLib/NumberTypes.hpp"
+#include <SpiderLib/NumberTypes.hpp>
 
 
 
@@ -19,7 +19,7 @@ static u16 nextID() {
   return taskID++;  // TODO: increment thread-safe!
 }
 
-SiliconTorch::Util::LambdaTask::LambdaTask(SiliconTorch::Util::Function0 body) : body(body) {
+SpiderLib::Util::LambdaTask::LambdaTask(SpiderLib::Util::Function0 body, u32 stackSize) : body(body) {
 
   char taskName[32];
   sprintf(taskName, "LambdaTask[%d]", nextID());
@@ -37,20 +37,20 @@ SiliconTorch::Util::LambdaTask::LambdaTask(SiliconTorch::Util::Function0 body) :
 
   std::function<void()>* __body = new std::function<void()>(_body);
 
-  xTaskCreatePinnedToCore(taskWrapper, taskName, 8192, (void*)__body, priority, &taskHandle, 1);
+  xTaskCreatePinnedToCore(taskWrapper, taskName, stackSize, (void*)__body, priority, &taskHandle, 1);
 
 }
 
-TaskHandle_t SiliconTorch::Util::LambdaTask::getHandle() {
+TaskHandle_t SpiderLib::Util::LambdaTask::getHandle() {
   return taskHandle;
 }
 
-bool SiliconTorch::Util::LambdaTask::running() {
+bool SpiderLib::Util::LambdaTask::running() {
   return _running;
 }
 
 // TODO: thread safe??? needed?
-void SiliconTorch::Util::LambdaTask::kill() {
+void SpiderLib::Util::LambdaTask::kill() {
   if (_running) vTaskDelete(getHandle());
   _running = false;
 }
diff --git a/CLC-qthing/SiliconTorch/LambdaTask.hpp b/CLC-qthing/SpiderLib/LambdaTask.hpp
similarity index 79%
rename from CLC-qthing/SiliconTorch/LambdaTask.hpp
rename to CLC-qthing/SpiderLib/LambdaTask.hpp
index 12abdf5..6bc1cfc 100644
--- a/CLC-qthing/SiliconTorch/LambdaTask.hpp
+++ b/CLC-qthing/SpiderLib/LambdaTask.hpp
@@ -7,8 +7,11 @@
 #include "freertos/FreeRTOS.h"
 #include "freertos/task.h"
 
+// project specific
+#include "NumberTypes.hpp"
 
-namespace SiliconTorch {
+
+namespace SpiderLib {
   namespace Util {
 
     typedef std::function<void()> Function0;
@@ -18,7 +21,7 @@ namespace SiliconTorch {
 
     class LambdaTask {
       public:
-        LambdaTask(Function0 body);
+        LambdaTask(Function0 body, u32 stackSize = 8192);
 
         void kill();
         bool running();
diff --git a/CLC-qthing/SpiderLib/SpiderLib.hpp b/CLC-qthing/SpiderLib/SpiderLib.hpp
index 8aa6258..1b5fe65 100644
--- a/CLC-qthing/SpiderLib/SpiderLib.hpp
+++ b/CLC-qthing/SpiderLib/SpiderLib.hpp
@@ -11,6 +11,7 @@
 #include <SpiderLib/Time.hpp>
 #include <SpiderLib/Util.hpp>
 #include <SpiderLib/Callback.hpp>
+#include <SpiderLib/LambdaTask.hpp>
 #include <SpiderLib/CallbackMap.hpp>
 #include <SpiderLib/NumberTypes.hpp>
 #include <SpiderLib/ObjectTypes.hpp>
-- 
GitLab