# Kconfig - SHT3xD temperature and humidity sensor configuration options

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

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

config SHT3XD_NAME
	string
	prompt "Driver name"
	default "SHT3XD"
	depends on SHT3XD
	help
	  Device name with which the SHT3xD sensor is identified.

config SHT3XD_I2C_ADDR
	hex "SHT3XD I2C address"
	depends on SHT3XD
	default "0x44"
	help
	  I2C address of the SHT3xD sensor.

	  0x44: Choose this option if the ADDR pin is connected to VSS.
	  0x45: Choose this option if the ADDR pin is connected to VDD.

config SHT3XD_I2C_MASTER_DEV_NAME
	string
	prompt "I2C master where SHT3xD is connected"
	depends on SHT3XD
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which the
	  SHT3xD chip is connected.

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

config SHT3XD_TRIGGER_NONE
	bool
	prompt "No trigger"

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

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

endchoice

config SHT3XD_TRIGGER
	bool
	depends on SHT3XD

config SHT3XD_GPIO_DEV_NAME
	string
	prompt "GPIO device"
	default "GPIO_0"
	depends on SHT3XD && SHT3XD_TRIGGER
	help
	  The device name of the GPIO device to which the SHT3xD interrupt
	  pins are connected.

config SHT3XD_GPIO_PIN_NUM
	int
	prompt "Interrupt GPIO pin number"
	default 0
	depends on SHT3XD && SHT3XD_TRIGGER
	help
	  The number of the GPIO on which the interrupt signal from the
	  SHT3xD chip will be received.

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

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

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

config SHT3XD_REPEATABILITY_LOW
	bool
	prompt "low"

config SHT3XD_REPEATABILITY_MEDIUM
	bool
	prompt "medium"

config SHT3XD_REPEATABILITY_HIGH
	bool
	prompt "high"

endchoice

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

config SHT3XD_MPS_05
	bool
	prompt "0.5"

config SHT3XD_MPS_1
	bool
	prompt "1"

config SHT3XD_MPS_2
	bool
	prompt "2"

config SHT3XD_MPS_4
	bool
	prompt "4"

config SHT3XD_MPS_10
	bool
	prompt "10"

endchoice
