a00104.html 71 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290
  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: USB device core</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('d0/dc2/a00104.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="summary">
  82. <a href="#nested-classes">Data Structures</a> &#124;
  83. <a href="#define-members">Macros</a> &#124;
  84. <a href="#typedef-members">Typedefs</a> &#124;
  85. <a href="#enum-members">Enumerations</a> &#124;
  86. <a href="#func-members">Functions</a> </div>
  87. <div class="headertitle">
  88. <div class="title">USB device core<div class="ingroups"><a class="el" href="../../d9/dcc/a00102.html">USB Device HW driver and core API</a></div></div> </div>
  89. </div><!--header-->
  90. <div class="contents">
  91. <p>Contains core API.
  92. <a href="#details">More...</a></p>
  93. <table class="memberdecls">
  94. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
  95. Data Structures</h2></td></tr>
  96. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d7b/a00296.html">usbd_ctlreq</a></td></tr>
  97. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents generic USB control request. <a href="../../db/d7b/a00296.html#details">More...</a><br /></td></tr>
  98. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  99. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/da2/a00300.html">usbd_status</a></td></tr>
  100. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  101. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d0f/a00308.html">usbd_device</a></td></tr>
  102. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a USB device data. <a href="../../d5/d0f/a00308.html#details">More...</a><br /></td></tr>
  103. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  104. </table><table class="memberdecls">
  105. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
  106. Macros</h2></td></tr>
  107. <tr class="memitem:ga61f5238c546b8050578953907517c53a"><td class="memItemLeft" align="right" valign="top"><a id="ga61f5238c546b8050578953907517c53a"></a>
  108. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga61f5238c546b8050578953907517c53a">USB_EPTYPE_DBLBUF</a>&#160;&#160;&#160;0x04</td></tr>
  109. <tr class="memdesc:ga61f5238c546b8050578953907517c53a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Doublebuffered endpoint (bulk endpoint only). <br /></td></tr>
  110. <tr class="separator:ga61f5238c546b8050578953907517c53a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  111. </table><table class="memberdecls">
  112. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
  113. Typedefs</h2></td></tr>
  114. <tr class="memitem:ga2992d1e12544a788bf2e1d774d68f3f7"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a>) (usbd_device *dev, uint8_t event, uint8_t ep)</td></tr>
  115. <tr class="memdesc:ga2992d1e12544a788bf2e1d774d68f3f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generic USB device event callback for events and endpoints processing. <a href="#ga2992d1e12544a788bf2e1d774d68f3f7">More...</a><br /></td></tr>
  116. <tr class="separator:ga2992d1e12544a788bf2e1d774d68f3f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  117. <tr class="memitem:ga69107740e936027a76fdd5e1ab951ea0"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga69107740e936027a76fdd5e1ab951ea0">usbd_rqc_callback</a>) (usbd_device *dev, <a class="el" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req)</td></tr>
  118. <tr class="memdesc:ga69107740e936027a76fdd5e1ab951ea0"><td class="mdescLeft">&#160;</td><td class="mdescRight">USB control transfer completed callback function. <a href="#ga69107740e936027a76fdd5e1ab951ea0">More...</a><br /></td></tr>
  119. <tr class="separator:ga69107740e936027a76fdd5e1ab951ea0"><td class="memSeparator" colspan="2">&#160;</td></tr>
  120. <tr class="memitem:ga24325482daef183b8d3048cec1d3babe"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a>) (usbd_device *dev, <a class="el" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req, <a class="el" href="../../d0/dc2/a00104.html#ga69107740e936027a76fdd5e1ab951ea0">usbd_rqc_callback</a> *callback)</td></tr>
  121. <tr class="memdesc:ga24325482daef183b8d3048cec1d3babe"><td class="mdescLeft">&#160;</td><td class="mdescRight">USB control callback function. <a href="#ga24325482daef183b8d3048cec1d3babe">More...</a><br /></td></tr>
  122. <tr class="separator:ga24325482daef183b8d3048cec1d3babe"><td class="memSeparator" colspan="2">&#160;</td></tr>
  123. <tr class="memitem:ga304c7a310c29930f3e3a0de82cb3d5da"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a>) (<a class="el" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req, void **address, uint16_t *dsize)</td></tr>
  124. <tr class="memdesc:ga304c7a310c29930f3e3a0de82cb3d5da"><td class="mdescLeft">&#160;</td><td class="mdescRight">USB get descriptor callback function. <a href="#ga304c7a310c29930f3e3a0de82cb3d5da">More...</a><br /></td></tr>
  125. <tr class="separator:ga304c7a310c29930f3e3a0de82cb3d5da"><td class="memSeparator" colspan="2">&#160;</td></tr>
  126. <tr class="memitem:ga666d9b86915fa7981c64c6d72a7cc5ea"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a>) (usbd_device *dev, uint8_t cfg)</td></tr>
  127. <tr class="memdesc:ga666d9b86915fa7981c64c6d72a7cc5ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">USB set configuration callback function. <a href="#ga666d9b86915fa7981c64c6d72a7cc5ea">More...</a><br /></td></tr>
  128. <tr class="separator:ga666d9b86915fa7981c64c6d72a7cc5ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
  129. </table><table class="memberdecls">
  130. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
  131. Enumerations</h2></td></tr>
  132. <tr class="memitem:ga5401592e6f44b34f3f08f5fbfc75d693"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga5401592e6f44b34f3f08f5fbfc75d693">usbd_machine_state</a> <tr class="memdesc:ga5401592e6f44b34f3f08f5fbfc75d693"><td class="mdescLeft">&#160;</td><td class="mdescRight">USB device machine states. <a href="../../d0/dc2/a00104.html#ga5401592e6f44b34f3f08f5fbfc75d693">More...</a><br /></td></tr>
  133. </td></tr>
  134. <tr class="separator:ga5401592e6f44b34f3f08f5fbfc75d693"><td class="memSeparator" colspan="2">&#160;</td></tr>
  135. <tr class="memitem:ga3aca852c36615e7fa9b6440f021240f6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga3aca852c36615e7fa9b6440f021240f6">usbd_ctl_state</a> <tr class="memdesc:ga3aca852c36615e7fa9b6440f021240f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">USB device control endpoint machine state. <a href="../../d0/dc2/a00104.html#ga3aca852c36615e7fa9b6440f021240f6">More...</a><br /></td></tr>
  136. </td></tr>
  137. <tr class="separator:ga3aca852c36615e7fa9b6440f021240f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  138. <tr class="memitem:ga0fac0b81178c584fb2baa52c8faa49f2"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a> <tr class="memdesc:ga0fac0b81178c584fb2baa52c8faa49f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reporting status results. <a href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">More...</a><br /></td></tr>
  139. </td></tr>
  140. <tr class="separator:ga0fac0b81178c584fb2baa52c8faa49f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  141. </table><table class="memberdecls">
  142. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
  143. Functions</h2></td></tr>
  144. <tr class="memitem:ga32f29b38819f95a081c4b8e5901090bb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga32f29b38819f95a081c4b8e5901090bb">usbd_init</a> (usbd_device *dev, const struct <a class="el" href="../../d8/d17/a00304.html">usbd_driver</a> *drv, const uint8_t ep0size, uint32_t *buffer, const uint16_t bsize)</td></tr>
  145. <tr class="memdesc:ga32f29b38819f95a081c4b8e5901090bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes device structure. <a href="#ga32f29b38819f95a081c4b8e5901090bb">More...</a><br /></td></tr>
  146. <tr class="separator:ga32f29b38819f95a081c4b8e5901090bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
  147. <tr class="memitem:gae994b4f002351aea0399568a92d88c14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gae994b4f002351aea0399568a92d88c14">usbd_poll</a> (usbd_device *dev)</td></tr>
  148. <tr class="memdesc:gae994b4f002351aea0399568a92d88c14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Polls USB for events. <a href="#gae994b4f002351aea0399568a92d88c14">More...</a><br /></td></tr>
  149. <tr class="separator:gae994b4f002351aea0399568a92d88c14"><td class="memSeparator" colspan="2">&#160;</td></tr>
  150. <tr class="memitem:gaab0522f0d69f6b838fce7f1840f8b067"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gaab0522f0d69f6b838fce7f1840f8b067">usbd_reg_control</a> (usbd_device *dev, <a class="el" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a> callback)</td></tr>
  151. <tr class="memdesc:gaab0522f0d69f6b838fce7f1840f8b067"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register callback for all control requests. <a href="#gaab0522f0d69f6b838fce7f1840f8b067">More...</a><br /></td></tr>
  152. <tr class="separator:gaab0522f0d69f6b838fce7f1840f8b067"><td class="memSeparator" colspan="2">&#160;</td></tr>
  153. <tr class="memitem:gac6b42380fd5e97bbc86230c81498827f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gac6b42380fd5e97bbc86230c81498827f">usbd_reg_config</a> (usbd_device *dev, <a class="el" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a> callback)</td></tr>
  154. <tr class="memdesc:gac6b42380fd5e97bbc86230c81498827f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register callback for SET_CONFIG control request. <a href="#gac6b42380fd5e97bbc86230c81498827f">More...</a><br /></td></tr>
  155. <tr class="separator:gac6b42380fd5e97bbc86230c81498827f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  156. <tr class="memitem:gafa5ef6dda3b942336d43aa2ba1e49f52"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gafa5ef6dda3b942336d43aa2ba1e49f52">usbd_reg_descr</a> (usbd_device *dev, <a class="el" href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a> callback)</td></tr>
  157. <tr class="memdesc:gafa5ef6dda3b942336d43aa2ba1e49f52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register callback for GET_DESCRIPTOR control request. <a href="#gafa5ef6dda3b942336d43aa2ba1e49f52">More...</a><br /></td></tr>
  158. <tr class="separator:gafa5ef6dda3b942336d43aa2ba1e49f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
  159. <tr class="memitem:ga8d49025ebd29f8104e89b2bbdfd63185"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga8d49025ebd29f8104e89b2bbdfd63185">usbd_ep_config</a> (usbd_device *dev, uint8_t ep, uint8_t eptype, uint16_t epsize)</td></tr>
  160. <tr class="memdesc:ga8d49025ebd29f8104e89b2bbdfd63185"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure endpoint. <a href="#ga8d49025ebd29f8104e89b2bbdfd63185">More...</a><br /></td></tr>
  161. <tr class="separator:ga8d49025ebd29f8104e89b2bbdfd63185"><td class="memSeparator" colspan="2">&#160;</td></tr>
  162. <tr class="memitem:ga22b889eb0b4c8a88c0525cc1c90c83ea"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga22b889eb0b4c8a88c0525cc1c90c83ea">usbd_ep_deconfig</a> (usbd_device *dev, uint8_t ep)</td></tr>
  163. <tr class="memdesc:ga22b889eb0b4c8a88c0525cc1c90c83ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deconfigure endpoint. <a href="#ga22b889eb0b4c8a88c0525cc1c90c83ea">More...</a><br /></td></tr>
  164. <tr class="separator:ga22b889eb0b4c8a88c0525cc1c90c83ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
  165. <tr class="memitem:ga03d68cf538adebd34efd3012b92da693"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga03d68cf538adebd34efd3012b92da693">usbd_reg_endpoint</a> (usbd_device *dev, uint8_t ep, <a class="el" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> callback)</td></tr>
  166. <tr class="memdesc:ga03d68cf538adebd34efd3012b92da693"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register endpoint callback. <a href="#ga03d68cf538adebd34efd3012b92da693">More...</a><br /></td></tr>
  167. <tr class="separator:ga03d68cf538adebd34efd3012b92da693"><td class="memSeparator" colspan="2">&#160;</td></tr>
  168. <tr class="memitem:ga3b8185117daea1d28732382b5fa36ff8"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga3b8185117daea1d28732382b5fa36ff8">usbd_reg_event</a> (usbd_device *dev, uint8_t evt, <a class="el" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> callback)</td></tr>
  169. <tr class="memdesc:ga3b8185117daea1d28732382b5fa36ff8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers event callback. <a href="#ga3b8185117daea1d28732382b5fa36ff8">More...</a><br /></td></tr>
  170. <tr class="separator:ga3b8185117daea1d28732382b5fa36ff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
  171. <tr class="memitem:gaf290c740d704e94deed37f2f59094c17"><td class="memItemLeft" align="right" valign="top">static int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gaf290c740d704e94deed37f2f59094c17">usbd_ep_write</a> (usbd_device *dev, uint8_t ep, void *buf, uint16_t blen)</td></tr>
  172. <tr class="memdesc:gaf290c740d704e94deed37f2f59094c17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to endpoint. <a href="#gaf290c740d704e94deed37f2f59094c17">More...</a><br /></td></tr>
  173. <tr class="separator:gaf290c740d704e94deed37f2f59094c17"><td class="memSeparator" colspan="2">&#160;</td></tr>
  174. <tr class="memitem:gabce892816f191ee4588b59dbd70ed004"><td class="memItemLeft" align="right" valign="top">static int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gabce892816f191ee4588b59dbd70ed004">usbd_ep_read</a> (usbd_device *dev, uint8_t ep, void *buf, uint16_t blen)</td></tr>
  175. <tr class="memdesc:gabce892816f191ee4588b59dbd70ed004"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from endpoint. <a href="#gabce892816f191ee4588b59dbd70ed004">More...</a><br /></td></tr>
  176. <tr class="separator:gabce892816f191ee4588b59dbd70ed004"><td class="memSeparator" colspan="2">&#160;</td></tr>
  177. <tr class="memitem:ga62d8a32edf72dbdbb870d05e7e4017f7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga62d8a32edf72dbdbb870d05e7e4017f7">usbd_ep_stall</a> (usbd_device *dev, uint8_t ep)</td></tr>
  178. <tr class="memdesc:ga62d8a32edf72dbdbb870d05e7e4017f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stall endpoint. <a href="#ga62d8a32edf72dbdbb870d05e7e4017f7">More...</a><br /></td></tr>
  179. <tr class="separator:ga62d8a32edf72dbdbb870d05e7e4017f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  180. <tr class="memitem:ga24b864ef84e19bcd0f815ad4242041fa"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga24b864ef84e19bcd0f815ad4242041fa">usbd_ep_unstall</a> (usbd_device *dev, uint8_t ep)</td></tr>
  181. <tr class="memdesc:ga24b864ef84e19bcd0f815ad4242041fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unstall endpoint. <a href="#ga24b864ef84e19bcd0f815ad4242041fa">More...</a><br /></td></tr>
  182. <tr class="separator:ga24b864ef84e19bcd0f815ad4242041fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
  183. <tr class="memitem:ga13b40f8ef25729e67a948bb036b6ce58"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga13b40f8ef25729e67a948bb036b6ce58">usbd_enable</a> (usbd_device *dev, bool enable)</td></tr>
  184. <tr class="memdesc:ga13b40f8ef25729e67a948bb036b6ce58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables USB hardware. <a href="#ga13b40f8ef25729e67a948bb036b6ce58">More...</a><br /></td></tr>
  185. <tr class="separator:ga13b40f8ef25729e67a948bb036b6ce58"><td class="memSeparator" colspan="2">&#160;</td></tr>
  186. <tr class="memitem:ga9574c807b4052ab5f34290b1afb00065"><td class="memItemLeft" align="right" valign="top">static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga9574c807b4052ab5f34290b1afb00065">usbd_connect</a> (usbd_device *dev, bool connect)</td></tr>
  187. <tr class="memdesc:ga9574c807b4052ab5f34290b1afb00065"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connects or disconnects USB hardware to/from usb host. <a href="#ga9574c807b4052ab5f34290b1afb00065">More...</a><br /></td></tr>
  188. <tr class="separator:ga9574c807b4052ab5f34290b1afb00065"><td class="memSeparator" colspan="2">&#160;</td></tr>
  189. <tr class="memitem:gac64fb60affe8b2fe6253e6ebe5fe9525"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gac64fb60affe8b2fe6253e6ebe5fe9525">usbd_getinfo</a> (usbd_device *dev)</td></tr>
  190. <tr class="memdesc:gac64fb60affe8b2fe6253e6ebe5fe9525"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves status and capabilities. <a href="#gac64fb60affe8b2fe6253e6ebe5fe9525">More...</a><br /></td></tr>
  191. <tr class="separator:gac64fb60affe8b2fe6253e6ebe5fe9525"><td class="memSeparator" colspan="2">&#160;</td></tr>
  192. </table><table class="memberdecls">
  193. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
  194. bmRequestType bitmapped field</h2></td></tr>
  195. <tr class="memitem:ga6b9c3fcf995e5d23de85b6030a0d84dd"><td class="memItemLeft" align="right" valign="top"><a id="ga6b9c3fcf995e5d23de85b6030a0d84dd"></a>
  196. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga6b9c3fcf995e5d23de85b6030a0d84dd">USB_REQ_DIRECTION</a>&#160;&#160;&#160;(1 &lt;&lt; 7)</td></tr>
  197. <tr class="memdesc:ga6b9c3fcf995e5d23de85b6030a0d84dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request direction mask. <br /></td></tr>
  198. <tr class="separator:ga6b9c3fcf995e5d23de85b6030a0d84dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
  199. <tr class="memitem:gac41e0607bf13b9e87a13aa102dcbb8aa"><td class="memItemLeft" align="right" valign="top"><a id="gac41e0607bf13b9e87a13aa102dcbb8aa"></a>
  200. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gac41e0607bf13b9e87a13aa102dcbb8aa">USB_REQ_HOSTTODEV</a>&#160;&#160;&#160;(0 &lt;&lt; 7)</td></tr>
  201. <tr class="memdesc:gac41e0607bf13b9e87a13aa102dcbb8aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request direction is HOST to DEVICE. <br /></td></tr>
  202. <tr class="separator:gac41e0607bf13b9e87a13aa102dcbb8aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
  203. <tr class="memitem:gae3e09cb3d3226833ef57f916d89291ca"><td class="memItemLeft" align="right" valign="top"><a id="gae3e09cb3d3226833ef57f916d89291ca"></a>
  204. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gae3e09cb3d3226833ef57f916d89291ca">USB_REQ_DEVTOHOST</a>&#160;&#160;&#160;(1 &lt;&lt; 7)</td></tr>
  205. <tr class="memdesc:gae3e09cb3d3226833ef57f916d89291ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request direction is DEVICE to HOST. <br /></td></tr>
  206. <tr class="separator:gae3e09cb3d3226833ef57f916d89291ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
  207. <tr class="memitem:gaa184c56c116810da76cfaae4f611e4c3"><td class="memItemLeft" align="right" valign="top"><a id="gaa184c56c116810da76cfaae4f611e4c3"></a>
  208. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gaa184c56c116810da76cfaae4f611e4c3">USB_REQ_TYPE</a>&#160;&#160;&#160;(3 &lt;&lt; 5)</td></tr>
  209. <tr class="memdesc:gaa184c56c116810da76cfaae4f611e4c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request type mask. <br /></td></tr>
  210. <tr class="separator:gaa184c56c116810da76cfaae4f611e4c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  211. <tr class="memitem:ga4380b84c8d2470c403e280753c507bd4"><td class="memItemLeft" align="right" valign="top"><a id="ga4380b84c8d2470c403e280753c507bd4"></a>
  212. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga4380b84c8d2470c403e280753c507bd4">USB_REQ_STANDARD</a>&#160;&#160;&#160;(0 &lt;&lt; 5)</td></tr>
  213. <tr class="memdesc:ga4380b84c8d2470c403e280753c507bd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard request. <br /></td></tr>
  214. <tr class="separator:ga4380b84c8d2470c403e280753c507bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  215. <tr class="memitem:gaaa13ef254ca1ef9c26170a07b98a7a64"><td class="memItemLeft" align="right" valign="top"><a id="gaaa13ef254ca1ef9c26170a07b98a7a64"></a>
  216. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#gaaa13ef254ca1ef9c26170a07b98a7a64">USB_REQ_CLASS</a>&#160;&#160;&#160;(1 &lt;&lt; 5)</td></tr>
  217. <tr class="memdesc:gaaa13ef254ca1ef9c26170a07b98a7a64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class specified request. <br /></td></tr>
  218. <tr class="separator:gaaa13ef254ca1ef9c26170a07b98a7a64"><td class="memSeparator" colspan="2">&#160;</td></tr>
  219. <tr class="memitem:ga92c81a92bf440998e4b0777d89272185"><td class="memItemLeft" align="right" valign="top"><a id="ga92c81a92bf440998e4b0777d89272185"></a>
  220. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga92c81a92bf440998e4b0777d89272185">USB_REQ_VENDOR</a>&#160;&#160;&#160;(2 &lt;&lt; 5)</td></tr>
  221. <tr class="memdesc:ga92c81a92bf440998e4b0777d89272185"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vendor specified request. <br /></td></tr>
  222. <tr class="separator:ga92c81a92bf440998e4b0777d89272185"><td class="memSeparator" colspan="2">&#160;</td></tr>
  223. <tr class="memitem:ga26072833296e244c0dbd7e7a104f8b34"><td class="memItemLeft" align="right" valign="top"><a id="ga26072833296e244c0dbd7e7a104f8b34"></a>
  224. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga26072833296e244c0dbd7e7a104f8b34">USB_REQ_RECIPIENT</a>&#160;&#160;&#160;(3 &lt;&lt; 0)</td></tr>
  225. <tr class="memdesc:ga26072833296e244c0dbd7e7a104f8b34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request recipient mask. <br /></td></tr>
  226. <tr class="separator:ga26072833296e244c0dbd7e7a104f8b34"><td class="memSeparator" colspan="2">&#160;</td></tr>
  227. <tr class="memitem:ga48a88d1b49e86e6018971675ee0e14ff"><td class="memItemLeft" align="right" valign="top"><a id="ga48a88d1b49e86e6018971675ee0e14ff"></a>
  228. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga48a88d1b49e86e6018971675ee0e14ff">USB_REQ_DEVICE</a>&#160;&#160;&#160;(0 &lt;&lt; 0)</td></tr>
  229. <tr class="memdesc:ga48a88d1b49e86e6018971675ee0e14ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request to device. <br /></td></tr>
  230. <tr class="separator:ga48a88d1b49e86e6018971675ee0e14ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
  231. <tr class="memitem:ga4aed1bed2eace26ff5ab34dbb55abba3"><td class="memItemLeft" align="right" valign="top"><a id="ga4aed1bed2eace26ff5ab34dbb55abba3"></a>
  232. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga4aed1bed2eace26ff5ab34dbb55abba3">USB_REQ_INTERFACE</a>&#160;&#160;&#160;(1 &lt;&lt; 0)</td></tr>
  233. <tr class="memdesc:ga4aed1bed2eace26ff5ab34dbb55abba3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request to interface. <br /></td></tr>
  234. <tr class="separator:ga4aed1bed2eace26ff5ab34dbb55abba3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  235. <tr class="memitem:ga9be6799733f1e7879f261ea28365d5d5"><td class="memItemLeft" align="right" valign="top"><a id="ga9be6799733f1e7879f261ea28365d5d5"></a>
  236. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga9be6799733f1e7879f261ea28365d5d5">USB_REQ_ENDPOINT</a>&#160;&#160;&#160;(2 &lt;&lt; 0)</td></tr>
  237. <tr class="memdesc:ga9be6799733f1e7879f261ea28365d5d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request to endpoint. <br /></td></tr>
  238. <tr class="separator:ga9be6799733f1e7879f261ea28365d5d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
  239. <tr class="memitem:ga716c2b09215f9cbf5b155b9634e3f0ef"><td class="memItemLeft" align="right" valign="top"><a id="ga716c2b09215f9cbf5b155b9634e3f0ef"></a>
  240. #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dc2/a00104.html#ga716c2b09215f9cbf5b155b9634e3f0ef">USB_REQ_OTHER</a>&#160;&#160;&#160;(3 &lt;&lt; 0)</td></tr>
  241. <tr class="memdesc:ga716c2b09215f9cbf5b155b9634e3f0ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Other request. <br /></td></tr>
  242. <tr class="separator:ga716c2b09215f9cbf5b155b9634e3f0ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
  243. </table>
  244. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  245. <p>Contains core API. </p>
  246. <h2 class="groupheader">Typedef Documentation</h2>
  247. <a id="ga2992d1e12544a788bf2e1d774d68f3f7"></a>
  248. <h2 class="memtitle"><span class="permalink"><a href="#ga2992d1e12544a788bf2e1d774d68f3f7">&#9670;&nbsp;</a></span>usbd_evt_callback</h2>
  249. <div class="memitem">
  250. <div class="memproto">
  251. <table class="memname">
  252. <tr>
  253. <td class="memname">typedef void(* usbd_evt_callback) (usbd_device *dev, uint8_t event, uint8_t ep)</td>
  254. </tr>
  255. </table>
  256. </div><div class="memdoc">
  257. <p>Generic USB device event callback for events and endpoints processing. </p>
  258. <dl class="params"><dt>Parameters</dt><dd>
  259. <table class="params">
  260. <tr><td class="paramdir">[in]</td><td class="paramname">dev</td><td>pointer to USB device </td></tr>
  261. <tr><td class="paramdir"></td><td class="paramname">event</td><td><a class="el" href="../../d5/d1e/a00103.html#USB_EVENTS">USB event</a> </td></tr>
  262. <tr><td class="paramdir"></td><td class="paramname">ep</td><td>active endpoint number </td></tr>
  263. </table>
  264. </dd>
  265. </dl>
  266. <dl class="section note"><dt>Note</dt><dd>endpoints with same indexes i.e. 0x01 and 0x81 shares same callback. </dd></dl>
  267. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00175">175</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  268. </div>
  269. </div>
  270. <a id="ga69107740e936027a76fdd5e1ab951ea0"></a>
  271. <h2 class="memtitle"><span class="permalink"><a href="#ga69107740e936027a76fdd5e1ab951ea0">&#9670;&nbsp;</a></span>usbd_rqc_callback</h2>
  272. <div class="memitem">
  273. <div class="memproto">
  274. <table class="memname">
  275. <tr>
  276. <td class="memname">typedef void(* usbd_rqc_callback) (usbd_device *dev, <a class="el" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req)</td>
  277. </tr>
  278. </table>
  279. </div><div class="memdoc">
  280. <p>USB control transfer completed callback function. </p>
  281. <dl class="params"><dt>Parameters</dt><dd>
  282. <table class="params">
  283. <tr><td class="paramdir">[in]</td><td class="paramname">dev</td><td>pointer to USB device </td></tr>
  284. <tr><td class="paramdir">[in]</td><td class="paramname">req</td><td>pointer to usb request structure </td></tr>
  285. </table>
  286. </dd>
  287. </dl>
  288. <dl class="section note"><dt>Note</dt><dd>usbd_device-&gt;complete_callback will be set to NULL after this callback completion. </dd></dl>
  289. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00182">182</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  290. </div>
  291. </div>
  292. <a id="ga24325482daef183b8d3048cec1d3babe"></a>
  293. <h2 class="memtitle"><span class="permalink"><a href="#ga24325482daef183b8d3048cec1d3babe">&#9670;&nbsp;</a></span>usbd_ctl_callback</h2>
  294. <div class="memitem">
  295. <div class="memproto">
  296. <table class="memname">
  297. <tr>
  298. <td class="memname">typedef <a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a>(* usbd_ctl_callback) (usbd_device *dev, <a class="el" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req, <a class="el" href="../../d0/dc2/a00104.html#ga69107740e936027a76fdd5e1ab951ea0">usbd_rqc_callback</a> *callback)</td>
  299. </tr>
  300. </table>
  301. </div><div class="memdoc">
  302. <p>USB control callback function. </p>
  303. <p>Uses for the control request processing. Some requests will be handled by core if callback don't process it (returns FALSE). If request was not processed STALL PID will be issued.</p><ul>
  304. <li>GET_CONFIGURATION</li>
  305. <li>SET_CONFIGURATION (passes to <a class="el" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a>)</li>
  306. <li>GET_DESCRIPTOR (passes to <a class="el" href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a>)</li>
  307. <li>GET_STATUS</li>
  308. <li>SET_FEATURE, CLEAR_FEATURE (endpoints only)</li>
  309. <li>SET_ADDRESS <dl class="params"><dt>Parameters</dt><dd>
  310. <table class="params">
  311. <tr><td class="paramdir">[in]</td><td class="paramname">dev</td><td>points to USB device </td></tr>
  312. <tr><td class="paramdir">[in]</td><td class="paramname">req</td><td>points to usb control request </td></tr>
  313. <tr><td class="paramdir">[out]</td><td class="paramname">*callback</td><td>USB control transfer completion callback, default is NULL (no callback) </td></tr>
  314. </table>
  315. </dd>
  316. </dl>
  317. <dl class="section return"><dt>Returns</dt><dd>usbd_respond status. </dd></dl>
  318. </li>
  319. </ul>
  320. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00199">199</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  321. </div>
  322. </div>
  323. <a id="ga304c7a310c29930f3e3a0de82cb3d5da"></a>
  324. <h2 class="memtitle"><span class="permalink"><a href="#ga304c7a310c29930f3e3a0de82cb3d5da">&#9670;&nbsp;</a></span>usbd_dsc_callback</h2>
  325. <div class="memitem">
  326. <div class="memproto">
  327. <table class="memname">
  328. <tr>
  329. <td class="memname">typedef <a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a>(* usbd_dsc_callback) (<a class="el" href="../../db/d7b/a00296.html">usbd_ctlreq</a> *req, void **address, uint16_t *dsize)</td>
  330. </tr>
  331. </table>
  332. </div><div class="memdoc">
  333. <p>USB get descriptor callback function. </p>
  334. <p>Called when GET_DESCRIPTOR request issued </p><dl class="params"><dt>Parameters</dt><dd>
  335. <table class="params">
  336. <tr><td class="paramdir">[in]</td><td class="paramname">req</td><td>pointer to usb control request structure </td></tr>
  337. <tr><td class="paramdir">[in,out]</td><td class="paramname">address</td><td>pointer to the descriptor in memory. Points to req-&gt;data by default. You can use this buffer. </td></tr>
  338. <tr><td class="paramdir">[in,out]</td><td class="paramname">dsize</td><td>descriptor size. maximum buffer size by default. </td></tr>
  339. </table>
  340. </dd>
  341. </dl>
  342. <dl class="section return"><dt>Returns</dt><dd>usbd_ack if you passed the correct descriptor, usbd_fail otherwise. </dd></dl>
  343. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00209">209</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  344. </div>
  345. </div>
  346. <a id="ga666d9b86915fa7981c64c6d72a7cc5ea"></a>
  347. <h2 class="memtitle"><span class="permalink"><a href="#ga666d9b86915fa7981c64c6d72a7cc5ea">&#9670;&nbsp;</a></span>usbd_cfg_callback</h2>
  348. <div class="memitem">
  349. <div class="memproto">
  350. <table class="memname">
  351. <tr>
  352. <td class="memname">typedef <a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a>(* usbd_cfg_callback) (usbd_device *dev, uint8_t cfg)</td>
  353. </tr>
  354. </table>
  355. </div><div class="memdoc">
  356. <p>USB set configuration callback function. </p>
  357. <p>called when SET_CONFIGURATION request issued </p><dl class="params"><dt>Parameters</dt><dd>
  358. <table class="params">
  359. <tr><td class="paramdir">[in]</td><td class="paramname">dev</td><td>pointer to USB device </td></tr>
  360. <tr><td class="paramdir">[in]</td><td class="paramname">cfg</td><td>configuration number. </td></tr>
  361. </table>
  362. </dd>
  363. </dl>
  364. <dl class="section note"><dt>Note</dt><dd>if config is 0 device endpoints should be de-configured </dd></dl>
  365. <dl class="section return"><dt>Returns</dt><dd>TRUE if success </dd></dl>
  366. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00218">218</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  367. </div>
  368. </div>
  369. <h2 class="groupheader">Enumeration Type Documentation</h2>
  370. <a id="ga5401592e6f44b34f3f08f5fbfc75d693"></a>
  371. <h2 class="memtitle"><span class="permalink"><a href="#ga5401592e6f44b34f3f08f5fbfc75d693">&#9670;&nbsp;</a></span>usbd_machine_state</h2>
  372. <div class="memitem">
  373. <div class="memproto">
  374. <table class="memname">
  375. <tr>
  376. <td class="memname">enum <a class="el" href="../../d0/dc2/a00104.html#ga5401592e6f44b34f3f08f5fbfc75d693">usbd_machine_state</a></td>
  377. </tr>
  378. </table>
  379. </div><div class="memdoc">
  380. <p>USB device machine states. </p>
  381. <table class="fieldtable">
  382. <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga5401592e6f44b34f3f08f5fbfc75d693a21f28f602405397500ac5755ef420d87"></a>usbd_state_default&#160;</td><td class="fielddoc"><p>Default. </p>
  383. </td></tr>
  384. <tr><td class="fieldname"><a id="gga5401592e6f44b34f3f08f5fbfc75d693aa4b741eff1b346a428d12d55fa90e199"></a>usbd_state_addressed&#160;</td><td class="fielddoc"><p>Addressed. </p>
  385. </td></tr>
  386. <tr><td class="fieldname"><a id="gga5401592e6f44b34f3f08f5fbfc75d693a61b7bd62db86e10c25c3d10ed3d32ad7"></a>usbd_state_configured&#160;</td><td class="fielddoc"><p>Configured. </p>
  387. </td></tr>
  388. </table>
  389. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00113">113</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  390. </div>
  391. </div>
  392. <a id="ga3aca852c36615e7fa9b6440f021240f6"></a>
  393. <h2 class="memtitle"><span class="permalink"><a href="#ga3aca852c36615e7fa9b6440f021240f6">&#9670;&nbsp;</a></span>usbd_ctl_state</h2>
  394. <div class="memitem">
  395. <div class="memproto">
  396. <table class="memname">
  397. <tr>
  398. <td class="memname">enum <a class="el" href="../../d0/dc2/a00104.html#ga3aca852c36615e7fa9b6440f021240f6">usbd_ctl_state</a></td>
  399. </tr>
  400. </table>
  401. </div><div class="memdoc">
  402. <p>USB device control endpoint machine state. </p>
  403. <table class="fieldtable">
  404. <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga3aca852c36615e7fa9b6440f021240f6acd768bd9a31560eff928ecbbf0ef4344"></a>usbd_ctl_idle&#160;</td><td class="fielddoc"><p>Idle stage. Awaiting for SETUP packet. </p>
  405. </td></tr>
  406. <tr><td class="fieldname"><a id="gga3aca852c36615e7fa9b6440f021240f6aef8382ffd3aa402ab3466e7af1cb7026"></a>usbd_ctl_rxdata&#160;</td><td class="fielddoc"><p>RX stage. Receiving DATA-OUT payload. </p>
  407. </td></tr>
  408. <tr><td class="fieldname"><a id="gga3aca852c36615e7fa9b6440f021240f6ac9e4174a590a9f7484286f17e126a9ac"></a>usbd_ctl_txdata&#160;</td><td class="fielddoc"><p>TX stage. Transmitting DATA-IN payload. </p>
  409. </td></tr>
  410. <tr><td class="fieldname"><a id="gga3aca852c36615e7fa9b6440f021240f6a77433ddfd0efda420c5aa6ccc14b8daf"></a>usbd_ctl_ztxdata&#160;</td><td class="fielddoc"><p>TX stage. Transmitting DATA-IN payload. Zero length packet maybe required.. </p>
  411. </td></tr>
  412. <tr><td class="fieldname"><a id="gga3aca852c36615e7fa9b6440f021240f6abc01743314c52bb898074373d780b9e5"></a>usbd_ctl_lastdata&#160;</td><td class="fielddoc"><p>TX stage. Last DATA-IN packed passed to buffer. Awaiting for the TX completion. </p>
  413. </td></tr>
  414. <tr><td class="fieldname"><a id="gga3aca852c36615e7fa9b6440f021240f6ae38b5ef5939bd04435e89d680acc07c7"></a>usbd_ctl_statusin&#160;</td><td class="fielddoc"><p>STATUS-IN stage. </p>
  415. </td></tr>
  416. <tr><td class="fieldname"><a id="gga3aca852c36615e7fa9b6440f021240f6ab38def65f71bfb910106c4f471e6d093"></a>usbd_ctl_statusout&#160;</td><td class="fielddoc"><p>STATUS-OUT stage. </p>
  417. </td></tr>
  418. </table>
  419. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00122">122</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  420. </div>
  421. </div>
  422. <a id="ga0fac0b81178c584fb2baa52c8faa49f2"></a>
  423. <h2 class="memtitle"><span class="permalink"><a href="#ga0fac0b81178c584fb2baa52c8faa49f2">&#9670;&nbsp;</a></span>usbd_respond</h2>
  424. <div class="memitem">
  425. <div class="memproto">
  426. <table class="memname">
  427. <tr>
  428. <td class="memname">enum <a class="el" href="../../d0/dc2/a00104.html#ga0fac0b81178c584fb2baa52c8faa49f2">usbd_respond</a></td>
  429. </tr>
  430. </table>
  431. </div><div class="memdoc">
  432. <p>Reporting status results. </p>
  433. <table class="fieldtable">
  434. <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga0fac0b81178c584fb2baa52c8faa49f2ad3ad0fc956590b793ccc6b84a0485b28"></a>usbd_fail&#160;</td><td class="fielddoc"><p>Function has an error, STALLPID will be issued. </p>
  435. </td></tr>
  436. <tr><td class="fieldname"><a id="gga0fac0b81178c584fb2baa52c8faa49f2af67773b99f1ceccf0a194ac42aa51f00"></a>usbd_ack&#160;</td><td class="fielddoc"><p>Function completes request accepted ZLP or data will be send. </p>
  437. </td></tr>
  438. <tr><td class="fieldname"><a id="gga0fac0b81178c584fb2baa52c8faa49f2aa2908dddecd599d265c626356aea8f46"></a>usbd_nak&#160;</td><td class="fielddoc"><p>Function is busy. NAK handshake. </p>
  439. </td></tr>
  440. </table>
  441. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00135">135</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  442. </div>
  443. </div>
  444. <h2 class="groupheader">Function Documentation</h2>
  445. <a id="ga32f29b38819f95a081c4b8e5901090bb"></a>
  446. <h2 class="memtitle"><span class="permalink"><a href="#ga32f29b38819f95a081c4b8e5901090bb">&#9670;&nbsp;</a></span>usbd_init()</h2>
  447. <div class="memitem">
  448. <div class="memproto">
  449. <table class="mlabels">
  450. <tr>
  451. <td class="mlabels-left">
  452. <table class="memname">
  453. <tr>
  454. <td class="memname">static void usbd_init </td>
  455. <td>(</td>
  456. <td class="paramtype">usbd_device *&#160;</td>
  457. <td class="paramname"><em>dev</em>, </td>
  458. </tr>
  459. <tr>
  460. <td class="paramkey"></td>
  461. <td></td>
  462. <td class="paramtype">const struct <a class="el" href="../../d8/d17/a00304.html">usbd_driver</a> *&#160;</td>
  463. <td class="paramname"><em>drv</em>, </td>
  464. </tr>
  465. <tr>
  466. <td class="paramkey"></td>
  467. <td></td>
  468. <td class="paramtype">const uint8_t&#160;</td>
  469. <td class="paramname"><em>ep0size</em>, </td>
  470. </tr>
  471. <tr>
  472. <td class="paramkey"></td>
  473. <td></td>
  474. <td class="paramtype">uint32_t *&#160;</td>
  475. <td class="paramname"><em>buffer</em>, </td>
  476. </tr>
  477. <tr>
  478. <td class="paramkey"></td>
  479. <td></td>
  480. <td class="paramtype">const uint16_t&#160;</td>
  481. <td class="paramname"><em>bsize</em>&#160;</td>
  482. </tr>
  483. <tr>
  484. <td></td>
  485. <td>)</td>
  486. <td></td><td></td>
  487. </tr>
  488. </table>
  489. </td>
  490. <td class="mlabels-right">
  491. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  492. </tr>
  493. </table>
  494. </div><div class="memdoc">
  495. <p>Initializes device structure. </p>
  496. <dl class="params"><dt>Parameters</dt><dd>
  497. <table class="params">
  498. <tr><td class="paramname">dev</td><td>USB device that will be initialized </td></tr>
  499. <tr><td class="paramname">drv</td><td>Pointer to hardware driver </td></tr>
  500. <tr><td class="paramname">ep0size</td><td>Control endpoint 0 size </td></tr>
  501. <tr><td class="paramname">buffer</td><td>Pointer to control request data buffer (32-bit aligned) </td></tr>
  502. <tr><td class="paramname">bsize</td><td>Size of the data buffer </td></tr>
  503. </table>
  504. </dd>
  505. </dl>
  506. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00347">347</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  507. </div>
  508. </div>
  509. <a id="gae994b4f002351aea0399568a92d88c14"></a>
  510. <h2 class="memtitle"><span class="permalink"><a href="#gae994b4f002351aea0399568a92d88c14">&#9670;&nbsp;</a></span>usbd_poll()</h2>
  511. <div class="memitem">
  512. <div class="memproto">
  513. <table class="memname">
  514. <tr>
  515. <td class="memname">void usbd_poll </td>
  516. <td>(</td>
  517. <td class="paramtype">usbd_device *&#160;</td>
  518. <td class="paramname"><em>dev</em></td><td>)</td>
  519. <td></td>
  520. </tr>
  521. </table>
  522. </div><div class="memdoc">
  523. <p>Polls USB for events. </p>
  524. <dl class="params"><dt>Parameters</dt><dd>
  525. <table class="params">
  526. <tr><td class="paramname">dev</td><td>Pointer to device structure </td></tr>
  527. </table>
  528. </dd>
  529. </dl>
  530. <dl class="section note"><dt>Note</dt><dd>can be called as from main routine as from USB interrupt </dd></dl>
  531. </div>
  532. </div>
  533. <a id="gaab0522f0d69f6b838fce7f1840f8b067"></a>
  534. <h2 class="memtitle"><span class="permalink"><a href="#gaab0522f0d69f6b838fce7f1840f8b067">&#9670;&nbsp;</a></span>usbd_reg_control()</h2>
  535. <div class="memitem">
  536. <div class="memproto">
  537. <table class="mlabels">
  538. <tr>
  539. <td class="mlabels-left">
  540. <table class="memname">
  541. <tr>
  542. <td class="memname">static void usbd_reg_control </td>
  543. <td>(</td>
  544. <td class="paramtype">usbd_device *&#160;</td>
  545. <td class="paramname"><em>dev</em>, </td>
  546. </tr>
  547. <tr>
  548. <td class="paramkey"></td>
  549. <td></td>
  550. <td class="paramtype"><a class="el" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a>&#160;</td>
  551. <td class="paramname"><em>callback</em>&#160;</td>
  552. </tr>
  553. <tr>
  554. <td></td>
  555. <td>)</td>
  556. <td></td><td></td>
  557. </tr>
  558. </table>
  559. </td>
  560. <td class="mlabels-right">
  561. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  562. </tr>
  563. </table>
  564. </div><div class="memdoc">
  565. <p>Register callback for all control requests. </p>
  566. <dl class="params"><dt>Parameters</dt><dd>
  567. <table class="params">
  568. <tr><td class="paramname">dev</td><td>usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  569. <tr><td class="paramname">callback</td><td>user control callback <a class="el" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a> </td></tr>
  570. </table>
  571. </dd>
  572. </dl>
  573. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00366">366</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  574. </div>
  575. </div>
  576. <a id="gac6b42380fd5e97bbc86230c81498827f"></a>
  577. <h2 class="memtitle"><span class="permalink"><a href="#gac6b42380fd5e97bbc86230c81498827f">&#9670;&nbsp;</a></span>usbd_reg_config()</h2>
  578. <div class="memitem">
  579. <div class="memproto">
  580. <table class="mlabels">
  581. <tr>
  582. <td class="mlabels-left">
  583. <table class="memname">
  584. <tr>
  585. <td class="memname">static void usbd_reg_config </td>
  586. <td>(</td>
  587. <td class="paramtype">usbd_device *&#160;</td>
  588. <td class="paramname"><em>dev</em>, </td>
  589. </tr>
  590. <tr>
  591. <td class="paramkey"></td>
  592. <td></td>
  593. <td class="paramtype"><a class="el" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a>&#160;</td>
  594. <td class="paramname"><em>callback</em>&#160;</td>
  595. </tr>
  596. <tr>
  597. <td></td>
  598. <td>)</td>
  599. <td></td><td></td>
  600. </tr>
  601. </table>
  602. </td>
  603. <td class="mlabels-right">
  604. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  605. </tr>
  606. </table>
  607. </div><div class="memdoc">
  608. <p>Register callback for SET_CONFIG control request. </p>
  609. <dl class="params"><dt>Parameters</dt><dd>
  610. <table class="params">
  611. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  612. <tr><td class="paramname">callback</td><td>pointer to user <a class="el" href="../../d0/dc2/a00104.html#ga666d9b86915fa7981c64c6d72a7cc5ea">usbd_cfg_callback</a> </td></tr>
  613. </table>
  614. </dd>
  615. </dl>
  616. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00374">374</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  617. </div>
  618. </div>
  619. <a id="gafa5ef6dda3b942336d43aa2ba1e49f52"></a>
  620. <h2 class="memtitle"><span class="permalink"><a href="#gafa5ef6dda3b942336d43aa2ba1e49f52">&#9670;&nbsp;</a></span>usbd_reg_descr()</h2>
  621. <div class="memitem">
  622. <div class="memproto">
  623. <table class="mlabels">
  624. <tr>
  625. <td class="mlabels-left">
  626. <table class="memname">
  627. <tr>
  628. <td class="memname">static void usbd_reg_descr </td>
  629. <td>(</td>
  630. <td class="paramtype">usbd_device *&#160;</td>
  631. <td class="paramname"><em>dev</em>, </td>
  632. </tr>
  633. <tr>
  634. <td class="paramkey"></td>
  635. <td></td>
  636. <td class="paramtype"><a class="el" href="../../d0/dc2/a00104.html#ga304c7a310c29930f3e3a0de82cb3d5da">usbd_dsc_callback</a>&#160;</td>
  637. <td class="paramname"><em>callback</em>&#160;</td>
  638. </tr>
  639. <tr>
  640. <td></td>
  641. <td>)</td>
  642. <td></td><td></td>
  643. </tr>
  644. </table>
  645. </td>
  646. <td class="mlabels-right">
  647. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  648. </tr>
  649. </table>
  650. </div><div class="memdoc">
  651. <p>Register callback for GET_DESCRIPTOR control request. </p>
  652. <dl class="params"><dt>Parameters</dt><dd>
  653. <table class="params">
  654. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  655. <tr><td class="paramname">callback</td><td>pointer to user <a class="el" href="../../d0/dc2/a00104.html#ga24325482daef183b8d3048cec1d3babe">usbd_ctl_callback</a> </td></tr>
  656. </table>
  657. </dd>
  658. </dl>
  659. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00382">382</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  660. </div>
  661. </div>
  662. <a id="ga8d49025ebd29f8104e89b2bbdfd63185"></a>
  663. <h2 class="memtitle"><span class="permalink"><a href="#ga8d49025ebd29f8104e89b2bbdfd63185">&#9670;&nbsp;</a></span>usbd_ep_config()</h2>
  664. <div class="memitem">
  665. <div class="memproto">
  666. <table class="mlabels">
  667. <tr>
  668. <td class="mlabels-left">
  669. <table class="memname">
  670. <tr>
  671. <td class="memname">static bool usbd_ep_config </td>
  672. <td>(</td>
  673. <td class="paramtype">usbd_device *&#160;</td>
  674. <td class="paramname"><em>dev</em>, </td>
  675. </tr>
  676. <tr>
  677. <td class="paramkey"></td>
  678. <td></td>
  679. <td class="paramtype">uint8_t&#160;</td>
  680. <td class="paramname"><em>ep</em>, </td>
  681. </tr>
  682. <tr>
  683. <td class="paramkey"></td>
  684. <td></td>
  685. <td class="paramtype">uint8_t&#160;</td>
  686. <td class="paramname"><em>eptype</em>, </td>
  687. </tr>
  688. <tr>
  689. <td class="paramkey"></td>
  690. <td></td>
  691. <td class="paramtype">uint16_t&#160;</td>
  692. <td class="paramname"><em>epsize</em>&#160;</td>
  693. </tr>
  694. <tr>
  695. <td></td>
  696. <td>)</td>
  697. <td></td><td></td>
  698. </tr>
  699. </table>
  700. </td>
  701. <td class="mlabels-right">
  702. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  703. </tr>
  704. </table>
  705. </div><div class="memdoc">
  706. <p>Configure endpoint. </p>
  707. <dl class="params"><dt>Parameters</dt><dd>
  708. <table class="params">
  709. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  710. <tr><td class="paramname">ep</td><td>endpoint address. Use USB_EPDIR_ macros to set endpoint direction </td></tr>
  711. <tr><td class="paramname">eptype</td><td>endpoint type. Use USB_EPTYPE_* macros. </td></tr>
  712. <tr><td class="paramname">epsize</td><td>endpoint size in bytes </td></tr>
  713. </table>
  714. </dd>
  715. </dl>
  716. <dl class="section return"><dt>Returns</dt><dd>TRUE if success </dd></dl>
  717. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00390">390</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  718. </div>
  719. </div>
  720. <a id="ga22b889eb0b4c8a88c0525cc1c90c83ea"></a>
  721. <h2 class="memtitle"><span class="permalink"><a href="#ga22b889eb0b4c8a88c0525cc1c90c83ea">&#9670;&nbsp;</a></span>usbd_ep_deconfig()</h2>
  722. <div class="memitem">
  723. <div class="memproto">
  724. <table class="mlabels">
  725. <tr>
  726. <td class="mlabels-left">
  727. <table class="memname">
  728. <tr>
  729. <td class="memname">static void usbd_ep_deconfig </td>
  730. <td>(</td>
  731. <td class="paramtype">usbd_device *&#160;</td>
  732. <td class="paramname"><em>dev</em>, </td>
  733. </tr>
  734. <tr>
  735. <td class="paramkey"></td>
  736. <td></td>
  737. <td class="paramtype">uint8_t&#160;</td>
  738. <td class="paramname"><em>ep</em>&#160;</td>
  739. </tr>
  740. <tr>
  741. <td></td>
  742. <td>)</td>
  743. <td></td><td></td>
  744. </tr>
  745. </table>
  746. </td>
  747. <td class="mlabels-right">
  748. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  749. </tr>
  750. </table>
  751. </div><div class="memdoc">
  752. <p>Deconfigure endpoint. </p>
  753. <dl class="params"><dt>Parameters</dt><dd>
  754. <table class="params">
  755. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  756. <tr><td class="paramname">ep</td><td>endpoint index </td></tr>
  757. </table>
  758. </dd>
  759. </dl>
  760. <dl class="section note"><dt>Note</dt><dd>if you have two one-direction single-buffered endpoints with same index (i.e. 0x02 and 0x82) both will be deconfigured. </dd></dl>
  761. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00398">398</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  762. </div>
  763. </div>
  764. <a id="ga03d68cf538adebd34efd3012b92da693"></a>
  765. <h2 class="memtitle"><span class="permalink"><a href="#ga03d68cf538adebd34efd3012b92da693">&#9670;&nbsp;</a></span>usbd_reg_endpoint()</h2>
  766. <div class="memitem">
  767. <div class="memproto">
  768. <table class="mlabels">
  769. <tr>
  770. <td class="mlabels-left">
  771. <table class="memname">
  772. <tr>
  773. <td class="memname">static void usbd_reg_endpoint </td>
  774. <td>(</td>
  775. <td class="paramtype">usbd_device *&#160;</td>
  776. <td class="paramname"><em>dev</em>, </td>
  777. </tr>
  778. <tr>
  779. <td class="paramkey"></td>
  780. <td></td>
  781. <td class="paramtype">uint8_t&#160;</td>
  782. <td class="paramname"><em>ep</em>, </td>
  783. </tr>
  784. <tr>
  785. <td class="paramkey"></td>
  786. <td></td>
  787. <td class="paramtype"><a class="el" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a>&#160;</td>
  788. <td class="paramname"><em>callback</em>&#160;</td>
  789. </tr>
  790. <tr>
  791. <td></td>
  792. <td>)</td>
  793. <td></td><td></td>
  794. </tr>
  795. </table>
  796. </td>
  797. <td class="mlabels-right">
  798. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  799. </tr>
  800. </table>
  801. </div><div class="memdoc">
  802. <p>Register endpoint callback. </p>
  803. <dl class="params"><dt>Parameters</dt><dd>
  804. <table class="params">
  805. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  806. <tr><td class="paramname">ep</td><td>endpoint index </td></tr>
  807. <tr><td class="paramname">callback</td><td>pointer to user <a class="el" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> callback for endpoint events </td></tr>
  808. </table>
  809. </dd>
  810. </dl>
  811. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00407">407</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  812. </div>
  813. </div>
  814. <a id="ga3b8185117daea1d28732382b5fa36ff8"></a>
  815. <h2 class="memtitle"><span class="permalink"><a href="#ga3b8185117daea1d28732382b5fa36ff8">&#9670;&nbsp;</a></span>usbd_reg_event()</h2>
  816. <div class="memitem">
  817. <div class="memproto">
  818. <table class="mlabels">
  819. <tr>
  820. <td class="mlabels-left">
  821. <table class="memname">
  822. <tr>
  823. <td class="memname">static void usbd_reg_event </td>
  824. <td>(</td>
  825. <td class="paramtype">usbd_device *&#160;</td>
  826. <td class="paramname"><em>dev</em>, </td>
  827. </tr>
  828. <tr>
  829. <td class="paramkey"></td>
  830. <td></td>
  831. <td class="paramtype">uint8_t&#160;</td>
  832. <td class="paramname"><em>evt</em>, </td>
  833. </tr>
  834. <tr>
  835. <td class="paramkey"></td>
  836. <td></td>
  837. <td class="paramtype"><a class="el" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a>&#160;</td>
  838. <td class="paramname"><em>callback</em>&#160;</td>
  839. </tr>
  840. <tr>
  841. <td></td>
  842. <td>)</td>
  843. <td></td><td></td>
  844. </tr>
  845. </table>
  846. </td>
  847. <td class="mlabels-right">
  848. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  849. </tr>
  850. </table>
  851. </div><div class="memdoc">
  852. <p>Registers event callback. </p>
  853. <dl class="params"><dt>Parameters</dt><dd>
  854. <table class="params">
  855. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  856. <tr><td class="paramname">evt</td><td>device <a class="el" href="../../d5/d1e/a00103.html#USB_EVENTS">event</a> wants to be registered </td></tr>
  857. <tr><td class="paramname">callback</td><td>pointer to user <a class="el" href="../../d0/dc2/a00104.html#ga2992d1e12544a788bf2e1d774d68f3f7">usbd_evt_callback</a> for this event </td></tr>
  858. </table>
  859. </dd>
  860. </dl>
  861. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00416">416</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  862. </div>
  863. </div>
  864. <a id="gaf290c740d704e94deed37f2f59094c17"></a>
  865. <h2 class="memtitle"><span class="permalink"><a href="#gaf290c740d704e94deed37f2f59094c17">&#9670;&nbsp;</a></span>usbd_ep_write()</h2>
  866. <div class="memitem">
  867. <div class="memproto">
  868. <table class="mlabels">
  869. <tr>
  870. <td class="mlabels-left">
  871. <table class="memname">
  872. <tr>
  873. <td class="memname">static int32_t usbd_ep_write </td>
  874. <td>(</td>
  875. <td class="paramtype">usbd_device *&#160;</td>
  876. <td class="paramname"><em>dev</em>, </td>
  877. </tr>
  878. <tr>
  879. <td class="paramkey"></td>
  880. <td></td>
  881. <td class="paramtype">uint8_t&#160;</td>
  882. <td class="paramname"><em>ep</em>, </td>
  883. </tr>
  884. <tr>
  885. <td class="paramkey"></td>
  886. <td></td>
  887. <td class="paramtype">void *&#160;</td>
  888. <td class="paramname"><em>buf</em>, </td>
  889. </tr>
  890. <tr>
  891. <td class="paramkey"></td>
  892. <td></td>
  893. <td class="paramtype">uint16_t&#160;</td>
  894. <td class="paramname"><em>blen</em>&#160;</td>
  895. </tr>
  896. <tr>
  897. <td></td>
  898. <td>)</td>
  899. <td></td><td></td>
  900. </tr>
  901. </table>
  902. </td>
  903. <td class="mlabels-right">
  904. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  905. </tr>
  906. </table>
  907. </div><div class="memdoc">
  908. <p>Write data to endpoint. </p>
  909. <dl class="params"><dt>Parameters</dt><dd>
  910. <table class="params">
  911. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  912. <tr><td class="paramname">ep</td><td>endpoint index, hould belong to IN or CONTROL endpoint </td></tr>
  913. <tr><td class="paramname">buf</td><td>pointer to data buffer </td></tr>
  914. <tr><td class="paramname">blen</td><td>size of data will be written </td></tr>
  915. </table>
  916. </dd>
  917. </dl>
  918. <dl class="section return"><dt>Returns</dt><dd>number of written bytes </dd></dl>
  919. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00424">424</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  920. </div>
  921. </div>
  922. <a id="gabce892816f191ee4588b59dbd70ed004"></a>
  923. <h2 class="memtitle"><span class="permalink"><a href="#gabce892816f191ee4588b59dbd70ed004">&#9670;&nbsp;</a></span>usbd_ep_read()</h2>
  924. <div class="memitem">
  925. <div class="memproto">
  926. <table class="mlabels">
  927. <tr>
  928. <td class="mlabels-left">
  929. <table class="memname">
  930. <tr>
  931. <td class="memname">static int32_t usbd_ep_read </td>
  932. <td>(</td>
  933. <td class="paramtype">usbd_device *&#160;</td>
  934. <td class="paramname"><em>dev</em>, </td>
  935. </tr>
  936. <tr>
  937. <td class="paramkey"></td>
  938. <td></td>
  939. <td class="paramtype">uint8_t&#160;</td>
  940. <td class="paramname"><em>ep</em>, </td>
  941. </tr>
  942. <tr>
  943. <td class="paramkey"></td>
  944. <td></td>
  945. <td class="paramtype">void *&#160;</td>
  946. <td class="paramname"><em>buf</em>, </td>
  947. </tr>
  948. <tr>
  949. <td class="paramkey"></td>
  950. <td></td>
  951. <td class="paramtype">uint16_t&#160;</td>
  952. <td class="paramname"><em>blen</em>&#160;</td>
  953. </tr>
  954. <tr>
  955. <td></td>
  956. <td>)</td>
  957. <td></td><td></td>
  958. </tr>
  959. </table>
  960. </td>
  961. <td class="mlabels-right">
  962. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  963. </tr>
  964. </table>
  965. </div><div class="memdoc">
  966. <p>Read data from endpoint. </p>
  967. <dl class="params"><dt>Parameters</dt><dd>
  968. <table class="params">
  969. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  970. <tr><td class="paramname">ep</td><td>endpoint index, should belong to OUT or CONTROL endpoint. </td></tr>
  971. <tr><td class="paramname">buf</td><td>pointer to read buffer </td></tr>
  972. <tr><td class="paramname">blen</td><td>size of the read buffer in bytes </td></tr>
  973. </table>
  974. </dd>
  975. </dl>
  976. <dl class="section return"><dt>Returns</dt><dd>size of the actually received data, -1 on error. </dd></dl>
  977. <dl class="section note"><dt>Note</dt><dd>if data does not fit buffer it will be truncated </dd></dl>
  978. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00432">432</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  979. </div>
  980. </div>
  981. <a id="ga62d8a32edf72dbdbb870d05e7e4017f7"></a>
  982. <h2 class="memtitle"><span class="permalink"><a href="#ga62d8a32edf72dbdbb870d05e7e4017f7">&#9670;&nbsp;</a></span>usbd_ep_stall()</h2>
  983. <div class="memitem">
  984. <div class="memproto">
  985. <table class="mlabels">
  986. <tr>
  987. <td class="mlabels-left">
  988. <table class="memname">
  989. <tr>
  990. <td class="memname">static void usbd_ep_stall </td>
  991. <td>(</td>
  992. <td class="paramtype">usbd_device *&#160;</td>
  993. <td class="paramname"><em>dev</em>, </td>
  994. </tr>
  995. <tr>
  996. <td class="paramkey"></td>
  997. <td></td>
  998. <td class="paramtype">uint8_t&#160;</td>
  999. <td class="paramname"><em>ep</em>&#160;</td>
  1000. </tr>
  1001. <tr>
  1002. <td></td>
  1003. <td>)</td>
  1004. <td></td><td></td>
  1005. </tr>
  1006. </table>
  1007. </td>
  1008. <td class="mlabels-right">
  1009. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  1010. </tr>
  1011. </table>
  1012. </div><div class="memdoc">
  1013. <p>Stall endpoint. </p>
  1014. <dl class="params"><dt>Parameters</dt><dd>
  1015. <table class="params">
  1016. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  1017. <tr><td class="paramname">ep</td><td>endpoint address </td></tr>
  1018. </table>
  1019. </dd>
  1020. </dl>
  1021. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00440">440</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  1022. </div>
  1023. </div>
  1024. <a id="ga24b864ef84e19bcd0f815ad4242041fa"></a>
  1025. <h2 class="memtitle"><span class="permalink"><a href="#ga24b864ef84e19bcd0f815ad4242041fa">&#9670;&nbsp;</a></span>usbd_ep_unstall()</h2>
  1026. <div class="memitem">
  1027. <div class="memproto">
  1028. <table class="mlabels">
  1029. <tr>
  1030. <td class="mlabels-left">
  1031. <table class="memname">
  1032. <tr>
  1033. <td class="memname">static void usbd_ep_unstall </td>
  1034. <td>(</td>
  1035. <td class="paramtype">usbd_device *&#160;</td>
  1036. <td class="paramname"><em>dev</em>, </td>
  1037. </tr>
  1038. <tr>
  1039. <td class="paramkey"></td>
  1040. <td></td>
  1041. <td class="paramtype">uint8_t&#160;</td>
  1042. <td class="paramname"><em>ep</em>&#160;</td>
  1043. </tr>
  1044. <tr>
  1045. <td></td>
  1046. <td>)</td>
  1047. <td></td><td></td>
  1048. </tr>
  1049. </table>
  1050. </td>
  1051. <td class="mlabels-right">
  1052. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  1053. </tr>
  1054. </table>
  1055. </div><div class="memdoc">
  1056. <p>Unstall endpoint. </p>
  1057. <dl class="params"><dt>Parameters</dt><dd>
  1058. <table class="params">
  1059. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  1060. <tr><td class="paramname">ep</td><td>endpoint address </td></tr>
  1061. </table>
  1062. </dd>
  1063. </dl>
  1064. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00448">448</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  1065. </div>
  1066. </div>
  1067. <a id="ga13b40f8ef25729e67a948bb036b6ce58"></a>
  1068. <h2 class="memtitle"><span class="permalink"><a href="#ga13b40f8ef25729e67a948bb036b6ce58">&#9670;&nbsp;</a></span>usbd_enable()</h2>
  1069. <div class="memitem">
  1070. <div class="memproto">
  1071. <table class="mlabels">
  1072. <tr>
  1073. <td class="mlabels-left">
  1074. <table class="memname">
  1075. <tr>
  1076. <td class="memname">static void usbd_enable </td>
  1077. <td>(</td>
  1078. <td class="paramtype">usbd_device *&#160;</td>
  1079. <td class="paramname"><em>dev</em>, </td>
  1080. </tr>
  1081. <tr>
  1082. <td class="paramkey"></td>
  1083. <td></td>
  1084. <td class="paramtype">bool&#160;</td>
  1085. <td class="paramname"><em>enable</em>&#160;</td>
  1086. </tr>
  1087. <tr>
  1088. <td></td>
  1089. <td>)</td>
  1090. <td></td><td></td>
  1091. </tr>
  1092. </table>
  1093. </td>
  1094. <td class="mlabels-right">
  1095. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  1096. </tr>
  1097. </table>
  1098. </div><div class="memdoc">
  1099. <p>Enables or disables USB hardware. </p>
  1100. <dl class="params"><dt>Parameters</dt><dd>
  1101. <table class="params">
  1102. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  1103. <tr><td class="paramname">enable</td><td>Enables USB when TRUE disables otherwise </td></tr>
  1104. </table>
  1105. </dd>
  1106. </dl>
  1107. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00456">456</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  1108. </div>
  1109. </div>
  1110. <a id="ga9574c807b4052ab5f34290b1afb00065"></a>
  1111. <h2 class="memtitle"><span class="permalink"><a href="#ga9574c807b4052ab5f34290b1afb00065">&#9670;&nbsp;</a></span>usbd_connect()</h2>
  1112. <div class="memitem">
  1113. <div class="memproto">
  1114. <table class="mlabels">
  1115. <tr>
  1116. <td class="mlabels-left">
  1117. <table class="memname">
  1118. <tr>
  1119. <td class="memname">static uint8_t usbd_connect </td>
  1120. <td>(</td>
  1121. <td class="paramtype">usbd_device *&#160;</td>
  1122. <td class="paramname"><em>dev</em>, </td>
  1123. </tr>
  1124. <tr>
  1125. <td class="paramkey"></td>
  1126. <td></td>
  1127. <td class="paramtype">bool&#160;</td>
  1128. <td class="paramname"><em>connect</em>&#160;</td>
  1129. </tr>
  1130. <tr>
  1131. <td></td>
  1132. <td>)</td>
  1133. <td></td><td></td>
  1134. </tr>
  1135. </table>
  1136. </td>
  1137. <td class="mlabels-right">
  1138. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  1139. </tr>
  1140. </table>
  1141. </div><div class="memdoc">
  1142. <p>Connects or disconnects USB hardware to/from usb host. </p>
  1143. <dl class="params"><dt>Parameters</dt><dd>
  1144. <table class="params">
  1145. <tr><td class="paramname">dev</td><td>dev usb device <a class="el" href="../../d5/d0f/a00308.html">_usbd_device</a> </td></tr>
  1146. <tr><td class="paramname">connect</td><td>Connects USB to host if TRUE, disconnects otherwise </td></tr>
  1147. </table>
  1148. </dd>
  1149. </dl>
  1150. <dl class="section return"><dt>Returns</dt><dd>lanes connection status. <a class="el" href="../../d5/d1e/a00103.html#USB_LANES_STATUS">USB_LANES_STATUS</a> </dd></dl>
  1151. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00465">465</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  1152. </div>
  1153. </div>
  1154. <a id="gac64fb60affe8b2fe6253e6ebe5fe9525"></a>
  1155. <h2 class="memtitle"><span class="permalink"><a href="#gac64fb60affe8b2fe6253e6ebe5fe9525">&#9670;&nbsp;</a></span>usbd_getinfo()</h2>
  1156. <div class="memitem">
  1157. <div class="memproto">
  1158. <table class="mlabels">
  1159. <tr>
  1160. <td class="mlabels-left">
  1161. <table class="memname">
  1162. <tr>
  1163. <td class="memname">static uint32_t usbd_getinfo </td>
  1164. <td>(</td>
  1165. <td class="paramtype">usbd_device *&#160;</td>
  1166. <td class="paramname"><em>dev</em></td><td>)</td>
  1167. <td></td>
  1168. </tr>
  1169. </table>
  1170. </td>
  1171. <td class="mlabels-right">
  1172. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
  1173. </tr>
  1174. </table>
  1175. </div><div class="memdoc">
  1176. <p>Retrieves status and capabilities. </p>
  1177. <dl class="section return"><dt>Returns</dt><dd>current HW status, enumeration speed and capabilities <a class="el" href="../../d5/d1e/a00103.html#USBD_HW_CAPS">USBD_HW_CAPS</a> </dd></dl>
  1178. <p class="definition">Definition at line <a class="el" href="../../db/db6/a00074_source.html#l00471">471</a> of file <a class="el" href="../../db/db6/a00074_source.html">usbd_core.h</a>.</p>
  1179. </div>
  1180. </div>
  1181. </div><!-- contents -->
  1182. </div><!-- doc-content -->
  1183. <!-- start footer part -->
  1184. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  1185. <ul>
  1186. <li class="footer">Generated by
  1187. <a href="http://www.doxygen.org/index.html">
  1188. <img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  1189. </ul>
  1190. </div>
  1191. </body>
  1192. </html>