Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- JohnnyK
- Date:
- 2020-05-08
- Revision:
- 3:9ab431fc54e2
- Parent:
- 2:01b03970605d
- Child:
- 4:2579ef3b025f
File content as of revision 3:9ab431fc54e2:
#include "mbed.h" //MbedOS 5.15
#include "EthernetInterface.h"
#define ROUTER
#ifndef ROUTER
#define IP "192.168.1.1" //Here place your defined IP of Mbed
#define GATEWAY "0.0.0.0"
#define MASK "255.255.255.0"
#endif
#define ADDRESS "10.0.1.29" //Here place IP of your PC. Run cmd.exe and write command ipconfig
#define LOCALPORT 20
#define REMOTEPORT 2000
Thread thread;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
SocketAddress targetAddr(ADDRESS,REMOTEPORT);
void udpEcho(){
EthernetInterface eth;
int eth_stat;
#ifndef ROUTER
eth.disconnect();
eth_stat = eth.set_network(IP,MASK,GATEWAY);
printf("set IP status: %i\n",eth_stat);
#endif
eth_stat = eth.connect();
printf("connect status: %i\n",eth_stat);
SocketAddress ip;
eth.get_ip_address(&ip);
const char *p_ip = ip.get_ip_address();
printf("IP address: %s\n", p_ip ? p_ip : "None");
SocketAddress mask;
eth.get_netmask(&mask);
const char *p_mask = mask.get_ip_address();
printf("Netmask: %s\n", p_mask ? p_mask : "None");
SocketAddress gateway;
eth.get_gateway(&gateway);
const char *p_gateway = gateway.get_ip_address();
printf("Gateway: %s\n", p_gateway ? p_gateway : "None");
// Check ip
if(ip){// Check ip
UDPSocket sock;
SocketAddress addr;
sock.open(ð);
sock.bind(LOCALPORT);
printf("Listen on local port: %d and send to remote port %d\n", LOCALPORT, REMOTEPORT);
char buffer[] = "Hello World, UDP Echo";
printf("Sending message '%s' to (%s)\n",buffer,targetAddr.get_ip_address());
sock.sendto(targetAddr, buffer, sizeof(buffer));
printf("Waiting for message...\n");
while(1) {
char in_buffer[80];
int n = sock.recvfrom(&addr, &in_buffer, sizeof(in_buffer));
in_buffer[n] = '\0';
printf("Recieved: %s\n", in_buffer);
char out_buffer[80];
n = sprintf(out_buffer,"Echo - %s", in_buffer);
out_buffer[n] = '\0';
printf("Send back: %s\n", out_buffer);
sock.sendto(targetAddr, out_buffer, sizeof(out_buffer));
led2 =! led2;
}
}else{
printf("No IP\n");
//eth.disconnect();
printf("Thread end\n");
}
}
int main() {
printf("UDP echo starting...\n");
thread.start(callback(udpEcho));
ThisThread::sleep_for(1000);
while(1) {
led1 =! led1;
ThisThread::sleep_for(1000);
}
}