diff --git a/platforms/nuttx/src/canbootloader/uavcan/main.c b/platforms/nuttx/src/canbootloader/uavcan/main.c index 0fd13988aa..225390f612 100644 --- a/platforms/nuttx/src/canbootloader/uavcan/main.c +++ b/platforms/nuttx/src/canbootloader/uavcan/main.c @@ -761,6 +761,7 @@ static flash_error_t file_read_and_program(const uavcan_Path_t *fw_path, uint8_t size_t length; protocol.tail_init.u8 = 0; + int a_percent = fw_image_size / 100; do { /* reset the rate limit */ @@ -844,7 +845,7 @@ static flash_error_t file_read_and_program(const uavcan_Path_t *fw_path, uint8_t length + (length & 1)); request.offset += length; - bootloader.percentage_done = (request.offset / 1024) + 1; + bootloader.percentage_done = (request.offset / a_percent); } while (request.offset < fw_image_size && length == sizeof(response.data) && @@ -856,7 +857,6 @@ static flash_error_t file_read_and_program(const uavcan_Path_t *fw_path, uint8_t * was not. */ if (uavcan_status == UavcanOk && flash_status == FLASH_OK && request.offset == fw_image_size && length != 0) { - bootloader.percentage_done = 0; return FLASH_OK; } else { @@ -1336,6 +1336,8 @@ __EXPORT int main(int argc, char *argv[]) goto failure; } + bootloader.percentage_done = 100; + /* Send a completion log allocation_message */ uavcan_tx_log_message(LOGMESSAGE_LEVELINFO, LOGMESSAGE_STAGE_FINALIZE,