#
# Copyright (c) 2016 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

menuconfig LPS25HB
	bool
	prompt "LPS25HB pressure and temperature"
	depends on SENSOR && I2C
	default n
	help
	Enable driver for LPS25HB I2C-based pressure and temperature
	sensor.

config LPS25HB_SYS_LOG_LEVEL
	int "LPS25HB Log level"
	depends on SYS_LOG && LPS25HB
	default 0
	range 0 4
	help
	Sets log level for LPS25HB driver.

	Levels are:

	- 0 OFF: do not write

	- 1 ERROR: only write SYS_LOG_ERR

	- 2 WARNING: write SYS_LOG_WRN in addition to previous level

	- 3 INFO: write SYS_LOG_INF in addition to previous levels

	- 4 DEBUG: write SYS_LOG_DBG in addition to previous levels

config LPS25HB_DEV_NAME
	string
	prompt "Device name"
	default "lps25hb"
	depends on LPS25HB
	help
	Device name with which the LPS25HB sensor is identified.

config LPS25HB_I2C_ADDR
	hex
	prompt "I2C address"
	depends on LPS25HB
	default "0x5C"
	help
	I2C address of the LPS25HB sensor.
	Use 0x5C if the SA0 pin is pulled to GND or 0x5D if the SA0
	pin is pulled to VDD.

config LPS25HB_I2C_MASTER_DEV_NAME
	string
	prompt "I2C master where LPS25HB is connected"
	depends on LPS25HB
	default "I2C_0"
	help
	Specify the device name of the I2C master device to which
	LPS25HB is connected.

menu "Attributes"
	depends on LPS25HB

config LPS25HB_SAMPLING_RATE
	int
	prompt "Output data rate"
	depends on LPS25HB
	default 25
	help
	Sensor output data rate expressed in samples per second.
	Data rates supported by the chip are 1, 7, 13, 25.

endmenu
