mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 12:10:59 +00:00
esp_https_ota: Add definition for esp_https_ota_abort
Update esp_https_ota API to use esp_https_ota_abort in case of error
This commit is contained in:
@@ -381,6 +381,40 @@ esp_err_t esp_https_ota_finish(esp_https_ota_handle_t https_ota_handle)
|
||||
return err;
|
||||
}
|
||||
|
||||
esp_err_t esp_https_ota_abort(esp_https_ota_handle_t https_ota_handle)
|
||||
{
|
||||
esp_https_ota_t *handle = (esp_https_ota_t *)https_ota_handle;
|
||||
if (handle == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
||||
if (handle->state < ESP_HTTPS_OTA_BEGIN) {
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
esp_err_t err = ESP_OK;
|
||||
switch (handle->state) {
|
||||
case ESP_HTTPS_OTA_SUCCESS:
|
||||
case ESP_HTTPS_OTA_IN_PROGRESS:
|
||||
err = esp_ota_abort(handle->update_handle);
|
||||
/* falls through */
|
||||
case ESP_HTTPS_OTA_BEGIN:
|
||||
if (handle->ota_upgrade_buf) {
|
||||
free(handle->ota_upgrade_buf);
|
||||
}
|
||||
if (handle->http_client) {
|
||||
_http_cleanup(handle->http_client);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
err = ESP_ERR_INVALID_STATE;
|
||||
ESP_LOGE(TAG, "Invalid ESP HTTPS OTA State");
|
||||
break;
|
||||
}
|
||||
free(handle);
|
||||
return err;
|
||||
}
|
||||
|
||||
int esp_https_ota_get_image_len_read(esp_https_ota_handle_t https_ota_handle)
|
||||
{
|
||||
esp_https_ota_t *handle = (esp_https_ota_t *)https_ota_handle;
|
||||
@@ -417,13 +451,13 @@ esp_err_t esp_https_ota(const esp_http_client_config_t *config)
|
||||
}
|
||||
}
|
||||
|
||||
esp_err_t ota_finish_err = esp_https_ota_finish(https_ota_handle);
|
||||
if (err != ESP_OK) {
|
||||
/* If there was an error in esp_https_ota_perform(),
|
||||
then it is given more precedence than error in esp_https_ota_finish()
|
||||
*/
|
||||
esp_https_ota_abort(https_ota_handle);
|
||||
return err;
|
||||
} else if (ota_finish_err != ESP_OK) {
|
||||
}
|
||||
|
||||
esp_err_t ota_finish_err = esp_https_ota_finish(https_ota_handle);
|
||||
if (ota_finish_err != ESP_OK) {
|
||||
return ota_finish_err;
|
||||
}
|
||||
return ESP_OK;
|
||||
|
Reference in New Issue
Block a user