Nucleo_L152RE_W5500HelloWorld_ver2

Dependencies:   SDFileSystem WIZnet_Library mbed

Fork of Nucleo_L152RE_W5500HelloWorld by Edward ahn

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // Nucloe_L152RE_W5500_Ethernet shield Exmaple
00002 
00003 #include "mbed.h"
00004 #include "WIZnetInterface.h"
00005 #include "SDFileSystem.h"
00006 #include "UDPSocket.h"
00007 
00008 //#define USE_DHCP    1 // DHCP 사용할때 사용
00009 
00010 #define TCP_PORT        5000
00011 #define UDP_PORT        7000
00012 
00013 const char * IP_Addr    = "192.168.0.194";
00014 const char * IP_Subnet  = "255.255.255.0";
00015 const char * IP_Gateway = "192.168.0.1";
00016 unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x01,0x02,0x03};
00017 
00018 const char * UDP_IP = "0.0.0.0";
00019 
00020 SDFileSystem sd(PA_7, PA_6, PA_5, PB_5, "sd");
00021 
00022 DigitalOut myled1(LED1);
00023 Serial pc(USBTX, USBRX);
00024 
00025 SPI spi(PA_7, PA_6, PA_5); // mosi, miso, sclk
00026 WIZnetInterface ethernet(&spi, PB_6, PC_7);//scs(PB_6), nRESET(PA_9); // reset pin is dummy, don't affect any pin of WIZ550io
00027 
00028 int main() {
00029         
00030     //Set serial port baudrate speed: 115200
00031     pc.baud(115200);
00032     wait(10);
00033     pc.printf("W5500 Application Started \r\n");
00034 
00035     char buffer[128];
00036 
00037     //SD-CARD
00038     printf("Hello World!\n");   
00039     mkdir("/sd/mydir", 0777);
00040     FILE *fp = fopen("/sd/mydir/sdtest.txt", "w");
00041     if(fp == NULL) {
00042         error("Could not open file for write\n");
00043     }
00044     fprintf(fp, "Hello fun SD Card World!");
00045     fclose(fp); 
00046     printf("Goodbye World!\r\n");
00047     //SD-CARD END 
00048     
00049     while(1)
00050     {
00051         #if USE_DHCP
00052         pc.printf("DHCP ON \r\n");
00053         int ret = ethernet.init(MAC_Addr);
00054         #else
00055         pc.printf("DHCP OFF \r\n");
00056         int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
00057         #endif
00058         
00059         
00060         printf("SPI Initialized \r\n");
00061         wait(1); // 1 second for stable state
00062         
00063         printf("W5500 Networking Started \r\n");
00064         wait(1); // 1 second for stable state
00065         
00066         
00067         if (!ret) {
00068             pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress());
00069             ret = ethernet.connect();
00070             if (!ret) {
00071                 pc.printf("IP: %s, MASK: %s, GW: %s\r\n",
00072                           ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway());
00073             } else {
00074                 pc.printf("Error ethernet.connect() - ret = %d\r\n", ret);
00075                 exit(0);
00076             }
00077         } else {
00078             pc.printf("Error ethernet.init() - ret = %d\r\n", ret);
00079             exit(0);
00080         }
00081   
00082         TCPSocketServer TCP_server; // TCP Socket open
00083         UDPSocket UDP_server; // UDP Socket open
00084 
00085         UDP_server.init();
00086         Endpoint nist;
00087         nist.set_address(UDP_IP, UDP_PORT);
00088         UDP_server.bind(UDP_PORT);
00089         pc.printf("UDP PORT %d \r\n", UDP_PORT);
00090 
00091         TCP_server.bind(TCP_PORT);
00092         pc.printf("TCP PORT %d \r\n", TCP_PORT);
00093         TCP_server.listen();
00094 
00095         pc.printf("server %s on port %d: \r\n", nist.get_address(), nist.get_port());
00096         int m = UDP_server.receiveFrom(nist, buffer, sizeof(buffer));
00097             if(m > 0){
00098             UDP_server.sendTo(nist, buffer, m);
00099             pc.printf("UDP Data Send OK\r\n");                     
00100         }
00101         pc.printf("UDP Close\r\n");
00102         
00103         while (1) {
00104             pc.printf("\nWait for TCP connection...\r\n");            
00105             TCPSocketConnection TCP_client;
00106             if(TCP_server.accept(TCP_client) == 0)
00107             {
00108                 pc.printf("Connection from: %s\r\n", TCP_client.get_address());
00109                 while (TCP_client.is_connected() == true) {
00110                    int n = TCP_client.receive(buffer, sizeof(buffer));
00111                    if(n > 0)
00112                        TCP_client.send_all(buffer, n);
00113                    if(TCP_client.is_fin_received()){
00114                        TCP_client.close();
00115                     }
00116                 }
00117             }
00118             pc.printf("Disconnected.\r\n");
00119         }
00120     }
00121 }