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

#include <SensorBMA456H.hpp>

Inheritance diagram for SensorBMA456H:
[legend]

Classes

struct  EventCallbacks
 Event callbacks for the sensor. More...
 

Public Member Functions

 SensorBMA456H ()
 Constructor for the SensorBMA456H class.
 
BMA4XXCapability::Capability getCapabilities () const override
 Get supported capabilities.
 
 ~SensorBMA456H ()=default
 Destructor for the SensorBMA456H class.
 
void setOnTapCallback (std::function< void(TapType)> cb)
 Set the callback for tap events.
 
void setOnStepDetectedCallback (std::function< void()> cb)
 Set the callback for step detection events.
 
void setOnStepCountCallback (std::function< void(uint32_t)> cb)
 Set the callback for step count events.
 
void setOnActivityCallback (std::function< void(ActivityType)> cb)
 Set the callback for activity events.
 
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.
 
EventCallbacksgetCallbacks ()
 Get the current callbacks.
 
const EventCallbacksgetCallbacks () const
 Get the current callbacks (const version)
 
bool enableFeature (uint16_t feature, bool enable)
 Enable or disable a specific feature.
 
bool enableDataReady (bool enable=true, InterruptPinMap pin_map=InterruptPinMap::PIN1) override
 Enable data ready interrupt.
 
bool enableStepCounter (bool enable, uint16_t step_counter_wm=1, bool reset_counter=false) override
 Enable or disable step counter.
 
bool getStepCounterWatermark (uint16_t &step_counter_wm) const
 Get the current step counter watermark.
 
bool enableStepDetector (bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) override
 Enable or disable step detector.
 
bool enableTapDetector (bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) override
 Enable or disable tap detection.
 
bool enableActivityRecognition (bool enable, bool interrupt_enable=false, InterruptPinMap pin_map=InterruptPinMap::PIN1) override
 Enable or disable activity recognition.
 
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.
 
uint32_t getStepCount ()
 Get the current step count.
 
bool resetStepCounter ()
 Reset the step counter.
 
ActivityType getActivityType ()
 Get the current activity type.
 
TapType getTapType ()
 Get the detected tap type.
 
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_tgetDev ()
 Get the device structure for the BMA4XX sensor.
 
uint32_t getTimeSampleMs () const
 Get the current sensor time in milliseconds.
 
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
 
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
 

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< SensorCommBasecomm
 
std::unique_ptr< SensorHalhal
 
std::unique_ptr< SensorCommStaticstaticComm
 
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
 
AccelerometerBaseoperator= (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 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)
 

Detailed Description

Definition at line 39 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

Constructor & Destructor Documentation

◆ SensorBMA456H()

SensorBMA456H::SensorBMA456H ( )
inline

Constructor for the SensorBMA456H class.

Note
Initializes the sensor with default settings and sets the remap offset for BMA456H specific features.

Definition at line 64 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::_remap_reg_offset.

◆ ~SensorBMA456H()

SensorBMA456H::~SensorBMA456H ( )
default

Destructor for the SensorBMA456H class.

Note
Cleans up the sensor resources (default implementation).

Member Function Documentation

◆ configAnyMotion()

bool SensorBMA456H::configAnyMotion ( uint16_t  threshold,
uint16_t  duration 
)
inlineoverridevirtual

Configure any-motion detection parameters with detailed unit conversion.

Note
This function sets both the threshold (sensitivity) and duration (time) for any-motion detection.

= 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:

  • 10 LSB = 10 × 0.48 mG = 4.8 mG = 0.0048 g
  • 100 mG = 100 / 0.48 ≈ 208 LSB

= 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:

  • 4 LSB = 4 × 20ms = 80ms = 0.08s
  • 50ms = 50 / 20 = 2.5 LSB (round to nearest integer)
Warning
The duration unit (20ms/LSB) is only accurate at 50Hz ODR. For other ODR settings, the time per sample changes. Time per sample = 1 / ODR Example at 100Hz ODR: 1 sample = 10ms, so duration = LSB × 10ms
Parameters
thresholdMotion 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
durationDetection 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
Returns
true if configuration successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 455 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References configMotion().

Referenced by configAnyMotionInPhysicalUnits(), and setup().

