M5Unit-IMU 0.0.2 git rev:e5b00aa
Loading...
Searching...
No Matches
m5::imu::IMUDataSource Class Referenceabstract

Thin contract between measurement units and consumers (e.g. AHRS) More...

#include <imu_data_source.hpp>

Inheritance diagram for m5::imu::IMUDataSource:
m5::unit::UnitAK8963 m5::unit::UnitBMI270 m5::unit::UnitBMM150 m5::unit::UnitBMM350 m5::unit::UnitMAG3110 m5::unit::UnitMPU6xxx m5::unit::UnitSH200Q m5::unit::UnitBMI270AuxBMM150 m5::unit::UnitMPU6050 m5::unit::UnitMPU6500 m5::unit::UnitMPU6886 m5::unit::UnitMPU9250

Public Member Functions

virtual Capability imuSpec () const =0
 What this source can provide.
 
virtual Capability readImuRaw (imu_raw_data_t &out)=0
 Pop the oldest unconsumed raw sample.
 
virtual void imuConvertParam (imu_convert_param_t &out) const =0
 Conversion coefficients for this source.
 
virtual bool sleep ()
 Put the device into its lowest reversible power state.
 
virtual bool wakeup ()
 Bring the device back from sleep()
 

Detailed Description

Thin contract between measurement units and consumers (e.g. AHRS)

Implementations report their capability, hand out unconsumed raw samples in oldest-first order (pop semantics), and expose conversion coefficients. User-defined sources only need to implement those three methods to plug into the AHRS layer; sleep()/wakeup() are optional and default to doing nothing.

Member Function Documentation

◆ imuConvertParam()

virtual void m5::imu::IMUDataSource::imuConvertParam ( imu_convert_param_t & out) const
pure virtual

Conversion coefficients for this source.

Parameters
[out]outConversion coefficients destination

Implemented in m5::unit::UnitAK8963, m5::unit::UnitBMI270, m5::unit::UnitBMI270AuxBMM150, m5::unit::UnitBMM150, m5::unit::UnitBMM350, m5::unit::UnitMAG3110, m5::unit::UnitMPU6xxx, and m5::unit::UnitSH200Q.

◆ imuSpec()

virtual Capability m5::imu::IMUDataSource::imuSpec ( ) const
pure virtual

What this source can provide.

Returns
Capability bits supported by this source

Implemented in m5::unit::UnitAK8963, m5::unit::UnitBMI270, m5::unit::UnitBMI270AuxBMM150, m5::unit::UnitBMM150, m5::unit::UnitBMM350, m5::unit::UnitMAG3110, m5::unit::UnitMPU6xxx, and m5::unit::UnitSH200Q.

◆ readImuRaw()

virtual Capability m5::imu::IMUDataSource::readImuRaw ( imu_raw_data_t & out)
pure virtual

Pop the oldest unconsumed raw sample.

Parameters
[out]outSample destination
Returns
Items actually filled (Capability::None if nothing left)

Implemented in m5::unit::UnitAK8963, m5::unit::UnitBMI270, m5::unit::UnitBMM150, m5::unit::UnitBMM350, m5::unit::UnitMAG3110, m5::unit::UnitMPU6xxx, and m5::unit::UnitSH200Q.

◆ sleep()

virtual bool m5::imu::IMUDataSource::sleep ( )
inlinevirtual

Put the device into its lowest reversible power state.

Returns
True if this source implements sleeping and the device accepted it

Optional: the default does nothing and returns false, so sources that cannot be suspended stay safe to aggregate. Implementations leave the device producing no samples while asleep. Periodic measurement is stopped; wakeup() does not restore it and callers must invoke startPeriodicMeasurement() again to resume sampling.

Reimplemented in m5::unit::UnitAK8963, m5::unit::UnitBMI270, m5::unit::UnitBMI270AuxBMM150, m5::unit::UnitBMM150, m5::unit::UnitBMM350, m5::unit::UnitMAG3110, and m5::unit::UnitMPU6xxx.

◆ wakeup()

virtual bool m5::imu::IMUDataSource::wakeup ( )
inlinevirtual

Bring the device back from sleep()

Returns
True if this source implements waking and the device accepted it

Optional: the default does nothing and returns false. Implementations bring the device back to a configurable state; they do not restore the measurement mode that was active before sleep(). Callers must invoke startPeriodicMeasurement() again to resume sampling. Calling this without a preceding sleep() must be harmless.

Reimplemented in m5::unit::UnitAK8963, m5::unit::UnitBMI270, m5::unit::UnitBMM150, m5::unit::UnitBMM350, m5::unit::UnitMAG3110, and m5::unit::UnitMPU6xxx.