summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CAN-binder/low-can-binding/utils/timer.cpp11
-rw-r--r--CAN-binder/low-can-binding/utils/timer.hpp3
2 files changed, 14 insertions, 0 deletions
diff --git a/CAN-binder/low-can-binding/utils/timer.cpp b/CAN-binder/low-can-binding/utils/timer.cpp
index 3bc96a3a..8c6215b0 100644
--- a/CAN-binder/low-can-binding/utils/timer.cpp
+++ b/CAN-binder/low-can-binding/utils/timer.cpp
@@ -17,6 +17,7 @@
#include <time.h>
#include <stdlib.h>
+#include <cmath>
#include "timer.hpp"
@@ -65,6 +66,16 @@ float frequency_clock_t::frequency_to_period()
return frequency_ == 0 ? 0 : 1 / frequency_ * unit_;
}
+const struct timeval frequency_clock_t::get_timeval_from_period() const
+{
+ struct timeval freq = {0, 0};
+ float f;
+ freq.tv_usec = (long int)std::modf(frequency_, &f);
+ freq.tv_sec = (time_t)f;
+
+ return freq;
+}
+
bool frequency_clock_t::started()
{
return last_tick_ != 0;
diff --git a/CAN-binder/low-can-binding/utils/timer.hpp b/CAN-binder/low-can-binding/utils/timer.hpp
index f5659044..d3fedbdf 100644
--- a/CAN-binder/low-can-binding/utils/timer.hpp
+++ b/CAN-binder/low-can-binding/utils/timer.hpp
@@ -17,6 +17,8 @@
#pragma once
+#include <sys/time.h>
+
/// @brief return epoch in milliseconds
///
/// @return long long int epoch in milliseconds
@@ -43,6 +45,7 @@ public:
frequency_clock_t(float frequency, unsigned long last_tick, time_function_t time_function);
float get_frequency() const;
+ const struct timeval get_timeval_from_period() const;
float frequency_to_period();
bool started();