Udp socket sample program. This program will send back the received packet.

Dependencies:   NyFileSystems libMiMic mbed-rtos mbed

Committer:
nyatla
Date:
Tue Sep 15 11:44:26 2015 +0000
Revision:
30:2be65b31e086
Parent:
29:821fd574d883
update libraries

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 4:0a280ed0a848 1 /**
nyatla 20:4b0b449ddb12 2 * @file
nyatla 26:897777a5ee04 3 * Udpsocket sample.<br/>
nyatla 26:897777a5ee04 4 * This program is to test of UDP socket.
nyatla 26:897777a5ee04 5 * The program send a echo back packet when receive a packet.
nyatla 20:4b0b449ddb12 6 *
nyatla 4:0a280ed0a848 7 */
nyatla 5:6a2a1644ea2c 8 #include "mbed.h"
nyatla 19:66d729b94d16 9 #include "rtos.h"
nyatla 5:6a2a1644ea2c 10 #include "SDFileSystem.h"
nyatla 0:ec1e45489427 11 #include "mimic.h"
nyatla 10:80c05810f911 12 #include "utils/PlatformInfo.h"
nyatla 19:66d729b94d16 13 #include "fsdata.h"
nyatla 19:66d729b94d16 14
nyatla 0:ec1e45489427 15
nyatla 23:6340bfc0bfe3 16 NetConfig cfg; //create network configulation
nyatla 19:66d729b94d16 17
nyatla 25:1a4f620b7af6 18 DigitalOut led1(LED1);
nyatla 25:1a4f620b7af6 19 DigitalOut led2(LED2);
nyatla 25:1a4f620b7af6 20 DigitalOut led3(LED3);
nyatla 25:1a4f620b7af6 21 DigitalOut led4(LED4);
nyatla 0:ec1e45489427 22
nyatla 12:218b57d9a6d4 23
nyatla 0:ec1e45489427 24 int main()
nyatla 0:ec1e45489427 25 {
nyatla 30:2be65b31e086 26 MiMicNetIf netif;
nyatla 30:2be65b31e086 27 Net* net=new Net(netif);//Net constructor must be created after started RTOS
nyatla 25:1a4f620b7af6 28
nyatla 23:6340bfc0bfe3 29 // manual setting
nyatla 23:6340bfc0bfe3 30 cfg.setIpAddr(192,168,128,39);
nyatla 23:6340bfc0bfe3 31 cfg.setNetMask(255,255,255,0);
nyatla 23:6340bfc0bfe3 32 cfg.setGateway(192,168,128,254);
nyatla 27:e06564324551 33 cfg.setSrvUPnP(false);
nyatla 27:e06564324551 34 cfg.setSrvMdns(false);
nyatla 25:1a4f620b7af6 35
nyatla 26:897777a5ee04 36 // Create tcp socket with 512 bytes RX buffer.(This size same as maximum size of receiveable UDP packet)
nyatla 25:1a4f620b7af6 37 // Socket must create between "net.start" with "new Net()"
nyatla 26:897777a5ee04 38 // If you want to receive data without buffering, please email to MiMic project.
nyatla 26:897777a5ee04 39 UdpSocket socket(1234,512);
nyatla 25:1a4f620b7af6 40
nyatla 25:1a4f620b7af6 41 //Start network
nyatla 19:66d729b94d16 42 net->start(cfg);
nyatla 25:1a4f620b7af6 43
nyatla 25:1a4f620b7af6 44
nyatla 26:897777a5ee04 45 led1=1;
nyatla 25:1a4f620b7af6 46 for(;;){
nyatla 26:897777a5ee04 47 //wait for packet
nyatla 26:897777a5ee04 48 IpAddr peer_host;
nyatla 26:897777a5ee04 49 unsigned short port;
nyatla 26:897777a5ee04 50 const void* rx;
nyatla 26:897777a5ee04 51 //get packet pointer and peer info.
nyatla 25:1a4f620b7af6 52 led2=1;
nyatla 29:821fd574d883 53 int l=socket.precvFrom(rx,&peer_host,&port);
nyatla 26:897777a5ee04 54 if(l<0){
nyatla 26:897777a5ee04 55 //Error
nyatla 26:897777a5ee04 56 led2=0;
nyatla 26:897777a5ee04 57 break;
nyatla 26:897777a5ee04 58 }
nyatla 26:897777a5ee04 59 if(l==0){
nyatla 26:897777a5ee04 60 //timeout
nyatla 26:897777a5ee04 61 led2=0;
nyatla 26:897777a5ee04 62 continue;
nyatla 26:897777a5ee04 63 }
nyatla 26:897777a5ee04 64 led3=1;
nyatla 30:2be65b31e086 65 if(!socket.sendTo(peer_host,port,(const char*)rx,l)){
nyatla 26:897777a5ee04 66 //Error
nyatla 26:897777a5ee04 67 led2=0;
nyatla 25:1a4f620b7af6 68 led3=0;
nyatla 26:897777a5ee04 69 led4=1;
nyatla 26:897777a5ee04 70 break;
nyatla 25:1a4f620b7af6 71 }
nyatla 26:897777a5ee04 72 Thread::wait(100);//show LED blinking!
nyatla 26:897777a5ee04 73 //move to next packet
nyatla 29:821fd574d883 74 socket.precvNext();
nyatla 25:1a4f620b7af6 75 led2=0;
nyatla 25:1a4f620b7af6 76 led3=0;
nyatla 25:1a4f620b7af6 77 }
nyatla 26:897777a5ee04 78 led1=0;
nyatla 0:ec1e45489427 79 return 0;
nyatla 0:ec1e45489427 80 }
nyatla 25:1a4f620b7af6 81