/**
* @file Sched.hh
*
* Author: Peter Helfer
* Date: 2016-11-03
*/
#ifndef SCHED_HH
#define SCHED_HH
#include "Util.hh"
/**
* Event scheduler
*/
namespace Sched {
/**
* Callback function signatures
*/
typedef void (*NoneCallback)(double scheduledTime,
double currentTime);
typedef void (*UintCallback)(double scheduledTime,
double currentTime,
uint data);
typedef void (*DbleCallback)(double scheduledTime,
double currentTime,
double data);
typedef void (*VoidPtrCallback)(double scheduledTime,
double currentTime,
void *data);
/**
* Schedule an event
* @param time Time for which event will be scheduled
* @param cb Callback function
* @param data Will be passed as parameter to cb
*/
void scheduleEvent(
double time,
NoneCallback cb);
void scheduleEvent(
double time,
UintCallback cb,
uint data);
void scheduleEvent(
double time,
DbleCallback cb,
double data);
void scheduleEvent(
double time,
VoidPtrCallback cb,
void *data);
/**
* Clear all scheduled events
*/
void clearEvents();
/**
* Process all events scheduled to run at or before the specified time
*/
void processEvents(double time);
}
#endif