Add a bunch of APNs
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;