1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-07 16:23:38 +03:00

Refactoring to PolledTimeout or optimistic_yield on the grounds that these are not wait loops on slow input.

This commit is contained in:
Dirk O. Kaar 2019-12-02 16:07:36 +01:00
parent 117f163099
commit f382fc9d77
5 changed files with 19 additions and 21 deletions

View File

@ -146,7 +146,6 @@ unsigned long HardwareSerial::detectBaudrate(time_t timeoutMillis)
if ((detectedBaudrate = testBaudrate())) { if ((detectedBaudrate = testBaudrate())) {
break; break;
} }
yield();
delay(100); delay(100);
} }
return detectedBaudrate; return detectedBaudrate;

View File

@ -54,7 +54,7 @@ void hexdump(const void *mem, uint32_t len, uint8_t cols)
} }
src += linesize; src += linesize;
len -= linesize; len -= linesize;
yield(); optimistic_yield(10000);
} }
os_printf("\n"); os_printf("\n");
} }

View File

@ -281,7 +281,7 @@ uint8_t ESP8266AVRISP::write_flash_pages(int length) {
int x = 0; int x = 0;
int page = addr_page(here); int page = addr_page(here);
while (x < length) { while (x < length) {
yield(); optimistic_yield(10000);
if (page != addr_page(here)) { if (page != addr_page(here)) {
commit(page); commit(page);
page = addr_page(here); page = addr_page(here);

View File

@ -431,10 +431,9 @@ int8_t ESP8266WiFiSTAClass::waitForConnectResult(unsigned long timeoutLength) {
if((wifi_get_opmode() & 1) == 0) { if((wifi_get_opmode() & 1) == 0) {
return WL_DISCONNECTED; return WL_DISCONNECTED;
} }
using esp8266::polledTimeout::oneShot; using oneShotYieldMs = esp8266::polledTimeout::timeoutTemplate<false, esp8266::polledTimeout::YieldPolicy::YieldOrSkip>;
oneShot timeout(timeoutLength); // number of milliseconds to wait before returning timeout error oneShotYieldMs timeout(timeoutLength); // number of milliseconds to wait before returning timeout error
while(!timeout) { while(!timeout) {
yield();
if(status() != WL_DISCONNECTED) { if(status() != WL_DISCONNECTED) {
return status(); return status();
} }

View File

@ -150,7 +150,7 @@ IPAddress ESP8266WiFiMesh::getStaticIP()
void ESP8266WiFiMesh::disableStaticIP() void ESP8266WiFiMesh::disableStaticIP()
{ {
WiFi.config(0u,0u,0u); WiFi.config(0u,0u,0u);
yield(); optimistic_yield(10000);
staticIPActivated = false; staticIPActivated = false;
} }
@ -185,9 +185,9 @@ void ESP8266WiFiMesh::deactivateAP()
void ESP8266WiFiMesh::restartAP() void ESP8266WiFiMesh::restartAP()
{ {
deactivateAP(); deactivateAP();
yield(); optimistic_yield(10000);
activateAP(); activateAP();
yield(); optimistic_yield(10000);
} }
ESP8266WiFiMesh * ESP8266WiFiMesh::getAPController() ESP8266WiFiMesh * ESP8266WiFiMesh::getAPController()
@ -331,9 +331,9 @@ bool ESP8266WiFiMesh::latestTransmissionSuccessful()
void ESP8266WiFiMesh::fullStop(WiFiClient &currClient) void ESP8266WiFiMesh::fullStop(WiFiClient &currClient)
{ {
currClient.stop(); currClient.stop();
yield(); optimistic_yield(10000);
WiFi.disconnect(); WiFi.disconnect();
yield(); optimistic_yield(10000);
} }
/** /**
@ -375,7 +375,7 @@ transmission_status_t ESP8266WiFiMesh::exchangeInfo(WiFiClient &currClient)
verboseModePrint("Transmitting"); // Not storing strings in flash (via F()) to avoid performance impacts when using the string. verboseModePrint("Transmitting"); // Not storing strings in flash (via F()) to avoid performance impacts when using the string.
currClient.print(getMessage() + '\r'); currClient.print(getMessage() + '\r');
yield(); optimistic_yield(10000);
if (!waitForClientTransmission(currClient, _stationModeTimeoutMs)) if (!waitForClientTransmission(currClient, _stationModeTimeoutMs))
{ {
@ -390,7 +390,7 @@ transmission_status_t ESP8266WiFiMesh::exchangeInfo(WiFiClient &currClient)
} }
String response = currClient.readStringUntil('\r'); String response = currClient.readStringUntil('\r');
yield(); optimistic_yield(10000);
currClient.flush(); currClient.flush();
/* Pass data to user callback */ /* Pass data to user callback */
@ -443,7 +443,7 @@ transmission_status_t ESP8266WiFiMesh::attemptDataTransferKernel()
} }
currClient.stop(); currClient.stop();
yield(); optimistic_yield(10000);
return transmissionOutcome; return transmissionOutcome;
} }
@ -476,7 +476,7 @@ transmission_status_t ESP8266WiFiMesh::connectToNode(const String &targetSSID, i
WiFiMode_t storedWiFiMode = WiFi.getMode(); WiFiMode_t storedWiFiMode = WiFi.getMode();
WiFi.mode(WIFI_OFF); WiFi.mode(WIFI_OFF);
WiFi.mode(storedWiFiMode); WiFi.mode(storedWiFiMode);
yield(); optimistic_yield(10000);
#else #else
// Disable static IP so that we can connect to other servers via DHCP (DHCP is slower but required for connecting to more than one server, it seems (possible bug?)). // Disable static IP so that we can connect to other servers via DHCP (DHCP is slower but required for connecting to more than one server, it seems (possible bug?)).
@ -500,7 +500,7 @@ transmission_status_t ESP8266WiFiMesh::connectToNode(const String &targetSSID, i
{ {
verboseModePrint(F("... "), false); verboseModePrint(F("... "), false);
WiFi.disconnect(); WiFi.disconnect();
yield(); optimistic_yield(10000);
initiateConnectionToAP(targetSSID, targetChannel, targetBSSID); initiateConnectionToAP(targetSSID, targetChannel, targetBSSID);
attemptNumber++; attemptNumber++;
} }
@ -527,7 +527,7 @@ void ESP8266WiFiMesh::attemptTransmission(const String &message, bool concluding
if(initialDisconnect) if(initialDisconnect)
{ {
WiFi.disconnect(); WiFi.disconnect();
yield(); optimistic_yield(10000);
} }
latestTransmissionOutcomes.clear(); latestTransmissionOutcomes.clear();
@ -565,7 +565,7 @@ void ESP8266WiFiMesh::attemptTransmission(const String &message, bool concluding
for(NetworkInfo &currentNetwork : connectionQueue) for(NetworkInfo &currentNetwork : connectionQueue)
{ {
WiFi.disconnect(); WiFi.disconnect();
yield(); optimistic_yield(10000);
String currentSSID; String currentSSID;
int currentWiFiChannel = NETWORK_INFO_DEFAULT_INT; int currentWiFiChannel = NETWORK_INFO_DEFAULT_INT;
@ -614,7 +614,7 @@ void ESP8266WiFiMesh::attemptTransmission(const String &message, bool concluding
if(concludingDisconnect) if(concludingDisconnect)
{ {
WiFi.disconnect(); WiFi.disconnect();
yield(); optimistic_yield(10000);
} }
} }
@ -658,7 +658,7 @@ void ESP8266WiFiMesh::acceptRequest()
/* Read in request and pass it to the supplied requestHandler */ /* Read in request and pass it to the supplied requestHandler */
String request = _client.readStringUntil('\r'); String request = _client.readStringUntil('\r');
yield(); optimistic_yield(10000);
_client.flush(); _client.flush();
String response = _requestHandler(request, *this); String response = _requestHandler(request, *this);
@ -669,7 +669,7 @@ void ESP8266WiFiMesh::acceptRequest()
verboseModePrint("Responding"); // Not storing strings in flash (via F()) to avoid performance impacts when using the string. verboseModePrint("Responding"); // Not storing strings in flash (via F()) to avoid performance impacts when using the string.
_client.print(response + '\r'); _client.print(response + '\r');
_client.flush(); _client.flush();
yield(); optimistic_yield(10000);
} }
} }
} }