summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-07-19 19:08:46 +0800
committersakumisu <[email protected]>2022-07-19 19:08:58 +0800
commita22d100ca2689dc3fd0343bb368addbc75e3d8a1 (patch)
tree46456057dccc8bcc86d4b5cad0750a8efd8e56e3
parentdecc40f95da46b32b695c409af66c90d0d135c33 (diff)
remove list search mode
-rw-r--r--core/usbd_core.c90
1 files changed, 6 insertions, 84 deletions
diff --git a/core/usbd_core.c b/core/usbd_core.c
index 939b41a2..3bd7b22a 100644
--- a/core/usbd_core.c
+++ b/core/usbd_core.c
@@ -22,10 +22,6 @@
*/
#include "usbd_core.h"
-#define USBD_EP_CALLBACK_LIST_SEARCH 0
-#define USBD_EP_CALLBACK_ARR_SEARCH 1
-#define USBD_EP_CALLBACK_SEARCH_METHOD USBD_EP_CALLBACK_ARR_SEARCH
-
/* general descriptor field offsets */
#define DESC_bLength 0 /** Length offset */
#define DESC_bDescriptorType 1 /** Descriptor type offset */
@@ -58,10 +54,9 @@ struct usbd_core_cfg_priv {
/* Buffer used for storing standard, class and vendor request data */
USB_MEM_ALIGN32 uint8_t req_data[CONFIG_USBDEV_REQUEST_BUFFER_LEN];
-#if USBD_EP_CALLBACK_SEARCH_METHOD == USBD_EP_CALLBACK_ARR_SEARCH
usbd_endpoint_callback in_ep_cb[USB_EP_IN_NUM];
usbd_endpoint_callback out_ep_cb[USB_EP_OUT_NUM];
-#endif
+
/** Variable to check whether the usb has been configured */
bool configured;
/** Currently selected configuration */
@@ -155,34 +150,7 @@ static bool is_ep_valid(uint8_t ep)
return true;
}
-#if USBD_EP_CALLBACK_SEARCH_METHOD == USBD_EP_CALLBACK_ARR_SEARCH
-static void usbd_ep_callback_register(void)
-{
- usb_slist_t *i, *j, *k;
- usb_slist_for_each(i, &usbd_class_head)
- {
- usbd_class_t *devclass = usb_slist_entry(i, struct usbd_class, list);
- usb_slist_for_each(j, &devclass->intf_list)
- {
- usbd_interface_t *intf = usb_slist_entry(j, struct usbd_interface, list);
-
- usb_slist_for_each(k, &intf->ep_list)
- {
- usbd_endpoint_t *ept = usb_slist_entry(k, struct usbd_endpoint, list);
-
- if (ept->ep_cb) {
- if (ept->ep_addr & 0x80) {
- usbd_core_cfg.in_ep_cb[ept->ep_addr & 0x7f] = ept->ep_cb;
- } else {
- usbd_core_cfg.out_ep_cb[ept->ep_addr & 0x7f] = ept->ep_cb;
- }
- }
- }
- }
- }
-}
-#endif
/**
* @brief configure and enable endpoint
*
@@ -1127,64 +1095,16 @@ static void usbd_ep0_in_handler(void)
static void usbd_ep_out_handler(uint8_t ep)
{
-#if USBD_EP_CALLBACK_SEARCH_METHOD == USBD_EP_CALLBACK_LIST_SEARCH
- usb_slist_t *i, *j, *k;
- usb_slist_for_each(i, &usbd_class_head)
- {
- usbd_class_t *devclass = usb_slist_entry(i, struct usbd_class, list);
-
- usb_slist_for_each(j, &devclass->intf_list)
- {
- usbd_interface_t *intf = usb_slist_entry(j, struct usbd_interface, list);
-
- usb_slist_for_each(k, &intf->ep_list)
- {
- usbd_endpoint_t *ept = usb_slist_entry(k, struct usbd_endpoint, list);
-
- if ((ept->ep_addr == ep) && ept->ep_cb) {
- ept->ep_cb(ep);
- }
- }
- }
- }
-#else
-
if (usbd_core_cfg.out_ep_cb[ep & 0x7f]) {
usbd_core_cfg.out_ep_cb[ep & 0x7f](ep);
}
-
-#endif
}
static void usbd_ep_in_handler(uint8_t ep)
{
-#if USBD_EP_CALLBACK_SEARCH_METHOD == USBD_EP_CALLBACK_LIST_SEARCH
- usb_slist_t *i, *j, *k;
- usb_slist_for_each(i, &usbd_class_head)
- {
- usbd_class_t *devclass = usb_slist_entry(i, struct usbd_class, list);
-
- usb_slist_for_each(j, &devclass->intf_list)
- {
- usbd_interface_t *intf = usb_slist_entry(j, struct usbd_interface, list);
-
- usb_slist_for_each(k, &intf->ep_list)
- {
- usbd_endpoint_t *ept = usb_slist_entry(k, struct usbd_endpoint, list);
-
- if ((ept->ep_addr == ep) && ept->ep_cb) {
- ept->ep_cb(ep);
- }
- }
- }
- }
-#else
-
if (usbd_core_cfg.in_ep_cb[ep & 0x7f]) {
usbd_core_cfg.in_ep_cb[ep & 0x7f](ep);
}
-
-#endif
}
static void usbd_class_event_notify_handler(uint8_t event, void *arg)
@@ -1218,9 +1138,6 @@ void usbd_event_notify_handler(uint8_t event, void *arg)
ep0_cfg.ep_addr = USB_CONTROL_OUT_EP0;
/*set USB_CONTROL_OUT_EP0 ack to prepare receiving setup data*/
usbd_ep_open(&ep0_cfg);
-#if USBD_EP_CALLBACK_SEARCH_METHOD == USBD_EP_CALLBACK_ARR_SEARCH
- usbd_ep_callback_register();
-#endif
case USBD_EVENT_ERROR:
case USBD_EVENT_SOF:
@@ -1302,6 +1219,11 @@ void usbd_class_add_interface(usbd_class_t *devclass, usbd_interface_t *intf)
void usbd_interface_add_endpoint(usbd_interface_t *intf, usbd_endpoint_t *ep)
{
usb_slist_add_tail(&intf->ep_list, &ep->list);
+ if (ep->ep_addr & 0x80) {
+ usbd_core_cfg.in_ep_cb[ep->ep_addr & 0x7f] = ep->ep_cb;
+ } else {
+ usbd_core_cfg.out_ep_cb[ep->ep_addr & 0x7f] = ep->ep_cb;
+ }
}
bool usb_device_is_configured(void)