SOEM/doc/html/ethercatbase_8c.html

2076 lines
83 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: ethercatbase.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="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ethercatbase.c File Reference</div> </div>
</div>
<div class="contents">
<p>Base EtherCAT functions.
<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;oshw.h&quot;</code><br/>
<code>#include &quot;osal.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/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a631e4e1e5dee9b114196f33007a53cfd">ecx_writedatagramdata</a> (void *datagramdata, <a class="el" href="ethercattype_8h.html#ab7e74d81c2756929a05440f98f34b41b">ec_cmdtype</a> com, uint16 length, const void *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#aa2c4e8eb36480d128235b435add9cf67">ecx_setupdatagram</a> (ecx_portt *port, void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a0d2fda4df4db4607d917330cafe07081">ecx_adddatagram</a> (ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a1b888fa00f141e401be521c6b340d044">ecx_BWR</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ac4903c87e0cc698ac3968f191af60332">ecx_BRD</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a3a81a64b05912cf1b6a7cde6070fa408">ecx_APRD</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#abe3c16067b99aebd4d9bfd9a2b93a36c">ecx_ARMW</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ada9732437a0dad686ed000d9876c12bc">ecx_FRMW</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a6dd3bf6a952c6b3c260655dac9dc8f34">ecx_APRDw</a> (ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a40b981992928c4b72cf7f08c9538fd6e">ecx_FPRD</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ab4e55ff9162d1123ad7c3b1f34a7e6df">ecx_FPRDw</a> (ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a0cc23ebda2862d9a7aa260529b818fa0">ecx_APWR</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ada12b7523b9d2615b8a4f5ca3d5270a1">ecx_APWRw</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a84b35855ebd2a8226dbcaddc0ecba9b5">ecx_FPWR</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a95b517724b08125f19b3f50b9e79f14c">ecx_FPWRw</a> (ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a747384434ba949b38f1f7064645c460e">ecx_LRW</a> (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a6a48db45b5d5328d7e5d51155e8abfaa">ecx_LRD</a> (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a23db3b931b4e045e0b35c7bfe7d787ac">ecx_LWR</a> (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ad3ee60104e7da46b07594c82f00dc0f8">ecx_LRWDC</a> (ecx_portt *port, uint32 LogAdr, uint16 length, void *data, uint16 DCrs, int64 *DCtime, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a3b9a1e2b9fc1e15cf147a85d484db027">ec_setupdatagram</a> (void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a775297e7bcfe08569ad537d6e3a770fb">ec_adddatagram</a> (void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a3ad29de613339c69a0b132114928b208">ec_BWR</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a30d9ab75b270ba904509fb1af2b8dc17">ec_BRD</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a80f6087e11fc1a42832f7c7872122308">ec_APRD</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a9fb77485174d13b8b5fe8bd2cac816e9">ec_ARMW</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a8a1aa39c19d1e54b7e5f1b5c37c6f84e">ec_FRMW</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ae04f6096929eed658625620ba507b219">ec_APRDw</a> (uint16 ADP, uint16 ADO, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#aac2dc2b5a39ace0793473ab89bb56c7d">ec_FPRD</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a688faf55cfa019c9c0bb637142bfbcd4">ec_FPRDw</a> (uint16 ADP, uint16 ADO, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a02a1741d276571009e46fbe39e9f729f">ec_APWR</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#aca3c5979b5549da9f4a6f441a74e132b">ec_APWRw</a> (uint16 ADP, uint16 ADO, uint16 data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#aa2fe58363a824f15838718ee31f11ffc">ec_FPWR</a> (uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a2fc76bd01a00a0f6da9fb3927eabc24d">ec_FPWRw</a> (uint16 ADP, uint16 ADO, uint16 data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a785fba63c633dd865d0b778adb0239c2">ec_LRW</a> (uint32 LogAdr, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#a6b5e08a277e1be8f7a9a783e58fb4d2a">ec_LRD</a> (uint32 LogAdr, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ad1edce1f583efd3c9616409b23cb088d">ec_LWR</a> (uint32 LogAdr, uint16 length, void *data, int timeout)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ethercatbase_8c.html#ae2b92060d47d3ea8b18cff9184113eba">ec_LRWDC</a> (uint32 LogAdr, uint16 length, void *data, uint16 DCrs, int64 *DCtime, int timeout)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Base EtherCAT functions. </p>
<p>Setting up a datagram in an ethernet frame. EtherCAT datagram primitives, broadcast, auto increment, configured and logical addressed data transfers. All base transfers are blocking, so wait for the frame to be returned to the master or timeout. If this is not acceptable build your own datagrams and use the functions from nicdrv.c. </p>
</div><hr/><h2>Function Documentation</h2>
<a class="anchor" id="a775297e7bcfe08569ad537d6e3a770fb"></a><!-- doxytag: member="ethercatbase.c::ec_adddatagram" ref="a775297e7bcfe08569ad537d6e3a770fb" args="(void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_adddatagram </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>frame</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>com</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boolean&#160;</td>
<td class="paramname"><em>more</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a80f6087e11fc1a42832f7c7872122308"></a><!-- doxytag: member="ethercatbase.c::ec_APRD" ref="a80f6087e11fc1a42832f7c7872122308" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_APRD </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="ae04f6096929eed658625620ba507b219"></a><!-- doxytag: member="ethercatbase.c::ec_APRDw" ref="ae04f6096929eed658625620ba507b219" args="(uint16 ADP, uint16 ADO, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 ec_APRDw </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</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="a02a1741d276571009e46fbe39e9f729f"></a><!-- doxytag: member="ethercatbase.c::ec_APWR" ref="a02a1741d276571009e46fbe39e9f729f" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_APWR </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="aca3c5979b5549da9f4a6f441a74e132b"></a><!-- doxytag: member="ethercatbase.c::ec_APWRw" ref="aca3c5979b5549da9f4a6f441a74e132b" args="(uint16 ADP, uint16 ADO, uint16 data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_APWRw </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>data</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="a9fb77485174d13b8b5fe8bd2cac816e9"></a><!-- doxytag: member="ethercatbase.c::ec_ARMW" ref="a9fb77485174d13b8b5fe8bd2cac816e9" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_ARMW </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a30d9ab75b270ba904509fb1af2b8dc17"></a><!-- doxytag: member="ethercatbase.c::ec_BRD" ref="a30d9ab75b270ba904509fb1af2b8dc17" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_BRD </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a3ad29de613339c69a0b132114928b208"></a><!-- doxytag: member="ethercatbase.c::ec_BWR" ref="a3ad29de613339c69a0b132114928b208" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_BWR </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="aac2dc2b5a39ace0793473ab89bb56c7d"></a><!-- doxytag: member="ethercatbase.c::ec_FPRD" ref="aac2dc2b5a39ace0793473ab89bb56c7d" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_FPRD </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a688faf55cfa019c9c0bb637142bfbcd4"></a><!-- doxytag: member="ethercatbase.c::ec_FPRDw" ref="a688faf55cfa019c9c0bb637142bfbcd4" args="(uint16 ADP, uint16 ADO, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 ec_FPRDw </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</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="aa2fe58363a824f15838718ee31f11ffc"></a><!-- doxytag: member="ethercatbase.c::ec_FPWR" ref="aa2fe58363a824f15838718ee31f11ffc" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_FPWR </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a2fc76bd01a00a0f6da9fb3927eabc24d"></a><!-- doxytag: member="ethercatbase.c::ec_FPWRw" ref="a2fc76bd01a00a0f6da9fb3927eabc24d" args="(uint16 ADP, uint16 ADO, uint16 data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_FPWRw </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>data</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="a8a1aa39c19d1e54b7e5f1b5c37c6f84e"></a><!-- doxytag: member="ethercatbase.c::ec_FRMW" ref="a8a1aa39c19d1e54b7e5f1b5c37c6f84e" args="(uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_FRMW </td>
<td>(</td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a6b5e08a277e1be8f7a9a783e58fb4d2a"></a><!-- doxytag: member="ethercatbase.c::ec_LRD" ref="a6b5e08a277e1be8f7a9a783e58fb4d2a" args="(uint32 LogAdr, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_LRD </td>
<td>(</td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a785fba63c633dd865d0b778adb0239c2"></a><!-- doxytag: member="ethercatbase.c::ec_LRW" ref="a785fba63c633dd865d0b778adb0239c2" args="(uint32 LogAdr, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_LRW </td>
<td>(</td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="ae2b92060d47d3ea8b18cff9184113eba"></a><!-- doxytag: member="ethercatbase.c::ec_LRWDC" ref="ae2b92060d47d3ea8b18cff9184113eba" args="(uint32 LogAdr, uint16 length, void *data, uint16 DCrs, int64 *DCtime, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_LRWDC </td>
<td>(</td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>DCrs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64 *&#160;</td>
<td class="paramname"><em>DCtime</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="ad1edce1f583efd3c9616409b23cb088d"></a><!-- doxytag: member="ethercatbase.c::ec_LWR" ref="ad1edce1f583efd3c9616409b23cb088d" args="(uint32 LogAdr, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_LWR </td>
<td>(</td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a3b9a1e2b9fc1e15cf147a85d484db027"></a><!-- doxytag: member="ethercatbase.c::ec_setupdatagram" ref="a3b9a1e2b9fc1e15cf147a85d484db027" args="(void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ec_setupdatagram </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>frame</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>com</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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="a0d2fda4df4db4607d917330cafe07081"></a><!-- doxytag: member="ethercatbase.c::ecx_adddatagram" ref="a0d2fda4df4db4607d917330cafe07081" args="(ecx_portt *port, void *frame, uint8 com, uint8 idx, boolean more, uint16 ADP, uint16 ADO, uint16 length, void *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_adddatagram </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>frame</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>com</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boolean&#160;</td>
<td class="paramname"><em>more</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Add EtherCAT datagram to a standard ethernet frame with existing datagram(s).</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">frame</td><td>= framebuffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">com</td><td>= command </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>= index used for TX and RX buffers </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">more</td><td>= TRUE if still more datagrams to follow </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of datagram excluding EtherCAT header </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= databuffer to be copied in datagram </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Offset to data in rx frame, usefull to retrieve data after RX. </dd></dl>
</div>
</div>
<a class="anchor" id="a3a81a64b05912cf1b6a7cde6070fa408"></a><!-- doxytag: member="ethercatbase.c::ecx_APRD" ref="a3a81a64b05912cf1b6a7cde6070fa408" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_APRD </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>APRD "auto increment address read" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, each slave ++, slave that has 0 excecutes </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>= databuffer to put slave data in </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="a6dd3bf6a952c6b3c260655dac9dc8f34"></a><!-- doxytag: member="ethercatbase.c::ecx_APRDw" ref="a6dd3bf6a952c6b3c260655dac9dc8f34" args="(ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 ecx_APRDw </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</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>APRDw "auto increment address read" word return primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, each slave ++, slave that has 0 reads. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>word data from slave </dd></dl>
</div>
</div>
<a class="anchor" id="a0cc23ebda2862d9a7aa260529b818fa0"></a><!-- doxytag: member="ethercatbase.c::ecx_APWR" ref="a0cc23ebda2862d9a7aa260529b818fa0" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_APWR </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>APWR "auto increment address write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, each slave ++, slave that has 0 writes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= databuffer to write to slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="ada12b7523b9d2615b8a4f5ca3d5270a1"></a><!-- doxytag: member="ethercatbase.c::ecx_APWRw" ref="ada12b7523b9d2615b8a4f5ca3d5270a1" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_APWRw </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>data</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>APWRw "auto increment address write" word primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, each slave ++, slave that has 0 writes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= word data to write to slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="abe3c16067b99aebd4d9bfd9a2b93a36c"></a><!-- doxytag: member="ethercatbase.c::ecx_ARMW" ref="abe3c16067b99aebd4d9bfd9a2b93a36c" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_ARMW </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>APRMW "auto increment address read, multiple write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, each slave ++, slave that has 0 reads, following slaves write. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>= databuffer to put slave data in </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="ac4903c87e0cc698ac3968f191af60332"></a><!-- doxytag: member="ethercatbase.c::ecx_BRD" ref="ac4903c87e0cc698ac3968f191af60332" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_BRD </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>BRD "broadcast read" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, normally 0 </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>= databuffer to put slave data in </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="a1b888fa00f141e401be521c6b340d044"></a><!-- doxytag: member="ethercatbase.c::ecx_BWR" ref="a1b888fa00f141e401be521c6b340d044" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_BWR </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>BRW "broadcast write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, normally 0 </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= databuffer to be written to slaves </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="a40b981992928c4b72cf7f08c9538fd6e"></a><!-- doxytag: member="ethercatbase.c::ecx_FPRD" ref="a40b981992928c4b72cf7f08c9538fd6e" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_FPRD </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>FPRD "configured address read" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, slave that has address reads. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>= databuffer to put slave data in </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="ab4e55ff9162d1123ad7c3b1f34a7e6df"></a><!-- doxytag: member="ethercatbase.c::ecx_FPRDw" ref="ab4e55ff9162d1123ad7c3b1f34a7e6df" args="(ecx_portt *port, uint16 ADP, uint16 ADO, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16 ecx_FPRDw </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</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>FPRDw "configured address read" word return primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, slave that has address reads. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>word data from slave </dd></dl>
</div>
</div>
<a class="anchor" id="a84b35855ebd2a8226dbcaddc0ecba9b5"></a><!-- doxytag: member="ethercatbase.c::ecx_FPWR" ref="a84b35855ebd2a8226dbcaddc0ecba9b5" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_FPWR </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>FPWR "configured address write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, slave that has address writes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= databuffer to write to slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="a95b517724b08125f19b3f50b9e79f14c"></a><!-- doxytag: member="ethercatbase.c::ecx_FPWRw" ref="a95b517724b08125f19b3f50b9e79f14c" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_FPWRw </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>data</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>FPWR "configured address write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, slave that has address writes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= word to write to slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="ada9732437a0dad686ed000d9876c12bc"></a><!-- doxytag: member="ethercatbase.c::ecx_FRMW" ref="ada9732437a0dad686ed000d9876c12bc" args="(ecx_portt *port, uint16 ADP, uint16 ADO, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_FRMW </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>FPRMW "configured address read, multiple write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position, slave that has address reads, following slaves write. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset, slave memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>= databuffer to put slave data in </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="a6a48db45b5d5328d7e5d51155e8abfaa"></a><!-- doxytag: member="ethercatbase.c::ecx_LRD" ref="a6a48db45b5d5328d7e5d51155e8abfaa" args="(ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_LRD </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>LRD "logical memory read" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">LogAdr</td><td>= Logical memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of bytes to read from slave. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>= databuffer to read from slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="a747384434ba949b38f1f7064645c460e"></a><!-- doxytag: member="ethercatbase.c::ecx_LRW" ref="a747384434ba949b38f1f7064645c460e" args="(ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_LRW </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>LRW "logical memory read / write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">LogAdr</td><td>= Logical memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>= databuffer to write to and read from slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="ad3ee60104e7da46b07594c82f00dc0f8"></a><!-- doxytag: member="ethercatbase.c::ecx_LRWDC" ref="ad3ee60104e7da46b07594c82f00dc0f8" args="(ecx_portt *port, uint32 LogAdr, uint16 length, void *data, uint16 DCrs, int64 *DCtime, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_LRWDC </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>DCrs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64 *&#160;</td>
<td class="paramname"><em>DCtime</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>LRW "logical memory read / write" primitive plus Clock Distribution. Blocking. Frame consists of two datagrams, one LRW and one FPRMW.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">LogAdr</td><td>= Logical memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">data</td><td>= databuffer to write to and read from slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">DCrs</td><td>= Distributed Clock reference slave address. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">DCtime</td><td>= DC time read from reference slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="a23db3b931b4e045e0b35c7bfe7d787ac"></a><!-- doxytag: member="ethercatbase.c::ecx_LWR" ref="a23db3b931b4e045e0b35c7bfe7d787ac" args="(ecx_portt *port, uint32 LogAdr, uint16 length, void *data, int timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_LWR </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32&#160;</td>
<td class="paramname"><em>LogAdr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</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>LWR "logical memory write" primitive. Blocking.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">LogAdr</td><td>= Logical memory address </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= databuffer to write to slave. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>= timeout in us, standard is EC_TIMEOUTRET </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Workcounter or EC_NOFRAME </dd></dl>
</div>
</div>
<a class="anchor" id="aa2c4e8eb36480d128235b435add9cf67"></a><!-- doxytag: member="ethercatbase.c::ecx_setupdatagram" ref="aa2c4e8eb36480d128235b435add9cf67" args="(ecx_portt *port, void *frame, uint8 com, uint8 idx, uint16 ADP, uint16 ADO, uint16 length, void *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ecx_setupdatagram </td>
<td>(</td>
<td class="paramtype">ecx_portt *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>frame</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>com</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADP</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>ADO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Generate and set EtherCAT datagram in a standard ethernet frame.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>= port context struct </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">frame</td><td>= framebuffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">com</td><td>= command </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>= index used for TX and RX buffers </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADP</td><td>= Address Position </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ADO</td><td>= Address Offset </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of datagram excluding EtherCAT header </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= databuffer to be copied in datagram </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>always 0 </dd></dl>
</div>
</div>
<a class="anchor" id="a631e4e1e5dee9b114196f33007a53cfd"></a><!-- doxytag: member="ethercatbase.c::ecx_writedatagramdata" ref="a631e4e1e5dee9b114196f33007a53cfd" args="(void *datagramdata, ec_cmdtype com, uint16 length, const void *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static void ecx_writedatagramdata </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>datagramdata</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="ethercattype_8h.html#ab7e74d81c2756929a05440f98f34b41b">ec_cmdtype</a>&#160;</td>
<td class="paramname"><em>com</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Write data to EtherCAT datagram.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">datagramdata</td><td>= data part of datagram </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">com</td><td>= command </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>= length of databuffer </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>= databuffer to be copied into datagram </td></tr>
</table>
</dd>
</dl>
</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>