1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//! The inputs an application reports for its access-control objects while
//! the server holds them (#1132).
//!
//! An Access Point's access events, a Credential Data Input's reads and an
//! Access Door's hardware state come from outside BACnet: the application's
//! access logic, its card readers, its door contacts and lock monitors. None
//! of them takes a network write in service. Each object takes its own
//! record through [`BACnetObject::report_access_input_internal`], whose
//! values change together. The server's `report_access_event_local`,
//! `report_credential_read_local` and `report_door_state_local` hand the
//! record over as one local write, so the COV report and the event pass
//! follow it as they follow any other.
//!
//! While Out_Of_Service is TRUE each object stands apart from what it
//! represents (Clauses 12.26.9, 12.31.8 and 12.36.8), and the route follows
//! the object's own rule for that time:
//!
//! - The Access Point performs no authentication or authorization, so an
//! access event then has no meaning: the route refuses it with
//! WRITE_ACCESS_DENIED and changes nothing. It does the same while its
//! Reliability isn't NO_FAULT_DETECTED (Clause 12.31.7).
//! - An Access Door or Credential Data Input keeps the device's values to one
//! side while a client may simulate the served ones (#1131, #1168). A
//! report replaces the values put aside, not the ones served, so it sends
//! no COV report and moves no event algorithm; the return to service
//! serves the latest values reported. The objects' setters follow the
//! same rule.
//!
//! [`BACnetObject::report_access_input_internal`]: crate::traits::BACnetObject::report_access_input_internal
use ;
use ;
use BACnetTimeStamp;
/// An input for one access-control object, as the application reports it.
/// One access event at an Access Point: the values of Access_Event,
/// Access_Event_Tag, Access_Event_Time, Access_Event_Credential and
/// Access_Event_Authentication_Factor, which change together for each event
/// (Clause 12.31.27.1).
/// A factor a Credential Data Input's reader has read: its Present_Value and
/// Update_Time, which move together (Clause 12.36.11).
/// What an Access Door's hardware and door logic report: any of
/// Door_Status, Lock_Status and Door_Alarm_State. A field left `None` keeps
/// the value the door holds.