29 #ifndef CSYSTEMCLOCK_HPP_
30 #define CSYSTEMCLOCK_HPP_
32 #include <sutil/CSingleton.hpp>
40 typedef double suClock;
103 static void tick(suClock arg_dt)
110 const suClock arg_time_increment=1.0,
111 const bool arg_increment_sim_clock=
true)
117 if(time_diff<arg_time_increment)
118 { sleep(arg_time_increment-time_diff); }
120 if(arg_increment_sim_clock)
129 timeval t_tick,t_diff,t_start(arg_t_start);
132 gettimeofday(&t_tick,NULL);
133 if (t_tick.tv_usec < t_start.tv_usec)
135 long int nsec = (t_start.tv_usec - t_tick.tv_usec) / 1000000 + 1;
136 t_start.tv_usec -= 1000000 * nsec;
137 t_start.tv_sec += nsec;
139 if (t_tick.tv_usec - t_start.tv_usec > 1000000)
141 long int nsec = (t_tick.tv_usec - t_start.tv_usec) / 1000000;
142 t_start.tv_usec += 1000000 * nsec;
143 t_start.tv_sec -= nsec;
147 t_diff.tv_sec = t_tick.tv_sec - t_start.tv_sec;
148 t_diff.tv_usec = t_tick.tv_usec - t_start.tv_usec;
150 return static_cast<suClock
>(t_diff.tv_sec)+(static_cast<suClock>(t_diff.tv_usec)/1000000.00);
static suClock computeTDiff(const timeval &arg_t_start)
Definition: CSystemClock.hpp:126
Definition: CSystemClock.hpp:45
static void progressToTime(const timeval &arg_t_start, const suClock arg_time_increment=1.0, const bool arg_increment_sim_clock=true)
Definition: CSystemClock.hpp:109
static suClock getSimTime()
Definition: CSystemClock.hpp:100
static bool start()
Definition: CSystemClock.hpp:86
Definition: CSingleton.hpp:47
timeval t_start_
Definition: CSystemClock.hpp:63
SSystemClock & operator=(const SSystemClock &)
CSystemClock & operator=(const CSystemClock &)
static SDataStruct * getData()
Definition: CSingleton.hpp:87
SSystemClock()
Definition: CSystemClock.hpp:49
suClock sim_time_
Definition: CSystemClock.hpp:60
static suClock getSysTime()
Definition: CSystemClock.hpp:95
Definition: CSystemClock.hpp:81