49
49
#include "usbd_core.h"
50
50
#include "usbd_desc.h"
51
51
#include "usbd_conf.h"
52
+ #include "utils.h"
52
53
53
54
/* Private typedef -----------------------------------------------------------*/
54
55
/* Private define ------------------------------------------------------------*/
64
65
#elif !defined(USB_MANUFACTURER )
65
66
// Fall through to unknown if no manufacturer name was provided in a macro
66
67
#define USBD_MANUFACTURER_STRING "Unknown"
67
- #endif
68
+ #endif /* USBD_VID */
68
69
#ifdef USBD_USE_HID_COMPOSITE
69
- #define USBD_HID_PRODUCT_HS_STRING "HID in HS Mode"
70
- #define USBD_HID_PRODUCT_FS_STRING "HID in FS Mode"
71
- #define USBD_HID_CONFIGURATION_HS_STRING "HID Config"
72
- #define USBD_HID_INTERFACE_HS_STRING "HID Interface"
73
- #define USBD_HID_CONFIGURATION_FS_STRING "HID Config"
74
- #define USBD_HID_INTERFACE_FS_STRING "HID Interface"
70
+ #define USBD_HID_PRODUCT_FS_STRING CONCATS(USB_PRODUCT, "HID in FS Mode")
71
+ #define USBD_HID_CONFIGURATION_FS_STRING CONCATS(USB_PRODUCT, "HID Config")
72
+ #define USBD_HID_INTERFACE_FS_STRING CONCATS(USB_PRODUCT, "HID Interface")
75
73
76
74
/* Private macro -------------------------------------------------------------*/
77
- /* Private function prototypes -----------------------------------------------*/
78
- static uint8_t * USBD_HID_DeviceDescriptor (USBD_SpeedTypeDef speed , uint16_t * length );
79
- static uint8_t * USBD_HID_LangIDStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length );
80
- static uint8_t * USBD_HID_ManufacturerStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length );
75
+ /* Private function prototypes -----------------------------------------------*/ ;
81
76
static uint8_t * USBD_HID_ProductStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length );
82
- static uint8_t * USBD_HID_SerialStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length );
83
77
static uint8_t * USBD_HID_ConfigStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length );
84
78
static uint8_t * USBD_HID_InterfaceStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length );
85
79
#ifdef USB_SUPPORT_USER_STRING_DESC
@@ -88,15 +82,15 @@ static uint8_t *USBD_HID_USRStringDesc (USBD_SpeedTypeDef speed, uint8_t idx, ui
88
82
89
83
/* Private variables ---------------------------------------------------------*/
90
84
USBD_DescriptorsTypeDef HID_Desc = {
91
- USBD_HID_DeviceDescriptor ,
92
- USBD_HID_LangIDStrDescriptor ,
93
- USBD_HID_ManufacturerStrDescriptor ,
85
+ USBD_DeviceDescriptor ,
86
+ USBD_LangIDStrDescriptor ,
87
+ USBD_ManufacturerStrDescriptor ,
94
88
USBD_HID_ProductStrDescriptor ,
95
- USBD_HID_SerialStrDescriptor ,
89
+ USBD_SerialStrDescriptor ,
96
90
USBD_HID_ConfigStrDescriptor ,
97
91
USBD_HID_InterfaceStrDescriptor ,
98
92
};
99
- #endif // USBD_USE_HID_COMPOSITE
93
+ #endif /* USBD_USE_HID_COMPOSITE */
100
94
101
95
/* USB Standard Device Descriptor */
102
96
#if defined ( __ICCARM__ ) /*!< IAR Compiler */
@@ -105,8 +99,8 @@ USBD_DescriptorsTypeDef HID_Desc = {
105
99
__ALIGN_BEGIN static uint8_t USBD_DeviceDesc [USB_LEN_DEV_DESC ] __ALIGN_END = {
106
100
0x12 , /* bLength */
107
101
USB_DESC_TYPE_DEVICE , /* bDescriptorType */
108
- 0x00 , /* bcdUSB */
109
- 0x02 ,
102
+ 0x01 , /* bcdUSB */
103
+ 0x01 ,
110
104
0x00 , /* bDeviceClass */
111
105
0x00 , /* bDeviceSubClass */
112
106
0x00 , /* bDeviceProtocol */
@@ -115,8 +109,8 @@ __ALIGN_BEGIN static uint8_t USBD_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = {
115
109
HIBYTE (USBD_VID ), /* idVendor */
116
110
LOBYTE (USBD_PID ), /* idVendor */
117
111
HIBYTE (USBD_PID ), /* idVendor */
118
- 0x00 , /* bcdDevice rel. 2.00 */
119
- 0x02 ,
112
+ 0x01 , /* bcdDevice rel. 1.1 */
113
+ 0x01 ,
120
114
USBD_IDX_MFC_STR , /* Index of manufacturer string */
121
115
USBD_IDX_PRODUCT_STR , /* Index of product string */
122
116
USBD_IDX_SERIAL_STR , /* Index of serial number string */
@@ -149,14 +143,13 @@ __ALIGN_BEGIN static uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ] __ALIGN_END;
149
143
static void IntToUnicode (uint32_t value , uint8_t * pbuf , uint8_t len );
150
144
static void Get_SerialNum (void );
151
145
152
- #ifdef USBD_USE_HID_COMPOSITE
153
146
/**
154
147
* @brief Returns the device descriptor.
155
148
* @param speed: Current device speed
156
149
* @param length: Pointer to data length variable
157
150
* @retval Pointer to descriptor buffer
158
151
*/
159
- uint8_t * USBD_HID_DeviceDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
152
+ uint8_t * USBD_DeviceDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
160
153
{
161
154
UNUSED (speed );
162
155
* length = sizeof (USBD_DeviceDesc );
@@ -169,39 +162,20 @@ uint8_t *USBD_HID_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
169
162
* @param length: Pointer to data length variable
170
163
* @retval Pointer to descriptor buffer
171
164
*/
172
- uint8_t * USBD_HID_LangIDStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
165
+ uint8_t * USBD_LangIDStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
173
166
{
174
167
UNUSED (speed );
175
168
* length = sizeof (USBD_LangIDDesc );
176
169
return (uint8_t * )USBD_LangIDDesc ;
177
170
}
178
171
179
- /**
180
- * @brief Returns the product string descriptor.
181
- * @param speed: Current device speed
182
- * @param length: Pointer to data length variable
183
- * @retval Pointer to descriptor buffer
184
- */
185
- uint8_t * USBD_HID_ProductStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
186
- {
187
- if (speed == USBD_SPEED_HIGH )
188
- {
189
- USBD_GetString ((uint8_t * )USBD_HID_PRODUCT_HS_STRING , USBD_StrDesc , length );
190
- }
191
- else
192
- {
193
- USBD_GetString ((uint8_t * )USBD_HID_PRODUCT_FS_STRING , USBD_StrDesc , length );
194
- }
195
- return USBD_StrDesc ;
196
- }
197
-
198
172
/**
199
173
* @brief Returns the manufacturer string descriptor.
200
174
* @param speed: Current device speed
201
175
* @param length: Pointer to data length variable
202
176
* @retval Pointer to descriptor buffer
203
177
*/
204
- uint8_t * USBD_HID_ManufacturerStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
178
+ uint8_t * USBD_ManufacturerStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
205
179
{
206
180
UNUSED (speed );
207
181
USBD_GetString ((uint8_t * )USBD_MANUFACTURER_STRING , USBD_StrDesc , length );
@@ -214,7 +188,7 @@ uint8_t *USBD_HID_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *l
214
188
* @param length: Pointer to data length variable
215
189
* @retval Pointer to descriptor buffer
216
190
*/
217
- uint8_t * USBD_HID_SerialStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
191
+ uint8_t * USBD_SerialStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
218
192
{
219
193
UNUSED (speed );
220
194
* length = USB_SIZ_STRING_SERIAL ;
@@ -225,6 +199,21 @@ uint8_t *USBD_HID_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
225
199
return (uint8_t * )USBD_StringSerial ;
226
200
}
227
201
202
+ #ifdef USBD_USE_HID_COMPOSITE
203
+
204
+ /**
205
+ * @brief Returns the product string descriptor.
206
+ * @param speed: Current device speed
207
+ * @param length: Pointer to data length variable
208
+ * @retval Pointer to descriptor buffer
209
+ */
210
+ uint8_t * USBD_HID_ProductStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
211
+ {
212
+ UNUSED (speed );
213
+ USBD_GetString ((uint8_t * )USBD_HID_PRODUCT_FS_STRING , USBD_StrDesc , length );
214
+ return USBD_StrDesc ;
215
+ }
216
+
228
217
/**
229
218
* @brief Returns the configuration string descriptor.
230
219
* @param speed: Current device speed
@@ -233,14 +222,8 @@ uint8_t *USBD_HID_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
233
222
*/
234
223
uint8_t * USBD_HID_ConfigStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
235
224
{
236
- if (speed == USBD_SPEED_HIGH )
237
- {
238
- USBD_GetString ((uint8_t * )USBD_HID_CONFIGURATION_HS_STRING , USBD_StrDesc , length );
239
- }
240
- else
241
- {
242
- USBD_GetString ((uint8_t * )USBD_HID_CONFIGURATION_FS_STRING , USBD_StrDesc , length );
243
- }
225
+ UNUSED (speed );
226
+ USBD_GetString ((uint8_t * )USBD_HID_CONFIGURATION_FS_STRING , USBD_StrDesc , length );
244
227
return USBD_StrDesc ;
245
228
}
246
229
@@ -252,17 +235,12 @@ uint8_t *USBD_HID_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
252
235
*/
253
236
uint8_t * USBD_HID_InterfaceStrDescriptor (USBD_SpeedTypeDef speed , uint16_t * length )
254
237
{
255
- if (speed == USBD_SPEED_HIGH )
256
- {
257
- USBD_GetString ((uint8_t * )USBD_HID_INTERFACE_HS_STRING , USBD_StrDesc , length );
258
- }
259
- else
260
- {
261
- USBD_GetString ((uint8_t * )USBD_HID_INTERFACE_FS_STRING , USBD_StrDesc , length );
262
- }
238
+ UNUSED (speed );
239
+ USBD_GetString ((uint8_t * )USBD_HID_INTERFACE_FS_STRING , USBD_StrDesc , length );
263
240
return USBD_StrDesc ;
264
241
}
265
242
#endif //USBD_USE_HID_COMPOSITE
243
+
266
244
/**
267
245
* @brief Create the serial number string descriptor
268
246
* @param None
0 commit comments