pub struct TrendLogObject { /* private fields */ }Expand description
BACnet TrendLog object (type 20, Clause 12.25).
Ring buffer of timestamped values of the one property
Log_DeviceObjectProperty names. The database’s trend poller samples it
every Log_Interval while Logging_Type is POLLED, at clock-aligned times
when Align_Intervals asks for them, and once for each Trigger while it is
TRIGGERED; the application may also call add_record(). Records are kept
only while Enable is TRUE and the local time lies between Start_Time and
Stop_Time. COV logging isn’t carried out, so Logging_Type refuses it.
Implementations§
Source§impl TrendLogObject
impl TrendLogObject
Sourcepub fn new(
instance: u32,
name: impl Into<String>,
buffer_size: u32,
) -> Result<Self, Error>
pub fn new( instance: u32, name: impl Into<String>, buffer_size: u32, ) -> Result<Self, Error>
Create a new Trend Log object with logging enabled; buffer_size is the record capacity.
Sourcepub fn add_record(&mut self, record: BACnetLogRecord) -> Result<(), Error>
pub fn add_record(&mut self, record: BACnetLogRecord) -> Result<(), Error>
Add a BACnetLogRecord to the trend log buffer.
Success does not guarantee a resident ordinary record: disabled logging and a record outside the Start_Time / Stop_Time window are ignored, zero-capacity logging may only count, and a stop-before-full transition records status instead. Missing/invalid status clocks fail atomically with DEVICE / OPERATIONAL_PROBLEM. A successful call serves a pending Trigger, which reads FALSE again, even when the record is ignored (Enable FALSE, or outside the window): the acquisition was made.
Sourcepub fn records(&self) -> &VecDeque<BACnetLogRecord>
pub fn records(&self) -> &VecDeque<BACnetLogRecord>
Get the current buffer contents.
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_log_device_object_property(
&mut self,
reference: Option<BACnetDeviceObjectPropertyReference>,
) -> Result<(), Error>
pub fn set_log_device_object_property( &mut self, reference: Option<BACnetDeviceObjectPropertyReference>, ) -> Result<(), Error>
Set Log_DeviceObjectProperty, the property the log samples, as local configuration: the log buffer is left as it is.
A reference may name another device; the poller then logs a failure
for each sample instead of reading it. None, or a reference whose
object or Device is at the reserved instance 4194303, leaves the log
without one (#1417). A Device member that isn’t a Device identifier
fails with PROPERTY / VALUE_OUT_OF_RANGE and changes nothing.
Sourcepub fn set_logging_type(
&mut self,
logging_type: LoggingType,
) -> Result<(), Error>
pub fn set_logging_type( &mut self, logging_type: LoggingType, ) -> Result<(), Error>
Set Logging_Type, as a client’s write does: POLLED or TRIGGERED. This
device has no COV acquisition yet (#1480), so COV, like any other
value, is PROPERTY / OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED (Clause
12.25.26) and changes nothing. POLLED with a zero Log_Interval sets
DEFAULT_LOG_INTERVAL; TRIGGERED sets Log_Interval to zero.
Sourcepub fn set_log_interval(&mut self, hundredths: u32) -> Result<(), Error>
pub fn set_log_interval(&mut self, hundredths: u32) -> Result<(), Error>
Set Log_Interval in hundredths of a second, as a client’s write does. While Logging_Type is TRIGGERED it is read-only and this is PROPERTY / WRITE_ACCESS_DENIED. A POLLED log’s nonzero interval set to zero would switch it to COV logging (Clause 12.25.9), which is refused with PROPERTY / OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED, as COV itself is.
Sourcepub fn set_start_time(&mut self, date: Date, time: Time) -> Result<(), Error>
pub fn set_start_time(&mut self, date: Date, time: Time) -> Result<(), Error>
Set Start_Time, the local date and time from which records are kept, as local configuration: nothing is recorded for the change itself, but the log notes at once where the window stands, so a client’s write that then opens or shuts it is recorded. Every field unspecified leaves the start open. Any other value has to name an actual date and time, or it is PROPERTY / VALUE_OUT_OF_RANGE: the weekday may stay unspecified, and unspecified seconds or hundredths count as zero.
Sourcepub fn set_stop_time(&mut self, date: Date, time: Time) -> Result<(), Error>
pub fn set_stop_time(&mut self, date: Date, time: Time) -> Result<(), Error>
Set Stop_Time, the local date and time from which records are no
longer kept, under the same rules as
set_start_time.
Sourcepub fn set_align_intervals(&mut self, align: bool)
pub fn set_align_intervals(&mut self, align: bool)
Set Align_Intervals: whether a POLLED log acquires at clock-aligned times.
Sourcepub fn set_interval_offset(&mut self, hundredths: u32)
pub fn set_interval_offset(&mut self, hundredths: u32)
Set Interval_Offset, the delay after each aligned boundary, in hundredths; it applies modulo Log_Interval.
Sourcepub fn trigger(&mut self) -> Result<(), Error>
pub fn trigger(&mut self) -> Result<(), Error>
Ask for one acquisition, as a local process writing Trigger TRUE does. Only a TRIGGERED log takes it; any other is PROPERTY / NOT_CONFIGURED_FOR_TRIGGERED_LOGGING.
Sourcepub fn set_notification_threshold(&mut self, threshold: u32)
pub fn set_notification_threshold(&mut self, threshold: u32)
Set Notification_Threshold, the number of records that makes a BUFFER_READY report; zero, the default, makes none.
Sourcepub fn set_notification_class(&mut self, class: u32)
pub fn set_notification_class(&mut self, class: u32)
Set Notification_Class: the number of the Notification Class whose recipients get the log’s reports (0 by default).
Sourcepub fn set_event_enable(&mut self, enable: EventTransitionBits)
pub fn set_event_enable(&mut self, enable: EventTransitionBits)
Set Event_Enable; a report goes out only while its TO_NORMAL flag is set, as it is by default.
Sourcepub fn set_notify_type(&mut self, notify_type: NotifyType)
pub fn set_notify_type(&mut self, notify_type: NotifyType)
Set Notify_Type, sent with each report (EVENT by default).
Trait Implementations§
Source§impl BACnetObject for TrendLogObject
impl BACnetObject for TrendLogObject
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 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 log_record_identities_internal(&self) -> Option<Vec<LogRecordIdentity>>
fn log_record_identities_internal(&self) -> Option<Vec<LogRecordIdentity>>
Source§fn log_buffer_internal(&self) -> Option<&dyn LogBufferRecords>
fn log_buffer_internal(&self) -> Option<&dyn LogBufferRecords>
Source§fn add_trend_record(&mut self, record: BACnetLogRecord) -> Result<(), Error>
fn add_trend_record(&mut self, record: BACnetLogRecord) -> Result<(), Error>
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 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_writable_property(&self, property: PropertyIdentifier) -> bool
fn is_writable_property(&self, property: PropertyIdentifier) -> bool
property for this object. Read moreSource§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 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 acknowledge_alarm(
&mut self,
_transition_bit: EventTransitionBits,
) -> Result<(), Error>
fn acknowledge_alarm( &mut self, _transition_bit: EventTransitionBits, ) -> Result<(), Error>
transition_bit flags in acked_transitions.
Returns Ok(()) if the object supports event detection, Err otherwise.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 set_event_state_internal(&mut self, _state: EventState) -> Result<(), Error>
fn set_event_state_internal(&mut self, _state: EventState) -> Result<(), Error>
Event_State transition. Read moreSource§fn enrollment_eval_state_internal(&self) -> Option<EventEnrollmentEvalState>
fn enrollment_eval_state_internal(&self) -> Option<EventEnrollmentEvalState>
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>
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 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>
Acked_Transitions bit on a received event-state
transition. Read moreSource§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_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 more