Data Structures | Defines | Typedefs | Functions

# Timer functions
[IoUtil Functions]

Starting, stopping and execution of time triggered actions.
More...

## Data Structures
struct | time_stamp_t
## Defines
#define | MSEC(v) ((time_t)(v / (1.0e3 * TIMER_TICK)))
#define | NONE_TIMER (0)
#define | USEC(v) ((time_t)(v / (1.0e6 * TIMER_TICK)))
## Typedefs
typedef uint32_t | time_t
typedef uint32_t | timer_arg_t
typedef time_t( | timer_handler_t )(timer_arg_t p)
typedef uint16_t | timer_hdl_t
## Functions
void | timer_get_tstamp (time_stamp_t *ts)
void | timer_init (void)
| Initialization of the timer module.
timer_hdl_t | timer_restart (timer_hdl_t th, time_t duration)
| Restarting a running timer.
void | timer_set_systime (time_t sec)
| Set the current system time given in seconds since 1.1.1970.
timer_hdl_t | timer_start (timer_handler_t *thfunc, time_t duration, timer_arg_t arg)
| Start a timer with a given handler function.
timer_hdl_t | timer_stop (timer_hdl_t th)
| Stop a running timer.
time_t | timer_systime (void)
| Return the current system time in ticks.

## Detailed Description

Starting, stopping and execution of time triggered actions.

This group of functions provides a one shot timer implemenation.

It is inspired by Jörg Wunschs timer implementation, which can be found here: http://sax.sax.de/~joerg/avr-timer/

## Define Documentation

#define MSEC | ( |  | v | ) | ((time_t)(v / (1.0e3 * TIMER_TICK)))

Macro that converts the millisecond value v into TIMER_IRQ_vect ticts

#define NONE_TIMER (0)

Symbolic name for invalid timer handle

#define USEC | ( |  | v | ) | ((time_t)(v / (1.0e6 * TIMER_TICK)))

Macro that converts the microsecond value v into TIMER_IRQ_vect ticts

## Typedef Documentation

typedef uint32_t time_t

Data type for time values (measured in number of system ticks).

typedef uint32_t timer_arg_t

Data type for the argument of a timer handler function.

typedef time_t( timer_handler_t)(timer_arg_t p)

Data type for timer expiration action function. This function is called, when the expiration time is over. When luanched, the function is called with a parameter p of type .timer_arg_t. If the function returns a value, which is greate then 0, the timer is restarted again.

typedef uint16_t timer_hdl_t

Data type for a timer handle (a reference number to identify a running timer).

## Function Documentation

void timer_get_tstamp | ( | time_stamp_t * | ts | ) |

Function that returns the internal system time counters as "libpcap" compatible time stamp.

Note:
  This routine takes ~548 cycles for execution. In case of a 8Mhz driven system, this is a 68.5 us.

Parameters:

  | ts | timestamp data structure

void timer_init | ( | void |  | ) |

Initialization of the timer module.

timer_hdl_t timer_restart | ( | timer_hdl_t | th,
|  | time_t | duration |
| ) |  |  |

Restarting a running timer.

If the timer is found in the timer queue, then it is rstarted with the new duration value.

Parameters:

  | th | Handle of the timer. The timer needs to exist in the timer queue, e.g. it is started with timer_start() and not yet expired.
  | duration | time in system ticks from now, when the timer expires.

Returns:
  the value of NONE_TIMER if the timer could not be found in the timer queue. Otherwise the value of th.

void timer_set_systime | ( | time_t | sec | ) |

Set the current system time given in seconds since 1.1.1970.

timer_hdl_t timer_start | ( | timer_handler_t * | thfunc,
|  | time_t | duration,
|  | timer_arg_t | arg |
| ) |  |  |

Start a timer with a given handler function.

This function initially creates a timer and assigns a timer handle to it. The timer handle is reference number, which identifies the timer uniquely and is needed for restart and stop a running timer.

Parameters:

  | thfunc | pointer to a function, which is called when the timer expires.
  | duration | time in system ticks from now, when the timer expires.
  | arg | argument, which is passed to the timer function.

Returns:
  the value of NONE_TIMER if the timer could not be started. Otherwise a handle != NONE_TIMER, which is needed for restarting and stopping the timer.

timer_hdl_t timer_stop | ( | timer_hdl_t | th | ) |

Stop a running timer.

Parameters:

  | th | Handle of the timer. The timer needs to exist in the timer queue, e.g. it is started with timer_start() and not yet expired.

Returns:
  the value of NONE_TIMER if the timer could not be found in the timer queue. Otherwise the value of th.

time_t timer_systime | ( | void |  | ) |

Return the current system time in ticks.