⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 core_8c.html

📁 usbport-sl811usb主控器芯片usb程序实现
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>usbstack: /home/bene/projects/sl811/usbstack/core/core.c File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.1 --><div class="tabs">  <ul>    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>    <li><a href="annotated.html"><span>Classes</span></a></li>    <li id="current"><a href="files.html"><span>Files</span></a></li>  </ul></div><div class="tabs">  <ul>    <li><a href="files.html"><span>File&nbsp;List</span></a></li>    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>  </ul></div><h1>/home/bene/projects/sl811/usbstack/core/core.c File Reference</h1><code>#include &lt;stdlib.h&gt;</code><br><code>#include &quot;<a class="el" href="core_8h-source.html">core.h</a>&quot;</code><br><code>#include &lt;<a class="el" href="host_8h-source.html">host/host.h</a>&gt;</code><br><code>#include &lt;<a class="el" href="usb_8h-source.html">core/usb.h</a>&gt;</code><br><code>#include &lt;<a class="el" href="usb11spec_8h-source.html">usbspec/usb11spec.h</a>&gt;</code><br><code>#include &lt;lib/list.h&gt;</code><br><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#60af0d8621d025f018ba0f56bca00a93">usb_init</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">u8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#c58f28f1c2693257b89945e785403baf">usb_next_address</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#56f96c6ef2028c55dce92873a489419d">usb_periodic</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structusb__device__t.html">usb_device</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#d25cbf02b3b5e22f22c697193bb87f92">usb_add_device</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">u8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#750a0d6554fd2aec4459d0e3af2dd6ef">usb_remove_device</a> (<a class="el" href="structusb__device__t.html">usb_device</a> *dev)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">u8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#83545d627c3f35ae34e050aab48161ef">usb_register_driver</a> (<a class="el" href="structusb__driver__t.html">usb_driver</a> *dev)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#99cd77f8e4ac64be0d886f31148acb09">usb_probe_driver</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structusb__irp__t.html">usb_irp</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#b4a317acc71220967da6cf6dd1da7ac9">usb_get_irp</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">u8&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#ddc2d9767934c9943b6e08b8b8125b33">usb_remove_irp</a> (<a class="el" href="structusb__irp__t.html">usb_irp</a> *irp)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">u16&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#265cc39d7b493019e5681b27a4349183">usb_submit_irp</a> (<a class="el" href="structusb__irp__t.html">usb_irp</a> *irp)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structusb__transfer__descriptor__t.html">usb_transfer_descriptor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="core_8c.html#7e0bd9c92c1fb753304e6f77c0d6bd2c">usb_create_transfer_descriptor</a> (<a class="el" href="structusb__irp__t.html">usb_irp</a> *irp)</td></tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="d25cbf02b3b5e22f22c697193bb87f92"></a><!-- doxytag: member="core.c::usb_add_device" ref="d25cbf02b3b5e22f22c697193bb87f92" args="()" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname"><a class="el" href="structusb__device__t.html">usb_device</a>* usb_add_device           </td>          <td>(</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Enumerate new device and create data structures for the core. usb_add_device expected that the device answers to address zero. </div></div><p><a class="anchor" name="7e0bd9c92c1fb753304e6f77c0d6bd2c"></a><!-- doxytag: member="core.c::usb_create_transfer_descriptor" ref="7e0bd9c92c1fb753304e6f77c0d6bd2c" args="(usb_irp *irp)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname"><a class="el" href="structusb__transfer__descriptor__t.html">usb_transfer_descriptor</a>* usb_create_transfer_descriptor           </td>          <td>(</td>          <td class="paramtype"><a class="el" href="structusb__irp__t.html">usb_irp</a> *&nbsp;</td>          <td class="paramname"> <em>irp</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Create a transfer descriptor with an parent irp. </div></div><p><a class="anchor" name="b4a317acc71220967da6cf6dd1da7ac9"></a><!-- doxytag: member="core.c::usb_get_irp" ref="b4a317acc71220967da6cf6dd1da7ac9" args="()" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname"><a class="el" href="structusb__irp__t.html">usb_irp</a>* usb_get_irp           </td>          <td>(</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Not implemented. </div></div><p><a class="anchor" name="60af0d8621d025f018ba0f56bca00a93"></a><!-- doxytag: member="core.c::usb_init" ref="60af0d8621d025f018ba0f56bca00a93" args="()" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">void usb_init           </td>          <td>(</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Initialize USB stack. </div></div><p><a class="anchor" name="c58f28f1c2693257b89945e785403baf"></a><!-- doxytag: member="core.c::usb_next_address" ref="c58f28f1c2693257b89945e785403baf" args="()" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">u8 usb_next_address           </td>          <td>(</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Get next free usb device address. </div></div><p><a class="anchor" name="56f96c6ef2028c55dce92873a489419d"></a><!-- doxytag: member="core.c::usb_periodic" ref="56f96c6ef2028c55dce92873a489419d" args="()" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">void usb_periodic           </td>          <td>(</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Call this function periodically for control and transfer management. </div></div><p><a class="anchor" name="99cd77f8e4ac64be0d886f31148acb09"></a><!-- doxytag: member="core.c::usb_probe_driver" ref="99cd77f8e4ac64be0d886f31148acb09" args="()" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">void usb_probe_driver           </td>          <td>(</td>          <td class="paramname">          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Call every probe function from every registered driver, to check if there is a valid driver for the new device. </div></div><p><a class="anchor" name="83545d627c3f35ae34e050aab48161ef"></a><!-- doxytag: member="core.c::usb_register_driver" ref="83545d627c3f35ae34e050aab48161ef" args="(usb_driver *dev)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">u8 usb_register_driver           </td>          <td>(</td>          <td class="paramtype"><a class="el" href="structusb__driver__t.html">usb_driver</a> *&nbsp;</td>          <td class="paramname"> <em>dev</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Register new driver at usb stack. <p>first check to find a suitable device (root hub drivers need this call here) </div></div><p><a class="anchor" name="750a0d6554fd2aec4459d0e3af2dd6ef"></a><!-- doxytag: member="core.c::usb_remove_device" ref="750a0d6554fd2aec4459d0e3af2dd6ef" args="(usb_device *dev)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">u8 usb_remove_device           </td>          <td>(</td>          <td class="paramtype"><a class="el" href="structusb__device__t.html">usb_device</a> *&nbsp;</td>          <td class="paramname"> <em>dev</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Find currently detached device and remove data structures </div></div><p><a class="anchor" name="ddc2d9767934c9943b6e08b8b8125b33"></a><!-- doxytag: member="core.c::usb_remove_irp" ref="ddc2d9767934c9943b6e08b8b8125b33" args="(usb_irp *irp)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">u8 usb_remove_irp           </td>          <td>(</td>          <td class="paramtype"><a class="el" href="structusb__irp__t.html">usb_irp</a> *&nbsp;</td>          <td class="paramname"> <em>irp</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Not implemented. </div></div><p><a class="anchor" name="265cc39d7b493019e5681b27a4349183"></a><!-- doxytag: member="core.c::usb_submit_irp" ref="265cc39d7b493019e5681b27a4349183" args="(usb_irp *irp)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">u16 usb_submit_irp           </td>          <td>(</td>          <td class="paramtype"><a class="el" href="structusb__irp__t.html">usb_irp</a> *&nbsp;</td>          <td class="paramname"> <em>irp</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>Takes usb_irp and split it into several usb packeges (SETUP,IN,OUT) In the usbstack they are transported with the usb_transfer_descriptor data structure. <p>You can see at bit 7 of bmRequestType if this stage is used, default requests are always 8 byte greate, from host to device. Stage 3 is only neccessary if the request expected datas from the device. bit7 - 1 = from device to host -&gt; yes we need data stage bit7 - 0 = from host to device -&gt; no send zero packet<p>nach einem setup token kann nur ein IN token in stage 3 folgen nie aber ein OUT. Ein Zero OUT wird nur als Bestaetigung benoetigt.<p>bit7 = 1 Device to Host<ul><li>es kommen noch Daten mit PID_IN an</li><li>host beendet mit PID_OUT DATA1 Zero bit7 - 0 Host zu Device (wie set address)</li><li>device sendet ein PID_IN DATA1 Zero Packet als bestaetigung</li></ul><p>bit7 = 1, host beendet mit PID_OUT DATA1 Zero bit7 = 0, device sendet ein PID_IN DATA1 Zero Packet als bestaetigung </div></div><p><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 17 08:14:10 2007 for usbstack by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -