SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
SensorBMM150.hpp
Go to the documentation of this file.
1
31#pragma once
32
33#include "../../../SensorBuildOpt.h"
34#if !SENSORLIB_EXCLUDE_BMM150
35#include "../../../bosch/BMM150/bmm150.h"
36#include "../../../platform/comm/ComplexStaticDeviceWithHal.hpp"
37#include "../../MagnetometerBase.hpp"
38#include <memory>
39
40static constexpr uint8_t BMM150_DEFAULT_I2C_ADDRESS = 0x10;
41static constexpr uint8_t BMM150_I2C_ADDRESS_CSB_LOW_SDO_HIGH = 0x11;
42static constexpr uint8_t BMM150_I2C_ADDRESS_CSB_HIGH_SDO_LOW = 0x12;
43static constexpr uint8_t BMM150_I2C_ADDRESS_CSB_HIGH_SDO_HIGH = 0x13;
44
52{
53public:
58
62 ~SensorBMM150() = default;
63
69 bool readData(MagnetometerData &data) override;
70
75 bool isDataReady() override;
76
81 bool reset() override;
82
87 bool selfTest() override;
88
95 bool setFullScaleRange(MagFullScaleRange range) override;
96
102 bool setOutputDataRate(float odr) override;
103
109 bool setOperationMode(OperationMode mode) override;
110
116 bool setOversamplingRate(MagOverSampleRatio osr) override;
117
124 bool setDownsamplingRate(MagDownSampleRatio dsr) override;
125
135 bool configMagnetometer(OperationMode mode, MagFullScaleRange range, float odr,
137
138private:
139 bool initImpl(uint8_t param) override;
140 bool updateInterruptStatus();
141
142private:
143 std::unique_ptr<struct bmm150_dev> _dev;
144 int8_t _error_code;
145 struct bmm150_settings _settings;
146};
147
148#endif
OperationMode
Enumeration of sensor operation modes.
MagFullScaleRange
Enumeration defining full-scale range settings for the sensor.
MagDownSampleRatio
Enumeration defining down-sample ratios for the sensor.
@ DSR_1
1x down-sample ratio
MagOverSampleRatio
Enumeration defining over-sample ratios for the sensor.
Driver for Bosch BMM150 magnetometer.
bool setOutputDataRate(float odr) override
Set output data rate.
bool readData(MagnetometerData &data) override
Read one magnetometer sample.
bool isDataReady() override
Check if fresh data is ready.
bool setOperationMode(OperationMode mode) override
Set operation mode.
bool setDownsamplingRate(MagDownSampleRatio dsr) override
Set downsampling rate.
bool selfTest() override
Execute BMM150 normal self-test.
bool reset() override
Reset the sensor using external pin and software reset.
bool configMagnetometer(OperationMode mode, MagFullScaleRange range, float odr, MagOverSampleRatio osr, MagDownSampleRatio dsr=MagDownSampleRatio::DSR_1) override
Apply combined magnetometer configuration.
~SensorBMM150()=default
Destroy the BMM150 driver instance.
bool setFullScaleRange(MagFullScaleRange range) override
Set full-scale range.
bool setOversamplingRate(MagOverSampleRatio osr) override
Set oversampling level by mapping to BMM150 XY/Z repetition values.
SensorBMM150()
Construct a BMM150 driver instance.
Structure representing magnetometer data.