Skip to content

Commit dd0e483

Browse files
Jankarlp
authored andcommitted
stm32f1: fix h103 usbdfu example
This has been broken since f87170e when set config started clearing control handlers to be re-registered by different configurations. Fix this example to use a set config callback to setup control transfer callbacks, just like CDC-ACM demos. With this fix, this demo works with dfu-tool 0.8 Signed-off-by: Karl Palsson <[email protected]>
1 parent a6c183d commit dd0e483

File tree

1 file changed

+12
-5
lines changed
  • examples/stm32/f1/stm32-h103/usb_dfu

1 file changed

+12
-5
lines changed

examples/stm32/f1/stm32-h103/usb_dfu/usbdfu.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,17 @@ static int usbdfu_control_request(usbd_device *usbd_dev, struct usb_setup_data *
229229
return 0;
230230
}
231231

232+
static void usbdfu_set_config(usbd_device *usbd_dev, uint16_t wValue)
233+
{
234+
(void)wValue;
235+
236+
usbd_register_control_callback(
237+
usbd_dev,
238+
USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
239+
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT,
240+
usbdfu_control_request);
241+
}
242+
232243
int main(void)
233244
{
234245
usbd_device *usbd_dev;
@@ -257,11 +268,7 @@ int main(void)
257268
gpio_set(GPIOC, GPIO11);
258269

259270
usbd_dev = usbd_init(&stm32f103_usb_driver, &dev, &config, usb_strings, 4, usbd_control_buffer, sizeof(usbd_control_buffer));
260-
usbd_register_control_callback(
261-
usbd_dev,
262-
USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
263-
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT,
264-
usbdfu_control_request);
271+
usbd_register_set_config_callback(usbd_dev, usbdfu_set_config);
265272

266273
gpio_clear(GPIOC, GPIO11);
267274

0 commit comments

Comments
 (0)