# Shell configuration options

# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

config DEVICE_SHELL
	bool "Device shell"
	default y if !SHELL_MINIMAL
	help
	  This shell provides access to basic device data.

config DEVICE_SHELL_INIT_CMD
	bool "Device shell init command"
	depends on DEVICE_SHELL
	default y if !SHELL_MINIMAL
	help
	  Add an 'init' command to the device shell module in order
	  to initialize, at runtime and manually, the devices that
	  own the 'zephyr,deferred-init' attribute. Note that if you
	  enable CONFIG_DEVICE_DEPS, it will take dependencies into
	  account.

config DATE_SHELL
	bool "Date shell"
	default y if !SHELL_MINIMAL
	help
	  This shell provides access to date and time based on Unix time.

config DEVMEM_SHELL
	bool "Devmem shell"
	default y if !SHELL_MINIMAL
	select GETOPT
	help
	  This shell command provides read/write access to physical memory.

config APP_VERSION_SHELL
	bool "Application version information shell"
	default y if !SHELL_MINIMAL
	depends on "$(APP_VERSION_EXTENDED_STRING)" != ""
	help
	  This shell command provides read access to application version information.

config ZYCLICTEST_SHELL
	bool "Zyclictest shell"
	select POSIX_C_LIB_EXT
	help
	  This shell command provides latency measurement.
	  Measure latencies of interrupt service routines and threads when
	  woken up by a timer. Collecting data in the background while
	  application of interest is running in the foreground.
	  It can be switched on by demand and measure the worst case latencies
	  with the exact circumstances of the productive application. Thus one
	  can see if for example interrupts or preemption locks are preventing
	  the application to run.
	  Inspired by Linux cyclictest tool.

rsource "kernel_service/Kconfig"
