Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Networking/ESP8266WiFi/WiFiInterface.cpp')
-rw-r--r--src/Networking/ESP8266WiFi/WiFiInterface.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/Networking/ESP8266WiFi/WiFiInterface.cpp b/src/Networking/ESP8266WiFi/WiFiInterface.cpp
index 50c50f62..9e08438b 100644
--- a/src/Networking/ESP8266WiFi/WiFiInterface.cpp
+++ b/src/Networking/ESP8266WiFi/WiFiInterface.cpp
@@ -93,10 +93,9 @@ constexpr SSPChannel ESP_SPI = SSP0;
# include "matrix/matrix.h"
#endif
-const uint32_t WiFiResponseTimeoutMillis = 200; // SPI timeout when when the ESP does not have to write to flash memory
-const uint32_t WiFiTransferTimeoutMillis = 60; // Christian measured this at 29 to 31ms when the ESP has to write to flash memory
+const uint32_t WiFiResponseTimeoutMillis = 500; // Timeout includes time-intensive flash-access operations; highest measured is 234 ms.
const uint32_t WiFiWaitReadyMillis = 100;
-const uint32_t WiFiStartupMillis = 300;
+const uint32_t WiFiStartupMillis = 8000;
const uint32_t WiFiStableMillis = 100;
const unsigned int MaxHttpConnections = 4;
@@ -577,6 +576,8 @@ void WiFiInterface::Start() noexcept
transferAlreadyPendingCount = readyTimeoutCount = responseTimeoutCount = 0;
lastTickMillis = millis();
+ lastDataReadyPinState = 0;
+ risingEdges = 0;
SetState(NetworkState::starting1);
}
@@ -613,13 +614,31 @@ void WiFiInterface::Spin() noexcept
{
case NetworkState::starting1:
{
+ const bool currentDataReadyPinState = digitalRead(EspDataReadyPin);
+ if (currentDataReadyPinState != lastDataReadyPinState)
+ {
+ if (currentDataReadyPinState && risingEdges < 10)
+ {
+ risingEdges++;
+ }
+ lastDataReadyPinState = currentDataReadyPinState;
+ }
+
// The ESP toggles CS before it has finished starting up, so don't look at the CS signal too soon
const uint32_t now = millis();
- if (now - lastTickMillis >= WiFiStartupMillis)
+ if (risingEdges >= 2) // the first rising edge is the one coming out of reset
{
lastTickMillis = now;
SetState(NetworkState::starting2);
}
+ else
+ {
+ if (now - lastTickMillis >= WiFiStartupMillis) // time wait expired
+ {
+ platform.Message(NetworkInfoMessage, "WiFi module disabled - start timed out\n");
+ SetState(NetworkState::disabled);
+ }
+ }
}
break;