patty/src/timer.c

43 lines
994 B
C
Raw Normal View History

#include <patty/timer.h>
int patty_timer_running(patty_timer *timer) {
return (timer->flags & PATTY_TIMER_RUNNING)? 1: 0;
}
int patty_timer_expired(patty_timer *timer) {
return (timer->flags & PATTY_TIMER_RUNNING) && timer->t.tv_sec <= 0? 1: 0;
}
void patty_timer_clear(patty_timer *timer) {
timer->t.tv_sec = 0;
timer->t.tv_usec = 0;
timer->flags &= ~PATTY_TIMER_RUNNING;
}
void patty_timer_start(patty_timer *timer,
time_t ms) {
timer->t.tv_sec = ms / 1000;
timer->t.tv_usec = (ms % 1000) * 1000;
timer->flags |= PATTY_TIMER_RUNNING;
}
void patty_timer_stop(patty_timer *timer) {
timer->flags &= ~PATTY_TIMER_RUNNING;
}
void patty_timer_tick(patty_timer *timer,
struct timeval *elapsed) {
struct timeval res;
if (!(timer->flags & PATTY_TIMER_RUNNING)) {
return;
}
timersub(&timer->t, elapsed, &res);
timer->t.tv_sec = res.tv_sec;
timer->t.tv_usec = res.tv_usec;
}