w5Ethernetserver

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of exe5_3_Ethernet_UDP_server by Jack Occleshaw

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()