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: USB Device Interface</title>
9 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
12 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
13 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="jquery.js"></script>
15 <script type="text/javascript" src="dynsections.js"></script>
16 <script type="text/javascript" src="printComponentTabs.js"></script>
17 <script type="text/javascript" src="footer.js"></script>
18 <script type="text/javascript" src="navtree.js"></script>
19 <link href="navtree.css" rel="stylesheet" type="text/css"/>
20 <script type="text/javascript" src="resize.js"></script>
21 <script type="text/javascript" src="navtreedata.js"></script>
22 <script type="text/javascript" src="navtree.js"></script>
23 <link href="search/search.css" rel="stylesheet" type="text/css"/>
24 <script type="text/javascript" src="search/searchdata.js"></script>
25 <script type="text/javascript" src="search/search.js"></script>
26 <script type="text/javascript">
27 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
28 $(document).ready(function() { init_search(); });
31 <script type="text/javascript" src="darkmode_toggle.js"></script>
32 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
33 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
34 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
35 <link href="version.css" rel="stylesheet" type="text/css" />
36 <script type="text/javascript" src="../../../version.js"></script>
39 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
41 <table cellspacing="0" cellpadding="0">
43 <tr style="height: 55px;">
44 <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
45 <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
46 <div id="projectname">CMSIS-Driver
47  <span id="projectnumber"><script type="text/javascript">
49 writeHeader.call(this);
50 writeVersionDropdown.call(this);
55 <div id="projectbrief">Peripheral Interface for Middleware and Application Code</div>
57 <td> <div id="MSearchBox" class="MSearchBoxInactive">
59 <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span>
60 <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
61 onfocus="searchBox.OnSearchFieldFocus(true)"
62 onblur="searchBox.OnSearchFieldFocus(false)"
63 onkeyup="searchBox.OnSearchFieldChange(event)"/>
64 </span><span class="right">
65 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
69 <!--END !PROJECT_NAME-->
74 <!-- end header part -->
75 <div id="CMSISnav" class="tabs1">
77 <script type="text/javascript">
78 writeComponentTabs.call(this);
82 <script type="text/javascript">
83 writeSubComponentTabs.call(this);
85 <!-- Generated by Doxygen 1.9.6 -->
86 <script type="text/javascript">
87 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
88 var searchBox = new SearchBox("searchBox", "search/",'.html');
92 <div id="side-nav" class="ui-resizable side-nav-resizable">
94 <div id="nav-tree-contents">
95 <div id="nav-sync" class="sync"></div>
98 <div id="splitbar" style="-moz-user-select:none;"
99 class="ui-resizable-handle">
102 <script type="text/javascript">
103 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
104 $(document).ready(function(){initNavTree('group__usbd__interface__gr.html',''); initResizable(); });
107 <div id="doc-content">
108 <!-- window showing the filter options -->
109 <div id="MSearchSelectWindow"
110 onmouseover="return searchBox.OnSearchSelectShow()"
111 onmouseout="return searchBox.OnSearchSelectHide()"
112 onkeydown="return searchBox.OnSearchSelectKey(event)">
115 <!-- iframe showing the search results (closed by default) -->
116 <div id="MSearchResultsWindow">
117 <div id="MSearchResults">
120 <div id="SRResults"></div>
121 <div class="SRStatus" id="Loading">Loading...</div>
122 <div class="SRStatus" id="Searching">Searching...</div>
123 <div class="SRStatus" id="NoMatches">No Matches</div>
130 <div class="summary">
131 <a href="#groups">Content</a> |
132 <a href="#nested-classes">Data Structures</a> |
133 <a href="#typedef-members">Typedefs</a> |
134 <a href="#func-members">Functions</a> </div>
135 <div class="headertitle"><div class="title">USB Device Interface<div class="ingroups"><a class="el" href="group__usb__interface__gr.html">USB Interface</a></div></div></div>
137 <div class="contents">
139 <p>Driver API for USB Device Peripheral (Driver_USBD.h)
140 <a href="#details">More...</a></p>
141 <table class="memberdecls">
142 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
143 Content</h2></td></tr>
144 <tr class="memitem:group__USBD__dev__events"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__USBD__dev__events.html">USBD Device Events</a></td></tr>
145 <tr class="memdesc:group__USBD__dev__events"><td class="mdescLeft"> </td><td class="mdescRight">The USB Device driver generates Device call back events that are notified via the function <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a>. <br /></td></tr>
146 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
147 <tr class="memitem:group__USBD__ep__events"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__USBD__ep__events.html">USBD Endpoint Events</a></td></tr>
148 <tr class="memdesc:group__USBD__ep__events"><td class="mdescLeft"> </td><td class="mdescRight">The USB Device driver generates Endpoint call back events that are notified via the function <a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a>. <br /></td></tr>
149 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
150 </table><table class="memberdecls">
151 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
152 Data Structures</h2></td></tr>
153 <tr class="memitem:structARM__DRIVER__USBD"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">ARM_DRIVER_USBD</a></td></tr>
154 <tr class="memdesc:structARM__DRIVER__USBD"><td class="mdescLeft"> </td><td class="mdescRight">Access structure of the USB Device Driver. <a href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">More...</a><br /></td></tr>
155 <tr class="separator:structARM__DRIVER__USBD"><td class="memSeparator" colspan="2"> </td></tr>
156 <tr class="memitem:structARM__USBD__CAPABILITIES"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a></td></tr>
157 <tr class="memdesc:structARM__USBD__CAPABILITIES"><td class="mdescLeft"> </td><td class="mdescRight">USB Device Driver Capabilities. <a href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">More...</a><br /></td></tr>
158 <tr class="separator:structARM__USBD__CAPABILITIES"><td class="memSeparator" colspan="2"> </td></tr>
159 <tr class="memitem:structARM__USBD__STATE"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__STATE">ARM_USBD_STATE</a></td></tr>
160 <tr class="memdesc:structARM__USBD__STATE"><td class="mdescLeft"> </td><td class="mdescRight">USB Device State. <a href="group__usbd__interface__gr.html#structARM__USBD__STATE">More...</a><br /></td></tr>
161 <tr class="separator:structARM__USBD__STATE"><td class="memSeparator" colspan="2"> </td></tr>
162 </table><table class="memberdecls">
163 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
164 Typedefs</h2></td></tr>
165 <tr class="memitem:ga7c1878799699ddd34cec696da499f7bd"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga7c1878799699ddd34cec696da499f7bd">ARM_USBD_SignalDeviceEvent_t</a>) (uint32_t event)</td></tr>
166 <tr class="memdesc:ga7c1878799699ddd34cec696da499f7bd"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a> : Signal USB Device Event. <br /></td></tr>
167 <tr class="separator:ga7c1878799699ddd34cec696da499f7bd"><td class="memSeparator" colspan="2"> </td></tr>
168 <tr class="memitem:gaae754763700fc5059a6bde57ea2d4e2c"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#gaae754763700fc5059a6bde57ea2d4e2c">ARM_USBD_SignalEndpointEvent_t</a>) (uint8_t ep_addr, uint32_t event)</td></tr>
169 <tr class="memdesc:gaae754763700fc5059a6bde57ea2d4e2c"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a> : Signal USB Endpoint Event. <br /></td></tr>
170 <tr class="separator:gaae754763700fc5059a6bde57ea2d4e2c"><td class="memSeparator" colspan="2"> </td></tr>
171 </table><table class="memberdecls">
172 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
173 Functions</h2></td></tr>
174 <tr class="memitem:ga1dcb8b7790f0e3613ee3da77e5fd18fc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga1dcb8b7790f0e3613ee3da77e5fd18fc">ARM_USBD_GetVersion</a> (void)</td></tr>
175 <tr class="memdesc:ga1dcb8b7790f0e3613ee3da77e5fd18fc"><td class="mdescLeft"> </td><td class="mdescRight">Get driver version. <br /></td></tr>
176 <tr class="separator:ga1dcb8b7790f0e3613ee3da77e5fd18fc"><td class="memSeparator" colspan="2"> </td></tr>
177 <tr class="memitem:ga178d01ab7896e1c675b90bbccfe8ea7d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga178d01ab7896e1c675b90bbccfe8ea7d">ARM_USBD_GetCapabilities</a> (void)</td></tr>
178 <tr class="memdesc:ga178d01ab7896e1c675b90bbccfe8ea7d"><td class="mdescLeft"> </td><td class="mdescRight">Get driver capabilities. <br /></td></tr>
179 <tr class="separator:ga178d01ab7896e1c675b90bbccfe8ea7d"><td class="memSeparator" colspan="2"> </td></tr>
180 <tr class="memitem:ga60b95c9c0c6767ff5938464cfd748f81"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81">ARM_USBD_Initialize</a> (<a class="el" href="group__usbd__interface__gr.html#ga7c1878799699ddd34cec696da499f7bd">ARM_USBD_SignalDeviceEvent_t</a> cb_device_event, <a class="el" href="group__usbd__interface__gr.html#gaae754763700fc5059a6bde57ea2d4e2c">ARM_USBD_SignalEndpointEvent_t</a> cb_endpoint_event)</td></tr>
181 <tr class="memdesc:ga60b95c9c0c6767ff5938464cfd748f81"><td class="mdescLeft"> </td><td class="mdescRight">Initialize USB Device Interface. <br /></td></tr>
182 <tr class="separator:ga60b95c9c0c6767ff5938464cfd748f81"><td class="memSeparator" colspan="2"> </td></tr>
183 <tr class="memitem:gafaead6713f141be1734de0110eda966b"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#gafaead6713f141be1734de0110eda966b">ARM_USBD_Uninitialize</a> (void)</td></tr>
184 <tr class="memdesc:gafaead6713f141be1734de0110eda966b"><td class="mdescLeft"> </td><td class="mdescRight">De-initialize USB Device Interface. <br /></td></tr>
185 <tr class="separator:gafaead6713f141be1734de0110eda966b"><td class="memSeparator" colspan="2"> </td></tr>
186 <tr class="memitem:gaa5bdaac19f6df30c6e569abef17cdb42"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#gaa5bdaac19f6df30c6e569abef17cdb42">ARM_USBD_PowerControl</a> (<a class="el" href="group__common__drv__gr.html#ga47d6d7c31f88f3b8ae4aaf9d8444afa5">ARM_POWER_STATE</a> state)</td></tr>
187 <tr class="memdesc:gaa5bdaac19f6df30c6e569abef17cdb42"><td class="mdescLeft"> </td><td class="mdescRight">Control USB Device Interface Power. <br /></td></tr>
188 <tr class="separator:gaa5bdaac19f6df30c6e569abef17cdb42"><td class="memSeparator" colspan="2"> </td></tr>
189 <tr class="memitem:ga99207f7ff5e97a7f65754eab7f775fca"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga99207f7ff5e97a7f65754eab7f775fca">ARM_USBD_DeviceConnect</a> (void)</td></tr>
190 <tr class="memdesc:ga99207f7ff5e97a7f65754eab7f775fca"><td class="mdescLeft"> </td><td class="mdescRight">Connect USB Device. <br /></td></tr>
191 <tr class="separator:ga99207f7ff5e97a7f65754eab7f775fca"><td class="memSeparator" colspan="2"> </td></tr>
192 <tr class="memitem:ga37234abecbb63e4e739f9676e489d2d1"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga37234abecbb63e4e739f9676e489d2d1">ARM_USBD_DeviceDisconnect</a> (void)</td></tr>
193 <tr class="memdesc:ga37234abecbb63e4e739f9676e489d2d1"><td class="mdescLeft"> </td><td class="mdescRight">Disconnect USB Device. <br /></td></tr>
194 <tr class="separator:ga37234abecbb63e4e739f9676e489d2d1"><td class="memSeparator" colspan="2"> </td></tr>
195 <tr class="memitem:ga7624d6b2cbe5e6ab5016206ce641eee2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__STATE">ARM_USBD_STATE</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga7624d6b2cbe5e6ab5016206ce641eee2">ARM_USBD_DeviceGetState</a> (void)</td></tr>
196 <tr class="memdesc:ga7624d6b2cbe5e6ab5016206ce641eee2"><td class="mdescLeft"> </td><td class="mdescRight">Get current USB Device State. <br /></td></tr>
197 <tr class="separator:ga7624d6b2cbe5e6ab5016206ce641eee2"><td class="memSeparator" colspan="2"> </td></tr>
198 <tr class="memitem:ga7e149a4c6a0196da24a44f4fada75fb1"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga7e149a4c6a0196da24a44f4fada75fb1">ARM_USBD_DeviceRemoteWakeup</a> (void)</td></tr>
199 <tr class="memdesc:ga7e149a4c6a0196da24a44f4fada75fb1"><td class="mdescLeft"> </td><td class="mdescRight">Trigger USB Remote Wakeup. <br /></td></tr>
200 <tr class="separator:ga7e149a4c6a0196da24a44f4fada75fb1"><td class="memSeparator" colspan="2"> </td></tr>
201 <tr class="memitem:gae66f696584e25fb2ddabe9070fa38670"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#gae66f696584e25fb2ddabe9070fa38670">ARM_USBD_DeviceSetAddress</a> (uint8_t dev_addr)</td></tr>
202 <tr class="memdesc:gae66f696584e25fb2ddabe9070fa38670"><td class="mdescLeft"> </td><td class="mdescRight">Set USB Device Address. <br /></td></tr>
203 <tr class="separator:gae66f696584e25fb2ddabe9070fa38670"><td class="memSeparator" colspan="2"> </td></tr>
204 <tr class="memitem:ga6bc0ebf699a0f28330f21cab83f85e9e"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga6bc0ebf699a0f28330f21cab83f85e9e">ARM_USBD_ReadSetupPacket</a> (uint8_t *setup)</td></tr>
205 <tr class="memdesc:ga6bc0ebf699a0f28330f21cab83f85e9e"><td class="mdescLeft"> </td><td class="mdescRight">Read setup packet received over Control Endpoint. <br /></td></tr>
206 <tr class="separator:ga6bc0ebf699a0f28330f21cab83f85e9e"><td class="memSeparator" colspan="2"> </td></tr>
207 <tr class="memitem:ga62d7d5bdcf9ca7bf7e6d8434368abad8"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga62d7d5bdcf9ca7bf7e6d8434368abad8">ARM_USBD_EndpointConfigure</a> (uint8_t ep_addr, uint8_t ep_type, uint16_t ep_max_packet_size)</td></tr>
208 <tr class="memdesc:ga62d7d5bdcf9ca7bf7e6d8434368abad8"><td class="mdescLeft"> </td><td class="mdescRight">Configure USB Endpoint. <br /></td></tr>
209 <tr class="separator:ga62d7d5bdcf9ca7bf7e6d8434368abad8"><td class="memSeparator" colspan="2"> </td></tr>
210 <tr class="memitem:gaca913df5188dc0f0c4f707b57c2a88fc"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#gaca913df5188dc0f0c4f707b57c2a88fc">ARM_USBD_EndpointUnconfigure</a> (uint8_t ep_addr)</td></tr>
211 <tr class="memdesc:gaca913df5188dc0f0c4f707b57c2a88fc"><td class="mdescLeft"> </td><td class="mdescRight">Unconfigure USB Endpoint. <br /></td></tr>
212 <tr class="separator:gaca913df5188dc0f0c4f707b57c2a88fc"><td class="memSeparator" colspan="2"> </td></tr>
213 <tr class="memitem:ga9502cd7b8e4c583920fccadc4ccf7975"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga9502cd7b8e4c583920fccadc4ccf7975">ARM_USBD_EndpointStall</a> (uint8_t ep_addr, bool stall)</td></tr>
214 <tr class="memdesc:ga9502cd7b8e4c583920fccadc4ccf7975"><td class="mdescLeft"> </td><td class="mdescRight">Set/Clear Stall for USB Endpoint. <br /></td></tr>
215 <tr class="separator:ga9502cd7b8e4c583920fccadc4ccf7975"><td class="memSeparator" colspan="2"> </td></tr>
216 <tr class="memitem:ga6e69ad097553125bb01a22dc719e0d30"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga6e69ad097553125bb01a22dc719e0d30">ARM_USBD_EndpointTransfer</a> (uint8_t ep_addr, uint8_t *data, uint32_t num)</td></tr>
217 <tr class="memdesc:ga6e69ad097553125bb01a22dc719e0d30"><td class="mdescLeft"> </td><td class="mdescRight">Read data from or Write data to USB Endpoint. <br /></td></tr>
218 <tr class="separator:ga6e69ad097553125bb01a22dc719e0d30"><td class="memSeparator" colspan="2"> </td></tr>
219 <tr class="memitem:gab81fac01522a4d504edcb7b7d3abba6c"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#gab81fac01522a4d504edcb7b7d3abba6c">ARM_USBD_EndpointTransferGetResult</a> (uint8_t ep_addr)</td></tr>
220 <tr class="memdesc:gab81fac01522a4d504edcb7b7d3abba6c"><td class="mdescLeft"> </td><td class="mdescRight">Get result of USB Endpoint transfer. <br /></td></tr>
221 <tr class="separator:gab81fac01522a4d504edcb7b7d3abba6c"><td class="memSeparator" colspan="2"> </td></tr>
222 <tr class="memitem:ga7cf3bcc105dbb8cbdc915e8caca8529e"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga7cf3bcc105dbb8cbdc915e8caca8529e">ARM_USBD_EndpointTransferAbort</a> (uint8_t ep_addr)</td></tr>
223 <tr class="memdesc:ga7cf3bcc105dbb8cbdc915e8caca8529e"><td class="mdescLeft"> </td><td class="mdescRight">Abort current USB Endpoint transfer. <br /></td></tr>
224 <tr class="separator:ga7cf3bcc105dbb8cbdc915e8caca8529e"><td class="memSeparator" colspan="2"> </td></tr>
225 <tr class="memitem:ga4cd050b8343407fe465a27ad1cb7c264"><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga4cd050b8343407fe465a27ad1cb7c264">ARM_USBD_GetFrameNumber</a> (void)</td></tr>
226 <tr class="memdesc:ga4cd050b8343407fe465a27ad1cb7c264"><td class="mdescLeft"> </td><td class="mdescRight">Get current USB Frame Number. <br /></td></tr>
227 <tr class="separator:ga4cd050b8343407fe465a27ad1cb7c264"><td class="memSeparator" colspan="2"> </td></tr>
228 <tr class="memitem:gafe58a4db1d26b21ca5d418ee49e103a5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a> (uint32_t event)</td></tr>
229 <tr class="memdesc:gafe58a4db1d26b21ca5d418ee49e103a5"><td class="mdescLeft"> </td><td class="mdescRight">Signal USB Device Event. <br /></td></tr>
230 <tr class="separator:gafe58a4db1d26b21ca5d418ee49e103a5"><td class="memSeparator" colspan="2"> </td></tr>
231 <tr class="memitem:ga9aa5bc5cb45084194a77fae1457f6575"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a> (uint8_t ep_addr, uint32_t ep_event)</td></tr>
232 <tr class="memdesc:ga9aa5bc5cb45084194a77fae1457f6575"><td class="mdescLeft"> </td><td class="mdescRight">Signal USB Endpoint Event. <br /></td></tr>
233 <tr class="separator:ga9aa5bc5cb45084194a77fae1457f6575"><td class="memSeparator" colspan="2"> </td></tr>
235 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
236 <p>Driver API for USB Device Peripheral (Driver_USBD.h) </p>
237 <p><b>USB Device API</b></p>
238 <p>The header file <b><a class="el" href="Driver__USBD_8h.html">Driver_USBD.h</a></b> defines the API for the <b>USB Device Driver</b> interface used by middleware components. The driver implementation itself is a typical part of the Device Family Pack, which provides entry points to the interface as function pointers in the struct <a class="el" href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">ARM_DRIVER_USBD</a>. This structure can be available several times in each interface to control multiple USBD interfaces.</p>
239 <p>Header file <b><a class="el" href="Driver__USBD_8h.html">Driver_USBD.h</a></b> also defines callback routines that can be categorized as <b>device event callbacks</b> and <b>endpoint event callbacks</b>. Callbacks are called by the driver, in interrupt context when an appropriate event occurs, to signal device related events (<a class="el" href="group__USBD__dev__events.html">USBD Device Events</a>) and endpoint related events (<a class="el" href="group__USBD__ep__events.html">USBD Endpoint Events</a>).</p>
240 <p><b>USB Device Function Call Sequence</b></p>
241 <p>To use the USBD driver invoke the API functions in the following order:</p>
242 <div class="mscgraph">
243 <img src="msc_inline_mscgraph_2.png" alt="msc_inline_mscgraph_2" border="0" usemap="#msc_inline_mscgraph_2.map"/>
244 <map name="msc_inline_mscgraph_2.map" id="msc_inline_mscgraph_2.map"><area href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81" shape="rect" coords="244,58,357,71" alt=""/>
245 <area href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81" shape="rect" coords="187,90,414,103" alt=""/>
246 <area href="group__usbd__interface__gr.html#ga99207f7ff5e97a7f65754eab7f775fca" shape="rect" coords="235,122,366,135" alt=""/>
247 <area href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5" shape="rect" coords="154,154,447,167" alt=""/>
248 <area href="group__usbd__interface__gr.html#ga7624d6b2cbe5e6ab5016206ce641eee2" shape="rect" coords="232,186,369,199" alt=""/>
249 <area href="group__usbd__interface__gr.html#ga62d7d5bdcf9ca7bf7e6d8434368abad8" shape="rect" coords="223,218,378,231" alt=""/>
250 <area href="group__usbd__interface__gr.html#ga6e69ad097553125bb01a22dc719e0d30" shape="rect" coords="226,269,375,282" alt=""/>
251 <area href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575" shape="rect" coords="217,301,384,314" alt=""/>
252 <area href="group__usbd__interface__gr.html#gab81fac01522a4d504edcb7b7d3abba6c" shape="rect" coords="199,333,402,346" alt=""/>
253 <area href="group__usbd__interface__gr.html#ga37234abecbb63e4e739f9676e489d2d1" shape="rect" coords="226,384,375,397" alt=""/>
254 <area href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81" shape="rect" coords="190,416,411,429" alt=""/>
255 <area href="group__usbd__interface__gr.html#gafaead6713f141be1734de0110eda966b" shape="rect" coords="238,448,363,461" alt=""/>
258 <hr/><h2 class="groupheader">Data Structure Documentation</h2>
259 <a name="structARM__DRIVER__USBD" id="structARM__DRIVER__USBD"></a>
260 <h2 class="memtitle"><span class="permalink"><a href="#structARM__DRIVER__USBD">◆ </a></span>ARM_DRIVER_USBD</h2>
262 <div class="memitem">
263 <div class="memproto">
264 <table class="memname">
266 <td class="memname">struct ARM_DRIVER_USBD</td>
269 </div><div class="memdoc">
270 <div class="textblock"><p>Access structure of the USB Device Driver. </p>
271 <p>The functions of the USB Device driver are accessed by function pointers. Refer to <a class="el" href="theoryOperation.html#DriverFunctions">Common Driver Functions</a> for overview information.</p>
272 <p>Each instance of an USBD provides such an access struct. The instance is indicated by a postfix in the symbol name of the access struct, for example:</p><ul>
273 <li><b>Driver_USBD0</b> is the name of the access struct of the first instance (no. 0).</li>
274 <li><b>Driver_USBD1</b> is the name of the access struct of the second instance (no. 1).</li>
276 <p>A configuration setting in the middleware allows connecting the middleware to a specific driver instance <b>Driver_USBD<em>n</em></b>. The default is <span class="XML-Token">0</span>, which connects a middleware to the first instance of a driver.</p>
277 <dl class="section note"><dt>Note</dt><dd>The struct must remain unchanged. </dd></dl>
278 </div><table class="memberdecls">
279 <tr><td colspan="2"><h3>Data Fields</h3></td></tr>
280 <tr class="memitem:a30afd9cb3113c037b5f1926f5ef93b59"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a>(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a30afd9cb3113c037b5f1926f5ef93b59">GetVersion</a> )(void)</td></tr>
281 <tr class="memdesc:a30afd9cb3113c037b5f1926f5ef93b59"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga1dcb8b7790f0e3613ee3da77e5fd18fc">ARM_USBD_GetVersion</a> : Get driver version. <br /></td></tr>
282 <tr class="separator:a30afd9cb3113c037b5f1926f5ef93b59"><td class="memSeparator" colspan="2"> </td></tr>
283 <tr class="memitem:a1de7fb4fa3f8ba93ce288af961d22124"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a>(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a1de7fb4fa3f8ba93ce288af961d22124">GetCapabilities</a> )(void)</td></tr>
284 <tr class="memdesc:a1de7fb4fa3f8ba93ce288af961d22124"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga178d01ab7896e1c675b90bbccfe8ea7d">ARM_USBD_GetCapabilities</a> : Get driver capabilities. <br /></td></tr>
285 <tr class="separator:a1de7fb4fa3f8ba93ce288af961d22124"><td class="memSeparator" colspan="2"> </td></tr>
286 <tr class="memitem:a6f06dca6069ce4dec59669e8a264c886"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a6f06dca6069ce4dec59669e8a264c886">Initialize</a> )(<a class="el" href="group__usbd__interface__gr.html#ga7c1878799699ddd34cec696da499f7bd">ARM_USBD_SignalDeviceEvent_t</a> cb_device_event, <a class="el" href="group__usbd__interface__gr.html#gaae754763700fc5059a6bde57ea2d4e2c">ARM_USBD_SignalEndpointEvent_t</a> cb_endpoint_event)</td></tr>
287 <tr class="memdesc:a6f06dca6069ce4dec59669e8a264c886"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81">ARM_USBD_Initialize</a> : Initialize USB Device Interface. <br /></td></tr>
288 <tr class="separator:a6f06dca6069ce4dec59669e8a264c886"><td class="memSeparator" colspan="2"> </td></tr>
289 <tr class="memitem:a5ce2b3d7a3a07099bf07d1eb253e92e3"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a5ce2b3d7a3a07099bf07d1eb253e92e3">Uninitialize</a> )(void)</td></tr>
290 <tr class="memdesc:a5ce2b3d7a3a07099bf07d1eb253e92e3"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#gafaead6713f141be1734de0110eda966b">ARM_USBD_Uninitialize</a> : De-initialize USB Device Interface. <br /></td></tr>
291 <tr class="separator:a5ce2b3d7a3a07099bf07d1eb253e92e3"><td class="memSeparator" colspan="2"> </td></tr>
292 <tr class="memitem:a24ebae5c6011631f76027f9a16eaf5ce"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a24ebae5c6011631f76027f9a16eaf5ce">PowerControl</a> )(<a class="el" href="group__common__drv__gr.html#ga47d6d7c31f88f3b8ae4aaf9d8444afa5">ARM_POWER_STATE</a> state)</td></tr>
293 <tr class="memdesc:a24ebae5c6011631f76027f9a16eaf5ce"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#gaa5bdaac19f6df30c6e569abef17cdb42">ARM_USBD_PowerControl</a> : Control USB Device Interface Power. <br /></td></tr>
294 <tr class="separator:a24ebae5c6011631f76027f9a16eaf5ce"><td class="memSeparator" colspan="2"> </td></tr>
295 <tr class="memitem:adb206e2099db1404e37b6defa226ef83"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#adb206e2099db1404e37b6defa226ef83">DeviceConnect</a> )(void)</td></tr>
296 <tr class="memdesc:adb206e2099db1404e37b6defa226ef83"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga99207f7ff5e97a7f65754eab7f775fca">ARM_USBD_DeviceConnect</a> : Connect USB Device. <br /></td></tr>
297 <tr class="separator:adb206e2099db1404e37b6defa226ef83"><td class="memSeparator" colspan="2"> </td></tr>
298 <tr class="memitem:af5af2217baa6b020ee425e7cb4fbd1e0"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#af5af2217baa6b020ee425e7cb4fbd1e0">DeviceDisconnect</a> )(void)</td></tr>
299 <tr class="memdesc:af5af2217baa6b020ee425e7cb4fbd1e0"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga37234abecbb63e4e739f9676e489d2d1">ARM_USBD_DeviceDisconnect</a> : Disconnect USB Device. <br /></td></tr>
300 <tr class="separator:af5af2217baa6b020ee425e7cb4fbd1e0"><td class="memSeparator" colspan="2"> </td></tr>
301 <tr class="memitem:a8b1e86e239772c9a0c13976ac239fea9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__STATE">ARM_USBD_STATE</a>(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a8b1e86e239772c9a0c13976ac239fea9">DeviceGetState</a> )(void)</td></tr>
302 <tr class="memdesc:a8b1e86e239772c9a0c13976ac239fea9"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga7624d6b2cbe5e6ab5016206ce641eee2">ARM_USBD_DeviceGetState</a> : Get current USB Device State. <br /></td></tr>
303 <tr class="separator:a8b1e86e239772c9a0c13976ac239fea9"><td class="memSeparator" colspan="2"> </td></tr>
304 <tr class="memitem:a9284ceb4c0cdef209174076376354dd6"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a9284ceb4c0cdef209174076376354dd6">DeviceRemoteWakeup</a> )(void)</td></tr>
305 <tr class="memdesc:a9284ceb4c0cdef209174076376354dd6"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga7e149a4c6a0196da24a44f4fada75fb1">ARM_USBD_DeviceRemoteWakeup</a> : Trigger USB Remote Wakeup. <br /></td></tr>
306 <tr class="separator:a9284ceb4c0cdef209174076376354dd6"><td class="memSeparator" colspan="2"> </td></tr>
307 <tr class="memitem:a57ac19faf08d94e038ce19c2ccd606ce"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a57ac19faf08d94e038ce19c2ccd606ce">DeviceSetAddress</a> )(uint8_t dev_addr)</td></tr>
308 <tr class="memdesc:a57ac19faf08d94e038ce19c2ccd606ce"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#gae66f696584e25fb2ddabe9070fa38670">ARM_USBD_DeviceSetAddress</a> : Set USB Device Address. <br /></td></tr>
309 <tr class="separator:a57ac19faf08d94e038ce19c2ccd606ce"><td class="memSeparator" colspan="2"> </td></tr>
310 <tr class="memitem:a3be60c2232d0c552f8916ae03e99a481"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a3be60c2232d0c552f8916ae03e99a481">ReadSetupPacket</a> )(uint8_t *setup)</td></tr>
311 <tr class="memdesc:a3be60c2232d0c552f8916ae03e99a481"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga6bc0ebf699a0f28330f21cab83f85e9e">ARM_USBD_ReadSetupPacket</a> : Read setup packet received over Control Endpoint. <br /></td></tr>
312 <tr class="separator:a3be60c2232d0c552f8916ae03e99a481"><td class="memSeparator" colspan="2"> </td></tr>
313 <tr class="memitem:a9dc8aa3d9779ca485d984cec7f61e9f5"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a9dc8aa3d9779ca485d984cec7f61e9f5">EndpointConfigure</a> )(uint8_t ep_addr, uint8_t ep_type, uint16_t ep_max_packet_size)</td></tr>
314 <tr class="memdesc:a9dc8aa3d9779ca485d984cec7f61e9f5"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga62d7d5bdcf9ca7bf7e6d8434368abad8">ARM_USBD_EndpointConfigure</a> : Configure USB Endpoint. <br /></td></tr>
315 <tr class="separator:a9dc8aa3d9779ca485d984cec7f61e9f5"><td class="memSeparator" colspan="2"> </td></tr>
316 <tr class="memitem:a9de9ad848bf8dd8e0462df4c08b5f42b"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a9de9ad848bf8dd8e0462df4c08b5f42b">EndpointUnconfigure</a> )(uint8_t ep_addr)</td></tr>
317 <tr class="memdesc:a9de9ad848bf8dd8e0462df4c08b5f42b"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#gaca913df5188dc0f0c4f707b57c2a88fc">ARM_USBD_EndpointUnconfigure</a> : Unconfigure USB Endpoint. <br /></td></tr>
318 <tr class="separator:a9de9ad848bf8dd8e0462df4c08b5f42b"><td class="memSeparator" colspan="2"> </td></tr>
319 <tr class="memitem:a4ddee6ccee081be81be53931aa5a8fcc"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a4ddee6ccee081be81be53931aa5a8fcc">EndpointStall</a> )(uint8_t ep_addr, bool stall)</td></tr>
320 <tr class="memdesc:a4ddee6ccee081be81be53931aa5a8fcc"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga9502cd7b8e4c583920fccadc4ccf7975">ARM_USBD_EndpointStall</a> : Set/Clear Stall for USB Endpoint. <br /></td></tr>
321 <tr class="separator:a4ddee6ccee081be81be53931aa5a8fcc"><td class="memSeparator" colspan="2"> </td></tr>
322 <tr class="memitem:a6d0f259733f74c850625d063c1e734fa"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#a6d0f259733f74c850625d063c1e734fa">EndpointTransfer</a> )(uint8_t ep_addr, uint8_t *data, uint32_t num)</td></tr>
323 <tr class="memdesc:a6d0f259733f74c850625d063c1e734fa"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga6e69ad097553125bb01a22dc719e0d30">ARM_USBD_EndpointTransfer</a> : Read data from or Write data to USB Endpoint. <br /></td></tr>
324 <tr class="separator:a6d0f259733f74c850625d063c1e734fa"><td class="memSeparator" colspan="2"> </td></tr>
325 <tr class="memitem:aac17fa7640667830865110bf32ea2da9"><td class="memItemLeft" align="right" valign="top">uint32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#aac17fa7640667830865110bf32ea2da9">EndpointTransferGetResult</a> )(uint8_t ep_addr)</td></tr>
326 <tr class="memdesc:aac17fa7640667830865110bf32ea2da9"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#gab81fac01522a4d504edcb7b7d3abba6c">ARM_USBD_EndpointTransferGetResult</a> : Get result of USB Endpoint transfer. <br /></td></tr>
327 <tr class="separator:aac17fa7640667830865110bf32ea2da9"><td class="memSeparator" colspan="2"> </td></tr>
328 <tr class="memitem:aea43c20079939ded8fc0011bfa00d4ea"><td class="memItemLeft" align="right" valign="top">int32_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#aea43c20079939ded8fc0011bfa00d4ea">EndpointTransferAbort</a> )(uint8_t ep_addr)</td></tr>
329 <tr class="memdesc:aea43c20079939ded8fc0011bfa00d4ea"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga7cf3bcc105dbb8cbdc915e8caca8529e">ARM_USBD_EndpointTransferAbort</a> : Abort current USB Endpoint transfer. <br /></td></tr>
330 <tr class="separator:aea43c20079939ded8fc0011bfa00d4ea"><td class="memSeparator" colspan="2"> </td></tr>
331 <tr class="memitem:ab459c9ca3d6dd6969cb410ac965fa1f6"><td class="memItemLeft" align="right" valign="top">uint16_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__usbd__interface__gr.html#ab459c9ca3d6dd6969cb410ac965fa1f6">GetFrameNumber</a> )(void)</td></tr>
332 <tr class="memdesc:ab459c9ca3d6dd6969cb410ac965fa1f6"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to <a class="el" href="group__usbd__interface__gr.html#ga4cd050b8343407fe465a27ad1cb7c264">ARM_USBD_GetFrameNumber</a> : Get current USB Frame Number. <br /></td></tr>
333 <tr class="separator:ab459c9ca3d6dd6969cb410ac965fa1f6"><td class="memSeparator" colspan="2"> </td></tr>
335 <h4 class="groupheader">Field Documentation</h4>
336 <a id="a30afd9cb3113c037b5f1926f5ef93b59" name="a30afd9cb3113c037b5f1926f5ef93b59"></a>
337 <h2 class="memtitle"><span class="permalink"><a href="#a30afd9cb3113c037b5f1926f5ef93b59">◆ </a></span>GetVersion</h2>
339 <div class="memitem">
340 <div class="memproto">
341 <table class="memname">
343 <td class="memname"><a class="el" href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a>(* GetVersion) (void)</td>
346 </div><div class="memdoc">
348 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga1dcb8b7790f0e3613ee3da77e5fd18fc">ARM_USBD_GetVersion</a> : Get driver version. </p>
352 <a id="a1de7fb4fa3f8ba93ce288af961d22124" name="a1de7fb4fa3f8ba93ce288af961d22124"></a>
353 <h2 class="memtitle"><span class="permalink"><a href="#a1de7fb4fa3f8ba93ce288af961d22124">◆ </a></span>GetCapabilities</h2>
355 <div class="memitem">
356 <div class="memproto">
357 <table class="memname">
359 <td class="memname"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a>(* GetCapabilities) (void)</td>
362 </div><div class="memdoc">
364 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga178d01ab7896e1c675b90bbccfe8ea7d">ARM_USBD_GetCapabilities</a> : Get driver capabilities. </p>
368 <a id="a6f06dca6069ce4dec59669e8a264c886" name="a6f06dca6069ce4dec59669e8a264c886"></a>
369 <h2 class="memtitle"><span class="permalink"><a href="#a6f06dca6069ce4dec59669e8a264c886">◆ </a></span>Initialize</h2>
371 <div class="memitem">
372 <div class="memproto">
373 <table class="memname">
375 <td class="memname">int32_t(* Initialize) (<a class="el" href="group__usbd__interface__gr.html#ga7c1878799699ddd34cec696da499f7bd">ARM_USBD_SignalDeviceEvent_t</a> cb_device_event, <a class="el" href="group__usbd__interface__gr.html#gaae754763700fc5059a6bde57ea2d4e2c">ARM_USBD_SignalEndpointEvent_t</a> cb_endpoint_event)</td>
378 </div><div class="memdoc">
380 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81">ARM_USBD_Initialize</a> : Initialize USB Device Interface. </p>
384 <a id="a5ce2b3d7a3a07099bf07d1eb253e92e3" name="a5ce2b3d7a3a07099bf07d1eb253e92e3"></a>
385 <h2 class="memtitle"><span class="permalink"><a href="#a5ce2b3d7a3a07099bf07d1eb253e92e3">◆ </a></span>Uninitialize</h2>
387 <div class="memitem">
388 <div class="memproto">
389 <table class="memname">
391 <td class="memname">int32_t(* Uninitialize) (void)</td>
394 </div><div class="memdoc">
396 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#gafaead6713f141be1734de0110eda966b">ARM_USBD_Uninitialize</a> : De-initialize USB Device Interface. </p>
400 <a id="a24ebae5c6011631f76027f9a16eaf5ce" name="a24ebae5c6011631f76027f9a16eaf5ce"></a>
401 <h2 class="memtitle"><span class="permalink"><a href="#a24ebae5c6011631f76027f9a16eaf5ce">◆ </a></span>PowerControl</h2>
403 <div class="memitem">
404 <div class="memproto">
405 <table class="memname">
407 <td class="memname">int32_t(* PowerControl) (<a class="el" href="group__common__drv__gr.html#ga47d6d7c31f88f3b8ae4aaf9d8444afa5">ARM_POWER_STATE</a> state)</td>
410 </div><div class="memdoc">
412 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#gaa5bdaac19f6df30c6e569abef17cdb42">ARM_USBD_PowerControl</a> : Control USB Device Interface Power. </p>
416 <a id="adb206e2099db1404e37b6defa226ef83" name="adb206e2099db1404e37b6defa226ef83"></a>
417 <h2 class="memtitle"><span class="permalink"><a href="#adb206e2099db1404e37b6defa226ef83">◆ </a></span>DeviceConnect</h2>
419 <div class="memitem">
420 <div class="memproto">
421 <table class="memname">
423 <td class="memname">int32_t(* DeviceConnect) (void)</td>
426 </div><div class="memdoc">
428 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga99207f7ff5e97a7f65754eab7f775fca">ARM_USBD_DeviceConnect</a> : Connect USB Device. </p>
432 <a id="af5af2217baa6b020ee425e7cb4fbd1e0" name="af5af2217baa6b020ee425e7cb4fbd1e0"></a>
433 <h2 class="memtitle"><span class="permalink"><a href="#af5af2217baa6b020ee425e7cb4fbd1e0">◆ </a></span>DeviceDisconnect</h2>
435 <div class="memitem">
436 <div class="memproto">
437 <table class="memname">
439 <td class="memname">int32_t(* DeviceDisconnect) (void)</td>
442 </div><div class="memdoc">
444 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga37234abecbb63e4e739f9676e489d2d1">ARM_USBD_DeviceDisconnect</a> : Disconnect USB Device. </p>
448 <a id="a8b1e86e239772c9a0c13976ac239fea9" name="a8b1e86e239772c9a0c13976ac239fea9"></a>
449 <h2 class="memtitle"><span class="permalink"><a href="#a8b1e86e239772c9a0c13976ac239fea9">◆ </a></span>DeviceGetState</h2>
451 <div class="memitem">
452 <div class="memproto">
453 <table class="memname">
455 <td class="memname"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__STATE">ARM_USBD_STATE</a>(* DeviceGetState) (void)</td>
458 </div><div class="memdoc">
460 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga7624d6b2cbe5e6ab5016206ce641eee2">ARM_USBD_DeviceGetState</a> : Get current USB Device State. </p>
464 <a id="a9284ceb4c0cdef209174076376354dd6" name="a9284ceb4c0cdef209174076376354dd6"></a>
465 <h2 class="memtitle"><span class="permalink"><a href="#a9284ceb4c0cdef209174076376354dd6">◆ </a></span>DeviceRemoteWakeup</h2>
467 <div class="memitem">
468 <div class="memproto">
469 <table class="memname">
471 <td class="memname">int32_t(* DeviceRemoteWakeup) (void)</td>
474 </div><div class="memdoc">
476 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga7e149a4c6a0196da24a44f4fada75fb1">ARM_USBD_DeviceRemoteWakeup</a> : Trigger USB Remote Wakeup. </p>
480 <a id="a57ac19faf08d94e038ce19c2ccd606ce" name="a57ac19faf08d94e038ce19c2ccd606ce"></a>
481 <h2 class="memtitle"><span class="permalink"><a href="#a57ac19faf08d94e038ce19c2ccd606ce">◆ </a></span>DeviceSetAddress</h2>
483 <div class="memitem">
484 <div class="memproto">
485 <table class="memname">
487 <td class="memname">int32_t(* DeviceSetAddress) (uint8_t dev_addr)</td>
490 </div><div class="memdoc">
492 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#gae66f696584e25fb2ddabe9070fa38670">ARM_USBD_DeviceSetAddress</a> : Set USB Device Address. </p>
496 <a id="a3be60c2232d0c552f8916ae03e99a481" name="a3be60c2232d0c552f8916ae03e99a481"></a>
497 <h2 class="memtitle"><span class="permalink"><a href="#a3be60c2232d0c552f8916ae03e99a481">◆ </a></span>ReadSetupPacket</h2>
499 <div class="memitem">
500 <div class="memproto">
501 <table class="memname">
503 <td class="memname">int32_t(* ReadSetupPacket) (uint8_t *setup)</td>
506 </div><div class="memdoc">
508 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga6bc0ebf699a0f28330f21cab83f85e9e">ARM_USBD_ReadSetupPacket</a> : Read setup packet received over Control Endpoint. </p>
512 <a id="a9dc8aa3d9779ca485d984cec7f61e9f5" name="a9dc8aa3d9779ca485d984cec7f61e9f5"></a>
513 <h2 class="memtitle"><span class="permalink"><a href="#a9dc8aa3d9779ca485d984cec7f61e9f5">◆ </a></span>EndpointConfigure</h2>
515 <div class="memitem">
516 <div class="memproto">
517 <table class="memname">
519 <td class="memname">int32_t(* EndpointConfigure) (uint8_t ep_addr, uint8_t ep_type, uint16_t ep_max_packet_size)</td>
522 </div><div class="memdoc">
524 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga62d7d5bdcf9ca7bf7e6d8434368abad8">ARM_USBD_EndpointConfigure</a> : Configure USB Endpoint. </p>
528 <a id="a9de9ad848bf8dd8e0462df4c08b5f42b" name="a9de9ad848bf8dd8e0462df4c08b5f42b"></a>
529 <h2 class="memtitle"><span class="permalink"><a href="#a9de9ad848bf8dd8e0462df4c08b5f42b">◆ </a></span>EndpointUnconfigure</h2>
531 <div class="memitem">
532 <div class="memproto">
533 <table class="memname">
535 <td class="memname">int32_t(* EndpointUnconfigure) (uint8_t ep_addr)</td>
538 </div><div class="memdoc">
540 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#gaca913df5188dc0f0c4f707b57c2a88fc">ARM_USBD_EndpointUnconfigure</a> : Unconfigure USB Endpoint. </p>
544 <a id="a4ddee6ccee081be81be53931aa5a8fcc" name="a4ddee6ccee081be81be53931aa5a8fcc"></a>
545 <h2 class="memtitle"><span class="permalink"><a href="#a4ddee6ccee081be81be53931aa5a8fcc">◆ </a></span>EndpointStall</h2>
547 <div class="memitem">
548 <div class="memproto">
549 <table class="memname">
551 <td class="memname">int32_t(* EndpointStall) (uint8_t ep_addr, bool stall)</td>
554 </div><div class="memdoc">
556 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga9502cd7b8e4c583920fccadc4ccf7975">ARM_USBD_EndpointStall</a> : Set/Clear Stall for USB Endpoint. </p>
560 <a id="a6d0f259733f74c850625d063c1e734fa" name="a6d0f259733f74c850625d063c1e734fa"></a>
561 <h2 class="memtitle"><span class="permalink"><a href="#a6d0f259733f74c850625d063c1e734fa">◆ </a></span>EndpointTransfer</h2>
563 <div class="memitem">
564 <div class="memproto">
565 <table class="memname">
567 <td class="memname">int32_t(* EndpointTransfer) (uint8_t ep_addr, uint8_t *data, uint32_t num)</td>
570 </div><div class="memdoc">
572 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga6e69ad097553125bb01a22dc719e0d30">ARM_USBD_EndpointTransfer</a> : Read data from or Write data to USB Endpoint. </p>
576 <a id="aac17fa7640667830865110bf32ea2da9" name="aac17fa7640667830865110bf32ea2da9"></a>
577 <h2 class="memtitle"><span class="permalink"><a href="#aac17fa7640667830865110bf32ea2da9">◆ </a></span>EndpointTransferGetResult</h2>
579 <div class="memitem">
580 <div class="memproto">
581 <table class="memname">
583 <td class="memname">uint32_t(* EndpointTransferGetResult) (uint8_t ep_addr)</td>
586 </div><div class="memdoc">
588 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#gab81fac01522a4d504edcb7b7d3abba6c">ARM_USBD_EndpointTransferGetResult</a> : Get result of USB Endpoint transfer. </p>
592 <a id="aea43c20079939ded8fc0011bfa00d4ea" name="aea43c20079939ded8fc0011bfa00d4ea"></a>
593 <h2 class="memtitle"><span class="permalink"><a href="#aea43c20079939ded8fc0011bfa00d4ea">◆ </a></span>EndpointTransferAbort</h2>
595 <div class="memitem">
596 <div class="memproto">
597 <table class="memname">
599 <td class="memname">int32_t(* EndpointTransferAbort) (uint8_t ep_addr)</td>
602 </div><div class="memdoc">
604 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga7cf3bcc105dbb8cbdc915e8caca8529e">ARM_USBD_EndpointTransferAbort</a> : Abort current USB Endpoint transfer. </p>
608 <a id="ab459c9ca3d6dd6969cb410ac965fa1f6" name="ab459c9ca3d6dd6969cb410ac965fa1f6"></a>
609 <h2 class="memtitle"><span class="permalink"><a href="#ab459c9ca3d6dd6969cb410ac965fa1f6">◆ </a></span>GetFrameNumber</h2>
611 <div class="memitem">
612 <div class="memproto">
613 <table class="memname">
615 <td class="memname">uint16_t(* GetFrameNumber) (void)</td>
618 </div><div class="memdoc">
620 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga4cd050b8343407fe465a27ad1cb7c264">ARM_USBD_GetFrameNumber</a> : Get current USB Frame Number. </p>
627 <a name="structARM__USBD__CAPABILITIES" id="structARM__USBD__CAPABILITIES"></a>
628 <h2 class="memtitle"><span class="permalink"><a href="#structARM__USBD__CAPABILITIES">◆ </a></span>ARM_USBD_CAPABILITIES</h2>
630 <div class="memitem">
631 <div class="memproto">
632 <table class="memname">
634 <td class="memname">struct ARM_USBD_CAPABILITIES</td>
637 </div><div class="memdoc">
638 <div class="textblock"><p>USB Device Driver Capabilities. </p>
639 <p>A USB Device driver can be implemented with different capabilities. The data fields of this structure encode the capabilities implemented by this driver.</p>
640 <p><b>Returned by:</b></p><ul>
641 <li><a class="el" href="group__usbd__interface__gr.html#ga178d01ab7896e1c675b90bbccfe8ea7d">ARM_USBD_GetCapabilities</a></li>
643 <dl class="section note"><dt>Note</dt><dd>The struct must remain unchanged. </dd></dl>
644 </div><table class="fieldtable">
645 <tr><th colspan="3">Data Fields</th></tr>
646 <tr><td class="fieldtype">
647 <a id="a6673fc1aa13f62122ecf51e52a605c6e" name="a6673fc1aa13f62122ecf51e52a605c6e"></a>uint32_t</td>
648 <td class="fieldname">
649 vbus_detection: 1</td>
650 <td class="fielddoc">
651 VBUS detection. </td></tr>
652 <tr><td class="fieldtype">
653 <a id="a53f95b9ecb7c84197947e7542501c7d3" name="a53f95b9ecb7c84197947e7542501c7d3"></a>uint32_t</td>
654 <td class="fieldname">
655 event_vbus_on: 1</td>
656 <td class="fielddoc">
657 Signal VBUS On event. </td></tr>
658 <tr><td class="fieldtype">
659 <a id="a72d905bc20735bafda40d73c91829709" name="a72d905bc20735bafda40d73c91829709"></a>uint32_t</td>
660 <td class="fieldname">
661 event_vbus_off: 1</td>
662 <td class="fielddoc">
663 Signal VBUS Off event. </td></tr>
664 <tr><td class="fieldtype">
665 <a id="aa43c4c21b173ada1b6b7568956f0d650" name="aa43c4c21b173ada1b6b7568956f0d650"></a>uint32_t</td>
666 <td class="fieldname">
668 <td class="fielddoc">
669 Reserved (must be zero) </td></tr>
674 <a name="structARM__USBD__STATE" id="structARM__USBD__STATE"></a>
675 <h2 class="memtitle"><span class="permalink"><a href="#structARM__USBD__STATE">◆ </a></span>ARM_USBD_STATE</h2>
677 <div class="memitem">
678 <div class="memproto">
679 <table class="memname">
681 <td class="memname">struct ARM_USBD_STATE</td>
684 </div><div class="memdoc">
685 <div class="textblock"><p>USB Device State. </p>
686 <p>This structure stores information about the state of the USB Device. The data fields encode the established speed, whether the device is powered and active.</p>
687 <p><b>Returned by:</b></p><ul>
688 <li><a class="el" href="group__usbd__interface__gr.html#ga7624d6b2cbe5e6ab5016206ce641eee2">ARM_USBD_DeviceGetState</a> </li>
690 </div><table class="fieldtable">
691 <tr><th colspan="3">Data Fields</th></tr>
692 <tr><td class="fieldtype">
693 <a id="aa961d5fb2bd3d2960578f1ac3b903070" name="aa961d5fb2bd3d2960578f1ac3b903070"></a>uint32_t</td>
694 <td class="fieldname">
696 <td class="fielddoc">
697 USB Device VBUS flag. </td></tr>
698 <tr><td class="fieldtype">
699 <a id="a220859a8b5da0232739a11cbe7f79fc5" name="a220859a8b5da0232739a11cbe7f79fc5"></a>uint32_t</td>
700 <td class="fieldname">
702 <td class="fielddoc">
703 USB Device speed setting (ARM_USB_SPEED_xxx) </td></tr>
704 <tr><td class="fieldtype">
705 <a id="ab22b96a3efad48f5a542f46c1b224800" name="ab22b96a3efad48f5a542f46c1b224800"></a>uint32_t</td>
706 <td class="fieldname">
708 <td class="fielddoc">
709 USB Device active flag. </td></tr>
710 <tr><td class="fieldtype">
711 <a id="aa43c4c21b173ada1b6b7568956f0d650" name="aa43c4c21b173ada1b6b7568956f0d650"></a>uint32_t</td>
712 <td class="fieldname">
714 <td class="fielddoc">
720 <h2 class="groupheader">Typedef Documentation</h2>
721 <a id="ga7c1878799699ddd34cec696da499f7bd" name="ga7c1878799699ddd34cec696da499f7bd"></a>
722 <h2 class="memtitle"><span class="permalink"><a href="#ga7c1878799699ddd34cec696da499f7bd">◆ </a></span>ARM_USBD_SignalDeviceEvent_t</h2>
724 <div class="memitem">
725 <div class="memproto">
726 <table class="memname">
728 <td class="memname">ARM_USBD_SignalDeviceEvent_t</td>
731 </div><div class="memdoc">
733 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a> : Signal USB Device Event. </p>
734 <p>Provides the typedef for the callback function <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a>.</p>
735 <p><b>Parameter for:</b></p><ul>
736 <li><a class="el" href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81">ARM_USBD_Initialize</a> </li>
741 <a id="gaae754763700fc5059a6bde57ea2d4e2c" name="gaae754763700fc5059a6bde57ea2d4e2c"></a>
742 <h2 class="memtitle"><span class="permalink"><a href="#gaae754763700fc5059a6bde57ea2d4e2c">◆ </a></span>ARM_USBD_SignalEndpointEvent_t</h2>
744 <div class="memitem">
745 <div class="memproto">
746 <table class="memname">
748 <td class="memname">ARM_USBD_SignalEndpointEvent_t</td>
751 </div><div class="memdoc">
753 <p>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a> : Signal USB Endpoint Event. </p>
754 <p>Provides the typedef for the callback function <a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a>.</p>
755 <p><b>Parameter for:</b></p><ul>
756 <li><a class="el" href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81">ARM_USBD_Initialize</a> </li>
761 <h2 class="groupheader">Function Documentation</h2>
762 <a id="ga1dcb8b7790f0e3613ee3da77e5fd18fc" name="ga1dcb8b7790f0e3613ee3da77e5fd18fc"></a>
763 <h2 class="memtitle"><span class="permalink"><a href="#ga1dcb8b7790f0e3613ee3da77e5fd18fc">◆ </a></span>ARM_USBD_GetVersion()</h2>
765 <div class="memitem">
766 <div class="memproto">
767 <table class="memname">
769 <td class="memname"><a class="el" href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a> ARM_USBD_GetVersion </td>
771 <td class="paramtype">void </td>
772 <td class="paramname"></td><td>)</td>
776 </div><div class="memdoc">
778 <p>Get driver version. </p>
779 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a></dd></dl>
780 <p>The function <b>ARM_USBD_GetVersion</b> returns version information of the driver implementation in <a class="el" href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a></p><ul>
781 <li>API version is the version of the CMSIS-Driver specification used to implement this driver.</li>
782 <li>Driver version is source code version of the actual driver implementation.</li>
784 <p>Example: </p><div class="fragment"><div class="line"><span class="keyword">extern</span> <a class="code hl_struct" href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">ARM_DRIVER_USBD</a> Driver_USBD0;</div>
785 <div class="line"><a class="code hl_struct" href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">ARM_DRIVER_USBD</a> *drv_info;</div>
786 <div class="line"> </div>
787 <div class="line"><span class="keywordtype">void</span> setup_usbd (<span class="keywordtype">void</span>) {</div>
788 <div class="line"> <a class="code hl_struct" href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a> version;</div>
789 <div class="line"> </div>
790 <div class="line"> drv_info = &Driver_USBD0; </div>
791 <div class="line"> version = drv_info-><a class="code hl_variable" href="group__usbd__interface__gr.html#a30afd9cb3113c037b5f1926f5ef93b59">GetVersion</a> ();</div>
792 <div class="line"> <span class="keywordflow">if</span> (version.<a class="code hl_variable" href="group__common__drv__gr.html#ad180da20fbde1d3dafc074af87c19540">api</a> < 0x10A) { <span class="comment">// requires at minimum API version 1.10 or higher</span></div>
793 <div class="line"> <span class="comment">// error handling</span></div>
794 <div class="line"> <span class="keywordflow">return</span>;</div>
795 <div class="line"> }</div>
796 <div class="line">}</div>
797 <div class="ttc" id="agroup__common__drv__gr_html_ad180da20fbde1d3dafc074af87c19540"><div class="ttname"><a href="group__common__drv__gr.html#ad180da20fbde1d3dafc074af87c19540">ARM_DRIVER_VERSION::api</a></div><div class="ttdeci">uint16_t api</div><div class="ttdoc">API version.</div><div class="ttdef"><b>Definition:</b> Driver_Common.h:47</div></div>
798 <div class="ttc" id="agroup__common__drv__gr_html_structARM__DRIVER__VERSION"><div class="ttname"><a href="group__common__drv__gr.html#structARM__DRIVER__VERSION">ARM_DRIVER_VERSION</a></div><div class="ttdoc">Driver Version.</div><div class="ttdef"><b>Definition:</b> Driver_Common.h:46</div></div>
799 <div class="ttc" id="agroup__usbd__interface__gr_html_a30afd9cb3113c037b5f1926f5ef93b59"><div class="ttname"><a href="group__usbd__interface__gr.html#a30afd9cb3113c037b5f1926f5ef93b59">ARM_DRIVER_USBD::GetVersion</a></div><div class="ttdeci">ARM_DRIVER_VERSION(* GetVersion)(void)</div><div class="ttdoc">Pointer to ARM_USBD_GetVersion : Get driver version.</div><div class="ttdef"><b>Definition:</b> Driver_USBD.h:250</div></div>
800 <div class="ttc" id="agroup__usbd__interface__gr_html_structARM__DRIVER__USBD"><div class="ttname"><a href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">ARM_DRIVER_USBD</a></div><div class="ttdoc">Access structure of the USB Device Driver.</div><div class="ttdef"><b>Definition:</b> Driver_USBD.h:249</div></div>
801 </div><!-- fragment -->
804 <a id="ga178d01ab7896e1c675b90bbccfe8ea7d" name="ga178d01ab7896e1c675b90bbccfe8ea7d"></a>
805 <h2 class="memtitle"><span class="permalink"><a href="#ga178d01ab7896e1c675b90bbccfe8ea7d">◆ </a></span>ARM_USBD_GetCapabilities()</h2>
807 <div class="memitem">
808 <div class="memproto">
809 <table class="memname">
811 <td class="memname"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a> ARM_USBD_GetCapabilities </td>
813 <td class="paramtype">void </td>
814 <td class="paramname"></td><td>)</td>
818 </div><div class="memdoc">
820 <p>Get driver capabilities. </p>
821 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a></dd></dl>
822 <p>The function <b>ARM_USBD_GetCapabilities</b> returns information about capabilities in this driver implementation. The data fields of the structure <a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a> encode various capabilities, for example if the hardware can create signal events using the <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a> callback function.</p>
823 <p>Example: </p><div class="fragment"><div class="line"><span class="keyword">extern</span> <a class="code hl_struct" href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">ARM_DRIVER_USBD</a> Driver_USBD0;</div>
824 <div class="line"><a class="code hl_struct" href="group__usbd__interface__gr.html#structARM__DRIVER__USBD">ARM_DRIVER_USBD</a> *drv_info;</div>
825 <div class="line"> </div>
826 <div class="line"><span class="keywordtype">void</span> read_capabilities (<span class="keywordtype">void</span>) {</div>
827 <div class="line"> <a class="code hl_struct" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a> drv_capabilities;</div>
828 <div class="line"> </div>
829 <div class="line"> drv_info = &Driver_USBD0; </div>
830 <div class="line"> drv_capabilities = drv_info-><a class="code hl_variable" href="group__usbd__interface__gr.html#a1de7fb4fa3f8ba93ce288af961d22124">GetCapabilities</a> ();</div>
831 <div class="line"> <span class="comment">// interrogate capabilities</span></div>
832 <div class="line"> </div>
833 <div class="line">}</div>
834 <div class="ttc" id="agroup__usbd__interface__gr_html_a1de7fb4fa3f8ba93ce288af961d22124"><div class="ttname"><a href="group__usbd__interface__gr.html#a1de7fb4fa3f8ba93ce288af961d22124">ARM_DRIVER_USBD::GetCapabilities</a></div><div class="ttdeci">ARM_USBD_CAPABILITIES(* GetCapabilities)(void)</div><div class="ttdoc">Pointer to ARM_USBD_GetCapabilities : Get driver capabilities.</div><div class="ttdef"><b>Definition:</b> Driver_USBD.h:251</div></div>
835 <div class="ttc" id="agroup__usbd__interface__gr_html_structARM__USBD__CAPABILITIES"><div class="ttname"><a href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a></div><div class="ttdoc">USB Device Driver Capabilities.</div><div class="ttdef"><b>Definition:</b> Driver_USBD.h:238</div></div>
836 </div><!-- fragment -->
839 <a id="ga60b95c9c0c6767ff5938464cfd748f81" name="ga60b95c9c0c6767ff5938464cfd748f81"></a>
840 <h2 class="memtitle"><span class="permalink"><a href="#ga60b95c9c0c6767ff5938464cfd748f81">◆ </a></span>ARM_USBD_Initialize()</h2>
842 <div class="memitem">
843 <div class="memproto">
844 <table class="memname">
846 <td class="memname">int32_t ARM_USBD_Initialize </td>
848 <td class="paramtype"><a class="el" href="group__usbd__interface__gr.html#ga7c1878799699ddd34cec696da499f7bd">ARM_USBD_SignalDeviceEvent_t</a> </td>
849 <td class="paramname"><em>cb_device_event</em>, </td>
852 <td class="paramkey"></td>
854 <td class="paramtype"><a class="el" href="group__usbd__interface__gr.html#gaae754763700fc5059a6bde57ea2d4e2c">ARM_USBD_SignalEndpointEvent_t</a> </td>
855 <td class="paramname"><em>cb_endpoint_event</em> </td>
863 </div><div class="memdoc">
865 <p>Initialize USB Device Interface. </p>
866 <dl class="params"><dt>Parameters</dt><dd>
867 <table class="params">
868 <tr><td class="paramdir">[in]</td><td class="paramname">cb_device_event</td><td>Pointer to <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a> </td></tr>
869 <tr><td class="paramdir">[in]</td><td class="paramname">cb_endpoint_event</td><td>Pointer to <a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a> </td></tr>
873 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
874 <p>The function <b>ARM_USBD_Initialize</b> initializes the USB Device interface. It is called when the middleware component starts operation.</p>
875 <p>The function performs the following operations:</p><ul>
876 <li>Initializes the resources needed for the USBD interface.</li>
877 <li>Registers the <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a> callback function.</li>
878 <li>Registers the <a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a> callback function.</li>
880 <p>The parameter <em>cb_device_event</em> is a pointer to the <a class="el" href="group__usbd__interface__gr.html#gafe58a4db1d26b21ca5d418ee49e103a5">ARM_USBD_SignalDeviceEvent</a> callback function; use a NULL pointer when no device callback signals are required. <br />
881 The parameter <em>cb_endpoint_event</em> is a pointer to the <a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a> callback function.</p>
882 <p><b>Example:</b> </p><ul>
883 <li>see <a class="el" href="group__usbd__interface__gr.html">USB Device Interface</a> - Driver Functions </li>
888 <a id="gafaead6713f141be1734de0110eda966b" name="gafaead6713f141be1734de0110eda966b"></a>
889 <h2 class="memtitle"><span class="permalink"><a href="#gafaead6713f141be1734de0110eda966b">◆ </a></span>ARM_USBD_Uninitialize()</h2>
891 <div class="memitem">
892 <div class="memproto">
893 <table class="memname">
895 <td class="memname">int32_t ARM_USBD_Uninitialize </td>
897 <td class="paramtype">void </td>
898 <td class="paramname"></td><td>)</td>
902 </div><div class="memdoc">
904 <p>De-initialize USB Device Interface. </p>
905 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
906 <p>The function <b>ARM_USBD_Uninitialize</b> de-initializes the resources of USBD interface.</p>
907 <p>It is called when the middleware component stops operation and releases the software resources used by the interface. </p>
911 <a id="gaa5bdaac19f6df30c6e569abef17cdb42" name="gaa5bdaac19f6df30c6e569abef17cdb42"></a>
912 <h2 class="memtitle"><span class="permalink"><a href="#gaa5bdaac19f6df30c6e569abef17cdb42">◆ </a></span>ARM_USBD_PowerControl()</h2>
914 <div class="memitem">
915 <div class="memproto">
916 <table class="memname">
918 <td class="memname">int32_t ARM_USBD_PowerControl </td>
920 <td class="paramtype"><a class="el" href="group__common__drv__gr.html#ga47d6d7c31f88f3b8ae4aaf9d8444afa5">ARM_POWER_STATE</a> </td>
921 <td class="paramname"><em>state</em></td><td>)</td>
925 </div><div class="memdoc">
927 <p>Control USB Device Interface Power. </p>
928 <dl class="params"><dt>Parameters</dt><dd>
929 <table class="params">
930 <tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>Power state </td></tr>
934 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
935 <p>The function <b>ARM_USBD_PowerControl</b> operates the power modes of the USB Device interface. <br />
937 <p>The parameter <em>state</em> sets the operation and can have the following values:</p><ul>
938 <li><a class="el" href="Driver__Common_8h.html#ga47d6d7c31f88f3b8ae4aaf9d8444afa5abed52b77a9ce4775570e44a842b1295e">ARM_POWER_FULL</a> : set-up peripheral for data transfers, enable interrupts (NVIC) and optionally DMA. Can be called multiple times. If the peripheral is already in this mode the function performs no operation and returns with <a class="el" href="group__execution__status.html#ga85752c5de59e8adeb001e35ff5be6be7">ARM_DRIVER_OK</a>.</li>
939 <li><a class="el" href="Driver__Common_8h.html#ga47d6d7c31f88f3b8ae4aaf9d8444afa5a9ef9e57cbcc948d0e22314e73dc8c434">ARM_POWER_LOW</a> : may use power saving. Returns <a class="el" href="group__execution__status.html#ga2efa59e480d82697795439220e6884e4">ARM_DRIVER_ERROR_UNSUPPORTED</a> when not implemented.</li>
940 <li><a class="el" href="Driver__Common_8h.html#ga47d6d7c31f88f3b8ae4aaf9d8444afa5ab6f5becc85ebd51c3dd2524a95d2ca35">ARM_POWER_OFF</a> : terminates any pending data transfers, disables peripheral, disables related interrupts and DMA.</li>
942 <p>Refer to <a class="el" href="theoryOperation.html#CallSequence">Function Call Sequence</a> for more information. </p>
946 <a id="ga99207f7ff5e97a7f65754eab7f775fca" name="ga99207f7ff5e97a7f65754eab7f775fca"></a>
947 <h2 class="memtitle"><span class="permalink"><a href="#ga99207f7ff5e97a7f65754eab7f775fca">◆ </a></span>ARM_USBD_DeviceConnect()</h2>
949 <div class="memitem">
950 <div class="memproto">
951 <table class="memname">
953 <td class="memname">int32_t ARM_USBD_DeviceConnect </td>
955 <td class="paramtype">void </td>
956 <td class="paramname"></td><td>)</td>
960 </div><div class="memdoc">
962 <p>Connect USB Device. </p>
963 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
964 <p>The function <b>ARM_USBD_DeviceConnect</b> signals to the host that the device is connected. </p>
968 <a id="ga37234abecbb63e4e739f9676e489d2d1" name="ga37234abecbb63e4e739f9676e489d2d1"></a>
969 <h2 class="memtitle"><span class="permalink"><a href="#ga37234abecbb63e4e739f9676e489d2d1">◆ </a></span>ARM_USBD_DeviceDisconnect()</h2>
971 <div class="memitem">
972 <div class="memproto">
973 <table class="memname">
975 <td class="memname">int32_t ARM_USBD_DeviceDisconnect </td>
977 <td class="paramtype">void </td>
978 <td class="paramname"></td><td>)</td>
982 </div><div class="memdoc">
984 <p>Disconnect USB Device. </p>
985 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
986 <p>The function <b>ARM_USBD_DeviceDisconnect</b> signals to the host that the device is disconnected. </p>
990 <a id="ga7624d6b2cbe5e6ab5016206ce641eee2" name="ga7624d6b2cbe5e6ab5016206ce641eee2"></a>
991 <h2 class="memtitle"><span class="permalink"><a href="#ga7624d6b2cbe5e6ab5016206ce641eee2">◆ </a></span>ARM_USBD_DeviceGetState()</h2>
993 <div class="memitem">
994 <div class="memproto">
995 <table class="memname">
997 <td class="memname"><a class="el" href="group__usbd__interface__gr.html#structARM__USBD__STATE">ARM_USBD_STATE</a> ARM_USBD_DeviceGetState </td>
999 <td class="paramtype">void </td>
1000 <td class="paramname"></td><td>)</td>
1004 </div><div class="memdoc">
1006 <p>Get current USB Device State. </p>
1007 <dl class="section return"><dt>Returns</dt><dd>Device State <a class="el" href="group__usbd__interface__gr.html#structARM__USBD__STATE">ARM_USBD_STATE</a></dd></dl>
1008 <p>Retrieves the current USB device state. </p>
1012 <a id="ga7e149a4c6a0196da24a44f4fada75fb1" name="ga7e149a4c6a0196da24a44f4fada75fb1"></a>
1013 <h2 class="memtitle"><span class="permalink"><a href="#ga7e149a4c6a0196da24a44f4fada75fb1">◆ </a></span>ARM_USBD_DeviceRemoteWakeup()</h2>
1015 <div class="memitem">
1016 <div class="memproto">
1017 <table class="memname">
1019 <td class="memname">int32_t ARM_USBD_DeviceRemoteWakeup </td>
1021 <td class="paramtype">void </td>
1022 <td class="paramname"></td><td>)</td>
1026 </div><div class="memdoc">
1028 <p>Trigger USB Remote Wakeup. </p>
1029 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1030 <p>The function <b>ARM_USBD_DeviceRemoteWakeup</b> signals remote wakeup to the host. </p>
1034 <a id="gae66f696584e25fb2ddabe9070fa38670" name="gae66f696584e25fb2ddabe9070fa38670"></a>
1035 <h2 class="memtitle"><span class="permalink"><a href="#gae66f696584e25fb2ddabe9070fa38670">◆ </a></span>ARM_USBD_DeviceSetAddress()</h2>
1037 <div class="memitem">
1038 <div class="memproto">
1039 <table class="memname">
1041 <td class="memname">int32_t ARM_USBD_DeviceSetAddress </td>
1043 <td class="paramtype">uint8_t </td>
1044 <td class="paramname"><em>dev_addr</em></td><td>)</td>
1048 </div><div class="memdoc">
1050 <p>Set USB Device Address. </p>
1051 <dl class="params"><dt>Parameters</dt><dd>
1052 <table class="params">
1053 <tr><td class="paramdir">[in]</td><td class="paramname">dev_addr</td><td>Device Address </td></tr>
1057 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1058 <p>Assigns an address to the device. </p><dl class="section note"><dt>Note</dt><dd>This function is called after status stage of the Set Address request (after IN packet in status stage was sent with the old address). </dd></dl>
1062 <a id="ga6bc0ebf699a0f28330f21cab83f85e9e" name="ga6bc0ebf699a0f28330f21cab83f85e9e"></a>
1063 <h2 class="memtitle"><span class="permalink"><a href="#ga6bc0ebf699a0f28330f21cab83f85e9e">◆ </a></span>ARM_USBD_ReadSetupPacket()</h2>
1065 <div class="memitem">
1066 <div class="memproto">
1067 <table class="memname">
1069 <td class="memname">int32_t ARM_USBD_ReadSetupPacket </td>
1071 <td class="paramtype">uint8_t * </td>
1072 <td class="paramname"><em>setup</em></td><td>)</td>
1076 </div><div class="memdoc">
1078 <p>Read setup packet received over Control Endpoint. </p>
1079 <dl class="params"><dt>Parameters</dt><dd>
1080 <table class="params">
1081 <tr><td class="paramdir">[out]</td><td class="paramname">setup</td><td>Pointer to buffer for setup packet </td></tr>
1085 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1086 <p>The function <b>ARM_USBD_ReadSetupPacket</b> reads the last SETUP packet (8 bytes) that was received over Control Endpoint (Endpoint 0) which is indicated by <a class="el" href="group__USBD__ep__events.html#gaa0814f6880f4c0ac302ac9ebc8170739">ARM_USBD_EVENT_SETUP</a> event.</p>
1087 <p><b>See also:</b></p><ul>
1088 <li><a class="el" href="group__usbd__interface__gr.html#ga9aa5bc5cb45084194a77fae1457f6575">ARM_USBD_SignalEndpointEvent</a> </li>
1093 <a id="ga62d7d5bdcf9ca7bf7e6d8434368abad8" name="ga62d7d5bdcf9ca7bf7e6d8434368abad8"></a>
1094 <h2 class="memtitle"><span class="permalink"><a href="#ga62d7d5bdcf9ca7bf7e6d8434368abad8">◆ </a></span>ARM_USBD_EndpointConfigure()</h2>
1096 <div class="memitem">
1097 <div class="memproto">
1098 <table class="memname">
1100 <td class="memname">int32_t ARM_USBD_EndpointConfigure </td>
1102 <td class="paramtype">uint8_t </td>
1103 <td class="paramname"><em>ep_addr</em>, </td>
1106 <td class="paramkey"></td>
1108 <td class="paramtype">uint8_t </td>
1109 <td class="paramname"><em>ep_type</em>, </td>
1112 <td class="paramkey"></td>
1114 <td class="paramtype">uint16_t </td>
1115 <td class="paramname"><em>ep_max_packet_size</em> </td>
1123 </div><div class="memdoc">
1125 <p>Configure USB Endpoint. </p>
1126 <dl class="params"><dt>Parameters</dt><dd>
1127 <table class="params">
1128 <tr><td class="paramdir">[in]</td><td class="paramname">ep_addr</td><td>Endpoint Address<ul>
1129 <li>ep_addr.0..3: Address</li>
1130 <li>ep_addr.7: Direction </li>
1133 <tr><td class="paramdir">[in]</td><td class="paramname">ep_type</td><td>Endpoint Type (ARM_USB_ENDPOINT_xxx) </td></tr>
1134 <tr><td class="paramdir">[in]</td><td class="paramname">ep_max_packet_size</td><td>Endpoint Maximum Packet Size </td></tr>
1138 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1140 The function <b>ARM_USBD_EndpointConfigure</b> configures an endpoint for transfers. </p>
1144 <a id="gaca913df5188dc0f0c4f707b57c2a88fc" name="gaca913df5188dc0f0c4f707b57c2a88fc"></a>
1145 <h2 class="memtitle"><span class="permalink"><a href="#gaca913df5188dc0f0c4f707b57c2a88fc">◆ </a></span>ARM_USBD_EndpointUnconfigure()</h2>
1147 <div class="memitem">
1148 <div class="memproto">
1149 <table class="memname">
1151 <td class="memname">int32_t ARM_USBD_EndpointUnconfigure </td>
1153 <td class="paramtype">uint8_t </td>
1154 <td class="paramname"><em>ep_addr</em></td><td>)</td>
1158 </div><div class="memdoc">
1160 <p>Unconfigure USB Endpoint. </p>
1161 <dl class="params"><dt>Parameters</dt><dd>
1162 <table class="params">
1163 <tr><td class="paramdir">[in]</td><td class="paramname">ep_addr</td><td>Endpoint Address<ul>
1164 <li>ep_addr.0..3: Address</li>
1165 <li>ep_addr.7: Direction </li>
1171 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1172 <p>The function <b>ARM_USBD_EndpointUnconfigure</b> de-configures the specified endpoint.</p>
1173 <p>The parameter <em>ep_addr</em> specifies the endpoint address. </p>
1177 <a id="ga9502cd7b8e4c583920fccadc4ccf7975" name="ga9502cd7b8e4c583920fccadc4ccf7975"></a>
1178 <h2 class="memtitle"><span class="permalink"><a href="#ga9502cd7b8e4c583920fccadc4ccf7975">◆ </a></span>ARM_USBD_EndpointStall()</h2>
1180 <div class="memitem">
1181 <div class="memproto">
1182 <table class="memname">
1184 <td class="memname">int32_t ARM_USBD_EndpointStall </td>
1186 <td class="paramtype">uint8_t </td>
1187 <td class="paramname"><em>ep_addr</em>, </td>
1190 <td class="paramkey"></td>
1192 <td class="paramtype">bool </td>
1193 <td class="paramname"><em>stall</em> </td>
1201 </div><div class="memdoc">
1203 <p>Set/Clear Stall for USB Endpoint. </p>
1204 <dl class="params"><dt>Parameters</dt><dd>
1205 <table class="params">
1206 <tr><td class="paramdir">[in]</td><td class="paramname">ep_addr</td><td>Endpoint Address<ul>
1207 <li>ep_addr.0..3: Address</li>
1208 <li>ep_addr.7: Direction </li>
1211 <tr><td class="paramdir">[in]</td><td class="paramname">stall</td><td>Operation<ul>
1212 <li><b>false</b> Clear</li>
1213 <li><b>true</b> Set </li>
1219 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1220 <p>The function <b>ARM_USBD_EndpointStall</b> sets or clears stall condition for the specified endpoint.</p>
1221 <p>The parameter <em>ep_addr</em> specifies the endpoint address. <br />
1222 The parameter <em>stall</em> is a boolean parameter. </p>
1226 <a id="ga6e69ad097553125bb01a22dc719e0d30" name="ga6e69ad097553125bb01a22dc719e0d30"></a>
1227 <h2 class="memtitle"><span class="permalink"><a href="#ga6e69ad097553125bb01a22dc719e0d30">◆ </a></span>ARM_USBD_EndpointTransfer()</h2>
1229 <div class="memitem">
1230 <div class="memproto">
1231 <table class="memname">
1233 <td class="memname">int32_t ARM_USBD_EndpointTransfer </td>
1235 <td class="paramtype">uint8_t </td>
1236 <td class="paramname"><em>ep_addr</em>, </td>
1239 <td class="paramkey"></td>
1241 <td class="paramtype">uint8_t * </td>
1242 <td class="paramname"><em>data</em>, </td>
1245 <td class="paramkey"></td>
1247 <td class="paramtype">uint32_t </td>
1248 <td class="paramname"><em>num</em> </td>
1256 </div><div class="memdoc">
1258 <p>Read data from or Write data to USB Endpoint. </p>
1259 <dl class="params"><dt>Parameters</dt><dd>
1260 <table class="params">
1261 <tr><td class="paramdir">[in]</td><td class="paramname">ep_addr</td><td>Endpoint Address<ul>
1262 <li>ep_addr.0..3: Address</li>
1263 <li>ep_addr.7: Direction </li>
1266 <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>Pointer to buffer for data to read or with data to write </td></tr>
1267 <tr><td class="paramdir">[in]</td><td class="paramname">num</td><td>Number of data bytes to transfer </td></tr>
1271 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1272 <p>The function <b>ARM_USBD_EndpointTransfer</b> reads from or writes data to an USB Endpoint.</p>
1273 <p>The parameter <em>ep_addr</em> specifies the endpoint address. <br />
1274 The parameter <em>data</em> is a buffer for data to read or data to write. <br />
1275 The parameter <em>num</em> is the number of bytes to transfer (must be multiple of endpoint maximum packet size for Read transfers).</p>
1276 <p>The function is non-blocking and returns as soon as the driver starts the operation on the specified endpoint. During the operation it is not allowed to call this function again on the same endpoint. Also the data buffer must stay allocated and the contents of data must not be modified.</p>
1277 <p>Direction in the endpoint address specifies the type of transfer:</p><ul>
1278 <li>Endpoint Read for OUT endpoint (direction = 0)</li>
1279 <li>Endpoint Write for IN endpoint (direction = 1)</li>
1281 <p>Endpoint Read is finished when the requested number of data bytes have been received or when a short packet or ZLP (Zero-Length Packet) has been received. Completion of operation is indicated by <a class="el" href="group__USBD__ep__events.html#ga35f7340508acb5fe7a5f43bbcac1887a">ARM_USBD_EVENT_OUT</a> event. Number of successfully received data bytes can be retrieved by calling <a class="el" href="group__usbd__interface__gr.html#gab81fac01522a4d504edcb7b7d3abba6c">ARM_USBD_EndpointTransferGetResult</a>.</p>
1282 <p>Endpoint Write is finished when the requested number of data bytes have been sent. Completion of operation is indicated by <a class="el" href="group__USBD__ep__events.html#ga375d3d8f363a056ff607c5ab3b92a864">ARM_USBD_EVENT_IN</a> event. Number of successfully sent data bytes can be retrieved by calling <a class="el" href="group__usbd__interface__gr.html#gab81fac01522a4d504edcb7b7d3abba6c">ARM_USBD_EndpointTransferGetResult</a>.</p>
1283 <p>Transfer operation can be aborted by calling <a class="el" href="group__usbd__interface__gr.html#ga7cf3bcc105dbb8cbdc915e8caca8529e">ARM_USBD_EndpointTransferAbort</a>. </p>
1287 <a id="gab81fac01522a4d504edcb7b7d3abba6c" name="gab81fac01522a4d504edcb7b7d3abba6c"></a>
1288 <h2 class="memtitle"><span class="permalink"><a href="#gab81fac01522a4d504edcb7b7d3abba6c">◆ </a></span>ARM_USBD_EndpointTransferGetResult()</h2>
1290 <div class="memitem">
1291 <div class="memproto">
1292 <table class="memname">
1294 <td class="memname">uint32_t ARM_USBD_EndpointTransferGetResult </td>
1296 <td class="paramtype">uint8_t </td>
1297 <td class="paramname"><em>ep_addr</em></td><td>)</td>
1301 </div><div class="memdoc">
1303 <p>Get result of USB Endpoint transfer. </p>
1304 <dl class="params"><dt>Parameters</dt><dd>
1305 <table class="params">
1306 <tr><td class="paramdir">[in]</td><td class="paramname">ep_addr</td><td>Endpoint Address<ul>
1307 <li>ep_addr.0..3: Address</li>
1308 <li>ep_addr.7: Direction </li>
1314 <dl class="section return"><dt>Returns</dt><dd>number of successfully transferred data bytes</dd></dl>
1315 <p>The function <b>ARM_USBD_EndpointTransferGetResult</b> returns the number of successfully transferred data bytes started by <a class="el" href="group__usbd__interface__gr.html#ga6e69ad097553125bb01a22dc719e0d30">ARM_USBD_EndpointTransfer</a>.</p>
1316 <p>The parameter <em>ep_addr</em> specifies the endpoint address. </p>
1320 <a id="ga7cf3bcc105dbb8cbdc915e8caca8529e" name="ga7cf3bcc105dbb8cbdc915e8caca8529e"></a>
1321 <h2 class="memtitle"><span class="permalink"><a href="#ga7cf3bcc105dbb8cbdc915e8caca8529e">◆ </a></span>ARM_USBD_EndpointTransferAbort()</h2>
1323 <div class="memitem">
1324 <div class="memproto">
1325 <table class="memname">
1327 <td class="memname">int32_t ARM_USBD_EndpointTransferAbort </td>
1329 <td class="paramtype">uint8_t </td>
1330 <td class="paramname"><em>ep_addr</em></td><td>)</td>
1334 </div><div class="memdoc">
1336 <p>Abort current USB Endpoint transfer. </p>
1337 <dl class="params"><dt>Parameters</dt><dd>
1338 <table class="params">
1339 <tr><td class="paramdir">[in]</td><td class="paramname">ep_addr</td><td>Endpoint Address<ul>
1340 <li>ep_addr.0..3: Address</li>
1341 <li>ep_addr.7: Direction </li>
1347 <dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__execution__status.html">Status Error Codes</a></dd></dl>
1348 <p>The function <b>ARM_USBD_EndpointTransferAbort</b> aborts the transfer to an endpoint started by <a class="el" href="group__usbd__interface__gr.html#ga6e69ad097553125bb01a22dc719e0d30">ARM_USBD_EndpointTransfer</a>.</p>
1349 <p>The parameter <em>ep_addr</em> specifies the endpoint address. </p>
1353 <a id="ga4cd050b8343407fe465a27ad1cb7c264" name="ga4cd050b8343407fe465a27ad1cb7c264"></a>
1354 <h2 class="memtitle"><span class="permalink"><a href="#ga4cd050b8343407fe465a27ad1cb7c264">◆ </a></span>ARM_USBD_GetFrameNumber()</h2>
1356 <div class="memitem">
1357 <div class="memproto">
1358 <table class="memname">
1360 <td class="memname">uint16_t ARM_USBD_GetFrameNumber </td>
1362 <td class="paramtype">void </td>
1363 <td class="paramname"></td><td>)</td>
1367 </div><div class="memdoc">
1369 <p>Get current USB Frame Number. </p>
1370 <dl class="section return"><dt>Returns</dt><dd>Frame Number</dd></dl>
1371 <p>Retrieves the sequential 11-bit frame number of the last Start of Frame (SOF) packet. </p>
1375 <a id="gafe58a4db1d26b21ca5d418ee49e103a5" name="gafe58a4db1d26b21ca5d418ee49e103a5"></a>
1376 <h2 class="memtitle"><span class="permalink"><a href="#gafe58a4db1d26b21ca5d418ee49e103a5">◆ </a></span>ARM_USBD_SignalDeviceEvent()</h2>
1378 <div class="memitem">
1379 <div class="memproto">
1380 <table class="memname">
1382 <td class="memname">void ARM_USBD_SignalDeviceEvent </td>
1384 <td class="paramtype">uint32_t </td>
1385 <td class="paramname"><em>event</em></td><td>)</td>
1389 </div><div class="memdoc">
1391 <p>Signal USB Device Event. </p>
1392 <dl class="params"><dt>Parameters</dt><dd>
1393 <table class="params">
1394 <tr><td class="paramdir">[in]</td><td class="paramname">event</td><td><a class="el" href="group__USBD__dev__events.html">USBD Device Events</a> </td></tr>
1398 <dl class="section return"><dt>Returns</dt><dd>none</dd></dl>
1399 <p>The function <b>ARM_USBD_SignalDeviceEvent</b> is a callback function registered by the function <a class="el" href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81">ARM_USBD_Initialize</a>.</p>
1400 <p>The parameter <em>event</em> indicates one or more events that occurred during driver operation. Each event is encoded in a separate bit and therefore it is possible to signal multiple events within the same call.</p>
1401 <p>Not every event is necessarily generated by the driver. This depends on the implemented capabilities stored in the data fields of the structure <a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a>, which can be retrieved with the function <a class="el" href="group__usbd__interface__gr.html#ga178d01ab7896e1c675b90bbccfe8ea7d">ARM_USBD_GetCapabilities</a>.</p>
1402 <p>The following events can be generated:</p>
1403 <table class="markdownTable">
1404 <tr class="markdownTableHead">
1405 <th class="markdownTableHeadLeft">Event </th><th class="markdownTableHeadRight">Bit </th><th class="markdownTableHeadLeft">Description </th><th class="markdownTableHeadNone">supported when <a class="el" href="group__usbd__interface__gr.html#structARM__USBD__CAPABILITIES">ARM_USBD_CAPABILITIES</a> </th></tr>
1406 <tr class="markdownTableRowOdd">
1407 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__dev__events.html#ga32546413cfe55154351f74fb56de1045">ARM_USBD_EVENT_VBUS_ON</a> </td><td class="markdownTableBodyRight">0 </td><td class="markdownTableBodyLeft">Occurs when valid VBUS voltage is detected. </td><td class="markdownTableBodyNone">data field <em>event_vbus_on</em> = <span class="XML-Token">1</span> </td></tr>
1408 <tr class="markdownTableRowEven">
1409 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__dev__events.html#ga6810c08a6e6a46ba443899e5ba9c3aec">ARM_USBD_EVENT_VBUS_OFF</a> </td><td class="markdownTableBodyRight">1 </td><td class="markdownTableBodyLeft">Occurs when VBUS voltage is turned off. </td><td class="markdownTableBodyNone">data field <em>event_vbus_off</em> = <span class="XML-Token">1</span> </td></tr>
1410 <tr class="markdownTableRowOdd">
1411 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__dev__events.html#ga489e1b88f7b0361494ca3a8dc73c227a">ARM_USBD_EVENT_RESET</a> </td><td class="markdownTableBodyRight">2 </td><td class="markdownTableBodyLeft">Occurs when USB Reset is detected. </td><td class="markdownTableBodyNone"><em>always supported</em> </td></tr>
1412 <tr class="markdownTableRowEven">
1413 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__dev__events.html#ga689d1e031013d0e66aeef4243490d843">ARM_USBD_EVENT_HIGH_SPEED</a> </td><td class="markdownTableBodyRight">3 </td><td class="markdownTableBodyLeft">Occurs when USB Device is switched to High-speed. </td><td class="markdownTableBodyNone"><em>always supported</em> </td></tr>
1414 <tr class="markdownTableRowOdd">
1415 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__dev__events.html#ga74dc7c0ba71baf285400d5a555224653">ARM_USBD_EVENT_SUSPEND</a> </td><td class="markdownTableBodyRight">4 </td><td class="markdownTableBodyLeft">Occurs when USB Suspend is detected. </td><td class="markdownTableBodyNone"><em>always supported</em> </td></tr>
1416 <tr class="markdownTableRowEven">
1417 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__dev__events.html#ga5b1c9884b237ba7778f79761e5db9f45">ARM_USBD_EVENT_RESUME</a> </td><td class="markdownTableBodyRight">5 </td><td class="markdownTableBodyLeft">Occurs when USB Resume is detected. </td><td class="markdownTableBodyNone"><em>always supported</em> </td></tr>
1422 <a id="ga9aa5bc5cb45084194a77fae1457f6575" name="ga9aa5bc5cb45084194a77fae1457f6575"></a>
1423 <h2 class="memtitle"><span class="permalink"><a href="#ga9aa5bc5cb45084194a77fae1457f6575">◆ </a></span>ARM_USBD_SignalEndpointEvent()</h2>
1425 <div class="memitem">
1426 <div class="memproto">
1427 <table class="memname">
1429 <td class="memname">void ARM_USBD_SignalEndpointEvent </td>
1431 <td class="paramtype">uint8_t </td>
1432 <td class="paramname"><em>ep_addr</em>, </td>
1435 <td class="paramkey"></td>
1437 <td class="paramtype">uint32_t </td>
1438 <td class="paramname"><em>event</em> </td>
1446 </div><div class="memdoc">
1448 <p>Signal USB Endpoint Event. </p>
1449 <dl class="params"><dt>Parameters</dt><dd>
1450 <table class="params">
1451 <tr><td class="paramdir">[in]</td><td class="paramname">ep_addr</td><td>Endpoint Address<ul>
1452 <li>ep_addr.0..3: Address</li>
1453 <li>ep_addr.7: Direction </li>
1456 <tr><td class="paramdir">[in]</td><td class="paramname">event</td><td><a class="el" href="group__USBD__ep__events.html">USBD Endpoint Events</a> </td></tr>
1460 <dl class="section return"><dt>Returns</dt><dd>none</dd></dl>
1461 <p>The function <b>ARM_USBD_SignalEndpointEvent</b> is a callback function registered by the function <a class="el" href="group__usbd__interface__gr.html#ga60b95c9c0c6767ff5938464cfd748f81">ARM_USBD_Initialize</a>.</p>
1462 <p>The argument <em>ep_addr</em> specifies the endpoint. <br />
1463 The parameter <em>event</em> indicates one or more events that occurred during driver operation. Each event is encoded in a separate bit and therefore it is possible to signal multiple events within the same call.</p>
1464 <p>The following events can be generated:</p>
1465 <table class="markdownTable">
1466 <tr class="markdownTableHead">
1467 <th class="markdownTableHeadLeft">Event </th><th class="markdownTableHeadRight">Bit </th><th class="markdownTableHeadLeft">Description </th></tr>
1468 <tr class="markdownTableRowOdd">
1469 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__ep__events.html#gaa0814f6880f4c0ac302ac9ebc8170739">ARM_USBD_EVENT_SETUP</a> </td><td class="markdownTableBodyRight">0 </td><td class="markdownTableBodyLeft">Occurs when SETUP packet is received over Control Endpoint. </td></tr>
1470 <tr class="markdownTableRowEven">
1471 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__ep__events.html#ga35f7340508acb5fe7a5f43bbcac1887a">ARM_USBD_EVENT_OUT</a> </td><td class="markdownTableBodyRight">1 </td><td class="markdownTableBodyLeft">Occurs when data is received over OUT Endpoint. </td></tr>
1472 <tr class="markdownTableRowOdd">
1473 <td class="markdownTableBodyLeft"><a class="el" href="group__USBD__ep__events.html#ga375d3d8f363a056ff607c5ab3b92a864">ARM_USBD_EVENT_IN</a> </td><td class="markdownTableBodyRight">2 </td><td class="markdownTableBodyLeft">Occurs when data is sent over IN Endpoint. </td></tr>
1478 </div><!-- contents -->
1479 </div><!-- doc-content -->
1480 <!-- start footer part -->
1481 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1484 <script type="text/javascript">
1486 writeFooter.call(this);