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

menuconfig WSEN_PADS
	bool "WSEN-PADS absolute pressure and temperature sensor"
	default y
	depends on DT_HAS_WE_WSEN_PADS_ENABLED
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_WE_WSEN_PADS),i2c)
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_WE_WSEN_PADS),spi)
	select HAS_WESENSORS
	help
	  Enable driver for the WSEN-PADS I2C/SPI-based absolute pressure sensor with integrated
	  temperature sensor.

if WSEN_PADS

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

config WSEN_PADS_TRIGGER_NONE
	bool "No trigger"

config WSEN_PADS_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select WSEN_PADS_TRIGGER

config WSEN_PADS_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select WSEN_PADS_TRIGGER

endchoice # WSEN_PADS_TRIGGER_MODE

config WSEN_PADS_TRIGGER
	bool

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

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

endif # WSEN_PADS
