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.
Dependents: GPS_6Axis_DataLogger_SD_UDP
Fork of C027_Support by
Diff: MDM.cpp
- Revision:
- 52:8071747a7cb3
- Parent:
- 50:d76aece8038f
- Child:
- 53:cb0d94b9de3a
- Child:
- 54:7ba8e4c218e2
diff -r e7b81c31baec -r 8071747a7cb3 MDM.cpp
--- 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;
