OTA fonctionnel !
This commit is contained in:
parent
ad4cd34559
commit
e963d43a01
@ -1,22 +1,22 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
ykxPELUVUWEgv/IRbA==
|
tx49i3GdxzVoewbZFQ==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
92
main/main.c
92
main/main.c
@ -157,9 +157,32 @@ esp_err_t _ota_http_event_handler(esp_http_client_event_t *evt)
|
|||||||
|
|
||||||
extern const uint8_t server_cert_pem_start[] asm("_binary_ca_cert_pem_start");
|
extern const uint8_t server_cert_pem_start[] asm("_binary_ca_cert_pem_start");
|
||||||
extern const uint8_t server_cert_pem_end[] asm("_binary_ca_cert_pem_end");
|
extern const uint8_t server_cert_pem_end[] asm("_binary_ca_cert_pem_end");
|
||||||
|
static esp_err_t validate_image_header(esp_app_desc_t *new_app_info)
|
||||||
|
{
|
||||||
|
if (new_app_info == NULL) {
|
||||||
|
return ESP_ERR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
const esp_partition_t *running = esp_ota_get_running_partition();
|
||||||
|
esp_app_desc_t running_app_info;
|
||||||
|
if (esp_ota_get_partition_description(running, &running_app_info) == ESP_OK) {
|
||||||
|
ESP_LOGI(TAG, "Running firmware version: %s", running_app_info.version);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef CONFIG_EXAMPLE_SKIP_VERSION_CHECK
|
||||||
|
if (memcmp(new_app_info->version, running_app_info.version, sizeof(new_app_info->version)) == 0) {
|
||||||
|
ESP_LOGW(TAG, "Current running version is the same as a new. We will not continue the update.");
|
||||||
|
return ESP_FAIL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void simple_ota_example_task(void *pvParameter)
|
void simple_ota_example_task(void *pvParameter)
|
||||||
{
|
{
|
||||||
|
esp_err_t ota_finish_err = ESP_OK;
|
||||||
ESP_LOGI(TAG, "Starting OTA example task");
|
ESP_LOGI(TAG, "Starting OTA example task");
|
||||||
#ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_BIND_IF
|
#ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_BIND_IF
|
||||||
esp_netif_t *netif = get_example_netif_from_desc(bind_interface_name);
|
esp_netif_t *netif = get_example_netif_from_desc(bind_interface_name);
|
||||||
@ -172,7 +195,7 @@ void simple_ota_example_task(void *pvParameter)
|
|||||||
ESP_LOGI(TAG, "Bind interface name is %s", ifr.ifr_name);
|
ESP_LOGI(TAG, "Bind interface name is %s", ifr.ifr_name);
|
||||||
#endif
|
#endif
|
||||||
esp_http_client_config_t config = {
|
esp_http_client_config_t config = {
|
||||||
.url = "http://192.168.0.28:8070/rgb_lcd.bin",
|
.url = "https://192.168.0.28:8070/rgb_lcd.bin",
|
||||||
.timeout_ms = 30000,
|
.timeout_ms = 30000,
|
||||||
.buffer_size = 6144,
|
.buffer_size = 6144,
|
||||||
.buffer_size_tx = 6144, //TX Buffer, Main Buffer
|
.buffer_size_tx = 6144, //TX Buffer, Main Buffer
|
||||||
@ -206,18 +229,59 @@ void simple_ota_example_task(void *pvParameter)
|
|||||||
.http_config = &config,
|
.http_config = &config,
|
||||||
};
|
};
|
||||||
ESP_LOGI(TAG, "Attempting to download update from %s", config.url);
|
ESP_LOGI(TAG, "Attempting to download update from %s", config.url);
|
||||||
esp_err_t ret = esp_https_ota(&ota_config);
|
esp_https_ota_handle_t https_ota_handle = NULL;
|
||||||
if (ret == ESP_OK) {
|
esp_err_t err = esp_https_ota_begin(&ota_config, &https_ota_handle);
|
||||||
ESP_LOGI(TAG, "OTA Succeed, Rebooting...");
|
if (err != ESP_OK) {
|
||||||
esp_restart();
|
ESP_LOGE(TAG, "ESP HTTPS OTA Begin failed");
|
||||||
} else {
|
vTaskDelete(NULL);
|
||||||
ESP_LOGE(TAG, "Firmware upgrade failed");
|
|
||||||
}
|
}
|
||||||
while (1) {
|
|
||||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
esp_app_desc_t app_desc;
|
||||||
|
err = esp_https_ota_get_img_desc(https_ota_handle, &app_desc);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGE(TAG, "esp_https_ota_get_img_desc failed");
|
||||||
|
goto ota_end;
|
||||||
|
}
|
||||||
|
err = validate_image_header(&app_desc);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGE(TAG, "image header verification failed");
|
||||||
|
goto ota_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
err = esp_https_ota_perform(https_ota_handle);
|
||||||
|
if (err != ESP_ERR_HTTPS_OTA_IN_PROGRESS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// esp_https_ota_perform returns after every read operation which gives user the ability to
|
||||||
|
// monitor the status of OTA upgrade by calling esp_https_ota_get_image_len_read, which gives length of image
|
||||||
|
// data read so far.
|
||||||
|
ESP_LOGD(TAG, "Image bytes read: %d", esp_https_ota_get_image_len_read(https_ota_handle));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (esp_https_ota_is_complete_data_received(https_ota_handle) != true) {
|
||||||
|
// the OTA image was not completely received and user can customise the response to this situation.
|
||||||
|
ESP_LOGE(TAG, "Complete data was not received.");
|
||||||
|
} else {
|
||||||
|
ota_finish_err = esp_https_ota_finish(https_ota_handle);
|
||||||
|
if ((err == ESP_OK) && (ota_finish_err == ESP_OK)) {
|
||||||
|
ESP_LOGI(TAG, "ESP_HTTPS_OTA upgrade successful. Rebooting ...");
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
|
esp_restart();
|
||||||
|
} else {
|
||||||
|
if (ota_finish_err == ESP_ERR_OTA_VALIDATE_FAILED) {
|
||||||
|
ESP_LOGE(TAG, "Image validation failed, image is corrupted");
|
||||||
|
}
|
||||||
|
ESP_LOGE(TAG, "ESP_HTTPS_OTA upgrade failed 0x%x", ota_finish_err);
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ota_end:
|
||||||
|
esp_https_ota_abort(https_ota_handle);
|
||||||
|
ESP_LOGE(TAG, "ESP_HTTPS_OTA upgrade failed");
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
am2302_handle_t sensor = NULL;
|
am2302_handle_t sensor = NULL;
|
||||||
|
|
||||||
@ -579,7 +643,11 @@ void app_main(void)
|
|||||||
|
|
||||||
xTaskCreate(&readTempHumid, "read_temp_task", 8192, NULL, 5, NULL);
|
xTaskCreate(&readTempHumid, "read_temp_task", 8192, NULL, 5, NULL);
|
||||||
*/
|
*/
|
||||||
//xTaskCreate(&simple_ota_example_task, "ota_example_task", 8192, NULL, 5, NULL);
|
/* Ensure to disable any WiFi power save mode, this allows best throughput
|
||||||
|
* and hence timings for overall OTA operation.
|
||||||
|
*/
|
||||||
|
esp_wifi_set_ps(WIFI_PS_NONE);
|
||||||
|
xTaskCreate(&simple_ota_example_task, "ota_example_task", 8192, NULL, 5, NULL);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
1
version.txt
Normal file
1
version.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
0.2
|
||||||
Loading…
x
Reference in New Issue
Block a user