thread-manager: create master task with manager

This commit is contained in:
Vasily Davydov
2023-04-25 22:47:31 +03:00
parent f85bf8ef8d
commit 927409d2a8
5 changed files with 61 additions and 27 deletions

View File

@@ -4,9 +4,16 @@
* Created on: 13 Apr 2023
* Author: tylen
*/
#ifndef __THREAD_COMMON_H_
#define __THREAD_COMMON_H_
#include "board.h"
#include "FreeRTOS.h"
#include <string>
#include "queue.h"
#include "task.h"
#include <assert.h>
namespace ThreadCommon
{
@@ -41,12 +48,25 @@ namespace ThreadCommon
uint8_t _data;
};
class ThreadManager
{
public:
ThreadManager();
~ThreadManager() = default;
bool createTask(void (*task_func)(void*),
std::string name,
size_t stack_size,
size_t priority,
void* parameters);
private:
};
/* global variables */
/* 'receiver'_'what'_'sender'_q */
extern QueueHandle_t master_event_all_q;
extern QueueHandle_t relay_event_master_q;
extern QueueHandle_t manager_event_master_q;
extern QueueHandle_t ui_event_manager_q;
}
#endif /*__THREAD_COMMON_H_*/

View File

@@ -0,0 +1,21 @@
#include "ThreadCommon.h"
ThreadCommon::ThreadManager::ThreadManager(){}
bool ThreadCommon::ThreadManager::createTask(void (*task_func)(void*),
std::string name,
size_t stack_size,
size_t priority,
void* parameters)
{
const char * t_name = name.c_str();
BaseType_t taskCreated = xTaskCreate(task_func,
t_name,
stack_size,
parameters,
priority,
NULL);
assert(taskCreated == pdPASS);
return (taskCreated == pdPASS);
}