This is a non working version of my ethernet with sd card, i do not know why
Dependencies: SDFileSystem mbed
Fork of eth_v13 by
Diff: TCPSocket.cpp
- Revision:
- 3:79dc3337d9da
- Parent:
- 2:8f5bacfef390
--- a/TCPSocket.cpp Tue Mar 18 22:51:18 2014 +0000 +++ b/TCPSocket.cpp Fri Mar 21 00:18:33 2014 +0000 @@ -11,8 +11,19 @@ _socket = newSocket; } +TCPSocket::TCPSocket() +{ +} + +void TCPSocket::setSocket(int socket) +{ + pc.printf("setSocket() = %d \n", _socket); + _socket = socket; +} + void TCPSocket::bind(int port) { + pc.printf("bind()= %d \n", _socket); _port = port; W5100.writeSnMR(_socket, SnMR::TCP); // set TCP mode W5100.writeSnPORT(_socket, _port); @@ -20,6 +31,7 @@ void TCPSocket::listen() { + pc.printf("listen()= %d \n", _socket); W5100.execCmdSn(_socket, Sock_OPEN); // set OPEN command W5100.execCmdSn(_socket, Sock_LISTEN); // listen } @@ -41,6 +53,7 @@ if (size > len) { size = len; } + if (size > 0) { W5100.recv_data_processing(_socket, (uint8_t*)buf, size); W5100.execCmdSn(_socket, Sock_RECV); @@ -51,16 +64,33 @@ void TCPSocket::poll() { + // status abfragen uint8_t Sn_SR = W5100.readSnSR(_socket); - //pc.printf("SnSR = %x\n", Sn_SR); + pc.printf("(sock) SnSR = 0x%x\n", Sn_SR); switch(Sn_SR) { - case SnSR::ESTABLISHED: - m_pCb(); + case SnSR::CLOSED: + listen(); // wenn Socket geschlossen, dann öffnen + break; + + case SnSR::LISTEN: // weiter warten + break; + + case SnSR::ESTABLISHED: // Kontrolle, und App abarbeiten + _callbackHandler.call(); + break; + + case SnSR::FIN_WAIT: // für die folgenden Fälle den Port schließen + case SnSR::CLOSING: + case SnSR::TIME_WAIT: + case SnSR::CLOSE_WAIT: + case SnSR::LAST_ACK: + close(); + break; + + default: // Sonst --> nichts machen break; } - - } void TCPSocket::close() @@ -74,4 +104,10 @@ void TCPSocket::setOnEvent(void (*pMethod)(void)) { m_pCb = pMethod; + pointertype = 0; } + +int TCPSocket::getRxSize() +{ + return W5100.readSnRX_RSR(_socket); +} \ No newline at end of file