Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thirdpin/libopencm3.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib/usb
diff options
context:
space:
mode:
authorFelix Ruess <felix.ruess@gmail.com>2014-12-29 18:48:35 +0300
committerFelix Ruess <felix.ruess@gmail.com>2014-12-29 19:10:04 +0300
commit922d8f7079efd232c736e84df49214cec13fb9ea (patch)
tree50dfeb6cb9587299f85552a85372b070e867fd53 /lib/usb
parent8a15cec6bf99f59065879a14895fb8af8a8a53e7 (diff)
[usb] fix user_callback_set_config
USB using control callbacks was broken since d6bad27735a77b8daa90ce72b843cf08ba78697d Properly check if user usb control callback are registered, while here make sure user_callback_set_config callback pointers are initialized to NULL.
Diffstat (limited to 'lib/usb')
-rw-r--r--lib/usb/usb.c5
-rw-r--r--lib/usb/usb_standard.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/usb/usb.c b/lib/usb/usb.c
index 78637363..8922b4c3 100644
--- a/lib/usb/usb.c
+++ b/lib/usb/usb.c
@@ -86,6 +86,11 @@ usbd_device *usbd_init(const usbd_driver *driver,
usbd_dev->user_callback_ctr[0][USB_TRANSACTION_IN] =
_usbd_control_in;
+ int i;
+ for (i = 0; i < MAX_USER_SET_CONFIG_CALLBACK; i++) {
+ usbd_dev->user_callback_set_config[i] = NULL;
+ }
+
return usbd_dev;
}
diff --git a/lib/usb/usb_standard.c b/lib/usb/usb_standard.c
index bc4710ff..885f077b 100644
--- a/lib/usb/usb_standard.c
+++ b/lib/usb/usb_standard.c
@@ -256,7 +256,7 @@ static int usb_standard_set_configuration(usbd_device *usbd_dev,
/* Reset all endpoints. */
usbd_dev->driver->ep_reset(usbd_dev);
- if (usbd_dev->user_callback_set_config) {
+ if (usbd_dev->user_callback_set_config[0]) {
/*
* Flush control callbacks. These will be reregistered
* by the user handler.