define and use TUD_ENDPOINT_EXCLUSIVE_NUMBER

This commit is contained in:
hathach
2024-08-17 18:07:36 +07:00
parent 993473312b
commit a6bee747b6
12 changed files with 112 additions and 212 deletions

View File

@@ -98,31 +98,19 @@ enum
#define EPNUM_CDC_1_OUT 0x05 #define EPNUM_CDC_1_OUT 0x05
#define EPNUM_CDC_1_IN 0x85 #define EPNUM_CDC_1_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X #elif CFG_TUSB_MCU == OPT_MCU_CXD56
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT // CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// e.g EP1 OUT & EP1 IN cannot exist together // 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
#define EPNUM_CDC_0_NOTIF 0x81 #define EPNUM_CDC_0_NOTIF 0x83
#define EPNUM_CDC_0_OUT 0x02 #define EPNUM_CDC_0_OUT 0x02
#define EPNUM_CDC_0_IN 0x83 #define EPNUM_CDC_0_IN 0x81
#define EPNUM_CDC_1_NOTIF 0x84 #define EPNUM_CDC_1_NOTIF 0x86
#define EPNUM_CDC_1_OUT 0x05 #define EPNUM_CDC_1_OUT 0x05
#define EPNUM_CDC_1_IN 0x86 #define EPNUM_CDC_1_IN 0x84
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// FT9XX doesn't support a same endpoint number with different direction IN and OUT // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_0_NOTIF 0x81
#define EPNUM_CDC_0_OUT 0x02
#define EPNUM_CDC_0_IN 0x83
#define EPNUM_CDC_1_NOTIF 0x84
#define EPNUM_CDC_1_OUT 0x05
#define EPNUM_CDC_1_IN 0x86
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_0_NOTIF 0x81 #define EPNUM_CDC_0_NOTIF 0x81
#define EPNUM_CDC_0_OUT 0x02 #define EPNUM_CDC_0_OUT 0x02

View File

