// TaskScheduler Mixly积木示例程序
// 这个示例展示了如何使用Mixly积木创建和管理任务

#include <TaskScheduler.h>

// 调度器对象
Scheduler ts;

// 任务数组（用于存储创建的任务）
Task* taskArray[10];
int taskCount = 0;

// 通用回调函数
void genericCallback() {
    // 通用回调函数
}

void genericOnEnable() {
    // 任务启用回调
}

void genericOnDisable() {
    // 任务禁用回调
}

// LED闪烁任务回调函数
void blinkCallback() {
    digitalWrite(13, !digitalRead(13));  // 切换LED状态
}

// 串口打印任务回调函数
void printCallback() {
    Serial.println("Task is running!");
}

// 一次性任务回调函数
void onceCallback() {
    Serial.println("One-time task executed!");
}

void setup() {
    // 初始化串口通信，波特率115200
    Serial.begin(115200);
    
    // 设置LED引脚为输出模式
    pinMode(13, OUTPUT);
    
    // 创建LED闪烁任务（每500毫秒闪烁一次，无限循环）
    Task ledTask(500, -1, &blinkCallback, &ts, true, NULL, NULL);
    taskArray[taskCount++] = &ledTask;
    
    // 创建串口打印任务（每1000毫秒打印一次，运行10次）
    Task printTask(1000, 10, &printCallback, &ts, true, NULL, NULL);
    taskArray[taskCount++] = &printTask;
    
    // 创建一次性任务（3秒后执行一次）
    Task onceTask(3000, 1, &onceCallback, &ts, true, NULL, NULL);
    taskArray[taskCount++] = &onceTask;
    
    // 启用所有任务
    ledTask.enable();
    printTask.enable();
    onceTask.enable();
    
    Serial.println("All tasks started!");
}

void loop() {
    // 执行调度器，运行所有已安排的任务
    ts.execute();
}