SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
SensorBMM150 Class Reference

Driver for Bosch BMM150 magnetometer. More...

#include <SensorBMM150.hpp>

Inheritance diagram for SensorBMM150:
[legend]

Public Member Functions

 SensorBMM150 ()
 Construct a BMM150 driver instance.
 
 ~SensorBMM150 ()=default
 Destroy the BMM150 driver instance.
 
bool readData (MagnetometerData &data) override
 Read one magnetometer sample.
 
bool isDataReady () override
 Check if fresh data is ready.
 
bool reset () override
 Reset the sensor using external pin and software reset.
 
bool selfTest () override
 Execute BMM150 normal self-test.
 
bool setFullScaleRange (MagFullScaleRange range) override
 Set full-scale range.
 
bool setOutputDataRate (float odr) override
 Set output data rate.
 
bool setOperationMode (OperationMode mode) override
 Set operation mode.
 
bool setOversamplingRate (MagOverSampleRatio osr) override
 Set oversampling level by mapping to BMM150 XY/Z repetition values.
 
bool setDownsamplingRate (MagDownSampleRatio dsr) override
 Set downsampling rate.
 
bool configMagnetometer (OperationMode mode, MagFullScaleRange range, float odr, MagOverSampleRatio osr, MagDownSampleRatio dsr=MagDownSampleRatio::DSR_1) override
 Apply combined magnetometer configuration.
 
- Public Member Functions inherited from MagnetometerBase
 MagnetometerBase ()
 Constructor for the MagnetometerBase class.
 
virtual ~MagnetometerBase ()=default
 Destructor for the MagnetometerBase class.
 
virtual float getFullScaleRange () const
 Gets the full-scale range for the magnetometer.
 
virtual OperationMode getOperationMode () const
 Gets the operation mode for the magnetometer.
 
virtual uint16_t getOversamplingRate () const
 Gets the oversampling rate for the magnetometer.
 
virtual void setDeclination (float declination_deg)
 Set the magnetic declination correction value.
 
virtual float getDeclinationDeg () const
 Get the currently set magnetic declination in degrees.
 
virtual float getDeclinationRad () const
 Get the currently set magnetic declination in radians.
 
- Public Member Functions inherited from SensorBase< MagnetometerData >
 SensorBase (const SensorBase &)=delete
 
SensorBaseoperator= (const SensorBase &)=delete
 
void setOffset (int16_t x, int16_t y, int16_t z)
 Set sensor calibration offsets.
 
float getSensitivity () const
 Get sensor sensitivity.
 
SensorInfo getSensorInfo () const
 Get sensor information.
 
virtual SensorConfig getConfig () const
 Get current sensor configuration.
 
- Public Member Functions inherited from ComplexStaticDeviceWithHal
bool begin (CommInterface interface, SensorCommCustom::CustomCallback callback, SensorCommCustomHal::CustomHalCallback hal_callback, uint8_t addr=0)
 Initialize the sensor using custom callback interface.
 
- Public Member Functions inherited from DeviceBeginCommon
virtual ~DeviceBeginCommon ()
 
uint8_t getAddress () const
 
uint8_t getInterface () const
 
- Public Member Functions inherited from SensorCommWrapper
 SensorCommWrapper ()=default
 
int readReg (uint8_t reg) const
 
int readRegBuff (uint8_t reg, uint8_t *buf, size_t len) const
 
int readBuff (uint8_t *buf, size_t len) const
 
int writeReg (uint8_t reg, uint8_t val)
 
int writeRegBuff (uint8_t reg, uint8_t *buf, size_t len)
 
int writeBuff (uint8_t *buf, size_t len)
 
int writeThenRead (const uint8_t *write_buffer, size_t write_len, uint8_t *read_buffer, size_t read_len)
 
bool setRegBit (uint8_t reg, uint8_t bit)
 
bool clrRegBit (uint8_t reg, uint8_t bit)
 
bool getRegBit (uint8_t reg, uint8_t bit)
 
int updateBits (uint8_t reg, uint8_t mask, uint8_t value_shifted)
 
void setAddress (uint8_t address)
 
void setAck (bool enable)
 
- Public Member Functions inherited from SensorCommInterface
virtual ~SensorCommInterface ()=default
 

Additional Inherited Members

- Protected Member Functions inherited from SensorBase< MagnetometerData >
 SensorBase (SensorType sensor_type=SensorType::UNKNOWN)
 Construct a new SensorBase object.
 
virtual ~SensorBase ()=default
 Virtual destructor for proper polymorphic cleanup.
 
- Protected Member Functions inherited from ComplexStaticDeviceWithHal
bool ensureValid () const override
 Ensure the communication interface is valid.
 
- Protected Member Functions inherited from DeviceBeginCommon
 DeviceBeginCommon ()=default
 
virtual SensorCommBasegetComm () const override
 
virtual void beforeBegin ()
 
virtual void afterCommReady ()
 
virtual void afterInitSuccess (uint8_t param)
 
virtual void onBeginFail ()
 
bool fail ()
 
void clearCommState ()
 
template<typename CreateComm >
bool beginLifecycle (uint8_t addr, uint8_t iface, uint8_t initParam, CreateComm createComm)
 
- Protected Attributes inherited from MagnetometerBase
uint16_t _oversampling_rate
 
