ESP_IOT v2.5
IOT ESP Coding
Task.cpp
Go to the documentation of this file.
1#include "../../Defines.h"
2
3#ifdef USE_FAST_LED
4
5#include <esp_log.h>
6#include <freertos/FreeRTOS.h>
7#include <freertos/task.h>
8#include <string>
9
10#include "Task.h"
11
12static char tag[] = "Task";
13
14Task::Task(std::string taskName, uint16_t taskSize, uint8_t priority)
15{
16 m_handle = nullptr;
17 m_taskdata = nullptr;
18 m_taskname = taskName;
19 m_tasksize = taskSize;
20 m_priority = priority;
21 m_coreid = tskNO_AFFINITY;
22}
23
25{
26}
27
28void Task::runTask(void* pTaskInstance)
29{
30 Task* pTask = (Task*)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());
34 pTask->stop();
35}
36
37void Task::start(void* taskData)
38{
39 if( m_handle != nullptr )
40 {
41 ESP_LOGD(tag, "[] Task %s is already running", m_taskname.c_str());
42 }
43 m_taskdata = taskData;
44 ::xTaskCreatePinnedToCore(&runTask, m_taskname.c_str(), m_tasksize, this, m_priority, &m_handle, m_coreid);
45}
46
48{
49 if( m_handle == nullptr )
50 {
51 return;
52 }
53 xTaskHandle handleTemp = m_handle;
54 m_handle = nullptr;
55 ::vTaskDelete(handleTemp);
56}
57
58void Task::delay(int ms)
59{
60 ::vTaskDelay(ms/portTICK_PERIOD_MS);
61}
62
63void Task::setTaskSize( uint16_t size )
64{
65 m_tasksize = size;
66}
67
68void Task::setTaskPriority( uint8_t priority)
69{
70 m_priority = priority;
71}
72
73void Task::setTaskName(std::string name)
74{
75 m_taskname = name;
76}
77
78void Task::setCore(BaseType_t coreID)
79{
80 m_coreid = coreID;
81}
82
83
84#endif //USE_FAST_LED
Definition: Task.h:13
void setTaskSize(uint16_t size)
Definition: Task.cpp:63
Task(std::string taskName="task", uint16_t taskSize=10240, uint8_t priority=5)
Definition: Task.cpp:14
virtual void run(void *data)=0
~Task()
Definition: Task.cpp:24
void setCore(BaseType_t coreID)
Definition: Task.cpp:78
void start(void *taskData=nullptr)
Definition: Task.cpp:37
void setTaskPriority(uint8_t priority)
Definition: Task.cpp:68
void delay(int ms)
Definition: Task.cpp:58
void stop()
Definition: Task.cpp:47
void setTaskName(std::string name)
Definition: Task.cpp:73