Playing with the UDPEchoClient to prototype delivery of data over UDP.

Dependencies:   EthernetInterface FXOS8700CQ mbed-rtos mbed

Fork of UDPEchoClient by mbed official

Committer:
trm
Date:
Tue Jun 03 19:21:31 2014 +0000
Revision:
8:c9e4f2e15e2d
Parent:
5:263b6859d55c
Initial commit of example of the FXOS8700CQ that causes the EthernetInterface to stall during initialization. Comment out line 9 to make the UDP echo function.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:97e3476ef63e 1 #include "mbed.h"
emilmont 1:129986b437b1 2 #include "EthernetInterface.h"
trm 8:c9e4f2e15e2d 3 #include "FXOS8700CQ.h"
emilmont 1:129986b437b1 4
trm 8:c9e4f2e15e2d 5 const char* ECHO_SERVER_ADDRESS = "10.0.0.73";
trm 8:c9e4f2e15e2d 6 const int ECHO_SERVER_PORT = 7001; // changed from example code
trm 8:c9e4f2e15e2d 7
trm 8:c9e4f2e15e2d 8 // TODO: figure out why this line breaks the code:
trm 8:c9e4f2e15e2d 9 FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1)
trm 8:c9e4f2e15e2d 10
trm 8:c9e4f2e15e2d 11 RawSerial pc(USBTX, USBRX);
trm 8:c9e4f2e15e2d 12
trm 8:c9e4f2e15e2d 13 Timer t; // Microsecond timer, 32 bit int, maximum count of ~30 minutes
emilmont 1:129986b437b1 14
trm 8:c9e4f2e15e2d 15 int main()
trm 8:c9e4f2e15e2d 16 {
trm 8:c9e4f2e15e2d 17 pc.baud(115200);
trm 8:c9e4f2e15e2d 18
trm 8:c9e4f2e15e2d 19 printf("Starting setup.\n");
trm 8:c9e4f2e15e2d 20
emilmont 1:129986b437b1 21 EthernetInterface eth;
trm 8:c9e4f2e15e2d 22 eth.init(); // Use DHCP
emilmont 1:129986b437b1 23 eth.connect();
trm 8:c9e4f2e15e2d 24 printf("IP Address is %s\n", eth.getIPAddress());
trm 8:c9e4f2e15e2d 25
emilmont 1:129986b437b1 26 UDPSocket sock;
emilmont 1:129986b437b1 27 sock.init();
trm 8:c9e4f2e15e2d 28
emilmont 2:3307c4a7c499 29 Endpoint echo_server;
emilmont 2:3307c4a7c499 30 echo_server.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
trm 8:c9e4f2e15e2d 31
trm 8:c9e4f2e15e2d 32 char out_buffer[] = "Hello World";
emilmont 1:129986b437b1 33 char in_buffer[256];
trm 8:c9e4f2e15e2d 34
trm 8:c9e4f2e15e2d 35 t.reset();
trm 8:c9e4f2e15e2d 36 t.start();
trm 8:c9e4f2e15e2d 37
trm 8:c9e4f2e15e2d 38 for(int i = 0; i < 20; ++i) {
trm 8:c9e4f2e15e2d 39 sock.sendTo(echo_server, out_buffer, sizeof(out_buffer));
trm 8:c9e4f2e15e2d 40
trm 8:c9e4f2e15e2d 41 int n = sock.receiveFrom(echo_server, in_buffer, sizeof(in_buffer));
trm 8:c9e4f2e15e2d 42
trm 8:c9e4f2e15e2d 43 in_buffer[n] = '\0';
trm 8:c9e4f2e15e2d 44 printf("%d, %d: %s\n", t.read_us(), i, in_buffer);
trm 8:c9e4f2e15e2d 45
trm 8:c9e4f2e15e2d 46 t.reset();
trm 8:c9e4f2e15e2d 47 }
emilmont 1:129986b437b1 48
emilmont 1:129986b437b1 49 sock.close();
trm 8:c9e4f2e15e2d 50 eth.disconnect();
emilmont 1:129986b437b1 51
trm 8:c9e4f2e15e2d 52 printf("Disconnected and closed.");
trm 8:c9e4f2e15e2d 53
emilmont 1:129986b437b1 54 while(1) {}
emilmont 3:281043c08f67 55 }