From ad4a1009898ec80adda4ab6c31d0c5ec8a76b814 Mon Sep 17 00:00:00 2001 From: Vasily Davydov Date: Wed, 26 Apr 2023 01:03:40 +0300 Subject: [PATCH] thread-manager: create on heap Add a simple queue-manager test --- source/shoh/src/main.cpp | 6 +++--- source/shoh/src/threads/master/Master.cpp | 8 ++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/source/shoh/src/main.cpp b/source/shoh/src/main.cpp index d49e58c..7558463 100644 --- a/source/shoh/src/main.cpp +++ b/source/shoh/src/main.cpp @@ -11,7 +11,7 @@ int main(void) { SystemCoreClockUpdate(); Board_Init(); - ThreadCommon::ThreadManager manager; + ThreadCommon::ThreadManager* manager = new ThreadCommon::ThreadManager; ThreadCommon::QueueManager* qmanager = new ThreadCommon::QueueManager; //Creating queues qmanager->createQueue(100, @@ -19,13 +19,13 @@ int main(void) ThreadCommon::QueueManager::master_event_all); //Creating tasks - manager.createTask(master_thread, "master", + manager->createTask(master_thread, "master", configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, static_cast(qmanager)); // QueueHandle_t master_event_all_q = qmanager->getQueue(ThreadCommon::QueueManager::master_event_all); - ThreadCommon::Event* e = new ThreadCommon::Event(ThreadCommon::Null, 0); + ThreadCommon::Event* e = new ThreadCommon::Event(ThreadCommon::Rotary, 1); qmanager->send(ThreadCommon::QueueManager::master_event_all, e, 1000); // diff --git a/source/shoh/src/threads/master/Master.cpp b/source/shoh/src/threads/master/Master.cpp index 411baaa..e986e74 100644 --- a/source/shoh/src/threads/master/Master.cpp +++ b/source/shoh/src/threads/master/Master.cpp @@ -18,13 +18,9 @@ void Master::taskFunction() { bool LedState = true; for (;;) { _qm->receive(ThreadCommon::QueueManager::master_event_all, &data, portMAX_DELAY); - Board_LED_Set(led, LedState); - LedState = (bool) !LedState; - led++; - if(led > 2){ - led = 0; + if(data.getData() == 1 && data.getType() == ThreadCommon::EventType::Rotary){ + Board_LED_Set(led, LedState); } - vTaskDelay(1000); } }