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

menuconfig HTS221
	bool "HTS221 temperature and humidity sensor"
	depends on I2C || SPI
	select HAS_STMEMSC
	select USE_STDC_HTS221
	help
	  Enable driver for HTS221 I2C/SPI-based temperature and humidity sensor.

if HTS221

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

config HTS221_TRIGGER_NONE
	bool "No trigger"

config HTS221_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select HTS221_TRIGGER

config HTS221_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select HTS221_TRIGGER

endchoice # HTS221_TRIGGER_MODE

config HTS221_TRIGGER
	bool

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

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

config HTS221_ODR
	string "Output data rate"
	default "1"
	help
	  Sensor output data rate expressed in samples per second.
	  Data rates supported by the chip are 1, 7 and 12.5.

endif # HTS221
