Skip to main content

NoMotionConfig

Struct NoMotionConfig 

Source
pub struct NoMotionConfig {
    pub axes: MotionAxes,
    pub threshold: u16,
    pub hysteresis: u16,
    pub duration: u16,
    pub wait_time: u8,
    pub reference_update: ReferenceUpdate,
    pub report_mode: EventReportMode,
    pub interrupt_hold: u8,
}
Expand description

Configuration for the BMI323 no-motion feature.

Fields§

§axes: MotionAxes

Axis selection for detection.

§threshold: u16

Maximum acceleration slope allowed for stationary detection.

Unit: g Scaling: raw / 512 Range: 0 ..= 4095, corresponding to approximately 0.0g ..= 7.998g

§hysteresis: u16

Hysteresis for the acceleration slope comparator.

Unit: g Scaling: raw / 512 Range: 0 ..= 1023, corresponding to approximately 0.0g ..= 1.998g

§duration: u16

Minimum duration for which the slope must stay below threshold.

Unit: seconds Scaling: raw / 50 Range: 0 ..= 8191, corresponding to approximately 0.0s ..= 163.82s

§wait_time: u8

Wait time before the event is cleared after the slope remains below threshold.

Unit: seconds Scaling: raw / 50 Range: 0 ..= 7, corresponding to 0.00s ..= 0.14s in 20ms steps

§reference_update: ReferenceUpdate

Reference update policy.

§report_mode: EventReportMode

Event reporting behavior.

§interrupt_hold: u8

Interrupt hold-time exponent used by the feature engine.

Effective hold time in non-latched mode: 0.625ms * 2^interrupt_hold

Valid raw range is 0 ..= 13. Larger values are clamped to 13 by the driver before programming the register. This setting is only applicable to non-latched feature-engine interrupts.

Implementations§

Source§

impl NoMotionConfig

Source

pub fn threshold_from_g(g: f32) -> u16

Convert a physical threshold in g to the BMI323 field encoding.

Source

pub fn threshold_to_g(raw: u16) -> f32

Convert a raw threshold field value back to g.

Source

pub fn hysteresis_from_g(g: f32) -> u16

Convert a physical hysteresis in g to the BMI323 field encoding.

Source

pub fn hysteresis_to_g(raw: u16) -> f32

Convert a raw hysteresis field value back to g.

Source

pub fn duration_from_seconds(seconds: f32) -> u16

Convert a duration in seconds to the BMI323 field encoding.

The datasheet specifies a 1/50s step size.

Source

pub fn duration_to_seconds(raw: u16) -> f32

Convert a raw duration field value back to seconds.

Source

pub fn wait_time_from_seconds(seconds: f32) -> u8

Convert a wait time in seconds to the BMI323 field encoding.

The datasheet specifies a 1/50s step size and a 3-bit field.

Source

pub fn wait_time_to_seconds(raw: u8) -> f32

Convert a raw wait-time field value back to seconds.

Source

pub fn interrupt_hold_from_millis(millis: f32) -> u8

Convert an interrupt hold time in milliseconds to the BMI323 field encoding.

The encoded hold time is 0.625ms * 2^n. This helper returns the smallest n that is greater than or equal to the requested duration and saturates at 13.

Source

pub fn interrupt_hold_to_millis(raw: u8) -> f32

Convert a raw interrupt-hold field value back to milliseconds.

Trait Implementations§

Source§

impl Clone for NoMotionConfig

Source§

fn clone(&self) -> NoMotionConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NoMotionConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Format for NoMotionConfig

Source§

fn format(&self, f: Formatter<'_>)

Writes the defmt representation of self to fmt.
Source§

impl PartialEq for NoMotionConfig

Source§

fn eq(&self, other: &NoMotionConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for NoMotionConfig

Source§

impl Eq for NoMotionConfig

Source§

impl StructuralPartialEq for NoMotionConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.