1 #ifndef MADARA_UTILITY_SIMTIME_H_
2 #define MADARA_UTILITY_SIMTIME_H_
6 #include <madara/MadaraExport.h>
8 #define MADARA_EXTERN_C extern "C" MADARA_EXPORT
15 #define MADARA_EXTERN_C
18 #ifdef MADARA_FEATURE_SIMTIME
20 typedef void (*sim_time_callback_fn)(uint64_t*,
double*);
26 sim_time_callback_fn fn);
46 constexpr
bool simtime =
true;
48 class MADARA_EXPORT SimTime
51 static std::mutex mutex_;
52 static sim_time_callback_fn callback_;
54 static uint64_t last_realtime_;
55 static uint64_t last_simtime_;
56 static double last_rate_;
65 static uint64_t last_realtime()
67 std::lock_guard<std::mutex> guard(mutex_);
68 return last_realtime_;
75 static uint64_t last_simtime()
77 std::lock_guard<std::mutex> guard(mutex_);
84 static double last_rate()
86 std::lock_guard<std::mutex> guard(mutex_);
93 static uint64_t realtime();
99 static uint64_t realtime(uint64_t simtime);
104 static uint64_t time();
109 static double rate();
114 static uint64_t duration(uint64_t sim_duration);
119 static uint64_t future(uint64_t sim_offset);
121 friend sim_time_callback_fn utility::set_sim_time_callback(sim_time_callback_fn fn);
123 friend void utility::sim_time_notify(uint64_t,
double);
129 constexpr
bool simtime =
false;
Provides utility functions and classes for common tasks and needs.
Copyright(c) 2020 Galois.