Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: WIZnet_Library mbed
Fork of HTTPServer_echoback_WIZ550io by
Revision 21:8f790ebb9f3c, committed 2015-12-30
- Comitter:
- sjallouli
- Date:
- Wed Dec 30 23:26:05 2015 +0000
- Parent:
- 20:f0c3af075949
- Commit message:
- Port to NUCLEO-STM32F401
Changed in this revision
--- a/W5500Interface.lib Tue Sep 23 23:41:25 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/teams/EthernetInterfaceW5500-makers/code/W5500Interface/#af0ed4fbca02
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WIZnet_Library.lib Wed Dec 30 23:26:05 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/WIZnet/code/WIZnet_Library/#cb8808b47e69
--- a/main.cpp Tue Sep 23 23:41:25 2014 +0000
+++ b/main.cpp Wed Dec 30 23:26:05 2015 +0000
@@ -1,157 +1,134 @@
#include "mbed.h"
-#include "EthernetInterface.h"
-//#include "EthernetInterfaceW5500.h"
+#include "WIZnetInterface.h"
#include <stdio.h>
#include <string.h>
-//#define PORT 80
-#define PORT 888
-#define _DHCP
-
-// move to main().
-//EthernetInterface eth;
+#define USE_DHCP 1
-// move to main().
-//TCPSocketServer svr;
+const char * IP_Addr = "192.168.1.2";
+const char * IP_Subnet = "255.255.255.0";
+const char * IP_Gateway = "192.168.1.1";
+unsigned char MAC_Addr[6] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xD0 };
+
+Serial pc(SERIAL_TX, SERIAL_RX);
+
+SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk
+
+#define PORT 80
+
bool serverIsListened = false;
-
-// move to main().
-//TCPSocketConnection client;
bool clientIsConnected = false;
-DigitalOut led1(LED1); //server listning status
-DigitalOut led2(LED2); //socket connecting status
-
-Ticker ledTick;
-
-void ledTickfunc()
-{
- if(serverIsListened) {
- led1 = !led1;
- } else {
- led1 = false;
- }
-}
int main (void)
{
-#if defined(TARGET_LPC1114)
- SPI spi(dp2, dp1, dp6); // mosi, miso, sclk
- EthernetInterface eth(&spi, dp25, dp26); // spi, cs, reset
+ spi.frequency(1000000);
+ WIZnetInterface ethernet(&spi,D10, D3);
-#elif defined(TARGET_LPC1768)
- SPI spi(p11, p12, p13); // mosi, miso, sclk
- EthernetInterface eth(&spi, p14, p15); // spi, cs, reset
+ pc.printf("Ethernet Init\r\n");
+#if USE_DHCP
+ int ret = ethernet.init(MAC_Addr);
+#else
+ int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
+#endif
-#elif defined(TARGET_LPC11U68)
- SPI spi(P0_9, P0_8, P1_29); // mosi, miso, sclk
- EthernetInterface eth(&spi, P0_2, P1_28);//, nRESET(p9); // reset pin is dummy, don't affect any pin of WIZ550io
- spi.format(8,0); // 8bit, mode 0
- spi.frequency(7000000); // 7MHz
- wait(1); // 1 second for stable state
-#elif defined (TARGET_NUCLEO_F030R8)
- SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk
- EthernetInterface eth(&spi, PB_6, PA_9);//, nRESET(p9); // reset pin is dummy, don't affect any pin of WIZ550io
- spi.format(8,0); // 8bit, mode 0
- spi.frequency(7000000); // 7MHz
- wait(1); // 1 second for stable state
-
-#endif
+ if (!ret)
+ {
+ pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress());
+ ret = ethernet.connect();
+
+ if (!ret)
+ {
+ pc.printf("IP: %s, MASK: %s, GW: %s\r\n", ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway());
+ }
+ else
+ {
+ pc.printf("Error ethernet.connect() - ret = %d\r\n", ret);
+ exit(0);
+ }
+ }
+ else
+ {
+ pc.printf("Error ethernet.init() - ret = %d\r\n", ret);
+ exit(0);
+ }
// late binding
TCPSocketServer svr;
TCPSocketConnection client;
-
- ledTick.attach(&ledTickfunc,0.5);
-
- /*
- //setup ethernet interface
- eth.init(); //Use DHCP
- eth.connect();
- printf("IP Address is %s\n\r", eth.getIPAddress());
- */
-
- printf("Board is on\r\n");
-#ifdef _DHCP
-// didn't test yet in DHCP => TEST OK...
-
- printf("eth.init()\r\n");
- eth.init(); //Use DHCP
- printf("eth.connect()\r\n");
- eth.connect();
- //printf("IP Address is %s\n\r", eth.getIPAddress());
- printf("Initialized, MAC: %s\n", eth.getMACAddress());
- printf("Connected, IP: %s, MASK: %s, GW: %s\n",
- eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
-
-#else
- // as your env. change to real IP address and so on.
- int ret = eth.init("222.98.173.212", "255.255.255.192", "222.98.173.254");
- if (!ret) {
- printf("Initialized, MAC: %s\n", eth.getMACAddress());
- printf("Connected, IP: %s, MASK: %s, GW: %s\n",
- eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
- } else {
- printf("Error eth.init() - ret = %d\n", ret);
+ //setup tcp socket
+ if(svr.bind(PORT)< 0)
+ {
+ pc.printf("tcp server bind failed.\n\r");
return -1;
- }
-#endif
-
- //setup tcp socket
- if(svr.bind(PORT)< 0) {
- printf("tcp server bind failed.\n\r");
- return -1;
- } else {
- printf("tcp server bind successed.\n\r");
+ }
+ else
+ {
+ pc.printf("tcp server bind successed.\n\r");
serverIsListened = true;
}
- if(svr.listen(1) < 0) {
- printf("tcp server listen failed.\n\r");
+ if(svr.listen(1) < 0)
+ {
+ pc.printf("tcp server listen failed.\n\r");
return -1;
- } else {
- printf("tcp server is listening...\n\r");
+ }
+ else
+ {
+ pc.printf("tcp server is listening...\n\r");
}
//listening for http GET request
- while (serverIsListened) {
- //blocking mode(never timeout)
- if(svr.accept(client)<0) {
- printf("failed to accept connection.\n\r");
- } else {
- printf("connection success!\n\rIP: %s\n\r",client.get_address());
- clientIsConnected = true;
- led2 = true;
+ while (serverIsListened)
+ {
+ //blocking mode(never timeout)
+ if(svr.accept(client)<0)
+ {
+ pc.printf("failed to accept connection.\n\r");
+ }
+ else
+ {
+ pc.printf("connection success!\n\rIP: %s\n\r",client.get_address());
+ clientIsConnected = true;
- while(clientIsConnected) {
- char buffer[1024] = {};
- switch(client.receive(buffer, 1023)) {
- case 0:
- printf("recieved buffer is empty.\n\r");
- clientIsConnected = false;
- break;
- case -1:
- printf("failed to read data from client.\n\r");
- clientIsConnected = false;
- break;
- default:
- printf("Recieved Data: %d\n\r\n\r%.*s\n\r",strlen(buffer),strlen(buffer),buffer);
- if(buffer[0] == 'G' && buffer[1] == 'E' && buffer[2] == 'T' ) {
- printf("GET request incomming.\n\r");
- //setup http response header & data
- char echoHeader[256] = {};
- sprintf(echoHeader,"HTTP/1.1 200 OK\n\rContent-Length: %d\n\rContent-Type: text\n\rConnection: Close\n\r\n\r",strlen(buffer));
- client.send(echoHeader,strlen(echoHeader));
- client.send(buffer,strlen(buffer));
- clientIsConnected = false;
- printf("echo back done.\n\r");
- }
- break;
- }
+ while(clientIsConnected)
+ {
+ char buffer[1024] = {};
+
+ switch(client.receive(buffer, 1023))
+ {
+ case 0:
+ pc.printf("recieved buffer is empty.\n\r");
+ clientIsConnected = false;
+ break;
+
+ case -1:
+ pc.printf("failed to read data from client.\n\r");
+ clientIsConnected = false;
+ break;
+
+ default:
+ pc.printf("Recieved Data: %d\n\r\n\r%.*s\n\r",strlen(buffer),strlen(buffer),buffer);
+
+ if(buffer[0] == 'G' && buffer[1] == 'E' && buffer[2] == 'T' )
+ {
+ pc.printf("GET request incomming.\n\r");
+ //setup http response header & data
+ char echoHeader[256] = {};
+ sprintf(echoHeader,"HTTP/1.1 200 OK\n\rContent-Length: %d\n\rContent-Type: text\n\rConnection: Close\n\r\n\r",strlen(buffer));
+ client.send(echoHeader,strlen(echoHeader));
+ client.send(buffer,strlen(buffer));
+ clientIsConnected = false;
+ pc.printf("echo back done.\n\r");
}
- printf("close connection.\n\rtcp server is listening...\n\r");
- client.close();
- led2 = false;
+
+ break;
}
+ }
+
+ pc.printf("close connection.\n\rtcp server is listening...\n\r");
+
+ client.close();
}
+ }
}
