doc/doxygen/html/timer_8c-source.html
author etisserant
Mon, 02 Jul 2007 18:22:58 +0200
changeset 236 905677ed00f3
parent 215 f49e5a6b7804
child 240 34654679f262
permissions -rw-r--r--
Full preliminary implementation of TPDO transmit type:
- SYNC (N) (1-240)
- RTR only + SYNC (252)
- RTR only (253)
- EVENT, with timer and inhibit time (254 and 255)

User app have to call sendPDOevent(d) to eventually signal mapped data changes.
Callbacks added to 0x140N, TPDO comm parameters for on the fly timers values change.
TestMasterSlave updated.
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
     3
<title>CanFestival: src/timer.c Source File</title>
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     4
<link href="doxygen.css" rel="stylesheet" type="text/css">
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     5
<link href="tabs.css" rel="stylesheet" type="text/css">
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     6
</head><body>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     7
<!-- Generated by Doxygen 1.5.1 -->
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     8
<div class="tabs">
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
     9
  <ul>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    10
    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    11
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    12
    <li id="current"><a href="files.html"><span>Files</span></a></li>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    13
    <li><a href="dirs.html"><span>Directories</span></a></li>
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    14
  </ul></div>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    15
<div class="tabs">
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    16
  <ul>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    17
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    18
    <li><a href="globals.html"><span>Globals</span></a></li>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    19
  </ul></div>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    20
