a00002_source.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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: readme.md 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('d7/d46/a00002.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">readme.md</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;![Travis (.org) branch](https://img.shields.io/travis/dmitrystu/libusb_stm32/master?logo=travis)</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;### Lightweight USB Device Stack ###</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;+ Lightweight and fast</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;+ Event-driven process workflow</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;+ Completely separated USB hardware driver and usb core</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;+ Easy to use.</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;### Requirements ###</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;+ [CMSIS V4](https://github.com/ARM-software/CMSIS) or [CMSIS V5](https://github.com/ARM-software/CMSIS_5).</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;+ [stm32.h](https://github.com/dmitrystu/stm32h) STM32 universal header</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;All requirements can be downloaded into a directory specified in environment variable `CMSIS` using</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;`make cmsis` command.</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;### Supported hardware ###</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;&lt;table&gt;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; &lt;tr&gt;&lt;th&gt;MCU Series&lt;/th&gt;&lt;th&gt;Features&lt;/th&gt;&lt;th&gt;Driver&lt;/th&gt;&lt;th&gt;File&lt;/th&gt;&lt;/tr&gt;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &lt;td rowspan=&quot;2&quot;&gt;STM32L0x2 STM32L0x3 STM32F070 STM32F0x2 STM32F0x8&lt;/td&gt;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; &lt;td nowrap rowspan=&quot;2&quot;&gt;Doublebuffered&lt;sup&gt;[2]&lt;/sup&gt;&lt;br /&gt;8&lt;sup&gt;[1]&lt;/sup&gt; endpoints&lt;br /&gt; BC1.2&lt;/td&gt;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; &lt;td&gt;usbd_devfs&lt;/td&gt;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &lt;td&gt;usbd_stm32l052_devfs.c&lt;/td&gt;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; &lt;td&gt;usbd_devfs_asm&lt;/td&gt;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; &lt;td&gt;usbd_stm32l052_devfs_asm.S&lt;/td&gt;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &lt;td rowspan=&quot;2&quot;&gt;STM32L4x2 STM32L4x3 STM32G4 series&lt;/td&gt;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &lt;td nowrap rowspan=&quot;2&quot;&gt;Doublebuffered&lt;sup&gt;[2]&lt;/sup&gt;&lt;br /&gt;8&lt;sup&gt;[1]&lt;/sup&gt; endpoints&lt;br /&gt; BC1.2&lt;/td&gt;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; &lt;td&gt;usbd_devfs&lt;/td&gt;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; &lt;td&gt;usbd_stm32l433_devfs.c&lt;/td&gt;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; &lt;td&gt;usbd_devfs_asm&lt;/td&gt;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; &lt;td&gt;usbd_stm32l052_devfs_asm.S&lt;/td&gt;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &lt;td rowspan=&quot;2&quot;&gt;STM32L1xx&lt;/td&gt;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &lt;td nowrap rowspan=&quot;2&quot;&gt;Doublebuffered&lt;sup&gt;[2]&lt;/sup&gt;&lt;br /&gt;8&lt;sup&gt;[1]&lt;/sup&gt; endpoints&lt;/td&gt;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &lt;td&gt;usbd_devfs&lt;/td&gt;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; &lt;td&gt;usbd_stm32l100_devfs.c&lt;/td&gt;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; &lt;td&gt;usbd_devfs_asm&lt;/td&gt;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &lt;td&gt;usbd_stm32l100_devfs_asm.S&lt;/td&gt;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; &lt;td rowspan=&quot;2&quot;&gt;STM32F102 STM32F103 STM32F302 STM32F303 STM32F373&lt;/td&gt;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; &lt;td nowrap rowspan=&quot;2&quot;&gt;Doublebuffered&lt;sup&gt;[2]&lt;/sup&gt;&lt;br /&gt;External DP pullup&lt;br /&gt;8&lt;sup&gt;[1]&lt;/sup&gt; endpoints&lt;/td&gt;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &lt;td&gt;usbd_devfs&lt;/td&gt;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &lt;td&gt;usbd_stm32f103_devfs.c&lt;/td&gt;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; &lt;td&gt;usbd_devfs_asm&lt;/td&gt;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &lt;td&gt;usbd_stm32f103_devfs_asm.S&lt;/td&gt;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; &lt;td&gt;STM32L4x5 STM32L4x6&lt;/td&gt;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; &lt;td nowrap&gt;Doublebuffered&lt;br /&gt;6 endpoints&lt;br /&gt; BC1.2&lt;br /&gt;VBUS detection&lt;/td&gt;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; &lt;td&gt;usbd_otgfs&lt;/td&gt;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; &lt;td&gt;usbd_stm32l476_otgfs.c&lt;/td&gt;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; &lt;td rowspan=&quot;2&quot;&gt;STM32F4x5 STM32F4x7 STM32F4x9&lt;/td&gt;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; &lt;td nowrap&gt;Doublebuffered&lt;br/&gt;4 endpoints&lt;br/&gt;VBUS detection&lt;br/&gt;SOF output&lt;/td&gt;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; &lt;td&gt;usbd_otgfs&lt;/td&gt;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; &lt;td&gt;usbd_stm32f429_otgfs.c&lt;/td&gt;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; &lt;td nowrap&gt;Doublebuffered&lt;br/&gt;6 endpoints&lt;br/&gt;VBUS detection&lt;br/&gt;SOF output&lt;/td&gt;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; &lt;td&gt;usbd_otghs&lt;/td&gt;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; &lt;td&gt;usbd_stm32f429_otghs.c&lt;/td&gt;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; &lt;tr&gt;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; &lt;td&gt;STM32F105 STM32F107&lt;/td&gt;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; &lt;td nowrap&gt;Doublebuffered&lt;br/&gt;4 endpoints&lt;br/&gt;VBUS detection&lt;br/&gt;SOF output&lt;/td&gt;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; &lt;td&gt;usbd_otgfs&lt;/td&gt;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; &lt;td&gt;usbd_stm32f105_otgfs.c&lt;/td&gt;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; &lt;/tr&gt;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;&lt;/table&gt;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;1. Single physical endpoint can be used to implement</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; + one bi-directional/single-buffer logical endpoint (CONTROL)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; + one uni-directional/double-buffer logical endpoint (BULK OR ISOCHRONOUS)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; + two uni-directional/single-buffer logical endpoints (BULK OR INTERRUPT)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;2. At this moment BULK IN endpoint can use both buffers, but it is not **real** doublebuffered.</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;3. Tested with STM32L052K8, STM32L100RC, STM32L476RG, STM32F072C8, STM32F103C8, STM32F103CB, STM32F303CC, STM32F303RE, STM32F429ZI, STM32F105RBT6, STM32F107VCT6, STM32L433CCT6, STM32F070CBT6, STM32G431RB,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;STM32F411CEUx</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;### Implemented definitions for classes ###</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;1. USB HID based on [Device Class Definition for Human Interface Devices (HID) Version 1.11](https://www.usb.org/sites/default/files/documents/hid1_11.pdf)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;2. USB DFU based on [USB Device Firmware Upgrade Specification, Revision 1.1](https://www.usb.org/sites/default/files/DFU_1.1.pdf)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;3. USB CDC based on [Class definitions for Communication Devices 1.2](https://www.usb.org/sites/default/files/CDC1.2_WMC1.1_012011.zip)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;4. USB TMC based on [USB Device Test and Measurement Class Specification, Revision 1.0](https://www.usb.org/sites/default/files/USBTMC_1_006a.zip)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;### Using makefile ###</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;+ to build library module</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;```</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;make module MODULE=path/module.a DEFINES=&quot;mcu spcified defines&quot; CFLAGS=&quot;cpu cpecified compiler flags&quot;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;```</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;+ to build demo</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;```</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;make bluepill program</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;make stm32l052x8</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;```</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;+ to get a help</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;```</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;make help</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;```</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;### Default values: ###</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;| Variable | Default Value | Means |</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;|----------|-------------------------------------|-------------------------------|</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;| CMSIS | ./CMSIS | path to CMSIS root folder |</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;| CMSISDEV | $(CMSIS)/Device | path to CMSIS device folder |</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;| CMSISCORE| $(CMSIS)/CMSIS/Include $(CMSIS)/CMSIS/Core/Include | path to CMSIS core headers |</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;| MCU | stm32l100xc | MCU selection for demo project|</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;| CFLAGS | -mcpu=cortex-m3 -mfloat-abi=soft | MCU specified compiler flags |</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;| DEFINES | STM32L1 STM32L100xC | MCU specified defines |</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;| STPROG_CLI | ~/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI | Path to the ST Cube Programmer CLI |</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;| OPTFLAGS | -Os | Code optimization flags |</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;### Useful Resources ###</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;1. [USB Implementers Forum official site](https://www.usb.org/)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;2. [USB Made Simple](http://www.usbmadesimple.co.uk/)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;3. [LUFA - the Lightweight USB Framework for AVRs.](https://github.com/abcminiuser/lufa)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;4. [Open Source ARM cortex m microcontroller library](https://github.com/libopencm3/libopencm3)</div></div><!-- fragment --></div><!-- contents -->
  86. </div><!-- doc-content -->
  87. <!-- start footer part -->
  88. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  89. <ul>
  90. <li class="navelem"><b>readme.md</b></li>
  91. <li class="footer">Generated by
  92. <a href="http://www.doxygen.org/index.html">
  93. <img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  94. </ul>
  95. </div>
  96. </body>
  97. </html>