18 #ifndef __igstkPulseGenerator_h
19 #define __igstkPulseGenerator_h
62 void RequestSetFrequency(
double frequency );
81 static void Sleep(
unsigned int milliseconds );
92 virtual void PrintSelf( std::ostream& os, itk::Indent indent )
const;
100 double m_FrequencyToBeSet;
104 igstkDeclareInputMacro( ValidFrequency );
105 igstkDeclareInputMacro( InvalidLowFrequency );
106 igstkDeclareInputMacro( InvalidHighFrequency );
107 igstkDeclareInputMacro( Stop );
108 igstkDeclareInputMacro( Start );
109 igstkDeclareInputMacro( Pulse );
110 igstkDeclareInputMacro( EventReturn );
113 igstkDeclareStateMacro( Initial );
114 igstkDeclareStateMacro( Stopped );
115 igstkDeclareStateMacro( Pulsing );
116 igstkDeclareStateMacro( WaitingEventReturn );
119 void SetFrequencyProcessing();
122 void ReportErrorConditionProcessing();
127 void ReportMissedPulseProcessing();
131 static double m_MaximumFrequency;
134 static void CallbackTimerGlobal(
void * );
137 void CallbackTimer();
141 void SetTimerProcessing();
144 void EmitPulseProcessing();
147 void StopPulsesProcessing();
165 typedef void (*TimeoutHandler)(
void*);
167 static void AddTimeout(
double time, TimeoutHandler cb,
void* data);
169 static void RepeatTimeout(
double time, TimeoutHandler cb,
void *argp);
171 static void RemoveTimeout( TimeoutHandler cb,
void *argp);
173 static void ElapseTimeouts();
175 static void InvokeTimeoutActions();
178 static double m_PreviousClock;
180 static Timeout * m_FirstTimeout;
182 static Timeout * m_FreeTimeout;
184 static unsigned int m_FreeTimeoutCount;
186 static unsigned int m_NumberOfPulseGenerators;
188 mutable itk::SimpleFastMutexLock m_NumberOfPulseGeneratorsLock;
190 static char m_ResetClock;
192 static double m_MissedTimeoutBy;
198 #endif //__igstk_PulseGenerator_h_
This class produces ClockTickEvents at a user-defined frequency.
virtual void PrintSelf(std::ostream &os, itk::Indent indent) const
Print the object information.
#define igstkGetMacro(name, type)
Get built-in type.
void RequestStop()
Request to stop generating pulses.
Base class for all the IGSTK classes.
virtual ~PulseGenerator(void)
#define igstkStandardClassTraitsMacro(classname, superclassname)
Convenience macro for traits of a non-templated class.
defines standard system-wide macros, constants, and other common parameters in the IGSTK Library...
static void CheckTimeouts()
Method to be called from the main event loop in order to keep the timers counting.
static void Sleep(unsigned int milliseconds)
Sleep for a number of milliseconds.
PulseGenerator(void)
Constructor is protected in order to enforce the use of the New() operator.