Compare commits

...
Sign in to create a new pull request.

2 commits
master ... u3

Author SHA1 Message Date
Andrea Odetti
5c3819af77 Add more logging for TCP. 2022-03-26 18:07:16 +00:00
Andrea Odetti
1c427f1072 add logging 2022-03-26 17:35:29 +00:00
2 changed files with 22 additions and 7 deletions

View file

@ -78,9 +78,9 @@ typedef int socklen_t;
#define ETH_MINIMUM_SIZE (6 + 6 + 2) #define ETH_MINIMUM_SIZE (6 + 6 + 2)
// #define U2_LOG_VERBOSE // #define U2_LOG_VERBOSE
// #define U2_LOG_TRAFFIC #define U2_LOG_TRAFFIC
// #define U2_LOG_STATE #define U2_LOG_STATE
// #define U2_LOG_UNKNOWN #define U2_LOG_UNKNOWN
#define MAC_FMT "%02X:%02X:%02X:%02X:%02X:%02X" #define MAC_FMT "%02X:%02X:%02X:%02X:%02X:%02X"
#define MAC_DEST(p) p[0], p[1], p[2], p[3], p[4], p[5] #define MAC_DEST(p) p[0], p[1], p[2], p[3], p[4], p[5]
@ -186,6 +186,8 @@ Socket::Socket()
, sn_sr(W5100_SN_SR_CLOSED) , sn_sr(W5100_SN_SR_CLOSED)
, myFD(INVALID_SOCKET) , myFD(INVALID_SOCKET)
, myErrno(0) , myErrno(0)
, myDataRead(0)
, myDataReceived(0)
{ {
} }
@ -197,6 +199,9 @@ void Socket::clearFD()
closesocket(myFD); closesocket(myFD);
#else #else
close(myFD); close(myFD);
#endif
#ifdef U2_LOG_STATE
LogFileOutput("U2: Connection closed\n");
#endif #endif
} }
myFD = INVALID_SOCKET; myFD = INVALID_SOCKET;
@ -208,6 +213,8 @@ void Socket::setFD(const socket_t fd, const int status)
clearFD(); clearFD();
myFD = fd; myFD = fd;
myErrno = 0; myErrno = 0;
myDataRead = 0;
myDataReceived = 0;
sn_sr = status; sn_sr = status;
} }
@ -466,7 +473,9 @@ void Uthernet2::updateRSR(const size_t i)
#ifdef U2_LOG_TRAFFIC #ifdef U2_LOG_TRAFFIC
if (socket.sn_rx_rsr != dataPresent) if (socket.sn_rx_rsr != dataPresent)
{ {
LogFileOutput("U2: Recv[%" SIZE_T_FMT "]: %d -> %d bytes\n", i, socket.sn_rx_rsr, dataPresent); const size_t dataRead = socket.sn_rx_rsr - dataPresent;
socket.myDataRead += dataRead;
LogFileOutput("U2: Recv[%" SIZE_T_FMT "]: %d - %" SIZE_T_FMT " -> %d (%" SIZE_T_FMT ") bytes\n", i, socket.sn_rx_rsr, dataRead, dataPresent, socket.myDataRead);
} }
#endif #endif
socket.sn_rx_rsr = dataPresent; socket.sn_rx_rsr = dataPresent;
@ -643,14 +652,18 @@ void Uthernet2::receiveOnePacketFromSocket(const size_t i)
#endif #endif
if (data > 0) if (data > 0)
{ {
socket.myDataReceived += data;
writeDataForProtocol(socket, myMemory, buffer.data(), data, source); writeDataForProtocol(socket, myMemory, buffer.data(), data, source);
#ifdef U2_LOG_TRAFFIC #ifdef U2_LOG_TRAFFIC
LogFileOutput("U2: Read %s[%" SIZE_T_FMT "]: +%" SIZE_T_FMT " -> %d bytes\n", proto, i, data, socket.sn_rx_rsr); LogFileOutput("U2: Read %s[%" SIZE_T_FMT "]: +%" SIZE_T_FMT " -> %d (%" SIZE_T_FMT ") bytes\n", proto, i, data, socket.sn_rx_rsr, socket.myDataReceived);
#endif #endif
} }
else if (data == 0) else if (data == 0)
{ {
// gracefull termination #ifdef U2_LOG_TRAFFIC
LogFileOutput("U2: %s[%" SIZE_T_FMT "]: recvfrom result = %" PTRDIFF_T_FMT "\n", proto, i, data);
#endif
// graceful termination
socket.clearFD(); socket.clearFD();
} }
else // data < 0; else // data < 0;
@ -659,7 +672,7 @@ void Uthernet2::receiveOnePacketFromSocket(const size_t i)
if (error != SOCK_EAGAIN && error != SOCK_EWOULDBLOCK) if (error != SOCK_EAGAIN && error != SOCK_EWOULDBLOCK)
{ {
#ifdef U2_LOG_TRAFFIC #ifdef U2_LOG_TRAFFIC
LogFileOutput("U2: %s[%" SIZE_T_FMT "]: recvfrom error %" ERROR_FMT "\n", proto, i, STRERROR(error)); LogFileOutput("U2: %s[%" SIZE_T_FMT "]: recvfrom result = %" PTRDIFF_T_FMT ", error = %" ERROR_FMT "\n", proto, i, data, STRERROR(error));
#endif #endif
socket.clearFD(); socket.clearFD();
} }

View file

@ -29,6 +29,8 @@ struct Socket
socket_t myFD; socket_t myFD;
int myErrno; int myErrno;
size_t myDataReceived;
size_t myDataRead;
bool isOpen() const; bool isOpen() const;
void clearFD(); void clearFD();