# Copyright (c) 2022 Würth Elektronik eiSos GmbH & Co. KG
# SPDX-License-Identifier: Apache-2.0

menuconfig WSEN_HIDS
	bool "WSEN-HIDS humidity and temperature sensor"
	default y
	depends on DT_HAS_WE_WSEN_HIDS_ENABLED
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_WE_WSEN_HIDS),i2c)
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_WE_WSEN_HIDS),spi)
	select HAS_WESENSORS
	help
	  Enable driver for the WSEN-HIDS I2C/SPI-based humidity sensor with integrated
	  temperature sensor.

if WSEN_HIDS

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

config WSEN_HIDS_TRIGGER_NONE
	bool "No trigger"

config WSEN_HIDS_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select WSEN_HIDS_TRIGGER

config WSEN_HIDS_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select WSEN_HIDS_TRIGGER

endchoice # WSEN_HIDS_TRIGGER_MODE

config WSEN_HIDS_TRIGGER
	bool

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

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

endif # WSEN_HIDS
