Skip to main content

OutOfRangeDetector

Struct OutOfRangeDetector 

Source
pub struct OutOfRangeDetector {
Show 13 fields pub high_limit: f32, pub low_limit: f32, pub deadband: f32, pub limit_enable: LimitEnable, pub notification_class: u32, pub notify_type: u32, pub event_enable: u8, pub time_delay: u32, pub time_delay_normal: Option<u32>, pub event_state: EventState, pub acked_transitions: u8, pub pending: Option<PendingTransition>, pub fault_reliability: Option<u32>,
}
Expand description

OUT_OF_RANGE event detector for analog objects.

Implements the OUT_OF_RANGE event state machine:

  • NORMAL → HIGH_LIMIT when present_value > high_limit (if high_limit enabled)
  • NORMAL → LOW_LIMIT when present_value < low_limit (if low_limit enabled)
  • HIGH_LIMIT → NORMAL when present_value < high_limit - deadband
  • LOW_LIMIT → NORMAL when present_value > low_limit + deadband
  • HIGH_LIMIT → LOW_LIMIT when present_value < low_limit
  • LOW_LIMIT → HIGH_LIMIT when present_value > high_limit

Time_Delay (and Time_Delay_Normal for the NORMAL direction) is honored via the split Self::probe / Self::tick entry points: a present-value write calls probe, which seeds a pending transition (or fires immediately when the direction-appropriate delay is zero, [delay_toward]); a one-second periodic task calls tick to advance the countdown and fire on expiry.

Fields§

§high_limit: f32§low_limit: f32§deadband: f32§limit_enable: LimitEnable§notification_class: u32§notify_type: u32§event_enable: u8§time_delay: u32§time_delay_normal: Option<u32>

Time_Delay_Normal (property 356): the Clause 13.3.6 pTimeDelayNormal parameter — seconds that Normal conditions must persist before a NORMAL event state is indicated. None is the not-configured case and takes on time_delay: “If no value is available for this parameter, then it takes on the value of the pTimeDelay parameter.”

§event_state: EventState§acked_transitions: u8

Acknowledged-transitions bitfield (3 bits: TO_OFFNORMAL, TO_FAULT, TO_NORMAL). A set bit means the corresponding transition has been acknowledged.

§pending: Option<PendingTransition>

Pending delayed transition, or None when no delay is in progress.

§fault_reliability: Option<u32>

Reliability value in force at the last entry to FAULT; None outside FAULT.

Implementations§

Source§

impl OutOfRangeDetector

Source

pub const ALGORITHM: EventType = EventType::OUT_OF_RANGE

BACnet Event Type corresponding to this detector’s event algorithm.

Source

pub fn evaluate( &mut self, present_value: f32, reliability: u32, ) -> Option<TransitionOutcome>

Evaluate the present value against configured limits.

This is the per-write entry point: it seeds a pending delayed transition (or fires immediately when the direction-appropriate delay is zero) but never advances the countdown — so repeated writes to the same value do not shorten the delay. Returns Some(TransitionOutcome) whenever a transition fires; the outcome’s distribute flag carries the event_enable bit rather than withholding the transition.

Source

pub fn probe( &mut self, present_value: f32, reliability: u32, ) -> Option<TransitionOutcome>

Per-write probe: seed or cancel a pending transition, fire on zero delay.

When the direction-appropriate delay ([delay_toward]) is zero the transition is confirmed immediately and event_state is updated, preserving the legacy instant-transition behavior. Otherwise a PendingTransition is seeded (or cleared if the condition reverted) and None is returned; the periodic Self::tick advances and eventually confirms it.

Source

pub fn tick( &mut self, present_value: f32, reliability: u32, ) -> Option<TransitionOutcome>

Periodic tick: advance the countdown and fire on expiry.

Returns Some(TransitionOutcome) when the pending transition’s delay elapses this tick, or None if still counting down / no pending transition / the condition reverted (which cancels the pending).

Trait Implementations§

Source§

impl Clone for OutOfRangeDetector

Source§

fn clone(&self) -> OutOfRangeDetector

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for OutOfRangeDetector

Source§

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

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

impl Default for OutOfRangeDetector

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more