doc/doxygen/html/nmtMaster_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/nmtMaster.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>nmtMaster.c</h1><a href="nmtMaster_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>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    23
<a name="l00002"></a>00002 <span class="comment">  This file is part of CanFestival, a library implementing CanOpen</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    24
<a name="l00003"></a>00003 <span class="comment">  Stack.</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    25
<a name="l00004"></a>00004 <span class="comment"></span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    26
<a name="l00005"></a>00005 <span class="comment">  Copyright (C): Edouard TISSERANT and Francis DUPIN</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    27
<a name="l00006"></a>00006 <span class="comment"></span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    28
<a name="l00007"></a>00007 <span class="comment">  See COPYING file for copyrights details.</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    29
<a name="l00008"></a>00008 <span class="comment"></span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    30
<a name="l00009"></a>00009 <span class="comment">  This library is free software; you can redistribute it and/or</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    31
<a name="l00010"></a>00010 <span class="comment">  modify it under the terms of the GNU Lesser General Public</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    32
<a name="l00011"></a>00011 <span class="comment">  License as published by the Free Software Foundation; either</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    33
<a name="l00012"></a>00012 <span class="comment">  version 2.1 of the License, or (at your option) any later version.</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    34
<a name="l00013"></a>00013 <span class="comment"></span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    35
<a name="l00014"></a>00014 <span class="comment">  This library is distributed in the hope that it will be useful,</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    36
<a name="l00015"></a>00015 <span class="comment">  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    37
<a name="l00016"></a>00016 <span class="comment">  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    38
<a name="l00017"></a>00017 <span class="comment">  Lesser General Public License for more details.</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    39
<a name="l00018"></a>00018 <span class="comment"></span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    40
<a name="l00019"></a>00019 <span class="comment">  You should have received a copy of the GNU Lesser General Public</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    41
<a name="l00020"></a>00020 <span class="comment">  License along with this library; if not, write to the Free Software</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    42
<a name="l00021"></a>00021 <span class="comment">  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    43
<a name="l00022"></a>00022 <span class="comment">  USA</span>
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    44
<a name="l00023"></a>00023 <span class="comment">*/</span>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    45
<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="nmtMaster_8h.html">nmtMaster.h</a>"</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    46
<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="win32_2canfestival_8h.html">canfestival.h</a>"</span>
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    47
<a name="l00035"></a>00035 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    48
<a name="l00045"></a><a class="code" href="nmtMaster_8h.html#6170d95d9900ef756921a934c5fb37d2">00045</a> <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> <a class="code" href="nmtMaster_8c.html#6170d95d9900ef756921a934c5fb37d2">masterSendNMTstateChange</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#539234687760592d01a8b0d3357bc00e">UNS8</a> Node_ID, <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> cs)
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    49
<a name="l00046"></a>00046 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    50
<a name="l00047"></a>00047   <a class="code" href="structMessage.html">Message</a> m;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    51
<a name="l00048"></a>00048 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    52
<a name="l00049"></a>00049   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3501, <span class="stringliteral">"Send_NMT cs : "</span>, cs);
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    53
<a name="l00050"></a>00050   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3502, <span class="stringliteral">"    to node : "</span>, Node_ID);
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    54
<a name="l00051"></a>00051   <span class="comment">/* message configuration */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    55
<a name="l00052"></a>00052   m.<a class="code" href="structMessage.html#c5d40bde75d015beb48293c052a218b5">cob_id</a>.<a class="code" href="structSHORT__CAN.html#614e1c6a40f1261e2b15ad69b19e9698">w</a> = 0x0000; <span class="comment">/*(NMT) &lt;&lt; 7*/</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    56
<a name="l00053"></a>00053   m.<a class="code" href="structMessage.html#41c5a4e7eaeb2c2ae1af2b2c83129615">rtr</a> = <a class="code" href="def_8h.html#0c43b00ce49efc3586ad17dd80d73940">NOT_A_REQUEST</a>;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    57
<a name="l00054"></a>00054   m.<a class="code" href="structMessage.html#d1dd9a88dda088ff4c7073d49613613d">len</a> = 2;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    58
<a name="l00055"></a>00055   m.<a class="code" href="structMessage.html#229865b09691e658677ba76f2d82ce89">data</a>[0] = cs;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    59
<a name="l00056"></a>00056   m.<a class="code" href="structMessage.html#229865b09691e658677ba76f2d82ce89">data</a>[1] = Node_ID;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    60
<a name="l00057"></a>00057 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    61
<a name="l00058"></a>00058   <span class="keywordflow">return</span> <a class="code" href="canOpenDriver_8c.html#b57b4b3c000e9f61135175495e874977">canSend</a>(<a class="code" href="structstruct__s__timer__entry.html#c08f4de0f4a517ce2bb72f18251cd13c">d</a>-&gt;<a class="code" href="structstruct__CO__Data.html#c960c3c56e8389105c2853cfb393de0c">canHandle</a>,&amp;m);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    62
<a name="l00059"></a>00059 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    63
<a name="l00060"></a>00060 
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    64
<a name="l00061"></a>00061 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    65
<a name="l00070"></a><a class="code" href="nmtMaster_8h.html#f63689baeabb15103c2b7afe8885c5c4">00070</a> <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> <a class="code" href="nmtMaster_8c.html#f63689baeabb15103c2b7afe8885c5c4">masterSendNMTnodeguard</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#539234687760592d01a8b0d3357bc00e">UNS8</a> nodeId)
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    66
<a name="l00071"></a>00071 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    67
<a name="l00072"></a>00072   <a class="code" href="structMessage.html">Message</a> m;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    68
<a name="l00073"></a>00073 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    69
<a name="l00074"></a>00074   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3503, <span class="stringliteral">"Send_NODE_GUARD to node : "</span>, nodeId);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    70
<a name="l00075"></a>00075 
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    71
<a name="l00076"></a>00076   <span class="comment">/* message configuration */</span>
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    72
<a name="l00077"></a>00077   m.<a class="code" href="structMessage.html#c5d40bde75d015beb48293c052a218b5">cob_id</a>.<a class="code" href="structSHORT__CAN.html#614e1c6a40f1261e2b15ad69b19e9698">w</a> = nodeId | (<a class="code" href="def_8h.html#78d5d3f71db9f360c9e3d3953707b0c1">NODE_GUARD</a> &lt;&lt; 7);
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    73
<a name="l00078"></a>00078   m.<a class="code" href="structMessage.html#41c5a4e7eaeb2c2ae1af2b2c83129615">rtr</a> = <a class="code" href="def_8h.html#6baece8be8f9ab55223d41b535511b6f">REQUEST</a>;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    74
<a name="l00079"></a>00079   m.<a class="code" href="structMessage.html#d1dd9a88dda088ff4c7073d49613613d">len</a> = 1;
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    75
<a name="l00080"></a>00080 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    76
<a name="l00081"></a>00081   <span class="keywordflow">return</span> <a class="code" href="canOpenDriver_8c.html#b57b4b3c000e9f61135175495e874977">canSend</a>(<a class="code" href="structstruct__s__timer__entry.html#c08f4de0f4a517ce2bb72f18251cd13c">d</a>-&gt;<a class="code" href="structstruct__CO__Data.html#c960c3c56e8389105c2853cfb393de0c">canHandle</a>,&amp;m);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    77
<a name="l00082"></a>00082 }
207
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
    78
