42 lines
900 B
C++
42 lines
900 B
C++
/*
|
|
* task.cpp
|
|
*
|
|
* Created on: 6 ìàð. 2023 ã.
|
|
* Author: sychev
|
|
*/
|
|
#include "task/task.hpp"
|
|
|
|
bool free_rtos::Task::Create(std::string name, uint32_t priority, TaskFunction task_fun,
|
|
void * taskArg, int32_t stack_size_bytes)
|
|
{
|
|
if ( (priority > TaskPriorityHiest) || (task_fun == nullptr) ) {
|
|
return false;
|
|
}
|
|
|
|
if (stack_size_bytes < 0)
|
|
{
|
|
stack_size_bytes = defStackSize_;
|
|
}
|
|
|
|
/// Ñòåê äîëæåí áûòü âûðîâíåí ïî ãðàíèöå 32 áàéòà
|
|
if (stack_size_bytes % 32) {
|
|
return false;
|
|
}
|
|
|
|
auto ret = xTaskCreate(task_fun,
|
|
name.c_str(),
|
|
stack_size_bytes / sizeof(configSTACK_DEPTH_TYPE),
|
|
taskArg,
|
|
priority,
|
|
&taskHandle_);
|
|
|
|
if (pdPASS != ret) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
|