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

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;

}






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值