Skip to content

Commit e610372

Browse files
committed
Add list of sensors with long payload
1 parent ffe773b commit e610372

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

src/BoschParser.cpp

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "BoschParser.h"
22
#include "BoschSensortec.h"
3+
#include "sensors/SensorID.h"
34

45
Stream* BoschParser::_debug = NULL;
56

@@ -38,7 +39,16 @@ void BoschParser::parseData(const struct bhy2_fifo_parse_data_info *fifoData, vo
3839
_debug->print(" ");
3940
}
4041

41-
if (sensorData.sensorId == 115 || sensorData.sensorId == 171) {
42+
bool longSensor = false;
43+
44+
for (int i = 0; i < NUM_LONG_SENSOR; i++) {
45+
if (LongSensorList[i].id == sensorData.sensorId) {
46+
longSensor = true;
47+
break;
48+
}
49+
}
50+
51+
if (longSensor) {
4252
sensortec.addLongSensorData(sensorData);
4353
} else {
4454
SensorDataPacket shortData;

src/sensors/SensorID.h

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#ifndef SENSOR_ID_H_
22
#define SENSOR_ID_H_
33

4-
#define NUM_SUPPORTEND_SENSOR 77
4+
#define NUM_SUPPORTEND_SENSOR 79
5+
#define NUM_LONG_SENSOR 2
56

67
enum SensorID {
78
SENSOR_ID_ACC_PASS = 1, /* Accelerometer passthrough */
@@ -99,7 +100,8 @@ enum SensorPayload {
99100
P40BITUNSIGNED = 10,
100101
PEVENT = 11,
101102
ACTIVITY = 12,
102-
DEBUG_DATA = 13
103+
DEBUG_DATA = 13,
104+
BSEC = 14
103105
};
104106

105107
struct SensorStruct
@@ -109,6 +111,11 @@ struct SensorStruct
109111
float scaleFactor;
110112
};
111113

114+
static SensorStruct LongSensorList[2] = {
115+
{SENSOR_ID_BSEC, BSEC, 1.0},
116+
{SENSOR_ID_BSEC_LEGACY, BSEC, 1.0}
117+
};
118+
112119
static SensorStruct SensorList[NUM_SUPPORTEND_SENSOR] = {
113120
{SENSOR_ID_ACC_PASS, VECTOR3D, 1.0},
114121
{SENSOR_ID_ACC_RAW, VECTOR3D, 1.0},
@@ -158,6 +165,7 @@ static SensorStruct SensorList[NUM_SUPPORTEND_SENSOR] = {
158165
{SENSOR_ID_GYRO_BIAS_WU, VECTOR3D, 1.0},
159166
{SENSOR_ID_MAG_BIAS_WU, VECTOR3D, 1.0},
160167
{SENSOR_ID_STD_WU, PEVENT, 1.0},
168+
{SENSOR_ID_BSEC, BSEC, 1.0},
161169
{SENSOR_ID_TEMP, P16BITSIGNED, 0.01},
162170
{SENSOR_ID_BARO, P24BITUNSIGNED, 0.0078},
163171
{SENSOR_ID_HUM, P8BITUNISIGNED, 1.0},
@@ -180,6 +188,7 @@ static SensorStruct SensorList[NUM_SUPPORTEND_SENSOR] = {
180188
{SENSOR_ID_PROX, P8BITUNISIGNED, 1.0},
181189
{SENSOR_ID_LIGHT_WU, P16BITUNSIGNED, 46.296},
182190
{SENSOR_ID_PROX_WU, P8BITUNISIGNED, 1.0},
191+
{SENSOR_ID_BSEC_LEGACY, BSEC, 1.0},
183192
{DEBUG_DATA_EVENT, DEBUG_DATA, 1.0},
184193
{TIMESTAMP_SMALL_DELTA, P8BITUNISIGNED, 0.000015625},
185194
{TIMESTAMP_SMALL_DELTA_WU, P8BITUNISIGNED, 0.000015625},

src/sensors/SensorManager.cpp

+13-3
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,26 @@ void SensorManager::process(SensorLongDataPacket &data)
1010
{
1111
for (int i = 0; i < _sensorsLen; i++) {
1212
if (data.sensorId == _sensors[i]->id()) {
13-
if (_sensors[i]->id() == 115 || _sensors[i]->id() == 171) {
14-
// BSEC sensor is the only one with long payload
13+
14+
bool longSensor = false;
15+
16+
for (int i = 0; i < NUM_LONG_SENSOR; i++) {
17+
if (LongSensorList[i].id == data.sensorId) {
18+
longSensor = true;
19+
break;
20+
}
21+
}
22+
23+
if (longSensor) {
1524
_sensors[i]->setData(data);
1625
} else {
1726
// All the other sensors have short payloads
1827
SensorDataPacket shortData;
1928
memcpy(&shortData, &data, sizeof(SensorDataPacket));
2029
_sensors[i]->setData(shortData);
2130
}
22-
return; // can more sensor objects use the same sensor id?
31+
32+
return;
2333
}
2434
}
2535
}

0 commit comments

Comments
 (0)