| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- This eaxmple illustrates the use of overall Task timeout functionality:
- Task 1 - runs every 1 seconds and times out in 10 seconds
- Task 2 - runs every 5 seconds and resets the timeout every run, so runs continuosly even though the timeout is set to 10 seconds
- */
- // #define _TASK_TIMECRITICAL // Enable monitoring scheduling overruns
- #define _TASK_SLEEP_ON_IDLE_RUN // Enable 1 ms SLEEP_IDLE powerdowns between tasks if no callback methods were invoked during the pass
- //#define _TASK_STATUS_REQUEST // Compile with support for StatusRequest functionality - triggering tasks on status change events in addition to time only
- // #define _TASK_WDT_IDS // Compile with support for wdt control points and task ids
- // #define _TASK_LTS_POINTER // Compile with support for local task storage pointer
- // #define _TASK_PRIORITY // Support for layered scheduling priority
- // #define _TASK_MICRO_RES // Support for microsecond resolution
- // #define _TASK_STD_FUNCTION // Support for std::function (ESP8266 ONLY)
- // #define _TASK_DEBUG // Make all methods and variables public for debug purposes
- // #define _TASK_INLINE // Make all methods "inline" - needed to support some multi-tab, multi-file implementations
- #define _TASK_TIMEOUT
- #include <TaskScheduler.h>
- Scheduler ts;
- void task1Callback();
- void task1OnDisable();
- void task2Callback();
- void task2OnDisable();
- Task t1(1 * TASK_SECOND, TASK_FOREVER, &task1Callback, &ts, false, NULL, &task1OnDisable);
- Task t2(5 * TASK_SECOND, TASK_FOREVER, &task2Callback, &ts, false, NULL, &task2OnDisable);
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(115200);
- Serial.println("TaskScheduler Timeout example");
- Serial.println("=============================");
- t1.setTimeout(10 * TASK_SECOND);
- t2.setTimeout(10 * TASK_SECOND);
- ts.enableAll();
- }
- void loop() {
- // put your main code here, to run repeatedly:
- ts.execute();
- }
- void task1Callback() {
- Serial.print("Task 1:\t");
- Serial.print(millis());
- Serial.print(": t/out=");
- Serial.print(t1.getTimeout());
- Serial.print("\tms until t/out=");
- Serial.println( t1.untilTimeout());
- }
- void task1OnDisable() {
- if (t1.timedOut()) {
- Serial.println("Task 1 has timed out. Restarting");
- t1.setInterval(1 * TASK_SECOND);
- t1.setIterations(15);
- t1.setTimeout(TASK_NOTIMEOUT);
- t1.enable();
- }
- else {
- Serial.println("Task 1 has been disabled");
- }
- }
- void task2Callback() {
- Serial.print("Task 2:\t");
- Serial.print(millis());
- Serial.print(": t/out=");
- Serial.print(t2.getTimeout());
- Serial.print("\tms until t/out=");
- Serial.println( t2.untilTimeout());
- t2.resetTimeout();
- }
- void task2OnDisable() {
- if (t2.timedOut()) {
- Serial.println("Task 2 has timed out");
- }
- else {
- Serial.println("Task 2 has been disabled");
- }
- }
|