TCP Echo Server Example using WizFi310

Dependencies:   NetworkSocketAPI WizFi310Interface mbed

Prerequisite

This example shows that Wizwiki-W7500 and WizFi310 operates as a TCP server. When receiving data from a TCP client, it returns same data.

To implement this function, you need a Platform board and Wi-Fi board. Below are what we used.

  • WIZwiki-W7500 from WIZnet (Platform board)
  • WizFi310 from WIZnet (Wi-Fi board)

WIZwiki-W7500 Pin map

pin map

  • D0 is for RXD, D1 is for TXD
  • D6 is for CTS, D7 is for RTS
  • D9 is for RESET

WizFi310 Pin map

pin map

  • J1 is for RXD, J3 is for TXD
  • SW6-1 is connected to D6 for RTS, SW6-2 is connected to D7 for CTS
  • SW5-3 is connected to D9 for RESET

Software

Connect to Wi-Fi

wifi.connect(AP_SSID, AP_PASSWORD, AP_SECURITY);

Get information

const char *ip = wifi.get_ip_address();
const char *mac = wifi.get_mac_address();

Receive data and return to TCP client

while (true)
{
    int n = clt_sock.recv(buffer, sizeof(buffer));
    if( n < 0 )
    {
        clt_sock.close();
        srv.close();
    }
    if( n > 0 )
    {
        buffer[n] = '\0';
        printf("length : %d\r\n", n);
        clt_sock.send(buffer, n);
    }
}

Caution

TCP client and server should be in a same network.

Files at this revision

API Documentation at this revision

Comitter:
kaizen
Date:
Mon Apr 17 06:45:17 2017 +0000
Child:
1:5981ba4a8323
Commit message:
Added TCP Echo Server Example using WizFi310

Changed in this revision

NetworkSocketAPI.lib Show annotated file Show diff for this revision Revisions of this file
WizFi310Interface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NetworkSocketAPI.lib	Mon Apr 17 06:45:17 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/teams/NetworkSocketAPI/code/NetworkSocketAPI/#ea3a618e0818
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WizFi310Interface.lib	Mon Apr 17 06:45:17 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/teams/WIZnet/code/WizFi310Interface/#176b6f3addd6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 17 06:45:17 2017 +0000
@@ -0,0 +1,81 @@
+/* NetworkSocketAPI Example Program
+ * Copyright (c) 2015 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include "mbed.h"
+#include "TCPSocket.h"
+#include "mbed.h"
+#include "WizFi310Interface.h"
+#include "TCPSocket.h"
+#include "TCPServer.h"
+
+#define TARGET_NUCLEO_F411RE
+
+
+#if defined(TARGET_NUCLEO_F411RE)
+Serial pc(USBTX, USBRX);
+//WizFi310Internet wifi(PA_11, PA_12, D6, D7, D3, NC, 115200);
+WizFi310Interface wifi(D8, D2, D7, D6, D9, NC, 115200);
+#endif
+
+#if defined(TARGET_WIZwiki_W7500)
+Serial pc(USBTX, USBRX);
+WizFi310Interface wifi(D1, D0, D7, D6, D8, NC, 115200);
+#endif
+
+#define AP_SSID "DIR-815_Wiznet"
+#define AP_PASSWORD "12345678"
+#define AP_SECURITY NSAPI_SECURITY_WPA2
+
+int main()
+{
+    pc.baud(115200);
+    printf("WizFi310 NetworkSocketAPI TCP Client Example\r\n");
+    
+    wifi.connect(AP_SSID, AP_PASSWORD, AP_SECURITY);
+    
+    const char *ip = wifi.get_ip_address();
+    const char *mac = wifi.get_mac_address();
+    printf("IP address is: %s\r\n", ip ? ip : "No IP");
+    printf("MAC address is: %s\r\n", mac ? mac : "No MAC");
+
+    TCPServer srv;
+    TCPSocket clt_sock;
+    SocketAddress clt_addr;
+    
+    srv.open(&wifi);
+    srv.set_blocking(true);
+    srv.bind(80);
+    srv.listen();
+    srv.accept(&clt_sock);
+
+    char buffer[512];
+
+    while (true)
+    {
+        int n = clt_sock.recv(buffer, sizeof(buffer));
+        if( n < 0 )
+        {
+            clt_sock.close();
+            srv.close();
+        }
+        if( n > 0 )
+        {
+            buffer[n] = '\0';
+            printf("length : %d\r\n", n);
+            clt_sock.send(buffer, n);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Apr 17 06:45:17 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed/builds/97feb9bacc10
\ No newline at end of file