thread-manager: create on heap

Add a simple queue-manager test
This commit is contained in:
Vasily Davydov 2023-04-26 01:03:40 +03:00
parent 4a553e3093
commit ad4a100989
2 changed files with 5 additions and 9 deletions

View File

@ -11,7 +11,7 @@ int main(void)
{ {
SystemCoreClockUpdate(); SystemCoreClockUpdate();
Board_Init(); Board_Init();
ThreadCommon::ThreadManager manager; ThreadCommon::ThreadManager* manager = new ThreadCommon::ThreadManager;
ThreadCommon::QueueManager* qmanager = new ThreadCommon::QueueManager; ThreadCommon::QueueManager* qmanager = new ThreadCommon::QueueManager;
//Creating queues //Creating queues
qmanager->createQueue(100, qmanager->createQueue(100,
@ -19,13 +19,13 @@ int main(void)
ThreadCommon::QueueManager::master_event_all); ThreadCommon::QueueManager::master_event_all);
//Creating tasks //Creating tasks
manager.createTask(master_thread, "master", manager->createTask(master_thread, "master",
configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL,
static_cast<void*>(qmanager)); static_cast<void*>(qmanager));
//<Queue_test> //<Queue_test>
QueueHandle_t master_event_all_q = qmanager->getQueue(ThreadCommon::QueueManager::master_event_all); 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::Event>(ThreadCommon::QueueManager::master_event_all, e, 1000); qmanager->send<ThreadCommon::Event>(ThreadCommon::QueueManager::master_event_all, e, 1000);
//</Queue_test> //</Queue_test>

View File

@ -18,13 +18,9 @@ void Master::taskFunction() {
bool LedState = true; bool LedState = true;
for (;;) { for (;;) {
_qm->receive<ThreadCommon::Event>(ThreadCommon::QueueManager::master_event_all, &data, portMAX_DELAY); _qm->receive<ThreadCommon::Event>(ThreadCommon::QueueManager::master_event_all, &data, portMAX_DELAY);
if(data.getData() == 1 && data.getType() == ThreadCommon::EventType::Rotary){
Board_LED_Set(led, LedState); Board_LED_Set(led, LedState);
LedState = (bool) !LedState;
led++;
if(led > 2){
led = 0;
} }
vTaskDelay(1000);
} }
} }