As requested long ago, added CoData* parameter to all this applications callback, let application designer use identical callback for multiple nodes, and reduce source code length.
Concerned callbacks :
initialisation
preOperational
operational
stopped
heartbeatError
post_sync
post_TPDO
post_SlaveBootup
storeODSubIndex
post_emcy
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>CanFestival: include/timer.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.1 -->
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
<li><a href="dirs.html"><span>Directories</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul></div>
<div class="nav">
<a class="el" href="dir_bb27f6e70a4a8ab6966321815f15a33d.html">include</a></div>
<h1>timer.h File Reference</h1><code>#include <<a class="el" href="win32_2timerscfg_8h-source.html">timerscfg.h</a>></code><br>
<code>#include <<a class="el" href="win32_2applicfg_8h-source.html">applicfg.h</a>></code><br>
<code>#include "<a class="el" href="data_8h-source.html">data.h</a>"</code><br>
<p>
Include dependency graph for timer.h:<p><center><img src="timer_8h__incl.png" border="0" usemap="#include/timer.h_map" alt=""></center>
<map name="include/timer.h_map">
<area href="win32_2timerscfg_8h.html" shape="rect" coords="159,5,239,32" alt="">
<area href="win32_2applicfg_8h.html" shape="rect" coords="525,335,600,361" alt="">
<area href="data_8h.html" shape="rect" coords="172,335,225,361" alt="">
<area href="def_8h.html" shape="rect" coords="428,563,476,589" alt="">
<area href="can_8h.html" shape="rect" coords="428,461,476,488" alt="">
<area href="objdictdef_8h.html" shape="rect" coords="291,157,376,184" alt="">
<area href="objacces_8h.html" shape="rect" coords="295,411,372,437" alt="">
<area href="sdo_8h.html" shape="rect" coords="309,613,357,640" alt="">
<area href="pdo_8h.html" shape="rect" coords="308,512,359,539" alt="">
<area href="states_8h.html" shape="rect" coords="303,107,364,133" alt="">
<area href="lifegrd_8h.html" shape="rect" coords="300,309,367,336" alt="">
<area href="sync_8h.html" shape="rect" coords="305,208,361,235" alt="">
<area href="nmtMaster_8h.html" shape="rect" coords="289,259,377,285" alt="">
<area href="config_8h.html" shape="rect" coords="531,563,595,589" alt="">
</map>
<p>
This graph shows which files directly or indirectly include this file:<p><center><img src="timer_8h__dep__incl.png" border="0" usemap="#include/timer.hdep_map" alt=""></center>
<map name="include/timer.hdep_map">
<area href="timer_8c.html" shape="rect" coords="223,5,300,32" alt="">
<area href="timers__unix_8c.html" shape="rect" coords="160,56,363,83" alt="">
<area href="timers__xeno_8c.html" shape="rect" coords="159,107,364,133" alt="">
<area href="drivers__win32_8cpp.html" shape="rect" coords="415,157,612,184" alt="">
<area href="timers__win32_8cpp.html" shape="rect" coords="416,208,611,235" alt="">
<area href="sdo_8h.html" shape="rect" coords="215,360,308,387" alt="">
<area href="timers__driver_8h.html" shape="rect" coords="188,259,335,285" alt="">
<area href="dcf_8c.html" shape="rect" coords="480,461,547,488" alt="">
<area href="sdo_8c.html" shape="rect" coords="480,411,547,437" alt="">
<area href="data_8h.html" shape="rect" coords="465,360,561,387" alt="">
<area href="unix_8c.html" shape="rect" coords="680,348,803,375" alt="">
<area href="unix_2canfestival_8h.html" shape="rect" coords="661,272,821,299" alt="">
</map>
<p>
<a href="timer_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structstruct__s__timer__entry.html">struct_s_timer_entry</a></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#92d252e2b6f4cf50c0e7450c20d5db48">TIMER_HANDLE</a> INTEGER16</td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#c8436e7543fa1329b00e570246071313">TimerCallback_t</a> (<a class="el" href="structstruct__CO__Data.html">CO_Data</a> *d, UNS32 id)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structstruct__s__timer__entry.html">struct_s_timer_entry</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#9d8fd79aa2a97ffdf912d3de8fa75be8">s_timer_entry</a></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">TIMER_HANDLE </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#956b22f24089db4c367f40199f838a20">SetAlarm</a> (<a class="el" href="structstruct__CO__Data.html">CO_Data</a> *d, UNS32 id, <a class="el" href="timer_8h.html#c8436e7543fa1329b00e570246071313">TimerCallback_t</a> callback, TIMEVAL value, TIMEVAL period)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">TIMER_HANDLE </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#12fe6467e1df03cc40dd6f76123c99f6">DelAlarm</a> (TIMER_HANDLE handle)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#cfbb167cb53b81998c9a6f5af0c93c13">TimeDispatch</a> (void)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#7996006c628d2df030b9684d7a86acd1">setTimer</a> (TIMEVAL value)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">TIMEVAL </td><td class="memItemRight" valign="bottom"><a class="el" href="timer_8h.html#75efe30105165658d05d871255f8c0a2">getElapsedTime</a> (void)</td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="92d252e2b6f4cf50c0e7450c20d5db48"></a><!-- doxytag: member="timer.h::TIMER_HANDLE" ref="92d252e2b6f4cf50c0e7450c20d5db48" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define TIMER_HANDLE INTEGER16 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="timer_8h-source.html#l00029">29</a> of file <a class="el" href="timer_8h-source.html">timer.h</a>.
<p>
Referenced by <a class="el" href="timer_8c-source.html#l00057">SetAlarm()</a>, and <a class="el" href="timer_8c-source.html#l00131">TimeDispatch()</a>.
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="9d8fd79aa2a97ffdf912d3de8fa75be8"></a><!-- doxytag: member="timer.h::s_timer_entry" ref="9d8fd79aa2a97ffdf912d3de8fa75be8" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structstruct__s__timer__entry.html">struct_s_timer_entry</a> <a class="el" href="structstruct__s__timer__entry.html">s_timer_entry</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="timer_8h-source.html#l00052">52</a> of file <a class="el" href="timer_8h-source.html">timer.h</a>.
</div>
</div><p>
<a class="anchor" name="c8436e7543fa1329b00e570246071313"></a><!-- doxytag: member="timer.h::TimerCallback_t" ref="c8436e7543fa1329b00e570246071313" args="(CO_Data *d, UNS32 id)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(*) <a class="el" href="timer_8h.html#c8436e7543fa1329b00e570246071313">TimerCallback_t</a>(<a class="el" href="structstruct__CO__Data.html">CO_Data</a> *d, UNS32 id) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="timer_8h-source.html#l00041">41</a> of file <a class="el" href="timer_8h-source.html">timer.h</a>.
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="12fe6467e1df03cc40dd6f76123c99f6"></a><!-- doxytag: member="timer.h::DelAlarm" ref="12fe6467e1df03cc40dd6f76123c99f6" args="(TIMER_HANDLE handle)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TIMER_HANDLE DelAlarm </td>
<td>(</td>
<td class="paramtype">TIMER_HANDLE </td>
<td class="paramname"> <em>handle</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
----- Use this to remove an alarm ----<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>handle</em> </td><td></td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl>
<p>
Definition at line <a class="el" href="timer_8c-source.html#l00112">112</a> of file <a class="el" href="timer_8c-source.html">timer.c</a>.
<p>
References <a class="el" href="timer_8c-source.html#l00042">last_timer_raw</a>, <a class="el" href="hcs12_2applicfg_8h-source.html#l00190">MSG_WAR</a>, <a class="el" href="timer_8h-source.html#l00044">struct_s_timer_entry::state</a>, and <a class="el" href="timer_8c-source.html#l00039">timers</a>.
<p>
Referenced by <a class="el" href="pdo_8c-source.html#l00442">_sendPDOevent()</a>, <a class="el" href="lifegrd_8c-source.html#l00236">heartbeatStop()</a>, <a class="el" href="pdo_8c-source.html#l00632">PDOStop()</a>, <a class="el" href="lifegrd_8c-source.html#l00081">proceedNODE_GUARD()</a>, <a class="el" href="pdo_8c-source.html#l00141">proceedPDO()</a>, <a class="el" href="lifegrd_8c-source.html#l00161">ProducerHearbeatAlarm()</a>, <a class="el" href="sync_8c-source.html#l00105">stopSYNC()</a>, and <a class="el" href="pdo_8c-source.html#l00573">TPDO_Communication_Parameter_Callback()</a>.
</div>
</div><p>
<a class="anchor" name="75efe30105165658d05d871255f8c0a2"></a><!-- doxytag: member="timer.h::getElapsedTime" ref="75efe30105165658d05d871255f8c0a2" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TIMEVAL getElapsedTime </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="canOpenDriver_8c-source.html#l00066">66</a> of file <a class="el" href="canOpenDriver_8c-source.html">canOpenDriver.c</a>.
<p>
References <a class="el" href="timers__win32_8cpp-source.html#l00210">class_timers::get_elapsed_time()</a>, <a class="el" href="portsaccess_8h-source.html#l00046">IO_PORTS_16</a>, and <a class="el" href="ports__def_8h-source.html#l00119">TC4H</a>.
<p>
Here is the call graph for this function:<p><center><img src="timer_8h_75efe30105165658d05d871255f8c0a2_cgraph.png" border="0" usemap="#timer_8h_75efe30105165658d05d871255f8c0a2_cgraph_map" alt=""></center>
<map name="timer_8h_75efe30105165658d05d871255f8c0a2_cgraph_map">
<area href="classclass__timers.html#25c83088f9f63dfd9b1c79c471edf1ef" shape="rect" coords="164,5,351,32" alt="">
<area href="classclass__timers.html#0c90706e338a7167cfd38a5e8c3e03d6" shape="rect" coords="401,5,545,32" alt="">
</map>
</div>
</div><p>
<a class="anchor" name="956b22f24089db4c367f40199f838a20"></a><!-- doxytag: member="timer.h::SetAlarm" ref="956b22f24089db4c367f40199f838a20" args="(CO_Data *d, UNS32 id, TimerCallback_t callback, TIMEVAL value, TIMEVAL period)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TIMER_HANDLE SetAlarm </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structstruct__CO__Data.html">CO_Data</a> * </td>
<td class="paramname"> <em>d</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UNS32 </td>
<td class="paramname"> <em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="timer_8h.html#c8436e7543fa1329b00e570246071313">TimerCallback_t</a> </td>
<td class="paramname"> <em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">TIMEVAL </td>
<td class="paramname"> <em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">TIMEVAL </td>
<td class="paramname"> <em>period</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
------- Use this to declare a new alarm ------<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>d</em> </td><td></td></tr>
<tr><td valign="top"></td><td valign="top"><em>id</em> </td><td></td></tr>
<tr><td valign="top"></td><td valign="top"><em>callback</em> </td><td></td></tr>
<tr><td valign="top"></td><td valign="top"><em>value</em> </td><td></td></tr>
<tr><td valign="top"></td><td valign="top"><em>period</em> </td><td></td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl>
<p>
Definition at line <a class="el" href="timer_8c-source.html#l00057">57</a> of file <a class="el" href="timer_8c-source.html">timer.c</a>.
<p>
References <a class="el" href="timer_8h-source.html#l00045">struct_s_timer_entry::d</a>, <a class="el" href="timer_8c-source.html#l00042">last_timer_raw</a>, <a class="el" href="config_8h-source.html#l00032">MAX_NB_TIMER</a>, <a class="el" href="timer_8h-source.html#l00029">TIMER_HANDLE</a>, and <a class="el" href="timer_8c-source.html#l00039">timers</a>.
<p>
Referenced by <a class="el" href="pdo_8c-source.html#l00442">_sendPDOevent()</a>, <a class="el" href="lifegrd_8c-source.html#l00206">heartbeatInit()</a>, <a class="el" href="lifegrd_8c-source.html#l00081">proceedNODE_GUARD()</a>, <a class="el" href="sync_8c-source.html#l00080">startSYNC()</a>, and <a class="el" href="timers__unix_8c-source.html#l00062">StartTimerLoop()</a>.
</div>
</div><p>
<a class="anchor" name="7996006c628d2df030b9684d7a86acd1"></a><!-- doxytag: member="timer.h::setTimer" ref="7996006c628d2df030b9684d7a86acd1" args="(TIMEVAL value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void setTimer </td>
<td>(</td>
<td class="paramtype">TIMEVAL </td>
<td class="paramname"> <em>value</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="timers__unix_8c-source.html#l00083">83</a> of file <a class="el" href="timers__unix_8c-source.html">timers_unix.c</a>.
<p>
References <a class="el" href="timers__unix_8c-source.html#l00082">maxval</a>, <a class="el" href="timers__win32_8cpp-source.html#l00204">class_timers::set_timer()</a>, and <a class="el" href="timers__unix_8c-source.html#l00018">timer</a>.
<p>
Here is the call graph for this function:<p><center><img src="timer_8h_7996006c628d2df030b9684d7a86acd1_cgraph.png" border="0" usemap="#timer_8h_7996006c628d2df030b9684d7a86acd1_cgraph_map" alt=""></center>
<map name="timer_8h_7996006c628d2df030b9684d7a86acd1_cgraph_map">
<area href="classclass__timers.html#1f14efc280b93b373f5831cc9123ab63" shape="rect" coords="123,5,267,32" alt="">
<area href="classclass__timers.html#0c90706e338a7167cfd38a5e8c3e03d6" shape="rect" coords="316,5,460,32" alt="">
</map>
</div>
</div><p>
<a class="anchor" name="cfbb167cb53b81998c9a6f5af0c93c13"></a><!-- doxytag: member="timer.h::TimeDispatch" ref="cfbb167cb53b81998c9a6f5af0c93c13" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TimeDispatch </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
------ TimeDispatch is called on each timer expiration ----
<p>
Definition at line <a class="el" href="timer_8c-source.html#l00131">131</a> of file <a class="el" href="timer_8c-source.html">timer.c</a>.
<p>
References <a class="el" href="canOpenDriver_8c-source.html#l00066">getElapsedTime()</a>, <a class="el" href="timer_8c-source.html#l00042">last_timer_raw</a>, <a class="el" href="timer_8c-source.html#l00044">min_val</a>, <a class="el" href="timer_8h-source.html#l00029">TIMER_HANDLE</a>, <a class="el" href="timer_8c-source.html#l00039">timers</a>, <a class="el" href="hcs12_2applicfg_8h-source.html#l00150">TIMEVAL</a>, <a class="el" href="hcs12_2applicfg_8h-source.html#l00153">TIMEVAL_MAX</a>, and <a class="el" href="timer_8c-source.html#l00041">total_sleep_time</a>.
<p>
Referenced by <a class="el" href="timers__win32_8cpp-source.html#l00151">class_timers::timer_loop_thread_proc()</a>, <a class="el" href="timers__unix_8c-source.html#l00030">timer_notify()</a>, and <a class="el" href="timers__xeno_8c-source.html#l00045">timerloop_task_proc()</a>.
<p>
Here is the call graph for this function:<p><center><img src="timer_8h_cfbb167cb53b81998c9a6f5af0c93c13_cgraph.png" border="0" usemap="#timer_8h_cfbb167cb53b81998c9a6f5af0c93c13_cgraph_map" alt=""></center>
<map name="timer_8h_cfbb167cb53b81998c9a6f5af0c93c13_cgraph_map">
<area href="canOpenDriver_8c.html#38b23a8ee3748bca3415967b90df1e15" shape="rect" coords="153,5,260,32" alt="">
</map>
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon Jul 2 19:10:35 2007 for CanFestival by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
</body>
</html>