float _declination_rad
 
- Protected Attributes inherited from SensorBase< MagnetometerData >
SensorConfig _config
 Current configuration.
 
SensorInfo _info
 Sensor information.
 
int16_t _x_offset
 
int16_t _y_offset
 
int16_t _z_offset
 
float _sensitivity
 
- Protected Attributes inherited from DeviceBeginCommon
std::unique_ptr< SensorCommBasecomm
 
std::unique_ptr< SensorHalhal
 
std::unique_ptr< SensorCommStaticstaticComm
 
uint8_t _addr = 0
 
uint8_t _iface = COMM_CUSTOM
 

Detailed Description

Driver for Bosch BMM150 magnetometer.

This class adapts the Bosch BMM150 C driver to the unified MagnetometerBase interface used by this library.

Definition at line 51 of file SensorBMM150.hpp.

Constructor & Destructor Documentation

◆ SensorBMM150()

SensorBMM150::SensorBMM150 ( )

Construct a BMM150 driver instance.

Definition at line 37 of file SensorBMM150.cpp.

◆ ~SensorBMM150()

SensorBMM150::~SensorBMM150 ( )
default

Destroy the BMM150 driver instance.

Member Function Documentation

◆ configMagnetometer()

bool SensorBMM150::configMagnetometer ( OperationMode  mode,
MagFullScaleRange  range,
float  odr,
MagOverSampleRatio  osr,
MagDownSampleRatio  dsr = MagDownSampleRatio::DSR_1 
)
overridevirtual

Apply combined magnetometer configuration.

Parameters
modeOperation mode.
rangeFull-scale range.
odrOutput data rate in Hz.
osrOversampling ratio.
dsrDownsampling ratio (ignored).
Returns
true on success.

Implements MagnetometerBase.

Definition at line 241 of file SensorBMM150.cpp.

References setFullScaleRange(), setOperationMode(), setOutputDataRate(), and setOversamplingRate().

Referenced by setup().

◆ isDataReady()

bool SensorBMM150::isDataReady ( )
overridevirtual

Check if fresh data is ready.

Returns
true if data-ready interrupt flag is asserted.

Implements MagnetometerBase.

Definition at line 73 of file SensorBMM150.cpp.

◆ readData()

◆ reset()

bool SensorBMM150::reset ( )
overridevirtual

Reset the sensor using external pin and software reset.

Returns
true on success.

Implements MagnetometerBase.

Definition at line 81 of file SensorBMM150.cpp.

References DeviceBeginCommon::hal.

◆ selfTest()

bool SensorBMM150::selfTest ( )
overridevirtual

Execute BMM150 normal self-test.

Returns
true if self-test passes.

Implements MagnetometerBase.

Definition at line 97 of file SensorBMM150.cpp.

◆ setDownsamplingRate()

bool SensorBMM150::setDownsamplingRate ( MagDownSampleRatio  dsr)
overridevirtual

Set downsampling rate.

Note
BMM150 does not support configurable downsampling.
Parameters
dsrDownsampling ratio.
Returns
Always false.

Implements MagnetometerBase.

Definition at line 234 of file SensorBMM150.cpp.

References SENSORLIB_LOG_E.

◆ setFullScaleRange()

bool SensorBMM150::setFullScaleRange ( MagFullScaleRange  range)
overridevirtual

Set full-scale range.

Note
BMM150 range is fixed by hardware model; only FS_16G is accepted.
Parameters
rangeRequested full-scale range.
Returns
true when accepted.

Implements MagnetometerBase.

Definition at line 105 of file SensorBMM150.cpp.

References SensorBase< MagnetometerData >::_config, FS_16G, SensorConfig::range, and SENSORLIB_LOG_E.

Referenced by configMagnetometer().

◆ setOperationMode()

bool SensorBMM150::setOperationMode ( OperationMode  mode)
overridevirtual

Set operation mode.

Parameters
modeOperation mode from MagnetometerBase.
Returns
true on success.

Implements MagnetometerBase.

Definition at line 165 of file SensorBMM150.cpp.

References SensorBase< MagnetometerData >::_config, CONTINUOUS_MEASUREMENT, SensorConfig::mode, NORMAL, SINGLE_MEASUREMENT, and SUSPEND.

Referenced by configMagnetometer().

◆ setOutputDataRate()

bool SensorBMM150::setOutputDataRate ( float  odr)
overridevirtual

Set output data rate.

Parameters
odrOutput data rate in Hz.
Returns
true on success.

Implements MagnetometerBase.

Definition at line 117 of file SensorBMM150.cpp.

References SensorBase< MagnetometerData >::_config, SensorConfig::sample_rate, and SENSORLIB_LOG_E.

Referenced by configMagnetometer().

◆ setOversamplingRate()

bool SensorBMM150::setOversamplingRate ( MagOverSampleRatio  osr)
overridevirtual

Set oversampling level by mapping to BMM150 XY/Z repetition values.

Parameters
osrOversampling ratio level.
Returns
true on success.

Implements MagnetometerBase.

Definition at line 195 of file SensorBMM150.cpp.

References MagnetometerBase::_oversampling_rate, OSR_1, OSR_2, OSR_4, and OSR_8.

Referenced by configMagnetometer().


The documentation for this class was generated from the following files: