aboutsummaryrefslogtreecommitdiff
path: root/projects/hsm/mgmt-bootloader.c
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2016-12-20 21:44:13 -0500
committerRob Austein <sra@hactrn.net>2016-12-20 21:44:13 -0500
commitde945510ca6304f3a2cf447567981784e6244dab (patch)
treea9c5bd2b975babddd2fa5d616ef380675391e237 /projects/hsm/mgmt-bootloader.c
parenteb8c7d7cd26608a0f2825b89a1eca5008d7e3f66 (diff)
parentfe94d97f705846ef809d4109b310c96d0b3bb1ac (diff)
Merge branch 'master' into ksng
Bootloader DFU fixes.
Diffstat (limited to 'projects/hsm/mgmt-bootloader.c')
-rw-r--r--projects/hsm/mgmt-bootloader.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/projects/hsm/mgmt-bootloader.c b/projects/hsm/mgmt-bootloader.c
index a4783cc..738686e 100644
--- a/projects/hsm/mgmt-bootloader.c
+++ b/projects/hsm/mgmt-bootloader.c
@@ -52,7 +52,8 @@ static uint32_t dfu_offset;
static int _flash_write_callback(uint8_t *buf, size_t len)
{
- stm_flash_write32(dfu_offset, (uint32_t *)buf, sizeof(buf)/4);
+ if (stm_flash_write32(dfu_offset, (uint32_t *)buf, (uint32_t)len/4) != 1)
+ return 0;
dfu_offset += DFU_UPLOAD_CHUNK_SIZE;
return 1;
}
@@ -67,10 +68,12 @@ static int cmd_bootloader_upload(struct cli_def *cli, const char *command, char
uint8_t buf[DFU_UPLOAD_CHUNK_SIZE];
dfu_offset = DFU_BOOTLOADER_ADDR;
- cli_receive_data(cli, buf, sizeof(buf), _flash_write_callback);
-
- cli_print(cli, "DFU offset now: %li (%li chunks)", dfu_offset, dfu_offset / DFU_UPLOAD_CHUNK_SIZE);
- return CLI_OK;
+ int ret = cli_receive_data(cli, buf, sizeof(buf), _flash_write_callback);
+ if (ret == CLI_OK) {
+ cli_print(cli, "\nRebooting\n");
+ HAL_NVIC_SystemReset();
+ }
+ return ret;
}
void configure_cli_bootloader(struct cli_def *cli)