123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- /**********************************************************************************
- * 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;j<strlen(&pMsg->MsgData[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;
- //}
|