Richard Nash
/
udpping-mbed-os
udptest
Revision 0:9cd5c49d26e4, committed 2018-10-24
- Comitter:
- richnash
- Date:
- Wed Oct 24 19:47:15 2018 +0000
- Commit message:
- udp test
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.gitignore Wed Oct 24 19:47:15 2018 +0000 @@ -0,0 +1,4 @@ +.build +.mbed +projectfiles +*.py*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Oct 24 19:47:15 2018 +0000 @@ -0,0 +1,138 @@ + +// MBED Headers +#include "mbed.h" +#include "EthernetInterface.h" + +DigitalOut led1(LED1); // green +DigitalOut led2(LED2); // blue +DigitalOut led3(LED3); // red + +Serial logger(SERIAL_TX, SERIAL_RX); + +EthernetInterface gEth; +#define UDP_PORT 3865 +#define UDP_BUFFER_SIZE 500 + +UDPSocket _socket; +UDPSocket _socketSender; + +char in_buffer[UDP_BUFFER_SIZE]; + + +// ----------------------------------------------------------- +// +// ----------------------------------------------------------- +void terminal_error_state( void ) +{ + led1=0; + led2=0; + led3=0; + logger.printf("\r\n\r\nJUST TO BE CLEAR - THIS IS BAD BAD NEWS !!! \r\n"); + logger.printf("\r\n\r\n---- WAITING FOR THE WATCHDOG TO RESET US ---- \r\n"); + while( 1 ) + { + led1 = !led1; + led2 = !led2; + led3 = !led3; + wait(0.3); + } +} + + +// ----------------------------------------------------------- +// +// ----------------------------------------------------------- +static bool DeviceConnect() +{ + int retries = 10; + int rc = 0; + + while (retries--) + { + rc = gEth.connect(); + if (rc == 0) { + return true; + } + else + { + logger.printf("Connecting... ERR %d\r\n", rc); + } + } + + logger.printf("Connecting... FAILED\r\n"); + return false; +} + +// ----------------------------------------------------------- +// +// ----------------------------------------------------------- +static bool DeviceEthStartup() +{ + int rc = 0; + + // get ethernet up ! + if( !DeviceConnect() ) terminal_error_state(); + + // Output the network address + const char *ip = gEth.get_ip_address(); + const char *netmask = gEth.get_netmask(); + const char *gateway = gEth.get_gateway(); + logger.printf("IP address: %s\r\n", ip ? ip : "None"); + logger.printf("Netmask: %s\r\n", netmask ? netmask : "None"); + logger.printf("Gateway: %s\r\n", gateway ? gateway : "None"); + + // setup a listener + _socket.set_blocking(true); + _socket.set_timeout(3000); + + // open the socket + rc = _socket.open((NetworkInterface*)&gEth); + if( rc != 0) + { + logger.printf("UDPSocket RECEIVER OPEN ERROR (rc=%d)\r\n", rc); + terminal_error_state(); + } + + // bind the port + rc = _socket.bind(UDP_PORT); + logger.printf("Binding port %d\r\n", UDP_PORT); + if( rc != 0) + { + logger.printf("UDPSocket BIND ERROR (rc=%d)\r\n", rc); + terminal_error_state(); + } + + // open the sender socket + //rc = _socketSender.open((NetworkInterface*)&gEth); + //if( rc != 0) + // { + // logger.printf("UDPSocket SENDER OPEN ERROR (rc=%d)\r\n", rc); + // terminal_error_state(); + // } + + return true; +} + +// ----------------------------------------------------------- +// +// ----------------------------------------------------------- +void SendUdPMessage(char *buffer) +{ + // send the UDP data as broadcast + int rc = _socketSender.sendto( "255.255.255.255", UDP_PORT, (const void *)buffer, strlen( buffer ) ); + logger.printf("[SEND rc=%d] buffer[%d]\r\n%s\r\n", rc, strlen(buffer), buffer); +} + +// ----------------------------------------------------------- +// main() runs in its own thread in the OS +// ----------------------------------------------------------- +int main() { + + DeviceEthStartup(); + + while (true) { + led1 = !led1; + wait(0.5); + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Oct 24 19:47:15 2018 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#c9e63f14085f5751ff5ead79a7c0382d50a813a2