📄 usbimpl.lst
字号:
C51 COMPILER V7.01 USBIMPL 06/30/2007 11:42:51 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE USBIMPL
OBJECT MODULE PLACED IN UsbImpl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UsbImpl.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*-----------------------------------------------------------------------
2
3 Copyright (C) 2006 Beijing Jiaotong University, Computer Science
4
5 Creator: xiaoqiang
6
7 File: usbImpl.c
8
9 Description:
10 interpret USB protocol
11
12 History:
13 2006-7-28 xiaoqiang created
14 2006-9-19 xiaoqiang add a switch to hid code
15
16 ------------------------------------------------------------------------*/
17 #include <d12interface.h>
18 #include <usb.h>
19 //#include <c8051f120.h>
20 #include <uart0.h>
21
22 EPPFLAGS bEppflags;
23 #define NUM_ENDPOINTS 4
24
25 #ifdef _HID_DEVICE
26 #define CONFIG_DESCRIPTOR_LENGTH sizeof(CONFIG_DESCRIPTOR) \
27 + sizeof(INTERFACE_DESCRIPTOR) \
28 + sizeof(HID_DESCRIPTOR) \
29 + (NUM_ENDPOINTS *sizeof(ENDPOINT_DESCRIPTOR))
30 #else
#define CONFIG_DESCRIPTOR_LENGTH sizeof(CONFIG_DESCRIPTOR) \
+ sizeof(INTERFACE_DESCRIPTOR) \
+ (NUM_ENDPOINTS *sizeof(ENDPOINT_DESCRIPTOR))
#endif //_HID_DEVICE
35
36 extern CONTROL_XFER ControlData;
37
38 code DEVICE_DESCRIPTOR DeviceDescr =
39 {
40 sizeof(DEVICE_DESCRIPTOR),
41 USB_DEVICE_DESCRIPTOR_TYPE,
42 SWAP(0x0110),
43 0, //CLASS CODE
44 0, //SUBCLASS code
45 0, //protocol
46 EP0_PACKET_SIZE, //max ep0 packet size
47 SWAP(0x045e), //vendor id
48 SWAP(0x930a), //product id
49 SWAP(0x0100), //device version
50 1, //manufacturer
51 2, //product
52 3, //serial number
53 1 //config num
54 };
55
C51 COMPILER V7.01 USBIMPL 06/30/2007 11:42:51 PAGE 2
56 code CONFIG_DESCRIPTOR ConfigDescr =
57 {
58 sizeof(CONFIG_DESCRIPTOR),
59 USB_CONFIGURATION_DESCRIPTOR_TYPE,
60 SWAP(CONFIG_DESCRIPTOR_LENGTH),
61 1, //support interrupt
62 1, //config value
63 4, //configuration string
64 0x80, //config bus power
65 0x32 //max power x*2mV
66 };
67 code INTERFACE_DESCRIPTOR InterfaceDescr =
68 {
69 sizeof(INTERFACE_DESCRIPTOR),
70 USB_INTERFACE_DESCRIPTOR_TYPE,
71 0, //interrupt num
72 0, //alter setup
73 NUM_ENDPOINTS,
74 #ifdef _HID_DEVICE
75 0x3, //class code, 03 for hid device
76 #else
0x0,
#endif //_HID_DEVICE
79 0, //subclass code
80 0, //protocol code
81 5 //interface string
82 };
83
84 #ifdef _HID_DEVICE
85 code HID_DESCRIPTOR HidDescr =
86 {
87 sizeof(HID_DESCRIPTOR),
88 USB_HID_DESCRIPTOR_TYPE,
89 SWAP(0x101), //bcd hid class specification release
90 0, //country code
91 1, //number of hid class descr to follow
92 0x22, //report descr type
93 SWAP(0X34) //total length of report desc
94 };
95 #endif //_HID_DEVICE
96
97 code ENDPOINT_DESCRIPTOR EP1_TXDescr =
98 {
99 sizeof(ENDPOINT_DESCRIPTOR),
100 USB_ENDPOINT_DESCRIPTOR_TYPE,
101 0x81, //ep1 in
102 #ifdef _HID_DEVICE
103 0x2, //USB_ENDPOINT_TYPE_BULK
104 #else
0x3, //USB_ENDPOINT_TYPE_INTERRUPT,
#endif //_HID_DEVICE
107 SWAP(EP1_PACKET_SIZE), //MAX packet size
108 10 //interval 10ms
109 };
110 code ENDPOINT_DESCRIPTOR EP1_RXDescr =
111 {
112 sizeof(ENDPOINT_DESCRIPTOR),
113 USB_ENDPOINT_DESCRIPTOR_TYPE,
114 0x1, //ep1 out
115 #ifdef _HID_DEVICE
116 0x2, //USB_ENDPOINT_TYPE_BULK
117 #else
C51 COMPILER V7.01 USBIMPL 06/30/2007 11:42:51 PAGE 3
0x3, //USB_ENDPOINT_TYPE_INTERRUPT,
#endif //_HID_DEVICE
120 SWAP(EP1_PACKET_SIZE),
121 10
122 };
123
124 code ENDPOINT_DESCRIPTOR EP2_TXDescr =
125 {
126 sizeof(ENDPOINT_DESCRIPTOR),
127 USB_ENDPOINT_DESCRIPTOR_TYPE,
128 0x82,
129 #ifdef _HID_DEVICE
130 0x3, //USB_ENDPOINT_TYPE_INTERRUPT
131 #else
0x2, //USB_ENDPOINT_TYPE_BULK
#endif //_HID_DEVICE
134 SWAP(EP2_PACKET_SIZE),
135 1
136 };
137 code ENDPOINT_DESCRIPTOR EP2_RXDescr =
138 {
139 sizeof(ENDPOINT_DESCRIPTOR),
140 USB_ENDPOINT_DESCRIPTOR_TYPE,
141 0x2,
142 #ifdef _HID_DEVICE
143 0x3, //USB_ENDPOINT_TYPE_INTERRUPT
144 #else
0x2, //USB_ENDPOINT_TYPE_BULK,
#endif //_HID_DEVICE
147 SWAP(EP2_PACKET_SIZE),
148 1
149 };
150
151 code u8 StringLANGID[] = //字符描述符
152 {
153 4, // bLength
154 USB_STRING_DESCRIPTOR_TYPE, // bDescriptorType 0x03
155 0x09, 0x04//SWAP(0x0409) // wLANGID
156 };
157
158 code u8 szManufacturer[] = //厂商描述符字符串
159 {
160 46, // bLength
161 USB_STRING_DESCRIPTOR_TYPE, // bDescriptorType 0x03
162 // String... http://www.njtu.edu.cn
163 'h', 0, 't', 0, 't', 0, 'p', 0, ':', 0,
164 '/', 0, '/', 0, 'w', 0, 'w', 0, 'w', 0,
165 '.', 0, 'n', 0, 'j', 0, 't', 0, 'u', 0,
166 '.', 0, 'e', 0, 'd', 0, 'u', 0, '.', 0,
167 'c', 0, 'n', 0
168 };
169
170
171 code u8 szProduct[] = //产品描述符字符串
172 {
173 36, // bLength
174 USB_STRING_DESCRIPTOR_TYPE, // bDescriptorType
175 // String... USB Develop Board
176 'U', 0, 'S', 0, 'B', 0, ' ', 0, 'D', 0,
177 'e', 0, 'v', 0, 'e', 0, 'l', 0, 'o', 0,
178 'p', 0, ' ', 0, 'B', 0, 'o', 0, 'a', 0,
179 'r', 0, 'd', 0
C51 COMPILER V7.01 USBIMPL 06/30/2007 11:42:51 PAGE 4
180 };
181
182 code u8 szSerialNumber[] = //设备序列号字符串
183 {
184 22, // bLength
185 USB_STRING_DESCRIPTOR_TYPE, // bDescriptorType
186 // String... 0001-10000
187 '0', 0, '0', 0, '0', 0, '1', 0, '-', 0,
188 '1', 0, '0', 0, '0', 0, '0', 0, '0', 0
189 };
190
191 code u8 szConfiguration[] = //用于描述该配置字符串
192 {
193 72, // bLength
194 USB_STRING_DESCRIPTOR_TYPE, // bDescriptorType
195 // String...This configuration is used for Test
196 'T', 0, 'h', 0, 'i', 0, 's', 0, ' ', 0,
197 'c', 0, 'o', 0, 'n', 0, 'f', 0, 'i', 0,
198 'g', 0, 'u', 0, 'r', 0, 'a', 0, 't', 0,
199 'i', 0, 'o', 0, 'n', 0, ' ', 0, 'i', 0,
200 's', 0, ' ', 0, 'u', 0, 's', 0, 'e', 0,
201 'd', 0, ' ', 0, 'f', 0, 'o', 0, 'r', 0,
202 ' ', 0, 'T', 0, 'e', 0, 's', 0, 't', 0
203 };
204
205 code u8 szInterface[] = //用于描述该接口字符串
206 {
207 50, // bLength
208 USB_STRING_DESCRIPTOR_TYPE, // bDescriptorType
209 // String...Interface to the AStart UDK12 T00L
210 'I', 0, 'n', 0, 't', 0, 'e', 0, 'r', 0,
211 'f', 0, 'a', 0, 'c', 0, 'e', 0, ' ', 0,
212 't', 0, 'o', 0, ' ', 0, 't', 0, 'h', 0,
213 'e', 0, ' ', 0, 'U', 0, 'S', 0, 'B', 0,
214 ' ', 0, 'K', 0, 'i', 0, 't', 0
215 };
216
217 code u8 szUserInfo[] =
218 {
219 48, // bLength
220 USB_STRING_DESCRIPTOR_TYPE, // bDescriptorType
221 // String... Created by Tu xiaoqiang
222 'C', 0, 'r', 0, 'e', 0, 'a', 0, 't', 0,
223 'e', 0, 'd', 0, ' ', 0, 'b', 0, 'y', 0,
224 ' ', 0, 'T', 0, 'u', 0, ' ', 0, 'x', 0,
225 'i', 0, 'a', 0, 'o', 0, 'q', 0, 'i', 0,
226 'a', 0, 'n', 0, 'g', 0
227 };
228
229 // used for HID
230 #ifdef _HID_DEVICE
231 code u8 szHidReport[] =
232 {
233 0x06, 0xA0, 0xFF,// Usage Page (FFA0h, vendor defined)
234 0x09, 0x01, // Usage (vendor defined)
235 0xA1, 0x01, // Collection (Application)
236 0x09, 0x02 , // Usage (vendor defined)
237 0xA1, 0x00, // Collection (Physical)
238 0x06, 0xA1, 0xFF, // Usage Page (vendor defined)
239
240 /// The Input report
241 0x09, 0x03 , // Usage (vendor defined)
C51 COMPILER V7.01 USBIMPL 06/30/2007 11:42:51 PAGE 5
242 0x09, 0x04, // Usage (vendor defined)
243 0x15, 0x80, // Logical minimum 0x80 or -128)
244 0x25, 0x7F, // Logical maximum 0x7F or 127)
245 0x35, 0x00, // Physical minimum (0)
246 0x45, 0xFF, // Physical maximum (255)
247 0x75, 0x08, // Report size (8 bits)
248 0x95, 0x40, // Report count (64 fields)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -