00001 #ifndef __TIME_EVENT_MANAGER_H
00002 #define __TIME_EVENT_MANAGER_H
00003
00004 #include "../../lock_ops.h"
00005 #include "../../timer.h"
00006
00007 struct _time_event_data_t;
00008
00009 typedef void(*time_event_func)(struct _time_event_data_t *s);
00010
00011 typedef struct _time_event_data_t {
00012 unsigned int tick_time;
00013
00015 time_event_func cb;
00017 void *cb_param;
00019 void *cb_param1;
00020
00022 struct _time_event_data_t *next;
00024 struct _time_event_data_t *prev;
00025 } time_event_data_t;
00026
00027 typedef struct _time_event_slot_t {
00028 time_event_data_t *first, *last;
00029 } time_event_slot_t;
00030
00031 typedef struct _time_event_manager_t {
00032 time_event_slot_t *time_slots;
00033 unsigned int slot_cnt;
00035 unsigned int atomic_time;
00037 int enable_delay;
00039 unsigned int tick_counter;
00041 gen_lock_t *mutex;
00044 unsigned int process_timer_counter;
00045 struct _time_event_manager_t *next;
00046 struct _time_event_manager_t *prev;
00047 } time_event_manager_t;
00048
00049 time_event_manager_t *tem_create(unsigned int atomic_time, unsigned int slot_cnt, int enable_delay, gen_lock_t *mutex);
00050 int tem_init(time_event_manager_t *tm, unsigned int atomic_time, unsigned int slot_cnt, int enable_delay, gen_lock_t *mutex);
00051 void tem_destroy(time_event_manager_t *tem);
00052 void tem_add_event(time_event_manager_t *tem, unsigned int action_time, time_event_data_t *te);
00053 void tem_remove_event(time_event_manager_t *tem, time_event_data_t *te);
00054 void tem_add_event_nolock(time_event_manager_t *tem, unsigned int action_time, time_event_data_t *te);
00055 void tem_remove_event_nolock(time_event_manager_t *tem, time_event_data_t *te);
00056
00057 int time_event_management_init();
00058 void time_event_management_destroy();
00059
00060 #endif