Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Revert _current as member change.
  • Loading branch information
dok-net committed Apr 5, 2021
commit dc3db41e18d935a06fadcd4c73aa10c2f3ecee5c
25 changes: 12 additions & 13 deletions cores/esp8266/PolledTimeout.h
Original file line number Diff line number Diff line change
Expand Up @@ -227,10 +227,11 @@ class timeoutTemplate
timeType remaining() const
{
if (_neverExpires)
return timeMax();
if (expired())
return TimePolicyT::toUserUnit(0);
return TimePolicyT::toUserUnit(_timeout - (_current - _start));
return timeMax();
timeType current = TimePolicyT::time();
if (checkExpired(current))
return TimePolicyT::toUserUnit(0);
return TimePolicyT::toUserUnit(_timeout - (current - _start));
}

static constexpr timeType timeMax()
Expand All @@ -241,11 +242,11 @@ class timeoutTemplate
private:

IRAM_ATTR // fast
bool checkExpired() const
bool checkExpired(const timeType internalUnit) const
{
// canWait() is not checked here
// returns "can expire" and "time expired"
return (!_neverExpires) && ((_current - _start) >= _timeout);
return (!_neverExpires) && ((internalUnit - _start) >= _timeout);
}

protected:
Expand All @@ -256,27 +257,25 @@ class timeoutTemplate
if (!canWait())
return true;

_current = TimePolicyT::time();
if(checkExpired())
timeType current = TimePolicyT::time();
if(checkExpired(current))
{
unsigned long n = (_current - _start) / _timeout; //how many _timeouts periods have elapsed, will usually be 1 (_current - _start >= _timeout)
unsigned long n = (current - _start) / _timeout; //how many _timeouts periods have elapsed, will usually be 1 (current - _start >= _timeout)
_start += n * _timeout;
return true;
}
return false;
}

IRAM_ATTR // fast
bool expiredOneShot()
bool expiredOneShot() const
{
_current = TimePolicyT::time();
// returns "always expired" or "has expired"
return !canWait() || checkExpired();
return !canWait() || checkExpired(TimePolicyT::time());
}

timeType _timeout;
timeType _start;
timeType _current;
bool _neverExpires;
};

Expand Down