This library controls the WNC. There is a derived class for usage from the K64F board.
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)
