/********************************************************************************** * File Name: MC8332Mode.c * Function Describe: Header file for MC8332Mode.c * Function Describe:device for modem * Relate Module: * Explain: the modem must be using ZTE MC8332 * Date: 2016-3-11 ***********************************************************************************/ #include "includes.h" int ModemCheckUIM(void) { unsigned char t,round=0; int i,len,ver; char cmd[10]; SUT_MODEM_AT_MSG *pMsg=&sutAtmPro; ver=0; for(i=0;i<30;i++) { t=50; round=0; ModemSendAT("AT+CPIN?\r\n"); snprintf(cmd, sizeof(cmd), "+CPIN:"); while(t--) { if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData)))) { if(0==ModemStrCmp((char *)pMsg->MsgData,cmd)) { //+CPIN: READY if(pMsg->MsgData[7+round]=='R' && pMsg->MsgData[9+round]=='A'){ return 1; } } }else os_dly_wait(1); } } SlwTrace(INF, "[2]NO Card !!! ",1); return 0; } /******************************************************************** *return 1 重写 *return 0 不用重写 *********************************************************************/ int ModemSetMC8332APN(char *pApnName,char *pApnPass) { //先读APN //AT+ZPIDPWD? //+ZPIDPWD: card,card int t; char name[31]; char pass[31]; char buf[100]; char *pTemp,finished; int i,len; SUT_MODEM_AT_MSG *pMsg=&sutAtmPro; finished=0; for(i=0;i<50;i++){ ModemSendAT("AT+ZPIDPWD?\r\n");//+ZPIDPWD: card,card t=50; while(t--) { if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData)))) { if(0==ModemStrCmp((char *)pMsg->MsgData,"+ZPIDPWD:")) { //get name pTemp=(char *)&(pMsg->MsgData[10]); memset(name,0,sizeof(name)); for(i=0;i<31;i++) { if(*pTemp==',') { pTemp++; break; }else name[i]=*pTemp++; } //get password memset(pass, 0, sizeof(pass)); for(i=0;i<31;i++){ if(*pTemp<0x20)break; else pass[i]=*pTemp++; } finished=1; break; } }else os_dly_wait(1); } if(finished) break; } if(finished==0){ SlwTrace(INF,"Read APN Timeout!",1); return 0; } snprintf(buf, sizeof(buf), "RAPN:%s,%s", name,pass); SlwTrace(INF,buf,1); //--比较,不同则重写 if(0!=strcmp(pApnName,name) || 0!=strcmp(pApnPass,pass)) { snprintf(buf, sizeof(buf),"AT+ZPIDPWD=%s,%s\r\n", pApnName, pApnPass); ModemSendAT(buf); snprintf(buf, sizeof(buf), "RstApn->%s,%s", pApnName, pApnPass); SlwTrace(INF, buf,1); return 1; } return 0; } /******************************************************************** CDMA *********************************************************************/ int MC8332ModemWaitRegistered(void) { int i,j,k; char buffer[2]; SUT_MODEM_AT_MSG *pMsg=&sutAtmPro; //wait CREG OK for(i=0;i<10;i++){ if(ModemSendAT2WaitAckMsg("AT+CREG?\r\n","+CREG:",&pMsg,100)){ //if(MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))){ if(pMsg->MsgData[9]=='1' || pMsg->MsgData[9]=='5'){ //_free_box(AtMpool,pMsg); break; }else{ //_free_box(AtMpool,pMsg); } } os_dly_wait(200); } if(i==10){ SlwTrace(INF,"Network not registered!!",1); return 0; } SlwTrace(INF,"Network Registered!!",1); } void MC8332ModemSendTcpData(unsigned char socket,unsigned char *pData,unsigned short len) { M9507CSendTcpData(socket, pData, len); PrintBufferData(pData,len); if(socket == GPS_DATA_SOCKET) if(g_ucModemSentTcpCt<255)g_ucModemSentTcpCt++; if(socket == GPS_DATA_SOCKET) sutGpsInfo.isServerLogin = OPEN; } ///******************************************************************* //*ModemGetIMEI //返回:0--未获取 1--获取成功 //********************************************************************/ //int ModemGetMEID(void) //{ // ////////////////////// // int t,j; // int i,len; // SUT_MODEM_AT_MSG *pMsg=&sutAtmPro; // for(i=0;i<50;i++){ // ModemSendAT("AT^MEID\r\n");//有MEID时返回:0xA100005B114142 // //没MEID时返回:0x80459924 只有4个字节长度 // t=50; // while(t--) // { // if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData)))) // { // if(0==ModemStrCmp((char *)pMsg->MsgData,"0x")) // { // for(j=0;jMsgData[2]);j++) // { // if(pMsg->MsgData[2+j] == '\r') // { // if(j < sizeof(sutProductPara.MEID)) sutProductPara.MEID[j]=0; // j=1000; // }else // { // if(j < sizeof(sutProductPara.MEID)) // sutProductPara.MEID[j]=pMsg->MsgData[2+j]; // } // } // return 1; // } // }else // os_dly_wait(1); // } // } // return 0; //}