MRPT  2.0.3
CRateTimer.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include "system-precomp.h" // Precompiled headers
11 
12 #include <mrpt/core/exceptions.h>
13 #include <mrpt/system/CRateTimer.h>
14 #include <chrono>
15 #include <thread>
16 
17 using namespace mrpt::system;
18 
19 CRateTimer::CRateTimer(const double rate_hz) { setRate(rate_hz); }
20 void CRateTimer::setRate(const double rate_hz)
21 {
22  ASSERT_ABOVE_(rate_hz, 0.0);
23  m_rate_hz = rate_hz;
24 }
26 {
27  const double elapsed_tim = m_tictac.Tac();
28  const double period = 1.0 / m_rate_hz;
29  const int64_t wait_tim_us =
30  static_cast<int64_t>(1000000L * (period - elapsed_tim));
31  if (elapsed_tim > period)
32  {
33  m_tictac.Tic();
34  return false;
35  }
36  std::this_thread::sleep_for(std::chrono::microseconds(wait_tim_us));
37  m_tictac.Tic();
38  return true;
39 }
ASSERT_ABOVE_
#define ASSERT_ABOVE_(__A, __B)
Definition: exceptions.h:155
exceptions.h
system-precomp.h
mrpt::system::CTicTac::Tac
double Tac() noexcept
Stops the stopwatch.
Definition: CTicTac.cpp:86
mrpt::system::CRateTimer::m_tictac
mrpt::system::CTicTac m_tictac
Definition: system/CRateTimer.h:40
mrpt::system::CRateTimer::sleep
bool sleep()
Sleeps for some time, such as the return of this method is 1/rate (seconds) after the return of the p...
Definition: CRateTimer.cpp:25
mrpt::system::CRateTimer::CRateTimer
CRateTimer(const double rate_hz=1.0)
Ctor: specifies the desired rate (Hz)
Definition: CRateTimer.cpp:19
mrpt::system::CRateTimer::setRate
void setRate(const double rate_hz)
Changes the object loop rate (Hz)
Definition: CRateTimer.cpp:20
mrpt::system::CTicTac::Tic
void Tic() noexcept
Starts the stopwatch.
Definition: CTicTac.cpp:75
CRateTimer.h
mrpt::system::CRateTimer::m_rate_hz
double m_rate_hz
Definition: system/CRateTimer.h:39
mrpt::system
Definition: backtrace.h:14



Page generated by Doxygen 1.8.17 for MRPT 2.0.3 at Fri May 29 13:06:46 UTC 2020