]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/webserver/timer.c
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_LPC1768_GCC_RedSuite / src / webserver / timer.c
1 /**\r
2  * \addtogroup timer\r
3  * @{\r
4  */\r
5 \r
6 /**\r
7  * \file\r
8  * Timer library implementation.\r
9  * \author\r
10  * Adam Dunkels <adam@sics.se>\r
11  */\r
12 \r
13 /*\r
14  * Copyright (c) 2004, Swedish Institute of Computer Science.\r
15  * All rights reserved.\r
16  *\r
17  * Redistribution and use in source and binary forms, with or without\r
18  * modification, are permitted provided that the following conditions\r
19  * are met:\r
20  * 1. Redistributions of source code must retain the above copyright\r
21  *    notice, this list of conditions and the following disclaimer.\r
22  * 2. Redistributions in binary form must reproduce the above copyright\r
23  *    notice, this list of conditions and the following disclaimer in the\r
24  *    documentation and/or other materials provided with the distribution.\r
25  * 3. Neither the name of the Institute nor the names of its contributors\r
26  *    may be used to endorse or promote products derived from this software\r
27  *    without specific prior written permission.\r
28  *\r
29  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND\r
30  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
31  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
32  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE\r
33  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
34  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
35  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
36  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
37  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
38  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
39  * SUCH DAMAGE.\r
40  *\r
41  * This file is part of the uIP TCP/IP stack\r
42  *\r
43  * Author: Adam Dunkels <adam@sics.se>\r
44  *\r
45  * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $\r
46  */\r
47 \r
48 #include "clock.h"\r
49 #include "timer.h"\r
50 \r
51 /*---------------------------------------------------------------------------*/\r
52 /**\r
53  * Set a timer.\r
54  *\r
55  * This function is used to set a timer for a time sometime in the\r
56  * future. The function timer_expired() will evaluate to true after\r
57  * the timer has expired.\r
58  *\r
59  * \param t A pointer to the timer\r
60  * \param interval The interval before the timer expires.\r
61  *\r
62  */\r
63 void\r
64 timer_set(struct timer *t, clock_time_t interval)\r
65 {\r
66   t->interval = interval;\r
67   t->start = clock_time();\r
68 }\r
69 /*---------------------------------------------------------------------------*/\r
70 /**\r
71  * Reset the timer with the same interval.\r
72  *\r
73  * This function resets the timer with the same interval that was\r
74  * given to the timer_set() function. The start point of the interval\r
75  * is the exact time that the timer last expired. Therefore, this\r
76  * function will cause the timer to be stable over time, unlike the\r
77  * timer_rester() function.\r
78  *\r
79  * \param t A pointer to the timer.\r
80  *\r
81  * \sa timer_restart()\r
82  */\r
83 void\r
84 timer_reset(struct timer *t)\r
85 {\r
86   t->start += t->interval;\r
87 }\r
88 /*---------------------------------------------------------------------------*/\r
89 /**\r
90  * Restart the timer from the current point in time\r
91  *\r
92  * This function restarts a timer with the same interval that was\r
93  * given to the timer_set() function. The timer will start at the\r
94  * current time.\r
95  *\r
96  * \note A periodic timer will drift if this function is used to reset\r
97  * it. For preioric timers, use the timer_reset() function instead.\r
98  *\r
99  * \param t A pointer to the timer.\r
100  *\r
101  * \sa timer_reset()\r
102  */\r
103 void\r
104 timer_restart(struct timer *t)\r
105 {\r
106   t->start = clock_time();\r
107 }\r
108 /*---------------------------------------------------------------------------*/\r
109 /**\r
110  * Check if a timer has expired.\r
111  *\r
112  * This function tests if a timer has expired and returns true or\r
113  * false depending on its status.\r
114  *\r
115  * \param t A pointer to the timer\r
116  *\r
117  * \return Non-zero if the timer has expired, zero otherwise.\r
118  *\r
119  */\r
120 int\r
121 timer_expired(struct timer *t)\r
122 {\r
123   return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval;\r
124 }\r
125 /*---------------------------------------------------------------------------*/\r
126 \r
127 /** @} */\r