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.
Dependencies: mbed FXOS8700CQ MODSERIAL
Revision 74:3e3ee15584e5, committed 2016-08-13
- Comitter:
- fkellermavnet
- Date:
- Sat Aug 13 15:08:11 2016 +0000
- Parent:
- 72:b500e1507b5f
- Child:
- 75:8cc98a3b9c62
- Commit message:
- Merged in latest code from Eaddy. This adds in more checks if the socket disconnects and attempts to reconnect it and also to search for the +CME error condition.
Changed in this revision
| cell_modem.cpp | Show annotated file Show diff for this revision Revisions of this file |
| wnc_control.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/cell_modem.cpp Thu Aug 11 21:14:32 2016 +0000
+++ b/cell_modem.cpp Sat Aug 13 15:08:11 2016 +0000
@@ -1,5 +1,5 @@
/* ===================================================================
-Copyright © 2016, AVNET Inc.
+Copyright c 2016, AVNET Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -113,7 +113,12 @@
while (rsp_list[rsp_idx]) {
if (strcasecmp(rsp, rsp_list[rsp_idx]) == 0) {
return rsp_idx;
- }
+ } else if (strncmp(rsp, "@EXTERR", 7) == 0){
+ pc.printf("----- We got EXTERR ---\r\n");
+ return 2;
+ } else if (strncmp(rsp, "+CME", 4) == 0){
+ return 3;
+ }
rsp_idx++;
}
}
@@ -220,7 +225,12 @@
while (rsp_list[rsp_idx]) {
if (strcasecmp(cmd_buf, rsp_list[rsp_idx]) == 0) {
return rsp_idx;
- }
+ } else if (strncmp(cmd_buf, "@EXTERR", 7) == 0){
+ pc.printf("----- We got EXTERR ---\r\n");
+ return 2;
+ } else if (strncmp(cmd_buf, "+CME", 4) == 0){
+ return 3;
+ }
rsp_idx++;
}
}
@@ -332,4 +342,3 @@
}
return iStatus;
}
-
--- a/wnc_control.cpp Thu Aug 11 21:14:32 2016 +0000
+++ b/wnc_control.cpp Sat Aug 13 15:08:11 2016 +0000
@@ -1,5 +1,5 @@
/* ===================================================================
-Copyright © 2016, AVNET Inc.
+Copyright c 2016, AVNET Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -37,7 +37,8 @@
WNC_OK =0,
WNC_CMD_ERR = -1,
WNC_NO_RESPONSE = -2,
- WNC_CELL_LINK_DOWN = -3
+ WNC_CELL_LINK_DOWN = -3,
+ WNC_EXTERR = -4
};
// Contains result of last call to send_wnc_cmd(..)
@@ -156,6 +157,12 @@
{
PUTS("Socket Write fail!!!\r\n");
software_init_mdm();
+ }else if (WNC_MDM_ERR == WNC_EXTERR)
+ {
+ PUTS("Socket Disconnected (broken) !!!\r\n");
+ sockclose_mdm();
+ sockopen_mdm();
+ //software_init_mdm();
}
} while (WNC_MDM_ERR != WNC_OK);
}
@@ -214,7 +221,7 @@
/**
* C++ version 0.4 char* style "itoa":
- * Written by Lukás Chmela
+ * Written by Lukas Chmela
* Released under GPLv3.
*/
@@ -353,6 +360,11 @@
if (cmdRes == -2)
WNC_MDM_ERR = WNC_NO_RESPONSE;
+
+ if (cmdRes == -3) {
+ WNC_MDM_ERR = WNC_EXTERR;
+ pc.printf("[[WNC_MDM_ERR = WNC_EXTERR]] \r\n");
+ }
if (cmdRes == 0)
WNC_MDM_ERR = WNC_OK;
@@ -362,7 +374,9 @@
int at_send_wnc_cmd(const char * s, string ** r, int ms_timeout)
{
- static const char * rsp_lst[] = { "OK", "ERROR", NULL };
+ //Eaddy
+ static const char * rsp_lst[] = { "OK", "ERROR","@EXTERR", "+CME",NULL };
+ //static const char * rsp_lst[] = { "OK", "ERROR", NULL };
int len;
#ifdef WNC_CMD_DEBUG_ON
@@ -402,11 +416,23 @@
PUTS("]\r\n");
#endif
#endif
-
+#if 0
if (res > 0)
return -1;
else
return 0;
+#else
+ //Eaddy added
+ if (res == 0) {
+ /* OK */
+ return 0;
+ } else if (res == 2) {
+ /* @EXTERR */
+ pc.printf("@EXTERR and res = %d \r\n", res);
+ return -3;
+ } else
+ return -1;
+#endif
}
else
{
@@ -541,6 +567,7 @@
string * pRespStr;
char num2str[6];
size_t sLen = strlen(s);
+ int res;
if (sLen <= 1500)
{
string cmd_str("AT@SOCKWRITE=1,");
@@ -560,7 +587,10 @@
cmd_str += num2str;
}
cmd_str += "\"";
- send_wnc_cmd(cmd_str.c_str(), &pRespStr, 120000);
+ res = send_wnc_cmd(cmd_str.c_str(), &pRespStr, 120000);
+
+ if (res == -3)
+ PUTS("sockwrite is disconnect \r\n");
}
else
PUTS("sockwrite Err, string to long\r\n");