From 2cd8fbdcb64a8cd3bf9b1910ccfe922e5036bbe3 Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Thu, 25 Jul 2013 14:03:54 +0100 Subject: [PATCH] Erase_all now erases all upgrade images, not just the first one --- module_dfu/src/flash_interface.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/module_dfu/src/flash_interface.c b/module_dfu/src/flash_interface.c index d768c167..fd0bad1e 100755 --- a/module_dfu/src/flash_interface.c +++ b/module_dfu/src/flash_interface.c @@ -218,11 +218,33 @@ int flash_cmd_write_page_data(unsigned char *data) int flash_cmd_erase_all(void) { + fl_BootImageInfo tmp_image = upgrade_image; + if (upgrade_image_valid) { if (fl_deleteImage(&upgrade_image) != 0) + { FLASH_ERROR(); - upgrade_image_valid = 0; + } + + // Keep deleting all upgrade images + // TODO Perhaps using replace would be nicer... + while(1) + { + if (fl_getNextBootImage(&tmp_image) == 0) + { + if (fl_deleteImage(&tmp_image) != 0) + { + FLASH_ERROR(); + } + } + else + { + break; + } + } + + upgrade_image_valid = 0; } return 0; }