]> git.sur5r.net Git - freertos/blob - Demo/Common/ethernet/FreeTCPIP/sys/timer.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / Common / ethernet / FreeTCPIP / sys / timer.h
1 /** \addtogroup sys\r
2  * @{ */\r
3 \r
4 /**\r
5  * \defgroup timer Timer library\r
6  *\r
7  * The Contiki kernel does not provide support for timed\r
8  * events. Rather, an application that wants to use timers needs to\r
9  * explicitly use the timer library.\r
10  *\r
11  * The timer library provides functions for setting, resetting and\r
12  * restarting timers, and for checking if a timer has expired. An\r
13  * application must "manually" check if its timers have expired; this\r
14  * is not done automatically.\r
15  *\r
16  * A timer is declared as a \c struct \c timer and all access to the\r
17  * timer is made by a pointer to the declared timer.\r
18  *\r
19  * \note The timer library is not able to post events when a timer\r
20  * expires. The \ref etimer "Event timers" should be used for this\r
21  * purpose.\r
22  *\r
23  * \note The timer library uses the \ref clock "Clock library" to\r
24  * measure time. Intervals should be specified in the format used by\r
25  * the clock library.\r
26  *\r
27  * \sa \ref etimer "Event timers"\r
28  *\r
29  * @{\r
30  */\r
31 \r
32 /**\r
33  * \file\r
34  * Timer library header file.\r
35  * \author\r
36  * Adam Dunkels <adam@sics.se>\r
37  */\r
38 \r
39 /*\r
40  * Copyright (c) 2004, Swedish Institute of Computer Science.\r
41  * All rights reserved.\r
42  *\r
43  * Redistribution and use in source and binary forms, with or without\r
44  * modification, are permitted provided that the following conditions\r
45  * are met:\r
46  * 1. Redistributions of source code must retain the above copyright\r
47  *    notice, this list of conditions and the following disclaimer.\r
48  * 2. Redistributions in binary form must reproduce the above copyright\r
49  *    notice, this list of conditions and the following disclaimer in the\r
50  *    documentation and/or other materials provided with the distribution.\r
51  * 3. Neither the name of the Institute nor the names of its contributors\r
52  *    may be used to endorse or promote products derived from this software\r
53  *    without specific prior written permission.\r
54  *\r
55  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND\r
56  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
57  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
58  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE\r
59  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
60  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
61  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
62  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
63  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
64  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
65  * SUCH DAMAGE.\r
66  *\r
67  * This file is part of the Contiki operating system.\r
68  *\r
69  * Author: Adam Dunkels <adam@sics.se>\r
70  *\r
71  * $Id: timer.h,v 1.2 2008/09/21 08:58:05 adamdunkels Exp $\r
72  */\r
73 #ifndef __TIMER_H__\r
74 #define __TIMER_H__\r
75 \r
76 #include "sys/clock.h"\r
77 \r
78 /**\r
79  * A timer.\r
80  *\r
81  * This structure is used for declaring a timer. The timer must be set\r
82  * with timer_set() before it can be used.\r
83  *\r
84  * \hideinitializer\r
85  */\r
86 struct timer\r
87 {\r
88         clock_time_t    start;\r
89         clock_time_t    interval;\r
90 };\r
91 \r
92 void                    timer_set( struct timer *t, clock_time_t interval );\r
93 void                    timer_reset( struct timer *t );\r
94 void                    timer_restart( struct timer *t );\r
95 int                             timer_expired( struct timer *t );\r
96 clock_time_t    timer_remaining( struct timer *t );\r
97 #endif /* __TIMER_H__ */\r
98 \r
99 /** @} */\r
100 \r
101 /** @} */\r