From f72033cbbf48c35045b65189fca6c728c04a93c5 Mon Sep 17 00:00:00 2001 From: Ray Date: Fri, 24 Jul 2020 23:46:55 -0400 Subject: [PATCH] address issues 139 and 141 --- src/EthernetClient.cpp | 11 ++++++++++- src/utility/w5100.h | 6 ++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/EthernetClient.cpp b/src/EthernetClient.cpp index e2406d7d..edf007ed 100644 --- a/src/EthernetClient.cpp +++ b/src/EthernetClient.cpp @@ -83,7 +83,16 @@ size_t EthernetClient::write(uint8_t b) size_t EthernetClient::write(const uint8_t *buf, size_t size) { if (sockindex >= MAX_SOCK_NUM) return 0; - if (Ethernet.socketSend(sockindex, buf, size)) return size; + //if (Ethernet.socketSend(sockindex, buf, size)) return size; + if(size==0) return 0; + size_t remain = size; + size_t sent = 0; + while(remain > 0) { + sent = Ethernet.socketSend(sockindex, buf+size-remain, remain); + if(sent==0) break; + remain -= sent; + } + if(sent!=0) return size; setWriteError(); return 0; } diff --git a/src/utility/w5100.h b/src/utility/w5100.h index 099556a6..13d3c885 100644 --- a/src/utility/w5100.h +++ b/src/utility/w5100.h @@ -412,10 +412,12 @@ class W5100Class { pinMode(ss_pin, OUTPUT); } inline static void setSS() { - GPOC = ss_pin_mask; + //GPOC = ss_pin_mask; + digitalWrite(ss_pin, LOW); } inline static void resetSS() { - GPOS = ss_pin_mask; + //GPOS = ss_pin_mask; + digitalWrite(ss_pin, HIGH); } #elif defined(__SAMD21G18A__)