📄 xxgchap9.lst
字号:
182 2 if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
183 2 // clear TX stall for IN on EPn.
184 2 D12_SetEndpointStatus(endp*2 + 1, 0);
185 2 else
186 2 // clear RX stall for OUT on EPn.
187 2 D12_SetEndpointStatus(endp*2, 0);
188 2 single_transmit(0, 0);
189 2 } else
190 1 stall_ep0();
191 1 }
192
193 void set_feature(void)
194 {
195 1 unsigned char endp;
196 1 unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
197 1
198 1 if (bRecipient == USB_RECIPIENT_DEVICE
199 1 && ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
200 2 DISABLE;
201 2 bEPPflags.bits.remote_wakeup = 1;
202 2 ENABLE;
203 2 single_transmit(0, 0);
204 2 }
205 1 else if (bRecipient == USB_RECIPIENT_ENDPOINT
206 1 && ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
207 2 endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
208 2 if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
209 2 // clear TX stall for IN on EPn.
210 2 D12_SetEndpointStatus(endp*2 + 1, 1);
211 2 else
212 2 // clear RX stall for OUT on EPn.
213 2 D12_SetEndpointStatus(endp*2, 1);
214 2 single_transmit(0, 0);
215 2 } else
216 1 stall_ep0();
217 1 }
218
219 void set_address(void)
220 {
221 1 D12_SetAddressEnable((unsigned char)(ControlData.DeviceRequest.wValue &
222 1 DEVICE_ADDRESS_MASK), 1);
223 1 single_transmit(0, 0);
224 1 }
225
226 void get_descriptor(void)
227 {
228 1 unsigned char bDescriptor = MSB(ControlData.DeviceRequest.wValue);
229 1
230 1 if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE) {
231 2 code_transmit((unsigned char code *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
232 2 }
233 1 else if (bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE) {
234 2 code_transmit((unsigned char code *)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);
235 2 }
236 1 else
237 1 stall_ep0();
238 1 }
239
240 void get_configuration(void)
241 {
C51 COMPILER V7.02b XXGCHAP9 03/17/2005 23:11:51 PAGE 5
242 1 unsigned char c = bEPPflags.bits.configuration;
243 1
244 1 single_transmit(&c, 1);
245 1 }
246
247 void set_configuration(void)
248 {
249 1 if (ControlData.DeviceRequest.wValue == 0) {
250 2 //* put device in unconfigured state
251 2 single_transmit(0, 0);
252 2 DISABLE;
253 2 bEPPflags.bits.configuration = 0;
254 2 ENABLE;
255 2 init_unconfig();
256 2 } else if (ControlData.DeviceRequest.wValue == 1) {
257 2 // Configure device
258 2 single_transmit(0, 0);
259 2
260 2 init_unconfig();
261 2 init_config();
262 2
263 2 DISABLE;
264 2 bEPPflags.bits.configuration = 1;
265 2 ENABLE;
266 2 } else
267 1 stall_ep0();
268 1 }
269
270 void get_interface(void)
271 {
272 1 unsigned char txdat = 0; // Only/Current interface = 0
273 1 single_transmit(&txdat, 1);
274 1 }
275
276 void set_interface(void)
277 {
278 1 if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0)
279 1 single_transmit(0, 0);
280 1 else
281 1 stall_ep0();
282 1 }
C51 COMPILER V7.02b XXGCHAP9 03/17/2005 23:11:51 PAGE 6
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
_IO_REQUEST. . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 6
uAddressL. . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
bAddressH. . . . . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
uSize. . . . . . . . . . . . . . . . MEMBER ----- U_INT 0003H 2
bCommand . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0005H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
ULONG. . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
stall_ep0. . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
USB_STRING_DESCRIPTOR. . . . . . . . . TYPEDEF ----- STRUCT ----- 3
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bString. . . . . . . . . . . . . . . MEMBER ----- ARRAY 0002H 1
InterfaceDescr . . . . . . . . . . . . PUBLIC CODE STRUCT 001BH 9
USB_CONFIGURATION_DESCRIPTOR . . . . . TYPEDEF ----- STRUCT ----- 9
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
wTotalLength . . . . . . . . . . . . MEMBER ----- U_INT 0002H 2
bNumInterfaces . . . . . . . . . . . MEMBER ----- U_CHAR 0004H 1
bConfigurationValue. . . . . . . . . MEMBER ----- U_CHAR 0005H 1
iConfiguration . . . . . . . . . . . MEMBER ----- U_CHAR 0006H 1
bmAttributes . . . . . . . . . . . . MEMBER ----- U_CHAR 0007H 1
MaxPower . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0008H 1
USB_HUB_DESCRIPTOR . . . . . . . . . . TYPEDEF ----- STRUCT ----- 71
bDescriptorLength. . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bNumberOfPorts . . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
wHubCharacteristics. . . . . . . . . MEMBER ----- U_INT 0003H 2
bPowerOnToPowerGood. . . . . . . . . MEMBER ----- U_CHAR 0005H 1
bHubControlCurrent . . . . . . . . . MEMBER ----- U_CHAR 0006H 1
bRemoveAndPowerMask. . . . . . . . . MEMBER ----- ARRAY 0007H 64
PUSB_POWER_DESCRIPTOR. . . . . . . . . TYPEDEF ----- PTR ----- 3
init_config. . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
_D12_SelectEndpoint. . . . . . . . . . EXTERN CODE PROC ----- -----
USB_ENDPOINT_DESCRIPTOR. . . . . . . . TYPEDEF ----- STRUCT ----- 7
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bEndpointAddress . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
bmAttributes . . . . . . . . . . . . MEMBER ----- U_CHAR 0003H 1
wMaxPacketSize . . . . . . . . . . . MEMBER ----- U_INT 0004H 2
bInterval. . . . . . . . . . . . . . MEMBER ----- U_CHAR 0006H 1
PUSB_INTERFACE_DESCRIPTOR. . . . . . . TYPEDEF ----- PTR ----- 3
_epp_flags . . . . . . . . . . . . . . * TAG * ----- UNION ----- 2
bits . . . . . . . . . . . . . . . . MEMBER ----- STRUCT 0000H 2
value. . . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
set_address. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
set_feature. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
endp . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
bRecipient . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
_USB_POWER_DESCRIPTOR. . . . . . . . . * TAG * ----- STRUCT ----- 18
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bCapabilitiesFlags . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
EventNotification. . . . . . . . . . MEMBER ----- U_INT 0003H 2
D1LatencyTime. . . . . . . . . . . . MEMBER ----- U_INT 0005H 2
D2LatencyTime. . . . . . . . . . . . MEMBER ----- U_INT 0007H 2
C51 COMPILER V7.02b XXGCHAP9 03/17/2005 23:11:51 PAGE 7
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
D3LatencyTime. . . . . . . . . . . . MEMBER ----- U_INT 0009H 2
PowerUnit. . . . . . . . . . . . . . MEMBER ----- U_CHAR 000BH 1
D0PowerConsumption . . . . . . . . . MEMBER ----- U_INT 000CH 2
D1PowerConsumption . . . . . . . . . MEMBER ----- U_INT 000EH 2
D2PowerConsumption . . . . . . . . . MEMBER ----- U_INT 0010H 2
get_configuration. . . . . . . . . . . PUBLIC CODE PROC 0000H -----
c. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
_USB_INTERFACE_DESCRIPTOR. . . . . . . * TAG * ----- STRUCT ----- 9
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bInterfaceNumber . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
bAlternateSetting. . . . . . . . . . MEMBER ----- U_CHAR 0003H 1
bNumEndpoints. . . . . . . . . . . . MEMBER ----- U_CHAR 0004H 1
bInterfaceClass. . . . . . . . . . . MEMBER ----- U_CHAR 0005H 1
bInterfaceSubClass . . . . . . . . . MEMBER ----- U_CHAR 0006H 1
bInterfaceProtocol . . . . . . . . . MEMBER ----- U_CHAR 0007H 1
iInterface . . . . . . . . . . . . . MEMBER ----- U_CHAR 0008H 1
IO_REQUEST . . . . . . . . . . . . . . TYPEDEF ----- STRUCT ----- 6
uAddressL. . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
bAddressH. . . . . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
uSize. . . . . . . . . . . . . . . . MEMBER ----- U_INT 0003H 2
bCommand . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0005H 1
_D12_SetAddressEnable. . . . . . . . . EXTERN CODE PROC ----- -----
BOOL . . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -