This is WIZnet Ethernet Interface using Hardware TCP/IP chip, W5500, W5200 and W5100. One of them can be selected by enabling it in wiznet.h.
Fork of WIZnet_Library by
Diff: WIZnetInterface/WIZnet/W5100.cpp
- Revision:
- 8:cb8808b47e69
- Parent:
- 1:8138a268fbd2
--- a/WIZnetInterface/WIZnet/W5100.cpp Sun May 31 10:06:41 2015 +0000 +++ b/WIZnetInterface/WIZnet/W5100.cpp Sun May 31 10:25:40 2015 +0000 @@ -140,6 +140,18 @@ return false; } + +bool WIZnet_Chip::is_fin_received(int socket) +{ + uint8_t tmpSn_SR; + tmpSn_SR = sreg<uint8_t>(socket, Sn_SR); + // packet sending is possible, when state is SOCK_CLOSE_WAIT. + if (tmpSn_SR == SOCK_CLOSE_WAIT) { + return true; + } + return false; +} + void WIZnet_Chip::reset() { reset_pin = 1; @@ -202,7 +214,14 @@ t.reset(); t.start(); while(1) { - int size = sreg<uint16_t>(socket, Sn_TX_FSR); + //int size = sreg<uint16_t>(socket, Sn_TX_FSR); + // during the reading Sn_TX_FSR, it has the possible change of this register. + // so read twice and get same value then use size information. + int size, size2; + do { + size = sreg<uint16_t>(socket, Sn_TX_FSR); + size2 = sreg<uint16_t>(socket, Sn_TX_FSR); + } while (size != size2); if (size > req_size) { return size; }