Playing with the UDPEchoClient to prototype delivery of data over UDP.
Dependencies: EthernetInterface FXOS8700CQ mbed-rtos mbed
Fork of UDPEchoClient by
main.cpp@8:c9e4f2e15e2d, 2014-06-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |