From 162049aef9b4ef2fc92504753bc8c9da166cbbab Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Dec 2021 10:23:00 +0100 Subject: [PATCH 1/3] Fix watchdog trigger timer. Kick the watchdog each 10 seconds. --- src/utility/spi_drv.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/utility/spi_drv.cpp b/src/utility/spi_drv.cpp index 3fa29981..1b97a930 100644 --- a/src/utility/spi_drv.cpp +++ b/src/utility/spi_drv.cpp @@ -217,12 +217,13 @@ void SpiDrv::waitForSlaveSign() void SpiDrv::waitForSlaveReady(bool const feed_watchdog) { - unsigned long const start = millis(); + unsigned long trigger_time = millis() + 10000; while (!waitSlaveReady()) { if (feed_watchdog) { - if ((millis() - start) < 10000) { + if (static_cast(trigger_time - millis()) <=0) { WiFi.feedWatchdog(); + trigger_time = millis() + 10000; } } } From a37d3500724d0f1ff59756bd8c481ded9d41d240 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 22 Dec 2021 13:18:42 +0100 Subject: [PATCH 2/3] Remove feed_watchdog check --- src/utility/server_drv.cpp | 2 +- src/utility/spi_drv.cpp | 12 +++++------- src/utility/spi_drv.h | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/utility/server_drv.cpp b/src/utility/server_drv.cpp index 4fc35b4e..b8565f2e 100644 --- a/src/utility/server_drv.cpp +++ b/src/utility/server_drv.cpp @@ -130,7 +130,7 @@ void ServerDrv::startClient(const char* host, uint8_t host_len, uint32_t ipAddre SpiDrv::spiSlaveDeselect(); //Wait the reply elaboration - SpiDrv::waitForSlaveReady(/* feed_watchdog = */ (protMode == TLS_BEARSSL_MODE)); + SpiDrv::waitForSlaveReady(); SpiDrv::spiSlaveSelect(); // Wait for reply diff --git a/src/utility/spi_drv.cpp b/src/utility/spi_drv.cpp index 1b97a930..cefff91c 100644 --- a/src/utility/spi_drv.cpp +++ b/src/utility/spi_drv.cpp @@ -215,16 +215,14 @@ void SpiDrv::waitForSlaveSign() while (!waitSlaveSign()); } -void SpiDrv::waitForSlaveReady(bool const feed_watchdog) +void SpiDrv::waitForSlaveReady() { - unsigned long trigger_time = millis() + 10000; + unsigned long trigger_time = millis(); while (!waitSlaveReady()) { - if (feed_watchdog) { - if (static_cast(trigger_time - millis()) <=0) { - WiFi.feedWatchdog(); - trigger_time = millis() + 10000; - } + if (static_cast(trigger_time - millis()) <=0) { + WiFi.feedWatchdog(); + trigger_time = millis() + 10000; } } } diff --git a/src/utility/spi_drv.h b/src/utility/spi_drv.h index d8d1186c..bbeafa0c 100644 --- a/src/utility/spi_drv.h +++ b/src/utility/spi_drv.h @@ -59,7 +59,7 @@ class SpiDrv static char spiTransfer(volatile char data); - static void waitForSlaveReady(bool const feed_watchdog = false); + static void waitForSlaveReady(); //static int waitSpiChar(char waitChar, char* readChar); From 51590dbc0dcfdc578e119397943e940e40fab4b4 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 10 Dec 2021 10:23:25 +0100 Subject: [PATCH 3/3] Add 10ms delay into wait loop --- src/utility/spi_drv.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utility/spi_drv.cpp b/src/utility/spi_drv.cpp index cefff91c..dbd52993 100644 --- a/src/utility/spi_drv.cpp +++ b/src/utility/spi_drv.cpp @@ -224,6 +224,7 @@ void SpiDrv::waitForSlaveReady() WiFi.feedWatchdog(); trigger_time = millis() + 10000; } + delay(10); } }