From 102d86870ac6d5b9db2baba8d62b56537fef8a7d Mon Sep 17 00:00:00 2001 From: Mihai Tudor Panu Date: Thu, 31 Mar 2016 16:34:11 -0700 Subject: [PATCH] bme280: added missing return in non-void function Signed-off-by: Mihai Tudor Panu --- src/bme280/bme280.cxx | 404 +++++++++++++++++++++--------------------- 1 file changed, 201 insertions(+), 203 deletions(-) diff --git a/src/bme280/bme280.cxx b/src/bme280/bme280.cxx index d6cf55a6..f303b760 100644 --- a/src/bme280/bme280.cxx +++ b/src/bme280/bme280.cxx @@ -31,7 +31,7 @@ #include "bme280.h" #include "bme280driver.h" /************** I2C buffer length ******/ -#define I2C_BUFFER_LEN 26 +#define I2C_BUFFER_LEN 26 @@ -41,13 +41,13 @@ using namespace upm; /*----------------------------------------------------------------------------* - * struct bme280_t parameters can be accessed by using bme280 - * bme280_t having the following parameters - * Bus write function pointer: BME280_WR_FUNC_PTR - Bus read function pointer: BME280_RD_FUNC_PTR - * Delay function pointer: delay_msec - * I2C address: dev_addr - * Chip id of the sensor: chip_id + * struct bme280_t parameters can be accessed by using bme280 + * bme280_t having the following parameters + * Bus write function pointer: BME280_WR_FUNC_PTR + Bus read function pointer: BME280_RD_FUNC_PTR + * Delay function pointer: delay_msec + * I2C address: dev_addr + * Chip id of the sensor: chip_id *---------------------------------------------------------------------------*/ struct bme280_t bme280; @@ -57,23 +57,23 @@ mraa::I2c* BME280::m_i2c = NULL; int BME280::m_bus = 0; BME280::BME280 (int bus, int devAddr) { - m_bus = bus; - if( m_i2c == NULL) - { - m_i2c = new mraa::I2c(m_bus); - m_i2c->address(BME280_I2C_ADDRESS1); - //Based on the requirement, configure I2C interface. - I2C_routine(); - /*--------------------------------------------------------------------------* - * This function used to assign the value/reference of - * the following parameters - * I2C address - * Bus Write - * Bus read - * Chip id - *-------------------------------------------------------------------------*/ - bme280_init(&bme280); - } + m_bus = bus; + if( m_i2c == NULL) + { + m_i2c = new mraa::I2c(m_bus); + m_i2c->address(BME280_I2C_ADDRESS1); + //Based on the requirement, configure I2C interface. + I2C_routine(); + /*--------------------------------------------------------------------------* + * This function used to assign the value/reference of + * the following parameters + * I2C address + * Bus Write + * Bus read + * Chip id + *-------------------------------------------------------------------------*/ + bme280_init(&bme280); + } } BME280::~BME280() { @@ -81,21 +81,21 @@ BME280::~BME280() { } /* This function is an example for reading sensor temperature - * \param: None - * \return: compensated temperature + * \param: None + * \return: compensated temperature */ int32_t BME280::getTemperatureInternal(void) { - /* The variable used to read uncompensated temperature*/ - int32_t v_data_uncomp_tem_int32 = getTemperatureRawInternal(); + /* The variable used to read uncompensated temperature*/ + int32_t v_data_uncomp_tem_int32 = getTemperatureRawInternal(); /*------------------------------------------------------------------* ************ START READ TRUE PRESSURE, TEMPERATURE AND HUMIDITY DATA ******** *---------------------------------------------------------------------*/ - /* API is used to read the true temperature*/ - /* Input value as uncompensated temperature and output format*/ - int32_t v_actual_temp_int32 = bme280_compensate_temperature_int32(v_data_uncomp_tem_int32); + /* API is used to read the true temperature*/ + /* Input value as uncompensated temperature and output format*/ + int32_t v_actual_temp_int32 = bme280_compensate_temperature_int32(v_data_uncomp_tem_int32); /*--------------------------------------------------------------------* ************ END READ TRUE TEMPERATURE ******** *-------------------------------------------------------------------------*/ @@ -104,22 +104,22 @@ return v_actual_temp_int32; } /* This function is an example for reading sensor pressure - * \param: None - * \return: compensated pressure + * \param: None + * \return: compensated pressure */ int32_t BME280::getPressureInternal(void) { - /* The variable used to read uncompensated pressure*/ - int32_t v_data_uncomp_pres_int32 = getPressureRawInternal(); + /* The variable used to read uncompensated pressure*/ + int32_t v_data_uncomp_pres_int32 = getPressureRawInternal(); /*------------------------------------------------------------------* ************ START READ TRUE PRESSURE DATA ******** *---------------------------------------------------------------------*/ - /* API is used to read the true pressure*/ - /* Input value as uncompensated pressure */ - uint32_t v_actual_press_uint32 = bme280_compensate_pressure_int32(v_data_uncomp_pres_int32); + /* API is used to read the true pressure*/ + /* Input value as uncompensated pressure */ + uint32_t v_actual_press_uint32 = bme280_compensate_pressure_int32(v_data_uncomp_pres_int32); /*--------------------------------------------------------------------* ************ END READ TRUE PRESSURE ******** @@ -130,21 +130,21 @@ return v_actual_press_uint32; /* This function is an example for reading sensor humidity - * \param: None - * \return: compensated humidity + * \param: None + * \return: compensated humidity */ int32_t BME280::getHumidityInternal(void) { - /* The variable used to read uncompensated pressure*/ - int32_t v_data_uncomp_hum_int32 = getHumidityRawInternal(); + /* The variable used to read uncompensated pressure*/ + int32_t v_data_uncomp_hum_int32 = getHumidityRawInternal(); /*------------------------------------------------------------------* ************ START READ TRUE HUMIDITY DATA ******** *---------------------------------------------------------------------*/ - /* API is used to read the true humidity*/ - /* Input value as uncompensated humidity and output format*/ - uint32_t v_actual_humity_uint32 = bme280_compensate_humidity_int32(v_data_uncomp_hum_int32); + /* API is used to read the true humidity*/ + /* Input value as uncompensated humidity and output format*/ + uint32_t v_actual_humity_uint32 = bme280_compensate_humidity_int32(v_data_uncomp_hum_int32); /*--------------------------------------------------------------------* ************ END READ TRUE HUMIDITY ******** @@ -156,37 +156,37 @@ return v_actual_humity_uint32; /* This function is an example for reading sensor temperature - * \param: None - * \return: uncompensated temperature + * \param: None + * \return: uncompensated temperature */ int32_t BME280::getTemperatureRawInternal(void) { - /* The variable used to read uncompensated temperature*/ - int32_t v_data_uncomp_tem_int32 = BME280_INIT_VALUE; + /* The variable used to read uncompensated temperature*/ + int32_t v_data_uncomp_tem_int32 = BME280_INIT_VALUE; - /* For initialization it is required to set the mode of - * the sensor as "NORMAL" - * data acquisition/read/write is possible in this mode - * by using the below API able to set the power mode as NORMAL*/ - /* Set the power mode as NORMAL*/ - bme280_set_power_mode(BME280_NORMAL_MODE); - /* For reading the temperature data it is required to - * set the OSS setting of temperature - * In the code automated reading and writing of "BME280_CTRLHUM_REG_OSRSH" - * register first set the "BME280_CTRLHUM_REG_OSRSH" and then read and write - * the "BME280_CTRLMEAS_REG" register in the function*/ + /* For initialization it is required to set the mode of + * the sensor as "NORMAL" + * data acquisition/read/write is possible in this mode + * by using the below API able to set the power mode as NORMAL*/ + /* Set the power mode as NORMAL*/ + bme280_set_power_mode(BME280_NORMAL_MODE); + /* For reading the temperature data it is required to + * set the OSS setting of temperature + * In the code automated reading and writing of "BME280_CTRLHUM_REG_OSRSH" + * register first set the "BME280_CTRLHUM_REG_OSRSH" and then read and write + * the "BME280_CTRLMEAS_REG" register in the function*/ - /* set the temperature oversampling*/ - bme280_set_oversamp_temperature(BME280_OVERSAMP_4X); + /* set the temperature oversampling*/ + bme280_set_oversamp_temperature(BME280_OVERSAMP_4X); /************************* END INITIALIZATION *************************/ /*------------------------------------------------------------------* ************ START READ UNCOMPENSATED TEMPERATURE DATA ******** *---------------------------------------------------------------------*/ - /* API is used to read the uncompensated temperature*/ - bme280_read_uncomp_temperature(&v_data_uncomp_tem_int32); + /* API is used to read the uncompensated temperature*/ + bme280_read_uncomp_temperature(&v_data_uncomp_tem_int32); /*--------------------------------------------------------------------* @@ -196,14 +196,14 @@ int32_t BME280::getTemperatureRawInternal(void) /*-----------------------------------------------------------------------* ************************* START DE-INITIALIZATION *********************** *-------------------------------------------------------------------------*/ - /* For de-initialization it is required to set the mode of - * the sensor as "SLEEP" - * the device reaches the lowest power consumption only - * In SLEEP mode no measurements are performed - * All registers are accessible - * by using the below API able to set the power mode as SLEEP*/ - /* Set the power mode as SLEEP*/ - bme280_set_power_mode(BME280_SLEEP_MODE); + /* For de-initialization it is required to set the mode of + * the sensor as "SLEEP" + * the device reaches the lowest power consumption only + * In SLEEP mode no measurements are performed + * All registers are accessible + * by using the below API able to set the power mode as SLEEP*/ + /* Set the power mode as SLEEP*/ + bme280_set_power_mode(BME280_SLEEP_MODE); /*---------------------------------------------------------------------* ************************* END DE-INITIALIZATION ********************** *---------------------------------------------------------------------*/ @@ -211,34 +211,34 @@ return v_data_uncomp_tem_int32; } /* This function is an example for reading sensor pressure - * \param: None - * \return: uncompensated pressure + * \param: None + * \return: uncompensated pressure */ int32_t BME280::getPressureRawInternal(void) { - /* The variable used to read uncompensated pressure*/ - int32_t v_data_uncomp_pres_int32 = BME280_INIT_VALUE; + /* The variable used to read uncompensated pressure*/ + int32_t v_data_uncomp_pres_int32 = BME280_INIT_VALUE; - /* For initialization it is required to set the mode of - * the sensor as "NORMAL" - * data acquisition/read/write is possible in this mode - * by using the below API able to set the power mode as NORMAL*/ - /* Set the power mode as NORMAL*/ - bme280_set_power_mode(BME280_NORMAL_MODE); - /* For reading the pressure data it is required to - * set the OSS setting of humidity, pressure and temperature - * The "BME280_CTRLHUM_REG_OSRSH" register sets the humidity - * data acquisition options of the device. - * changes to this registers only become effective after a write operation to - * "BME280_CTRLMEAS_REG" register. - * In the code automated reading and writing of "BME280_CTRLHUM_REG_OSRSH" - * register first set the "BME280_CTRLHUM_REG_OSRSH" and then read and write - * the "BME280_CTRLMEAS_REG" register in the function*/ + /* For initialization it is required to set the mode of + * the sensor as "NORMAL" + * data acquisition/read/write is possible in this mode + * by using the below API able to set the power mode as NORMAL*/ + /* Set the power mode as NORMAL*/ + bme280_set_power_mode(BME280_NORMAL_MODE); + /* For reading the pressure data it is required to + * set the OSS setting of humidity, pressure and temperature + * The "BME280_CTRLHUM_REG_OSRSH" register sets the humidity + * data acquisition options of the device. + * changes to this registers only become effective after a write operation to + * "BME280_CTRLMEAS_REG" register. + * In the code automated reading and writing of "BME280_CTRLHUM_REG_OSRSH" + * register first set the "BME280_CTRLHUM_REG_OSRSH" and then read and write + * the "BME280_CTRLMEAS_REG" register in the function*/ - /* set the pressure oversampling*/ - bme280_set_oversamp_pressure(BME280_OVERSAMP_2X); + /* set the pressure oversampling*/ + bme280_set_oversamp_pressure(BME280_OVERSAMP_2X); /************************* END INITIALIZATION *************************/ @@ -246,8 +246,8 @@ int32_t BME280::getPressureRawInternal(void) ************ START READ UNCOMPENSATED PRESSURE DATA ******** *---------------------------------------------------------------------*/ - /* API is used to read the uncompensated pressure*/ - bme280_read_uncomp_pressure(&v_data_uncomp_pres_int32); + /* API is used to read the uncompensated pressure*/ + bme280_read_uncomp_pressure(&v_data_uncomp_pres_int32); /*--------------------------------------------------------------------* ************ END READ UNCOMPENSATED PRESSURE ******** @@ -257,14 +257,14 @@ int32_t BME280::getPressureRawInternal(void) /*-----------------------------------------------------------------------* ************************* START DE-INITIALIZATION *********************** *-------------------------------------------------------------------------*/ - /* For de-initialization it is required to set the mode of - * the sensor as "SLEEP" - * the device reaches the lowest power consumption only - * In SLEEP mode no measurements are performed - * All registers are accessible - * by using the below API able to set the power mode as SLEEP*/ - /* Set the power mode as SLEEP*/ - bme280_set_power_mode(BME280_SLEEP_MODE); + /* For de-initialization it is required to set the mode of + * the sensor as "SLEEP" + * the device reaches the lowest power consumption only + * In SLEEP mode no measurements are performed + * All registers are accessible + * by using the below API able to set the power mode as SLEEP*/ + /* Set the power mode as SLEEP*/ + bme280_set_power_mode(BME280_SLEEP_MODE); /*---------------------------------------------------------------------* ************************* END DE-INITIALIZATION ********************** *---------------------------------------------------------------------*/ @@ -273,31 +273,31 @@ return v_data_uncomp_pres_int32; /* This function is an example for reading sensor humidity - * \param: None - * \return: uncompensated humidity + * \param: None + * \return: uncompensated humidity */ int32_t BME280::getHumidityRawInternal(void) { - /* The variable used to read uncompensated pressure*/ - int32_t v_data_uncomp_hum_int32 = BME280_INIT_VALUE; + /* The variable used to read uncompensated pressure*/ + int32_t v_data_uncomp_hum_int32 = BME280_INIT_VALUE; - /* For initialization it is required to set the mode of - * the sensor as "NORMAL" - * data acquisition/read/write is possible in this mode - * by using the below API able to set the power mode as NORMAL*/ - /* Set the power mode as NORMAL*/ - bme280_set_power_mode(BME280_NORMAL_MODE); - /* For reading humidity data it is required to - * set the OSS setting of humidity - * The "BME280_CTRLHUM_REG_OSRSH" register sets the humidity - * data acquisition options of the device. - * changes to this registers only become effective after a write operation to - * "BME280_CTRLMEAS_REG" register. - * In the code automated reading and writing of "BME280_CTRLHUM_REG_OSRSH" - * register first set the "BME280_CTRLHUM_REG_OSRSH" and then read and write - * the "BME280_CTRLMEAS_REG" register in the function*/ - bme280_set_oversamp_humidity(BME280_OVERSAMP_1X); + /* For initialization it is required to set the mode of + * the sensor as "NORMAL" + * data acquisition/read/write is possible in this mode + * by using the below API able to set the power mode as NORMAL*/ + /* Set the power mode as NORMAL*/ + bme280_set_power_mode(BME280_NORMAL_MODE); + /* For reading humidity data it is required to + * set the OSS setting of humidity + * The "BME280_CTRLHUM_REG_OSRSH" register sets the humidity + * data acquisition options of the device. + * changes to this registers only become effective after a write operation to + * "BME280_CTRLMEAS_REG" register. + * In the code automated reading and writing of "BME280_CTRLHUM_REG_OSRSH" + * register first set the "BME280_CTRLHUM_REG_OSRSH" and then read and write + * the "BME280_CTRLMEAS_REG" register in the function*/ + bme280_set_oversamp_humidity(BME280_OVERSAMP_1X); /************************* END INITIALIZATION *************************/ @@ -305,7 +305,7 @@ int32_t BME280::getHumidityRawInternal(void) /*------------------------------------------------------------------* ************ START READ HUMIDITY DATA ******** *---------------------------------------------------------------------*/ - /* API is used to read the uncompensated humidity*/ + /* API is used to read the uncompensated humidity*/ bme280_read_uncomp_humidity(&v_data_uncomp_hum_int32); /*--------------------------------------------------------------------* @@ -316,14 +316,14 @@ int32_t BME280::getHumidityRawInternal(void) /*-----------------------------------------------------------------------* ************************* START DE-INITIALIZATION *********************** *-------------------------------------------------------------------------*/ - /* For de-initialization it is required to set the mode of - * the sensor as "SLEEP" - * the device reaches the lowest power consumption only - * In SLEEP mode no measurements are performed - * All registers are accessible - * by using the below API able to set the power mode as SLEEP*/ - /* Set the power mode as SLEEP*/ - bme280_set_power_mode(BME280_SLEEP_MODE); + /* For de-initialization it is required to set the mode of + * the sensor as "SLEEP" + * the device reaches the lowest power consumption only + * In SLEEP mode no measurements are performed + * All registers are accessible + * by using the below API able to set the power mode as SLEEP*/ + /* Set the power mode as SLEEP*/ + bme280_set_power_mode(BME280_SLEEP_MODE); /*---------------------------------------------------------------------* ************************* END DE-INITIALIZATION ********************** *---------------------------------------------------------------------*/ @@ -335,120 +335,118 @@ return v_data_uncomp_hum_int32; /*--------------------------------------------------------------------------* -* The following function is used to map the I2C bus read, write, delay and -* device address with global structure bme280 +* The following function is used to map the I2C bus read, write, delay and +* device address with global structure bme280 *-------------------------------------------------------------------------*/ int8_t BME280::I2C_routine() - { +{ /*--------------------------------------------------------------------------* * By using bme280 the following structure parameter can be accessed - * Bus write function pointer: BME280_WR_FUNC_PTR - * Bus read function pointer: BME280_RD_FUNC_PTR - * Delay function pointer: delay_msec - * I2C address: dev_addr + * Bus write function pointer: BME280_WR_FUNC_PTR + * Bus read function pointer: BME280_RD_FUNC_PTR + * Delay function pointer: delay_msec + * I2C address: dev_addr *--------------------------------------------------------------------------*/ -// bme280.bus_write = &BME280::BME280_I2C_bus_write; - bme280.bus_write = BME280_I2C_bus_write; +// bme280.bus_write = &BME280::BME280_I2C_bus_write; + bme280.bus_write = BME280_I2C_bus_write; - //bme280.bus_write = BME280_I2C_bus_write_dummy; - bme280.bus_read = BME280_I2C_bus_read; - bme280.dev_addr = BME280_I2C_ADDRESS1; - bme280.delay_msec = BME280_delay_msek; + //bme280.bus_write = BME280_I2C_bus_write_dummy; + bme280.bus_read = BME280_I2C_bus_read; + bme280.dev_addr = BME280_I2C_ADDRESS1; + bme280.delay_msec = BME280_delay_msek; - return BME280_INIT_VALUE; + return BME280_INIT_VALUE; } /*-------------------------------------------------------------------* -* The device address defined in the bme280.h file +* The device address defined in the bme280.h file *-----------------------------------------------------------------------*/ int32_t BME280::i2c_write_string(uint8_t dev_addr,uint8_t* ptr, uint8_t cnt) { - mraa::Result ret; - m_i2c->address(dev_addr); - - if((ret = m_i2c->write((const uint8_t*) (ptr), cnt)) != 0) - { - UPM_THROW("I2C write error"); - - } + mraa::Result ret; + m_i2c->address(dev_addr); + if((ret = m_i2c->write((const uint8_t*) (ptr), cnt)) != 0) + { + UPM_THROW("I2C write error"); + } + return 0; } -/* \Brief: The function is used as I2C bus write -* \Return : Status of the I2C write -* \param dev_addr : The device address of the sensor -* \param reg_addr : Address of the first register, will data is going to be written -* \param reg_data : It is a value hold in the array, -* will be used for write the value into the register -* \param cnt : The no of byte of data to be write +/* \Brief: The function is used as I2C bus write +* \Return : Status of the I2C write +* \param dev_addr : The device address of the sensor +* \param reg_addr : Address of the first register, will data is going to be written +* \param reg_data : It is a value hold in the array, +* will be used for write the value into the register +* \param cnt : The no of byte of data to be write */ int8_t BME280::BME280_I2C_bus_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt) { - int32_t iError = BME280_INIT_VALUE; - static uint8_t array[I2C_BUFFER_LEN]; + int32_t iError = BME280_INIT_VALUE; + static uint8_t array[I2C_BUFFER_LEN]; for (int i=0; iaddress(dev_addr); + m_i2c->address(dev_addr); - if( m_i2c->readBytesReg(reg_addr, ptr, cnt) != cnt) - { - UPM_THROW("bme280 register read failed"); + if( m_i2c->readBytesReg(reg_addr, ptr, cnt) != cnt) + { + UPM_THROW("bme280 register read failed"); - } - return 0; + } + return 0; } - /* \Brief: The function is used as I2C bus read - * \Return : Status of the I2C read - * \param dev_addr : The device address of the sensor - * \param reg_addr : Address of the first register, will data is going to be read - * \param reg_data : This data read from the sensor, which is hold in an array - * \param cnt : The no of data byte of to be read + /* \Brief: The function is used as I2C bus read + * \Return : Status of the I2C read + * \param dev_addr : The device address of the sensor + * \param reg_addr : Address of the first register, will data is going to be read + * \param reg_data : This data read from the sensor, which is hold in an array + * \param cnt : The no of data byte of to be read */ int8_t BME280::BME280_I2C_bus_read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt) { - int32_t iError = BME280_INIT_VALUE; - uint8_t array[I2C_BUFFER_LEN] = {BME280_INIT_VALUE}; - uint8_t stringpos = BME280_INIT_VALUE; - array[BME280_INIT_VALUE] = reg_addr; - i2c_write_read_string(dev_addr,reg_addr,array,cnt); - for (stringpos = BME280_INIT_VALUE; stringpos < cnt; stringpos++) { - *(reg_data + stringpos) = array[stringpos]; - } - return (int8_t)iError; + int32_t iError = BME280_INIT_VALUE; + uint8_t array[I2C_BUFFER_LEN] = {BME280_INIT_VALUE}; + uint8_t stringpos = BME280_INIT_VALUE; + array[BME280_INIT_VALUE] = reg_addr; + i2c_write_read_string(dev_addr,reg_addr,array,cnt); + for (stringpos = BME280_INIT_VALUE; stringpos < cnt; stringpos++) { + *(reg_data + stringpos) = array[stringpos]; + } + return (int8_t)iError; } -/* Brief : The delay routine - * \param : delay in ms +/* Brief : The delay routine + * \param : delay in ms */ void BME280::BME280_delay_msek(uint16_t mseconds) { - struct timespec sleepTime; + struct timespec sleepTime; - sleepTime.tv_sec = mseconds / 1000; // Number of seconds - sleepTime.tv_nsec = ( mseconds % 1000 ) * 1000000; // Convert fractional seconds to nanoseconds - - // Iterate nanosleep in a loop until the total sleep time is the original - // value of the seconds parameter - while ( ( nanosleep( &sleepTime, &sleepTime ) != 0 ) && ( errno == EINTR ) ); + sleepTime.tv_sec = mseconds / 1000; // Number of seconds + sleepTime.tv_nsec = ( mseconds % 1000 ) * 1000000; // Convert fractional seconds to nanoseconds + // Iterate nanosleep in a loop until the total sleep time is the original + // value of the seconds parameter + while ( ( nanosleep( &sleepTime, &sleepTime ) != 0 ) && ( errno == EINTR ) ); }