# Kconfig - SHT3xD temperature and humidity sensor configuration options

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

menuconfig SHT3XD
	bool "SHT3xD Temperature and Humidity Sensor"
	depends on I2C
	help
	  Enable driver for SHT3xD temperature and humidity sensors.

if SHT3XD

choice
	prompt "Trigger mode"
	default SHT3XD_TRIGGER_NONE
	help
	  Specify the type of triggering to be used by the driver.

config SHT3XD_TRIGGER_NONE
	bool "No trigger"

config SHT3XD_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select SHT3XD_TRIGGER

config SHT3XD_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select SHT3XD_TRIGGER

endchoice

config SHT3XD_TRIGGER
	bool

config SHT3XD_THREAD_PRIORITY
	int "Thread priority"
	depends on SHT3XD_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config SHT3XD_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on SHT3XD_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

choice
	prompt "Measurement repeatability"
	default SHT3XD_REPEATABILITY_HIGH
	help
	  Repeatability modes differ with respect to measurement duration,
	  noise level and energy consumption.

config SHT3XD_REPEATABILITY_LOW
	bool "low"

config SHT3XD_REPEATABILITY_MEDIUM
	bool "medium"

config SHT3XD_REPEATABILITY_HIGH
	bool "high"

endchoice

choice
	prompt "Measurements per second"
	default SHT3XD_MPS_1
	help
	  Number of measurements per second.

config SHT3XD_MPS_05
	bool "0.5"

config SHT3XD_MPS_1
	bool "1"

config SHT3XD_MPS_2
	bool "2"

config SHT3XD_MPS_4
	bool "4"

config SHT3XD_MPS_10
	bool "10"

endchoice

endif # SHT3XD
