pub struct AccessPointObject { /* private fields */ }Expand description
BACnet Access Point object (type 33).
Represents an access point (reader/controller at a door) in an access control system. The most recent access event is Access_Event; Table 12-36 has no Present_Value row, so the object serves none (#1064).
Each change of Out_Of_Service is an access event of the point’s own (Clause 12.31.8; #1248): entering out of service records OUT_OF_SERVICE and the return to service OUT_OF_SERVICE_RELINQUISHED. Recording one follows Clause 12.31.27.1, which moves Access_Event_Tag on when an event starts a new access transaction and stamps Access_Event_Time with the current date and time. The introduction to Clause 12.31 counts an operator action as an access transaction, so each change of Out_Of_Service starts a new one: the tag moves on by one (wrapping at the top of the Unsigned range), and the time comes from the Device clock. A write that leaves Out_Of_Service as it was, NULL included, records nothing. No credential belongs to an edge, so each one stores the no-credential reference in Access_Event_Credential (Clause 12.31.30). The point doesn’t serve Access_Event_Authentication_Factor.
Authentication_Status is the status the application reports for its authentication process (Clause 12.31.9; #1284), READY until it reports another. While Out_Of_Service is TRUE no authentication runs, so the property reads DISABLED; the reported status is kept and served again on the return to service.
With no usable Device clock the time takes the BACnetTimeStamp sequence-number form (Clauses 12.31.29 and 21.6) and holds the new tag: the tag itself while it fits the form’s 1 to 65535, and past that the tag folded back into that range, so successive edges still differ and none reads 0, the value of an update time with no update yet.
Access_Event_Time is the Table 13-1 trigger, and each edge moves it, so each edge sends the SubscribeCOV report, which also carries the changed OUT_OF_SERVICE flag. That holds for a round trip in one WritePropertyMultiple too, where Status_Flags ends where it started. The point runs no intrinsic reporting (no ACCESS_EVENT algorithm; Event_State stays NORMAL), so an edge raises no event notification.
Active_Authentication_Policy, Number_Of_Authentication_Policies,
Authorization_Mode and Priority_For_Writing hold the settings the
application’s authentication and authorization work from (#1307). A
client picks the policy in effect and the authorization mode; the
application sets the policy count, the modes it carries out and the
door command priority. The module point_authorization has the rules.
Implementations§
Source§impl AccessPointObject
impl AccessPointObject
Sourcepub fn new(instance: u32, name: impl Into<String>) -> Result<Self, Error>
pub fn new(instance: u32, name: impl Into<String>) -> Result<Self, Error>
Create a new Access Point object.
Sourcepub fn set_access_event(
&mut self,
event: AccessEvent,
tag: u64,
time: BACnetTimeStamp,
credential: Option<BACnetDeviceObjectReference>,
) -> Result<(), Error>
pub fn set_access_event( &mut self, event: AccessEvent, tag: u64, time: BACnetTimeStamp, credential: Option<BACnetDeviceObjectReference>, ) -> Result<(), Error>
Record the most recent access event: Access_Event, Access_Event_Tag, Access_Event_Time and Access_Event_Credential, which the application’s access logic produces. They change together, as Clause 12.31.27.1 has them stored for each event.
Access_Event_Time is a BACnetTimeStamp (Clause 12.31.29) and goes
out in its Clause 21 CHOICE form. A change of it triggers a SubscribeCOV
notification; the other three only ride along (Table 13-1). Over the
network all four stay read-only.
credential names the Access Credential object behind the event.
None stores the no-credential reference, instance 4194303, for an
event no credential belongs to or one whose credential is unknown or
kept back (Clause 12.31.30). Given explicitly, that reference carries
4194303 as the object instance and, when it names a device, as the
device instance too. Refused with VALUE_OUT_OF_RANGE, with none of the
four changing: a reference to another object type, one whose device
identifier isn’t a Device (#1285), and one with 4194303 in only one of
the two instances, which is neither a credential nor the
no-credential reference. Access_Event_Credential has no network write
route, so this setter is the only check.
While Out_Of_Service is TRUE the point performs no authentication or authorization (Clause 12.31.8), so its access logic has nothing to report until the return to service; the point leaves that to the application rather than refusing the call.
Sourcepub fn set_authentication_status(
&mut self,
status: AuthenticationStatus,
) -> Result<(), Error>
pub fn set_authentication_status( &mut self, status: AuthenticationStatus, ) -> Result<(), Error>
Report the status of the point’s authentication process (Clause 12.31.9), read-only over the network. A value outside the closed BACnetAuthenticationStatus production is refused with VALUE_OUT_OF_RANGE. While Out_Of_Service is TRUE the status is kept but DISABLED is served until the return to service.
Sourcepub fn authentication_status(&self) -> AuthenticationStatus
pub fn authentication_status(&self) -> AuthenticationStatus
Authentication_Status as served: DISABLED while Out_Of_Service is TRUE, else the status last reported.
Sourcepub fn set_access_doors(
&mut self,
doors: impl IntoIterator<Item = impl Into<BACnetDeviceObjectReference>>,
) -> Result<(), Error>
pub fn set_access_doors( &mut self, doors: impl IntoIterator<Item = impl Into<BACnetDeviceObjectReference>>, ) -> Result<(), Error>
Set Access_Doors, the Access Door objects whose Present_Value this point commands once access is granted (Clause 12.31.32). A point that commands no door keeps the array empty. A reference with no Device identifier names an object in this device.
Every reference must name an Access Door object, and a device identifier, when given, a Device object (#1285); a list breaking either rule is refused with VALUE_OUT_OF_RANGE and the doors set before are kept. The array is read-only over the network.
Sourcepub fn set_number_of_authentication_policies(
&mut self,
count: u32,
) -> Result<(), Error>
pub fn set_number_of_authentication_policies( &mut self, count: u32, ) -> Result<(), Error>
Set Number_Of_Authentication_Policies, how many authentication policies the application defines (Clause 12.31.11), 1 until set. It is read-only over the network. Zero is refused with VALUE_OUT_OF_RANGE, and so is a count below Active_Authentication_Policy: lower the active policy first, with a write of that property.
Set the authorization modes the application carries out, the values a write of Authorization_Mode can take (Clause 12.31.14). A new point takes AUTHORIZE alone, since the point enforces no mode itself: an application that acts on Authorization_Mode declares the other modes it carries out here. The set must hold AUTHORIZE and the mode in effect, and each mode must be a standard one or a proprietary one from 64 to 65535; otherwise it is refused with VALUE_OUT_OF_RANGE and the set before is kept. A repeated mode counts once.
Sourcepub fn set_priority_for_writing(&mut self, priority: u8) -> Result<(), Error>
pub fn set_priority_for_writing(&mut self, priority: u8) -> Result<(), Error>
Set Priority_For_Writing, the priority at which the application commands the Access_Doors after a grant (Clauses 12.31.32.1 and 12.31.33), 16 until set. It is read-only over the network. A priority outside 1..=16 is refused with VALUE_OUT_OF_RANGE.
Trait Implementations§
Source§impl BACnetObject for AccessPointObject
impl BACnetObject for AccessPointObject
Source§fn supports_cov(&self) -> bool
fn supports_cov(&self) -> bool
Table 13-1 lists Access Point, so it takes SubscribeCOV; its report leads with Access_Event, as the point has no Present_Value.
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 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_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 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