w5Ethernetserver
Dependencies: EthernetInterface mbed-rtos mbed
Fork of exe5_3_Ethernet_UDP_server by
Diff: main.cpp
- Revision:
- 0:86b7ebac3e60
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 01 14:12:26 2016 +0000 @@ -0,0 +1,108 @@ +/*------------------------------------------------------------------------------------*/ +/* Ethernet UDP Server (to be used with Ethernet_UDP_client) */ +/*------------------------------------------------------------------------------------*/ + +/*--COMPANY-----AUTHOR------DATE------------REVISION----NOTES-------------------------*/ +/* NXP mareikeFSL 2015.12.23 rev 1.0 initial */ +/* */ +/*------------------------------------------------------------------------------------*/ +/* This "Hello World" program is used in conjunction with the Ethernet_UDP_client */ +/* program. It communicates between two FRDM-K64F boards via the Ethernet protocol. */ +/* To use this program, you need to do the following: */ +/* - Connect an Ethernet cable between two FRDM-K64F boards (a crossover cable */ +/* is not required). */ +/* - Flash one board with Ethernet_UDP_client and the other with */ +/* Ethernet_UDP_server */ +/* - [optional] If you would like to see the "Hello World" output on your */ +/* monitor, install and open a terminal. Tera Term is used in the Wiki for */ +/* this program. */ +/*------------------------------------------------------------------------------------*/ + + +/*--INCLUDES----------------------------------------------------------------------------*/ +#include "mbed.h" +#include "EthernetInterface.h" + + +/*--DEFINES-----------------------------------------------------------------------------*/ + + + +/*--CONSTANTS---------------------------------------------------------------------------*/ +const int PORT = 7; //arbitrary port + +static const char* SERVER_IP = "192.168.1.101"; //IP of server board +static const char* MASK = "255.255.255.0"; //mask +static const char* GATEWAY = "192.168.1.1"; //gateway + + +/*--INITS-------------------------------------------------------------------------------*/ +Serial pc(USBTX, USBRX); //create PC interface +EthernetInterface eth; //create ethernet +UDPSocket server; //creat server +Endpoint client; //create endpoint + +DigitalOut red(LED_RED); //debug led +DigitalOut green(LED_GREEN); //debug led + + +/*--VARIABLES---------------------------------------------------------------------------*/ +int n; //size of received message +char counter[1] = {0}; //sample receive/send buffer + + +/*--FUNCTION DECLARATIONS---------------------------------------------------------------*/ +void init_usb(void); //initializes pc.printf if required +void init_eth(void); //initializes Ethernet +void receive(void); //receives packets +int main(void); //main + + +/*--FUNCTION DEFINITIONS----------------------------------------------------------------*/ + +/*****************************************************************************INIT_USB***/ +void init_usb(void) +{ + pc.baud(9600); //baud + +} //end init_usb() + +/*****************************************************************************INIT_ETH***/ +void init_eth(void) +{ + eth.init(SERVER_IP, MASK, GATEWAY); //set up IP + eth.connect(); //connect ethernet + pc.printf("\nSERVER - Server IP Address is %s\r\n", eth.getIPAddress()); //get server IP address; + + server.bind(PORT); //bind server + +} //end init_eth() + +/******************************************************************************RECEIVE***/ +void receive(void) +{ + pc.printf("\nSERVER - Waiting for UDP packet...\r\n"); //wait for packet + n = server.receiveFrom(client, counter, sizeof(counter)); //receive message from client + counter[n] = '\0'; //add \0 to end of message + + pc.printf("SERVER - Received '%i' from client %s\r\n", counter[0], client.get_address()); //print message and client + pc.printf("SERVER - Sending '%i' back to client %s\r\n", counter[0], client.get_address()); //print sending back + server.sendTo(client, counter, n); //send message + +} //end receive() + +/*********************************************************************************MAIN***/ +int main(void) +{ + red = 1; + green = 0; //server + + init_usb(); //initialize the PC interface + init_eth(); //initialize the Ethernet connection + + while (true) //repeat forever + { + receive(); //wait for message + } + +} //end main()