#include #ifndef __CEXTRACT__ #include #endif /*****************************************************************************/ /* Processes all timers. */ /*****************************************************************************/ void cftimer_process_timers(void) { int i; for(i=0;i= MAX_TIMERS) return TIMER_ERR_ID; if (id < 0) return TIMER_ERR_ID; if (timers_table[id].mode != TIMER_MODE_DEAD) return TIMER_ERR_ID; if ((mode != TIMER_MODE_SECONDS) && (mode != TIMER_MODE_CYCLES)) return TIMER_ERR_MODE; if (ob == NULL) return TIMER_ERR_OBJ; if (find_event(ob, EVENT_TIMER) == NULL) return TIMER_ERR_OBJ; timers_table[id].mode = mode; timers_table[id].ob = ob; if (mode == TIMER_MODE_CYCLES) timers_table[id].delay = delay; else timers_table[id].delay = seconds() + delay; return TIMER_ERR_NONE; } /*****************************************************************************/ /* Destroys an existing timer. */ /* - id : Identifier of the timer to destroy. */ /*****************************************************************************/ /* Return value: */ /* TIMER_ERR_NONE : No problem encountered. */ /* TIMER_ERR_ID : Unknown ID - timer not found. */ /*****************************************************************************/ int cftimer_destroy(int id) { if (id >= MAX_TIMERS) return TIMER_ERR_ID; if (id < 0) return TIMER_ERR_ID; timers_table[id].mode = TIMER_MODE_DEAD; return TIMER_ERR_NONE; } /*****************************************************************************/ /* Finds a free ID for a new timer. */ /*****************************************************************************/ /* Return value: */ /* TIMER_ERR_ID : No free ID available. */ /* >0 : an available ID. */ /*****************************************************************************/ int cftimer_find_free_id(void) { int i; for(i=0;i