# Copyright (c) 2018 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 menuconfig SETTINGS bool "Settings" help The settings subsystem allows its users to serialize and deserialize state in memory into and from non-volatile memory. It supports several back-ends to store and load serialized data from and it can do so atomically for all involved modules. if SETTINGS module = SETTINGS module-str = settings source "subsys/logging/Kconfig.template.log_config" config SETTINGS_RUNTIME bool "runtime storage back-end" help Enables runtime storage back-end. config SETTINGS_DYNAMIC_HANDLERS bool "dynamic settings handlers" default y help Enables the use of dynamic settings handlers # Hidden option to enable encoding length into settings entry config SETTINGS_ENCODE_LEN bool choice SETTINGS_BACKEND prompt "Storage back-end" default SETTINGS_ZMS if ZMS default SETTINGS_NVS if NVS default SETTINGS_FCB if FCB default SETTINGS_FILE if FILE_SYSTEM default SETTINGS_NONE help Storage back-end to be used by the settings subsystem. config SETTINGS_ZMS bool "ZMS (Zephyr Memory Storage)" depends on ZMS select SYS_HASH_FUNC32 help Use ZMS as settings storage backend. if SETTINGS_ZMS config SETTINGS_ZMS_LL_CACHE bool "ZMS linked list lookup cache" help Enable ZMS lookup cache for linked list, used to reduce the Settings load time by having most linked list elements already in cache. config SETTINGS_ZMS_LL_CACHE_SIZE int "ZMS linked list lookup cache size" default 128 range 1 $(UINT32_MAX) depends on SETTINGS_ZMS_LL_CACHE help Number of entries in Settings ZMS linked list cache. endif # SETTINGS_ZMS config SETTINGS_FCB bool "FCB" depends on FCB help Use FCB as a settings storage back-end. config SETTINGS_FILE bool "File" depends on FILE_SYSTEM select SETTINGS_ENCODE_LEN help Use a file (on mounted file system) as a settings storage back-end. config SETTINGS_NVS bool "NVS non-volatile storage support" depends on NVS depends on FLASH_MAP help Enables NVS storage support if SETTINGS_NVS config SETTINGS_NVS_NAME_CACHE bool "NVS name lookup cache" help Enable NVS name lookup cache, used to reduce the Settings name lookup time. config SETTINGS_NVS_NAME_CACHE_SIZE int "NVS name lookup cache size" default 128 range 1 $(UINT16_MAX) depends on SETTINGS_NVS_NAME_CACHE help Number of entries in Settings NVS name cache. endif # SETTINGS_NVS config SETTINGS_CUSTOM bool "CUSTOM" help Use a custom settings storage back-end. config SETTINGS_NONE bool "NONE" help No storage back-end. endchoice config SETTINGS_FCB_NUM_AREAS int "Number of flash areas used by the settings subsystem" default 8 depends on SETTINGS_FCB help Number of areas to allocate in the settings FCB. A smaller number is used if the flash hardware cannot support this value. config SETTINGS_FCB_MAGIC hex "FCB magic for the settings subsystem" default 0xc0ffeeee depends on SETTINGS_FCB help Magic 32-bit word for to identify valid settings area config SETTINGS_FILE_PATH string "Default settings file" default "/settings/run" depends on SETTINGS_FILE help Full path to the default settings file. config SETTINGS_FILE_MAX_LINES int "Compression threshold" default 32 depends on SETTINGS_FILE help Limit how many items stored in a file before compressing config SETTINGS_NVS_SECTOR_SIZE_MULT int "Sector size of the NVS settings area" default 1 depends on SETTINGS_NVS help The sector size to use for the NVS settings area as a multiple of FLASH_ERASE_BLOCK_SIZE. config SETTINGS_NVS_SECTOR_COUNT int "Sector count of the NVS settings area" default 8 depends on SETTINGS_NVS help Number of sectors used for the NVS settings area config SETTINGS_ZMS_SECTOR_SIZE_MULT int "Sector size of the ZMS settings area" default 1 depends on SETTINGS_ZMS help The sector size to use for the ZMS settings area as a multiple of FLASH_ERASE_BLOCK_SIZE. config SETTINGS_ZMS_CUSTOM_SECTOR_COUNT bool "Customize the sector count of the ZMS settings partition" depends on SETTINGS_ZMS help The number of sectors used by default is the maximum value that can fit in the settings storage partition. Enabling this config allows to customize the number of used sectors. config SETTINGS_ZMS_SECTOR_COUNT int "Sector count of the ZMS settings area" default 8 depends on SETTINGS_ZMS && SETTINGS_ZMS_CUSTOM_SECTOR_COUNT help Number of sectors used for the ZMS settings area config SETTINGS_ZMS_MAX_COLLISIONS_BITS int "number of bits reserved to handle collisions between hash numbers" default 4 depends on SETTINGS_ZMS help The maximum number of hash collisions needs to be well sized depending on the data that is going to be stored in ZMS and its hash values config SETTINGS_ZMS_NO_LL_DELETE bool "Disable deletion of Linked list hashes" help For some applications, the Settings delete operation is too long for ZMS because of the linked list update. As a tradeoff for performance the linked list is not updated. As a result, some nodes will be unused and will occupy some space in the storage. These nodes will be used again when the same Settings element that has been deleted is created again. config SETTINGS_ZMS_LOAD_SUBTREE_PATH bool "Load only subtree path if provided" help Loads first the key defined by the subtree path. If the callback handler returns a zero value it will continue to look for all the keys under that subtree path. If the callback handler returns a non negative value, it returns immeditaley. config SETTINGS_SHELL bool "Settings shell" depends on SHELL help Enable shell commands for listing and reading the settings. Note that reading the settings requires quite a big stack buffer, so the stack size of the shell thread may need to be increased to accommodate this feature. endif # SETTINGS