diff --git a/libraries/WiFiS3/src/Modem.cpp b/libraries/WiFiS3/src/Modem.cpp index 7aa34391a..d20b1bc7d 100644 --- a/libraries/WiFiS3/src/Modem.cpp +++ b/libraries/WiFiS3/src/Modem.cpp @@ -30,14 +30,18 @@ ModemClass::~ModemClass() { } /* -------------------------------------------------------------------------- */ -void ModemClass::begin(int badurate){ +void ModemClass::begin(int badurate, int retry){ /* -------------------------------------------------------------------------- */ if(_serial != nullptr && !beginned) { _serial->begin(badurate); - beginned = true; string res = ""; _serial->flush(); - modem.write(string(PROMPT(_SOFTRESETWIFI)),res, "%s" , CMD(_SOFTRESETWIFI)); + modem.timeout(500); + while(!beginned && retry > 0) { + beginned = modem.write(string(PROMPT(_SOFTRESETWIFI)),res, "%s" , CMD(_SOFTRESETWIFI)); + retry -= 1; + } + modem.timeout(MODEM_TIMEOUT); } } diff --git a/libraries/WiFiS3/src/Modem.h b/libraries/WiFiS3/src/Modem.h index 3f785bc9d..d340dd976 100644 --- a/libraries/WiFiS3/src/Modem.h +++ b/libraries/WiFiS3/src/Modem.h @@ -22,7 +22,7 @@ class ModemClass { ModemClass(UART * _serial); ~ModemClass(); - void begin(int badurate = 115200); + void begin(int badurate = 115200, int retry = 3); void end(); bool write(const std::string &cmd, std::string &str, const char * fmt, ...); void write_nowait(const std::string &cmd, std::string &str, const char * fmt, ...);