Microchip® Advanced Software Framework

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Seconds timer library

The stimer library provides functions for setting, resetting and restarting timers, and for checking if a timer has expired.

An application must "manually" check if its timers have expired; this is not done automatically.

A timer is declared as a struct stimer and all access to the timer is made by a pointer to the declared timer.

Note
The stimer library is not able to post events when a timer expires. The Event timers should be used for this purpose.
The stimer library uses the Clock library to measure time. Intervals should be specified in the seconds.
See Also
Event timers

Data Structures

struct  stimer
 A timer. More...
 

Files

file  stimer.c
 Timer of seconds library implementation.
 
file  stimer.h
 Second timer library header file.
 

Macros

#define SCLOCK_GEQ(a, b)
 

Functions

unsigned long stimer_elapsed (struct stimer *t)
 The time elapsed since the timer started. More...
 
int stimer_expired (struct stimer *t)
 Check if a timer has expired. More...
 
unsigned long stimer_remaining (struct stimer *t)
 The time until the timer expires. More...
 
void stimer_reset (struct stimer *t)
 Reset the timer with the same interval. More...
 
void stimer_restart (struct stimer *t)
 Restart the timer from the current point in time. More...
 
void stimer_set (struct stimer *t, unsigned long interval)
 Set a timer. More...
 

#define SCLOCK_GEQ (   a,
 
)
Value:
((unsigned long)((a) - (b)) < \
((unsigned long)(~((unsigned long)0)) >> 1))

Referenced by stimer_expired().

unsigned long stimer_elapsed ( struct stimer t)

The time elapsed since the timer started.

This function returns the time elapsed.

Parameters
tA pointer to the timer
Returns
The time elapsed since the last start of the timer

References clock_seconds(), and start.

int stimer_expired ( struct stimer t)

Check if a timer has expired.

This function tests if a timer has expired and returns true or false depending on its status.

Parameters
tA pointer to the timer
Returns
Non-zero if the timer has expired, zero otherwise.

References clock_seconds(), interval, SCLOCK_GEQ, and start.

Referenced by uip_ds6_defrt_periodic(), uip_ds6_neighbor_periodic(), and uip_ds6_periodic().

unsigned long stimer_remaining ( struct stimer t)

The time until the timer expires.

This function returns the time until the timer expires.

Parameters
tA pointer to the timer
Returns
The time until the timer expires

References clock_seconds(), interval, and start.

Referenced by ra_input(), and uip_ds6_get_least_lifetime_neighbor().

void stimer_reset ( struct stimer t)

Reset the timer with the same interval.

This function resets the timer with the same interval that was given to the stimer_set() function. The start point of the interval is the exact time that the timer last expired. Therefore, this function will cause the timer to be stable over time, unlike the stimer_restart() function.

Parameters
tA pointer to the timer.
See Also
stimer_restart()

References interval, and start.

void stimer_restart ( struct stimer t)

Restart the timer from the current point in time.

This function restarts a timer with the same interval that was given to the stimer_set() function. The timer will start at the current time.

Note
A periodic timer will drift if this function is used to reset it. For preioric timers, use the stimer_reset() function instead.
Parameters
tA pointer to the timer.
See Also
stimer_reset()

References clock_seconds(), and start.

void stimer_set ( struct stimer t,
unsigned long  interval 
)

Set a timer.

This function is used to set a timer for a time sometime in the future. The function stimer_expired() will evaluate to true after the timer has expired.

Parameters
tA pointer to the timer
intervalThe interval before the timer expires.

References clock_seconds(), interval, and start.

Referenced by dao_input(), dio_input(), na_input(), ra_input(), tcpip_ipv6_output(), uip_ds6_addr_add(), uip_ds6_defrt_add(), uip_ds6_init(), uip_ds6_link_neighbor_callback(), uip_ds6_nbr_add(), uip_ds6_neighbor_periodic(), and uip_ds6_prefix_add().