Browse Source

utils - update from template repo

master
heck 9 months ago
parent
commit
78a52d8107
  1. 8
      src/utils.cc
  2. 36
      src/utils.hh

8
src/utils.cc

@ -94,7 +94,6 @@ namespace Heck {
} // namespace Heck } // namespace Heck
namespace Heck { namespace Heck {
void SWTimer::set_period(u32 time_units) void SWTimer::set_period(u32 time_units)
{ {
time_period_ = time_units; time_period_ = time_units;
@ -108,14 +107,13 @@ namespace Heck {
bool SWTimer::is_it_already_time_again(u32 time_now) bool SWTimer::is_it_already_time_again(u32 time_now)
{ {
if (time_now - time_last_exec_ >= time_period_) { if (time_now - time_last_exec_ >= time_period_) {
time_last_exec_ = time_now;
if (callback_) { if (callback_) {
callback_(time_now); //todo: constexpr if metrics
callback_();
} }
time_last_exec_ = time_now;
return true; return true;
} }
return false; return false;
} }
} // namespace Heck } // namespace Heck

36
src/utils.hh

@ -1,8 +1,8 @@
#ifndef HECK_OSP_UTILS_HH #ifndef HECK_DAISY_UTILS_HH
#define HECK_OSP_UTILS_HH #define HECK_DAISY_UTILS_HH
#include "daisy_seed.h" #include "daisy_seed.h"
#include "main_osp.hh" #include "types.hh"
namespace Heck { namespace Heck {
void GetMidiTypeAsString(const ld::MidiEvent& msg, char* str); void GetMidiTypeAsString(const ld::MidiEvent& msg, char* str);
@ -21,10 +21,40 @@ namespace Heck {
void set_period(u32 time_units); void set_period(u32 time_units);
void set_callback(const Callback& cb); void set_callback(const Callback& cb);
bool is_it_already_time_again(u32 time_now); bool is_it_already_time_again(u32 time_now);
private: private:
Callback callback_{}; Callback callback_{};
u32 time_last_exec_{}; u32 time_last_exec_{};
u32 time_period_{}; u32 time_period_{};
}; };
} // namespace Heck } // namespace Heck
namespace Heck {
template<typename T> class Observer {
public:
bool on_change(T val_new, std::function<void(T val_current)> fn)
{
if (val_new != val_current_) {
val_current_ = val_new;
fn(val_current_);
return true;
}
return false;
}
bool on_change_fuzzy(T val_new, T min_deviation, std::function<void(T val_current)> fn)
{
if (std::abs(val_new - val_current_) >= min_deviation) {
val_current_ = val_new;
fn(val_current_);
return true;
}
return false;
}
private:
static inline T val_current_{};
};
} // namespace Heck
#endif // HECK_DAISY_UTILS_HH #endif // HECK_DAISY_UTILS_HH
Loading…
Cancel
Save