• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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