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 WncControllerLibrary by
Diff: WncController.cpp
- Revision:
- 6:a656e820d7ff
- Parent:
- 5:20207cc5502e
- Child:
- 7:e6f22159ef23
--- a/WncController.cpp Tue Sep 06 19:11:14 2016 +0000
+++ b/WncController.cpp Thu Sep 08 18:57:56 2016 +0000
@@ -320,6 +320,11 @@
}
}
+void WncController::setWncCmdTimeout(uint16_t toMs)
+{
+ m_sCmdTimeoutMs = toMs;
+}
+
/**
* \brief Opens a WNC socket.
*
@@ -963,12 +968,12 @@
return (false);
}
-size_t WncController::readSMSText(const char ** log)
+size_t WncController::readSMSText(const char n, const char ** msg)
{
- size_t n;
+ size_t i;
- n = at_readSMStext_wnc(log);
- if (n == 0)
+ i = at_readSMStext_wnc(n,msg);
+ if (i == 0)
dbgPuts("readSMSText: Failed!");
return (n);
@@ -1173,7 +1178,6 @@
bool WncController::at_saveSMStext_wnc(const char * const phoneNum, const char * const text, char * msgIdx)
{
string respStr;
- string * pRespStr;
size_t l = strlen(text);
if (l <= MAX_WNC_SMS_LENGTH)
@@ -1181,8 +1185,6 @@
// Check to see if the SMS service is available
checkCellLink();
if (m_sReadyForSMS == true) {
- at_send_wnc_cmd("AT+CMGF=1", &pRespStr, m_sCmdTimeoutMs);
- at_send_wnc_cmd("AT+CPMS=\"SM\",\"SM\",\"SM\"", &pRespStr, m_sCmdTimeoutMs);
string cmdStr("AT+CMGW=\"");
cmdStr += phoneNum;
cmdStr += "\"";
@@ -1222,19 +1224,27 @@
size_t WncController::at_readSMSlog_wnc(const char ** log)
{
string * pRespStr;
+ static string smsLogStr;
+
+ smsLogStr.erase();
if (at_send_wnc_cmd("AT+CMGL", &pRespStr, m_sCmdTimeoutMs) == WNC_AT_CMD_OK)
- *log = pRespStr->c_str();
- else
- *log = "\0";
+ smsLogStr = *pRespStr;
+ *log = smsLogStr.c_str();
+
return (pRespStr->size());
}
-size_t WncController::at_readSMStext_wnc(const char ** log)
+size_t WncController::at_readSMStext_wnc(const char n, const char ** log)
{
+ static string smsReadTxtStr;
string * pRespStr;
-
+ string cmdStr;
+
+ smsReadTxtStr.erase();
+ cmdStr = "AT+CMGR";
+ cmdStr += '1';
if (at_send_wnc_cmd("AT+CMGR", &pRespStr, m_sCmdTimeoutMs) == WNC_AT_CMD_OK)
*log = pRespStr->c_str();
else
@@ -1267,6 +1277,11 @@
// Quick commands below do not need to check cellular connectivity
at_send_wnc_cmd("ATE0", &pRespStr, WNC_QUICK_CMD_TIMEOUT_MS); // Echo Off
at_send_wnc_cmd("AT+CMEE=2", &pRespStr, m_sCmdTimeoutMs); // 2 - verbose error, 1 - numeric error, 0 - just ERROR
+
+ // Setup 3 memory slots in the WNC SIM for SMS usage.
+ at_send_wnc_cmd("AT+CMGF=1", &pRespStr, m_sCmdTimeoutMs);
+ at_send_wnc_cmd("AT+CPMS=\"SM\",\"SM\",\"SM\"", &pRespStr, m_sCmdTimeoutMs);
+
cmdRes = at_send_wnc_cmd("AT", &pRespStr, WNC_QUICK_CMD_TIMEOUT_MS); // Heartbeat?
// If the simple commands are not working, no chance of more complex.
@@ -1401,9 +1416,9 @@
cmd_str += _to_string(numSock + 1);
cmd_str += ",";
cmd_str += _to_string(n);
- cmd_str += num2str;
cmd_str += ",\"";
- while(*s != '\0') {
+ while(n > 0) {
+ n--;
num2str = _to_hex_string((uint8_t)*s++);
// Always 2-digit ascii hex:
if (strlen(num2str) == 1)
