Skip to main content

FlatConfig

Struct FlatConfig 

Source
pub struct FlatConfig {
    pub theta: u8,
    pub blocking: FeatureBlockingMode,
    pub hold_time: u8,
    pub slope_threshold: u8,
    pub hysteresis: u8,
    pub report_mode: EventReportMode,
    pub interrupt_hold: u8,
}
Expand description

Configuration for the BMI323 flat-detection feature.

Fields§

§theta: u8

Maximum allowed tilt angle for the device to be considered flat.

Unit: degrees Encoding: nonlinear Field width: 6 bits Valid raw range: 0 ..= 63

The datasheet interpretation is (tan(theta)^2) * 64.

§blocking: FeatureBlockingMode

Blocking behavior to suppress flat-state changes during large movement.

§hold_time: u8

Minimum time the device must remain flat before the event is asserted.

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

§slope_threshold: u8

Minimum acceleration slope that blocks flat-status changes during large movement.

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

§hysteresis: u8

Angular hysteresis for flat detection.

Unit: degrees Encoding: nonlinear Field width: 8 bits

The datasheet expresses this field relative to the configured theta. The raw value can be programmed directly when precise control is needed.

§report_mode: EventReportMode

Event reporting behavior shared across feature-engine interrupts.

§interrupt_hold: u8

Shared feature-engine interrupt hold-time exponent.

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

Implementations§

Source§

impl FlatConfig

Source

pub fn hold_time_from_seconds(seconds: f32) -> u8

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

Source

pub fn hold_time_to_seconds(raw: u8) -> f32

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

Source

pub fn slope_threshold_from_g(g: f32) -> u8

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

Source

pub fn slope_threshold_to_g(raw: u8) -> f32

Convert a raw slope-threshold field value back to g.

Source

pub fn interrupt_hold_from_millis(millis: f32) -> u8

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

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 FlatConfig

Source§

fn clone(&self) -> FlatConfig

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 FlatConfig

Source§

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

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

impl Format for FlatConfig

Source§

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

Writes the defmt representation of self to fmt.
Source§

impl PartialEq for FlatConfig

Source§

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

Source§

impl Eq for FlatConfig

Source§

impl StructuralPartialEq for FlatConfig

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.