xref: /nrf52832-nimble/rt-thread/components/net/uip/doc/html/a00156.html (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2*10465441SEvalZero<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3*10465441SEvalZero<title>uIP 1.0: Timer library</title>
4*10465441SEvalZero<link href="doxygen.css" rel="stylesheet" type="text/css">
5*10465441SEvalZero<link href="tabs.css" rel="stylesheet" type="text/css">
6*10465441SEvalZero</head><body>
7*10465441SEvalZero<!-- Generated by Doxygen 1.4.6 -->
8*10465441SEvalZero<div class="tabs">
9*10465441SEvalZero  <ul>
10*10465441SEvalZero    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
11*10465441SEvalZero    <li><a href="modules.html"><span>Modules</span></a></li>
12*10465441SEvalZero    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
13*10465441SEvalZero    <li><a href="files.html"><span>Files</span></a></li>
14*10465441SEvalZero    <li><a href="examples.html"><span>Examples</span></a></li>
15*10465441SEvalZero  </ul></div>
16*10465441SEvalZero<h1>Timer library</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
17*10465441SEvalZeroThe timer library provides functions for setting, resetting and restarting timers, and for checking if a timer has expired.
18*10465441SEvalZero<p>
19*10465441SEvalZeroAn application must "manually" check if its timers have expired; this is not done automatically.<p>
20*10465441SEvalZeroA timer is declared as a <code>struct</code> <code>timer</code> and all access to the timer is made by a pointer to the declared timer.<p>
21*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>The timer library uses the <a class="el" href="a00157.html">Clock library</a> to measure time. Intervals should be specified in the format used by the clock library. </dd></dl>
22*10465441SEvalZero
23*10465441SEvalZero<p>
24*10465441SEvalZero<table border="0" cellpadding="0" cellspacing="0">
25*10465441SEvalZero<tr><td></td></tr>
26*10465441SEvalZero<tr><td colspan="2"><br><h2>Files</h2></td></tr>
27*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html">timer.h</a></td></tr>
28*10465441SEvalZero
29*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Timer library header file. <br></td></tr>
30*10465441SEvalZero
31*10465441SEvalZero<p>
32*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">timer.c</a></td></tr>
33*10465441SEvalZero
34*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Timer library implementation. <br></td></tr>
35*10465441SEvalZero
36*10465441SEvalZero<p>
37*10465441SEvalZero<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
38*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00087.html">timer</a></td></tr>
39*10465441SEvalZero
40*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A timer.  <a href="a00087.html#_details">More...</a><br></td></tr>
41*10465441SEvalZero<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
42*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#g6614d96fdfcd95c95ec6e6f63071ff51">timer_set</a> (struct <a class="el" href="a00087.html">timer</a> *t, clock_time_t interval)</td></tr>
43*10465441SEvalZero
44*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a timer.  <a href="#g6614d96fdfcd95c95ec6e6f63071ff51"></a><br></td></tr>
45*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#gedaf3e48c2b04229b85455fb948468d6">timer_reset</a> (struct <a class="el" href="a00087.html">timer</a> *t)</td></tr>
46*10465441SEvalZero
47*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset the timer with the same interval.  <a href="#gedaf3e48c2b04229b85455fb948468d6"></a><br></td></tr>
48*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#gcb807bd57e5489b386b876af5c1f163a">timer_restart</a> (struct <a class="el" href="a00087.html">timer</a> *t)</td></tr>
49*10465441SEvalZero
50*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Restart the timer from the current point in time.  <a href="#gcb807bd57e5489b386b876af5c1f163a"></a><br></td></tr>
51*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#g6d71dececfce707c668e6257aad5906e">timer_expired</a> (struct <a class="el" href="a00087.html">timer</a> *t)</td></tr>
52*10465441SEvalZero
53*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if a timer has expired.  <a href="#g6d71dececfce707c668e6257aad5906e"></a><br></td></tr>
54*10465441SEvalZero</table>
55*10465441SEvalZero<hr><h2>Function Documentation</h2>
56*10465441SEvalZero<a class="anchor" name="g6d71dececfce707c668e6257aad5906e"></a><!-- doxytag: member="timer.h::timer_expired" ref="g6d71dececfce707c668e6257aad5906e" args="(struct timer *t)" --><p>
57*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0">
58*10465441SEvalZero  <tr>
59*10465441SEvalZero    <td class="mdRow">
60*10465441SEvalZero      <table cellpadding="0" cellspacing="0" border="0">
61*10465441SEvalZero        <tr>
62*10465441SEvalZero          <td class="md" nowrap valign="top">int timer_expired           </td>
63*10465441SEvalZero          <td class="md" valign="top">(&nbsp;</td>
64*10465441SEvalZero          <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> *&nbsp;</td>
65*10465441SEvalZero          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
66*10465441SEvalZero          <td class="md" valign="top">&nbsp;)&nbsp;</td>
67*10465441SEvalZero          <td class="md" nowrap></td>
68*10465441SEvalZero        </tr>
69*10465441SEvalZero      </table>
70*10465441SEvalZero    </td>
71*10465441SEvalZero  </tr>
72*10465441SEvalZero</table>
73*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0">
74*10465441SEvalZero  <tr>
75*10465441SEvalZero    <td>
76*10465441SEvalZero      &nbsp;
77*10465441SEvalZero    </td>
78*10465441SEvalZero    <td>
79*10465441SEvalZero
80*10465441SEvalZero<p>
81*10465441SEvalZeroCheck if a timer has expired.
82*10465441SEvalZero<p>
83*10465441SEvalZeroThis function tests if a timer has expired and returns true or false depending on its status.<p>
84*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd>
85*10465441SEvalZero  <table border="0" cellspacing="2" cellpadding="0">
86*10465441SEvalZero    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A pointer to the timer</td></tr>
87*10465441SEvalZero  </table>
88*10465441SEvalZero</dl>
89*10465441SEvalZero<dl compact><dt><b>Returns:</b></dt><dd>Non-zero if the timer has expired, zero otherwise. </dd></dl>
90*10465441SEvalZero<dl compact><dt><b>Examples: </b></dt><dd>
91*10465441SEvalZero<a class="el" href="a00048.html#a26">dhcpc.c</a>, <a class="el" href="a00042.html#a77">example-mainloop-with-arp.c</a>, and <a class="el" href="a00043.html#a94">example-mainloop-without-arp.c</a>.</dl>
92*10465441SEvalZero<p>
93*10465441SEvalZeroDefinition at line <a class="el" href="a00195.html#l00121">121</a> of file <a class="el" href="a00195.html">timer.c</a>.
94*10465441SEvalZero<p>
95*10465441SEvalZeroReferences <a class="el" href="a00157.html#ge5b7160f2e653725ba5e2024c3cb7bff">clock_time()</a>, <a class="el" href="a00196.html#l00076">interval</a>, and <a class="el" href="a00196.html#l00075">start</a>.    </td>
96*10465441SEvalZero  </tr>
97*10465441SEvalZero</table>
98*10465441SEvalZero<a class="anchor" name="gedaf3e48c2b04229b85455fb948468d6"></a><!-- doxytag: member="timer.h::timer_reset" ref="gedaf3e48c2b04229b85455fb948468d6" args="(struct timer *t)" --><p>
99*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0">
100*10465441SEvalZero  <tr>
101*10465441SEvalZero    <td class="mdRow">
102*10465441SEvalZero      <table cellpadding="0" cellspacing="0" border="0">
103*10465441SEvalZero        <tr>
104*10465441SEvalZero          <td class="md" nowrap valign="top">void timer_reset           </td>
105*10465441SEvalZero          <td class="md" valign="top">(&nbsp;</td>
106*10465441SEvalZero          <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> *&nbsp;</td>
107*10465441SEvalZero          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
108*10465441SEvalZero          <td class="md" valign="top">&nbsp;)&nbsp;</td>
109*10465441SEvalZero          <td class="md" nowrap></td>
110*10465441SEvalZero        </tr>
111*10465441SEvalZero      </table>
112*10465441SEvalZero    </td>
113*10465441SEvalZero  </tr>
114*10465441SEvalZero</table>
115*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0">
116*10465441SEvalZero  <tr>
117*10465441SEvalZero    <td>
118*10465441SEvalZero      &nbsp;
119*10465441SEvalZero    </td>
120*10465441SEvalZero    <td>
121*10465441SEvalZero
122*10465441SEvalZero<p>
123*10465441SEvalZeroReset the timer with the same interval.
124*10465441SEvalZero<p>
125*10465441SEvalZeroThis function resets the timer with the same interval that was given to the <a class="el" href="a00156.html#g6614d96fdfcd95c95ec6e6f63071ff51">timer_set()</a> 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 timer_rester() function.<p>
126*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd>
127*10465441SEvalZero  <table border="0" cellspacing="2" cellpadding="0">
128*10465441SEvalZero    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A pointer to the timer.</td></tr>
129*10465441SEvalZero  </table>
130*10465441SEvalZero</dl>
131*10465441SEvalZero<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00156.html#gcb807bd57e5489b386b876af5c1f163a">timer_restart()</a> </dd></dl>
132*10465441SEvalZero<dl compact><dt><b>Examples: </b></dt><dd>
133*10465441SEvalZero<a class="el" href="a00042.html#a78">example-mainloop-with-arp.c</a>, and <a class="el" href="a00043.html#a95">example-mainloop-without-arp.c</a>.</dl>
134*10465441SEvalZero<p>
135*10465441SEvalZeroDefinition at line <a class="el" href="a00195.html#l00084">84</a> of file <a class="el" href="a00195.html">timer.c</a>.
136*10465441SEvalZero<p>
137*10465441SEvalZeroReferences <a class="el" href="a00196.html#l00076">interval</a>, and <a class="el" href="a00196.html#l00075">start</a>.    </td>
138*10465441SEvalZero  </tr>
139*10465441SEvalZero</table>
140*10465441SEvalZero<a class="anchor" name="gcb807bd57e5489b386b876af5c1f163a"></a><!-- doxytag: member="timer.h::timer_restart" ref="gcb807bd57e5489b386b876af5c1f163a" args="(struct timer *t)" --><p>
141*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0">
142*10465441SEvalZero  <tr>
143*10465441SEvalZero    <td class="mdRow">
144*10465441SEvalZero      <table cellpadding="0" cellspacing="0" border="0">
145*10465441SEvalZero        <tr>
146*10465441SEvalZero          <td class="md" nowrap valign="top">void timer_restart           </td>
147*10465441SEvalZero          <td class="md" valign="top">(&nbsp;</td>
148*10465441SEvalZero          <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> *&nbsp;</td>
149*10465441SEvalZero          <td class="mdname1" valign="top" nowrap> <em>t</em>          </td>
150*10465441SEvalZero          <td class="md" valign="top">&nbsp;)&nbsp;</td>
151*10465441SEvalZero          <td class="md" nowrap></td>
152*10465441SEvalZero        </tr>
153*10465441SEvalZero      </table>
154*10465441SEvalZero    </td>
155*10465441SEvalZero  </tr>
156*10465441SEvalZero</table>
157*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0">
158*10465441SEvalZero  <tr>
159*10465441SEvalZero    <td>
160*10465441SEvalZero      &nbsp;
161*10465441SEvalZero    </td>
162*10465441SEvalZero    <td>
163*10465441SEvalZero
164*10465441SEvalZero<p>
165*10465441SEvalZeroRestart the timer from the current point in time.
166*10465441SEvalZero<p>
167*10465441SEvalZeroThis function restarts a timer with the same interval that was given to the <a class="el" href="a00156.html#g6614d96fdfcd95c95ec6e6f63071ff51">timer_set()</a> function. The timer will start at the current time.<p>
168*10465441SEvalZero<dl compact><dt><b>Note:</b></dt><dd>A periodic timer will drift if this function is used to reset it. For preioric timers, use the <a class="el" href="a00156.html#gedaf3e48c2b04229b85455fb948468d6">timer_reset()</a> function instead.</dd></dl>
169*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd>
170*10465441SEvalZero  <table border="0" cellspacing="2" cellpadding="0">
171*10465441SEvalZero    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A pointer to the timer.</td></tr>
172*10465441SEvalZero  </table>
173*10465441SEvalZero</dl>
174*10465441SEvalZero<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00156.html#gedaf3e48c2b04229b85455fb948468d6">timer_reset()</a> </dd></dl>
175*10465441SEvalZero
176*10465441SEvalZero<p>
177*10465441SEvalZeroDefinition at line <a class="el" href="a00195.html#l00104">104</a> of file <a class="el" href="a00195.html">timer.c</a>.
178*10465441SEvalZero<p>
179*10465441SEvalZeroReferences <a class="el" href="a00157.html#ge5b7160f2e653725ba5e2024c3cb7bff">clock_time()</a>, and <a class="el" href="a00196.html#l00075">start</a>.    </td>
180*10465441SEvalZero  </tr>
181*10465441SEvalZero</table>
182*10465441SEvalZero<a class="anchor" name="g6614d96fdfcd95c95ec6e6f63071ff51"></a><!-- doxytag: member="timer.h::timer_set" ref="g6614d96fdfcd95c95ec6e6f63071ff51" args="(struct timer *t, clock_time_t interval)" --><p>
183*10465441SEvalZero<table class="mdTable" cellpadding="2" cellspacing="0">
184*10465441SEvalZero  <tr>
185*10465441SEvalZero    <td class="mdRow">
186*10465441SEvalZero      <table cellpadding="0" cellspacing="0" border="0">
187*10465441SEvalZero        <tr>
188*10465441SEvalZero          <td class="md" nowrap valign="top">void timer_set           </td>
189*10465441SEvalZero          <td class="md" valign="top">(&nbsp;</td>
190*10465441SEvalZero          <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> *&nbsp;</td>
191*10465441SEvalZero          <td class="mdname" nowrap> <em>t</em>, </td>
192*10465441SEvalZero        </tr>
193*10465441SEvalZero        <tr>
194*10465441SEvalZero          <td class="md" nowrap align="right"></td>
195*10465441SEvalZero          <td class="md"></td>
196*10465441SEvalZero          <td class="md" nowrap>clock_time_t&nbsp;</td>
197*10465441SEvalZero          <td class="mdname" nowrap> <em>interval</em></td>
198*10465441SEvalZero        </tr>
199*10465441SEvalZero        <tr>
200*10465441SEvalZero          <td class="md"></td>
201*10465441SEvalZero          <td class="md">)&nbsp;</td>
202*10465441SEvalZero          <td class="md" colspan="2"></td>
203*10465441SEvalZero        </tr>
204*10465441SEvalZero      </table>
205*10465441SEvalZero    </td>
206*10465441SEvalZero  </tr>
207*10465441SEvalZero</table>
208*10465441SEvalZero<table cellspacing="5" cellpadding="0" border="0">
209*10465441SEvalZero  <tr>
210*10465441SEvalZero    <td>
211*10465441SEvalZero      &nbsp;
212*10465441SEvalZero    </td>
213*10465441SEvalZero    <td>
214*10465441SEvalZero
215*10465441SEvalZero<p>
216*10465441SEvalZeroSet a timer.
217*10465441SEvalZero<p>
218*10465441SEvalZeroThis function is used to set a timer for a time sometime in the future. The function <a class="el" href="a00156.html#g6d71dececfce707c668e6257aad5906e">timer_expired()</a> will evaluate to true after the timer has expired.<p>
219*10465441SEvalZero<dl compact><dt><b>Parameters:</b></dt><dd>
220*10465441SEvalZero  <table border="0" cellspacing="2" cellpadding="0">
221*10465441SEvalZero    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A pointer to the timer </td></tr>
222*10465441SEvalZero    <tr><td valign="top"></td><td valign="top"><em>interval</em>&nbsp;</td><td>The interval before the timer expires. </td></tr>
223*10465441SEvalZero  </table>
224*10465441SEvalZero</dl>
225*10465441SEvalZero<dl compact><dt><b>Examples: </b></dt><dd>
226*10465441SEvalZero<a class="el" href="a00048.html#a22">dhcpc.c</a>, <a class="el" href="a00042.html#a62">example-mainloop-with-arp.c</a>, and <a class="el" href="a00043.html#a86">example-mainloop-without-arp.c</a>.</dl>
227*10465441SEvalZero<p>
228*10465441SEvalZeroDefinition at line <a class="el" href="a00195.html#l00064">64</a> of file <a class="el" href="a00195.html">timer.c</a>.
229*10465441SEvalZero<p>
230*10465441SEvalZeroReferences <a class="el" href="a00157.html#ge5b7160f2e653725ba5e2024c3cb7bff">clock_time()</a>, <a class="el" href="a00196.html#l00076">interval</a>, and <a class="el" href="a00196.html#l00075">start</a>.    </td>
231*10465441SEvalZero  </tr>
232*10465441SEvalZero</table>
233*10465441SEvalZero<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by&nbsp;
234*10465441SEvalZero<a href="http://www.doxygen.org/index.html">
235*10465441SEvalZero<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
236*10465441SEvalZero</body>
237*10465441SEvalZero</html>
238