mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-12 21:18:13 +08:00
定时任务
This commit is contained in:
@@ -38,7 +38,8 @@ $(NAME)_SOURCES := main.c\
|
||||
mqtt_server/user_function.c\
|
||||
http_server/web_log.c\
|
||||
http_server/app_httpd.c
|
||||
|
||||
timed_task/timed_task.c\
|
||||
|
||||
$(NAME)_COMPONENTS := protocols/SNTP\
|
||||
protocols/mqtt\
|
||||
utilities/url\
|
||||
|
||||
69
TC1/timed_task/timed_task.c
Normal file
69
TC1/timed_task/timed_task.c
Normal file
@@ -0,0 +1,69 @@
|
||||
#include<string.h>
|
||||
#include<stdlib.h>
|
||||
#include"timed_task/timed_task.h"
|
||||
|
||||
pTimedTask task_top = NULL;
|
||||
int task_count = 0;
|
||||
|
||||
bool AddTask(pTimedTask task)
|
||||
{
|
||||
task_count++
|
||||
if (task_top == NULL)
|
||||
{
|
||||
task->next = NULL;
|
||||
task_top = task;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (task->time <= task_top->time)
|
||||
{
|
||||
task->next = task_top;
|
||||
task_top = task;
|
||||
return true;
|
||||
}
|
||||
|
||||
pTimedTask tmp = task_top;
|
||||
while (tmp)
|
||||
{
|
||||
if (task->time > tmp->time && task->time <= tmp->next->time
|
||||
|| tmp->next == NULL)
|
||||
{
|
||||
task->next = tmp->next;
|
||||
tmp->next = task;
|
||||
return true;
|
||||
}
|
||||
tmp = tmp->next;
|
||||
}
|
||||
task_count--;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DelTask()
|
||||
{
|
||||
if (task_top)
|
||||
{
|
||||
pTimedTask tmp = task_top;
|
||||
task_top = task_top->next;
|
||||
free(tmp);
|
||||
task_count--;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
char* GetTaskStr()
|
||||
{
|
||||
char* str = (char*)malloc(sizeof(char)*task_count * 40);
|
||||
pTimedTask tmp_tsk = task_top;
|
||||
char* tmp_str = str;
|
||||
tmp_str[0] = '[';
|
||||
while (tmp_tsk)
|
||||
{
|
||||
sprintf(tmp_str, "{time:%d,socket_index:%d,on:%d},",
|
||||
tmp_tsk->time, tmp_tsk->socket_idx, tmp_tsk->on);
|
||||
tmp_str += strlen(tmp_str);
|
||||
tmp_tsk = tmp_tsk->next;
|
||||
}
|
||||
*(--tmp_str) = ']';
|
||||
return str;
|
||||
}
|
||||
17
TC1/timed_task/timed_task.h
Normal file
17
TC1/timed_task/timed_task.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
struct TimedTask;
|
||||
typedef struct TimedTask* pTimedTask;
|
||||
struct TimedTask
|
||||
{
|
||||
int time; //被执行的格林尼治时间戳
|
||||
int socket_idx; //要控制的插孔
|
||||
int on; //开或者关
|
||||
pTimedTask next; //下一个任务(按之间排序)
|
||||
};
|
||||
|
||||
extern pTimedTask task_top;
|
||||
|
||||
bool AddTask(pTimedTask task);
|
||||
bool DelTask();
|
||||
char* GetTaskStr();
|
||||
Reference in New Issue
Block a user