◆ configAnyMotionInPhysicalUnits()

bool SensorBMA456H::configAnyMotionInPhysicalUnits ( float  threshold_mg,
float  duration_ms 
)
inlineoverridevirtual

Configure any-motion detection using physical units.

Note
Easier to use than configAnyMotion() as it accepts physical units
Parameters
threshold_mgThreshold in milli-g (1 mG = 0.001 g) Will be converted to LSB: LSB = threshold_mg / 0.48
duration_msDuration in milliseconds (at 50Hz ODR) Will be converted to LSB: LSB = duration_ms / 20
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 563 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References configAnyMotion(), and SENSORLIB_LOG_D.

◆ configMotion()

bool SensorBMA456H::configMotion ( bool  any_motion,
uint16_t  threshold,
uint16_t  duration 
)
inlineoverridevirtual

Configure any-motion or no-motion detection parameters with detailed unit conversion.

Note
This function sets both the threshold (sensitivity) and duration (time) for any-motion/no-motion detection.

= 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:

  • 10 LSB = 10 × 0.48 mG = 4.8 mG = 0.0048 g
  • 100 mG = 100 / 0.48 ≈ 208 LSB

= 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:

  • 4 LSB = 4 × 20ms = 80ms = 0.08s
  • 50ms = 50 / 20 = 2.5 LSB (round to nearest integer)
Warning
The duration unit (20ms/LSB) is only accurate at 50Hz ODR. For other ODR settings, the time per sample changes. Time per sample = 1 / ODR Example at 100Hz ODR: 1 sample = 10ms, so duration = LSB × 10ms
Parameters
any_motiontrue to configure any-motion, false for no-motion
thresholdMotion 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
durationDetection 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
Returns
true if configuration successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 503 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, SENSORLIB_LOG_D, and SENSORLIB_LOG_E.

Referenced by configAnyMotion(), and configNoMotion().

◆ configNoMotion()

bool SensorBMA456H::configNoMotion ( uint16_t  threshold,
uint16_t  duration 
)
inlineoverridevirtual

Configure no-motion detection parameters with detailed unit conversion.

Note
This function sets both the threshold (sensitivity) and duration (time) for no-motion detection.

= 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:

  • 10 LSB = 10 × 0.48 mG = 4.8 mG = 0.0048 g
  • 100 mG = 100 / 0.48 ≈ 208 LSB

= 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:

  • 4 LSB = 4 × 20ms = 80ms = 0.08s
  • 50ms = 50 / 20 = 2.5 LSB (round to nearest integer)
Warning
The duration unit (20ms/LSB) is only accurate at 50Hz ODR. For other ODR settings, the time per sample changes. Time per sample = 1 / ODR Example at 100Hz ODR: 1 sample = 10ms, so duration = LSB × 10ms
Parameters
thresholdMotion 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
durationDetection 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
Returns
true if configuration successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 409 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References configMotion().

Referenced by configNoMotionInPhysicalUnits(), and setup().

◆ configNoMotionInPhysicalUnits()

bool SensorBMA456H::configNoMotionInPhysicalUnits ( float  threshold_mg,
float  duration_ms 
)
inlineoverridevirtual

Configure no-motion detection using physical units.

Note
Easier to use than configNoMotion() as it accepts physical units
Parameters
threshold_mgThreshold in milli-g (1 mG = 0.001 g) Will be converted to LSB: LSB = threshold_mg / 0.48
duration_msDuration in milliseconds (at 50Hz ODR) Will be converted to LSB: LSB = duration_ms / 20
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 585 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References configNoMotion(), and SENSORLIB_LOG_D.

◆ enableActivityRecognition()

bool SensorBMA456H::enableActivityRecognition ( bool  enable,
bool  interrupt_enable = false,
InterruptPinMap  pin_map = InterruptPinMap::PIN1 
)
inlineoverridevirtual

Enable or disable activity recognition.

Note
Activity recognition can detect stationary, walking, running, etc.
Parameters
enabletrue to enable, false to disable
interrupt_enableEnable/disable interrupt generation
pin_mapInterrupt pin to use (PIN1 or PIN2)
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 305 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References enableFeature(), and SensorBMA4XX::enableInterrupt().

Referenced by setup().

