Commit graph

828 commits

Author SHA1 Message Date
Dominik Ermel
dc8308506e mgmt/mcumgr/lib: Remove unneeded return code check
The smp_process_request_packet has been checking return code from
mgmt_streamer_init_writer where Zephyr implementation of the
callback always returns 0.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-02-21 20:50:06 -05:00
Carles Cufi
07c78e515c mgmt: mcumgr: Replace use of crc16 with crc16_itu_t
Since this CRC uses the 0x1021 poly with no reflection, a faster
implementation is available in the crc16_itu_t() function, which is
O(n).

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2022-02-04 12:33:22 -05:00
Berend Ozceri
9edb8e2afb mgmt: smp: Fix NULL pointer dereferences in UDP transport.
Guard call to k_thread_abort() to ensure it's not called with an
uninitialized thread and fix improper use of inet_pton() with
INADDR_ANY passed in place of a dotted-decimal string. Both of these
would otherwise lead to NULL pointer dereferences.

Signed-off-by: Berend Ozceri <berend@recogni.com>
2022-02-04 11:23:16 +01:00
Dominik Ermel
0905e8e32f mgmt/mcumgr/lib: Fix message_size not updated
The commit fixes smp_process_request_packet failing to decrement
message_size, of read stream, by number of bytes it trims from
an input buffer.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-02-04 11:14:08 +01:00
Dominik Ermel
7728587f47 mgmt/mcumgr/lib: Fix no check on message
The commit fixes smp_process_request_packet not checking header
stated message length against actual message length.
This could lead to an erratic behavior of an application when it tries
to parse CBOR data beyond actual size of message or potential
Zephyr crash.
When application has asserts enabled the error leads to inevitable
Zephyr crash, caused by net_buf checks.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-02-01 16:20:35 -05:00
Dominik Ermel
8a4c58618b mgmt/mcumgr/lib: Return error on bad SMP header
The changes smp_process_request_packet to return MGMT_ERR_ECORRUPT
in case when failed to read header.
This helps to recognize that there will not be any response sent
from mcumgr to the buffer given to smp_process_request_packet as
it has not been recognized as valid request.
It also removes redundant check on mgmt_streamer_init_reader which
always returns 0 (no failure) in Zephyr.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-31 17:22:03 +01:00
Dominik Ermel
e83b074128 mgmg/mcumgr/lib: Image upload size no longer needs flash alignment
The mcumgr image upload uses buffed flash writes with use of stream
flash, which makes flash alignment check unneded.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-31 16:22:55 +01:00
Dominik Ermel
643e4d65c6 mgmt/mcumgr/lib: Fix bug in file download chunk size config
The commit fixes bug in compile time calculation of file download
chunk, FS_MGMT_DL_CHUNK_SIZE, that is permitted within selected
mcumgr buffer size, where the mcumgr header length has not been
taken into account.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-21 13:17:59 -05:00
Dominik Ermel
2f7c2333c8 mgmt/mcumg/lib: Use Kconfig options directly in img mgmt
The commit removes internal names given to Kconfig options,
in img_mgmt_config.h, and modifies code to use the Kconfig options
directly.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-21 11:34:38 -05:00
Dominik Ermel
6bbc261402 mgmt/mcumg/lib: Use Kconfig options directly in fs mgmt
The commit removes internal names given to Kconfig options,
in fs_mgmt_config.h, and modifies code to use the Kconfig options
directly.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-21 11:32:56 -05:00
Dominik Ermel
bd10559364 mgmt/mcumgr/lib: Shorten error path in taskstat processing
The tasktat code filling reposes with use of CBOR has been modified,
utilizing lazy evaluation of C '||' operator, to terminate CBOR
encoding as soon as first error appears.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-11 11:48:08 +01:00
Dominik Ermel
78f01b5900 mgmt/mcumgr/lib: Add OS_MGMT_TASKSTAT_STACK_INFO to mcumgr
The commit adds OS_MGMT_TASKSTAT_STACK_INFO Kconfig option
that allows to skip, when disabled,  "stksz" and "stkuse" reports,
in "taskstat" command responses.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-11 11:48:08 +01:00
Dominik Ermel
a566c92c1c mgmt/mcumgr/lib: Thread name selection for taskstat report
The commit adds Kconfig options and supporting code that allows
to select characteristic that will be used for thread name
in taskstat from:
 - thread name, when THREAD_NAME is enabled;
 - thread ID/index;
 - thread priority.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-11 11:48:08 +01:00
