tasks can be used to structure an application. TaskScheduler features one time tasks and prioritized task as well as repeated tasks.

void schedule_priority_task(TaskCallbackType callback)
void remove_priority_task(TaskCallbackType callback)
void schedule_task(TaskCallbackType callback)
void remove_task(TaskCallbackType callback)
void schedule_repeated_task(TaskCallbackType callback)
void remove_repeated_task(TaskCallbackType callback)
bool process()

Example Tasks

#include "Arduino.h"
#include "System.h"
#include "Console.h"
#include "TaskScheduler.h"

using namespace klangstrom;

TaskScheduler fTaskScheduler;

void exec_priority_task() {
    static uint8_t counter = 0;
    console_println("exec_priority_task: %i",counter);
    counter++;
}

void exec_normal_task() {
    static uint8_t counter = 0;
    console_println("exec_normal_task: %i",counter);
    counter++;
}

void exec_repeated_task() {
    static uint8_t counter = 0;
    console_println("exec_repeated_task: %i",counter);
    counter++;
    if (counter > 5) {
        fTaskScheduler.remove_repeated_task(exec_repeated_task);
    }
}

void setup() {
    fTaskScheduler.schedule_priority_task(exec_priority_task);
    fTaskScheduler.schedule_task(exec_normal_task);
    fTaskScheduler.schedule_task(exec_normal_task);
    fTaskScheduler.schedule_task(exec_normal_task);
    fTaskScheduler.schedule_repeated_task(exec_repeated_task);
}

void loop() {
    fTaskScheduler.process();
    delay(500);
}