diff --git a/examples/learn_controller.rs b/examples/learn_controller.rs index 32ee827..9677870 100644 --- a/examples/learn_controller.rs +++ b/examples/learn_controller.rs @@ -68,7 +68,7 @@ async fn main() -> Result<(), BacnetError> { | ObjectType::ObjectAnalogValue | ObjectType::ObjectSchedule | ObjectType::ObjectTrendlog => { - let list = map.entry(item.object_type.clone() as u32).or_insert(vec![]); + let list = map.entry(item.object_type.as_u32()).or_insert(vec![]); list.push(item); } _ => {} diff --git a/src/application_protocol/primitives/data_value.rs b/src/application_protocol/primitives/data_value.rs index d87bc34..d2da492 100644 --- a/src/application_protocol/primitives/data_value.rs +++ b/src/application_protocol/primitives/data_value.rs @@ -62,7 +62,7 @@ impl Enumerated { let value = match self { Self::Units(x) => x.clone() as u32, Self::Binary(x) => x.clone() as u32, - Self::ObjectType(x) => *x as u32, + Self::ObjectType(x) => x.as_u32(), Self::EventState(x) => x.clone() as u32, Self::NotifyType(x) => x.clone() as u32, Self::LoggingType(x) => x.clone() as u32, diff --git a/src/application_protocol/services/read_property_multiple.rs b/src/application_protocol/services/read_property_multiple.rs index 3af536b..a4ec168 100644 --- a/src/application_protocol/services/read_property_multiple.rs +++ b/src/application_protocol/services/read_property_multiple.rs @@ -231,7 +231,7 @@ impl<'a> PropertyResultList<'a> { pub fn new(property_results: &'a [PropertyResult<'a>]) -> Self { Self { property_results, - object_id: ObjectId::new(ObjectType::Invalid, 0), + object_id: ObjectId::new(ObjectType::ObjectVendorSpecific(0), 0), buf: &[], } } @@ -256,7 +256,7 @@ impl<'a> PropertyResult<'a> { const PROPERTY_VALUE_ERROR_TAG: u8 = 5; pub fn encode(&self, writer: &mut Writer) { - encode_context_unsigned(writer, Self::PROPERTY_ID_TAG, self.id as u32); + encode_context_unsigned(writer, Self::PROPERTY_ID_TAG, self.id.as_u32()); match &self.value { PropertyValue::PropValue(val) => { encode_opening_tag(writer, Self::PROPERTY_VALUE_TAG); diff --git a/src/common/helper.rs b/src/common/helper.rs index 1dabde0..1674fdc 100644 --- a/src/common/helper.rs +++ b/src/common/helper.rs @@ -171,7 +171,7 @@ pub fn decode_context_property_id( } pub fn encode_context_enumerated(writer: &mut Writer, tag_number: u8, property_id: &PropertyId) { - let value = *property_id as u32; + let value = property_id.as_u32(); let len = get_len_u64(value as u64); let tag = Tag::new(TagNumber::ContextSpecific(tag_number), len); diff --git a/src/common/object_id.rs b/src/common/object_id.rs index db4df92..3f6f2a6 100644 --- a/src/common/object_id.rs +++ b/src/common/object_id.rs @@ -22,7 +22,7 @@ impl ObjectId { } pub fn encode(&self, writer: &mut Writer) { - let value = ((self.object_type as u32 & BACNET_MAX_OBJECT) << BACNET_INSTANCE_BITS) + let value = ((self.object_type.as_u32() & BACNET_MAX_OBJECT) << BACNET_INSTANCE_BITS) | (self.id & BACNET_MAX_INSTANCE); writer.extend_from_slice(&value.to_be_bytes()); } @@ -42,80 +42,137 @@ impl ObjectId { #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[repr(u32)] pub enum ObjectType { - ObjectAnalogInput = 0, - ObjectAnalogOutput = 1, - ObjectAnalogValue = 2, - ObjectBinaryInput = 3, - ObjectBinaryOutput = 4, - ObjectBinaryValue = 5, - ObjectCalendar = 6, - ObjectCommand = 7, - ObjectDevice = 8, - ObjectEventEnrollment = 9, - ObjectFile = 10, - ObjectGroup = 11, - ObjectLoop = 12, - ObjectMultiStateInput = 13, - ObjectMultiStateOutput = 14, - ObjectNotificationClass = 15, - ObjectProgram = 16, - ObjectSchedule = 17, - ObjectAveraging = 18, - ObjectMultiStateValue = 19, - ObjectTrendlog = 20, - ObjectLifeSafetyPoint = 21, - ObjectLifeSafetyZone = 22, - ObjectAccumulator = 23, - ObjectPulseConverter = 24, - ObjectEventLog = 25, - ObjectGlobalGroup = 26, - ObjectTrendLogMultiple = 27, - ObjectLoadControl = 28, - ObjectStructuredView = 29, - ObjectAccessDoor = 30, - ObjectTimer = 31, - ObjectAccessCredential = 32, // addendum 2008-j - ObjectAccessPoint = 33, - ObjectAccessRights = 34, - ObjectAccessUser = 35, - ObjectAccessZone = 36, - ObjectCredentialDataInput = 37, // authentication-factor-input - ObjectNetworkSecurity = 38, // Addendum 2008-g - ObjectBitstringValue = 39, // Addendum 2008-w - ObjectCharacterstringValue = 40, // Addendum 2008-w - ObjectDatePatternValue = 41, // Addendum 2008-w - ObjectDateValue = 42, // Addendum 2008-w - ObjectDatetimePatternValue = 43, // Addendum 2008-w - ObjectDatetimeValue = 44, // Addendum 2008-w - ObjectIntegerValue = 45, // Addendum 2008-w - ObjectLargeAnalogValue = 46, // Addendum 2008-w - ObjectOctetstringValue = 47, // Addendum 2008-w - ObjectPositiveIntegerValue = 48, // Addendum 2008-w - ObjectTimePatternValue = 49, // Addendum 2008-w - ObjectTimeValue = 50, // Addendum 2008-w - ObjectNotificationForwarder = 51, // Addendum 2010-af - ObjectAlertEnrollment = 52, // Addendum 2010-af - ObjectChannel = 53, // Addendum 2010-aa - ObjectLightingOutput = 54, // Addendum 2010-i - ObjectBinaryLightingOutput = 55, // Addendum 135-2012az - ObjectNetworkPort = 56, // Addendum 135-2012az + ObjectAnalogInput, + ObjectAnalogOutput, + ObjectAnalogValue, + ObjectBinaryInput, + ObjectBinaryOutput, + ObjectBinaryValue, + ObjectCalendar, + ObjectCommand, + ObjectDevice, + ObjectEventEnrollment, + ObjectFile, + ObjectGroup, + ObjectLoop, + ObjectMultiStateInput, + ObjectMultiStateOutput, + ObjectNotificationClass, + ObjectProgram, + ObjectSchedule, + ObjectAveraging, + ObjectMultiStateValue, + ObjectTrendlog, + ObjectLifeSafetyPoint, + ObjectLifeSafetyZone, + ObjectAccumulator, + ObjectPulseConverter, + ObjectEventLog, + ObjectGlobalGroup, + ObjectTrendLogMultiple, + ObjectLoadControl, + ObjectStructuredView, + ObjectAccessDoor, + ObjectTimer, + ObjectAccessCredential, // addendum 2008-j + ObjectAccessPoint, + ObjectAccessRights, + ObjectAccessUser, + ObjectAccessZone, + ObjectCredentialDataInput, // authentication-factor-input + ObjectNetworkSecurity, // Addendum 2008-g + ObjectBitstringValue, // Addendum 2008-w + ObjectCharacterstringValue, // Addendum 2008-w + ObjectDatePatternValue, // Addendum 2008-w + ObjectDateValue, // Addendum 2008-w + ObjectDatetimePatternValue, // Addendum 2008-w + ObjectDatetimeValue, // Addendum 2008-w + ObjectIntegerValue, // Addendum 2008-w + ObjectLargeAnalogValue, // Addendum 2008-w + ObjectOctetstringValue, // Addendum 2008-w + ObjectPositiveIntegerValue, // Addendum 2008-w + ObjectTimePatternValue, // Addendum 2008-w + ObjectTimeValue, // Addendum 2008-w + ObjectNotificationForwarder, // Addendum 2010-af + ObjectAlertEnrollment, // Addendum 2010-af + ObjectChannel, // Addendum 2010-aa + ObjectLightingOutput, // Addendum 2010-i + ObjectBinaryLightingOutput, // Addendum 135-2012az + ObjectNetworkPort, // Addendum 135-2012az // Enumerated values 0-127 are reserved for definition by ASHRAE. // Enumerated values 128-1023 may be used by others subject to // the procedures and constraints described in Clause 23. - // do the max range inside of enum so that - // compilers will allocate adequate sized datatype for enum - // which is used to store decoding - Reserved = 57, - Proprietary = 128, - Invalid = 1024, + ObjectReserved(u32), // 57..=127 + ObjectVendorSpecific(u32), // 128..=1023 } -impl TryFrom for ObjectType { - type Error = u32; +impl ObjectType { + pub fn as_u32(&self) -> u32 { + match self { + Self::ObjectAnalogInput => 0, + Self::ObjectAnalogOutput => 1, + Self::ObjectAnalogValue => 2, + Self::ObjectBinaryInput => 3, + Self::ObjectBinaryOutput => 4, + Self::ObjectBinaryValue => 5, + Self::ObjectCalendar => 6, + Self::ObjectCommand => 7, + Self::ObjectDevice => 8, + Self::ObjectEventEnrollment => 9, + Self::ObjectFile => 10, + Self::ObjectGroup => 11, + Self::ObjectLoop => 12, + Self::ObjectMultiStateInput => 13, + Self::ObjectMultiStateOutput => 14, + Self::ObjectNotificationClass => 15, + Self::ObjectProgram => 16, + Self::ObjectSchedule => 17, + Self::ObjectAveraging => 18, + Self::ObjectMultiStateValue => 19, + Self::ObjectTrendlog => 20, + Self::ObjectLifeSafetyPoint => 21, + Self::ObjectLifeSafetyZone => 22, + Self::ObjectAccumulator => 23, + Self::ObjectPulseConverter => 24, + Self::ObjectEventLog => 25, + Self::ObjectGlobalGroup => 26, + Self::ObjectTrendLogMultiple => 27, + Self::ObjectLoadControl => 28, + Self::ObjectStructuredView => 29, + Self::ObjectAccessDoor => 30, + Self::ObjectTimer => 31, + Self::ObjectAccessCredential => 32, + Self::ObjectAccessPoint => 33, + Self::ObjectAccessRights => 34, + Self::ObjectAccessUser => 35, + Self::ObjectAccessZone => 36, + Self::ObjectCredentialDataInput => 37, + Self::ObjectNetworkSecurity => 38, + Self::ObjectBitstringValue => 39, + Self::ObjectCharacterstringValue => 40, + Self::ObjectDatePatternValue => 41, + Self::ObjectDateValue => 42, + Self::ObjectDatetimePatternValue => 43, + Self::ObjectDatetimeValue => 44, + Self::ObjectIntegerValue => 45, + Self::ObjectLargeAnalogValue => 46, + Self::ObjectOctetstringValue => 47, + Self::ObjectPositiveIntegerValue => 48, + Self::ObjectTimePatternValue => 49, + Self::ObjectTimeValue => 50, + Self::ObjectNotificationForwarder => 51, + Self::ObjectAlertEnrollment => 52, + Self::ObjectChannel => 53, + Self::ObjectLightingOutput => 54, + Self::ObjectBinaryLightingOutput => 55, + Self::ObjectNetworkPort => 56, + Self::ObjectReserved(v) => *v, + Self::ObjectVendorSpecific(v) => *v, + } + } - fn try_from(value: u32) -> Result { + pub fn try_from(value: u32) -> Result { match value { 0 => Ok(Self::ObjectAnalogInput), 1 => Ok(Self::ObjectAnalogOutput), @@ -174,8 +231,8 @@ impl TryFrom for ObjectType { 54 => Ok(Self::ObjectLightingOutput), 55 => Ok(Self::ObjectBinaryLightingOutput), 56 => Ok(Self::ObjectNetworkPort), - 57..=127 => Ok(Self::Reserved), - 128..=1023 => Ok(Self::Proprietary), + 57..=127 => Ok(Self::ObjectReserved(value)), + 128..=1023 => Ok(Self::ObjectVendorSpecific(value)), x => Err(x), } } diff --git a/src/common/property_id.rs b/src/common/property_id.rs index 726ac2e..69caf2a 100644 --- a/src/common/property_id.rs +++ b/src/common/property_id.rs @@ -1,477 +1,950 @@ #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[repr(u32)] pub enum PropertyId { - PropAckedTransitions = 0, - PropAckRequired = 1, - PropAction = 2, - PropActionText = 3, - PropActiveText = 4, - PropActiveVtSessions = 5, - PropAlarmValue = 6, - PropAlarmValues = 7, - PropAll = 8, - PropAllWritesSuccessful = 9, - PropApduSegmentTimeout = 10, - PropApduTimeout = 11, - PropApplicationSoftwareVersion = 12, - PropArchive = 13, - PropBias = 14, - PropChangeOfStateCount = 15, - PropChangeOfStateTime = 16, - PropNotificationClass = 17, - PropBlank1 = 18, - PropControlledVariableReference = 19, - PropControlledVariableUnits = 20, - PropControlledVariableValue = 21, - PropCovIncrement = 22, - PropDateList = 23, - PropDaylightSavingsStatus = 24, - PropDeadband = 25, - PropDerivativeConstant = 26, - PropDerivativeConstantUnits = 27, - PropDescription = 28, - PropDescriptionOfHalt = 29, - PropDeviceAddressBinding = 30, - PropDeviceType = 31, - PropEffectivePeriod = 32, - PropElapsedActiveTime = 33, - PropErrorLimit = 34, - PropEventEnable = 35, - PropEventState = 36, - PropEventType = 37, - PropExceptionSchedule = 38, - PropFaultValues = 39, - PropFeedbackValue = 40, - PropFileAccessMethod = 41, - PropFileSize = 42, - PropFileType = 43, - PropFirmwareRevision = 44, - PropHighLimit = 45, - PropInactiveText = 46, - PropInProcess = 47, - PropInstanceOf = 48, - PropIntegralConstant = 49, - PropIntegralConstantUnits = 50, - PropIssueConfirmedNotifications = 51, - PropLimitEnable = 52, - PropListOfGroupMembers = 53, - PropListOfObjectPropertyReferences = 54, - PropListOfSessionKeys = 55, - PropLocalDate = 56, - PropLocalTime = 57, - PropLocation = 58, - PropLowLimit = 59, - PropManipulatedVariableReference = 60, - PropMaximumOutput = 61, - PropMaxApduLengthAccepted = 62, - PropMaxInfoFrames = 63, - PropMaxMaster = 64, - PropMaxPresValue = 65, - PropMinimumOffTime = 66, - PropMinimumOnTime = 67, - PropMinimumOutput = 68, - PropMinPresValue = 69, - PropModelName = 70, - PropModificationDate = 71, - PropNotifyType = 72, - PropNumberOfApduRetries = 73, - PropNumberOfStates = 74, - PropObjectIdentifier = 75, - PropObjectList = 76, - PropObjectName = 77, - PropObjectPropertyReference = 78, - PropObjectType = 79, - PropOptional = 80, - PropOutOfService = 81, - PropOutputUnits = 82, - PropEventParameters = 83, - PropPolarity = 84, - PropPresentValue = 85, - PropPriority = 86, - PropPriorityArray = 87, - PropPriorityForWriting = 88, - PropProcessIdentifier = 89, - PropProgramChange = 90, - PropProgramLocation = 91, - PropProgramState = 92, - PropProportionalConstant = 93, - PropProportionalConstantUnits = 94, - PropProtocolConformanceClass = 95, - PropProtocolObjectTypesSupported = 96, - PropProtocolServicesSupported = 97, - PropProtocolVersion = 98, - PropReadOnly = 99, - PropReasonForHalt = 100, - PropRecipient = 101, - PropRecipientList = 102, - PropReliability = 103, - PropRelinquishDefault = 104, - PropRequired = 105, - PropResolution = 106, - PropSegmentationSupported = 107, - PropSetpoint = 108, - PropSetpointReference = 109, - PropStateText = 110, - PropStatusFlags = 111, - PropSystemStatus = 112, - PropTimeDelay = 113, - PropTimeOfActiveTimeReset = 114, - PropTimeOfStateCountReset = 115, - PropTimeSynchronizationRecipients = 116, - PropUnits = 117, - PropUpdateInterval = 118, - PropUtcOffset = 119, - PropVendorIdentifier = 120, - PropVendorName = 121, - PropVtClassesSupported = 122, - PropWeeklySchedule = 123, - PropAttemptedSamples = 124, - PropAverageValue = 125, - PropBufferSize = 126, - PropClientCovIncrement = 127, - PropCovResubscriptionInterval = 128, - PropCurrentNotifyTime = 129, - PropEventTimeStamps = 130, - PropLogBuffer = 131, - PropLogDeviceObjectProperty = 132, - PropEnable = 133, - PropLogInterval = 134, - PropMaximumValue = 135, - PropMinimumValue = 136, - PropNotificationThreshold = 137, - PropPreviousNotifyTime = 138, - PropProtocolRevision = 139, - PropRecordsSinceNotification = 140, - PropRecordCount = 141, - PropStartTime = 142, - PropStopTime = 143, - PropStopWhenFull = 144, - PropTotalRecordCount = 145, - PropValidSamples = 146, - PropWindowInterval = 147, - PropWindowSamples = 148, - PropMaximumValueTimestamp = 149, - PropMinimumValueTimestamp = 150, - PropVarianceValue = 151, - PropActiveCovSubscriptions = 152, - PropBackupFailureTimeout = 153, - PropConfigurationFiles = 154, - PropDatabaseRevision = 155, - PropDirectReading = 156, - PropLastRestoreTime = 157, - PropMaintenanceRequired = 158, - PropMemberOf = 159, - PropMode = 160, - PropOperationExpected = 161, - PropSetting = 162, - PropSilenced = 163, - PropTrackingValue = 164, - PropZoneMembers = 165, - PropLifeSafetyAlarmValues = 166, - PropMaxSegmentsAccepted = 167, - PropProfileName = 168, - PropAutoSlaveDiscovery = 169, - PropManualSlaveAddressBinding = 170, - PropSlaveAddressBinding = 171, - PropSlaveProxyEnable = 172, - PropLastNotifyRecord = 173, - PropScheduleDefault = 174, - PropAcceptedModes = 175, - PropAdjustValue = 176, - PropCount = 177, - PropCountBeforeChange = 178, - PropCountChangeTime = 179, - PropCovPeriod = 180, - PropInputReference = 181, - PropLimitMonitoringInterval = 182, - PropLoggingObject = 183, - PropLoggingRecord = 184, - PropPrescale = 185, - PropPulseRate = 186, - PropScale = 187, - PropScaleFactor = 188, - PropUpdateTime = 189, - PropValueBeforeChange = 190, - PropValueSet = 191, - PropValueChangeTime = 192, - PropAlignIntervals = 193, - PropIntervalOffset = 195, - PropLastRestartReason = 196, - PropLoggingType = 197, - PropRestartNotificationRecipients = 202, - PropTimeOfDeviceRestart = 203, - PropTimeSynchronizationInterval = 204, - PropTrigger = 205, - PropUtcTimeSynchronizationRecipients = 206, - PropNodeSubtype = 207, - PropNodeType = 208, - PropStructuredObjectList = 209, - PropSubordinateAnnotations = 210, - PropSubordinateList = 211, - PropActualShedLevel = 212, - PropDutyWindow = 213, - PropExpectedShedLevel = 214, - PropFullDutyBaseline = 215, - PropRequestedShedLevel = 218, - PropShedDuration = 219, - PropShedLevelDescriptions = 220, - PropShedLevels = 221, - PropStateDescription = 222, - PropDoorAlarmState = 226, - PropDoorExtendedPulseTime = 227, - PropDoorMembers = 228, - PropDoorOpenTooLongTime = 229, - PropDoorPulseTime = 230, - PropDoorStatus = 231, - PropDoorUnlockDelayTime = 232, - PropLockStatus = 233, - PropMaskedAlarmValues = 234, - PropSecuredStatus = 235, - PropAbsenteeLimit = 244, - PropAccessAlarmEvents = 245, - PropAccessDoors = 246, - PropAccessEvent = 247, - PropAccessEventAuthenticationFactor = 248, - PropAccessEventCredential = 249, - PropAccessEventTime = 250, - PropAccessTransactionEvents = 251, - PropAccompaniment = 252, - PropAccompanimentTime = 253, - PropActivationTime = 254, - PropActiveAuthenticationPolicy = 255, - PropAssignedAccessRights = 256, - PropAuthenticationFactors = 257, - PropAuthenticationPolicyList = 258, - PropAuthenticationPolicyNames = 259, - PropAuthenticationStatus = 260, - PropAuthorizationMode = 261, - PropBelongsTo = 262, - PropCredentialDisable = 263, - PropCredentialStatus = 264, - PropCredentials = 265, - PropCredentialsInZone = 266, - PropDaysRemaining = 267, - PropEntryPoints = 268, - PropExitPoints = 269, - PropExpirationTime = 270, - PropExtendedTimeEnable = 271, - PropFailedAttemptEvents = 272, - PropFailedAttempts = 273, - PropFailedAttemptsTime = 274, - PropLastAccessEvent = 275, - PropLastAccessPoint = 276, - PropLastCredentialAdded = 277, - PropLastCredentialAddedTime = 278, - PropLastCredentialRemoved = 279, - PropLastCredentialRemovedTime = 280, - PropLastUseTime = 281, - PropLockout = 282, - PropLockoutRelinquishTime = 283, - PropMasterExemption = 284, - PropMaxFailedAttempts = 285, - PropMembers = 286, - PropMusterPoint = 287, - PropNegativeAccessRules = 288, - PropNumberOfAuthenticationPolicies = 289, - PropOccupancyCount = 290, - PropOccupancyCountAdjust = 291, - PropOccupancyCountEnable = 292, - PropOccupancyExemption = 293, - PropOccupancyLowerLimit = 294, - PropOccupancyLowerLimitEnforced = 295, - PropOccupancyState = 296, - PropOccupancyUpperLimit = 297, - PropOccupancyUpperLimitEnforced = 298, - PropPassbackExemption = 299, - PropPassbackMode = 300, - PropPassbackTimeout = 301, - PropPositiveAccessRules = 302, - PropReasonForDisable = 303, - PropSupportedFormats = 304, - PropSupportedFormatClasses = 305, - PropThreatAuthority = 306, - PropThreatLevel = 307, - PropTraceFlag = 308, - PropTransactionNotificationClass = 309, - PropUserExternalIdentifier = 310, - PropUserInformationReference = 311, - PropUserName = 317, - PropUserType = 318, - PropUsesRemaining = 319, - PropZoneFrom = 320, - PropZoneTo = 321, - PropAccessEventTag = 322, - PropGlobalIdentifier = 323, - PropVerificationTime = 326, - PropBaseDeviceSecurityPolicy = 327, - PropDistributionKeyRevision = 328, - PropDoNotHide = 329, - PropKeySets = 330, - PropLastKeyServer = 331, - PropNetworkAccessSecurityPolicies = 332, - PropPacketReorderTime = 333, - PropSecurityPduTimeout = 334, - PropSecurityTimeWindow = 335, - PropSupportedSecurityAlgorithm = 336, - PropUpdateKeySetTimeout = 337, - PropBackupAndRestoreState = 338, - PropBackupPreparationTime = 339, - PropRestoreCompletionTime = 340, - PropRestorePreparationTime = 341, - PropBitMask = 342, - PropBitText = 343, - PropIsUtc = 344, - PropGroupMembers = 345, - PropGroupMemberNames = 346, - PropMemberStatusFlags = 347, - PropRequestedUpdateInterval = 348, - PropCovuPeriod = 349, - PropCovuRecipients = 350, - PropEventMessageTexts = 351, - PropEventMessageTextsConfig = 352, - PropEventDetectionEnable = 353, - PropEventAlgorithmInhibit = 354, - PropEventAlgorithmInhibitRef = 355, - PropTimeDelayNormal = 356, - PropReliabilityEvaluationInhibit = 357, - PropFaultParameters = 358, - PropFaultType = 359, - PropLocalForwardingOnly = 360, - PropProcessIdentifierFilter = 361, - PropSubscribedRecipients = 362, - PropPortFilter = 363, - PropAuthorizationExemptions = 364, - PropAllowGroupDelayInhibit = 365, - PropChannelNumber = 366, - PropControlGroups = 367, - PropExecutionDelay = 368, - PropLastPriority = 369, - PropWriteStatus = 370, - PropPropertyList = 371, - PropSerialNumber = 372, - PropBlinkWarnEnable = 373, - PropDefaultFadeTime = 374, - PropDefaultRampRate = 375, - PropDefaultStepIncrement = 376, - PropEgressTime = 377, - PropInProgress = 378, - PropInstantaneousPower = 379, - PropLightingCommand = 380, - PropLightingCommandDefaultPriority = 381, - PropMaxActualValue = 382, - PropMinActualValue = 383, - PropPower = 384, - PropTransition = 385, - PropEgressActive = 386, - PropInterfaceValue = 387, - PropFaultHighLimit = 388, - PropFaultLowLimit = 389, - PropLowDiffLimit = 390, - PropStrikeCount = 391, - PropTimeOfStrikeCountReset = 392, - PropDefaultTimeout = 393, - PropInitialTimeout = 394, - PropLastStateChange = 395, - PropStateChangeValues = 396, - PropTimerRunning = 397, - PropTimerState = 398, - PropApduLength = 399, - PropIpAddress = 400, - PropIpDefaultGateway = 401, - PropIpDhcpEnable = 402, - PropIpDhcpLeaseTime = 403, - PropIpDhcpLeaseTimeRemaining = 404, - PropIpDhcpServer = 405, - PropIpDnsServer = 406, - PropBacnetIpGlobalAddress = 407, - PropBacnetIpMode = 408, - PropBacnetIpMulticastAddress = 409, - PropBacnetIpNatTraversal = 410, - PropIpSubnetMask = 411, - PropBacnetIpUdpPort = 412, - PropBbmdAcceptFdRegistrations = 413, - PropBbmdBroadcastDistributionTable = 414, - PropBbmdForeignDeviceTable = 415, - PropChangesPending = 416, - PropCommand = 417, - PropFdBbmdAddress = 418, - PropFdSubscriptionLifetime = 419, - PropLinkSpeed = 420, - PropLinkSpeeds = 421, - PropLinkSpeedAutonegotiate = 422, - PropMacAddress = 423, - PropNetworkInterfaceName = 424, - PropNetworkNumber = 425, - PropNetworkNumberQuality = 426, - PropNetworkType = 427, - PropRoutingTable = 428, - PropVirtualMacAddressTable = 429, - PropCommandTimeArray = 430, - PropCurrentCommandPriority = 431, - PropLastCommandTime = 432, - PropValueSource = 433, - PropValueSourceArray = 434, - PropBacnetIpv6Mode = 435, - PropIpv6Address = 436, - PropIpv6PrefixLength = 437, - PropBacnetIpv6UdpPort = 438, - PropIpv6DefaultGateway = 439, - PropBacnetIpv6MulticastAddress = 440, - PropIpv6DnsServer = 441, - PropIpv6AutoAddressingEnable = 442, - PropIpv6DhcpLeaseTime = 443, - PropIpv6DhcpLeaseTimeRemaining = 444, - PropIpv6DhcpServer = 445, - PropIpv6ZoneIndex = 446, - PropAssignedLandingCalls = 447, - PropCarAssignedDirection = 448, - PropCarDoorCommand = 449, - PropCarDoorStatus = 450, - PropCarDoorText = 451, - PropCarDoorZone = 452, - PropCarDriveStatus = 453, - PropCarLoad = 454, - PropCarLoadUnits = 455, - PropCarMode = 456, - PropCarMovingDirection = 457, - PropCarPosition = 458, - PropElevatorGroup = 459, - PropEnergyMeter = 460, - PropEnergyMeterRef = 461, - PropEscalatorMode = 462, - PropFaultSignals = 463, - PropFloorText = 464, - PropGroupId = 465, - PropGroupMode = 467, - PropHigherDeck = 468, - PropInstallationId = 469, - PropLandingCalls = 470, - PropLandingCallControl = 471, - PropLandingDoorStatus = 472, - PropLowerDeck = 473, - PropMachineRoomId = 474, - PropMakingCarCall = 475, - PropNextStoppingFloor = 476, - PropOperationDirection = 477, - PropPassengerAlarm = 478, - PropPowerMode = 479, - PropRegisteredCarCall = 480, - PropActiveCovMultipleSubscriptions = 481, - PropProtocolLevel = 482, - PropReferencePort = 483, - PropDeployedProfileLocation = 484, - PropProfileLocation = 485, - PropTags = 486, - PropSubordinateNodeTypes = 487, - PropSubordinateTags = 488, - PropSubordinateRelationships = 489, - PropDefaultSubordinateRelationship = 490, - PropRepresents = 491, + PropAckedTransitions, + PropAckRequired, + PropAction, + PropActionText, + PropActiveText, + PropActiveVtSessions, + PropAlarmValue, + PropAlarmValues, + PropAll, + PropAllWritesSuccessful, + PropApduSegmentTimeout, + PropApduTimeout, + PropApplicationSoftwareVersion, + PropArchive, + PropBias, + PropChangeOfStateCount, + PropChangeOfStateTime, + PropNotificationClass, + PropBlank1, + PropControlledVariableReference, + PropControlledVariableUnits, + PropControlledVariableValue, + PropCovIncrement, + PropDateList, + PropDaylightSavingsStatus, + PropDeadband, + PropDerivativeConstant, + PropDerivativeConstantUnits, + PropDescription, + PropDescriptionOfHalt, + PropDeviceAddressBinding, + PropDeviceType, + PropEffectivePeriod, + PropElapsedActiveTime, + PropErrorLimit, + PropEventEnable, + PropEventState, + PropEventType, + PropExceptionSchedule, + PropFaultValues, + PropFeedbackValue, + PropFileAccessMethod, + PropFileSize, + PropFileType, + PropFirmwareRevision, + PropHighLimit, + PropInactiveText, + PropInProcess, + PropInstanceOf, + PropIntegralConstant, + PropIntegralConstantUnits, + PropIssueConfirmedNotifications, + PropLimitEnable, + PropListOfGroupMembers, + PropListOfObjectPropertyReferences, + PropListOfSessionKeys, + PropLocalDate, + PropLocalTime, + PropLocation, + PropLowLimit, + PropManipulatedVariableReference, + PropMaximumOutput, + PropMaxApduLengthAccepted, + PropMaxInfoFrames, + PropMaxMaster, + PropMaxPresValue, + PropMinimumOffTime, + PropMinimumOnTime, + PropMinimumOutput, + PropMinPresValue, + PropModelName, + PropModificationDate, + PropNotifyType, + PropNumberOfApduRetries, + PropNumberOfStates, + PropObjectIdentifier, + PropObjectList, + PropObjectName, + PropObjectPropertyReference, + PropObjectType, + PropOptional, + PropOutOfService, + PropOutputUnits, + PropEventParameters, + PropPolarity, + PropPresentValue, + PropPriority, + PropPriorityArray, + PropPriorityForWriting, + PropProcessIdentifier, + PropProgramChange, + PropProgramLocation, + PropProgramState, + PropProportionalConstant, + PropProportionalConstantUnits, + PropProtocolConformanceClass, + PropProtocolObjectTypesSupported, + PropProtocolServicesSupported, + PropProtocolVersion, + PropReadOnly, + PropReasonForHalt, + PropRecipient, + PropRecipientList, + PropReliability, + PropRelinquishDefault, + PropRequired, + PropResolution, + PropSegmentationSupported, + PropSetpoint, + PropSetpointReference, + PropStateText, + PropStatusFlags, + PropSystemStatus, + PropTimeDelay, + PropTimeOfActiveTimeReset, + PropTimeOfStateCountReset, + PropTimeSynchronizationRecipients, + PropUnits, + PropUpdateInterval, + PropUtcOffset, + PropVendorIdentifier, + PropVendorName, + PropVtClassesSupported, + PropWeeklySchedule, + PropAttemptedSamples, + PropAverageValue, + PropBufferSize, + PropClientCovIncrement, + PropCovResubscriptionInterval, + PropCurrentNotifyTime, + PropEventTimeStamps, + PropLogBuffer, + PropLogDeviceObjectProperty, + PropEnable, + PropLogInterval, + PropMaximumValue, + PropMinimumValue, + PropNotificationThreshold, + PropPreviousNotifyTime, + PropProtocolRevision, + PropRecordsSinceNotification, + PropRecordCount, + PropStartTime, + PropStopTime, + PropStopWhenFull, + PropTotalRecordCount, + PropValidSamples, + PropWindowInterval, + PropWindowSamples, + PropMaximumValueTimestamp, + PropMinimumValueTimestamp, + PropVarianceValue, + PropActiveCovSubscriptions, + PropBackupFailureTimeout, + PropConfigurationFiles, + PropDatabaseRevision, + PropDirectReading, + PropLastRestoreTime, + PropMaintenanceRequired, + PropMemberOf, + PropMode, + PropOperationExpected, + PropSetting, + PropSilenced, + PropTrackingValue, + PropZoneMembers, + PropLifeSafetyAlarmValues, + PropMaxSegmentsAccepted, + PropProfileName, + PropAutoSlaveDiscovery, + PropManualSlaveAddressBinding, + PropSlaveAddressBinding, + PropSlaveProxyEnable, + PropLastNotifyRecord, + PropScheduleDefault, + PropAcceptedModes, + PropAdjustValue, + PropCount, + PropCountBeforeChange, + PropCountChangeTime, + PropCovPeriod, + PropInputReference, + PropLimitMonitoringInterval, + PropLoggingObject, + PropLoggingRecord, + PropPrescale, + PropPulseRate, + PropScale, + PropScaleFactor, + PropUpdateTime, + PropValueBeforeChange, + PropValueSet, + PropValueChangeTime, + PropAlignIntervals, + PropIntervalOffset, + PropLastRestartReason, + PropLoggingType, + PropRestartNotificationRecipients, + PropTimeOfDeviceRestart, + PropTimeSynchronizationInterval, + PropTrigger, + PropUtcTimeSynchronizationRecipients, + PropNodeSubtype, + PropNodeType, + PropStructuredObjectList, + PropSubordinateAnnotations, + PropSubordinateList, + PropActualShedLevel, + PropDutyWindow, + PropExpectedShedLevel, + PropFullDutyBaseline, + PropRequestedShedLevel, + PropShedDuration, + PropShedLevelDescriptions, + PropShedLevels, + PropStateDescription, + PropDoorAlarmState, + PropDoorExtendedPulseTime, + PropDoorMembers, + PropDoorOpenTooLongTime, + PropDoorPulseTime, + PropDoorStatus, + PropDoorUnlockDelayTime, + PropLockStatus, + PropMaskedAlarmValues, + PropSecuredStatus, + PropAbsenteeLimit, + PropAccessAlarmEvents, + PropAccessDoors, + PropAccessEvent, + PropAccessEventAuthenticationFactor, + PropAccessEventCredential, + PropAccessEventTime, + PropAccessTransactionEvents, + PropAccompaniment, + PropAccompanimentTime, + PropActivationTime, + PropActiveAuthenticationPolicy, + PropAssignedAccessRights, + PropAuthenticationFactors, + PropAuthenticationPolicyList, + PropAuthenticationPolicyNames, + PropAuthenticationStatus, + PropAuthorizationMode, + PropBelongsTo, + PropCredentialDisable, + PropCredentialStatus, + PropCredentials, + PropCredentialsInZone, + PropDaysRemaining, + PropEntryPoints, + PropExitPoints, + PropExpirationTime, + PropExtendedTimeEnable, + PropFailedAttemptEvents, + PropFailedAttempts, + PropFailedAttemptsTime, + PropLastAccessEvent, + PropLastAccessPoint, + PropLastCredentialAdded, + PropLastCredentialAddedTime, + PropLastCredentialRemoved, + PropLastCredentialRemovedTime, + PropLastUseTime, + PropLockout, + PropLockoutRelinquishTime, + PropMasterExemption, + PropMaxFailedAttempts, + PropMembers, + PropMusterPoint, + PropNegativeAccessRules, + PropNumberOfAuthenticationPolicies, + PropOccupancyCount, + PropOccupancyCountAdjust, + PropOccupancyCountEnable, + PropOccupancyExemption, + PropOccupancyLowerLimit, + PropOccupancyLowerLimitEnforced, + PropOccupancyState, + PropOccupancyUpperLimit, + PropOccupancyUpperLimitEnforced, + PropPassbackExemption, + PropPassbackMode, + PropPassbackTimeout, + PropPositiveAccessRules, + PropReasonForDisable, + PropSupportedFormats, + PropSupportedFormatClasses, + PropThreatAuthority, + PropThreatLevel, + PropTraceFlag, + PropTransactionNotificationClass, + PropUserExternalIdentifier, + PropUserInformationReference, + PropUserName, + PropUserType, + PropUsesRemaining, + PropZoneFrom, + PropZoneTo, + PropAccessEventTag, + PropGlobalIdentifier, + PropVerificationTime, + PropBaseDeviceSecurityPolicy, + PropDistributionKeyRevision, + PropDoNotHide, + PropKeySets, + PropLastKeyServer, + PropNetworkAccessSecurityPolicies, + PropPacketReorderTime, + PropSecurityPduTimeout, + PropSecurityTimeWindow, + PropSupportedSecurityAlgorithm, + PropUpdateKeySetTimeout, + PropBackupAndRestoreState, + PropBackupPreparationTime, + PropRestoreCompletionTime, + PropRestorePreparationTime, + PropBitMask, + PropBitText, + PropIsUtc, + PropGroupMembers, + PropGroupMemberNames, + PropMemberStatusFlags, + PropRequestedUpdateInterval, + PropCovuPeriod, + PropCovuRecipients, + PropEventMessageTexts, + PropEventMessageTextsConfig, + PropEventDetectionEnable, + PropEventAlgorithmInhibit, + PropEventAlgorithmInhibitRef, + PropTimeDelayNormal, + PropReliabilityEvaluationInhibit, + PropFaultParameters, + PropFaultType, + PropLocalForwardingOnly, + PropProcessIdentifierFilter, + PropSubscribedRecipients, + PropPortFilter, + PropAuthorizationExemptions, + PropAllowGroupDelayInhibit, + PropChannelNumber, + PropControlGroups, + PropExecutionDelay, + PropLastPriority, + PropWriteStatus, + PropPropertyList, + PropSerialNumber, + PropBlinkWarnEnable, + PropDefaultFadeTime, + PropDefaultRampRate, + PropDefaultStepIncrement, + PropEgressTime, + PropInProgress, + PropInstantaneousPower, + PropLightingCommand, + PropLightingCommandDefaultPriority, + PropMaxActualValue, + PropMinActualValue, + PropPower, + PropTransition, + PropEgressActive, + PropInterfaceValue, + PropFaultHighLimit, + PropFaultLowLimit, + PropLowDiffLimit, + PropStrikeCount, + PropTimeOfStrikeCountReset, + PropDefaultTimeout, + PropInitialTimeout, + PropLastStateChange, + PropStateChangeValues, + PropTimerRunning, + PropTimerState, + PropApduLength, + PropIpAddress, + PropIpDefaultGateway, + PropIpDhcpEnable, + PropIpDhcpLeaseTime, + PropIpDhcpLeaseTimeRemaining, + PropIpDhcpServer, + PropIpDnsServer, + PropBacnetIpGlobalAddress, + PropBacnetIpMode, + PropBacnetIpMulticastAddress, + PropBacnetIpNatTraversal, + PropIpSubnetMask, + PropBacnetIpUdpPort, + PropBbmdAcceptFdRegistrations, + PropBbmdBroadcastDistributionTable, + PropBbmdForeignDeviceTable, + PropChangesPending, + PropCommand, + PropFdBbmdAddress, + PropFdSubscriptionLifetime, + PropLinkSpeed, + PropLinkSpeeds, + PropLinkSpeedAutonegotiate, + PropMacAddress, + PropNetworkInterfaceName, + PropNetworkNumber, + PropNetworkNumberQuality, + PropNetworkType, + PropRoutingTable, + PropVirtualMacAddressTable, + PropCommandTimeArray, + PropCurrentCommandPriority, + PropLastCommandTime, + PropValueSource, + PropValueSourceArray, + PropBacnetIpv6Mode, + PropIpv6Address, + PropIpv6PrefixLength, + PropBacnetIpv6UdpPort, + PropIpv6DefaultGateway, + PropBacnetIpv6MulticastAddress, + PropIpv6DnsServer, + PropIpv6AutoAddressingEnable, + PropIpv6DhcpLeaseTime, + PropIpv6DhcpLeaseTimeRemaining, + PropIpv6DhcpServer, + PropIpv6ZoneIndex, + PropAssignedLandingCalls, + PropCarAssignedDirection, + PropCarDoorCommand, + PropCarDoorStatus, + PropCarDoorText, + PropCarDoorZone, + PropCarDriveStatus, + PropCarLoad, + PropCarLoadUnits, + PropCarMode, + PropCarMovingDirection, + PropCarPosition, + PropElevatorGroup, + PropEnergyMeter, + PropEnergyMeterRef, + PropEscalatorMode, + PropFaultSignals, + PropFloorText, + PropGroupId, + PropGroupMode, + PropHigherDeck, + PropInstallationId, + PropLandingCalls, + PropLandingCallControl, + PropLandingDoorStatus, + PropLowerDeck, + PropMachineRoomId, + PropMakingCarCall, + PropNextStoppingFloor, + PropOperationDirection, + PropPassengerAlarm, + PropPowerMode, + PropRegisteredCarCall, + PropActiveCovMultipleSubscriptions, + PropProtocolLevel, + PropReferencePort, + PropDeployedProfileLocation, + PropProfileLocation, + PropTags, + PropSubordinateNodeTypes, + PropSubordinateTags, + PropSubordinateRelationships, + PropDefaultSubordinateRelationship, + PropRepresents, + PropReserved(u32), + PropVendorSpecific(u32), +} - Reserved = 492, - Unknown = 512, +impl PropertyId { + pub fn as_u32(&self) -> u32 { + match self { + Self::PropAckedTransitions => 0, + Self::PropAckRequired => 1, + Self::PropAction => 2, + Self::PropActionText => 3, + Self::PropActiveText => 4, + Self::PropActiveVtSessions => 5, + Self::PropAlarmValue => 6, + Self::PropAlarmValues => 7, + Self::PropAll => 8, + Self::PropAllWritesSuccessful => 9, + Self::PropApduSegmentTimeout => 10, + Self::PropApduTimeout => 11, + Self::PropApplicationSoftwareVersion => 12, + Self::PropArchive => 13, + Self::PropBias => 14, + Self::PropChangeOfStateCount => 15, + Self::PropChangeOfStateTime => 16, + Self::PropNotificationClass => 17, + Self::PropBlank1 => 18, + Self::PropControlledVariableReference => 19, + Self::PropControlledVariableUnits => 20, + Self::PropControlledVariableValue => 21, + Self::PropCovIncrement => 22, + Self::PropDateList => 23, + Self::PropDaylightSavingsStatus => 24, + Self::PropDeadband => 25, + Self::PropDerivativeConstant => 26, + Self::PropDerivativeConstantUnits => 27, + Self::PropDescription => 28, + Self::PropDescriptionOfHalt => 29, + Self::PropDeviceAddressBinding => 30, + Self::PropDeviceType => 31, + Self::PropEffectivePeriod => 32, + Self::PropElapsedActiveTime => 33, + Self::PropErrorLimit => 34, + Self::PropEventEnable => 35, + Self::PropEventState => 36, + Self::PropEventType => 37, + Self::PropExceptionSchedule => 38, + Self::PropFaultValues => 39, + Self::PropFeedbackValue => 40, + Self::PropFileAccessMethod => 41, + Self::PropFileSize => 42, + Self::PropFileType => 43, + Self::PropFirmwareRevision => 44, + Self::PropHighLimit => 45, + Self::PropInactiveText => 46, + Self::PropInProcess => 47, + Self::PropInstanceOf => 48, + Self::PropIntegralConstant => 49, + Self::PropIntegralConstantUnits => 50, + Self::PropIssueConfirmedNotifications => 51, + Self::PropLimitEnable => 52, + Self::PropListOfGroupMembers => 53, + Self::PropListOfObjectPropertyReferences => 54, + Self::PropListOfSessionKeys => 55, + Self::PropLocalDate => 56, + Self::PropLocalTime => 57, + Self::PropLocation => 58, + Self::PropLowLimit => 59, + Self::PropManipulatedVariableReference => 60, + Self::PropMaximumOutput => 61, + Self::PropMaxApduLengthAccepted => 62, + Self::PropMaxInfoFrames => 63, + Self::PropMaxMaster => 64, + Self::PropMaxPresValue => 65, + Self::PropMinimumOffTime => 66, + Self::PropMinimumOnTime => 67, + Self::PropMinimumOutput => 68, + Self::PropMinPresValue => 69, + Self::PropModelName => 70, + Self::PropModificationDate => 71, + Self::PropNotifyType => 72, + Self::PropNumberOfApduRetries => 73, + Self::PropNumberOfStates => 74, + Self::PropObjectIdentifier => 75, + Self::PropObjectList => 76, + Self::PropObjectName => 77, + Self::PropObjectPropertyReference => 78, + Self::PropObjectType => 79, + Self::PropOptional => 80, + Self::PropOutOfService => 81, + Self::PropOutputUnits => 82, + Self::PropEventParameters => 83, + Self::PropPolarity => 84, + Self::PropPresentValue => 85, + Self::PropPriority => 86, + Self::PropPriorityArray => 87, + Self::PropPriorityForWriting => 88, + Self::PropProcessIdentifier => 89, + Self::PropProgramChange => 90, + Self::PropProgramLocation => 91, + Self::PropProgramState => 92, + Self::PropProportionalConstant => 93, + Self::PropProportionalConstantUnits => 94, + Self::PropProtocolConformanceClass => 95, + Self::PropProtocolObjectTypesSupported => 96, + Self::PropProtocolServicesSupported => 97, + Self::PropProtocolVersion => 98, + Self::PropReadOnly => 99, + Self::PropReasonForHalt => 100, + Self::PropRecipient => 101, + Self::PropRecipientList => 102, + Self::PropReliability => 103, + Self::PropRelinquishDefault => 104, + Self::PropRequired => 105, + Self::PropResolution => 106, + Self::PropSegmentationSupported => 107, + Self::PropSetpoint => 108, + Self::PropSetpointReference => 109, + Self::PropStateText => 110, + Self::PropStatusFlags => 111, + Self::PropSystemStatus => 112, + Self::PropTimeDelay => 113, + Self::PropTimeOfActiveTimeReset => 114, + Self::PropTimeOfStateCountReset => 115, + Self::PropTimeSynchronizationRecipients => 116, + Self::PropUnits => 117, + Self::PropUpdateInterval => 118, + Self::PropUtcOffset => 119, + Self::PropVendorIdentifier => 120, + Self::PropVendorName => 121, + Self::PropVtClassesSupported => 122, + Self::PropWeeklySchedule => 123, + Self::PropAttemptedSamples => 124, + Self::PropAverageValue => 125, + Self::PropBufferSize => 126, + Self::PropClientCovIncrement => 127, + Self::PropCovResubscriptionInterval => 128, + Self::PropCurrentNotifyTime => 129, + Self::PropEventTimeStamps => 130, + Self::PropLogBuffer => 131, + Self::PropLogDeviceObjectProperty => 132, + Self::PropEnable => 133, + Self::PropLogInterval => 134, + Self::PropMaximumValue => 135, + Self::PropMinimumValue => 136, + Self::PropNotificationThreshold => 137, + Self::PropPreviousNotifyTime => 138, + Self::PropProtocolRevision => 139, + Self::PropRecordsSinceNotification => 140, + Self::PropRecordCount => 141, + Self::PropStartTime => 142, + Self::PropStopTime => 143, + Self::PropStopWhenFull => 144, + Self::PropTotalRecordCount => 145, + Self::PropValidSamples => 146, + Self::PropWindowInterval => 147, + Self::PropWindowSamples => 148, + Self::PropMaximumValueTimestamp => 149, + Self::PropMinimumValueTimestamp => 150, + Self::PropVarianceValue => 151, + Self::PropActiveCovSubscriptions => 152, + Self::PropBackupFailureTimeout => 153, + Self::PropConfigurationFiles => 154, + Self::PropDatabaseRevision => 155, + Self::PropDirectReading => 156, + Self::PropLastRestoreTime => 157, + Self::PropMaintenanceRequired => 158, + Self::PropMemberOf => 159, + Self::PropMode => 160, + Self::PropOperationExpected => 161, + Self::PropSetting => 162, + Self::PropSilenced => 163, + Self::PropTrackingValue => 164, + Self::PropZoneMembers => 165, + Self::PropLifeSafetyAlarmValues => 166, + Self::PropMaxSegmentsAccepted => 167, + Self::PropProfileName => 168, + Self::PropAutoSlaveDiscovery => 169, + Self::PropManualSlaveAddressBinding => 170, + Self::PropSlaveAddressBinding => 171, + Self::PropSlaveProxyEnable => 172, + Self::PropLastNotifyRecord => 173, + Self::PropScheduleDefault => 174, + Self::PropAcceptedModes => 175, + Self::PropAdjustValue => 176, + Self::PropCount => 177, + Self::PropCountBeforeChange => 178, + Self::PropCountChangeTime => 179, + Self::PropCovPeriod => 180, + Self::PropInputReference => 181, + Self::PropLimitMonitoringInterval => 182, + Self::PropLoggingObject => 183, + Self::PropLoggingRecord => 184, + Self::PropPrescale => 185, + Self::PropPulseRate => 186, + Self::PropScale => 187, + Self::PropScaleFactor => 188, + Self::PropUpdateTime => 189, + Self::PropValueBeforeChange => 190, + Self::PropValueSet => 191, + Self::PropValueChangeTime => 192, + Self::PropAlignIntervals => 193, + Self::PropIntervalOffset => 195, + Self::PropLastRestartReason => 196, + Self::PropLoggingType => 197, + Self::PropRestartNotificationRecipients => 202, + Self::PropTimeOfDeviceRestart => 203, + Self::PropTimeSynchronizationInterval => 204, + Self::PropTrigger => 205, + Self::PropUtcTimeSynchronizationRecipients => 206, + Self::PropNodeSubtype => 207, + Self::PropNodeType => 208, + Self::PropStructuredObjectList => 209, + Self::PropSubordinateAnnotations => 210, + Self::PropSubordinateList => 211, + Self::PropActualShedLevel => 212, + Self::PropDutyWindow => 213, + Self::PropExpectedShedLevel => 214, + Self::PropFullDutyBaseline => 215, + Self::PropRequestedShedLevel => 218, + Self::PropShedDuration => 219, + Self::PropShedLevelDescriptions => 220, + Self::PropShedLevels => 221, + Self::PropStateDescription => 222, + Self::PropDoorAlarmState => 226, + Self::PropDoorExtendedPulseTime => 227, + Self::PropDoorMembers => 228, + Self::PropDoorOpenTooLongTime => 229, + Self::PropDoorPulseTime => 230, + Self::PropDoorStatus => 231, + Self::PropDoorUnlockDelayTime => 232, + Self::PropLockStatus => 233, + Self::PropMaskedAlarmValues => 234, + Self::PropSecuredStatus => 235, + Self::PropAbsenteeLimit => 244, + Self::PropAccessAlarmEvents => 245, + Self::PropAccessDoors => 246, + Self::PropAccessEvent => 247, + Self::PropAccessEventAuthenticationFactor => 248, + Self::PropAccessEventCredential => 249, + Self::PropAccessEventTime => 250, + Self::PropAccessTransactionEvents => 251, + Self::PropAccompaniment => 252, + Self::PropAccompanimentTime => 253, + Self::PropActivationTime => 254, + Self::PropActiveAuthenticationPolicy => 255, + Self::PropAssignedAccessRights => 256, + Self::PropAuthenticationFactors => 257, + Self::PropAuthenticationPolicyList => 258, + Self::PropAuthenticationPolicyNames => 259, + Self::PropAuthenticationStatus => 260, + Self::PropAuthorizationMode => 261, + Self::PropBelongsTo => 262, + Self::PropCredentialDisable => 263, + Self::PropCredentialStatus => 264, + Self::PropCredentials => 265, + Self::PropCredentialsInZone => 266, + Self::PropDaysRemaining => 267, + Self::PropEntryPoints => 268, + Self::PropExitPoints => 269, + Self::PropExpirationTime => 270, + Self::PropExtendedTimeEnable => 271, + Self::PropFailedAttemptEvents => 272, + Self::PropFailedAttempts => 273, + Self::PropFailedAttemptsTime => 274, + Self::PropLastAccessEvent => 275, + Self::PropLastAccessPoint => 276, + Self::PropLastCredentialAdded => 277, + Self::PropLastCredentialAddedTime => 278, + Self::PropLastCredentialRemoved => 279, + Self::PropLastCredentialRemovedTime => 280, + Self::PropLastUseTime => 281, + Self::PropLockout => 282, + Self::PropLockoutRelinquishTime => 283, + Self::PropMasterExemption => 284, + Self::PropMaxFailedAttempts => 285, + Self::PropMembers => 286, + Self::PropMusterPoint => 287, + Self::PropNegativeAccessRules => 288, + Self::PropNumberOfAuthenticationPolicies => 289, + Self::PropOccupancyCount => 290, + Self::PropOccupancyCountAdjust => 291, + Self::PropOccupancyCountEnable => 292, + Self::PropOccupancyExemption => 293, + Self::PropOccupancyLowerLimit => 294, + Self::PropOccupancyLowerLimitEnforced => 295, + Self::PropOccupancyState => 296, + Self::PropOccupancyUpperLimit => 297, + Self::PropOccupancyUpperLimitEnforced => 298, + Self::PropPassbackExemption => 299, + Self::PropPassbackMode => 300, + Self::PropPassbackTimeout => 301, + Self::PropPositiveAccessRules => 302, + Self::PropReasonForDisable => 303, + Self::PropSupportedFormats => 304, + Self::PropSupportedFormatClasses => 305, + Self::PropThreatAuthority => 306, + Self::PropThreatLevel => 307, + Self::PropTraceFlag => 308, + Self::PropTransactionNotificationClass => 309, + Self::PropUserExternalIdentifier => 310, + Self::PropUserInformationReference => 311, + Self::PropUserName => 317, + Self::PropUserType => 318, + Self::PropUsesRemaining => 319, + Self::PropZoneFrom => 320, + Self::PropZoneTo => 321, + Self::PropAccessEventTag => 322, + Self::PropGlobalIdentifier => 323, + Self::PropVerificationTime => 326, + Self::PropBaseDeviceSecurityPolicy => 327, + Self::PropDistributionKeyRevision => 328, + Self::PropDoNotHide => 329, + Self::PropKeySets => 330, + Self::PropLastKeyServer => 331, + Self::PropNetworkAccessSecurityPolicies => 332, + Self::PropPacketReorderTime => 333, + Self::PropSecurityPduTimeout => 334, + Self::PropSecurityTimeWindow => 335, + Self::PropSupportedSecurityAlgorithm => 336, + Self::PropUpdateKeySetTimeout => 337, + Self::PropBackupAndRestoreState => 338, + Self::PropBackupPreparationTime => 339, + Self::PropRestoreCompletionTime => 340, + Self::PropRestorePreparationTime => 341, + Self::PropBitMask => 342, + Self::PropBitText => 343, + Self::PropIsUtc => 344, + Self::PropGroupMembers => 345, + Self::PropGroupMemberNames => 346, + Self::PropMemberStatusFlags => 347, + Self::PropRequestedUpdateInterval => 348, + Self::PropCovuPeriod => 349, + Self::PropCovuRecipients => 350, + Self::PropEventMessageTexts => 351, + Self::PropEventMessageTextsConfig => 352, + Self::PropEventDetectionEnable => 353, + Self::PropEventAlgorithmInhibit => 354, + Self::PropEventAlgorithmInhibitRef => 355, + Self::PropTimeDelayNormal => 356, + Self::PropReliabilityEvaluationInhibit => 357, + Self::PropFaultParameters => 358, + Self::PropFaultType => 359, + Self::PropLocalForwardingOnly => 360, + Self::PropProcessIdentifierFilter => 361, + Self::PropSubscribedRecipients => 362, + Self::PropPortFilter => 363, + Self::PropAuthorizationExemptions => 364, + Self::PropAllowGroupDelayInhibit => 365, + Self::PropChannelNumber => 366, + Self::PropControlGroups => 367, + Self::PropExecutionDelay => 368, + Self::PropLastPriority => 369, + Self::PropWriteStatus => 370, + Self::PropPropertyList => 371, + Self::PropSerialNumber => 372, + Self::PropBlinkWarnEnable => 373, + Self::PropDefaultFadeTime => 374, + Self::PropDefaultRampRate => 375, + Self::PropDefaultStepIncrement => 376, + Self::PropEgressTime => 377, + Self::PropInProgress => 378, + Self::PropInstantaneousPower => 379, + Self::PropLightingCommand => 380, + Self::PropLightingCommandDefaultPriority => 381, + Self::PropMaxActualValue => 382, + Self::PropMinActualValue => 383, + Self::PropPower => 384, + Self::PropTransition => 385, + Self::PropEgressActive => 386, + Self::PropInterfaceValue => 387, + Self::PropFaultHighLimit => 388, + Self::PropFaultLowLimit => 389, + Self::PropLowDiffLimit => 390, + Self::PropStrikeCount => 391, + Self::PropTimeOfStrikeCountReset => 392, + Self::PropDefaultTimeout => 393, + Self::PropInitialTimeout => 394, + Self::PropLastStateChange => 395, + Self::PropStateChangeValues => 396, + Self::PropTimerRunning => 397, + Self::PropTimerState => 398, + Self::PropApduLength => 399, + Self::PropIpAddress => 400, + Self::PropIpDefaultGateway => 401, + Self::PropIpDhcpEnable => 402, + Self::PropIpDhcpLeaseTime => 403, + Self::PropIpDhcpLeaseTimeRemaining => 404, + Self::PropIpDhcpServer => 405, + Self::PropIpDnsServer => 406, + Self::PropBacnetIpGlobalAddress => 407, + Self::PropBacnetIpMode => 408, + Self::PropBacnetIpMulticastAddress => 409, + Self::PropBacnetIpNatTraversal => 410, + Self::PropIpSubnetMask => 411, + Self::PropBacnetIpUdpPort => 412, + Self::PropBbmdAcceptFdRegistrations => 413, + Self::PropBbmdBroadcastDistributionTable => 414, + Self::PropBbmdForeignDeviceTable => 415, + Self::PropChangesPending => 416, + Self::PropCommand => 417, + Self::PropFdBbmdAddress => 418, + Self::PropFdSubscriptionLifetime => 419, + Self::PropLinkSpeed => 420, + Self::PropLinkSpeeds => 421, + Self::PropLinkSpeedAutonegotiate => 422, + Self::PropMacAddress => 423, + Self::PropNetworkInterfaceName => 424, + Self::PropNetworkNumber => 425, + Self::PropNetworkNumberQuality => 426, + Self::PropNetworkType => 427, + Self::PropRoutingTable => 428, + Self::PropVirtualMacAddressTable => 429, + Self::PropCommandTimeArray => 430, + Self::PropCurrentCommandPriority => 431, + Self::PropLastCommandTime => 432, + Self::PropValueSource => 433, + Self::PropValueSourceArray => 434, + Self::PropBacnetIpv6Mode => 435, + Self::PropIpv6Address => 436, + Self::PropIpv6PrefixLength => 437, + Self::PropBacnetIpv6UdpPort => 438, + Self::PropIpv6DefaultGateway => 439, + Self::PropBacnetIpv6MulticastAddress => 440, + Self::PropIpv6DnsServer => 441, + Self::PropIpv6AutoAddressingEnable => 442, + Self::PropIpv6DhcpLeaseTime => 443, + Self::PropIpv6DhcpLeaseTimeRemaining => 444, + Self::PropIpv6DhcpServer => 445, + Self::PropIpv6ZoneIndex => 446, + Self::PropAssignedLandingCalls => 447, + Self::PropCarAssignedDirection => 448, + Self::PropCarDoorCommand => 449, + Self::PropCarDoorStatus => 450, + Self::PropCarDoorText => 451, + Self::PropCarDoorZone => 452, + Self::PropCarDriveStatus => 453, + Self::PropCarLoad => 454, + Self::PropCarLoadUnits => 455, + Self::PropCarMode => 456, + Self::PropCarMovingDirection => 457, + Self::PropCarPosition => 458, + Self::PropElevatorGroup => 459, + Self::PropEnergyMeter => 460, + Self::PropEnergyMeterRef => 461, + Self::PropEscalatorMode => 462, + Self::PropFaultSignals => 463, + Self::PropFloorText => 464, + Self::PropGroupId => 465, + Self::PropGroupMode => 467, + Self::PropHigherDeck => 468, + Self::PropInstallationId => 469, + Self::PropLandingCalls => 470, + Self::PropLandingCallControl => 471, + Self::PropLandingDoorStatus => 472, + Self::PropLowerDeck => 473, + Self::PropMachineRoomId => 474, + Self::PropMakingCarCall => 475, + Self::PropNextStoppingFloor => 476, + Self::PropOperationDirection => 477, + Self::PropPassengerAlarm => 478, + Self::PropPowerMode => 479, + Self::PropRegisteredCarCall => 480, + Self::PropActiveCovMultipleSubscriptions => 481, + Self::PropProtocolLevel => 482, + Self::PropReferencePort => 483, + Self::PropDeployedProfileLocation => 484, + Self::PropProfileLocation => 485, + Self::PropTags => 486, + Self::PropSubordinateNodeTypes => 487, + Self::PropSubordinateTags => 488, + Self::PropSubordinateRelationships => 489, + Self::PropDefaultSubordinateRelationship => 490, + Self::PropRepresents => 491, + Self::PropReserved(value) => *value, + Self::PropVendorSpecific(value) => *value, + } + } } impl From for PropertyId { @@ -943,8 +1416,8 @@ impl From for PropertyId { 489 => Self::PropSubordinateRelationships, 490 => Self::PropDefaultSubordinateRelationship, 491 => Self::PropRepresents, - 492..=511 => Self::Reserved, - _ => Self::Unknown, + 492..=511 => Self::PropReserved(value), + _ => Self::PropVendorSpecific(value), } } }