📄 rcv_process.lst
字号:
C51 COMPILER V7.09 RCV_PROCESS 09/16/2008 09:24:35 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE RCV_PROCESS
OBJECT MODULE PLACED IN .\output\Rcv_process.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE gprs\Rcv_process.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gp
-s\;inter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\Rcv_process.lst) OBJECT(.\output\Rc
-v_process.obj)
line level source
1 #include "typedef.h"
2 #include "struct_def.h"
3 #include "string.h"
4 #include "common_function.h"
5 #include "Trans_process.h"
6 #include "Rcv_process.h"
7 #include "global.h"
8 #include "message.h"
9 #include "centerinterface.h"
10 #include "menuprocess.h"
11 #include "photo.h"
12 #include "systemmanager.h"
13 #include "16c554.h"
14 extern PROTOCOL_SEND_BUFFER sbuf;
15 extern DWord serial_number;
16
17 /*消息合法性检验*/
18 Uchar verify_process(void)
19 {
20 1 char *ptra;/*调试用*/
21 1 char * ptr;
22 1 Uchar *pl;
23 1 Word chksum;
24 1 Uchar rsync[4];
25 1 Uchar sync[4] = "NJPT";
26 1 unsigned int len = 0;
27 1 ptra = sbuf.buf[5];/*调试用*/ ;
28 1 if(udp_receive(&ptr) == 0)/*有无消息判断*/
29 1 {
30 2 return(0);
31 2 }
32 1 else
33 1 {
34 2 memcpy(rsync, ptr, 4);
35 2 pl = (ptr+12);
36 2 len = ((*(ptr+11))<<8)+(*(ptr+10));
37 2 chksum = 0;
38 2 while(len--)
39 2 {
40 3 chksum += *pl++;
41 3 }
42 2 if( (compare(rsync,sync,4)==0) && (*(ptr+9) == (Uchar)(chksum >> 8)) && (*(ptr+8) == (Uchar)chksum
-) )/*同步判断与校验和判断*/
43 2 {
44 3 return(1);
45 3 }
46 2 else
47 2 {
48 3 return(0);
49 3 }
50 2 }
51 1 }
52
C51 COMPILER V7.09 RCV_PROCESS 09/16/2008 09:24:35 PAGE 2
53 /*判断调度类型*/
54 void judge(Int8 *ptr,Uchar command_type)
55 {
56 1 Uchar len;
57 1 long msgNo;
58 1 unsigned char tmp;
59 1
60 1 len = *(ptr + 10);
61 1 len = len - 20;
62 1 msgNo = *((long*)(ptr+12));
63 1 switch(command_type)
64 1 {
65 2 case 1:
66 2 message_write(1, (ptr+32), len, msgNo);
67 2 break;
68 2
69 2 case 4:
70 2 /*daily(ptr+33,len-1);*/
71 2 message_write(3, ptr+33, len-1, msgNo);
72 2 break;
73 2
74 2 case 7:
75 2 /*alarm_judge((ptr+32),len-1);*/
76 2 message_write(2, (ptr+33), len-1, msgNo);
77 2 break;
78 2
79 2 case 2:
80 2 case 3:
81 2 case 5:
82 2 case 6:
83 2 break;
84 2
85 2 case 8:
86 2 tmp = *(ptr + 32);
87 2 if(tmp== '1')
88 2 {
89 3 tmp = RUN_NORMAL;
90 3 set_work_state(&tmp);
91 3 }
92 2 else if( tmp == '3' )
93 2 {
94 3 tmp = RUN_NOTASK;
95 3 set_work_state(&tmp);
96 3 }
97 2
98 2 if ((tmp >= '1') && (tmp <= '4'))
99 2 {
100 3 if (1 == is_saveswitchmode())
101 3 set_loginmsg_response(len, ptr+32, *(Word*)(ptr+6));
102 3 }
103 2 else
104 2 set_loginmsg_response(len, ptr+32, *(Word*)(ptr+6));
105 2 break;
106 2
107 2 case 9:
108 2 tmp = *(ptr + 32);
109 2 if(tmp== '1')
110 2 tmp = RUN_NORMAL;
111 2 if( tmp=='2')
112 2 tmp = RUN_NOTASK;
113 2
114 2 set_work_state(&tmp);
C51 COMPILER V7.09 RCV_PROCESS 09/16/2008 09:24:35 PAGE 3
115 2 break;
116 2
117 2 default:
118 2 break;
119 2 }
120 1 return;
121 1 }
122
123 /*应答消息处理*/
124 void res_process(Int8 *ptr)
125 {
126 1 Uchar rtype;
127 1 Uchar num[4];
128 1 PROTOCOL_SEND_BUFFER * message_info;
129 1 message_info = &sbuf;
130 1 memcpy(num, (ptr+12),4);
131 1 if (ptr[6] == 0x0c)
132 1 {
133 2 photo_setPacketState(ptr[18]-1);
134 2 }
135 1 else if(((rtype=*(ptr+7)) == (sbuf.buf[0][7]+0x40)) && (compare(num,&(sbuf.buf[0][12]),4) == 0))/*找出
-对应的请求消息*/
136 1 {
137 2 Byte msgLen, tmpLen, tmpValue;
138 2 tmpValue = ptr[23];
139 2 sbuf.valid[0] = 0;
140 2 if (ptr[6] == 0x03)
141 2 {
142 3 if (tmpValue == 0xdd)
143 3 {
144 4 set_systemlandflag();
145 4
146 4 msgLen = ptr[10];
147 4 if (msgLen >= 30)
148 4 {
149 5 msgLen -= 12;
150 5 tmpLen = 0;
151 5 while (tmpLen <= (msgLen-18))
152 5 {
153 6 add_alarmOneZone(ptr+12+12+tmpLen);
154 6 tmpLen += 18;
155 6 }
156 5 }
157 4 }
158 3 }
159 2 }
160 1 }
161
162 /*收到的请求消息处理*/
163 /*********************************************
164 *陈剑修改:添加远程程序更新处理;时间06-12-16
165 *********************************************/
166 void command_process(Int8 *ptr)
167 {
168 1 Uchar command_type;
169 1 unsigned int auto_time;
170 1 Uchar sync[4]="NJPT";
171 1 Uchar rtype[2];
172 1 Uchar update_type;
173 1 Uchar re_value;
174 1 Uchar send_block[2];
175 1 Uchar mess_num[4];
C51 COMPILER V7.09 RCV_PROCESS 09/16/2008 09:24:35 PAGE 4
176 1
177 1 rtype[0] = *(ptr+7) + 0x40;
178 1 rtype[1] = *(ptr+6);
179 1 memcpy(mess_num,ptr+12,4);
180 1 switch(rtype[1])/*选择对应的应答消息打包*/
181 1 {
182 2 case 1: res_direct_message(mess_num);
183 2 command_type = *(ptr+31);
184 2 judge(ptr,command_type);/*判断调度类型*/
185 2 break;
186 2 case 2: res_seeconfiguer_message(mess_num);
187 2
188 2 auto_time = ptr[34] * 256 + ptr[33];
189 2 set_keyArea_value(auto_time, ptr[32], ptr[35], ptr[36]);
190 2 /* set_auto_time( &auto_time );
191 2 set_online_time( ptr+32 );
192 2 set_arrive_meter( ptr+35 );
193 2 set_left_meter( ptr+36 );*/
194 2 break;
195 2 case 3: res_seeposition_message(mess_num);
196 2 break;
197 2 case 4: res_seeterminal_message(mess_num);
198 2 break;
199 2 case 5: update_type = *(ptr + 16);
200 2 memcpy(send_block,ptr+31,2);
201 2 if(*(ptr+30) == 0x01)
202 2 {
203 3 res_update_message( mess_num, send_block, update_type, re_value = 0x06);
204 3 // update_firmware(update_type, up_flag = 5, ptr);
205 3 }
206 2 else if(*(ptr+30) == 0x04)
207 2 {
208 3 res_update_message( mess_num, send_block, update_type, re_value = 0x06);
209 3 // update_firmware(update_type, up_flag = 4, ptr);
210 3 }
211 2 else
212 2 {
213 3 res_update_message( mess_num, send_block, update_type, re_value = 0x15);
214 3 }
215 2 break;
216 2 case 6: res_seeconfugure_message(mess_num);
217 2 break;
218 2
219 2 /*******add by cj******/
220 2 case 7:
221 2 res_update_program(ptr);
222 2 break;
223 2 /******end of add*****/
224 2 case 0x0A: /*requir telephone list*/
225 2 res_requir_telephone_list_message(mess_num);
226 2 break;
227 2
228 2 case 0x0B: /*configure telephone list*/
229 2 res_configure_telephone_list_message(mess_num);
230 2 set_telephone_list(ptr+32);
231 2 break;
232 2 case 0x0e: /*photo request*/
233 2 photostart_photo(mess_num);
234 2 res_photo_message(mess_num);
235 2 break;
236 2 case 0x0f:/*photo stop*/
237 2 res_photostop_message(mess_num);
C51 COMPILER V7.09 RCV_PROCESS 09/16/2008 09:24:35 PAGE 5
238 2 photo_stopphoto();
239 2 break;
240 2 default:return;
241 2 }
242 1 return;
243 1 }
244
245
246 /*接收处理*/
247 void serverRcv_process(void)
248 {
249 1 char * ptr;
250 1 Uchar rtype[2];
251 1 if(verify_process()==0)
252 1 {
253 2 udp_start_receive();
254 2 }
255 1 else
256 1 {
257 2 udp_receive(&ptr);
258 2 memcpy(rtype, (ptr+7), 1);
259 2 if(rtype[0]==0x60)
260 2 {
261 3 res_process(ptr);
262 3 udp_start_receive();
263 3 }
264 2 else if(rtype[0]==0x08)
265 2 {
266 3 command_process(ptr);
267 3 udp_start_receive();
268 3
269 3 }
270 2 else
271 2 {
272 3 udp_start_receive();
273 3 }
274 2 }
275 1 return;
276 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1619 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- 67
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -