Udp socket sample program. This program will send back the received packet.
Dependencies: NyFileSystems libMiMic mbed-rtos mbed
main.cpp@27:e06564324551, 2013-10-03 (annotated)
- Committer:
- nyatla
- Date:
- Thu Oct 03 04:56:30 2013 +0000
- Revision:
- 27:e06564324551
- Parent:
- 26:897777a5ee04
- Child:
- 29:821fd574d883
disable zeroconf services
Who changed what in which revision?
User | Revision | Line number | New 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 | Net* net; |
nyatla | 19:66d729b94d16 | 18 | |
nyatla | 25:1a4f620b7af6 | 19 | DigitalOut led1(LED1); |
nyatla | 25:1a4f620b7af6 | 20 | DigitalOut led2(LED2); |
nyatla | 25:1a4f620b7af6 | 21 | DigitalOut led3(LED3); |
nyatla | 25:1a4f620b7af6 | 22 | DigitalOut led4(LED4); |
nyatla | 0:ec1e45489427 | 23 | |
nyatla | 12:218b57d9a6d4 | 24 | |
nyatla | 0:ec1e45489427 | 25 | int main() |
nyatla | 0:ec1e45489427 | 26 | { |
nyatla | 19:66d729b94d16 | 27 | net=new Net();//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 | 26:897777a5ee04 | 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 | 26:897777a5ee04 | 65 | if(!socket.sendTo(peer_host,port,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 | 26:897777a5ee04 | 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 |