1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-10 04:22:05 +03:00

optimistic_yield()

this introduces optimistic_yield() used for when standard library
methods are normally used in tight loops waiting for something to
happen, like available().
This commit is contained in:
Makuna
2015-07-13 13:47:13 -07:00
parent dece240830
commit d815c36753
7 changed files with 58 additions and 31 deletions

View File

@ -84,17 +84,15 @@ bool WiFiServer::getNoDelay(){
return tcp_nagle_disabled(_pcb);
}
extern "C" uint32_t esp_micros_at_task_start();
bool WiFiServer::hasClient(){
if (_unclaimed) return true;
return false;
}
extern "C" void optimistic_yield();
WiFiClient WiFiServer::available(byte* status)
{
static uint32_t lastPollTime = 0;
if (_unclaimed)
{
WiFiClient result(_unclaimed);
@ -103,9 +101,7 @@ WiFiClient WiFiServer::available(byte* status)
return result;
}
if (lastPollTime > esp_micros_at_task_start())
yield();
lastPollTime = micros();
optimistic_yield();
return WiFiClient();
}