blob: a1c4fd7af0bfc4578e94343716303749bf800c30 [file] [log] [blame]
# Copyright Runtime.io 2018. All rights reserved.
# Copyright Nordic Semiconductor ASA 2020-2023. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# The Kconfig file is dedicated to File System management group of
# of MCUmgr subsystem and provides Kconfig options to configure
# group commands behaviour and other aspects.
#
# Options defined in this file should be prefixed:
# MCUMGR_GRP_FS_ -- general group options;
#
# When adding Kconfig options, that control the same feature,
# try to group them together by the same stem after prefix.
menuconfig MCUMGR_GRP_FS
bool "MCUmgr handlers for file management"
depends on FILE_SYSTEM
select MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_2
help
Enables MCUmgr handlers for file management
This option allows MCUmgr clients to access anything in the
file system, including application-stored secrets like
private keys. Use of this feature in production without adequate
protection mechanisms is strongly discouraged (applications can
enable MCUMGR_GRP_FS_FILE_ACCESS_HOOK and register to receive
callbacks when file access is attempted, which they can then filter,
allow, deny or rewrite paths).
if MCUMGR_GRP_FS
choice MCUMGR_GRP_FS_MAX_FILE_SIZE
prompt "Maximum file size that could be uploaded/downloaded"
default MCUMGR_GRP_FS_MAX_FILE_SIZE_64KB
help
Maximum file size that will be allowed to be downloaded from
device.
This option decides on number of bytes that are reserved in
CBOR frame for storage of offset/size of file downloaded.
config MCUMGR_GRP_FS_MAX_FILE_SIZE_64KB
bool "<= 64KB"
help
Files that have size up to 64KB require 1 to 3 bytes to encode
size/offset within CBOR frame with file chunk.
config MCUMGR_GRP_FS_MAX_FILE_SIZE_4GB
bool "<= 4GB"
help
Files that have size up to 4GB require 1 to 5 bytes to encode
size/offset within CBOR frame with file chunk.
endchoice
config MCUMGR_GRP_FS_MAX_OFFSET_LEN
int
default 3 if MCUMGR_GRP_FS_MAX_FILE_SIZE_64KB
default 5 if MCUMGR_GRP_FS_MAX_FILE_SIZE_4GB
help
Maximal byte length of encoded offset/size, within transferred
CBOR frame containing chunk of downloaded file.
This value affects how much of data will fit into download buffer,
as it selects sizes of fields within headers.
NOTE: This option is hidden intentionally as it is intended
to be assigned from limited set of allowed values, depending on
the selection made in MCUMGR_GRP_FS_MAX_FILE_SIZE menu.
config MCUMGR_GRP_FS_DL_CHUNK_SIZE_LIMIT
bool "Setting custom size of download file chunk"
help
By default file chunk, that will be read off storage and fit into
MCUmgr frame, is automatically calculated to fit into buffer
of size MCUGMR_TRANSPORT_NETBUF_SIZE with all headers.
Enabling this option allows to set MAXIMUM value that will be
allowed for such chunk.
Look inside fs_mgmt_config.h for details.
if MCUMGR_GRP_FS_DL_CHUNK_SIZE_LIMIT
config MCUMGR_GRP_FS_DL_CHUNK_SIZE
int "Maximum chunk size for file downloads"
range 65 MCUMGR_TRANSPORT_NETBUF_SIZE
default MCUMGR_TRANSPORT_NETBUF_SIZE
help
Sets the MAXIMUM size of chunk which will be rounded down to
number of bytes that, with all the required headers, will fit
into MCUMGR_TRANSPORT_NETBUF_SIZE. This means that actual value
might be lower then selected, in which case compiler warning will
be issued. Look inside fs_mgmt_config.h for details.
Note that header sizes are affected by MCUMGR_GRP_FS_MAX_OFFSET_LEN.
endif
config MCUMGR_GRP_FS_FILE_STATUS
bool "File status command"
default y
help
This command allows a remote device to retrieve the status of a file,
at present only the size of the file is returned (if it exists).
config MCUMGR_GRP_FS_CHECKSUM_HASH
bool "Checksum/hash MCUmgr functions"
help
Enable this to support the hash/checksum MCUmgr functionality,
individual checksum and hash types need to be enabled below.
Note that this requires enough stack space to buffer data
from the file being read and generate the output hash/checksum.
if MCUMGR_GRP_FS_CHECKSUM_HASH
config MCUMGR_GRP_FS_CHECKSUM_HASH_CHUNK_SIZE
int "Checksum calculation buffer size"
range 32 16384
default 128
help
Chunk size of buffer to use when calculating file checksum or hash
(uses stack).
config MCUMGR_GRP_FS_CHECKSUM_IEEE_CRC32
bool "IEEE CRC32 checksum support"
default y
help
Enable IEEE CRC32 checksum support for MCUmgr.
config MCUMGR_GRP_FS_HASH_SHA256
bool "SHA256 hash support"
depends on TINYCRYPT_SHA256 || MBEDTLS_MAC_SHA256_ENABLED
help
Enable SHA256 hash support for MCUmgr.
config MCUMGR_GRP_FS_CHECKSUM_HASH_SUPPORTED_CMD
bool "Supported hash/checksum command"
help
Enable the supported hash/checksum command which will return details on
supported hash and checksum types that can be used.
config MCUMGR_GRP_FS_CHECKSUM_HASH_SUPPORTED_MAX_TYPES
int "Predicted maximum number of types to return on supported list"
default 10
depends on MCUMGR_GRP_FS_CHECKSUM_HASH_SUPPORTED_CMD
help
This is used for defining CBOR map holding supported hash/checksum info.
The value does not affect memory allocation, it is used by zcbor to
figure out how to encode map depending on its predicted size.
endif
config MCUMGR_GRP_FS_PATH_LEN
int "Maximum file path length"
default 64
help
Limits the maximum path length for file operations, in bytes. A buffer
of this size gets allocated on the stack during handling of file upload
and download commands.
config MCUMGR_GRP_FS_FILE_ACCESS_HOOK
bool "File access hooks"
depends on MCUMGR_MGMT_NOTIFICATION_HOOKS
help
Allows applications to control file access (e.g. for uploading and
downloading of files) by registering for a callback which is then
triggered whenever a files are accessed using the FS management group
function. This also, optionally, allows re-writing or changing of
supplied file paths.
Note that this may be called multiple times for each file read and
write due to MCUmgr's method of operation with a single file state.
config MCUMGR_GRP_FS_FILE_SEMAPHORE_TAKE_TIME
int "File handle semaphore take time (ms)"
default 100
help
Maximum time (in ms) to acquire the file handle semaphore when a file
upload/download command is used. If unable to acquire the semaphore,
then MGMT_ERR_EBUSY will be returned.
Can specify 0 to not wait for the lock and return instantly if it
cannot be acquired.
config MCUMGR_GRP_FS_FILE_AUTOMATIC_IDLE_CLOSE_TIME
int "Automatic file handle close time (ms)"
default 4000
range 1 99999999
help
Time (in ms) for a file upload/download to be declared aborted and
file handle cleaned up. Each access to the file will reset the idle
time to 0.
module = MCUMGR_GRP_FS
module-str = mcumgr_grp_fs
source "subsys/logging/Kconfig.template.log_config"
endif