3 #if defined(USE_CONCURRENCY)
5 #include "freertos/FreeRTOS.h"
6 #include "freertos/task.h"
22 Task(
const char* name,
int stackSize,
int priority = 1,
int core = -1) {
23 create(name, stackSize, priority, core);
30 bool create(
const char* name,
int stackSize,
int priority = 1,
32 if (xHandle != 0)
return false;
35 xTaskCreatePinnedToCore(task_loop, name, stackSize,
this, priority,
38 xTaskCreate(task_loop, name, stackSize,
this, priority, &xHandle);
40 xTaskCreate(task_loop, name, stackSize,
this, priority, &xHandle);
48 if (xHandle !=
nullptr) {
55 bool begin(std::function<
void()> process) {
63 void end() { suspend(); }
65 void suspend() { vTaskSuspend(xHandle); }
67 void resume() { vTaskResume(xHandle); }
69 TaskHandle_t &getTaskHandle() {
73 void setReference(
void *r){
83 return xPortGetCoreID();
88 TaskHandle_t xHandle =
nullptr;
89 std::function<void()> loop_code = nop;
92 static void nop() {
delay(100); }
94 static void task_loop(
void* arg) {