UFI 命令在执行时出现错误,需要对对应的端口进行复位处理,代码如下:
/**
 * ED 数据区数据初始化
 * @param edType ED 的类型,包括 IN OUT 两种情况
 */
short bulkEDReset( BYTE edType)
{
    BYTE toggle;
   
    switch (edType)
    {
    case ED_OUT:
       // 复位用于发送数据的 ED
       memset (&bulkEd[0], 0, sizeof (bulkEd[0]));
       break ;
      
    case ED_IN:
       // 复位用于接收数据的 ED
       toggle = usbGetEdToggle(bulkEd[1]);
       memset (&bulkEd[1], 0, sizeof (bulkEd[1]));
       if (toggle == 0)
           bulkEd[1]. HeadP |= 0x2;
       break ;
      
    default :
       return -1;
       break ;
    }
    return 0;
}
 
/**
 * 批量读端口复位
 */
short usbClearBulkIn( void )
{
    unsigned char port;
 
    bulkEDReset(ED_IN);
 
    port = funUsbGetBulkInPort();
    usbClearFeature(0x02, port | 0x80);
 
    return 0;
}
 
/**
 * 批量写端口复位
 */
short usbClearBulkOut( void )
{
    unsigned char port;
 
    bulkEDReset(ED_OUT);
 
    port = funUsbGetBulkOutPort();
    usbClearFeature(0x02, port);
    return 0;
}