Skip to content

Commit e4eb63c

Browse files
manchozgiulcioffi
authored andcommitted
Add methods to get sensor configuration
1 parent d497d9c commit e4eb63c

File tree

6 files changed

+82
-2
lines changed

6 files changed

+82
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
This sketch shows how to retrieve actual configuration
3+
- sample rate and latency – from sensors.
4+
*/
5+
6+
#include "Arduino.h"
7+
#include "Arduino_BHY2.h"
8+
9+
SensorXYZ accel(SENSOR_ID_ACC);
10+
SensorXYZ gyro(SENSOR_ID_GYRO);
11+
Sensor temp(SENSOR_ID_TEMP);
12+
Sensor gas(SENSOR_ID_GAS);
13+
SensorQuaternion rotation(SENSOR_ID_RV);
14+
15+
SensorConfig cfg;
16+
17+
void setup()
18+
{
19+
Serial.begin(115200);
20+
while (!Serial);
21+
22+
BHY2.begin();
23+
24+
accel.begin();
25+
gyro.begin();
26+
temp.begin();
27+
gas.begin();
28+
rotation.begin();
29+
30+
}
31+
32+
void loop()
33+
{
34+
static auto printTime = millis();
35+
36+
// Update function should be continuously polled
37+
BHY2.update();
38+
39+
if (millis() - printTime >= 1000) {
40+
printTime = millis();
41+
42+
static float rate;
43+
static uint32_t latency;
44+
45+
cfg = accel.getConfiguration();
46+
Serial.println(String("acceleration configuration - rate: ") + cfg.sample_rate + String("Hz - latency: ") + cfg.latency + String("ms - range: ") + cfg.range);
47+
48+
cfg = gyro.getConfiguration();
49+
Serial.println(String("gyro configuration - rate: ") + cfg.sample_rate + String(" - latency: ") + cfg.latency + String("ms - range: ") + cfg.range);
50+
51+
cfg = temp.getConfiguration();
52+
Serial.println(String("temperature configuration - rate: ") + cfg.sample_rate + String(" - latency: ") + cfg.latency + String("ms - range: ") + cfg.range);
53+
54+
cfg = gas.getConfiguration();
55+
Serial.println(String("gas configuration - rate: ") + cfg.sample_rate + String(" - latency: ") + cfg.latency + String("ms - range: ") + cfg.range);
56+
57+
cfg = rotation.getConfiguration();
58+
Serial.println(String("rotation configuration - rate: ") + cfg.sample_rate + String(" - latency: ") + cfg.latency + String("ms - range: ") + cfg.range);
59+
Serial.println();
60+
}
61+
}

src/BoschSensortec.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ void BoschSensortec::configureSensor(SensorConfigurationPacket& config)
116116
}
117117
}
118118

119+
void BoschSensortec::getSensorConfiguration(uint8_t id, SensorConfig& virt_sensor_conf)
120+
{
121+
bhy2_get_virt_sensor_cfg(id, &virt_sensor_conf, &_bhy2);
122+
}
123+
119124
uint8_t BoschSensortec::availableSensorData()
120125
{
121126
return _sensorQueue.size();

src/BoschSensortec.h

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class BoschSensortec {
3535
bool begin();
3636
void update();
3737
void configureSensor(SensorConfigurationPacket& config);
38+
void getSensorConfiguration(uint8_t id, SensorConfig& virt_sensor_conf);
3839

3940
void printSensors();
4041
bool hasSensor(uint8_t sensorId);

src/sensors/SensorClass.cpp

+10-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,16 @@ void SensorClass::configure(float rate, uint32_t latency)
4949

5050
}
5151

52+
const SensorConfig SensorClass::getConfiguration()
53+
{
54+
SensorConfig config;
55+
56+
sensortec.getSensorConfiguration(_id, config);
57+
58+
return config;
59+
}
60+
5261
void SensorClass::end()
5362
{
5463
configure(0, 0);
55-
}
64+
}

src/sensors/SensorClass.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class SensorClass {
2121
*/
2222
bool begin(float rate = 1000, uint32_t latency = 1);
2323
void configure(float rate, uint32_t latency);
24+
const SensorConfig getConfiguration();
2425
void end();
2526

2627
virtual void setData(SensorDataPacket &data) = 0;
@@ -32,4 +33,4 @@ class SensorClass {
3233
bool _subscribed;
3334
};
3435

35-
#endif
36+
#endif

src/sensors/SensorTypes.h

+3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22
#define SENSOR_TYPES_H_
33

44
#include "stdint.h"
5+
#include "bosch/bhy2_defs.h"
56

67
#define SENSOR_DATA_FIXED_LENGTH (10)
78

89
#define SENSOR_LONG_DATA_FIXED_LENGTH (18)
910

11+
typedef bhy2_virt_sensor_conf SensorConfig;
12+
1013
struct __attribute__((packed)) SensorConfigurationPacket {
1114
uint8_t sensorId;
1215
// sample rate is used also to enable/disable the sensor

0 commit comments

Comments
 (0)