udptest

Committer:
richnash
Date:
Wed Oct 24 19:47:15 2018 +0000
Revision:
0:9cd5c49d26e4
udp test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
richnash 0:9cd5c49d26e4 1
richnash 0:9cd5c49d26e4 2 // MBED Headers
richnash 0:9cd5c49d26e4 3 #include "mbed.h"
richnash 0:9cd5c49d26e4 4 #include "EthernetInterface.h"
richnash 0:9cd5c49d26e4 5
richnash 0:9cd5c49d26e4 6 DigitalOut led1(LED1); // green
richnash 0:9cd5c49d26e4 7 DigitalOut led2(LED2); // blue
richnash 0:9cd5c49d26e4 8 DigitalOut led3(LED3); // red
richnash 0:9cd5c49d26e4 9
richnash 0:9cd5c49d26e4 10 Serial logger(SERIAL_TX, SERIAL_RX);
richnash 0:9cd5c49d26e4 11
richnash 0:9cd5c49d26e4 12 EthernetInterface gEth;
richnash 0:9cd5c49d26e4 13 #define UDP_PORT 3865
richnash 0:9cd5c49d26e4 14 #define UDP_BUFFER_SIZE 500
richnash 0:9cd5c49d26e4 15
richnash 0:9cd5c49d26e4 16 UDPSocket _socket;
richnash 0:9cd5c49d26e4 17 UDPSocket _socketSender;
richnash 0:9cd5c49d26e4 18
richnash 0:9cd5c49d26e4 19 char in_buffer[UDP_BUFFER_SIZE];
richnash 0:9cd5c49d26e4 20
richnash 0:9cd5c49d26e4 21
richnash 0:9cd5c49d26e4 22 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 23 //
richnash 0:9cd5c49d26e4 24 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 25 void terminal_error_state( void )
richnash 0:9cd5c49d26e4 26 {
richnash 0:9cd5c49d26e4 27 led1=0;
richnash 0:9cd5c49d26e4 28 led2=0;
richnash 0:9cd5c49d26e4 29 led3=0;
richnash 0:9cd5c49d26e4 30 logger.printf("\r\n\r\nJUST TO BE CLEAR - THIS IS BAD BAD NEWS !!! \r\n");
richnash 0:9cd5c49d26e4 31 logger.printf("\r\n\r\n---- WAITING FOR THE WATCHDOG TO RESET US ---- \r\n");
richnash 0:9cd5c49d26e4 32 while( 1 )
richnash 0:9cd5c49d26e4 33 {
richnash 0:9cd5c49d26e4 34 led1 = !led1;
richnash 0:9cd5c49d26e4 35 led2 = !led2;
richnash 0:9cd5c49d26e4 36 led3 = !led3;
richnash 0:9cd5c49d26e4 37 wait(0.3);
richnash 0:9cd5c49d26e4 38 }
richnash 0:9cd5c49d26e4 39 }
richnash 0:9cd5c49d26e4 40
richnash 0:9cd5c49d26e4 41
richnash 0:9cd5c49d26e4 42 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 43 //
richnash 0:9cd5c49d26e4 44 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 45 static bool DeviceConnect()
richnash 0:9cd5c49d26e4 46 {
richnash 0:9cd5c49d26e4 47 int retries = 10;
richnash 0:9cd5c49d26e4 48 int rc = 0;
richnash 0:9cd5c49d26e4 49
richnash 0:9cd5c49d26e4 50 while (retries--)
richnash 0:9cd5c49d26e4 51 {
richnash 0:9cd5c49d26e4 52 rc = gEth.connect();
richnash 0:9cd5c49d26e4 53 if (rc == 0) {
richnash 0:9cd5c49d26e4 54 return true;
richnash 0:9cd5c49d26e4 55 }
richnash 0:9cd5c49d26e4 56 else
richnash 0:9cd5c49d26e4 57 {
richnash 0:9cd5c49d26e4 58 logger.printf("Connecting... ERR %d\r\n", rc);
richnash 0:9cd5c49d26e4 59 }
richnash 0:9cd5c49d26e4 60 }
richnash 0:9cd5c49d26e4 61
richnash 0:9cd5c49d26e4 62 logger.printf("Connecting... FAILED\r\n");
richnash 0:9cd5c49d26e4 63 return false;
richnash 0:9cd5c49d26e4 64 }
richnash 0:9cd5c49d26e4 65
richnash 0:9cd5c49d26e4 66 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 67 //
richnash 0:9cd5c49d26e4 68 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 69 static bool DeviceEthStartup()
richnash 0:9cd5c49d26e4 70 {
richnash 0:9cd5c49d26e4 71 int rc = 0;
richnash 0:9cd5c49d26e4 72
richnash 0:9cd5c49d26e4 73 // get ethernet up !
richnash 0:9cd5c49d26e4 74 if( !DeviceConnect() ) terminal_error_state();
richnash 0:9cd5c49d26e4 75
richnash 0:9cd5c49d26e4 76 // Output the network address
richnash 0:9cd5c49d26e4 77 const char *ip = gEth.get_ip_address();
richnash 0:9cd5c49d26e4 78 const char *netmask = gEth.get_netmask();
richnash 0:9cd5c49d26e4 79 const char *gateway = gEth.get_gateway();
richnash 0:9cd5c49d26e4 80 logger.printf("IP address: %s\r\n", ip ? ip : "None");
richnash 0:9cd5c49d26e4 81 logger.printf("Netmask: %s\r\n", netmask ? netmask : "None");
richnash 0:9cd5c49d26e4 82 logger.printf("Gateway: %s\r\n", gateway ? gateway : "None");
richnash 0:9cd5c49d26e4 83
richnash 0:9cd5c49d26e4 84 // setup a listener
richnash 0:9cd5c49d26e4 85 _socket.set_blocking(true);
richnash 0:9cd5c49d26e4 86 _socket.set_timeout(3000);
richnash 0:9cd5c49d26e4 87
richnash 0:9cd5c49d26e4 88 // open the socket
richnash 0:9cd5c49d26e4 89 rc = _socket.open((NetworkInterface*)&gEth);
richnash 0:9cd5c49d26e4 90 if( rc != 0)
richnash 0:9cd5c49d26e4 91 {
richnash 0:9cd5c49d26e4 92 logger.printf("UDPSocket RECEIVER OPEN ERROR (rc=%d)\r\n", rc);
richnash 0:9cd5c49d26e4 93 terminal_error_state();
richnash 0:9cd5c49d26e4 94 }
richnash 0:9cd5c49d26e4 95
richnash 0:9cd5c49d26e4 96 // bind the port
richnash 0:9cd5c49d26e4 97 rc = _socket.bind(UDP_PORT);
richnash 0:9cd5c49d26e4 98 logger.printf("Binding port %d\r\n", UDP_PORT);
richnash 0:9cd5c49d26e4 99 if( rc != 0)
richnash 0:9cd5c49d26e4 100 {
richnash 0:9cd5c49d26e4 101 logger.printf("UDPSocket BIND ERROR (rc=%d)\r\n", rc);
richnash 0:9cd5c49d26e4 102 terminal_error_state();
richnash 0:9cd5c49d26e4 103 }
richnash 0:9cd5c49d26e4 104
richnash 0:9cd5c49d26e4 105 // open the sender socket
richnash 0:9cd5c49d26e4 106 //rc = _socketSender.open((NetworkInterface*)&gEth);
richnash 0:9cd5c49d26e4 107 //if( rc != 0)
richnash 0:9cd5c49d26e4 108 // {
richnash 0:9cd5c49d26e4 109 // logger.printf("UDPSocket SENDER OPEN ERROR (rc=%d)\r\n", rc);
richnash 0:9cd5c49d26e4 110 // terminal_error_state();
richnash 0:9cd5c49d26e4 111 // }
richnash 0:9cd5c49d26e4 112
richnash 0:9cd5c49d26e4 113 return true;
richnash 0:9cd5c49d26e4 114 }
richnash 0:9cd5c49d26e4 115
richnash 0:9cd5c49d26e4 116 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 117 //
richnash 0:9cd5c49d26e4 118 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 119 void SendUdPMessage(char *buffer)
richnash 0:9cd5c49d26e4 120 {
richnash 0:9cd5c49d26e4 121 // send the UDP data as broadcast
richnash 0:9cd5c49d26e4 122 int rc = _socketSender.sendto( "255.255.255.255", UDP_PORT, (const void *)buffer, strlen( buffer ) );
richnash 0:9cd5c49d26e4 123 logger.printf("[SEND rc=%d] buffer[%d]\r\n%s\r\n", rc, strlen(buffer), buffer);
richnash 0:9cd5c49d26e4 124 }
richnash 0:9cd5c49d26e4 125
richnash 0:9cd5c49d26e4 126 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 127 // main() runs in its own thread in the OS
richnash 0:9cd5c49d26e4 128 // -----------------------------------------------------------
richnash 0:9cd5c49d26e4 129 int main() {
richnash 0:9cd5c49d26e4 130
richnash 0:9cd5c49d26e4 131 DeviceEthStartup();
richnash 0:9cd5c49d26e4 132
richnash 0:9cd5c49d26e4 133 while (true) {
richnash 0:9cd5c49d26e4 134 led1 = !led1;
richnash 0:9cd5c49d26e4 135 wait(0.5);
richnash 0:9cd5c49d26e4 136 }
richnash 0:9cd5c49d26e4 137 }
richnash 0:9cd5c49d26e4 138