#ifndef TASK_MANAGER_H_ #define TASK_MANAGER_H_ #include #include #include #include #include #include "TaskQueue.h" class Task { public: Task(String & name, int taskId) : _name(name), _taskId(taskId) {} Task(const char * name, int taskId) : _name(name), _taskId(taskId) {} virtual ~Task() {} String getName() const { return _name; } int getTaskId() const { return _taskId; } virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) = 0; virtual bool loop(std::shared_ptr config) = 0; private: String _name; int _taskId; }; class TaskManager { public: static TaskManager & instance() { static TaskManager _instance; return _instance; } ~TaskManager() {} void addTask(std::shared_ptr task); std::shared_ptr getTask(const char * name); bool setup(std::shared_ptr config, std::shared_ptr boardConfig); bool loop(std::shared_ptr config); private: std::list> _tasks; TaskManager(); TaskManager(const TaskManager &); TaskManager & operator = (const TaskManager &); }; #endif