diff --git a/nspanel_esphome_addon_upload_tft.yaml b/nspanel_esphome_addon_upload_tft.yaml index 5c92fd8..8e2162d 100644 --- a/nspanel_esphome_addon_upload_tft.yaml +++ b/nspanel_esphome_addon_upload_tft.yaml @@ -443,21 +443,21 @@ script: auto upload_range_esp_idf_ = [&](const std::string &url, int range_start) -> int { static const char *const TAG = "script.upload_tft.upload_range_esp_idf_"; ESP_LOGVV(TAG, "url: %s", url.c_str()); - ESP_LOGVV(TAG, "range_start: %i", range_start); - uint range_size_ = tft_size_ - range_start; - ESP_LOGVV(TAG, "range_size_: %i", range_size_); - if (range_size_ <= 0) { + uint range_size_ = this->tft_size_ - range_start; + ESP_LOGVV(TAG, "tft_size_: %i", this->tft_size_); + ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size()); + int range_end = (range_start == 0) ? std::min(this->tft_size_, 16383) : this->tft_size_; + if (range_size_ <= 0 or range_end <= range_start) { ESP_LOGE(TAG, "Invalid range"); + ESP_LOGD(TAG, "Range start: %i", range_start); + ESP_LOGD(TAG, "Range end: %i", range_end); + ESP_LOGD(TAG, "Range size: %i", range_size_); return -1; } - ESP_LOGVV(TAG, "tft_size_: %i", tft_size_); - ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size()); - - int range_end = (range_start == 0) ? std::min(tft_size_, 16383) : tft_size_; - ESP_LOGVV(TAG, "range_end: %i", range_end); esp_http_client_config_t config = { .url = url.c_str(), + .cert_pem = nullptr, }; esp_http_client_handle_t client = esp_http_client_init(&config); @@ -473,9 +473,16 @@ script: esp_http_client_cleanup(client); return -1; } + ESP_LOGV(TAG, "Fetch content length"); int content_length = esp_http_client_fetch_headers(client); ESP_LOGV(TAG, "content_length = %d", content_length); + if (content_length <= 0) { + ESP_LOGE(TAG, "Failed to get content length: %d", content_length); + esp_http_client_cleanup(client); + return -1; + } + int total_read_len = 0, read_len; ESP_LOGV(TAG, "Allocate buffer"); @@ -565,6 +572,7 @@ script: ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size()); esp_http_client_config_t config = { .url = url.c_str(), + .cert_pem = nullptr, .method = HTTP_METHOD_HEAD, .timeout_ms = 15000, };