8 double amb::currentTime()
10 return Timestamp::instance()->currentTime();
13 amb::Timestamp* amb::Timestamp::mInstance = nullptr;
15 amb::Timestamp::Timestamp()
17 auto tm = std::chrono::system_clock::now();
18 auto tm2 = std::chrono::steady_clock::now();
20 double eTime = (std::chrono::duration_cast<std::chrono::milliseconds>(tm.time_since_epoch()).count() / 1000.00);
21 double sTime = (std::chrono::duration_cast<std::chrono::milliseconds>(tm2.time_since_epoch()).count() / 1000.00);
23 startTimeEpoch = eTime - sTime;
26 double amb::Timestamp::currentTime()
28 auto tm = std::chrono::steady_clock::now();
30 double time = std::chrono::duration_cast<std::chrono::milliseconds>(tm.time_since_epoch()).count() / 1000.00;
35 double amb::Timestamp::epochTime(double time)
37 return startTimeEpoch + time;
40 double amb::Timestamp::currentTime(double time)
42 return time - startTimeEpoch;
45 double amb::Timestamp::epochTime()
47 auto tm = std::chrono::system_clock::now();
49 double time = std::chrono::duration_cast<std::chrono::milliseconds>(tm.time_since_epoch()).count() / 1000.00;
54 amb::Timestamp* amb::Timestamp::instance()
57 mInstance = new Timestamp();
62 double amb::Timestamp::fromTimeval(const struct ::timeval &tv)
64 return tv.tv_sec*1.0 + tv.tv_usec*1e-6;
67 struct ::timeval amb::Timestamp::toTimeval(const double time)
69 return { (__time_t) time, (__suseconds_t)fmod(time*1e6, 1e6) };