# 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 "I2C0"
	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