◆ enableAnyMotionDetection()

bool SensorBMA456H::enableAnyMotionDetection ( const MotionAxesConfig cfg,
bool  enable,
bool  interrupt_enable = false,
InterruptPinMap  pin_map = InterruptPinMap::PIN1 
)
inlineoverridevirtual

Enable or disable any-motion detection.

Note
Configures motion any-motion detection on selected axes
Parameters
&cfgConfiguration for which axes to monitor
enabletrue to enable, false to disable
interrupt_enableEnable/disable interrupt generation
pin_mapInterrupt pin to use (PIN1 or PIN2)
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 323 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References enableFeature(), SensorBMA4XX::enableInterrupt(), SensorBMA4XX::MotionAxesConfig::x_axis, SensorBMA4XX::MotionAxesConfig::y_axis, and SensorBMA4XX::MotionAxesConfig::z_axis.

Referenced by setup().

◆ enableDataReady()

bool SensorBMA456H::enableDataReady ( bool  enable = true,
InterruptPinMap  pin_map = InterruptPinMap::PIN1 
)
inlineoverridevirtual

Enable data ready interrupt.

Note
Configures the interrupt for accelerometer data ready events
Parameters
enableEnable/disable the data ready feature
pin_mapInterrupt pin to use (PIN1 or PIN2)
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 217 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::enableInterrupt().

Referenced by setup().

◆ enableFeature()

bool SensorBMA456H::enableFeature ( uint16_t  feature,
bool  enable 
)
inline

Enable or disable a specific feature.

Note
Enables/disables sensor features using bitmask. For step counter, also enables the step detector if needed.
Parameters
featureBitmask of features to enable/disable (BMA456H_*_EN constants)
enabletrue to enable, false to disable
Returns
true if successful, false on error

Definition at line 195 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, and SENSORLIB_LOG_E.

Referenced by enableActivityRecognition(), enableAnyMotionDetection(), enableNoMotionDetection(), enableStepCounter(), enableStepDetector(), and enableTapDetector().

◆ enableNoMotionDetection()

bool SensorBMA456H::enableNoMotionDetection ( const MotionAxesConfig cfg,
bool  enable,
bool  interrupt_enable = false,
InterruptPinMap  pin_map = InterruptPinMap::PIN1 
)
inlineoverridevirtual

Enable or disable no-motion detection.

Note
Configures motion no-motion detection on selected axes
Parameters
&cfgConfiguration for which axes to monitor
enabletrue to enable, false to disable
interrupt_enableEnable/disable interrupt generation
pin_mapInterrupt pin to use (PIN1 or PIN2)
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 353 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References enableFeature(), SensorBMA4XX::enableInterrupt(), SensorBMA4XX::MotionAxesConfig::x_axis, SensorBMA4XX::MotionAxesConfig::y_axis, and SensorBMA4XX::MotionAxesConfig::z_axis.

Referenced by setup().

◆ enableStepCounter()

bool SensorBMA456H::enableStepCounter ( bool  enable,
uint16_t  step_counter_wm = 1,
bool  reset_counter = false 
)
inlineoverridevirtual

Enable or disable step counter.

Note
Step counter counts total steps since last reset. Step detector must be enabled separately for step-by-step detection.
Parameters
enabletrue to enable, false to disable
step_counter_wmWatermark level for step counter interrupt (default: 1) Setting watermark level 1, the output step resolution is 20 steps. Eg: 1 means, 1 * 20 = 20. Every 20 steps once output triggers
reset_countertrue to reset counter to zero
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 233 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, enableFeature(), and SENSORLIB_LOG_E.

Referenced by setup().

◆ enableStepDetector()

bool SensorBMA456H::enableStepDetector ( bool  enable,
bool  interrupt_enable = false,
InterruptPinMap  pin_map = InterruptPinMap::PIN1 
)
inlineoverridevirtual

Enable or disable step detector.

Note
Step detector generates interrupt for each step detected. Use for real-time step detection rather than total count.
Parameters
enabletrue to enable, false to disable
interrupt_enableEnable/disable interrupt generation
pin_mapInterrupt pin to use (PIN1 or PIN2)
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 270 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References enableFeature(), and SensorBMA4XX::enableInterrupt().

