Konstruktor pro periodic autostart
This commit is contained in:
@ -1,84 +1,74 @@
|
||||
extern "C" {
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <inttypes.h>
|
||||
}
|
||||
#include <Arduino.h>
|
||||
#include "interval.h"
|
||||
|
||||
// Public Methods //////////////////////////////////////////////////////////////
|
||||
uint32_t Interval::remains(void)
|
||||
{
|
||||
|
||||
return _timeout - (millis() - _timefrom);
|
||||
return _timeout - (millis() - _timefrom);
|
||||
}
|
||||
|
||||
uint32_t Interval::elapsed(void)
|
||||
{
|
||||
|
||||
return millis() - _timefrom;
|
||||
return millis() - _timefrom;
|
||||
}
|
||||
|
||||
bool Interval::expired(void)
|
||||
{
|
||||
bool result = false;
|
||||
if (_done)
|
||||
{
|
||||
if (1 == _mode)
|
||||
{ // oneshot mode
|
||||
if ((millis() - _timefrom) >= _timeout)
|
||||
{
|
||||
_done = 0;
|
||||
result = true;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
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;
|
||||
return result;
|
||||
}
|
||||
|
||||
void Interval::set(uint32_t tmout)
|
||||
{
|
||||
|
||||
_timefrom = millis();
|
||||
_timeout = tmout;
|
||||
_mode = 0;
|
||||
_done = 0xff;
|
||||
_timefrom = millis();
|
||||
_timeout = tmout;
|
||||
_mode = 0;
|
||||
_done = 0xff;
|
||||
}
|
||||
|
||||
void Interval::setOneshot(uint32_t tmout)
|
||||
{
|
||||
|
||||
_timefrom = millis();
|
||||
_timeout = tmout;
|
||||
_mode = 1;
|
||||
_done = 0xff;
|
||||
_timefrom = millis();
|
||||
_timeout = tmout;
|
||||
_mode = 1;
|
||||
_done = 0xff;
|
||||
}
|
||||
|
||||
void Interval::setPeriodic(uint32_t tmout)
|
||||
{
|
||||
|
||||
_timefrom = millis();
|
||||
_timeout = tmout;
|
||||
_mode = 2;
|
||||
_done = 0xff;
|
||||
_timefrom = millis();
|
||||
_timeout = tmout;
|
||||
_mode = 2;
|
||||
_done = 0xff;
|
||||
}
|
||||
|
||||
void Interval::reload(void)
|
||||
{
|
||||
|
||||
_timefrom = millis();
|
||||
_done = 0xff;
|
||||
_timefrom = millis();
|
||||
_done = 0xff;
|
||||
}
|
||||
|
Reference in New Issue
Block a user