📄 iso.lst
字号:
C51 COMPILER V7.06 ISO 08/18/2005 15:30:28 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ISO
OBJECT MODULE PLACED IN ISO.OBJ
COMPILER INVOKED BY: d:\Keil777\C51\BIN\C51.EXE ISO.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include <stdio.h>
3 #include <string.h>
4 #include <unistd.h>
*** WARNING C318 IN LINE 4 OF ISO.C: can't open file 'unistd.h'
5 #include "BasicTyp.h"
6 #include "common.h"
7 #include "usb.h"
8 #include "Hal4D13.h"
9 #include "chap_9.h"
10 #include "D13BUS.h"
11 #include "iso.h"
12 #include "system.h"
13 #include "usb_irq.h"
14
15 extern D13FLAGS bD13flags;
16 extern CONTROL_XFER ControlData;
17 extern IO_REQUEST idata ioRequest;
18
19 unsigned char IsoDisable =1;
20 unsigned char IsoMode = 0; //ISO_IN:01|ISO_OUT:02;
21 unsigned short IsoOutPattern=0xF0;
22 unsigned short IsoOutPktLen=0;
23 unsigned short IsoOutDataBuff[ISO_FIFOSIZE_512];
24 unsigned short IsoInPattern=0xF8;
25 unsigned short IsoInPktLen=0;
26 unsigned short IsoInDataBuff[ISO_FIFOSIZE_512];
27
28 void EnableIsoMode()
29 {
30 1 IsoMode = 0;
31 1 if( ControlData.DeviceRequest.wLength == 0)
32 1 {
33 2 IsoMode &= ~ControlData.DeviceRequest.wIndex;
34 2 IsoMode |= ControlData.DeviceRequest.wValue;
35 2
36 2 printf("IsoMode %x\n",IsoMode );
37 2
38 2 if(IsoMode&ISO_LOOP)
39 2 {
40 3
41 3 RaiseIRQL();
42 3 bD13flags.bits.ISO_state = ISO_LOOP;
43 3 LowerIRQL();
44 3
45 3 IsoDisable =0;
46 3 IsoInPattern = 0;
47 3 IsoInPktLen = ISO_FIFOSIZE_512;
48 3 IsoOutPattern = 0;
49 3 IsoOutPktLen = ISO_FIFOSIZE_512;
50 3
51 3 }
52 2 else
53 2 {
54 3
C51 COMPILER V7.06 ISO 08/18/2005 15:30:28 PAGE 2
55 3 if(IsoMode&ISO_OUT)
56 3 {
57 4
58 4 RaiseIRQL();
59 4 bD13flags.bits.ISO_state = ISO_OUT;
60 4 LowerIRQL();
61 4
62 4 IsoDisable =0;
63 4 IsoOutPattern = 0;
64 4 IsoOutPktLen = ISO_FIFOSIZE_512;
65 4 printf("Iso-Out Pattern %x, PktLen %u bytes\n",IsoInPattern,IsoOutPktLen);
66 4
67 4 }
68 3 if(IsoMode&ISO_IN)
69 3 {
70 4 bD13flags.bits.ISO_state = ISO_IN;
71 4
72 4 IsoDisable =0;
73 4 IsoInPattern = 0;
74 4 IsoInPktLen = ISO_FIFOSIZE_512;
75 4
76 4 IOWR(ISP1362_BASE,D13_COMMAND_PORT, D13CMD_EP_VALID_BUF+EPINDEX4EP06);
*** WARNING C206 IN LINE 76 OF ISO.C: 'IOWR': missing function-prototype
*** ERROR C267 IN LINE 76 OF ISO.C: 'IOWR': requires ANSI-style prototype
77 4 printf("Iso-IN Pattern %x, PktLen %u bytes\n",IsoInPattern,IsoInPktLen);
78 4 }
79 3
80 3 }
81 2
82 2 Chap9_SingleTransmitEP0(0, 0);
83 2 }
84 1 else
85 1 {
86 2 Chap9_StallEP0();
87 2 }
88 1 }
89
90
91 void Wait4Ns( unsigned long timeNs)
92 {
93 1 usleep(timeNs);
94 1 }
95
96 USHORT ISOLOOP(UCHAR bOUTEPIndex, UCHAR bINEPIndex, USHORT len)
97 {
98 1 USHORT ISOBuffer[512];
99 1 UCHAR ep_last;
100 1 USHORT j=0;
101 1
102 1 ep_last = (UCHAR)Hal4D13_GetEndpointStatusWInteruptClear(bOUTEPIndex);
103 1 if(ep_last & 0x60)
104 1 {
105 2 j = Hal4D13_ReadISOEndpoint(bOUTEPIndex, ISOBuffer, len);
106 2 Hal4D13_WriteISOEndpoint(bINEPIndex, ISOBuffer, j);
107 2 }
108 1
109 1 return j;
110 1 }
111
112 USHORT Hal4D13_ReadISOEndpoint(UCHAR bEPIndex, USHORT ISOBuffer[512], USHORT len)
113 {
114 1 USHORT i, j;
C51 COMPILER V7.06 ISO 08/18/2005 15:30:28 PAGE 3
115 1
116 1 IOWR(ISP1362_BASE,D13_COMMAND_PORT, D13CMD_EP_RD_FIFO + bEPIndex);
117 1
118 1 j = IORD(ISP1362_BASE,D13_DATA_PORT);
119 1
120 1 if(j != len)
121 1 j = len;
122 1
123 1 for(i=0; i<j; i++)
124 1 {
125 2 ISOBuffer[i] = IORD(ISP1362_BASE,D13_DATA_PORT);
126 2
127 2 }
128 1
129 1 /* Clear Buffer */
130 1 IOWR(ISP1362_BASE,D13_COMMAND_PORT, D13CMD_EP_CLEAR_BUF+bEPIndex);
131 1
132 1 return j;
133 1 }
134
135 USHORT Hal4D13_WriteISOEndpoint(UCHAR bEPIndex, USHORT ISOBuffer[512], USHORT len)
136 {
137 1 USHORT i;
138 1
139 1 if(bD13flags.bits.At_IRQL1 == 0)
140 1 RaiseIRQL();
141 1
142 1 IOWR(ISP1362_BASE,D13_COMMAND_PORT, D13CMD_EP_WR_FIFO + bEPIndex);
143 1
144 1 IOWR(ISP1362_BASE,D13_DATA_PORT, 512);
145 1
146 1 /* Write Buffer */
147 1
148 1 for(i=0; i<len; i++)
149 1 {
150 2 IOWR(ISP1362_BASE,D13_DATA_PORT, ISOBuffer[i]);
151 2 }
152 1
153 1
154 1
155 1 if(bD13flags.bits.At_IRQL1 == 0)
156 1 LowerIRQL();
157 1
158 1 return i;
159 1 }
160
161
C51 COMPILATION COMPLETE. 2 WARNING(S), 1 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -