📄 gprs.lst
字号:
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE GPRS
OBJECT MODULE PLACED IN .\output\gprs.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE gprs\gprs.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gps\;inte
-r\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\gprs.lst) OBJECT(.\output\gprs.obj)
line level source
1
2 #include "w77e532.h"
3 #include "16c554.h"
4 #include "gprs.h"
5 #include "mcuInit.h"
6
7 #include "string.h"
8 #include "stdio.h"
9
10 #include "global.h"
11 #include "commoninterface.h"
12
13 extern Uchar volatile xdata D12_Y5;
14 extern idata Uchar D18CS;//D12_Y5的寄存器
15
16 //#define PWRKEY_PIN P3_5 /*工作时为高电平*/
17 //#define PWRENABLE_PIN P1_5 /*工作时为高电平*/
18 //#define RESET_ALL P1_5 /*工作时为高电平*/
19
20
21 AT_STRING_STRUCT code at_cmd[]
22 ={
23 {"AT\r",0},
24 {"ATE0+COLP=1\r",1}, /**/
25 {"AT+CCID\r", 2},
26 {"AT+CIPSTART=\"UDP\",", 3},
27 {"AT+CIPSEND=", 4},
28 {"AT+CIPCLOSE\r", 5},
29 {"ATD", 6},
30 {"ATA\r", 7},
31 {"ATH\r", 8},
32 {"AT+CSTT", 9},
33 {"AT+CIICR\r", 10},
34 {"AT+CIFSR\r", 11},
35 {"AT+CLVL=100;+CMIC=0,6\r", 12},
36 {"AT+CIPSTATUS\r", 13},
37 //AT+CIPSHUT
38 {"",}
39 };
40
41 AT_STRING_STRUCT code at_ret[]
42 ={
43 {"\r\n",AT_RET_CRLF},
44 {"OK\r\n",AT_RET_OK},
45 {"8986",AT_RET_CCID},
46 {"CONNECT OK\r\n",AT_RET_CONNECT_OK},
47 {">", AT_RET_PROMPT},
48 {"SEND OK",AT_RET_SEND_OK},
49 {"CLOSE OK",AT_RET_CLOSE_OK},
50 {"+CSQ:",AT_RET_CSQ},
51 {"NJPT", AT_RET_NJPT},
52 {"STATE:CONNECT OK",AT_RET_STATE_OK},
53 {"ALREADY CONNECT",AT_RET_ALREADY_CONNECT},
54 {"RING",AT_RET_RING},
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 2
55 {"NO CARRIER",AT_RET_NO_CARRIER},
56 {"BUSY",AT_RET_BUSY},
57 {"+COLP:",AT_RET_COLP},
58 {"AT",AT_RET_AT},
59 {"AT+CSQ", AT_RET_ATCSQ},
60 {"+CLVL", AT_RET_VOLUME},
61 //AT+CSQ
62 //SEND FAIL
63 {"",0} /*end of struct*/
64 };
65
66
67 char gprsRcvBuffer[1024];
68 GPRS_INFO_STRUCT gprsInfo;
69 IP_INFO_STRUCT ipInfo;
70 /*************************cj add 时间:2007年3月21日
71 *为了保证处于振铃状态下,如果20秒内还没有连续的振铃,则表示此时已经没有必要再等待振铃*/
72 #define MAX_RINGLENG 21
73 unsigned char gRingClock = 0;
74 void set_ringtimeout()
75 {
76 1 gRingClock = MAX_RINGLENG;
77 1 }
78
79 void ringClockTimeout()
80 {
81 1 if (gprsInfo.state == STATE_VOICE_RING)
82 1 {
83 2 gRingClock--;
84 2 if (0 == gRingClock)
85 2 gprsInfo.state = STATE_IDLE;;
86 2 }
87 1 }
88 //extern char debug_msg[1024];
89 /*****以上内容填加结束*********************/
90 void debugDump(char flag, char *ptr, unsigned char len)
91 {
92 1 //for debug
93 1 /* if (0 == flag)
94 1 {
95 1 memcpy(debug_msg, ptr, len);
96 1 sioc_send(debug_msg, len);
97 1 }*/
98 1 }
*** WARNING C280 IN LINE 90 OF GPRS\GPRS.C: 'flag': unreferenced local variable
*** WARNING C280 IN LINE 90 OF GPRS\GPRS.C: 'ptr': unreferenced local variable
*** WARNING C280 IN LINE 90 OF GPRS\GPRS.C: 'len': unreferenced local variable
99
100 void gprs_reset(unsigned char nPos)
101 {
102 1 // sprintf(debug_msg, "模块重启:%2bd;%2bd;%2bd;%2bd\r\n", nPos, ipInfo.rxTimer, gprsInfo.txTimer, gprsI
-nfo.state);
103 1 // sioc_send(debug_msg, strlen(debug_msg));
104 1 ipInfo.rxTimer = 0;
105 1 gprsInfo.state = STATE_BEGIN;
106 1 }
*** WARNING C280 IN LINE 100 OF GPRS\GPRS.C: 'nPos': unreferenced local variable
107
108 void gprs_init(void)
109 {
110 1 D18CS = 0x03;
111 1 D12_Y5 = D18CS;
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 3
112 1 tl16c554_init();
113 1
114 1
115 1
116 1 clear_ram(gprsRcvBuffer,sizeof(gprsRcvBuffer));
117 1 clear_ram((char *)&ipInfo, sizeof(ipInfo) );
118 1 clear_ram((char *)&gprsInfo, sizeof(gprsInfo) );
119 1
120 1 gprsInfo.valid = 0;
121 1 gprsInfo.rxBytes = 0;
122 1 gprsInfo.rxPtr = gprsRcvBuffer;
123 1
124 1 gprs_reset(1);
125 1
126 1 }
127
128 char gprs_packet_send(char *ptr, unsigned int len)
129 {
130 1 /*xhb_debug 1*/
131 1 if (len > 256)
132 1 debugDump(1, ptr, 250);
133 1 else
134 1 debugDump(1, ptr, len);
135 1
136 1 gprsInfo.txTimer = 60;
137 1 at_serial_send(ptr, len);
138 1
139 1 return(0);
140 1 }
141
142 void gprs_send_apn(void)
143 {
144 1 clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
145 1 strcpy(gprsInfo.cmdBuffer, "AT+CSTT=\"GJGS.RZ.SD\",\"\",\"\"\r");//strcpy(gprsInfo.cmdBuffer, "AT+CSTT
-=\"bus8-xit.he\",\"\",\"\"\r");
146 1
147 1 gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer));
148 1 }
149
150
151 void gprs_send_connect(void)
152 {
153 1 char *ptr;
154 1 unsigned char ipAddr[6];
155 1 unsigned int ipPort;
156 1
157 1 clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
158 1 strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_CONNECT].str);
159 1 get_serverIp(ipAddr);
160 1 ipPort = ipAddr[4] * 256 + ipAddr[5];
161 1
162 1 ptr = gprsInfo.cmdBuffer + strlen(gprsInfo.cmdBuffer);
163 1 sprintf(ptr, "\"%bu.%bu.%bu.%bu\",\"%u\"\r", \
164 1 ipAddr[0],ipAddr[1],ipAddr[2],ipAddr[3],ipPort);
165 1
166 1 gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer));
167 1 }
168
169 void gprs_transmit_process(void)
170 {
171 1 char *ptr;
172 1 static unsigned char count;
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 4
173 1
174 1 switch(gprsInfo.state )
175 1 {
176 2 case STATE_BEGIN:
177 2 count = 0; /*关闭GPRS电源1秒*/
178 2 gprsInfo.state = STATE_RESET;
179 2
180 2 gprsInfo.resetCount ++;
181 2 gprsInfo.errorCount = 0;
182 2 gprsInfo.txTimer = 0;
183 2 ipInfo.rxTimer = 0;
184 2 break;
185 2
186 2 case STATE_RESET:
187 2 count ++;
188 2 D18CS &= 0x0b;
189 2 D12_Y5 = D18CS;
190 2 // PWRENABLE_PIN = 0;
191 2
192 2 if( count >= 20*2 )
193 2 {
194 3 count = 0;
195 3 gprsInfo.state = STATE_POWER_HOLD;
196 3 }
197 2
198 2 break;
199 2
200 2 case STATE_POWER_HOLD: /**/
201 2 count ++;
202 2 D18CS |= 0x0c;
203 2 D12_Y5 = D18CS;
204 2 /* PWRKEY_PIN = 1;
205 2 PWRENABLE_PIN = 1;*/
206 2
207 2 if( count >= 20*3 ) //2
208 2 {
209 3 count = 0;
210 3 gprsInfo.state = STATE_PWRKEY_LOW;
211 3 }
212 2
213 2 break;
214 2
215 2 case STATE_PWRKEY_LOW: /*要保持低电平2秒*/
216 2 count ++;
217 2 D18CS &= 0x07;
218 2 D12_Y5 = D18CS;
219 2 // PWRKEY_PIN = 0;
220 2
221 2 if( count >= 20*3 )
222 2 {
223 3 count = 0;
224 3 gprsInfo.state = STATE_PWRKEY_HIGH;
225 3 }
226 2
227 2 break;
228 2
229 2 case STATE_PWRKEY_HIGH: /*要保持高电平1秒*/
230 2 count ++;
231 2 D18CS |= 0x08;
232 2 D12_Y5 = D18CS;
233 2 // PWRKEY_PIN = 1;
234 2
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 5
235 2 if( count >= 20*3 ) //5
236 2 {
237 3 count = 0;
238 3 gprsInfo.state = STATE_SEND_PREINIT;
239 3 }
240 2
241 2 break;
242 2
243 2 case STATE_SEND_PREINIT:
244 2 gprsInfo.state = STATE_RECEIVE_PREINIT;
245 2
246 2 ptr = at_cmd[AT_CMD_AT].str;
247 2 gprs_packet_send(ptr, strlen(ptr) );
248 2 gprsInfo.txTimer = 20;
249 2 break;
250 2
251 2
252 2 case STATE_SEND_INIT:
253 2 gprsInfo.state = STATE_RECEIVE_INIT;
254 2
255 2 ptr = at_cmd[AT_CMD_INIT].str;
256 2 gprs_packet_send(ptr, strlen(ptr) );
257 2 break;
258 2
259 2 /****cj add for set volume***/
260 2 case STATE_SEND_SET_VOLUME:
261 2 gprsInfo.state = STATE_RECIEVE_SET_VOLUME;
262 2
263 2 ptr = at_cmd[AT_CMD_SET_VOLUME].str;
264 2 gprs_packet_send(ptr, strlen(ptr) );
265 2 break;
266 2 /***end of add *****/
267 2
268 2 case STATE_SEND_CCID:
269 2 gprsInfo.state = STATE_RECEIVE_CCID;
270 2 ptr = at_cmd[AT_CMD_CCID].str;
271 2 gprs_packet_send(ptr, strlen(ptr) );
272 2 break;
273 2
274 2 case STATE_SEND_APN:
275 2 #if 1
276 2 /*不是APN接入时采用此段程序*/
277 2 count ++;
278 2 gprsInfo.txTimer = 0;
279 2
280 2 if( count >= 20*10 )
281 2 {
282 3 count = 0;
283 3 gprsInfo.state = STATE_SEND_CONNECT;
284 3 }
285 2 break;
286 2 #endif
287 2 gprsInfo.state = STATE_RECEIVE_APN;
288 2
289 2 gprs_send_apn();
290 2 break;
291 2
292 2 case STATE_SEND_ACTIVE:
293 2 gprsInfo.state = STATE_RECEIVE_ACTIVE;
294 2
295 2 ptr = at_cmd[AT_CMD_GPRS_ACTIVE].str;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -