Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
stimer.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2004, 2008, Swedish Institute of Computer Science.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. Neither the name of the Institute nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
* This file is part of the Contiki operating system.
30
*
31
* Author: Adam Dunkels <adam@sics.se>, Nicolas Tsiftes <nvt@sics.se>
32
*
33
*/
34
35
/**
36
* \file
37
* Second timer library header file.
38
* \author
39
* Adam Dunkels <adam@sics.se>, Nicolas Tsiftes <nvt@sics.se>
40
*/
41
42
/** \addtogroup timers
43
* @{ */
44
45
/**
46
* \defgroup stimer Seconds timer library
47
*
48
* The stimer library provides functions for setting, resetting and
49
* restarting timers, and for checking if a timer has expired. An
50
* application must "manually" check if its timers have expired; this
51
* is not done automatically.
52
*
53
* A timer is declared as a \c struct \c stimer and all access to the
54
* timer is made by a pointer to the declared timer.
55
*
56
* \note The stimer library is not able to post events when a timer
57
* expires. The \ref etimer "Event timers" should be used for this
58
* purpose.
59
*
60
* \note The stimer library uses the \ref clock "Clock library" to
61
* measure time. Intervals should be specified in the seconds.
62
*
63
* \sa \ref etimer "Event timers"
64
*
65
* @{
66
*/
67
68
#ifndef STIMER_H_
69
#define STIMER_H_
70
71
#include "sys/clock.h"
72
73
#include <stdbool.h>
74
75
/**
76
* A timer.
77
*
78
* This structure is used for declaring a timer. The timer must be set
79
* with stimer_set() before it can be used.
80
*
81
* \hideinitializer
82
*/
83
struct
stimer
{
84
unsigned
long
start;
85
unsigned
long
interval;
86
};
87
88
/**
89
* Set a timer.
90
*
91
* This function is used to set a timer for a time sometime in the
92
* future. The function stimer_expired() will evaluate to true after
93
* the timer has expired.
94
*
95
* \param t A pointer to the timer
96
* \param interval The interval before the timer expires.
97
*
98
*/
99
static
inline
void
100
stimer_set
(
struct
stimer
*t,
unsigned
long
interval)
101
{
102
t->interval = interval;
103
t->start =
clock_seconds
();
104
}
105
106
void
stimer_reset
(
struct
stimer
*t);
107
void
stimer_restart
(
struct
stimer
*t);
108
bool
stimer_expired
(
struct
stimer
*t);
109
110
/**
111
* The time until the timer expires
112
*
113
* This function returns the time until the timer expires.
114
*
115
* \param t A pointer to the timer
116
*
117
* \return The time until the timer expires
118
*
119
*/
120
static
inline
unsigned
long
121
stimer_remaining
(
struct
stimer
*t)
122
{
123
return
t->start + t->interval -
clock_seconds
();
124
}
125
126
127
unsigned
long
stimer_elapsed
(
struct
stimer
*t);
128
129
130
#endif
/* STIMER_H_ */
131
132
/** @} */
133
/** @} */
clock_seconds
unsigned long clock_seconds(void)
Get the current value of the platform seconds.
Definition
clock.c:130
stimer_reset
void stimer_reset(struct stimer *t)
Reset the timer with the same interval.
Definition
stimer.c:70
stimer_restart
void stimer_restart(struct stimer *t)
Restart the timer from the current point in time.
Definition
stimer.c:92
stimer_set
static void stimer_set(struct stimer *t, unsigned long interval)
Set a timer.
Definition
stimer.h:100
stimer_remaining
static unsigned long stimer_remaining(struct stimer *t)
The time until the timer expires.
Definition
stimer.h:121
stimer_elapsed
unsigned long stimer_elapsed(struct stimer *t)
The time elapsed since the timer started.
Definition
stimer.c:125
stimer_expired
bool stimer_expired(struct stimer *t)
Check if a timer has expired.
Definition
stimer.c:109
stimer
A timer.
Definition
stimer.h:83
os
sys
stimer.h
Generated on
for Contiki-NG by
1.17.0