# Copyright (c) 2016 Intel Corporation
# Copyright (c) 2020 Nordic Semiconductor (ASA)
# SPDX-License-Identifier: Apache-2.0

menu "File Systems"

config FILE_SYSTEM
	bool "File system support"
	help
	  Enables support for file system.

if FILE_SYSTEM

module = FS
module-str = fs
source "subsys/logging/Kconfig.template.log_config"

config APP_LINK_WITH_FS
	bool "Link 'app' with FS"
	default y
	help
	  Add FS header files to the 'app' include path. It may be
	  disabled if the include paths for FS are causing aliasing
	  issues for 'app'.

config FILE_SYSTEM_MAX_TYPES
	int "Maximum number of distinct file system types allowed"
	default 2
	help
	  Zephyr provides several file system types including FatFS and
	  LittleFS, but it is possible to define additional ones and
	  register them.  A slot is required for each type.

config FILE_SYSTEM_MAX_FILE_NAME
	int "Optional override for maximum file name length"
	default -1
	help
	  Specify the maximum file name allowed across all enabled file
	  system types.  Zero or a negative value selects the maximum
	  file name length for enabled in-tree file systems.  This
	  default may be inappropriate when registering an out-of-tree
	  file system.  Selecting a value less than the actual length
	  supported by a file system may result in memory access
	  violations.

config FILE_SYSTEM_SHELL
	bool "File system shell"
	depends on SHELL
	depends on HEAP_MEM_POOL_SIZE > 0
	help
	  This shell provides basic browsing of the contents of the
	  file system.

if FILE_SYSTEM_SHELL

config FILE_SYSTEM_SHELL_TEST_COMMANDS
	bool "File system shell read/write/erase test commands"
	select CBPRINTF_FP_SUPPORT
	help
	  Enable additional file system shell commands for performing
	  read/write/erase tests with speed output.

config FILE_SYSTEM_SHELL_BUFFER_SIZE
	hex "File system shell buffer size"
	depends on FILE_SYSTEM_SHELL_TEST_COMMANDS
	default 0x100
	range 0x20 0x1000000
	help
	  Size of the buffer used for file system commands, will determine the
	  maximum size that can be used with a read/write test. Note that this
	  is is used on the stack.

endif # FILE_SYSTEM_SHELL

config FILE_SYSTEM_MKFS
	bool "Allow to format file system"
	help
	  Enables function fs_mkfs that can be used to format a storage device.

config FUSE_FS_ACCESS
	bool "FUSE based access to file system partitions"
	depends on ARCH_POSIX
	help
	  Expose file system partitions to the host system through FUSE.

rsource "Kconfig.fatfs"
rsource "Kconfig.littlefs"

endif # FILE_SYSTEM

rsource "fcb/Kconfig"
rsource "nvs/Kconfig"

endmenu
