*/
#define CONFIG_USB_BUFSIZE 64
+/**
+ * Maximum number of USB device interfaces (default = 1).
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 1
+ */
+#define CONFIG_USB_INTERFACE_MAX 1
+
+/**
+ * Maximum number of allocated endpoints (0 = auto).
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 0
+ */
+#define CONFIG_USB_EP_MAX 0
+
#endif /* CFG_USB_H */
static UsbCtrlRequest setup_packet;
/* USB device controller: max supported interfaces */
-#define USB_MAX_INTERFACE 1
+#define USB_MAX_INTERFACE CONFIG_USB_INTERFACE_MAX
/* USB device controller features */
#define STM32_UDC_FEATURE_SELFPOWERED BV(0)
#ifndef USB_ENDPOINT_H
#define USB_ENDPOINT_H
+#include "cfg/cfg_usb.h"
#include "cfg/cfg_usbser.h"
#include "cfg/cfg_usbkbd.h"
#include "cfg/cfg_usbmouse.h"
+/*
+ * NOTE: a USB inteface requires at least one endpoint. Moreover, there's the
+ * special endpoint 0. In conclusion, the number of endpoints must be always
+ * greater than the number of interfaces.
+ */
+STATIC_ASSERT(CONFIG_USB_EP_MAX > CONFIG_USB_INTERFACE_MAX);
+
/* Enpoint allocation (according to the compile-time options) */
enum {
USB_CTRL_ENDPOINT = 0, /* This must be always allocated */
#if (defined(CONFIG_USBMOUSE) && CONFIG_USBMOUSE)
USB_MOUSE_EP_REPORT,
#endif
- USB_EP_MAX, /* Number of allocated endpoints */
+ /* Number of allocated endpoints */
+#if (CONFIG_USB_EP_MAX == 0)
+ USB_EP_MAX,
+#else
+ USB_EP_MAX = CONFIG_USB_EP_MAX,
+#endif
};
#endif /* USB_ENDPOINT_H */