add wifi and ethernet task to always run

pull/76/head
Peter Buchegger 2021-04-09 21:33:40 +02:00
rodzic 27d1996d10
commit c9f62133c3
3 zmienionych plików z 19 dodań i 2 usunięć

Wyświetl plik

@ -9,6 +9,10 @@ void TaskManager::addTask(std::shared_ptr<Task> task) {
_tasks.push_back(task);
}
void TaskManager::addAlwaysRunTask(std::shared_ptr<Task> task) {
_alwaysRunTasks.push_back(task);
}
std::shared_ptr<Task> TaskManager::getTask(const char *name) {
std::_List_iterator<std::shared_ptr<Task>> elem = std::find_if(_tasks.begin(), _tasks.end(), [&](std::shared_ptr<Task> task) {
return task->getName() == name;
@ -25,6 +29,11 @@ std::list<std::shared_ptr<Task>> TaskManager::getTasks() {
bool TaskManager::setup(std::shared_ptr<System> system) {
logPrintlnV("will setup all tasks...");
for (std::shared_ptr<Task> &elem : _alwaysRunTasks) {
logPrintW("call setup from ");
logPrintlnW(elem->getName());
elem->setup(system);
}
for (std::shared_ptr<Task> &elem : _tasks) {
logPrintW("call setup from ");
logPrintlnW(elem->getName());
@ -36,6 +45,12 @@ bool TaskManager::setup(std::shared_ptr<System> system) {
bool TaskManager::loop(std::shared_ptr<System> system) {
// logPrintlnD("will loop all tasks...");
for (std::shared_ptr<Task> &elem : _alwaysRunTasks) {
// logPrintD("call loop from ");
// logPrintlnD(elem->getName());
elem->loop(system);
}
if (_nextTask == _tasks.end()) {
_nextTask = _tasks.begin();
}

Wyświetl plik

@ -62,6 +62,7 @@ public:
}
void addTask(std::shared_ptr<Task> task);
void addAlwaysRunTask(std::shared_ptr<Task> task);
std::shared_ptr<Task> getTask(const char *name);
std::list<std::shared_ptr<Task>> getTasks();
@ -71,6 +72,7 @@ public:
private:
std::list<std::shared_ptr<Task>> _tasks;
std::list<std::shared_ptr<Task>>::iterator _nextTask;
std::list<std::shared_ptr<Task>> _alwaysRunTasks;
};
class StatusFrame : public DisplayFrame {

Wyświetl plik

@ -83,9 +83,9 @@ void setup() {
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new DisplayTask()));
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new LoraTask()));
if (boardConfig->Type == eETH_BOARD) {
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new EthTask()));
LoRaSystem->getTaskManager().addAlwaysRunTask(std::shared_ptr<Task>(new EthTask()));
} else {
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new WifiTask()));
LoRaSystem->getTaskManager().addAlwaysRunTask(std::shared_ptr<Task>(new WifiTask()));
}
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new OTATask()));
LoRaSystem->getTaskManager().addTask(std::shared_ptr<Task>(new NTPTask()));