@@ -338,6 +338,9 @@ static esp_err_t zb_ota_upgrade_status_handler(const esp_zb_zcl_ota_upgrade_valu
338338 switch (message->upgrade_status ) {
339339 case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_START:
340340 log_i (" Zigbee - OTA upgrade start" );
341+ for (std::list<ZigbeeEP *>::iterator it = Zigbee.ep_objects .begin (); it != Zigbee.ep_objects .end (); ++it) {
342+ (*it)->zbOTAState (true ); // Notify that OTA is active
343+ }
341344 start_time = esp_timer_get_time ();
342345 s_ota_partition = esp_ota_get_next_update_partition (NULL );
343346 assert (s_ota_partition);
@@ -348,6 +351,9 @@ static esp_err_t zb_ota_upgrade_status_handler(const esp_zb_zcl_ota_upgrade_valu
348351#endif
349352 if (ret != ESP_OK) {
350353 log_e (" Zigbee - Failed to begin OTA partition, status: %s" , esp_err_to_name (ret));
354+ for (std::list<ZigbeeEP *>::iterator it = Zigbee.ep_objects .begin (); it != Zigbee.ep_objects .end (); ++it) {
355+ (*it)->zbOTAState (false ); // Notify that OTA is no longer active
356+ }
351357 return ret;
352358 }
353359 break ;
@@ -361,6 +367,9 @@ static esp_err_t zb_ota_upgrade_status_handler(const esp_zb_zcl_ota_upgrade_valu
361367 ret = esp_element_ota_data (total_size, message->payload , message->payload_size , &payload, &payload_size);
362368 if (ret != ESP_OK) {
363369 log_e (" Zigbee - Failed to element OTA data, status: %s" , esp_err_to_name (ret));
370+ for (std::list<ZigbeeEP *>::iterator it = Zigbee.ep_objects .begin (); it != Zigbee.ep_objects .end (); ++it) {
371+ (*it)->zbOTAState (false ); // Notify that OTA is no longer active
372+ }
364373 return ret;
365374 }
366375#if CONFIG_ZB_DELTA_OTA
@@ -370,6 +379,9 @@ static esp_err_t zb_ota_upgrade_status_handler(const esp_zb_zcl_ota_upgrade_valu
370379#endif
371380 if (ret != ESP_OK) {
372381 log_e (" Zigbee - Failed to write OTA data to partition, status: %s" , esp_err_to_name (ret));
382+ for (std::list<ZigbeeEP *>::iterator it = Zigbee.ep_objects .begin (); it != Zigbee.ep_objects .end (); ++it) {
383+ (*it)->zbOTAState (false ); // Notify that OTA is no longer active
384+ }
373385 return ret;
374386 }
375387 }
@@ -389,6 +401,9 @@ static esp_err_t zb_ota_upgrade_status_handler(const esp_zb_zcl_ota_upgrade_valu
389401 message->ota_header .file_version , message->ota_header .manufacturer_code , message->ota_header .image_type , message->ota_header .image_size ,
390402 (esp_timer_get_time () - start_time) / 1000
391403 );
404+ for (std::list<ZigbeeEP *>::iterator it = Zigbee.ep_objects .begin (); it != Zigbee.ep_objects .end (); ++it) {
405+ (*it)->zbOTAState (false ); // Notify that OTA is no longer active
406+ }
392407#if CONFIG_ZB_DELTA_OTA
393408 ret = esp_delta_ota_end (s_ota_handle);
394409#else
0 commit comments