This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

Fork of libMiMic by Ryo Iizuka

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?

UserRevisionLine numberNew 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 }