10 _timer_info[i].clear();
14 void M5Timer::timer_info_t::clear(
void) {
21 void M5Timer::timer_info_t::set(uint32_t interval_msec,
timer_callback cb, uint32_t times) {
23 _interval = interval_msec;
26 _prev_msec = m5gfx::millis();
29 bool M5Timer::timer_info_t::run(uint32_t current_msec) {
30 if (_callback !=
nullptr && current_msec - _prev_msec >= _interval) {
31 _prev_msec += _interval;
45 auto msec = m5gfx::millis();
47 for (
auto &t : _timer_info) {
48 if (!t.getCallback()) {
continue; }
57 if (cb ==
nullptr || _enable_count >=
MAX_TIMERS) {
60 for (uint_fast8_t i = 0; i <
MAX_TIMERS; i++) {
61 if (_timer_info[i].getCallback()) {
continue; }
62 _timer_info[i].set(interval, cb, times);
70 if ((uint_fast8_t)
id <
MAX_TIMERS && _timer_info[
id].getCallback() !=
nullptr) {
71 _timer_info[id].clear();
78 _timer_info[id].setPreviousMsec(m5gfx::millis());
std::function< void(void)> timer_callback
void restartTimer(int_fast8_t id)
void deleteTimer(int_fast8_t id)
static constexpr const uint32_t MAX_TIMERS
maximum number of timers
void run(void)
this function must be called inside loop()
int_fast8_t setTimer(uint32_t interval_msec, timer_callback function, uint32_t times)