21
21
#include "usbd_core.h"
22
22
#include "usbd_desc.h"
23
23
#include "utils.h"
24
+ #include <variant.h>
24
25
25
26
/* Private typedef -----------------------------------------------------------*/
26
27
/* Private define ------------------------------------------------------------*/
27
- #if USBD_VID == 0x2341
28
+
29
+ /* USB VID and PID: Either both or neither must be specified. If not
30
+ * specified, default to the ST VID, with a PID assigned to HID or a PID
31
+ * assigned to CDC devices. */
32
+ #if !USBD_PID && !USBD_VID
33
+ // Undef the default zero values
34
+ #undef USBD_PID
35
+ #undef USBD_VID
36
+ // Define default values, based on the USB class used
37
+ #define USBD_VID 0x0483
38
+ #if defined(USBD_USE_HID_COMPOSITE )
39
+ #define USBD_PID 0x5711
40
+ #elif defined(USBD_USE_CDC )
41
+ #define USBD_PID 0x5740
42
+ #endif
43
+ #endif /* !USBD_PID && !USBD_VID */
44
+
45
+ #if !USBD_VID || !USBD_PID
46
+ #error "USB VID or PID not specified"
47
+ #endif
48
+
49
+ /* Manufacturer string: Use the specified string if specified, guess
50
+ based on VID otherwise */
51
+ #if defined(USB_MANUFACTURER_STRING )
52
+ #define USBD_MANUFACTURER_STRING USB_MANUFACTURER_STRING
53
+ #elif USBD_VID == 0x2341
28
54
#define USBD_MANUFACTURER_STRING "Arduino LLC"
29
55
#elif USBD_VID == 0x2A03
30
56
#define USBD_MANUFACTURER_STRING "Arduino srl"
31
57
#elif USBD_VID == 0x0483
32
58
#define USBD_MANUFACTURER_STRING "STMicroelectronics"
33
- #elif !defined(USB_MANUFACTURER )
34
- // Fall through to unknown if no manufacturer name was provided in a macro
35
- #define USBD_MANUFACTURER_STRING "Unknown"
36
59
#else
37
- #define USBD_MANUFACTURER_STRING USB_MANUFACTURER
60
+ #define USBD_MANUFACTURER_STRING "Unknown"
38
61
#endif
62
+
39
63
#define USBD_LANGID_STRING 0x409 /* 1033 US.S English */
40
64
65
+ /* Product string: Use the specified string if specified, construct
66
+ based on BOARD_NAME and class otherwise. */
67
+ #if defined(USB_PRODUCT_STRING )
68
+ #define USBD_CLASS_PRODUCT_HS_STRING USB_PRODUCT_STRING
69
+ #define USBD_CLASS_PRODUCT_FS_STRING USB_PRODUCT_STRING
70
+ #elif defined(USBD_USE_HID_COMPOSITE )
71
+ #define USBD_CLASS_PRODUCT_HS_STRING CONCATS(BOARD_NAME, "HID in HS Mode")
72
+ #define USBD_CLASS_PRODUCT_FS_STRING CONCATS(BOARD_NAME, "HID in FS Mode")
73
+ #elif defined(USBD_USE_CDC )
74
+ #define USBD_CLASS_PRODUCT_HS_STRING CONCATS(BOARD_NAME, "CDC in HS Mode")
75
+ #define USBD_CLASS_PRODUCT_FS_STRING CONCATS(BOARD_NAME, "CDC in FS Mode")
76
+ #else
77
+ #define USBD_CLASS_PRODUCT_HS_STRING CONCATS(BOARD_NAME, "in HS Mode")
78
+ #define USBD_CLASS_PRODUCT_FS_STRING CONCATS(BOARD_NAME, "in FS Mode")
79
+ #endif
80
+
41
81
#ifdef USBD_USE_HID_COMPOSITE
42
- #define USBD_CLASS_PID 0x5711
43
- #define USBD_CLASS_PRODUCT_HS_STRING CONCATS(USB_PRODUCT, "HID in HS Mode")
44
- #define USBD_CLASS_PRODUCT_FS_STRING CONCATS(USB_PRODUCT, "HID in FS Mode")
45
- #define USBD_CLASS_CONFIGURATION_HS_STRING CONCATS(USB_PRODUCT, "HID Config")
46
- #define USBD_CLASS_INTERFACE_HS_STRING CONCATS(USB_PRODUCT, "HID Interface")
47
- #define USBD_CLASS_CONFIGURATION_FS_STRING CONCATS(USB_PRODUCT, "HID Config")
48
- #define USBD_CLASS_INTERFACE_FS_STRING CONCATS(USB_PRODUCT, "HID Interface")
82
+ #define USBD_CLASS_CONFIGURATION_HS_STRING CONCATS(BOARD_NAME, "HID Config")
83
+ #define USBD_CLASS_INTERFACE_HS_STRING CONCATS(BOARD_NAME, "HID Interface")
84
+ #define USBD_CLASS_CONFIGURATION_FS_STRING CONCATS(BOARD_NAME, "HID Config")
85
+ #define USBD_CLASS_INTERFACE_FS_STRING CONCATS(BOARD_NAME, "HID Interface")
49
86
#endif /* USBD_USE_HID_COMPOSITE */
50
87
51
88
#ifdef USBD_USE_CDC
52
- #define USBD_CLASS_PID 0x5740
53
- #define USBD_CLASS_PRODUCT_HS_STRING CONCATS(USB_PRODUCT, "CDC in HS Mode")
54
- #define USBD_CLASS_PRODUCT_FS_STRING CONCATS(USB_PRODUCT, "CDC in FS Mode")
55
- #define USBD_CLASS_CONFIGURATION_HS_STRING CONCATS(USB_PRODUCT, "CDC Config")
56
- #define USBD_CLASS_INTERFACE_HS_STRING CONCATS(USB_PRODUCT, "CDC Interface")
57
- #define USBD_CLASS_CONFIGURATION_FS_STRING CONCATS(USB_PRODUCT, "CDC Config")
58
- #define USBD_CLASS_INTERFACE_FS_STRING CONCATS(USB_PRODUCT, "CDC Interface")
89
+ #define USBD_CLASS_CONFIGURATION_HS_STRING CONCATS(BOARD_NAME, "CDC Config")
90
+ #define USBD_CLASS_INTERFACE_HS_STRING CONCATS(BOARD_NAME, "CDC Interface")
91
+ #define USBD_CLASS_CONFIGURATION_FS_STRING CONCATS(BOARD_NAME, "CDC Config")
92
+ #define USBD_CLASS_INTERFACE_FS_STRING CONCATS(BOARD_NAME, "CDC Interface")
59
93
#endif /* USBD_USE_CDC */
60
94
61
95
/* Private macro -------------------------------------------------------------*/
@@ -99,10 +133,10 @@ __ALIGN_BEGIN uint8_t USBD_Class_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
99
133
USB_MAX_EP0_SIZE , /* bMaxPacketSize */
100
134
LOBYTE (USBD_VID ), /* idVendor */
101
135
HIBYTE (USBD_VID ), /* idVendor */
102
- LOBYTE (USBD_CLASS_PID ), /* idVendor */
103
- HIBYTE (USBD_CLASS_PID ), /* idVendor */
104
- 0x00 , /* bcdDevice rel. 2 .00 */
105
- 0x02 ,
136
+ LOBYTE (USBD_PID ), /* idProduct */
137
+ HIBYTE (USBD_PID ), /* idProduct */
138
+ 0x00 , /* bcdDevice rel. 0 .00 */
139
+ 0x00 ,
106
140
USBD_IDX_MFC_STR , /* Index of manufacturer string */
107
141
USBD_IDX_PRODUCT_STR , /* Index of product string */
108
142
USBD_IDX_SERIAL_STR , /* Index of serial number string */
@@ -123,10 +157,10 @@ __ALIGN_BEGIN uint8_t USBD_Class_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
123
157
USB_MAX_EP0_SIZE , /* bMaxPacketSize */
124
158
LOBYTE (USBD_VID ), /* idVendor */
125
159
HIBYTE (USBD_VID ), /* idVendor */
126
- LOBYTE (USBD_CLASS_PID ), /* idVendor */
127
- HIBYTE (USBD_CLASS_PID ), /* idVendor */
128
- 0x00 , /* bcdDevice rel. 2 .00 */
129
- 0x02 ,
160
+ LOBYTE (USBD_PID ), /* idProduct */
161
+ HIBYTE (USBD_PID ), /* idProduct */
162
+ 0x00 , /* bcdDevice rel. 0 .00 */
163
+ 0x00 ,
130
164
USBD_IDX_MFC_STR , /* Index of manufacturer string */
131
165
USBD_IDX_PRODUCT_STR , /* Index of product string */
132
166
USBD_IDX_SERIAL_STR , /* Index of serial number string */
0 commit comments