diff --git a/src/ArduinoCellular.cpp b/src/ArduinoCellular.cpp index 4477d75..017adbb 100644 --- a/src/ArduinoCellular.cpp +++ b/src/ArduinoCellular.cpp @@ -1,6 +1,9 @@ #include "ArduinoCellular.h" +#if defined(ARDUINO_ARCH_MBED) + #include "Watchdog.h" +#endif unsigned long ArduinoCellular::getTime() { int year, month, day, hour, minute, second; @@ -214,12 +217,17 @@ bool ArduinoCellular::awaitNetworkRegistration(){ if(this->debugStream != nullptr){ this->debugStream->println("Waiting for network registration..."); } - while (!modem.waitForNetwork()) { + while (!modem.waitForNetwork(waitForNetworkTimeout)) { if(this->debugStream != nullptr){ this->debugStream->print("."); } + #if defined(ARDUINO_ARCH_MBED) + if(mbed::Watchdog::get_instance().is_running()) { + mbed::Watchdog::get_instance().kick(); + } + #endif delay(2000); - } + } return true; } diff --git a/src/ArduinoCellular.h b/src/ArduinoCellular.h index c671b83..721adaa 100644 --- a/src/ArduinoCellular.h +++ b/src/ArduinoCellular.h @@ -277,6 +277,8 @@ class ArduinoCellular { Stream* debugStream = nullptr; /**< The stream to be used for printing debugging messages. */ static unsigned long getTime(); /** Callback for getting the current time as an unix timestamp. */ + + static constexpr unsigned long waitForNetworkTimeout = 20000L; /**< Maximum wait time for network registration (In milliseconds). */ };