summaryrefslogtreecommitdiffstats
path: root/ucs2-lib/doc/html/_p__u_m__s_t_a_r_t_e_d__n_o_d_e__s_c_r_i_p_t.html
blob: 86570b0282f0941af3395d878b5f1f6331880c61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<!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 Scripting</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&#160;<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__s_c_r_i_p_t.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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</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 Scripting </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1>Introduction</h1>
<p>The idea behind the Node Scripting is to allow execution of custom scripts in remote Nodes. That is, user can specify scripts based on FBlock command syntax and run these on remote nodes by the use of Node Scripting module. <br/>
 The module is designed and intended for the use of <b>I2C</b> and <b>GPIO</b> commands only. This means that using the Scripting module for any other FBlock INIC commands (MOST, MediaLB, USB, Streaming or Connection for example) is expressly <b>prohibited</b>.</p>
<p>A script is a structure data (see below) composed of:</p>
<ul>
<li>The command based on INIC FBlock-Syntax to be transmitted</li>
<li>The expected result also based on INIC FBlock-Syntax.</li>
<li>The amount time [in milliseconds] to pause before sending the Tx command.</li>
</ul>
<div class="fragment"><div class="line"><span class="comment">/*! \brief Structure of a node-script */</span></div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>Ucs_Ns_Script_</div>
<div class="line">{<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief Specifies the pause which shall be set before sending</span></div>
<div class="line"><span class="comment">               the Tx configuration message. </span></div>
<div class="line"><span class="comment">     */</span></div>
<div class="line">    uint16_t pause;<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief Send command to be transmitted. */</span></div>
<div class="line">    <a class="code" href="struct_ucs___ns___config_msg__t.html" title="Structure of a ConfigMsg used in Node-Script.">Ucs_Ns_ConfigMsg_t</a> * send_cmd;<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief Expected result. */</span></div>
<div class="line">    <a class="code" href="struct_ucs___ns___config_msg__t.html" title="Structure of a ConfigMsg used in Node-Script.">Ucs_Ns_ConfigMsg_t</a> * exp_result;</div>
<div class="line"></div>
<div class="line">} <a class="code" href="struct_ucs___ns___script__t.html" title="Structure of a node-script used to configure a remote node.">Ucs_Ns_Script_t</a>;</div>
</div><!-- fragment --><p>A <a class="el" href="struct_ucs___ns___config_msg__t.html" title="Structure of a ConfigMsg used in Node-Script.">Ucs_Ns_ConfigMsg_t</a> message is based on INIC FBlock-Syntax and looks like this: </p>
<div class="fragment"><div class="line"><span class="comment">/*! \brief Structure of a ConfigMsg */</span></div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>Ucs_Ns_ConfigMsg_</div>
<div class="line">{<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief FBlockId. */</span></div>
<div class="line">    uint8_t FBlockId;<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief InstId. */</span></div>
<div class="line">    uint8_t InstId;<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief FunktId. */</span></div>
<div class="line">    uint16_t FunktId;<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief OpCode. */</span></div>
<div class="line">    uint8_t OpCode;<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief Data length. */</span></div>
<div class="line">    uint8_t DataLen;<span class="comment"></span></div>
<div class="line"><span class="comment">    /*! \brief Reference to the Data */</span></div>
<div class="line">    uint8_t * DataPtr;</div>
<div class="line"></div>
<div class="line">} <a class="code" href="struct_ucs___ns___config_msg__t.html" title="Structure of a ConfigMsg used in Node-Script.">Ucs_Ns_ConfigMsg_t</a>;</div>
</div><!-- fragment --><h1>Operation</h1>
<p>The user specifies the desired scripts, binds them to the target nodes and then call the function <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_ga2f2737e4d507b9c15e165918db3f1456.html#ga2f2737e4d507b9c15e165918db3f1456" title="Runs the script(s) contained in the given node.">Ucs_Ns_Run()</a> for processing. The result of the operation is reported via the result callback function <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gab0f1bc424462b8bbe0b2155d504025a5.html#gab0f1bc424462b8bbe0b2155d504025a5">Ucs_Ns_ResultCb_t</a>, which is passed by user in the arguments list of <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_ga2f2737e4d507b9c15e165918db3f1456.html#ga2f2737e4d507b9c15e165918db3f1456" title="Runs the script(s) contained in the given node.">Ucs_Ns_Run()</a>. In addition to this callback function and the referred UCS instance the function requires a reference to the Node that contains the script(s).</p>
<div class="fragment"><div class="line"><a class="code" href="group___g___u_c_s___i_n_i_t___a_n_d___s_r_v___t_y_p_e_s_ga886138f5d13e84ffaa3df5769830e1cd.html#ga886138f5d13e84ffaa3df5769830e1cd" title="Standard return codes used for synchronous response.">Ucs_Return_t</a> <a class="code" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_ga2f2737e4d507b9c15e165918db3f1456.html#ga2f2737e4d507b9c15e165918db3f1456" title="Runs the script(s) contained in the given node.">Ucs_Ns_Run</a>(<a class="code" href="group___g___u_c_s___i_n_i_t___a_n_d___s_r_v___t_y_p_e_s_ga074c04d40d00986e0c869adaec8fadda.html#ga074c04d40d00986e0c869adaec8fadda" title="UNICENS instance.">Ucs_Inst_t</a> *<span class="keyword">self</span>, <a class="code" href="struct_ucs___rm___node__t.html" title="Configuration structure of a Node.">Ucs_Rm_Node_t</a> * node_ptr, <a class="code" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gab0f1bc424462b8bbe0b2155d504025a5.html#gab0f1bc424462b8bbe0b2155d504025a5" title="Function signature used for the results of the Scripting Manager.">Ucs_Ns_ResultCb_t</a> result_fptr);</div>
</div><!-- fragment --><p>The <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_ga2f2737e4d507b9c15e165918db3f1456.html#ga2f2737e4d507b9c15e165918db3f1456" title="Runs the script(s) contained in the given node.">Ucs_Ns_Run()</a> function starts the process to transmit the script(s) contained in the provided node and then checks for the expected results (specified by customer). The Node Scripting module will start a timer of 2600ms before sending the Tx command of each script. That is, if no incoming messages match the expected result of the script during this time the result code <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gabd3ecc8ab539f3b9de3fc8045c083b60.html#ggabd3ecc8ab539f3b9de3fc8045c083b60ad0ba0f8f6ba494e7685980d490e48b72">UCS_NS_RES_ERROR</a> is returned via the <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gab0f1bc424462b8bbe0b2155d504025a5.html#gab0f1bc424462b8bbe0b2155d504025a5">Ucs_Ns_ResultCb_t</a> user callback function. This error code is also get when the script module couldn't perform the device synchronization of the remote device (this can be read in the detailed error messages, if enabled. See below). Otherwise, if an incoming message matches the expected result, <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gabd3ecc8ab539f3b9de3fc8045c083b60.html#ggabd3ecc8ab539f3b9de3fc8045c083b60af22bd910a1d7e2271b5b3cddf5892962">UCS_NS_RES_SUCCESS</a> is returned.</p>
<p>The <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_ga2f2737e4d507b9c15e165918db3f1456.html#ga2f2737e4d507b9c15e165918db3f1456" title="Runs the script(s) contained in the given node.">Ucs_Ns_Run()</a> function will return <a class="el" href="group___g___u_c_s___i_n_i_t___a_n_d___s_r_v___t_y_p_e_s_ga886138f5d13e84ffaa3df5769830e1cd.html#gga886138f5d13e84ffaa3df5769830e1cdad4a30091202638c890abbdb682ca4fe5">UCS_RET_ERR_API_LOCKED</a> when attempting to execute a script in a node that is currently busy with other(s) previous script(s). The <a class="el" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_ga2f2737e4d507b9c15e165918db3f1456.html#ga2f2737e4d507b9c15e165918db3f1456" title="Runs the script(s) contained in the given node.">Ucs_Ns_Run()</a> function is namely locked for a Node when handling script(s) on this node and unlocked after reporting the result of the operation. However processing scripts can be executed on different nodes in parallel.</p>
<p>The detailed error messages can be read when enabling the error trace output in <code>ucs_cfg.h</code> file as shown below.</p>
<div class="fragment"><div class="line"><span class="comment">/* File: ucs_cfg.h */</span></div>
<div class="line"><span class="comment">/*------------------------------------------------------------------------------------------------*/</span></div>
<div class="line"><span class="comment">/* Tracing &amp; Debugging                                                                            */</span></div>
<div class="line"><span class="comment">/*------------------------------------------------------------------------------------------------*/</span></div>
<div class="line"><span class="preprocessor"># define UCS_TR_ERROR     App_TraceError</span></div>
<div class="line"><span class="preprocessor"></span></div>
<div class="line"><span class="keyword">extern</span> <span class="keywordtype">void</span> App_TraceError(<span class="keywordtype">void</span> *ucs_user_ptr, <span class="keyword">const</span> <span class="keywordtype">char</span> module_str[], <span class="keyword">const</span> <span class="keywordtype">char</span> entry_str[], </div>
<div class="line">                           uint16_t vargs_cnt, ...); </div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="comment">/* File: app_trace.c */</span></div>
<div class="line"><span class="keywordtype">void</span> App_TraceError(<span class="keywordtype">void</span> *ucs_user_ptr, <span class="keyword">const</span> <span class="keywordtype">char</span> module_str[], <span class="keyword">const</span> <span class="keywordtype">char</span> entry_str[], </div>
<div class="line">                    uint16_t vargs_cnt, ...)</div>
<div class="line">{</div>
<div class="line">    <span class="keywordflow">if</span> (file_ != NULL)</div>
<div class="line">    {</div>
<div class="line">        <span class="keywordtype">char</span> outbuf[256];</div>
<div class="line">        va_list argptr;</div>
<div class="line">        uint16_t timestamp = (uint16_t)timeGetTime() - startup_time;</div>
<div class="line">        va_start(argptr, vargs_cnt);</div>
<div class="line">        (void)vsprintf(outbuf, entry_str, argptr);</div>
<div class="line">        va_end(argptr);</div>
<div class="line">        (void)fprintf(file_, <span class="stringliteral">&quot;%5u | [%u] | Error  | %s | %s\n&quot;</span>, timestamp, ucs_user_ptr, module_str, outbuf);</div>
<div class="line">        (void)fflush(file_);</div>
<div class="line">    }</div>
<div class="line">}</div>
</div><!-- fragment --><h1>Example</h1>
<p>The example below outlines the execution of a script within a node with address 0x200. This example is inserted as a guide and may not contain all of the necessary details and information.</p>
<div class="fragment"><div class="line"><span class="comment">/* Flag that checks whether node with address 0x200 is discovered by Node Discovering */</span></div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">bool</span> node200_discovered = <span class="keyword">false</span>;</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Forward declaration of result callback function */</span></div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> App_OnScriptingResult(uint16_t node_address, <a class="code" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gabd3ecc8ab539f3b9de3fc8045c083b60.html#gabd3ecc8ab539f3b9de3fc8045c083b60" title="Result codes of the Node Script Management.">Ucs_Ns_ResultCode_t</a> result, <span class="keywordtype">void</span> *user_ptr);</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Configuration Msg specification */</span></div>
<div class="line"><span class="keyword">static</span> uint8_t  tx_data []  = { 0x00, 0x40, 0x01, 0x01 };</div>
<div class="line"><span class="keyword">static</span> uint8_t  rx_data []  = { 0x0F, 0x00 };</div>
<div class="line"><span class="keyword">static</span> <a class="code" href="struct_ucs___ns___config_msg__t.html" title="Structure of a ConfigMsg used in Node-Script.">Ucs_Ns_ConfigMsg_t</a> tx_msg = { 0x00, 0x00, 0x6C1, 0x2,  4U, &amp;tx_data };</div>
<div class="line"><span class="keyword">static</span> <a class="code" href="struct_ucs___ns___config_msg__t.html" title="Structure of a ConfigMsg used in Node-Script.">Ucs_Ns_ConfigMsg_t</a> rx_msg = { 0x00, 0x01, 0x6C1, 0xC,  2U, &amp;rx_data };</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Scripts specification */</span></div>
<div class="line"><span class="keyword">static</span> <a class="code" href="struct_ucs___ns___script__t.html" title="Structure of a node-script used to configure a remote node.">Ucs_Ns_Script_t</a>  script_x = { 100U, &amp;tx_msg, &amp;rx_msg };</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Signature specification */</span></div>
<div class="line"><a class="code" 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> sig_200  = { 200U };</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Nodes objects Specification */</span></div>
<div class="line"><span class="keyword">static</span> <a class="code" href="struct_ucs___rm___node__t.html" title="Configuration structure of a Node.">Ucs_Rm_Node_t</a> node_200 = { &amp;sig_200, &amp;script_x, 1U, 0U };</div>
<div class="line"></div>
<div class="line"><span class="comment">/* Main function */</span></div>
<div class="line"><span class="keywordtype">void</span> main(uint8_t argc, <span class="keywordtype">char</span> *argv[])</div>
<div class="line">{</div>
<div class="line"></div>
<div class="line">    <span class="comment">/* ... */</span></div>
<div class="line"></div>
<div class="line">    <span class="keywordflow">if</span> (node200_discovered)</div>
<div class="line">    {</div>
<div class="line">        (void)<a class="code" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_ga2f2737e4d507b9c15e165918db3f1456.html#ga2f2737e4d507b9c15e165918db3f1456" title="Runs the script(s) contained in the given node.">Ucs_Ns_Run</a>(ucs_inst_ptr, &amp;node_200, &amp;App_OnScriptingResult);</div>
<div class="line">    }</div>
<div class="line"></div>
<div class="line">    <span class="comment">/* ... */</span></div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="comment">/* The result callback function */</span></div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> App_OnScriptingResult(<a class="code" href="struct_ucs___rm___node__t.html" title="Configuration structure of a Node.">Ucs_Rm_Node_t</a> * node_ptr, <a class="code" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gabd3ecc8ab539f3b9de3fc8045c083b60.html#gabd3ecc8ab539f3b9de3fc8045c083b60" title="Result codes of the Node Script Management.">Ucs_Ns_ResultCode_t</a> result, <span class="keywordtype">void</span> *user_ptr)</div>
<div class="line">{</div>
<div class="line">     <span class="keywordflow">switch</span> (result)</div>
<div class="line">     {</div>
<div class="line">         <span class="keywordflow">case</span> <a class="code" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gabd3ecc8ab539f3b9de3fc8045c083b60.html#ggabd3ecc8ab539f3b9de3fc8045c083b60af22bd910a1d7e2271b5b3cddf5892962" title="Transmission of script(s) was successful.">UCS_NS_RES_SUCCESS</a>:</div>
<div class="line">           <span class="comment">/* Node can be set to &quot;Available&quot; for example */</span></div>
<div class="line">           <a class="code" href="group___g___u_c_s___r_o_u_t_i_n_g_ga57ca34a488f06d57f2219be23fa0259f.html#ga57ca34a488f06d57f2219be23fa0259f" title="Sets the availability attribute (available or not available) of the given node and triggers the routi...">Ucs_Rm_SetNodeAvailable</a>(ucs_inst_ptr, node_ptr, <span class="keyword">true</span>);</div>
<div class="line">           <span class="keywordflow">break</span>;</div>
<div class="line"></div>
<div class="line">         <span class="keywordflow">case</span> <a class="code" href="group___g___u_c_s___s_c_r_i_p_t_i_n_g_gabd3ecc8ab539f3b9de3fc8045c083b60.html#ggabd3ecc8ab539f3b9de3fc8045c083b60ad0ba0f8f6ba494e7685980d490e48b72" title="Transmission of script(s) failed.">UCS_NS_RES_ERROR</a>:</div>
<div class="line">         <span class="keywordflow">default</span>:</div>
<div class="line">           <span class="comment">/* Do whatever is necessary here */</span></div>
<div class="line">           <span class="keywordflow">break</span>;</div>
<div class="line">     }</div>
<div class="line">}</div>
</div><!-- fragment --> </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">&copy; 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>