#ifndef Task_h
#define Task_h

#include "WProgram.h"

class Task
{
	
public:

	virtual void init();
	virtual void execute() = 0;
	void run(unsigned long time);
	
	boolean isEnded()           { return ended; }

protected:

	void resetUserTime();

	unsigned long getTime()     { return time; }
	unsigned long getPrevTime() { return prevTime; }
  	unsigned long getUserTime() { return userTime; }
	unsigned long getInterval() { return interval; }
  	
  	void setInterval(unsigned long _interval) { interval = _interval; }
	
private:

	unsigned long time;
	unsigned long prevTime;
	unsigned long interval;
	unsigned long userStartTime;
	unsigned long userTime;
	boolean ended;

};

#endif
