The WDCInterface is is a drop-in replacement for an EthernetInterface class that allows the user to connect to the Internet with a Wistron NeWeb Corporation (WNC) M14A2A Series data module using the standard network Socket API's. This interface class is used in the AT&T Cellular IoT Starter Kit which is sold by Avnet (http://cloudconnectkits.org/product/att-cellular-iot-starter-kit).
Dependencies: WncControllerK64F
Dependents: WNCProximityMqtt Pubnub_ATT_IoT_SK_WNC_sync BluemixDemo BluemixQS ... more
See the WNCInterface README in the Wiki tab for detailed information on this library.
Revision 9:9f0578ff157a, committed 2016-10-07
- Comitter:
- JMF
- Date:
- Fri Oct 07 13:26:00 2016 +0000
- Parent:
- 8:4b38bfb1704d
- Child:
- 10:9d8b23b60fd6
- Commit message:
- Cleaned up WNC Error checking to ensure mutex was released when an error occurs.
Changed in this revision
--- a/Sms/IOTSMS.cpp Fri Oct 07 00:36:47 2016 +0000
+++ b/Sms/IOTSMS.cpp Fri Oct 07 13:26:00 2016 +0000
@@ -52,8 +52,7 @@
//not completing our tasks wihin the timeperiod. So stop the timer when
//we come in and start it when we leave.
//
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(void);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), void);
m_SMStimer->stop(); //stop the timer while we check for SMS messages
M_LOCK;
@@ -87,8 +86,7 @@
//
int WNCSms::init(uint32_t p, void (*cb)(WNCSmsMsg& s)) {
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
if( WNCInterface::_pwnc == NULL ) //must have already initialized WNCInterface
return -1;
@@ -139,8 +137,7 @@
if( !m_smsinit )
return -1;
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
M_LOCK;
int ret = WNCInterface::_pwnc->readUnreadSMSText(&m_smsmsgs, true);
M_ULOCK;
@@ -153,19 +150,14 @@
string iccid_str;
static string msisdn_str;
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(null);
-
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), null);
M_LOCK;
if( !WNCInterface::_pwnc->getICCID(&iccid_str) ) {
M_ULOCK;
return NULL;
}
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ) {
- M_ULOCK;
- FATAL_WNC_ERROR(null);
- }
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), null);
if( WNCInterface::_pwnc->convertICCIDtoMSISDN(iccid_str, &msisdn_str) )
ret = (char*)msisdn_str.c_str();
--- a/Socket/Endpoint.cpp Fri Oct 07 00:36:47 2016 +0000
+++ b/Socket/Endpoint.cpp Fri Oct 07 13:26:00 2016 +0000
@@ -47,8 +47,7 @@
char address[5];
int rslt;
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
reset_address();
_epAddr.port = port; //go ahead and save the port
--- a/Socket/Socket.cpp Fri Oct 07 00:36:47 2016 +0000
+++ b/Socket/Socket.cpp Fri Oct 07 13:26:00 2016 +0000
@@ -63,8 +63,7 @@
int rslt;
char address[5];
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
// lets determine if they passed in an IP or a URL
rslt = std::sscanf(url, "%3u.%3u.%3u.%3u",
@@ -94,8 +93,7 @@
if( _sock_type<0 )
return 0; //nothing is connected currently
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
M_LOCK;
int ret = !WNCInterface::_pwnc->closeSocket(0);
M_ULOCK;
@@ -106,8 +104,7 @@
blocking = blocking;
timeout= timeout;
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(void);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), void);
M_LOCK;
WNCInterface::_pwnc->setReadRetryWait(0, 0);
WNCInterface::_pwnc->setReadRetries(0, 0);
--- a/Socket/TCPSocketConnection.cpp Fri Oct 07 00:36:47 2016 +0000
+++ b/Socket/TCPSocketConnection.cpp Fri Oct 07 13:26:00 2016 +0000
@@ -36,8 +36,7 @@
_is_blocking = blocking; // true if we want to wait for request
_btimeout = timeout; // user specs msec
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(void);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), void);
M_LOCK;
WNCInterface::_pwnc->setReadRetryWait(0, 0);
WNCInterface::_pwnc->setReadRetries(0, 0);
@@ -60,8 +59,7 @@
WncController_fk::WncController::WncState_e s = WNCInterface::_pwnc->getWncStatus();
- if( s == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
+ CHK_WNCFE(( s == FATAL_FLAG ), fail);
if( s == WncController_fk::WncController::WNC_ON ) {
M_LOCK;
@@ -78,10 +76,7 @@
int ret=-1;
WncController_fk::WncController::WncState_e s = WNCInterface::_pwnc->getWncStatus();
- if( s == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
-
-
+ CHK_WNCFE(( s == FATAL_FLAG ), fail);
if( s != WncController_fk::WncController::WNC_ON )
return ret;
--- a/Socket/UDPSocket.cpp Fri Oct 07 00:36:47 2016 +0000
+++ b/Socket/UDPSocket.cpp Fri Oct 07 13:26:00 2016 +0000
@@ -50,9 +50,7 @@
int UDPSocket::sendTo(Endpoint &remote, char *packet, int length) {
int ret = -1;
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
-
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
if( remote._epAddr.port ) { //make sure the Endpoint has an port assoicated with it
if( Socket::connect(remote._epAddr.IP,SOCK_DGRAM,remote._epAddr.port) ) {
if( WNCInterface::_pwnc->write(0,packet,length) )
@@ -71,9 +69,7 @@
_is_blocking = blocking; // true or false
_btimeout = timeout; // user specifies in msec
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(void);
-
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), void);
WNCInterface::_pwnc->setReadRetryWait(0, 0);
WNCInterface::_pwnc->setReadRetries(0, 0);
}
@@ -88,9 +84,7 @@
if( !remote._epAddr.port )
return -1;
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(fail);
-
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
ret = Socket::connect(remote._epAddr.IP,SOCK_DGRAM,remote._epAddr.port);
t.start();
--- a/WNCInterface.cpp Fri Oct 07 00:36:47 2016 +0000
+++ b/WNCInterface.cpp Fri Oct 07 13:26:00 2016 +0000
@@ -135,8 +135,7 @@
char * WNCInterface::getIPAddress() {
M_LOCK;
if ( _pwnc->getWncNetworkingStats(&myNetStats) ) {
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(null);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), null);
M_ULOCK;
return &myNetStats.ip[0];
}
@@ -150,8 +149,7 @@
char * WNCInterface::getGateway() {
M_LOCK;
if ( _pwnc->getWncNetworkingStats(&myNetStats) ) {
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(null);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), null);
M_ULOCK;
return &WNCInterface::myNetStats.gateway[0];
}
@@ -165,8 +163,7 @@
char * WNCInterface::getNetworkMask() {
M_LOCK;
if ( _pwnc->getWncNetworkingStats(&myNetStats) ) {
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(null);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), null);
M_ULOCK;
return &WNCInterface::myNetStats.mask[0];
}
@@ -182,8 +179,7 @@
M_LOCK;
if( _pwnc->getICCID(&str) ) {
- if( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG )
- FATAL_WNC_ERROR(null);
+ CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), null);
mac = str.substr(3,20);
mac[2]=mac[5]=mac[8]=mac[11]=mac[14]=':';
M_ULOCK;
--- a/WNCInterface.h Fri Oct 07 00:36:47 2016 +0000
+++ b/WNCInterface.h Fri Oct 07 13:26:00 2016 +0000
@@ -81,6 +81,7 @@
#define M_LOCK {extern Mutex _WNCLock; _WNCLock.lock();}
#define M_ULOCK {extern Mutex _WNCLock; _WNCLock.unlock();}
+#define CHK_WNCFE(x,y) if( x ){M_ULOCK; FATAL_WNC_ERROR(y);}
// Because the WncController has intermixed socket & interface functionallity
// will need to make the Socket class a friend of the Interface class. This

