|
SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
|
#include <SensorBMA422.hpp>
Classes | |
| struct | EventCallbacks |
| Event callbacks for the sensor. More... | |
Public Member Functions | |
| SensorBMA422 () | |
| Constructor for the SensorBMA422 class. | |
| ~SensorBMA422 ()=default | |
| Destructor for the SensorBMA422 class. | |
| BMA4XXCapability::Capability | getCapabilities () const override |
| Get supported capabilities. | |
| void | setOnAnyMotionCallback (std::function< void(void)> cb) |
| Set the any-motion callback for motion events. | |
| void | setOnNoMotionCallback (std::function< void(void)> cb) |
| Set the callback for no-motion events. | |
| void | setOnDataReadyCallback (std::function< void(AccelerometerData)> cb) |
| Set the callback for data ready events. | |
| void | setCallbacks (const EventCallbacks &cbs) |
| Set all callbacks at once. | |
| EventCallbacks & | getCallbacks () |
| Get the current callbacks. | |
| const EventCallbacks & | getCallbacks () const |
| Get the current callbacks (const version) | |
| bool | enableDataReady (bool enable=true, InterruptPinMap pin_map=InterruptPinMap::PIN1) override |
| Enable data ready interrupt. | |
| bool | enableAnyMotionDetection (const MotionAxesConfig &cfg, bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) override |
| Enable or disable any-motion detection. | |
| bool | enableNoMotionDetection (const MotionAxesConfig &cfg, bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) override |
| Enable or disable no-motion detection. | |
| bool | configNoMotion (uint16_t threshold, uint16_t duration) override |
| Configure no-motion detection parameters with detailed unit conversion. | |
| bool | configAnyMotion (uint16_t threshold, uint16_t duration) override |
| Configure any-motion detection parameters with detailed unit conversion. | |
| bool | configMotion (bool any_motion, uint16_t threshold, uint16_t duration) override |
| Configure any-motion or no-motion detection parameters with detailed unit conversion. | |
| bool | configAnyMotionInPhysicalUnits (float threshold_mg, float duration_ms) override |
| Configure any-motion detection using physical units. | |
| bool | configNoMotionInPhysicalUnits (float threshold_mg, float duration_ms) override |
| Configure no-motion detection using physical units. | |
| bool | getAnyMotionConfig (float &threshold_mg, float &duration_ms) |
| Get current motion detection configuration. | |
| bool | getNoMotionConfig (float &threshold_mg, float &duration_ms) |
| Get current no-motion detection configuration. | |
| void | update () override |
| Update sensor state and process interrupts. | |
Public Member Functions inherited from SensorBMA4XX | |
| bool | readData (AccelerometerData &data) override |
| Get the accelerometer data. | |
| bool | isDataReady () override |
| Check if new accelerometer data is available. | |
| bool | reset () override |
| Reset the sensor. | |
| bool | selfTest () override |
| Perform a self-test on the sensor. | |
| bool | setFullScaleRange (AccelFullScaleRange range) override |
| Set the full-scale range of the accelerometer. | |
| bool | setOutputDataRate (float data_rate_hz) override |
| Set the output data rate of the accelerometer. | |
| bool | setBandwidth (AccelBandwidth bandwidth) |
| Set the bandwidth of the accelerometer. | |
| bool | setPerformanceMode (AccelPerfMode mode) |
| Set the performance mode of the accelerometer. | |
| bool | setOperationMode (OperationMode mode) override |
| Set the operation mode of the accelerometer. | |
| bool | configAccelerometer (OperationMode mode, AccelFullScaleRange range, float data_rate_hz, AccelBandwidth bandwidth, AccelPerfMode perf_mode) |
| Configure the accelerometer. | |
| float | getTemperature () const |
| Get the temperature reading from the sensor. | |
| uint16_t | getInterruptStatus () |
| Get the current interrupt status flags. | |
| bool | isInterruptActive (uint16_t interrupt_mask) |
| Check if a specific interrupt is active. | |
| bool | setInterruptPinConfig (InterruptPinMap pin_map, bool edge_trigger=false, bool active_low=true, bool output_en=true, bool input_en=false) |
| Configure the electrical properties of an interrupt pin. | |
| bool | enableInterrupt (InterruptPinMap pin_map, uint16_t interrupt_sources, bool enable) |
| Enable or disable specific interrupt sources on a pin. | |
| virtual bool | setRemapAxes (SensorRemap remap) |
| Set the remapping of axes for the BMA4XX sensor. | |
| const char * | getModelName () const |
| Get the model name of the BMA4XX sensor. | |
| bma4_dev_t * | getDev () |
| Get the device structure for the BMA4XX sensor. | |
| uint32_t | getTimeSampleMs () const |
| Get the current sensor time in milliseconds. | |
| virtual bool | enableTapDetector (bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) |
| Enable or disable tap detection (default: not supported) | |
| virtual bool | enableStepCounter (bool enable, uint16_t step_counter_wm=1, bool reset_counter=false) |
| Enable or disable step counter (default: not supported) | |
| virtual bool | enableStepDetector (bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) |
| Enable or disable step detector (default: not supported) | |
| virtual bool | enableActivityRecognition (bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) |
| Enable or disable activity recognition (default: not supported) | |
| virtual bool | enableTiltDetector (bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) |
| Enable or disable tilt detection (default: not supported) | |
Public Member Functions inherited from AccelerometerBase | |
| virtual float | getFullScaleRange () const |
| Get current full-scale range setting. | |
| virtual float | getOutputDataRate () const |
| Get current output data rate setting. | |
| virtual OperationMode | getOperationMode () const |
| Get current operation mode setting. | |
Public Member Functions inherited from SensorBase< AccelerometerData > | |
| 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 |
Protected Attributes | |
| EventCallbacks | callbacks |
| uint16_t | _status |
Protected Attributes inherited from SensorBMA4XX | |
| std::unique_ptr< struct bma4_dev > | dev |
| struct bma4_accel_config | _accel_conf |
| uint8_t | _remap_reg_offset |
| float | _half_scale |
Protected Attributes inherited from SensorBase< AccelerometerData > | |
| 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 |
Additional Inherited Members | |
Public Types inherited from SensorBMA4XX | |
| enum | BMA4XXModel { BMA422 = 0x12 , BMA423 = 0x13 , BMA456 = 0x16 , BMA456_AN_SEC = 0x1A } |
| Enumeration of BMA4XX models. More... | |
| using | bma4_dev_t = bma4_dev |
| typedef for BMA4 device structure | |
Protected Member Functions inherited from SensorBMA4XX | |
| SensorBMA4XX () | |
| Constructor for the SensorBMA4XX class. | |
| ~SensorBMA4XX ()=default | |
| Destructor for the SensorBMA4XX class. | |
Protected Member Functions inherited from AccelerometerBase | |
| AccelerometerBase () | |
| Construct a new AccelerometerBase object. | |
| virtual | ~AccelerometerBase ()=default |
| Destroy the AccelerometerBase object. | |
| AccelerometerBase (const AccelerometerBase &)=delete | |
| AccelerometerBase & | operator= (const AccelerometerBase &)=delete |
Protected Member Functions inherited from SensorBase< AccelerometerData > | |
| 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) |
Definition at line 39 of file sensor/accelerometer/bma/SensorBMA422.hpp.
|
inline |
Constructor for the SensorBMA422 class.
Definition at line 60 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References SensorBMA4XX::_remap_reg_offset.
|
default |
Destructor for the SensorBMA422 class.
|
inlineoverridevirtual |
Configure any-motion detection parameters with detailed unit conversion.
= Threshold Units = The threshold is specified in LSB (Least Significant Bits), where: 1 LSB = 0.48 mG = 0.48 × 0.001 g = 0.00048 g ≈ 0.0047 m/s²
To convert from milli-g to LSB: LSB = mg_value / 0.48
Example conversions:
= Duration Units = The duration is specified in LSB, where at 50Hz ODR: 1 LSB = 20 milliseconds
Duration in seconds = duration_LSB × 0.020
Example conversions:
| threshold | Motion detection threshold in LSB units (1 LSB = 0.48 mG) Recommended range: 10-200 (4.8-96 mG) Higher values = less sensitive, lower values = more sensitive |
| duration | Detection duration in LSB units (1 LSB = 20ms at 50Hz ODR) Recommended range: 1-20 (20ms to 400ms) Longer duration = more stable detection, less false positives |
Reimplemented from SensorBMA4XX.
Definition at line 311 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References configMotion().
Referenced by configAnyMotionInPhysicalUnits(), and setup().
|
inlineoverridevirtual |
Configure any-motion detection using physical units.
| threshold_mg | Threshold in milli-g (1 mG = 0.001 g) Will be converted to LSB: LSB = threshold_mg / 0.48 |
| duration_ms | Duration in milliseconds (at 50Hz ODR) Will be converted to LSB: LSB = duration_ms / 20 |
Reimplemented from SensorBMA4XX.
Definition at line 419 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References configAnyMotion(), and SENSORLIB_LOG_D.
|
inlineoverridevirtual |
Configure any-motion or no-motion detection parameters with detailed unit conversion.
= Threshold Units = The threshold is specified in LSB (Least Significant Bits), where: 1 LSB = 0.48 mG = 0.48 × 0.001 g = 0.00048 g ≈ 0.0047 m/s²
To convert from milli-g to LSB: LSB = mg_value / 0.48
Example conversions:
= Duration Units = The duration is specified in LSB, where at 50Hz ODR: 1 LSB = 20 milliseconds
Duration in seconds = duration_LSB × 0.020
Example conversions:
| any_motion | true to configure any-motion, false for no-motion |
| threshold | Motion detection threshold in LSB units (1 LSB = 0.48 mG) Recommended range: 10-200 (4.8-96 mG) Higher values = less sensitive, lower values = more sensitive |
| duration | Detection duration in LSB units (1 LSB = 20ms at 50Hz ODR) Recommended range: 1-20 (20ms to 400ms) Longer duration = more stable detection, less false positives |
Reimplemented from SensorBMA4XX.
Definition at line 359 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References SensorBMA4XX::dev, SENSORLIB_LOG_D, and SENSORLIB_LOG_E.
Referenced by configAnyMotion(), and configNoMotion().
|
inlineoverridevirtual |
Configure no-motion detection parameters with detailed unit conversion.
= Threshold Units = The threshold is specified in LSB (Least Significant Bits), where: 1 LSB = 0.48 mG = 0.48 × 0.001 g = 0.00048 g ≈ 0.0047 m/s²
To convert from milli-g to LSB: LSB = mg_value / 0.48
Example conversions:
= Duration Units = The duration is specified in LSB, where at 50Hz ODR: 1 LSB = 20 milliseconds
Duration in seconds = duration_LSB × 0.020
Example conversions:
| threshold | Motion detection threshold in LSB units (1 LSB = 0.48 mG) Recommended range: 10-200 (4.8-96 mG) Higher values = less sensitive, lower values = more sensitive |
| duration | Detection duration in LSB units (1 LSB = 20ms at 50Hz ODR) Recommended range: 1-20 (20ms to 400ms) Longer duration = more stable detection, less false positives |
Reimplemented from SensorBMA4XX.
Definition at line 265 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References configMotion().
Referenced by configNoMotionInPhysicalUnits(), and setup().
|
inlineoverridevirtual |
Configure no-motion detection using physical units.
| threshold_mg | Threshold in milli-g (1 mG = 0.001 g) Will be converted to LSB: LSB = threshold_mg / 0.48 |
| duration_ms | Duration in milliseconds (at 50Hz ODR) Will be converted to LSB: LSB = duration_ms / 20 |
Reimplemented from SensorBMA4XX.
Definition at line 441 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References configNoMotion(), and SENSORLIB_LOG_D.
|
inlineoverridevirtual |
Enable or disable any-motion detection.
| &cfg | Configuration for which axes to monitor |
| enable | true to enable, false to disable |
| interrupt_enable | Enable/disable interrupt generation |
| pin_map | Interrupt pin to use (PIN1 or PIN2) |
Reimplemented from SensorBMA4XX.
Definition at line 161 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References SensorBMA4XX::dev, SensorBMA4XX::enableInterrupt(), SENSORLIB_LOG_E, SensorBMA4XX::MotionAxesConfig::x_axis, SensorBMA4XX::MotionAxesConfig::y_axis, and SensorBMA4XX::MotionAxesConfig::z_axis.
Referenced by setup().
|
inlineoverridevirtual |
Enable data ready interrupt.
| enable | Enable/disable the data ready feature |
| pin_map | Interrupt pin to use (PIN1 or PIN2) |
Reimplemented from SensorBMA4XX.
Definition at line 147 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References SensorBMA4XX::enableInterrupt().
Referenced by setup().
|
inlineoverridevirtual |
Enable or disable no-motion detection.
| &cfg | Configuration for which axes to monitor |
| enable | true to enable, false to disable |
| interrupt_enable | Enable/disable interrupt generation |
| pin_map | Interrupt pin to use (PIN1 or PIN2) |
Reimplemented from SensorBMA4XX.
Definition at line 198 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References SensorBMA4XX::dev, SensorBMA4XX::enableInterrupt(), SENSORLIB_LOG_E, SensorBMA4XX::MotionAxesConfig::x_axis, SensorBMA4XX::MotionAxesConfig::y_axis, and SensorBMA4XX::MotionAxesConfig::z_axis.
Referenced by setup().
|
inline |
Get current motion detection configuration.
| [out] | threshold_mg | Returns threshold in milli-g |
| [out] | duration_ms | Returns duration in milliseconds (at 50Hz ODR) |
Definition at line 460 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References SensorBMA4XX::dev, SENSORLIB_LOG_D, and SENSORLIB_LOG_E.
|
inline |
Get the current callbacks.
Definition at line 126 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References callbacks.
|
inline |
Get the current callbacks (const version)
Definition at line 135 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References callbacks.
|
inlineoverridevirtual |
Get supported capabilities.
Implements SensorBMA4XX.
Definition at line 73 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References BMA4XXCapability::SupportAnyMotion, BMA4XXCapability::SupportAxisRemap, BMA4XXCapability::SupportDataReady, and BMA4XXCapability::SupportNoMotion.
|
inline |
Get current no-motion detection configuration.
| [out] | threshold_mg | Returns threshold in milli-g |
| [out] | duration_ms | Returns duration in milliseconds (at 50Hz ODR) |
Definition at line 486 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References SensorBMA4XX::dev, SENSORLIB_LOG_D, and SENSORLIB_LOG_E.
|
inline |
Set all callbacks at once.
| cbs | Reference to EventCallbacks structure containing all callbacks |
Definition at line 116 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References callbacks.
|
inline |
Set the any-motion callback for motion events.
| cb | Callback function that accepts void |
Definition at line 86 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References callbacks, and SensorBMA422::EventCallbacks::onAnyMotion.
Referenced by setup().
|
inline |
Set the callback for data ready events.
| cb | Callback function that accepts AccelerometerData reference |
Definition at line 106 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References callbacks, and SensorBMA422::EventCallbacks::onDataReady.
Referenced by setupDataReadyCallback().
|
inline |
Set the callback for no-motion events.
| cb | Callback function that accepts void |
Definition at line 96 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References callbacks, and SensorBMA422::EventCallbacks::onNoMotion.
Referenced by setup().
|
inlineoverridevirtual |
Update sensor state and process interrupts.
Implements SensorBMA4XX.
Definition at line 511 of file sensor/accelerometer/bma/SensorBMA422.hpp.
References _status, callbacks, SensorBMA4XX::dev, SensorBMA422::EventCallbacks::onAnyMotion, SensorBMA422::EventCallbacks::onDataReady, SensorBMA422::EventCallbacks::onNoMotion, and SensorBMA4XX::readData().
Referenced by loop().
|
protected |
Definition at line 561 of file sensor/accelerometer/bma/SensorBMA422.hpp.
Referenced by update().
|
protected |
Definition at line 560 of file sensor/accelerometer/bma/SensorBMA422.hpp.
Referenced by getCallbacks(), getCallbacks(), setCallbacks(), setOnAnyMotionCallback(), setOnDataReadyCallback(), setOnNoMotionCallback(), and update().