diff options
Diffstat (limited to 'ucs2-lib/doc/html/_p__u_m__s_t_a_r_t_e_d__n_o_d_e__d_i_s.html')
-rw-r--r-- | ucs2-lib/doc/html/_p__u_m__s_t_a_r_t_e_d__n_o_d_e__d_i_s.html | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/ucs2-lib/doc/html/_p__u_m__s_t_a_r_t_e_d__n_o_d_e__d_i_s.html b/ucs2-lib/doc/html/_p__u_m__s_t_a_r_t_e_d__n_o_d_e__d_i_s.html new file mode 100644 index 0000000..239c315 --- /dev/null +++ b/ucs2-lib/doc/html/_p__u_m__s_t_a_r_t_e_d__n_o_d_e__d_i_s.html @@ -0,0 +1,158 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>UNICENS: Node Discovery</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link rel="shortcut icon" type="image/x-icon" href="favicon.ico"> +<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="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="style_html.css" rel="stylesheet" type="text/css" /> +<link href="inic.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div class="GlobalWrapper"> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td><a href="index.html"><img alt="Logo" src="logo.png"/></a></td> + <td> + <div id="projectname">UNICENS <span id="projectnumber">V2.1.0-3491</span></div> + <div id="projectbrief">User Manual and API Reference</div> + <div id="searchbox"> <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> +</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</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"> +$(document).ready(function(){initNavTree('_p__u_m__s_t_a_r_t_e_d__n_o_d_e__d_i_s.html','');}); +</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)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Pages</a></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="headertitle"> +<div class="title">Node Discovery </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><h1>Introduction</h1> +<p>The idea behind the Node Discovery service is that nodes are allowed to use the bus only if they meet certain requirements. A central instance detects all nodes and checks if they fit to the intended system. Nodes passing the check get an explicit "invitation" to join the system.</p> +<h1>Initialization</h1> +<p>The application provides the two callback functions of the Node Discovery service.</p> +<div class="fragment"><div class="line"><a class="code" href="struct_ucs___init_data__t.html" title="UNICENS initialization structure used by function Ucs_Init().">Ucs_InitData_t</a> init_data;</div> +<div class="line"></div> +<div class="line"><span class="comment">/* Node Discovery Section */</span> </div> +<div class="line">init_data.<a class="code" href="struct_ucs___init_data__t_a97b13c03602cc54884ae1765c518bd7b.html#a97b13c03602cc54884ae1765c518bd7b" title="The initialization data of the Node Discovery.">nd</a>.<a class="code" href="struct_ucs___nd___init_data__t_a98b9ccad2c6c5fa2edaf472151ee853c.html#a98b9ccad2c6c5fa2edaf472151ee853c" title="Callback function reporting the results of the Node Discovery service.">report_fptr</a> = &App_OnNodeDiscoveryResult;</div> +<div class="line">init_data.<a class="code" href="struct_ucs___init_data__t_a97b13c03602cc54884ae1765c518bd7b.html#a97b13c03602cc54884ae1765c518bd7b" title="The initialization data of the Node Discovery.">nd</a>.<a class="code" href="struct_ucs___nd___init_data__t_ab9bc02a84c7daeff234344541d41be62.html#ab9bc02a84c7daeff234344541d41be62" title="Callback function asking for evaluation of the found signature.">eval_fptr</a> = &App_OnNodeDiscoveryEval;</div> +</div><!-- fragment --><table class="mns_ic_table"> +<tr> +<td id="mns_ic_started"> </td><td>See also <em>Getting Started</em>, section <a class="el" href="_p__u_m__s_t_a_r_t_e_d__i_n_i_t.html">Initialization</a>. </td></tr> +</table> +<dl class="section note"><dt>Note</dt><dd>The function names App_OnNodeDiscoveryResult() and App_OnNodeDiscoveryEval() are just example names. Nevertheless they will be used in the description below to designate the respective functions.</dd></dl> +<h1>Operation</h1> +<p>The application maintains at least two lists:</p> +<dl> +<dt><em>set_list</em> </dt> +<dd><p class="startdd">Contains the signatures of the nodes the system shall contain.</p> +<p class="enddd"></p> +</dd> +<dt><em>device_list</em> </dt> +<dd>Contains the signatures of the nodes detected in the system. </dd> +</dl> +<p>For debuggting purposes it may be useful to have a third list:</p> +<dl> +<dt><em>unknown_list</em> </dt> +<dd><p class="startdd">Signatures of the nodes which are detected but are not part of the <em>set_list</em>.</p> +<p class="enddd"></p> +</dd> +</dl> +<p>After startup all nodes are initialized and not part of the system. The application starts the Node Discovery service by calling <a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y_ga50a5b00d5bbd1ad324478509dc524eec.html#ga50a5b00d5bbd1ad324478509dc524eec" title="Starts the Node Discovery service.">Ucs_Nd_Start()</a>. It asks every node for its signature (<a class="el" href="struct_ucs___signature__t.html" title="This structure holds the signature of the Hello, Welcome and Signature messages. It supports the sign...">Ucs_Signature_t</a>). Each detected node will be presented to the application via the callback function App_OnNodeDiscoveryEval(). In this function the application decides how the Node Discovery service shall proceed with the node.</p> +<p>The evaluation has to follow these rules:</p> +<ul> +<li>If the node is not part of the <em>set_list</em>, it is regarded as unknown (<a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y___t_y_p_e_s_gae1f89dbd75e3d76917273450df37ff66.html#ggae1f89dbd75e3d76917273450df37ff66a4ed7307250366668604925bf3650be4c">UCS_ND_CHK_UNKNOWN</a>) and will be ignored.</li> +<li>If the node is part of the <em>set_list</em> and is not yet in the <em>device_list</em>, the Node Discovery Service shall try to add the node to network (<a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y___t_y_p_e_s_gae1f89dbd75e3d76917273450df37ff66.html#ggae1f89dbd75e3d76917273450df37ff66a0c15fbb8aa9ee8dbf0362b9e9a8b6942">UCS_ND_CHK_WELCOME</a>).</li> +<li>If the node is already part of the <em>device_list</em>, there are two possibilities: the node in the <em>device_list</em> experienced a reset or there are two nodes with the same signature. Evaluation result is <a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y___t_y_p_e_s_gae1f89dbd75e3d76917273450df37ff66.html#ggae1f89dbd75e3d76917273450df37ff66acdbc82cdd701e67cdd7520172767ba75">UCS_ND_CHK_UNIQUE</a>. The Node Discovery service will perform further tests.</li> +</ul> +<p>The result of the evaluation is passed as the return value of App_OnNodeDiscoveryEval() (for possible values see <a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y___t_y_p_e_s_gae1f89dbd75e3d76917273450df37ff66.html#gae1f89dbd75e3d76917273450df37ff66">Ucs_Nd_CheckResult_t</a>).</p> +<p>When the Node Discovery process for a certain node is finished, the callback function App_OnNodeDiscoveryResult() is called. Its parameter <b>code</b> informs the application about the result of the node (for possible values see <a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y___t_y_p_e_s_ga6736f9abd905dafe99d1337ac672f94e.html#ga6736f9abd905dafe99d1337ac672f94e">Ucs_Nd_ResCode_t</a>).</p> +<p>The Node Discovery service asks periodically for new nodes. So it will detect nodes which start up slowly and nodes which experienced a reset.</p> +<p>App_OnNodeDiscoveryResult() informs also about general events like NetOff, unexpected error and stop of the Node Discovery service by application command. In these cases the parameter <b>signature</b> will be NULL.</p> +<p>If a Netoff event happens, the Node Discovery service stops. It restarts automatically if it detects a NetOn event.</p> +<p>The application can stop the Node Discovery service via <a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y_ga637e441520f7b203e551274f17febfb6.html#ga637e441520f7b203e551274f17febfb6" title="Stops the Node Discovery service.">Ucs_Nd_Stop()</a>.</p> +<p>It is possible to reset all nodes to the initial state they had after startup by calling <a class="el" href="group___g___u_c_s___n_o_d_e___d_i_s_c_o_v_e_r_y_gabab6c431e235fe0211f5f1525f9cff2e.html#gabab6c431e235fe0211f5f1525f9cff2e" title="Initializes all nodes.">Ucs_Nd_InitAll()</a>. </p> +</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">© 2017 Microchip Technology Inc. All rights reserved. <a href="http://www.microchip.com" target="_blank">www.microchip.com</a></li> + </ul> +</div> +</body> +<!-- +Generated on Mon Apr 3 2017 13:52:59 for UNICENS by +Doxygen 1.8.2 +--> +<script language="javascript"> +<!-- +$('#MSearchResults').wrap('<div style="position: absolute; margin-left: 444px;"></div>'); +--> +</script> +</html> |