00001
00032
00033
00034 #ifndef RTTIMER_H
00035 #define RTTIMER_H
00036
00037 #include "RtError.h"
00038 #include <string>
00039
00040 class RtTimer
00041 {
00042 public:
00043
00045 static const int MIN_PERIOD = 1;
00047 static const int MAX_PERIOD = 5000;
00048
00049 RtTimer();
00050 virtual ~RtTimer();
00051
00053
00060 typedef void (*RtTimerCallback)( double delta,
00061 double timeStamp,
00062 void *userData );
00063
00065
00071 void setCallback( RtTimerCallback callback, void *userData = 0 );
00072
00074
00077 void cancelCallback();
00078
00080
00083 void start(unsigned int period);
00084
00086
00089 void stop(void);
00090
00092
00098 double getTimestamp();
00099
00100
00101
00102 struct RtTimerData {
00103 void *apiData;
00104 void *userCallback;
00105 void *userData;
00106 bool doInput;
00107 bool firstMessage;
00108
00109 RtTimerData() : apiData(0),
00110 userCallback(0),
00111 userData(0),
00112 doInput(false),
00113 firstMessage(true) {}
00114 };
00115
00116 void *apiData_;
00117 std::string errorString_;
00118
00119 private:
00120
00121 void error( RtError::Type type );
00122
00123 RtTimerData inputData_;
00124 };
00125
00126 #endif