Skip to content

Commit 1390ac0

Browse files
committed
[USBD] Clean descriptors and string formatting method
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 9f757b4 commit 1390ac0

File tree

4 files changed

+47
-117
lines changed

4 files changed

+47
-117
lines changed

cores/arduino/stm32/usb/cdc/usbd_cdc_if.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ void CDC_init(void)
237237
{
238238
if (!CDC_initialized) {
239239
/* Init Device Library */
240-
if (USBD_Init(&hUSBD_Device_CDC, &CDC_Desc, 0) == USBD_OK) {
240+
if (USBD_Init(&hUSBD_Device_CDC, &USBD_Desc, 0) == USBD_OK) {
241241
/* Add Supported Class */
242242
if (USBD_RegisterClass(&hUSBD_Device_CDC, USBD_CDC_CLASS) == USBD_OK) {
243243
/* Add CDC Interface Class */

cores/arduino/stm32/usb/hid/usbd_hid_composite_if.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void HID_Composite_Init(HID_Interface device)
5959
if (IS_HID_INTERFACE(device) &&
6060
!HID_keyboard_initialized && !HID_mouse_initialized) {
6161
/* Init Device Library */
62-
if (USBD_Init(&hUSBD_Device_HID, &HID_Desc, 0) == USBD_OK) {
62+
if (USBD_Init(&hUSBD_Device_HID, &USBD_Desc, 0) == USBD_OK) {
6363
/* Add Supported Class */
6464
if (USBD_RegisterClass(&hUSBD_Device_HID, USBD_COMPOSITE_HID_CLASS) == USBD_OK) {
6565
/* Start Device Process */

cores/arduino/stm32/usb/usbd_desc.c

Lines changed: 43 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,23 @@
3939
#define USBD_LANGID_STRING 0x409 /* 1033 US.S English */
4040

4141
#ifdef USBD_USE_HID_COMPOSITE
42-
#define USBD_HID_PID 0x5711
43-
#define USBD_HID_PRODUCT_HS_STRING CONCATS(USB_PRODUCT, "HID in HS Mode")
44-
#define USBD_HID_PRODUCT_FS_STRING CONCATS(USB_PRODUCT, "HID in FS Mode")
45-
#define USBD_HID_CONFIGURATION_HS_STRING CONCATS(USB_PRODUCT, "HID Config")
46-
#define USBD_HID_INTERFACE_HS_STRING CONCATS(USB_PRODUCT, "HID Interface")
47-
#define USBD_HID_CONFIGURATION_FS_STRING CONCATS(USB_PRODUCT, "HID Config")
48-
#define USBD_HID_INTERFACE_FS_STRING CONCATS(USB_PRODUCT, "HID Interface")
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")
4949
#endif /* USBD_USE_HID_COMPOSITE */
5050

5151
#ifdef USBD_USE_CDC
52-
#define USBD_CDC_PID 0x5740
53-
#define USBD_CDC_PRODUCT_HS_STRING CONCATS(USB_PRODUCT, "CDC in HS Mode")
54-
#define USBD_CDC_PRODUCT_FS_STRING CONCATS(USB_PRODUCT, "CDC in FS Mode")
55-
#define USBD_CDC_CONFIGURATION_HS_STRING CONCATS(USB_PRODUCT, "CDC Config")
56-
#define USBD_CDC_INTERFACE_HS_STRING CONCATS(USB_PRODUCT, "CDC Interface")
57-
#define USBD_CDC_CONFIGURATION_FS_STRING CONCATS(USB_PRODUCT, "CDC Config")
58-
#define USBD_CDC_INTERFACE_FS_STRING CONCATS(USB_PRODUCT, "CDC Interface")
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")
5959
#endif /* USBD_USE_CDC */
6060

6161
/* Private macro -------------------------------------------------------------*/
@@ -66,37 +66,29 @@ uint8_t *USBD_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *lengt
6666
uint8_t *USBD_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
6767

6868
/* Class specific */
69-
#ifdef USBD_USE_HID_COMPOSITE
70-
uint8_t *USBD_HID_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
71-
uint8_t *USBD_HID_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
72-
uint8_t *USBD_HID_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
73-
uint8_t *USBD_HID_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
74-
#endif /* USBD_USE_HID_COMPOSITE */
75-
#ifdef USBD_USE_CDC
76-
uint8_t *USBD_CDC_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
77-
uint8_t *USBD_CDC_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
78-
uint8_t *USBD_CDC_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
79-
uint8_t *USBD_CDC_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
80-
#endif /* USBD_USE_CDC */
69+
uint8_t *USBD_Class_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
70+
uint8_t *USBD_Class_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
71+
uint8_t *USBD_Class_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
72+
uint8_t *USBD_Class_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
8173

8274
#ifdef USB_SUPPORT_USER_STRING_DESC
8375
uint8_t *USBD_Class_USRStringDesc(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length);
8476
#endif /* USB_SUPPORT_USER_STRING_DESC */
8577

8678
/* Private variables ---------------------------------------------------------*/
87-
#ifdef USBD_USE_HID_COMPOSITE
88-
USBD_DescriptorsTypeDef HID_Desc = {
89-
USBD_HID_DeviceDescriptor,
79+
USBD_DescriptorsTypeDef USBD_Desc = {
80+
USBD_Class_DeviceDescriptor,
9081
USBD_LangIDStrDescriptor,
9182
USBD_ManufacturerStrDescriptor,
92-
USBD_HID_ProductStrDescriptor,
83+
USBD_Class_ProductStrDescriptor,
9384
USBD_SerialStrDescriptor,
94-
USBD_HID_ConfigStrDescriptor,
95-
USBD_HID_InterfaceStrDescriptor,
85+
USBD_Class_ConfigStrDescriptor,
86+
USBD_Class_InterfaceStrDescriptor,
9687
};
9788

89+
#ifdef USBD_USE_HID_COMPOSITE
9890
/* USB Standard Device Descriptor */
99-
__ALIGN_BEGIN uint8_t USBD_HID_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
91+
__ALIGN_BEGIN uint8_t USBD_Class_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
10092
0x12, /* bLength */
10193
USB_DESC_TYPE_DEVICE, /* bDescriptorType */
10294
0x00, /* bcdUSB */
@@ -107,8 +99,8 @@ __ALIGN_BEGIN uint8_t USBD_HID_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
10799
USB_MAX_EP0_SIZE, /* bMaxPacketSize */
108100
LOBYTE(USBD_VID), /* idVendor */
109101
HIBYTE(USBD_VID), /* idVendor */
110-
LOBYTE(USBD_HID_PID), /* idVendor */
111-
HIBYTE(USBD_HID_PID), /* idVendor */
102+
LOBYTE(USBD_CLASS_PID), /* idVendor */
103+
HIBYTE(USBD_CLASS_PID), /* idVendor */
112104
0x00, /* bcdDevice rel. 2.00 */
113105
0x02,
114106
USBD_IDX_MFC_STR, /* Index of manufacturer string */
@@ -119,18 +111,8 @@ __ALIGN_BEGIN uint8_t USBD_HID_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
119111
#endif /* USBD_USE_HID_COMPOSITE */
120112

121113
#ifdef USBD_USE_CDC
122-
USBD_DescriptorsTypeDef CDC_Desc = {
123-
USBD_CDC_DeviceDescriptor,
124-
USBD_LangIDStrDescriptor,
125-
USBD_ManufacturerStrDescriptor,
126-
USBD_CDC_ProductStrDescriptor,
127-
USBD_SerialStrDescriptor,
128-
USBD_CDC_ConfigStrDescriptor,
129-
USBD_CDC_InterfaceStrDescriptor,
130-
};
131-
132114
/* USB Standard Device Descriptor */
133-
__ALIGN_BEGIN uint8_t USBD_CDC_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
115+
__ALIGN_BEGIN uint8_t USBD_Class_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
134116
0x12, /* bLength */
135117
USB_DESC_TYPE_DEVICE, /* bDescriptorType */
136118
0x00, /* bcdUSB */
@@ -141,8 +123,8 @@ __ALIGN_BEGIN uint8_t USBD_CDC_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
141123
USB_MAX_EP0_SIZE, /* bMaxPacketSize */
142124
LOBYTE(USBD_VID), /* idVendor */
143125
HIBYTE(USBD_VID), /* idVendor */
144-
LOBYTE(USBD_CDC_PID), /* idVendor */
145-
HIBYTE(USBD_CDC_PID), /* idVendor */
126+
LOBYTE(USBD_CLASS_PID), /* idVendor */
127+
HIBYTE(USBD_CLASS_PID), /* idVendor */
146128
0x00, /* bcdDevice rel. 2.00 */
147129
0x02,
148130
USBD_IDX_MFC_STR, /* Index of manufacturer string */
@@ -177,22 +159,13 @@ static void Get_SerialNum(void);
177159
* @param length: Pointer to data length variable
178160
* @retval Pointer to descriptor buffer
179161
*/
180-
#ifdef USBD_USE_HID_COMPOSITE
181-
uint8_t *USBD_HID_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
162+
uint8_t *USBD_Class_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
182163
{
183164
UNUSED(speed);
184-
*length = sizeof(USBD_HID_DeviceDesc);
185-
return (uint8_t *)USBD_HID_DeviceDesc;
165+
*length = sizeof(USBD_Class_DeviceDesc);
166+
return (uint8_t *)USBD_Class_DeviceDesc;
186167
}
187-
#endif
188-
#ifdef USBD_USE_CDC
189-
uint8_t *USBD_CDC_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
190-
{
191-
UNUSED(speed);
192-
*length = sizeof(USBD_CDC_DeviceDesc);
193-
return (uint8_t *)USBD_CDC_DeviceDesc;
194-
}
195-
#endif
168+
196169
/**
197170
* @brief Returns the LangID string descriptor.
198171
* @param speed: Current device speed
@@ -212,28 +185,15 @@ uint8_t *USBD_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
212185
* @param length: Pointer to data length variable
213186
* @retval Pointer to descriptor buffer
214187
*/
215-
#ifdef USBD_USE_HID_COMPOSITE
216-
uint8_t *USBD_HID_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
188+
uint8_t *USBD_Class_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
217189
{
218190
if (speed == USBD_SPEED_HIGH) {
219-
USBD_GetString((uint8_t *)USBD_HID_PRODUCT_HS_STRING, USBD_StrDesc, length);
191+
USBD_GetString((uint8_t *)USBD_CLASS_PRODUCT_HS_STRING, USBD_StrDesc, length);
220192
} else {
221-
USBD_GetString((uint8_t *)USBD_HID_PRODUCT_FS_STRING, USBD_StrDesc, length);
193+
USBD_GetString((uint8_t *)USBD_CLASS_PRODUCT_FS_STRING, USBD_StrDesc, length);
222194
}
223195
return USBD_StrDesc;
224196
}
225-
#endif /* USBD_USE_HID_COMPOSITE */
226-
#ifdef USBD_USE_CDC
227-
uint8_t *USBD_CDC_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
228-
{
229-
if (speed == USBD_SPEED_HIGH) {
230-
USBD_GetString((uint8_t *)USBD_CDC_PRODUCT_HS_STRING, USBD_StrDesc, length);
231-
} else {
232-
USBD_GetString((uint8_t *)USBD_CDC_PRODUCT_FS_STRING, USBD_StrDesc, length);
233-
}
234-
return USBD_StrDesc;
235-
}
236-
#endif /* USBD_USE_CDC */
237197

238198
/**
239199
* @brief Returns the manufacturer string descriptor.
@@ -271,57 +231,31 @@ uint8_t *USBD_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
271231
* @param length: Pointer to data length variable
272232
* @retval Pointer to descriptor buffer
273233
*/
274-
#ifdef USBD_USE_HID_COMPOSITE
275-
uint8_t *USBD_HID_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
276-
{
277-
if (speed == USBD_SPEED_HIGH) {
278-
USBD_GetString((uint8_t *)USBD_HID_CONFIGURATION_HS_STRING, USBD_StrDesc, length);
279-
} else {
280-
USBD_GetString((uint8_t *)USBD_HID_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
281-
}
282-
return USBD_StrDesc;
283-
}
284-
#endif /* USBD_USE_HID_COMPOSITE */
285-
#ifdef USBD_USE_CDC
286-
uint8_t *USBD_CDC_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
234+
uint8_t *USBD_Class_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
287235
{
288236
if (speed == USBD_SPEED_HIGH) {
289-
USBD_GetString((uint8_t *)USBD_CDC_CONFIGURATION_HS_STRING, USBD_StrDesc, length);
237+
USBD_GetString((uint8_t *)USBD_CLASS_CONFIGURATION_HS_STRING, USBD_StrDesc, length);
290238
} else {
291-
USBD_GetString((uint8_t *)USBD_CDC_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
239+
USBD_GetString((uint8_t *)USBD_CLASS_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
292240
}
293241
return USBD_StrDesc;
294242
}
295-
#endif /* USBD_USE_CDC */
296243

297244
/**
298245
* @brief Returns the interface string descriptor.
299246
* @param speed: Current device speed
300247
* @param length: Pointer to data length variable
301248
* @retval Pointer to descriptor buffer
302249
*/
303-
#ifdef USBD_USE_HID_COMPOSITE
304-
uint8_t *USBD_HID_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
305-
{
306-
if (speed == USBD_SPEED_HIGH) {
307-
USBD_GetString((uint8_t *)USBD_HID_INTERFACE_HS_STRING, USBD_StrDesc, length);
308-
} else {
309-
USBD_GetString((uint8_t *)USBD_HID_INTERFACE_FS_STRING, USBD_StrDesc, length);
310-
}
311-
return USBD_StrDesc;
312-
}
313-
#endif /* USBD_USE_HID_COMPOSITE */
314-
#ifdef USBD_USE_CDC
315-
uint8_t *USBD_CDC_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
250+
uint8_t *USBD_Class_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
316251
{
317252
if (speed == USBD_SPEED_HIGH) {
318-
USBD_GetString((uint8_t *)USBD_CDC_INTERFACE_HS_STRING, USBD_StrDesc, length);
253+
USBD_GetString((uint8_t *)USBD_CLASS_INTERFACE_HS_STRING, USBD_StrDesc, length);
319254
} else {
320-
USBD_GetString((uint8_t *)USBD_CDC_INTERFACE_FS_STRING, USBD_StrDesc, length);
255+
USBD_GetString((uint8_t *)USBD_CLASS_INTERFACE_FS_STRING, USBD_StrDesc, length);
321256
}
322257
return USBD_StrDesc;
323258
}
324-
#endif /* USBD_USE_CDC */
325259

326260
/**
327261
* @brief Create the serial number string descriptor

cores/arduino/stm32/usb/usbd_desc.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,8 @@
3434

3535
/* Exported macro ------------------------------------------------------------*/
3636
/* Exported functions ------------------------------------------------------- */
37-
#ifdef USBD_USE_HID_COMPOSITE
38-
extern USBD_DescriptorsTypeDef HID_Desc;
39-
#endif
40-
#ifdef USBD_USE_CDC
41-
extern USBD_DescriptorsTypeDef CDC_Desc;
42-
#endif
37+
extern USBD_DescriptorsTypeDef USBD_Desc;
38+
4339
#endif /* USBCON */
4440
#endif /* __USBD_DESC_H*/
4541

0 commit comments

Comments
 (0)