|
SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
|
Driver for Bosch BMM150 magnetometer. More...
#include <SensorBMM150.hpp>
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 | |
| SensorBase & | operator= (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 SensorCommBase * | getComm () 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< SensorCommBase > | comm |
| std::unique_ptr< SensorHal > | hal |
| std::unique_ptr< SensorCommStatic > | staticComm |
| uint8_t | _addr = 0 |
| uint8_t | _iface = COMM_CUSTOM |
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.
| SensorBMM150::SensorBMM150 | ( | ) |
Construct a BMM150 driver instance.
Definition at line 37 of file SensorBMM150.cpp.
|
default |
Destroy the BMM150 driver instance.
|
overridevirtual |
Apply combined magnetometer configuration.
| mode | Operation mode. |
| range | Full-scale range. |
| odr | Output data rate in Hz. |
| osr | Oversampling ratio. |
| dsr | Downsampling ratio (ignored). |
Implements MagnetometerBase.
Definition at line 241 of file SensorBMM150.cpp.
References setFullScaleRange(), setOperationMode(), setOutputDataRate(), and setOversamplingRate().
Referenced by setup().
|
overridevirtual |
Check if fresh data is ready.
Implements MagnetometerBase.
Definition at line 73 of file SensorBMM150.cpp.
|
overridevirtual |
Read one magnetometer sample.
| data | Output data container. |
Implements MagnetometerBase.
Definition at line 41 of file SensorBMM150.cpp.
References MagnetometerBase::_declination_rad, SensorBase< MagnetometerData >::_sensitivity, SensorBase< MagnetometerData >::_x_offset, SensorBase< MagnetometerData >::_y_offset, SensorBase< MagnetometerData >::_z_offset, MagnetometerUtils::calculateHeading(), MagnetometerData::heading, MagnetometerData::heading_degrees, M_PI, MagnetometerData::magnetic_field, MagnetometerUtils::microTeslaToGauss(), MagnetometerData::overflow, MagnetometerData::raw, MagnetometerData::skip_data, SensorVector::x, RawVector::x, SensorVector::y, RawVector::y, SensorVector::z, and RawVector::z.
Referenced by loop().
|
overridevirtual |
Reset the sensor using external pin and software reset.
Implements MagnetometerBase.
Definition at line 81 of file SensorBMM150.cpp.
References DeviceBeginCommon::hal.
|
overridevirtual |
Execute BMM150 normal self-test.
Implements MagnetometerBase.
Definition at line 97 of file SensorBMM150.cpp.
|
overridevirtual |
Set downsampling rate.
| dsr | Downsampling ratio. |
Implements MagnetometerBase.
Definition at line 234 of file SensorBMM150.cpp.
References SENSORLIB_LOG_E.
|
overridevirtual |
Set full-scale range.
| range | Requested full-scale range. |
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().
|
overridevirtual |
Set operation mode.
| mode | Operation mode from MagnetometerBase. |
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().
|
overridevirtual |
Set output data rate.
| odr | Output data rate in Hz. |
Implements MagnetometerBase.
Definition at line 117 of file SensorBMM150.cpp.
References SensorBase< MagnetometerData >::_config, SensorConfig::sample_rate, and SENSORLIB_LOG_E.
Referenced by configMagnetometer().
|
overridevirtual |
Set oversampling level by mapping to BMM150 XY/Z repetition values.
| osr | Oversampling ratio level. |
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().