1#include "../../Defines.h"
6#include <freertos/FreeRTOS.h>
7#include <freertos/task.h>
12static char tag[] =
"Task";
14Task::Task(std::string taskName, uint16_t taskSize, uint8_t priority)
18 m_taskname = taskName;
19 m_tasksize = taskSize;
20 m_priority = priority;
21 m_coreid = tskNO_AFFINITY;
28void Task::runTask(
void* pTaskInstance)
31 ESP_LOGD(tag,
">> Task %s run", pTask->m_taskname.c_str());
32 pTask->
run(pTask->m_taskdata);
33 ESP_LOGD(tag,
"<< Task %s stop", pTask->m_taskname.c_str());
39 if( m_handle !=
nullptr )
41 ESP_LOGD(tag,
"[] Task %s is already running", m_taskname.c_str());
43 m_taskdata = taskData;
44 ::xTaskCreatePinnedToCore(&runTask, m_taskname.c_str(), m_tasksize,
this, m_priority, &m_handle, m_coreid);
49 if( m_handle ==
nullptr )
53 xTaskHandle handleTemp = m_handle;
55 ::vTaskDelete(handleTemp);
60 ::vTaskDelay(ms/portTICK_PERIOD_MS);
70 m_priority = priority;
void setTaskSize(uint16_t size)
Task(std::string taskName="task", uint16_t taskSize=10240, uint8_t priority=5)
virtual void run(void *data)=0
void setCore(BaseType_t coreID)
void start(void *taskData=nullptr)
void setTaskPriority(uint8_t priority)
void setTaskName(std::string name)