<div class="nav">
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    21
<a class="el" href="dir_c0a169d39c08973f879fd54f07b9e9f7.html">src</a></div>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    22
<h1>timer.c</h1><a href="timer_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    23
<a name="l00002"></a>00002 <span class="comment">This file is part of CanFestival, a library implementing CanOpen Stack. </span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    24
<a name="l00003"></a>00003 <span class="comment"></span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    25
<a name="l00004"></a>00004 <span class="comment">Copyright (C): Edouard TISSERANT and Francis DUPIN</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    26
<a name="l00005"></a>00005 <span class="comment"></span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    27
<a name="l00006"></a>00006 <span class="comment">See COPYING file for copyrights details.</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    28
<a name="l00007"></a>00007 <span class="comment"></span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    29
<a name="l00008"></a>00008 <span class="comment">This library is free software; you can redistribute it and/or</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    30
<a name="l00009"></a>00009 <span class="comment">modify it under the terms of the GNU Lesser General Public</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    31
<a name="l00010"></a>00010 <span class="comment">License as published by the Free Software Foundation; either</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    32
<a name="l00011"></a>00011 <span class="comment">version 2.1 of the License, or (at your option) any later version.</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    33
<a name="l00012"></a>00012 <span class="comment"></span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    34
<a name="l00013"></a>00013 <span class="comment">This library is distributed in the hope that it will be useful,</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    35
<a name="l00014"></a>00014 <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    36
<a name="l00015"></a>00015 <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    37
<a name="l00016"></a>00016 <span class="comment">Lesser General Public License for more details.</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    38
<a name="l00017"></a>00017 <span class="comment"></span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    39
<a name="l00018"></a>00018 <span class="comment">You should have received a copy of the GNU Lesser General Public</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    40
<a name="l00019"></a>00019 <span class="comment">License along with this library; if not, write to the Free Software</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    41
<a name="l00020"></a>00020 <span class="comment">Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    42
<a name="l00021"></a>00021 <span class="comment">*/</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    43
<a name="l00032"></a>00032 <span class="comment">/* #define DEBUG_WAR_CONSOLE_ON */</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    44
<a name="l00033"></a>00033 <span class="comment">/* #define DEBUG_ERR_CONSOLE_ON */</span>
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    45
<a name="l00034"></a>00034 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    46
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;<a class="code" href="win32_2applicfg_8h.html">applicfg.h</a>&gt;</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    47
<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="timer_8h.html">timer.h</a>"</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    48
<a name="l00037"></a>00037 
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    49
<a name="l00038"></a>00038 <span class="comment">/*  ---------  The timer table --------- */</span>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    50
<a name="l00039"></a><a class="code" href="timer_8c.html#a74e2cf2504bfd18b12f112c7aaad845">00039</a> <a class="code" href="structstruct__s__timer__entry.html">s_timer_entry</a> <a class="code" href="timer_8c.html#a74e2cf2504bfd18b12f112c7aaad845">timers</a>[<a class="code" href="config_8h.html#cbb0f0858383466430c5fcd448391d16">MAX_NB_TIMER</a>] = {{TIMER_FREE, NULL, NULL, 0, 0, 0},};
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    51
<a name="l00040"></a>00040 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    52
<a name="l00041"></a><a class="code" href="timer_8c.html#5e9651eed13d70bcce9bdf3489a72a3d">00041</a> <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> <a class="code" href="timer_8c.html#5e9651eed13d70bcce9bdf3489a72a3d">total_sleep_time</a> = <a class="code" href="hcs12_2applicfg_8h.html#35b2fd1a5f6b88bf3842ba3663e6f85e">TIMEVAL_MAX</a>;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    53
<a name="l00042"></a><a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">00042</a> <a class="code" href="timer_8h.html#146f546340de2a44ab2f63681d40de95">TIMER_HANDLE</a> <a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a> = -1;
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    54
<a name="l00043"></a>00043 
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    55
<a name="l00044"></a><a class="code" href="timer_8c.html#8536312cebeeea3a23dc0027800122c9">00044</a> <span class="preprocessor">#define min_val(a,b) ((a&lt;b)?a:b)</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    56
<a name="l00045"></a>00045 <span class="preprocessor"></span>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    57
<a name="l00057"></a><a class="code" href="timer_8h.html#11c2616d78f06ed9144ef662f757b128">00057</a> <a class="code" href="timer_8h.html#146f546340de2a44ab2f63681d40de95">TIMER_HANDLE</a> <a class="code" href="timer_8c.html#11c2616d78f06ed9144ef662f757b128">SetAlarm</a>(<a class="code" href="structstruct__CO__Data.html">CO_Data</a>* <a class="code" href="structstruct__s__timer__entry.html#c08f4de0f4a517ce2bb72f18251cd13c">d</a>, <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> <span class="keywordtype">id</span>, <a class="code" href="timer_8h.html#f7d102e060339d3730ceae5fea03691b">TimerCallback_t</a> <a class="code" href="structstruct__s__timer__entry.html#3aaad06b3f938b7af91b790a4dd30669">callback</a>, <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> value, <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> period)
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    58
<a name="l00058"></a>00058 {
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    59
<a name="l00059"></a>00059         <span class="comment">/*printf("SetAlarm(UNS32 id=%d, TimerCallback_t callback=%x, TIMEVAL value=%d, TIMEVAL period=%d)\n", id, callback, value, period); */</span>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    60
<a name="l00060"></a>00060         <a class="code" href="timer_8h.html#146f546340de2a44ab2f63681d40de95">TIMER_HANDLE</a> i;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    61
<a name="l00061"></a>00061         <a class="code" href="timer_8h.html#146f546340de2a44ab2f63681d40de95">TIMER_HANDLE</a> row_number = TIMER_NONE;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    62
<a name="l00062"></a>00062 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    63
<a name="l00063"></a>00063         <span class="comment">/* in order to decide new timer setting we have to run over all timer rows */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    64
<a name="l00064"></a>00064         <span class="keywordflow">for</span>(i=0; i &lt;= <a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a> + 1 &amp;&amp; i &lt; <a class="code" href="config_8h.html#cbb0f0858383466430c5fcd448391d16">MAX_NB_TIMER</a>; i++)
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    65
<a name="l00065"></a>00065         {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    66
<a name="l00066"></a>00066                 <a class="code" href="structstruct__s__timer__entry.html">s_timer_entry</a> *row = (<a class="code" href="timer_8c.html#a74e2cf2504bfd18b12f112c7aaad845">timers</a>+i);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    67
<a name="l00067"></a>00067 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    68
<a name="l00068"></a>00068                 <span class="keywordflow">if</span> (callback &amp;&amp;         <span class="comment">/* if something to store */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    69
<a name="l00069"></a>00069                    row-&gt;state == TIMER_FREE) <span class="comment">/* and empty row */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    70
<a name="l00070"></a>00070                 {       <span class="comment">/* just store */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    71
<a name="l00071"></a>00071                         row-&gt;callback = callback;
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    72
<a name="l00072"></a>00072                         row-&gt;d = <a class="code" href="structstruct__s__timer__entry.html#c08f4de0f4a517ce2bb72f18251cd13c">d</a>;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    73
<a name="l00073"></a>00073                         row-&gt;id = <span class="keywordtype">id</span>;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    74
<a name="l00074"></a>00074                         row-&gt;val = value;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    75
<a name="l00075"></a>00075                         row-&gt;interval = period;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    76
<a name="l00076"></a>00076                         row-&gt;state = TIMER_ARMED;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    77
<a name="l00077"></a>00077                         row_number = i;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    78
<a name="l00078"></a>00078                         <span class="keywordflow">break</span>;
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    79
<a name="l00079"></a>00079                 }
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    80
<a name="l00080"></a>00080         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    81
<a name="l00081"></a>00081         
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    82
<a name="l00082"></a>00082         <span class="keywordflow">if</span> (row_number != TIMER_NONE) <span class="comment">/* if successfull **/</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    83
<a name="l00083"></a>00083         {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    84
<a name="l00084"></a>00084                 <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> real_timer_value;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    85
<a name="l00085"></a>00085                 <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> elapsed_time;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    86
<a name="l00086"></a>00086                 
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    87
<a name="l00087"></a>00087                 <span class="keywordflow">if</span> (row_number == <a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a> + 1) <a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a>++;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    88
<a name="l00088"></a>00088                 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    89
<a name="l00089"></a>00089                 <span class="comment">/* set next wakeup alarm if new entry is sooner than others, or if it is alone */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    90
<a name="l00090"></a>00090                 real_timer_value = <a class="code" href="timer_8c.html#8536312cebeeea3a23dc0027800122c9">min_val</a>(value, <a class="code" href="hcs12_2applicfg_8h.html#35b2fd1a5f6b88bf3842ba3663e6f85e">TIMEVAL_MAX</a>);
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    91
<a name="l00091"></a>00091                 elapsed_time = <a class="code" href="canOpenDriver_8c.html#24dbe63e88d184388542037d16a8208d">getElapsedTime</a>();
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    92
<a name="l00092"></a>00092 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    93
<a name="l00093"></a>00093                 <span class="comment">/*printf("elapsed_time=%d real_timer_value=%d total_sleep_time=%d\n", elapsed_time, real_timer_value, total_sleep_time); */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    94
<a name="l00094"></a>00094                 <span class="keywordflow">if</span> (<a class="code" href="timer_8c.html#5e9651eed13d70bcce9bdf3489a72a3d">total_sleep_time</a> &gt; elapsed_time &amp;&amp; <a class="code" href="timer_8c.html#5e9651eed13d70bcce9bdf3489a72a3d">total_sleep_time</a> - elapsed_time &gt; real_timer_value)
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    95
<a name="l00095"></a>00095                 {
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    96
<a name="l00096"></a>00096                         <a class="code" href="timer_8c.html#5e9651eed13d70bcce9bdf3489a72a3d">total_sleep_time</a> = elapsed_time + real_timer_value;
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    97
<a name="l00097"></a>00097                         <a class="code" href="timers__unix_8c.html#b8d05dee70f04b5c5190ab00e84da106">setTimer</a>(real_timer_value);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    98
<a name="l00098"></a>00098                 }
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    99
<a name="l00099"></a>00099                 <span class="comment">/*printf("SetAlarm() return %d\n", row_number); */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   100
<a name="l00100"></a>00100                 <span class="keywordflow">return</span> row_number;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   101
<a name="l00101"></a>00101         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   102
<a name="l00102"></a>00102         <span class="keywordflow">return</span> TIMER_NONE;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   103
<a name="l00103"></a>00103 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   104
<a name="l00104"></a>00104 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   105
<a name="l00112"></a><a class="code" href="timer_8h.html#991b3cfaac2f201b14d5530f75985c21">00112</a> <a class="code" href="timer_8h.html#146f546340de2a44ab2f63681d40de95">TIMER_HANDLE</a> <a class="code" href="timer_8c.html#991b3cfaac2f201b14d5530f75985c21">DelAlarm</a>(<a class="code" href="timer_8h.html#146f546340de2a44ab2f63681d40de95">TIMER_HANDLE</a> handle)
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   106
<a name="l00113"></a>00113 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   107
<a name="l00114"></a>00114         <span class="comment">/* Quick and dirty. system timer will continue to be trigged, but no action will be preformed. */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   108
<a name="l00115"></a>00115         <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3320, <span class="stringliteral">"DelAlarm. handle = "</span>, handle);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   109
<a name="l00116"></a>00116         <span class="keywordflow">if</span>(handle != TIMER_NONE)
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   110
<a name="l00117"></a>00117         {
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   111
<a name="l00118"></a>00118                 <span class="keywordflow">if</span>(handle == <a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a>) 
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   112
<a name="l00119"></a>00119                         <a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a>--;
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   113
<a name="l00120"></a>00120                 <a class="code" href="timer_8c.html#a74e2cf2504bfd18b12f112c7aaad845">timers</a>[handle].<a class="code" href="structstruct__s__timer__entry.html#a58939661154282941a8b289d6019064">state</a> = TIMER_FREE;              
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   114
<a name="l00121"></a>00121         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   115
<a name="l00122"></a>00122         <span class="keywordflow">else</span> {
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   116
<a name="l00123"></a>00123         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   117
<a name="l00124"></a>00124         <span class="keywordflow">return</span> TIMER_NONE;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   118
<a name="l00125"></a>00125 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   119
<a name="l00126"></a>00126 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   120
<a name="l00131"></a><a class="code" href="timer_8h.html#9e5fb60f13faab8705899c5806754864">00131</a> <span class="keywordtype">void</span> <a class="code" href="timer_8c.html#fa75192a3238525618f8cb83004930cc">TimeDispatch</a>()
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   121
<a name="l00132"></a>00132 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   122
<a name="l00133"></a>00133         <a class="code" href="timer_8h.html#146f546340de2a44ab2f63681d40de95">TIMER_HANDLE</a> i;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   123
<a name="l00134"></a>00134         <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> next_wakeup = <a class="code" href="hcs12_2applicfg_8h.html#35b2fd1a5f6b88bf3842ba3663e6f85e">TIMEVAL_MAX</a>; <span class="comment">/* used to compute when should normaly occur next wakeup */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   124
<a name="l00135"></a>00135         <span class="comment">/* First run : change timer state depending on time */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   125
<a name="l00136"></a>00136         <span class="comment">/* Get time since timer signal */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   126
<a name="l00137"></a>00137         <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> overrun = <a class="code" href="canOpenDriver_8c.html#24dbe63e88d184388542037d16a8208d">getElapsedTime</a>();
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   127
<a name="l00138"></a>00138         
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   128
<a name="l00139"></a>00139         <a class="code" href="hcs12_2applicfg_8h.html#6ae11f09e1ebf40f3562857272fab8bf">TIMEVAL</a> real_total_sleep_time = <a class="code" href="timer_8c.html#5e9651eed13d70bcce9bdf3489a72a3d">total_sleep_time</a> + overrun;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   129
<a name="l00140"></a>00140         <span class="comment">/*printf("total_sleep_time %d + overrun %d\n", total_sleep_time , overrun); */</span>
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   130
<a name="l00141"></a>00141 
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   131
<a name="l00142"></a>00142         <span class="keywordflow">for</span>(i=0; i &lt;= <a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a>; i++)
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   132
<a name="l00143"></a>00143         {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   133
<a name="l00144"></a>00144                 <a class="code" href="structstruct__s__timer__entry.html">s_timer_entry</a> *row = (<a class="code" href="timer_8c.html#a74e2cf2504bfd18b12f112c7aaad845">timers</a>+i);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   134
<a name="l00145"></a>00145 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   135
<a name="l00146"></a>00146                 <span class="keywordflow">if</span> (row-&gt;state &amp; TIMER_ARMED) <span class="comment">/* if row is active */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   136
<a name="l00147"></a>00147                 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   137
<a name="l00148"></a>00148                         if (row-&gt;val &lt;= real_total_sleep_time) <span class="comment">/* to be trigged */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   138
<a name="l00149"></a>00149                         {
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   139
<a name="l00150"></a>00150                                 <span class="comment">/*printf("row-&gt;val(%d) &lt;= (%d)real_total_sleep_time\n", row-&gt;val, real_total_sleep_time); */</span>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   140
<a name="l00151"></a>00151                                 if (!row-&gt;interval) <span class="comment">/* if simply outdated */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   141
<a name="l00152"></a>00152                                 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   142
<a name="l00153"></a>00153                                         row-&gt;state = TIMER_TRIG; <span class="comment">/* ask for trig */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   143
<a name="l00154"></a>00154                                 }
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   144
<a name="l00155"></a>00155                                 <span class="keywordflow">else</span> <span class="comment">/* or period have expired */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   145
<a name="l00156"></a>00156                                 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   146
<a name="l00157"></a>00157                                         <span class="comment">/* set val as interval, with overrun correction */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   147
<a name="l00158"></a>00158                                         row-&gt;val = row-&gt;interval - (overrun % row-&gt;interval);
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   148
<a name="l00159"></a>00159                                         row-&gt;state = TIMER_TRIG_PERIOD; <span class="comment">/* ask for trig, periodic */</span>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   149
<a name="l00160"></a>00160                                         <span class="comment">/* Check if this new timer value is the soonest */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   150
<a name="l00161"></a>00161                                         next_wakeup = <a class="code" href="timer_8c.html#8536312cebeeea3a23dc0027800122c9">min_val</a>(row-&gt;val,next_wakeup);
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   151
<a name="l00162"></a>00162                                 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   152
<a name="l00163"></a>00163                         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   153
<a name="l00164"></a>00164                         <span class="keywordflow">else</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   154
<a name="l00165"></a>00165                         {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   155
<a name="l00166"></a>00166                                 <span class="comment">/* Each armed timer value in decremented. */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   156
<a name="l00167"></a>00167                                 row-&gt;val -= real_total_sleep_time;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   157
<a name="l00168"></a>00168 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   158
<a name="l00169"></a>00169                                 <span class="comment">/* Check if this new timer value is the soonest */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   159
<a name="l00170"></a>00170                                 next_wakeup = <a class="code" href="timer_8c.html#8536312cebeeea3a23dc0027800122c9">min_val</a>(row-&gt;val,next_wakeup);
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   160
<a name="l00171"></a>00171                         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   161
<a name="l00172"></a>00172                 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   162
<a name="l00173"></a>00173         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   163
<a name="l00174"></a>00174         
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   164
<a name="l00175"></a>00175         <span class="comment">/* Remember how much time we should sleep. */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   165
<a name="l00176"></a>00176         <a class="code" href="timer_8c.html#5e9651eed13d70bcce9bdf3489a72a3d">total_sleep_time</a> = next_wakeup;
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   166
<a name="l00177"></a>00177 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   167
<a name="l00178"></a>00178         <span class="comment">/* Set timer to soonest occurence */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   168
<a name="l00179"></a>00179         <a class="code" href="timers__unix_8c.html#b8d05dee70f04b5c5190ab00e84da106">setTimer</a>(next_wakeup);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   169
<a name="l00180"></a>00180 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   170
<a name="l00181"></a>00181         <span class="comment">/* Then trig them or not. */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   171
<a name="l00182"></a>00182         <span class="keywordflow">for</span>(i=0; i&lt;=<a class="code" href="timer_8c.html#1dab7b9a29bdee8b1931f8ea90685c6f">last_timer_raw</a>; i++)
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   172
<a name="l00183"></a>00183         {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   173
<a name="l00184"></a>00184                 <a class="code" href="structstruct__s__timer__entry.html">s_timer_entry</a> *row = (<a class="code" href="timer_8c.html#a74e2cf2504bfd18b12f112c7aaad845">timers</a>+i);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   174
<a name="l00185"></a>00185 
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   175
<a name="l00186"></a>00186                 <span class="keywordflow">if</span> (row-&gt;state &amp; TIMER_TRIG)
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   176
<a name="l00187"></a>00187                 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   177
<a name="l00188"></a>00188                         row-&gt;state &amp;= ~TIMER_TRIG; <span class="comment">/* reset trig state (will be free if not periodic) */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   178
<a name="l00189"></a>00189                         <span class="keywordflow">if</span>(row-&gt;callback)
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   179
<a name="l00190"></a>00190                                 (*row-&gt;callback)(row-&gt;d, row-&gt;id); <span class="comment">/* trig ! */</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   180
<a name="l00191"></a>00191                 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   181
<a name="l00192"></a>00192         }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   182
<a name="l00193"></a>00193 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
   183
<a name="l00194"></a>00194 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
   184
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Jun 8 08:51:39 2007 for CanFestival by&nbsp;
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   185
<a href="http://www.doxygen.org/index.html">
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   186
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   187
</body>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   188
</html>