case UIS_TOKEN_SETUP | 0: //SETUP事务
UEP0_CTRL = bUEP_R_TOG | bUEP_T_TOG | UEP_R_RES_ACK | UEP_T_RES_ACK;
len = USB_RX_LEN;
if(len == (sizeof(USB_SETUP_REQ)))
{
SetupLen = UsbSetupBuf->wLengthL;
if(UsbSetupBuf->wLengthH || SetupLen > 0x7F )
{
SetupLen = 0x7F; // 限制总长度
}
len = 0; // 默认为成功并且上传0长度
SetupReq = UsbSetupBuf->bRequest;
if ( ( UsbSetupBuf->bRequestType & USB_REQ_TYP_MASK ) != USB_REQ_TYP_STANDARD )/* HID类命令 */
{}
此处进行描述符传输时 ,示例代码进行了长度的限制,保证返回的数据长度小于128字节。
请问为什么需要这样处理?对于部分键鼠设备,有超过128字节,甚至超过256字节的描述符数据,应该如何进行处理?
当主机发来请求后,应该如何来分段传输完整的描述符数据?