Interval/src/interval.h

32 lines
861 B
C++

#pragma once
/* Interval
* Copyright (C) 2014, 2016, 2018, 2019, 2023 Pavel Brychta http://www.xpablo.cz
*
* This program is free software: you can redistribute it and/or modify it under the terms of the MIT License
*/
#include <Arduino.h>
class Interval
{
protected:
uint32_t _timefrom = 0;
uint32_t _timeout = 0;
uint8_t _mode = 0; // mode of actual operation (compatibility, oneshot, periodic)
uint8_t _done = 0xff; // compatibility mode autostart
public:
Interval() = default;
explicit Interval(uint32_t tmout)
: _timeout(tmout)
, _mode(2) // periodic mode autostart
{}
bool expired();
void set(uint32_t tmout);
void setOneshot(uint32_t tmout);
void setPeriodic(uint32_t tmout);
void reload();
[[nodiscard]] uint32_t elapsed() const;
[[nodiscard]] uint32_t remains() const;
};