Dominik Ermel
49a3624cc8 mgmt/mcumgr/lib: Allow signed priorities in taskstat
By default the mcumgr taskstat responses send task priorities
as unsigned integers, while Zephyr uses int8_t as priority type.
This commit adds OS_MGMT_TASKSTAT_SIGNED_PRIORITY Kconfig option
that allows to switch to use signed priorities in responses.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-11 11:48:08 +01:00
Dominik Ermel
e293be6ab0 mgmt/mcumgr/lib: Make thread name in taskstat response configurable
The change adds OS_MGMT_THREAD_NAME_LEN that allows to set length of
thread name that is returned in taskstat response.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-11 11:48:08 +01:00
Dominik Ermel
845010287a mgmt/mcumgr/lib: Optimize taskstat for Zephyr
The commit changes taskstat code to directly process thread information
from Zephyr structures, instead of translating them to system agnostic
layer, before formatting response.
It also moves the takstat code to os_mgmt.c.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-11 11:48:08 +01:00
Dominik Ermel
e6437a7ef3 mgmt/mcumgr/lib: Remove os_mgmt_config.h
The commit removes os_mgmt_config.h that has been translating Kconfig
options to mgmt internal definitions for constants, and replaces
usage of these constants with direct use of Kconfig options.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2022-01-11 11:48:08 +01:00
Sebastian Bøe
22365b4dea mcumgr: kconfig: Have OS_MGMT_TASKSTAT default to n
OS_MGMT_TASKSTAT depends on THREAD_MONITOR, so when it defaults to y
and THREAD_MONITOR is disabled we get a build error.

Add a depends on to enforce a correct configuration.

Remove default y, as features should be default n.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2022-01-04 11:54:28 +01:00
Sebastian Bøe
8e47651e3f mcumgr: kconfig: Have task funcs ifdef on CONFIG_OS_MGMT_TASKSTAT
zephyr_os_mgmt_task_at and friends are ifdef'ing on a feature they
depend on instead of their own Kconfig option.

Which is not correct.

ifdef on CONFIG_OS_MGMT_TASKSTAT instead.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2022-01-04 11:54:28 +01:00
Emil Obalski
b037054f21 mcumgr: Add latency control functionality
This change adds a posibility to enable low latency connection
parameters for BT when SMP commands are handled.

Support for this functionality is disabled by the default and
can be enabled by CONFIG_MCUMGR_SMP_BT_LATENCY_CONTROL=y option.

Signed-off-by: Emil Obalski <emil.obalski@nordicsemi.no>
2021-12-20 18:46:43 +01:00
Daniel DeGrasse
58234d490c samples: subsys: mcumgr: Remove deprecated <power/reboot.h> header
MCUMgr sample was failing to build due to including a deprecated header.
Replace it with the new header file to fix the build.

Fixes #41050

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2021-12-10 10:30:41 +01:00
Dominik Ermel
1ccd9f0060 mgmt/mcumgr/lib: Reduce taskstat to Zephyr supported statistics
The commit adds CONFIG_OS_MGMT_TASKSTAT_ONLY_SUPPORTED_STATS
Kconfig option that disables code filling in task statistics, for
mcumgr command `taskstat`, that are not collected or supported by
Zephyr.
Setting this option to y will skip following statistics in response:
"runtime", "cswcnt", "last_checkin" and "next_checkin".

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-30 11:48:44 +01:00
Dominik Ermel
0e7e08e186 mgmt/mcumgr: Fix serial packet length not including CRC16
The length field of packet has not been including the length of
CRC16 field.

Fixes #39546

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-30 11:44:26 +01:00
Jordan Yates
8e99db5801 Kconfig: net: deprecate NET_BUF_USER_DATA_LEN
As user data sizes are now set on a per pool basis, this Kconfig option
has no purpose.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Jordan Yates
ef440b7e7e mgmt: mcumgr: use user_data_len member
Use the new `user_data_len` member to determine size of data to copy.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
2021-11-24 16:04:50 +02:00
Siddharth Chandrasekaran
5c175cc8e4 mgmt/osdp: Handle errors in uart_fifo_read()
Since 581c20e242 ("drivers: uart: Cleanup not supported API handling")
uart_fifo_read() returns -ve on errors. Correct the check on its return
value to work with this new API.