Referenced by setup().

◆ enableTapDetector()

bool SensorBMA456H::enableTapDetector ( bool  enable,
bool  interrupt_enable = false,
InterruptPinMap  pin_map = InterruptPinMap::PIN1 
)
inlineoverridevirtual

Enable or disable tap detection.

Note
Enables single, double, and triple tap detection simultaneously. Use getTapType() to distinguish between tap types.
Parameters
enabletrue to enable, false to disable
interrupt_enableEnable/disable interrupt generation
pin_mapInterrupt pin to use (PIN1 or PIN2)
Returns
true if successful, false on error

Reimplemented from SensorBMA4XX.

Definition at line 288 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References enableFeature(), and SensorBMA4XX::enableInterrupt().

Referenced by setup().

◆ getActivityType()

ActivityType SensorBMA456H::getActivityType ( )
inline

Get the current activity type.

Note
Reads the current activity classification from the sensor. Activity recognition must be enabled first.
Returns
ActivityType enum value, or UNKNOWN on error

Definition at line 680 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, SENSORLIB_LOG_E, and UNKNOWN.

Referenced by update().

◆ getAnyMotionConfig()

bool SensorBMA456H::getAnyMotionConfig ( float &  threshold_mg,
float &  duration_ms 
)
inline

Get current motion detection configuration.

Note
Reads back the current threshold and duration settings
Parameters
[out]threshold_mgReturns threshold in milli-g
[out]duration_msReturns duration in milliseconds (at 50Hz ODR)
Returns
true if successful, false on error

Definition at line 604 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, SENSORLIB_LOG_D, and SENSORLIB_LOG_E.

◆ getCallbacks() [1/2]

EventCallbacks & SensorBMA456H::getCallbacks ( )
inline

Get the current callbacks.

Returns
Reference to the EventCallbacks structure
Note
Use this to modify callbacks directly or check current settings

Definition at line 173 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks.

◆ getCallbacks() [2/2]

const EventCallbacks & SensorBMA456H::getCallbacks ( ) const
inline

Get the current callbacks (const version)

Returns
Const reference to the EventCallbacks structure

Definition at line 182 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks.

◆ getCapabilities()

◆ getNoMotionConfig()

bool SensorBMA456H::getNoMotionConfig ( float &  threshold_mg,
float &  duration_ms 
)
inline

Get current no-motion detection configuration.

Note
Reads back the current threshold and duration settings
Parameters
[out]threshold_mgReturns threshold in milli-g
[out]duration_msReturns duration in milliseconds (at 50Hz ODR)
Returns
true if successful, false on error

Definition at line 630 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, SENSORLIB_LOG_D, and SENSORLIB_LOG_E.

◆ getStepCount()

uint32_t SensorBMA456H::getStepCount ( )
inline

Get the current step count.

Note
Reads the accumulated step count from the sensor. Step counter must be enabled first.
Returns
Current step count, or 0 on error

Definition at line 654 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, and SENSORLIB_LOG_E.

◆ getStepCounterWatermark()

bool SensorBMA456H::getStepCounterWatermark ( uint16_t &  step_counter_wm) const
inline

Get the current step counter watermark.

Note
This function retrieves the current watermark level for the step counter.
Parameters
&step_counter_wmReference to the variable to store the watermark level
Return values
trueif successful, false on error

Definition at line 256 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev.

◆ getTapType()

TapType SensorBMA456H::getTapType ( )
inline

Get the detected tap type.

Note
Determines what type of tap was detected (single, double, or triple). Tap detection must be enabled first.
Returns
TapType enum value, or NO_TAP on error or no tap detected

Definition at line 696 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev, DOUBLE_TAP, NO_TAP, SENSORLIB_LOG_E, SINGLE_TAP, and TRIPLE_TAP.

Referenced by update().

◆ resetStepCounter()

bool SensorBMA456H::resetStepCounter ( )
inline

Reset the step counter.

Note
This function resets the internal step counter to zero.
Return values
trueif successful, false on error

Definition at line 669 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References SensorBMA4XX::dev.

◆ setCallbacks()

void SensorBMA456H::setCallbacks ( const EventCallbacks cbs)
inline

Set all callbacks at once.

