Contiki-Inga 3.x
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
core
sys
ctimer.h
Go to the documentation of this file.
1
/**
2
* \addtogroup sys
3
* @{
4
*/
5
6
/**
7
* \defgroup ctimer Callback timer
8
* @{
9
*
10
* The ctimer module provides a timer mechanism that calls a specified
11
* C function when a ctimer expires.
12
*
13
*/
14
15
/*
16
* Copyright (c) 2006, Swedish Institute of Computer Science.
17
* All rights reserved.
18
*
19
* Redistribution and use in source and binary forms, with or without
20
* modification, are permitted provided that the following conditions
21
* are met:
22
* 1. Redistributions of source code must retain the above copyright
23
* notice, this list of conditions and the following disclaimer.
24
* 2. Redistributions in binary form must reproduce the above copyright
25
* notice, this list of conditions and the following disclaimer in the
26
* documentation and/or other materials provided with the distribution.
27
* 3. Neither the name of the Institute nor the names of its contributors
28
* may be used to endorse or promote products derived from this software
29
* without specific prior written permission.
30
*
31
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
32
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
33
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
35
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
39
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
40
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
41
* SUCH DAMAGE.
42
*
43
* This file is part of the Contiki operating system.
44
*
45
*/
46
47
/**
48
* \file
49
* Header file for the callback timer
50
* \author
51
* Adam Dunkels <adam@sics.se>
52
*/
53
54
#ifndef CTIMER_H_
55
#define CTIMER_H_
56
57
#include "
sys/etimer.h
"
58
59
struct
ctimer {
60
struct
ctimer *next;
61
struct
etimer
etimer
;
62
struct
process *p;
63
void (*f)(
void
*);
64
void
*ptr;
65
};
66
67
/**
68
* \brief Reset a callback timer with the same interval as was
69
* previously set.
70
* \param c A pointer to the callback timer.
71
*
72
* This function resets the callback timer with the same
73
* interval that was given to the callback timer with the
74
* ctimer_set() function. The start point of the interval
75
* is the exact time that the callback timer last
76
* expired. Therefore, this function will cause the timer
77
* to be stable over time, unlike the ctimer_restart()
78
* function.
79
*
80
* \sa ctimer_restart()
81
*/
82
void
ctimer_reset
(
struct
ctimer *c);
83
84
/**
85
* \brief Restart a callback timer from the current point in time
86
* \param c A pointer to the callback timer.
87
*
88
* This function restarts the callback timer with the same
89
* interval that was given to the ctimer_set()
90
* function. The callback timer will start at the current
91
* time.
92
*
93
* \note A periodic timer will drift if this function is
94
* used to reset it. For periodic timers, use the
95
* ctimer_reset() function instead.
96
*
97
* \sa ctimer_reset()
98
*/
99
void
ctimer_restart
(
struct
ctimer *c);
100
101
/**
102
* \brief Set a callback timer.
103
* \param c A pointer to the callback timer.
104
* \param t The interval before the timer expires.
105
* \param f A function to be called when the timer expires.
106
* \param ptr An opaque pointer that will be supplied as an argument to the callback function.
107
*
108
* This function is used to set a callback timer for a time
109
* sometime in the future. When the callback timer expires,
110
* the callback function f will be called with ptr as argument.
111
*
112
*/
113
void
ctimer_set
(
struct
ctimer *c, clock_time_t t,
114
void
(*f)(
void
*),
void
*ptr);
115
116
/**
117
* \brief Stop a pending callback timer.
118
* \param c A pointer to the pending callback timer.
119
*
120
* This function stops a callback timer that has previously
121
* been set with ctimer_set(), ctimer_reset(), or ctimer_restart().
122
* After this function has been called, the callback timer will be
123
* expired and will not call the callback function.
124
*
125
*/
126
void
ctimer_stop
(
struct
ctimer *c);
127
128
/**
129
* \brief Check if a callback timer has expired.
130
* \param c A pointer to the callback timer
131
* \return Non-zero if the timer has expired, zero otherwise.
132
*
133
* This function tests if a callback timer has expired and
134
* returns true or false depending on its status.
135
*/
136
int
ctimer_expired
(
struct
ctimer *c);
137
138
/**
139
* \brief Initialize the callback timer library.
140
*
141
* This function initializes the callback timer library and
142
* should be called from the system boot up code.
143
*/
144
void
ctimer_init
(
void
);
145
146
#endif
/* CTIMER_H_ */
147
/** @} */
148
/** @} */
Generated on Thu Apr 24 2014 16:26:13 for Contiki-Inga 3.x by
1.8.3.1