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 Feb 26 06:30:37 2021 +0000
Parent:
7:cbb5a2a2a0d2
Commit message:
Fix code to compliant Mbed OS 6 but still set to Mbed OS 5 as default.; Remove BufferedSerial library if switch to Mbed OS 6 before compile.

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
ste_config.h Show annotated file Show diff for this revision Revisions of this file
uweb_server.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/BufferedSerial.lib	Wed Feb 26 07:55:51 2020 +0000
+++ b/BufferedSerial.lib	Fri Feb 26 06:30:37 2021 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/sam_grove/code/BufferedSerial/#7e5e866edd3d
+https://os.mbed.com/users/sam_grove/code/BufferedSerial/#7e5e866edd3d
--- a/NuMaker-mbed-SD-driver.lib	Wed Feb 26 07:55:51 2020 +0000
+++ b/NuMaker-mbed-SD-driver.lib	Fri Feb 26 06:30:37 2021 +0000
@@ -1,1 +1,1 @@
-https://github.com/OpenNuvoton/NuMaker-mbed-SD-driver/#56406071a4468a8302c0717a4467a241d152ade2
+https://github.com/OpenNuvoton/NuMaker-mbed-SD-driver/#8027c2c886a6bb2d850d3121ec3e2e179450e41c
--- a/README.md	Wed Feb 26 07:55:51 2020 +0000
+++ b/README.md	Fri Feb 26 06:30:37 2021 +0000
@@ -23,6 +23,11 @@
 
 ## Configuration
 
+* Mbed OS version
+
+The template set Mbed OS 5 as defalut but it has been updated for Mbed OS 6.
+Because BufferedSerial has built in Mbed OS 6, the BufferedSerial library in the template has to be removed if you switch Mbed OS to version 6 to avoid conflict.
+
 * Following configurations are set in ste_config.h
 
 ENABLE_WEB_CONFIG
--- a/main.cpp	Wed Feb 26 07:55:51 2020 +0000
+++ b/main.cpp	Fri Feb 26 06:30:37 2021 +0000
@@ -5,10 +5,8 @@
  * 
  *
  */
- 
 #include "ste_config.h"
 
-
 /* If choose static IP, specify the default IP address here. */
 #if 0
     // private IP address for general purpose
@@ -27,14 +25,26 @@
 S_NET_CONFIG net_config = {IP_STATIC_MODE, IP_ADDRESS, NETWORK_MASK, GATEWAY_ADDRESS};
 
 #if defined (TARGET_NUMAKER_PFM_M487) || defined(TARGET_NUMAKER_IOT_M487)
+#if MBED_MAJOR_VERSION <= 5
 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
+#else
+BufferedSerial serial_0(PB_3, PB_2);    // UART1
+BufferedSerial serial_1(PA_5, PA_4);    // UART5
+//BufferedSerial serial_2(PB_13, PB_12);  // UART0, Debug
+#endif
 
 #elif defined (TARGET_NUMAKER_PFM_NUC472)
+#if MBED_MAJOR_VERSION <= 5
 BufferedSerial serial_0(PH_1, PH_0, 256, 4);    // UART4
 BufferedSerial serial_1(PG_2, PG_1, 256, 4);    // UART0
 BufferedSerial serial_2(PC_11, PC_10, 256, 4);  // UART2
+#else
+BufferedSerial serial_0(PH_1, PH_0);    // UART4
+BufferedSerial serial_1(PG_2, PG_1);    // UART0
+BufferedSerial serial_2(PC_11, PC_10);  // UART2
+#endif
 
 #elif defined (TARGET_NUMAKER_PFM_M453) || defined(TARGET_NUMAKER_PFM_NANO130) || defined(TARGET_NUMAKER_PFM_M2351)
 #error The board has no Ethernet.
@@ -123,8 +133,17 @@
         /*** Serial to Network ***/
 
         // try to get more data from serial port
+#if MBED_MAJOR_VERSION <= 5        
         for(; s_index < sizeof(s_buf) && pmap->pserial->readable(); s_index++)
             s_buf[s_index] = pmap->pserial->getc();
