@@ -406,7 +406,8 @@ void process_msg_Ping(uint8_t iface_num, uint32_t msg_size, uint8_t *buf) {
406406 MSG_SEND (Success );
407407}
408408
409- static uint32_t firmware_remaining , firmware_block , chunk_requested ;
409+ static uint32_t firmware_remaining , firmware_len , firmware_block ,
410+ chunk_requested ;
410411
411412void process_msg_FirmwareErase (uint8_t iface_num , uint32_t msg_size ,
412413 uint8_t * buf ) {
@@ -417,7 +418,7 @@ void process_msg_FirmwareErase(uint8_t iface_num, uint32_t msg_size,
417418 MSG_RECV_INIT (FirmwareErase );
418419 MSG_RECV (FirmwareErase );
419420
420- firmware_remaining = msg_recv .has_length ? msg_recv .length : 0 ;
421+ firmware_len = firmware_remaining = msg_recv .has_length ? msg_recv .length : 0 ;
421422 if ((firmware_remaining > 0 ) &&
422423 ((firmware_remaining % sizeof (uint32_t )) == 0 ) &&
423424 (firmware_remaining <= (FIRMWARE_SECTORS_COUNT * IMAGE_CHUNK_SIZE ))) {
@@ -476,8 +477,7 @@ static bool _read_payload(pb_istream_t *stream, const pb_field_t *field,
476477 while (stream -> bytes_left ) {
477478 // update loader but skip first block
478479 if (update_mode == UPDATE_BLE ) {
479- ui_screen_install_progress_upload (1000 * chunk_written /
480- firmware_remaining );
480+ ui_screen_install_progress_upload (1000 * chunk_written / firmware_len );
481481 } else {
482482 if (firmware_block > 0 ) {
483483 ui_screen_install_progress_upload (
@@ -496,6 +496,10 @@ static bool _read_payload(pb_istream_t *stream, const pb_field_t *field,
496496 chunk_written += buffer_size ;
497497 }
498498
499+ if (update_mode == UPDATE_BLE ) {
500+ ui_screen_install_progress_upload (1000 * chunk_written / firmware_len );
501+ }
502+
499503 return true;
500504}
501505
0 commit comments