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:
4:176b6f3addd6
Parent:
3:dae9a0924a73
Child:
5:72212beb817c
--- a/WizFi310Interface.cpp	Wed Apr 12 05:18:09 2017 +0000
+++ b/WizFi310Interface.cpp	Mon Apr 17 06:44:26 2017 +0000
@@ -100,6 +100,7 @@
     int id;
     nsapi_protocol_t proto;
     bool connected;
+    uint16_t port;
 };
 
 int WizFi310Interface::socket_open(void **handle, nsapi_protocol_t proto)
@@ -154,12 +155,29 @@
 
 int WizFi310Interface::socket_bind(void *handle, const SocketAddress &address)
 {
-    return NSAPI_ERROR_UNSUPPORTED;
+    struct wizfi310_socket *socket = (struct wizfi310_socket *)handle;
+    socket->port = address.get_port();
+    
+    return 0;
 }
 
 int WizFi310Interface::socket_listen(void *handle, int backlog)
 {
-    return NSAPI_ERROR_UNSUPPORTED;
+    int cid=-1;
+    struct wizfi310_socket *socket = (struct wizfi310_socket *)handle;
+
+    if((cid = _wizfi310.listen(WizFi310::PROTO_TCP, socket->port)) == -1 )
+    {
+        return NSAPI_ERROR_DEVICE_ERROR;
+    }
+    if(cid >= WIZFI310_SOCKET_COUNT)
+    {
+        return NSAPI_ERROR_NO_SOCKET;
+    }
+    _ids[cid] = true;
+    socket->id = cid;
+    socket->connected = false;
+    return 0;
 }
 
 int WizFi310Interface::socket_connect(void *handle, const SocketAddress &addr)
@@ -187,7 +205,30 @@
     
 int WizFi310Interface::socket_accept(void **handle, void *server)
 {
-    return NSAPI_ERROR_UNSUPPORTED;
+    struct wizfi310_socket *socket = (struct wizfi310_socket *)server;
+    struct wizfi310_socket *new_socket = new struct wizfi310_socket;
+
+    if( !new_socket )
+    {
+        return NSAPI_ERROR_NO_SOCKET;
+    }
+
+    memset(new_socket, 0, sizeof(new_socket));
+
+    for(int cid=0; cid<WIZFI310_SOCKET_COUNT; cid++)
+    {
+        if( _wizfi310.accept(cid) != -1 )
+        {
+            _ids[cid] = true;
+            new_socket->id = cid;
+            new_socket->connected = true;
+
+            *handle = new_socket;
+            return 0;
+        }
+    }
+
+    return NSAPI_ERROR_WOULD_BLOCK;
 }
 
 int WizFi310Interface::socket_send(void *handle, const void *data, unsigned size)
@@ -206,9 +247,12 @@
     struct wizfi310_socket *socket = (struct wizfi310_socket *)handle;
  
     int32_t recv = _wizfi310.recv(socket->id, (char*)data, size);
-    if (recv <= 0) {
+    if (recv == 0) {
         return NSAPI_ERROR_WOULD_BLOCK;
     }
+    else if(recv == -1){
+        return NSAPI_ERROR_NO_SOCKET;
+    }
  
     return recv;
 }