pub struct AccessCredentialObject { /* private fields */ }Expand description
BACnet Access Credential object (type 32).
Represents a credential (card, fob, biometric, etc.) used for access control. Table 12-40 has no Present_Value row, so the object serves none (#979).
Credential_Status is derived, not stored (Clause 12.35.8): INACTIVE while Reason_For_Disable lists anything, ACTIVE otherwise, so it is read-only. Reason_For_Disable is the sorted union of three sources (#1073):
- the reasons the application raises with
add_disable_reason; - the reason the current Credential_Disable value adds (Clause 12.35.13), so changing that property drops the reason its previous value added;
- DISABLED_NOT_YET_ACTIVE and DISABLED_EXPIRED, judged against the database’s wall clock each time the list is read, the way the Calendar follows the date (Clauses 12.35.11 and 12.35.12). Without a clock frame naming a real moment the window adds nothing.
The network may write Global_Identifier, Credential_Disable, Activation_Time and Expiration_Time. Authentication_Factors and Assigned_Access_Rights are BACnetARRAYs the application provisions.
The optional Authorization_Exemptions row (Clause 12.35.25; #1331) is
served once the application sets it with
set_authorization_exemptions, and
is read-only over the network. With ACCESS_RIGHTS listed,
evaluate_access_rights reports the credential exempt from the Access
Rights check.
Implementations§
Source§impl AccessCredentialObject
impl AccessCredentialObject
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 Credential object: no disable reasons (so ACTIVE), Credential_Disable NONE, an open validity window, no global identifier and empty arrays.
Sourcepub fn set_global_identifier(&mut self, value: u32)
pub fn set_global_identifier(&mut self, value: u32)
Set Global_Identifier; 0 means none is assigned (Clause 12.35.5).
Sourcepub fn set_credential_disable(
&mut self,
value: AccessCredentialDisable,
) -> Result<(), Error>
pub fn set_credential_disable( &mut self, value: AccessCredentialDisable, ) -> Result<(), Error>
Set Credential_Disable. A value outside the four named ones and the vendor range 64 to 65535 is refused with VALUE_OUT_OF_RANGE.
Sourcepub fn set_activation_time(
&mut self,
date: Date,
time: Time,
) -> Result<(), Error>
pub fn set_activation_time( &mut self, date: Date, time: Time, ) -> Result<(), Error>
Set Activation_Time. Every octet X’FF’ leaves the start open; a partly specified value is refused with VALUE_OUT_OF_RANGE.
Sourcepub fn set_expiration_time(
&mut self,
date: Date,
time: Time,
) -> Result<(), Error>
pub fn set_expiration_time( &mut self, date: Date, time: Time, ) -> Result<(), Error>
Set Expiration_Time, with the same rules as
set_activation_time.
Sourcepub fn activation_time(&self) -> (Date, Time)
pub fn activation_time(&self) -> (Date, Time)
The stored Activation_Time.
Sourcepub fn expiration_time(&self) -> (Date, Time)
pub fn expiration_time(&self) -> (Date, Time)
The stored Expiration_Time.
Sourcepub fn add_disable_reason(
&mut self,
reason: AccessCredentialDisableReason,
) -> Result<(), Error>
pub fn add_disable_reason( &mut self, reason: AccessCredentialDisableReason, ) -> Result<(), Error>
Raise a disable reason on behalf of the application, such as DISABLED_LOCKOUT after too many retries. Raising one already raised does nothing.
Refused with VALUE_OUT_OF_RANGE: a value outside the named reasons and the vendor range, and DISABLED_NOT_YET_ACTIVE and DISABLED_EXPIRED, which follow Activation_Time and Expiration_Time instead.
Sourcepub fn remove_disable_reason(
&mut self,
reason: AccessCredentialDisableReason,
) -> bool
pub fn remove_disable_reason( &mut self, reason: AccessCredentialDisableReason, ) -> bool
Withdraw a reason the application raised; false if it wasn’t
raised. Reasons from Credential_Disable or the validity window stay.
Sourcepub fn reason_for_disable(&self) -> Vec<AccessCredentialDisableReason>
pub fn reason_for_disable(&self) -> Vec<AccessCredentialDisableReason>
Reason_For_Disable now: every source’s reasons, sorted by value without repeats.
Sourcepub fn credential_status(&self) -> BinaryPV
pub fn credential_status(&self) -> BinaryPV
Credential_Status now: INACTIVE while any disable reason holds.
Sourcepub fn set_authentication_factors(
&mut self,
factors: Vec<BACnetCredentialAuthenticationFactor>,
) -> Result<(), Error>
pub fn set_authentication_factors( &mut self, factors: Vec<BACnetCredentialAuthenticationFactor>, ) -> Result<(), Error>
Replace Authentication_Factors. Each element’s disable value must be named or in the vendor range and its format type one of the 25 named; otherwise VALUE_OUT_OF_RANGE and nothing changes.
Sourcepub fn authentication_factors(&self) -> &[BACnetCredentialAuthenticationFactor]
pub fn authentication_factors(&self) -> &[BACnetCredentialAuthenticationFactor]
The stored Authentication_Factors.
Sourcepub fn set_assigned_access_rights(
&mut self,
rights: Vec<BACnetAssignedAccessRights>,
) -> Result<(), Error>
pub fn set_assigned_access_rights( &mut self, rights: Vec<BACnetAssignedAccessRights>, ) -> Result<(), Error>
Replace Assigned_Access_Rights. Each element must reference an Access Rights object (or carry instance 4194303, the unused marker), and a device identifier, if present, must be a Device; otherwise VALUE_OUT_OF_RANGE and nothing changes.
Sourcepub fn assigned_access_rights(&self) -> &[BACnetAssignedAccessRights]
pub fn assigned_access_rights(&self) -> &[BACnetAssignedAccessRights]
The stored Assigned_Access_Rights.
Set Authorization_Exemptions (Clause 12.35.25), the authorization
checks this credential is exempt from. Some serves the optional row,
an empty list included, and adds it to Property_List; None leaves it
out, as a new credential does. The list is read-only over the network.
A value outside the seven named checks and the vendor range 64 to 255 is refused with VALUE_OUT_OF_RANGE, keeping the list set before.
The stored Authorization_Exemptions, None while the row is left out.
Trait Implementations§
Source§impl BACnetObject for AccessCredentialObject
impl BACnetObject for AccessCredentialObject
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_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 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_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