📄 hpi.lst
字号:
C51 COMPILER V6.20c HPI 08/21/2003 22:51:03 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE HPI
OBJECT MODULE PLACED IN HPI.OBJ
COMPILER INVOKED BY: E:\WIN98\HARDWARE\KEILC\C51\BIN\C51.EXE HPI.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "common.h"
2 #include "TPBULK.H"
3 #include "HPI.H"
4 #include "HAL.H"
5 #include "Fat.h"
6
7 extern XXGFLAGS bdata bXXGFlags;
8 extern unsigned char xdata DBUF[BUFFER_LENGTH];
9 //////////////////////////////////////////
10 //UART_CMD_BLOCK xdata inblock;
11 unsigned char xdata UARTBUF[UARTBUF_LENGTH];
12 SYS_INFO_BLOCK xdata DeviceInfo;
13 UART_CMD_BLOCK xdata UartCmdBlock;
14 UART_RSP_BLOCK xdata UartRspBlock;
15 FILE_INFO xdata ThisFile;
16 extern FREE_FAT_INFO xdata FreeFat;
17 //////////////////////////////////////////
18 void UartSendRsp(void)
19 {
20 1 unsigned int i;
21 1 unsigned char *pBuf=(unsigned char *)&UartRspBlock;
22 1 for(i=0;i<64;i++)
23 1 ComSendByte(*(pBuf+i));
24 1 if(UartRspBlock.len!=0){
25 2 for(i=0;i<UartRspBlock.len;i++)
26 2 ComSendByte(*(UartRspBlock.pbuffer+i));
27 2 }
28 1 }
29
30 unsigned char UartHandler(void)
31 {
32 1 unsigned char retStatus;
33 1 unsigned int len;
34 1 unsigned long pointer;
35 1 //unsigned char *pBuf=(unsigned char *)&UartRspBlock;
36 1
37 1 //for(i=0;i<64;i++)
38 1 //*(pBuf+i)=0;
39 1 //UartRspBlock.result=1;
40 1 UartRspBlock.errcode=ERC_OK;
41 1 UartRspBlock.len=0;
42 1 ///////////////////////////
43 1 switch(UartCmdBlock.cmd)
44 1 {
45 2 case CMD_RESET:
46 2
47 2 break;
48 2 case CMD_DETECT_DEVICE:
49 2 ThisFile.bFileOpen=0;
50 2 retStatus=DetectDevice();
51 2 UartRspBlock.cmd=CMD_DETECT_DEVICE_RSP;
52 2 break;
53 2 case CMD_OPEN_FILE:
54 2 retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
55 2 UartRspBlock.cmd=CMD_OPEN_FILE_RSP;
C51 COMPILER V6.20c HPI 08/21/2003 22:51:03 PAGE 2
56 2 break;
57 2 case CMD_CREATE_FILE:
58 2
59 2 retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
60 2 if(UartRspBlock.errcode==ERC_FILENOTFOUND)
61 2 {
62 3 retStatus=CreateFile(UartCmdBlock.CmdBlock.Cmd_CreateFile.item);
63 3 }
64 2 UartRspBlock.cmd=CMD_CREATE_FILE_RSP;
65 2 break;
66 2 case CMD_READ_FILE:
67 2 len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_ReadFile.readLength);
68 2 retStatus=ReadFile(len,UARTBUF);
69 2 UartRspBlock.cmd=CMD_READ_FILE_RSP;
70 2 break;
71 2 case CMD_WRITE_FILE:
72 2 len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_WriteFile.writeLength);
73 2 retStatus=WriteFile(len,UARTBUF);
74 2 UartRspBlock.cmd=CMD_WRITE_FILE_RSP;
75 2 break;
76 2
77 2 case CMD_LIST:
78 2 ThisFile.bFileOpen=0;
79 2 retStatus=List();
80 2 UartRspBlock.cmd=CMD_LIST_RSP;
81 2 break;
82 2 case CMD_REMOVE_FILE:
83 2 ThisFile.bFileOpen=0;
84 2 retStatus=RemoveFile(UartCmdBlock.CmdBlock.Cmd_RemoveFile.filename);
85 2 UartRspBlock.cmd=CMD_REMOVE_FILE_RSP;
86 2 break;
87 2 case CMD_GET_CAPACITY:
88 2 ThisFile.bFileOpen=0;
89 2 retStatus=GetCapacity();
90 2 UartRspBlock.cmd=CMD_GET_CAPACITY_RSP;
91 2 break;
92 2 case CMD_GET_FREE_CAPACITY:
93 2 ThisFile.bFileOpen=0;
94 2 retStatus=GetFreeCapacity();
95 2 UartRspBlock.cmd=CMD_GET_FREE_CAPACITY_RSP;
96 2 break;
97 2 case CMD_SET_FILE_POINTER:
98 2 pointer=SwapINT32(UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer);
99 2 retStatus=SetFilePointer(pointer);
100 2 UartRspBlock.cmd=CMD_SET_FILE_POINTER_RSP;
101 2 break;
102 2 case CMD_GET_VERSION:
103 2 ThisFile.bFileOpen=0;
104 2 retStatus=GetFirmwareVersion();
105 2 UartRspBlock.cmd=CMD_GET_VERSION_RSP;
106 2 break;
107 2 default:
108 2 bXXGFlags.bits.bCOM_ERR=1;
109 2 return FALSE;
110 2 }
111 1
112 1 ///////////////////////////////
113 1 UartRspBlock.result=retStatus;
114 1 UartRspBlock.pbuffer=UARTBUF;
115 1 UartSendRsp();
116 1 return TRUE;
117 1 //return retStatus;
C51 COMPILER V6.20c HPI 08/21/2003 22:51:03 PAGE 3
118 1 }
119 unsigned char DetectDevice(void)
120 {
121 1 #define RspBlockDetectDevice UartRspBlock.RspBlock.Rsp_DetectDevice
122 1 return bXXGFlags.bits.SLAVE_IS_ATTACHED;
123 1
124 1 #undef RspBlockDetectDevice
125 1 }
126
127 unsigned char List(void)
128 {
129 1 #define RspBlockList UartRspBlock.RspBlock.Rsp_List
130 1 unsigned int item,i;
131 1 unsigned char j,k,bstop,sector;
132 1 //RspBlockList.errcode=ERC_NODEVICE;
133 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
134 1 {
135 2 UartRspBlock.errcode=ERC_NODEVICE;
136 2 return FALSE;
137 2 }
138 1 ///////////////////////////////////////////////////////////
139 1 item=0;
140 1 bstop=0;
141 1 //RspBlockList.result=0x1;
142 1 for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
143 1 {
144 2 //////////////////////////////////////////////////
145 2 if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
146 2 {
147 3 //item=0;
148 3 UartRspBlock.errcode=ERC_DEVICEERR;
149 3 return FALSE;
150 3 }
151 2 ///////////////////////////////////////////////////
152 2 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
153 2 {
154 3 if(DBUF[i]==0x00)
155 3 {bstop=1;
156 4 break;}
157 3 else if(DBUF[i]==0xE5)
158 3 continue;
159 3 else if((DBUF[i]&0x40==0x40)&&(DBUF[i+11]==0xff))
160 3 {
161 4 j=DBUF[i]&0x0F;
162 4 j=j+1;
163 4 for(k=0;k<j*32;k++)
164 4 UARTBUF[item*32+k]=DBUF[i+k];
165 4 i=i+(j-1)*32;
166 4 item=item+j;
167 4 }
168 3 else
169 3 {
170 4 for(k=0;k<32;k++)
171 4 UARTBUF[item*32+k]=DBUF[i+k];
172 4 item=item+1;
173 4 }
174 3 }
175 2 ///////////////////////////////////////////////////////
176 2 if(bstop==1)break;
177 2
178 2 }
179 1
C51 COMPILER V6.20c HPI 08/21/2003 22:51:03 PAGE 4
180 1 //pBuf=(PREAD_CAPACITY_RSP)DBUF;
181 1 ///////////////////////////////////////////
182 1 RspBlockList.len=SwapINT16(item*32);
183 1 UartRspBlock.len=item*32;
184 1 return TRUE;
185 1
186 1 #undef RspBlockList
187 1
188 1 }
189 unsigned char OpenFile(unsigned char *pBuffer)
190 {
191 1 #define RspBlockOpenFile UartRspBlock.RspBlock.Rsp_OpenFile
192 1 unsigned int i;
193 1 unsigned char j,bstop,sector;
194 1 PDIR_INFO pDirInfo;
195 1
196 1 if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
197 1 {
198 2 UartRspBlock.errcode=ERC_NODEVICE;
199 2 return FALSE;
200 2 }
201 1 ///////////////////////////////////////////////////////////
202 1
203 1 ThisFile.bFileOpen=0;
204 1 //RspBlockOpenFile.result=0x0;
205 1 //RspBlockOpenFile.errcode=ERC_OK;
206 1 for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
207 1 {
208 2 //////////////////////////////////////////////////
209 2 if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
210 2 {
211 3 UartRspBlock.errcode=ERC_DEVICEERR;
212 3 return FALSE;
213 3
214 3 }
215 2 ///////////////////////////////////////////////////
216 2 for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
217 2 {
218 3 if(DBUF[i]==0x00)
219 3 {
220 4 UartRspBlock.errcode=ERC_FILENOTFOUND;
221 4 //UartRspBlock.errcode=ERC_DEVICEERR;
222 4 return FALSE;
223 4 }
224 3 ///////////////////////////////////////////
225 3 j=0;
226 3 while(DBUF[i+j]==*(pBuffer+j))
227 3 {
228 4 j=j+1;
229 4 if(j>10)
230 4 break;
231 4 }
232 3
233 3 if(j>10)
234 3 {
235 4 for(j=0;j<32;j++)
236 4 RspBlockOpenFile.item[j]=DBUF[i+j];
237 4 //RspBlockOpenFile.result=0x1;
238 4 ThisFile.bFileOpen=1;
239 4 bstop=1;
240 4 break;}
241 3
C51 COMPILER V6.20c HPI 08/21/2003 22:51:03 PAGE 5
242 3 }
243 2 ///////////////////////////////////////////////////////
244 2 if(bstop==1)break;
245 2 ///////////////////////////////////////////////////////
246 2 //if(DeviceInfo.BPB_RootEntCnt)
247 2
248 2 }
249 1
250 1 if(sector>=DeviceInfo.BPB_RootEntCnt)
251 1 {
252 2 UartRspBlock.errcode=ERC_FILENOTFOUND;
253 2 //UartRspBlock.errcode=ERC_DEVICEERR;
254 2 return FALSE;
255 2 }
256 1 ////////////////////////////////////////////
257 1 pDirInfo=(PDIR_INFO)RspBlockOpenFile.item;
258 1 ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);
259 1 ThisFile.LengthInByte=SwapINT32(pDirInfo->length);
260 1 ThisFile.ClusterPointer=ThisFile.StartCluster;
261 1 ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.StartCluster);
262 1 ThisFile.OffsetofSector=0;
263 1 ThisFile.SectorofCluster=0;
264 1 //=ThisFatSecNum(clusterNum);
265 1 //xxgFatEntOffset=ThisFatEntOffset(clusterNum);
266 1 ThisFile.FatSectorPointer=0;
267 1 //ThisFile.bFileOpen=1;
268 1 ThisFile.pointer=0;
269 1 ///////////////////////////////////////////
270 1 FreeFat.SectorNum=DeviceInfo.FatStartSector;
271 1 FreeFat.OldSectorNum=DeviceInfo.FatStartSector;
272 1 FreeFat.OffsetofSector=2;
273 1
274 1 return TRUE;
275 1 #undef RspBlockOpenFile
276 1 }
277
278 unsigned char ReadFile(unsigned int readLength,unsigned char *pBuffer)
279 {
280 1 #define RspBlockReadFile UartRspBlock.RspBlock.Rsp_ReadFile
281 1 unsigned int idata len,i;
282 1 unsigned char bSuccess;
283 1 //unsigned char sector;
284 1 //unsigned long lba;
285 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -