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

Fork of libMiMic by Ryo Iizuka

Committer:
furutani
Date:
Fri Feb 24 04:43:41 2017 +0000
Revision:
115:fa79286d8ea4
Parent:
110:257739f9b31e
Delete missing include line.; Add parameter "timeout" to TCPSocket::connect(), precv().; Fix to send ARP request to default gateway when connecting to IP address of different segment.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 58:03b89038b21a 1 ////////////////////////////////////////////////////////////////////////////////
nyatla 58:03b89038b21a 2 // TcpSocket.h
nyatla 58:03b89038b21a 3 ////////////////////////////////////////////////////////////////////////////////
nyatla 58:03b89038b21a 4
nyatla 58:03b89038b21a 5 #include "TcpSocket.h"
nyatla 109:18f12ac01097 6 #include "mbed.h"
nyatla 58:03b89038b21a 7
nyatla 58:03b89038b21a 8 namespace MiMic
nyatla 58:03b89038b21a 9 {
nyatla 58:03b89038b21a 10 #define TIMEOUT_IN_MSEC (5*1000)
nyatla 58:03b89038b21a 11
nyatla 109:18f12ac01097 12 TcpSocket::TcpSocket()
nyatla 58:03b89038b21a 13 {
nyatla 110:257739f9b31e 14 this->_inst=NyLPC_cNet_createTcpSocketEx(NyLPC_TSocketType_TCP_NORMAL);
nyatla 109:18f12ac01097 15 if(this->_inst==NULL){
nyatla 109:18f12ac01097 16 mbed_die();
nyatla 109:18f12ac01097 17 }
nyatla 58:03b89038b21a 18 }
nyatla 58:03b89038b21a 19 TcpSocket::~TcpSocket()
nyatla 58:03b89038b21a 20 {
nyatla 109:18f12ac01097 21 NyLPC_iTcpSocket_finalize(this->_inst);
nyatla 58:03b89038b21a 22 }
furutani 115:fa79286d8ea4 23 bool TcpSocket::connect(const IpAddr& i_addr,unsigned short i_port, unsigned int timeout)
nyatla 58:03b89038b21a 24 {
furutani 115:fa79286d8ea4 25 return NyLPC_iTcpSocket_connect(this->_inst,&(i_addr.addr.v4),i_port,timeout)?true:false;
nyatla 58:03b89038b21a 26 }
nyatla 58:03b89038b21a 27
nyatla 58:03b89038b21a 28 bool TcpSocket::send(const void* i_tx,unsigned short i_tx_size)
nyatla 58:03b89038b21a 29 {
nyatla 58:03b89038b21a 30 int l,t;
nyatla 58:03b89038b21a 31 l=i_tx_size;
nyatla 58:03b89038b21a 32 while(l>0){
nyatla 109:18f12ac01097 33 t=NyLPC_iTcpSocket_send(this->_inst,((const char*)i_tx)+(i_tx_size-l),l,TIMEOUT_IN_MSEC);
nyatla 58:03b89038b21a 34 if(t<0){
nyatla 58:03b89038b21a 35 return false;
nyatla 58:03b89038b21a 36 }
nyatla 58:03b89038b21a 37 l-=t;
nyatla 58:03b89038b21a 38 }
nyatla 58:03b89038b21a 39 return true;
nyatla 58:03b89038b21a 40 }
nyatla 60:803de2088243 41 bool TcpSocket::canRecv()
nyatla 60:803de2088243 42 {
nyatla 60:803de2088243 43 const void* rx;
nyatla 109:18f12ac01097 44 return NyLPC_iTcpSocket_precv(this->_inst,&rx,0)>0;
nyatla 60:803de2088243 45 }
furutani 115:fa79286d8ea4 46 int TcpSocket::precv(const void* &i_rx, unsigned int timeout)
nyatla 58:03b89038b21a 47 {
furutani 115:fa79286d8ea4 48 return NyLPC_iTcpSocket_precv(this->_inst,&i_rx,timeout);
nyatla 58:03b89038b21a 49 }
furutani 115:fa79286d8ea4 50 int TcpSocket::precv(const char* &i_rx, unsigned int timeout)
nyatla 59:cb5c3184c59f 51 {
furutani 115:fa79286d8ea4 52 return NyLPC_iTcpSocket_precv(this->_inst,(const void**)&i_rx,timeout);
nyatla 59:cb5c3184c59f 53 }
nyatla 58:03b89038b21a 54 void TcpSocket::pseek(unsigned short i_rx_seek)
nyatla 58:03b89038b21a 55 {
nyatla 109:18f12ac01097 56 NyLPC_iTcpSocket_pseek(this->_inst,i_rx_seek);
nyatla 58:03b89038b21a 57 }
nyatla 58:03b89038b21a 58 void TcpSocket::close()
nyatla 58:03b89038b21a 59 {
nyatla 109:18f12ac01097 60 return NyLPC_iTcpSocket_close(this->_inst,TIMEOUT_IN_MSEC);
nyatla 58:03b89038b21a 61 }
nyatla 109:18f12ac01097 62 }