Skip to content

Commit c607576

Browse files
committed
suit: Do not include IPUC cache if it is not used
UCI should not include all possible SUIT cache IPUCs, but only those, that were initialized. Ref: NCSDK-NONE Signed-off-by: Tomasz Chyrowicz <[email protected]>
1 parent 7271e13 commit c607576

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

subsys/suit/cache/include/suit_dfu_cache_rw.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,14 @@ suit_plat_err_t suit_dfu_cache_drop_content(void);
114114
suit_plat_err_t suit_dfu_cache_rw_device_info_get(uint8_t cache_partition_id,
115115
struct suit_nvm_device_info *device_info);
116116

117+
/**
118+
* @brief Gets information about characteristics of active cache partition
119+
*
120+
* @return suit_plat_success on success, error code otherwise.
121+
*/
122+
suit_plat_err_t suit_dfu_cache_rw_active_device_info_get(uint8_t cache_partition_id,
123+
struct suit_nvm_device_info *device_info);
124+
117125
#ifdef __cplusplus
118126
}
119127
#endif

subsys/suit/cache/src/suit_dfu_cache_rw.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,18 @@ suit_plat_err_t suit_dfu_cache_rw_device_info_get(uint8_t cache_partition_id,
571571
return SUIT_PLAT_ERR_INVAL;
572572
}
573573

574+
suit_plat_err_t suit_dfu_cache_rw_active_device_info_get(uint8_t cache_partition_id,
575+
struct suit_nvm_device_info *device_info)
576+
{
577+
suit_plat_err_t ret = suit_dfu_cache_rw_device_info_get(cache_partition_id, device_info);
578+
579+
if ((ret == SUIT_PLAT_SUCCESS) && (device_info->fdev == NULL)) {
580+
return SUIT_PLAT_ERR_NOT_FOUND;
581+
}
582+
583+
return ret;
584+
}
585+
574586
suit_plat_err_t suit_dfu_cache_rw_slot_create(uint8_t cache_partition_id,
575587
struct suit_cache_slot *slot, const uint8_t *uri,
576588
size_t uri_size)

subsys/suit/orchestrator_app/src/suit_orchestrator_app.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -240,24 +240,26 @@ int suit_dfu_update_start(void)
240240
struct suit_nvm_device_info device_info;
241241

242242
for (size_t i = 0; i < CONFIG_SUIT_CACHE_MAX_CACHES; i++) {
243-
if (suit_dfu_cache_rw_device_info_get(i, &device_info) == SUIT_PLAT_SUCCESS) {
244-
243+
if (suit_dfu_cache_rw_active_device_info_get(i, &device_info) ==
244+
SUIT_PLAT_SUCCESS) {
245245
update_candidate[update_regions_count].mem = device_info.mapped_address;
246246
update_candidate[update_regions_count].size = device_info.partition_size;
247247
update_regions_count++;
248248
}
249249
}
250250

251-
#ifdef CONFIG_SUIT_CACHE_SDFW_IPUC_ID
252-
if (suit_dfu_cache_rw_device_info_get(CONFIG_SUIT_CACHE_SDFW_IPUC_ID, &device_info) ==
253-
SUIT_PLAT_SUCCESS) {
251+
#if defined(CONFIG_SUIT_CACHE_SDFW_IPUC_ID) && \
252+
(CONFIG_SUIT_CACHE_SDFW_IPUC_ID >= CONFIG_SUIT_CACHE_MAX_CACHES)
253+
if (suit_dfu_cache_rw_active_device_info_get(CONFIG_SUIT_CACHE_SDFW_IPUC_ID,
254+
&device_info) == SUIT_PLAT_SUCCESS) {
254255
update_candidate[update_regions_count].mem = device_info.mapped_address;
255256
update_candidate[update_regions_count].size = device_info.partition_size;
256257
update_regions_count++;
257258
}
258259
#endif /* CONFIG_SUIT_CACHE_SDFW_IPUC_ID */
259-
#ifdef CONFIG_SUIT_CACHE_APP_IPUC_ID
260-
if (suit_dfu_cache_rw_device_info_get(CONFIG_SUIT_CACHE_APP_IPUC_ID, &device_info) ==
260+
#if defined(CONFIG_SUIT_CACHE_APP_IPUC_ID) && \
261+
(CONFIG_SUIT_CACHE_APP_IPUC_ID >= CONFIG_SUIT_CACHE_MAX_CACHES)
262+
if (suit_dfu_cache_rw_active_device_info_get(CONFIG_SUIT_CACHE_APP_IPUC_ID, &device_info) ==
261263
SUIT_PLAT_SUCCESS) {
262264
update_candidate[update_regions_count].mem = device_info.mapped_address;
263265
update_candidate[update_regions_count].size = device_info.partition_size;

0 commit comments

Comments
 (0)