WORKS
Dependencies: MAX44000 PWM_Tone_Library nexpaq_mdk
Fork of LED_Demo by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "test_env.h" 00004 #include "EthernetInterface.h" 00005 #include <algorithm> 00006 00007 #define CHECK(RC, STEP) if (RC < 0) error(STEP": %d\r\n", RC) 00008 00009 namespace { 00010 const int BUFFER_SIZE = 64; 00011 const int MAX_ECHO_LOOPS = 100; 00012 const char ASCII_MAX = '~' - ' '; 00013 00014 struct s_ip_address { 00015 int ip_1; 00016 int ip_2; 00017 int ip_3; 00018 int ip_4; 00019 }; 00020 } 00021 00022 char char_rand() { 00023 return (rand() % ASCII_MAX) + ' '; 00024 } 00025 00026 int main() { 00027 MBED_HOSTTEST_TIMEOUT(20); 00028 MBED_HOSTTEST_SELECT(udpecho_client_auto); 00029 MBED_HOSTTEST_DESCRIPTION(UDP echo client); 00030 MBED_HOSTTEST_START("NET_6"); 00031 00032 char buffer[BUFFER_SIZE] = {0}; 00033 char out_buffer[BUFFER_SIZE] = {0}; 00034 s_ip_address ip_addr = {0, 0, 0, 0}; 00035 int port = 0; 00036 bool result = true; 00037 00038 printf("MBED: UDPCllient waiting for server IP and port...\r\n"); 00039 scanf("%d.%d.%d.%d:%d", &ip_addr.ip_1, &ip_addr.ip_2, &ip_addr.ip_3, &ip_addr.ip_4, &port); 00040 printf("MBED: Address received: %d.%d.%d.%d:%d\r\n", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4, port); 00041 00042 EthernetInterface eth; 00043 int rc = eth.init(); //Use DHCP 00044 CHECK(rc, "eth init"); 00045 00046 rc = eth.connect(); 00047 CHECK(rc, "connect"); 00048 printf("IP: %s\n", eth.getIPAddress()); 00049 00050 UDPSocket socket; 00051 rc = socket.init(); 00052 CHECK(rc, "socket init"); 00053 00054 printf("MBED: UDPClient IP Address is %s\r\n", eth.getIPAddress()); 00055 sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4); 00056 00057 Endpoint echo_server; 00058 rc = echo_server.set_address(buffer, port); 00059 CHECK(rc, "set_address"); 00060 00061 for (int i =0; i < MAX_ECHO_LOOPS; i++) { 00062 std::generate(out_buffer, out_buffer + BUFFER_SIZE, char_rand); 00063 rc = socket.sendTo(echo_server, out_buffer, sizeof(out_buffer)); 00064 CHECK(rc, "sendTo"); 00065 00066 const int n = socket.receiveFrom(echo_server, buffer, sizeof(buffer)); 00067 CHECK(n, "receiveFrom"); 00068 00069 if (memcmp(buffer, out_buffer, BUFFER_SIZE) != 0) { 00070 result = false; 00071 break; 00072 } 00073 } 00074 00075 if (notify_completion_str(result, buffer)) { 00076 socket.sendTo(echo_server, buffer, strlen(buffer)); 00077 } 00078 00079 socket.close(); 00080 eth.disconnect(); 00081 MBED_HOSTTEST_RESULT(result); 00082 }
Generated on Tue Jul 12 2022 12:28:41 by
1.7.2
