# 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 I2C || SPI
	default	n
	help
	  Enable driver for BME280 I2C-based or SPI-based temperature and pressure sensor.

if BME280

menu "Attributes"

choice
	prompt "BME280 temperature oversampling"
	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"
	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"
	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"
	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"
	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

endif # BME280
