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 Heiko Greiner

Committer:
hggerdd
Date:
Tue Mar 18 22:51:18 2014 +0000
Revision:
2:8f5bacfef390
Child:
3:79dc3337d9da
tcp geht auf einfache art und weise

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hggerdd 2:8f5bacfef390 1
hggerdd 2:8f5bacfef390 2 #include "TCPSocket.h"
hggerdd 2:8f5bacfef390 3 #include "ipaddr.h"
hggerdd 2:8f5bacfef390 4 #include "w5100.h"
hggerdd 2:8f5bacfef390 5 #include "mbed.h"
hggerdd 2:8f5bacfef390 6
hggerdd 2:8f5bacfef390 7 extern Serial pc;
hggerdd 2:8f5bacfef390 8
hggerdd 2:8f5bacfef390 9 TCPSocket::TCPSocket(int newSocket)
hggerdd 2:8f5bacfef390 10 {
hggerdd 2:8f5bacfef390 11 _socket = newSocket;
hggerdd 2:8f5bacfef390 12 }
hggerdd 2:8f5bacfef390 13
hggerdd 2:8f5bacfef390 14 void TCPSocket::bind(int port)
hggerdd 2:8f5bacfef390 15 {
hggerdd 2:8f5bacfef390 16 _port = port;
hggerdd 2:8f5bacfef390 17 W5100.writeSnMR(_socket, SnMR::TCP); // set TCP mode
hggerdd 2:8f5bacfef390 18 W5100.writeSnPORT(_socket, _port);
hggerdd 2:8f5bacfef390 19 }
hggerdd 2:8f5bacfef390 20
hggerdd 2:8f5bacfef390 21 void TCPSocket::listen()
hggerdd 2:8f5bacfef390 22 {
hggerdd 2:8f5bacfef390 23 W5100.execCmdSn(_socket, Sock_OPEN); // set OPEN command
hggerdd 2:8f5bacfef390 24 W5100.execCmdSn(_socket, Sock_LISTEN); // listen
hggerdd 2:8f5bacfef390 25 }
hggerdd 2:8f5bacfef390 26
hggerdd 2:8f5bacfef390 27
hggerdd 2:8f5bacfef390 28
hggerdd 2:8f5bacfef390 29 int TCPSocket::send(const char* buf, int len)
hggerdd 2:8f5bacfef390 30 {
hggerdd 2:8f5bacfef390 31 if (len > 0) {
hggerdd 2:8f5bacfef390 32 W5100.send_data_processing(_socket, (uint8_t*)buf, len);
hggerdd 2:8f5bacfef390 33 W5100.execCmdSn(_socket, Sock_SEND);
hggerdd 2:8f5bacfef390 34 }
hggerdd 2:8f5bacfef390 35 return len;
hggerdd 2:8f5bacfef390 36 }
hggerdd 2:8f5bacfef390 37
hggerdd 2:8f5bacfef390 38 int TCPSocket::recv(char* buf, int len)
hggerdd 2:8f5bacfef390 39 {
hggerdd 2:8f5bacfef390 40 int size = W5100.getRXReceivedSize(_socket);
hggerdd 2:8f5bacfef390 41 if (size > len) {
hggerdd 2:8f5bacfef390 42 size = len;
hggerdd 2:8f5bacfef390 43 }
hggerdd 2:8f5bacfef390 44 if (size > 0) {
hggerdd 2:8f5bacfef390 45 W5100.recv_data_processing(_socket, (uint8_t*)buf, size);
hggerdd 2:8f5bacfef390 46 W5100.execCmdSn(_socket, Sock_RECV);
hggerdd 2:8f5bacfef390 47 }
hggerdd 2:8f5bacfef390 48
hggerdd 2:8f5bacfef390 49 return size;
hggerdd 2:8f5bacfef390 50 }
hggerdd 2:8f5bacfef390 51
hggerdd 2:8f5bacfef390 52 void TCPSocket::poll()
hggerdd 2:8f5bacfef390 53 {
hggerdd 2:8f5bacfef390 54 uint8_t Sn_SR = W5100.readSnSR(_socket);
hggerdd 2:8f5bacfef390 55 //pc.printf("SnSR = %x\n", Sn_SR);
hggerdd 2:8f5bacfef390 56
hggerdd 2:8f5bacfef390 57 switch(Sn_SR) {
hggerdd 2:8f5bacfef390 58 case SnSR::ESTABLISHED:
hggerdd 2:8f5bacfef390 59 m_pCb();
hggerdd 2:8f5bacfef390 60 break;
hggerdd 2:8f5bacfef390 61 }
hggerdd 2:8f5bacfef390 62
hggerdd 2:8f5bacfef390 63
hggerdd 2:8f5bacfef390 64 }
hggerdd 2:8f5bacfef390 65
hggerdd 2:8f5bacfef390 66 void TCPSocket::close()
hggerdd 2:8f5bacfef390 67 {
hggerdd 2:8f5bacfef390 68 if (_socket != (-1)) {
hggerdd 2:8f5bacfef390 69 W5100.execCmdSn(_socket, Sock_DISCON);
hggerdd 2:8f5bacfef390 70 W5100.execCmdSn(_socket, Sock_CLOSE);
hggerdd 2:8f5bacfef390 71 }
hggerdd 2:8f5bacfef390 72 }
hggerdd 2:8f5bacfef390 73
hggerdd 2:8f5bacfef390 74 void TCPSocket::setOnEvent(void (*pMethod)(void))
hggerdd 2:8f5bacfef390 75 {
hggerdd 2:8f5bacfef390 76 m_pCb = pMethod;
hggerdd 2:8f5bacfef390 77 }