📄 xxgprotodma.lst
字号:
C51 COMPILER V7.02b XXGPROTODMA 03/17/2005 23:11:26 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE XXGPROTODMA
OBJECT MODULE PLACED IN J:\D12\FW\XXGPROTODMA.OBJ
COMPILER INVOKED BY: C:\keil\c51\bin\C51.EXE J:\D12\FW\XXGPROTODMA.C DB SB OE
stmt level source
1
2 #include <stdio.h>
3 #include <string.h>
4
5 #include "xxgmain.h"
6 //#include "xxgprotodma.h"
7 #include "xxghal.h"
8 //#include "xxgd12ci.h"
9 #include "xxgusb100.h"
10 //#include "xxgchap9.h"
11
12 extern CONTROL_XFER ControlData;
13 extern IO_REQUEST idata ioRequest;
14 extern EPPFLAGS bEPPflags;
15 extern BOOL bNoRAM;
16
17 extern void single_transmit(unsigned char * buf, unsigned char len);
18 extern void stall_ep0(void);
19
20 void get_firmware_version()
21 {
22 1 unsigned char i;
23 1
24 1 i = 0x30; // firmware version number
25 1 single_transmit((unsigned char *)&i, 1);
26 1
27 1 }
28
29 void get_buffer_size()
30 {
31 1 unsigned char i[4];
32 1
33 1 if(bNoRAM == TRUE) {
34 2 i[0] = EP2_PACKET_SIZE;
35 2 i[1] = 0;
36 2 i[2] = 0;
37 2 i[3] = 0;
38 2 } else {
39 2 i[0] = 0;
40 2 i[1] = 1;
41 2 i[2] = 0;
42 2 i[3] = 0;
43 2 }
44 1 single_transmit(i, 4);
45 1
46 1 }
47
48 void setup_dma_request()
49 {
50 1 memcpy((unsigned char *)&ioRequest + ControlData.DeviceRequest.wValue,
51 1 ControlData.dataBuffer,
52 1 ControlData.DeviceRequest.wLength);
53 1
54 1 ioRequest.uSize = SWAP(ioRequest.uSize);
55 1 ioRequest.uAddressL = SWAP(ioRequest.uAddressL);
C51 COMPILER V7.02b XXGPROTODMA 03/17/2005 23:11:26 PAGE 2
56 1
57 1 if(ioRequest.uSize > DMA_BUFFER_SIZE) { // Unaccepted request
58 2 stall_ep0();
59 2 }
60 1 else if(bNoRAM == TRUE && ioRequest.uSize > EP2_PACKET_SIZE) {
61 2 stall_ep0();
62 2 }
63 1 else {
64 2 if(bEPPflags.bits.dma_state == DMA_IDLE) {
65 3 DISABLE;
66 3 bEPPflags.bits.setup_dma ++;
67 3 ENABLE;
68 3 }
69 2 else {
70 3 DISABLE;
71 3 bEPPflags.bits.dma_state = DMA_PENDING;
72 3 ENABLE;
73 3 }
74 2
75 2 } // else if accepted request
76 1 }
77
78 void read_write_register(void)
79 {
80 1 unsigned char i;
81 1
82 1 if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
83 2
84 2 if(bEPPflags.bits.verbose)
85 2 printf("Read Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
86 2 ControlData.DeviceRequest.wValue,
87 2 ControlData.DeviceRequest.wLength,
88 2 ControlData.DeviceRequest.wIndex);
89 2
90 2 if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
91 2 ControlData.DeviceRequest.wValue == 0 &&
92 2 ControlData.DeviceRequest.wLength == 1)
93 2 get_firmware_version();
94 2 else
95 2 if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
96 2 ControlData.DeviceRequest.wValue == 0 &&
97 2 ControlData.DeviceRequest.wLength == 4)
98 2 get_buffer_size();
99 2 else
100 2 stall_ep0();
101 2
102 2 } // if read register
103 1 else{
104 2 if(bEPPflags.bits.verbose) {
105 3
106 3 //printf("Write Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
107 3 // ControlData.DeviceRequest.wValue,
108 3 // ControlData.DeviceRequest.wLength,
109 3 // ControlData.DeviceRequest.wIndex);
110 3
111 3 //printf("Data: ");
112 3 for(i = 0; i < ControlData.DeviceRequest.wLength; i ++)
113 3 printf("0x%bx, ", *((ControlData.dataBuffer)+i));
114 3 printf("\n");
115 3 }
116 2
117 2 if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
C51 COMPILER V7.02b XXGPROTODMA 03/17/2005 23:11:26 PAGE 3
118 2 ControlData.DeviceRequest.wValue == 0 &&
119 2 ControlData.DeviceRequest.wLength == 6)
120 2 setup_dma_request();
121 2 //stall_ep0();
122 2 else
123 2 stall_ep0();
124 2 } // if write register
125 1 }
C51 COMPILER V7.02b XXGPROTODMA 03/17/2005 23:11:26 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
bNoRAM . . . . . . . . . . . . . . . . EXTERN DATA U_CHAR ----- 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
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
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
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
_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
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -