Fork for fixes
Diff: TcpClient.cpp
- Revision:
- 11:647d53d146f1
- Parent:
- 10:e4ddab81e6a8
- Child:
- 12:1dd995402b99
--- a/TcpClient.cpp Tue Aug 27 22:08:54 2019 +0000 +++ b/TcpClient.cpp Fri Aug 30 08:11:40 2019 +0000 @@ -31,7 +31,7 @@ #define UIP_TCP_PHYH_LEN UIP_LLH_LEN + UIP_IPTCPH_LEN -uip_userdata_t TcpClient:: all_data[UIP_CONNS]; +uip_userdata_t TcpClient::all_data[UIP_CONNS]; /** * @brief @@ -194,7 +194,7 @@ * @param * @retval */ -size_t TcpClient::send(uint8_t c) +int TcpClient::send(uint8_t c) { return _write(data, &c, 1); } @@ -205,7 +205,7 @@ * @param * @retval */ -size_t TcpClient::send(const uint8_t* buf, size_t size) +int TcpClient::send(const uint8_t* buf, size_t size) { return _write(data, buf, size); } @@ -216,9 +216,9 @@ * @param * @retval */ -size_t TcpClient::_write(uip_userdata_t* data, const uint8_t* buf, size_t size) +int TcpClient::_write(uip_userdata_t* data, const uint8_t* buf, size_t size) { - int remain = size; + size_t remain = size; uint16_t written; #if UIP_ATTEMPTS_ON_WRITE > 0 uint16_t attempts = UIP_ATTEMPTS_ON_WRITE; @@ -229,7 +229,7 @@ if (data->packets_out[p] == NOBLOCK) { newpacket: - data->packets_out[p] = UipEthernet::ethernet->phy.allocBlock(UIP_SOCKET_DATALEN); + data->packets_out[p] = UipEthernet::ethernet->enc28j60Eth.allocBlock(UIP_SOCKET_DATALEN); if (data->packets_out[p] == NOBLOCK) { #if UIP_ATTEMPTS_ON_WRITE > 0 @@ -254,7 +254,7 @@ remain ); #endif - written = UipEthernet::ethernet->phy.writePacket + written = UipEthernet::ethernet->enc28j60Eth.writePacket ( data->packets_out[p], data->out_pos, @@ -310,7 +310,7 @@ { size_t len = 0; for (uint8_t i = 0; i < UIP_SOCKET_NUMPACKETS; i++) { - len += UipEthernet::ethernet->phy.blockSize(u->packets_in[i]); + len += UipEthernet::ethernet->enc28j60Eth.blockSize(u->packets_in[i]); } return len; @@ -331,8 +331,8 @@ uint16_t read; do { - read = UipEthernet::ethernet->phy.readPacket(data->packets_in[0], 0, buf + size - remain, remain); - if (read == UipEthernet::ethernet->phy.blockSize(data->packets_in[0])) { + read = UipEthernet::ethernet->enc28j60Eth.readPacket(data->packets_in[0], 0, buf + size - remain, remain); + if (read == UipEthernet::ethernet->enc28j60Eth.blockSize(data->packets_in[0])) { remain -= read; _eatBlock(&data->packets_in[0]); if @@ -350,7 +350,7 @@ } } else { - UipEthernet::ethernet->phy.resizeBlock(data->packets_in[0], read); + UipEthernet::ethernet->enc28j60Eth.resizeBlock(data->packets_in[0], read); break; } } while (remain > 0); @@ -366,7 +366,7 @@ * @param * @retval */ -size_t TcpClient::recv() +int TcpClient::recv() { static uint8_t c; if (recv(&c, 1) < 0) @@ -385,7 +385,7 @@ static uint8_t c; if (*this) { if (data->packets_in[0] != NOBLOCK) { - UipEthernet::ethernet->phy.readPacket(data->packets_in[0], 0, &c, 1); + UipEthernet::ethernet->enc28j60Eth.readPacket(data->packets_in[0], 0, &c, 1); return c; } } @@ -412,12 +412,9 @@ * @param * @retval */ -const char* TcpClient::getpeername() +IpAddress TcpClient::getRemoteIp() { - static char buf[16]; - IpAddress remoteIp = ip_addr_uip(data->ripaddr); - - return remoteIp.toString(buf); + return ip_addr_uip(data->ripaddr); } /** @@ -426,9 +423,11 @@ * @param * @retval */ -IpAddress TcpClient::getRemoteIp() +const char* TcpClient::getpeername() { - return ip_addr_uip(data->ripaddr); + static char buf[16]; + + return getRemoteIp().toString(buf); } /** @@ -481,9 +480,9 @@ if (uip_len && !(u->state & (UIP_CLIENT_CLOSE | UIP_CLIENT_REMOTECLOSED))) { for (uint8_t i = 0; i < UIP_SOCKET_NUMPACKETS; i++) { if (u->packets_in[i] == NOBLOCK) { - u->packets_in[i] = UipEthernet::ethernet->phy.allocBlock(uip_len); + u->packets_in[i] = UipEthernet::ethernet->enc28j60Eth.allocBlock(uip_len); if (u->packets_in[i] != NOBLOCK) { - UipEthernet::ethernet->phy.copyPacket + UipEthernet::ethernet->enc28j60Eth.copyPacket ( u->packets_in[i], 0, @@ -552,16 +551,16 @@ if (u->packets_out[1] == NOBLOCK) { send_len = u->out_pos; if (send_len > 0) { - UipEthernet::ethernet->phy.resizeBlock(u->packets_out[0], 0, send_len); + UipEthernet::ethernet->enc28j60Eth.resizeBlock(u->packets_out[0], 0, send_len); } } else - send_len = UipEthernet::ethernet->phy.blockSize(u->packets_out[0]); + send_len = UipEthernet::ethernet->enc28j60Eth.blockSize(u->packets_out[0]); if (send_len > 0) { UipEthernet::uipHeaderLen = ((uint8_t*)uip_appdata) - uip_buf; - UipEthernet::uipPacket = UipEthernet::ethernet->phy.allocBlock(UipEthernet::uipHeaderLen + send_len); + UipEthernet::uipPacket = UipEthernet::ethernet->enc28j60Eth.allocBlock(UipEthernet::uipHeaderLen + send_len); if (UipEthernet::uipPacket != NOBLOCK) { - UipEthernet::ethernet->phy.copyPacket + UipEthernet::ethernet->enc28j60Eth.copyPacket ( UipEthernet::uipPacket, UipEthernet::uipHeaderLen, @@ -620,6 +619,8 @@ if (!data->state) { data->pollTimer.reset(); data->state = sock | UIP_CLIENT_CONNECTED; + data->ripaddr[0] = 0; + data->ripaddr[1] = 0; memset(data->packets_in, 0, sizeof(data->packets_in) / sizeof(data->packets_in[0])); memset(&data->packets_out, 0, sizeof(data->packets_out) / sizeof(data->packets_out[0])); data->out_pos = 0; @@ -663,7 +664,7 @@ printf("-> "); #endif - UipEthernet::ethernet->phy.freeBlock(block[0]); + UipEthernet::ethernet->enc28j60Eth.freeBlock(block[0]); for (uint8_t i = 0; i < UIP_SOCKET_NUMPACKETS - 1; i++) { block[i] = block[i + 1]; } @@ -687,7 +688,7 @@ void TcpClient::_flushBlocks(memhandle* block) { for (uint8_t i = 0; i < UIP_SOCKET_NUMPACKETS; i++) { - UipEthernet::ethernet->phy.freeBlock(block[i]); + UipEthernet::ethernet->enc28j60Eth.freeBlock(block[i]); block[i] = NOBLOCK; } }