W5200(WIZ820io) network interface

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;
     }