W5200(WIZ820io) network interface
Diff: MyNetTcpSocket.cpp
- Revision:
- 2:a8df39b4f3aa
- Parent:
- 1:803123933c5a
--- a/MyNetTcpSocket.cpp Tue Apr 17 12:13:15 2012 +0000 +++ b/MyNetTcpSocket.cpp Thu Apr 19 11:14:43 2012 +0000 @@ -1,10 +1,16 @@ -// MyNetTcpSocket.cpp 2012/4/17 +// MyNetTcpSocket.cpp 2012/4/19 #include "mbed.h" #include "w5100.h" #include "MyNetTcpSocket.h" -#define __DEBUG +//#define __DEBUG #include "dbg/dbg.h" +#ifdef __DEBUG +#define DBG2(...) do{ DebugStream::debug("%p %s ", this,__PRETTY_FUNCTION__); DebugStream::debug(__VA_ARGS__); } while(0); +#else +#define DBG2(...) while(0); +#endif //__DEBUG + //#define DEBUG #ifdef DEBUG @@ -28,6 +34,7 @@ MyNetTcpSocket::MyNetTcpSocket(int socket) : NetTcpSocket(),_socket(socket),wait_accept(false) { PRINT_FUNC(); + DBG2("socket: %d\n", socket); if (_socket == (-1)) { _socket = w5200_new_socket(); } @@ -41,6 +48,7 @@ MyNetTcpSocket::~MyNetTcpSocket() { PRINT_FUNC(); + DBG2("socket=%d\n", _socket); close(); if (_socket != (-1)) { W5100.writeSnMR(_socket, SnMR::CLOSE); @@ -116,7 +124,12 @@ pClient->setPort(port); Host me; me.setPort(W5100.readSnPORT(_socket)); - *ppNewNetTcpSocket = new MyNetTcpSocket(_socket); + MyNetTcpSocket* pNewNetTcpSocket = new MyNetTcpSocket(_socket); + if (pNewNetTcpSocket == NULL) { + return NETTCPSOCKET_EMPTY; + } + pNewNetTcpSocket->m_refs++; + *ppNewNetTcpSocket = pNewNetTcpSocket; _socket = w5200_new_socket(); if (_socket != (-1)) { W5100.writeSnMR(_socket, SnMR::TCP); // set TCP mode @@ -163,6 +176,7 @@ NetTcpSocketErr MyNetTcpSocket::close() { PRINT_FUNC(); + DBG2("m_closed=%d m_refs=%d\n", m_closed, m_refs); if(m_closed) { return NETTCPSOCKET_OK; }