MC8332Mode.c 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. /**********************************************************************************
  2. * File Name: MC8332Mode.c
  3. * Function Describe: Header file for MC8332Mode.c
  4. * Function Describe:device for modem
  5. * Relate Module:
  6. * Explain: the modem must be using ZTE MC8332
  7. * Date: 2016-3-11
  8. ***********************************************************************************/
  9. #include "includes.h"
  10. int ModemCheckUIM(void)
  11. {
  12. unsigned char t,round=0;
  13. int i,len,ver;
  14. char cmd[10];
  15. SUT_MODEM_AT_MSG *pMsg=&sutAtmPro;
  16. ver=0;
  17. for(i=0;i<30;i++)
  18. {
  19. t=50;
  20. round=0;
  21. ModemSendAT("AT+CPIN?\r\n");
  22. snprintf(cmd, sizeof(cmd), "+CPIN:");
  23. while(t--)
  24. {
  25. if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))))
  26. {
  27. if(0==ModemStrCmp((char *)pMsg->MsgData,cmd))
  28. {
  29. //+CPIN: READY
  30. if(pMsg->MsgData[7+round]=='R' && pMsg->MsgData[9+round]=='A'){
  31. return 1;
  32. }
  33. }
  34. }else
  35. os_dly_wait(1);
  36. }
  37. }
  38. SlwTrace(INF, "[2]NO Card !!! ",1);
  39. return 0;
  40. }
  41. /********************************************************************
  42. *return 1 重写
  43. *return 0 不用重写
  44. *********************************************************************/
  45. int ModemSetMC8332APN(char *pApnName,char *pApnPass)
  46. {
  47. //先读APN
  48. //AT+ZPIDPWD?
  49. //+ZPIDPWD: card,card
  50. int t;
  51. char name[31];
  52. char pass[31];
  53. char buf[100];
  54. char *pTemp,finished;
  55. int i,len;
  56. SUT_MODEM_AT_MSG *pMsg=&sutAtmPro;
  57. finished=0;
  58. for(i=0;i<50;i++){
  59. ModemSendAT("AT+ZPIDPWD?\r\n");//+ZPIDPWD: card,card
  60. t=50;
  61. while(t--)
  62. {
  63. if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))))
  64. {
  65. if(0==ModemStrCmp((char *)pMsg->MsgData,"+ZPIDPWD:"))
  66. {
  67. //get name
  68. pTemp=(char *)&(pMsg->MsgData[10]);
  69. memset(name,0,sizeof(name));
  70. for(i=0;i<31;i++)
  71. {
  72. if(*pTemp==',')
  73. {
  74. pTemp++;
  75. break;
  76. }else
  77. name[i]=*pTemp++;
  78. }
  79. //get password
  80. memset(pass, 0, sizeof(pass));
  81. for(i=0;i<31;i++){
  82. if(*pTemp<0x20)break;
  83. else
  84. pass[i]=*pTemp++;
  85. }
  86. finished=1;
  87. break;
  88. }
  89. }else
  90. os_dly_wait(1);
  91. }
  92. if(finished) break;
  93. }
  94. if(finished==0){
  95. SlwTrace(INF,"Read APN Timeout!",1);
  96. return 0;
  97. }
  98. snprintf(buf, sizeof(buf), "RAPN:%s,%s", name,pass);
  99. SlwTrace(INF,buf,1);
  100. //--比较,不同则重写
  101. if(0!=strcmp(pApnName,name) || 0!=strcmp(pApnPass,pass))
  102. {
  103. snprintf(buf, sizeof(buf),"AT+ZPIDPWD=%s,%s\r\n", pApnName, pApnPass);
  104. ModemSendAT(buf);
  105. snprintf(buf, sizeof(buf), "RstApn->%s,%s", pApnName, pApnPass);
  106. SlwTrace(INF, buf,1);
  107. return 1;
  108. }
  109. return 0;
  110. }
  111. /********************************************************************
  112. CDMA
  113. *********************************************************************/
  114. int MC8332ModemWaitRegistered(void)
  115. {
  116. int i,j,k;
  117. char buffer[2];
  118. SUT_MODEM_AT_MSG *pMsg=&sutAtmPro;
  119. //wait CREG OK
  120. for(i=0;i<10;i++){
  121. if(ModemSendAT2WaitAckMsg("AT+CREG?\r\n","+CREG:",&pMsg,100)){
  122. //if(MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))){
  123. if(pMsg->MsgData[9]=='1' || pMsg->MsgData[9]=='5'){
  124. //_free_box(AtMpool,pMsg);
  125. break;
  126. }else{
  127. //_free_box(AtMpool,pMsg);
  128. }
  129. }
  130. os_dly_wait(200);
  131. }
  132. if(i==10){
  133. SlwTrace(INF,"Network not registered!!",1);
  134. return 0;
  135. }
  136. SlwTrace(INF,"Network Registered!!",1);
  137. }
  138. void MC8332ModemSendTcpData(unsigned char socket,unsigned char *pData,unsigned short len)
  139. {
  140. M9507CSendTcpData(socket, pData, len);
  141. PrintBufferData(pData,len);
  142. if(socket == GPS_DATA_SOCKET)
  143. if(g_ucModemSentTcpCt<255)g_ucModemSentTcpCt++;
  144. if(socket == GPS_DATA_SOCKET)
  145. sutGpsInfo.isServerLogin = OPEN;
  146. }
  147. ///*******************************************************************
  148. //*ModemGetIMEI
  149. //返回:0--未获取 1--获取成功
  150. //********************************************************************/
  151. //int ModemGetMEID(void)
  152. //{
  153. // //////////////////////
  154. // int t,j;
  155. // int i,len;
  156. // SUT_MODEM_AT_MSG *pMsg=&sutAtmPro;
  157. // for(i=0;i<50;i++){
  158. // ModemSendAT("AT^MEID\r\n");//有MEID时返回:0xA100005B114142
  159. // //没MEID时返回:0x80459924 只有4个字节长度
  160. // t=50;
  161. // while(t--)
  162. // {
  163. // if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))))
  164. // {
  165. // if(0==ModemStrCmp((char *)pMsg->MsgData,"0x"))
  166. // {
  167. // for(j=0;j<strlen(&pMsg->MsgData[2]);j++)
  168. // {
  169. // if(pMsg->MsgData[2+j] == '\r')
  170. // {
  171. // if(j < sizeof(sutProductPara.MEID)) sutProductPara.MEID[j]=0;
  172. // j=1000;
  173. // }else
  174. // {
  175. // if(j < sizeof(sutProductPara.MEID))
  176. // sutProductPara.MEID[j]=pMsg->MsgData[2+j];
  177. // }
  178. // }
  179. // return 1;
  180. // }
  181. // }else
  182. // os_dly_wait(1);
  183. // }
  184. // }
  185. // return 0;
  186. //}