28
28
#endif
29
29
30
30
template <class TServer , class TClient >
31
- class ArduinoComptibleWiFiServerTemplate : public TServer {
31
+ class ArduinoCompatibleWiFiServerTemplate : public TServer {
32
32
public:
33
33
34
- ArduinoComptibleWiFiServerTemplate (const IPAddress& addr, uint16_t port) : TServer(addr, port) {}
35
- ArduinoComptibleWiFiServerTemplate (uint16_t port) : TServer(port) {}
36
- virtual ~ArduinoComptibleWiFiServerTemplate () {}
34
+ ArduinoCompatibleWiFiServerTemplate (const IPAddress& addr, uint16_t port) : TServer(addr, port) {}
35
+ ArduinoCompatibleWiFiServerTemplate (uint16_t port) : TServer(port) {}
36
+ virtual ~ArduinoCompatibleWiFiServerTemplate () {}
37
37
38
38
// https://www.arduino.cc/en/Reference/EthernetServerAccept
39
39
TClient accept () {
@@ -43,12 +43,8 @@ class ArduinoComptibleWiFiServerTemplate : public TServer {
43
43
// https://www.arduino.cc/en/Reference/WiFiServerAvailable
44
44
TClient available () {
45
45
46
- // update connected clients
47
- for (uint8_t i = 0 ; i < MAX_MONITORED_CLIENTS; i++) {
48
- if (!connectedClients[i]) {
49
- connectedClients[i] = accept ();
50
- }
51
- }
46
+ acceptClients ();
47
+
52
48
// find next client with data available
53
49
for (uint8_t i = 0 ; i < MAX_MONITORED_CLIENTS; i++) {
54
50
if (index == MAX_MONITORED_CLIENTS) {
@@ -67,6 +63,12 @@ class ArduinoComptibleWiFiServerTemplate : public TServer {
67
63
}
68
64
69
65
virtual size_t write (const uint8_t *buf, size_t size) override {
66
+ static uint32_t lastCheck;
67
+ uint32_t m = millis ();
68
+ if (m - lastCheck > 100 ) {
69
+ lastCheck = m;
70
+ acceptClients ();
71
+ }
70
72
if (size == 0 )
71
73
return 0 ;
72
74
size_t ret = 0 ;
@@ -127,9 +129,16 @@ class ArduinoComptibleWiFiServerTemplate : public TServer {
127
129
TClient connectedClients[MAX_MONITORED_CLIENTS];
128
130
uint8_t index = 0 ;
129
131
132
+ void acceptClients () {
133
+ for (uint8_t i = 0 ; i < MAX_MONITORED_CLIENTS; i++) {
134
+ if (!connectedClients[i]) {
135
+ connectedClients[i] = accept ();
136
+ }
137
+ }
138
+ }
130
139
};
131
140
132
- typedef ArduinoComptibleWiFiServerTemplate <WiFiServer, WiFiClient> ArduinoWiFiServer;
133
- typedef ArduinoComptibleWiFiServerTemplate <WiFiServerSecure, WiFiClientSecure> ArduinoWiFiServerSecure;
141
+ typedef ArduinoCompatibleWiFiServerTemplate <WiFiServer, WiFiClient> ArduinoWiFiServer;
142
+ typedef ArduinoCompatibleWiFiServerTemplate <WiFiServerSecure, WiFiClientSecure> ArduinoWiFiServerSecure;
134
143
135
144
#endif
0 commit comments