# Sensor configuration options

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

menuconfig SENSOR
	bool "Sensor drivers"
	help
	  Include sensor drivers in system config

if SENSOR

module = SENSOR
module-str = sensor
source "subsys/logging/Kconfig.template.log_config"

config SENSOR_INIT_PRIORITY
	int "Sensor init priority"
	default 90
	help
	  Sensor initialization priority.

config SENSOR_ASYNC_API
	bool "Async Sensor API"
	select RTIO
	select RTIO_SYS_MEM_BLOCKS
	select RTIO_CONSUME_SEM
	select RTIO_WORKQ
	help
	  Enables the asynchronous sensor API by leveraging the RTIO subsystem.

config SENSOR_SHELL
	bool "Sensor shell"
	depends on SHELL
	select CBPRINTF_FP_SUPPORT
	select SENSOR_ASYNC_API
	help
	  This shell provides access to basic sensor data.

config SENSOR_SHELL_STREAM
	bool "Sensor shell 'stream' command"
	depends on SENSOR_SHELL
	help
	  Add the 'stream' subcommand to the sensor shell. When run on drivers that
	  support streaming (usually hardware FIFO backed), the shell will continue
	  to print new values as they come until the stream is closed.

config SENSOR_SHELL_THREAD_STACK_SIZE
	int "Stack size for the sensor shell data processing thread"
	depends on SENSOR_SHELL_STREAM
	default 1024
	help
	  The sensor shell uses a dedicated thread to process data coming from the
	  sensors in either one-shot or streaming mode. Use this config to control
	  the size of that thread's stack.

config SENSOR_SHELL_BATTERY
	bool "Sensor shell 'battery' command"
	depends on SHELL
	help
	  This enables the 'battery' command which reports charging information
	  in a convenient format. It makes use of a fuel gauge to read its
	  information.

config SENSOR_SHELL_TRIG_PRINT_TIMEOUT_MS
	int "Timeout for printing the average sensor sample value"
	default 5000
	depends on SENSOR_SHELL
	help
	  Control the frequency of the sampling window over which the sensor
	  interrupt handler will collect data.

config SENSOR_SHELL_MAX_TRIGGER_DEVICES
	int "Maximum number of sensor devices that can have enabled triggers in shell"
	default 1
	depends on SENSOR_SHELL
	help
	  Maximum number of sensor devices that the shell cmd can have
	  enabled triggers for.

config SENSOR_INFO
	bool "Sensor Info iterable section"

source "drivers/sensor/Kconfig.sensor_clock"

comment "Device Drivers"

# zephyr-keep-sorted-start
source "drivers/sensor/adi/Kconfig"
source "drivers/sensor/als31300/Kconfig"
source "drivers/sensor/ams/Kconfig"
source "drivers/sensor/aosong/Kconfig"
source "drivers/sensor/asahi_kasei/Kconfig"
source "drivers/sensor/bosch/Kconfig"
source "drivers/sensor/broadcom/Kconfig"
source "drivers/sensor/espressif/Kconfig"
source "drivers/sensor/everlight/Kconfig"
source "drivers/sensor/honeywell/Kconfig"
source "drivers/sensor/infineon/Kconfig"
source "drivers/sensor/ite/Kconfig"
source "drivers/sensor/jedec/Kconfig"
source "drivers/sensor/liteon/Kconfig"
source "drivers/sensor/maxim/Kconfig"
source "drivers/sensor/meas/Kconfig"
source "drivers/sensor/melexis/Kconfig"
source "drivers/sensor/memsic/Kconfig"
source "drivers/sensor/microchip/Kconfig"
source "drivers/sensor/nordic/Kconfig"
source "drivers/sensor/nuvoton/Kconfig"
source "drivers/sensor/nxp/Kconfig"
source "drivers/sensor/omron/Kconfig"
source "drivers/sensor/pixart/Kconfig"
source "drivers/sensor/pni/Kconfig"
source "drivers/sensor/realtek/Kconfig"
source "drivers/sensor/renesas/Kconfig"
source "drivers/sensor/rohm/Kconfig"
source "drivers/sensor/seeed/Kconfig"
source "drivers/sensor/sensirion/Kconfig"
source "drivers/sensor/silabs/Kconfig"
source "drivers/sensor/st/Kconfig"
source "drivers/sensor/tdk/Kconfig"
source "drivers/sensor/ti/Kconfig"
source "drivers/sensor/vishay/Kconfig"
source "drivers/sensor/wsen/Kconfig"
# zephyr-keep-sorted-stop

# zephyr-keep-sorted-start
source "drivers/sensor/a01nyub/Kconfig"
source "drivers/sensor/amd_sb_tsi/Kconfig"
source "drivers/sensor/amg88xx/Kconfig"
source "drivers/sensor/apds9253/Kconfig"
source "drivers/sensor/apds9306/Kconfig"
source "drivers/sensor/apds9960/Kconfig"
source "drivers/sensor/current_amp/Kconfig"
source "drivers/sensor/ene_tach_kb1200/Kconfig"
source "drivers/sensor/ens160/Kconfig"
source "drivers/sensor/explorir_m/Kconfig"
source "drivers/sensor/f75303/Kconfig"
source "drivers/sensor/fcx_mldx5/Kconfig"
source "drivers/sensor/grow_r502a/Kconfig"
source "drivers/sensor/hc_sr04/Kconfig"
source "drivers/sensor/hp206c/Kconfig"
source "drivers/sensor/ist8310/Kconfig"
source "drivers/sensor/lm35/Kconfig"
source "drivers/sensor/lm75/Kconfig"
source "drivers/sensor/lm77/Kconfig"
source "drivers/sensor/mb7040/Kconfig"
source "drivers/sensor/mhz19b/Kconfig"
source "drivers/sensor/nct75/Kconfig"
source "drivers/sensor/ntc_thermistor/Kconfig"
source "drivers/sensor/pms7003/Kconfig"
source "drivers/sensor/pzem004t/Kconfig"
source "drivers/sensor/qdec_sam/Kconfig"
source "drivers/sensor/rpi_pico_temp/Kconfig"
source "drivers/sensor/s11059/Kconfig"
source "drivers/sensor/sbs_gauge/Kconfig"
source "drivers/sensor/sx9500/Kconfig"
source "drivers/sensor/th02/Kconfig"
source "drivers/sensor/tsic_xx6/Kconfig"
source "drivers/sensor/veaa_x_3/Kconfig"
source "drivers/sensor/voltage_divider/Kconfig"
source "drivers/sensor/xbr818/Kconfig"
# zephyr-keep-sorted-stop

endif # SENSOR
