1 <!-- HTML header for doxygen 1.9.6-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=11"/>
7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
8 <title>CMSIS-Driver: VIO</title>
9 <link href="doxygen.css" rel="stylesheet" type="text/css" />
10 <script type="text/javascript" src="jquery.js"></script>
11 <script type="text/javascript" src="dynsections.js"></script>
12 <script type="text/javascript" src="tabs.js"></script>
13 <script type="text/javascript" src="footer.js"></script>
14 <script type="text/javascript" src="navtree.js"></script>
15 <link href="navtree.css" rel="stylesheet" type="text/css"/>
16 <script type="text/javascript" src="resize.js"></script>
17 <script type="text/javascript" src="navtreedata.js"></script>
18 <script type="text/javascript" src="navtree.js"></script>
19 <link href="search/search.css" rel="stylesheet" type="text/css"/>
20 <script type="text/javascript" src="search/searchdata.js"></script>
21 <script type="text/javascript" src="search/search.js"></script>
22 <script type="text/javascript">
23 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
24 $(document).ready(function() { init_search(); });
27 <script type="text/javascript" src="darkmode_toggle.js"></script>
28 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
29 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
30 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
31 <link href="extra_tabs.css" rel="stylesheet" type="text/css"/>
32 <link href="version.css" rel="stylesheet" type="text/css"/>
33 <script type="text/javascript" src="../../version.js"></script>
36 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
38 <table cellspacing="0" cellpadding="0">
40 <tr style="height: 55px;">
41 <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
42 <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
43 <div id="projectname">CMSIS-Driver
44  <span id="projectnumber"><script type="text/javascript">
46 writeHeader.call(this);
47 writeVersionDropdown.call(this, "CMSIS-Driver");
52 <div id="projectbrief">Peripheral Interface for Middleware and Application Code</div>
54 <td> <div id="MSearchBox" class="MSearchBoxInactive">
56 <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span>
57 <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
58 onfocus="searchBox.OnSearchFieldFocus(true)"
59 onblur="searchBox.OnSearchFieldFocus(false)"
60 onkeyup="searchBox.OnSearchFieldChange(event)"/>
61 </span><span class="right">
62 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
66 <!--END !PROJECT_NAME-->
71 <!-- end header part -->
72 <div id="CMSISnav" class="tabs1">
74 <script type="text/javascript">
75 writeComponentTabs.call(this);
79 <script type="text/javascript">
80 writeSubComponentTabs.call(this);
82 <!-- Generated by Doxygen 1.9.6 -->
83 <script type="text/javascript">
84 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
85 var searchBox = new SearchBox("searchBox", "search/",'.html');
89 <div id="side-nav" class="ui-resizable side-nav-resizable">
91 <div id="nav-tree-contents">
92 <div id="nav-sync" class="sync"></div>
95 <div id="splitbar" style="-moz-user-select:none;"
96 class="ui-resizable-handle">
99 <script type="text/javascript">
100 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
101 $(document).ready(function(){initNavTree('group__vio__interface__gr.html',''); initResizable(); });
104 <div id="doc-content">
105 <!-- window showing the filter options -->
106 <div id="MSearchSelectWindow"
107 onmouseover="return searchBox.OnSearchSelectShow()"
108 onmouseout="return searchBox.OnSearchSelectHide()"
109 onkeydown="return searchBox.OnSearchSelectKey(event)">
112 <!-- iframe showing the search results (closed by default) -->
113 <div id="MSearchResultsWindow">
114 <div id="MSearchResults">
117 <div id="SRResults"></div>
118 <div class="SRStatus" id="Loading">Loading...</div>
119 <div class="SRStatus" id="Searching">Searching...</div>
120 <div class="SRStatus" id="NoMatches">No Matches</div>
127 <div class="summary">
128 <a href="#groups">Content</a> |
129 <a href="#func-members">Functions</a> </div>
130 <div class="headertitle"><div class="title">VIO</div></div>
132 <div class="contents">
134 <p>API for Virtual I/O (VIO) (cmsis_vio.h)
135 <a href="#details">More...</a></p>
136 <table class="memberdecls">
137 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
138 Content</h2></td></tr>
139 <tr class="memitem:group__vioSignals__gr"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vioSignals__gr.html">Signals</a></td></tr>
140 <tr class="memdesc:group__vioSignals__gr"><td class="mdescLeft"> </td><td class="mdescRight">Signal related defines. <br /></td></tr>
141 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
142 <tr class="memitem:group__vioValueIDs__gr"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vioValueIDs__gr.html">Value IDs</a></td></tr>
143 <tr class="memdesc:group__vioValueIDs__gr"><td class="mdescLeft"> </td><td class="mdescRight">Value Identifier related defines. <br /></td></tr>
144 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
145 </table><table class="memberdecls">
146 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
147 Functions</h2></td></tr>
148 <tr class="memitem:ga84e05ae351226f41d461dbe982b2372f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a> (void)</td></tr>
149 <tr class="memdesc:ga84e05ae351226f41d461dbe982b2372f"><td class="mdescLeft"> </td><td class="mdescRight">Initialize test input, output. <br /></td></tr>
150 <tr class="separator:ga84e05ae351226f41d461dbe982b2372f"><td class="memSeparator" colspan="2"> </td></tr>
151 <tr class="memitem:ga1ded6ad7451e43d94f00e9efaddfe621"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vio__interface__gr.html#ga1ded6ad7451e43d94f00e9efaddfe621">vioSetSignal</a> (uint32_t mask, uint32_t signal)</td></tr>
152 <tr class="memdesc:ga1ded6ad7451e43d94f00e9efaddfe621"><td class="mdescLeft"> </td><td class="mdescRight">Set signal output. <br /></td></tr>
153 <tr class="separator:ga1ded6ad7451e43d94f00e9efaddfe621"><td class="memSeparator" colspan="2"> </td></tr>
154 <tr class="memitem:ga852f94060d9bef92b193e9992a1c2016"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vio__interface__gr.html#ga852f94060d9bef92b193e9992a1c2016">vioGetSignal</a> (uint32_t mask)</td></tr>
155 <tr class="memdesc:ga852f94060d9bef92b193e9992a1c2016"><td class="mdescLeft"> </td><td class="mdescRight">Get signal input. <br /></td></tr>
156 <tr class="separator:ga852f94060d9bef92b193e9992a1c2016"><td class="memSeparator" colspan="2"> </td></tr>
157 <tr class="memitem:ga5d2572868a34ccfdb10d32adce8f6102"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vio__interface__gr.html#ga5d2572868a34ccfdb10d32adce8f6102">vioSetValue</a> (uint32_t id, int32_t value)</td></tr>
158 <tr class="memdesc:ga5d2572868a34ccfdb10d32adce8f6102"><td class="mdescLeft"> </td><td class="mdescRight">Set value output. <br /></td></tr>
159 <tr class="separator:ga5d2572868a34ccfdb10d32adce8f6102"><td class="memSeparator" colspan="2"> </td></tr>
160 <tr class="memitem:ga637e596f4309323b1e4e1da6200d4717"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__vio__interface__gr.html#ga637e596f4309323b1e4e1da6200d4717">vioGetValue</a> (uint32_t id)</td></tr>
161 <tr class="memdesc:ga637e596f4309323b1e4e1da6200d4717"><td class="mdescLeft"> </td><td class="mdescRight">Get value input. <br /></td></tr>
162 <tr class="separator:ga637e596f4309323b1e4e1da6200d4717"><td class="memSeparator" colspan="2"> </td></tr>
164 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
165 <p>API for Virtual I/O (VIO) (cmsis_vio.h) </p>
166 <p>The VIO software component is a virtual I/O abstraction for peripherals that are typically used in example projects. It enables developers to move from an evaluation kit to custom hardware and helps to scale project examples at large to many development boards:</p>
168 <img src="vioRationale.png" alt=""/>
169 <div class="caption">
170 Virtual I/O provides a generic API for examples and testing</div></div>
171 <p><b>VIO API</b></p>
172 <p>The following header file defines the Application Programming Interface (API) for VIO:</p><ul>
173 <li><b>cmsis_vio.h</b> : API for VIO</li>
175 <p><b>VIO User Code Templates</b></p>
176 <p>The VIO software component contains two user code templates with different purposes:</p><ul>
177 <li>VIO:Custom: This file is an empty stub with all functions that are defined in the header file that can be used to implement the VIO layer for the hardware that is used in the application.</li>
178 <li>VIO:Virtual: This file uses a fixed memory location to emulate the VIO functionality and can be used off-the-shelf.</li>
180 <p><b>VIO Memory Location Structure</b></p>
181 <p>For testing purposes, it is required to have fixed memory locations that are used to read/store values. In the VIO:Virtual template file (<b>vio.c</b>), an exemplary implementation is shown:</p>
182 <div class="fragment"><div class="line"><span class="comment">// Input, output variables</span></div>
183 <div class="line">__USED uint32_t vioSignalIn; <span class="comment">// Memory for incoming signal</span></div>
184 <div class="line">__USED uint32_t vioSignalOut; <span class="comment">// Memory for outgoing signal</span></div>
185 <div class="line">__USED int32_t vioValue[VIO_VALUE_NUM]; <span class="comment">// Memory for value used in vioGetValue/vioSetValue</span></div>
186 </div><!-- fragment --><p>Use these memory locations to monitor or set the variables as required in the application.</p>
187 <p>Two defines are available that help to disconnect the actual peripherals and enable virtual I/Os: <code>CMSIS_VIN</code> and <code>CMSIS_VOUT</code>. They help to write code that can be used in testing environments without real hardware access. The following implementation example shows such code:</p>
188 <p><b>Code Example (VIO Implementation)</b> </p><div class="fragment"><div class="line"><span class="comment">// Initialize test input, output.</span></div>
189 <div class="line"><span class="keywordtype">void</span> <a class="code hl_function" href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a> (<span class="keywordtype">void</span>) {</div>
190 <div class="line"><span class="preprocessor">#if !defined CMSIS_VIN</span></div>
191 <div class="line"><span class="comment">// Add user variables here:</span></div>
192 <div class="line"> </div>
193 <div class="line"><span class="preprocessor">#endif</span></div>
194 <div class="line"><span class="preprocessor">#if !defined CMSIS_VOUT</span></div>
195 <div class="line"><span class="comment">// Add user variables here:</span></div>
196 <div class="line"> </div>
197 <div class="line"><span class="preprocessor">#endif</span></div>
198 <div class="line"> </div>
199 <div class="line"> vioSignalIn = 0U;</div>
200 <div class="line"> vioSignalOut = 0U;</div>
201 <div class="line"> </div>
202 <div class="line"> memset(vioValue, 0, <span class="keyword">sizeof</span>(vioValue));</div>
203 <div class="line"> </div>
204 <div class="line"><span class="preprocessor">#if !defined CMSIS_VOUT</span></div>
205 <div class="line"><span class="comment">// Add user code here:</span></div>
206 <div class="line"><span class="comment">// <code vioInit output></span></div>
207 <div class="line"> </div>
208 <div class="line"> BSP_LED_Init(LED_BLUE);</div>
209 <div class="line"> BSP_LED_Init(LED_RED);</div>
210 <div class="line"> BSP_LED_Init(LED_GREEN);</div>
211 <div class="line"><span class="comment">// </code></span></div>
212 <div class="line"><span class="preprocessor">#endif</span></div>
213 <div class="line"> </div>
214 <div class="line"><span class="preprocessor">#if !defined CMSIS_VIN</span></div>
215 <div class="line"><span class="comment">// Add user code here:</span></div>
216 <div class="line"><span class="comment">// <code vioInit input></span></div>
217 <div class="line"> </div>
218 <div class="line"> BSP_PB_Init(BUTTON_USER, BUTTON_MODE_GPIO);</div>
219 <div class="line"><span class="comment">// </code></span></div>
220 <div class="line"><span class="preprocessor">#endif</span></div>
221 <div class="line"> </div>
222 <div class="line"> <span class="keywordflow">return</span>;</div>
223 <div class="line">}</div>
224 <div class="ttc" id="agroup__vio__interface__gr_html_ga84e05ae351226f41d461dbe982b2372f"><div class="ttname"><a href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a></div><div class="ttdeci">void vioInit(void)</div><div class="ttdoc">Initialize test input, output.</div><div class="ttdef"><b>Definition:</b> VIO.txt:135</div></div>
225 </div><!-- fragment --><p><b>Memory display in IDEs</b></p>
226 <p>Arm Keil MDK uses the provided SCVD file to display the VIO signals in Component Viewer:</p>
228 <img src="vioComponentViewer.png" alt=""/>
230 <h2 class="groupheader">Function Documentation</h2>
231 <a id="ga84e05ae351226f41d461dbe982b2372f" name="ga84e05ae351226f41d461dbe982b2372f"></a>
232 <h2 class="memtitle"><span class="permalink"><a href="#ga84e05ae351226f41d461dbe982b2372f">◆ </a></span>vioInit()</h2>
234 <div class="memitem">
235 <div class="memproto">
236 <table class="memname">
238 <td class="memname">void vioInit </td>
240 <td class="paramtype">void </td>
241 <td class="paramname"></td><td>)</td>
245 </div><div class="memdoc">
247 <p>Initialize test input, output. </p>
248 <p>The function <b>vioInit</b> initializes the VIO interface. Use it to initialize any connected hardware that is used to map VIO signals.</p>
249 <p><b>Code</b> <b>Example:</b> </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__vio_8h.html">cmsis_vio.h</a>"</span> <span class="comment">// ::CMSIS Driver:VIO</span></div>
250 <div class="line"> </div>
251 <div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
252 <div class="line"> </div>
253 <div class="line"> <span class="comment">// System Initialization</span></div>
254 <div class="line"> SystemCoreClockUpdate();</div>
255 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a>();</div>
256 <div class="line"> <span class="comment">// ...</span></div>
257 <div class="line"> </div>
258 <div class="line">}</div>
259 <div class="ttc" id="acmsis__vio_8h_html"><div class="ttname"><a href="cmsis__vio_8h.html">cmsis_vio.h</a></div></div>
260 </div><!-- fragment -->
263 <a id="ga1ded6ad7451e43d94f00e9efaddfe621" name="ga1ded6ad7451e43d94f00e9efaddfe621"></a>
264 <h2 class="memtitle"><span class="permalink"><a href="#ga1ded6ad7451e43d94f00e9efaddfe621">◆ </a></span>vioSetSignal()</h2>
266 <div class="memitem">
267 <div class="memproto">
268 <table class="memname">
270 <td class="memname">void vioSetSignal </td>
272 <td class="paramtype">uint32_t </td>
273 <td class="paramname"><em>mask</em>, </td>
276 <td class="paramkey"></td>
278 <td class="paramtype">uint32_t </td>
279 <td class="paramname"><em>signal</em> </td>
287 </div><div class="memdoc">
289 <p>Set signal output. </p>
290 <dl class="params"><dt>Parameters</dt><dd>
291 <table class="params">
292 <tr><td class="paramdir">[in]</td><td class="paramname">mask</td><td>bit mask of signals to set. </td></tr>
293 <tr><td class="paramdir">[in]</td><td class="paramname">signal</td><td>signal value to set.</td></tr>
297 <p>The function <b>vioSetSignal</b> set a <em>signal</em> to an output specified by <em>mask</em>. Use this function to map VIOs to actual hardware for displaying signals on a target board.</p>
298 <p>Refer to <a class="el" href="group__vioSignals__gr.html">Signals</a> for information about the possible <em>mask</em> and <em>signal</em> values.</p>
299 <p><b>Code</b> <b>Example:</b> </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__vio_8h.html">cmsis_vio.h</a>"</span> <span class="comment">// ::CMSIS Driver:VIO</span></div>
300 <div class="line"> </div>
301 <div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
302 <div class="line"> </div>
303 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a>();</div>
304 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga1ded6ad7451e43d94f00e9efaddfe621">vioSetSignal</a>(<a class="code hl_define" href="group__vioSignals__gr.html#ga026dee2deae0bea0ff4891d5f5f11c90">vioLED0</a>, <a class="code hl_define" href="group__vioSignals__gr.html#gae909aa203834183f9f10f267b1dc7dc8">vioLEDon</a>);</div>
305 <div class="line"> <span class="comment">// ...</span></div>
306 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga1ded6ad7451e43d94f00e9efaddfe621">vioSetSignal</a>(<a class="code hl_define" href="group__vioSignals__gr.html#ga026dee2deae0bea0ff4891d5f5f11c90">vioLED0</a>, <a class="code hl_define" href="group__vioSignals__gr.html#gac47779d89b1e40ea5254bef26accf0ee">vioLEDoff</a>);</div>
307 <div class="line">}</div>
308 <div class="ttc" id="agroup__vioSignals__gr_html_ga026dee2deae0bea0ff4891d5f5f11c90"><div class="ttname"><a href="group__vioSignals__gr.html#ga026dee2deae0bea0ff4891d5f5f11c90">vioLED0</a></div><div class="ttdeci">#define vioLED0</div><div class="ttdoc">vioSetSignal mask parameter: LED 0 (for 3-color: red)</div></div>
309 <div class="ttc" id="agroup__vioSignals__gr_html_gac47779d89b1e40ea5254bef26accf0ee"><div class="ttname"><a href="group__vioSignals__gr.html#gac47779d89b1e40ea5254bef26accf0ee">vioLEDoff</a></div><div class="ttdeci">#define vioLEDoff</div><div class="ttdoc">vioSetSignal signal parameter: pattern to turn any LED off</div></div>
310 <div class="ttc" id="agroup__vioSignals__gr_html_gae909aa203834183f9f10f267b1dc7dc8"><div class="ttname"><a href="group__vioSignals__gr.html#gae909aa203834183f9f10f267b1dc7dc8">vioLEDon</a></div><div class="ttdeci">#define vioLEDon</div><div class="ttdoc">vioSetSignal signal parameter: pattern to turn any LED on</div></div>
311 <div class="ttc" id="agroup__vio__interface__gr_html_ga1ded6ad7451e43d94f00e9efaddfe621"><div class="ttname"><a href="group__vio__interface__gr.html#ga1ded6ad7451e43d94f00e9efaddfe621">vioSetSignal</a></div><div class="ttdeci">void vioSetSignal(uint32_t mask, uint32_t signal)</div><div class="ttdoc">Set signal output.</div><div class="ttdef"><b>Definition:</b> VIO.txt:157</div></div>
312 </div><!-- fragment -->
315 <a id="ga852f94060d9bef92b193e9992a1c2016" name="ga852f94060d9bef92b193e9992a1c2016"></a>
316 <h2 class="memtitle"><span class="permalink"><a href="#ga852f94060d9bef92b193e9992a1c2016">◆ </a></span>vioGetSignal()</h2>
318 <div class="memitem">
319 <div class="memproto">
320 <table class="memname">
322 <td class="memname">uint32_t vioGetSignal </td>
324 <td class="paramtype">uint32_t </td>
325 <td class="paramname"><em>mask</em></td><td>)</td>
329 </div><div class="memdoc">
331 <p>Get signal input. </p>
332 <dl class="params"><dt>Parameters</dt><dd>
333 <table class="params">
334 <tr><td class="paramdir">[in]</td><td class="paramname">mask</td><td>bit mask of signals to read. </td></tr>
338 <dl class="section return"><dt>Returns</dt><dd>signal value.</dd></dl>
339 <p>The function <b>vioGetSignal</b> retrieves a signal from an input identified by <em>mask</em>. Use this function to read data from any input that is provided.</p>
340 <p>Refer to <a class="el" href="group__vioSignals__gr.html">Signals</a> for information about the possible <em>mask</em> values.</p>
341 <p><b>Code</b> <b>Example:</b> </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__vio_8h.html">cmsis_vio.h</a>"</span> <span class="comment">// ::CMSIS Driver:VIO</span></div>
342 <div class="line"> </div>
343 <div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
344 <div class="line"> uint32_t state;</div>
345 <div class="line"> uint32_t last = 0U;</div>
346 <div class="line"> </div>
347 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a>();</div>
348 <div class="line"> <span class="keywordflow">for</span> (;;) {</div>
349 <div class="line"> state = (<a class="code hl_function" href="group__vio__interface__gr.html#ga852f94060d9bef92b193e9992a1c2016">vioGetSignal</a> (<a class="code hl_define" href="group__vioSignals__gr.html#ga642440766bc00069da04379bc1f1598d">vioBUTTON0</a>)); <span class="comment">// Get pressed button state</span></div>
350 <div class="line"> <span class="keywordflow">if</span> (state != last){</div>
351 <div class="line"> <span class="keywordflow">if</span> (state == <a class="code hl_define" href="group__vioSignals__gr.html#ga642440766bc00069da04379bc1f1598d">vioBUTTON0</a>){</div>
352 <div class="line"> <span class="comment">// do something</span></div>
353 <div class="line"> }</div>
354 <div class="line"> }</div>
355 <div class="line"> last = state;</div>
356 <div class="line"> }</div>
357 <div class="line">}</div>
358 <div class="ttc" id="agroup__vioSignals__gr_html_ga642440766bc00069da04379bc1f1598d"><div class="ttname"><a href="group__vioSignals__gr.html#ga642440766bc00069da04379bc1f1598d">vioBUTTON0</a></div><div class="ttdeci">#define vioBUTTON0</div><div class="ttdoc">vioGetSignal mask parameter: Push button 0</div></div>
359 <div class="ttc" id="agroup__vio__interface__gr_html_ga852f94060d9bef92b193e9992a1c2016"><div class="ttname"><a href="group__vio__interface__gr.html#ga852f94060d9bef92b193e9992a1c2016">vioGetSignal</a></div><div class="ttdeci">uint32_t vioGetSignal(uint32_t mask)</div><div class="ttdoc">Get signal input.</div><div class="ttdef"><b>Definition:</b> VIO.txt:180</div></div>
360 </div><!-- fragment -->
363 <a id="ga5d2572868a34ccfdb10d32adce8f6102" name="ga5d2572868a34ccfdb10d32adce8f6102"></a>
364 <h2 class="memtitle"><span class="permalink"><a href="#ga5d2572868a34ccfdb10d32adce8f6102">◆ </a></span>vioSetValue()</h2>
366 <div class="memitem">
367 <div class="memproto">
368 <table class="memname">
370 <td class="memname">void vioSetValue </td>
372 <td class="paramtype">uint32_t </td>
373 <td class="paramname"><em>id</em>, </td>
376 <td class="paramkey"></td>
378 <td class="paramtype">int32_t </td>
379 <td class="paramname"><em>value</em> </td>
387 </div><div class="memdoc">
389 <p>Set value output. </p>
390 <dl class="params"><dt>Parameters</dt><dd>
391 <table class="params">
392 <tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>output identifier. </td></tr>
393 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>value to set.</td></tr>
397 <p>The function <b>vioSetValue</b> set the <em>value</em> to the output identified by <em>id</em>. Use this function to set states of I/Os for example.</p>
398 <p>Refer to <a class="el" href="group__vioValueIDs__gr.html">Value IDs</a> for information about <em>id</em>.</p>
399 <p><b>Code</b> <b>Example:</b> </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__vio_8h.html">cmsis_vio.h</a>"</span> <span class="comment">// ::CMSIS Driver:VIO</span></div>
400 <div class="line"> </div>
401 <div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
402 <div class="line"> </div>
403 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a>();</div>
404 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga5d2572868a34ccfdb10d32adce8f6102">vioSetValue</a>(<a class="code hl_define" href="group__vioValueIDs__gr.html#ga2eb17d856c43efcb7ba816822581b291">vioAOUT0</a>, 1024);</div>
405 <div class="line">}</div>
406 <div class="ttc" id="agroup__vioValueIDs__gr_html_ga2eb17d856c43efcb7ba816822581b291"><div class="ttname"><a href="group__vioValueIDs__gr.html#ga2eb17d856c43efcb7ba816822581b291">vioAOUT0</a></div><div class="ttdeci">#define vioAOUT0</div><div class="ttdoc">vioSetValue / vioGetValue id parameter: Analog output value 0</div></div>
407 <div class="ttc" id="agroup__vio__interface__gr_html_ga5d2572868a34ccfdb10d32adce8f6102"><div class="ttname"><a href="group__vio__interface__gr.html#ga5d2572868a34ccfdb10d32adce8f6102">vioSetValue</a></div><div class="ttdeci">void vioSetValue(uint32_t id, int32_t value)</div><div class="ttdoc">Set value output.</div><div class="ttdef"><b>Definition:</b> VIO.txt:213</div></div>
408 </div><!-- fragment -->
411 <a id="ga637e596f4309323b1e4e1da6200d4717" name="ga637e596f4309323b1e4e1da6200d4717"></a>
412 <h2 class="memtitle"><span class="permalink"><a href="#ga637e596f4309323b1e4e1da6200d4717">◆ </a></span>vioGetValue()</h2>
414 <div class="memitem">
415 <div class="memproto">
416 <table class="memname">
418 <td class="memname">int32_t vioGetValue </td>
420 <td class="paramtype">uint32_t </td>
421 <td class="paramname"><em>id</em></td><td>)</td>
425 </div><div class="memdoc">
427 <p>Get value input. </p>
428 <dl class="params"><dt>Parameters</dt><dd>
429 <table class="params">
430 <tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>input identifier. </td></tr>
434 <dl class="section return"><dt>Returns</dt><dd>value retrieved from input.</dd></dl>
435 <p>The function <b>vioGetValue</b> retrieves a value from the input identified by <em>id</em>. Use this function to read data from inputs.</p>
436 <p>Refer to <a class="el" href="group__vioValueIDs__gr.html">Value IDs</a> for information about <em>id</em>.</p>
437 <p><b>Code</b> <b>Example:</b> </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__vio_8h.html">cmsis_vio.h</a>"</span> <span class="comment">// ::CMSIS Driver:VIO</span></div>
438 <div class="line"> </div>
439 <div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div>
440 <div class="line"> uint32_t button;</div>
441 <div class="line"> </div>
442 <div class="line"> <a class="code hl_function" href="group__vio__interface__gr.html#ga84e05ae351226f41d461dbe982b2372f">vioInit</a>();</div>
443 <div class="line"> button = <a class="code hl_function" href="group__vio__interface__gr.html#ga637e596f4309323b1e4e1da6200d4717">vioGetValue</a>(<a class="code hl_define" href="group__vioSignals__gr.html#ga642440766bc00069da04379bc1f1598d">vioBUTTON0</a>);</div>
444 <div class="line">}</div>
445 <div class="ttc" id="agroup__vio__interface__gr_html_ga637e596f4309323b1e4e1da6200d4717"><div class="ttname"><a href="group__vio__interface__gr.html#ga637e596f4309323b1e4e1da6200d4717">vioGetValue</a></div><div class="ttdeci">int32_t vioGetValue(uint32_t id)</div><div class="ttdoc">Get value input.</div><div class="ttdef"><b>Definition:</b> VIO.txt:234</div></div>
446 </div><!-- fragment -->
449 </div><!-- contents -->
450 </div><!-- doc-content -->
451 <!-- start footer part -->
452 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
455 <script type="text/javascript">
457 writeFooter.call(this);