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 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 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 </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"> </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 </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"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00087.html">timer</a></td></tr> 39*10465441SEvalZero 40*10465441SEvalZero<tr><td class="mdescLeft"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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">( </td> 64*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> * </td> 65*10465441SEvalZero <td class="mdname1" valign="top" nowrap> <em>t</em> </td> 66*10465441SEvalZero <td class="md" valign="top"> ) </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 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> </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">( </td> 106*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> * </td> 107*10465441SEvalZero <td class="mdname1" valign="top" nowrap> <em>t</em> </td> 108*10465441SEvalZero <td class="md" valign="top"> ) </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 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> </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">( </td> 148*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> * </td> 149*10465441SEvalZero <td class="mdname1" valign="top" nowrap> <em>t</em> </td> 150*10465441SEvalZero <td class="md" valign="top"> ) </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 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> </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">( </td> 190*10465441SEvalZero <td class="md" nowrap valign="top">struct <a class="el" href="a00087.html">timer</a> * </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 </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">) </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 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> </td><td>A pointer to the timer </td></tr> 222*10465441SEvalZero <tr><td valign="top"></td><td valign="top"><em>interval</em> </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 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