Skip to content

Commit

Permalink
code clean-up
Browse files Browse the repository at this point in the history
  • Loading branch information
aldwinhermanudin committed Dec 20, 2023
1 parent bf4b8ea commit 53558e7
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 41 deletions.
67 changes: 33 additions & 34 deletions src/mbedos/test-bme688/source/bme688/BME688.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,14 @@ void BME688::DoMeasurements()

BME688::ReturnCode BME688::InitialiseSensor()
{
bsec_conf.sensor_structure.intf_ptr = this;
bsec_conf.sensor_structure.intf = BME68X_I2C_INTF;
bsec_conf.sensor_structure.read = ReadRegister;
bsec_conf.sensor_structure.write = WriteRegister;
bsec_conf.sensor_structure.delay_us = delay;
bsec_conf.sensor_structure.amb_temp = 25; // used in arduino example
bme688.dev.intf_ptr = this;
bme688.dev.intf = BME68X_I2C_INTF;
bme688.dev.read = ReadRegister;
bme688.dev.write = WriteRegister;
bme688.dev.delay_us = delay;
bme688.dev.amb_temp = 25; // used in arduino example

if( bme68x_init(&bsec_conf.sensor_structure) != 0 )
if( bme68x_init(&bme688.dev) != 0 )
{
return BME688::ReturnCode::kSensorStructureFail;
}
Expand All @@ -105,14 +105,14 @@ BME688::ReturnCode BME688::InitialiseSensor()

BME688::ReturnCode BME688::InitialiseSensorFilterSettings()
{
bme68x_get_conf(&bsec_conf.sensor_config, &bsec_conf.sensor_structure);
bsec_conf.sensor_config.filter = BME68X_FILTER_OFF;
bsec_conf.sensor_config.odr = BME68X_ODR_NONE;
bsec_conf.sensor_config.os_hum = BME68X_OS_16X;
bsec_conf.sensor_config.os_pres = BME68X_OS_1X;
bsec_conf.sensor_config.os_temp = BME68X_OS_2X;
bme68x_get_conf(&bme688.conf, &bme688.dev);
bme688.conf.filter = BME68X_FILTER_OFF;
bme688.conf.odr = BME68X_ODR_NONE;
bme688.conf.os_hum = BME68X_OS_16X;
bme688.conf.os_pres = BME68X_OS_1X;
bme688.conf.os_temp = BME68X_OS_2X;

if( bme68x_set_conf(&bsec_conf.sensor_config, &bsec_conf.sensor_structure) != 0 )
if( bme68x_set_conf(&bme688.conf, &bme688.dev) != 0 )
{
return BME688::ReturnCode::kSensorConfigFail;
}
Expand All @@ -126,7 +126,7 @@ BME688::ReturnCode BME688::InitialiseSensorHeaterSettings()
bsec_conf.sensor_heater_config.heatr_dur_prof = bsec_conf.dur_profile;
bsec_conf.sensor_heater_config.profile_len = 1;

if( bme68x_set_heatr_conf(BME68X_SEQUENTIAL_MODE, &bsec_conf.sensor_heater_config, &bsec_conf.sensor_structure) != 0 )
if( bme68x_set_heatr_conf(BME68X_SEQUENTIAL_MODE, &bsec_conf.sensor_heater_config, &bme688.dev) != 0 )
{
return BME688::ReturnCode::kSensorHeaterFail;
}
Expand All @@ -136,7 +136,7 @@ BME688::ReturnCode BME688::InitialiseSensorHeaterSettings()

BME688::ReturnCode BME688::SetSequentialMode()
{
if( bme68x_set_op_mode(BME68X_SEQUENTIAL_MODE, &bsec_conf.sensor_structure) != 0 )
if( bme68x_set_op_mode(BME68X_SEQUENTIAL_MODE, &bme688.dev) != 0 )
{
return BME688::ReturnCode::kSensorOperationSeqFail;
}
Expand Down Expand Up @@ -177,9 +177,9 @@ BME688::ReturnCode BME688::UpdateSubscription()

BME688::ReturnCode BME688::ProcessData()
{
uint32_t delayInUs = bme68x_get_meas_dur(BME68X_SEQUENTIAL_MODE, &bsec_conf.sensor_config, &bsec_conf.sensor_structure) + (bsec_conf.sensor_heater_config.heatr_dur_prof[0] * 1000);
uint32_t delayInUs = bme68x_get_meas_dur(BME68X_SEQUENTIAL_MODE, &bme688.conf, &bme688.dev) + (bsec_conf.sensor_heater_config.heatr_dur_prof[0] * 1000);
delay(delayInUs,NULL);
if( bme68x_get_data(BME68X_SEQUENTIAL_MODE, bsec_conf.sensor_data, &bsec_conf.data_fields, &bsec_conf.sensor_structure) != 0 )
if( bme68x_get_data(BME68X_SEQUENTIAL_MODE, bsec_conf.sensor_data, &bsec_conf.data_fields, &bme688.dev) != 0 )
{
return BME688::ReturnCode::kSensorGetDataFail;
}
Expand Down Expand Up @@ -319,7 +319,7 @@ BME688::ReturnCode BME688::SetBme68xConfigForced( const bsec_bme_settings_t &bse
return status;
}

this->bsec_conf.op_mode = BME68X_FORCED_MODE;
this->last_op_mode = BME68X_FORCED_MODE;
return status;
}

Expand Down Expand Up @@ -362,7 +362,7 @@ BME688::ReturnCode BME688::SetBme68xConfigParallel( const bsec_bme_settings_t& b
return status;
}

this->bsec_conf.op_mode = BME68X_PARALLEL_MODE;
this->last_op_mode = BME68X_PARALLEL_MODE;
return status;
}

Expand All @@ -373,13 +373,12 @@ BME688::ReturnCode BME688::SetTphOverSampling( const uint8_t os_temp,
const uint8_t os_pres,
const uint8_t os_hum )
{
if( bme68x_get_conf(&bsec_conf.sensor_config, &bsec_conf.sensor_structure) == BME68X_OK )
if( bme68x_get_conf(&bme688.conf, &bme688.dev) == BME68X_OK )
{

bsec_conf.sensor_config.os_hum = os_hum;
bsec_conf.sensor_config.os_pres = os_pres;
bsec_conf.sensor_config.os_temp = os_temp;
if( bme68x_set_conf(&bsec_conf.sensor_config, &bsec_conf.sensor_structure) == BME68X_OK )
bme688.conf.os_hum = os_hum;
bme688.conf.os_pres = os_pres;
bme688.conf.os_temp = os_temp;
if( bme68x_set_conf(&bme688.conf, &bme688.dev) == BME68X_OK )
{
return ReturnCode::kOk;
}
Expand All @@ -401,7 +400,7 @@ BME688::ReturnCode BME688::SetHeaterProfile( const uint16_t temp,
.heatr_dur = dur
};

if( bme68x_set_heatr_conf(BME68X_FORCED_MODE, &heater_conf, &bsec_conf.sensor_structure) == BME68X_OK )
if( bme68x_set_heatr_conf(BME68X_FORCED_MODE, &heater_conf, &bme688.dev) == BME68X_OK )
{
return ReturnCode::kOk;
}
Expand All @@ -426,7 +425,7 @@ BME688::ReturnCode BME688::SetHeaterProfile( uint16_t* const temp,
.shared_heatr_dur = shared_heater_dur
};

if( bme68x_set_heatr_conf( BME68X_PARALLEL_MODE, &heater_conf, &bsec_conf.sensor_structure) == BME68X_OK )
if( bme68x_set_heatr_conf( BME68X_PARALLEL_MODE, &heater_conf, &bme688.dev) == BME68X_OK )
{
return ReturnCode::kOk;
}
Expand All @@ -440,11 +439,11 @@ BME688::ReturnCode BME688::SetHeaterProfile( uint16_t* const temp,
*/
BME688::ReturnCode BME688::SetOperationMode(const uint8_t op_mode)
{
int8_t status = bme68x_set_op_mode(op_mode, &bsec_conf.sensor_structure);
if( (status == BME68X_OK) &&
(op_mode != BME68X_SLEEP_MODE) )
int8_t status = bme68x_set_op_mode(op_mode, &bme688.dev);
if( status == BME68X_OK &&
op_mode != BME68X_SLEEP_MODE )
{
this->bsec_conf.last_op_mode = op_mode;
this->last_op_mode = op_mode;
}

if( status == BME68X_OK )
Expand All @@ -462,10 +461,10 @@ uint32_t BME688::GetMeasurementDuration(const uint8_t op_mode)
uint8_t target_op_mode = op_mode;
if (target_op_mode == BME68X_SLEEP_MODE)
{
target_op_mode = this->bsec_conf.last_op_mode;
target_op_mode = this->last_op_mode;
}

return bme68x_get_meas_dur(target_op_mode, &bsec_conf.sensor_config, &bsec_conf.sensor_structure);
return bme68x_get_meas_dur(target_op_mode, &bme688.conf, &bme688.dev);
}

// Static function
Expand Down
19 changes: 12 additions & 7 deletions src/mbedos/test-bme688/source/bme688/BME688.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,10 @@ class BME688{
{
// sensor configuration
bme68x_data sensor_data[3];
bme68x_dev sensor_structure;
bme68x_conf sensor_config;
bme68x_heatr_conf sensor_heater_config;
uint8_t last_op_mode;
bme68x_heatr_conf sensor_heater_config; // not used in Arduino implementation

// bsec libray configuration
bsec_bme_settings_t bme_conf;
uint8_t op_mode; // current sensor operation mode
uint8_t data_fields;
bsec_sensor_configuration_t requested_virtual_sensors[4];
uint8_t number_required_sensor_settings;
Expand All @@ -68,6 +64,13 @@ class BME688{
uint16_t dur_profile[2];
};

struct Bme688Configuration
{
// store configuration for other bsec method to use
bme68x_conf conf;
bme68x_dev dev;
};

public:
bool new_data_available;
uint32_t bme688_addr;
Expand All @@ -85,8 +88,10 @@ class BME688{

private:
// bsec internal variables
BME688::BsecConfiguration bsec_conf;
SensorData sensor_data;
BME688::BsecConfiguration bsec_conf;
BME688::Bme688Configuration bme688;
SensorData sensor_data;
uint8_t last_op_mode;

// BME688 sensor specific method
ReturnCode InitialiseSensor();
Expand Down

0 comments on commit 53558e7

Please sign in to comment.