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>(&bulkEd[0], 0, <b>sizeof</b>(bulkEd[0]));
<b>break</b>;
<b>case</b> ED_IN:
//复位用于接收数据的ED
toggle = usbGetEdToggle(bulkEd[1]);
<b>memset</b>(&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,如需转载请自行联系原作者