8000 add new define for yield WEBSOCKETS_YIELD · genemyers/arduinoWebSockets@b9e1336 · GitHub
[go: up one dir, main page]

Skip to content

Commit b9e1336

Browse files
committed
add new define for yield WEBSOCKETS_YIELD
1 parent ac9b2cc commit b9e1336

File tree

4 files changed

+25
-30
lines changed

4 files changed

+25
-30
lines changed

src/WebSockets.cpp

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -623,12 +623,7 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait
623623
}
624624

625625
if(!client->tcp->available()) {
626-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
627-
delay(0);
628-
#endif
629-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
630-
yield();
631-
#endif
626+
WEBSOCKETS_YIELD();
632627
continue;
633628
}
634629

@@ -641,13 +636,12 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait
641636
} else {
642637
//DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n);
643638
}
644-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
645-
delay(0);
646-
#endif
639+
WEBSOCKETS_YIELD();
647640
}
648641
if(cb) {
649642
cb(client, true);
650643
}
644+
WEBSOCKETS_YIELD();
651645
#endif
652646
return true;
653647
}
@@ -694,10 +688,9 @@ size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) {
694688
} else {
695689
//DEBUG_WEBSOCKETS("write %d failed left %d!\n", len, n);
696690
}
697-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
698-
delay(0);
699-
#endif
691+
WEBSOCKETS_YIELD();
700692
}
693+
WEBSOCKETS_YIELD();
701694
return total;
702695
}
703696

src/WebSockets.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,26 @@
6161
// moves all Header strings to Flash (~300 Byte)
6262
//#define WEBSOCKETS_SAVE_RAM
6363

64+
#if defined(ESP8266)
65+
#define WEBSOCKETS_YIELD() delay(0)
66+
#elif defined(ESP32)
67+
#define WEBSOCKETS_YIELD() yield()
68+
#endif
69+
6470
#elif defined(STM32_DEVICE)
6571

6672
#define WEBSOCKETS_MAX_DATA_SIZE (15 * 1024)
6773
#define WEBSOCKETS_USE_BIG_MEM
6874
#define GET_FREE_HEAP System.freeMemory()
75+
#define WEBSOCKETS_YIELD()
6976

7077
#else
7178

7279
//atmega328p has only 2KB ram!
7380
#define WEBSOCKETS_MAX_DATA_SIZE (1024)
7481
// moves all Header strings to Flash
7582
#define WEBSOCKETS_SAVE_RAM
83+
#define WEBSOCKETS_YIELD()
7684

7785
#endif
7886

src/WebSocketsClient.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ void WebSocketsClient::beginSocketIOSSLWithCA(const char * host, uint16_t port,
148148
* called in arduino loop
149149
*/
150150
void WebSocketsClient::loop(void) {
151+
WEBSOCKETS_YIELD();
151152
if(!clientIsConnected(&_client)) {
152153
// do not flood the server
153154
if((millis() - _lastConnectionFail) < _reconnectInterval) {
@@ -190,6 +191,7 @@ void WebSocketsClient::loop(void) {
190191
DEBUG_WEBSOCKETS("[WS-Client] creating Network class failed!");
191192
return;
192193
}
194+
WEBSOCKETS_YIELD();
193195
#if defined(ESP32)
194196
if(_client.tcp->connect(_host.c_str(), _port, WEBSOCKETS_TCP_TIMEOUT)) {
195197
#else
@@ -203,7 +205,7 @@ void WebSocketsClient::loop(void) {
203205
}
204206
} else {
205207
handleClientData();
206-
208+
WEBSOCKETS_YIELD();
207209
if(_client.status == WSC_CONNECTED) {
208210
handleHBPing();
209211
handleHBTimeout(&_client);
@@ -498,9 +500,7 @@ void WebSocketsClient::handleClientData(void) {
498500
break;
499501
}
500502
}
501-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
502-
delay(0);
503-
#endif
503+
WEBSOCKETS_YIELD();
504504
}
505505
#endif
506506

src/WebSocketsServer.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ void WebSocketsServer::close(void) {
135135
*/
136136
void WebSocketsServer::loop(void) {
137137
if(_runnning) {
138+
WEBSOCKETS_YIELD();
138139
handleNewClients();
140+
WEBSOCKETS_YIELD();
139141
handleClientData();
140142
}
141143
}
@@ -231,9 +233,7 @@ bool WebSocketsServer::broadcastTXT(uint8_t * payload, size_t length, bool heade
231233
ret = false;
232234
}
233235
}
234-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
235-
delay(0);
236-
#endif
236+
WEBSOCKETS_YIELD();
237237
}
238238
return ret;
239239
}
@@ -294,9 +294,7 @@ bool WebSocketsServer::broadcastBIN(uint8_t * payload, size_t length, bool heade
294294
ret = false;
295295
}
296296
}
297-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
298-
delay(0);
299-
#endif
297+
WEBSOCKETS_YIELD();
300298
}
301299
return ret;
302300
}
@@ -343,9 +341,7 @@ bool WebSocketsServer::broadcastPing(uint8_t * payload, size_t length) {
343341
ret = false;
344342
}
345343
}
346-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
347-
delay(0);
348-
#endif
344+
WEBSOCKETS_YIELD();
349345
}
350346
return ret;
351347
}
@@ -660,8 +656,8 @@ void WebSocketsServer::handleNewClients(void) {
660656
tcpClient->stop();
661657
}
662658

663-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
664-
delay(0);
659+
WEBSOCKETS_YIELD();
660+
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
665661
}
666662
#endif
667663
}
@@ -694,9 +690,7 @@ void WebSocketsServer::handleClientData(void) {
694690
handleHBPing(client);
695691
handleHBTimeout(client);
696692
}
697-
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
698-
delay(0);
699-
#endif
693+
WEBSOCKETS_YIELD();
700694
}
701695
}
702696
#endif

0 commit comments

Comments
 (0)
0