]> git.itanic.dy.fi Git - BME280_driver/blobdiff - bme280.h
Updated to v3.2.0
[BME280_driver] / bme280.h
index e2c6e86884ef9a736c60d0310e19abe3e2444831..3ba9ddd57a7790696517b099e52af33683adb44c 100644 (file)
--- a/bme280.h
+++ b/bme280.h
-/** \mainpage
-*
-****************************************************************************
-* Copyright (C) 2015 - 2016 Bosch Sensortec GmbH
-*
-* File : bme280.h
-*
-* Date : 2016/07/04
-*
-* Revision : 2.0.5(Pressure and Temperature compensation code revision is 1.1
-*               and Humidity compensation code revision is 1.0)
-*
-* Usage: Sensor Driver for BME280 sensor
-*
-****************************************************************************
-*
-* \section License
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*
-*   Redistributions of source code must retain the above copyright
-*   notice, this list of conditions and the following disclaimer.
-*
-*   Redistributions in binary form must reproduce the above copyright
-*   notice, this list of conditions and the following disclaimer in the
-*   documentation and/or other materials provided with the distribution.
-*
-*   Neither the name of the copyright holder nor the names of the
-*   contributors may be used to endorse or promote products derived from
-*   this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
-* OR CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
-* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-* ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
-*
-* The information provided is believed to be accurate and reliable.
-* The copyright holder assumes no responsibility
-* for the consequences of use
-* of such information nor for any infringement of patents or
-* other rights of third parties which may result from its use.
-* No license is granted by implication or otherwise under any patent or
-* patent rights of the copyright holder.
-**************************************************************************/
-/*! \file bme280.h
-    \brief BME280 Sensor Driver Support Header File */
-#ifndef __BME280_H__
-#define __BME280_H__
-
-
-/*!
-* @brief The following definition uses for define the data types
-*
-* @note While porting the API please consider the following
-* @note Please check the version of C standard
-* @note Are you using Linux platform
-*/
-
-/*!
-* @brief For the Linux platform support
-* Please use the types.h for your data types definitions
-*/
-#ifdef __KERNEL__
-
-#include <linux/types.h>
-#include <linux/math64.h>
-#define BME280_64BITSUPPORT_PRESENT
-/* singed integer type*/
-typedef        int8_t s8;/**< used for signed 8bit */
-typedef        int16_t s16;/**< used for signed 16bit */
-typedef        int32_t s32;/**< used for signed 32bit */
-typedef        int64_t s64;/**< used for signed 64bit */
-
-typedef        u_int8_t u8;/**< used for unsigned 8bit */
-typedef        u_int16_t u16;/**< used for unsigned 16bit */
-typedef        u_int32_t u32;/**< used for unsigned 32bit */
-typedef        u_int64_t u64;/**< used for unsigned 64bit */
-
-
-
-#else /* ! __KERNEL__ */
-/**********************************************************
-* These definition uses for define the C
-* standard version data types
-***********************************************************/
-# if defined(__STDC_VERSION__)
-
-/************************************************
- * compiler is C11 C standard
-************************************************/
-#if (__STDC_VERSION__ == 201112L)
-
-/************************************************/
-#include <stdint.h>
-/************************************************/
-
-/*unsigned integer types*/
-typedef        uint8_t u8;/**< used for unsigned 8bit */
-typedef        uint16_t u16;/**< used for unsigned 16bit */
-typedef        uint32_t u32;/**< used for unsigned 32bit */
-typedef        uint64_t u64;/**< used for unsigned 64bit */
-
-/*signed integer types*/
-typedef        int8_t s8;/**< used for signed 8bit */
-typedef        int16_t s16;/**< used for signed 16bit */
-typedef        int32_t s32;/**< used for signed 32bit */
-typedef        int64_t s64;/**< used for signed 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-/************************************************
- * compiler is C99 C standard
-************************************************/
-
-#elif (__STDC_VERSION__ == 199901L)
-
-/* stdint.h is a C99 supported c library.
-which is used to fixed the integer size*/
-/************************************************/
-#include <stdint.h>
-/************************************************/
-
-/*unsigned integer types*/
-typedef        uint8_t u8;/**< used for unsigned 8bit */
-typedef        uint16_t u16;/**< used for unsigned 16bit */
-typedef        uint32_t u32;/**< used for unsigned 32bit */
-typedef        uint64_t u64;/**< used for unsigned 64bit */
-
-/*signed integer types*/
-typedef int8_t s8;/**< used for signed 8bit */
-typedef        int16_t s16;/**< used for signed 16bit */
-typedef        int32_t s32;/**< used for signed 32bit */
-typedef        int64_t s64;/**< used for signed 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-/************************************************
- * compiler is C89 or other C standard
-************************************************/
-
-#else /*  !defined(__STDC_VERSION__) */
-/*!
-* @brief By default it is defined as 32 bit machine configuration
-*      define your data types based on your
-*      machine/compiler/controller configuration
-*/
-#define  MACHINE_32_BIT
-
-/*! @brief
- *     If your machine support 16 bit
- *     define the MACHINE_16_BIT
- */
-#ifdef MACHINE_16_BIT
-#include <limits.h>
-/*signed integer types*/
-typedef        signed char  s8;/**< used for signed 8bit */
-typedef        signed short int s16;/**< used for signed 16bit */
-typedef        signed long int s32;/**< used for signed 32bit */
-
-#if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL
-typedef long int s64;/**< used for signed 64bit */
-typedef unsigned long int u64;/**< used for unsigned 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-#elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL)
-typedef long long int s64;/**< used for signed 64bit */
-typedef unsigned long long int u64;/**< used for unsigned 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-#else
-#warning Either the correct data type for signed 64 bit integer \
-could not be found, or 64 bit integers are not supported in your environment.
-#warning The API will only offer 32 bit pressure calculation.This will \
-slightly impede accuracy(noise of ~1 pascal RMS will be added to output).
-#warning If 64 bit integers are supported on your platform, \
-please set s64 manually and "#define(BME280_64BITSUPPORT_PRESENT)" manually.
-#endif
-
-/*unsigned integer types*/
-typedef        unsigned char u8;/**< used for unsigned 8bit */
-typedef        unsigned short int u16;/**< used for unsigned 16bit */
-typedef        unsigned long int u32;/**< used for unsigned 32bit */
-
-/* If your machine support 32 bit
-define the MACHINE_32_BIT*/
-#elif defined MACHINE_32_BIT
-/*signed integer types*/
-typedef        signed char  s8;/**< used for signed 8bit */
-typedef        signed short int s16;/**< used for signed 16bit */
-typedef        signed int s32;/**< used for signed 32bit */
-typedef        signed long long int s64;/**< used for signed 64bit */
-
-/*unsigned integer types*/
-typedef        unsigned char u8;/**< used for unsigned 8bit */
-typedef        unsigned short int u16;/**< used for unsigned 16bit */
-typedef        unsigned int u32;/**< used for unsigned 32bit */
-typedef        unsigned long long int u64;/**< used for unsigned 64bit */
-/*! @brief
- *     If your machine support 64 bit
- *     define the MACHINE_64_BIT
+/**
+ * Copyright (C) 2016 - 2017 Bosch Sensortec GmbH
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of the copyright holder nor the names of the
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
+ *
+ * The information provided is believed to be accurate and reliable.
+ * The copyright holder assumes no responsibility
+ * for the consequences of use
+ * of such information nor for any infringement of patents or
+ * other rights of third parties which may result from its use.
+ * No license is granted by implication or otherwise under any patent or
+ * patent rights of the copyright holder.
+ *
+ * @file       bme280.h
+ * @date       21 Mar 2017
+ * @version    3.2.0
+ * @brief
+ *
  */
