xtoolbox / TeenyUSB

Lightweight USB device and host stack for STM32 and other MCUs. Ready for USB 3.0 device.
http://www.tusb.org
MIT License
563 stars 175 forks source link

USBDevice模式下SETUP在线程模式中处理无法发包 #8

Open ranbochen opened 4 years ago

ranbochen commented 4 years ago

主机使用CTRL-TRANSFER来获取数据的时候 如果不在SETUP回调函数(class-handler)中立即发送数据 而转到线程中再调用tusb_control_send,则主机无法收到发送的数据 用wireshark抓包,返回的包长度为0字节

比如:HID-GET-REPORT 如果在SETUP中断中立即调用tusb_control_send发送数据,则主机收到正确数据 如果转发到线程模式,在线程中调用tusb_control_send,则主机收到0字节包

xtoolbox commented 4 years ago

主机使用CTRL-TRANSFER来获取数据的时候 如果不在SETUP回调函数(class-handler)中立即发送数据 而转到线程中再调用tusb_control_send,则主机无法收到发送的数据 用wireshark抓包,返回的包长度为0字节

比如:HID-GET-REPORT 如果在SETUP中断中立即调用tusb_control_send发送数据,则主机收到正确数据 如果转发到线程模式,在线程中调用tusb_control_send,则主机收到0字节包

目前TeenyUSB没有为控制传输设计延迟处理机制,所以出现了这样的情况。感谢你的反馈,后续考虑这种多线程情形下的控制传输处理问题。