Add a capability query for image number
In addition to the binary capability flags, add a query function that
returns the number of images MCUboot has been configured to support.
Signed-off-by: David Brown <david.brown@linaro.org>
diff --git a/boot/bootutil/include/bootutil/caps.h b/boot/bootutil/include/bootutil/caps.h
index dc4ba4a..2b1f754 100644
--- a/boot/bootutil/include/bootutil/caps.h
+++ b/boot/bootutil/include/bootutil/caps.h
@@ -41,6 +41,12 @@
#define BOOTUTIL_CAP_ENC_KW (1<<6)
#define BOOTUTIL_CAP_VALIDATE_PRIMARY_SLOT (1<<7)
+/*
+ * Query the number of images this bootloader is configured for. This
+ * is also primarily used for testing.
+ */
+uint32_t bootutil_get_num_images(void);
+
#ifdef __cplusplus
}
#endif
diff --git a/boot/bootutil/src/caps.c b/boot/bootutil/src/caps.c
index 83b4dfa..b449a6b 100644
--- a/boot/bootutil/src/caps.c
+++ b/boot/bootutil/src/caps.c
@@ -47,3 +47,12 @@
return res;
}
+
+uint32_t bootutil_get_num_images(void)
+{
+#if defined(MCUBOOT_IMAGE_NUMBER)
+ return MCUBOOT_IMAGE_NUMBER;
+#else
+ return 1;
+#endif
+}
diff --git a/sim/src/caps.rs b/sim/src/caps.rs
index 09f6dee..2751618 100644
--- a/sim/src/caps.rs
+++ b/sim/src/caps.rs
@@ -19,8 +19,15 @@
let caps = unsafe { bootutil_get_caps() };
(caps as u32) & (self as u32) != 0
}
+
+ /// Query for the number of images that have been configured into this
+ /// MCUboot build.
+ pub fn get_num_images() -> usize {
+ (unsafe { bootutil_get_num_images() }) as usize
+ }
}
extern "C" {
fn bootutil_get_caps() -> Caps;
+ fn bootutil_get_num_images() -> u32;
}