+#else
+        if (pmap->pserial->readable())
+        {
+            s_len = pmap->pserial->read(s_buf+s_index, sizeof(s_buf)-s_index);
+            if (s_len > 0)
+                s_index += s_len;
+        }
+#endif
         
         if (s_index >= 240 || (s_index != 0 && ++eth_tx_count >= 5))
         {
@@ -162,7 +181,7 @@
 
     printf("Thread %x in TCP client mode.\r\n", (unsigned int)pmap);
 
-    if ((err=socket.open(&eth)) < 0)
+    if ((err=socket.open(&eth)) != NSAPI_ERROR_OK)
     {
         printf("TCP socket can't open (%d)(%x).\r\n", err, (unsigned int)pmap);
         return;
@@ -194,12 +213,12 @@
     
     printf("Thread %x in TCP server mode.\r\n", (unsigned int)pmap);
     
-    if ((err=tcp_server.open(&eth)) < 0)
+    if ((err=tcp_server.open(&eth)) != NSAPI_ERROR_OK)
     {
         printf("TCP server can't open (%d)(%x).\r\n", err, (unsigned int)pmap);
         return;
     }
-    if ((err=tcp_server.bind(pmap->port)) < 0)
+    if ((err=tcp_server.bind(pmap->port)) != NSAPI_ERROR_OK)
     {
         printf("TCP server can't bind address and port (%d)(%x).\r\n", err, (unsigned int)pmap);
         return;
@@ -213,7 +232,7 @@
     while(1)
     {   
         client_socket = tcp_server.accept(&err);
-        if (err < 0) // && err != NSAPI_ERROR_WOULD_BLOCK)
+        if (err != NSAPI_ERROR_OK && err != NSAPI_ERROR_WOULD_BLOCK)
         {
             printf("TCP server fail to accept connection (%d)(%x).\r\n", err, (unsigned int)pmap);
             return;
@@ -295,8 +314,13 @@
     printf("Configure UART ports...\r\n");
     for(int i=0; i<MAX_UART_PORTS; i++)
     {
+#if MBED_MAJOR_VERSION <= 5
         port_config[i].pserial->baud(port_config[i].baud);
         port_config[i].pserial->format(port_config[i].data, port_config[i].parity, port_config[i].stop);
+#else
+        port_config[i].pserial->set_baud(port_config[i].baud);
+        port_config[i].pserial->set_format(port_config[i].data, port_config[i].parity, port_config[i].stop);
+#endif        
     }
     
     /* Configure network IP address */
--- a/mbed-os.lib	Wed Feb 26 07:55:51 2020 +0000
+++ b/mbed-os.lib	Fri Feb 26 06:30:37 2021 +0000
@@ -1,1 +1,1 @@
-https://github.com/ARMmbed/mbed-os/#c12b433026beae5b3b769c27941bc6d7fe5d4b27
+https://github.com/ARMmbed/mbed-os/#b114a9c878519d6489ac3426697196bbea34c8ea
--- a/mbed_app.json	Wed Feb 26 07:55:51 2020 +0000
+++ b/mbed_app.json	Fri Feb 26 06:30:37 2021 +0000
@@ -12,10 +12,10 @@
         "*": {
             "platform.stdio-baud-rate"          : 115200,
             "platform.stdio-convert-newlines"   : true,
-            "lwip.socket-max": 8,
-            "lwip.tcp-socket-max": 8, 
-            "lwip.tcp-server-max": 8, 
-            "lwip.udp-socket-max": 8       
+            "lwip.socket-max"                   : 8,
+            "lwip.tcp-socket-max"               : 8, 
+            "lwip.tcp-server-max"               : 8, 
+            "lwip.udp-socket-max"               : 8       
         }
     }
 }
--- a/ste_config.h	Wed Feb 26 07:55:51 2020 +0000
+++ b/ste_config.h	Fri Feb 26 06:30:37 2021 +0000
@@ -10,10 +10,13 @@
 
 #include "mbed.h"
 #include "EthernetInterface.h"
-#include "BufferedSerial.h"
 #include "FATFileSystem.h"
 #include "NuSDBlockDevice.h"
 
+#if MBED_MAJOR_VERSION <= 5
+#include "BufferedSerial.h"
+#endif
+
 /* A simple web server for network and UART configuration
    0: Disable the web server.
    1: Enable the web server
@@ -76,7 +79,7 @@
     unsigned short  server_port;    // Server port for TCP client mode
 } S_PORT_CONFIG;
 
-extern RawSerial output;        // for debug output
+//extern RawSerial output;        // for debug output
 extern EthernetInterface eth;
 extern S_PORT_CONFIG port_config[MAX_UART_PORTS];
 extern S_NET_CONFIG net_config;
--- a/uweb_server.cpp	Wed Feb 26 07:55:51 2020 +0000
+++ b/uweb_server.cpp	Fri Feb 26 06:30:37 2021 +0000
@@ -504,7 +504,7 @@
 
     if (http_server.open(&eth) < 0)
     {
-        printf("http server can't open.\r\n");
+        printf("http server can't be created.\r\n");
         return;
     }
     if (http_server.bind(80) < 0)