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
/*
class FooTask: public TimedTask {
public:
FooTask(): TimedTask(millis()) {};
void run(uint32_t now) { incRunTime(10); }
};
FooTask foo;
Task* tasks[] = { &foo };
TaskScheduler scheduler(tasks, 1);
void setup() {
scheduler.run();
}
void loop() {
}
*/
// vim:ft=arduino