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 12 #define MADARA_EXTERN_C 15 #ifdef MADARA_FEATURE_SIMTIME 17 typedef void (*sim_time_callback_fn)(uint64_t*,
double*);
23 sim_time_callback_fn fn);
43 constexpr
bool simtime =
true;
47 static std::mutex mutex_;
48 static sim_time_callback_fn callback_;
50 static uint64_t last_realtime_;
51 static uint64_t last_simtime_;
52 static double last_rate_;
57 static uint64_t last_realtime() {
58 std::lock_guard<std::mutex> guard(mutex_);
59 return last_realtime_;
62 static uint64_t last_simtime() {
63 std::lock_guard<std::mutex> guard(mutex_);
67 static double last_rate() {
68 std::lock_guard<std::mutex> guard(mutex_);
72 static uint64_t realtime();
73 static uint64_t time();
75 static uint64_t duration(uint64_t sim_duration);
76 static uint64_t future(uint64_t sim_offset);
78 friend sim_time_callback_fn set_sim_time_callback(
79 sim_time_callback_fn fn);
81 friend void sim_time_notify(uint64_t,
double);
84 #endif // ifdef __cplusplus 87 constexpr
bool simtime =
false;
Provides utility functions and classes for common tasks and needs.
Copyright (c) 2015 Carnegie Mellon University.