This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
mbed/UdpSocket.cpp@58:03b89038b21a, 2013-09-27 (annotated)
- Committer:
- nyatla
- Date:
- Fri Sep 27 12:47:51 2013 +0000
- Revision:
- 58:03b89038b21a
- Child:
- 60:803de2088243
add classes; checked:modwebsocket; unchecked:tcpsocket,udpsocket,httpclient.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nyatla | 58:03b89038b21a | 1 | //////////////////////////////////////////////////////////////////////////////// |
nyatla | 58:03b89038b21a | 2 | // UdpSocket.cpp |
nyatla | 58:03b89038b21a | 3 | //////////////////////////////////////////////////////////////////////////////// |
nyatla | 58:03b89038b21a | 4 | |
nyatla | 58:03b89038b21a | 5 | #include "UdpSocket.h" |
nyatla | 58:03b89038b21a | 6 | |
nyatla | 58:03b89038b21a | 7 | |
nyatla | 58:03b89038b21a | 8 | |
nyatla | 58:03b89038b21a | 9 | |
nyatla | 58:03b89038b21a | 10 | namespace MiMic |
nyatla | 58:03b89038b21a | 11 | { |
nyatla | 58:03b89038b21a | 12 | #define TIMEOUT_IN_MSEC (2*1000) |
nyatla | 58:03b89038b21a | 13 | |
nyatla | 58:03b89038b21a | 14 | UdpSocket::UdpSocket(unsigned short i_port,unsigned short i_rx_buf_size) |
nyatla | 58:03b89038b21a | 15 | { |
nyatla | 58:03b89038b21a | 16 | this->_private_rx=malloc(i_rx_buf_size); |
nyatla | 58:03b89038b21a | 17 | NyLPC_cUdpSocket_initialize(&this->_inst,i_port,this->_private_rx,i_rx_buf_size); |
nyatla | 58:03b89038b21a | 18 | } |
nyatla | 58:03b89038b21a | 19 | UdpSocket::UdpSocket(unsigned short i_port,void* i_rx_buf,unsigned short i_rx_buf_size) |
nyatla | 58:03b89038b21a | 20 | { |
nyatla | 58:03b89038b21a | 21 | this->_private_rx=NULL; |
nyatla | 58:03b89038b21a | 22 | NyLPC_cUdpSocket_initialize(&this->_inst,i_port,i_rx_buf,i_rx_buf_size); |
nyatla | 58:03b89038b21a | 23 | } |
nyatla | 58:03b89038b21a | 24 | |
nyatla | 58:03b89038b21a | 25 | UdpSocket::UdpSocket(unsigned short i_port,void* i_rx_handler) |
nyatla | 58:03b89038b21a | 26 | { |
nyatla | 58:03b89038b21a | 27 | } |
nyatla | 58:03b89038b21a | 28 | UdpSocket::~UdpSocket() |
nyatla | 58:03b89038b21a | 29 | { |
nyatla | 58:03b89038b21a | 30 | NyLPC_cUdpSocket_finalize(&this->_inst); |
nyatla | 58:03b89038b21a | 31 | if(this->_private_rx!=NULL){ |
nyatla | 58:03b89038b21a | 32 | free(this->_private_rx); |
nyatla | 58:03b89038b21a | 33 | } |
nyatla | 58:03b89038b21a | 34 | } |
nyatla | 58:03b89038b21a | 35 | |
nyatla | 58:03b89038b21a | 36 | |
nyatla | 58:03b89038b21a | 37 | int UdpSocket::precvfrom(const void* &i_rx,IpAddr* i_peer_host,unsigned short* i_port) |
nyatla | 58:03b89038b21a | 38 | { |
nyatla | 58:03b89038b21a | 39 | const struct NyLPC_TIPv4RxInfo* info; |
nyatla | 58:03b89038b21a | 40 | int rs=NyLPC_cUdpSocket_precv(&this->_inst,&i_rx,&info,TIMEOUT_IN_MSEC); |
nyatla | 58:03b89038b21a | 41 | if(rs>1){ |
nyatla | 58:03b89038b21a | 42 | if(i_peer_host!=NULL){ |
nyatla | 58:03b89038b21a | 43 | i_peer_host->setIPv4(info->peer_ip); |
nyatla | 58:03b89038b21a | 44 | } |
nyatla | 58:03b89038b21a | 45 | if(i_port!=NULL){ |
nyatla | 58:03b89038b21a | 46 | *i_port=info->peer_port; |
nyatla | 58:03b89038b21a | 47 | } |
nyatla | 58:03b89038b21a | 48 | } |
nyatla | 58:03b89038b21a | 49 | return rs; |
nyatla | 58:03b89038b21a | 50 | } |
nyatla | 58:03b89038b21a | 51 | |
nyatla | 58:03b89038b21a | 52 | void UdpSocket::precvnext(void) |
nyatla | 58:03b89038b21a | 53 | { |
nyatla | 58:03b89038b21a | 54 | NyLPC_cUdpSocket_pseek(&this->_inst); |
nyatla | 58:03b89038b21a | 55 | } |
nyatla | 58:03b89038b21a | 56 | |
nyatla | 58:03b89038b21a | 57 | bool UdpSocket::sendTo(const IpAddr& i_host,unsigned short i_port,const void* i_tx,unsigned short i_tx_size) |
nyatla | 58:03b89038b21a | 58 | { |
nyatla | 58:03b89038b21a | 59 | int r=NyLPC_cUdpSocket_send(&this->_inst,&i_host.addr.v4,i_port,i_tx,i_tx_size,TIMEOUT_IN_MSEC); |
nyatla | 58:03b89038b21a | 60 | return (r!=i_tx_size); |
nyatla | 58:03b89038b21a | 61 | |
nyatla | 58:03b89038b21a | 62 | } |
nyatla | 58:03b89038b21a | 63 | |
nyatla | 58:03b89038b21a | 64 | void UdpSocket::joinMulticast(const IpAddr& i_host) |
nyatla | 58:03b89038b21a | 65 | { |
nyatla | 58:03b89038b21a | 66 | NyLPC_cUdpSocket_joinMulticast(&this->_inst,&i_host.addr.v4); |
nyatla | 58:03b89038b21a | 67 | } |
nyatla | 58:03b89038b21a | 68 | void UdpSocket::setBroadcast(void) |
nyatla | 58:03b89038b21a | 69 | { |
nyatla | 58:03b89038b21a | 70 | NyLPC_cUdpSocket_setBroadcast(&this->_inst); |
nyatla | 58:03b89038b21a | 71 | |
nyatla | 58:03b89038b21a | 72 | } |
nyatla | 58:03b89038b21a | 73 | } |