1 #include "usbd_core.h"
2 #include "usbd_dfu.h"
3
4 #define USBD_VID 0x0483
5 #define USBD_PID 0xDF11
6 #define USBD_MAX_POWER 100
7 #define USBD_LANGID_STRING 1033
8
9 #define FLASH_DESC_STR "@Internal Flash /0x08000000/16*001Ka,112*01Kg"
10
11 #define USB_CONFIG_SIZE (9 + 9 + 9)
12
13 const uint8_t dfu_flash_descriptor[] = {
14 USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0x00, 0x00, 0x00, USBD_VID, USBD_PID, 0x0200, 0x01),
15 USB_CONFIG_DESCRIPTOR_INIT(USB_CONFIG_SIZE, 0x01, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER),
16 DFU_DESCRIPTOR_INIT(),
17 ///////////////////////////////////////
18 /// string0 descriptor
19 ///////////////////////////////////////
20 USB_LANGID_INIT(USBD_LANGID_STRING),
21 ///////////////////////////////////////
22 /// string1 descriptor
23 ///////////////////////////////////////
24 0x14, /* bLength */
25 USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
26 'C', 0x00, /* wcChar0 */
27 'h', 0x00, /* wcChar1 */
28 'e', 0x00, /* wcChar2 */
29 'r', 0x00, /* wcChar3 */
30 'r', 0x00, /* wcChar4 */
31 'y', 0x00, /* wcChar5 */
32 'U', 0x00, /* wcChar6 */
33 'S', 0x00, /* wcChar7 */
34 'B', 0x00, /* wcChar8 */
35 ///////////////////////////////////////
36 /// string2 descriptor
37 ///////////////////////////////////////
38 0x1e, /* bLength */
39 USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
40 'D', 0x00, /* wcChar0 */
41 'F', 0x00, /* wcChar1 */
42 'U', 0x00, /* wcChar2 */
43 'W', 0x00, /* wcChar3 */
44 'i', 0x00, /* wcChar4 */
45 't', 0x00, /* wcChar5 */
46 'h', 0x00, /* wcChar6 */
47 's', 0x00, /* wcChar7 */
48 't', 0x00, /* wcChar8 */
49 ' ', 0x00, /* wcChar9 */
50 't', 0x00, /* wcChar10 */
51 'o', 0x00, /* wcChar11 */
52 'o', 0x00, /* wcChar12 */
53 'l', 0x00, /* wcChar13 */
54 ///////////////////////////////////////
55 /// string3 descriptor
56 ///////////////////////////////////////
57 0x16, /* bLength */
58 USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
59 '2', 0x00, /* wcChar0 */
60 '0', 0x00, /* wcChar1 */
61 '2', 0x00, /* wcChar2 */
62 '2', 0x00, /* wcChar3 */
63 '1', 0x00, /* wcChar4 */
64 '2', 0x00, /* wcChar5 */
65 '3', 0x00, /* wcChar6 */
66 '4', 0x00, /* wcChar7 */
67 '5', 0x00, /* wcChar8 */
68 '6', 0x00, /* wcChar9 */
69 ///////////////////////////////////////
70 /// string4 descriptor
71 ///////////////////////////////////////
72 0x60, /* bLength */
73 USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */
74 '@', 0x00, /* wcChar0 */
75 'I', 0x00, /* wcChar1 */
76 'n', 0x00, /* wcChar2 */
77 't', 0x00, /* wcChar3 */
78 'e', 0x00, /* wcChar4 */
79 'r', 0x00, /* wcChar5 */
80 'n', 0x00, /* wcChar6 */
81 'a', 0x00, /* wcChar7 */
82 'l', 0x00, /* wcChar8 */
83 ' ', 0x00, /* wcChar9 */
84 'F', 0x00, /* wcChar10 */
85 'l', 0x00, /* wcChar11*/
86 'a', 0x00, /* wcChar12 */
87 's', 0x00, /* wcChar13 */
88 'h', 0x00, /* wcChar14 */
89 ' ', 0x00, /* wcChar15 */
90 ' ', 0x00, /* wcChar16 */
91 ' ', 0x00, /* wcChar17 */
92 '/', 0x00, /* wcChar18 */
93 '0', 0x00, /* wcChar19 */
94 'x', 0x00, /* wcChar20 */
95 '0', 0x00, /* wcChar21*/
96 '8', 0x00, /* wcChar22 */
97 '0', 0x00, /* wcChar23 */
98 '0', 0x00, /* wcChar24 */
99 '0', 0x00, /* wcChar25 */
100 '0', 0x00, /* wcChar26 */
101 '0', 0x00, /* wcChar27 */
102 '0', 0x00, /* wcChar28 */
103 '/', 0x00, /* wcChar29 */
104 '1', 0x00, /* wcChar30 */
105 '6', 0x00, /* wcChar31*/
106 '*', 0x00, /* wcChar32 */
107 '0', 0x00, /* wcChar33 */
108 '0', 0x00, /* wcChar34 */
109 '1', 0x00, /* wcChar35 */
110 'K', 0x00, /* wcChar36 */
111 'a', 0x00, /* wcChar37 */
112 ',', 0x00, /* wcChar38 */
113 '1', 0x00, /* wcChar39 */
114 '1', 0x00, /* wcChar40 */
115 '2', 0x00, /* wcChar41*/
116 '*', 0x00, /* wcChar42 */
117 '0', 0x00, /* wcChar43 */
118 '1', 0x00, /* wcChar44 */
119 'K', 0x00, /* wcChar45 */
120 'g', 0x00, /* wcChar46 */
121
122 #ifdef CONFIG_USB_HS
123 ///////////////////////////////////////
124 /// device qualifier descriptor
125 ///////////////////////////////////////
126 0x0a,
127 USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER,
128 0x00,
129 0x02,
130 0x00,
131 0x00,
132 0x00,
133 0x40,
134 0x01,
135 0x00,
136 #endif
137 0x00
138 };
139
usbd_event_handler(uint8_t event)140 void usbd_event_handler(uint8_t event)
141 {
142 switch (event) {
143 case USBD_EVENT_RESET:
144 break;
145 case USBD_EVENT_CONNECTED:
146 break;
147 case USBD_EVENT_DISCONNECTED:
148 break;
149 case USBD_EVENT_RESUME:
150 break;
151 case USBD_EVENT_SUSPEND:
152 break;
153 case USBD_EVENT_CONFIGURED:
154 break;
155 case USBD_EVENT_SET_REMOTE_WAKEUP:
156 break;
157 case USBD_EVENT_CLR_REMOTE_WAKEUP:
158 break;
159
160 default:
161 break;
162 }
163 }
164
165 struct usbd_interface intf0;
166
dfu_flash_init(void)167 void dfu_flash_init(void)
168 {
169 usbd_desc_register(dfu_flash_descriptor);
170 usbd_add_interface(usbd_dfu_init_intf(&intf0));
171 usbd_initialize();
172 }
173