action
container
contrib
controller
coordinates
datalinklayer
datapool
datapoolglob
datapoollocal
devicehandlers
events
fdir
globalfunctions
health
housekeeping
internalError
ipc
memory
modes
monitoring
objectmanager
osal
FreeRTOS
BinSemaphUsingTask.cpp
BinSemaphUsingTask.h
BinarySemaphore.cpp
BinarySemaphore.h
Clock.cpp
CountingSemaphUsingTask.cpp
CountingSemaphUsingTask.h
CountingSemaphore.cpp
CountingSemaphore.h
FixedTimeslotTask.cpp
FixedTimeslotTask.h
MessageQueue.cpp
MessageQueue.h
Mutex.cpp
Mutex.h
MutexFactory.cpp
PeriodicTask.cpp
PeriodicTask.h
QueueFactory.cpp
README.md
SemaphoreFactory.cpp
TaskFactory.cpp
TaskManagement.cpp
TaskManagement.h
Timekeeper.cpp
Timekeeper.h
host
linux
rtems
Endiness.h
InternalErrorCodes.h
parameters
power
returnvalues
rmap
serialize
serviceinterface
storagemanager
subsystem
tasks
tcdistribution
thermal
timemanager
tmstorage
tmtcpacket
tmtcservices
.gitignore
LICENSE
NOTICE
framework.mk
54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#include <framework/tasks/TaskFactory.h>
|
|
#include <framework/returnvalues/HasReturnvaluesIF.h>
|
|
|
|
#include "PeriodicTask.h"
|
|
#include "FixedTimeslotTask.h"
|
|
|
|
|
|
TaskFactory* TaskFactory::factoryInstance = new TaskFactory();
|
|
|
|
TaskFactory::~TaskFactory() {
|
|
}
|
|
|
|
TaskFactory* TaskFactory::instance() {
|
|
return TaskFactory::factoryInstance;
|
|
}
|
|
|
|
PeriodicTaskIF* TaskFactory::createPeriodicTask(TaskName name_,
|
|
TaskPriority taskPriority_, TaskStackSize stackSize_,
|
|
TaskPeriod period_,
|
|
TaskDeadlineMissedFunction deadLineMissedFunction_) {
|
|
return (PeriodicTaskIF*) (new PeriodicTask(name_, taskPriority_, stackSize_,
|
|
period_, deadLineMissedFunction_));
|
|
}
|
|
|
|
/**
|
|
* Keep in Mind that you need to call before this vTaskStartScheduler()!
|
|
*/
|
|
FixedTimeslotTaskIF* TaskFactory::createFixedTimeslotTask(TaskName name_,
|
|
TaskPriority taskPriority_, TaskStackSize stackSize_,
|
|
TaskPeriod period_,
|
|
TaskDeadlineMissedFunction deadLineMissedFunction_) {
|
|
return (FixedTimeslotTaskIF*) (new FixedTimeslotTask(name_, taskPriority_,
|
|
stackSize_, period_, deadLineMissedFunction_));
|
|
}
|
|
|
|
ReturnValue_t TaskFactory::deleteTask(PeriodicTaskIF* task) {
|
|
if (task == nullptr) {
|
|
//delete self
|
|
vTaskDelete(nullptr);
|
|
return HasReturnvaluesIF::RETURN_OK;
|
|
} else {
|
|
//TODO not implemented
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
}
|
|
}
|
|
|
|
ReturnValue_t TaskFactory::delayTask(uint32_t delayMs) {
|
|
vTaskDelay(pdMS_TO_TICKS(delayMs));
|
|
return HasReturnvaluesIF::RETURN_OK;
|
|
}
|
|
|
|
TaskFactory::TaskFactory() {
|
|
}
|