CID: 240662
Fixes: #39840
Signed-off-by: Siddharth Chandrasekaran <sidcha.dev@gmail.com>
2021-11-23 10:39:03 -05:00
Dominik Ermel
020d44456d mgmt/mcumgr/lib: Fix multi-image upload not working
The commit fixes the issue where duplicated code in
img_mgmt_impl_upload_inspect caused redirecting all image uploads,
in multi-image configuration, to the first image.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 21:24:09 -05:00
Dominik Ermel
1d17a4bc55 mgmt/mcumgr: Add CONFIG_IMG_MGMT_FRUGAL_LIST
The commit adds Kconfig options that enables "frugal status list";
when enabled, the status list will be sent with zero, empty and false
values omitted, slightly reducing number of bytes sent as response
from device.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
a29ab5106b mgmt/mcumgr/lib: Add Kconfig option MGMT_CBORATTR_FLOAT_SUPPORT
The option enables float numbers processing within CBOR attributes.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
cf10549e7e mgmt/mcumgr/lib: Replace license block
The commit changes licensing to SPDX tags.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
56e602b22b mgmt/mcumgr/lib: Fix compliance
Commit fixes compliance issues.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
0bc87573bf mgmt/mcumgr/lib: Documentation fixes
References to Mynewt have been removed and README for Zephyr has been
merged directly to the README.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
dfc57ae390 mgmt/mcumgr/lib: Remove non-Zephyr code
The commit removes MYNEWT sepcific code and code that has been
conditionally compiled with "ifndef _ZEPHYR_".

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
c8381a9d14 mgmt/mcumgr/lib: Remove log management commands
Not implemented.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
af75feac4f mgmt/mcumgr/lib: Copy mcumgr library under mgmt subsystem
The commit copies code of mcumgr, as a lib, under subsys/mgmt/mcumgr.
Only source files relevant for Zephyr have been copied, and changes
to source files have been limited only to path changes, where
required.
Samples have been left out as the only relevant sample, smp_svr,
is already within Zephyr source tree.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-16 10:45:57 +01:00
Dominik Ermel
4c9b308367 mgmt/mcumgr: Remove duplicated frame fragment marker processing
The mcumgr_serial_parse_op has been called to extract marker and
check if it is valid, just for the caller mcumgr_serial_process_frag
to process the marker again.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-12 14:48:52 +01:00
Dominik Ermel
8384fdd263 mgmt/mcumgr: Fix UART processing of TX frames
The commit fixes problem with UART TX frame processing, which was
caused by incorrect output buffer size evaulation, where input buffer
of certain len would cause entire output frame to be filled with no
place left for CRC causing a transmission to hang.
The commit, additionally, moves input buffer reminder processing out of
the input buffer processing loop.

Fixes #37893

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-09 11:17:29 +01:00
Dominik Ermel
5c9984baf7 mgmt/mcumgr: Simplify mcumgr_serial_tx_pkt
Removed some of variables used within the function, and some of
the redundant arithmetic operations.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-09 11:17:29 +01:00
Dominik Ermel
90ed7557e7 mgmt/mcumgr: Add mising static to zephyr_smp_alloc_rsp
The commit adds missing static to the zephyr_smp_alloc_rsp
function definition; it also reorders some of definitions
and removes no longer needed block of forward declarations
of functions.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-11-08 18:17:31 +01:00
Andrew Hedin
e828009757 mgmt: mcumgr: Make SMP service notification function public
Allow SMP messages to be sent from user space.
For example, a user defined command can be sent when a value changes
so the client doesn't have to poll.
Signed-off-by: Andrew Hedin <andrew.hedin@lairdconnect.com>
2021-11-03 16:36:17 -04:00
Dominik Ermel
512dab526c mgmt/mcumgr: Add Kconfig option to select number of supported images
The commit adds IMG_MGMT_UPDATABLE_IMAGE_NUMBER Kconfig option, int,
that allows to select how many images are supported by mcumgr.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-10-05 19:20:51 -04:00
Yong Cong Sin
54490e8fe3 subsys/mgmt/hawkbit: Check retval of mbedtls_md_update
Check the return value of mbedtls_md_update and break on error.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2021-09-14 12:28:40 -04:00
Yong Cong Sin
5cee596c9b subsys/mgmt/hawkbit: Cleanup connection if error after http_request
All errors that occured after http_request should clean up the
connection.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2021-09-14 12:28:40 -04:00
Yong Cong Sin
22b5a03321 subsys/mgmt/hawkbit: Break and return if error
There's no need to continue if there's an error, so just break and
return.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2021-09-14 12:28:40 -04:00
Yong Cong Sin
dfb55e5353 subsys/mgmt/hawkbit: Warning if image is unconfirmed
Add a warning if the image is unconfirmed. Add a delay before rebooting
so that the user knows what happened.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2021-09-14 12:28:40 -04:00
Yong Cong Sin
8363e805c0 subsys/mgmt/hawkbit: Handle multipacket response properly
The current HAWKBIT_PROBE & HAWKBIT_PROBE_DEPLOYMENT_BASE response
handlers aren't able to handle multipacket response from Hawkbit
server. This commit fixes it by using the implementation from
HAWKBIT_DOWNLOAD.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
Signed-off-by: Joep Buruma <burumaj50@gmail.com>
2021-09-14 12:28:40 -04:00
Yong Cong Sin
793c0340d4 subsys/mgmt/hawkbit: Implement DDI API authentication
Implement Hawkbit DDI API authentication for the client.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2021-09-14 12:28:40 -04:00
Yong Cong Sin
8ffb5e2ff2 subsys/mgmt/hawkbit: Use log_strdup for string pointers
Use log_strdup for string pointers.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2021-09-14 12:28:40 -04:00
Yong Cong Sin
6e8b1d7c29 subsys/mgmt/hawkbit: Clean up log and print error codes
Clean up log messages and print error codes wherever possible.

Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2021-09-14 12:28:40 -04:00
Dominik Ermel
adcf32b45c mgmt/mcumgr: Add Kconfig option for direct image upload
The commit adds CONFIG_IMG_MGMT_DIRECT_IMAGE_UPLOAD that allows
to turn on the direct image upload.

Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
2021-09-06 09:22:28 -04:00