#ifndef FRAMEWORK_TASK_PERIODICTASKIF_H_ #define FRAMEWORK_TASK_PERIODICTASKIF_H_ #include "../objectmanager/SystemObjectIF.h" #include "../timemanager/Clock.h" #include class ExecutableObjectIF; /** * New version of TaskIF * Follows RAII principles, i.e. there's no create or delete method. * Minimalistic. */ class PeriodicTaskIF { public: static const size_t MINIMUM_STACK_SIZE; /** * @brief A virtual destructor as it is mandatory for interfaces. */ virtual ~PeriodicTaskIF() { } /** * @brief With the startTask method, a created task can be started * for the first time. */ virtual ReturnValue_t startTask() = 0; /** * Add a component (object) to a periodic task. The pointer to the * task can be set optionally * @param object * Add an object to the task. The most important case is to add an * executable object with a function which will be called regularly * (see ExecutableObjectIF) * @param setTaskIF * Can be used to specify whether the task object pointer is passed * to the component. * @return */ virtual ReturnValue_t addComponent(object_id_t object) { return HasReturnvaluesIF::RETURN_FAILED; }; virtual ReturnValue_t sleepFor(uint32_t ms) = 0; virtual uint32_t getPeriodMs() const = 0; }; #endif /* PERIODICTASKIF_H_ */