TCP, NTP and server Ethernet and WI-FI example working on OS5.15
Revision 3:91523db40ebd, committed 2020-03-08
- Comitter:
- star297
- Date:
- Sun Mar 08 14:32:56 2020 +0000
- Parent:
- 2:06cbf3f53592
- Child:
- 4:3db4aca72fbd
- Commit message:
- Updated stuff
Changed in this revision
--- a/NTPclient.lib Fri Feb 28 16:13:54 2020 +0000 +++ b/NTPclient.lib Sun Mar 08 14:32:56 2020 +0000 @@ -1,1 +1,1 @@ -https://os.mbed.com/users/star297/code/NTPclient/#f4a3adebed16 +NTPclient#3854dc7bd4de
--- a/main.cpp Fri Feb 28 16:13:54 2020 +0000
+++ b/main.cpp Sun Mar 08 14:32:56 2020 +0000
@@ -1,44 +1,62 @@
#include "mbed.h"
-#include "EthernetInterface.h"
+#include "NetworkInterface.h"
#include "NTPclient.h"
#define IP "192.168.1.180"
#define GATEWAY "192.168.1.1"
#define NETMASK "255.255.255.0"
-#define PORT 80
+#define PORT 80
-// set required stdio buad rate in mbed_app.json. eg,"platform.stdio-baud-rate": 115200
-
-EthernetInterface net;
-NTPclient ntp(net);
+NetworkInterface *net = NetworkInterface::get_default_instance();
+NTPclient ntp(*net);
DigitalOut led(LED1);
+time_t seconds;
char *sendbuffer = new char[512]; // create data send buffer space
+char recevbuffer[1024]; // create http receive buffer space
int main()
-{
- led=0;
-
+{
printf("\033[0m\033[2J\033[HTCP NTP client and server example\r\n\n\n"); // Tera Term clear screen
+ seconds = time(NULL);
+ printf("Initial RTC time: %s\r\n", ctime(&seconds));
+
+ // Include to set static IP
+ int net_static = net->set_network((SocketAddress)IP,(SocketAddress)NETMASK,(SocketAddress)GATEWAY);
- time_t seconds = time(NULL);
- printf("Initial RTC time: %s\r\n", ctime(&seconds));
-
- EthernetInterface eth;
+ printf("Connecting to network...\n\n");
+
+ if (!net) {
+ printf("No network interface found, select an interface in 'mbed_app.json'\n");
+ return NULL;
+ }
+ nsapi_error_t connect_status = net->connect();
+ if (connect_status != NSAPI_ERROR_OK) {
+ printf("Failed to connect to network (%d)\n", connect_status);
+ return NULL;
+ }
- eth.set_network (IP, NETMASK, GATEWAY); // include to set network connection with static parameters.
-
- eth.connect();
-
- const char *ip = eth.get_ip_address();
+ SocketAddress net_addr;
+ net->get_ip_address(&net_addr);
+ printf("IP address: %s\n", net_addr.get_ip_address() ? net_addr.get_ip_address() : "None");
+ net->get_netmask(&net_addr);
+ printf("Netmask: %s\n", net_addr.get_ip_address() ? net_addr.get_ip_address() : "None");
+ net->get_gateway(&net_addr);
+ printf("Gateway: %s\n", net_addr.get_ip_address() ? net_addr.get_ip_address() : "None");
+ printf("MAC: %s\n", net->get_mac_address());
+
+ net->get_ip_address(&net_addr);
+ const char *ip = net_addr.get_ip_address();
+
if(ip){
- printf("Connected\n\nGet NTP time...\n");
- if(ntp.setTime("0.pool.ntp.org",123,3000)==0){
- time_t seconds = time(NULL);
- printf("System time set by NTP: %s\n\n", ctime(&seconds));
+ printf("\nConnected\n\nGet NTP time...\n");
+ if(ntp.getNTP("0.pool.ntp.org",0,1,1)){
+ seconds = time(NULL);
+ printf("RTC time set by NTP: %s\n\n", ctime(&seconds));
}
- else{printf("No NTP could not set RTC !!\n\n");}
+ else{printf("No NTP could not set RTC !!\n\n");
+ }
}else{
printf("No IP!!\n");
while(1);
@@ -47,32 +65,29 @@
TCPSocket srv;
TCPSocket *client_sock; // srv.accept() will return pointer to socket
SocketAddress client_addr;
-
- // Open the server on ethernet stack
- srv.open(ð);
- // Bind the HTTP port (TCP 80) to the server
- srv.bind(eth.get_ip_address(), PORT);
- //Can handle x simultaneous connections
- srv.listen(1);
+
+ // Open the server on ethernet stack
+ srv.open(net);
+ // Bind the HTTP port (TCP 80) to the server
+ srv.bind(80);
+ //Can handle x simultaneous connections
+ srv.listen(5);
printf("The Server IP address: '%s'\n", ip);
printf("Waiting for connection....\r\n\n");
-
-
- led=1;
-
- while(1){
- client_sock = srv.accept(); //return pointer of a client socket
- char *recevbuffer = new char[256]; // create 'clean' http receive buffer space
- client_sock->recv(recevbuffer, 256); // set size of required receive data length
- client_sock->getpeername(&client_addr); //this will fill address of client to the SocketAddress object
+
+ while(1){
+
+ client_sock = srv.accept(); //return pointer of a client socket
+ led=1;
+ client_sock->recv(recevbuffer, 1024); // set size of required receive data length
+ client_sock->getpeername(&client_addr); //this will fill address of client to the SocketAddress object
printf("Accepted %s:%d\n\n", client_addr.get_ip_address(), client_addr.get_port());
printf("Received Msg:\n%s\n\n", recevbuffer);
time_t seconds = time(NULL); //get current mcu rtc time
sprintf(sendbuffer,"HTTP/1.1 200 OK\n Content-type: text/plain\r\n\r\n <h1> Hello !!</h1>\r\n\n <h1>Time is: %s</h1>\r\n", ctime(&seconds));
client_sock->send(sendbuffer, strlen(sendbuffer)); // send data in buffer to http port.
client_sock->close();
- delete[] recevbuffer; // delete http buffer
+ led=0;
}
-
}
--- a/mbed_app.json Fri Feb 28 16:13:54 2020 +0000
+++ b/mbed_app.json Sun Mar 08 14:32:56 2020 +0000
@@ -1,9 +1,26 @@
{
"target_overrides": {
- "*": {
- "target.features": ["LWIP"],
- "target.release_versions": ["2", "5"],
- "platform.stdio-baud-rate": 115200
+ "*": {
+ "platform.stdio-baud-rate": 921600,
+ "platform.stdio-convert-newlines": true,
+ "mbed-trace.enable": null,
+ "nsapi.default-wifi-security": "WPA_WPA2",
+ "nsapi.default-wifi-ssid": "\"Molino Metz\"",
+ "nsapi.default-wifi-password": "\"36693557\""
+ },
+ "NUCLEO_F767ZI": {
+ "target.network-default-interface-type" : "ETHERNET",
+ "esp8266.serial-baudrate" : 460800,
+ "esp8266.tx" : "D1",
+ "esp8266.rx" : "D0",
+ "esp8266.provide-default" : true
+ },
+ "NUCLEO_H743ZI2": {
+ "target.network-default-interface-type" : "ETHERNET",
+ "esp8266.serial-baudrate" : 460800,
+ "esp8266.tx" : "D1",
+ "esp8266.rx" : "D0",
+ "esp8266.provide-default" : true
}
}
}