Prvni verze pro otestovani oneshot a periodic rezimu
This commit is contained in:
@ -21,11 +21,33 @@ uint32_t Interval::elapsed(void)
|
||||
|
||||
bool Interval::expired(void)
|
||||
{
|
||||
|
||||
if ((millis() - _timefrom) >= _timeout)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
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();
|
||||
_timeout = _reload;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // compatibility mode
|
||||
if ((millis() - _timefrom) >= _timeout)
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void Interval::set(uint32_t tmout)
|
||||
@ -34,6 +56,28 @@ void Interval::set(uint32_t tmout)
|
||||
_reload = tmout;
|
||||
_timefrom = millis();
|
||||
_timeout = _reload;
|
||||
_mode = 0;
|
||||
_done = 0xff;
|
||||
}
|
||||
|
||||
void Interval::setOneshot(uint32_t tmout)
|
||||
{
|
||||
|
||||
_reload = tmout;
|
||||
_timefrom = millis();
|
||||
_timeout = _reload;
|
||||
_mode = 1;
|
||||
_done = 0xff;
|
||||
}
|
||||
|
||||
void Interval::setPeriodic(uint32_t tmout)
|
||||
{
|
||||
|
||||
_reload = tmout;
|
||||
_timefrom = millis();
|
||||
_timeout = _reload;
|
||||
_mode = 2;
|
||||
_done = 0xff;
|
||||
}
|
||||
|
||||
void Interval::reload(void)
|
||||
|
@ -16,9 +16,14 @@ class Interval
|
||||
uint32_t _timefrom;
|
||||
uint32_t _timeout;
|
||||
uint32_t _reload;
|
||||
uint8_t _mode; // mode of actual operation (compatibility, oneshot, periodic)
|
||||
uint8_t _done;
|
||||
public:
|
||||
Interval(): _mode(0), _done(0xff) {}
|
||||
bool expired(void);
|
||||
void set(uint32_t tmout);
|
||||
void setOneshot(uint32_t tmout);
|
||||
void setPeriodic(uint32_t tmout);
|
||||
void reload(void);
|
||||
uint32_t elapsed(void);
|
||||
uint32_t remains(void);
|
||||
|
Reference in New Issue
Block a user