zephyr/subsys/settings/Kconfig

137 lines
3.2 KiB
Plaintext
Raw Normal View History

#
# Copyright (c) 2018 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#
menuconfig SETTINGS
bool "Enable settings subsystem with non-volatile storage"
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"
endif
config SETTINGS_RUNTIME
bool "runtime storage back-end"
depends on SETTINGS
help
Enables runtime storage back-end.
subsys/settings: Enable handler ROM registration Add the possibility to register handles to ROM using a new macro SETTINGS_REGISTER_STATIC(handler), the handler is of type settings_handler_stat and has to be declared as const: ``` const struct settings_handler_stat test_handler = { .name = "test", /* this can also be "ps/data" .h_get = get, .h_set = set, .h_commit = NULL, /* NULL defines can be ommited */ .h_export = NULL /* NULL defines can be ommited */ }; SETTINGS_REGISTER_STATIC(test_handler); ``` To maintain support for handlers stored in RAM (dynamic handlers) `CONFIG_SETTINGS_DYNAMIC_HANDLERS`must be enabled, which is by default. When registering static handlers there is no check if this handler has been registered earlier, the latest registered static handler will be considered valid for any set/get routine, while the commit and export routines will be executed for both registered handlers. When a dynamic handler is registered a check is done to see if there was an earlier registration of the name as a static or dynamic handler registration will fail. To get to the lowest possible RAM usage it is advised to set `CONFIG_SETTINGS_DYNAMIC_HANDLERS=n`. Updates: a. Changed usage of RAM to DYNAMIC/dynamic, ROM to STATIC/static b. Updated settings.h to remove added #if defined() c. Make static handlers always enabled d. Corrected error introduced in common-rom.ld. e. Changed return value of settings_parse_and_lookup to settings_handler_stat type to reduce stack usage. f. Updated the name generated to store a handler item in ROM. It now uses the name used to register in combination with the line where SETTINGS_REGISTER_STATIC() is called. g. renamed settings_handler_stat type to settings_handler_static h. renamed SETTINGS_REGISTER_STATIC to SETTINGS_STATIC_HANDLER_DEFINE() Signed-off-by: Laczen JMS <laczenjms@gmail.com>
2019-06-18 21:16:26 +08:00
config SETTINGS_DYNAMIC_HANDLERS
bool "dynamic settings handlers"
depends on SETTINGS
default y
help
Enables the use of dynamic settings handlers
# Hidden option to enable encoding length into settings entry
config SETTINGS_ENCODE_LEN
depends on SETTINGS
bool
config SETTINGS_USE_BASE64
bool "encoding value using base64"
depends on SETTINGS
select BASE64
help
Enables values encoding using Base64.
choice
prompt "Storage back-end"
default SETTINGS_NVS if NVS
default SETTINGS_FCB if FCB
default SETTINGS_FS if FILE_SYSTEM
default SETTINGS_NONE
depends on SETTINGS
help
Storage back-end to be used by the settings subsystem.
config SETTINGS_FCB
bool "FCB"
depends on FCB
help
Use FCB as a settings storage back-end.
config SETTINGS_FS
bool "File System"
depends on FILE_SYSTEM
select SETTINGS_ENCODE_LEN
help
Use a 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
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 && 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 && SETTINGS_FCB
help
Magic 32-bit word for to identify valid settings area
config SETTINGS_FS_DIR
string "Serialization directory"
default "/settings"
depends on SETTINGS && SETTINGS_FS
help
Directory where the settings data is stored
config SETTINGS_FS_FILE
string "Default settings file"
default "/settings/run"
depends on SETTINGS && SETTINGS_FS
help
Full path to the default settings file.
config SETTINGS_FS_MAX_LINES
int "Compression threshold"
default 32
depends on SETTINGS && SETTINGS_FS
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 && 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 && SETTINGS_NVS
help
Number of sectors used for the NVS settings area