Skip to main content

bacnet_types/enums/
protocol.rs

1// ===========================================================================
2// Protocol enums (PDU types, services, error classes/codes)
3// ===========================================================================
4
5bacnet_enum! {
6    /// APDU PDU type identifiers (Clause 20.1).
7    pub struct PduType(u8);
8
9    const CONFIRMED_REQUEST = 0;
10    const UNCONFIRMED_REQUEST = 1;
11    const SIMPLE_ACK = 2;
12    const COMPLEX_ACK = 3;
13    const SEGMENT_ACK = 4;
14    const ERROR = 5;
15    const REJECT = 6;
16    const ABORT = 7;
17}
18
19bacnet_enum! {
20    /// Confirmed service request types (Clause 21).
21    pub struct ConfirmedServiceChoice(u8);
22
23    const ACKNOWLEDGE_ALARM = 0;
24    const CONFIRMED_COV_NOTIFICATION = 1;
25    const CONFIRMED_EVENT_NOTIFICATION = 2;
26    const GET_ALARM_SUMMARY = 3;
27    const GET_ENROLLMENT_SUMMARY = 4;
28    const SUBSCRIBE_COV = 5;
29    const ATOMIC_READ_FILE = 6;
30    const ATOMIC_WRITE_FILE = 7;
31    const ADD_LIST_ELEMENT = 8;
32    const REMOVE_LIST_ELEMENT = 9;
33    const CREATE_OBJECT = 10;
34    const DELETE_OBJECT = 11;
35    const READ_PROPERTY = 12;
36    // 13: reserved
37    const READ_PROPERTY_MULTIPLE = 14;
38    const WRITE_PROPERTY = 15;
39    const WRITE_PROPERTY_MULTIPLE = 16;
40    const DEVICE_COMMUNICATION_CONTROL = 17;
41    const CONFIRMED_PRIVATE_TRANSFER = 18;
42    const CONFIRMED_TEXT_MESSAGE = 19;
43    const REINITIALIZE_DEVICE = 20;
44    const VT_OPEN = 21;
45    const VT_CLOSE = 22;
46    const VT_DATA = 23;
47    // 24-25: reserved
48    const READ_RANGE = 26;
49    const LIFE_SAFETY_OPERATION = 27;
50    const SUBSCRIBE_COV_PROPERTY = 28;
51    const GET_EVENT_INFORMATION = 29;
52    const SUBSCRIBE_COV_PROPERTY_MULTIPLE = 30;
53    const CONFIRMED_COV_NOTIFICATION_MULTIPLE = 31;
54    const CONFIRMED_AUDIT_NOTIFICATION = 32;
55    const AUDIT_LOG_QUERY = 33;
56}
57
58bacnet_enum! {
59    /// Unconfirmed service request types (Clause 21).
60    pub struct UnconfirmedServiceChoice(u8);
61
62    const I_AM = 0;
63    const I_HAVE = 1;
64    const UNCONFIRMED_COV_NOTIFICATION = 2;
65    const UNCONFIRMED_EVENT_NOTIFICATION = 3;
66    const UNCONFIRMED_PRIVATE_TRANSFER = 4;
67    const UNCONFIRMED_TEXT_MESSAGE = 5;
68    const TIME_SYNCHRONIZATION = 6;
69    const WHO_HAS = 7;
70    const WHO_IS = 8;
71    const UTC_TIME_SYNCHRONIZATION = 9;
72    const WRITE_GROUP = 10;
73    const UNCONFIRMED_COV_NOTIFICATION_MULTIPLE = 11;
74    const UNCONFIRMED_AUDIT_NOTIFICATION = 12;
75    const WHO_AM_I = 13;
76    const YOU_ARE = 14;
77}
78
79bacnet_enum! {
80    /// BACnet error classes (Clause 18.1.1).
81    pub struct ErrorClass(u16);
82
83    const DEVICE = 0;
84    const OBJECT = 1;
85    const PROPERTY = 2;
86    const RESOURCES = 3;
87    const SECURITY = 4;
88    const SERVICES = 5;
89    const VT = 6;
90    const COMMUNICATION = 7;
91}
92
93bacnet_enum! {
94    /// BACnet error codes (Clause 18).
95    pub struct ErrorCode(u16);
96
97    const OTHER = 0;
98    const AUTHENTICATION_FAILED = 1;
99    const CONFIGURATION_IN_PROGRESS = 2;
100    const DEVICE_BUSY = 3;
101    const DYNAMIC_CREATION_NOT_SUPPORTED = 4;
102    const FILE_ACCESS_DENIED = 5;
103    const INCOMPATIBLE_SECURITY_LEVELS = 6;
104    const INCONSISTENT_PARAMETERS = 7;
105    const INCONSISTENT_SELECTION_CRITERION = 8;
106    const INVALID_DATA_TYPE = 9;
107    const INVALID_FILE_ACCESS_METHOD = 10;
108    const INVALID_FILE_START_POSITION = 11;
109    const INVALID_OPERATOR_NAME = 12;
110    const INVALID_PARAMETER_DATA_TYPE = 13;
111    const INVALID_TIME_STAMP = 14;
112    const KEY_GENERATION_ERROR = 15;
113    const MISSING_REQUIRED_PARAMETER = 16;
114    const NO_OBJECTS_OF_SPECIFIED_TYPE = 17;
115    const NO_SPACE_FOR_OBJECT = 18;
116    const NO_SPACE_TO_ADD_LIST_ELEMENT = 19;
117    const NO_SPACE_TO_WRITE_PROPERTY = 20;
118    const NO_VT_SESSIONS_AVAILABLE = 21;
119    const PROPERTY_IS_NOT_A_LIST = 22;
120    const OBJECT_DELETION_NOT_PERMITTED = 23;
121    const OBJECT_IDENTIFIER_ALREADY_EXISTS = 24;
122    const OPERATIONAL_PROBLEM = 25;
123    const PASSWORD_FAILURE = 26;
124    const READ_ACCESS_DENIED = 27;
125    const SECURITY_NOT_SUPPORTED = 28;
126    const SERVICE_REQUEST_DENIED = 29;
127    const TIMEOUT = 30;
128    const UNKNOWN_OBJECT = 31;
129    const UNKNOWN_PROPERTY = 32;
130    // 33: removed
131    const UNKNOWN_VT_CLASS = 34;
132    const UNKNOWN_VT_SESSION = 35;
133    const UNSUPPORTED_OBJECT_TYPE = 36;
134    const VALUE_OUT_OF_RANGE = 37;
135    const VT_SESSION_ALREADY_CLOSED = 38;
136    const VT_SESSION_TERMINATION_FAILURE = 39;
137    const WRITE_ACCESS_DENIED = 40;
138    const CHARACTER_SET_NOT_SUPPORTED = 41;
139    const INVALID_ARRAY_INDEX = 42;
140    const COV_SUBSCRIPTION_FAILED = 43;
141    const NOT_COV_PROPERTY = 44;
142    const OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED = 45;
143    const INVALID_CONFIGURATION_DATA = 46;
144    const DATATYPE_NOT_SUPPORTED = 47;
145    const DUPLICATE_NAME = 48;
146    const DUPLICATE_OBJECT_ID = 49;
147    const PROPERTY_IS_NOT_AN_ARRAY = 50;
148    const ABORT_BUFFER_OVERFLOW = 51;
149    const ABORT_INVALID_APDU_IN_THIS_STATE = 52;
150    const ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK = 53;
151    const ABORT_SEGMENTATION_NOT_SUPPORTED = 54;
152    const ABORT_PROPRIETARY = 55;
153    const ABORT_OTHER = 56;
154    const INVALID_TAG = 57;
155    const NETWORK_DOWN = 58;
156    const REJECT_BUFFER_OVERFLOW = 59;
157    const REJECT_INCONSISTENT_PARAMETERS = 60;
158    const REJECT_INVALID_PARAMETER_DATA_TYPE = 61;
159    const REJECT_INVALID_TAG = 62;
160    const REJECT_MISSING_REQUIRED_PARAMETER = 63;
161    const REJECT_PARAMETER_OUT_OF_RANGE = 64;
162    const REJECT_TOO_MANY_ARGUMENTS = 65;
163    const REJECT_UNDEFINED_ENUMERATION = 66;
164    const REJECT_UNRECOGNIZED_SERVICE = 67;
165    const REJECT_PROPRIETARY = 68;
166    const REJECT_OTHER = 69;
167    const UNKNOWN_DEVICE = 70;
168    const UNKNOWN_ROUTE = 71;
169    const VALUE_NOT_INITIALIZED = 72;
170    const INVALID_EVENT_STATE = 73;
171    const NO_ALARM_CONFIGURED = 74;
172    const LOG_BUFFER_FULL = 75;
173    const LOGGED_VALUE_PURGED = 76;
174    const NO_PROPERTY_SPECIFIED = 77;
175    const NOT_CONFIGURED_FOR_TRIGGERED_LOGGING = 78;
176    const UNKNOWN_SUBSCRIPTION = 79;
177    const PARAMETER_OUT_OF_RANGE = 80;
178    const LIST_ELEMENT_NOT_FOUND = 81;
179    const BUSY = 82;
180    const COMMUNICATION_DISABLED = 83;
181    const SUCCESS = 84;
182    const ACCESS_DENIED = 85;
183    const BAD_DESTINATION_ADDRESS = 86;
184    const BAD_DESTINATION_DEVICE_ID = 87;
185    const BAD_SIGNATURE = 88;
186    const BAD_SOURCE_ADDRESS = 89;
187    const BAD_TIMESTAMP = 90;
188    const CANNOT_USE_KEY = 91;
189    const CANNOT_VERIFY_MESSAGE_ID = 92;
190    const CORRECT_KEY_REVISION = 93;
191    const DESTINATION_DEVICE_ID_REQUIRED = 94;
192    const DUPLICATE_MESSAGE = 95;
193    const ENCRYPTION_NOT_CONFIGURED = 96;
194    const ENCRYPTION_REQUIRED = 97;
195    const INCORRECT_KEY = 98;
196    const INVALID_KEY_DATA = 99;
197    const KEY_UPDATE_IN_PROGRESS = 100;
198    const MALFORMED_MESSAGE = 101;
199    const NOT_KEY_SERVER = 102;
200    const SECURITY_NOT_CONFIGURED = 103;
201    const SOURCE_SECURITY_REQUIRED = 104;
202    const TOO_MANY_KEYS = 105;
203    const UNKNOWN_AUTHENTICATION_TYPE = 106;
204    const UNKNOWN_KEY = 107;
205    const UNKNOWN_KEY_REVISION = 108;
206    const UNKNOWN_SOURCE_MESSAGE = 109;
207    const NOT_ROUTER_TO_DNET = 110;
208    const ROUTER_BUSY = 111;
209    const UNKNOWN_NETWORK_MESSAGE = 112;
210    const MESSAGE_TOO_LONG = 113;
211    const SECURITY_ERROR = 114;
212    const ADDRESSING_ERROR = 115;
213    const WRITE_BDT_FAILED = 116;
214    const READ_BDT_FAILED = 117;
215    const REGISTER_FOREIGN_DEVICE_FAILED = 118;
216    const READ_FDT_FAILED = 119;
217    const DELETE_FDT_ENTRY_FAILED = 120;
218    const DISTRIBUTE_BROADCAST_FAILED = 121;
219    const UNKNOWN_FILE_SIZE = 122;
220    const ABORT_APDU_TOO_LONG = 123;
221    const ABORT_APPLICATION_EXCEEDED_REPLY_TIME = 124;
222    const ABORT_OUT_OF_RESOURCES = 125;
223    const ABORT_TSM_TIMEOUT = 126;
224    const ABORT_WINDOW_SIZE_OUT_OF_RANGE = 127;
225    const FILE_FULL = 128;
226    const INCONSISTENT_CONFIGURATION = 129;
227    const INCONSISTENT_OBJECT_TYPE = 130;
228    const INTERNAL_ERROR = 131;
229    const NOT_CONFIGURED = 132;
230    const OUT_OF_MEMORY = 133;
231    const VALUE_TOO_LONG = 134;
232    const ABORT_INSUFFICIENT_SECURITY = 135;
233    const ABORT_SECURITY_ERROR = 136;
234    const DUPLICATE_ENTRY = 137;
235    const INVALID_VALUE_IN_THIS_STATE = 138;
236}
237
238bacnet_enum! {
239    /// BACnet abort reasons (Clause 20.1.9).
240    pub struct AbortReason(u8);
241
242    const OTHER = 0;
243    const BUFFER_OVERFLOW = 1;
244    const INVALID_APDU_IN_THIS_STATE = 2;
245    const PREEMPTED_BY_HIGHER_PRIORITY_TASK = 3;
246    const SEGMENTATION_NOT_SUPPORTED = 4;
247    const SECURITY_ERROR = 5;
248    const INSUFFICIENT_SECURITY = 6;
249    const WINDOW_SIZE_OUT_OF_RANGE = 7;
250    const APPLICATION_EXCEEDED_REPLY_TIME = 8;
251    const OUT_OF_RESOURCES = 9;
252    const TSM_TIMEOUT = 10;
253    const APDU_TOO_LONG = 11;
254}
255
256bacnet_enum! {
257    /// BACnet reject reasons (Clause 20.1.8).
258    pub struct RejectReason(u8);
259
260    const OTHER = 0;
261    const BUFFER_OVERFLOW = 1;
262    const INCONSISTENT_PARAMETERS = 2;
263    const INVALID_PARAMETER_DATA_TYPE = 3;
264    const INVALID_TAG = 4;
265    const MISSING_REQUIRED_PARAMETER = 5;
266    const PARAMETER_OUT_OF_RANGE = 6;
267    const TOO_MANY_ARGUMENTS = 7;
268    const UNDEFINED_ENUMERATION = 8;
269    const UNRECOGNIZED_SERVICE = 9;
270}
271
272bacnet_enum! {
273    /// Segmentation support options (Clause 20.1.2.4).
274    pub struct Segmentation(u8);
275
276    const BOTH = 0;
277    const TRANSMIT = 1;
278    const RECEIVE = 2;
279    const NONE = 3;
280}