Dominik Ermel | 3d51e43 | 2021-06-25 17:29:50 +0000 | [diff] [blame] | 1 | /* |
Jamie McCrae | 268433e | 2023-08-29 15:37:15 +0100 | [diff] [blame] | 2 | * Copyright (c) 2021-2023 Nordic Semiconductor ASA |
Dominik Ermel | 3d51e43 | 2021-06-25 17:29:50 +0000 | [diff] [blame] | 3 | * |
| 4 | * SPDX-License-Identifier: Apache-2.0 |
| 5 | */ |
| 6 | |
Gerard Marull-Paretas | 34dd9e7 | 2022-05-09 12:13:12 +0200 | [diff] [blame] | 7 | #include <zephyr/kernel.h> |
Dominik Ermel | 3d51e43 | 2021-06-25 17:29:50 +0000 | [diff] [blame] | 8 | |
| 9 | #include "bootutil/bootutil_log.h" |
| 10 | #include "../boot_serial/src/boot_serial_priv.h" |
Dominik Ermel | e6e4801 | 2023-06-19 11:37:20 +0000 | [diff] [blame] | 11 | #include <zcbor_encode.h> |
Jamie McCrae | 268433e | 2023-08-29 15:37:15 +0100 | [diff] [blame] | 12 | #include <boot_serial/boot_serial_extensions.h> |
Andrzej Puzdrowski | 1b62cf2 | 2021-07-28 17:21:19 +0200 | [diff] [blame] | 13 | |
Andrzej Puzdrowski | d16598f | 2022-01-10 10:49:09 +0100 | [diff] [blame] | 14 | BOOT_LOG_MODULE_DECLARE(mcuboot); |
Dominik Ermel | 3d51e43 | 2021-06-25 17:29:50 +0000 | [diff] [blame] | 15 | |
Andrzej Puzdrowski | 1b62cf2 | 2021-07-28 17:21:19 +0200 | [diff] [blame] | 16 | int bs_peruser_system_specific(const struct nmgr_hdr *hdr, const char *buffer, |
Dominik Ermel | 864d104 | 2022-07-12 12:41:39 +0000 | [diff] [blame] | 17 | int len, zcbor_state_t *cs) |
Andrzej Puzdrowski | 1b62cf2 | 2021-07-28 17:21:19 +0200 | [diff] [blame] | 18 | { |
| 19 | int mgmt_rc = MGMT_ERR_ENOTSUP; |
| 20 | |
Jamie McCrae | 268433e | 2023-08-29 15:37:15 +0100 | [diff] [blame] | 21 | STRUCT_SECTION_FOREACH(mcuboot_bs_custom_handlers, function) { |
| 22 | if (function->handler) { |
| 23 | mgmt_rc = function->handler(hdr, buffer, len, cs); |
| 24 | |
| 25 | if (mgmt_rc != MGMT_ERR_ENOTSUP) { |
| 26 | break; |
Andrzej Puzdrowski | 1b62cf2 | 2021-07-28 17:21:19 +0200 | [diff] [blame] | 27 | } |
Andrzej Puzdrowski | 1b62cf2 | 2021-07-28 17:21:19 +0200 | [diff] [blame] | 28 | } |
| 29 | } |
| 30 | |
| 31 | if (mgmt_rc == MGMT_ERR_ENOTSUP) { |
Dominik Ermel | 864d104 | 2022-07-12 12:41:39 +0000 | [diff] [blame] | 32 | zcbor_map_start_encode(cs, 10); |
| 33 | zcbor_tstr_put_lit(cs, "rc"); |
| 34 | zcbor_uint32_put(cs, mgmt_rc); |
| 35 | zcbor_map_end_encode(cs, 10); |
Andrzej Puzdrowski | 1b62cf2 | 2021-07-28 17:21:19 +0200 | [diff] [blame] | 36 | } |
| 37 | |
| 38 | return MGMT_ERR_OK; |
| 39 | } |