8000 recurrent scheduled functions max delay update by dok-net · Pull Request #8949 · esp8266/Arduino · GitHub
[go: up one dir, main page]

Skip to content

recurrent scheduled functions max delay update #8949

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 29 commits into
base: master
Choose a base branch
from
Draft
Changes from 1 commit < 8000 details-menu class="select-menu-modal position-absolute" style="z-index: 99;">
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2757aa2
Revert `compute_scheduled_recurrent_grain`
dok-net Jul 1, 2023
a81e544
wip
dok-net Jul 1, 2023
588e153
Add function to retrieve the time remaining until the (next) timeout …
dok-net Nov 26, 2019
a435fa5
Rename and reformat according to review.
dok-net Nov 27, 2019
232961e
Revert _current as member change.
dok-net Nov 27, 2019
210c3d4
Fix expiredOneShot to properly stay expired forever unless reset.
dok-net Nov 27, 2019
a6456d0
Fix "reverse notation return statement"
dok-net Nov 27, 2019
9863f71
Reset() was wrecked by resetting _timeout. Reverted.
dok-net Nov 27, 2019
9c83f9a
Expired check ALWAYS executes yield policy BEFORE checking expiration…
dok-net Dec 2, 2019
4cbe06b
Reformat
dok-net Dec 3, 2019
20e6378
Fix comment, remove redundant parentheses
dok-net Dec 4, 2019
b0eb345
expired() is not const qualified in PolledTmeout.
dok-net Mar 15, 2021
a3612dd
expiredOneShot() qualifed as const, despite asymmetry with expired() …
dok-net Mar 16, 2021
c88af7b
Remove alwaysExpired, it is identical to 0 and obfuscates the code.
dok-net Apr 5, 2021
4eab7e4
Somewhat easier on the human reader.
dok-net Apr 5, 2021
b5285c3
Avoid possible unnecessary time conversion.
dok-net Apr 5, 2021
b54576f
Fix one-shot mode in resetToNeverExpires(). Add convenient stop() syn…
dok-net Apr 5, 2021
100d2c4
Due to review and discussion, _oneShotExpired removed again.
dok-net Apr 5, 2021
81b90c9
Revert removal of PolledTimeout::alwaysExpired
dok-net Jul 1, 2023
eaf05e9
Finalize scheduled recurrent function delay logic.
dok-net Jul 1, 2023
a09726d
Fix millis/micros mismatch.
dok-net Jul 1, 2023
4d3655b
ISR safety.
dok-net Jul 1, 2023
55d465a
Returning max delay value that is uint-wrap around safe.
dok-net Jul 2, 2023
c41a2c2
Add pseudo-get delay function for scheduled functions
dok-net Jul 2, 2023
4e654d1
Worked out input from PR review.
dok-net Jul 20, 2023
717f4ad
use single constexpr definition instead of repeated expression.
dok-net Jul 27, 2023
538025a
Simplified roll-over logic
dok-net Jul 30, 2023
861cf02
Add rationale for HALF_MAX_MICROS
dok-net Jul 30, 2023
b3b4aa0
Use CAS to minimize critical sections.
dok-net Sep 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
< 8000 div class="select-menu-blankslate select-menu-error"> Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Reset() was wrecked by resetting _timeout. Reverted.
  • Loading branch information
dok-net committed Jan 5, 2024
commit 9863f7136b55a346b3c4eec5d1f70e6a049103eb
10 changes: 6 additions & 4 deletions cores/esp8266/PolledTimeout.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ class timeoutTemplate

bool canWait () const
{
return _timeout != alwaysExpired;
return _timeout != alwaysExpired && !_oneShotExpired;
}

// Resets, will trigger after this new timeout.
Expand All @@ -194,6 +194,7 @@ class timeoutTemplate
void reset()
{
_start = TimePolicyT::time();
_oneShotExpired = false;
}

// Resets to just expired so that on next poll the check will immediately trigger for the user,
Expand Down Expand Up @@ -246,8 +247,8 @@ class timeoutTemplate
bool checkExpired(const timeType internalUnit) const
{
// canWait() is not checked here
// returns "can expire" and "time expired"
return (!_neverExpires) && ((internalUnit - _start) >= _timeout);
// returns "can expire" and "oneshot not expired" and "time expired"
return (_oneShotExpired) || ((!_neverExpires) && ((internalUnit - _start) >= _timeout));
}

protected:
Expand Down Expand Up @@ -275,7 +276,7 @@ class timeoutTemplate
if (!canWait()) return true;
if (checkExpired(TimePolicyT::time()))
{
_timeout = alwaysExpired;
_oneShotExpired = true;
return true;
}
return false;
Expand All @@ -284,6 +285,7 @@ class timeoutTemplate
timeType _timeout;
timeType _start;
bool _neverExpires;
bool _oneShotExpired;
};

// legacy type names, deprecated (unit is milliseconds)
Expand Down
0