2021-01-03 21:43:35 +00:00
|
|
|
#include <logger.h>
|
|
|
|
#include "TaskManager.h"
|
2021-01-30 21:47:24 +00:00
|
|
|
#include <FontConfig.h>
|
2021-01-03 21:43:35 +00:00
|
|
|
|
|
|
|
TaskManager::TaskManager()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void TaskManager::addTask(std::shared_ptr<Task> task)
|
|
|
|
{
|
|
|
|
_tasks.push_back(task);
|
|
|
|
}
|
|
|
|
|
2021-01-04 22:10:23 +00:00
|
|
|
std::shared_ptr<Task> TaskManager::getTask(const char * name)
|
2021-01-03 21:43:35 +00:00
|
|
|
{
|
2021-01-19 23:31:02 +00:00
|
|
|
std::_List_iterator<std::shared_ptr<Task>> elem = std::find_if(_tasks.begin(), _tasks.end(), [&](std::shared_ptr<Task> task)
|
2021-01-03 21:43:35 +00:00
|
|
|
{
|
2021-01-19 23:31:02 +00:00
|
|
|
return task->getName() == name;
|
|
|
|
});
|
|
|
|
if(elem == _tasks.end())
|
|
|
|
{
|
|
|
|
return 0;
|
2021-01-03 21:43:35 +00:00
|
|
|
}
|
2021-01-19 23:31:02 +00:00
|
|
|
return *elem;
|
2021-01-03 21:43:35 +00:00
|
|
|
}
|
|
|
|
|
2021-01-30 21:47:24 +00:00
|
|
|
std::list<std::shared_ptr<Task>> TaskManager::getTasks()
|
|
|
|
{
|
|
|
|
return _tasks;
|
|
|
|
}
|
|
|
|
|
2021-01-04 22:10:23 +00:00
|
|
|
bool TaskManager::setup(std::shared_ptr<Configuration> config, std::shared_ptr<BoardConfig> boardConfig)
|
2021-01-03 21:43:35 +00:00
|
|
|
{
|
|
|
|
logPrintlnV("will setup all tasks...");
|
|
|
|
for(std::shared_ptr<Task> & elem : _tasks)
|
|
|
|
{
|
|
|
|
logPrintW("call setup from ");
|
|
|
|
logPrintlnW(elem->getName());
|
2021-01-04 22:10:23 +00:00
|
|
|
if(!elem->setup(config, boardConfig))
|
2021-01-03 21:43:35 +00:00
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TaskManager::loop(std::shared_ptr<Configuration> config)
|
|
|
|
{
|
|
|
|
//logPrintlnD("will loop all tasks...");
|
|
|
|
for(std::shared_ptr<Task> & elem : _tasks)
|
|
|
|
{
|
|
|
|
//logPrintD("call loop from ");
|
|
|
|
//logPrintlnD(elem->getName());
|
|
|
|
if(!elem->loop(config))
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
2021-01-19 23:31:02 +00:00
|
|
|
}
|
2021-01-30 21:47:24 +00:00
|
|
|
|
|
|
|
void StatusFrame::drawStatusPage(Bitmap & bitmap)
|
|
|
|
{
|
|
|
|
int y = 0;
|
|
|
|
for(std::shared_ptr<Task> task : _tasks)
|
|
|
|
{
|
|
|
|
int x = bitmap.drawString(0, y, (task->getName()).substring(0, task->getName().indexOf("Task")));
|
|
|
|
x = bitmap.drawString(x, y, ": ");
|
|
|
|
if(task->getStateInfo() == "")
|
|
|
|
{
|
|
|
|
switch (task->getState())
|
|
|
|
{
|
|
|
|
case Error:
|
|
|
|
bitmap.drawString(x, y, "Error");
|
|
|
|
break;
|
|
|
|
case Warning:
|
|
|
|
bitmap.drawString(x, y, "Warning");
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
bitmap.drawString(x, y, "Okay");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
bitmap.drawString(x, y, task->getStateInfo());
|
|
|
|
}
|
|
|
|
y += getSystemFont()->heightInPixel;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool StatusFrame::isPrio() const
|
|
|
|
{
|
|
|
|
for(std::shared_ptr<Task> task : _tasks)
|
|
|
|
{
|
|
|
|
if(task->getState() != Okay)
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|