<a name="l00083"></a>00083 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    79
<a name="l00090"></a><a class="code" href="nmtMaster_8h.html#98bee3f402438056dbd653e752054796">00090</a> <span class="keywordtype">void</span> <a class="code" href="nmtMaster_8c.html#98bee3f402438056dbd653e752054796">masterRequestNodeState</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#539234687760592d01a8b0d3357bc00e">UNS8</a> nodeId)
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    80
<a name="l00091"></a>00091 {
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    81
<a name="l00092"></a>00092   <span class="comment">/* FIXME: should warn for bad toggle bit. */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    82
<a name="l00093"></a>00093 
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    83
<a name="l00094"></a>00094   <span class="comment">/* NMTable configuration to indicate that the master is waiting</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    84
<a name="l00095"></a>00095 <span class="comment">    for a Node_Guard frame from the slave whose node_id is ID</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    85
<a name="l00096"></a>00096 <span class="comment">  */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    86
<a name="l00097"></a>00097   <a class="code" href="structstruct__s__timer__entry.html#c08f4de0f4a517ce2bb72f18251cd13c">d</a>-&gt;<a class="code" href="structstruct__CO__Data.html#40414cf320a3c3d6236790bd10b4301a">NMTable</a>[nodeId] = <a class="code" href="states_8h.html#3136d2815abe9d284f985e0a7ec68646cb4b5cb64be091d76f846380eb0afe59">Unknown_state</a>; <span class="comment">/* A state that does not exist</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    87
<a name="l00098"></a>00098 <span class="comment">                                       */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    88
<a name="l00099"></a>00099 
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    89
<a name="l00100"></a>00100   <span class="keywordflow">if</span> (nodeId == 0) { <span class="comment">/* NMT broadcast */</span>
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    90
<a name="l00101"></a>00101     <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> i = 0;
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    91
<a name="l00102"></a>00102     <span class="keywordflow">for</span> (i = 0 ; i &lt; <a class="code" href="config_8h.html#89f774dfdb67cc1f78c7e7d457a16fdc">NMT_MAX_NODE_ID</a> ; i++) {
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    92
<a name="l00103"></a>00103       <a class="code" href="structstruct__s__timer__entry.html#c08f4de0f4a517ce2bb72f18251cd13c">d</a>-&gt;<a class="code" href="structstruct__CO__Data.html#40414cf320a3c3d6236790bd10b4301a">NMTable</a>[i] = <a class="code" href="states_8h.html#3136d2815abe9d284f985e0a7ec68646cb4b5cb64be091d76f846380eb0afe59">Unknown_state</a>;
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    93
<a name="l00104"></a>00104     }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    94
<a name="l00105"></a>00105   }
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    95
<a name="l00106"></a>00106   <a class="code" href="nmtMaster_8c.html#f63689baeabb15103c2b7afe8885c5c4">masterSendNMTnodeguard</a>(<a class="code" href="structstruct__s__timer__entry.html#c08f4de0f4a517ce2bb72f18251cd13c">d</a>,nodeId);
210
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    96
<a name="l00107"></a>00107 }
6b5a4c21e061 Manual and Documentation finish
nico
parents: 207
diff changeset
    97
<a name="l00108"></a>00108 
215
f49e5a6b7804 Manual and Documentation finish
nico
parents: 210
diff changeset
    98
</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
    99
<a href="http://www.doxygen.org/index.html">
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   100
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   101
</body>
b6572d0336c3 First doxygen implementation
nico
parents:
diff changeset
   102
</html>