#include <timeObj.h>
#include <idlers.h>
//*********************************************
// timedCallback class. Give it a time, then
// give it a function to call. This'll call
// that function for you whenever the time
// expires.
//
//*********************************************
//****************
// The .h stuff..
//****************
class timedCallback : public timeObj,
public idler {
public:
timedCallback(float inMs=10,bool startNow=true);
virtual ~timedCallback(void);
virtual void idle(void);
void setCallback(void(*funct)(void));
void (*callback)(void);
};
//****************
// The .cpp stuff..
//****************
timedCallback::timedCallback(float inMs,bool startNow)
: timeObj(inMs,startNow),
idler() { callback = NULL; }
timedCallback::~timedCallback(void) { }
void timedCallback::idle(void) {
if (ding()) {
if (callback) {
callback();
}
stepTime();
}
}
void timedCallback::setCallback(void(*funct)(void)) {
callback = funct;
hookup();
}
//*********************************************
// The Demo .ino
//*********************************************
timedCallback starter(3000);
int callbackNum = 1;
void setup() {
Serial.begin(115200);
Serial.println("Setting up to call the callback & blink the LED.");
pinMode(13,OUTPUT);
starter.setCallback(activateMachine);
}
void activateMachine(void) {
Serial.print("callback called #");
Serial.println(callbackNum++);
}
void loop() {
idle();
digitalWrite(13,HIGH);
sleep(250);
digitalWrite(13,LOW);
sleep(750);
}