list_easy_timer/easy_timer.c

29 lines
682 B
C

#include "easy_timer.h"
#include <stdio.h>
list_t easy_timer_list;
void (*easy_timer_sleep_func)(void) = NULL;
void easy_timer_core() {
list_node_t *node = (list_node_t *)easy_timer_list;
while (node != NULL) {
_easy_timer_t *obj = (_easy_timer_t *)node->data;
if (obj->time_start == 0) {
continue;
}
if (obj->time_wait_now < obj->time_wait_cfg) {
obj->time_wait_now += 1;
} else {
obj->time_wait_now = 0;
obj->timer_handler();
if (obj->time_out == 1) {
obj->time_start = 0;
}
}
node = node->next;
}
if (easy_timer_sleep_func != NULL) {
easy_timer_sleep_func();
}
}