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