Skip to content

Commit fc53da5

Browse files
muramuradakejahl
andauthored
refactor(bmp388): refactor variable declaration and initialization
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
1 parent a49cffb commit fc53da5

File tree

1 file changed

+39
-69
lines changed

1 file changed

+39
-69
lines changed

src/drivers/barometer/bmp388/bmp388.cpp

Lines changed: 39 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -210,16 +210,15 @@ BMP388::collect()
210210
bool
211211
BMP388::soft_reset()
212212
{
213-
bool result = false;
214213
uint8_t status;
215-
int ret;
216-
217-
ret = _interface->get_reg(BMP3_SENS_STATUS_REG_ADDR, &status);
214+
int ret = _interface->get_reg(BMP3_SENS_STATUS_REG_ADDR, &status);
218215

219216
if (ret != OK) {
220217
return false;
221218
}
222219

220+
bool result = false;
221+
223222
if (status & BMP3_CMD_RDY) {
224223
ret = _interface->set_reg(BPM3_CMD_SOFT_RESET, BMP3_CMD_ADDR);
225224

@@ -248,16 +247,9 @@ BMP388::soft_reset()
248247
static int8_t cal_crc(uint8_t seed, uint8_t data)
249248
{
250249
int8_t poly = 0x1D;
251-
int8_t var2;
252-
uint8_t i;
253-
254-
for (i = 0; i < 8; i++) {
255-
if ((seed & 0x80) ^ (data & 0x80)) {
256-
var2 = 1;
257250

258-
} else {
259-
var2 = 0;
260-
}
251+
for (uint8_t i = 0; i < 8; i++) {
252+
int8_t var2 = ((seed & 0x80) ^ (data & 0x80)) ? 1 : 0;
261253

262254
seed = (seed & 0x7F) << 1;
263255
data = (data & 0x7F) << 1;
@@ -276,7 +268,6 @@ bool
276268
BMP388::validate_trimming_param()
277269
{
278270
uint8_t crc = 0xFF;
279-
uint8_t stored_crc;
280271
uint8_t *trim_param = (uint8_t *)_cal;
281272

282273
static_assert(BMP3_CALIB_DATA_LEN <= sizeof(*_cal), "unexpected struct size");
@@ -287,6 +278,8 @@ BMP388::validate_trimming_param()
287278

288279
crc = (crc ^ 0xFF);
289280

281+
uint8_t stored_crc;
282+
290283
if (_interface->get_reg(BMP3_TRIM_CRC_DATA_ADDR, &stored_crc) != OK) {
291284
return false;
292285
}
@@ -425,18 +418,14 @@ BMP388::set_sensor_settings()
425418
bool
426419
BMP388::set_op_mode(uint8_t op_mode)
427420
{
428-
bool result = false;
429-
uint8_t last_set_mode;
430421
uint8_t op_mode_reg_val;
431-
int ret = OK;
432-
433-
ret = _interface->get_reg(BMP3_PWR_CTRL_ADDR, &op_mode_reg_val);
422+
int ret = _interface->get_reg(BMP3_PWR_CTRL_ADDR, &op_mode_reg_val);
434423

435424
if (ret != OK) {
436425
return false;
437426
}
438427

439-
last_set_mode = BMP3_GET_BITS(op_mode_reg_val, BMP3_OP_MODE);
428+
uint8_t last_set_mode = BMP3_GET_BITS(op_mode_reg_val, BMP3_OP_MODE);
440429

441430
/* Device needs to be put in sleep mode to transition */
442431
if (last_set_mode != BMP3_SLEEP_MODE) {
@@ -450,6 +439,8 @@ BMP388::set_op_mode(uint8_t op_mode)
450439
px4_usleep(BMP3_POST_SLEEP_WAIT_TIME);
451440
}
452441

442+
bool result = false;
443+
453444
if (ret == OK) {
454445
ret = _interface->get_reg(BMP3_PWR_CTRL_ADDR, &op_mode_reg_val);
455446

@@ -478,13 +469,9 @@ BMP388::set_op_mode(uint8_t op_mode)
478469
*/
479470
static void parse_sensor_data(const uint8_t *reg_data, struct bmp3_uncomp_data *uncomp_data)
480471
{
481-
uint32_t data_xlsb;
482-
uint32_t data_lsb;
483-
uint32_t data_msb;
484-
485-
data_xlsb = (uint32_t)reg_data[0];
486-
data_lsb = (uint32_t)reg_data[1] << 8;
487-
data_msb = (uint32_t)reg_data[2] << 16;
472+
uint32_t data_xlsb = (uint32_t)reg_data[0];
473+
uint32_t data_lsb = (uint32_t)reg_data[1] << 8;
474+
uint32_t data_msb = (uint32_t)reg_data[2] << 16;
488475
uncomp_data->pressure = data_msb | data_lsb | data_xlsb;
489476

490477
data_xlsb = (uint32_t)reg_data[3];
@@ -503,24 +490,16 @@ static void parse_sensor_data(const uint8_t *reg_data, struct bmp3_uncomp_data *
503490
*/
504491
static int64_t compensate_temperature(const struct bmp3_uncomp_data *uncomp_data, struct bmp3_calib_data *calib_data)
505492
{
506-
int64_t partial_data1;
507-
int64_t partial_data2;
508-
int64_t partial_data3;
509-
int64_t partial_data4;
510-
int64_t partial_data5;
511-
int64_t partial_data6;
512-
int64_t comp_temp;
513-
514-
partial_data1 = ((int64_t)uncomp_data->temperature - (256 * calib_data->reg_calib_data.par_t1));
515-
partial_data2 = calib_data->reg_calib_data.par_t2 * partial_data1;
516-
partial_data3 = (partial_data1 * partial_data1);
517-
partial_data4 = (int64_t)partial_data3 * calib_data->reg_calib_data.par_t3;
518-
partial_data5 = ((int64_t)(partial_data2 * 262144) + partial_data4);
519-
partial_data6 = partial_data5 / 4294967296;
493+
int64_t partial_data1 = ((int64_t)uncomp_data->temperature - (256 * calib_data->reg_calib_data.par_t1));
494+
int64_t partial_data2 = calib_data->reg_calib_data.par_t2 * partial_data1;
495+
int64_t partial_data3 = (partial_data1 * partial_data1);
496+
int64_t partial_data4 = (int64_t)partial_data3 * calib_data->reg_calib_data.par_t3;
497+
int64_t partial_data5 = ((int64_t)(partial_data2 * 262144) + partial_data4);
498+
int64_t partial_data6 = partial_data5 / 4294967296;
520499

521500
/* Store t_lin in dev. structure for pressure calculation */
522501
calib_data->reg_calib_data.t_lin = partial_data6;
523-
comp_temp = (int64_t)((partial_data6 * 25) / 16384);
502+
int64_t comp_temp = (int64_t)((partial_data6 * 25) / 16384);
524503

525504
return comp_temp;
526505
}
@@ -536,27 +515,19 @@ static uint64_t compensate_pressure(const struct bmp3_uncomp_data *uncomp_data,
536515
const struct bmp3_calib_data *calib_data)
537516
{
538517
const struct bmp3_reg_calib_data *reg_calib_data = &calib_data->reg_calib_data;
539-
int64_t partial_data1;
540-
int64_t partial_data2;
541-
int64_t partial_data3;
542-
int64_t partial_data4;
543-
int64_t partial_data5;
544-
int64_t partial_data6;
545-
int64_t offset;
546-
int64_t sensitivity;
547-
uint64_t comp_press;
548-
549-
partial_data1 = reg_calib_data->t_lin * reg_calib_data->t_lin;
550-
partial_data2 = partial_data1 / 64;
551-
partial_data3 = (partial_data2 * reg_calib_data->t_lin) / 256;
552-
partial_data4 = (reg_calib_data->par_p8 * partial_data3) / 32;
553-
partial_data5 = (reg_calib_data->par_p7 * partial_data1) * 16;
554-
partial_data6 = (reg_calib_data->par_p6 * reg_calib_data->t_lin) * 4194304;
555-
offset = (reg_calib_data->par_p5 * 140737488355328) + partial_data4 + partial_data5 + partial_data6;
518+
519+
int64_t partial_data1 = reg_calib_data->t_lin * reg_calib_data->t_lin;
520+
int64_t partial_data2 = partial_data1 / 64;
521+
int64_t partial_data3 = (partial_data2 * reg_calib_data->t_lin) / 256;
522+
int64_t partial_data4 = (reg_calib_data->par_p8 * partial_data3) / 32;
523+
int64_t partial_data5 = (reg_calib_data->par_p7 * partial_data1) * 16;
524+
int64_t partial_data6 = (reg_calib_data->par_p6 * reg_calib_data->t_lin) * 4194304;
525+
int64_t offset = (reg_calib_data->par_p5 * 140737488355328) + partial_data4 + partial_data5 + partial_data6;
556526
partial_data2 = (reg_calib_data->par_p4 * partial_data3) / 32;
557527
partial_data4 = (reg_calib_data->par_p3 * partial_data1) * 4;
558528
partial_data5 = (reg_calib_data->par_p2 - 16384) * reg_calib_data->t_lin * 2097152;
559-
sensitivity = ((reg_calib_data->par_p1 - 16384) * 70368744177664) + partial_data2 + partial_data4 + partial_data5;
529+
int64_t sensitivity = ((reg_calib_data->par_p1 - 16384) * 70368744177664) + partial_data2 + partial_data4 +
530+
partial_data5;
560531
partial_data1 = (sensitivity / 16777216) * uncomp_data->pressure;
561532
partial_data2 = reg_calib_data->par_p10 * reg_calib_data->t_lin;
562533
partial_data3 = partial_data2 + (65536 * reg_calib_data->par_p9);
@@ -568,7 +539,7 @@ static uint64_t compensate_pressure(const struct bmp3_uncomp_data *uncomp_data,
568539
partial_data2 = (reg_calib_data->par_p11 * partial_data6) / 65536;
569540
partial_data3 = (partial_data2 * uncomp_data->pressure) / 128;
570541
partial_data4 = (offset / 4) + partial_data1 + partial_data5 + partial_data3;
571-
comp_press = (((uint64_t)partial_data4 * 25) / (uint64_t)1099511627776);
542+
uint64_t comp_press = (((uint64_t)partial_data4 * 25) / (uint64_t)1099511627776);
572543

573544
return comp_press;
574545
}
@@ -589,7 +560,7 @@ BMP388::compensate_data(uint8_t sensor_comp,
589560
struct bmp3_reg_calib_data *reg_calib_data = &calib_data.reg_calib_data;
590561
memcpy(reg_calib_data, _cal, 21);
591562

592-
if ((uncomp_data != NULL) && (comp_data != NULL)) {
563+
if ((uncomp_data != nullptr) && (comp_data != nullptr)) {
593564
if (sensor_comp & (BMP3_PRESS | BMP3_TEMP)) {
594565
comp_data->temperature = compensate_temperature(uncomp_data, &calib_data);
595566
}
@@ -599,10 +570,10 @@ BMP388::compensate_data(uint8_t sensor_comp,
599570
}
600571

601572
} else {
602-
rslt = -1;
573+
rslt = ERROR;
603574
}
604575

605-
return (rslt == 0);
576+
return (rslt == OK);
606577
}
607578

608579
/*!
@@ -613,13 +584,12 @@ BMP388::compensate_data(uint8_t sensor_comp,
613584
bool
614585
BMP388::get_sensor_data(uint8_t sensor_comp, struct bmp3_data *comp_data)
615586
{
616-
bool result = false;
617-
int8_t rslt;
587+
uint8_t reg_data[BMP3_P_T_DATA_LEN] {};
618588

619-
uint8_t reg_data[BMP3_P_T_DATA_LEN];
620-
struct bmp3_uncomp_data uncomp_data;
589+
int8_t rslt = _interface->get_reg_buf(BMP3_SENS_STATUS_REG_ADDR, reg_data, BMP3_P_T_DATA_LEN);
621590

622-
rslt = _interface->get_reg_buf(BMP3_SENS_STATUS_REG_ADDR, reg_data, BMP3_P_T_DATA_LEN);
591+
bool result = false;
592+
struct bmp3_uncomp_data uncomp_data {};
623593

624594
if (rslt == OK) {
625595
uint8_t status = reg_data[0];

0 commit comments

Comments
 (0)