Browse Source

utils - update from template repo

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

10
src/utils.cc

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

36
src/utils.hh

@ -1,8 +1,8 @@
#ifndef HECK_OSP_UTILS_HH
#define HECK_OSP_UTILS_HH
#ifndef HECK_DAISY_UTILS_HH
#define HECK_DAISY_UTILS_HH
#include "daisy_seed.h"
#include "main_osp.hh"
#include "types.hh"
namespace Heck {
void GetMidiTypeAsString(const ld::MidiEvent& msg, char* str);
@ -21,10 +21,40 @@ namespace Heck {
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
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
Loading…
Cancel
Save