Skip to main content

AnyMotionConfig

Struct AnyMotionConfig 

Source
pub struct AnyMotionConfig {
    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 any-motion feature.

Fields§

§axes: MotionAxes

Axis selection for detection.

§threshold: u16

Minimum acceleration slope for motion 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 above 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 drops 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 AnyMotionConfig

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 AnyMotionConfig

Source§

fn clone(&self) -> AnyMotionConfig

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 AnyMotionConfig

Source§

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

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

impl Format for AnyMotionConfig

Source§

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

Writes the defmt representation of self to fmt.
Source§

impl PartialEq for AnyMotionConfig

Source§

fn eq(&self, other: &AnyMotionConfig) -> 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 AnyMotionConfig

Source§

impl Eq for AnyMotionConfig

Source§

impl StructuralPartialEq for AnyMotionConfig

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.