115 lines
2.8 KiB
C
115 lines
2.8 KiB
C
#ifndef TASK_H
|
||
#define TASK_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
#include "stdint.h"
|
||
|
||
#define true 0
|
||
#define false (-1)
|
||
//平台切换相关类型重定义
|
||
typedef int64_t TaskStatus_t;
|
||
typedef uint64_t TaskTime_t;
|
||
typedef int64_t TaskCnt_t;
|
||
|
||
typedef struct TaskList Task_t;
|
||
|
||
typedef uint64_t (*PlatformTicksFunc_t)(void);
|
||
|
||
typedef void (*Task_Callback_t)(Task_t *task, void *userdata);
|
||
|
||
struct TaskList {
|
||
Task_t *next;
|
||
uint8_t enable;
|
||
TaskCnt_t runcnt;
|
||
TaskTime_t lasttime;
|
||
TaskTime_t intervaltime;
|
||
Task_Callback_t callback;
|
||
void *userdata;
|
||
};
|
||
|
||
/**
|
||
* @brief 初始化任务模块
|
||
* @param TicksFunc: [输入] 时间基准函数指针
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskInit(GetPlatformTicks);
|
||
*/
|
||
TaskStatus_t TaskInit(PlatformTicksFunc_t TicksFunc);
|
||
|
||
|
||
/**
|
||
* @brief 创建任务
|
||
* @param task: [输入/输出] 任务结构体指针
|
||
* @param time: [输入] 间隔时间
|
||
* @param runcnt: [输入] 执行次数,-1为无限制执行,0为只创建不运行
|
||
* @param callback: [输入] 回调函数
|
||
* @param userdata: [输入] 用户数据传参
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskCreat(&myTask, 100, -1, myCallbackFunc, &myData);
|
||
*/
|
||
TaskStatus_t TaskCreat(Task_t *task, TaskTime_t time, TaskCnt_t runcnt, Task_Callback_t callback, void *userdata);
|
||
|
||
/**
|
||
* @brief 添加任务
|
||
* @param task: [输入] 任务结构体指针
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskAdd(&myTask);
|
||
*/
|
||
TaskStatus_t TaskAdd(Task_t *task);
|
||
|
||
/**
|
||
* @brief 删除任务
|
||
* @param task: [输入] 任务结构体指针
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskDel(&myTask);
|
||
*/
|
||
TaskStatus_t TaskDel(Task_t *task);
|
||
|
||
/**
|
||
* @brief 重新开始停止的任务
|
||
* @param task: [输入] 任务结构体指针
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskStart(&myTask);
|
||
*/
|
||
TaskStatus_t TaskStart(Task_t *task);
|
||
|
||
/**
|
||
* @brief 暂停任务执行
|
||
* @param task: [输入] 任务结构体指针
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskStop(&myTask);
|
||
*/
|
||
TaskStatus_t TaskStop(Task_t *task);
|
||
|
||
/**
|
||
* @brief 重设任务执行次数
|
||
* @param task: [输入] 任务结构体指针
|
||
* @param runcnt: [输入] 新的执行次数
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskSetCnt(&myTask, 5);
|
||
*/
|
||
TaskStatus_t TaskSetCnt(Task_t *task, TaskCnt_t runcnt);
|
||
|
||
/**
|
||
* @brief 重设任务间隔时间
|
||
* @param task: [输入] 任务结构体指针
|
||
* @param time: [输入] 新的间隔时间
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskSetTime(&myTask, 50);
|
||
*/
|
||
|
||
TaskStatus_t TaskSetTime(Task_t *task, TaskTime_t time);
|
||
|
||
/**
|
||
* @brief 任务调度
|
||
* @return TaskStatus_t 返回任务状态
|
||
* @example TaskRun();
|
||
*/
|
||
TaskStatus_t TaskRun(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
#endif //TASK_H
|