23 #ifndef EVENTSCHEDULER_H 24 #define EVENTSCHEDULER_H 29 template<
class This >
33 typedef void (This::*Callback) ();
37 Callback
const m_callback;
40 void event() { (m_this.*m_callback)(); }
43 EventCallback(
const char *
const name, This &_this, Callback callback) :
46 m_callback(callback) {}
59 event_clock_t currentTime;
70 void schedule(
Event &event)
73 Event **scan = &firstEvent;
76 if (*scan == 0 || (*scan)->triggerTime > event.triggerTime)
82 scan = &((*scan)->next);
91 event.triggerTime = currentTime + ((currentTime & 1) ^ phase) + (cycles << 1);
97 event.triggerTime = currentTime + (cycles << 1);
101 void cancel(
Event &event);
118 Event &
event = *firstEvent;
119 firstEvent = firstEvent->next;
120 currentTime =
event.triggerTime;
127 bool isPending(
Event &event)
const;
129 event_clock_t
getTime(event_phase_t phase)
const 131 return (currentTime + (phase ^ 1)) >> 1;
134 event_clock_t
getTime(event_clock_t clock, event_phase_t phase)
const 136 return getTime (phase) - clock;
139 event_phase_t
phase()
const {
return (event_phase_t) (currentTime & 1); }
142 #endif // EVENTSCHEDULER_H Definition: EventScheduler.h:55
void clock()
Definition: EventScheduler.h:116
event_clock_t getTime(event_clock_t clock, event_phase_t phase) const
Definition: EventScheduler.h:134
Definition: EventScheduler.h:30
event_phase_t phase() const
Definition: EventScheduler.h:139
void schedule(Event &event, unsigned int cycles)
Definition: EventScheduler.h:95
Event(const char *const name)
Definition: event.h:77
void schedule(Event &event, unsigned int cycles, event_phase_t phase)
Definition: EventScheduler.h:87
event_clock_t getTime(event_phase_t phase) const
Definition: EventScheduler.h:129