SOEM/doc/html/ethercatconfig_8c.html

531 lines
24 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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>SOEM: ethercatconfig.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<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.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_3012a2599d87e3128fe81d8c5dd7e75c.html">soem</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ethercatconfig.c File Reference</div> </div>
</div><!--header-->
<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 class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><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 class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a7f701d87af8db364450d02975b16cd5d"><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 class="separator:a7f701d87af8db364450d02975b16cd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ffdfc0c1550e70c5579eb049e15a990"><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 class="separator:a7ffdfc0c1550e70c5579eb049e15a990"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46051caffcdf0610f7aa0a5abef7920c"><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 class="separator:a46051caffcdf0610f7aa0a5abef7920c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7063e832d749d4cbaa55317092ca5cc"><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 class="separator:af7063e832d749d4cbaa55317092ca5cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a8aa31990a858c7e049cfb4de24f28f3e"><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 class="separator:a8aa31990a858c7e049cfb4de24f28f3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d186e2dcf0c8d37aee2071e519dfbcf"><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 class="separator:a2d186e2dcf0c8d37aee2071e519dfbcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0aa5802dbafca27d367b61f11ec77c5a"><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 class="separator:a0aa5802dbafca27d367b61f11ec77c5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae900f3e6580c698aedeefbfc16cf5282"><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 class="separator:ae900f3e6580c698aedeefbfc16cf5282"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4b56b3d86e1fbc059c81bed5572f202"><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 class="separator:aa4b56b3d86e1fbc059c81bed5572f202"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9128b2cb982fd03fae9105d746f8656"><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 class="separator:ae9128b2cb982fd03fae9105d746f8656"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1120a5cace4aa56cf753977ccd37b8d"><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 class="separator:ae1120a5cace4aa56cf753977ccd37b8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa740a2ba948117670c4f9741bc31cc38"><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 class="separator:aa740a2ba948117670c4f9741bc31cc38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a502e65cce3b0b5f8dbcabf6f25dab351"><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 class="separator:a502e65cce3b0b5f8dbcabf6f25dab351"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa31ccd813ba490a3c0e6d57315e42606"><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 class="separator:aa31ccd813ba490a3c0e6d57315e42606"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad37ae196ac8cc233dcae740f9fd4864"><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 class="separator:aad37ae196ac8cc233dcae740f9fd4864"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="af7063e832d749d4cbaa55317092ca5cc"></a>
<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>
<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>
<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>
<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>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a502e65cce3b0b5f8dbcabf6f25dab351"></a>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>Workcounter of slave discover datagram = number of slaves found </dd></dl>
</div>
</div>
<a class="anchor" id="ae9128b2cb982fd03fae9105d746f8656"></a>
<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>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>IOmap size </dd></dl>
</div>
</div>
<a class="anchor" id="ae1120a5cace4aa56cf753977ccd37b8d"></a>
<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>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>index in ec_configlist[] when found, otherwise 0 </dd></dl>
</div>
</div>
<a class="anchor" id="aad37ae196ac8cc233dcae740f9fd4864"></a>
<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>
<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="a2d186e2dcf0c8d37aee2071e519dfbcf"></a>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>Workcounter of slave discover datagram = number of slaves found </dd></dl>
</div>
</div>
<a class="anchor" id="a0aa5802dbafca27d367b61f11ec77c5a"></a>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>IOmap size </dd></dl>
</div>
</div>
<a class="anchor" id="aa4b56b3d86e1fbc059c81bed5572f202"></a>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>Slave state </dd></dl>
</div>
</div>
<a class="anchor" id="ae900f3e6580c698aedeefbfc16cf5282"></a>
<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 class="params"><dt>Parameters</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="section return"><dt>Returns</dt><dd>&gt;0 if successful </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Feb 26 2013 13:57:51 for SOEM by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>