diff --git a/include/NetTransport.h b/include/NetTransport.h
index 6fbd705..1074051 100644
--- a/include/NetTransport.h
+++ b/include/NetTransport.h
@@ -115,7 +115,7 @@ void GotEthIF(void);
void GetRFC3339Time(char *t);
void StartTimeGet(void);
-esp_err_t StartOTA(void);
+esp_err_t StartOTA(bool isManual);
char* GetAvailVersion();
char* GetUpdateStatus();
diff --git a/src/HTTPPostSystem.c b/src/HTTPPostSystem.c
index d596fd6..0a0bf26 100644
--- a/src/HTTPPostSystem.c
+++ b/src/HTTPPostSystem.c
@@ -537,7 +537,7 @@ static HTTP_IO_RESULT HTTPPostSystemSettings(httpd_req_t *req, char *PostData)
{
if (!strcmp(tmp, (const char*) "prs"))
{
- StartOTA();
+ StartOTA(true);
}
}
if (httpd_query_key_value(PostData, "rtos", tmp, sizeof(tmp)) == ESP_OK)
diff --git a/src/OTA.c b/src/OTA.c
index dee9839..1506f52 100644
--- a/src/OTA.c
+++ b/src/OTA.c
@@ -48,6 +48,8 @@ char FwUpdStatus[64] = "Updated";
#define HASH_LEN 32
#define REPORT_PACKETS_EVERY 100
+static bool isManualUpdate = false;
+
void (*HookBeforeUpdate)(void);
void regHookBeforeUpdate(void (*before_update)(void))
{
@@ -177,9 +179,17 @@ esp_err_t my_esp_https_ota(const esp_http_client_config_t *config)
GetBuildNumber(new_app_info.version));
bool need_to_update = GetBuildNumber(new_app_info.version) > GetBuildNumber(cur_app_info.version);
+ if (isManualUpdate)
+ {
+ need_to_update = true;
+ }
+
if (need_to_update)
{
- ESP_LOGW(TAG, "New firmware has newer build, START update firmware");
+ if (!isManualUpdate)
+ ESP_LOGI(TAG, "New firmware has newer build, START update firmware");
+ else
+ ESP_LOGW(TAG, "Manual update, no checking version, START update firmware");
if (HookBeforeUpdate != NULL)
HookBeforeUpdate();
int countPackets = 0;
@@ -303,7 +313,7 @@ static void OTATask(void *pvParameter)
* ESP_ERR_NOT_FINISHED on attempt rerun existing thread
*/
-esp_err_t StartOTA(void)
+esp_err_t StartOTA(bool isManual)
{
if (xTaskGetHandle("OTATask") != NULL)
{
@@ -311,6 +321,7 @@ esp_err_t StartOTA(void)
return ESP_ERR_NOT_FINISHED;
}
ESP_LOGI(TAG, "Starting OTA Task");
+ isManualUpdate = isManual;
strcpy(FwUpdStatus, "Start update...");
xTaskCreate(OTATask, "OTATask", 1024 * 8, (void*) 0, 5, NULL);
return ESP_OK;
diff --git a/src/RestApiHandler.c b/src/RestApiHandler.c
index 7c61379..f32ed12 100644
--- a/src/RestApiHandler.c
+++ b/src/RestApiHandler.c
@@ -270,7 +270,7 @@ static void funct_ota_state(char *argres, int rw)
static void funct_ota_start(char *argres, int rw)
{
- StartOTA();
+ StartOTA(true);
}
static void funct_ota_newver(char *argres, int rw)
{