Move trailer status size calculation to its own function
diff --git a/boot/bootutil/src/bootutil_misc.c b/boot/bootutil/src/bootutil_misc.c
index a47fadf..4f41c23 100644
--- a/boot/bootutil/src/bootutil_misc.c
+++ b/boot/bootutil/src/bootutil_misc.c
@@ -198,6 +198,20 @@
return fap->fa_size - off_from_end;
}
+int
+boot_status_entries(const struct flash_area *fap)
+{
+ switch (fap->fa_id) {
+ case FLASH_AREA_IMAGE_0:
+ case FLASH_AREA_IMAGE_1:
+ return BOOT_STATUS_STATE_COUNT * BOOT_STATUS_MAX_ENTRIES;
+ case FLASH_AREA_IMAGE_SCRATCH:
+ return BOOT_STATUS_STATE_COUNT;
+ default:
+ return BOOT_EBADARGS;
+ }
+}
+
uint32_t
boot_status_off(const struct flash_area *fap)
{
diff --git a/boot/bootutil/src/bootutil_priv.h b/boot/bootutil/src/bootutil_priv.h
index 925e7f3..59f655d 100644
--- a/boot/bootutil/src/bootutil_priv.h
+++ b/boot/bootutil/src/bootutil_priv.h
@@ -99,6 +99,7 @@
uint8_t key_id);
uint32_t boot_slots_trailer_sz(uint8_t min_write_sz);
+int boot_status_entries(const struct flash_area *fap);
uint32_t boot_status_off(const struct flash_area *fap);
int boot_read_swap_state(const struct flash_area *fap,
struct boot_swap_state *state);
diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c
index 886c099..1b0a1f0 100644
--- a/boot/bootutil/src/loader.c
+++ b/boot/bootutil/src/loader.c
@@ -393,11 +393,7 @@
int i;
off = boot_status_off(fap);
-
- max_entries = BOOT_STATUS_STATE_COUNT;
- if (fap->fa_id != FLASH_AREA_IMAGE_SCRATCH) {
- max_entries *= BOOT_STATUS_MAX_ENTRIES;
- }
+ max_entries = boot_status_entries(fap);
found = 0;
for (i = 0; i < max_entries; i++) {