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:
- 2:8f5bacfef390
- Child:
- 3:79dc3337d9da
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TCPSocket.cpp Tue Mar 18 22:51:18 2014 +0000 @@ -0,0 +1,77 @@ + +#include "TCPSocket.h" +#include "ipaddr.h" +#include "w5100.h" +#include "mbed.h" + +extern Serial pc; + +TCPSocket::TCPSocket(int newSocket) +{ + _socket = newSocket; +} + +void TCPSocket::bind(int port) +{ + _port = port; + W5100.writeSnMR(_socket, SnMR::TCP); // set TCP mode + W5100.writeSnPORT(_socket, _port); +} + +void TCPSocket::listen() +{ + W5100.execCmdSn(_socket, Sock_OPEN); // set OPEN command + W5100.execCmdSn(_socket, Sock_LISTEN); // listen +} + + + +int TCPSocket::send(const char* buf, int len) +{ + if (len > 0) { + W5100.send_data_processing(_socket, (uint8_t*)buf, len); + W5100.execCmdSn(_socket, Sock_SEND); + } + return len; +} + +int TCPSocket::recv(char* buf, int len) +{ + int size = W5100.getRXReceivedSize(_socket); + if (size > len) { + size = len; + } + if (size > 0) { + W5100.recv_data_processing(_socket, (uint8_t*)buf, size); + W5100.execCmdSn(_socket, Sock_RECV); + } + + return size; +} + +void TCPSocket::poll() +{ + uint8_t Sn_SR = W5100.readSnSR(_socket); + //pc.printf("SnSR = %x\n", Sn_SR); + + switch(Sn_SR) { + case SnSR::ESTABLISHED: + m_pCb(); + break; + } + + +} + +void TCPSocket::close() +{ + if (_socket != (-1)) { + W5100.execCmdSn(_socket, Sock_DISCON); + W5100.execCmdSn(_socket, Sock_CLOSE); + } +} + +void TCPSocket::setOnEvent(void (*pMethod)(void)) +{ + m_pCb = pMethod; +}