How to implement WIZ550io on FRDM-KL25Z. Refer to http://wizwiki.net/wiki/doku.php
Dependencies: W5500Interface mbed
Refer to http://www.youtube.com/watch?v=i77zoV5tnbE
main.cpp
- Committer:
- bingdo
- Date:
- 2014-10-29
- Revision:
- 2:11f7f413e10d
- Parent:
- 1:2d33dfc71ea6
File content as of revision 2:11f7f413e10d:
#include "mbed.h" #include "EthernetInterface.h" //#include "EthernetInterfaceW5500.h" #include <stdio.h> #include <string.h> #define PORT 80 //#define PORT 888 #define _DHCP // move to main(). //EthernetInterface eth; // move to main(). //TCPSocketServer svr; 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 wait(1); // 1 second for stable state #elif defined(TARGET_LPC1768) SPI spi(p11, p12, p13); // mosi, miso, sclk EthernetInterface eth(&spi, p14, p15); // spi, cs, reset wait(1); // 1 second for stable state #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_KL25Z) SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk EthernetInterface eth(&spi, PTD0, PTA20);//, nRESET(PTA20); // reset pin is dummy, don't affect any pin of WIZ550io spi.format(8,0); // 8bit, mode 0 wait(1); // 1 second for stable state #endif // 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()); */ #ifdef _DHCP // didn't test yet in DHCP => TEST OK... eth.init(); //Use DHCP eth.connect(); //printf("IP Address is %s\n\r", eth.getIPAddress()); printf("Initialized, MAC: %s\n\r", eth.getMACAddress()); printf("Connected, IP: %s, MASK: %s, GW: %s\n\r", 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\r", eth.getMACAddress()); printf("Connected, IP: %s, MASK: %s, GW: %s\n\r", eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); } else { printf("Error eth.init() - ret = %d\n\r", ret); 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"); serverIsListened = true; } if(svr.listen(1) < 0) { printf("tcp server listen failed.\n\r"); return -1; } else { 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(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; } } printf("close connection.\n\rtcp server is listening...\n\r"); client.close(); led2 = false; } } }