Skip to content

Commit

Permalink
sys/auto_init/usb: add a check for the number EPs
Browse files Browse the repository at this point in the history
Since `auto_init_usb` provides a static auto configuration for a single USBUS stack instance using a single USB device, a static assert can be used here to check whether the number of EPs required by the configuration does not exceed the number of EPs provided by the USB device.
  • Loading branch information
gschorcht committed Mar 11, 2023
1 parent 2bc25f3 commit ade0c95
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions sys/auto_init/usb/auto_init_usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <assert.h>

#include "usb/usbus.h"
#include "usb/usbus/control.h"

#ifdef MODULE_USBUS_CDC_ECM
#include "usb/usbus/cdc/ecm.h"
Expand All @@ -39,11 +40,53 @@ usbus_cdcecm_device_t cdcecm;
#include "usb/usbus/dfu.h"
static usbus_dfu_device_t dfu;
#endif
#ifdef MODULE_USBUS_HID
#include "usb/usbus/hid.h"
#endif
#ifdef MODULE_USBUS_MSC
#include "usb/usbus/msc.h"
static usbus_msc_device_t msc;
#endif

#ifndef MODULE_USBUS_CDC_ACM
#define USBUS_CDC_ACM_EP_IN_REQUIRED_NUMOF 0
#define USBUS_CDC_ACM_EP_OUT_REQUIRED_NUMOF 0
#endif

#ifndef MODULE_USBUS_CDC_ECM
#define USBUS_CDC_ECM_EP_IN_REQUIRED_NUMOF 0
#define USBUS_CDC_ECM_EP_OUT_REQUIRED_NUMOF 0
#endif

#ifndef MODULE_USBUS_HID
#define USBUS_HID_EP_IN_REQUIRED_NUMOF 0
#define USBUS_HID_EP_OUT_REQUIRED_NUMOF 0
#endif

#ifndef MODULE_USBUS_MSC
#define USBUS_MSC_EP_IN_REQUIRED_NUMOF 0
#define USBUS_MSC_EP_OUT_REQUIRED_NUMOF 0
#endif

#define USBUS_EP_IN_REQUIRED_NUMOF (USBUS_CONTROL_EP_IN_REQUIRED_NUMOF + \
USBUS_CDC_ACM_EP_IN_REQUIRED_NUMOF + \
USBUS_CDC_ECM_EP_IN_REQUIRED_NUMOF + \
USBUS_HID_EP_IN_REQUIRED_NUMOF + \
USBUS_MSC_EP_IN_REQUIRED_NUMOF)

#define USBUS_EP_OUT_REQUIRED_NUMOF (USBUS_CONTROL_EP_OUT_REQUIRED_NUMOF + \
USBUS_CDC_ACM_EP_OUT_REQUIRED_NUMOF + \
USBUS_CDC_ECM_EP_OUT_REQUIRED_NUMOF + \
USBUS_HID_EP_OUT_REQUIRED_NUMOF + \
USBUS_MSC_EP_OUT_REQUIRED_NUMOF)

static_assert(USBUS_EP_IN_REQUIRED_NUMOF <= USBDEV_NUM_ENDPOINTS,
"Number of required IN endpoints exceeded");

static_assert(USBUS_EP_OUT_REQUIRED_NUMOF <= USBDEV_NUM_ENDPOINTS,
"Number of required OUT endpoints exceeded");


static char _stack[USBUS_STACKSIZE];
static usbus_t usbus;

Expand Down

0 comments on commit ade0c95

Please sign in to comment.