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:
- 52:8071747a7cb3
- Parent:
- 50:d76aece8038f
- Child:
- 53:cb0d94b9de3a
- Child:
- 54:7ba8e4c218e2
--- a/MDM.cpp Mon May 12 07:09:31 2014 +0000 +++ b/MDM.cpp Mon May 12 07:39:29 2014 +0000 @@ -82,7 +82,7 @@ int type = TYPE(ret); const char* s = (type == TYPE_UNKNOWN)? YEL("UNK") : (type == TYPE_TEXT) ? MAG("TXT") : - (type == TYPE_OK ) ? GRE("OK ") : + (type == TYPE_RESP_OK ) ? GRE("RESP_OK ") : (type == TYPE_ERROR) ? RED("ERR") : (type == TYPE_PLUS) ? CYA(" + ") : (type == TYPE_PROMPT) ? BLU(" > ") : @@ -95,9 +95,9 @@ if ((ret != WAIT) && (ret != NOT_FOUND)) { int type = TYPE(ret); - if (type == TYPE_OK) return OK; - if (type == TYPE_ERROR) return ERROR; - if (type == TYPE_PROMPT) return PROMPT; + if (type == TYPE_OK) return RESP_OK; + if (type == TYPE_ERROR) return RESP_ERROR; + if (type == TYPE_PROMPT) return RESP_PROMPT; // handle unsolicited commands here if (type == TYPE_PLUS) { const char* cmd = buf+3; @@ -207,27 +207,27 @@ while (i--) { // check interface and disable local echo sendFormated("AT\r\n"); - if(OK == waitFinalResp()) + if(RESP_OK == waitFinalResp()) break; } if (i < 0) return false; // echo off sendFormated("AT E0\r\n"); - if(OK != waitFinalResp()) + if(RESP_OK != waitFinalResp()) return false; // enable verbose error messages sendFormated("AT+CMEE=2\r\n"); - if(OK != waitFinalResp()) + if(RESP_OK != waitFinalResp()) return false; // set baud rate sendFormated("AT+IPR=115200\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; wait_ms(40); // identify the module sendFormated("ATI\r\n"); - if (OK != waitFinalResp(_cbATI, &_dev.dev)) + if (RESP_OK != waitFinalResp(_cbATI, &_dev.dev)) return false; if (_dev.dev == DEV_UNKNOWN) return false; @@ -235,26 +235,26 @@ if (_dev.dev == DEV_LISA_C200) { // get the manufacturer sendFormated("AT+GMI\r\n"); - if (OK != waitFinalResp(_cbString, _dev.manu)) + if (RESP_OK != waitFinalResp(_cbString, _dev.manu)) return false; // get the model identification sendFormated("AT+GMM\r\n"); - if (OK != waitFinalResp(_cbString, _dev.model)) + if (RESP_OK != waitFinalResp(_cbString, _dev.model)) return false; // get the sw version sendFormated("AT+GMR\r\n"); - if (OK != waitFinalResp(_cbString, _dev.ver)) + if (RESP_OK != waitFinalResp(_cbString, _dev.ver)) return false; // Return the pseudo ESN or MEID sendFormated("AT+GSN\r\n"); - if (OK != waitFinalResp(_cbString, _dev.meid)) + if (RESP_OK != waitFinalResp(_cbString, _dev.meid)) return false; #if 0 // enable power saving if (_dev.lpm != LPM_DISABLED) { // enable power saving (requires flow control, cts at least) sendFormated("AT+UPSV=1,1280\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; _dev.lpm = LPM_ACTIVE; } @@ -263,19 +263,19 @@ if (_dev.dev == DEV_LISA_U200) { // enable the network identification feature sendFormated("AT+UGPIOC=20,2\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; } else { // enable the network identification feature sendFormated("AT+UGPIOC=16,2\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; } // check the sim card for (int i = 0; (i < 5) && (_dev.sim != SIM_READY); i++) { sendFormated("AT+CPIN?\r\n"); int ret = waitFinalResp(_cbCPIN, &_dev.sim); - if ((OK != ret) && (ERROR != ret)) + if ((RESP_OK != ret) && (RESP_ERROR != ret)) return false; // Enter PIN if needed if (_dev.sim == SIM_PIN) { @@ -284,7 +284,7 @@ return false; } sendFormated("AT+CPIN=%s\r\n", pin); - if (OK != waitFinalResp(_cbCPIN, &_dev.sim)) + if (RESP_OK != waitFinalResp(_cbCPIN, &_dev.sim)) return false; } else if (_dev.sim != SIM_READY) wait_ms(1000); @@ -293,51 +293,51 @@ return false; // get the manufacturer sendFormated("AT+CGMI\r\n"); - if (OK != waitFinalResp(_cbString, _dev.manu)) + if (RESP_OK != waitFinalResp(_cbString, _dev.manu)) return false; // get the model identification sendFormated("AT+CGMM\r\n"); - if (OK != waitFinalResp(_cbString, _dev.model)) + if (RESP_OK != waitFinalResp(_cbString, _dev.model)) return false; // get the sendFormated("AT+CGMR\r\n"); - if (OK != waitFinalResp(_cbString, _dev.ver)) + if (RESP_OK != waitFinalResp(_cbString, _dev.ver)) return false; // Returns the ICCID (Integrated Circuit Card ID) of the SIM-card. // ICCID is a serial number identifying the SIM. sendFormated("AT+CCID\r\n"); - if (OK != waitFinalResp(_cbCCID, _dev.ccid)) + if (RESP_OK != waitFinalResp(_cbCCID, _dev.ccid)) return false; // Returns the product serial number, IMEI (International Mobile Equipment Identity) sendFormated("AT+CGSN\r\n"); - if (OK != waitFinalResp(_cbString, _dev.imei)) + if (RESP_OK != waitFinalResp(_cbString, _dev.imei)) return false; #if 0 // Configure New message indication sendFormated("AT+CNMI=2,1,0,0,0\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; #endif // enable power saving if (_dev.lpm != LPM_DISABLED) { // enable power saving (requires flow control, cts at least) sendFormated("AT+UPSV=1\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; _dev.lpm = LPM_ACTIVE; } } // Setup SMS in text mode sendFormated("AT+CMGF=1\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; // setup new message indication sendFormated("AT+CNMI=1,1\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; // Request IMSI (International Mobile Subscriber Identification) sendFormated("AT+CIMI\r\n"); - if (OK != waitFinalResp(_cbString, _dev.imsi)) + if (RESP_OK != waitFinalResp(_cbString, _dev.imsi)) return false; if (status) memcpy(status, &_dev, sizeof(DevStatus)); @@ -385,18 +385,18 @@ { // check registration sendFormated("AT+CREG?\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; if ((_net.reg != REG_ROAMING) && (_net.reg != REG_HOME)) return false; // check modem specific status messages if (_dev.dev == DEV_LISA_C200) { sendFormated("AT+CSS?\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; // get the Telephone number sendFormated("AT$MDN?\r\n"); - if (OK != waitFinalResp(_cbString, _net.num)) + if (RESP_OK != waitFinalResp(_cbString, _net.num)) return false; // check if we have a Mobile Directory Number if (memcmp(_net.num, "0000", 4) == 0) @@ -404,28 +404,28 @@ // get the the Network access identifier string char nai[64]; sendFormated("AT$QCMIPNAI?\r\n"); - if (OK != waitFinalResp(_cbString, nai)) + if (RESP_OK != waitFinalResp(_cbString, nai)) return false; } else { // check GPRS attach status int state = 0; sendFormated("AT+CGATT?\r\n"); - if (OK != waitFinalResp(_cbCGATT, &state)) + if (RESP_OK != waitFinalResp(_cbCGATT, &state)) return false; if (state != 1) return false; // check operator selection sendFormated("AT+COPS?\r\n"); - if (OK != waitFinalResp(_cbCOPS, &_net)) + if (RESP_OK != waitFinalResp(_cbCOPS, &_net)) return false; // Returns the MSISDNs related to this subscriber sendFormated("AT+CNUM\r\n"); - if (OK != waitFinalResp(_cbCNUM, _net.num)) + if (RESP_OK != waitFinalResp(_cbCNUM, _net.num)) return false; } // Returns the signal strength indication sendFormated("AT+CSQ\r\n"); - if (OK != waitFinalResp(_cbCSQ, &_net.rssi)) + if (RESP_OK != waitFinalResp(_cbCSQ, &_net.rssi)) return false; if (status) { memcpy(status, &_net, sizeof(NetStatus)); @@ -481,7 +481,7 @@ bool MDMParser::powerOff(void) { sendFormated("AT+CPWROFF\r\n"); - if (OK != waitFinalResp(NULL,NULL,120)) + if (RESP_OK != waitFinalResp(NULL,NULL,120)) return false; return true; } @@ -497,52 +497,52 @@ //Get local IP address sendFormated("AT+CMIP?\r\n"); - if (OK != waitFinalResp(_cbCMIP, &_ip)) + if (RESP_OK != waitFinalResp(_cbCMIP, &_ip)) return NOIP; } else { // check gprs attach status sendFormated("AT+CGATT?\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return NOIP; // Check the profile int a = 0; sendFormated("AT+UPSND=" PROFILE ",8\r\n"); - if (OK != waitFinalResp(_cbUPSND, &a)) + if (RESP_OK != waitFinalResp(_cbUPSND, &a)) return NOIP; if (a == 1) { // disconnect the profile already if it is connected sendFormated("AT+UPSDA=" PROFILE ",4\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return NOIP;; } // Set up the APN if (apn) { sendFormated("AT+UPSD=" PROFILE ",1,\"%s\"\r\n", apn); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return NOIP; } if (user) { sendFormated("AT+UPSD=" PROFILE ",2,\"%s\"\r\n", user); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return NOIP; } if (password) { sendFormated("AT+UPSD=" PROFILE ",3,\"%s\"\r\n", password); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return NOIP; } // Set up the dynamic IP address assignment. sendFormated("AT+UPSD=" PROFILE ",7,\"0.0.0.0\"\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return NOIP; // Activate the profile and make connection sendFormated("AT+UPSDA=" PROFILE ",3\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return NOIP; //Get local IP address sendFormated("AT+UPSND=" PROFILE ",0\r\n"); - if (OK != waitFinalResp(_cbUPSND, &_ip)) + if (RESP_OK != waitFinalResp(_cbUPSND, &_ip)) return NOIP; } return _ip; @@ -596,7 +596,7 @@ // TODO: is there something to do here? } else { sendFormated("AT+UPSDA=" PROFILE ",4\r\n"); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; } _ip = NOIP; @@ -611,7 +611,7 @@ ip = IPADR(a,b,c,d); else { sendFormated("AT+UDNSRN=0,\"%s\"\r\n", host); - if (OK != waitFinalResp(_cbUDNSRN, &ip)) + if (RESP_OK != waitFinalResp(_cbUDNSRN, &ip)) return false; } return ip; @@ -643,7 +643,7 @@ } sendFormated(cmd); int socket = -1; - if (OK != waitFinalResp(_cbUSOCR, &socket)) + if (RESP_OK != waitFinalResp(_cbUSOCR, &socket)) return SOCKET_ERROR; if (!ISSOCKET(socket) || (_sockets[socket].state != SOCK_FREE)) return SOCKET_ERROR; @@ -664,7 +664,7 @@ if (!ISSOCKET(socket) || (_sockets[socket].state != SOCK_CREATED)) return false; sendFormated("AT+USOCO=%d,\"" IPSTR "\",%d\r\n", socket, IPNUM(ip), port); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; _sockets[socket].state = SOCK_CONNECTED; return true; @@ -694,7 +694,7 @@ if (!ISSOCKET(socket) || (_sockets[socket].state != SOCK_CONNECTED)) return false; sendFormated("AT+USOCL=%d\r\n", socket); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return false; _sockets[socket].state = SOCK_CREATED; return true; @@ -715,11 +715,11 @@ TRACE("socketSend(%d,,%d)\r\n", socket,len); if(len > 0) { sendFormated("AT+USOWR=%d,%d\r\n",socket,len); - if (PROMPT != waitFinalResp()) + if (RESP_PROMPT != waitFinalResp()) return SOCKET_ERROR; wait_ms(50); send(buf, len); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return SOCKET_ERROR; } return len; @@ -730,11 +730,11 @@ TRACE("socketSendTo(%d," IPSTR "%d,,%d)\r\n", socket, IPNUM(ip),port,len); if(len > 0) { sendFormated("AT+USOWR=%d,\"" IPSTR "\",%d,%d\r\n",socket,IPNUM(ip),port,len); - if (PROMPT != waitFinalResp()) + if (RESP_PROMPT != waitFinalResp()) return SOCKET_ERROR; wait_ms(50); send(buf, len); - if (OK != waitFinalResp()) + if (RESP_OK != waitFinalResp()) return SOCKET_ERROR; } return len; @@ -780,7 +780,7 @@ if (len < blk) blk = len; if (blk) { sendFormated("AT+USORD=%d,%d\r\n",socket, blk); - if (OK != waitFinalResp(_cbUSORD, buf)) { + if (RESP_OK != waitFinalResp(_cbUSORD, buf)) { return SOCKET_ERROR; } len -= blk; @@ -834,7 +834,7 @@ sendFormated("AT+USORF=%d,%d\r\n",socket, blk); USORFparam param; param.buf = buf; - if (OK != waitFinalResp(_cbUSORF, ¶m)) { + if (RESP_OK != waitFinalResp(_cbUSORF, ¶m)) { return SOCKET_ERROR; } *ip = param.ip; @@ -878,7 +878,7 @@ CMGLparam param; param.ix = ix; param.num = num; - if (OK != waitFinalResp(_cbCMGL, ¶m)) + if (RESP_OK != waitFinalResp(_cbCMGL, ¶m)) return -1; return num - param.num; } @@ -886,13 +886,13 @@ bool MDMParser::smsSend(const char* num, const char* buf) { sendFormated("AT+CMGS=\"%s\"\r",num); - if (PROMPT != waitFinalResp()) { + if (RESP_PROMPT != waitFinalResp()) { return false; } send(buf, strlen(buf)); const char ctrlZ = 0x1A; send(&ctrlZ, sizeof(ctrlZ)); - if (OK != waitFinalResp()) { + if (RESP_OK != waitFinalResp()) { return false; } return true; @@ -901,7 +901,7 @@ bool MDMParser::smsDelete(int ix) { sendFormated("AT+CMGD=%d\r\n",ix); - if (OK != waitFinalResp()) { + if (RESP_OK != waitFinalResp()) { return false; } return true; @@ -927,7 +927,7 @@ param.num = num; param.buf = buf; sendFormated("AT+CMGR=%d\r\n",ix); - if (OK != waitFinalResp(_cbCMGR, ¶m)) { + if (RESP_OK != waitFinalResp(_cbCMGR, ¶m)) { return false; } return true; @@ -950,7 +950,7 @@ { *buf = '\0'; sendFormated("AT+CUSD=1,\"%s\"\r\n",cmd); - if (OK != waitFinalResp(_cbCUSD, buf)) { + if (RESP_OK != waitFinalResp(_cbCUSD, buf)) { return false; } return true;