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:
1:16e57103a7dd
Parent:
0:df571f8f8c03
Child:
5:72212beb817c
--- a/WizFi310/WizFi310_msg.cpp	Wed Oct 05 09:40:30 2016 +0000
+++ b/WizFi310/WizFi310_msg.cpp	Mon Oct 10 05:12:51 2016 +0000
@@ -27,11 +27,16 @@
 #define WIZ_DBG(x, ...)
 #endif
 
+//daniel
+char g_asyncbuf[256];
+
 // 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];
+    
     switch(_state.mode)
     {
         case MODE_COMMAND:
@@ -76,6 +81,7 @@
             break;
 
         case MODE_DATA_RX:
+            
             switch(sub)
             {
                 case 0:
@@ -90,6 +96,13 @@
                     count = 0;
                     len = 0;
                 }
+                //daniel add for mqtt
+                else if ( c == 'Q' )
+                {
+                    cid = 0;
+                    is_mqtt_data = 1;
+                }
+                //
                 else
                 {
                     _state.mode = MODE_COMMAND;
@@ -97,8 +110,9 @@
                 break;
 
             case 1:
-                // ip
-                if ((c >= '0' && c <= '9') || c == '.')
+                // ip                
+//                if ((c >= '0' && c <= '9') || c == '.')
+                if (((c >= '0' && c <= '9') || c == '.') && is_mqtt_data == 0 )
                 {
                     _con[cid].ip[count] = c;
                     count++;
@@ -109,7 +123,14 @@
                     _con[cid].port = 0;
                     sub++;
                 }
-                else
+                //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;
                 }
@@ -152,6 +173,7 @@
                 break;
 
             default:
+
                 if(_con[cid].buf != NULL)
                 {
                     _con[cid].buf->queue(c);
@@ -166,6 +188,8 @@
                 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;
                 }
@@ -176,7 +200,9 @@
 }
 
 
-#define MSG_TABLE_NUM 6
+//#define MSG_TABLE_NUM 6
+//daniel
+#define MSG_TABLE_NUM 8
 #define RES_TABLE_NUM 7
 int WizFi310::parseMessage () {
     int i;
@@ -192,6 +218,9 @@
         {"[CONNECT ",               &WizFi310::msgConnect},
         {"[DISCONNECT ",            &WizFi310::msgDisconnect},
         {"[LISTEN ",                &WizFi310::msgListen},
+        //daniel
+        {"[MQTT CONNECT]",               &WizFi310::msgMQTTConnect},
+        {"[MQTT DISCONNECT]",               &WizFi310::msgMQTTDisconnect},
     };
     static const struct RES_TABLE{
         const Response res;
@@ -286,6 +315,35 @@
     _con[cid].connected = false;
 }
 
+
+void WizFi310::msgMQTTConnect (const char *buf)
+{
+    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;
+    _con[cid].parent = cid;
+    
+    _con[cid].connected = true;
+    _state.res = RES_NULL;
+    _state.ok = true;
+}
+
+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;
+}
+
+
 void WizFi310::msgListen (const char *buf)
 {
     int cid;
@@ -428,4 +486,4 @@
         _state.gateway[gw_idx] = '\0';
         _state.res = RES_NULL;
     }
-}
+}
\ No newline at end of file