天天看点

基于OHCI的USB主机 —— 批量端口复位代码

UFI命令在执行时出现错误,需要对对应的端口进行复位处理,代码如下:

/**

 * ED数据区数据初始化

 * @param edType ED的类型,包括IN和OUT两种情况

 */

<b>short</b> <b>bulkEDReset</b>(BYTE edType)

{

    BYTE toggle;

    <b>switch</b> (edType)

    {

    <b>case</b> ED_OUT:

       //复位用于发送数据的ED

       <b>memset</b>(&amp;bulkEd[0], 0, <b>sizeof</b>(bulkEd[0]));

       <b>break</b>;

    <b>case</b> ED_IN:

       //复位用于接收数据的ED

       toggle = usbGetEdToggle(bulkEd[1]);

       <b>memset</b>(&amp;bulkEd[1], 0, <b>sizeof</b>(bulkEd[1]));

       <b>if</b> (toggle == 0)

           bulkEd[1].HeadP |= 0x2;

    <b>default</b>:

       <b>return</b> -1;

    }

    <b>return</b> 0;

}

 * 批量读端口复位

<b>short</b> <b>usbClearBulkIn</b>(<b>void</b>)

    <b>unsigned</b> <b>char</b> port;

    bulkEDReset(ED_IN);

    port = funUsbGetBulkInPort();

    usbClearFeature(0x02, port | 0x80);

 * 批量写端口复位

<b>short</b> <b>usbClearBulkOut</b>(<b>void</b>)

    bulkEDReset(ED_OUT);

    port = funUsbGetBulkOutPort();

    usbClearFeature(0x02, port);

本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/320848,如需转载请自行联系原作者