Download this file
#ifndef Scheduler_h
#define Scheduler_h
#if ARDUINO>=100
#include // Arduino 1.0
#else
#include // Arduino 0022
#endif
class Task {
public:
virtual bool canRun(uint32_t now) = 0;
virtual void run(uint32_t now) = 0;
};
class TimedTask : public Task {
public:
inline TimedTask(uint32_t when) { runTime = when; }
virtual bool canRun(uint32_t now);
inline void setRunTime(uint32_t when) { runTime = when; }
inline void incRunTime(uint32_t inc) { runTime += inc; }
inline uint32_t getRunTime() { return runTime; }
protected:
uint32_t runTime;
};
class TaskScheduler {
public:
TaskScheduler(Task **task, uint8_t numTasks);
void run();
private:
Task **tasks;
int numTasks;
};
#endif
// vim:ft=arduino