From a0a3f4383e3fe0dc0988ec4de97c53db4f6a766f Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 26 Sep 2024 05:15:01 +0200 Subject: [PATCH] Utils - Add SWTimer --- src/utils.cc | 28 ++++++++++++++++++++++++++++ src/utils.hh | 17 ++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/utils.cc b/src/utils.cc index b07c01b..75229a6 100644 --- a/src/utils.cc +++ b/src/utils.cc @@ -91,4 +91,32 @@ namespace Heck { float ret = min + (val * range); return ret; } +} // namespace Heck + +namespace Heck { + + void SWTimer::set_period(u32 time_units) + { + time_period_ = time_units; + } + + void SWTimer::set_callback(const Callback& cb) + { + callback_ = cb; + } + + bool SWTimer::is_it_already_time_again(u32 time_now) + { + if (time_now - time_last_exec_ >= time_period_) { + time_last_exec_ = time_now; + if (callback_) { + //todo: constexpr if metrics + callback_(); + } + return true; + } + return false; + } + + } // namespace Heck \ No newline at end of file diff --git a/src/utils.hh b/src/utils.hh index 2f7cd86..9ca24b9 100644 --- a/src/utils.hh +++ b/src/utils.hh @@ -12,4 +12,19 @@ namespace Heck { float scalen_center_range(float val, float center, float range); } // namespace Heck -#endif // HECK_OSP_UTILS_HH \ No newline at end of file + +namespace Heck { + class SWTimer { + public: + using Callback = std::function; + + void set_period(u32 time_units); + void set_callback(const Callback& cb); + bool is_it_already_time_again(u32 time_now); + private: + Callback callback_{}; + u32 time_last_exec_{}; + u32 time_period_{}; + }; +} // namespace Heck +#endif // HECK_DAISY_UTILS_HH \ No newline at end of file