# Kconfig.sht3xd - SHT3xD temperature and humidity sensor configuration options

#
# Copyright (c) 2016 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

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_INIT_PRIORITY
	int
	prompt "Init priority"
	depends on SHT3XD
	default 70
	help
	  Device driver initialization priority.

choice
	prompt "I2C address"
	depends on SHT3XD
	default SHT3XD_I2C_ADDR_A
	help
	  I2C address of the SHT3xD sensor.

config SHT3XD_I2C_ADDR_A
	bool
	prompt "0x44"
	help
	  Choose this option if the ADDR pin is connected to VSS.

config SHT3XD_I2C_ADDR_B
	bool
	prompt "0x45"
	help
	  Choose this option if the ADDR pin is connected to VDD.

endchoice

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_FIBER
	bool
	prompt "Use global fiber"
	depends on GPIO
	select SHT3XD_TRIGGER
	select SENSOR_DELAYED_WORK

config SHT3XD_TRIGGER_OWN_FIBER
	bool
	prompt "Use own fiber"
	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_FIBER_PRIORITY
	int
	prompt "Fiber priority"
	depends on SHT3XD && SHT3XD_TRIGGER_OWN_FIBER
	default 10
	help
	  Priority of fiber used by the driver to handle interrupts.

config SHT3XD_FIBER_STACK_SIZE
	int
	prompt "Fiber stack size"
	depends on SHT3XD && SHT3XD_TRIGGER_OWN_FIBER
	default 1024
	help
	  Stack size of fiber 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