-#define BME280_64BITSUPPORT_PRESENT
-
-/* If your machine support 64 bit
-define the MACHINE_64_BIT*/
-#elif defined MACHINE_64_BIT
-/*signed integer types*/
-typedef        signed char  s8;/**< used for signed 8bit */
-typedef        signed short int s16;/**< used for signed 16bit */
-typedef        signed int s32;/**< used for signed 32bit */
-typedef        signed long int s64;/**< used for signed 64bit */
-
-/*unsigned integer types*/
-typedef        unsigned char u8;/**< used for unsigned 8bit */
-typedef        unsigned short int u16;/**< used for unsigned 16bit */
-typedef        unsigned int u32;/**< used for unsigned 32bit */
-typedef        unsigned long int u64;/**< used for unsigned 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-
-#else
-#warning The data types defined above which not supported \
-define the data types manually
-#endif
-#endif
-
-/*** This else will execute for the compilers
- *     which are not supported the C standards
- *     Like C89/C99/C11***/
-#else
+/*! @file bme280.h
+    @brief Sensor driver for BME280 sensor */
 /*!
-* @brief By default it is defined as 32 bit machine configuration
-*      define your data types based on your
-*      machine/compiler/controller configuration
-*/
-#define  MACHINE_32_BIT
-
-/* If your machine support 16 bit
-define the MACHINE_16_BIT*/
-#ifdef MACHINE_16_BIT
-#include <limits.h>
-/*signed integer types*/
-typedef        signed char  s8;/**< used for signed 8bit */
-typedef        signed short int s16;/**< used for signed 16bit */
-typedef        signed long int s32;/**< used for signed 32bit */
+ * @defgroup BME280 SENSOR API
+ * @{*/
+#ifndef BME280_H_
+#define BME280_H_
 
-#if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL
-typedef long int s64;/**< used for signed 64bit */
-typedef unsigned long int u64;/**< used for unsigned 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-#elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL)
-typedef long long int s64;/**< used for signed 64bit */
-typedef unsigned long long int u64;/**< used for unsigned 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-#else
-#warning Either the correct data type for signed 64 bit integer \
-could not be found, or 64 bit integers are not supported in your environment.
-#warning The API will only offer 32 bit pressure calculation.This will \
-slightly impede accuracy(noise of ~1 pascal RMS will be added to output).
-#warning If 64 bit integers are supported on your platform, \
-please set s64 manually and "#define(BME280_64BITSUPPORT_PRESENT)" manually.
+/*! CPP guard */
+#ifdef __cplusplus
+extern "C" {
 #endif
 
-/*unsigned integer types*/
-typedef        unsigned char u8;/**< used for unsigned 8bit */
-typedef        unsigned short int u16;/**< used for unsigned 16bit */
-typedef        unsigned long int u32;/**< used for unsigned 32bit */
-
-/*! @brief If your machine support 32 bit
-define the MACHINE_32_BIT*/
-#elif defined MACHINE_32_BIT
-/*signed integer types*/
-typedef        signed char  s8;/**< used for signed 8bit */
-typedef        signed short int s16;/**< used for signed 16bit */
-typedef        signed int s32;/**< used for signed 32bit */
-typedef        signed long long int s64;/**< used for signed 64bit */
-
-/*unsigned integer types*/
-typedef        unsigned char u8;/**< used for unsigned 8bit */
-typedef        unsigned short int u16;/**< used for unsigned 16bit */
-typedef        unsigned int u32;/**< used for unsigned 32bit */
-typedef        unsigned long long int u64;/**< used for unsigned 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-
-/* If your machine support 64 bit
-define the MACHINE_64_BIT*/
-#elif defined MACHINE_64_BIT
-/*signed integer types*/
-typedef        signed char  s8;/**< used for signed 8bit */
-typedef        signed short int s16;/**< used for signed 16bit */
-typedef        signed int s32;/**< used for signed 32bit */
-typedef        signed long int s64;/**< used for signed 64bit */
-
-/*unsigned integer types*/
-typedef        unsigned char u8;/**< used for unsigned 8bit */
-typedef        unsigned short int u16;/**< used for unsigned 16bit */
-typedef        unsigned int u32;/**< used for unsigned 32bit */
-typedef        unsigned long int u64;/**< used for unsigned 64bit */
-#define BME280_64BITSUPPORT_PRESENT
-
-#else
-#warning The data types defined above which not supported \
-define the data types manually
-#endif
-#endif
-#endif
-/********************************************/
-/**\name       ENABLE FLOATING OUTPUT      */
-/**************************************/
-/*!
-* @brief If the user wants to support floating point calculations, please set
-       the following define. If floating point
-       calculation is not wanted or allowed
-       (e.g. in Linux kernel), please do not set the define. */
-#define BME280_ENABLE_FLOAT
-/*!
-* @brief If the user wants to support 64 bit integer calculation
-       (needed for optimal pressure accuracy) please set
-       the following define. If int64 calculation is not wanted
-       (e.g. because it would include
-       large libraries), please do not set the define. */
-#define BME280_ENABLE_INT64
-/***************************************************************/
-/**\name       BUS READ AND WRITE FUNCTION POINTERS        */
-/***************************************************************/
-/*!
-       @brief Define the calling convention of YOUR bus communication routine.
-       @note This includes types of parameters. This example shows the
-       configuration for an SPI bus link.
-
-    If your communication function looks like this:
-
-    write_my_bus_xy(u8 device_addr, u8 register_addr,
-    u8 * data, u8 length);
-
-    The BME280_WR_FUNC_PTR would equal:
-
-       BME280_WR_FUNC_PTR s8 (* bus_write)(u8,
-    u8, u8 *, u8)
-
-    Parameters can be mixed as needed refer to the
-    refer BME280_BUS_WRITE_FUNC  macro.
-
-
-*/
-/** defines the return parameter type of the BME280_WR_FUNCTION */
-#define BME280_BUS_WR_RETURN_TYPE s8
-
-/* links the order of parameters defined in
-BME280_BUS_WR_PARAM_TYPE to function calls used inside the API*/
-#define BME280_BUS_WR_PARAM_TYPES u8, u8,\
-               u8 *, u8
-
-/* links the order of parameters defined in
-BME280_BUS_WR_PARAM_TYPE to function calls used inside the API*/
-#define BME280_BUS_WR_PARAM_ORDER(device_addr, register_addr,\
-               register_data, wr_len)
-
-/* never change this line */
-#define BME280_BUS_WRITE_FUNC(device_addr, register_addr,\
-register_data, wr_len) bus_write(device_addr, register_addr,\
-               register_data, wr_len)
-/*!
-       @brief link macro between API function calls and bus read function
-       @note The bus write function can change since this is a
-       system dependant issue.
-
-    If the bus_read parameter calling order is like: reg_addr,
-    reg_data, wr_len it would be as it is here.
-
-    If the parameters are differently ordered or your communication
-    function like I2C need to know the device address,
-    you can change this macro accordingly.
-
-
-    BME280_BUS_READ_FUNC(dev_addr, reg_addr, reg_data, wr_len)\
-    bus_read(dev_addr, reg_addr, reg_data, wr_len)
-
-    This macro lets all API functions call YOUR communication routine in a
-    way that equals your definition in the
-    refer BME280_WR_FUNC_PTR definition.
-
-    @note: this macro also includes the "MSB='1'
-    for reading BME280 addresses.
-
-*/
-/*defines the return parameter type of the BME280_RD_FUNCTION
-*/
-#define BME280_BUS_RD_RETURN_TYPE s8
-
-/**\brief defines the calling parameter types of the BME280_RD_FUNCTION
-*/
-#define BME280_BUS_RD_PARAM_TYPES (u8, u8,\
-               u8 *, u8)
-
-/* links the order of parameters defined in \
-BME280_BUS_RD_PARAM_TYPE to function calls used inside the API
-*/
-#define BME280_BUS_RD_PARAM_ORDER (device_addr, register_addr,\
-               register_data)
-
-/* never change this line */
-#define BME280_BUS_READ_FUNC(device_addr, register_addr,\
-               register_data, rd_len)bus_read(device_addr, register_addr,\
-               register_data, rd_len)
-/****************************************/
-/**\name       DELAY       */
-/****************************************/
-/* defines the return parameter type of the BME280_DELAY_FUNCTION
-*/
-#define BME280_DELAY_RETURN_TYPE void
-
-/* defines the calling parameter types of the BME280_DELAY_FUNCTION
-*/
-#define BME280_DELAY_PARAM_TYPES u16
-/***************************************************************/
-/**\name       GET AND SET BITSLICE FUNCTIONS       */
-/***************************************************************/
-/* never change this line */
-#define BME280_DELAY_FUNC(delay_in_msec)\
-               delay_func(delay_in_msec)
-
-#define BME280_GET_BITSLICE(regvar, bitname)\
-               ((regvar & bitname##__MSK) >> bitname##__POS)
-
-#define BME280_SET_BITSLICE(regvar, bitname, val)\
-((regvar & ~bitname##__MSK) | ((val<<bitname##__POS)&bitname##__MSK))
-
-/***************************************************************/
-/**\name       COMMON USED CONSTANTS      */
-/***************************************************************/
-/* Constants */
-#define BME280_NULL                          (0)
-#define BME280_RETURN_FUNCTION_TYPE          s8
-/* shift definitions*/
-#define BME280_SHIFT_BIT_POSITION_BY_01_BIT                    (1)
-#define BME280_SHIFT_BIT_POSITION_BY_02_BITS                   (2)
-#define BME280_SHIFT_BIT_POSITION_BY_03_BITS                   (3)
-#define BME280_SHIFT_BIT_POSITION_BY_04_BITS                   (4)
-#define BME280_SHIFT_BIT_POSITION_BY_07_BITS                   (7)
-#define BME280_SHIFT_BIT_POSITION_BY_08_BITS                   (8)
-#define BME280_SHIFT_BIT_POSITION_BY_10_BITS                   (10)
-#define BME280_SHIFT_BIT_POSITION_BY_11_BITS                   (11)
-#define BME280_SHIFT_BIT_POSITION_BY_12_BITS                   (12)
-#define BME280_SHIFT_BIT_POSITION_BY_13_BITS                   (13)
-#define BME280_SHIFT_BIT_POSITION_BY_14_BITS                   (14)
-#define BME280_SHIFT_BIT_POSITION_BY_15_BITS                   (15)
-#define BME280_SHIFT_BIT_POSITION_BY_16_BITS                   (16)
-#define BME280_SHIFT_BIT_POSITION_BY_17_BITS                   (17)
-#define BME280_SHIFT_BIT_POSITION_BY_18_BITS                   (18)
-#define BME280_SHIFT_BIT_POSITION_BY_19_BITS                   (19)
-#define BME280_SHIFT_BIT_POSITION_BY_20_BITS                   (20)
-#define BME280_SHIFT_BIT_POSITION_BY_25_BITS                   (25)
-#define BME280_SHIFT_BIT_POSITION_BY_31_BITS                   (31)
-#define BME280_SHIFT_BIT_POSITION_BY_33_BITS                   (33)
-#define BME280_SHIFT_BIT_POSITION_BY_35_BITS                   (35)
-#define BME280_SHIFT_BIT_POSITION_BY_47_BITS                   (47)
-
-/* numeric definitions */
-#define        BME280_PRESSURE_TEMPERATURE_CALIB_DATA_LENGTH       (26)
-#define        BME280_HUMIDITY_CALIB_DATA_LENGTH           (7)
-#define        BME280_GEN_READ_WRITE_DATA_LENGTH               (1)
-#define        BME280_HUMIDITY_DATA_LENGTH                             (2)
-#define        BME280_TEMPERATURE_DATA_LENGTH                  (3)
-#define        BME280_PRESSURE_DATA_LENGTH                             (3)
-#define        BME280_ALL_DATA_FRAME_LENGTH                    (8)
-#define        BME280_INIT_VALUE                               (0)
-#define        BME280_CHIP_ID_READ_COUNT                       (5)
-#define        BME280_INVALID_DATA                             (0)
-
-/****************************************************/
-/**\name       ERROR CODE DEFINITIONS  */
-/***************************************************/
-#define        SUCCESS                                 ((u8)0)
-#define E_BME280_NULL_PTR       ((s8)-127)
-#define E_BME280_COMM_RES       ((s8)-1)
-#define E_BME280_OUT_OF_RANGE   ((s8)-2)
-#define ERROR                                  ((s8)-1)
-#define BME280_CHIP_ID_READ_FAIL       ((s8)-1)
-#define BME280_CHIP_ID_READ_SUCCESS    ((u8)0)
-
-/****************************************************/
-/**\name       CHIP ID DEFINITIONS  */
-/***************************************************/
-#define BME280_CHIP_ID                  (0x60)
-
-/****************************************************/
-/**\name       I2C ADDRESS DEFINITIONS  */
-/***************************************************/
-#define BME280_I2C_ADDRESS1                  (0x76)
-#define BME280_I2C_ADDRESS2                  (0x77)
-/****************************************************/
-/**\name       POWER MODE DEFINITIONS  */
-/***************************************************/
-/* Sensor Specific constants */
-#define BME280_SLEEP_MODE                    (0x00)
-#define BME280_FORCED_MODE                   (0x01)
-#define BME280_NORMAL_MODE                   (0x03)
-#define BME280_SOFT_RESET_CODE               (0xB6)
-/****************************************************/
-/**\name       STANDBY DEFINITIONS  */
-/***************************************************/
-#define BME280_STANDBY_TIME_1_MS              (0x00)
-#define BME280_STANDBY_TIME_63_MS             (0x01)
-#define BME280_STANDBY_TIME_125_MS                       (0x02)
-#define BME280_STANDBY_TIME_250_MS            (0x03)
-#define BME280_STANDBY_TIME_500_MS            (0x04)
-#define BME280_STANDBY_TIME_1000_MS           (0x05)
-#define BME280_STANDBY_TIME_10_MS             (0x06)
-#define BME280_STANDBY_TIME_20_MS             (0x07)
-/****************************************************/
-/**\name       OVER SAMPLING DEFINITIONS  */
-/***************************************************/
-#define BME280_OVERSAMP_SKIPPED          (0x00)
-#define BME280_OVERSAMP_1X               (0x01)
-#define BME280_OVERSAMP_2X               (0x02)
-#define BME280_OVERSAMP_4X               (0x03)
-#define BME280_OVERSAMP_8X               (0x04)
-#define BME280_OVERSAMP_16X              (0x05)
-/****************************************************/
-/**\name       WORK MODE DEFINITIONS  */
-/***************************************************/
-/*#define BME280_ULTRALOWPOWER_MODE          (0x00)
-#define BME280_LOWPOWER_MODE                 (0x01)
-#define BME280_STANDARDRESOLUTION_MODE       (0x02)
-#define BME280_HIGHRESOLUTION_MODE           (0x03)
-#define BME280_ULTRAHIGHRESOLUTION_MODE      (0x04)
-
-#define BME280_ULTRALOWPOWER_OSRS_P          BME280_OVERSAMP_1X
-#define BME280_ULTRALOWPOWER_OSRS_T          BME280_OVERSAMP_1X
-
-#define BME280_LOWPOWER_OSRS_P               BME280_OVERSAMP_2X
-#define BME280_LOWPOWER_OSRS_T               BME280_OVERSAMP_1X
-
-#define BME280_STANDARDRESOLUTION_OSRS_P     BME280_OVERSAMP_4X
-#define BME280_STANDARDRESOLUTION_OSRS_T     BME280_OVERSAMP_1X
-
-#define BME280_HIGHRESOLUTION_OSRS_P         BME280_OVERSAMP_8X
-#define BME280_HIGHRESOLUTION_OSRS_T         BME280_OVERSAMP_1X
-
-#define BME280_ULTRAHIGHRESOLUTION_OSRS_P    BME280_OVERSAMP_16X
-#define BME280_ULTRAHIGHRESOLUTION_OSRS_T    BME280_OVERSAMP_2X */
-
-#define BME280_STANDARD_OVERSAMP_HUMIDITY      BME280_OVERSAMP_1X
-/****************************************************/
-/**\name       FILTER DEFINITIONS  */
-/***************************************************/
-#define BME280_FILTER_COEFF_OFF               (0x00)
-#define BME280_FILTER_COEFF_2                 (0x01)
-#define BME280_FILTER_COEFF_4                 (0x02)
-#define BME280_FILTER_COEFF_8                 (0x03)
-#define BME280_FILTER_COEFF_16                (0x04)
-/****************************************************/
-/**\name       DELAY DEFINITIONS  */
-/***************************************************/
-#define T_INIT_MAX                             (20)
-               /* 20/16 = 1.25 ms */
-#define T_MEASURE_PER_OSRS_MAX                 (37)
-               /* 37/16 = 2.3125 ms*/
-
-#define T_SETUP_PRESSURE_MAX                   (10)
-               /* 10/16 = 0.625 ms */
-
-#define T_SETUP_HUMIDITY_MAX                   (10)
-               /* 10/16 = 0.625 ms */
-/****************************************************/
-/**\name       DEFINITIONS FOR ARRAY SIZE OF DATA   */
-/***************************************************/
-#define        BME280_HUMIDITY_DATA_SIZE               (2)
-#define        BME280_TEMPERATURE_DATA_SIZE    (3)
-#define        BME280_PRESSURE_DATA_SIZE               (3)
-#define        BME280_DATA_FRAME_SIZE                  (8)
-/**< data frames includes temperature,
-pressure and humidity*/
-#define        BME280_CALIB_DATA_SIZE                  (26)
-
-#define        BME280_TEMPERATURE_MSB_DATA             (0)
-#define        BME280_TEMPERATURE_LSB_DATA             (1)
-#define        BME280_TEMPERATURE_XLSB_DATA    (2)
-#define        BME280_PRESSURE_MSB_DATA                (0)
-#define        BME280_PRESSURE_LSB_DATA                (1)
-#define        BME280_PRESSURE_XLSB_DATA           (2)
-#define        BME280_HUMIDITY_MSB_DATA                (0)
-#define        BME280_HUMIDITY_LSB_DATA                (1)
-
-#define        BME280_DATA_FRAME_PRESSURE_MSB_BYTE         (0)
-#define        BME280_DATA_FRAME_PRESSURE_LSB_BYTE             (1)
-#define        BME280_DATA_FRAME_PRESSURE_XLSB_BYTE    (2)
-#define        BME280_DATA_FRAME_TEMPERATURE_MSB_BYTE  (3)
-#define        BME280_DATA_FRAME_TEMPERATURE_LSB_BYTE  (4)
-#define        BME280_DATA_FRAME_TEMPERATURE_XLSB_BYTE (5)
-#define        BME280_DATA_FRAME_HUMIDITY_MSB_BYTE             (6)
-#define        BME280_DATA_FRAME_HUMIDITY_LSB_BYTE             (7)
-/****************************************************/
-/**\name       ARRAY PARAMETER FOR CALIBRATION     */
-/***************************************************/
-#define        BME280_TEMPERATURE_CALIB_DIG_T1_LSB             (0)
-#define        BME280_TEMPERATURE_CALIB_DIG_T1_MSB             (1)
-#define        BME280_TEMPERATURE_CALIB_DIG_T2_LSB             (2)
-#define        BME280_TEMPERATURE_CALIB_DIG_T2_MSB             (3)
-#define        BME280_TEMPERATURE_CALIB_DIG_T3_LSB             (4)
-#define        BME280_TEMPERATURE_CALIB_DIG_T3_MSB             (5)
-#define        BME280_PRESSURE_CALIB_DIG_P1_LSB       (6)
-#define        BME280_PRESSURE_CALIB_DIG_P1_MSB       (7)
-#define        BME280_PRESSURE_CALIB_DIG_P2_LSB       (8)
-#define        BME280_PRESSURE_CALIB_DIG_P2_MSB       (9)
-#define        BME280_PRESSURE_CALIB_DIG_P3_LSB       (10)
-#define        BME280_PRESSURE_CALIB_DIG_P3_MSB       (11)
-#define        BME280_PRESSURE_CALIB_DIG_P4_LSB       (12)
-#define        BME280_PRESSURE_CALIB_DIG_P4_MSB       (13)
-#define        BME280_PRESSURE_CALIB_DIG_P5_LSB       (14)
-#define        BME280_PRESSURE_CALIB_DIG_P5_MSB       (15)
-#define        BME280_PRESSURE_CALIB_DIG_P6_LSB       (16)
-#define        BME280_PRESSURE_CALIB_DIG_P6_MSB       (17)
-#define        BME280_PRESSURE_CALIB_DIG_P7_LSB       (18)
-#define        BME280_PRESSURE_CALIB_DIG_P7_MSB       (19)
-#define        BME280_PRESSURE_CALIB_DIG_P8_LSB       (20)
-#define        BME280_PRESSURE_CALIB_DIG_P8_MSB       (21)
-#define        BME280_PRESSURE_CALIB_DIG_P9_LSB       (22)
-#define        BME280_PRESSURE_CALIB_DIG_P9_MSB       (23)
-#define        BME280_HUMIDITY_CALIB_DIG_H1           (25)
-#define        BME280_HUMIDITY_CALIB_DIG_H2_LSB                (0)
-#define        BME280_HUMIDITY_CALIB_DIG_H2_MSB                (1)
-#define        BME280_HUMIDITY_CALIB_DIG_H3                    (2)
-#define        BME280_HUMIDITY_CALIB_DIG_H4_MSB                (3)
-#define        BME280_HUMIDITY_CALIB_DIG_H4_LSB                (4)
-#define        BME280_HUMIDITY_CALIB_DIG_H5_MSB                (5)
-#define        BME280_HUMIDITY_CALIB_DIG_H6                    (6)
-#define        BME280_MASK_DIG_H4              (0x0F)
-/****************************************************/
-/**\name       CALIBRATION REGISTER ADDRESS DEFINITIONS  */
-/***************************************************/
-/*calibration parameters */
-#define BME280_TEMPERATURE_CALIB_DIG_T1_LSB_REG             (0x88)
-#define BME280_TEMPERATURE_CALIB_DIG_T1_MSB_REG             (0x89)
-#define BME280_TEMPERATURE_CALIB_DIG_T2_LSB_REG             (0x8A)
-#define BME280_TEMPERATURE_CALIB_DIG_T2_MSB_REG             (0x8B)
-#define BME280_TEMPERATURE_CALIB_DIG_T3_LSB_REG             (0x8C)
-#define BME280_TEMPERATURE_CALIB_DIG_T3_MSB_REG             (0x8D)
-#define BME280_PRESSURE_CALIB_DIG_P1_LSB_REG                (0x8E)
-#define BME280_PRESSURE_CALIB_DIG_P1_MSB_REG                (0x8F)
-#define BME280_PRESSURE_CALIB_DIG_P2_LSB_REG                (0x90)
-#define BME280_PRESSURE_CALIB_DIG_P2_MSB_REG                (0x91)
-#define BME280_PRESSURE_CALIB_DIG_P3_LSB_REG                (0x92)
-#define BME280_PRESSURE_CALIB_DIG_P3_MSB_REG                (0x93)
-#define BME280_PRESSURE_CALIB_DIG_P4_LSB_REG                (0x94)
-#define BME280_PRESSURE_CALIB_DIG_P4_MSB_REG                (0x95)
-#define BME280_PRESSURE_CALIB_DIG_P5_LSB_REG                (0x96)
-#define BME280_PRESSURE_CALIB_DIG_P5_MSB_REG                (0x97)
-#define BME280_PRESSURE_CALIB_DIG_P6_LSB_REG                (0x98)
-#define BME280_PRESSURE_CALIB_DIG_P6_MSB_REG                (0x99)
-#define BME280_PRESSURE_CALIB_DIG_P7_LSB_REG                (0x9A)
-#define BME280_PRESSURE_CALIB_DIG_P7_MSB_REG                (0x9B)
-#define BME280_PRESSURE_CALIB_DIG_P8_LSB_REG                (0x9C)
-#define BME280_PRESSURE_CALIB_DIG_P8_MSB_REG                (0x9D)
-#define BME280_PRESSURE_CALIB_DIG_P9_LSB_REG                (0x9E)
-#define BME280_PRESSURE_CALIB_DIG_P9_MSB_REG                (0x9F)
-
-#define BME280_HUMIDITY_CALIB_DIG_H1_REG                    (0xA1)
-
-#define BME280_HUMIDITY_CALIB_DIG_H2_LSB_REG                (0xE1)
-#define BME280_HUMIDITY_CALIB_DIG_H2_MSB_REG                (0xE2)
-#define BME280_HUMIDITY_CALIB_DIG_H3_REG                    (0xE3)
-#define BME280_HUMIDITY_CALIB_DIG_H4_MSB_REG                (0xE4)
-#define BME280_HUMIDITY_CALIB_DIG_H4_LSB_REG                (0xE5)
-#define BME280_HUMIDITY_CALIB_DIG_H5_MSB_REG                (0xE6)
-#define BME280_HUMIDITY_CALIB_DIG_H6_REG                    (0xE7)
-/****************************************************/
-/**\name       REGISTER ADDRESS DEFINITIONS  */
-/***************************************************/
-#define BME280_CHIP_ID_REG                   (0xD0)  /*Chip ID Register */
-#define BME280_RST_REG                       (0xE0)  /*Softreset Register */
-#define BME280_STAT_REG                      (0xF3)  /*Status Register */
-#define BME280_CTRL_MEAS_REG                 (0xF4)  /*Ctrl Measure Register */
-#define BME280_CTRL_HUMIDITY_REG             (0xF2)  /*Ctrl Humidity Register*/
-#define BME280_CONFIG_REG                    (0xF5)  /*Configuration Register */
-#define BME280_PRESSURE_MSB_REG              (0xF7)  /*Pressure MSB Register */
-#define BME280_PRESSURE_LSB_REG              (0xF8)  /*Pressure LSB Register */
-#define BME280_PRESSURE_XLSB_REG             (0xF9)  /*Pressure XLSB Register */
-#define BME280_TEMPERATURE_MSB_REG           (0xFA)  /*Temperature MSB Reg */
-#define BME280_TEMPERATURE_LSB_REG           (0xFB)  /*Temperature LSB Reg */
-#define BME280_TEMPERATURE_XLSB_REG          (0xFC)  /*Temperature XLSB Reg */
-#define BME280_HUMIDITY_MSB_REG              (0xFD)  /*Humidity MSB Reg */
-#define BME280_HUMIDITY_LSB_REG              (0xFE)  /*Humidity LSB Reg */
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS  */
-/***************************************************/
-/* Status Register */
-#define BME280_STAT_REG_MEASURING__POS           (3)
-#define BME280_STAT_REG_MEASURING__MSK           (0x08)
-#define BME280_STAT_REG_MEASURING__LEN           (1)
-#define BME280_STAT_REG_MEASURING__REG           (BME280_STAT_REG)
-
-#define BME280_STAT_REG_IM_UPDATE__POS            (0)
-#define BME280_STAT_REG_IM_UPDATE__MSK            (0x01)
-#define BME280_STAT_REG_IM_UPDATE__LEN            (1)
-#define BME280_STAT_REG_IM_UPDATE__REG            (BME280_STAT_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR TEMPERATURE OVERSAMPLING  */
-/***************************************************/
-/* Control Measurement Register */
-#define BME280_CTRL_MEAS_REG_OVERSAMP_TEMPERATURE__POS             (5)
-#define BME280_CTRL_MEAS_REG_OVERSAMP_TEMPERATURE__MSK             (0xE0)
-#define BME280_CTRL_MEAS_REG_OVERSAMP_TEMPERATURE__LEN             (3)
-#define BME280_CTRL_MEAS_REG_OVERSAMP_TEMPERATURE__REG             \
-(BME280_CTRL_MEAS_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR PRESSURE OVERSAMPLING  */
-/***************************************************/
-#define BME280_CTRL_MEAS_REG_OVERSAMP_PRESSURE__POS             (2)
-#define BME280_CTRL_MEAS_REG_OVERSAMP_PRESSURE__MSK             (0x1C)
-#define BME280_CTRL_MEAS_REG_OVERSAMP_PRESSURE__LEN             (3)
-#define BME280_CTRL_MEAS_REG_OVERSAMP_PRESSURE__REG             \
-(BME280_CTRL_MEAS_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR POWER MODE  */
-/***************************************************/
-#define BME280_CTRL_MEAS_REG_POWER_MODE__POS              (0)
-#define BME280_CTRL_MEAS_REG_POWER_MODE__MSK              (0x03)
-#define BME280_CTRL_MEAS_REG_POWER_MODE__LEN              (2)
-#define BME280_CTRL_MEAS_REG_POWER_MODE__REG              \
-(BME280_CTRL_MEAS_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR HUMIDITY OVERSAMPLING  */
-/***************************************************/
-#define BME280_CTRL_HUMIDITY_REG_OVERSAMP_HUMIDITY__POS             (0)
-#define BME280_CTRL_HUMIDITY_REG_OVERSAMP_HUMIDITY__MSK             (0x07)
-#define BME280_CTRL_HUMIDITY_REG_OVERSAMP_HUMIDITY__LEN             (3)
-#define BME280_CTRL_HUMIDITY_REG_OVERSAMP_HUMIDITY__REG            \
-(BME280_CTRL_HUMIDITY_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR STANDBY TIME  */
-/***************************************************/
-/* Configuration Register */
-#define BME280_CONFIG_REG_TSB__POS                 (5)
-#define BME280_CONFIG_REG_TSB__MSK                 (0xE0)
-#define BME280_CONFIG_REG_TSB__LEN                 (3)
-#define BME280_CONFIG_REG_TSB__REG                 (BME280_CONFIG_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR FILTER */
-/***************************************************/
-#define BME280_CONFIG_REG_FILTER__POS              (2)
-#define BME280_CONFIG_REG_FILTER__MSK              (0x1C)
-#define BME280_CONFIG_REG_FILTER__LEN              (3)
-#define BME280_CONFIG_REG_FILTER__REG              (BME280_CONFIG_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR SPI ENABLE  */
-/***************************************************/
-#define BME280_CONFIG_REG_SPI3_ENABLE__POS             (0)
-#define BME280_CONFIG_REG_SPI3_ENABLE__MSK             (0x01)
-#define BME280_CONFIG_REG_SPI3_ENABLE__LEN             (1)
-#define BME280_CONFIG_REG_SPI3_ENABLE__REG            (BME280_CONFIG_REG)
-/****************************************************/
-/**\name       BIT MASK, LENGTH AND POSITION DEFINITIONS
-FOR PRESSURE AND TEMPERATURE DATA  */
-/***************************************************/
-/* Data Register */
-#define BME280_PRESSURE_XLSB_REG_DATA__POS         (4)
-#define BME280_PRESSURE_XLSB_REG_DATA__MSK         (0xF0)
-#define BME280_PRESSURE_XLSB_REG_DATA__LEN         (4)
-#define BME280_PRESSURE_XLSB_REG_DATA__REG         (BME280_PRESSURE_XLSB_REG)
-
-#define BME280_TEMPERATURE_XLSB_REG_DATA__POS      (4)
-#define BME280_TEMPERATURE_XLSB_REG_DATA__MSK      (0xF0)
-#define BME280_TEMPERATURE_XLSB_REG_DATA__LEN      (4)
-#define BME280_TEMPERATURE_XLSB_REG_DATA__REG      (BME280_TEMPERATURE_XLSB_REG)
-/****************************************************/
-/**\name       BUS READ AND WRITE FUNCTION POINTERS */
-/***************************************************/
-#define BME280_WR_FUNC_PTR\
-               s8 (*bus_write)(u8, u8,\
-               u8 *, u8)
-
-#define BME280_RD_FUNC_PTR\
-               s8 (*bus_read)(u8, u8,\
-               u8 *, u8)
-
-#define BME280_MDELAY_DATA_TYPE u32
-
-#define        BME280_3MS_DELAY        (3)
-#define BME280_REGISTER_READ_DELAY (1)
-/**************************************************************/
-/**\name       STRUCTURE DEFINITIONS                         */
-/**************************************************************/
-/*!
- * @brief This structure holds all device specific calibration parameters
- */
-struct bme280_calibration_param_t {
-       u16 dig_T1;/**<calibration T1 data*/
-       s16 dig_T2;/**<calibration T2 data*/
-       s16 dig_T3;/**<calibration T3 data*/
-       u16 dig_P1;/**<calibration P1 data*/
-       s16 dig_P2;/**<calibration P2 data*/
-       s16 dig_P3;/**<calibration P3 data*/
-       s16 dig_P4;/**<calibration P4 data*/
-       s16 dig_P5;/**<calibration P5 data*/
-       s16 dig_P6;/**<calibration P6 data*/
-       s16 dig_P7;/**<calibration P7 data*/
-       s16 dig_P8;/**<calibration P8 data*/
-       s16 dig_P9;/**<calibration P9 data*/
-
-       u8  dig_H1;/**<calibration H1 data*/
-       s16 dig_H2;/**<calibration H2 data*/
-       u8  dig_H3;/**<calibration H3 data*/
-       s16 dig_H4;/**<calibration H4 data*/
-       s16 dig_H5;/**<calibration H5 data*/
-       s8  dig_H6;/**<calibration H6 data*/
-
-       s32 t_fine;/**<calibration T_FINE data*/
-};
-/*!
- * @brief This structure holds BME280 initialization parameters
- */
-struct bme280_t {
-       struct bme280_calibration_param_t cal_param;
-       /**< calibration parameters*/
-
-       u8 chip_id;/**< chip id of the sensor*/
-       u8 dev_addr;/**< device address of the sensor*/
+/* Header includes */
+#include "bme280_defs.h"
 
-       u8 oversamp_temperature;/**< temperature over sampling*/
-       u8 oversamp_pressure;/**< pressure over sampling*/
-       u8 oversamp_humidity;/**< humidity over sampling*/
-       u8 ctrl_hum_reg;/**< status of control humidity register*/
-       u8 ctrl_meas_reg;/**< status of control measurement register*/
-       u8 config_reg;/**< status of configuration register*/
-
-       BME280_WR_FUNC_PTR;/**< bus write function pointer*/
-       BME280_RD_FUNC_PTR;/**< bus read function pointer*/
-       void (*delay_msec)(BME280_MDELAY_DATA_TYPE);/**< delay function pointer*/
-};
-/**************************************************************/
-/**\name       FUNCTION DECLARATIONS                         */
-/**************************************************************/
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION                       */
-/**************************************************************/
-/*!
- *     @brief This function is used for initialize
- *     the bus read and bus write functions
- *  and assign the chip id and I2C address of the BME280 sensor
- *     chip id is read in the register 0xD0 bit from 0 to 7
- *
- *      @param bme280 structure pointer.
- *
- *     @note While changing the parameter of the bme280_t
- *     @note consider the following point:
- *     Changing the reference value of the parameter
- *     will changes the local copy or local reference
- *     make sure your changes will not
- *     affect the reference value of the parameter
- *     (Better case don't change the reference value of the parameter)
- *
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_init(struct bme280_t *bme280);
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION UNCOMPENSATED TEMPERATURE */
-/**************************************************************/
-/*!
- *     @brief This API is used to read uncompensated temperature
- *     in the registers 0xFA, 0xFB and 0xFC
- *     @note 0xFA -> MSB -> bit from 0 to 7
- *     @note 0xFB -> LSB -> bit from 0 to 7
- *     @note 0xFC -> LSB -> bit from 4 to 7
- *
- * @param v_uncomp_temperature_s32 : The value of uncompensated temperature
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_read_uncomp_temperature(
-s32 *v_uncomp_temperature_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION TRUE TEMPERATURE */
-/**************************************************************/
-/*!
- * @brief Reads actual temperature from uncompensated temperature
- * @note Returns the value in 0.01 degree Centigrade
- * Output value of "5123" equals 51.23 DegC.
- *
- *
- *
- *  @param  v_uncomp_temperature_s32 : value of uncompensated temperature
- *
- *
- *  @return Returns the actual temperature
- *
-*/
-s32 bme280_compensate_temperature_int32(s32 v_uncomp_temperature_s32);
-/*!
- * @brief Reads actual temperature from uncompensated temperature
- * @note Returns the value with 500LSB/DegC centred around 24 DegC
- * output value of "5123" equals(5123/500)+24 = 34.246DegC
- *
- *
- *  @param v_uncomp_temperature_s32: value of uncompensated temperature
- *
- *
- *
- *  @return Return the actual temperature as s16 output
- *
-*/
-s16 bme280_compensate_temperature_int32_sixteen_bit_output(
-s32 v_uncomp_temperature_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION UNCOMPENSATED PRESSURE */
-/**************************************************************/
-/*!
- *     @brief This API is used to read uncompensated pressure.
- *     in the registers 0xF7, 0xF8 and 0xF9
- *     @note 0xF7 -> MSB -> bit from 0 to 7
- *     @note 0xF8 -> LSB -> bit from 0 to 7
- *     @note 0xF9 -> LSB -> bit from 4 to 7
- *
- *
- *
- *     @param v_uncomp_pressure_s32 : The value of uncompensated pressure
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_read_uncomp_pressure(
-s32 *v_uncomp_pressure_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION TRUE PRESSURE */
-/**************************************************************/
-/*!
- * @brief Reads actual pressure from uncompensated pressure
- * @note Returns the value in Pascal(Pa)
- * Output value of "96386" equals 96386 Pa =
- * 963.86 hPa = 963.86 millibar
- *
- *
- *
- *  @param v_uncomp_pressure_s32 : value of uncompensated pressure
- *
- *
- *
- *  @return Return the actual pressure output as u32
- *
-*/
-u32 bme280_compensate_pressure_int32(s32 v_uncomp_pressure_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION UNCOMPENSATED HUMIDITY */
-/**************************************************************/
-/*!
- *     @brief This API is used to read uncompensated humidity.
- *     in the registers 0xF7, 0xF8 and 0xF9
- *     @note 0xFD -> MSB -> bit from 0 to 7
- *     @note 0xFE -> LSB -> bit from 0 to 7
- *
- *
- *
- *     @param v_uncomp_humidity_s32 : The value of uncompensated humidity
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_read_uncomp_humidity(
-s32 *v_uncomp_humidity_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION RELATIVE HUMIDITY */
-/**************************************************************/
-/*!
- * @brief Reads actual humidity from uncompensated humidity
- * @note Returns the value in %rH as unsigned 32bit integer
- * in Q22.10 format(22 integer 10 fractional bits).
- * @note An output value of 42313
- * represents 42313 / 1024 = 41.321 %rH
- *
- *
- *
- *  @param  v_uncomp_humidity_s32: value of uncompensated humidity
- *
- *  @return Return the actual relative humidity output as u32
- *
-*/
-u32 bme280_compensate_humidity_int32(s32 v_uncomp_humidity_s32);
-/*!
- * @brief Reads actual humidity from uncompensated humidity
- * @note Returns the value in %rH as unsigned 16bit integer
- * @note An output value of 42313
- * represents 42313/512 = 82.643 %rH
- *
- *
- *
- *  @param v_uncomp_humidity_s32: value of uncompensated humidity
- *
- *
- *  @return Return the actual relative humidity output as u16
- *
-*/
-u16 bme280_compensate_humidity_int32_sixteen_bit_output(
-s32 v_uncomp_humidity_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR  INTIALIZATION UNCOMPENSATED PRESSURE,
- TEMPERATURE AND HUMIDITY */
-/**************************************************************/
-/*!
- * @brief This API used to read uncompensated
- * pressure,temperature and humidity
- *
- *
- *
- *
- *  @param  v_uncomp_pressure_s32: The value of uncompensated pressure.
- *  @param  v_uncomp_temperature_s32: The value of uncompensated temperature
- *  @param  v_uncomp_humidity_s32: The value of uncompensated humidity.
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_read_uncomp_pressure_temperature_humidity(
-s32 *v_uncomp_pressure_s32,
-s32 *v_uncomp_temperature_s32, s32 *v_uncomp_humidity_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR TRUE UNCOMPENSATED PRESSURE,
- TEMPERATURE AND HUMIDITY */
-/**************************************************************/
-/*!
- * @brief This API used to read true pressure, temperature and humidity
- *
- *
- *
- *
- *     @param  v_pressure_u32 : The value of compensated pressure.
- *     @param  v_temperature_s32 : The value of compensated temperature.
- *     @param  v_humidity_u32 : The value of compensated humidity.
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_read_pressure_temperature_humidity(
-u32 *v_pressure_u32, s32 *v_temperature_s32, u32 *v_humidity_u32);
-/**************************************************************/
-/**\name       FUNCTION FOR CALIBRATION */
-/**************************************************************/
-/*!
- *     @brief This API is used to
- *     calibration parameters used for calculation in the registers
- *
- *  parameter | Register address |   bit
- *------------|------------------|----------------
- *     dig_T1    |  0x88 and 0x89   | from 0 : 7 to 8: 15
- *     dig_T2    |  0x8A and 0x8B   | from 0 : 7 to 8: 15
- *     dig_T3    |  0x8C and 0x8D   | from 0 : 7 to 8: 15
- *     dig_P1    |  0x8E and 0x8F   | from 0 : 7 to 8: 15
- *     dig_P2    |  0x90 and 0x91   | from 0 : 7 to 8: 15
- *     dig_P3    |  0x92 and 0x93   | from 0 : 7 to 8: 15
- *     dig_P4    |  0x94 and 0x95   | from 0 : 7 to 8: 15
- *     dig_P5    |  0x96 and 0x97   | from 0 : 7 to 8: 15
- *     dig_P6    |  0x98 and 0x99   | from 0 : 7 to 8: 15
- *     dig_P7    |  0x9A and 0x9B   | from 0 : 7 to 8: 15
- *     dig_P8    |  0x9C and 0x9D   | from 0 : 7 to 8: 15
- *     dig_P9    |  0x9E and 0x9F   | from 0 : 7 to 8: 15
- *     dig_H1    |         0xA1     | from 0 to 7
- *     dig_H2    |  0xE1 and 0xE2   | from 0 : 7 to 8: 15
- *     dig_H3    |         0xE3     | from 0 to 7
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_calib_param(void);
-/**************************************************************/
-/**\name       FUNCTION FOR TEMPERATURE OVER SAMPLING */
-/**************************************************************/
-/*!
- *     @brief This API is used to get
- *     the temperature oversampling setting in the register 0xF4
- *     bits from 5 to 7
- *
- *     value               |   Temperature oversampling
- * ---------------------|---------------------------------
- *     0x00                | Skipped
- *     0x01                | BME280_OVERSAMP_1X
- *     0x02                | BME280_OVERSAMP_2X
- *     0x03                | BME280_OVERSAMP_4X
- *     0x04                | BME280_OVERSAMP_8X
- *     0x05,0x06 and 0x07  | BME280_OVERSAMP_16X
- *
- *
- *  @param v_value_u8 : The value of temperature over sampling
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_oversamp_temperature(
-u8 *v_value_u8);
-/*!
- *     @brief This API is used to set
- *     the temperature oversampling setting in the register 0xF4
- *     bits from 5 to 7
- *
- *     value               |   Temperature oversampling
- * ---------------------|---------------------------------
- *     0x00                | Skipped
- *     0x01                | BME280_OVERSAMP_1X
- *     0x02                | BME280_OVERSAMP_2X
- *     0x03                | BME280_OVERSAMP_4X
- *     0x04                | BME280_OVERSAMP_8X
- *     0x05,0x06 and 0x07  | BME280_OVERSAMP_16X
- *
- *
- *  @param v_value_u8 : The value of temperature over sampling
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_oversamp_temperature(
-u8 v_value_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR PRESSURE OVER SAMPLING */
-/**************************************************************/
-/*!
- *     @brief This API is used to get
- *     the pressure oversampling setting in the register 0xF4
- *     bits from 2 to 4
- *
- *     value              | Pressure oversampling
- * --------------------|--------------------------
- *     0x00               | Skipped
- *     0x01               | BME280_OVERSAMP_1X
- *     0x02               | BME280_OVERSAMP_2X
- *     0x03               | BME280_OVERSAMP_4X
- *     0x04               | BME280_OVERSAMP_8X
- *     0x05,0x06 and 0x07 | BME280_OVERSAMP_16X
- *
- *
- *  @param v_value_u8 : The value of pressure oversampling
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_oversamp_pressure(
-u8 *v_value_u8);
-/*!
- *     @brief This API is used to set
- *     the pressure oversampling setting in the register 0xF4
- *     bits from 2 to 4
- *
- *     value              | Pressure oversampling
- * --------------------|--------------------------
- *     0x00               | Skipped
- *     0x01               | BME280_OVERSAMP_1X
- *     0x02               | BME280_OVERSAMP_2X
- *     0x03               | BME280_OVERSAMP_4X
- *     0x04               | BME280_OVERSAMP_8X
- *     0x05,0x06 and 0x07 | BME280_OVERSAMP_16X
- *
- *
- *  @param v_value_u8 : The value of pressure oversampling
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_oversamp_pressure(
-u8 v_value_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR HUMIDITY OVER SAMPLING */
-/**************************************************************/
-/*!
- *     @brief This API is used to get
- *     the humidity oversampling setting in the register 0xF2
- *     bits from 0 to 2
- *
- *     value               | Humidity oversampling
- * ---------------------|-------------------------
- *     0x00                | Skipped
- *     0x01                | BME280_OVERSAMP_1X
- *     0x02                | BME280_OVERSAMP_2X
- *     0x03                | BME280_OVERSAMP_4X
- *     0x04                | BME280_OVERSAMP_8X
- *     0x05,0x06 and 0x07  | BME280_OVERSAMP_16X
- *
- *
- *  @param  v_value_u8 : The value of humidity over sampling
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_oversamp_humidity(u8 *v_value_u8);
-/*!
- *     @brief This API is used to set
- *     the humidity oversampling setting in the register 0xF2
- *     bits from 0 to 2
- *
- *     value               | Humidity oversampling
- * ---------------------|-------------------------
- *     0x00                | Skipped
- *     0x01                | BME280_OVERSAMP_1X
- *     0x02                | BME280_OVERSAMP_2X
- *     0x03                | BME280_OVERSAMP_4X
- *     0x04                | BME280_OVERSAMP_8X
- *     0x05,0x06 and 0x07  | BME280_OVERSAMP_16X
- *
- *
- *  @param  v_value_u8 : The value of humidity over sampling
- *
- *
- *
- * @note The "BME280_CTRL_HUMIDITY_REG_OVERSAMP_HUMIDITY"
- * register sets the humidity
- * data acquisition options of the device.
- * @note changes to this registers only become
- * effective after a write operation to
- * "BME280_CTRL_MEAS_REG" register.
- * @note In the code automated reading and writing of
- *     "BME280_CTRL_HUMIDITY_REG_OVERSAMP_HUMIDITY"
- * @note register first set the
- * "BME280_CTRL_HUMIDITY_REG_OVERSAMP_HUMIDITY"
- *  and then read and write
- *  the "BME280_CTRL_MEAS_REG" register in the function.
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_oversamp_humidity(
-u8 v_value_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR POWER MODE*/
-/**************************************************************/
-/*!
- *     @brief This API used to get the
- *     Operational Mode from the sensor in the register 0xF4 bit 0 and 1
- *
- *
- *
- *     @param v_power_mode_u8 : The value of power mode
- *  value           |    mode
- * -----------------|------------------
- *     0x00            | BME280_SLEEP_MODE
- *     0x01 and 0x02   | BME280_FORCED_MODE
- *     0x03            | BME280_NORMAL_MODE
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_power_mode(u8 *v_power_mode_u8);
-/*!
- *     @brief This API used to set the
- *     Operational Mode from the sensor in the register 0xF4 bit 0 and 1
- *
- *
- *
- *     @param v_power_mode_u8 : The value of power mode
- *  value           |    mode
- * -----------------|------------------
- *     0x00            | BME280_SLEEP_MODE
- *     0x01 and 0x02   | BME280_FORCED_MODE
- *     0x03            | BME280_NORMAL_MODE
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_power_mode(u8 v_power_mode_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR SOFT RESET*/
-/**************************************************************/
-/*!
- * @brief Used to reset the sensor
- * The value 0xB6 is written to the 0xE0
- * register the device is reset using the
- * complete power-on-reset procedure.
- * @note Soft reset can be easily set using bme280_set_softreset().
- * @note Usage Hint : bme280_set_softreset()
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_soft_rst(void);
-/**************************************************************/
-/**\name       FUNCTION FOR SPI ENABLE*/
-/**************************************************************/
-/*!
- *     @brief This API used to get the sensor
- *     SPI mode(communication type) in the register 0xF5 bit 0
- *
- *
- *
- *     @param v_enable_disable_u8 : The value of SPI enable
- *     value  | Description
- * --------|--------------
- *   0     | Disable
- *   1     | Enable
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_spi3(u8 *v_enable_disable_u8);
-/*!
- *     @brief This API used to set the sensor
- *     SPI mode(communication type) in the register 0xF5 bit 0
- *
- *
- *
- *     @param v_enable_disable_u8 : The value of SPI enable
- *     value  | Description
- * --------|--------------
- *   0     | Disable
- *   1     | Enable
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_spi3(u8 v_enable_disable_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR IIR FILTER*/
-/**************************************************************/
-/*!
- *     @brief This API is used to reads filter setting
- *     in the register 0xF5 bit 3 and 4
- *
- *
- *
- *     @param v_value_u8 : The value of IIR filter coefficient
- *
- *     value       |   Filter coefficient
- * -------------|-------------------------
- *     0x00        | BME280_FILTER_COEFF_OFF
- *     0x01        | BME280_FILTER_COEFF_2
- *     0x02        | BME280_FILTER_COEFF_4
- *     0x03        | BME280_FILTER_COEFF_8
- *     0x04        | BME280_FILTER_COEFF_16
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_filter(u8 *v_value_u8);
-/*!
- *     @brief This API is used to write filter setting
- *     in the register 0xF5 bit 3 and 4
- *
- *
- *
- *     @param v_value_u8 : The value of IIR filter coefficient
- *
- *     value       |   Filter coefficient
- * -------------|-------------------------
- *     0x00        | BME280_FILTER_COEFF_OFF
- *     0x01        | BME280_FILTER_COEFF_2
- *     0x02        | BME280_FILTER_COEFF_4
- *     0x03        | BME280_FILTER_COEFF_8
- *     0x04        | BME280_FILTER_COEFF_16
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_filter(u8 v_value_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR STANDBY DURATION*/
-/**************************************************************/
 /*!
- *     @brief This API used to Read the
- *     standby duration time from the sensor in the register 0xF5 bit 5 to 7
- *
- *     @param v_standby_durn_u8 : The value of standby duration time value.
- *  value       | standby duration
- * -------------|-----------------------
- *    0x00      | BME280_STANDBY_TIME_1_MS
- *    0x01      | BME280_STANDBY_TIME_63_MS
- *    0x02      | BME280_STANDBY_TIME_125_MS
- *    0x03      | BME280_STANDBY_TIME_250_MS
- *    0x04      | BME280_STANDBY_TIME_500_MS
- *    0x05      | BME280_STANDBY_TIME_1000_MS
- *    0x06      | BME280_STANDBY_TIME_2000_MS
- *    0x07      | BME280_STANDBY_TIME_4000_MS
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_get_standby_durn(u8 *v_standby_durn_u8);
-/*!
- *     @brief This API used to write the
- *     standby duration time from the sensor in the register 0xF5 bit 5 to 7
- *
- *     @param v_standby_durn_u8 : The value of standby duration time value.
- *  value       | standby duration
- * -------------|-----------------------
- *    0x00      | BME280_STANDBY_TIME_1_MS
- *    0x01      | BME280_STANDBY_TIME_63_MS
- *    0x02      | BME280_STANDBY_TIME_125_MS
- *    0x03      | BME280_STANDBY_TIME_250_MS
- *    0x04      | BME280_STANDBY_TIME_500_MS
- *    0x05      | BME280_STANDBY_TIME_1000_MS
- *    0x06      | BME280_STANDBY_TIME_2000_MS
- *    0x07      | BME280_STANDBY_TIME_4000_MS
- *
- *     @note Normal mode comprises an automated perpetual
- *     cycling between an (active)
- *     Measurement period and an (inactive) standby period.
- *     @note The standby time is determined by
- *     the contents of the register t_sb.
- *     Standby time can be set using BME280_STANDBY_TIME_125_MS.
- *
- *     @note Usage Hint : bme280_set_standby_durn(BME280_STANDBY_TIME_125_MS)
- *
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-BME280_RETURN_FUNCTION_TYPE bme280_set_standby_durn(u8 v_standby_durn_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR WORK MODE*/
-/**************************************************************/
-/*
- * @brief Writes the working mode to the sensor
- *
- *
- *
- *
- *  @param v_work_mode_u8 : Mode to be set
- *  value    | Working mode
- * ----------|--------------------
- *   0       | BME280_ULTRALOWPOWER_MODE
- *   1       | BME280_LOWPOWER_MODE
- *   2       | BME280_STANDARDRESOLUTION_MODE
- *   3       | BME280_HIGHRESOLUTION_MODE
- *   4       | BME280_ULTRAHIGHRESOLUTION_MODE
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
- *
- *
-*/
-/*BME280_RETURN_FUNCTION_TYPE bme280_set_work_mode(u8 v_work_mode_u8);*/
-/**************************************************************/
-/**\name       FUNCTION FOR FORCE MODE DATA READ*/
-/**************************************************************/
-/*!
- * @brief This API used to read uncompensated
- * temperature,pressure and humidity in forced mode
- *
- *
- *     @param v_uncom_pressure_s32: The value of uncompensated pressure
- *     @param v_uncom_temperature_s32: The value of uncompensated temperature
- *     @param v_uncom_humidity_s32: The value of uncompensated humidity
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
+ *  @brief This API is the entry point.
+ *  It reads the chip-id and calibration data from the sensor.
  *
+ *  @param[in,out] dev : Structure instance of bme280_dev
  *
-*/
-BME280_RETURN_FUNCTION_TYPE
-bme280_get_forced_uncomp_pressure_temperature_humidity(
-s32 *v_uncom_pressure_s32,
-s32 *v_uncom_temperature_s32, s32 *v_uncom_humidity_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR COMMON READ AND WRITE */
-/**************************************************************/
+ *  @return Result of API execution status
+ *  @retval zero -> Success / +ve value -> Warning / -ve value -> Error
+ */
+int8_t bme280_init(struct bme280_dev *dev);
+
 /*!
- * @brief
- *     This API write the data to
- *     the given register
- *
- *
- *     @param v_addr_u8 -> Address of the register
- *     @param v_data_u8 -> The data from the register
- *     @param v_len_u8 -> no of bytes to read
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
+ * @brief This API writes the given data to the register address
+ * of the sensor.
  *
+ * @param[in] reg_addr : Register address from where the data to be written.
+ * @param[in] reg_data : Pointer to data buffer which is to be written
+ * in the sensor.
+ * @param[in] len : No of bytes of data to write..
+ * @param[in] dev : Structure instance of bme280_dev.
  *
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error
  */
-BME280_RETURN_FUNCTION_TYPE bme280_write_register(u8 v_addr_u8,
-u8 *v_data_u8, u8 v_len_u8);
+int8_t bme280_set_regs(uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, const struct bme280_dev *dev);
+
 /*!
- * @brief
- *     This API reads the data from
- *     the given register
- *
- *
- *     @param v_addr_u8 -> Address of the register
- *     @param v_data_u8 -> The data from the register
- *     @param v_len_u8 -> no of bytes to read
- *
- *
- *     @return results of bus communication function
- *     @retval 0 -> Success
- *     @retval -1 -> Error
+ * @brief This API reads the data from the given register address of the sensor.
  *
+ * @param[in] reg_addr : Register address from where the data to be read
+ * @param[out] reg_data : Pointer to data buffer to store the read data.
+ * @param[in] len : No of bytes of data to be read.
+ * @param[in] dev : Structure instance of bme280_dev.
  *
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error
  */
-BME280_RETURN_FUNCTION_TYPE bme280_read_register(u8 v_addr_u8,
-u8 *v_data_u8, u8 v_len_u8);
-/**************************************************************/
-/**\name       FUNCTION FOR FLOAT OUTPUT TEMPERATURE*/
-/**************************************************************/
-#ifdef BME280_ENABLE_FLOAT
+int8_t bme280_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, const struct bme280_dev *dev);
+
 /*!
- * @brief Reads actual temperature from uncompensated temperature
- * @note returns the value in Degree centigrade
- * @note Output value of "51.23" equals 51.23 DegC.
- *
+ * @brief This API sets the oversampling, filter and standby duration
+ * (normal mode) settings in the sensor.
  *
+ * @param[in] dev : Structure instance of bme280_dev.
+ * @param[in] desired_settings : Variable used to select the settings which
+ * are to be set in the sensor.
  *
- *  @param v_uncom_temperature_s32 : value of uncompensated temperature
+ * @note : Below are the macros to be used by the user for selecting the
+ * desired settings. User can do OR operation of these macros for configuring
+ * multiple settings.
  *
+ * Macros                |   Functionality
+ * -----------------------|----------------------------------------------
+ * BME280_OSR_PRESS_SEL    |   To set pressure oversampling.
+ * BME280_OSR_TEMP_SEL     |   To set temperature oversampling.
+ * BME280_OSR_HUM_SEL    |   To set humidity oversampling.
+ * BME280_FILTER_SEL     |   To set filter setting.
+ * BME280_STANDBY_SEL  |   To set standby duration setting.
  *
- *
- *  @return  Return the actual temperature in floating point
- *
-*/
-double bme280_compensate_temperature_double(
-s32 v_uncom_temperature_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR FLOAT OUTPUT PRESSURE*/
-/**************************************************************/
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
+ */
+int8_t bme280_set_sensor_settings(uint8_t desired_settings, const struct bme280_dev *dev);
+
 /*!
- * @brief Reads actual pressure from uncompensated pressure
- * @note Returns pressure in Pa as double.
- * @note Output value of "96386.2"
- * equals 96386.2 Pa = 963.862 hPa.
- *
- *
- *  @param v_uncom_pressure_s32 : value of uncompensated pressure
+ * @brief This API gets the oversampling, filter and standby duration
+ * (normal mode) settings from the sensor.
  *
+ * @param[in,out] dev : Structure instance of bme280_dev.
  *
- *  @return  Return the actual pressure in floating point
- *
-*/
-double bme280_compensate_pressure_double(s32 v_uncom_pressure_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR FLOAT OUTPUT HUMIDITY*/
-/**************************************************************/
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
+ */
+int8_t bme280_get_sensor_settings(struct bme280_dev *dev);
+
 /*!
- * @brief Reads actual humidity from uncompensated humidity
- * @note returns the value in relative humidity (%rH)
- * @note Output value of "42.12" equals 42.12 %rH
+ * @brief This API sets the power mode of the sensor.
  *
- *  @param v_uncom_humidity_s32 : value of uncompensated humidity
+ * @param[in] dev : Structure instance of bme280_dev.
+ * @param[in] sensor_mode : Variable which contains the power mode to be set.
  *
+ *    sensor_mode           |   Macros
+ * ---------------------|-------------------
+ *     0                | BME280_SLEEP_MODE
+ *     1                | BME280_FORCED_MODE
+ *     3                | BME280_NORMAL_MODE
  *
- *
- *  @return Return the actual humidity in floating point
- *
-*/
-double bme280_compensate_humidity_double(s32 v_uncom_humidity_s32);
-#endif
-/**************************************************************/
-/**\name       FUNCTION FOR 64BIT OUTPUT PRESSURE*/
-/**************************************************************/
-#if defined(BME280_ENABLE_INT64) && defined(BME280_64BITSUPPORT_PRESENT)
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error
+ */
+int8_t bme280_set_sensor_mode(uint8_t sensor_mode,
+                               const struct bme280_dev *dev);
+
 /*!
- * @brief Reads actual pressure from uncompensated pressure
- * @note Returns the value in Pa as unsigned 32 bit
- * integer in Q24.8 format (24 integer bits and
- * 8 fractional bits).
- * @note Output value of "24674867"
- * represents 24674867 / 256 = 96386.2 Pa = 963.862 hPa
- *
+ * @brief This API gets the power mode of the sensor.
  *
+ * @param[in] dev : Structure instance of bme280_dev.
+ * @param[out] sensor_mode : Pointer variable to store the power mode.
  *
- *  @param  v_uncom_pressure_s32 : value of uncompensated temperature
+ *   sensor_mode            |   Macros
+ * ---------------------|-------------------
+ *     0                | BME280_SLEEP_MODE
+ *     1                | BME280_FORCED_MODE
+ *     3                | BME280_NORMAL_MODE
  *
- *
- *  @return Return the actual pressure in u32
- *
-*/
-u32 bme280_compensate_pressure_int64(s32 v_uncom_pressure_s32);
-/**************************************************************/
-/**\name       FUNCTION FOR 24BIT OUTPUT PRESSURE*/
-/**************************************************************/
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error
+ */
+int8_t bme280_get_sensor_mode(uint8_t *sensor_mode, const struct bme280_dev *dev);
+
 /*!
- * @brief Reads actual pressure from uncompensated pressure
- * @note Returns the value in Pa.
- * @note Output value of "12337434"
- * @note represents 12337434 / 128 = 96386.2 Pa = 963.862 hPa
- *
- *
+ * @brief This API performs the soft reset of the sensor.
  *
- *  @param v_uncom_pressure_s32 : value of uncompensated pressure
+ * @param[in] dev : Structure instance of bme280_dev.
  *
- *
- *  @return the actual pressure in u32
- *
-*/
-u32 bme280_compensate_pressure_int64_twentyfour_bit_output(
-s32 v_uncom_pressure_s32);
-#endif
-/**************************************************************/
-/**\name       FUNCTION FOR WAIT PERIOD*/
-/**************************************************************/
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
+ */
+int8_t bme280_soft_reset(const struct bme280_dev *dev);
+
 /*!
- * @brief Computing waiting time for sensor data read
- *
+ * @brief This API reads the pressure, temperature and humidity data from the
+ * sensor, compensates the data and store it in the bme280_data structure
+ * instance passed by the user.
  *
+ * @param[in] sensor_comp : Variable which selects which data to be read from
+ * the sensor.
  *
+ * sensor_comp |   Macros
+ * ------------|-------------------
+ *     1       | BME280_PRESS
+ *     2       | BME280_TEMP
+ *     4       | BME280_HUM
+ *     7       | BME280_ALL
  *
- *  @param v_delaytime_u8 : The value of delay time for force mode
- *
- *
- *     @retval 0 -> Success
- *
+ * @param[out] comp_data : Structure instance of bme280_data.
+ * @param[in] dev : Structure instance of bme280_dev.
  *
+ * @return Result of API execution status
+ * @retval zero -> Success / +ve value -> Warning / -ve value -> Error
  */
-BME280_RETURN_FUNCTION_TYPE bme280_compute_wait_time(u8
-*v_delaytime_u8);
-#endif
+int8_t bme280_get_sensor_data(uint8_t sensor_comp, struct bme280_data *comp_data, struct bme280_dev *dev);
+
+#ifdef __cplusplus
+}
+#endif /* End of CPP guard */
+#endif /* BME280_H_ */
+/** @}*/