Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of C027_Support by
Diff: MDM.cpp
- Revision:
- 72:d1e943ad6558
- Parent:
- 71:041de9a6d93c
- Child:
- 73:2b32e0a21df2
--- a/MDM.cpp Thu May 15 06:16:10 2014 +0000 +++ b/MDM.cpp Thu May 15 07:06:07 2014 +0000 @@ -467,15 +467,12 @@ return false; } else { // check GPRS attach status - int state = 0; sendFormated("AT+CGATT?\r\n"); - if (RESP_OK != waitFinalResp(_cbCGATT, &state, 3*60*1000)) - return false; - if (state != 1) + if (RESP_OK != waitFinalResp(_cbCGATT, &_net.gprs)) return false; // check operator selection sendFormated("AT+COPS?\r\n"); - if (RESP_OK != waitFinalResp(_cbCOPS, &_net, 3*60*1000)) + if (RESP_OK != waitFinalResp(_cbCOPS, &_net)) return false; // Returns the MSISDNs related to this subscriber sendFormated("AT+CNUM\r\n"); @@ -492,11 +489,14 @@ return true; } -int MDMParser::_cbCGATT(int type, const char* buf, int len, int* state) +int MDMParser::_cbCGATT(int type, const char* buf, int len, Gprs* gprs) { - if ((type == TYPE_PLUS) && state){ - if (sscanf(buf, "\r\n+CGATT: %d\r\n", state) == 1) - /*TRACE("Got CGATT: %d\r\n", state)*/; + if ((type == TYPE_PLUS) && gprs){ + int i; + if (sscanf(buf, "\r\n+CGATT: %d\r\n", &i) == 1) { + if (i == 0) *gprs = GPRS_DETACHED; + else if (i == 1) *gprs = GPRS_ATTACHED; + } } return WAIT; } @@ -564,8 +564,8 @@ #endif } else { // check gprs attach status - sendFormated("AT+CGATT?\r\n"); - if (RESP_OK != waitFinalResp()) + sendFormated("AT+CGATT=1\r\n"); + if (RESP_OK != waitFinalResp(NULL,NULL,3*60*1000)) return NOIP; // Check the profile @@ -1069,6 +1069,9 @@ const char* txtReg[] = { "Unknown", "Denied", "None", "Home", "Roaming" }; if (status->reg < sizeof(txtReg)/sizeof(*txtReg) && (status->reg != MDMParser::REG_UNKNOWN)) printf(" Registration: %s\r\n", txtReg[status->reg]); + const char* txtGprs[] = { "Unknown", "Detached", "Attached" }; + if (status->gprs < sizeof(txtGprs)/sizeof(*txtGprs) && (status->gprs != MDMParser::GPRS_UNKNOWN)) + printf(" Gprs: %s\r\n", txtGprs[status->gprs]); const char* txtAct[] = { "Unknown", "GSM", "Edge", "3G", "CDMA" }; if (status->act < sizeof(txtAct)/sizeof(*txtAct) && (status->act != MDMParser::ACT_UNKNOWN)) printf(" Access Technology: %s\r\n", txtAct[status->act]);