From 3aaf242b59e5b1c4c6e42d853ce6afe120d1d3cf Mon Sep 17 00:00:00 2001 From: Juraj Andrassy Date: Sun, 25 Jul 2021 15:36:40 +0200 Subject: [PATCH 1/3] ArduinoWiFiServer - check for clients in write() too --- libraries/ESP8266WiFi/src/ArduinoWiFiServer.h | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h b/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h index 31b8ea0c16..58b0fa7a78 100644 --- a/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h +++ b/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h @@ -43,12 +43,8 @@ class ArduinoComptibleWiFiServerTemplate : public TServer { // https://www.arduino.cc/en/Reference/WiFiServerAvailable TClient available() { - // update connected clients - for (uint8_t i = 0; i < MAX_MONITORED_CLIENTS; i++) { - if (!connectedClients[i]) { - connectedClients[i] = accept(); - } - } + acceptClients(); + // find next client with data available for (uint8_t i = 0; i < MAX_MONITORED_CLIENTS; i++) { if (index == MAX_MONITORED_CLIENTS) { @@ -67,6 +63,12 @@ class ArduinoComptibleWiFiServerTemplate : public TServer { } virtual size_t write(const uint8_t *buf, size_t size) override { + static uint32_t lastCheck; + uint32_t m = millis(); + if (m - lastCheck > 100) { + lastCheck = m; + acceptClients(); + } if (size == 0) return 0; size_t ret = 0; @@ -127,6 +129,13 @@ class ArduinoComptibleWiFiServerTemplate : public TServer { TClient connectedClients[MAX_MONITORED_CLIENTS]; uint8_t index = 0; + void acceptClients() { + for (uint8_t i = 0; i < MAX_MONITORED_CLIENTS; i++) { + if (!connectedClients[i]) { + connectedClients[i] = accept(); + } + } + } }; typedef ArduinoComptibleWiFiServerTemplate ArduinoWiFiServer; From 72fcad78a832627293311dadc6141b781909bb0b Mon Sep 17 00:00:00 2001 From: Juraj Andrassy Date: Sun, 25 Jul 2021 15:37:18 +0200 Subject: [PATCH 2/3] PagerServer example - fix typo in comment --- libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino b/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino index 05fa597ab7..43f8fe981c 100644 --- a/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino +++ b/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino @@ -2,7 +2,7 @@ Pager Server The ESP8266WiFi library's WiFiServer and WiFiServerSecure - work differently then WiFiServer and EthernetSever + work differently than WiFiServer and EthernetSever in Arduino networking libraries. This example demonstrates the ArduinoWiFiServer, which enhances the WiFiServer. From 1ca65c92b0b60fc155744c9b0ba8a270279f18fa Mon Sep 17 00:00:00 2001 From: Juraj Andrassy Date: Sun, 25 Jul 2021 15:37:18 +0200 Subject: [PATCH 3/3] ArduinoWiFiServer - fix typo in class name --- .../ESP8266WiFi/examples/PagerServer/PagerServer.ino | 2 +- libraries/ESP8266WiFi/src/ArduinoWiFiServer.h | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino b/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino index 05fa597ab7..43f8fe981c 100644 --- a/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino +++ b/libraries/ESP8266WiFi/examples/PagerServer/PagerServer.ino @@ -2,7 +2,7 @@ Pager Server The ESP8266WiFi library's WiFiServer and WiFiServerSecure - work differently then WiFiServer and EthernetSever + work differently than WiFiServer and EthernetSever in Arduino networking libraries. This example demonstrates the ArduinoWiFiServer, which enhances the WiFiServer. diff --git a/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h b/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h index 58b0fa7a78..53e373610e 100644 --- a/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h +++ b/libraries/ESP8266WiFi/src/ArduinoWiFiServer.h @@ -28,12 +28,12 @@ #endif template -class ArduinoComptibleWiFiServerTemplate : public TServer { +class ArduinoCompatibleWiFiServerTemplate : public TServer { public: - ArduinoComptibleWiFiServerTemplate(const IPAddress& addr, uint16_t port) : TServer(addr, port) {} - ArduinoComptibleWiFiServerTemplate(uint16_t port) : TServer(port) {} - virtual ~ArduinoComptibleWiFiServerTemplate() {} + ArduinoCompatibleWiFiServerTemplate(const IPAddress& addr, uint16_t port) : TServer(addr, port) {} + ArduinoCompatibleWiFiServerTemplate(uint16_t port) : TServer(port) {} + virtual ~ArduinoCompatibleWiFiServerTemplate() {} // https://www.arduino.cc/en/Reference/EthernetServerAccept TClient accept() { @@ -138,7 +138,7 @@ class ArduinoComptibleWiFiServerTemplate : public TServer { } }; -typedef ArduinoComptibleWiFiServerTemplate ArduinoWiFiServer; -typedef ArduinoComptibleWiFiServerTemplate ArduinoWiFiServerSecure; +typedef ArduinoCompatibleWiFiServerTemplate ArduinoWiFiServer; +typedef ArduinoCompatibleWiFiServerTemplate ArduinoWiFiServerSecure; #endif