Transfer data between UART ports and Ethernet.

Dependencies:   BufferedSerial

Transfer data between UART ports and Ethernet.

  • Support multiple UART ports.
  • Support fixed IP address and DHCP.
  • Support TCP server and TCP client modes.
  • Support a simple web server for UART and Ethernet configuration.

Files at this revision

API Documentation at this revision

Comitter:
morgandu
Date:
Fri Mar 22 09:59:52 2019 +0000
Parent:
5:7e7ad7c079fe
Child:
7:cbb5a2a2a0d2
Commit message:
Update to MbedOS v5.11; Update NuMaker-mbed-SD-driver; Fix socket control due to MbedOS upgrade; Support NuMaker-IoT-M487 board

Changed in this revision

BufferedSerial.lib Show annotated file Show diff for this revision Revisions of this file
NuMaker-mbed-SD-driver.lib Show annotated file Show diff for this revision Revisions of this file
README.md 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-os.lib Show annotated file Show diff for this revision Revisions of this file
mbed_app.json Show annotated file Show diff for this revision Revisions of this file
--- a/BufferedSerial.lib	Fri Apr 20 10:51:28 2018 +0000
+++ b/BufferedSerial.lib	Fri Mar 22 09:59:52 2019 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/sam_grove/code/BufferedSerial/#a0d37088b405
+http://mbed.org/users/sam_grove/code/BufferedSerial/#7e5e866edd3d
--- a/NuMaker-mbed-SD-driver.lib	Fri Apr 20 10:51:28 2018 +0000
+++ b/NuMaker-mbed-SD-driver.lib	Fri Mar 22 09:59:52 2019 +0000
@@ -1,1 +1,1 @@
-https://github.com/OpenNuvoton/NuMaker-mbed-SD-driver/#7b763a96fa361da47a294efbe4bc201f7fb9c818
+https://github.com/OpenNuvoton/NuMaker-mbed-SD-driver/#620965ef5b323ed1c80c3ada9241daf49e487a41
--- a/README.md	Fri Apr 20 10:51:28 2018 +0000
+++ b/README.md	Fri Mar 22 09:59:52 2019 +0000
@@ -3,8 +3,12 @@
 This example shows how to transfer data between serial port and ethernet.
 
 ## Required hardware
-* A supported target - [NuMaker-PFM-M487](https://os.mbed.com/platforms/NUMAKER-PFM-M487/), [Numaker-PFM-NUC472](https://os.mbed.com/platforms/Nuvoton-NUC472/).
-* MicroSD card is optional to store configuration.
+* A supported target -
+ [NuMaker-IoT-M487](https://os.mbed.com/platforms/NUMAKER-IOT-M487/)
+ [NuMaker-PFM-M487](https://os.mbed.com/platforms/NUMAKER-PFM-M487/)
+ [Numaker-PFM-NUC472](https://os.mbed.com/platforms/Nuvoton-NUC472/)
+ 
+* MicroSD card is optional. It uses to store configuration when existed.
 
 ## Compile Settings
 
--- a/main.cpp	Fri Apr 20 10:51:28 2018 +0000
+++ b/main.cpp	Fri Mar 22 09:59:52 2019 +0000
@@ -25,7 +25,7 @@
 /* Default configuration for network */
 S_NET_CONFIG net_config = {IP_STATIC_MODE, IP_ADDRESS, NETWORK_MASK, GATEWAY_ADDRESS};
 
-#if defined (TARGET_NUMAKER_PFM_M487)
+#if defined (TARGET_NUMAKER_PFM_M487) || defined(TARGET_NUMAKER_IOT_M487)
 BufferedSerial serial_0(PB_3, PB_2, 256, 4);    // UART1
 BufferedSerial serial_1(PA_5, PA_4, 256, 4);    // UART5
 //BufferedSerial serial_2(PB_13, PB_12, 256, 4);  // UART0, Debug
@@ -108,7 +108,6 @@
             else if (n_len < 0)
             {
                 printf("Socket Recv Err (%d)\r\n", n_len);
-                psocket->close();
                 break;
             }
         }
@@ -139,7 +138,6 @@
             else if (s_len < 0)
             {
                 printf("Socket Send Err (%d)\r\n", s_len);
-                psocket->close();
                 break;
             }
             else // s_len >= s_index
@@ -183,12 +181,13 @@
     
     socket.set_timeout(1);
     exchange_data(pmap, &socket);
+    socket.close();
 }
 
 void bridge_net_server(S_PORT_CONFIG *pmap)
 {
-    TCPServer tcp_server;
-    TCPSocket client_socket;
+    TCPSocket tcp_server;
+    TCPSocket *client_socket;
     SocketAddress client_address;
     nsapi_error_t err;
     
@@ -210,19 +209,23 @@
         return;
     }
 
-    client_socket.set_timeout(1);
-
     while(1)
     {   
-        if ((err=tcp_server.accept(&client_socket, &client_address)) < 0)
+        client_socket = tcp_server.accept(&err);
+        if (err < 0) // && err != NSAPI_ERROR_WOULD_BLOCK)
         {
             printf("TCP server fail to accept connection (%d)(%x).\r\n", err, (unsigned int)pmap);
             return;
         }
-
-        printf("Connect (%d) from %s:%d ...\r\n", pmap->port, client_address.get_ip_address(), client_address.get_port());
-
-        exchange_data(pmap, &client_socket);        
+        else
+        {
+            client_socket->getpeername(&client_address);
+            printf("Connect (%d) from %s:%d ...\r\n", pmap->port, client_address.get_ip_address(), client_address.get_port());
+  
+            client_socket->set_timeout(1);
+            exchange_data(pmap, client_socket);
+            client_socket->close();
+        }
     }
 }   
 
--- a/mbed-os.lib	Fri Apr 20 10:51:28 2018 +0000
+++ b/mbed-os.lib	Fri Mar 22 09:59:52 2019 +0000
@@ -1,1 +1,1 @@
-https://github.com/ARMmbed/mbed-os/#f9ee4e849f8cbd64f1ec5fdd4ad256585a208360
+https://github.com/ARMmbed/mbed-os/#51d55508e8400b60af467005646c4e2164738d48
--- a/mbed_app.json	Fri Apr 20 10:51:28 2018 +0000
+++ b/mbed_app.json	Fri Mar 22 09:59:52 2019 +0000
@@ -14,15 +14,6 @@
           "lwip.tcp-socket-max": 8, 
           "lwip.tcp-server-max": 8, 
           "lwip.udp-socket-max": 8       
-        },
-        "NUMAKER_PFM_NUC472": {
-            "SD_DAT0": "PF_5",
-            "SD_DAT1": "PF_4",
-            "SD_DAT2": "PF_3",
-            "SD_DAT3": "PF_2",
-            "SD_CMD":  "PF_7",
-            "SD_CLK":  "PF_8",
-            "SD_CD":   "PF_6"
         }
     }
 }