pub struct EventEnrollmentObject { /* private fields */ }Expand description
BACnet EventEnrollment object.
Provides algorithmic event detection for a referenced object property.
The event_parameters are stored as a structured
BACnetEventParameter, preserving algorithm alternatives and unknown
(vendor/reserved) values across a complete property round trip.
Implementations§
Source§impl EventEnrollmentObject
impl EventEnrollmentObject
Sourcepub fn new(
instance: u32,
name: impl Into<String>,
event_type: EventType,
) -> Result<Self, Error>
pub fn new( instance: u32, name: impl Into<String>, event_type: EventType, ) -> Result<Self, Error>
Create a new EventEnrollment object whose Event_Type is event_type.
Sourcepub fn set_description(&mut self, desc: impl Into<String>)
pub fn set_description(&mut self, desc: impl Into<String>)
Set the description string.
Sourcepub fn set_object_property_reference(
&mut self,
reference: Option<BACnetDeviceObjectPropertyReference>,
) -> Result<(), Error>
pub fn set_object_property_reference( &mut self, reference: Option<BACnetDeviceObjectPropertyReference>, ) -> Result<(), Error>
Set Object_Property_Reference, the property the enrollment monitors,
or None for none. The property is read-only over the network.
A reference whose object or Device is at the reserved instance
4194303 is the unset form, so it leaves the enrollment without one
(#1417).
A reference whose device identifier isn’t a Device object is refused with PROPERTY / VALUE_OUT_OF_RANGE and the reference set before is kept (#1308).
Sourcepub fn set_event_parameters(&mut self, params: BACnetEventParameter)
pub fn set_event_parameters(&mut self, params: BACnetEventParameter)
Set the structured event parameters.
Sourcepub fn set_fault_parameters(&mut self, fp: Option<FaultParameters>)
pub fn set_fault_parameters(&mut self, fp: Option<FaultParameters>)
Set the fault parameters for this event enrollment.
Sourcepub fn set_event_state(&mut self, state: EventState)
pub fn set_event_state(&mut self, state: EventState)
Set the event state.
A configuration/seeding helper, not a lifecycle path — the evaluator
uses BACnetObject::set_event_state_internal. It honors the same
Clause 13.2.2.1 rule: while Event_Detection_Enable is FALSE the object
must read NORMAL, so a non-NORMAL seed is ignored rather than silently
breaking the invariant. Without this the public API would offer a way
around a guard the rest of the object enforces.
Sourcepub fn set_notification_class(&mut self, nc: u32)
pub fn set_notification_class(&mut self, nc: u32)
Set the notification class.
Sourcepub fn set_event_enable(&mut self, enable: EventTransitionBits)
pub fn set_event_enable(&mut self, enable: EventTransitionBits)
Set Event_Enable: the transitions whose notifications are distributed.
Flags outside the three named transitions are dropped.
Sourcepub fn set_time_delay_normal(&mut self, delay: Option<u32>)
pub fn set_time_delay_normal(&mut self, delay: Option<u32>)
Set Time_Delay_Normal (the pTimeDelayNormal parameter). None
restores the not-configured case, which takes on the
Event_Parameters Time_Delay value (Clause 13.3 fallback).
Trait Implementations§
Source§impl BACnetObject for EventEnrollmentObject
impl BACnetObject for EventEnrollmentObject
Source§fn set_event_state_internal(&mut self, state: EventState) -> Result<(), Error>
fn set_event_state_internal(&mut self, state: EventState) -> Result<(), Error>
Internal lifecycle path for the algorithmically-derived Event_State.
The evaluator calls this — not write_property(EVENT_STATE, …) — so the
network route (which rejects EVENT_STATE) and the internal lifecycle
path are distinct (issue #130). Stores the modeled state verbatim; the
only caller is the trusted server evaluator.
Refuses any non-NORMAL state while Event_Detection_Enable is FALSE.
Clause 13.2.2.1 prohibits transitions in that case,
and the server evaluator already skips such objects — this guard makes
the invariant hold by construction rather than by the caller
remembering, so a future caller cannot reintroduce the violation.
Source§fn enrollment_eval_state_internal(&self) -> Option<EventEnrollmentEvalState>
fn enrollment_eval_state_internal(&self) -> Option<EventEnrollmentEvalState>
Snapshot the pending countdown and algorithm baselines for the server evaluator.
Source§fn set_enrollment_eval_state_internal(
&mut self,
state: EventEnrollmentEvalState,
) -> Result<(), Error>
fn set_enrollment_eval_state_internal( &mut self, state: EventEnrollmentEvalState, ) -> Result<(), Error>
Store the enrollment evaluation state. Refused while
Event_Detection_Enable is FALSE: Clause 13.2.2.1 freezes the state
machine by suspending evaluation, and the reset in the
write arm has already returned these fields to their initial
condition, so a write arriving while disabled can only be stale.
Source§fn acknowledge_alarm(
&mut self,
transition_bit: EventTransitionBits,
) -> Result<(), Error>
fn acknowledge_alarm( &mut self, transition_bit: EventTransitionBits, ) -> Result<(), Error>
Acknowledge an alarm transition (the AcknowledgeAlarm service route,
Clause 13.9): Clause 13.2.3 sets the bit on the acknowledgment
indication — unconditional and idempotent, so a repeated ack succeeds
again. A detection-DISABLED enrollment instead refuses with
OBJECT/NO_ALARM_CONFIGURED, which Table 13-10 uses for an existing object
lacking event-generation support or configuration: it can
generate nothing, and Clause 12.12 keeps its Acked_Transitions at
the initial condition, which an accepted ack would break.
Out_Of_Service does not gate the ack: no clause bars acknowledging a
notification already issued while the object is out of service.
Source§fn set_acked_transitions_internal(
&mut self,
transition_bit: EventTransitionBits,
acknowledged: bool,
) -> Result<(), Error>
fn set_acked_transitions_internal( &mut self, transition_bit: EventTransitionBits, acknowledged: bool, ) -> Result<(), Error>
Clause 13.2.3’s transition-received maintenance of Acked_Transitions:
the evaluator resolves Ack_Required from the referenced Notification
Class object and this call applies the outcome — clear the bit when
ack is required, set it otherwise. Refused while detection is
disabled, preserving the same invariant as above: Acked_Transitions
must retain its initial value throughout the disabled period.
Source§fn is_writable_property(&self, property: PropertyIdentifier) -> bool
fn is_writable_property(&self, property: PropertyIdentifier) -> bool
Mirrors the write_property arms above, so PICS reports what dispatch
actually accepts.
Enumerated explicitly: the intrinsic-reporting objects accept
HIGH_LIMIT, LOW_LIMIT, DEADBAND, LIMIT_ENABLE and TIME_DELAY,
none of which an Event Enrollment accepts, because it carries those
inside Event_Parameters instead. TIME_DELAY_NORMAL is accepted here
as a real (O-coded) property, per Table 12-14.
Event_Detection_Enable is writable even though Table 12-14 codes it R
rather than W: Clause 12.1.2 lets implementors accept writes to an R
property unless that object’s property description expressly forbids
them. Clause 12.12 has no such prohibition; it anticipates setting the
value during configuration without mandating that timing. Annex K’s
AE-AVM-A BIBB (Table K-17) positively requires a conforming workstation
to be able to write this property, so refusing the write would be
interoperably hostile.
Source§fn object_identifier(&self) -> ObjectIdentifier
fn object_identifier(&self) -> ObjectIdentifier
Source§fn object_name(&self) -> &str
fn object_name(&self) -> &str
Source§fn read_property(
&self,
property: PropertyIdentifier,
array_index: Option<u32>,
) -> Result<PropertyValue, Error>
fn read_property( &self, property: PropertyIdentifier, array_index: Option<u32>, ) -> Result<PropertyValue, Error>
Source§fn write_property(
&mut self,
property: PropertyIdentifier,
_array_index: Option<u32>,
value: PropertyValue,
_priority: Option<u8>,
) -> Result<(), Error>
fn write_property( &mut self, property: PropertyIdentifier, _array_index: Option<u32>, value: PropertyValue, _priority: Option<u8>, ) -> Result<(), Error>
Source§fn enrollment_eval_source_internal(
&self,
) -> Option<Option<EventEnrollmentMonitoredSource>>
fn enrollment_eval_source_internal( &self, ) -> Option<Option<EventEnrollmentMonitoredSource>>
Source§fn set_enrollment_eval_source_internal(
&mut self,
source: Option<EventEnrollmentMonitoredSource>,
) -> Result<(), Error>
fn set_enrollment_eval_source_internal( &mut self, source: Option<EventEnrollmentMonitoredSource>, ) -> Result<(), Error>
Source§fn property_metadata(&self) -> Cow<'_, [PropertyMetadata]>
fn property_metadata(&self) -> Cow<'_, [PropertyMetadata]>
Source§fn property_list(&self) -> Cow<'static, [PropertyIdentifier]>
fn property_list(&self) -> Cow<'static, [PropertyIdentifier]>
Source§fn write_property_from(
&mut self,
property: PropertyIdentifier,
array_index: Option<u32>,
value: PropertyValue,
priority: Option<u8>,
_origin: &CommandOrigin,
) -> Result<(), Error>
fn write_property_from( &mut self, property: PropertyIdentifier, array_index: Option<u32>, value: PropertyValue, priority: Option<u8>, _origin: &CommandOrigin, ) -> Result<(), Error>
Source§fn is_array_property(&self, property: PropertyIdentifier) -> bool
fn is_array_property(&self, property: PropertyIdentifier) -> bool
property accepts an array index on this object. Read moreSource§fn is_list_property(&self, property: PropertyIdentifier) -> bool
fn is_list_property(&self, property: PropertyIdentifier) -> bool
property is a BACnetLIST on this object. Read moreSource§fn is_createable(&self) -> bool
fn is_createable(&self) -> bool
Source§fn creation_only_properties(&self) -> &'static [PropertyIdentifier]
fn creation_only_properties(&self) -> &'static [PropertyIdentifier]
Source§fn initialize_property(
&mut self,
_property: PropertyIdentifier,
_value: PropertyValue,
) -> Result<(), Error>
fn initialize_property( &mut self, _property: PropertyIdentifier, _value: PropertyValue, ) -> Result<(), Error>
Self::creation_only_properties, written whole. Read moreSource§fn is_deleteable(&self) -> bool
fn is_deleteable(&self) -> bool
Source§fn required_properties(&self) -> Cow<'static, [PropertyIdentifier]>
fn required_properties(&self) -> Cow<'static, [PropertyIdentifier]>
Source§fn supports_cov(&self) -> bool
fn supports_cov(&self) -> bool
Source§fn supports_subscribe_cov_property(&self) -> bool
fn supports_subscribe_cov_property(&self) -> bool
Source§fn supports_cov_property(&self, property: PropertyIdentifier) -> bool
fn supports_cov_property(&self, property: PropertyIdentifier) -> bool
Source§fn cov_increment(&self) -> Option<f64>
fn cov_increment(&self) -> Option<f64>
Source§fn cov_reported_properties(&self) -> &'static [CovReportedProperty]
fn cov_reported_properties(&self) -> &'static [CovReportedProperty]
Source§fn set_overridden(&mut self, _overridden: bool)
fn set_overridden(&mut self, _overridden: bool)
Source§fn evaluate_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
fn evaluate_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
Source§fn tick_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
fn tick_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
Time_Delay countdown for a pending transition. Read moreSource§fn tick_schedule(
&mut self,
_today: SpecificDate,
_time: Time,
_calendar_active: &dyn Fn(ObjectIdentifier) -> bool,
) -> Option<ScheduleWrite>
fn tick_schedule( &mut self, _today: SpecificDate, _time: Time, _calendar_active: &dyn Fn(ObjectIdentifier) -> bool, ) -> Option<ScheduleWrite>
Source§fn take_owed_schedule_writes(&mut self) -> Vec<ScheduleWrite>
fn take_owed_schedule_writes(&mut self) -> Vec<ScheduleWrite>
Source§fn complete_schedule_write(
&mut self,
_write: &ScheduleWrite,
_outcomes: &[ScheduleTargetOutcome],
) -> bool
fn complete_schedule_write( &mut self, _write: &ScheduleWrite, _outcomes: &[ScheduleTargetOutcome], ) -> bool
write, one of this schedule’s writes:
outcomes holds one entry per member of write.references, in order. Read moreSource§fn retry_refusals_naming(
&self,
_target: ObjectIdentifier,
) -> Option<ScheduleWrite>
fn retry_refusals_naming( &self, _target: ObjectIdentifier, ) -> Option<ScheduleWrite>
retry of the current value to the
references whose last write was refused and that name target, an
object just added to the database (#1440), so the refusal can clear
without waiting for the next pass. None when no such refusal
stands, or when the pass itself would retry nothing: out of service,
outside Effective_Period, or with a NULL Present_Value. Only
meaningful for Schedule objects; default returns None.Source§fn apply_life_safety_operation(
&mut self,
_operation: LifeSafetyOperation,
) -> Result<LifeSafetyOperationOutcome, Error>
fn apply_life_safety_operation( &mut self, _operation: LifeSafetyOperation, ) -> Result<LifeSafetyOperationOutcome, Error>
Source§fn set_life_safety_operation_expected_internal(
&mut self,
_operation: LifeSafetyOperation,
) -> Result<(), Error>
fn set_life_safety_operation_expected_internal( &mut self, _operation: LifeSafetyOperation, ) -> Result<(), Error>
Source§fn evaluate_reliability_internal(
&mut self,
) -> Result<ReliabilityEvaluation, Error>
fn evaluate_reliability_internal( &mut self, ) -> Result<ReliabilityEvaluation, Error>
Reliability. Read moreSource§fn set_reliability_internal(
&mut self,
_reliability: Reliability,
) -> Result<(), Error>
fn set_reliability_internal( &mut self, _reliability: Reliability, ) -> Result<(), Error>
Reliability value. Read moreSource§fn set_present_value_internal(
&mut self,
_value: PropertyValue,
) -> Result<(), Error>
fn set_present_value_internal( &mut self, _value: PropertyValue, ) -> Result<(), Error>
Present_Value supplied by the local application. Read moreSource§fn set_present_value_from_internal(
&mut self,
value: PropertyValue,
_origin: &CommandOrigin,
) -> Result<(), Error>
fn set_present_value_from_internal( &mut self, value: PropertyValue, _origin: &CommandOrigin, ) -> Result<(), Error>
Source§fn set_tracking_value_internal(
&mut self,
_value: PropertyValue,
) -> Result<(), Error>
fn set_tracking_value_internal( &mut self, _value: PropertyValue, ) -> Result<(), Error>
Tracking_Value the local application derived. Read moreSource§fn report_access_input_internal(
&mut self,
_input: AccessControlInput,
) -> Result<(), Error>
fn report_access_input_internal( &mut self, _input: AccessControlInput, ) -> Result<(), Error>
AccessControlInput. Read more