X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=CAN-binder%2Flow-can-binding%2Futils%2Ftimer.cpp;h=5c659cab210c17245cfa1fedda3cf4cc06c8fb2c;hb=2adb1633620d669fc754e0990aa1033b57c03e23;hp=a35a3e9f13170eb67998d9e869be9cbefe7bd1c9;hpb=0242c26c2f5dc96387bca7efb118364c800f4ee7;p=apps%2Fagl-service-can-low-level.git diff --git a/CAN-binder/low-can-binding/utils/timer.cpp b/CAN-binder/low-can-binding/utils/timer.cpp index a35a3e9f..5c659cab 100644 --- a/CAN-binder/low-can-binding/utils/timer.cpp +++ b/CAN-binder/low-can-binding/utils/timer.cpp @@ -17,6 +17,7 @@ #include #include +#include #include "timer.hpp" @@ -54,16 +55,28 @@ frequency_clock_t::frequency_clock_t() : unit_{1000000}, frequency_{10.0}, last_tick_{0}, time_function_{nullptr} {} - frequency_clock_t::frequency_clock_t(float frequency) : unit_{1000000}, frequency_{frequency}, last_tick_{0}, time_function_{nullptr} -{} +{ + if(frequency_ <= 0) + frequency_ = 1; +} /// @brief Return the period in ms given the frequency in hertz. /// @param[in] frequency - Frequency to convert, in hertz float frequency_clock_t::frequency_to_period() { - return 1 / frequency_ * unit_; + return frequency_ == 0 ? 0 : 1 / frequency_; +} + +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_to_period(), &f) * unit_); + freq.tv_sec = (time_t)f; + + return freq; } bool frequency_clock_t::started()