/*
 * 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.
 */

#ifndef __SENSOR_BME280_H__
#define __SENSOR_BME280_H__

#include <stdint.h>
#include <device.h>

#define BME280_REG_PRESS_MSB		0xF7
#define BME280_REG_COMP_START		0x88
#define BME280_REG_HUM_COMP_PART1	0xA1
#define BME280_REG_HUM_COMP_PART2	0xE1
#define BME280_REG_ID			0xD0
#define BME280_REG_CONFIG		0xF5
#define BME280_REG_CTRL_MEAS		0xF4
#define BME280_REG_CTRL_HUM		0xF2

#define BMP280_CHIP_ID_SAMPLE_1		0x56
#define BMP280_CHIP_ID_SAMPLE_2		0x57
#define BMP280_CHIP_ID_MP		0x58
#define BME280_CHIP_ID			0x60
#define BME280_MODE_NORMAL		0x03
#define BME280_SPI_3W_DISABLE		0x00

#if defined CONFIG_BME280_TEMP_OVER_1X
#define BME280_TEMP_OVER		(1 << 5)
#elif defined CONFIG_BME280_TEMP_OVER_2X
#define BME280_TEMP_OVER		(2 << 5)
#elif defined CONFIG_BME280_TEMP_OVER_4X
#define BME280_TEMP_OVER		(3 << 5)
#elif defined CONFIG_BME280_TEMP_OVER_8X
#define BME280_TEMP_OVER		(4 << 5)
#elif defined CONFIG_BME280_TEMP_OVER_16X
#define BME280_TEMP_OVER		(5 << 5)
#endif

#if defined CONFIG_BME280_PRESS_OVER_1X
#define BME280_PRESS_OVER		(1 << 2)
#elif defined CONFIG_BME280_PRESS_OVER_2X
#define BME280_PRESS_OVER		(2 << 2)
#elif defined CONFIG_BME280_PRESS_OVER_4X
#define BME280_PRESS_OVER		(3 << 2)
#elif defined CONFIG_BME280_PRESS_OVER_8X
#define BME280_PRESS_OVER		(4 << 2)
#elif defined CONFIG_BME280_PRESS_OVER_16X
#define BME280_PRESS_OVER		(5 << 2)
#endif

#if defined CONFIG_BME280_HUMIDITY_OVER_1X
#define BME280_HUMIDITY_OVER		1
#elif defined CONFIG_BME280_HUMIDITY_OVER_2X
#define BME280_HUMIDITY_OVER		2
#elif defined CONFIG_BME280_HUMIDITY_OVER_4X
#define BME280_HUMIDITY_OVER		3
#elif defined CONFIG_BME280_HUMIDITY_OVER_8X
#define BME280_HUMIDITY_OVER		4
#elif defined CONFIG_BME280_HUMIDITY_OVER_16X
#define BME280_HUMIDITY_OVER		5
#endif

#if defined CONFIG_BME280_STANDBY_05MS
#define BME280_STANDBY			0
#elif defined CONFIG_BME280_STANDBY_62MS
#define BME280_STANDBY			(1 << 5)
#elif defined CONFIG_BME280_STANDBY_125MS
#define BME280_STANDBY			(2 << 5)
#elif defined CONFIG_BME280_STANDBY_250MS
#define BME280_STANDBY			(3 << 5)
#elif defined CONFIG_BME280_STANDBY_500MS
#define BME280_STANDBY			(4 << 5)
#elif defined CONFIG_BME280_STANDBY_1000MS
#define BME280_STANDBY			(5 << 5)
#elif defined CONFIG_BME280_STANDBY_2000MS
#define BME280_STANDBY			(6 << 5)
#elif defined CONFIG_BME280_STANDBY_4000MS
#define BME280_STANDBY			(7 << 5)
#endif

#if defined CONFIG_BME280_FILTER_OFF
#define BME280_FILTER			0
#elif defined CONFIG_BME280_FILTER_2
#define BME280_FILTER			(1 << 2)
#elif defined CONFIG_BME280_FILTER_4
#define BME280_FILTER			(2 << 2)
#elif defined CONFIG_BME280_FILTER_8
#define BME280_FILTER			(3 << 2)
#elif defined CONFIG_BME280_FILTER_16
#define BME280_FILTER			(4 << 2)
#endif

#define BME280_CTRL_MEAS_VAL		(BME280_PRESS_OVER |	\
					 BME280_TEMP_OVER |	\
					 BME280_MODE_NORMAL)
#define BME280_CONFIG_VAL		(BME280_STANDBY |	\
					 BME280_FILTER |	\
					 BME280_SPI_3W_DISABLE)

#if defined CONFIG_BME280_I2C_ADDR_76
#define BME280_I2C_ADDR			0x76
#elif defined CONFIG_BME280_I2C_ADDR_77
#define BME280_I2C_ADDR			0x77
#endif

struct bme280_data {
	struct device *i2c_master;
	uint16_t i2c_slave_addr;

	/* Compensation parameters. */
	uint16_t dig_t1;
	int16_t dig_t2;
	int16_t dig_t3;
	uint16_t dig_p1;
	int16_t dig_p2;
	int16_t dig_p3;
	int16_t dig_p4;
	int16_t dig_p5;
	int16_t dig_p6;
	int16_t dig_p7;
	int16_t dig_p8;
	int16_t dig_p9;
	uint8_t dig_h1;
	int16_t dig_h2;
	uint8_t dig_h3;
	int16_t dig_h4;
	int16_t dig_h5;
	int8_t dig_h6;

	/* Compensated values. */
	int32_t comp_temp;
	uint32_t comp_press;
	uint32_t comp_humidity;

	/* Carryover between temperature and pressure/humidity compensation. */
	int32_t t_fine;

	uint8_t chip_id;
};

#define SYS_LOG_DOMAIN "BME280"
#define SYS_LOG_LEVEL CONFIG_BME280_SYS_LOG_LEVEL
#include <misc/sys_log.h>
#endif /* __SENSOR_BME280_H__ */
