forked from arkhipenko/TaskScheduler
PsyKoMari/TaskScheduler
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Task Scheduler – cooperative multitasking for Arduino microcontrollers Version 1.8.2: 2015-10-29 OVERVIEW: A lightweight implementation of cooperative multitasking (task scheduling) supporting: 1. Periodic task execution (with dynamic execution period in milliseconds) 2. Number of iterations (n times) 3. Execution of tasks in predefined sequence 4. Dynamic change of task execution parameters (frequency, number of iterations, callback function) 5. Power saving via entering IDLE sleep mode between tasks are scheduled to run 6. Support for task invocation via Status Request object 7. Support for task IDs and Control Points for error handling and watchdog timer 8. Support for Local Task Storage pointer (allowing use of same callback code for multiple tasks) Changelog: v1.0.0: 2015-02-24 - Initial release 2015-02-28 - added delay() and disableOnLastIteration() functions 2015-03-25 - changed scheduler execute() function for a more precise delay calculation: 1. Do not delay if any of the tasks ran (making request for immediate execution redundant) 2. Delay is invoked only if none of the tasks ran 3. Delay is based on the min anticipated wait until next task _AND_ the runtime of execute function itself. 2015-05-11 - added restart() and restartDelayed() functions to restart tasks which are on hold after running all iterations 2015-05-19 - completely removed delay from the scheduler since there are no power saving there. using 1 ms sleep instead v1.4.1: 2015-09-15 - more careful placement of AVR-specific includes for sleep functions (compatibility with DUE) sleep on idle run is no longer a default and should be explicitly compiled with _TASK_SLEEP_ON_IDLE_RUN defined v1.5.0: 2015-09-20 - access to currently executing task (for callback functions) 2015-09-20 - pass scheduler as a parameter to the task constructor to append the task to the end of the chain 2015-09-20 - option to create a task already enabled v1.5.1: 2015-09-21 - bug fix: incorrect handling of active tasks via set() and setIterations(). Thanks to Hannes Morgenstern for catching this one v1.6.0: 2015-09-22 - revert back to having all tasks disable on last iteration. 2015-09-22 - deprecated disableOnLastIteration method as a result 2015-10-01 - made version numbers semver compliant (documentation only) v1.7.0: 2015-10-08 - introduced callback run counter - callback functions can branch on the iteration number. 2015-10-11 - enableIfNot() - enable a task only if it is not already enabled. Returns true if was already enabled, false if was disabled. 2015-10-11 - disable() returns previous enable state (true if was enabled, false if was already disabled) 2015-10-11 - introduced callback functions "on enable" and "on disable". On enable runs every time enable is called, on disable runs only if task was enabled 2015-10-12 - new Task method: forceNextIteration() - makes next iteration happen immediately during the next pass regardless how much time is left v1.8.0: 2015-10-13 - support for status request objects allowing tasks waiting on requests 2015-10-13 - moved to a single header file to allow compilation control via #defines from the main sketch v1.8.1: 2015-10-22 - implement Task id and control points to support identification of failure points for watchdog timer logging v1.8.2: 2015-10-27 - implement Local Task Storage Pointer (allow use of same callback code for different tasks) 2015-10-27 - bug: currentTask() method returns incorrect Task reference if called within OnEnable and OnDisable methods 2015-10-27 - protection against infinite loop in OnEnable (if enable() methods are called within OnEnable) 2015-10-29 - new currentLts() method in the scheduler class returns current task's LTS pointer in one call
About
cooperative multitasking for arduino microcontrollers
Resources
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- HTML 84.7%
- C++ 15.3%