[libopenstm32-devel] Minor USB issue
Status: Inactive
Brought to you by:
uh1763
From: Gareth M. <ga...@bl...> - 2011-01-21 06:50:28
|
Hi all I pulled updates to libopenstm32 and noticed that some of my experimental changes to the usb code have made it into the library. The API was changed for a simpler and more direct handling of usb control requests from the application. There is a bug in this code (or maybe the examples, since it's not documented), but the CDC example registers the control callback in the set_config callback, so if the device receives multiple set_config requests the array of control callbacks will fill up. The DFU example doesn't implement a set_config callback, and the control callback is registered from main(). So if control callbacks should be cleared on set_config, then this example is broken. Attached is a proposed patch to fix these issues: control callbacks are cleared only if a user set_config handler is installed. We should possibly do the same thing with endpoints. It will simplify the implementation of devices with only one configuration, by not requiring a set_config callback. Let me know you how you feel the usb api should behave. This is only a suggestion, but there is are bugs either way that must be fixed. Unrelated: Th patch also clears the CTR flag in usbd_poll() if an endpoint doesn't have an associated callback function. This fixes a problem when calling usbd_poll() from an ISR. Regards, Gareth -- Black Sphere Technologies Ltd. Web: www.blacksphere.co.nz Mobile: +64 27 777 2182 Tel: +64 9 478 8885 Skype: gareth.mcmullin LinkedIn: http://nz.linkedin.com/in/gsmcmullin |