# Kconfig.bmp280 - BMP280 temperature and pressure sensor configuration options

#
# Copyright (c) 2016 Intel Corporation
# Copyright (c) 2017 IpTronix S.r.l.
#
# SPDX-License-Identifier: Apache-2.0
#
menuconfig BME280
	bool "BME280/BMP280 sensor"
	depends on SENSOR && (I2C || SPI)
	default n
	help
	 Enable driver for BME280 I2C-based or SPI-based temperature and pressure sensor.

config BME280_DEV_NAME
	string "BME280 device name"
	depends on BME280
	default "BME280"

choice
	prompt "BME280 device select"
	depends on BME280
	default BME280_DEV_TYPE_I2C
	help
	  Select interface to communicate with BME280 sensor. This sensor can communicate
	  with both SPI and I2C. I2C is the default, select SPI if you sensor is connected
	  via the SPI interface.

config BME280_DEV_TYPE_SPI
	depends on SPI
	bool "SPI"
config BME280_DEV_TYPE_I2C
	depends on I2C
	bool "I2C"
endchoice

config BME280_I2C_ADDR
	hex "BME280 I2C slave address"
	default 0x76
	depends on BME280 && BME280_DEV_TYPE_I2C
	help
	  Specify the I2C slave address for the BME280.

	  0x76: Ground
	  0x77: VCC

config BME280_I2C_MASTER_DEV_NAME
	string "I2C master where BME280 is connected"
	depends on BME280 && BME280_DEV_TYPE_I2C
	default "I2C_0"
	help
	 Specify the device name of the I2C master device to which BME280 is
	 connected.

config BME280_SPI_DEV_NAME
	string "SPI device where BME280 is connected"
	depends on BME280 && BME280_DEV_TYPE_SPI
	default "SPI_0"
	help
	 Specify the device name of the SPI device to which BME280 is
	 connected.

config BME280_SPI_DEV_SLAVE
	int "SPI Slave Select where BME280 is connected"
	depends on BME280 && BME280_DEV_TYPE_SPI
	default 3
	help
	 Specify the Slave Select pin of the SPI device to which BME280 CS is
	 connected.

menu "Attributes"
	depends on BME280

choice
	prompt "BME280 temperature oversampling"
	depends on BME280
	default BME280_TEMP_OVER_2X
	help
	  Select temperature oversampling for the BME280 sensor.  Higher values
	  lead to more accurate readings, but higher power consumption.
config BME280_TEMP_OVER_1X
	bool "x1"
config BME280_TEMP_OVER_2X
	bool "x2"
config BME280_TEMP_OVER_4X
	bool "x4"
config BME280_TEMP_OVER_8X
	bool "x8"
config BME280_TEMP_OVER_16X
	bool "x16"
endchoice

choice
	prompt "BME280 pressure oversampling"
	depends on BME280
	default BME280_PRESS_OVER_16X
	help
	  Select pressure oversampling for the BME280 sensor.  Higher values
	  lead to more accurate readings, but higher power consumption.
config BME280_PRESS_OVER_1X
	bool "x1"
config BME280_PRESS_OVER_2X
	bool "x2"
config BME280_PRESS_OVER_4X
	bool "x4"
config BME280_PRESS_OVER_8X
	bool "x8"
config BME280_PRESS_OVER_16X
	bool "x16"
endchoice

choice
	prompt "BME280 humidity oversampling"
	depends on BME280
	default BME280_HUMIDITY_OVER_16X
	help
	  Select humidity oversampling for the BME280 sensor.  Higher values
	  lead to more accurate readings, but higher power consumption.
config BME280_HUMIDITY_OVER_1X
	bool "x1"
config BME280_HUMIDITY_OVER_2X
	bool "x2"
config BME280_HUMIDITY_OVER_4X
	bool "x4"
config BME280_HUMIDITY_OVER_8X
	bool "x8"
config BME280_HUMIDITY_OVER_16X
	bool "x16"
endchoice

choice
	prompt "BME280 standby time"
	depends on BME280
	default BME280_STANDBY_1000MS
	help
	  Select standby time between measurements for the BME280 sensor.
	  Higher values lead to lower power consumption.
config BME280_STANDBY_05MS
	bool "0.5ms"
config BME280_STANDBY_62MS
	bool "62.5ms"
config BME280_STANDBY_125MS
	bool "125ms"
config BME280_STANDBY_250MS
	bool "250ms"
config BME280_STANDBY_500MS
	bool "500ms"
config BME280_STANDBY_1000MS
	bool "1000ms"
config BME280_STANDBY_2000MS
	bool "2000ms BMP280 / 10ms BME280"
config BME280_STANDBY_4000MS
	bool "4000ms BMP280 / 20ms BME280"
endchoice

choice
	prompt "BME280 filter coefficient"
	depends on BME280
	default BME280_FILTER_4
	help
	  Select the filter coefficient for the BME280 sensor.
config BME280_FILTER_OFF
	bool "filter off"
config BME280_FILTER_2
	bool "2"
config BME280_FILTER_4
	bool "4"
config BME280_FILTER_8
	bool "8"
config BME280_FILTER_16
	bool "16"
endchoice

endmenu
