/* * task.hpp * * Created on: 6 мар. 2023 г. * Author: sychev * Во FreeRtos есть два способа создать задачу: * xTaskCreate - стэк выделяется динамически при создании задачи * xTaskCreateStatic - стек выделяется статически * Данный модуль реализован на основе xTaskCreate */ #ifndef FREE_RTOS_TASK_TASK_HPP_ #define FREE_RTOS_TASK_TASK_HPP_ #include #include #include "FreeRTOS.h" #include "task.h" namespace free_rtos { /** * @brief  Класс обертка реализующий создание задачи во free_rtos. */ class Task { public: /** * @brief Тип указателя на функцию задачи * */ using TaskFunction = TaskFunction_t; static const uint32_t TaskPriorityHiest = configMAX_PRIORITIES - 1; // 31 static const uint32_t TaskPriorityLowest = 0; // 0 bool Create(std::string name, uint32_t priority, TaskFunction task_fun, void * taskArg, int32_t stack_size_bytes = -1); ~Task() { vTaskDelete(taskHandle_); } private: static const uint32_t defStackSize_ = 8192; /// Размер стека по-умолчанию TaskHandle_t taskHandle_; }; } #endif /* FREE_RTOS_TASK_TASK_HPP_ */