[OTA Timeout] Added ability set OTA timeout in the OTA client (#1669)

This commit is contained in:
Sathishkumar T 2018-07-24 23:10:18 +05:30 committed by Me No Dev
parent e157ec06a7
commit 2fda054bea
2 changed files with 16 additions and 8 deletions

View File

@ -9,7 +9,7 @@
#include "Update.h" #include "Update.h"
//#define OTA_DEBUG Serial // #define OTA_DEBUG Serial
ArduinoOTAClass::ArduinoOTAClass() ArduinoOTAClass::ArduinoOTAClass()
: _port(0) : _port(0)
@ -20,6 +20,7 @@ ArduinoOTAClass::ArduinoOTAClass()
, _size(0) , _size(0)
, _cmd(0) , _cmd(0)
, _ota_port(0) , _ota_port(0)
, _ota_timeout(1000)
, _start_callback(NULL) , _start_callback(NULL)
, _end_callback(NULL) , _end_callback(NULL)
, _error_callback(NULL) , _error_callback(NULL)
@ -260,8 +261,9 @@ void ArduinoOTAClass::_runUpdate() {
} }
uint32_t written = 0, total = 0, tried = 0; uint32_t written = 0, total = 0, tried = 0;
while (!Update.isFinished() && client.connected()) { while (!Update.isFinished() && client.connected()) {
size_t waited = 1000; size_t waited = _ota_timeout;
size_t available = client.available(); size_t available = client.available();
while (!available && waited){ while (!available && waited){
delay(1); delay(1);
@ -387,6 +389,10 @@ int ArduinoOTAClass::getCommand() {
return _cmd; return _cmd;
} }
void ArduinoOTAClass::setTimeout(int timeoutInMillis) {
_ota_timeout = timeoutInMillis;
}
#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_ARDUINOOTA) #if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_ARDUINOOTA)
ArduinoOTAClass ArduinoOTA; ArduinoOTAClass ArduinoOTA;
#endif #endif

View File

@ -7,7 +7,6 @@
#define INT_BUFFER_SIZE 16 #define INT_BUFFER_SIZE 16
typedef enum { typedef enum {
OTA_IDLE, OTA_IDLE,
OTA_WAITAUTH, OTA_WAITAUTH,
@ -25,9 +24,9 @@ typedef enum {
class ArduinoOTAClass class ArduinoOTAClass
{ {
public: public:
typedef std::function<void(void)> THandlerFunction; typedef std::function<void(void)> THandlerFunction;
typedef std::function<void(ota_error_t)> THandlerFunction_Error; typedef std::function<void(ota_error_t)> THandlerFunction_Error;
typedef std::function<void(unsigned int, unsigned int)> THandlerFunction_Progress; typedef std::function<void(unsigned int, unsigned int)> THandlerFunction_Progress;
ArduinoOTAClass(); ArduinoOTAClass();
~ArduinoOTAClass(); ~ArduinoOTAClass();
@ -75,6 +74,8 @@ class ArduinoOTAClass
//Gets update command type after OTA has started. Either U_FLASH or U_SPIFFS //Gets update command type after OTA has started. Either U_FLASH or U_SPIFFS
int getCommand(); int getCommand();
void setTimeout(int timeoutInMillis);
private: private:
int _port; int _port;
String _password; String _password;
@ -88,6 +89,7 @@ class ArduinoOTAClass
int _size; int _size;
int _cmd; int _cmd;
int _ota_port; int _ota_port;
int _ota_timeout;
IPAddress _ota_ip; IPAddress _ota_ip;
String _md5; String _md5;