This library can be used in mbed driver or mbed OS2. So If you want to use WizFi310 on mbed OS5, You have to use another WizFi310 library(wizfi310-driver). That is git repository for wizfi310-driver. - https://github.com/ARMmbed/wizfi310-driver

Dependents:   KT_IoTMakers_WizFi310_Example WizFi310_STATION_HelloWorld WizFi310_DNS_TCP_HelloWorld WizFi310_Ubidots ... more

This library can be used in mbed driver or mbed OS2. So If you want to use WizFi310 on mbed OS5, You have to use another WizFi310 library(wizfi310-driver).

That is git repository for wizfi310-driver. - https://github.com/ARMmbed/wizfi310-driver

Revision:
5:72212beb817c
Parent:
1:16e57103a7dd
Child:
6:007cec5e96c0
--- a/WizFi310/WizFi310_msg.cpp	Mon Apr 17 06:44:26 2017 +0000
+++ b/WizFi310/WizFi310_msg.cpp	Mon Jun 26 00:17:10 2017 +0000
@@ -27,18 +27,23 @@
 #define WIZ_DBG(x, ...)
 #endif
 
-//daniel
-char g_asyncbuf[256];
+#define RESP_MSG_OK "[OK]"
+#define RESP_MSG_ERROR "[ERROR"
+#define RESP_MSG_CONNECT "[CONNECT "
+#define RESP_MSG_DISCONNECT "[DISCONNECT "
+#define RESP_MSG_LISTEN "[LISTEN "
+#define RESP_MSG_MQTTCON "[MQTT CONNECT]"
+#define RESP_MSG_MQTTDISCON "[MQTT DISCONNECT]"
+
 
 // This function is operating in ISR. So you can't use debug message.
 void WizFi310::recvData ( char c )
 {
     static int cid, sub, len, count;
-    static int is_mqtt_data = 0;
-    char tbf[10];
+    static int is_mqtt_data = 0;    
     
     switch(_state.mode)
-    {
+    { 
         case MODE_COMMAND:
             switch(c)
             {
@@ -85,124 +90,118 @@
             switch(sub)
             {
                 case 0:
-                // cid
-                if( (c >= '0') && (c <= '9') )
-                {
-                    cid = x2i(c);
-                }
-                else if ( c == ',' )
-                {
-                    sub++;
-                    count = 0;
-                    len = 0;
-                }
-                //daniel add for mqtt
-                else if ( c == 'Q' )
-                {
-                    cid = 0;
-                    is_mqtt_data = 1;
-                }
-                //
-                else
-                {
-                    _state.mode = MODE_COMMAND;
-                }
-                break;
+                    // cid
+                    if( (c >= '0') && (c <= '9') )
+                    {
+                        cid = x2i(c);
+                    }
+                    else if ( c == ',' )
+                    {
+                        sub++;
+                        count = 0;
+                        len = 0;
+                    }
+                    //daniel add for mqtt
+                    else if ( c == 'Q' )
+                    {
+                        cid = 0;
+                        is_mqtt_data = 1;
+                    }
+                    //
+                    else
+                    {
+                        _state.mode = MODE_COMMAND;
+                    }
+                    break;
 
-            case 1:
-                // ip                
-//                if ((c >= '0' && c <= '9') || c == '.')
-                if (((c >= '0' && c <= '9') || c == '.') && is_mqtt_data == 0 )
-                {
-                    _con[cid].ip[count] = c;
-                    count++;
-                }
-                else if( c == ',' )
-                {
-                    _con[cid].ip[count] = '\0';
-                    _con[cid].port = 0;
-                    sub++;
-                }
-                //daniel for mqtt
-                else if( is_mqtt_data == 1)
-                {
-                    rcvd_mqtt_topic[count] = c;
-                    count++;
-                }
-//              else 
-                else if( is_mqtt_data == 0 )
-                {
-                    _state.mode = MODE_COMMAND;
+                case 1:
+                    // ip                
+    //                if ((c >= '0' && c <= '9') || c == '.')
+                    if (((c >= '0' && c <= '9') || c == '.') && is_mqtt_data == 0 )
+                    {
+                        _con[cid].ip[count] = c;
+                        count++;
+                    }
+                    else if( c == ',' )
+                    {
+                        _con[cid].ip[count] = '\0';
+                        _con[cid].port = 0;
+                        sub++;
+                    }
+                    //daniel for mqtt
+                    else if( is_mqtt_data == 1)
+                    {
+                        rcvd_mqtt_topic[count] = c;
+                        count++;
+                    }
+    //              else 
+                    else if( is_mqtt_data == 0 )
+                    {
+                        _state.mode = MODE_COMMAND;
+                    }
+                    break;
+    
+                case 2:
+                    // port
+                    if ( c >= '0' && c <= '9' )
+                    {
+                        _con[cid].port = (_con[cid].port * 10) + ( c - '0' );
+                    }
+                    else if( c == ',')
+                    {
+                        sub++;
+                        count = 0;
+                    }
+                    else
+                    {
+                        _state.mode = MODE_COMMAND;
+                    }
+                    break;
+    
+                case 3:
+                    // data length
+                    if ( c >= '0' && c <= '9' )
+                    {
+                        //_con[cid].recv_length = (_con[cid].recv_length * 10) + (c - '0');
+                        len = (len * 10) + (c - '0');
+                    }
+                    else if( c == '}' )
+                    {
+                        sub++;
+                        count = 0;
+                        _con[cid].recv_length = len;
+                    }
+                    else
+                    {
+                        _state.mode = MODE_COMMAND;
+                    }
+                    break;
+    
+                default:
+    
+                    if(_con[cid].buf != NULL)
+                    {
+                        _con[cid].buf->queue(c);
+                        if(_con[cid].buf->available() > CFG_DATA_SIZE - 16 )
+                        {
+                            setRts(false);     // blcok
+                            _con[cid].received = true;
+                            WIZ_WARN("buf full");
+                        }
+                    }
+                    _con[cid].recv_length--;
+                    if(_con[cid].recv_length == 0)
+                    {
+                        _con[cid].received = true;
+                        _state.mode = MODE_COMMAND;
+                    }
+                    break;
                 }
                 break;
-
-            case 2:
-                // port
-                if ( c >= '0' && c <= '9' )
-                {
-                    _con[cid].port = (_con[cid].port * 10) + ( c - '0' );
-                }
-                else if( c == ',')
-                {
-                    sub++;
-                    count = 0;
-                }
-                else
-                {
-                    _state.mode = MODE_COMMAND;
-                }
-                break;
-
-            case 3:
-                // data length
-                if ( c >= '0' && c <= '9' )
-                {
-                    //_con[cid].recv_length = (_con[cid].recv_length * 10) + (c - '0');
-                    len = (len * 10) + (c - '0');
-                }
-                else if( c == '}' )
-                {
-                    sub++;
-                    count = 0;
-                    _con[cid].recv_length = len;
-                }
-                else
-                {
-                    _state.mode = MODE_COMMAND;
-                }
-                break;
-
-            default:
-
-                if(_con[cid].buf != NULL)
-                {
-                    _con[cid].buf->queue(c);
-                    if(_con[cid].buf->available() > CFG_DATA_SIZE - 16 )
-                    {
-                        setRts(false);     // blcok
-                        _con[cid].received = true;
-                        WIZ_WARN("buf full");
-                    }
-                }
-                _con[cid].recv_length--;
-                if(_con[cid].recv_length == 0)
-                {
-                     //WIZ_DBG("recv cid: %d, count : %d, len : %d",cid, count, len);
-                     //sprintf(tbf, "recv cid: %d, count : %d, len : %d",cid, count, len);
-                     //strcat(g_asyncbuf, tbf);
-                    _con[cid].received = true;
-                    _state.mode = MODE_COMMAND;
-                }
-                break;
-            }
-            break;
     }
 }
 
-
-//#define MSG_TABLE_NUM 6
-//daniel
-#define MSG_TABLE_NUM 8
+#define MSG_TABLE_NUM 7
 #define RES_TABLE_NUM 7
 int WizFi310::parseMessage () {
     int i;
@@ -212,15 +211,14 @@
         const char msg[24];
         void (WizFi310::*func)(const char *);
     } msg_table[MSG_TABLE_NUM] = {
-        {"[OK]",                    &WizFi310::msgOk},
-        {"[ERROR]",                 &WizFi310::msgError},
-        {"[ERROR:INVALIDINPUT]",    &WizFi310::msgError},
-        {"[CONNECT ",               &WizFi310::msgConnect},
-        {"[DISCONNECT ",            &WizFi310::msgDisconnect},
-        {"[LISTEN ",                &WizFi310::msgListen},
-        //daniel
-        {"[MQTT CONNECT]",               &WizFi310::msgMQTTConnect},
-        {"[MQTT DISCONNECT]",               &WizFi310::msgMQTTDisconnect},
+        {RESP_MSG_OK,                    &WizFi310::msgOk},
+        {RESP_MSG_ERROR,                 &WizFi310::msgError},
+//        {"[ERROR:INVALIDINPUT]",    &WizFi310::msgError},
+        {RESP_MSG_CONNECT,               &WizFi310::msgConnect},
+        {RESP_MSG_DISCONNECT,            &WizFi310::msgDisconnect},
+        {RESP_MSG_LISTEN,                &WizFi310::msgListen},
+        {RESP_MSG_MQTTCON,               &WizFi310::msgMQTTConnect},
+        {RESP_MSG_MQTTDISCON,               &WizFi310::msgMQTTDisconnect},
     };
     static const struct RES_TABLE{
         const Response res;
@@ -243,16 +241,13 @@
     }
 
     buf[i] = '\0';
-    //strncpy(_state.dbgRespBuf, buf, sizeof(buf) );
-    //WIZ_DBG("%s\r\n",_state.dbgRespBuf);
-
+    
     if(_state.res != RES_NULL)
     {
         for( i=0; i<RES_TABLE_NUM; i++)
         {
             if(res_table[i].res == _state.res)
             {
-                //WIZ_DBG("parse res %d '%s'\r\n", i, buf);
                 if(res_table[i].func != NULL)
                 {
                     (this->*(res_table[i].func))(buf);
@@ -268,7 +263,6 @@
     {
         if( strncmp(buf, msg_table[i].msg, strlen(msg_table[i].msg)) == 0 )
         {
-            //WIZ_DBG("parse msg '%s'\r\n", buf);
             if(msg_table[i].func != NULL)
             {
                 (this->*(msg_table[i].func))(buf);
@@ -295,10 +289,11 @@
 {
     int cid;
 
-    if (buf[9] < '0' || buf[9] > '8' || buf[10] != ']') return;
+    //if (buf[9] < '0' || buf[9] > '8' || buf[10] != ']') return;
+    if( isdigit (buf[9])) return;
 
     cid = x2i(buf[9]);
-
+    
     initCon(cid, true);
     _state.cid = cid;
     _con[cid].accept = true;
@@ -309,7 +304,8 @@
 {
     int cid;
 
-    if(buf[12] < '0' || buf[12] > '8' || buf[13] != ']')    return;
+    //if(buf[12] < '0' || buf[12] > '8' || buf[13] != ']')    return;
+    if( isdigit (buf[9])) return;
 
     cid = x2i(buf[12]);
     _con[cid].connected = false;
@@ -320,9 +316,6 @@
 {
     int cid = 0;
 
-    //if (buf[9] < '0' || buf[9] > '8' || buf[10] != ']') return;
-
-    //cid = x2i(buf[9]);
     initCon(cid, true);
     _state.cid = cid;
     _con[cid].accept = true;
@@ -336,10 +329,6 @@
 void WizFi310::msgMQTTDisconnect (const char *buf)
 {
     int cid = 0;
-
-    //if(buf[12] < '0' || buf[12] > '8' || buf[13] != ']')    return;
-
-    //cid = x2i(buf[12]);
     _con[cid].connected = false;
 }
 
@@ -348,7 +337,8 @@
 {
     int cid;
 
-    if(buf[8] < '0' || buf[8] > '8' || buf[9] != ']')   return;
+    //if(buf[8] < '0' || buf[8] > '8' || buf[9] != ']')   return;
+    if( isdigit (buf[9])) return;
 
     cid = x2i(buf[8]);
     _state.cid = cid;
@@ -362,8 +352,9 @@
         _state.mac[17] = 0;
         _state.res = RES_NULL;
 
-        if(strncmp(_state.mac,CFG_DEFAULT_MAC,sizeof(CFG_DEFAULT_MAC)) == 0)
+        if(strncmp(_state.mac,CFG_DEFAULT_MAC,sizeof(CFG_DEFAULT_MAC)) == 0){
             _state.ok = false;
+        }
         _state.ok = true;
     }
 }
@@ -372,13 +363,10 @@
 {
     int cid;
 
-    if (buf[0] == '[' && buf[1] == 'O' && buf[2] == 'K' && buf[3] == ']')
-    {
+    if( strstr((char*)buf, RESP_MSG_OK) != NULL){
         _state.n++;
     }
-    else if( buf[0] == '[' && buf[1] == 'C' && buf[2] == 'O' && buf[3] == 'N' &&
-              buf[4] == 'N' && buf[5] == 'E' && buf[6] == 'C' && buf[7] == 'T')
-    {
+    else if( strstr((char*)buf, RESP_MSG_CONNECT) != NULL){
         cid = x2i(buf[9]);
         _state.cid = cid;
         _state.n++;
@@ -421,7 +409,8 @@
     int cid, i;
     char *c;
 
-    if( (buf[0] < '0' || buf[0] > '8') )    return;
+//    if( (buf[0] < '0' || buf[0] > '8') )    return;
+    if( isdigit (buf[9])) return;
 
     cid = x2i(buf[0]);
     if( cid != _state.cid )                 return;
@@ -456,34 +445,25 @@
 
 void WizFi310::resWSTATUS (const char *buf)
 {
-    int idx=0,sep_cnt=0;
-    int ip_idx=0,gw_idx=0;
-
+    char* idx_ptr;
+ 
     if(_state.n == 0)
     {
         _state.n++;
     }
     else if(_state.n == 1)
     {
-        for(idx=0;buf[idx]!='\r';idx++)
-        {
-            if(buf[idx] =='/')
-            {
-                sep_cnt++;
-                continue;
-            }
+        idx_ptr = strtok((char*)buf, "/");  // Interface STA or AP
+        idx_ptr = strtok( NULL, "/");       // SSID
+        idx_ptr = strtok( NULL, "/");       // IP Addr
+        memset(_state.ip, 0, sizeof(_state.ip));
+        memcpy(_state.ip, idx_ptr, strlen(idx_ptr)+1);
+        
+        idx_ptr = strtok( NULL, "/");       // Gateway Addr
+        memset(_state.gateway, 0, sizeof(_state.gateway));
+        memcpy(_state.gateway, idx_ptr, strlen(idx_ptr)+1);
 
-            if( sep_cnt == 2)    // IP Address
-            {
-                _state.ip[ip_idx++] = buf[idx];
-            }
-            else if(sep_cnt == 3)
-            {
-                _state.gateway[gw_idx++] = buf[idx];
-            }
-        }
-        _state.ip[ip_idx] = '\0';
-        _state.gateway[gw_idx] = '\0';
         _state.res = RES_NULL;
     }
-}
\ No newline at end of file
+
+}