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.

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of Ethernet_UDP_server by Freescale

Committer:
mareikeFSL
Date:
Wed Dec 23 21:02:48 2015 +0000
Revision:
0:9108b822f763
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mareikeFSL 0:9108b822f763 1 /*------------------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 2 /* Ethernet UDP Server (to be used with Ethernet_UDP_client) */
mareikeFSL 0:9108b822f763 3 /*------------------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 4
mareikeFSL 0:9108b822f763 5 /*--COMPANY-----AUTHOR------DATE------------REVISION----NOTES-------------------------*/
mareikeFSL 0:9108b822f763 6 /* NXP mareikeFSL 2015.12.23 rev 1.0 initial */
mareikeFSL 0:9108b822f763 7 /* */
mareikeFSL 0:9108b822f763 8 /*------------------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 9 /* This "Hello World" program is used in conjunction with the Ethernet_UDP_client */
mareikeFSL 0:9108b822f763 10 /* program. It communicates between two FRDM-K64F boards via the Ethernet protocol. */
mareikeFSL 0:9108b822f763 11 /* To use this program, you need to do the following: */
mareikeFSL 0:9108b822f763 12 /* - Connect an Ethernet cable between two FRDM-K64F boards (a crossover cable */
mareikeFSL 0:9108b822f763 13 /* is not required). */
mareikeFSL 0:9108b822f763 14 /* - Flash one board with Ethernet_UDP_client and the other with */
mareikeFSL 0:9108b822f763 15 /* Ethernet_UDP_server */
mareikeFSL 0:9108b822f763 16 /* - [optional] If you would like to see the "Hello World" output on your */
mareikeFSL 0:9108b822f763 17 /* monitor, install and open a terminal. Tera Term is used in the Wiki for */
mareikeFSL 0:9108b822f763 18 /* this program. */
mareikeFSL 0:9108b822f763 19 /*------------------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 20
mareikeFSL 0:9108b822f763 21
mareikeFSL 0:9108b822f763 22 /*--INCLUDES----------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 23 #include "mbed.h"
mareikeFSL 0:9108b822f763 24 #include "EthernetInterface.h"
mareikeFSL 0:9108b822f763 25
mareikeFSL 0:9108b822f763 26
mareikeFSL 0:9108b822f763 27 /*--DEFINES-----------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 28
mareikeFSL 0:9108b822f763 29
mareikeFSL 0:9108b822f763 30
mareikeFSL 0:9108b822f763 31 /*--CONSTANTS---------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 32 const int PORT = 7; //arbitrary port
mareikeFSL 0:9108b822f763 33
mareikeFSL 0:9108b822f763 34 static const char* SERVER_IP = "192.168.1.101"; //IP of server board
mareikeFSL 0:9108b822f763 35 static const char* MASK = "255.255.255.0"; //mask
mareikeFSL 0:9108b822f763 36 static const char* GATEWAY = "192.168.1.1"; //gateway
mareikeFSL 0:9108b822f763 37
mareikeFSL 0:9108b822f763 38
mareikeFSL 0:9108b822f763 39 /*--INITS-------------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 40 Serial pc(USBTX, USBRX); //create PC interface
mareikeFSL 0:9108b822f763 41 EthernetInterface eth; //create ethernet
mareikeFSL 0:9108b822f763 42 UDPSocket server; //creat server
mareikeFSL 0:9108b822f763 43 Endpoint client; //create endpoint
mareikeFSL 0:9108b822f763 44
mareikeFSL 0:9108b822f763 45 DigitalOut red(LED_RED); //debug led
mareikeFSL 0:9108b822f763 46 DigitalOut green(LED_GREEN); //debug led
mareikeFSL 0:9108b822f763 47
mareikeFSL 0:9108b822f763 48
mareikeFSL 0:9108b822f763 49 /*--VARIABLES---------------------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 50 int n; //size of received message
mareikeFSL 0:9108b822f763 51 char counter[1] = {0}; //sample receive/send buffer
mareikeFSL 0:9108b822f763 52
mareikeFSL 0:9108b822f763 53
mareikeFSL 0:9108b822f763 54 /*--FUNCTION DECLARATIONS---------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 55 void init_usb(void); //initializes pc.printf if required
mareikeFSL 0:9108b822f763 56 void init_eth(void); //initializes Ethernet
mareikeFSL 0:9108b822f763 57 void receive(void); //receives packets
mareikeFSL 0:9108b822f763 58 int main(void); //main
mareikeFSL 0:9108b822f763 59
mareikeFSL 0:9108b822f763 60
mareikeFSL 0:9108b822f763 61 /*--FUNCTION DEFINITIONS----------------------------------------------------------------*/
mareikeFSL 0:9108b822f763 62
mareikeFSL 0:9108b822f763 63 /*****************************************************************************INIT_USB***/
mareikeFSL 0:9108b822f763 64 void init_usb(void)
mareikeFSL 0:9108b822f763 65 {
mareikeFSL 0:9108b822f763 66 pc.baud(9600); //baud
mareikeFSL 0:9108b822f763 67
mareikeFSL 0:9108b822f763 68 } //end init_usb()
mareikeFSL 0:9108b822f763 69
mareikeFSL 0:9108b822f763 70 /*****************************************************************************INIT_ETH***/
mareikeFSL 0:9108b822f763 71 void init_eth(void)
mareikeFSL 0:9108b822f763 72 {
mareikeFSL 0:9108b822f763 73 eth.init(SERVER_IP, MASK, GATEWAY); //set up IP
mareikeFSL 0:9108b822f763 74 eth.connect(); //connect ethernet
mareikeFSL 0:9108b822f763 75 pc.printf("\nSERVER - Server IP Address is %s\r\n", eth.getIPAddress()); //get server IP address;
mareikeFSL 0:9108b822f763 76
mareikeFSL 0:9108b822f763 77 server.bind(PORT); //bind server
mareikeFSL 0:9108b822f763 78
mareikeFSL 0:9108b822f763 79 } //end init_eth()
mareikeFSL 0:9108b822f763 80
mareikeFSL 0:9108b822f763 81 /******************************************************************************RECEIVE***/
mareikeFSL 0:9108b822f763 82 void receive(void)
mareikeFSL 0:9108b822f763 83 {
mareikeFSL 0:9108b822f763 84 pc.printf("\nSERVER - Waiting for UDP packet...\r\n"); //wait for packet
mareikeFSL 0:9108b822f763 85 n = server.receiveFrom(client, counter, sizeof(counter)); //receive message from client
mareikeFSL 0:9108b822f763 86 counter[n] = '\0'; //add \0 to end of message
mareikeFSL 0:9108b822f763 87
mareikeFSL 0:9108b822f763 88 pc.printf("SERVER - Received '%i' from client %s\r\n", counter[0], client.get_address()); //print message and client
mareikeFSL 0:9108b822f763 89 pc.printf("SERVER - Sending '%i' back to client %s\r\n", counter[0], client.get_address()); //print sending back
mareikeFSL 0:9108b822f763 90 server.sendTo(client, counter, n); //send message
mareikeFSL 0:9108b822f763 91
mareikeFSL 0:9108b822f763 92 } //end receive()
mareikeFSL 0:9108b822f763 93
mareikeFSL 0:9108b822f763 94 /*********************************************************************************MAIN***/
mareikeFSL 0:9108b822f763 95 int main(void)
mareikeFSL 0:9108b822f763 96 {
mareikeFSL 0:9108b822f763 97 red = 1;
mareikeFSL 0:9108b822f763 98 green = 0; //server
mareikeFSL 0:9108b822f763 99
mareikeFSL 0:9108b822f763 100 init_usb(); //initialize the PC interface
mareikeFSL 0:9108b822f763 101 init_eth(); //initialize the Ethernet connection
mareikeFSL 0:9108b822f763 102
mareikeFSL 0:9108b822f763 103 while (true) //repeat forever
mareikeFSL 0:9108b822f763 104 {
mareikeFSL 0:9108b822f763 105 receive(); //wait for message
mareikeFSL 0:9108b822f763 106 }
mareikeFSL 0:9108b822f763 107
mareikeFSL 0:9108b822f763 108 } //end main()