[OTA Timeout] Added ability set OTA timeout in the OTA client (#1669)
This commit is contained in:
parent
e157ec06a7
commit
2fda054bea
@ -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
|
@ -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;
|
||||||
|
|
||||||
@ -106,4 +108,4 @@ class ArduinoOTAClass
|
|||||||
extern ArduinoOTAClass ArduinoOTA;
|
extern ArduinoOTAClass ArduinoOTA;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __ARDUINO_OTA_H */
|
#endif /* __ARDUINO_OTA_H */
|
Loading…
Reference in New Issue
Block a user