75 lines
1.4 KiB
C++
75 lines
1.4 KiB
C++
#include "interval.h"
|
|
|
|
// Public Methods //////////////////////////////////////////////////////////////
|
|
uint32_t Interval::remains() const
|
|
{
|
|
|
|
return _timeout - (millis() - _timefrom);
|
|
}
|
|
|
|
uint32_t Interval::elapsed() const
|
|
{
|
|
|
|
return millis() - _timefrom;
|
|
}
|
|
|
|
bool Interval::expired()
|
|
{
|
|
bool result = false;
|
|
|
|
if (_done) {
|
|
if (1 == _mode) {
|
|
// oneshot mode
|
|
if ((millis() - _timefrom) >= _timeout) {
|
|
_done = 0;
|
|
result = true;
|
|
}
|
|
} else if (2 == _mode) {
|
|
// periodic mode
|
|
if ((millis() - _timefrom) >= _timeout) {
|
|
result = true;
|
|
_timefrom = millis();
|
|
}
|
|
} else {
|
|
// compatibility mode
|
|
if ((millis() - _timefrom) >= _timeout)
|
|
result = true;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
void Interval::set(uint32_t tmout)
|
|
{
|
|
|
|
_timefrom = millis();
|
|
_timeout = tmout;
|
|
_mode = 0;
|
|
_done = 0xff;
|
|
}
|
|
|
|
void Interval::setOneshot(uint32_t tmout)
|
|
{
|
|
|
|
_timefrom = millis();
|
|
_timeout = tmout;
|
|
_mode = 1;
|
|
_done = 0xff;
|
|
}
|
|
|
|
void Interval::setPeriodic(uint32_t tmout)
|
|
{
|
|
|
|
_timefrom = millis();
|
|
_timeout = tmout;
|
|
_mode = 2;
|
|
_done = 0xff;
|
|
}
|
|
|
|
void Interval::reload()
|
|
{
|
|
|
|
_timefrom = millis();
|
|
_done = 0xff;
|
|
}
|