SOEM/doc/html/ethercatconfig_8c.html
2015-03-11 21:45:16 +01:00

849 lines
38 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>SOEM: ethercatconfig.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">SOEM&#160;<span id="projectnumber">v1.3.1</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">ethercatconfig.c File Reference</div> </div>
</div>
<div class="contents">
<p>Configuration module for EtherCAT master.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
<code>#include &quot;osal.h&quot;</code><br/>
<code>#include &quot;oshw.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercattype_8h.html">ethercattype.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatbase_8h.html">ethercatbase.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatmain_8h.html">ethercatmain.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatcoe_8h.html">ethercatcoe.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatsoe_8h.html">ethercatsoe.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatconfig_8h.html">ethercatconfig.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="ethercatconfiglist_8h.html">ethercatconfiglist.h</a>&quot;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structecx__mapt__t.html">ecx_mapt_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structec__configlist__t.html">ec_configlist_t</a></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a7f701d87af8db364450d02975b16cd5d">EC_PRINT</a>(...)&#160;&#160;&#160;do {} while (0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a8a05b4154388a62875f5695beef4b343">MAX_MAPT</a>&#160;&#160;&#160;8</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a7ffdfc0c1550e70c5579eb049e15a990">EC_DEFAULTMBXSM0</a>&#160;&#160;&#160;0x00010026</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a46051caffcdf0610f7aa0a5abef7920c">EC_DEFAULTMBXSM1</a>&#160;&#160;&#160;0x00010022</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#af7063e832d749d4cbaa55317092ca5cc">EC_DEFAULTDOSM0</a>&#160;&#160;&#160;0x00010044</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a8aa31990a858c7e049cfb4de24f28f3e">ec_findconfig</a> (uint32 man, uint32 id)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a28b66e38067d043dbb41c6a7fe3dcef5">ecx_init_context</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#ab2275f76921dcafd1b85a7328311dad0">ecx_detect_slaves</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a619a4a5ccc30ecd2f832820c197e1d7f">ecx_set_slaves_to_default</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#aabdb255e70a86556e205048214fe84fc">ecx_config_from_table</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a7a6c352d63aa06029484d4aca1d01dda">ecx_lookup_prev_sii</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a2d186e2dcf0c8d37aee2071e519dfbcf">ecx_config_init</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint8 usetable)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a4bbbce300f4c5d4f39d41a0f27af4e88">ecx_lookup_mapping</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, int *Osize, int *Isize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a2876a48c69cfdfa9cc7f335ba7dc5718">ecx_map_coe_soe</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a11fe85407560359349478bdbe3ee402c">ecx_map_sii</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#aec2a7896b71db8ed64446a76fb895f17">ecx_map_sm</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">OSAL_THREAD_FUNC&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#af11061bfa6bd7bf1bda8d6000c5ce904">ecx_mapper_thread</a> (void *param)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a213e97da5b3efbc098029d12f625c50f">ecx_find_mapt</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#ada4cc48672364cc9fe3a044e792c37b3">ecx_get_threadcount</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a0aa5802dbafca27d367b61f11ec77c5a">ecx_config_map_group</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, void *pIOmap, uint8 group)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#ae900f3e6580c698aedeefbfc16cf5282">ecx_recover_slave</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#aa4b56b3d86e1fbc059c81bed5572f202">ecx_reconfig_slave</a> (<a class="el" href="structecx__contextt.html">ecx_contextt</a> *context, uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#ae9128b2cb982fd03fae9105d746f8656">ec_config_init</a> (uint8 usetable)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#ae1120a5cace4aa56cf753977ccd37b8d">ec_config_map_group</a> (void *pIOmap, uint8 group)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#aa740a2ba948117670c4f9741bc31cc38">ec_config_map</a> (void *pIOmap)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a502e65cce3b0b5f8dbcabf6f25dab351">ec_config</a> (uint8 usetable, void *pIOmap)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#aa31ccd813ba490a3c0e6d57315e42606">ec_recover_slave</a> (uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#aad37ae196ac8cc233dcae740f9fd4864">ec_reconfig_slave</a> (uint16 <a class="el" href="eepromtool_8c.html#a7f46665d1fe6d01a75a90942bb34cfaf">slave</a>, int timeout)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structecx__mapt__t.html">ecx_mapt_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a4831aee186feb5a4b0c063d3560bce6f">ecx_mapt</a> [MAX_MAPT]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">OSAL_THREAD_HANDLE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatconfig_8c.html#a346c38f231a1fe231515bbfc5f2bfc32">ecx_threadh</a> [MAX_MAPT]</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Configuration module for EtherCAT master. </p>
<p>After successful initialisation with <a class="el" href="ethercatmain_8c.html#a4d4ce1bfe67dcda4868fe1717af993af">ec_init()</a> or <a class="el" href="ethercatmain_8c.html#a9b46e06711fc56cac33ac9c77f528de1">ec_init_redundant()</a> the slaves can be auto configured with this module. </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="af7063e832d749d4cbaa55317092ca5cc"></a><!-- doxytag: member="ethercatconfig.c::EC_DEFAULTDOSM0" ref="af7063e832d749d4cbaa55317092ca5cc" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define EC_DEFAULTDOSM0&#160;&#160;&#160;0x00010044</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>standard SM0 flags configuration for digital output slaves </p>
</div>
</div>
<a class="anchor" id="a7ffdfc0c1550e70c5579eb049e15a990"></a><!-- doxytag: member="ethercatconfig.c::EC_DEFAULTMBXSM0" ref="a7ffdfc0c1550e70c5579eb049e15a990" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define EC_DEFAULTMBXSM0&#160;&#160;&#160;0x00010026</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>standard SM0 flags configuration for mailbox slaves </p>
</div>
</div>
<a class="anchor" id="a46051caffcdf0610f7aa0a5abef7920c"></a><!-- doxytag: member="ethercatconfig.c::EC_DEFAULTMBXSM1" ref="a46051caffcdf0610f7aa0a5abef7920c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define EC_DEFAULTMBXSM1&#160;&#160;&#160;0x00010022</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>standard SM1 flags configuration for mailbox slaves </p>
</div>
</div>
<a class="anchor" id="a7f701d87af8db364450d02975b16cd5d"></a><!-- doxytag: member="ethercatconfig.c::EC_PRINT" ref="a7f701d87af8db364450d02975b16cd5d" args="(...)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define EC_PRINT</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>...</em></td><td>)</td>
<td>&#160;&#160;&#160;do {} while (0)</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8a05b4154388a62875f5695beef4b343"></a><!-- doxytag: member="ethercatconfig.c::MAX_MAPT" ref="a8a05b4154388a62875f5695beef4b343" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MAX_MAPT&#160;&#160;&#160;8</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a502e65cce3b0b5f8dbcabf6f25dab351"></a><!-- doxytag: member="ethercatconfig.c::ec_config" ref="a502e65cce3b0b5f8dbcabf6f25dab351" args="(uint8 usetable, void *pIOmap)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_config </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>usetable</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>pIOmap</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Enumerate / map and init all slaves.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">usetable</td><td>= TRUE when using configtable to init slaves, FALSE otherwise </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">pIOmap</td><td>= pointer to IOmap </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter of slave discover datagram = number of slaves found </dd></dl>
</div>
</div>
<a class="anchor" id="ae9128b2cb982fd03fae9105d746f8656"></a><!-- doxytag: member="ethercatconfig.c::ec_config_init" ref="ae9128b2cb982fd03fae9105d746f8656" args="(uint8 usetable)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_config_init </td>
<td>(</td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>usetable</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa740a2ba948117670c4f9741bc31cc38"></a><!-- doxytag: member="ethercatconfig.c::ec_config_map" ref="aa740a2ba948117670c4f9741bc31cc38" args="(void *pIOmap)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_config_map </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>pIOmap</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Map all PDOs from slaves to IOmap.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">pIOmap</td><td>= pointer to IOmap </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>IOmap size </dd></dl>
</div>
</div>
<a class="anchor" id="ae1120a5cace4aa56cf753977ccd37b8d"></a><!-- doxytag: member="ethercatconfig.c::ec_config_map_group" ref="ae1120a5cace4aa56cf753977ccd37b8d" args="(void *pIOmap, uint8 group)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_config_map_group </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>pIOmap</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>group</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a8aa31990a858c7e049cfb4de24f28f3e"></a><!-- doxytag: member="ethercatconfig.c::ec_findconfig" ref="a8aa31990a858c7e049cfb4de24f28f3e" args="(uint32 man, uint32 id)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_findconfig </td>
<td>(</td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>man</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Find slave in standard configuration list ec_configlist[]</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">man</td><td>= manufacturer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>= ID </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>index in ec_configlist[] when found, otherwise 0 </dd></dl>
</div>
</div>
<a class="anchor" id="aad37ae196ac8cc233dcae740f9fd4864"></a><!-- doxytag: member="ethercatconfig.c::ec_reconfig_slave" ref="aad37ae196ac8cc233dcae740f9fd4864" args="(uint16 slave, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_reconfig_slave </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa31ccd813ba490a3c0e6d57315e42606"></a><!-- doxytag: member="ethercatconfig.c::ec_recover_slave" ref="aa31ccd813ba490a3c0e6d57315e42606" args="(uint16 slave, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_recover_slave </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aabdb255e70a86556e205048214fe84fc"></a><!-- doxytag: member="ethercatconfig.c::ecx_config_from_table" ref="aabdb255e70a86556e205048214fe84fc" args="(ecx_contextt *context, uint16 slave)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_config_from_table </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a2d186e2dcf0c8d37aee2071e519dfbcf"></a><!-- doxytag: member="ethercatconfig.c::ecx_config_init" ref="a2d186e2dcf0c8d37aee2071e519dfbcf" args="(ecx_contextt *context, uint8 usetable)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_config_init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>usetable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Enumerate and init all slaves.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">usetable</td><td>= TRUE when using configtable to init slaves, FALSE otherwise </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter of slave discover datagram = number of slaves found </dd></dl>
</div>
</div>
<a class="anchor" id="a0aa5802dbafca27d367b61f11ec77c5a"></a><!-- doxytag: member="ethercatconfig.c::ecx_config_map_group" ref="a0aa5802dbafca27d367b61f11ec77c5a" args="(ecx_contextt *context, void *pIOmap, uint8 group)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_config_map_group </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>pIOmap</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>group</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Map all PDOs in one group of slaves to IOmap.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">pIOmap</td><td>= pointer to IOmap </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">group</td><td>= group to map, 0 = all groups </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>IOmap size </dd></dl>
</div>
</div>
<a class="anchor" id="ab2275f76921dcafd1b85a7328311dad0"></a><!-- doxytag: member="ethercatconfig.c::ecx_detect_slaves" ref="ab2275f76921dcafd1b85a7328311dad0" args="(ecx_contextt *context)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_detect_slaves </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a213e97da5b3efbc098029d12f625c50f"></a><!-- doxytag: member="ethercatconfig.c::ecx_find_mapt" ref="a213e97da5b3efbc098029d12f625c50f" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_find_mapt </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ada4cc48672364cc9fe3a044e792c37b3"></a><!-- doxytag: member="ethercatconfig.c::ecx_get_threadcount" ref="ada4cc48672364cc9fe3a044e792c37b3" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_get_threadcount </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a28b66e38067d043dbb41c6a7fe3dcef5"></a><!-- doxytag: member="ethercatconfig.c::ecx_init_context" ref="a28b66e38067d043dbb41c6a7fe3dcef5" args="(ecx_contextt *context)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ecx_init_context </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a4bbbce300f4c5d4f39d41a0f27af4e88"></a><!-- doxytag: member="ethercatconfig.c::ecx_lookup_mapping" ref="a4bbbce300f4c5d4f39d41a0f27af4e88" args="(ecx_contextt *context, uint16 slave, int *Osize, int *Isize)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_lookup_mapping </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>Osize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>Isize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a7a6c352d63aa06029484d4aca1d01dda"></a><!-- doxytag: member="ethercatconfig.c::ecx_lookup_prev_sii" ref="a7a6c352d63aa06029484d4aca1d01dda" args="(ecx_contextt *context, uint16 slave)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_lookup_prev_sii </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a2876a48c69cfdfa9cc7f335ba7dc5718"></a><!-- doxytag: member="ethercatconfig.c::ecx_map_coe_soe" ref="a2876a48c69cfdfa9cc7f335ba7dc5718" args="(ecx_contextt *context, uint16 slave)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_map_coe_soe </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a11fe85407560359349478bdbe3ee402c"></a><!-- doxytag: member="ethercatconfig.c::ecx_map_sii" ref="a11fe85407560359349478bdbe3ee402c" args="(ecx_contextt *context, uint16 slave)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_map_sii </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aec2a7896b71db8ed64446a76fb895f17"></a><!-- doxytag: member="ethercatconfig.c::ecx_map_sm" ref="aec2a7896b71db8ed64446a76fb895f17" args="(ecx_contextt *context, uint16 slave)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static int ecx_map_sm </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="af11061bfa6bd7bf1bda8d6000c5ce904"></a><!-- doxytag: member="ethercatconfig.c::ecx_mapper_thread" ref="af11061bfa6bd7bf1bda8d6000c5ce904" args="(void *param)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">OSAL_THREAD_FUNC ecx_mapper_thread </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>param</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="aa4b56b3d86e1fbc059c81bed5572f202"></a><!-- doxytag: member="ethercatconfig.c::ecx_reconfig_slave" ref="aa4b56b3d86e1fbc059c81bed5572f202" args="(ecx_contextt *context, uint16 slave, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_reconfig_slave </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Reconfigure slave.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">slave</td><td>= slave to reconfigure </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= local timeout f.e. EC_TIMEOUTRET3 </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Slave state </dd></dl>
</div>
</div>
<a class="anchor" id="ae900f3e6580c698aedeefbfc16cf5282"></a><!-- doxytag: member="ethercatconfig.c::ecx_recover_slave" ref="ae900f3e6580c698aedeefbfc16cf5282" args="(ecx_contextt *context, uint16 slave, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_recover_slave </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>slave</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Recover slave.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">context</td><td>= context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">slave</td><td>= slave to recover </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= local timeout f.e. EC_TIMEOUTRET3 </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>&gt;0 if successful </dd></dl>
</div>
</div>
<a class="anchor" id="a619a4a5ccc30ecd2f832820c197e1d7f"></a><!-- doxytag: member="ethercatconfig.c::ecx_set_slaves_to_default" ref="a619a4a5ccc30ecd2f832820c197e1d7f" args="(ecx_contextt *context)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static void ecx_set_slaves_to_default </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structecx__contextt.html">ecx_contextt</a> *&#160;</td>
<td class="paramname"><em>context</em></td><td>)</td>
<td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a4831aee186feb5a4b0c063d3560bce6f"></a><!-- doxytag: member="ethercatconfig.c::ecx_mapt" ref="a4831aee186feb5a4b0c063d3560bce6f" args="[MAX_MAPT]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structecx__mapt__t.html">ecx_mapt_t</a> <a class="el" href="ethercatconfig_8c.html#a4831aee186feb5a4b0c063d3560bce6f">ecx_mapt</a>[MAX_MAPT]</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="a346c38f231a1fe231515bbfc5f2bfc32"></a><!-- doxytag: member="ethercatconfig.c::ecx_threadh" ref="a346c38f231a1fe231515bbfc5f2bfc32" args="[MAX_MAPT]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">OSAL_THREAD_HANDLE <a class="el" href="ethercatconfig_8c.html#a346c38f231a1fe231515bbfc5f2bfc32">ecx_threadh</a>[MAX_MAPT]</td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Mar 11 2015 20:44:23 for SOEM by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>