forked from nrfconnect/sdk-nrf
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
88 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
|
||
zephyr_library() | ||
zephyr_library_sources(src/suitfu_mgmt_suit_os.c) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# | ||
# Copyright (c) 2023 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
|
||
menuconfig MCUMGR_GRP_OS_BOOTLOADER_INFO_B0_ACTIVE_SLOT | ||
bool "b0 active slot" | ||
depends on MCUMGR_GRP_OS_BOOTLOADER_INFO | ||
depends on BOOTLOADER_MCUBOOT | ||
depends on MCUBOOT_MCUBOOT_IMAGE_NUMBER != -1 | ||
select MCUMGR_MGMT_NOTIFICATION_HOOKS | ||
select MCUMGR_GRP_OS_BOOTLOADER_INFO_HOOK | ||
help | ||
todo |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/* | ||
* Copyright (c) 2024 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
*/ | ||
|
||
#include <zcbor_common.h> | ||
#include <zcbor_encode.h> | ||
#include <pm_config.h> | ||
#include <fw_info.h> | ||
#include <zephyr/mgmt/mcumgr/mgmt/callbacks.h> | ||
#include <zephyr/mgmt/mcumgr/grp/os_mgmt/os_mgmt.h> | ||
|
||
static enum mgmt_cb_return bootloader_info_hook(uint32_t event, enum mgmt_cb_return prev_status, | ||
int32_t *rc, uint16_t *group, bool *abort_more, | ||
void *data, size_t data_size) | ||
{ | ||
struct os_mgmt_bootloader_info_data *bootloader_info_data = (struct os_mgmt_bootloader_info_data *)data; | ||
|
||
if (event != MGMT_EVT_OP_OS_MGMT_BOOTLOADER_INFO | ||
|| data_size != sizeof(*bootloader_info_data)) { | ||
*rc = MGMT_ERR_EUNKNOWN; | ||
return MGMT_CB_ERROR_RC; | ||
} | ||
|
||
/* If no parameter is recognized then just introduce the bootloader. */ | ||
if (*(bootloader_info_data->decoded) >= 1 && (sizeof("active_b0_slot") - 1) == bootloader_info_data->query->len && memcmp("active_b0_slot", bootloader_info_data->query->value, bootloader_info_data->query->len) == 0) { | ||
bool ok = zcbor_tstr_put_lit(bootloader_info_data->zse, "active"); | ||
#if 1 | ||
const struct fw_info *s0_info = fw_info_find(PM_S0_ADDRESS); | ||
const struct fw_info *s1_info = fw_info_find(PM_S1_ADDRESS); | ||
|
||
printk("gots %p, %p, %d, %d\n", s0_info, s1_info, s0_info->version, s1_info->version); | ||
|
||
if (!s1_info || (s0_info && s0_info->version >= s1_info->version)) { | ||
ok &= zcbor_tstr_put_lit(bootloader_info_data->zse, "s0"); | ||
//s0 | ||
} else { | ||
ok &= zcbor_tstr_put_lit(bootloader_info_data->zse, "s1"); | ||
//s1 | ||
} | ||
#endif | ||
|
||
*rc = (ok ? MGMT_ERR_EOK : MGMT_ERR_EMSGSIZE); | ||
return MGMT_CB_ERROR_RC; | ||
} | ||
|
||
return MGMT_CB_OK; | ||
} | ||
|
||
static struct mgmt_callback cmd_bootloader_info_cb = { | ||
.callback = bootloader_info_hook, | ||
.event_id = MGMT_EVT_OP_OS_MGMT_BOOTLOADER_INFO, | ||
}; | ||
|
||
static int suitfu_mgmt_register_bootloader_info_hook(void) | ||
{ | ||
mgmt_callback_register(&cmd_bootloader_info_cb); | ||
return 0; | ||
} | ||
|
||
SYS_INIT(suitfu_mgmt_register_bootloader_info_hook, APPLICATION, 0); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters