23 #ifndef EVENTSCHEDULER_H
24 #define EVENTSCHEDULER_H
31 template<
class This >
35 typedef void (This::*Callback) ();
39 Callback
const m_callback;
42 void event() { (m_this.*m_callback)(); }
45 EventCallback(
const char *
const name, This &_this, Callback callback) :
48 m_callback(callback) {}
61 event_clock_t currentTime;
72 void schedule(
Event &event)
75 Event **scan = &firstEvent;
78 if (*scan == 0 || (*scan)->triggerTime > event.triggerTime)
84 scan = &((*scan)->next);
93 event.triggerTime = (cycles << 1) + currentTime + ((currentTime & 1) ^
phase);
99 event.triggerTime = (cycles << 1) + currentTime;
116 Event &
event = *firstEvent;
117 firstEvent = firstEvent->next;
118 currentTime =
event.triggerTime;
126 return (currentTime + (phase ^ 1)) >> 1;
134 event_phase_t
phase()
const {
return (event_phase_t) (currentTime & 1); }
137 #endif // EVENTSCHEDULER_H
Definition: EventScheduler.h:57
void reset()
Definition: EventScheduler.cpp:26
bool isPending(Event &event) const
Definition: EventScheduler.cpp:51
event_clock_t getTime(event_phase_t phase) const
Definition: EventScheduler.h:124
void clock()
Definition: EventScheduler.h:114
void schedule(Event &event, event_clock_t cycles, event_phase_t phase)
Definition: EventScheduler.h:89
Definition: EventScheduler.h:32
event_phase_t phase() const
Definition: EventScheduler.h:134
void schedule(Event &event, event_clock_t cycles)
Definition: EventScheduler.h:97
Event(const char *const name)
Definition: event.h:71
event_clock_t getTime(event_clock_t clock, event_phase_t phase) const
Definition: EventScheduler.h:129
void cancel(Event &event)
Definition: EventScheduler.cpp:32