#ifndef TASK_MANAGER_H_ #define TASK_MANAGER_H_ #include #include #include #include #include #include "TaskQueue.h" class Task { public: Task(String & name) : _name(name) {} Task(const char * name) : _name(name) {} virtual ~Task() {} String getName() const { return _name; } virtual bool setup(std::shared_ptr config, std::shared_ptr boardConfig) = 0; virtual bool loop(std::shared_ptr config) = 0; private: String _name; }; 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