MC8332Mode.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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. if(round==0)
  21. {
  22. round=1;
  23. ModemSendAT("AT+QCPIN?\r\n");
  24. snprintf(cmd, sizeof(cmd), "+QCPIN:");
  25. }else{
  26. round=0;
  27. ModemSendAT("AT+CPIN?\r\n");
  28. snprintf(cmd, sizeof(cmd), "+CPIN:");
  29. }
  30. while(t--)
  31. {
  32. if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))))
  33. {
  34. if(0==ModemStrCmp((char *)pMsg->MsgData,cmd))
  35. {//+QCPIN: READY
  36. //+CPIN: READY
  37. if(pMsg->MsgData[7+round]=='R' && pMsg->MsgData[9+round]=='A'){
  38. return 1;
  39. }
  40. }
  41. }else
  42. os_dly_wait(1);
  43. }
  44. }
  45. return 0;
  46. }
  47. /********************************************************************
  48. *return 1 重写
  49. *return 0 不用重写
  50. *********************************************************************/
  51. int ModemSetMC8332APN(char *pApnName,char *pApnPass)
  52. {
  53. //先读APN
  54. //AT+ZPIDPWD?
  55. //+ZPIDPWD: card,card
  56. int t;
  57. char name[31];
  58. char pass[31];
  59. char buf[100];
  60. char *pTemp,finished;
  61. int i,len;
  62. SUT_MODEM_AT_MSG *pMsg=&sutAtmPro;
  63. finished=0;
  64. for(i=0;i<50;i++){
  65. ModemSendAT("AT+ZPIDPWD?\r\n");//+ZPIDPWD: card,card
  66. t=50;
  67. while(t--)
  68. {
  69. if((pMsg->MsgLen = MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))))
  70. {
  71. if(0==ModemStrCmp((char *)pMsg->MsgData,"+ZPIDPWD:"))
  72. {
  73. //get name
  74. pTemp=(char *)&(pMsg->MsgData[10]);
  75. memset(name,0,sizeof(name));
  76. for(i=0;i<31;i++)
  77. {
  78. if(*pTemp==',')
  79. {
  80. pTemp++;
  81. break;
  82. }else
  83. name[i]=*pTemp++;
  84. }
  85. //get password
  86. memset(pass, 0, sizeof(pass));
  87. for(i=0;i<31;i++){
  88. if(*pTemp<0x20)break;
  89. else
  90. pass[i]=*pTemp++;
  91. }
  92. finished=1;
  93. break;
  94. }
  95. }else
  96. os_dly_wait(1);
  97. }
  98. if(finished) break;
  99. }
  100. if(finished==0){
  101. SlwTrace(INF,"Read APN Timeout!",1);
  102. return 0;
  103. }
  104. snprintf(buf, sizeof(buf), "RAPN:%s,%s", name,pass);
  105. SlwTrace(INF,buf,1);
  106. //--比较,不同则重写
  107. if(0!=strcmp(pApnName,name) || 0!=strcmp(pApnPass,pass))
  108. {
  109. snprintf(buf, sizeof(buf),"AT+ZPIDPWD=%s,%s\r\n", pApnName, pApnPass);
  110. ModemSendAT(buf);
  111. snprintf(buf, sizeof(buf), "RstApn->%s,%s", pApnName, pApnPass);
  112. SlwTrace(INF, buf,1);
  113. return 1;
  114. }
  115. return 0;
  116. }
  117. /********************************************************************
  118. CDMA
  119. *********************************************************************/
  120. int MC8332ModemWaitRegistered(void)
  121. {
  122. int i,j,k;
  123. char buffer[2];
  124. SUT_MODEM_AT_MSG *pMsg=&sutAtmPro;
  125. //wait CREG OK
  126. for(i=0;i<10;i++){
  127. if(ModemSendAT2WaitAckMsg("AT+CREG?\r\n","+CREG:",&pMsg,100)){
  128. //if(MsgQueueAccept(pMsg->MsgData,sizeof(pMsg->MsgData))){
  129. if(pMsg->MsgData[9]=='1' || pMsg->MsgData[9]=='5'){
  130. //_free_box(AtMpool,pMsg);
  131. break;
  132. }else{
  133. //_free_box(AtMpool,pMsg);
  134. }
  135. }
  136. os_dly_wait(200);
  137. }
  138. if(i==10){
  139. SlwTrace(INF,"Network not registered!!",1);
  140. return 0;
  141. }
  142. SlwTrace(INF,"Network Registered!!",1);
  143. }
  144. void MC8332ModemSendTcpData(unsigned char socket,unsigned char *pData,unsigned short len)
  145. {
  146. M9507CSendTcpData(socket, pData, len);
  147. PrintBufferData(pData,len);
  148. if(socket == GPS_DATA_SOCKET)
  149. if(g_ucModemSentTcpCt<255)g_ucModemSentTcpCt++;
  150. if(socket == GPS_DATA_SOCKET)
  151. sutGpsInfo.isServerLogin = OPEN;
  152. }