Note
This function copies the entire EventCallbacks structure.
Parameters
cbsReference to EventCallbacks structure containing all callbacks

Definition at line 163 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks.

◆ setOnActivityCallback()

void SensorBMA456H::setOnActivityCallback ( std::function< void(ActivityType)>  cb)
inline

Set the callback for activity events.

Note
The callback will be invoked when activity type changes (e.g., walking to running).
Parameters
cbCallback function that accepts ActivityType as parameter

Definition at line 123 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks, and SensorBMA456H::EventCallbacks::onActivity.

Referenced by setup(), and setupActivityCallback().

◆ setOnAnyMotionCallback()

void SensorBMA456H::setOnAnyMotionCallback ( std::function< void(void)>  cb)
inline

Set the any-motion callback for motion events.

Note
The callback will be invoked when motion state changes.
Parameters
cbCallback function that accepts void

Definition at line 133 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks, and SensorBMA456H::EventCallbacks::onAnyMotion.

Referenced by setup().

◆ setOnDataReadyCallback()

void SensorBMA456H::setOnDataReadyCallback ( std::function< void(AccelerometerData)>  cb)
inline

Set the callback for data ready events.

Note
The callback will be invoked when new accelerometer data is available.
Parameters
cbCallback function that accepts AccelerometerData reference

Definition at line 153 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks, and SensorBMA456H::EventCallbacks::onDataReady.

Referenced by setup(), and setupDataReadyCallback().

◆ setOnNoMotionCallback()

void SensorBMA456H::setOnNoMotionCallback ( std::function< void(void)>  cb)
inline

Set the callback for no-motion events.

Note
The callback will be invoked when no motion is detected.
Parameters
cbCallback function that accepts void

Definition at line 143 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks, and SensorBMA456H::EventCallbacks::onNoMotion.

Referenced by setup().

◆ setOnStepCountCallback()

void SensorBMA456H::setOnStepCountCallback ( std::function< void(uint32_t)>  cb)
inline

Set the callback for step count events.

Note
The callback will be invoked when step count is updated (provides total step count).
Parameters
cbCallback function that accepts uint32_t step count as parameter

Definition at line 113 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks, and SensorBMA456H::EventCallbacks::onStepCount.

Referenced by setup(), and setupStepCallbacks().

◆ setOnStepDetectedCallback()

void SensorBMA456H::setOnStepDetectedCallback ( std::function< void()>  cb)
inline

Set the callback for step detection events.

Note
The callback will be invoked when a step is detected (each step).

Definition at line 103 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks, and SensorBMA456H::EventCallbacks::onStepDetected.

Referenced by setup(), and setupStepCallbacks().

◆ setOnTapCallback()

void SensorBMA456H::setOnTapCallback ( std::function< void(TapType)>  cb)
inline

Set the callback for tap events.

Note
The callback will be invoked when a tap (single/double/triple) is detected.
Parameters
cbCallback function that accepts TapType as parameter

Definition at line 94 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References callbacks, and SensorBMA456H::EventCallbacks::onTap.

Referenced by setup(), and setupTapCallback().

◆ update()

void SensorBMA456H::update ( )
inlineoverridevirtual

Update sensor state and process interrupts.

Note
This method should be called periodically (e.g., in main loop) to check for and process sensor interrupts. It reads the interrupt status register and invokes the appropriate callbacks.
Returns
void

Implements SensorBMA4XX.

Definition at line 720 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

References _status, callbacks, SensorBMA4XX::dev, getActivityType(), getTapType(), SensorBMA456H::EventCallbacks::onActivity, SensorBMA456H::EventCallbacks::onAnyMotion, SensorBMA456H::EventCallbacks::onDataReady, SensorBMA456H::EventCallbacks::onNoMotion, SensorBMA456H::EventCallbacks::onStepCount, SensorBMA456H::EventCallbacks::onStepDetected, SensorBMA456H::EventCallbacks::onTap, and SensorBMA4XX::readData().

Referenced by loop().

Member Data Documentation

◆ _status

uint16_t SensorBMA456H::_status
protected

Definition at line 788 of file sensor/accelerometer/bma/SensorBMA456H.hpp.

Referenced by update().

◆ callbacks


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