mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
Automatically call yield() in WiFiClient::available and WiFiServer::available
This commit is contained in:
parent
2b503977b9
commit
661c414c2a
@ -158,13 +158,14 @@ extern "C" uint32_t esp_micros_at_task_start();
|
|||||||
|
|
||||||
int ICACHE_FLASH_ATTR WiFiClient::available()
|
int ICACHE_FLASH_ATTR WiFiClient::available()
|
||||||
{
|
{
|
||||||
|
static uint32_t lastPollTime = 0;
|
||||||
if (!_client)
|
if (!_client)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (_lastPollTime > esp_micros_at_task_start())
|
if (lastPollTime > esp_micros_at_task_start())
|
||||||
yield();
|
yield();
|
||||||
|
|
||||||
_lastPollTime = micros();
|
lastPollTime = micros();
|
||||||
|
|
||||||
int result = _client->getSize();
|
int result = _client->getSize();
|
||||||
return result;
|
return result;
|
||||||
|
@ -74,9 +74,12 @@ void WiFiServer::begin()
|
|||||||
tcp_arg(listen_pcb, (void*) this);
|
tcp_arg(listen_pcb, (void*) this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" uint32_t esp_micros_at_task_start();
|
||||||
|
|
||||||
WiFiClient WiFiServer::available(byte* status)
|
WiFiClient WiFiServer::available(byte* status)
|
||||||
{
|
{
|
||||||
|
static uint32_t lastPollTime = 0;
|
||||||
|
|
||||||
if (_unclaimed)
|
if (_unclaimed)
|
||||||
{
|
{
|
||||||
WiFiClient result(_unclaimed);
|
WiFiClient result(_unclaimed);
|
||||||
@ -85,6 +88,10 @@ WiFiClient WiFiServer::available(byte* status)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lastPollTime > esp_micros_at_task_start())
|
||||||
|
yield();
|
||||||
|
lastPollTime = micros();
|
||||||
|
|
||||||
return WiFiClient();
|
return WiFiClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user