summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-04-14 16:18:58 +0800
committersakumisu <[email protected]>2022-04-14 16:20:09 +0800
commitc6495ac5af87f854234c1a526a5a8fb40078fa2f (patch)
tree61658e30376d7cc6c0f8e154274a5cb5453888f1
parent81bc7dd63a70fa5ca061340d91aae662eb346b1e (diff)
fix duplicate calls to the class notify handler when class has multiploe
intfs
-rw-r--r--core/usbd_core.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/core/usbd_core.c b/core/usbd_core.c
index ae2d2909..4aee1c51 100644
--- a/core/usbd_core.c
+++ b/core/usbd_core.c
@@ -1190,14 +1190,10 @@ static void usbd_class_event_notify_handler(uint8_t event, void *arg)
usb_slist_for_each(i, &usbd_class_head)
{
usbd_class_t *devclass = usb_slist_entry(i, struct usbd_class, list);
+ usbd_interface_t *intf = usb_slist_first_entry(&devclass->intf_list, struct usbd_interface, list);
- usb_slist_for_each(j, &devclass->intf_list)
- {
- usbd_interface_t *intf = usb_slist_entry(j, struct usbd_interface, list);
-
- if (intf->notify_handler) {
- intf->notify_handler(event, arg);
- }
+ if (intf->notify_handler) {
+ intf->notify_handler(event, arg);
}
}
}