# Kconfig - AMG88XX infrared thermopile sensor configuration options

#
# Copyright (c) 2017 Phytec Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig AMG88XX
	bool "AMG88XX Infrared Thermopile Sensor"
	depends on I2C
	help
	  Enable driver for AMG88XX infrared thermopile sensor.

if AMG88XX

config AMG88XX_NAME
	string "Driver name"
	default "AMG88XX"
	help
	  Device name identifying the AMG88XX sensor.

config AMG88XX_I2C_ADDR
	hex "I2C address for AMG88XX Sensor"
	default "0x68"
	range 0x68 0x69
	help
	  I2C address of the AMG88XX sensor.

	  0x68: AD-SELECT connected GND
	  0x69: AD-SELECT connected VDD

config AMG88XX_I2C_MASTER_DEV_NAME
	string "I2C master where AMG88XX is connected"
	default "I2C_0"
	help
	  The I2C master device's name where the AMG88XX sensor is connected.

choice
	prompt "Trigger mode"
	default AMG88XX_TRIGGER_NONE
	help
	  Specify the type of triggering used by the driver.

config AMG88XX_TRIGGER_NONE
	bool "No trigger"

config AMG88XX_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select AMG88XX_TRIGGER

config AMG88XX_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select AMG88XX_TRIGGER

endchoice

config AMG88XX_TRIGGER
	bool

config AMG88XX_GPIO_DEV_NAME
	string "GPIO device"
	default "GPIO_0"
	depends on AMG88XX_TRIGGER
	help
	  The GPIO device's name where the AMG88XX interrupt (alert) pin is
	  connected.

config AMG88XX_GPIO_PIN_NUM
	int "Interrupt GPIO pin number"
	default 0
	depends on AMG88XX_TRIGGER
	help
	  The GPIO pin number receiving the interrupt signal from the
	  AMG88XX sensor.

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

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

endif #if AMG88XX
