4#include "freertos/FreeRTOS.h"
5#include "freertos/task.h"
6#elif defined(__linux__)
24 Task(
const char* name,
int stackSize,
int priority = 1,
int core = -1) {
25 create(name, stackSize, priority, core);
32 bool create(
const char* name,
int stackSize,
int priority = 1,
34 if (xHandle != 0)
return false;
37 xTaskCreatePinnedToCore(task_loop, name, stackSize,
this, priority,
40 xTaskCreate(task_loop, name, stackSize,
this, priority, &xHandle);
42 xTaskCreate(task_loop, name, stackSize,
this, priority, &xHandle);
50 if (xHandle !=
nullptr) {
57 bool begin(std::function<
void()> process) {
65 void end() { suspend(); }
67 void suspend() { vTaskSuspend(xHandle); }
69 void resume() { vTaskResume(xHandle); }
71 TaskHandle_t &getTaskHandle() {
75 void setReference(
void *r){
85 return xPortGetCoreID();
90 TaskHandle_t xHandle =
nullptr;
91 std::function<void()> loop_code = nop;
94 static void nop() { delay(100); }
96 static void task_loop(
void* arg) {