📄 gprs.lst
字号:
296 2 gprs_packet_send(ptr, strlen(ptr) );
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 6
297 2 gprsInfo.txTimer = 0;
298 2 break;
299 2
300 2 case STATE_SEND_GET_IP:
301 2 if( count == 0 )
302 2 {
303 3 count ++;
304 3
305 3 ptr = at_cmd[AT_CMD_GET_IP].str;
306 3 gprs_packet_send(ptr, strlen(ptr) );
307 3 gprsInfo.txTimer = 0;
308 3 }
309 2 else if( count >= 40 )
310 2 {
311 3 gprsInfo.state = STATE_SEND_CONNECT;
312 3 }
313 2 else
314 2 count ++;
315 2
316 2 break;
317 2
318 2
319 2 case STATE_SEND_CONNECT:
320 2 gprsInfo.state = STATE_RECEIVE_CONNECT;
321 2
322 2 gprs_send_connect();
323 2 gprsInfo.txTimer = 0;
324 2 break;
325 2
326 2 case STATE_SEND_PACKET_INIT:
327 2 gprsInfo.state = STATE_RECEIVE_PACKET_INIT;
328 2
329 2 ptr = at_cmd[AT_CMD_AT].str;
330 2 gprs_packet_send(ptr, strlen(ptr) );
331 2 gprsInfo.txTimer = 20;
332 2 break;
333 2
334 2 case STATE_SEND_POWER:
335 2 gprsInfo.state = STATE_RECEIVE_POWER;
336 2
337 2 gprs_packet_send("AT+CSQ\r", 7 );
338 2 gprsInfo.txTimer = 40;
339 2 break;
340 2
341 2 case STATE_SEND_UDP_LENGTH:
342 2 gprsInfo.state = STATE_WAIT_PROMPT;
343 2
344 2 gprsInfo.errorCount = 0;
345 2 clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
346 2 strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_IP_SEND].str);
347 2
348 2 ptr = gprsInfo.cmdBuffer + strlen(at_cmd[AT_CMD_IP_SEND].str);
349 2 sprintf(ptr, "%u\r", ipInfo.txLength); /*xhb_debug*/
350 2
351 2 gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
352 2
353 2 break;
354 2
355 2 case STATE_SEND_UDP_PACKET:
356 2 gprsInfo.state = STATE_WAIT_UDP_OK;
357 2 ipInfo.txCount ++;
358 2 gprs_packet_send(ipInfo.txBuffer, ipInfo.txLength );
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 7
359 2
360 2 break;
361 2
362 2 case STATE_IDLE:
363 2 if( gprsInfo.outCallNumber[0] )
364 2 gprsInfo.state = STATE_VOICE_CALLING;
365 2 break;
366 2
367 2
368 2 case STATE_VOICE_CALLING:
369 2 gprsInfo.state = STATE_VOICE_OUT;
370 2
371 2 clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
372 2 strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_DIAL].str);
373 2
374 2 ptr = gprsInfo.cmdBuffer + strlen(at_cmd[AT_CMD_DIAL].str);
375 2 sprintf(ptr, "%s;\r", gprsInfo.outCallNumber);
376 2 gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
377 2
378 2 gprsInfo.outCallNumber[0] = 0;
379 2
380 2 break;
381 2
382 2 case STATE_HOLD_OFF:
383 2 gprsInfo.state = STATE_IDLE;
384 2
385 2 clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
386 2 strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_HOLD_OFF].str);
387 2
388 2 gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
389 2 break;
390 2
391 2 case STATE_HOLD_ON:
392 2 gprsInfo.state = STATE_VOICE_IN;
393 2
394 2 clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
395 2 strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_HOLD_ON].str);
396 2
397 2 gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
398 2 break;
399 2
400 2
401 2 }
402 1
403 1 }
404
405 char string_contain(char *srcStr, char *destStr)
406 {
407 1 while(*srcStr)
408 1 {
409 2 if( *srcStr++ != *destStr++ )
410 2 return(-1);
411 2 }
412 1
413 1 return(0);
414 1
415 1 }
416
417 void explain_at_return(void)
418 {
419 1 char *ptrChar;
420 1 unsigned char returnId;
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 8
421 1 unsigned int i;
422 1
423 1 ptrChar = gprsRcvBuffer;
424 1
425 1 do
426 1 {
427 2 returnId = 0;
428 2
429 2 for(i=0; *at_ret[i].str||returnId; i++)
430 2 {
431 3 if( string_contain(at_ret[i].str, ptrChar) == 0)
432 3 {
433 4 returnId = at_ret[i].memo;
434 4
435 4 if( returnId == AT_RET_CRLF )
436 4 {
437 5 ptrChar += strlen(at_ret[i].str);
438 5 break;
439 5 }
440 4 else if( returnId == AT_RET_NJPT )
441 4 {
442 5 ipInfo.rxState = 1;
443 5 ipInfo.rxTimer = 0;
444 5 ipInfo.rxCount ++;
445 5 ipInfo.rxLength = gprsInfo.rxBytes;
446 5 memcpy(ipInfo.rxBuffer, ptrChar, gprsInfo.rxBytes);
447 5 returnId = 0;
448 5 //如果此时正在发送数据该怎么处理?//cj add at 2008 2 20
449 5 if (gprsInfo.state == STATE_WAIT_PROMPT)
450 5 {
451 6
452 6 gprsInfo.state = STATE_SEND_UDP_PACKET;
453 6 }
454 5 else if (gprsInfo.state == STATE_WAIT_UDP_OK)
455 5 {
456 6 gprsInfo.state = STATE_IDLE;
457 6 }
458 5
459 5 break;
460 5 }
461 4 else if (returnId == AT_RET_RING)//( (returnId == AT_RET_RING) && (gprsInfo.state>=STATE_I
-DLE) )//
462 4 {
463 5 gprsInfo.indication = 1;
464 5 strcpy(gprsInfo.inCallNumber, "000");
465 5 gprsInfo.state = STATE_VOICE_RING;
466 5 set_ringtimeout();
467 5 }
468 4
469 4 //cj add,主要是为了获取SIM卡号
470 4 if (returnId == AT_RET_CCID)
471 4 {
472 5 setSimCard(ptrChar, SIM_CARD_LEN);
473 5 }
474 4 //end of add
475 4 *ptrChar = 0;
476 4 switch( gprsInfo.state )
477 4 {
478 5 /**cj add for setting volume***/
479 5 case STATE_RECIEVE_SET_VOLUME:
480 5 gprsInfo.state = STATE_SEND_CCID;
481 5 break;
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 9
482 5 /****end of add******/
483 5 case STATE_RECEIVE_PREINIT:
484 5 if( (returnId==AT_RET_OK) || (returnId==AT_RET_AT) )
485 5 gprsInfo.state = STATE_SEND_INIT;
486 5 break;
487 5
488 5 case STATE_RECEIVE_INIT:
489 5 if( returnId == AT_RET_OK )
490 5 gprsInfo.state = STATE_SEND_SET_VOLUME;//cj mod for setting volume:STATE_SEND_
-CCID;
491 5 else
492 5 gprsInfo.state = STATE_SEND_INIT;
493 5
494 5 break;
495 5
496 5 case STATE_RECEIVE_CCID:
497 5 if( returnId == AT_RET_CCID )
498 5 gprsInfo.state = STATE_SEND_APN;
499 5 else
500 5 gprsInfo.state = STATE_SEND_CCID;
501 5
502 5 break;
503 5
504 5 case STATE_RECEIVE_APN:
505 5 if( returnId == AT_RET_OK )
506 5 gprsInfo.state = STATE_SEND_ACTIVE;
507 5
508 5 break;
509 5
510 5 case STATE_RECEIVE_ACTIVE:
511 5 if( returnId == AT_RET_OK )
512 5 gprsInfo.state = STATE_SEND_GET_IP;
513 5
514 5 break;
515 5
516 5 case STATE_RECEIVE_PACKET_INIT:
517 5 if( (returnId==AT_RET_OK) || (returnId==AT_RET_AT) )//cj mod at 2008 2 21 old if(
-returnId == AT_RET_OK )
518 5 gprsInfo.state = STATE_SEND_POWER;
519 5
520 5 break;
521 5
522 5 case STATE_RECEIVE_POWER:
523 5 if(( returnId == AT_RET_CSQ ) || (returnId == AT_RET_ATCSQ))
524 5 {
525 6 unsigned char csqCount;
526 6 char *csqPtr;
527 6
528 6 gprsInfo.state = STATE_SEND_UDP_LENGTH;
529 6
530 6 csqCount = 0;
531 6 if (returnId == AT_RET_CSQ)
532 6 csqPtr = ptrChar;
533 6 else
534 6 csqPtr = ptrChar+10;
535 6 while(*csqPtr!=0x0D)
536 6 {
537 7 csqCount++;
538 7 csqPtr++;
539 7 }
540 6 csqCount -= 5;
541 6 csqCount &= 0xF;
C51 COMPILER V7.09 GPRS 08/22/2008 14:26:33 PAGE 10
542 6 csqPtr = ptrChar + 5;
543 6 memcpy(gprsInfo.power, csqPtr, csqCount);
544 6 *(csqPtr+csqCount) = 0;
545 6
546 6 }
547 5
548 5 break;
549 5
550 5 case STATE_RECEIVE_CONNECT:
551 5 if( returnId == AT_RET_CONNECT_OK )
552 5 gprsInfo.state = STATE_IDLE;
553 5 else if( returnId == AT_RET_OK )
554 5 {
555 6 //gprsInfo.txTimer = 80;
556 6 ptrChar += strlen(at_ret[i].str);
557 6 }
558 5
559 5 break;
560 5
561 5 case STATE_WAIT_PROMPT:
562 5 if( returnId == AT_RET_PROMPT )
563 5 gprsInfo.state = STATE_SEND_UDP_PACKET;
564 5 else
565 5 gprs_reset(2);//gprsInfo.state = STATE_SEND_PACKET_INIT;
566 5 break;
567 5
568 5 case STATE_WAIT_UDP_OK:
569 5 if( returnId == AT_RET_SEND_OK )
570 5 gprsInfo.state = STATE_IDLE;
571 5
572 5 break;
573 5
574 5 case STATE_VOICE_OUT:
575 5 if( returnId==AT_RET_COLP )
576 5 gprsInfo.indication = 3;
577 5
578 5 case STATE_VOICE_IN:
579 5 if( (returnId==AT_RET_NO_CARRIER) || (returnId==AT_RET_BUSY) )
580 5 {
581 6 gprsInfo.state = STATE_IDLE;
582 6 gprsInfo.indication = 2;
583 6 }
584 5 break;
585 5
586 5 case STATE_VOICE_RING:
587 5 if(returnId==AT_RET_NO_CARRIER )
588 5 gprsInfo.state = STATE_IDLE;
589 5
590 5 break;
591 5 } /*end switch*/
592 4 } /*end if*/
593 3 } /*end for*/
594 2 }while( *ptrChar&&(returnId!=0) );
595 1
596 1
597 1
598 1 }
599
600 void gprs_receive_process(void)
601 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -