Allows erasing secondary slot which is marked for test or confirmed.
This is safe as bootloader doesn't make any action on boot-setup yet.
Erase of such pending image might considered like the case when it
was never downloaded as well.
This allow user to not stuck with pending irremovable image.
Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>
The LoRaWAN SMP transport uses MCUMGR_TRANSPORT_LORAWAN_REASSEMBLY to
enable reassembly. It selects MCUMGR_TRANSPORT_REASSEMBLY, which causes
smp_transport_init to call smp_reassembly_init on the passed transport.
This makes the subsequent call to smp_reassembly_init in the LoRaWAN
transport initialization redundant.
Signed-off-by: Daniel Mangum <georgedanielmangum@gmail.com>
Errors were logged for some cases in zephyr_img_mgmt.c, but not all.
This commit adds error logs for all error cases.
Signed-off-by: Nick Brook <nrbrook@gmail.com>
Fixes an issue when using custom payloads where the size was still
using the zcbor buffer instead of the size of the network buffer
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Adds a new Kconfig for selecting swap using move in MCUboot which
aligns with the proper MCUboot symbol and allows for adding
additional mode Kconfigs
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Allocate only one 'struct sockaddr_storage', instead of two separate
'struct sockaddr_in' and 'struct sockaddr_in6'. This saves some space in
case both IPv4 and IPv6 are used. Additionally it reduced preprocessor
ifdef statements, resulting in more readable code.
This also solves '-Warray-bounds=' GCC warning (reproducible with
'native_sim' and GCC version 14.2.1 on Arch Linux):
In function ‘create_socket’,
inlined from ‘smp_udp_receive_thread’ at \
subsys/mgmt/mcumgr/transport/src/smp_udp.c:242:7:
subsys/mgmt/mcumgr/transport/src/smp_udp.c:205:37: warning: \
array subscript ‘struct sockaddr[0]’ is partly outside array \
bounds of ‘struct sockaddr_in[1]’ [-Warray-bounds=]
205 | tmp_sock = zsock_socket(addr->sa_family, SOCK_DGRAM, \
| ~~~~^~~~~~~~~~~
IPPROTO_UDP);
subsys/mgmt/mcumgr/transport/src/smp_udp.c: In function \
‘smp_udp_receive_thread’:
subsys/mgmt/mcumgr/transport/src/smp_udp.c:170:28: note: \
object ‘addr4’ of size 8
170 | struct sockaddr_in addr4;
| ^~~~~
Signed-off-by: Marcin Niestroj <m.niestroj@emb.dev>
Fixes calling the registered callbacks for image being confirmed
if the confirmation was not successful
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
This is a follow up to commit 770482a45a.
Add initialization of the `ok` variable to prevent the "may be
uninitialized" warning when `CONFIG_BOOTLOADER_MCUBOOT` is not
defined.
Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
Adds a new error code that can be used to signify that a query was
valid but the response was not valid
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
In the case of IPV6 not enabled, when NET_SOCKETS_PACKET is enabled,
the sizeof(struct sockarr) will change to 20, the value of
MCUMGR_TRANSPORT_NETBUF_MIN_USER_DATA_SIZE is 8, which is not able
to pass the compilation, so I change its default value to 20.
Fixes#82757
Signed-off-by: Hongquan Li <hongquan.prog@gmail.com>
Make sure smp_transport_clients list is only initialized once and
before any transports will try to register and add entries to this
list.
The smp_init() routine was called after smp_init_uart(), causing
the list to be emptied again after registration of the uart client
transport.
Signed-off-by: Bas van Loon <bas@arch-embedded.com>
Replaces code that peeked directly into the thread by instead
calling k_thread_join() to check the state of threads
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Fix possible race condition where SMP client might
release the network buffer before system worker queue
has processed it.
In smp_client uses shared resources like worker queue
linked list and network buffers without maintaining any
thread safety.
For unknown reasons, retry timeout handling is pushed
into system worker queue while the actual transmission
is handled from SMP work queue.
Fix the issue by using the same SMP work queue
for both delayable timeout handling as well as
transmission handling.
Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
Traditionally threads have been initialized with a PRESTART flag set,
which gets cleared when the thread runs for the first time via either
its timeout or the k_thread_start() API.
But if you think about it, this is no different, semantically, than
SUSPENDED: the thread is prevented from running until the flag is
cleared.
So unify the two. Start threads in the SUSPENDED state, point
everyone looking at the PRESTART bit to the SUSPENDED flag, and make
k_thread_start() be a synonym for k_thread_resume().
There is some mild code size savings from the eliminated duplication,
but the real win here is that we make space in the thread flags byte,
which had run out.
Signed-off-by: Andy Ross <andyross@google.com>
Responses are currently set to the shell device that was configured
in the device tree.
The shell_uart driver allows for changing it's device during runtime
which leads to a situation where we recieve packets on one device
and respond on another.
This patch causes smp_shell_tx_raw to use the shell_uart device
Signed-off-by: Zak Portnoy <zakportnoy@gmail.com>
The MCUmgr statistics only work correctly when selecting
MCUMGR_SMP_LEGACY_RC_BEHAVIOUR option. Checks the option
flag on the stat_mgmt_list and fix the behavior.
Fixes: 80476
Signed-off-by: Gerson Fernando Budke <gerson.budke@ossystems.com.br>
Adds supporting code that allows the RAM load mode of MCUboot to
be used and for applications to build successfully with it.
Sysbuild can be used to build images for this mode
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Enable Cortex R8 support, similar to Cortex-R5.
Signed-off-by: Krzysztof Sychla <ksychla@antmicro.com>
Signed-off-by: Marek Slowinski <mslowinski@antmicro.com>
Signed-off-by: Piotr Zierhoffer <pzierhoffer@antmicro.com>
Signed-off-by: Mateusz Hołenko <mholenko@antmicro.com>
Adds a new command that will return information on slots
themselves, listing the slot sizes, without any internal
information about the slot data. Will also return the maximum size
of an image for a set of slots if built using sysbuild.
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Fixes an issue with structure which was previously raised in a
comment, and adds a new bool to the structure to enable this
restructure to work
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Added the SMP service and characteristic UUIDs to the smp_bt module
header and used those definitions.
Signed-off-by: Mateusz Kapala <mateusz.kapala@nordicsemi.no>
Fixes wrongly returning an SMP version 2 error code as an SMP
version 1 error code instead of adding it as an error
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Allows enabling the bootloader info functionality without MCUboot
being enabled, so that other bootloaders can add hooks with their
own responses
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Added new Kconfigs for defining permission level of GATT
characteristics that are part of the Bluetooth SMP service in the
MCUmgr subsys.
Removed the CONFIG_MCUMGR_TRANSPORT_BT_AUTHEN as the new Kconfig
options are mutually exclusive and need to be groupa as the Kconfig
choice option.
Signed-off-by: Kamil Piszczek <Kamil.Piszczek@nordicsemi.no>
Adds an optional hook that allows for appending additional
responses to the bootloader info command
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Move the network buffer header file from zephyr/net/buf.h to
zephyr/net_buf.h as the implementation now lives outside of the networking
subsystem.
Add (deprecated) zephyr/net/buf.h header to maintain compatibility with old
file path.
Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
Ensure that leading zeros are present in the milliseconds field,
otherwise a milliseconds count of 35 will appear as x.35, i.e. 350
milliseconds. With this fix, it will appear as x.035.
Signed-off-by: Jordan Yates <jordan@embeint.com>
Adds string names to the groups in MCUmgr when the enum mgmt
Kconfig is enabled to support listing names of groups
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Adds a new MCUmgr group which allows for listing which groups are
supported by the MCUmgr server by remote devices.
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Adds a group callback function which can be used to iterate over
all the registered MCUmgr command groups
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Adds an optional callback which can be used to append custom
fields to the image slot state command response
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
Convert users of net_buf_put() and net_buf_get() functions to use
non-wrapped putters and getters k_fifo_put() and k_fifo_get().
Special handling of net_bufs in k_fifos is no longer needed after commit
3d306c181f, since these actions are now
atomic regardless of any net_buf fragments.
Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
Seemingly newer versions of gcc wrongly detect a variable is used
when it is not set, this is not the case the compiler is wrong,
add a default set to null to prevent the fake warning appearing
as an error in CI
Signed-off-by: Jamie McCrae <spam@helper3000.net>
Fixes an issue with using SMP on devices that do not support
unaligned memory access e.g. Cortex M0 which would result in a
hard fault
Signed-off-by: Jamie McCrae <spam@helper3000.net>
Fixes the Kconfig for dynamic service registration to make it depend
on dynamic database support instead of selecting it, which prevents
issues whereby it is not actually selected
Signed-off-by: Jamie McCrae <spam@helper3000.net>
Add initial support for the Cortex-M85 Core which is an implementation
of the Armv8.1-M mainline architecture.
The support is based on the Cortex-M55 support that already exists in
Zephyr.
Signed-off-by: Duy Nguyen <duy.nguyen.xa@renesas.com>
These functions have been deprecated for more than 2 releases,
remove them:
- zephyr_smp_rx_req
- zephyr_smp_alloc_rsp
- zephyr_smp_free_buf
Signed-off-by: Yong Cong Sin <ycsin@meta.com>
The commit replaces flash_area_erase with flash_area_flatten.
The function is used in to places:
1) in image management commands IMG_MGMT_ID_UPLOAD
and IMG_MGMT_ID_ERASE: to erase an image in secondary slot
or to scramble trailer part of image, which could be misunderstood
by MCUboot as valid image operation request;
2) in command ZEPHYR_MGMT_GRP_BASIC_CMD_ERASE_STORAGE to
erase/scramble data partition.
Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
Remove the `_MAC` part because those Kconfig options enable only hash
algorithms, nothing MAC-related, and the `_ENABLED` part to align the
naming to the Mbed TLS defines (plus we don't need such a part).
As a bonus, enabling SHA-256 does not automatically enable SHA-224
anymore.
See the migration guide entries for more details on the practical
changes.
Signed-off-by: Tomi Fontanilles <tomi.fontanilles@nordicsemi.no>