Skip to content

Commit 551c099

Browse files
authored
Merge pull request #47 from maidnl/add_sensor_configuration
Added configuration parameter to select the sensor present
2 parents d4e5ee3 + a749179 commit 551c099

File tree

2 files changed

+26
-14
lines changed

2 files changed

+26
-14
lines changed

src/BMI270.cpp

+19-13
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ void BoschSensorClass::onInterrupt(mbed::Callback<void(void)> cb)
3434
irq.rise(mbed::callback(this, &BoschSensorClass::interrupt_handler));
3535
}
3636
#endif
37-
int BoschSensorClass::begin() {
37+
int BoschSensorClass::begin(CfgBoshSensor_t cfg) {
3838

3939
_wire->begin();
4040

@@ -60,23 +60,29 @@ int BoschSensorClass::begin() {
6060
mag_dev_info._wire = _wire;
6161
mag_dev_info.dev_addr = bmm1.chip_id;
6262

63-
int8_t bmi270InitResult = bmi270_init(&bmi2);
64-
print_rslt(bmi270InitResult);
63+
int8_t result = 0;
6564

66-
int8_t bmi270ConfigResult = configure_sensor(&bmi2);
67-
print_rslt(bmi270ConfigResult);
65+
if(cfg != BOSCH_MAGNETOMETER_ONLY) {
6866

69-
int8_t bmm150InitResult = bmm150_init(&bmm1);
70-
print_rslt(bmm150InitResult);
67+
result |= bmi270_init(&bmi2);
68+
print_rslt(result);
7169

72-
int8_t bmm150ConfigResult = configure_sensor(&bmm1);
73-
print_rslt(bmm150ConfigResult);
70+
result |= configure_sensor(&bmi2);
71+
print_rslt(result);
72+
}
73+
74+
if(cfg != BOSCH_ACCELEROMETER_ONLY) {
75+
76+
result |= bmm150_init(&bmm1);
77+
print_rslt(result);
78+
79+
result = configure_sensor(&bmm1);
80+
print_rslt(result);
81+
}
7482

75-
bool success = bmi270InitResult == BMI2_OK && bmi270ConfigResult == BMI2_OK &&
76-
bmm150InitResult == BMM150_OK && bmm150ConfigResult == BMM150_OK;
77-
_initialized = success;
83+
_initialized = (result == 0);
7884

79-
return success;
85+
return _initialized;
8086
}
8187

8288

src/BoschSensorClass.h

+7-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
#include "utilities/BMI270-Sensor-API/bmi270.h"
2323
#include "utilities/BMM150-Sensor-API/bmm150.h"
2424

25+
typedef enum {
26+
BOSCH_ACCELEROMETER_ONLY,
27+
BOSCH_MAGNETOMETER_ONLY,
28+
BOSCH_ACCEL_AND_MAGN
29+
} CfgBoshSensor_t;
30+
2531
struct dev_info {
2632
TwoWire* _wire;
2733
uint8_t dev_addr;
@@ -35,7 +41,7 @@ class BoschSensorClass {
3541
void setContinuousMode();
3642
void oneShotMode();
3743

38-
int begin();
44+
int begin(CfgBoshSensor_t cfg = BOSCH_ACCEL_AND_MAGN);
3945
void end();
4046

4147
void debug(Stream&);

0 commit comments

Comments
 (0)