1
0

a00074_source.html 82 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <meta name="generator" content="Doxygen 1.8.13"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>Lightweight USB stack: usbd_core.h Source File</title>
  9. <link href="../../tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="../../jquery.js"></script>
  11. <script type="text/javascript" src="../../dynsections.js"></script>
  12. <link href="../../navtree.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="../../resize.js"></script>
  14. <script type="text/javascript" src="../../navtreedata.js"></script>
  15. <script type="text/javascript" src="../../navtree.js"></script>
  16. <script type="text/javascript">
  17. $(document).ready(initResizable);
  18. </script>
  19. <link href="../../search/search.css" rel="stylesheet" type="text/css"/>
  20. <script type="text/javascript" src="../../search/searchdata.js"></script>
  21. <script type="text/javascript" src="../../search/search.js"></script>
  22. <link href="../../doxygen.css" rel="stylesheet" type="text/css" />
  23. </head>
  24. <body>
  25. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  26. <div id="titlearea">
  27. <table cellspacing="0" cellpadding="0">
  28. <tbody>
  29. <tr style="height: 56px;">
  30. <td id="projectalign" style="padding-left: 0.5em;">
  31. <div id="projectname">Lightweight USB stack
  32. &#160;<span id="projectnumber">1.0</span>
  33. </div>
  34. </td>
  35. </tr>
  36. </tbody>
  37. </table>
  38. </div>
  39. <!-- end header part -->
  40. <!-- Generated by Doxygen 1.8.13 -->
  41. <script type="text/javascript">
  42. var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
  43. </script>
  44. <script type="text/javascript" src="../../menudata.js"></script>
  45. <script type="text/javascript" src="../../menu.js"></script>
  46. <script type="text/javascript">
  47. $(function() {
  48. initMenu('../../',true,false,'search.php','Search');
  49. $(document).ready(function() { init_search(); });
  50. });
  51. </script>
  52. <div id="main-nav"></div>
  53. </div><!-- top -->
  54. <div id="side-nav" class="ui-resizable side-nav-resizable">
  55. <div id="nav-tree">
  56. <div id="nav-tree-contents">
  57. <div id="nav-sync" class="sync"></div>
  58. </div>
  59. </div>
  60. <div id="splitbar" style="-moz-user-select:none;"
  61. class="ui-resizable-handle">
  62. </div>
  63. </div>
  64. <script type="text/javascript">
  65. $(document).ready(function(){initNavTree('db/db6/a00074_source.html','../../');});
  66. </script>
  67. <div id="doc-content">
  68. <!-- window showing the filter options -->
  69. <div id="MSearchSelectWindow"
  70. onmouseover="return searchBox.OnSearchSelectShow()"
  71. onmouseout="return searchBox.OnSearchSelectHide()"
  72. onkeydown="return searchBox.OnSearchSelectKey(event)">
  73. </div>
  74. <!-- iframe showing the search results (closed by default) -->
  75. <div id="MSearchResultsWindow">
  76. <iframe src="javascript:void(0)" frameborder="0"
  77. name="MSearchResults" id="MSearchResults">
  78. </iframe>
  79. </div>
  80. <div class="header">
  81. <div class="headertitle">
  82. <div class="title">usbd_core.h</div> </div>
  83. </div><!--header-->
  84. <div class="contents">
  85. <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* This file is the part of the Lightweight USB device Stack for STM32 microcontrollers</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright ©2016 Dmitry Filimonchuk &lt;dmitrystu[at]gmail[dot]com&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">.*/</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#ifndef _USBD_CORE_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#define _USBD_CORE_H_</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(__DOXYGEN__)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#gabe4304eaa079882d869171e05b9710f0"> 27</a></span>&#160;<span class="preprocessor">#define USBD_PINS_REMAP </span></div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#ga62b824189c01d9e502a534198795cdae"> 28</a></span>&#160;<span class="preprocessor">#define USBD_SOF_DISABLED </span></div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#ga873cf10751ceec91547247332cc977a8"> 29</a></span>&#160;<span class="preprocessor">#define USBD_VBUS_DETECT </span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#gaf35b09cfd8fd06e58d72d047d65266a1"> 30</a></span>&#160;<span class="preprocessor">#define USBD_DP_PORT </span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#ga30da8a7864e777a2601488f43b7b0a7f"> 31</a></span>&#160;<span class="preprocessor">#define USBD_DP_PIN </span></div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#ga99347cd77b51aa21e408de471843fd75"> 32</a></span>&#160;<span class="preprocessor">#define USBD_SOF_OUT </span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#gac74ab6e936f3b13bc4967578a42a57fc"> 33</a></span>&#160;<span class="preprocessor">#define USBD_PRIMARY_OTGHS </span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#gaea5f5ff04a7046b5407b1aef103763c0"> 34</a></span>&#160;<span class="preprocessor">#define USBD_USE_EXT_ULPI </span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../d9/dcc/a00102.html#gac140f26a668f33d7efea2558c3adcde5"> 35</a></span>&#160;<span class="preprocessor">#define USB_PMA_SIZE </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#define usbd_evt_reset 0 </span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define usbd_evt_sof 1 </span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gaf25977e760d8d3eccf624a1fff5e39e1"> 49</a></span>&#160;<span class="preprocessor">#define usbd_evt_susp 2 </span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gabce59583f6428a435be226fa766fc78a"> 50</a></span>&#160;<span class="preprocessor">#define usbd_evt_wkup 3 </span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gafd35f0af68691fe11e8c1186e56eac06"> 51</a></span>&#160;<span class="preprocessor">#define usbd_evt_eptx 4 </span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga1eda629ed9bb286a15d2d98b1e523e1b"> 52</a></span>&#160;<span class="preprocessor">#define usbd_evt_eprx 5 </span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gaa849dea26fab624e3aef5c766cc66d6b"> 53</a></span>&#160;<span class="preprocessor">#define usbd_evt_epsetup 6 </span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga6cb788d0654c976a38121721fcff08fb"> 54</a></span>&#160;<span class="preprocessor">#define usbd_evt_error 7 </span></div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga711dd3a71e6c92ec7e7814bded9ed7e4"> 55</a></span>&#160;<span class="preprocessor">#define usbd_evt_count 8</span></div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gaa87a9dd3df80bb341668aeb002338ca3"> 56</a></span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#define usbd_lane_unk 0 </span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#define usbd_lane_dsc 1 </span></div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga4437d82eaf8bde6cf024a67296e2405b"> 63</a></span>&#160;<span class="preprocessor">#define usbd_lane_sdp 2 </span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gafb52ee5b26f0b788957c43f35445e55c"> 64</a></span>&#160;<span class="preprocessor">#define usbd_lane_cdp 3 </span></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga8480fbe534da4cc848d6636e741b9778"> 65</a></span>&#160;<span class="preprocessor">#define usbd_lane_dcp 4 </span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#define USBD_HW_ADDRFST (1 &lt;&lt; 0) </span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#define USBD_HW_BC (1 &lt;&lt; 1) </span></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga878641d0cbb440926a46e75c7cb0d075"> 73</a></span>&#160;<span class="preprocessor">#define USND_HW_HS (1 &lt;&lt; 2) </span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gaf25fc6cc0ba90f9107bb98ca358ed927"> 74</a></span>&#160;<span class="preprocessor">#define USBD_HW_ENABLED (1 &lt;&lt; 3) </span></div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga10e25b69e3a7b97c825cd46a9f1f4bbd"> 75</a></span>&#160;<span class="preprocessor">#define USBD_HW_ENUMSPEED (2 &lt;&lt; 4) </span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga1e29fc787f9aa849155bbdbae9e817f7"> 76</a></span>&#160;<span class="preprocessor">#define USBD_HW_SPEED_NC (0 &lt;&lt; 4) </span></div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#ga5112d4b1479addaa3a60ebd828f32b9b"> 77</a></span>&#160;<span class="preprocessor">#define USBD_HW_SPEED_LS (1 &lt;&lt; 4) </span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gafd067eab59c16235070140a11712c4e7"> 78</a></span>&#160;<span class="preprocessor">#define USBD_HW_SPEED_FS (2 &lt;&lt; 4) </span></div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gad42752675174a74f80d32caf3d4c1d61"> 79</a></span>&#160;<span class="preprocessor">#define USBD_HW_SPEED_HS (3 &lt;&lt; 4) </span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#define USB_EPTYPE_DBLBUF 0x04 </span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#define USB_REQ_DIRECTION (1 &lt;&lt; 7) </span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#define USB_REQ_HOSTTODEV (0 &lt;&lt; 7) </span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga6b9c3fcf995e5d23de85b6030a0d84dd"> 93</a></span>&#160;<span class="preprocessor">#define USB_REQ_DEVTOHOST (1 &lt;&lt; 7) </span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gac41e0607bf13b9e87a13aa102dcbb8aa"> 94</a></span>&#160;<span class="preprocessor">#define USB_REQ_TYPE (3 &lt;&lt; 5) </span></div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gae3e09cb3d3226833ef57f916d89291ca"> 95</a></span>&#160;<span class="preprocessor">#define USB_REQ_STANDARD (0 &lt;&lt; 5) </span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gaa184c56c116810da76cfaae4f611e4c3"> 96</a></span>&#160;<span class="preprocessor">#define USB_REQ_CLASS (1 &lt;&lt; 5) </span></div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga4380b84c8d2470c403e280753c507bd4"> 97</a></span>&#160;<span class="preprocessor">#define USB_REQ_VENDOR (2 &lt;&lt; 5) </span></div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gaaa13ef254ca1ef9c26170a07b98a7a64"> 98</a></span>&#160;<span class="preprocessor">#define USB_REQ_RECIPIENT (3 &lt;&lt; 0) </span></div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga92c81a92bf440998e4b0777d89272185"> 99</a></span>&#160;<span class="preprocessor">#define USB_REQ_DEVICE (0 &lt;&lt; 0) </span></div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga26072833296e244c0dbd7e7a104f8b34"> 100</a></span>&#160;<span class="preprocessor">#define USB_REQ_INTERFACE (1 &lt;&lt; 0) </span></div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga48a88d1b49e86e6018971675ee0e14ff"> 101</a></span>&#160;<span class="preprocessor">#define USB_REQ_ENDPOINT (2 &lt;&lt; 0) </span></div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga4aed1bed2eace26ff5ab34dbb55abba3"> 102</a></span>&#160;<span class="preprocessor">#define USB_REQ_OTHER (3 &lt;&lt; 0) </span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#if !defined(__ASSEMBLER__)</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">enum</span> <a class="code" href="../../d0/dc2/a00104.html#ga5401592e6f44b34f3f08f5fbfc75d693">usbd_machine_state</a> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; usbd_state_disabled,</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga5401592e6f44b34f3f08f5fbfc75d693"> 113</a></span>&#160; usbd_state_disconnected,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693a21f28f602405397500ac5755ef420d87">usbd_state_default</a>, </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693aa4b741eff1b346a428d12d55fa90e199">usbd_state_addressed</a>, </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693a21f28f602405397500ac5755ef420d87"> 116</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693a61b7bd62db86e10c25c3d10ed3d32ad7">usbd_state_configured</a>, </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693aa4b741eff1b346a428d12d55fa90e199"> 117</a></span>&#160;};</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693a61b7bd62db86e10c25c3d10ed3d32ad7"> 118</a></span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword">enum</span> <a class="code" href="../../d0/dc2/a00104.html#ga3aca852c36615e7fa9b6440f021240f6">usbd_ctl_state</a> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6acd768bd9a31560eff928ecbbf0ef4344">usbd_ctl_idle</a>, </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga3aca852c36615e7fa9b6440f021240f6"> 122</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6aef8382ffd3aa402ab3466e7af1cb7026">usbd_ctl_rxdata</a>, </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6acd768bd9a31560eff928ecbbf0ef4344"> 123</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ac9e4174a590a9f7484286f17e126a9ac">usbd_ctl_txdata</a>, </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6aef8382ffd3aa402ab3466e7af1cb7026"> 124</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6a77433ddfd0efda420c5aa6ccc14b8daf">usbd_ctl_ztxdata</a>, </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6a77433ddfd0efda420c5aa6ccc14b8daf"> 126</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6abc01743314c52bb898074373d780b9e5">usbd_ctl_lastdata</a>, </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6abc01743314c52bb898074373d780b9e5"> 128</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ae38b5ef5939bd04435e89d680acc07c7">usbd_ctl_statusin</a>, </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ab38def65f71bfb910106c4f471e6d093">usbd_ctl_statusout</a>, </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ae38b5ef5939bd04435e89d680acc07c7"> 130</a></span>&#160;};</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ab38def65f71bfb910106c4f471e6d093"> 131</a></span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> _usbd_respond {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2ad3ad0fc956590b793ccc6b84a0485b28">usbd_fail</a>, </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2"> 135</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2af67773b99f1ceccf0a194ac42aa51f00">usbd_ack</a>, </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2ad3ad0fc956590b793ccc6b84a0485b28"> 136</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2aa2908dddecd599d265c626356aea8f46">usbd_nak</a>, </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2af67773b99f1ceccf0a194ac42aa51f00"> 137</a></span>&#160;} <a class="code" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2aa2908dddecd599d265c626356aea8f46"> 138</a></span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../d5/d0f/a00308.html">_usbd_device</a> usbd_device;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; uint8_t bmRequestType; </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="../../db/d7b/a00296.html#ad9aee018f8166f434965e3b0447702d3"> 145</a></span>&#160; uint8_t bRequest; </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; uint16_t wValue; </div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="../../db/d7b/a00296.html#a5a7109c916cc80dee20087d92d27aab2"> 148</a></span>&#160; uint16_t wIndex; </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="../../db/d7b/a00296.html#aed13e15136df440fc2dd200db37b9491"> 150</a></span>&#160; uint16_t wLength; </div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="../../db/d7b/a00296.html#a2ed43a4022c10d426f1149fcea6cb53b"> 152</a></span>&#160; uint8_t data[]; </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;} <a class="code" href="../../db/d7b/a00296.html">usbd_ctlreq</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="../../db/d7b/a00296.html#acdf5da9bf9512bfe2571bf0187f6d776"> 154</a></span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">void</span> *data_buf; </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html"> 158</a></span>&#160; <span class="keywordtype">void</span> *data_ptr; </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#a3858938f2b526aca478de661fb25fb81"> 159</a></span>&#160; uint16_t data_count; </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#a5497cd2e2c9a909e45584de4602bdc34"> 160</a></span>&#160; uint16_t data_maxsize; </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#a58325268662e32349519a0e38c66d102"> 161</a></span>&#160; uint8_t ep0size; </div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#aa41022486f5ffc375a88735bd1fe11d2"> 162</a></span>&#160; uint8_t device_cfg; </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#a4d14dde90d142bb92de3c7cd8567cdfc"> 163</a></span>&#160; uint8_t device_state; </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#a4399adc4353b4780cfe9525a86e56347"> 164</a></span>&#160; uint8_t control_state; </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#ad99a002cf309fce17b19538285a6a7fb"> 165</a></span>&#160;} <a class="code" href="../../db/da2/a00300.html">usbd_status</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="../../db/da2/a00300.html#a747a059fe57b0c857f08a003bf82b69d"> 166</a></span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a>)(usbd_device *dev, uint8_t event, uint8_t ep);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="../../d0/dc2/a00104.html#ga69107740e936027a76fdd5e1ab951ea0">usbd_rqc_callback</a>)(usbd_device *dev, <a class="code" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">typedef</span> <a class="code" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a> (*<a class="code" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a>)(usbd_device *dev, <a class="code" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req, <a class="code" href="../../d0/dc2/a00104.html#ga69107740e936027a76fdd5e1ab951ea0">usbd_rqc_callback</a> *callback);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="keyword">typedef</span> <a class="code" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a> (*<a class="code" href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a>)(<a class="code" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req, <span class="keywordtype">void</span> **address, uint16_t *dsize);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keyword">typedef</span> <a class="code" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a> (*<a class="code" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a>)(usbd_device *dev, uint8_t cfg);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keyword">typedef</span> uint32_t (*<a class="code" href="../../d5/d1e/a00103.html#ga9a3d5b843f2cefc83d90a8da3151b3e8">usbd_hw_getinfo</a>)(void);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="../../d5/d1e/a00103.html#ga521e6e03cdee1a357298e3f851698cf5">usbd_hw_enable</a>)(<span class="keywordtype">bool</span> enable);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword">typedef</span> uint8_t (*<a class="code" href="../../d5/d1e/a00103.html#ga51ab95cc32891731c1ff52acd088d374">usbd_hw_connect</a>)(<span class="keywordtype">bool</span> connect);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="../../d5/d1e/a00103.html#ga0dfb3a13355c4775e0e1681d76585bdf">usbd_hw_setaddr</a>)(uint8_t address);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword">typedef</span> bool (*<a class="code" href="../../d5/d1e/a00103.html#ga56dcaff98bac6a4c564bab6825f12da3">usbd_hw_ep_config</a>)(uint8_t ep, uint8_t eptype, uint16_t epsize);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="../../d5/d1e/a00103.html#ga9322c08c36d05121e7d998e1345fe46e">usbd_hw_ep_deconfig</a>)(uint8_t ep);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keyword">typedef</span> int32_t (*<a class="code" href="../../d5/d1e/a00103.html#ga1488f8a6dee0c985f5abd38396b3a867">usbd_hw_ep_read</a>)(uint8_t ep, <span class="keywordtype">void</span> *buf, uint16_t blen);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="keyword">typedef</span> int32_t (*<a class="code" href="../../d5/d1e/a00103.html#ga17f18cf2982e5a482a39603a4dd64f03">usbd_hw_ep_write</a>)(uint8_t ep, <span class="keywordtype">void</span> *buf, uint16_t blen);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="../../d5/d1e/a00103.html#gab728331c31cfbd74d48606fe754f664b">usbd_hw_ep_setstall</a>)(uint8_t ep, <span class="keywordtype">bool</span> stall);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="keyword">typedef</span> bool (*<a class="code" href="../../d5/d1e/a00103.html#ga0d66682a43cc9a4a4657bae7b37d1721">usbd_hw_ep_isstalled</a>)(uint8_t ep);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="../../d5/d1e/a00103.html#gad661412e0f66de317eea9c3784629096">usbd_hw_poll</a>)(usbd_device *dev, <a class="code" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> callback);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword">typedef</span> uint16_t (*<a class="code" href="../../d5/d1e/a00103.html#gac4c9def5578968e903439f15bc64ab5b">usbd_hw_get_frameno</a>)(void);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="../../d5/d1e/a00103.html#gac4c9def5578968e903439f15bc64ab5b"> 297</a></span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="keyword">typedef</span> uint16_t (*<a class="code" href="../../d5/d1e/a00103.html#ga521aa5ada654934cb97e12d73a315030">usbd_hw_get_serialno</a>)(<span class="keywordtype">void</span> *buffer);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keyword">struct </span><a class="code" href="../../d8/d17/a00304.html">usbd_driver</a> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga9a3d5b843f2cefc83d90a8da3151b3e8">usbd_hw_getinfo</a> getinfo; </div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html"> 307</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga521e6e03cdee1a357298e3f851698cf5">usbd_hw_enable</a> enable; </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#a120c65f705b6324d6bf86387301b84c1"> 308</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga51ab95cc32891731c1ff52acd088d374">usbd_hw_connect</a> connect; </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#aa2ff86011aadc305de6fc0e7dad3fb0d"> 309</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga0dfb3a13355c4775e0e1681d76585bdf">usbd_hw_setaddr</a> setaddr; </div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#a0fada49940e6a124eeaa8fccdd6af7d8"> 310</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga56dcaff98bac6a4c564bab6825f12da3">usbd_hw_ep_config</a> ep_config; </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#ab9dcf925eac960e40dd84173fd0cc140"> 311</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga9322c08c36d05121e7d998e1345fe46e">usbd_hw_ep_deconfig</a> ep_deconfig; </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#af82fea4edefd615fc44103834bd99f55"> 312</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga1488f8a6dee0c985f5abd38396b3a867">usbd_hw_ep_read</a> ep_read; </div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#ad540208811726121c69af62eb8488cb5"> 313</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga17f18cf2982e5a482a39603a4dd64f03">usbd_hw_ep_write</a> ep_write; </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#a2138238b87c35d50b12c912cb321d6fd"> 314</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#gab728331c31cfbd74d48606fe754f664b">usbd_hw_ep_setstall</a> ep_setstall; </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#ad6efbf9b639ed4774eb641ca6b7b406e"> 315</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga0d66682a43cc9a4a4657bae7b37d1721">usbd_hw_ep_isstalled</a> ep_isstalled; </div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#a81e491d8b093017a58dd25985cf10279"> 316</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#gad661412e0f66de317eea9c3784629096">usbd_hw_poll</a> poll; </div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#af39e2c81c0a3b6e10314c75fd788c8b4"> 317</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#gac4c9def5578968e903439f15bc64ab5b">usbd_hw_get_frameno</a> frame_no; </div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#ac484a3f7f2a5c5fe1408b2e8ab916e3a"> 318</a></span>&#160; <a class="code" href="../../d5/d1e/a00103.html#ga521aa5ada654934cb97e12d73a315030">usbd_hw_get_serialno</a> get_serialno_desc; </div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#ad888231679960970839a7f909b6445d1"> 319</a></span>&#160;};</div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="../../d8/d17/a00304.html#a510769363d195609bd86968e6a4a1f92"> 320</a></span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="keyword">struct </span><a class="code" href="../../d5/d0f/a00308.html">_usbd_device</a> {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="../../d8/d17/a00304.html">usbd_driver</a> *<a class="code" href="../../d5/d0f/a00308.html#a01a7b4ca4263bcc396148a3a842a1a60">driver</a>; </div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html"> 329</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a> <a class="code" href="../../d5/d0f/a00308.html#a3c9492abdca9472e1849424bccb25949">control_callback</a>; </div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#a01a7b4ca4263bcc396148a3a842a1a60"> 330</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#ga69107740e936027a76fdd5e1ab951ea0">usbd_rqc_callback</a> <a class="code" href="../../d5/d0f/a00308.html#ac347ceb62000ffe91295a17327a0c147">complete_callback</a>; </div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#a3c9492abdca9472e1849424bccb25949"> 331</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a> <a class="code" href="../../d5/d0f/a00308.html#a1d23b803531b51295330432b830db43e">config_callback</a>; </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#ac347ceb62000ffe91295a17327a0c147"> 332</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a> <a class="code" href="../../d5/d0f/a00308.html#a6130fec453b6b16bf62ec780d948a579">descriptor_callback</a>; </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#a1d23b803531b51295330432b830db43e"> 333</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> <a class="code" href="../../d5/d0f/a00308.html#afd45fcc08a9a15089fed779b5f15b257">events</a>[usbd_evt_count]; </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#a6130fec453b6b16bf62ec780d948a579"> 334</a></span>&#160; <a class="code" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> <a class="code" href="../../d5/d0f/a00308.html#a8ace5b102b3936ffaa145fe6ddc21c51">endpoint</a>[8]; </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#afd45fcc08a9a15089fed779b5f15b257"> 335</a></span>&#160; <a class="code" href="../../db/da2/a00300.html">usbd_status</a> <a class="code" href="../../d5/d0f/a00308.html#a65517cf504759026df2e759697a44456">status</a>; </div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#a8ace5b102b3936ffaa145fe6ddc21c51"> 336</a></span>&#160;};</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="../../d5/d0f/a00308.html#a65517cf504759026df2e759697a44456"> 337</a></span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#ga32f29b38819f95a081c4b8e5901090bb">usbd_init</a>(usbd_device *dev, <span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="../../d8/d17/a00304.html">usbd_driver</a> *drv,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> uint8_t ep0size, uint32_t *buffer, <span class="keyword">const</span> uint16_t bsize) {</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga32f29b38819f95a081c4b8e5901090bb"> 347</a></span>&#160; dev-&gt;driver = drv;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; dev-&gt;status.ep0size = ep0size;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; dev-&gt;status.data_ptr = buffer;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; dev-&gt;status.data_buf = buffer;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; dev-&gt;status.data_maxsize = bsize - __builtin_offsetof(<a class="code" href="../../db/d7b/a00296.html">usbd_ctlreq</a>, data);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#gae994b4f002351aea0399568a92d88c14">usbd_poll</a>(usbd_device *dev);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#gaab0522f0d69f6b838fce7f1840f8b067">usbd_reg_control</a>(usbd_device *dev, <a class="code" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a> callback) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; dev-&gt;control_callback = callback;</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gaab0522f0d69f6b838fce7f1840f8b067"> 366</a></span>&#160;}</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#gac6b42380fd5e97bbc86230c81498827f">usbd_reg_config</a>(usbd_device *dev, <a class="code" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a> callback) {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; dev-&gt;config_callback = callback;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gac6b42380fd5e97bbc86230c81498827f"> 374</a></span>&#160;}</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#gafa5ef6dda3b942336d43aa2ba1e49f52">usbd_reg_descr</a>(usbd_device *dev, <a class="code" href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a> callback) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; dev-&gt;descriptor_callback = callback;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gafa5ef6dda3b942336d43aa2ba1e49f52"> 382</a></span>&#160;}</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="../../d0/dc2/a00104.html#ga8d49025ebd29f8104e89b2bbdfd63185">usbd_ep_config</a>(usbd_device *dev, uint8_t ep, uint8_t eptype, uint16_t epsize) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> dev-&gt;driver-&gt;ep_config(ep, eptype, epsize);</div><div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga8d49025ebd29f8104e89b2bbdfd63185"> 390</a></span>&#160;}</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#ga22b889eb0b4c8a88c0525cc1c90c83ea">usbd_ep_deconfig</a>(usbd_device *dev, uint8_t ep) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; dev-&gt;driver-&gt;ep_deconfig(ep);</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga22b889eb0b4c8a88c0525cc1c90c83ea"> 398</a></span>&#160;}</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#ga03d68cf538adebd34efd3012b92da693">usbd_reg_endpoint</a>(usbd_device *dev, uint8_t ep, <a class="code" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> callback) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; dev-&gt;endpoint[ep &amp; 0x07] = callback;</div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga03d68cf538adebd34efd3012b92da693"> 407</a></span>&#160;}</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#ga3b8185117daea1d28732382b5fa36ff8">usbd_reg_event</a>(usbd_device *dev, uint8_t evt, <a class="code" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> callback) {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; dev-&gt;events[evt] = callback;</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga3b8185117daea1d28732382b5fa36ff8"> 416</a></span>&#160;}</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> int32_t <a class="code" href="../../d0/dc2/a00104.html#gaf290c740d704e94deed37f2f59094c17">usbd_ep_write</a>(usbd_device *dev, uint8_t ep, <span class="keywordtype">void</span> *buf, uint16_t blen) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> dev-&gt;driver-&gt;ep_write(ep, buf, blen);</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gaf290c740d704e94deed37f2f59094c17"> 424</a></span>&#160;}</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> int32_t <a class="code" href="../../d0/dc2/a00104.html#gabce892816f191ee4588b59dbd70ed004">usbd_ep_read</a>(usbd_device *dev, uint8_t ep, <span class="keywordtype">void</span> *buf, uint16_t blen) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> dev-&gt;driver-&gt;ep_read(ep, buf, blen);</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gabce892816f191ee4588b59dbd70ed004"> 432</a></span>&#160;}</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#ga62d8a32edf72dbdbb870d05e7e4017f7">usbd_ep_stall</a>(usbd_device *dev, uint8_t ep) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; dev-&gt;driver-&gt;ep_setstall(ep, 1);</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga62d8a32edf72dbdbb870d05e7e4017f7"> 440</a></span>&#160;}</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#ga24b864ef84e19bcd0f815ad4242041fa">usbd_ep_unstall</a>(usbd_device *dev, uint8_t ep) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; dev-&gt;driver-&gt;ep_setstall(ep, 0);</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga24b864ef84e19bcd0f815ad4242041fa"> 448</a></span>&#160;}</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/dc2/a00104.html#ga13b40f8ef25729e67a948bb036b6ce58">usbd_enable</a>(usbd_device *dev, <span class="keywordtype">bool</span> <a class="code" href="../../d8/d17/a00304.html#aa2ff86011aadc305de6fc0e7dad3fb0d">enable</a>) {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; dev-&gt;driver-&gt;enable(enable);</div><div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga13b40f8ef25729e67a948bb036b6ce58"> 456</a></span>&#160;}</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> uint8_t <a class="code" href="../../d0/dc2/a00104.html#ga9574c807b4052ab5f34290b1afb00065">usbd_connect</a>(usbd_device *dev, <span class="keywordtype">bool</span> <a class="code" href="../../d8/d17/a00304.html#a0fada49940e6a124eeaa8fccdd6af7d8">connect</a>) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> dev-&gt;driver-&gt;connect(connect);</div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#ga9574c807b4052ab5f34290b1afb00065"> 465</a></span>&#160;}</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> uint32_t <a class="code" href="../../d0/dc2/a00104.html#gac64fb60affe8b2fe6253e6ebe5fe9525">usbd_getinfo</a>(usbd_device *dev) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> dev-&gt;driver-&gt;getinfo();</div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="../../d0/dc2/a00104.html#gac64fb60affe8b2fe6253e6ebe5fe9525"> 471</a></span>&#160;}</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor">#endif //(__ASSEMBLER__)</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor">#if defined(__cplusplus)</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#endif //_USBD_STD_H_</span></div><div class="ttc" id="a00104_html_gaab0522f0d69f6b838fce7f1840f8b067"><div class="ttname"><a href="../../d0/dc2/a00104.html#gaab0522f0d69f6b838fce7f1840f8b067">usbd_reg_control</a></div><div class="ttdeci">static void usbd_reg_control(usbd_device *dev, usbd_ctl_callback callback)</div><div class="ttdoc">Register callback for all control requests. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00366">usbd_core.h:366</a></div></div>
  86. <div class="ttc" id="a00104_html_ga22b889eb0b4c8a88c0525cc1c90c83ea"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga22b889eb0b4c8a88c0525cc1c90c83ea">usbd_ep_deconfig</a></div><div class="ttdeci">static void usbd_ep_deconfig(usbd_device *dev, uint8_t ep)</div><div class="ttdoc">Deconfigure endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00398">usbd_core.h:398</a></div></div>
  87. <div class="ttc" id="a00104_html_gac6b42380fd5e97bbc86230c81498827f"><div class="ttname"><a href="../../d0/dc2/a00104.html#gac6b42380fd5e97bbc86230c81498827f">usbd_reg_config</a></div><div class="ttdeci">static void usbd_reg_config(usbd_device *dev, usbd_cfg_callback callback)</div><div class="ttdoc">Register callback for SET_CONFIG control request. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00374">usbd_core.h:374</a></div></div>
  88. <div class="ttc" id="a00104_html_gga3aca852c36615e7fa9b6440f021240f6a77433ddfd0efda420c5aa6ccc14b8daf"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6a77433ddfd0efda420c5aa6ccc14b8daf">usbd_ctl_ztxdata</a></div><div class="ttdoc">TX stage. Transmitting DATA-IN payload. Zero length packet maybe required.. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00126">usbd_core.h:126</a></div></div>
  89. <div class="ttc" id="a00104_html_gafa5ef6dda3b942336d43aa2ba1e49f52"><div class="ttname"><a href="../../d0/dc2/a00104.html#gafa5ef6dda3b942336d43aa2ba1e49f52">usbd_reg_descr</a></div><div class="ttdeci">static void usbd_reg_descr(usbd_device *dev, usbd_dsc_callback callback)</div><div class="ttdoc">Register callback for GET_DESCRIPTOR control request. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00382">usbd_core.h:382</a></div></div>
  90. <div class="ttc" id="a00104_html_ga5401592e6f44b34f3f08f5fbfc75d693"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga5401592e6f44b34f3f08f5fbfc75d693">usbd_machine_state</a></div><div class="ttdeci">usbd_machine_state</div><div class="ttdoc">USB device machine states. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00113">usbd_core.h:113</a></div></div>
  91. <div class="ttc" id="a00103_html_ga521aa5ada654934cb97e12d73a315030"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga521aa5ada654934cb97e12d73a315030">usbd_hw_get_serialno</a></div><div class="ttdeci">uint16_t(* usbd_hw_get_serialno)(void *buffer)</div><div class="ttdoc">Makes a string descriptor contains unique serial number from hardware ID&amp;#39;s. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00304">usbd_core.h:304</a></div></div>
  92. <div class="ttc" id="a00308_html_ac347ceb62000ffe91295a17327a0c147"><div class="ttname"><a href="../../d5/d0f/a00308.html#ac347ceb62000ffe91295a17327a0c147">_usbd_device::complete_callback</a></div><div class="ttdeci">usbd_rqc_callback complete_callback</div><div class="ttdoc">USB control transfer completed callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00332">usbd_core.h:332</a></div></div>
  93. <div class="ttc" id="a00103_html_ga9a3d5b843f2cefc83d90a8da3151b3e8"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga9a3d5b843f2cefc83d90a8da3151b3e8">usbd_hw_getinfo</a></div><div class="ttdeci">uint32_t(* usbd_hw_getinfo)(void)</div><div class="ttdoc">Get USB device status and capabilities. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00227">usbd_core.h:227</a></div></div>
  94. <div class="ttc" id="a00308_html_a65517cf504759026df2e759697a44456"><div class="ttname"><a href="../../d5/d0f/a00308.html#a65517cf504759026df2e759697a44456">_usbd_device::status</a></div><div class="ttdeci">usbd_status status</div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00337">usbd_core.h:337</a></div></div>
  95. <div class="ttc" id="a00104_html_gga3aca852c36615e7fa9b6440f021240f6aef8382ffd3aa402ab3466e7af1cb7026"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6aef8382ffd3aa402ab3466e7af1cb7026">usbd_ctl_rxdata</a></div><div class="ttdoc">RX stage. Receiving DATA-OUT payload. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00124">usbd_core.h:124</a></div></div>
  96. <div class="ttc" id="a00104_html_gga5401592e6f44b34f3f08f5fbfc75d693a21f28f602405397500ac5755ef420d87"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693a21f28f602405397500ac5755ef420d87">usbd_state_default</a></div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00116">usbd_core.h:116</a></div></div>
  97. <div class="ttc" id="a00104_html_gac64fb60affe8b2fe6253e6ebe5fe9525"><div class="ttname"><a href="../../d0/dc2/a00104.html#gac64fb60affe8b2fe6253e6ebe5fe9525">usbd_getinfo</a></div><div class="ttdeci">static uint32_t usbd_getinfo(usbd_device *dev)</div><div class="ttdoc">Retrieves status and capabilities. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00471">usbd_core.h:471</a></div></div>
  98. <div class="ttc" id="a00104_html_gga3aca852c36615e7fa9b6440f021240f6ae38b5ef5939bd04435e89d680acc07c7"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ae38b5ef5939bd04435e89d680acc07c7">usbd_ctl_statusin</a></div><div class="ttdoc">STATUS-IN stage. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00130">usbd_core.h:130</a></div></div>
  99. <div class="ttc" id="a00104_html_gae994b4f002351aea0399568a92d88c14"><div class="ttname"><a href="../../d0/dc2/a00104.html#gae994b4f002351aea0399568a92d88c14">usbd_poll</a></div><div class="ttdeci">void usbd_poll(usbd_device *dev)</div><div class="ttdoc">Polls USB for events. </div></div>
  100. <div class="ttc" id="a00104_html_ga304c7a310c29930f3e3a0de82cb3d5da"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a></div><div class="ttdeci">usbd_respond(* usbd_dsc_callback)(usbd_ctlreq *req, void **address, uint16_t *dsize)</div><div class="ttdoc">USB get descriptor callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00209">usbd_core.h:209</a></div></div>
  101. <div class="ttc" id="a00104_html_gga5401592e6f44b34f3f08f5fbfc75d693aa4b741eff1b346a428d12d55fa90e199"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693aa4b741eff1b346a428d12d55fa90e199">usbd_state_addressed</a></div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00117">usbd_core.h:117</a></div></div>
  102. <div class="ttc" id="a00104_html_gga3aca852c36615e7fa9b6440f021240f6ab38def65f71bfb910106c4f471e6d093"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ab38def65f71bfb910106c4f471e6d093">usbd_ctl_statusout</a></div><div class="ttdoc">STATUS-OUT stage. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00131">usbd_core.h:131</a></div></div>
  103. <div class="ttc" id="a00104_html_ga69107740e936027a76fdd5e1ab951ea0"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga69107740e936027a76fdd5e1ab951ea0">usbd_rqc_callback</a></div><div class="ttdeci">void(* usbd_rqc_callback)(usbd_device *dev, usbd_ctlreq *req)</div><div class="ttdoc">USB control transfer completed callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00182">usbd_core.h:182</a></div></div>
  104. <div class="ttc" id="a00296_html"><div class="ttname"><a href="../../db/d7b/a00296.html">usbd_ctlreq</a></div><div class="ttdoc">Represents generic USB control request. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00144">usbd_core.h:144</a></div></div>
  105. <div class="ttc" id="a00308_html_a01a7b4ca4263bcc396148a3a842a1a60"><div class="ttname"><a href="../../d5/d0f/a00308.html#a01a7b4ca4263bcc396148a3a842a1a60">_usbd_device::driver</a></div><div class="ttdeci">const struct usbd_driver * driver</div><div class="ttdoc">Represents a hardware USB driver call table. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00330">usbd_core.h:330</a></div></div>
  106. <div class="ttc" id="a00104_html_gga0fac0b81178c584fb2baa52c8faa49f2ad3ad0fc956590b793ccc6b84a0485b28"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2ad3ad0fc956590b793ccc6b84a0485b28">usbd_fail</a></div><div class="ttdoc">Function has an error, STALLPID will be issued. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00136">usbd_core.h:136</a></div></div>
  107. <div class="ttc" id="a00104_html_ga0fac0b81178c584fb2baa52c8faa49f2"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a></div><div class="ttdeci">usbd_respond</div><div class="ttdoc">Reporting status results. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00135">usbd_core.h:135</a></div></div>
  108. <div class="ttc" id="a00104_html_gabce892816f191ee4588b59dbd70ed004"><div class="ttname"><a href="../../d0/dc2/a00104.html#gabce892816f191ee4588b59dbd70ed004">usbd_ep_read</a></div><div class="ttdeci">static int32_t usbd_ep_read(usbd_device *dev, uint8_t ep, void *buf, uint16_t blen)</div><div class="ttdoc">Read data from endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00432">usbd_core.h:432</a></div></div>
  109. <div class="ttc" id="a00103_html_ga1488f8a6dee0c985f5abd38396b3a867"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga1488f8a6dee0c985f5abd38396b3a867">usbd_hw_ep_read</a></div><div class="ttdeci">int32_t(* usbd_hw_ep_read)(uint8_t ep, void *buf, uint16_t blen)</div><div class="ttdoc">Reads data from OUT or control endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00267">usbd_core.h:267</a></div></div>
  110. <div class="ttc" id="a00304_html_aa2ff86011aadc305de6fc0e7dad3fb0d"><div class="ttname"><a href="../../d8/d17/a00304.html#aa2ff86011aadc305de6fc0e7dad3fb0d">usbd_driver::enable</a></div><div class="ttdeci">usbd_hw_enable enable</div><div class="ttdoc">Enables or disables USB hardware. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00309">usbd_core.h:309</a></div></div>
  111. <div class="ttc" id="a00104_html_gga3aca852c36615e7fa9b6440f021240f6acd768bd9a31560eff928ecbbf0ef4344"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6acd768bd9a31560eff928ecbbf0ef4344">usbd_ctl_idle</a></div><div class="ttdoc">Idle stage. Awaiting for SETUP packet. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00123">usbd_core.h:123</a></div></div>
  112. <div class="ttc" id="a00104_html_gga0fac0b81178c584fb2baa52c8faa49f2aa2908dddecd599d265c626356aea8f46"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2aa2908dddecd599d265c626356aea8f46">usbd_nak</a></div><div class="ttdoc">Function is busy. NAK handshake. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00138">usbd_core.h:138</a></div></div>
  113. <div class="ttc" id="a00103_html_ga17f18cf2982e5a482a39603a4dd64f03"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga17f18cf2982e5a482a39603a4dd64f03">usbd_hw_ep_write</a></div><div class="ttdeci">int32_t(* usbd_hw_ep_write)(uint8_t ep, void *buf, uint16_t blen)</div><div class="ttdoc">Writes data to IN or control endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00275">usbd_core.h:275</a></div></div>
  114. <div class="ttc" id="a00103_html_ga56dcaff98bac6a4c564bab6825f12da3"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga56dcaff98bac6a4c564bab6825f12da3">usbd_hw_ep_config</a></div><div class="ttdeci">bool(* usbd_hw_ep_config)(uint8_t ep, uint8_t eptype, uint16_t epsize)</div><div class="ttdoc">Configures endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00251">usbd_core.h:251</a></div></div>
  115. <div class="ttc" id="a00300_html"><div class="ttname"><a href="../../db/da2/a00300.html">usbd_status</a></div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00158">usbd_core.h:158</a></div></div>
  116. <div class="ttc" id="a00104_html_ga24b864ef84e19bcd0f815ad4242041fa"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga24b864ef84e19bcd0f815ad4242041fa">usbd_ep_unstall</a></div><div class="ttdeci">static void usbd_ep_unstall(usbd_device *dev, uint8_t ep)</div><div class="ttdoc">Unstall endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00448">usbd_core.h:448</a></div></div>
  117. <div class="ttc" id="a00104_html_gga3aca852c36615e7fa9b6440f021240f6abc01743314c52bb898074373d780b9e5"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6abc01743314c52bb898074373d780b9e5">usbd_ctl_lastdata</a></div><div class="ttdoc">TX stage. Last DATA-IN packed passed to buffer. Awaiting for the TX completion. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00128">usbd_core.h:128</a></div></div>
  118. <div class="ttc" id="a00104_html_ga3aca852c36615e7fa9b6440f021240f6"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga3aca852c36615e7fa9b6440f021240f6">usbd_ctl_state</a></div><div class="ttdeci">usbd_ctl_state</div><div class="ttdoc">USB device control endpoint machine state. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00122">usbd_core.h:122</a></div></div>
  119. <div class="ttc" id="a00104_html_ga9574c807b4052ab5f34290b1afb00065"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga9574c807b4052ab5f34290b1afb00065">usbd_connect</a></div><div class="ttdeci">static uint8_t usbd_connect(usbd_device *dev, bool connect)</div><div class="ttdoc">Connects or disconnects USB hardware to/from usb host. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00465">usbd_core.h:465</a></div></div>
  120. <div class="ttc" id="a00104_html_ga13b40f8ef25729e67a948bb036b6ce58"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga13b40f8ef25729e67a948bb036b6ce58">usbd_enable</a></div><div class="ttdeci">static void usbd_enable(usbd_device *dev, bool enable)</div><div class="ttdoc">Enables or disables USB hardware. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00456">usbd_core.h:456</a></div></div>
  121. <div class="ttc" id="a00308_html_afd45fcc08a9a15089fed779b5f15b257"><div class="ttname"><a href="../../d5/d0f/a00308.html#afd45fcc08a9a15089fed779b5f15b257">_usbd_device::events</a></div><div class="ttdeci">usbd_evt_callback events[usbd_evt_count]</div><div class="ttdoc">array of the event callbacks. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00335">usbd_core.h:335</a></div></div>
  122. <div class="ttc" id="a00103_html_gad661412e0f66de317eea9c3784629096"><div class="ttname"><a href="../../d5/d1e/a00103.html#gad661412e0f66de317eea9c3784629096">usbd_hw_poll</a></div><div class="ttdeci">void(* usbd_hw_poll)(usbd_device *dev, usbd_evt_callback callback)</div><div class="ttdoc">Polls USB hardware for the events. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00294">usbd_core.h:294</a></div></div>
  123. <div class="ttc" id="a00103_html_ga0d66682a43cc9a4a4657bae7b37d1721"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga0d66682a43cc9a4a4657bae7b37d1721">usbd_hw_ep_isstalled</a></div><div class="ttdeci">bool(* usbd_hw_ep_isstalled)(uint8_t ep)</div><div class="ttdoc">Checks endpoint for stalled state. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00288">usbd_core.h:288</a></div></div>
  124. <div class="ttc" id="a00104_html_ga666d9b86915fa7981c64c6d72a7cc5ea"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a></div><div class="ttdeci">usbd_respond(* usbd_cfg_callback)(usbd_device *dev, uint8_t cfg)</div><div class="ttdoc">USB set configuration callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00218">usbd_core.h:218</a></div></div>
  125. <div class="ttc" id="a00103_html_ga9322c08c36d05121e7d998e1345fe46e"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga9322c08c36d05121e7d998e1345fe46e">usbd_hw_ep_deconfig</a></div><div class="ttdeci">void(* usbd_hw_ep_deconfig)(uint8_t ep)</div><div class="ttdoc">De-configures, cleans and disables endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00258">usbd_core.h:258</a></div></div>
  126. <div class="ttc" id="a00104_html_gga3aca852c36615e7fa9b6440f021240f6ac9e4174a590a9f7484286f17e126a9ac"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga3aca852c36615e7fa9b6440f021240f6ac9e4174a590a9f7484286f17e126a9ac">usbd_ctl_txdata</a></div><div class="ttdoc">TX stage. Transmitting DATA-IN payload. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00125">usbd_core.h:125</a></div></div>
  127. <div class="ttc" id="a00104_html_gga5401592e6f44b34f3f08f5fbfc75d693a61b7bd62db86e10c25c3d10ed3d32ad7"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga5401592e6f44b34f3f08f5fbfc75d693a61b7bd62db86e10c25c3d10ed3d32ad7">usbd_state_configured</a></div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00118">usbd_core.h:118</a></div></div>
  128. <div class="ttc" id="a00104_html_ga3b8185117daea1d28732382b5fa36ff8"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga3b8185117daea1d28732382b5fa36ff8">usbd_reg_event</a></div><div class="ttdeci">static void usbd_reg_event(usbd_device *dev, uint8_t evt, usbd_evt_callback callback)</div><div class="ttdoc">Registers event callback. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00416">usbd_core.h:416</a></div></div>
  129. <div class="ttc" id="a00104_html_ga32f29b38819f95a081c4b8e5901090bb"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga32f29b38819f95a081c4b8e5901090bb">usbd_init</a></div><div class="ttdeci">static void usbd_init(usbd_device *dev, const struct usbd_driver *drv, const uint8_t ep0size, uint32_t *buffer, const uint16_t bsize)</div><div class="ttdoc">Initializes device structure. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00347">usbd_core.h:347</a></div></div>
  130. <div class="ttc" id="a00308_html"><div class="ttname"><a href="../../d5/d0f/a00308.html">_usbd_device</a></div><div class="ttdoc">Represents a USB device data. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00329">usbd_core.h:329</a></div></div>
  131. <div class="ttc" id="a00104_html_ga03d68cf538adebd34efd3012b92da693"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga03d68cf538adebd34efd3012b92da693">usbd_reg_endpoint</a></div><div class="ttdeci">static void usbd_reg_endpoint(usbd_device *dev, uint8_t ep, usbd_evt_callback callback)</div><div class="ttdoc">Register endpoint callback. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00407">usbd_core.h:407</a></div></div>
  132. <div class="ttc" id="a00304_html_a0fada49940e6a124eeaa8fccdd6af7d8"><div class="ttname"><a href="../../d8/d17/a00304.html#a0fada49940e6a124eeaa8fccdd6af7d8">usbd_driver::connect</a></div><div class="ttdeci">usbd_hw_connect connect</div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00310">usbd_core.h:310</a></div></div>
  133. <div class="ttc" id="a00104_html_ga24325482daef183b8d3048cec1d3babe"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a></div><div class="ttdeci">usbd_respond(* usbd_ctl_callback)(usbd_device *dev, usbd_ctlreq *req, usbd_rqc_callback *callback)</div><div class="ttdoc">USB control callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00199">usbd_core.h:199</a></div></div>
  134. <div class="ttc" id="a00104_html_ga8d49025ebd29f8104e89b2bbdfd63185"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga8d49025ebd29f8104e89b2bbdfd63185">usbd_ep_config</a></div><div class="ttdeci">static bool usbd_ep_config(usbd_device *dev, uint8_t ep, uint8_t eptype, uint16_t epsize)</div><div class="ttdoc">Configure endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00390">usbd_core.h:390</a></div></div>
  135. <div class="ttc" id="a00308_html_a3c9492abdca9472e1849424bccb25949"><div class="ttname"><a href="../../d5/d0f/a00308.html#a3c9492abdca9472e1849424bccb25949">_usbd_device::control_callback</a></div><div class="ttdeci">usbd_ctl_callback control_callback</div><div class="ttdoc">USB control callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00331">usbd_core.h:331</a></div></div>
  136. <div class="ttc" id="a00104_html_gaf290c740d704e94deed37f2f59094c17"><div class="ttname"><a href="../../d0/dc2/a00104.html#gaf290c740d704e94deed37f2f59094c17">usbd_ep_write</a></div><div class="ttdeci">static int32_t usbd_ep_write(usbd_device *dev, uint8_t ep, void *buf, uint16_t blen)</div><div class="ttdoc">Write data to endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00424">usbd_core.h:424</a></div></div>
  137. <div class="ttc" id="a00104_html_ga62d8a32edf72dbdbb870d05e7e4017f7"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga62d8a32edf72dbdbb870d05e7e4017f7">usbd_ep_stall</a></div><div class="ttdeci">static void usbd_ep_stall(usbd_device *dev, uint8_t ep)</div><div class="ttdoc">Stall endpoint. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00440">usbd_core.h:440</a></div></div>
  138. <div class="ttc" id="a00304_html"><div class="ttname"><a href="../../d8/d17/a00304.html">usbd_driver</a></div><div class="ttdoc">Represents a hardware USB driver call table. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00307">usbd_core.h:307</a></div></div>
  139. <div class="ttc" id="a00103_html_ga521e6e03cdee1a357298e3f851698cf5"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga521e6e03cdee1a357298e3f851698cf5">usbd_hw_enable</a></div><div class="ttdeci">void(* usbd_hw_enable)(bool enable)</div><div class="ttdoc">Enables or disables USB hardware. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00232">usbd_core.h:232</a></div></div>
  140. <div class="ttc" id="a00308_html_a8ace5b102b3936ffaa145fe6ddc21c51"><div class="ttname"><a href="../../d5/d0f/a00308.html#a8ace5b102b3936ffaa145fe6ddc21c51">_usbd_device::endpoint</a></div><div class="ttdeci">usbd_evt_callback endpoint[8]</div><div class="ttdoc">array of the endpoint callbacks. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00336">usbd_core.h:336</a></div></div>
  141. <div class="ttc" id="a00104_html_ga2992d1e12544a788bf2e1d774d68f3f7"><div class="ttname"><a href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a></div><div class="ttdeci">void(* usbd_evt_callback)(usbd_device *dev, uint8_t event, uint8_t ep)</div><div class="ttdoc">Generic USB device event callback for events and endpoints processing. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00175">usbd_core.h:175</a></div></div>
  142. <div class="ttc" id="a00308_html_a1d23b803531b51295330432b830db43e"><div class="ttname"><a href="../../d5/d0f/a00308.html#a1d23b803531b51295330432b830db43e">_usbd_device::config_callback</a></div><div class="ttdeci">usbd_cfg_callback config_callback</div><div class="ttdoc">USB set configuration callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00333">usbd_core.h:333</a></div></div>
  143. <div class="ttc" id="a00103_html_gac4c9def5578968e903439f15bc64ab5b"><div class="ttname"><a href="../../d5/d1e/a00103.html#gac4c9def5578968e903439f15bc64ab5b">usbd_hw_get_frameno</a></div><div class="ttdeci">uint16_t(* usbd_hw_get_frameno)(void)</div><div class="ttdoc">Gets frame number from usb hardware. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00297">usbd_core.h:297</a></div></div>
  144. <div class="ttc" id="a00103_html_ga0dfb3a13355c4775e0e1681d76585bdf"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga0dfb3a13355c4775e0e1681d76585bdf">usbd_hw_setaddr</a></div><div class="ttdeci">void(* usbd_hw_setaddr)(uint8_t address)</div><div class="ttdoc">Sets USB hardware address. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00243">usbd_core.h:243</a></div></div>
  145. <div class="ttc" id="a00103_html_ga51ab95cc32891731c1ff52acd088d374"><div class="ttname"><a href="../../d5/d1e/a00103.html#ga51ab95cc32891731c1ff52acd088d374">usbd_hw_connect</a></div><div class="ttdeci">uint8_t(* usbd_hw_connect)(bool connect)</div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00238">usbd_core.h:238</a></div></div>
  146. <div class="ttc" id="a00104_html_gga0fac0b81178c584fb2baa52c8faa49f2af67773b99f1ceccf0a194ac42aa51f00"><div class="ttname"><a href="../../d0/dc2/a00104.html#gga0fac0b81178c584fb2baa52c8faa49f2af67773b99f1ceccf0a194ac42aa51f00">usbd_ack</a></div><div class="ttdoc">Function completes request accepted ZLP or data will be send. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00137">usbd_core.h:137</a></div></div>
  147. <div class="ttc" id="a00308_html_a6130fec453b6b16bf62ec780d948a579"><div class="ttname"><a href="../../d5/d0f/a00308.html#a6130fec453b6b16bf62ec780d948a579">_usbd_device::descriptor_callback</a></div><div class="ttdeci">usbd_dsc_callback descriptor_callback</div><div class="ttdoc">USB get descriptor callback function. </div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00334">usbd_core.h:334</a></div></div>
  148. <div class="ttc" id="a00103_html_gab728331c31cfbd74d48606fe754f664b"><div class="ttname"><a href="../../d5/d1e/a00103.html#gab728331c31cfbd74d48606fe754f664b">usbd_hw_ep_setstall</a></div><div class="ttdeci">void(* usbd_hw_ep_setstall)(uint8_t ep, bool stall)</div><div class="ttdef"><b>Definition:</b> <a href="../../db/db6/a00074_source.html#l00282">usbd_core.h:282</a></div></div>
  149. </div><!-- fragment --></div><!-- contents -->
  150. </div><!-- doc-content -->
  151. <!-- start footer part -->
  152. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  153. <ul>
  154. <li class="navelem"><a class="el" href="../../dir_bfccd401955b95cf8c75461437045ac0.html">inc</a></li><li class="navelem"><b>usbd_core.h</b></li>
  155. <li class="footer">Generated by
  156. <a href="http://www.doxygen.org/index.html">
  157. <img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  158. </ul>
  159. </div>
  160. </body>
  161. </html>