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,如需轉載請自行聯系原作者