| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712 |
- /********************************************************************************
- * File Name: GpsTask.c
- * Function Describe:The GpsTask for the system
- * Relate Module:
- * Explain: Hardware version is HS110C
- * Writer: ShiLiangWen
- * Date: 2015.4.12
- *******************************************************************************/
- #define THIS_FILE_ID 16
- //--------------------------------------------------------------------------------
- #include "includes.h"
- SUT_GPS_STATUS sutGpsStatus;
- int g_iCSQ=-1;
- unsigned int SendFlag=0;
- unsigned char sucGpsSentTcpCt=0;//从启动发送到收到计数器
- unsigned int heartTickCt=0;
- //======================================
- static STATUE GpsServerStatus=CLOSE;
- /*******************************************************************************
- 校验
- *******************************************************************************/
- unsigned char GetCheck(unsigned char *data, unsigned short datalen)
- {
- unsigned char ck=0;
- int i;
- for(i=0;i<datalen;i++){
- ck^=data[i];
- }
- return ck;
- }
- /*******************************************************************
- *GetCSQ
- ********************************************************************/
- int GetCSQ(char* msg)
- {//+CSQ: 29,56
- return atoi(&msg[6]);
- }
- int GetCCSQ(char* msg)
- {//+CCSQ: 29,56
- return atoi(&msg[7]);
- }
- /*******************************************************************
- *GetPPPStatus
- ********************************************************************/
- STATUE GetPPPStatus(char *msg)
- {//+POC_PPP:0
- //+POC_PPP:1
- if(msg[9]=='1')
- {
- sutPocStatus.PPPed=1;
- if(++sutPocStatus.PPPedCt>6) sutPocStatus.PPPedCt=8;
- return OPEN;
- }
- else{
- if(++sutPocStatus.PPPedCt>6) sutPocStatus.PPPedCt=8;
- return CLOSE;
- }
- }
- //检测已打开的socket列表,返回要查询的socket状态
- //如果newCheck为1,则根据msg重新判断状态
- //如果newCheck为0,则根据静态变量返回状态
- //checkSocket, 需要检测的socket(1-10)
- STATUE GetIPNewStatus(char *msg, unsigned char newCheck, unsigned char checkSocket)
- {//+MIPOPEN:1,2,3,4,5,6,7,8,9,10
- static unsigned char socketListStatus[10];//只支持1-10
- unsigned char i;
- unsigned char socket;
- char *ptr;
- unsigned char len,size;
- size=sizeof(socketListStatus);
- ptr = msg+9;
- len = strlen(ptr);
- if(newCheck)
- {
- memset(socketListStatus, 1, size);//1默认为在使用
- socket = atoi(ptr);//第1个socket值,并不一定是socket1,要检测一下如果都没打开,这指令回来列表是什么
- if(socket <= sizeof(socketListStatus))
- socketListStatus[socket-1]=0;//有值,则为空闲
- for(i=0;i<len;i++)
- {
- if(ptr[i] == ',')
- {//找到一个打开的socket
- i++;
- socket = atoi(&ptr[i]);
- if(socket <= size)
- socketListStatus[socket-1]=0;
- }
- }
- }
- //判断要检测的socket状态
- socket = checkSocket-1;
- if(socketListStatus[socket] == 1) return OPEN;
- else return CLOSE;
- }
- /*******************************************************************
- *GetIPStatusu
- ********************************************************************/
- STATUE GetIPNewStatus2(char *msg, unsigned char socketNum)
- {//+TCPSTATUS:x:s [socket: status]
- //+TCPSTATUS:1:1
- STATUE sta=CLOSE;
- unsigned char thisSocket;
-
- thisSocket = atoi(&msg[11]);
- if(msg[13] == '1') sta = OPEN;
-
- if(thisSocket == socketNum) return sta;
- else return CLOSE;
- }
- /*******************************************************************
- *GetCNUM
- 返回:0--未获取 1--获取成功
- ********************************************************************/
- int GetCNUM(void)
- {
- /*
- int timerout=300;
- int i,len;
- char *msg;
- INT8U err;
- int ct=100;
- while(timerout){
- timerout--;
- if(++ct>100){
- ct=0;
- ModemSendAT("AT+CNUM?\r\n");
- OSQFlush(ModemQ);
- }
-
- msg = (char *)OSQPend(ModemQ, 1, &err);
- if(err==OS_ERR_NONE){
- if(ModemStrCmp(msg,"+CNUM:")){ //+CNUM:1064910139657
- len=strlen(&msg[6]);
- if(15==len){
- for(i=0;i<13;i++)sutProductPara.CNUM[i]=msg[6+i];
- sutNetPara.CNUM[13]=0;
- return 1;
- }
- }
- }
- }*/
- return 0;
- }
- /*******************************************************************
- *GetIPStatus
- 返回:0--未获取 1--获取成功
- ********************************************************************/
- int GetUIMID(void)
- {
- /*
- int timerout=300;
- int i,len;
- char *msg;
- INT8U err;
- int ct=100;
- while(timerout){
- timerout--;
- if(++ct>100){
- ct=0;
- ModemSendAT("AT+CIMI\r\n");
- OSQFlush(ModemQ);
- }
- msg = (char *)OSQPend(ModemQ, 1, &err);
- if(err==OS_ERR_NONE){
- if(ModemStrCmp(msg,"+CIMI:")){ //+CIMI: 460037590079119
- len=strlen(&msg[7]);
- if(17==len){
- for(i=0;i<15;i++)sutNetPara.UIMID[i]=msg[7+i];
- sutNetPara.UIMID[15]=0;
- return 1;
- }
- }
- }
- }
- */
- return 0;
- }
- void GetDNSIP(char *msg)
- {
- // if(msg[12]!='F' && msg[13]!='a' && msg[14]!='i'){//+ZDNSGETIP: failed
- // HigosSendFlag =1;
- // HgsConnetFlag=3;
- // }else{
- // sutGpsStatus.PPPStatus=CLOSE;
- // ModemSendAT("AT+ZPPPCLOSE\n\r");
- // }
- }
- void MC8332_GPS_RecvHandle(unsigned char *pMsg,unsigned short tempLen)
- {
- char buf[20];
- char buf2[50];
- char result[10];
- unsigned short cmd,ackCmd,smsLen;
- unsigned char Result,i,buBiaoResponsed;
- short targetIndex;
- ////////////////////////////////////////////
- // char buftest[100];
- // char buf22[3];
- // for(i=0;i<25;i++)
- // {
- // sprintf(buf22, "%02x", pMsg[i]);
- // strcat(buftest, buf22);
- // }
- // strcat(buftest, "\r\n");
- // SlwTrace(INF, buftest);
- ////////////////////////////////////////////
- //////////处理布标类型指令
- cmd = (pMsg[1]<<8) | (pMsg[2]&0xff);
- buBiaoResponsed=1;
- sprintf(buf2, "\r\ncmd=%04x", cmd);
- SlwTrace(INF, buf2,1);
- switch(cmd)
- {//布标命令返回
- case TS_TERMINAL_REGISTRATION_REPLY://终端注册应答
- //7E 8100 000A 000166000016 0250 0100 00 20161118165030 E07E 成功
- //7E 8100 0003 000166000016 0251 0100 01 A07E 已注册
- Result = pMsg[15];
- sprintf(buf2, "result=%02x", Result);
- SlwTrace(INF, buf2,1);
- switch(Result)
- {
- case 0://00注册成功
- for(i =0; i < 7; i++)
- sutNewSegmentPara.AutH[i]=pMsg[16+i];
- SaveNewSegmentToFlash();
- sprintf(result, "Ok");
- break;
- case 1://01 车辆已注册
- sprintf(result, "Car Exist");break;
- case 2://02 无此车辆
- sprintf(result, "No car");break;
- case 3://03 终端已经被注册
- sprintf(result, "Device Exist");break;
- case 4://04 数据库无此终端
- sprintf(result, "No Record");break;
- default://无效值
- //统称失败
- sprintf(result, "Faile");
- break;
- }
- sprintf(buf2, "[Register]%d %s", Result,result);
- SlwTrace(INF, buf2,1);
- //注册应答后直接进行一次鉴权
- Authentication();
- break;
- case TS_TEXT_INFORMATION_ISSUED://文本下发
- //7E83000005000166000009000001 31323334ED7E
- //7e83000005000000000000000001 36323131837e
-
- smsLen = pMsg[3];
- smsLen <<= 8;
- smsLen &= 0xff00;
- smsLen |= pMsg[4];
- smsLen -= 1;//去掉后面较验码
- if(SMS_SIGNAL_LEN <= smsLen)
- smsLen = SMS_SIGNAL_LEN;
- memset(sutMess.GBKMess1, 0, sizeof(sutMess.GBKMess1));
- memcpy(sutMess.GBKMess1, pMsg+14, smsLen);
- sutMess.len = smsLen;
- if(sutMess.len > 0)
- SetGotNewMessage();
- break;
- case TS_PLATFORM_UNIVERSAL_ANSWER://通用平台应答
- //7E8001000500016600001602400000010201B57E
- //buf[0]=0x7e;
- //if(-1 != (targetIndex=FindTargetIndex((char *)pMsg, '\r', buf, 1,2)))
- targetIndex = tempLen;//这个长度是去掉了两个7E的长度
- {
- ackCmd=(pMsg[targetIndex-3]<<8) | (pMsg[targetIndex-2]&0xff);
- Result = pMsg[targetIndex-1];
- sprintf(buf2, "Len=%d,ackCmd=%04x,result=%02x", tempLen,ackCmd,Result);
- SlwTrace(INF, buf2,1);
- switch(ackCmd)
- {
- case TS_TERMINAL_AUTHENTICATION://终端鉴权应答
- if(Result == 0)
- {//鉴权成功
- sutGpsInfo.isGpsAuthOk=1;
- sprintf(buf2, "[ATH]Ok");
- sutGpsInfo.GPS_SecondCnt=60;//鉴权通过后马上可以发位置或心跳
- }else
- {
- sutGpsInfo.isGpsAuthOk=0;
- sprintf(buf2, "[ATH]Faile");
- }
- SlwTrace(INF, buf2,1);
- break;
- case TS_LOCATION_INFORMATION_REPORTING://位置包应答
- SlwTrace(INF, "Location ACK",1);
- break;
- case TS_TERMINAL_HEARTBEAT://心跳应答
- SlwTrace(INF, "HearTick ACK",1);
- break;
- }
- }
- break;
-
-
- case TS_TERMINAL_GPSTIME: //GPS 下发上传时间
- sutNewSegmentPara.SendGpsTime=pMsg[13];
- printf("sutNewSegmentPara.SendGpsTime=============%d\r\n",sutNewSegmentPara.SendGpsTime);
- SaveNewSegmentToFlash();
- break;
- default:
- buBiaoResponsed=0;
- break;
- }
- if(buBiaoResponsed)
- g_ucModemSentTcpCt=0;
- /////////////处理其它类型指令
- }
- void AtHandle(char *pMsg)
- {
- int csq;
- short targetIndex;
- unsigned char tempSocket,i,temp;
- unsigned short tempLen;
- char buf[80]="\r\n";
- char bufTemp[3];
- if(0==ModemStrCmp(pMsg,"+CCSQ:"))
- {
- UpdateCsqValue(GetCCSQ(pMsg));
- }else if(0==ModemStrCmp(pMsg,"+CSQ:"))
- {
- UpdateCsqValue(GetCSQ(pMsg));
- }else if(0==ModemStrCmp(pMsg,"+POC_PPP:")){
- sutGpsStatus.PPPStatus=GetPPPStatus(pMsg);
- }else if(0==ModemStrCmp(pMsg,"+TCPSTATUS:"))
- {//查询指令返回状态
- if(tcpControl ==2)//控制配置服务器操作
- {
- #if(USE_CONFIG_FUN==1)
- if(OPEN == GetIPNewStatus2(pMsg,CONFIG_SER_SOCKET)) sutConfig.g_ubConfigTcpStatus = 1;
- else
- {
- if(sutConfig.g_ubConfigTcpStatus) sutConfig.g_ucTcpRetryNum=CONFIG_TCP_RETRY_CNT;
- sutConfig.g_ubConfigTcpStatus = 0;
- }
- #endif
- }else
- {
- GetIPNewStatus2(pMsg,GPS_DATA_SOCKET);
- if(tcpControl == 1)
- {
- sutGpsStatus.IPStatus=GetIPNewStatus2(pMsg,GPS_DATA_SOCKET);
- if(sutGpsStatus.IPStatus == CLOSE) sutGpsInfo.isGpsAuthOk=0;//鉴权清掉,再次连接后要重新鉴权
- }else if(tcpControl == 0)
- {//HGS
- if(OPEN == sutGpsStatus.IPStatus)
- HgsConnetStatus=1;
- }
- }
- }else if(0==ModemStrCmp(pMsg,"+TCPRECV:")){//+TCPRECV:0,2,31
- if(-1 != (targetIndex=FindTargetIndex(pMsg, '\r', ":", 1,1)))
- {
- tempSocket = atoi(&pMsg[targetIndex]);//找到socket
- if(-1 != (targetIndex=FindTargetIndex(pMsg, '\r', ",",1,1)))
- {
- tempLen = atoi(&pMsg[targetIndex]);
- if(-1 != (targetIndex=FindTargetIndex(pMsg, '\r', ",",1,2)))
- {
- // if(changeDataFormat(&pMsg[targetIndex],tempLen))
- // {
- // SlwTrace(INF, "DataFormat Err",1);
- // return;
- // }
- if(tempSocket == GPS_DATA_SOCKET)
- {
- if(tcpControl == 0)
- {
- Hgs_Data_RecvHandle(&pMsg[targetIndex],tempLen);
- }else if(tcpControl == 1)
- {
- //走布标判断
- if(pMsg[targetIndex] == 0x7e && pMsg[targetIndex+tempLen-1] == 0x7e)
- {//是布标协议,进行转义
- tempLen=reduce((unsigned char *)&pMsg[targetIndex+1], tempLen-1);
- MC8332_GPS_RecvHandle((unsigned char *)&pMsg[targetIndex],tempLen);
- }else
- {
- SlwTrace(INF, "Unknown Protocol",1);
- }
- }
- /////////////////////////////////////////
- #if 0
- tempLen += 2;
- if(tempLen > 30) tempLen=30;
- for(i=0;i<tempLen;i++)
- {
- sprintf(bufTemp, "%02x", pMsg[targetIndex+i]);
- strcat(buf, bufTemp);
- }
- //strcat(buf, "\r\n");
- SlwTrace(INF, buf,1);
- #endif
- /////////////////////////////////////////
- }else if(tempSocket == CONFIG_SER_SOCKET)
- {
- Hgs_Data_RecvHandle(&pMsg[targetIndex],tempLen);
- }
- else
- {
- //if(tempSocket == HGS_SERVER_SOCKET)
- //Hgs_Data_RecvHandle(&pMsg[targetIndex]);
- }
- }
- }
- }
- }else if(0==ModemStrCmp(pMsg,"+TCPOPEN:"))//连接指令返回状态
- { //+TCPOPEN:OK
- //+TCPOPEN:Already connected
- if((pMsg[9] == 'O' && pMsg[10] == 'K') ||
- (pMsg[9] == 'A' && pMsg[14] == 'd' && pMsg[23] =='t'))
- {
- if(tcpControl == 0)
- {
- HgsConnetStatus=1;
- HigosSendFlag=0;
- }else if(tcpControl== 1)
- {
- sutGpsStatus.IPStatus = OPEN;
- }else if(tcpControl == 2)
- {
- #if(USE_CONFIG_FUN==1)
- sutConfig.g_ubConfigTcpStatus=1;
- #endif
- }
- }
- }else if(0==ModemStrCmp(pMsg, "+TCPCLOSE:OK"))
- {
- }else if(0==ModemStrCmp(pMsg, "+TCPCLOSE:"))
- {//主动关掉或者服务器关掉都是这样
- if(tcpControl== 0)
- {
- if(pMsg[10] == GPS_DATA_SOCKET+0x30)
- {
- if(HgsConnetStatus != 2)
- HgsConnetStatus=0;
- }
- }else if(tcpControl == 2)
- {
- #if(USE_CONFIG_FUN==1)
- if(sutConfig.g_ubConfigTcpStatus) sutConfig.g_ucTcpRetryNum=CONFIG_TCP_RETRY_CNT;
- sutConfig.g_ubConfigTcpStatus = 0;
- #endif
- }
- }else if(0==ModemStrCmp(pMsg, "+POC:START"))
- {
- sutPocStatus.modemRstFlag=1;
- }
- }
- /***********************************************************
- *控制发送位置信息
- 此函数每秒执行一次
- ************************************************************/
- void GpsCtrlSendPos(void)
- {
- static unsigned char authTryTime=0;//发起鉴权次数,也代表连续失败多少次
- static unsigned short SendTime=0;
- uint32_t AvgSpeed;
- int i;
- static unsigned short susGpsTimingSendCt=0;//控制按时间发送
- //static unsigned short sucGpsSentTcpCt=0;//从启动发送到收到计数器
- char buf[30];
- //连续发3次未见成功,则断开链接并重启链接
- if(g_ucModemSentTcpCt>3){
- sutGpsInfo.isServerLogin=0;
- g_ucModemSentTcpCt=0;
- sprintf(buf, "AT+TCPCLOSE=%d\r\n", GPS_DATA_SOCKET);
- ModemSendAT(buf);
- sutGpsStatus.IPStatus=CLOSE;
- g_ucModemSentTcpCt=0;
- sutGpsInfo.isServerLogin=0;
- }
- //
- if(g_iCSQ==99 || sutGpsStatus.IPStatus!=OPEN || 0==sutGpsInfo.isServerLogin)
- {
- susGpsTimingSendCt=0;
- return;
- }
-
- //计算平均速度
- sutGpsInfo.speedbuf[4]=sutGpsInfo.speedbuf[3];
- sutGpsInfo.speedbuf[3]=sutGpsInfo.speedbuf[2];
- sutGpsInfo.speedbuf[2]=sutGpsInfo.speedbuf[1];
- sutGpsInfo.speedbuf[1]=sutGpsInfo.speedbuf[0];
- sutGpsInfo.speedbuf[0]=sutGpsInfo.speed;
- for(i=0;i<5;i++){
- AvgSpeed=sutGpsInfo.speedbuf[i];
- }
- AvgSpeed/=5;
- sutGpsInfo.AvgSpeed=AvgSpeed;
- ///////////////////////////////////////////////
- SendTime=15;
- //----TCP发送后服务器未在时间段内回复,马上再发送
- if(sutGpsInfo.isGpsAuthOk==0)
- {
- //鉴权失败
- if(++sucGpsSentTcpCt>15)//定时鉴权
- {
- sucGpsSentTcpCt=0;
- susGpsTimingSendCt=0;
- //如果鉴权3次失败后则做一次注册请求
- if(sutPocStatus.Logined)
- {//登陆了才去鉴权
- if(++authTryTime > 3)
- {
- authTryTime=0;
- Registration();
- }else
- Authentication();
- }
- }
- return;//鉴权未成功的返回
- }else{
- if(g_ucModemSentTcpCt==0)
- {
- sucGpsSentTcpCt=0;
- g_ucModemSentTcpCt=0;
- }
- }
- sutGpsInfo.GPS_SecondCnt++;
- if(sutGpsInfo.isGpsValid)
- {//可以发位置包,检测时间是否到了
- if(sutGpsInfo.GPS_SecondCnt>=sutNewSegmentPara.SendGpsTime){
- sutGpsInfo.GPS_SecondCnt=0;
- SlwTrace(INF,"TSGpsTimingSendPos 15",1);
- TSGpsTimingSendPos();
- }
- }else
- {//没定位,不发位置包,则发心跳
- if(sutGpsInfo.GPS_SecondCnt >= 60)
- {
- sutGpsInfo.GPS_SecondCnt=0;
- SlwTrace(INF, "HeartTick",1);
- TS_SendHeartTick();
- }
- }
- }
- static char csqSendFlag=1;
- void UpdateCsqValue(int csq)
- {
- static char updateCSQ_ct=0;//兼容移动联通版本无法查CCSQ。
- static int tCsq[2];
- if(csq == 99 ||
- (csq >=0 && csq <=31))
- {
- tCsq[csqSendFlag]=csq;
- }
- updateCSQ_ct++;
- if(csqSendFlag==1 || updateCSQ_ct==2)
- {//收到了两组CSQ命令值,对比,如果有有效值
- if(tCsq[0] >=0 && tCsq[0] <=31) g_iCSQ=tCsq[0];//优先使用第一组
- else if(tCsq[1] >=0 && tCsq[1] <=31) g_iCSQ=tCsq[1];
- else g_iCSQ=99;
- tCsq[0]=99;
- tCsq[1]=99;
- updateCSQ_ct=0;
- }
- }
- /************************************************
- 每10ms处理一次
- **************************************************/
- void GpsTaskTick(unsigned char reset)
- {
- static unsigned int sucSecCt=0;
- static unsigned char sucSteep=0;
- static unsigned char sucSynSentCt=0;
- static unsigned char dly=0;
- char buf[50];
- if(reset){
- sucSecCt=0;
- sucSteep=0;
- return;
- }
- if(g_usRx3Len>0)
- {
- process_nema((char *)RxBuffer3);
- g_usRx3Len=0;
- }
- //===========以下控制每秒执行一次============
- if(os_time_get() < sucSecCt) return;
- sucSecCt=os_time_get()+100;
- GpsCtrlSendPos();
- //TCP发送防护,如果IPSTATUS一直等于SYN_SENT持续达10秒,则关闭TCP链路
- if(sutGpsStatus.IPStatus==SYN_SENT)
- {
- if(++sucSynSentCt>10)
- {
- sucSynSentCt=0;
- sutGpsInfo.isServerLogin=0;
- g_ucModemSentTcpCt=0;
- sprintf(buf, "AT+TCPCLOSE=%d\r\n",GPS_DATA_SOCKET);
- ModemSendAT(buf);
- sutGpsStatus.IPStatus=CLOSE;
- g_ucModemSentTcpCt=0;
- sutGpsInfo.isServerLogin=0;
- }
- }else sucSynSentCt=0;
- //---以下控制---
- if(++sucSteep>4)sucSteep=0;
- //----
- if(sucSteep==0)
- {
- if(csqSendFlag==1)
- {//模块在电信卡的cdma和evdo下使用CCSQ
- //其它所有情况使用CSQ
- csqSendFlag=0;
- ModemSendAT("AT+CSQ\r\n");
- }else{
- csqSendFlag=1;
- ModemSendAT("AT+CCSQ\r\n");
- }
- sprintf(buf, "[ATH]%d,[GPS]%d,[BAT]%0.2f,[CSQ]%d",
- sutGpsInfo.isGpsAuthOk,
- sutGpsInfo.isGpsValid,
- (double)g_iVbat/100,
- g_iCSQ);
- SlwTrace(INF,buf,1);
- }
- else if(1==sucSteep){
- ModemSendAT("AT+POC_PPP\r\n");
- }else if(2==sucSteep){
- if(99==g_iCSQ)return;
- if(sutGpsStatus.PPPStatus==OPEN){
- sprintf(buf, "AT+TCPSTATUS=%d\r\n", GPS_DATA_SOCKET);
- ModemSendAT(buf);
- }else{
- SlwTrace(INF, "Wait POC_PPP",1);
- }
- }else if(3==sucSteep)
- {
- if(99==g_iCSQ) return;
- if(sutGpsInfo.isGpsWork==0)
- {
- if(sutGpsStatus.CheckCnt < 50)
- {
- if(++sutGpsStatus.CheckCnt >= 2)
- {
- sutGpsStatus.CheckCnt = NO_GPS_CHECK_TIMEOUT;//设置为此值时认为是没有GPS机型
- }
- }
- SlwTrace(INF,"GPS modem not work!",1);
- }
-
- if(sutGpsStatus.IPStatus!=OPEN && sutGpsStatus.PPPStatus==OPEN)
- {
- if(tcpControl == 1)
- {//当控制为GPS时才去连接
- sutGpsInfo.isServerLogin=0;
- sprintf(buf,"AT+TCPOPEN=%d,%d.%d.%d.%d:%d\r\n",GPS_DATA_SOCKET,sutNewSegmentPara.GIP[0],sutNewSegmentPara.GIP[1],sutNewSegmentPara.GIP[2],sutNewSegmentPara.GIP[3],
- sutNewSegmentPara.GpsPort);
- SlwTrace(INF,buf,0);
- ModemSendAT(buf);
- }
- }
- }else if(4==sucSteep)
- {
- if(99==g_iCSQ)return;
- if(sutGpsStatus.IPStatus==OPEN && 0==sutGpsInfo.isServerLogin)
- {
- sutGpsInfo.isServerLogin = OPEN;
- }
- }
- }
- void VolumeSet(void)
- {
- char i,t;
- int Volume;
- SUT_MODEM_AT_MSG *pMsg=&sutAtmPro;
- //先配置一次,再查,因为默认就查有可能是没有返回的
- ModemSendAT("at+syscmd=start_pcm volume 6 7\r\n"); //7 5
- for(i=0;i<10;i++)
- {
- t=100;
- REGO:
- ModemSendAT("at+syscmd=start_pcm volume\r\n");
- while(t--)
- {
- if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))))
- {
- if(0==ModemStrCmp((char *)pMsg->MsgData,"6 7"))
- {
- SlwTrace(INF, "[07]Set Volume ok",1);
- return;
- }else{
- if(t==0) ModemSendAT("at+syscmd=start_pcm volume 6 7\r\n");
- }
- }else
- os_dly_wait(1);
- }
- }
- SlwTrace(INF, "[07]Set Volume failed",1);
- }
|