AMR_T800/Devices/Libraries/Systems/CANopenSocket/docs/group__CO__SDOserver.html

846 lines
61 KiB
HTML
Executable File

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CANopenNode: SDO server</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
/* @license-end */
</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 id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">CANopenNode
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group__CO__SDOserver.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#files">Files</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">SDO server<div class="ingroups"><a class="el" href="group__CO__CANopen__301.html">CANopen_301</a></div></div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:CO__SDOserver_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="CO__SDOserver_8h.html">CO_SDOserver.h</a></td></tr>
<tr class="memdesc:CO__SDOserver_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">CANopen Service Data Object - server protocol. <br /></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="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="structCO__SDOserver__t.html">CO_SDOserver_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SDO server object. <a href="structCO__SDOserver__t.html#details">More...</a><br /></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:ga84d9afbba1769aada5c52c81b7f5c3f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__SDOserver.html#ga84d9afbba1769aada5c52c81b7f5c3f4">CO_SDO_ST_FLAG_DOWNLOAD</a>&#160;&#160;&#160;0x10U</td></tr>
<tr class="memdesc:ga84d9afbba1769aada5c52c81b7f5c3f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal state flags indicate type of transfer. <a href="group__CO__SDOserver.html#ga84d9afbba1769aada5c52c81b7f5c3f4">More...</a><br /></td></tr>
<tr class="separator:ga84d9afbba1769aada5c52c81b7f5c3f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga0b0e614dadcc1c005185b8bc9a7fec11"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__SDOserver.html#ga0b0e614dadcc1c005185b8bc9a7fec11">CO_SDO_state_t</a> { <br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a2eee38ba2a2d52890281ae54b12d50b3">CO_SDO_ST_IDLE</a> = 0x00U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11ac40cb6c0b2f2eb1877aee3963dc1927d">CO_SDO_ST_ABORT</a> = 0x01U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a8f685c4d233c35defb423fda8ff5544c">CO_SDO_ST_DOWNLOAD_LOCAL_TRANSFER</a> = 0x10U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11ac07432ccfaa6be8730cc8c306b3e42bb">CO_SDO_ST_DOWNLOAD_INITIATE_REQ</a> = 0x11U,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a49b060ebf39c4bfb498b8691c16bb882">CO_SDO_ST_DOWNLOAD_INITIATE_RSP</a> = 0x12U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a6b44777e7e209313612baab5f83745ff">CO_SDO_ST_DOWNLOAD_SEGMENT_REQ</a> = 0x13U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11ae5b55aec51372cbc2a6e32ce1456c11c">CO_SDO_ST_DOWNLOAD_SEGMENT_RSP</a> = 0x14U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11aa07fe53d69ec7e0d56db39111867f8ce">CO_SDO_ST_UPLOAD_LOCAL_TRANSFER</a> = 0x20U,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11aa8a8b5050c6528fdaa19bbb429d8e4f4">CO_SDO_ST_UPLOAD_INITIATE_REQ</a> = 0x21U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11aa096d10c9eb891cfedddc16276f58aaf">CO_SDO_ST_UPLOAD_INITIATE_RSP</a> = 0x22U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11ad610c289b85192d70c835b033b49b3fb">CO_SDO_ST_UPLOAD_SEGMENT_REQ</a> = 0x23U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a210a3eb6acfdb055bb72a59d8e24a6b6">CO_SDO_ST_UPLOAD_SEGMENT_RSP</a> = 0x24U,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a5d4ead9d3f06962987b6af8c073b6a2e">CO_SDO_ST_DOWNLOAD_BLK_INITIATE_REQ</a> = 0x51U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11af25ee4e636a98dd72fe4c5bef9bcecf2">CO_SDO_ST_DOWNLOAD_BLK_INITIATE_RSP</a> = 0x52U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a320cc9749db35473265b5203c547bbf8">CO_SDO_ST_DOWNLOAD_BLK_SUBBLOCK_REQ</a> = 0x53U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a70e97f34a6a98014bef1d2eeb3b5247c">CO_SDO_ST_DOWNLOAD_BLK_SUBBLOCK_RSP</a> = 0x54U,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11af955593bb966b324bfda361b0364d15b">CO_SDO_ST_DOWNLOAD_BLK_END_REQ</a> = 0x55U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11af511c26db1fb7ba18d6054255b560be7">CO_SDO_ST_DOWNLOAD_BLK_END_RSP</a> = 0x56U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a49b5c39c9e5d025c85eedffa28aa22ed">CO_SDO_ST_UPLOAD_BLK_INITIATE_REQ</a> = 0x61U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11ae9be0eeb0711890d1b9c5cbfbd204ed8">CO_SDO_ST_UPLOAD_BLK_INITIATE_RSP</a> = 0x62U,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11acc4e87ad1ad20eddd19a60d9592bbada">CO_SDO_ST_UPLOAD_BLK_INITIATE_REQ2</a> = 0x63U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a39f1cb5426ee3c3689ed833cb66e231c">CO_SDO_ST_UPLOAD_BLK_SUBBLOCK_SREQ</a> = 0x64U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11af762eb5a985cf79a3e7423a39b29b328">CO_SDO_ST_UPLOAD_BLK_SUBBLOCK_CRSP</a> = 0x65U,
<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a98896138e97542e659051fff33b1a692">CO_SDO_ST_UPLOAD_BLK_END_SREQ</a> = 0x66U,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11ab75a573a45778a0c4bea2c50402be03e">CO_SDO_ST_UPLOAD_BLK_END_CRSP</a> = 0x67U
<br />
}</td></tr>
<tr class="memdesc:ga0b0e614dadcc1c005185b8bc9a7fec11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal states of the SDO state machine. <a href="group__CO__SDOserver.html#ga0b0e614dadcc1c005185b8bc9a7fec11">More...</a><br /></td></tr>
<tr class="separator:ga0b0e614dadcc1c005185b8bc9a7fec11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7587ddcf798747fe6d97d03bf1bf2979"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__SDOserver.html#ga7587ddcf798747fe6d97d03bf1bf2979">CO_SDO_abortCode_t</a> { <br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a5fc84558a4ca47e067189a14543691b6">CO_SDO_AB_NONE</a> = 0x00000000UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979ad4e9214eab1d034e9c10eb6c7638e592">CO_SDO_AB_TOGGLE_BIT</a> = 0x05030000UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a036d0be874d10f66aa6601d76a9aa2f0">CO_SDO_AB_TIMEOUT</a> = 0x05040000UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a26b4e2680c16ce6a09d3e3a8293472ce">CO_SDO_AB_CMD</a> = 0x05040001UL,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979ac86b70b71d601658c93a1dd270a902b0">CO_SDO_AB_BLOCK_SIZE</a> = 0x05040002UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a778ef6b5751cb8ba10b67436409c3fd2">CO_SDO_AB_SEQ_NUM</a> = 0x05040003UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979aee7fcab60a6fde6e41d999f5a2b10aa5">CO_SDO_AB_CRC</a> = 0x05040004UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979adc021e79ace03edbd279a3c492853c7f">CO_SDO_AB_OUT_OF_MEM</a> = 0x05040005UL,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a370ff72a5bddee5760ba0930c3b13ba0">CO_SDO_AB_UNSUPPORTED_ACCESS</a> = 0x06010000UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a457e80af0f952c272fa90ebd45cdb8cd">CO_SDO_AB_WRITEONLY</a> = 0x06010001UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a48c8a5f4939372564a17b31f992b82a4">CO_SDO_AB_READONLY</a> = 0x06010002UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a6ef5b921ac0f299f34e9860eb82e332e">CO_SDO_AB_NOT_EXIST</a> = 0x06020000UL,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a729452df9557e4acbda8691efb4da310">CO_SDO_AB_NO_MAP</a> = 0x06040041UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a07edee9ce8ec5cd01cfd3cfbff48b96c">CO_SDO_AB_MAP_LEN</a> = 0x06040042UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979acaedcf71c4638efb40fc6debfa9dba67">CO_SDO_AB_PRAM_INCOMPAT</a> = 0x06040043UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979ad07acc06f76122627412a71f2f2e39fc">CO_SDO_AB_DEVICE_INCOMPAT</a> = 0x06040047UL,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a070f096bb09f5a6235643702b5a40759">CO_SDO_AB_HW</a> = 0x06060000UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a838c274eaa14626514da8f7a8ac043c3">CO_SDO_AB_TYPE_MISMATCH</a> = 0x06070010UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a50d373f7a7ba976dc2277a2111cf56c3">CO_SDO_AB_DATA_LONG</a> = 0x06070012UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a481537e4c170066ca31b167fa598bb54">CO_SDO_AB_DATA_SHORT</a> = 0x06070013UL,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a3e48e535fddeaa78a4059c2f91f9bb8e">CO_SDO_AB_SUB_UNKNOWN</a> = 0x06090011UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979afff1ec491c628031e65672383f3e3c76">CO_SDO_AB_INVALID_VALUE</a> = 0x06090030UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a4983bce8e9503f9e7a720a44528036ad">CO_SDO_AB_VALUE_HIGH</a> = 0x06090031UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979ab402816165086fbad21a130e9f488d52">CO_SDO_AB_VALUE_LOW</a> = 0x06090032UL,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a15d49829c0d15f8cb9995f07617d874f">CO_SDO_AB_MAX_LESS_MIN</a> = 0x06090036UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979ab54dd042727804cd8f310a04fd4575f7">CO_SDO_AB_NO_RESOURCE</a> = 0x060A0023UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a58d6be7d156bbe576b8438a6fd5b446d">CO_SDO_AB_GENERAL</a> = 0x08000000UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a631a043a79c7eef4ddb2f874365c6660">CO_SDO_AB_DATA_TRANSF</a> = 0x08000020UL,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979ac489bb77a98f65008932861924bc4bbf">CO_SDO_AB_DATA_LOC_CTRL</a> = 0x08000021UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979ac92ccaa16d833cac6d2f6d8c2836d886">CO_SDO_AB_DATA_DEV_STATE</a> = 0x08000022UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979aec1840b00621e92f27da2d0705ddab63">CO_SDO_AB_DATA_OD</a> = 0x08000023UL,
<a class="el" href="group__CO__SDOserver.html#gga7587ddcf798747fe6d97d03bf1bf2979a3e007eeec7538b5dbe7e78240632b415">CO_SDO_AB_NO_DATA</a> = 0x08000024UL
<br />
}</td></tr>
<tr class="memdesc:ga7587ddcf798747fe6d97d03bf1bf2979"><td class="mdescLeft">&#160;</td><td class="mdescRight">SDO abort codes. <a href="group__CO__SDOserver.html#ga7587ddcf798747fe6d97d03bf1bf2979">More...</a><br /></td></tr>
<tr class="separator:ga7587ddcf798747fe6d97d03bf1bf2979"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f729ab203285c7623df493916f22a73"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__SDOserver.html#ga7f729ab203285c7623df493916f22a73">CO_SDO_return_t</a> { <br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73ab9191f8a57b840a81457591f0fbd8a76">CO_SDO_RT_waitingLocalTransfer</a> = 6,
<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73ada069dad6b1e0bec180600b1d34758d2">CO_SDO_RT_uploadDataBufferFull</a> = 5,
<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73ad62e2421dcee78ba0477fb379a6e7e4e">CO_SDO_RT_transmittBufferFull</a> = 4,
<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73aa8036db7f41e8958c057da0d4ab24f8f">CO_SDO_RT_blockDownldInProgress</a> = 3,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73ad73a50f4a1d7ef69797cbf7c930293f2">CO_SDO_RT_blockUploadInProgress</a> = 2,
<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73a15d85fc411d0c6e69888c2ec9d641eb5">CO_SDO_RT_waitingResponse</a> = 1,
<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73a2d0d1d8d1bc297205b3e87174642199c">CO_SDO_RT_ok_communicationEnd</a> = 0,
<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73af1dc6a56b2b38fb5f4c878661173decc">CO_SDO_RT_wrongArguments</a> = -2,
<br />
&#160;&#160;<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73a9aafefd96d032c1b65cb6c23bc53f0aa">CO_SDO_RT_endedWithClientAbort</a> = -9,
<a class="el" href="group__CO__SDOserver.html#gga7f729ab203285c7623df493916f22a73ae2fce3f477766eb188502886705dc177">CO_SDO_RT_endedWithServerAbort</a> = -10
<br />
}</td></tr>
<tr class="memdesc:ga7f729ab203285c7623df493916f22a73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return values from SDO server or client functions. <a href="group__CO__SDOserver.html#ga7f729ab203285c7623df493916f22a73">More...</a><br /></td></tr>
<tr class="separator:ga7f729ab203285c7623df493916f22a73"><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:gac989ba60f25fd2bc48bca6df0c0c1dde"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__driver.html#ga1cb2d3466eb0c6d267f3b5ff1a0d9532">CO_ReturnError_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__SDOserver.html#gac989ba60f25fd2bc48bca6df0c0c1dde">CO_SDOserver_init</a> (<a class="el" href="structCO__SDOserver__t.html">CO_SDOserver_t</a> *SDO, const <a class="el" href="structOD__t.html">OD_t</a> *OD, const <a class="el" href="structOD__entry__t.html">OD_entry_t</a> *OD_1200_SDOsrvPar, <a class="el" href="group__CO__dataTypes.html#gaba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> nodeId, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> SDOtimeoutTime_ms, <a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *CANdevRx, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> CANdevRxIdx, <a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *CANdevTx, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> CANdevTxIdx)</td></tr>
<tr class="memdesc:gac989ba60f25fd2bc48bca6df0c0c1dde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize SDO object. <a href="group__CO__SDOserver.html#gac989ba60f25fd2bc48bca6df0c0c1dde">More...</a><br /></td></tr>
<tr class="separator:gac989ba60f25fd2bc48bca6df0c0c1dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3eeea49e2fb36da22dc754c62b03a423"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__SDOserver.html#ga3eeea49e2fb36da22dc754c62b03a423">CO_SDOserver_initCallbackPre</a> (<a class="el" href="structCO__SDOserver__t.html">CO_SDOserver_t</a> *SDO, void *object, void(*pFunctSignalPre)(void *object))</td></tr>
<tr class="memdesc:ga3eeea49e2fb36da22dc754c62b03a423"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize SDOrx callback function. <a href="group__CO__SDOserver.html#ga3eeea49e2fb36da22dc754c62b03a423">More...</a><br /></td></tr>
<tr class="separator:ga3eeea49e2fb36da22dc754c62b03a423"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga360bc6aa1659a5572d4d1077d787433a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__SDOserver.html#ga7f729ab203285c7623df493916f22a73">CO_SDO_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__SDOserver.html#ga360bc6aa1659a5572d4d1077d787433a">CO_SDOserver_process</a> (<a class="el" href="structCO__SDOserver__t.html">CO_SDOserver_t</a> *SDO, <a class="el" href="group__CO__dataTypes.html#ga449976458a084f880dc8e3d29e7eb6f5">bool_t</a> NMTisPreOrOperational, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> *timerNext_us)</td></tr>
<tr class="memdesc:ga360bc6aa1659a5572d4d1077d787433a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process SDO communication. <a href="group__CO__SDOserver.html#ga360bc6aa1659a5572d4d1077d787433a">More...</a><br /></td></tr>
<tr class="separator:ga360bc6aa1659a5572d4d1077d787433a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>CANopen Service Data Object - server protocol.</p>
<p>Service data objects (SDOs) allow the access to any entry of the CANopen Object dictionary. By SDO a peer-to-peer communication channel between two CANopen devices is established. In addition, the SDO protocol enables to transfer any amount of data in a segmented way. Therefore the SDO protocol is mainly used in order to communicate configuration data.</p>
<p>All CANopen devices must have implemented SDO server and first SDO server channel. Servers serves data from Object dictionary. Object dictionary is a collection of variables, arrays or records (structures), which can be used by the stack or by the application. This file (<a class="el" href="CO__SDOserver_8h.html" title="CANopen Service Data Object - server protocol.">CO_SDOserver.h</a>) implements SDO server.</p>
<p>SDO client can be (optionally) implemented on one (or multiple, if multiple SDO channels are used) device in CANopen network. Usually this is master device and provides also some kind of user interface, so configuration of the network is possible. Code for the SDO client is in file <a class="el" href="CO__SDOclient_8h.html" title="CANopen Service Data Object - client protocol.">CO_SDOclient.h</a>.</p>
<p>SDO communication cycle is initiated by the client. Client can upload (read) data from device or can download (write) data to device. If data size is less or equal to 4 bytes, communication is finished by one server response (expedited transfer). If data size is longer, data are split into multiple segments of request/response pairs (normal or segmented transfer). For longer data there is also a block transfer protocol, which transfers larger block of data in secure way with little protocol overhead. If error occurs during SDO transfer <a class="el" href="group__CO__SDOserver.html#ga7587ddcf798747fe6d97d03bf1bf2979" title="SDO abort codes.">CO_SDO_abortCode_t</a> is send by client or server and transfer is terminated. For more details see <a class="el" href="group__CO__SDOserver.html#ga0b0e614dadcc1c005185b8bc9a7fec11" title="Internal states of the SDO state machine.">CO_SDO_state_t</a>.</p>
<p>Access to Object dictionary is specified in <a class="el" href="group__CO__ODinterface.html">OD interface</a>. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga84d9afbba1769aada5c52c81b7f5c3f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga84d9afbba1769aada5c52c81b7f5c3f4">&#9670;&nbsp;</a></span>CO_SDO_ST_FLAG_DOWNLOAD</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CO_SDO_ST_FLAG_DOWNLOAD&#160;&#160;&#160;0x10U</td>
</tr>
</table>
</div><div class="memdoc">
<p>Internal state flags indicate type of transfer. </p>
<p>These flags correspond to the upper nibble of the SDO state machine states and can be used to determine the type of state an SDO object is in. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga0b0e614dadcc1c005185b8bc9a7fec11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0b0e614dadcc1c005185b8bc9a7fec11">&#9670;&nbsp;</a></span>CO_SDO_state_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__CO__SDOserver.html#ga0b0e614dadcc1c005185b8bc9a7fec11">CO_SDO_state_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Internal states of the SDO state machine. </p>
<p>Upper nibble of byte indicates type of state: 0x10: Download 0x20: Upload 0x40: Block Mode</p>
<p>Note: CANopen has little endian byte order. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a2eee38ba2a2d52890281ae54b12d50b3"></a>CO_SDO_ST_IDLE&#160;</td><td class="fielddoc"><ul>
<li>SDO client may start new download to or upload from specified node, specified index and specified subindex. It can start normal or block communication.</li>
<li>SDO server is waiting for client request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11ac40cb6c0b2f2eb1877aee3963dc1927d"></a>CO_SDO_ST_ABORT&#160;</td><td class="fielddoc"><ul>
<li>SDO client or server may send SDO abort message in case of error:<ul>
<li>byte 0: <b>10000000</b> binary.</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4..7: <a class="el" href="group__CO__SDOserver.html#ga7587ddcf798747fe6d97d03bf1bf2979" title="SDO abort codes.">CO_SDO_abortCode_t</a>. </li>
</ul>
</li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a8f685c4d233c35defb423fda8ff5544c"></a>CO_SDO_ST_DOWNLOAD_LOCAL_TRANSFER&#160;</td><td class="fielddoc"><ul>
<li>SDO client: Node-ID of the SDO server is the same as node-ID of this node, SDO client is the same device as SDO server. Transfer data directly without communication on CAN.</li>
<li>SDO server does not use this state. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11ac07432ccfaa6be8730cc8c306b3e42bb"></a>CO_SDO_ST_DOWNLOAD_INITIATE_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client initiates SDO download:<ul>
<li>byte 0: <b>0010nnes</b> binary: (nn: if e=s=1, number of data bytes, that do <b>not</b> contain data; e=1 for expedited transfer; s=1 if data size is indicated.)</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4..7: If e=1, expedited data are here. If e=0 s=1, size of data for segmented transfer is indicated here.</li>
</ul>
</li>
<li>SDO server is in <a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a2eee38ba2a2d52890281ae54b12d50b3">CO_SDO_ST_IDLE</a> state and waits for client request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a49b060ebf39c4bfb498b8691c16bb882"></a>CO_SDO_ST_DOWNLOAD_INITIATE_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses:<ul>
<li>byte 0: <b>01100000</b> binary.</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4..7: Reserved.</li>
</ul>
</li>
<li>In case of expedited transfer communication ends here. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a6b44777e7e209313612baab5f83745ff"></a>CO_SDO_ST_DOWNLOAD_SEGMENT_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client sends SDO segment:<ul>
<li>byte 0: <b>000tnnnc</b> binary: (t: toggle bit, set to 0 in first segment; nnn: number of data bytes, that do <b>not</b> contain data; c=1 if this is the last segment).</li>
<li>byte 1..7: Data segment.</li>
</ul>
</li>
<li>SDO server waits for segment. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11ae5b55aec51372cbc2a6e32ce1456c11c"></a>CO_SDO_ST_DOWNLOAD_SEGMENT_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses:<ul>
<li>byte 0: <b>001t0000</b> binary: (t: toggle bit, set to 0 in first segment).</li>
<li>byte 1..7: Reserved.</li>
</ul>
</li>
<li>If c was set to 1, then communication ends here. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11aa07fe53d69ec7e0d56db39111867f8ce"></a>CO_SDO_ST_UPLOAD_LOCAL_TRANSFER&#160;</td><td class="fielddoc"><ul>
<li>SDO client: Node-ID of the SDO server is the same as node-ID of this node, SDO client is the same device as SDO server. Transfer data directly without communication on CAN.</li>
<li>SDO server does not use this state. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11aa8a8b5050c6528fdaa19bbb429d8e4f4"></a>CO_SDO_ST_UPLOAD_INITIATE_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client initiates SDO upload:<ul>
<li>byte 0: <b>01000000</b> binary.</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4..7: Reserved.</li>
</ul>
</li>
<li>SDO server is in <a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a2eee38ba2a2d52890281ae54b12d50b3">CO_SDO_ST_IDLE</a> state and waits for client request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11aa096d10c9eb891cfedddc16276f58aaf"></a>CO_SDO_ST_UPLOAD_INITIATE_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses:<ul>
<li>byte 0: <b>0100nnes</b> binary: (nn: if e=s=1, number of data bytes, that do <b>not</b> contain data; e=1 for expedited transfer; s=1 if data size is indicated).</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4..7: If e=1, expedited data are here. If e=0 s=1, size of data for segmented transfer is indicated here.</li>
</ul>
</li>
<li>In case of expedited transfer communication ends here. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11ad610c289b85192d70c835b033b49b3fb"></a>CO_SDO_ST_UPLOAD_SEGMENT_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client requests SDO segment:<ul>
<li>byte 0: <b>011t0000</b> binary: (t: toggle bit, set to 0 in first segment).</li>
<li>byte 1..7: Reserved.</li>
</ul>
</li>
<li>SDO server waits for segment request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a210a3eb6acfdb055bb72a59d8e24a6b6"></a>CO_SDO_ST_UPLOAD_SEGMENT_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses with data:<ul>
<li>byte 0: <b>000tnnnc</b> binary: (t: toggle bit, set to 0 in first segment; nnn: number of data bytes, that do <b>not</b> contain data; c=1 if this is the last segment).</li>
<li>byte 1..7: Data segment.</li>
</ul>
</li>
<li>If c is set to 1, then communication ends here. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a5d4ead9d3f06962987b6af8c073b6a2e"></a>CO_SDO_ST_DOWNLOAD_BLK_INITIATE_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client initiates SDO block download:<ul>
<li>byte 0: <b>11000rs0</b> binary: (r=1 if client supports generating CRC on data; s=1 if data size is indicated.)</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4..7: If s=1, then size of data for block download is indicated here.</li>
</ul>
</li>
<li>SDO server is in <a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a2eee38ba2a2d52890281ae54b12d50b3">CO_SDO_ST_IDLE</a> state and waits for client request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11af25ee4e636a98dd72fe4c5bef9bcecf2"></a>CO_SDO_ST_DOWNLOAD_BLK_INITIATE_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses:<ul>
<li>byte 0: <b>10100r00</b> binary: (r=1 if server supports generating CRC on data.)</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4: blksize: Number of segments per block that shall be used by the client for the following block download with 0 &lt; blksize &lt; 128.</li>
<li>byte 5..7: Reserved. </li>
</ul>
</li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a320cc9749db35473265b5203c547bbf8"></a>CO_SDO_ST_DOWNLOAD_BLK_SUBBLOCK_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client sends 'blksize' segments of data in sequence:<ul>
<li>byte 0: <b>cnnnnnnn</b> binary: (c=1 if no more segments to be downloaded, enter SDO block download end phase; nnnnnnn is sequence number of segment, 1..127.</li>
<li>byte 1..7: At most 7 bytes of segment data to be downloaded.</li>
</ul>
</li>
<li>SDO server reads sequence of 'blksize' blocks. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a70e97f34a6a98014bef1d2eeb3b5247c"></a>CO_SDO_ST_DOWNLOAD_BLK_SUBBLOCK_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses:<ul>
<li>byte 0: <b>10100010</b> binary.</li>
<li>byte 1: ackseq: sequence number of last segment that was received successfully during the last block download. If ackseq is set to 0 the server indicates the client that the segment with the sequence number 1 was not received correctly and all segments shall be retransmitted by the client.</li>
<li>byte 2: Number of segments per block that shall be used by the client for the following block download with 0 &lt; blksize &lt; 128.</li>
<li>byte 3..7: Reserved.</li>
</ul>
</li>
<li>If c was set to 1, then communication enters SDO block download end phase. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11af955593bb966b324bfda361b0364d15b"></a>CO_SDO_ST_DOWNLOAD_BLK_END_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client sends SDO block download end:<ul>
<li>byte 0: <b>110nnn01</b> binary: (nnn: number of data bytes, that do <b>not</b> contain data)</li>
<li>byte 1..2: 16 bit CRC for the data set, if enabled by client and server.</li>
<li>byte 3..7: Reserved.</li>
</ul>
</li>
<li>SDO server waits for client request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11af511c26db1fb7ba18d6054255b560be7"></a>CO_SDO_ST_DOWNLOAD_BLK_END_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses:<ul>
<li>byte 0: <b>10100001</b> binary.</li>
<li>byte 1..7: Reserved.</li>
</ul>
</li>
<li>Block download successfully ends here. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a49b5c39c9e5d025c85eedffa28aa22ed"></a>CO_SDO_ST_UPLOAD_BLK_INITIATE_REQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client initiates SDO block upload:<ul>
<li>byte 0: <b>10100r00</b> binary: (r=1 if client supports generating CRC on data.)</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4: blksize: Number of segments per block with 0 &lt; blksize &lt; 128.</li>
<li>byte 5: pst - protocol switch threshold. If pst &gt; 0 and size of the data in bytes is less or equal pst, then the server may switch to the SDO upload protocol <a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11aa096d10c9eb891cfedddc16276f58aaf">CO_SDO_ST_UPLOAD_INITIATE_RSP</a>.</li>
<li>byte 6..7: Reserved.</li>
</ul>
</li>
<li>SDO server is in <a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11a2eee38ba2a2d52890281ae54b12d50b3">CO_SDO_ST_IDLE</a> state and waits for client request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11ae9be0eeb0711890d1b9c5cbfbd204ed8"></a>CO_SDO_ST_UPLOAD_BLK_INITIATE_RSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for response.</li>
<li>SDO server responses:<ul>
<li>byte 0: <b>11000rs0</b> binary: (r=1 if server supports generating CRC on data; s=1 if data size is indicated. )</li>
<li>byte 1..3: Object index and subIndex.</li>
<li>byte 4..7: If s=1, then size of data for block upload is indicated here.</li>
</ul>
</li>
<li>If enabled by pst, then server may alternatively response with <a class="el" href="group__CO__SDOserver.html#gga0b0e614dadcc1c005185b8bc9a7fec11aa096d10c9eb891cfedddc16276f58aaf">CO_SDO_ST_UPLOAD_INITIATE_RSP</a> </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11acc4e87ad1ad20eddd19a60d9592bbada"></a>CO_SDO_ST_UPLOAD_BLK_INITIATE_REQ2&#160;</td><td class="fielddoc"><ul>
<li>SDO client sends second initiate for SDO block upload:<ul>
<li>byte 0: <b>10100011</b> binary.</li>
<li>byte 1..7: Reserved.</li>
</ul>
</li>
<li>SDO server waits for client request. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a39f1cb5426ee3c3689ed833cb66e231c"></a>CO_SDO_ST_UPLOAD_BLK_SUBBLOCK_SREQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client reads sequence of 'blksize' blocks.</li>
<li>SDO server sends 'blksize' segments of data in sequence:<ul>
<li>byte 0: <b>cnnnnnnn</b> binary: (c=1 if no more segments to be uploaded, enter SDO block upload end phase; nnnnnnn is sequence number of segment, 1..127.</li>
<li>byte 1..7: At most 7 bytes of segment data to be uploaded. </li>
</ul>
</li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11af762eb5a985cf79a3e7423a39b29b328"></a>CO_SDO_ST_UPLOAD_BLK_SUBBLOCK_CRSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client responses:<ul>
<li>byte 0: <b>10100010</b> binary.</li>
<li>byte 1: ackseq: sequence number of last segment that was received successfully during the last block upload. If ackseq is set to 0 the client indicates the server that the segment with the sequence number 1 was not received correctly and all segments shall be retransmitted by the server.</li>
<li>byte 2: Number of segments per block that shall be used by the server for the following block upload with 0 &lt; blksize &lt; 128.</li>
<li>byte 3..7: Reserved.</li>
</ul>
</li>
<li>SDO server waits for response.</li>
<li>If c was set to 1 and all segments were successfull received, then communication enters SDO block upload end phase. </li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11a98896138e97542e659051fff33b1a692"></a>CO_SDO_ST_UPLOAD_BLK_END_SREQ&#160;</td><td class="fielddoc"><ul>
<li>SDO client waits for server request.</li>
<li>SDO server sends SDO block upload end:<ul>
<li>byte 0: <b>110nnn01</b> binary: (nnn: number of data bytes, that do <b>not</b> contain data)</li>
<li>byte 1..2: 16 bit CRC for the data set, if enabled by client and server.</li>
<li>byte 3..7: Reserved. </li>
</ul>
</li>
</ul>
</td></tr>
<tr><td class="fieldname"><a id="gga0b0e614dadcc1c005185b8bc9a7fec11ab75a573a45778a0c4bea2c50402be03e"></a>CO_SDO_ST_UPLOAD_BLK_END_CRSP&#160;</td><td class="fielddoc"><ul>
<li>SDO client responses:<ul>
<li>byte 0: <b>10100001</b> binary.</li>
<li>byte 1..7: Reserved.</li>
</ul>
</li>
<li>SDO server waits for response.</li>
<li>Block download successfully ends here. Note that this communication ends with client response. Client may then start next SDO communication immediately. </li>
</ul>
</td></tr>
</table>
</div>
</div>
<a id="ga7587ddcf798747fe6d97d03bf1bf2979"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7587ddcf798747fe6d97d03bf1bf2979">&#9670;&nbsp;</a></span>CO_SDO_abortCode_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__CO__SDOserver.html#ga7587ddcf798747fe6d97d03bf1bf2979">CO_SDO_abortCode_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>SDO abort codes. </p>
<p>Send with Abort SDO transfer message.</p>
<p>The abort codes not listed here are reserved. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a5fc84558a4ca47e067189a14543691b6"></a>CO_SDO_AB_NONE&#160;</td><td class="fielddoc"><p>0x00000000, No abort </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979ad4e9214eab1d034e9c10eb6c7638e592"></a>CO_SDO_AB_TOGGLE_BIT&#160;</td><td class="fielddoc"><p>0x05030000, Toggle bit not altered </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a036d0be874d10f66aa6601d76a9aa2f0"></a>CO_SDO_AB_TIMEOUT&#160;</td><td class="fielddoc"><p>0x05040000, SDO protocol timed out </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a26b4e2680c16ce6a09d3e3a8293472ce"></a>CO_SDO_AB_CMD&#160;</td><td class="fielddoc"><p>0x05040001, Command specifier not valid or unknown </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979ac86b70b71d601658c93a1dd270a902b0"></a>CO_SDO_AB_BLOCK_SIZE&#160;</td><td class="fielddoc"><p>0x05040002, Invalid block size in block mode </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a778ef6b5751cb8ba10b67436409c3fd2"></a>CO_SDO_AB_SEQ_NUM&#160;</td><td class="fielddoc"><p>0x05040003, Invalid sequence number in block mode </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979aee7fcab60a6fde6e41d999f5a2b10aa5"></a>CO_SDO_AB_CRC&#160;</td><td class="fielddoc"><p>0x05040004, CRC error (block mode only) </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979adc021e79ace03edbd279a3c492853c7f"></a>CO_SDO_AB_OUT_OF_MEM&#160;</td><td class="fielddoc"><p>0x05040005, Out of memory </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a370ff72a5bddee5760ba0930c3b13ba0"></a>CO_SDO_AB_UNSUPPORTED_ACCESS&#160;</td><td class="fielddoc"><p>0x06010000, Unsupported access to an object </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a457e80af0f952c272fa90ebd45cdb8cd"></a>CO_SDO_AB_WRITEONLY&#160;</td><td class="fielddoc"><p>0x06010001, Attempt to read a write only object </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a48c8a5f4939372564a17b31f992b82a4"></a>CO_SDO_AB_READONLY&#160;</td><td class="fielddoc"><p>0x06010002, Attempt to write a read only object </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a6ef5b921ac0f299f34e9860eb82e332e"></a>CO_SDO_AB_NOT_EXIST&#160;</td><td class="fielddoc"><p>0x06020000, Object does not exist in the object dictionary </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a729452df9557e4acbda8691efb4da310"></a>CO_SDO_AB_NO_MAP&#160;</td><td class="fielddoc"><p>0x06040041, Object cannot be mapped to the PDO </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a07edee9ce8ec5cd01cfd3cfbff48b96c"></a>CO_SDO_AB_MAP_LEN&#160;</td><td class="fielddoc"><p>0x06040042, Number and length of object to be mapped exceeds PDO length </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979acaedcf71c4638efb40fc6debfa9dba67"></a>CO_SDO_AB_PRAM_INCOMPAT&#160;</td><td class="fielddoc"><p>0x06040043, General parameter incompatibility reasons </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979ad07acc06f76122627412a71f2f2e39fc"></a>CO_SDO_AB_DEVICE_INCOMPAT&#160;</td><td class="fielddoc"><p>0x06040047, General internal incompatibility in device </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a070f096bb09f5a6235643702b5a40759"></a>CO_SDO_AB_HW&#160;</td><td class="fielddoc"><p>0x06060000, Access failed due to hardware error </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a838c274eaa14626514da8f7a8ac043c3"></a>CO_SDO_AB_TYPE_MISMATCH&#160;</td><td class="fielddoc"><p>0x06070010, Data type does not match, length of service parameter does not match </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a50d373f7a7ba976dc2277a2111cf56c3"></a>CO_SDO_AB_DATA_LONG&#160;</td><td class="fielddoc"><p>0x06070012, Data type does not match, length of service parameter too high </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a481537e4c170066ca31b167fa598bb54"></a>CO_SDO_AB_DATA_SHORT&#160;</td><td class="fielddoc"><p>0x06070013, Data type does not match, length of service parameter too short </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a3e48e535fddeaa78a4059c2f91f9bb8e"></a>CO_SDO_AB_SUB_UNKNOWN&#160;</td><td class="fielddoc"><p>0x06090011, Sub index does not exist </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979afff1ec491c628031e65672383f3e3c76"></a>CO_SDO_AB_INVALID_VALUE&#160;</td><td class="fielddoc"><p>0x06090030, Invalid value for parameter (download only). </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a4983bce8e9503f9e7a720a44528036ad"></a>CO_SDO_AB_VALUE_HIGH&#160;</td><td class="fielddoc"><p>0x06090031, Value range of parameter written too high </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979ab402816165086fbad21a130e9f488d52"></a>CO_SDO_AB_VALUE_LOW&#160;</td><td class="fielddoc"><p>0x06090032, Value range of parameter written too low </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a15d49829c0d15f8cb9995f07617d874f"></a>CO_SDO_AB_MAX_LESS_MIN&#160;</td><td class="fielddoc"><p>0x06090036, Maximum value is less than minimum value. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979ab54dd042727804cd8f310a04fd4575f7"></a>CO_SDO_AB_NO_RESOURCE&#160;</td><td class="fielddoc"><p>0x060A0023, Resource not available: SDO connection </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a58d6be7d156bbe576b8438a6fd5b446d"></a>CO_SDO_AB_GENERAL&#160;</td><td class="fielddoc"><p>0x08000000, General error </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a631a043a79c7eef4ddb2f874365c6660"></a>CO_SDO_AB_DATA_TRANSF&#160;</td><td class="fielddoc"><p>0x08000020, Data cannot be transferred or stored to application </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979ac489bb77a98f65008932861924bc4bbf"></a>CO_SDO_AB_DATA_LOC_CTRL&#160;</td><td class="fielddoc"><p>0x08000021, Data cannot be transferred or stored to application because of local control </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979ac92ccaa16d833cac6d2f6d8c2836d886"></a>CO_SDO_AB_DATA_DEV_STATE&#160;</td><td class="fielddoc"><p>0x08000022, Data cannot be transferred or stored to application because of present device state </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979aec1840b00621e92f27da2d0705ddab63"></a>CO_SDO_AB_DATA_OD&#160;</td><td class="fielddoc"><p>0x08000023, Object dictionary not present or dynamic generation fails </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7587ddcf798747fe6d97d03bf1bf2979a3e007eeec7538b5dbe7e78240632b415"></a>CO_SDO_AB_NO_DATA&#160;</td><td class="fielddoc"><p>0x08000024, No data available </p>
</td></tr>
</table>
</div>
</div>
<a id="ga7f729ab203285c7623df493916f22a73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7f729ab203285c7623df493916f22a73">&#9670;&nbsp;</a></span>CO_SDO_return_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__CO__SDOserver.html#ga7f729ab203285c7623df493916f22a73">CO_SDO_return_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return values from SDO server or client functions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73ab9191f8a57b840a81457591f0fbd8a76"></a>CO_SDO_RT_waitingLocalTransfer&#160;</td><td class="fielddoc"><p>Waiting in client local transfer. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73ada069dad6b1e0bec180600b1d34758d2"></a>CO_SDO_RT_uploadDataBufferFull&#160;</td><td class="fielddoc"><p>Data buffer is full. </p>
<p>SDO client: data must be read before next upload cycle begins. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73ad62e2421dcee78ba0477fb379a6e7e4e"></a>CO_SDO_RT_transmittBufferFull&#160;</td><td class="fielddoc"><p>CAN transmit buffer is full. </p>
<p>Waiting. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73aa8036db7f41e8958c057da0d4ab24f8f"></a>CO_SDO_RT_blockDownldInProgress&#160;</td><td class="fielddoc"><p>Block download is in progress. </p>
<p>Sending train of messages. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73ad73a50f4a1d7ef69797cbf7c930293f2"></a>CO_SDO_RT_blockUploadInProgress&#160;</td><td class="fielddoc"><p>Block upload is in progress. </p>
<p>Receiving train of messages. SDO client: Data must not be read in this state. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73a15d85fc411d0c6e69888c2ec9d641eb5"></a>CO_SDO_RT_waitingResponse&#160;</td><td class="fielddoc"><p>Waiting server or client response. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73a2d0d1d8d1bc297205b3e87174642199c"></a>CO_SDO_RT_ok_communicationEnd&#160;</td><td class="fielddoc"><p>Success, end of communication. </p>
<p>SDO client: uploaded data must be read. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73af1dc6a56b2b38fb5f4c878661173decc"></a>CO_SDO_RT_wrongArguments&#160;</td><td class="fielddoc"><p>Error in arguments. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73a9aafefd96d032c1b65cb6c23bc53f0aa"></a>CO_SDO_RT_endedWithClientAbort&#160;</td><td class="fielddoc"><p>Communication ended with client abort. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga7f729ab203285c7623df493916f22a73ae2fce3f477766eb188502886705dc177"></a>CO_SDO_RT_endedWithServerAbort&#160;</td><td class="fielddoc"><p>Communication ended with server abort. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="gac989ba60f25fd2bc48bca6df0c0c1dde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac989ba60f25fd2bc48bca6df0c0c1dde">&#9670;&nbsp;</a></span>CO_SDOserver_init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CO__driver.html#ga1cb2d3466eb0c6d267f3b5ff1a0d9532">CO_ReturnError_t</a> CO_SDOserver_init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structCO__SDOserver__t.html">CO_SDOserver_t</a> *&#160;</td>
<td class="paramname"><em>SDO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structOD__t.html">OD_t</a> *&#160;</td>
<td class="paramname"><em>OD</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structOD__entry__t.html">OD_entry_t</a> *&#160;</td>
<td class="paramname"><em>OD_1200_SDOsrvPar</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CO__dataTypes.html#gaba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>&#160;</td>
<td class="paramname"><em>nodeId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
<td class="paramname"><em>SDOtimeoutTime_ms</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *&#160;</td>
<td class="paramname"><em>CANdevRx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
<td class="paramname"><em>CANdevRxIdx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *&#160;</td>
<td class="paramname"><em>CANdevTx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
<td class="paramname"><em>CANdevTxIdx</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize SDO object. </p>
<p>Function must be called in the communication reset section.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">SDO</td><td>This object will be initialized. </td></tr>
<tr><td class="paramname">OD</td><td>Object Dictionary. </td></tr>
<tr><td class="paramname">OD_1200_SDOsrvPar</td><td>OD entry for SDO server parameter (0x1200+), can be NULL for default single SDO server and must not be NULL for additional SDO servers. With additional SDO servers it may also have IO extension enabled, to allow dynamic configuration (see also <a class="el" href="group__CO__STACK__CONFIG__COMMON.html#gaf0f46ccffdd156cc7c2d8774ecb2060d">CO_CONFIG_FLAG_OD_DYNAMIC</a>). </td></tr>
<tr><td class="paramname">nodeId</td><td>If this is first SDO channel, then "nodeId" is CANopen Node ID of this device. In all additional channels "nodeId" is ignored. </td></tr>
<tr><td class="paramname">SDOtimeoutTime_ms</td><td>Timeout time for SDO communication in milliseconds. </td></tr>
<tr><td class="paramname">CANdevRx</td><td>CAN device for SDO server reception. </td></tr>
<tr><td class="paramname">CANdevRxIdx</td><td>Index of receive buffer in the above CAN device. </td></tr>
<tr><td class="paramname">CANdevTx</td><td>CAN device for SDO server transmission. </td></tr>
<tr><td class="paramname">CANdevTxIdx</td><td>Index of transmit buffer in the above CAN device.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__driver.html#ga1cb2d3466eb0c6d267f3b5ff1a0d9532">CO_ReturnError_t</a> CO_ERROR_NO in case of success. </dd></dl>
</div>
</div>
<a id="ga3eeea49e2fb36da22dc754c62b03a423"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3eeea49e2fb36da22dc754c62b03a423">&#9670;&nbsp;</a></span>CO_SDOserver_initCallbackPre()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CO_SDOserver_initCallbackPre </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structCO__SDOserver__t.html">CO_SDOserver_t</a> *&#160;</td>
<td class="paramname"><em>SDO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void(*)(void *object)&#160;</td>
<td class="paramname"><em>pFunctSignalPre</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize SDOrx callback function. </p>
<p>Function initializes optional callback function, which should immediately start processing of <a class="el" href="group__CO__SDOserver.html#ga360bc6aa1659a5572d4d1077d787433a" title="Process SDO communication.">CO_SDOserver_process()</a> function. Callback is called after SDOserver message is received from the CAN bus or when new call without delay is necessary (SDO block transfer is in progress).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">SDO</td><td>This object. </td></tr>
<tr><td class="paramname">object</td><td>Pointer to object, which will be passed to pFunctSignalPre(). Can be NULL </td></tr>
<tr><td class="paramname">pFunctSignalPre</td><td>Pointer to the callback function. Not called if NULL. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga360bc6aa1659a5572d4d1077d787433a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga360bc6aa1659a5572d4d1077d787433a">&#9670;&nbsp;</a></span>CO_SDOserver_process()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__CO__SDOserver.html#ga7f729ab203285c7623df493916f22a73">CO_SDO_return_t</a> CO_SDOserver_process </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structCO__SDOserver__t.html">CO_SDOserver_t</a> *&#160;</td>
<td class="paramname"><em>SDO</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga449976458a084f880dc8e3d29e7eb6f5">bool_t</a>&#160;</td>
<td class="paramname"><em>NMTisPreOrOperational</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
<td class="paramname"><em>timeDifference_us</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> *&#160;</td>
<td class="paramname"><em>timerNext_us</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Process SDO communication. </p>
<p>Function must be called cyclically.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">SDO</td><td>This object. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">NMTisPreOrOperational</td><td>True if <a class="el" href="group__CO__NMT__Heartbeat.html#ga1e8c2a6c0fd4a33183503d25a7c6d744" title="Internal network state of the CANopen node.">CO_NMT_internalState_t</a> is NMT_PRE_OPERATIONAL or NMT_OPERATIONAL. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">timerNext_us</td><td>info to OS - see <a class="el" href="group__CO__CANopen.html#ga895d7fad40b60aacdac3cb0615729b5e" title="Process CANopen objects.">CO_process()</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__SDOserver.html#ga7f729ab203285c7623df493916f22a73" title="Return values from SDO server or client functions.">CO_SDO_return_t</a> </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Thu Dec 24 2020 14:30:50 for CANopenNode by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>
</div>
</body>
</html>