56 lines
1.4 KiB
C++
56 lines
1.4 KiB
C++
// Test the same as example#2:
|
|
// Initially only tasks 1 and 2 are enabled
|
|
// Task1 runs every 2 seconds 10 times and then stops
|
|
// Task2 runs every 3 seconds indefinitely
|
|
// Task1 enables Task3 at its first run
|
|
// Task3 run every 5 seconds
|
|
// loop() runs every 1 second (a default scheduler delay, if no shorter tasks' interval is detected)
|
|
// Task1 disables Task3 on its last iteration and changed Task2 to run every 1/2 seconds
|
|
// Because Task2 interval is shorter than Scheduler default tick, loop() executes ecery 1/2 seconds now
|
|
// At the end Task2 is the only task running every 1/2 seconds
|
|
|
|
|
|
//Header that declares all shared objects between .cpp files
|
|
#include "header.hpp"
|
|
|
|
#include <Arduino.h> //for Serial and delay
|
|
|
|
Scheduler runner; //Let the scheduler live here, in the main file, ok?
|
|
|
|
|
|
//Pretend, that the t2 task is a special task,
|
|
//that needs to live in file2 object file.
|
|
void t2Callback() {
|
|
Serial.print("t2: ");
|
|
Serial.println(millis());
|
|
}
|
|
Task t2(3000, TASK_FOREVER, &t2Callback, &runner, true);
|
|
|
|
//Lets define t3Callback here. We are going to use it in file1
|
|
//for Task 1.
|
|
void t3Callback() {
|
|
Serial.print("t3: ");
|
|
Serial.println(millis());
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void setup () {
|
|
Serial.begin(115200);
|
|
Serial.println("Scheduler TEST");
|
|
|
|
delay(5000);
|
|
|
|
runner.startNow(); // set point-in-time for scheduling start
|
|
}
|
|
|
|
|
|
void loop () {
|
|
runner.execute();
|
|
|
|
// Serial.println("Loop ticks at: ");
|
|
// Serial.println(millis());
|
|
}
|