From 629f1ead72709534ce216bd88a389b4b753f8c91 Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 10 Jun 2021 11:17:33 +0200 Subject: [PATCH 1/5] Provide API to configure watchdog feed function and feed it --- libraries/WiFi/src/WiFi.cpp | 12 ++++++++++++ libraries/WiFi/src/WiFi.h | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/libraries/WiFi/src/WiFi.cpp b/libraries/WiFi/src/WiFi.cpp index ed8697813..b38c71caa 100644 --- a/libraries/WiFi/src/WiFi.cpp +++ b/libraries/WiFi/src/WiFi.cpp @@ -314,6 +314,18 @@ unsigned long arduino::WiFiClass::getTime() { return 0; } +void arduino::WiFiClass::setFeedWatchdogFunc(voidPrtFuncPtr func) +{ + _feed_watchdog_func = func; +} + +void arduino::WiFiClass::feedWatchdog() +{ + if (_feed_watchdog_func) + _feed_watchdog_func(); +} + + #if defined(COMPONENT_4343W) #include "QSPIFBlockDevice.h" diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index 18ca91daf..3b41a78da 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -296,6 +296,9 @@ class WiFiClass NetworkInterface *getNetwork(); + void setFeedWatchdogFunc(voidPrtFuncPtr func); + void feedWatchdog(); + private: EMACInterface* _softAP = nullptr; @@ -316,6 +319,7 @@ class WiFiClass bool isVisible(const char* ssid); arduino::IPAddress ipAddressFromSocketAddress(SocketAddress socketAddress); SocketAddress socketAddressFromIpAddress(arduino::IPAddress ip, uint16_t port); + voidPrtFuncPtr _feed_watchdog_func = 0; }; } From 4a361aff0709c6281fa563ada5487868f36e950f Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 10 Jun 2021 11:17:51 +0200 Subject: [PATCH 2/5] Feed watchdog during download --- libraries/WiFi/src/WiFiHelpers.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/WiFi/src/WiFiHelpers.cpp b/libraries/WiFi/src/WiFiHelpers.cpp index 3d1e35cc8..ed9301233 100644 --- a/libraries/WiFi/src/WiFiHelpers.cpp +++ b/libraries/WiFi/src/WiFiHelpers.cpp @@ -23,6 +23,7 @@ static FILE* target; void body_callback(const char* data, uint32_t data_len) { + WiFi.feedWatchdog(); fwrite(data, 1, data_len, target); } From 23dcb683f909b2a076289e362fcd66b627e1bf46 Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 10 Jun 2021 14:09:14 +0200 Subject: [PATCH 3/5] Enable watchdog feed func --- libraries/WiFi/src/WiFi.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index 3b41a78da..1378053dc 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -49,6 +49,8 @@ extern "C" { #define DEFAULT_AP_CHANNEL 6 #endif +#define WIFI_HAS_FEED_WATCHDOG_FUNC + namespace arduino { typedef void* (*voidPrtFuncPtr)(void); From 1628b279e836551152a018cd53db422de2f8de75 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 11 Jun 2021 09:43:31 +0200 Subject: [PATCH 4/5] Use proper typedef for watchdog feed function callback --- libraries/WiFi/src/WiFi.cpp | 2 +- libraries/WiFi/src/WiFi.h | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/WiFi/src/WiFi.cpp b/libraries/WiFi/src/WiFi.cpp index b38c71caa..d260be4d8 100644 --- a/libraries/WiFi/src/WiFi.cpp +++ b/libraries/WiFi/src/WiFi.cpp @@ -314,7 +314,7 @@ unsigned long arduino::WiFiClass::getTime() { return 0; } -void arduino::WiFiClass::setFeedWatchdogFunc(voidPrtFuncPtr func) +void arduino::WiFiClass::setFeedWatchdogFunc(ArduinoPortentaH7WiFiFeedWatchdogFuncPtr func) { _feed_watchdog_func = func; } diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index 1378053dc..a75172bbe 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -54,6 +54,7 @@ extern "C" { namespace arduino { typedef void* (*voidPrtFuncPtr)(void); +typedef void (*ArduinoPortentaH7WiFiFeedWatchdogFuncPtr)(void); class WiFiClass { @@ -298,7 +299,7 @@ class WiFiClass NetworkInterface *getNetwork(); - void setFeedWatchdogFunc(voidPrtFuncPtr func); + void setFeedWatchdogFunc(ArduinoPortentaH7WiFiFeedWatchdogFuncPtr func); void feedWatchdog(); private: @@ -321,7 +322,7 @@ class WiFiClass bool isVisible(const char* ssid); arduino::IPAddress ipAddressFromSocketAddress(SocketAddress socketAddress); SocketAddress socketAddressFromIpAddress(arduino::IPAddress ip, uint16_t port); - voidPrtFuncPtr _feed_watchdog_func = 0; + ArduinoPortentaH7WiFiFeedWatchdogFuncPtr _feed_watchdog_func = 0; }; } From 28bae3e014097cf9621fc911a795c10a922e2ba7 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 11 Jun 2021 09:45:00 +0200 Subject: [PATCH 5/5] Use a more unique name instead of WIFI_HAS_FEED_WATCHDOG_FUNC --- libraries/WiFi/src/WiFi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index a75172bbe..026055643 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -49,7 +49,7 @@ extern "C" { #define DEFAULT_AP_CHANNEL 6 #endif -#define WIFI_HAS_FEED_WATCHDOG_FUNC +#define ARDUINO_PORTENTA_H7_WIFI_HAS_FEED_WATCHDOG_FUNC namespace arduino {