@@ -93,19 +93,7 @@ enum {
#define EPNUM_MSC_OUT 0x05 #define EPNUM_MSC_OUT 0x05
#define EPNUM_MSC_IN 0x85 #define EPNUM_MSC_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_NOTIF 0x81
#define EPNUM_CDC_OUT 0x02
#define EPNUM_CDC_IN 0x83
#define EPNUM_MSC_OUT 0x04
#define EPNUM_MSC_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_CXD56 #elif CFG_TUSB_MCU == OPT_MCU_CXD56
// CXD56 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together
// CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number // CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN) // 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
#define EPNUM_CDC_NOTIF 0x83 #define EPNUM_CDC_NOTIF 0x83
@@ -115,19 +103,8 @@ enum {
#define EPNUM_MSC_OUT 0x05 #define EPNUM_MSC_OUT 0x05
#define EPNUM_MSC_IN 0x84 #define EPNUM_MSC_IN 0x84
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// FT9XX doesn't support a same endpoint number with different direction IN and OUT // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_NOTIF 0x81
#define EPNUM_CDC_OUT 0x02
#define EPNUM_CDC_IN 0x83
#define EPNUM_MSC_OUT 0x04
#define EPNUM_MSC_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_NOTIF 0x81 #define EPNUM_CDC_NOTIF 0x81
#define EPNUM_CDC_OUT 0x02 #define EPNUM_CDC_OUT 0x02

View File

@@ -42,8 +42,7 @@
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Device Descriptors // Device Descriptors
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
tusb_desc_device_t const desc_device = tusb_desc_device_t const desc_device = {
{
.bLength = sizeof(tusb_desc_device_t), .bLength = sizeof(tusb_desc_device_t),
.bDescriptorType = TUSB_DESC_DEVICE, .bDescriptorType = TUSB_DESC_DEVICE,
.bcdUSB = USB_BCD, .bcdUSB = USB_BCD,
@@ -69,8 +68,7 @@ tusb_desc_device_t const desc_device =
// Invoked when received GET DEVICE DESCRIPTOR // Invoked when received GET DEVICE DESCRIPTOR
// Application return pointer to descriptor // Application return pointer to descriptor
uint8_t const * tud_descriptor_device_cb(void) uint8_t const *tud_descriptor_device_cb(void) {
{
return (uint8_t const *) &desc_device; return (uint8_t const *) &desc_device;
} }
@@ -78,8 +76,7 @@ uint8_t const * tud_descriptor_device_cb(void)
// Configuration Descriptor // Configuration Descriptor
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
enum enum {
{
ITF_NUM_CDC = 0, ITF_NUM_CDC = 0,
ITF_NUM_CDC_DATA, ITF_NUM_CDC_DATA,
ITF_NUM_MSC, ITF_NUM_MSC,
@@ -96,19 +93,18 @@ enum
#define EPNUM_MSC_OUT 0x05 #define EPNUM_MSC_OUT 0x05
#define EPNUM_MSC_IN 0x85 #define EPNUM_MSC_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_SAMG #elif CFG_TUSB_MCU == OPT_MCU_CXD56
// SAMG doesn't support a same endpoint number with different direction IN and OUT // CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// e.g EP1 OUT & EP1 IN cannot exist together // 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
#define EPNUM_CDC_NOTIF 0x81 #define EPNUM_CDC_NOTIF 0x83
#define EPNUM_CDC_OUT 0x02 #define EPNUM_CDC_OUT 0x02
#define EPNUM_CDC_IN 0x83 #define EPNUM_CDC_IN 0x81
#define EPNUM_MSC_OUT 0x04 #define EPNUM_MSC_OUT 0x05
#define EPNUM_MSC_IN 0x85 #define EPNUM_MSC_IN 0x84
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \ #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002 // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_NOTIF 0x81 #define EPNUM_CDC_NOTIF 0x81
#define EPNUM_CDC_OUT 0x02 #define EPNUM_CDC_OUT 0x02

View File

@@ -97,29 +97,8 @@ uint8_t const * tud_descriptor_device_cb(void)
#define EPNUM_CDC_OUT 0x02 #define EPNUM_CDC_OUT 0x02
#define EPNUM_CDC_IN 0x82 #define EPNUM_CDC_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_IN 0x01
#define EPNUM_AUDIO_OUT 0x02
#define EPNUM_CDC_NOTIF 0x83
#define EPNUM_CDC_OUT 0x04
#define EPNUM_CDC_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X
// FT9XX doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_IN 0x01
#define EPNUM_AUDIO_OUT 0x02
#define EPNUM_CDC_NOTIF 0x83
#define EPNUM_CDC_OUT 0x04
#define EPNUM_CDC_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_IN 0x01 #define EPNUM_AUDIO_IN 0x01
#define EPNUM_AUDIO_OUT 0x02 #define EPNUM_AUDIO_OUT 0x02

View File

@@ -132,35 +132,8 @@ enum
#define EPNUM_1_MSC_OUT 0x02 #define EPNUM_1_MSC_OUT 0x02
#define EPNUM_1_MSC_IN 0x82 #define EPNUM_1_MSC_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_SAMG #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// SAMG doesn't support a same endpoint number with different direction IN and OUT // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_0_CDC_NOTIF 0x81
#define EPNUM_0_CDC_OUT 0x02
#define EPNUM_0_CDC_IN 0x83
#define EPNUM_0_MIDI_OUT 0x04
#define EPNUM_0_MIDI_IN 0x85
#define EPNUM_1_MSC_OUT 0x01
#define EPNUM_1_MSC_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X
// FT9XX doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_0_CDC_NOTIF 0x81
#define EPNUM_0_CDC_OUT 0x02
#define EPNUM_0_CDC_IN 0x83
#define EPNUM_0_MIDI_OUT 0x04
#define EPNUM_0_MIDI_IN 0x85
#define EPNUM_1_MSC_OUT 0x01
#define EPNUM_1_MSC_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002
// FT9XX doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_0_CDC_NOTIF 0x81 #define EPNUM_0_CDC_NOTIF 0x81
#define EPNUM_0_CDC_OUT 0x02 #define EPNUM_0_CDC_OUT 0x02

View File

@@ -85,19 +85,23 @@ enum
// LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number // LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number
// 0 control, 1 In, 2 Bulk, 3 Iso, 4 In etc ... // 0 control, 1 In, 2 Bulk, 3 Iso, 4 In etc ...
#define EPNUM_MIDI_OUT 0x02 #define EPNUM_MIDI_OUT 0x02
#define EPNUM_MIDI_IN 0x02 #define EPNUM_MIDI_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X
// On Bridgetek FT9xx endpoint numbers must be unique... #elif CFG_TUSB_MCU == OPT_MCU_CXD56
// CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
#define EPNUM_MIDI_OUT 0x02 #define EPNUM_MIDI_OUT 0x02
#define EPNUM_MIDI_IN 0x03 #define EPNUM_MIDI_IN 0x81
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002 #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// On MAX32 endpoint numbers must be unique... // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
#define EPNUM_MIDI_OUT 0x02 // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_MIDI_IN 0x03 #define EPNUM_MIDI_OUT 0x01
#define EPNUM_MIDI_IN 0x82
#else #else
#define EPNUM_MIDI_OUT 0x01 #define EPNUM_MIDI_OUT 0x01
#define EPNUM_MIDI_IN 0x01 #define EPNUM_MIDI_IN 0x81
#endif #endif
uint8_t const desc_fs_configuration[] = uint8_t const desc_fs_configuration[] =

View File

@@ -85,21 +85,14 @@ enum
#define EPNUM_MSC_OUT 0x02 #define EPNUM_MSC_OUT 0x02
#define EPNUM_MSC_IN 0x82 #define EPNUM_MSC_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_SAMG #elif CFG_TUSB_MCU == OPT_MCU_CXD56
// SAMG doesn't support a same endpoint number with different direction IN and OUT // CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// e.g EP1 OUT & EP1 IN cannot exist together // 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
#define EPNUM_MSC_OUT 0x01 #define EPNUM_MSC_OUT 0x02
#define EPNUM_MSC_IN 0x82 #define EPNUM_MSC_IN 0x81
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// FT9XX doesn't support a same endpoint number with different direction IN and OUT // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_MSC_OUT 0x01
#define EPNUM_MSC_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_MSC_OUT 0x01 #define EPNUM_MSC_OUT 0x01
#define EPNUM_MSC_IN 0x82 #define EPNUM_MSC_IN 0x82

View File

@@ -113,16 +113,15 @@ uint8_t const * tud_descriptor_device_cb(void)
#define EPNUM_NET_OUT 0x02 #define EPNUM_NET_OUT 0x02
#define EPNUM_NET_IN 0x82 #define EPNUM_NET_IN 0x82
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X #elif CFG_TUSB_MCU == OPT_MCU_CXD56
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT // CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// e.g EP1 OUT & EP1 IN cannot exist together // 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
#define EPNUM_NET_NOTIF 0x81 #define EPNUM_NET_NOTIF 0x83
#define EPNUM_NET_OUT 0x02 #define EPNUM_NET_OUT 0x02
#define EPNUM_NET_IN 0x83 #define EPNUM_NET_IN 0x81
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \ #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002 // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_NET_NOTIF 0x81 #define EPNUM_NET_NOTIF 0x81
#define EPNUM_NET_OUT 0x02 #define EPNUM_NET_OUT 0x02

View File

@@ -84,29 +84,21 @@ uint8_t const * tud_descriptor_device_cb(void)
#define EPNUM_AUDIO_OUT 0x03 #define EPNUM_AUDIO_OUT 0x03
#define EPNUM_AUDIO_INT 0x01 #define EPNUM_AUDIO_INT 0x01
#elif CFG_TUSB_MCU == OPT_MCU_CXD56
// CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
// #define EPNUM_AUDIO_IN 0x01
// #define EPNUM_AUDIO_OUT 0x02
// #define EPNUM_AUDIO_INT 0x03
#elif CFG_TUSB_MCU == OPT_MCU_NRF5X #elif CFG_TUSB_MCU == OPT_MCU_NRF5X
// ISO endpoints for NRF5x are fixed to 0x08 (0x88) // ISO endpoints for NRF5x are fixed to 0x08 (0x88)
#define EPNUM_AUDIO_IN 0x08 #define EPNUM_AUDIO_IN 0x08
#define EPNUM_AUDIO_OUT 0x08 #define EPNUM_AUDIO_OUT 0x08
#define EPNUM_AUDIO_INT 0x01 #define EPNUM_AUDIO_INT 0x01
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_IN 0x01
#define EPNUM_AUDIO_OUT 0x02
#define EPNUM_AUDIO_INT 0x03
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X
// FT9XX doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_IN 0x01
#define EPNUM_AUDIO_OUT 0x02
#define EPNUM_AUDIO_INT 0x03
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_IN 0x01 #define EPNUM_AUDIO_IN 0x01
#define EPNUM_AUDIO_OUT 0x02 #define EPNUM_AUDIO_OUT 0x02

View File

@@ -131,15 +131,8 @@ uint8_t const * tud_hid_descriptor_report_cb(uint8_t itf)
#define EPNUM_AUDIO_OUT 0x08 #define EPNUM_AUDIO_OUT 0x08
#define EPNUM_DEBUG 0x01 #define EPNUM_DEBUG 0x01
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X #elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT // MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_FB 0x01
#define EPNUM_AUDIO_OUT 0x02
#define EPNUM_DEBUG 0x03
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X
// FT9XX doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_AUDIO_FB 0x01 #define EPNUM_AUDIO_FB 0x01
#define EPNUM_AUDIO_OUT 0x02 #define EPNUM_AUDIO_OUT 0x02

View File

@@ -87,37 +87,40 @@ enum
#if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X || CFG_TUSB_MCU == OPT_MCU_LPC177X_8X || CFG_TUSB_MCU == OPT_MCU_LPC40XX #if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X || CFG_TUSB_MCU == OPT_MCU_LPC177X_8X || CFG_TUSB_MCU == OPT_MCU_LPC40XX
// LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number // LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number
// 0 control, 1 In, 2 Bulk, 3 Iso, 4 In etc ... // 0 control, 1 In, 2 Bulk, 3 Iso, 4 In etc ...
#define EPNUM_CDC_IN 2 #define EPNUM_CDC_NOTIF 0x81
#define EPNUM_CDC_OUT 2 #define EPNUM_CDC_OUT 0x02
#define EPNUM_VENDOR_IN 5 #define EPNUM_CDC_IN 0x82
#define EPNUM_VENDOR_OUT 5
#elif CFG_TUSB_MCU == OPT_MCU_SAMG || CFG_TUSB_MCU == OPT_MCU_SAMX7X #define EPNUM_VENDOR_OUT 0x05
// SAMG & SAME70 don't support a same endpoint number with different direction IN and OUT #define EPNUM_VENDOR_IN 0x85
#elif CFG_TUSB_MCU == OPT_MCU_CXD56
// CXD56 USB driver has fixed endpoint type (bulk/interrupt/iso) and direction (IN/OUT) by its number
// 0 control (IN/OUT), 1 Bulk (IN), 2 Bulk (OUT), 3 In (IN), 4 Bulk (IN), 5 Bulk (OUT), 6 In (IN)
#define EPNUM_CDC_NOTIF 0x83
#define EPNUM_CDC_OUT 0x02
#define EPNUM_CDC_IN 0x81
#define EPNUM_VENDOR_OUT 0x05
#define EPNUM_VENDOR_IN 0x84
#elif defined(TUD_ENDPOINT_EXCLUSIVE_NUMBER)
// MCUs that don't support a same endpoint number with different direction IN and OUT defined in tusb_mcu.h
// e.g EP1 OUT & EP1 IN cannot exist together // e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_IN 2 #define EPNUM_CDC_NOTIF 0x81
#define EPNUM_CDC_OUT 3 #define EPNUM_CDC_OUT 0x02
#define EPNUM_VENDOR_IN 4 #define EPNUM_CDC_IN 0x83
#define EPNUM_VENDOR_OUT 5
#elif CFG_TUSB_MCU == OPT_MCU_FT90X || CFG_TUSB_MCU == OPT_MCU_FT93X #define EPNUM_VENDOR_OUT 0x04
// FT9XX doesn't support a same endpoint number with different direction IN and OUT #define EPNUM_VENDOR_IN 0x85
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_IN 2
#define EPNUM_CDC_OUT 3
#define EPNUM_VENDOR_IN 4
#define EPNUM_VENDOR_OUT 5
#elif CFG_TUSB_MCU == OPT_MCU_MAX32690 || CFG_TUSB_MCU == OPT_MCU_MAX32650 || \
CFG_TUSB_MCU == OPT_MCU_MAX32666 || CFG_TUSB_MCU == OPT_MCU_MAX78002
// MAX32 doesn't support a same endpoint number with different direction IN and OUT
// e.g EP1 OUT & EP1 IN cannot exist together
#define EPNUM_CDC_IN 2
#define EPNUM_CDC_OUT 3
#define EPNUM_VENDOR_IN 4
#define EPNUM_VENDOR_OUT 5
#else #else
#define EPNUM_CDC_IN 2 #define EPNUM_CDC_NOTIF 0x81
#define EPNUM_CDC_OUT 2 #define EPNUM_CDC_OUT 0x02
#define EPNUM_VENDOR_IN 3 #define EPNUM_CDC_IN 0x82
#define EPNUM_VENDOR_OUT 3
#define EPNUM_VENDOR_OUT 0x03
#define EPNUM_VENDOR_IN 0x83
#endif #endif
uint8_t const desc_configuration[] = uint8_t const desc_configuration[] =
@@ -126,7 +129,7 @@ uint8_t const desc_configuration[] =
TUD_CONFIG_DESCRIPTOR(1, ITF_NUM_TOTAL, 0, CONFIG_TOTAL_LEN, 0x00, 100), TUD_CONFIG_DESCRIPTOR(1, ITF_NUM_TOTAL, 0, CONFIG_TOTAL_LEN, 0x00, 100),
// Interface number, string index, EP notification address and size, EP data address (out, in) and size. // Interface number, string index, EP notification address and size, EP data address (out, in) and size.
TUD_CDC_DESCRIPTOR(ITF_NUM_CDC, 4, 0x81, 8, EPNUM_CDC_OUT, 0x80 | EPNUM_CDC_IN, TUD_OPT_HIGH_SPEED ? 512 : 64), TUD_CDC_DESCRIPTOR(ITF_NUM_CDC, 4, EPNUM_CDC_NOTIF, 8, EPNUM_CDC_OUT, 0x80 | EPNUM_CDC_IN, TUD_OPT_HIGH_SPEED ? 512 : 64),
// Interface number, string index, EP Out & IN address, EP size // Interface number, string index, EP Out & IN address, EP size
TUD_VENDOR_DESCRIPTOR(ITF_NUM_VENDOR, 5, EPNUM_VENDOR_OUT, 0x80 | EPNUM_VENDOR_IN, TUD_OPT_HIGH_SPEED ? 512 : 64) TUD_VENDOR_DESCRIPTOR(ITF_NUM_VENDOR, 5, EPNUM_VENDOR_OUT, 0x80 | EPNUM_VENDOR_IN, TUD_OPT_HIGH_SPEED ? 512 : 64)

View File

@@ -138,21 +138,21 @@
#elif TU_CHECK_MCU(OPT_MCU_SAMG) #elif TU_CHECK_MCU(OPT_MCU_SAMG)
#define TUP_DCD_ENDPOINT_MAX 6 #define TUP_DCD_ENDPOINT_MAX 6
#define TUP_DCD_ENDPOINT_EXCLUSIVE_NUMBER #define TUD_ENDPOINT_EXCLUSIVE_NUMBER
#elif TU_CHECK_MCU(OPT_MCU_SAMX7X) #elif TU_CHECK_MCU(OPT_MCU_SAMX7X)
#define TUP_DCD_ENDPOINT_MAX 10 #define TUP_DCD_ENDPOINT_MAX 10
#define TUP_RHPORT_HIGHSPEED 1 #define TUP_RHPORT_HIGHSPEED 1
#define TUP_DCD_ENDPOINT_EXCLUSIVE_NUMBER #define TUD_ENDPOINT_EXCLUSIVE_NUMBER
#elif TU_CHECK_MCU(OPT_MCU_PIC32MZ) #elif TU_CHECK_MCU(OPT_MCU_PIC32MZ)
#define TUP_DCD_ENDPOINT_MAX 8 #define TUP_DCD_ENDPOINT_MAX 8
#define TUP_DCD_ENDPOINT_EXCLUSIVE_NUMBER #define TUD_ENDPOINT_EXCLUSIVE_NUMBER
#elif TU_CHECK_MCU(OPT_MCU_PIC32MX, OPT_MCU_PIC32MM, OPT_MCU_PIC32MK) || \ #elif TU_CHECK_MCU(OPT_MCU_PIC32MX, OPT_MCU_PIC32MM, OPT_MCU_PIC32MK) || \
TU_CHECK_MCU(OPT_MCU_PIC24, OPT_MCU_DSPIC33) TU_CHECK_MCU(OPT_MCU_PIC24, OPT_MCU_DSPIC33)
#define TUP_DCD_ENDPOINT_MAX 16 #define TUP_DCD_ENDPOINT_MAX 16
#define TUP_DCD_ENDPOINT_EXCLUSIVE_NUMBER #define TUD_ENDPOINT_EXCLUSIVE_NUMBER
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// ST // ST
@@ -299,7 +299,7 @@
#elif TU_CHECK_MCU(OPT_MCU_CXD56) #elif TU_CHECK_MCU(OPT_MCU_CXD56)
#define TUP_DCD_ENDPOINT_MAX 7 #define TUP_DCD_ENDPOINT_MAX 7
#define TUP_RHPORT_HIGHSPEED 1 #define TUP_RHPORT_HIGHSPEED 1
#define TUP_DCD_ENDPOINT_EXCLUSIVE_NUMBER #define TUD_ENDPOINT_EXCLUSIVE_NUMBER
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// TI // TI
@@ -400,10 +400,12 @@
#elif TU_CHECK_MCU(OPT_MCU_FT90X) #elif TU_CHECK_MCU(OPT_MCU_FT90X)
#define TUP_DCD_ENDPOINT_MAX 8 #define TUP_DCD_ENDPOINT_MAX 8
#define TUP_RHPORT_HIGHSPEED 1 #define TUP_RHPORT_HIGHSPEED 1
#define TUD_ENDPOINT_EXCLUSIVE_NUMBER
#elif TU_CHECK_MCU(OPT_MCU_FT93X) #elif TU_CHECK_MCU(OPT_MCU_FT93X)
#define TUP_DCD_ENDPOINT_MAX 16 #define TUP_DCD_ENDPOINT_MAX 16
#define TUP_RHPORT_HIGHSPEED 1 #define TUP_RHPORT_HIGHSPEED 1
#define TUD_ENDPOINT_EXCLUSIVE_NUMBER
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Allwinner // Allwinner
@@ -478,6 +480,7 @@
#define TUP_USBIP_MUSB_ADI #define TUP_USBIP_MUSB_ADI
#define TUP_DCD_ENDPOINT_MAX 12 #define TUP_DCD_ENDPOINT_MAX 12
#define TUP_RHPORT_HIGHSPEED 1 #define TUP_RHPORT_HIGHSPEED 1
#define TUD_ENDPOINT_EXCLUSIVE_NUMBER
#endif #endif