add new define for yield WEBSOCKETS_YIELD

This commit is contained in:
Links
2020-05-03 09:12:03 +02:00
parent ac9b2ccdf6
commit b9e1336826
4 changed files with 25 additions and 30 deletions

View File

@ -623,12 +623,7 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait
} }
if(!client->tcp->available()) { if(!client->tcp->available()) {
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) WEBSOCKETS_YIELD();
delay(0);
#endif
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
yield();
#endif
continue; continue;
} }
@ -641,13 +636,12 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait
} else { } else {
//DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n); //DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n);
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) WEBSOCKETS_YIELD();
delay(0);
#endif
} }
if(cb) { if(cb) {
cb(client, true); cb(client, true);
} }
WEBSOCKETS_YIELD();
#endif #endif
return true; return true;
} }
@ -694,10 +688,9 @@ size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) {
} else { } else {
//DEBUG_WEBSOCKETS("write %d failed left %d!\n", len, n); //DEBUG_WEBSOCKETS("write %d failed left %d!\n", len, n);
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) WEBSOCKETS_YIELD();
delay(0);
#endif
} }
WEBSOCKETS_YIELD();
return total; return total;
} }

View File

@ -61,11 +61,18 @@
// moves all Header strings to Flash (~300 Byte) // moves all Header strings to Flash (~300 Byte)
//#define WEBSOCKETS_SAVE_RAM //#define WEBSOCKETS_SAVE_RAM
#if defined(ESP8266)
#define WEBSOCKETS_YIELD() delay(0)
#elif defined(ESP32)
#define WEBSOCKETS_YIELD() yield()
#endif
#elif defined(STM32_DEVICE) #elif defined(STM32_DEVICE)
#define WEBSOCKETS_MAX_DATA_SIZE (15 * 1024) #define WEBSOCKETS_MAX_DATA_SIZE (15 * 1024)
#define WEBSOCKETS_USE_BIG_MEM #define WEBSOCKETS_USE_BIG_MEM
#define GET_FREE_HEAP System.freeMemory() #define GET_FREE_HEAP System.freeMemory()
#define WEBSOCKETS_YIELD()
#else #else
@ -73,6 +80,7 @@
#define WEBSOCKETS_MAX_DATA_SIZE (1024) #define WEBSOCKETS_MAX_DATA_SIZE (1024)
// moves all Header strings to Flash // moves all Header strings to Flash
#define WEBSOCKETS_SAVE_RAM #define WEBSOCKETS_SAVE_RAM
#define WEBSOCKETS_YIELD()
#endif #endif

View File

@ -148,6 +148,7 @@ void WebSocketsClient::beginSocketIOSSLWithCA(const char * host, uint16_t port,
* called in arduino loop * called in arduino loop
*/ */
void WebSocketsClient::loop(void) { void WebSocketsClient::loop(void) {
WEBSOCKETS_YIELD();
if(!clientIsConnected(&_client)) { if(!clientIsConnected(&_client)) {
// do not flood the server // do not flood the server
if((millis() - _lastConnectionFail) < _reconnectInterval) { if((millis() - _lastConnectionFail) < _reconnectInterval) {
@ -190,6 +191,7 @@ void WebSocketsClient::loop(void) {
DEBUG_WEBSOCKETS("[WS-Client] creating Network class failed!"); DEBUG_WEBSOCKETS("[WS-Client] creating Network class failed!");
return; return;
} }
WEBSOCKETS_YIELD();
#if defined(ESP32) #if defined(ESP32)
if(_client.tcp->connect(_host.c_str(), _port, WEBSOCKETS_TCP_TIMEOUT)) { if(_client.tcp->connect(_host.c_str(), _port, WEBSOCKETS_TCP_TIMEOUT)) {
#else #else
@ -203,7 +205,7 @@ void WebSocketsClient::loop(void) {
} }
} else { } else {
handleClientData(); handleClientData();
WEBSOCKETS_YIELD();
if(_client.status == WSC_CONNECTED) { if(_client.status == WSC_CONNECTED) {
handleHBPing(); handleHBPing();
handleHBTimeout(&_client); handleHBTimeout(&_client);
@ -498,9 +500,7 @@ void WebSocketsClient::handleClientData(void) {
break; break;
} }
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) WEBSOCKETS_YIELD();
delay(0);
#endif
} }
#endif #endif

View File

@ -135,7 +135,9 @@ void WebSocketsServer::close(void) {
*/ */
void WebSocketsServer::loop(void) { void WebSocketsServer::loop(void) {
if(_runnning) { if(_runnning) {
WEBSOCKETS_YIELD();
handleNewClients(); handleNewClients();
WEBSOCKETS_YIELD();
handleClientData(); handleClientData();
} }
} }
@ -231,9 +233,7 @@ bool WebSocketsServer::broadcastTXT(uint8_t * payload, size_t length, bool heade
ret = false; ret = false;
} }
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) WEBSOCKETS_YIELD();
delay(0);
#endif
} }
return ret; return ret;
} }
@ -294,9 +294,7 @@ bool WebSocketsServer::broadcastBIN(uint8_t * payload, size_t length, bool heade
ret = false; ret = false;
} }
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) WEBSOCKETS_YIELD();
delay(0);
#endif
} }
return ret; return ret;
} }
@ -343,9 +341,7 @@ bool WebSocketsServer::broadcastPing(uint8_t * payload, size_t length) {
ret = false; ret = false;
} }
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) WEBSOCKETS_YIELD();
delay(0);
#endif
} }
return ret; return ret;
} }
@ -660,8 +656,8 @@ void WebSocketsServer::handleNewClients(void) {
tcpClient->stop(); tcpClient->stop();
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) WEBSOCKETS_YIELD();
delay(0); #if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
} }
#endif #endif
} }
@ -694,9 +690,7 @@ void WebSocketsServer::handleClientData(void) {
handleHBPing(client); handleHBPing(client);
handleHBTimeout(client); handleHBTimeout(client);
} }
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) WEBSOCKETS_YIELD();
delay(0);
#endif
} }
} }
#endif #endif