You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/06/02 16:31:29 UTC
[plc4x] branch develop updated: test(bacnet): implemented a test to validate bacnet objects
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new b67d0fa65a test(bacnet): implemented a test to validate bacnet objects
b67d0fa65a is described below
commit b67d0fa65a1c36b976a0292b8ba87eb0a3015a92
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jun 2 18:31:22 2022 +0200
test(bacnet): implemented a test to validate bacnet objects
---
protocols/bacnetip/pom.xml | 6 +
.../bacnetip/BACnetObjectsDefinitions.java | 2612 ++++++++++++++++++++
.../bacnetip/ObjectPropertyDeDuplicationTest.java | 155 ++
3 files changed, 2773 insertions(+)
diff --git a/protocols/bacnetip/pom.xml b/protocols/bacnetip/pom.xml
index a128942a3c..900ebdc414 100644
--- a/protocols/bacnetip/pom.xml
+++ b/protocols/bacnetip/pom.xml
@@ -116,6 +116,12 @@
</dependency>
</dependencies>
</plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludedGroups>just-output</excludedGroups>
+ </configuration>
+ </plugin>
</plugins>
</build>
diff --git a/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java
new file mode 100644
index 0000000000..85a8d63fe7
--- /dev/null
+++ b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java
@@ -0,0 +1,2612 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.protocol.bacnetip;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static org.apache.plc4x.protocol.bacnetip.BACnetObjectsDefinitions.ConformanceCode.Type.O;
+import static org.apache.plc4x.protocol.bacnetip.BACnetObjectsDefinitions.ConformanceCode.Type.*;
+
+public class BACnetObjectsDefinitions {
+
+ /**
+ * All bacnet objects
+ */
+ static List<BacNetObject> bacNetObjects;
+
+
+ /**
+ * object name (in upper case enum form) to {@link BacNetObject}
+ */
+ static Map<String, BacNetObject> objectNameToBacNetObjectMap;
+
+ /**
+ * a map which property is contained in which objects(name)
+ */
+ static Map<String, List<String>> propertyToObjectNameMap;
+
+ /**
+ * a map which property-type-combinations is contained in which objects(name)
+ */
+ static Map<PropertyTypeCombination, List<String>> propertyTypeCombinationToObjectNameMap;
+
+ static Map<String, String> propertyIdToPropertyNameMap;
+
+ static {
+ createBacnetObjectsList();
+ createObjectNameToBacNetObjectMap();
+ createPropertyToObjectNameMap();
+ createPropertyTypeCombinationToObjectNameMap();
+ createPropertyIdToPropertyNameMap();
+ }
+
+ private static void createBacnetObjectsList() {
+ bacNetObjects = List.of(
+ createAnalogInput(),
+ createAnalogOutput(),
+ createAnalogValue(),
+ createAveraging(),
+ createBinarInput(),
+ createBinaryOutput(),
+ createBinaryValue(),
+ createCalendar(),
+ createCommand(),
+ createDevice(),
+ createEventEnrollment(),
+ createFile(),
+ createGroup(),
+ createLifeSafetyPoint(),
+ createLifeSafetyZone(),
+ createLoop(),
+ createMultiStateInput(),
+ createMultiStateOutput(),
+ createMultiStateValue(),
+ createNotificationClass(),
+ createProgram(),
+ createPulseConverter(),
+ createSchedule(),
+ createTrendLog(),
+ createAccessDoor(),
+ createEventLog(),
+ createLoadControl(),
+ createStructuredView(),
+ createTrendLogMultiple(),
+ createAccessPoints(),
+ createAccessZone(),
+ createAccessUser(),
+ createAccessRights(),
+ createAcessCredential(),
+ createCredentialDataInput(),
+ createCharacterStringValue(),
+ createDateTimeValue(),
+ createLargeAnalogValue(),
+ createBitStringValue(),
+ createOctetStringValue(),
+ createTimeValue(),
+ createIntegerValue(),
+ createPostiveIntegerValue(),
+ createDateValue(),
+ createDateTimePatternValue(),
+ createTimePatternValue(),
+ createDatePatternValue(),
+ createNetworkSecurity(),
+ createGlobalGroup(),
+ createNotificationForwarder(),
+ createAlertEnrollment(),
+ createChannel(),
+ createLightingOutput(),
+ createBinaryLightingOutput(),
+ createNetworkPort(),
+ createTimer(),
+ createElevatorGroup(),
+ createLift(),
+ createEscalator(),
+ createAccumulator()
+ );
+ }
+
+ private static BacNetObject createAccumulator() {
+ return b("Accumulator",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "Unsigned", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Scale", "BACnetScale", c(R)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Prescale", "BACnetPrescale", c(O)),
+ p("Max_Pres_Value", "Unsigned", c(R)),
+ p("Value_Change_Time", "BACnetDateTime", c(O, 2)),
+ p("Value_Before_Change", "Unsigned", c(O, 2, 3)),
+ p("Value_Set", "Unsigned", c(O, 2, 3)),
+ p("Logging_Record", "BACnetAccumulatorRecord", c(O)),
+ p("Logging_Object", "BACnetObjectIdentifier", c(O)),
+ p("Pulse_Rate", "Unsigned", c(O, 1, 4, 7)),
+ p("High_Limit", "Unsigned", c(O, 4, 6)),
+ p("Low_Limit", "Unsigned", c(O, 4, 6)),
+ p("Limit_Monitoring_Interval", "Unsigned", c(O, 4, 7)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("Time_Delay", "Unsigned", c(O, 4, 6)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 4, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 8)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 9)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Fault_High_Limit", "Unsigned", c(O, 10)),
+ p("Fault_Low_Limit", "Unsigned", c(O, 10)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createEscalator() {
+ return b("Escalator",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Elevator_Group", "BACnetObjectIdentifier", c(R)),
+ p("Group_ID", "Unsigned8", c(R)),
+ p("Installation_ID", "Unsigned8", c(R)),
+ p("Power_Mode", "BOOLEAN", c(O)),
+ p("Operation_Direction", "BACnetEscalatorOperationDirection", c(R)),
+ p("Escalator_Mode", "BACnetEscalatorMode", c(O)),
+ p("Energy_Meter", "REAL", c(O)),
+ p("Energy_Meter_Ref", "BACnetDeviceObjectReference", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Fault_Signals", "BACnetLIST of BACnetEscalatorFault", c(O)),
+ p("Passenger_Alarm", "BOOLEAN", c(R)),
+ p("Time_Delay", "Unsigned", c(O, 1, 2)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 2)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 1, 2)),
+ p("Notification_Class", "Unsigned", c(O, 1, 2)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 1, 2)),
+ p("Event_State", "BACnetEventState", c(O, 1, 2)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 1, 2)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 1, 2)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 1, 2)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 2)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 2)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 2, 3)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 4)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createLift() {
+ return b("Lift",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Elevator_Group", "BACnetObjectIdentifier", c(R)),
+ p("Group_ID", "Unsigned8", c(R)),
+ p("Installation_ID", "Unsigned8", c(R)),
+ p("Floor_Text", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Car_Door_Text", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Assigned_Landing_Calls", "BACnetARRAY[N] of BACnetAssignedLandingCalls", c(O)),
+ p("Making_Car_Call", "BACnetARRAY[N] of Unsigned8", c(O)),
+ p("Registered_Car_Call", "BACnetARRAY[N] of BACnetLiftCarCallList", c(O)),
+ p("Car_Position", "Unsigned8", c(R)),
+ p("Car_Moving_Direction", "BACnetLiftCarDirection", c(R)),
+ p("Car_Assigned_Direction", "BACnetLiftCarDirection", c(O)),
+ p("Car_Door_Status", "BACnetARRAY[N] of BACnetDoorStatus", c(R)),
+ p("Car_Door_Command", "BACnetARRAY[N] of BACnetLiftCarDoorCommand", c(O)),
+ p("Car_Door_Zone", "BOOLEAN", c(O)),
+ p("Car_Mode", "BACnetLiftCarMode", c(O)),
+ p("Car_Load", "REAL", c(O)),
+ p("Car_Load_Units", "BACnetEngineeringUnits", c(O, 1)),
+ p("Next_Stopping_Floor", "Unsigned8", c(O)),
+ p("Passenger_Alarm", "BOOLEAN", c(R)),
+ p("Time_Delay", "Unsigned", c(O, 2, 3)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 3)),
+ p("Energy_Meter", "REAL", c(O)),
+ p("Energy_Meter_Ref", "BACnetDeviceObjectReference", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Car_Drive_Status", "BACnetLiftCarDriveStatus", c(O)),
+ p("Fault_Signals", "BACnetLIST of BACnetLiftFault", c(R)),
+ p("Landing_Door_Status", "BACnetARRAY[N] of BACnetLandingDoorStatus", c(O)),
+ p("Higher_Deck", "BACnetObjectIdentifier", c(O)),
+ p("Lower_Deck", "BACnetObjectIdentifier", c(O)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 3)),
+ p("Notification_Class", "Unsigned", c(O, 2, 3)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Event_State", "BACnetEventState", c(O, 2, 3)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 3)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 3)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 3)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 3, 4)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 5)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createElevatorGroup() {
+ return b("Elevator Group",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Machine_Room_ID", "BACnetObjectIdentifier", c(R)),
+ p("Group_ID", "Unsigned8", c(R)),
+ p("Group_Members", "BACnetARRAY[N] of BACnetObjectIdentifier", c(R)),
+ p("Group_Mode", "BACnetLiftGroupMode", c(O, 1)),
+ p("Landing_Calls", "BACnetLIST of BACnetLandingCallStatus", c(O, 1)),
+ p("Landing_Call_Control", "BACnetLandingCallStatus", c(O, 1)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createTimer() {
+ return b("Timer",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Unsigned", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O, 3)),
+ p("Reliability", "BACnetReliability", c(O, 1)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Timer_State", "BACnetTimerState", c(R, 2)),
+ p("Timer_Running", "BOOLEAN", c(R, 2)),
+ p("Update_Time", "BACnetDateTime", c(O, 3)),
+ p("Last_State_Change", "BACnetTimerTransition", c(O)),
+ p("Expiration_Time", "BACnetDateTime", c(O)),
+ p("Initial_Timeout", "Unsigned", c(O)),
+ p("Default_Timeout", "Unsigned", c(O)),
+ p("Min_Pres_Value", "Unsigned", c(O, 4)),
+ p("Max_Pres_Value", "Unsigned", c(O, 4)),
+ p("Resolution", "Unsigned", c(O)),
+ p("State_Change_Values", "BACnetARRAY[7] of BACnetTimerStateChangeValue", c(O, 5)),
+ p("List_Of_Object_Property_References", "BACnetLIST of BACnetDeviceObjectPropertyReference", c(O, 5)),
+ p("Priority_For_Writing", "Unsigned(1..16)", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 6)),
+ p("Notification_Class", "Unsigned", c(O, 3, 6)),
+ p("Time_Delay", "Unsigned", c(O, 3, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 3, 6)),
+ p("Alarm_Values", "BACnetLIST of BACnetTimerState", c(O, 3, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createNetworkPort() {
+ return b("Network Port",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Network_Type", "BACnetNetworkType", c(R)),
+ p("Protocol_Level", "BACnetProtocolLevel", c(R)),
+ p("Reference_Port", "Unsigned", c(O)),
+ p("Network_Number", "Unsigned16", c(R, 1)),
+ p("Network_Number_Quality", "BACnetNetworkNumberQuality", c(R)),
+ p("Changes_Pending", "BOOLEAN", c(R)),
+ p("Command", "BACnetNetworkPortCommand", c(O, 2)),
+ p("MAC_Address", "OCTET STRING", c(O, 3)),
+ p("APDU_Length", "Unsigned", c(R)),
+ p("Link_Speed", "REAL", c(R)),
+ p("Link_Speeds", "BACnetARRAY[N] of REAL", c(O, 4)),
+ p("Link_Speed_Autonegotiate", "BOOLEAN", c(O)),
+ p("Network_Interface_Name", "CharacterString", c(O)),
+ p("BACnet_IP_Mode", "BACnetIPMode", c(O, 5)),
+ p("IP_Address", "OCTET STRING", c(O, 6)),
+ p("BACnet_IP_UDP_Port", "Unsigned16", c(O, 5)),
+ p("IP_Subnet_Mask", "OCTET STRING", c(O, 6)),
+ p("IP_Default_Gateway", "OCTET STRING", c(O, 6)),
+ p("BACnet_IP_Multicast_Address", "OCTET STRING", c(O, 7)),
+ p("IP_DNS_Server", "BACnetARRAY[N] of OCTET STRING", c(O, 6)),
+ p("IP_DHCP_Enable", "BOOLEAN", c(O, 8)),
+ p("IP_DHCP_Lease_Time", "Unsigned", c(O)),
+ p("IP_DHCP_Lease_Time_Remaining", "Unsigned", c(O)),
+ p("IP_DHCP_Server", "OCTET STRING", c(O)),
+ p("BACnet_IP_NAT_Traversal", "BOOLEAN", c(O, 9)),
+ p("BACnet_IP_Global_Address", "BACnetHostNPort", c(O, 10)),
+ p("BBMD_Broadcast_Distribution_Table", "BACnetLIST of BACnetBDTEntry", c(O, 11)),
+ p("BBMD_Accept_FD_Registrations", "BOOLEAN", c(O, 11)),
+ p("BBMD_Foreign_Device_Table", "BACnetLIST of BACnetFDTEntry", c(O, 12)),
+ p("FD_BBMD_Address", "BACnetHostNPort", c(O, 13)),
+ p("FD_Subscription_Lifetime", "Unsigned16", c(O, 13)),
+ p("BACnet_IPv6_Mode", "BACnetIPMode", c(O, 14)),
+ p("IPv6_Address", "OCTET STRING", c(O, 15)),
+ p("IPv6_Prefix_Length", "Unsigned8", c(O, 15)),
+ p("BACnet_IPv6_UDP_Port", "Unsigned16", c(O, 14)),
+ p("IPv6_Default_Gateway", "OCTET STRING", c(O, 15)),
+ p("BACnet_IPv6_Multicast_Address", "OCTET STRING", c(O, 14)),
+ p("IPv6_DNS_Server", "BACnetARRAY[N] of OCTET STRING", c(O, 15)),
+ p("IPv6_Auto_Addressing_Enable", "BOOLEAN", c(O, 16)),
+ p("IPv6_DHCP_Lease_Time", "Unsigned", c(O)),
+ p("IPv6_DHCP_Lease_Time_Remaining", "Unsigned", c(O)),
+ p("IPv6_DHCP_Server", "OCTET STRING", c(O)),
+ p("IPv6_Zone_Index", "CharacterString", c(O, 17)),
+ p("Max_Master", "Unsigned8(0..127)", c(O, 18)),
+ p("Max_Info_Frames", "Unsigned8", c(O, 18)),
+ p("Slave_Proxy_Enable", "BOOLEAN", c(O, 19)),
+ p("Manual_Slave_Address_Binding", "BACnetLIST of BACnetAddressBinding", c(O, 19)),
+ p("Auto_Slave_Discovery", "BOOLEAN", c(O, 20)),
+ p("Slave_Address_Binding", "BACnetLIST of BACnetAddressBinding", c(O, 21)),
+ p("Virtual_MAC_Address_Table", "BACnetLIST of BACnetVMACEntry", c(O, 22)),
+ p("Routing_Table", "BACnetLIST of BACnetRouterEntry", c(O)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 23, 24)),
+ p("Notification_Class", "Unsigned", c(O, 23, 24)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 23, 24)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 23, 24)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 23, 24)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 23, 24)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 24)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 24)),
+ p("Event_State", "BACnetEventState", c(O, 23)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createBinaryLightingOutput() {
+ return b("Binary Lighting Output",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetBinaryLightingPV", c(W)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Blink_Warn_Enable", "BOOLEAN", c(R)),
+ p("Egress_Time", "Unsigned", c(R)),
+ p("Egress_Active", "BOOLEAN", c(R)),
+ p("Feedback_Value", "BACnetBinaryLightingPV", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(R)),
+ p("Relinquish_Default", "BACnetBinaryLightingPV", c(R)),
+ p("Power", "REAL", c(O)),
+ p("Polarity", "BACnetPolarity", c(O)),
+ p("Elapsed_Active_Time", "Unsigned32", c(O, 1)),
+ p("Time_Of_Active_Time_Reset", "BACnetDateTime", c(O, 1)),
+ p("Strike_Count", "Unsigned", c(O, 2)),
+ p("Time_Of_Strike_Count_Reset", "BACnetDateTime", c(O, 2)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 4)),
+ p("Notification_Class", "Unsigned", c(O, 3, 4)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 4)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 4)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 4)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 4)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 5)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createLightingOutput() {
+ return b("Lighting Output",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "REAL", c(W)),
+ p("Tracking_Value", "REAL", c(R)),
+ p("Lighting_Command", "BACnetLightingCommand", c(W)),
+ p("In_Progress", "BACnetLightingInProgress", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Blink_Warn_Enable", "BOOLEAN", c(R)),
+ p("Egress_Time", "Unsigned", c(R)),
+ p("Egress_Active", "BOOLEAN", c(R)),
+ p("Default_Fade_Time", "Unsigned", c(R)),
+ p("Default_Ramp_Rate", "REAL", c(R)),
+ p("Default_Step_Increment", "REAL", c(R)),
+ p("Transition", "BACnetLightingTransition", c(O)),
+ p("Feedback_Value", "REAL", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(R)),
+ p("Relinquish_Default", "REAL", c(R)),
+ p("Power", "REAL", c(O)),
+ p("Instantaneous_Power", "REAL", c(O)),
+ p("Min_Actual_Value", "REAL", c(O, 1)),
+ p("Max_Actual_Value", "REAL", c(O, 1)),
+ p("Lighting_Command_Default_Priority", "Unsigned", c(R)),
+ p("COV_Increment", "REAL", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 4, 6, 8)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 5, 7)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 5, 7)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 7)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createChannel() {
+ return b("Channel",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "BACnetChannelValue", c(W)),
+ p("Last_Priority", "Unsigned", c(R)),
+ p("Write_Status", "BACnetWriteStatus", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("List_Of_Object_Property_References", "BACnetARRAY[N] of BACnetDeviceObjectPropertyReference", c(W, 1)),
+ p("Execution_Delay", "BACnetARRAY[N] of Unsigned", c(O, 1)),
+ p("Allow_Group_Delay_Inhibit", "BOOLEAN", c(O)),
+ p("Channel_Number", "Unsigned16", c(W)),
+ p("Control_Groups", "BACnetARRAY[N] of Unsigned32", c(W)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 3)),
+ p("Notification_Class", "Unsigned", c(O, 2, 3)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Event_State", "BACnetEventState", c(O, 2, 3)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 3)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 3)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 4)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 5, 6, 7)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAlertEnrollment() {
+ return b("Alert Enrollment",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "BACnetObjectIdentifier", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(R)),
+ p("Notification_Class", "Unsigned", c(R)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(R)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(R)),
+ p("Notify_Type", "BACnetNotifyType", c(R)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(R)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createNotificationForwarder() {
+ return b("Notification Forwarder",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Recipient_List", "BACnetLIST of BACnetDestination", c(R)),
+ p("Subscribed_Recipients", "BACnetLIST of BACnetEventNotificationSubscription", c(W)),
+ p("Process_Identifier_Filter", "BACnetProcessIdSelection", c(R)),
+ p("Port_Filter", "BACnetARRAY[N] of BACnetPortPermission", c(O, 1)),
+ p("Local_Forwarding_Only", "BOOLEAN", c(R)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createGlobalGroup() {
+ return b("Global Group",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Group_Members", "BACnetARRAY[N] of BACnetDeviceObjectPropertyReference", c(R)),
+ p("Group_Member_Names", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Present_Value", "BACnetARRAY[N] of BACnetPropertyAccessResult", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Member_Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_of_Service", "BOOLEAN", c(R)),
+ p("Update_Interval", "Unsigned", c(O)),
+ p("Requested_Update_Interval", "Unsigned", c(O)),
+ p("COV_Resubscription_Interval", "Unsigned", c(O)),
+ p("Client_COV_Increment", "BACnetClientCOV", c(O)),
+ p("Time_Delay", "Unsigned", c(O, 1, 4)),
+ p("Notification_Class", "Unsigned", c(O, 1, 4)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 1, 4)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 1, 4)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 1, 4)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 1, 4)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 1, 4)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 4)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 4, 5)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 4)),
+ p("COVU_Period", "Unsigned", c(O, 2)),
+ p("COVU_Recipients", "BACnetLIST of BACnetRecipient", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 6)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createNetworkSecurity() {
+ return b("Network Security",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Base_Device_Security_Policy", "BACnetSecurityLevel", c(W)),
+ p("Network_Access_Security_Policies", "BACnetARRAY[N] of BACnetNetworkSecurityPolicy", c(W)),
+ p("Security_Time_Window", "Unsigned", c(W)),
+ p("Packet_Reorder_Time", "Unsigned", c(W)),
+ p("Distribution_Key_Revision", "Unsigned8", c(R)),
+ p("Key_Sets", "BACnetARRAY[2] of BACnetSecurityKeySet", c(R)),
+ p("Last_Key_Server", "BACnetAddressBinding", c(W)),
+ p("Security_PDU_Timeout", "Unsigned16", c(W)),
+ p("Update_Key_Set_Timeout", "Unsigned16", c(R)),
+ p("Supported_Security_Algorithms", "BACnetLIST of Unsigned8", c(R)),
+ p("Do_Not_Hide", "BOOLEAN", c(W)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createDatePatternValue() {
+ return b("Date Pattern Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Date", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "Date", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 5)),
+ p("Notification_Class", "Unsigned", c(O, 4, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createTimePatternValue() {
+ return b("Time Pattern Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Time", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "Time", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 5)),
+ p("Notification_Class", "Unsigned", c(O, 4, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createDateTimePatternValue() {
+ return b("DateTime Pattern Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "BACnetDateTime", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Is_UTC", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "BACnetDateTime", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 5)),
+ p("Notification_Class", "Unsigned", c(O, 4, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createDateValue() {
+ return b("Date Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Date", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "Date", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 5)),
+ p("Notification_Class", "Unsigned", c(O, 4, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createPostiveIntegerValue() {
+ return b("Positive Integer Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Unsigned", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O, 4)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "Unsigned", c(O, 2)),
+ p("COV_Increment", "Unsigned", c(O, 3)),
+ p("Time_Delay", "Unsigned", c(O, 4, 6)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("High_Limit", "Unsigned", c(O, 4, 6)),
+ p("Low_Limit", "Unsigned", c(O, 4, 6)),
+ p("Deadband", "Unsigned", c(O, 4, 6)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 4, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3]of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3]of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3]of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Min_Pres_Value", "Unsigned", c(O)),
+ p("Max_Pres_Value", "Unsigned", c(O)),
+ p("Resolution", "Unsigned", c(O)),
+ p("Property_List", "BACnetARRAY[N]of BACnetPropertyIdentifier", c(R)),
+ p("Fault_High_Limit", "Unsigned", c(O, 9)),
+ p("Fault_Low_Limit", "Unsigned", c(O, 9)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 10, 12, 14)),
+ p("Value_Source_Array", "BACnetARRAY[16]of BACnetValueSource", c(O, 11, 13)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 11, 13)),
+ p("Command_Time_Array", "BACnetARRAY[16]of BACnetTimeStamp", c(O, 13)),
+ p("Tags", "BACnetARRAY[N]of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createIntegerValue() {
+ return b("Integer Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "INTEGER", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O, 4)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "INTEGER", c(O, 2)),
+ p("COV_Increment", "Unsigned", c(O, 3)),
+ p("Time_Delay", "Unsigned", c(O, 4, 6)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("High_Limit", "INTEGER", c(O, 4, 6)),
+ p("Low_Limit", "INTEGER", c(O, 4, 6)),
+ p("Deadband", "Unsigned", c(O, 4, 6)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 4, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Min_Pres_Value", "INTEGER", c(O)),
+ p("Max_Pres_Value", "INTEGER", c(O)),
+ p("Resolution", "INTEGER", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Fault_High_Limit", "INTEGER", c(O, 9)),
+ p("Fault_Low_Limit", "INTEGER", c(O, 9)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 10, 12, 14)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 11, 13)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 11, 13)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 13)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createTimeValue() {
+ return b("Time Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Time", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "Time", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 5)),
+ p("Notification_Class", "Unsigned", c(O, 4, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createOctetStringValue() {
+ return b("OctetString Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "OCTET STRING", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "OCTET STRING", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 4, 6, 8)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 5, 7)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 5, 7)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 7)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createBitStringValue() {
+ return b("BitString Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "BIT STRING", c(R, 1)),
+ p("Bit_Text", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O, 3)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "BIT STRING", c(O, 2)),
+ p("Time_Delay", "Unsigned", c(O, 3, 5)),
+ p("Notification_Class", "Unsigned", c(O, 3, 5)),
+ p("Alarm_Values", "BACnetARRAY[N] of BIT STRING", c(O, 3, 5)),
+ p("Bit_Mask", "BIT STRING", c(O, 3, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 5)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 7)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createLargeAnalogValue() {
+ return b("Large Analog Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Double", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O, 4)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "Double", c(O, 2)),
+ p("COV_Increment", "Double", c(O, 3)),
+ p("Time_Delay", "Unsigned", c(O, 4, 6)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("High_Limit", "Double", c(O, 4, 6)),
+ p("Low_Limit", "Double", c(O, 4, 6)),
+ p("Deadband", "Double", c(O, 4, 6)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 4, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Min_Pres_Value", "Double", c(O)),
+ p("Max_Pres_Value", "Double", c(O)),
+ p("Resolution", "Double", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Fault_High_Limit", "Double", c(O, 9)),
+ p("Fault_Low_Limit", "Double", c(O, 9)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 10, 12, 14)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 11, 13)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 11, 13)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 13)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createDateTimeValue() {
+ return b("DateTime Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "BACnetDateTime", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "BACnetDateTime", c(O, 2)),
+ p("Is_UTC", "BOOLEAN", c(O)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 5)),
+ p("Notification_Class", "Unsigned", c(O, 4, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createCharacterStringValue() {
+ return b("CharacterString Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "CharacterString", c(R, 1)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(O, 3)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 2)),
+ p("Relinquish_Default", "CharacterString", c(O, 2)),
+ p("Time_Delay", "Unsigned", c(O, 3, 5)),
+ p("Notification_Class", "Unsigned", c(O, 3, 5)),
+ p("Alarm_Values", "BACnetARRAY[N] of BACnetOptionalCharacterString", c(O, 3, 5)),
+ p("Fault_Values", "BACnetARRAY[N] of BACnetOptionalCharacterString", c(O, 7)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 5)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 7)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 2)),
+ p("Value_Source", "BACnetValueSource", c(O, 8, 10, 12)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 9, 11)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 9, 11)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 11)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createCredentialDataInput() {
+ return b("Credential Data Input",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetAuthenticationFactor", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R, 1)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Supported_Formats", "BACnetARRAY[N] of BACnetAuthenticationFactorFormat", c(R)),
+ p("Supported_Format_Classes", "BACnetARRAY[N] of Unsigned", c(O, 2)),
+ p("Update_Time", "BACnetTimeStamp", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 4)),
+ p("Notification_Class", "Unsigned", c(O, 3, 4)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 4)),
+ p("Event_State", "BACnetEventState", c(O, 3, 4)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 4)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 4)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 4)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAcessCredential() {
+ return b("Access Credential",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Global_Identifier", "Unsigned32", c(W)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Credential_Status", "BACnetBinaryPV", c(R)),
+ p("Reason_For_Disable", "BACnetLIST of BACnetAccessCredentialDisableReason", c(R)),
+ p("Authentication_Factors", "BACnetARRAY[N] of BACnetCredentialAuthenticationFactor", c(R)),
+ p("Activation_Time", "BACnetDateTime", c(R)),
+ p("Expiration_Time", "BACnetDateTime", c(R)),
+ p("Credential_Disable", "BACnetAccessCredentialDisable", c(R)),
+ p("Days_Remaining", "INTEGER", c(O, 1)),
+ p("Uses_Remaining", "INTEGER", c(O)),
+ p("Absentee_Limit", "Unsigned", c(O, 1)),
+ p("Belongs_To", "BACnetDeviceObjectReference", c(O)),
+ p("Assigned_Access_Rights", "BACnetARRAY[N] of BACnetAssignedAccessRights", c(R)),
+ p("Last_Access_Point", "BACnetDeviceObjectReference", c(O)),
+ p("Last_Access_Event", "BACnetAccessEvent", c(O)),
+ p("Last_Use_Time", "BACnetDateTime", c(O)),
+ p("Trace_Flag", "BOOLEAN", c(O)),
+ p("Threat_Authority", "BACnetAccessThreatLevel", c(O)),
+ p("Extended_Time_Enable", "BOOLEAN", c(O)),
+ p("Authorization_Exemptions", "BACnetLIST of BACnetAuthorizationExemption", c(O)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAccessRights() {
+ return b("Access Rights",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Global_Identifier", "Unsigned32", c(W)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Enable", "BOOLEAN", c(R)),
+ p("Negative_Access_Rules", "BACnetARRAY[N] of BACnetAccessRule", c(R)),
+ p("Positive_Access_Rules", "BACnetARRAY[N] of BACnetAccessRule", c(R)),
+ p("Accompaniment", "BACnetDeviceObjectReference", c(O)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAccessUser() {
+ return b("Access User",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Global_Identifier", "Unsigned32", c(W)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("User_Type", "BACnetAccessUserType", c(R)),
+ p("User_Name", "CharacterString", c(O)),
+ p("User_External_Identifier", "CharacterString", c(O)),
+ p("User_Information_Reference", "CharacterString", c(O)),
+ p("Members", "BACnetLIST of BACnetDeviceObjectReference", c(O)),
+ p("Member_Of", "BACnetLIST of BACnetDeviceObjectReference", c(O)),
+ p("Credentials", "BACnetLIST of BACnetDeviceObjectReference", c(R)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAccessZone() {
+ return b("Access Zone",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Global_Identifier", "Unsigned32", c(W)),
+ p("Occupancy_State", "BACnetAccessZoneOccupancyState", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(R, 1)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Occupancy_Count", "Unsigned", c(O, 1, 3, 4)),
+ p("Occupancy_Count_Enable", "BOOLEAN", c(O, 3, 4)),
+ p("Adjust_Value", "INTEGER", c(O, 3, 4, 5)),
+ p("Occupancy_Upper_Limit", "Unsigned", c(O)),
+ p("Occupancy_Lower_Limit", "Unsigned", c(O)),
+ p("Credentials_In_Zone", "BACnetLIST of BACnetDeviceObjectReference", c(O)),
+ p("Last_Credential_Added", "BACnetDeviceObjectReference", c(O)),
+ p("Last_Credential_Added_Time", "BACnetDateTime", c(O)),
+ p("Last_Credential_Removed", "BACnetDeviceObjectReference", c(O)),
+ p("Last_Credential_Removed_Time", "BACnetDateTime", c(O)),
+ p("Passback_Mode", "BACnetAccessPassbackMode", c(O)),
+ p("Passback_Timeout", "Unsigned", c(O, 2)),
+ p("Entry_Points", "BACnetLIST of BACnetDeviceObjectReference", c(R)),
+ p("Exit_Points", "BACnetLIST of BACnetDeviceObjectReference", c(R)),
+ p("Time_Delay", "Unsigned", c(O, 3, 7)),
+ p("Notification_Class", "Unsigned", c(O, 3, 7)),
+ p("Alarm_Values", "BACnetLIST of BACnetAccessZoneOccupancyState", c(O, 3, 7)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 7)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 7)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 7)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 7)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 7)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 7)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 7)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 7)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 7, 8)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 7)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAccessPoints() {
+ return b("Access Point",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Authentication_Status", "BACnetAuthenticationStatus", c(R)),
+ p("Active_Authentication_Policy", "Unsigned", c(R)),
+ p("Number_Of_Authentication_Policies", "Unsigned", c(R)),
+ p("Authentication_Policy_List", "BACnetARRAY[N] of BACnetAuthenticationPolicy", c(O, 1)),
+ p("Authentication_Policy_Names", "BACnetARRAY[N] of CharacterString", c(O, 1)),
+ p("Authorization_Mode", "BACnetAuthorizationMode", c(R)),
+ p("Verification_Time", "Unsigned", c(O)),
+ p("Lockout", "BOOLEAN", c(O, 2)),
+ p("Lockout_Relinquish_Time", "Unsigned", c(O)),
+ p("Failed_Attempts", "Unsigned", c(O)),
+ p("Failed_Attempt_Events", "BACnetLIST of BACnetAccessEvent", c(O)),
+ p("Max_Failed_Attempts", "Unsigned", c(O, 3)),
+ p("Failed_Attempts_Time", "Unsigned", c(O, 3)),
+ p("Threat_Level", "BACnetAccessThreatLevel", c(O)),
+ p("Occupancy_Upper_Limit_Enforced", "BOOLEAN", c(O)),
+ p("Occupancy_Lower_Limit_Enforced", "BOOLEAN", c(O)),
+ p("Occupancy_Count_Adjust", "BOOLEAN", c(O)),
+ p("Accompaniment_Time", "Unsigned", c(O)),
+ p("Access_Event", "BACnetAccessEvent", c(R)),
+ p("Access_Event_Tag", "Unsigned", c(R)),
+ p("Access_Event_Time", "BACnetTimeStamp", c(R)),
+ p("Access_Event_Credential", "BACnetDeviceObjectReference", c(R)),
+ p("Access_Event_Authentication_Factor", "BACnetAuthenticationFactor", c(O)),
+ p("Access_Doors", "BACnetARRAY[N] of BACnetDeviceObjectReference", c(R)),
+ p("Priority_For_Writing", "Unsigned (1..16)", c(R)),
+ p("Muster_Point", "BOOLEAN", c(O)),
+ p("Zone_To", "BACnetDeviceObjectReference", c(O)),
+ p("Zone_From", "BACnetDeviceObjectReference", c(O)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("Transaction_Notification_Class", "Unsigned", c(O)),
+ p("Access_Alarm_Events", "BACnetLIST of BACnetAccessEvent", c(O, 4, 6)),
+ p("Access_Transaction_Events", "BACnetLIST of BACnetAccessEvent", c(O, 4, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createTrendLogMultiple() {
+ return b("Trend Log Multiple",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Enable", "BOOLEAN", c(W)),
+ p("Start_Time", "BACnetDateTime", c(O, 1)),
+ p("Stop_Time", "BACnetDateTime", c(O, 1)),
+ p("Log_DeviceObjectProperty", "BACnetARRAY[N] of BACnetDeviceObjectPropertyReference", c(R)),
+ p("Logging_Type", "BACnetLoggingType", c(R)),
+ p("Log_Interval", "Unsigned", c(R, 2)),
+ p("Align_Intervals", "BOOLEAN", c(O, 3)),
+ p("Interval_Offset", "Unsigned", c(O, 3)),
+ p("Trigger", "BOOLEAN", c(O)),
+ p("Stop_When_Full", "BOOLEAN", c(R)),
+ p("Buffer_Size", "Unsigned32", c(R)),
+ p("Log_Buffer", "BACnetLIST of BACnetLogMultipleRecord", c(R)),
+ p("Record_Count", "Unsigned32", c(W)),
+ p("Total_Record_Count", "Unsigned32", c(R)),
+ p("Notification_Threshold", "Unsigned32", c(O, 4, 6)),
+ p("Records_Since_Notification", "Unsigned32", c(O, 4, 6)),
+ p("Last_Notify_Record", "Unsigned32", c(O, 4, 6)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createStructuredView() {
+ return b("Structured View",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Node_Type", "BACnetNodeType", c(R)),
+ p("Node_Subtype", "CharacterString", c(O)),
+ p("Subordinate_List", "BACnetARRAY[N] of BACnetDeviceObjectReference", c(R)),
+ p("Subordinate_Annotations", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Subordinate_Tags", "BACnetARRAY[N] of BACnetNameValueCollection", c(O)),
+ p("Subordinate_Node_Types", "BACnetARRAY[N] of BACnetNodeType", c(O)),
+ p("Subordinate_Relationships", "BACnetARRAY[N] of BACnetRelationship", c(O)),
+ p("Default_Subordinate_Relationship", "BACnetRelationship", c(O)),
+ p("Represents", "BACnetDeviceObjectReference", c(O)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createLoadControl() {
+ return b("Load Control",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "BACnetShedState", c(R)),
+ p("State_Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Requested_Shed_Level", "BACnetShedLevel", c(W)),
+ p("Start_Time", "BACnetDateTime", c(W)),
+ p("Shed_Duration", "Unsigned", c(W)),
+ p("Duty_Window", "Unsigned", c(W)),
+ p("Enable", "BOOLEAN", c(W)),
+ p("Full_Duty_Baseline", "REAL", c(O)),
+ p("Expected_Shed_Level", "BACnetShedLevel", c(R)),
+ p("Actual_Shed_Level", "BACnetShedLevel", c(R)),
+ p("Shed_Levels", "BACnetARRAY[N] of Unsigned", c(W, 1)),
+ p("Shed_Level_Descriptions", "BACnetARRAY[N] of CharacterString", c(R)),
+ p("Notification_Class", "Unsigned", c(O, 2, 4)),
+ p("Time_Delay", "Unsigned", c(O, 2, 4)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 4)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 4)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 4)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 4)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 4)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 4)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 4, 5)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 4)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 6)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 7, 8, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createEventLog() {
+ return b("Event Log",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Enable", "BOOLEAN", c(W)),
+ p("Start_Time", "BACnetDateTime", c(O, 1, 2)),
+ p("Stop_Time", "BACnetDateTime", c(O, 1, 2)),
+ p("Stop_When_Full", "BOOLEAN", c(R)),
+ p("Buffer_Size", "Unsigned32", c(R)),
+ p("Log_Buffer", "BACnetLIST of BACnetEventLogRecord", c(R)),
+ p("Record_Count", "Unsigned32", c(W)),
+ p("Total_Record_Count", "Unsigned32", c(R)),
+ p("Notification_Threshold", "Unsigned32", c(O, 3, 5)),
+ p("Records_Since_Notification", "Unsigned32", c(O, 3, 5)),
+ p("Last_Notify_Record", "Unsigned32", c(O, 3, 5)),
+ p("Notification_Class", "Unsigned", c(O, 3, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 7)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAccessDoor() {
+ return b("Access Door",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetDoorValue", c(W)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Priority_Array", "BACnetPriorityArray", c(R)),
+ p("Relinquish_Default", "BACnetDoorValue", c(R)),
+ p("Door_Status", "BACnetDoorStatus", c(O, 1, 2)),
+ p("Lock_Status", "BACnetLockStatus", c(O, 1)),
+ p("Secured_Status", "BACnetDoorSecuredStatus", c(O)),
+ p("Door_Members", "BACnetARRAY[N] of BACnetDeviceObjectReference", c(O)),
+ p("Door_Pulse_Time", "Unsigned", c(R)),
+ p("Door_Extended_Pulse_Time", "Unsigned", c(R)),
+ p("Door_Unlock_Delay_Time", "Unsigned", c(O)),
+ p("Door_Open_Too_Long_Time", "Unsigned", c(R)),
+ p("Door_Alarm_State", "BACnetDoorAlarmState", c(O, 1, 3)),
+ p("Masked_Alarm_Values", "BACnetLIST of BACnetDoorAlarmState", c(O)),
+ p("Maintenance_Required", "BACnetMaintenance", c(O)),
+ p("Time_Delay", "Unsigned", c(O, 3, 5)),
+ p("Notification_Class", "Unsigned", c(O, 3, 5)),
+ p("Alarm_Values", "BACnetLIST of BACnetDoorAlarmState", c(O, 3, 5)),
+ p("Fault_Values", "BACnetLIST of BACnetDoorAlarmState", c(O)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 5)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 7, 9, 11)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 8, 10)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 8, 10)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 10)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createTrendLog() {
+ return b("Trend Log",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Enable", "BOOLEAN", c(W)),
+ p("Start_Time", "BACnetDateTime", c(O, 1, 2)),
+ p("Stop_Time", "BACnetDateTime", c(O, 1, 2)),
+ p("Log_DeviceObjectProperty", "BACnetDeviceObjectPropertyReference", c(O, 8)),
+ p("Log_Interval", "Unsigned", c(O, 1, 3)),
+ p("COV_Resubscription_Interval", "Unsigned", c(O)),
+ p("Client_COV_Increment", "BACnetClientCOV", c(O)),
+ p("Stop_When_Full", "BOOLEAN", c(R)),
+ p("Buffer_Size", "Unsigned32", c(R)),
+ p("Log_Buffer", "BACnetLIST of BACnetLogRecord", c(R)),
+ p("Record_Count", "Unsigned32", c(W)),
+ p("Total_Record_Count", "Unsigned32", c(R)),
+ p("Logging_Type", "BACnetLoggingType", c(R)),
+ p("Align_Intervals", "BOOLEAN", c(O, 5)),
+ p("Interval_Offset", "Unsigned", c(O, 5)),
+ p("Trigger", "BOOLEAN", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Notification_Threshold", "Unsigned32", c(O, 4, 7)),
+ p("Records_Since_Notification", "Unsigned32", c(O, 4, 7)),
+ p("Last_Notify_Record", "Unsigned32", c(O, 4, 7)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Notification_Class", "Unsigned", c(O, 4, 7)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 7)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 7)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 7)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 7)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 7)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 7)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 7)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 7)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 7, 9)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 10)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createSchedule() {
+ return b("Schedule",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "Any", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Effective_Period", "BACnetDateRange", c(R)),
+ p("Weekly_Schedule", "BACnetARRAY[7] of BACnetDailySchedule", c(O, 1)),
+ p("Exception_Schedule", "BACnetARRAY[N] of BACnetSpecialEvent", c(O, 1)),
+ p("Schedule_Default", "Any", c(R)),
+ p("List_Of_Object_Property_References", "BACnetLIST of BACnetDeviceObjectPropertyReference", c(R)),
+ p("Priority_For_Writing", "Unsigned(1..16)", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 3)),
+ p("Notification_Class", "Unsigned", c(O, 2, 3)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Event_State", "BACnetEventState", c(O, 2, 3)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 3)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 3)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createPulseConverter() {
+ return b("Pulse Converter",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "REAL", c(R, 1)),
+ p("Input_Reference", "BACnetObjectPropertyReference", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Scale_Factor", "REAL", c(R)),
+ p("Adjust_Value", "REAL", c(W)),
+ p("Count", "Unsigned", c(R)),
+ p("Update_Time", "BACnetDateTime", c(R)),
+ p("Count_Change_Time", "BACnetDateTime", c(R)),
+ p("Count_Before_Change", "Unsigned", c(R)),
+ p("COV_Increment", "REAL", c(O, 2)),
+ p("COV_Period", "Unsigned", c(O, 2)),
+ p("Notification_Class", "Unsigned", c(O, 3, 5)),
+ p("Time_Delay", "Unsigned", c(O, 3, 5)),
+ p("High_Limit", "REAL", c(O, 3, 5)),
+ p("Low_Limit", "REAL", c(O, 3, 5)),
+ p("Deadband", "REAL", c(O, 3, 5)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 3, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 5)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 7)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createProgram() {
+ return b("Program",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Program_State", "BACnetProgramState", c(R)),
+ p("Program_Change", "BACnetProgramRequest", c(W)),
+ p("Reason_For_Halt", "BACnetProgramError", c(O, 1)),
+ p("Description_Of_Halt", "CharacterString", c(O, 1)),
+ p("Program_Location", "CharacterString", c(O)),
+ p("Description", "CharacterString", c(O)),
+ p("Instance_Of", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 3)),
+ p("Notification_Class", "Unsigned", c(O, 2, 3)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Event_State", "BACnetEventState", c(O, 2, 3)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 3)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 3)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 3)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 4)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createNotificationClass() {
+ return b("Notification Class",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Notification_Class", "Unsigned", c(R)),
+ p("Priority", "BACnetARRAY[3] of Unsigned", c(R)),
+ p("Ack_Required", "BACnetEventTransitionBits", c(R)),
+ p("Recipient_List", "BACnetLIST of BACnetDestination", c(R)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(O, 1)),
+ p("Event_State", "BACnetEventState", c(O, 1)),
+ p("Reliability", "BACnetReliability", c(O, 1)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 1, 2)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 1, 2)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 1, 2)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 1, 2)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 1, 2)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 2)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createMultiStateValue() {
+ return b("Multi-state Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "Unsigned", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Number_Of_States", "Unsigned", c(R)),
+ p("State_Text", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 3)),
+ p("Relinquish_Default", "Unsigned", c(O, 3)),
+ p("Time_Delay", "Unsigned", c(O, 4, 6)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("Alarm_Values", "BACnetLIST of Unsigned", c(O, 4, 6)),
+ p("Fault_Values", "BACnetLIST of Unsigned", c(O, 8)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 3)),
+ p("Value_Source", "BACnetValueSource", c(O, 9, 11, 13)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 10, 12)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 10, 12)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 12)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createMultiStateOutput() {
+ return b("Multi-state Output",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "Unsigned", c(W)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Number_Of_States", "Unsigned", c(R)),
+ p("State_Text", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(R)),
+ p("Relinquish_Default", "Unsigned", c(R)),
+ p("Time_Delay", "Unsigned", c(O, 1, 3)),
+ p("Notification_Class", "Unsigned", c(O, 1, 3)),
+ p("Feedback_Value", "Unsigned", c(O, 1)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 1, 3)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 1, 3)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 1, 3)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 1, 3)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 3)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 1, 3)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 3)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 3, 4)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 3)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 5)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Interface_Value", "BACnetOptionalUnsigned", c(O)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 8, 10)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 7, 9)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 7, 9)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createMultiStateInput() {
+ return b("Multi-state Input",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "Unsigned", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Number_Of_States", "Unsigned", c(R)),
+ p("State_Text", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Time_Delay", "Unsigned", c(O, 3, 5)),
+ p("Notification_Class", "Unsigned", c(O, 3, 5)),
+ p("Alarm_Values", "BACnetLIST of Unsigned", c(O, 3, 5)),
+ p("Fault_Values", "BACnetLIST of Unsigned", c(O, 7)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 5)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 7)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Interface_Value", "BACnetOptionalUnsigned", c(O)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createLoop() {
+ return b("Loop",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "REAL", c(R, 7)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O, 7)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Update_Interval", "Unsigned", c(O)),
+ p("Output_Units", "BACnetEngineeringUnits", c(R)),
+ p("Manipulated_Variable_Reference", "BACnetObjectPropertyReference", c(R)),
+ p("Controlled_Variable_Reference", "BACnetObjectPropertyReference", c(R)),
+ p("Controlled_Variable_Value", "REAL", c(R)),
+ p("Controlled_Variable_Units", "BACnetEngineeringUnits", c(R)),
+ p("Setpoint_Reference", "BACnetSetpointReference", c(R)),
+ p("Setpoint", "REAL", c(R)),
+ p("Action", "BACnetAction", c(R)),
+ p("Proportional_Constant", "REAL", c(O, 1)),
+ p("Proportional_Constant_Units", "BACnetEngineeringUnits", c(O, 1)),
+ p("Integral_Constant", "REAL", c(O, 2)),
+ p("Integral_Constant_Units", "BACnetEngineeringUnits", c(O, 2)),
+ p("Derivative_Constant", "REAL", c(O, 3)),
+ p("Derivative_Constant_Units", "BACnetEngineeringUnits", c(O, 3)),
+ p("Bias", "REAL", c(O)),
+ p("Maximum_Output", "REAL", c(O)),
+ p("Minimum_Output", "REAL", c(O)),
+ p("Priority_For_Writing", "Unsigned(1..16)", c(R)),
+ p("COV_Increment", "REAL", c(O, 4)),
+ p("Time_Delay", "Unsigned", c(O, 5, 8)),
+ p("Notification_Class", "Unsigned", c(O, 5, 8)),
+ p("Error_Limit", "REAL", c(O, 5, 8)),
+ p("Deadband", "REAL", c(O, 5, 8)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 5, 8)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 5, 8)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 5, 8)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 5, 8)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 8)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 8)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 5, 8)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 8)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 8, 9)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 8)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 10)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Low_Diff_Limit", "BACnetOptionalREAL", c(O)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createLifeSafetyZone() {
+ return b("Life Safety Zone",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetLifeSafetyState", c(R)),
+ p("Tracking_Value", "BACnetLifeSafetyState", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(R, 1)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Mode", "BACnetLifeSafetyMode", c(W)),
+ p("Accepted_Modes", "BACnetLIST of BACnetLifeSafetyMode", c(R)),
+ p("Time_Delay", "Unsigned", c(O, 2, 4)),
+ p("Notification_Class", "Unsigned", c(O, 2, 4)),
+ p("Life_Safety_Alarm_Values", "BACnetLIST of BACnetLifeSafetyState", c(O, 2, 4)),
+ p("Alarm_Values", "BACnetLIST of BACnetLifeSafetyState", c(O, 2, 4)),
+ p("Fault_Values", "BACnetLIST of BACnetLifeSafetyState", c(O)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 4)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 4)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 4)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 4)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 4)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 4)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 4, 5)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 4)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Silenced", "BACnetSilencedState", c(R)),
+ p("Operation_Expected", "BACnetLifeSafetyOperation", c(R)),
+ p("Maintenance_Required", "BOOLEAN", c(O)),
+ p("Zone_Members", "BACnetLIST of BACnetDeviceObjectReference", c(R)),
+ p("Member_Of", "BACnetLIST of BACnetDeviceObjectReference", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 6, 7, 8)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createLifeSafetyPoint() {
+ return b("Life Safety Point",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetLifeSafetyState", c(R)),
+ p("Tracking_Value", "BACnetLifeSafetyState", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(R, 1)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Mode", "BACnetLifeSafetyMode", c(W)),
+ p("Accepted_Modes", "BACnetLIST of BACnetLifeSafetyMode", c(R)),
+ p("Time_Delay", "Unsigned", c(O, 2, 5)),
+ p("Notification_Class", "Unsigned", c(O, 2, 5)),
+ p("Life_Safety_Alarm_Values", "BACnetLIST of BACnetLifeSafetyState", c(O, 2, 5)),
+ p("Alarm_Values", "BACnetLIST of BACnetLifeSafetyState", c(O, 2, 5)),
+ p("Fault_Values", "BACnetLIST of BACnetLifeSafetyState", c(O)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 5)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
+ p("Silenced", "BACnetSilencedState", c(R)),
+ p("Operation_Expected", "BACnetLifeSafetyOperation", c(R)),
+ p("Maintenance_Required", "BACnetMaintenance", c(O)),
+ p("Setting", "Unsigned8", c(O)),
+ p("Direct_Reading", "REAL", c(O, 3)),
+ p("Units", "BACnetEngineeringUnits", c(O, 3)),
+ p("Member_Of", "BACnetLIST of BACnetDeviceObjectReference", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 7, 8, 9)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createGroup() {
+ return b("Group",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("List_Of_Group_Members", "BACnetLIST of ReadAccessSpecification", c(R)),
+ p("Present_Value", "BACnetLIST of ReadAccessResult", c(R)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createFile() {
+ return b("File",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("File_Type", "CharacterString", c(R)),
+ p("File_Size", "Unsigned", c(R, 1)),
+ p("Modification_Date", "BACnetDateTime", c(R)),
+ p("Archive", "BOOLEAN", c(W)),
+ p("Read_Only", "BOOLEAN", c(R)),
+ p("File_Access_Method", "BACnetFileAccessMethod", c(R)),
+ p("Record_Count", "Unsigned", c(O, 2)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createEventEnrollment() {
+ return b("Event Enrollment",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Event_Type", "BACnetEventType", c(R)),
+ p("Notify_Type", "BACnetNotifyType", c(R)),
+ p("Event_Parameters", "BACnetEventParameter", c(R)),
+ p("Object_Property_Reference", "BACnetDeviceObjectPropertyReference", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(R)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(R)),
+ p("Notification_Class", "Unsigned", c(R)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(R)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O)),
+ p("Event_Detection_Enable", "BOOLEAN", c(R)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 2)),
+ p("Time_Delay_Normal", "Unsigned", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Reliability", "BACnetReliability", c(R)),
+ p("Fault_Type", "BACnetFaultType", c(O, 3)),
+ p("Fault_Parameters", "BACnetFaultParameter", c(O, 3)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(R)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createDevice() {
+ return b("Device",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("System_Status", "BACnetDeviceStatus", c(R)),
+ p("Vendor_Name", "CharacterString", c(R)),
+ p("Vendor_Identifier", "Unsigned16", c(R)),
+ p("Model_Name", "CharacterString", c(R)),
+ p("Firmware_Revision", "CharacterString", c(R)),
+ p("Application_Software_Version", "CharacterString", c(R)),
+ p("Location", "CharacterString", c(O)),
+ p("Description", "CharacterString", c(O)),
+ p("Protocol_Version", "Unsigned", c(R)),
+ p("Protocol_Revision", "Unsigned", c(R)),
+ p("Protocol_Services_Supported", "BACnetServicesSupported", c(R)),
+ p("Protocol_Object_Types_Supported", "BACnetObjectTypesSupported", c(R)),
+ p("Object_List", "BACnetARRAY[N] of BACnetObjectIdentifier", c(R)),
+ p("Structured_Object_List", "BACnetARRAY[N] of BACnetObjectIdentifier", c(O)),
+ p("Max_APDU_Length_Accepted", "Unsigned", c(R)),
+ p("Segmentation_Supported", "BACnetSegmentation", c(R)),
+ p("Max_Segments_Accepted", "Unsigned", c(O, 1)),
+ p("VT_Classes_Supported", "BACnetLIST of BACnetVTClass", c(O, 2)),
+ p("Active_VT_Sessions", "BACnetLIST of BACnetVTSession", c(O, 2)),
+ p("Local_Time", "Time", c(O, 3, 4, 15)),
+ p("Local_Date", "Date", c(O, 3, 4, 15)),
+ p("UTC_Offset", "INTEGER", c(O, 4)),
+ p("Daylight_Savings_Status", "BOOLEAN", c(O, 4)),
+ p("APDU_Segment_Timeout", "Unsigned", c(O, 1)),
+ p("APDU_Timeout", "Unsigned", c(R)),
+ p("Number_Of_APDU_Retries", "Unsigned", c(R)),
+ p("Time_Synchronization_Recipients", "BACnetLIST of BACnetRecipient", c(O, 5)),
+ p("Max_Master", "Unsigned(0..127)", c(O, 6)),
+ p("Max_Info_Frames", "Unsigned", c(O, 6)),
+ p("Device_Address_Binding", "BACnetLIST of BACnetAddressBinding", c(R)),
+ p("Database_Revision", "Unsigned", c(R)),
+ p("Configuration_Files", "BACnetARRAY[N] of BACnetObjectIdentifier", c(O, 7)),
+ p("Last_Restore_Time", "BACnetTimeStamp", c(O, 7)),
+ p("Backup_Failure_Timeout", "Unsigned16", c(O, 8)),
+ p("Backup_Preparation_Time", "Unsigned16", c(O, 16)),
+ p("Restore_Preparation_Time", "Unsigned16", c(O, 16)),
+ p("Restore_Completion_Time", "Unsigned16", c(O, 16)),
+ p("Backup_And_Restore_State", "BACnetBackupState", c(O, 7)),
+ p("Active_COV_Subscriptions", "BACnetLIST of BACnetCOVSubscription", c(O, 9)),
+ p("Last_Restart_Reason", "BACnetRestartReason", c(O, 13)),
+ p("Time_Of_Device_Restart", "BACnetTimeStamp", c(O, 13)),
+ p("Restart_Notification_Recipients", "BACnetLIST of BACnetRecipient", c(O, 17)),
+ p("UTC_Time_Synchronization_Recipients", "BACnetLIST of BACnetRecipient", c(O, 5)),
+ p("Time_Synchronization_Interval", "Unsigned", c(O, 5)),
+ p("Align_Intervals", "BOOLEAN", c(O, 5)),
+ p("Interval_Offset", "Unsigned", c(O, 5)),
+ p("Serial_Number", "CharacterString", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(O, 18)),
+ p("Event_State", "BACnetEventState", c(O, 18)),
+ p("Reliability", "BACnetReliability", c(O, 18)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 18, 19)),
+ p("Notification_Class", "Unsigned", c(O, 18, 19)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 18, 19)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 18, 19)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 18, 19)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 18, 19)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 19)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 19)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 20)),
+ p("Active_COV_Multiple_Subscriptions", "BACnetLIST of BACnetCOVMultipleSubscription", c(O, 21)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Deployed_Profile_Location", "CharacterString", c(O, 22)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createCommand() {
+ return b("Command",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "Unsigned", c(W)),
+ p("In_Process", "BOOLEAN", c(R)),
+ p("All_Writes_Successful", "BOOLEAN", c(R)),
+ p("Action", "BACnetARRAY[N] of BACnetActionList", c(R)),
+ p("Action_Text", "BACnetARRAY[N] of CharacterString", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Status_Flags", "BACnetStatusFlags", c(O, 1)),
+ p("Event_State", "BACnetEventState", c(O, 1)),
+ p("Reliability", "BACnetReliability", c(O, 1)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 1, 2)),
+ p("Notification_Class", "Unsigned", c(O, 1, 2)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 1, 2)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 1, 2)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 1, 2)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 1, 2)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 2)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 2)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 3)),
+ p("Value_Source", "BACnetValueSource", c(O, 4, 5, 6)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createCalendar() {
+ return b("Calendar",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Description", "CharacterString", c(O)),
+ p("Present_Value", "BOOLEAN", c(R)),
+ p("Date_List", "BACnetLIST of BACnetCalendarEntry", c(R)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createBinaryValue() {
+ return b("Binary Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetBinaryPV", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Inactive_Text", "CharacterString", c(O, 2)),
+ p("Active_Text", "CharacterString", c(O, 2)),
+ p("Change_Of_State_Time", "BACnetDateTime", c(O, 3)),
+ p("Change_Of_State_Count", "Unsigned", c(O, 3)),
+ p("Time_Of_State_Count_Reset", "BACnetDateTime", c(O, 3)),
+ p("Elapsed_Active_Time", "Unsigned32", c(O, 4)),
+ p("Time_Of_Active_Time_Reset", "BACnetDateTime", c(O, 4)),
+ p("Minimum_Off_Time", "Unsigned32", c(O)),
+ p("Minimum_On_Time", "Unsigned32", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 5)),
+ p("Relinquish_Default", "BACnetBinaryPV", c(O, 5)),
+ p("Time_Delay", "Unsigned", c(O, 6, 8)),
+ p("Notification_Class", "Unsigned", c(O, 6, 8)),
+ p("Alarm_Value", "BACnetBinaryPV", c(O, 6, 8)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 6, 8)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 6, 8)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 6, 8)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 6, 8)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 8)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 8)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 6, 8)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 8)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 8, 9)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 8)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 10)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 5)),
+ p("Value_Source", "BACnetValueSource", c(O, 11, 13, 15)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 12, 14)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 12, 14)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 14)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createBinaryOutput() {
+ return b("Binary Output",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetBinaryPV", c(W)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Polarity", "BACnetPolarity", c(R)),
+ p("Inactive_Text", "CharacterString", c(O, 1)),
+ p("Active_Text", "CharacterString", c(O, 1)),
+ p("Change_Of_State_Time", "BACnetDateTime", c(O, 2)),
+ p("Change_Of_State_Count", "Unsigned", c(O, 2)),
+ p("Time_Of_State_Count_Reset", "BACnetDateTime", c(O, 2)),
+ p("Elapsed_Active_Time", "Unsigned32", c(O, 3)),
+ p("Time_Of_Active_Time_Reset", "BACnetDateTime", c(O, 3)),
+ p("Minimum_Off_Time", "Unsigned32", c(O)),
+ p("Minimum_On_Time", "Unsigned32", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(R)),
+ p("Relinquish_Default", "BACnetBinaryPV", c(R)),
+ p("Time_Delay", "Unsigned", c(O, 4, 6)),
+ p("Notification_Class", "Unsigned", c(O, 4, 6)),
+ p("Feedback_Value", "BACnetBinaryPV", c(O, 4)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Interface_Value", "BACnetOptionalBinaryPV", c(O)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 9, 11, 13)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 10, 12)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 10, 12)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 12)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createBinarInput() {
+ return b("Binary input",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "BACnetBinaryPV", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Polarity", "BACnetPolarity", c(R)),
+ p("Inactive_Text", "CharacterString", c(O, 2)),
+ p("Active_Text", "CharacterString", c(O, 2)),
+ p("Change_Of_State_Time", "BACnetDateTime", c(O, 3)),
+ p("Change_Of_State_Count", "Unsigned", c(O, 3)),
+ p("Time_Of_State_Count_Reset", "BACnetDateTime", c(O, 3)),
+ p("Elapsed_Active_Time", "Unsigned32", c(O, 4)),
+ p("Time_Of_Active_Time_Reset", "BACnetDateTime", c(O, 4)),
+ p("Time_Delay", "Unsigned", c(O, 5, 7)),
+ p("Notification_Class", "Unsigned", c(O, 5, 7)),
+ p("Alarm_Value", "BACnetBinaryPV", c(O, 5, 7)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 5, 7)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 5, 7)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 5, 7)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 5, 7)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 7)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 7)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 5, 7)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 7)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 7, 8)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 7)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 9)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Interface_Value", "BACnetOptionalBinaryPV", c(O)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAveraging() {
+ return b("Averaging",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Minimum_Value", "REAL", c(R)),
+ p("Minimum_Value_Timestamp", "BACnetDateTime", c(O)),
+ p("Average_Value", "REAL", c(R)),
+ p("Variance_Value", "REAL", c(O)),
+ p("Maximum_Value", "REAL", c(R)),
+ p("Maximum_Value_Timestamp", "BACnetDateTime", c(O)),
+ p("Description", "CharacterString", c(O)),
+ p("Attempted_Samples", "Unsigned", c(W, 1)),
+ p("Valid_Samples", "Unsigned", c(R)),
+ p("Object_Property_Reference", "BACnetDeviceObjectPropertyReference", c(R, 1)),
+ p("Window_Interval", "Unsigned", c(W, 1)),
+ p("Window_Samples", "Unsigned", c(W, 1)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAnalogValue() {
+ return b("Analog Value",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "REAL", c(R, 4)),
+ p("Description", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Priority_Array", "BACnetPriorityArray", c(O, 1)),
+ p("Relinquish_Default", "REAL", c(O, 1)),
+ p("COV_Increment", "REAL", c(O, 2)),
+ p("Time_Delay", "Unsigned", c(O, 3, 6)),
+ p("Notification_Class", "Unsigned", c(O, 3, 6)),
+ p("High_Limit", "REAL", c(O, 3, 6)),
+ p("Low_Limit", "REAL", c(O, 3, 6)),
+ p("Deadband", "REAL", c(O, 3, 6)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 3, 6)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 6)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 6)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 6)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 6)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 6)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 6)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 8)),
+ p("Min_Pres_Value", "REAL", c(O)),
+ p("Max_Pres_Value", "REAL", c(O)),
+ p("Resolution", "REAL", c(O)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Fault_High_Limit", "REAL", c(O, 9)),
+ p("Fault_Low_Limit", "REAL", c(O, 9)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(O, 1)),
+ p("Value_Source", "BACnetValueSource", c(O, 10, 12, 14)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 11, 13)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 11, 13)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O, 13)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAnalogOutput() {
+ return b("Analog Output",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "REAL", c(W)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Min_Pres_Value", "REAL", c(O)),
+ p("Max_Pres_Value", "REAL", c(O)),
+ p("Resolution", "REAL", c(O)),
+ p("Priority_Array", "BACnetPriorityArray", c(R)),
+ p("Relinquish_Default", "REAL", c(R)),
+ p("COV_Increment", "REAL", c(O, 1)),
+ p("Time_Delay", "Unsigned", c(O, 2, 4)),
+ p("Notification_Class", "Unsigned", c(O, 2, 4)),
+ p("High_Limit", "REAL", c(O, 2, 4)),
+ p("Low_Limit", "REAL", c(O, 2, 4)),
+ p("Deadband", "REAL", c(O, 2, 4)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 2, 4)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 2, 4)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 2, 4)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 2, 4)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 2, 4)),
+ p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 4)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 2, 4)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 4)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 4, 5)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 4)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 6)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Interface_Value", "BACnetOptionalREAL", c(O)),
+ p("Current_Command_Priority", "BACnetOptionalUnsigned", c(R)),
+ p("Value_Source", "BACnetValueSource", c(O, 7, 9, 11)),
+ p("Value_Source_Array", "BACnetARRAY[16] of BACnetValueSource", c(O, 8, 10)),
+ p("Last_Command_Time", "BACnetTimeStamp", c(O, 8, 10)),
+ p("Command_Time_Array", "BACnetARRAY[16] of BACnetTimeStamp", c(O,10)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static BacNetObject createAnalogInput() {
+ return b("Analog Input",
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
+ p("Object_Name", "CharacterString", c(R)),
+ p("Object_Type", "BACnetObjectType", c(R)),
+ p("Present_Value", "REAL", c(R, 1)),
+ p("Description", "CharacterString", c(O)),
+ p("Device_Type", "CharacterString", c(O)),
+ p("Status_Flags", "BACnetStatusFlags", c(R)),
+ p("Event_State", "BACnetEventState", c(R)),
+ p("Reliability", "BACnetReliability", c(O)),
+ p("Out_Of_Service", "BOOLEAN", c(R)),
+ p("Update_Interval", "Unsigned", c(O)),
+ p("Units", "BACnetEngineeringUnits", c(R)),
+ p("Min_Pres_Value", "REAL", c(O)),
+ p("Max_Pres_Value", "REAL", c(O)),
+ p("Resolution", "REAL", c(O)),
+ p("COV_Increment", "REAL", c(O, 2)),
+ p("Time_Delay", "Unsigned", c(O, 3, 5)),
+ p("Notification_Class", "Unsigned", c(O, 3, 5)),
+ p("High_Limit", "REAL", c(O, 3, 5)),
+ p("Low_Limit", "REAL", c(O, 3, 5)),
+ p("Deadband", "REAL", c(O, 3, 5)),
+ p("Limit_Enable", "BACnetLimitEnable", c(O, 3, 5)),
+ p("Event_Enable", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 3, 5)),
+ p("Notify_Type", "BACnetNotifyType", c(O, 3, 5)),
+ p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 3, 5)),
+ p("Event_Message_Texts", "BACnetARRAY[c(3)),] of CharacterString", c(O, 5)),
+ p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 5)),
+ p("Event_Detection_Enable", "BOOLEAN", c(O, 3, 5)),
+ p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 5)),
+ p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 5, 6)),
+ p("Time_Delay_Normal", "Unsigned", c(O, 5)),
+ p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 7)),
+ p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
+ p("Interface_Value", "BACnetOptionalREAL", c(O)),
+ p("Fault_High_Limit", "REAL", c(O, 8)),
+ p("Fault_Low_Limit", "REAL", c(O, 8)),
+ p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
+ p("Profile_Location", "CharacterString", c(O)),
+ p("Profile_Name", "CharacterString", c(O))
+ );
+ }
+
+ private static void createObjectNameToBacNetObjectMap() {
+ objectNameToBacNetObjectMap = bacNetObjects.stream().collect(Collectors.toMap(BACnetObjectsDefinitions::mapObjectNameToEnumName, bacNetObject -> bacNetObject));
+ }
+
+ static String mapObjectNameToEnumName(BacNetObject bacNetObject) {
+ String name = bacNetObject.name;
+ String upperCase = name.toUpperCase();
+ String minusReplaced = upperCase.replaceAll("-", "_");
+ String spacesReplaced = minusReplaced.replaceAll(" ", "_");
+ String mappedName = spacesReplaced;
+ switch (spacesReplaced) {
+ case "DATE_PATTERN_VALUE":
+ mappedName = "DATEPATTERN_VALUE";
+ break;
+ case "DATETIME_PATTERN_VALUE":
+ mappedName = "DATETIMEPATTERN_VALUE";
+ break;
+ case "TIME_PATTERN_VALUE":
+ mappedName = "TIMEPATTERN_VALUE";
+ break;
+ }
+ return mappedName;
+ }
+
+ private static void createPropertyToObjectNameMap() {
+ propertyToObjectNameMap = new HashMap<>();
+ bacNetObjects.forEach(bacNetObject -> {
+ String bacNetObjectName = bacNetObject.name;
+ bacNetObject.properties.forEach(bacNetProperty -> {
+ String propertyIdentifier = bacNetProperty.propertyIdentifier;
+ propertyToObjectNameMap.putIfAbsent(propertyIdentifier, new LinkedList<>());
+ propertyToObjectNameMap.get(propertyIdentifier).add(bacNetObjectName);
+ });
+ });
+ }
+
+ private static void createPropertyTypeCombinationToObjectNameMap() {
+ propertyTypeCombinationToObjectNameMap = new HashMap<>();
+ bacNetObjects.forEach(bacNetObject -> {
+ String bacNetObjectName = bacNetObject.name;
+ bacNetObject.properties.forEach(bacNetProperty -> {
+ PropertyTypeCombination propertyTypeCombination = new PropertyTypeCombination(bacNetProperty);
+ propertyTypeCombinationToObjectNameMap.putIfAbsent(propertyTypeCombination, new LinkedList<>());
+ propertyTypeCombinationToObjectNameMap.get(propertyTypeCombination).add(bacNetObjectName);
+ });
+ });
+ }
+
+ static void createPropertyIdToPropertyNameMap() {
+ propertyIdToPropertyNameMap = new HashMap<>();
+ propertyToObjectNameMap.keySet().forEach(propertyName -> propertyIdToPropertyNameMap.put(mapPropertyNameToEnumName(propertyName), propertyName));
+ }
+
+ static String mapPropertyNameToEnumName(String propertyName) {
+ String name = propertyName;
+ String upperCase = name.toUpperCase();
+ String minusReplaced = upperCase.replaceAll("-", "_");
+ String spacesReplaced = minusReplaced.replaceAll(" ", "_");
+ String mappedName = spacesReplaced;
+ switch (spacesReplaced) {
+ case "TODO":
+ mappedName = "TODO";
+ break;
+ }
+ return mappedName;
+ }
+
+
+ static BacNetObject b(String name, BacNetProperty... properties) {
+ return new BacNetObject(name, List.of(properties));
+ }
+
+ static BacNetProperty p(String propertyIdentifier, String propertyDataType, ConformanceCode conformanceCode) {
+ return new BacNetProperty(propertyIdentifier, propertyDataType, conformanceCode);
+ }
+
+ static ConformanceCode c(ConformanceCode.Type type, Integer... footnotes) {
+ return new ConformanceCode(type, List.of(footnotes));
+ }
+
+ static class BacNetObject {
+ String name;
+ List<BacNetProperty> properties;
+
+ BacNetObject(String name, List<BacNetProperty> properties) {
+ this.name = name;
+ this.properties = properties;
+ }
+ }
+
+ static class BacNetProperty {
+ String propertyIdentifier;
+ String propertyDataType;
+ ConformanceCode conformanceCode;
+
+ BacNetProperty(String propertyIdentifier, String propertyDataType, ConformanceCode conformanceCode) {
+ this.propertyIdentifier = propertyIdentifier;
+ this.propertyDataType = propertyDataType;
+ this.conformanceCode = conformanceCode;
+ }
+ }
+
+ static class ConformanceCode {
+ Type type;
+ List<Integer> additionalFootnotes;
+
+ public ConformanceCode(Type type, List<Integer> additionalFootnotes) {
+ this.type = type;
+ this.additionalFootnotes = additionalFootnotes;
+ }
+
+ enum Type {
+ R, W, O
+ }
+ }
+
+ static class PropertyTypeCombination implements Comparable<PropertyTypeCombination> {
+ String propertyIdentifier;
+ String propertyDataType;
+
+ PropertyTypeCombination(BacNetProperty bacNetProperty) {
+ propertyIdentifier = bacNetProperty.propertyIdentifier;
+ propertyDataType = bacNetProperty.propertyDataType;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PropertyTypeCombination that = (PropertyTypeCombination) o;
+ return propertyIdentifier.equals(that.propertyIdentifier) && propertyDataType.equals(that.propertyDataType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(propertyIdentifier, propertyDataType);
+ }
+
+ @Override
+ public String toString() {
+ return propertyIdentifier + ':' + propertyDataType;
+ }
+
+
+ @Override
+ public int compareTo(PropertyTypeCombination propertyTypeCombination) {
+ if (propertyTypeCombination == null) {
+ return 0;
+ }
+ return this.toString().compareTo(propertyTypeCombination.toString());
+ }
+ }
+}
diff --git a/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/ObjectPropertyDeDuplicationTest.java b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/ObjectPropertyDeDuplicationTest.java
new file mode 100644
index 0000000000..d1fb7a5f45
--- /dev/null
+++ b/protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/ObjectPropertyDeDuplicationTest.java
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.plc4x.protocol.bacnetip;
+
+import org.apache.plc4x.plugins.codegenerator.protocol.TypeContext;
+import org.apache.plc4x.plugins.codegenerator.types.definitions.EnumTypeDefinition;
+import org.apache.plc4x.plugins.codegenerator.types.definitions.TypeDefinition;
+import org.apache.plc4x.plugins.codegenerator.types.enums.EnumValue;
+import org.junit.jupiter.api.*;
+import org.opentest4j.TestAbortedException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+
+import static org.apache.plc4x.protocol.bacnetip.BACnetObjectsDefinitions.*;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class ObjectPropertyDeDuplicationTest {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ObjectPropertyDeDuplicationTest.class);
+
+ public static final String BACNET_OBJECT_TYPE_TYPE_NAME = "BACnetObjectType";
+
+ public static final String BACNET_PROPERTY_IDENTIFIER_TYPE_NAME = "BACnetPropertyIdentifier";
+ Map<String, TypeDefinition> typeDefinitions;
+
+ @BeforeEach
+ void setUp() throws Exception {
+ TypeContext typeContext = new BacNetIpProtocol().getTypeContext();
+ typeDefinitions = typeContext.getTypeDefinitions();
+ }
+
+ @TestFactory
+ Collection<DynamicNode> testThatEveryObjectIsMapped() {
+ List<DynamicNode> tests = new LinkedList<>();
+ TypeDefinition baCnetObjectType = typeDefinitions.get(BACNET_OBJECT_TYPE_TYPE_NAME);
+ assertNotNull(baCnetObjectType, "We could not find essential type " + BACNET_OBJECT_TYPE_TYPE_NAME);
+ EnumTypeDefinition baCnetObjectTypeEnumTypeDefinition = (EnumTypeDefinition) baCnetObjectType;
+ for (EnumValue enumValue : baCnetObjectTypeEnumTypeDefinition.getEnumValues()) {
+ String objectName = enumValue.getName();
+ if ("VENDOR_PROPRIETARY_VALUE".equals(objectName)) continue;
+ tests.add(
+ DynamicTest.dynamicTest("Test definition for " + objectName,
+ () -> {
+ assertNotNull(objectName);
+ assertNotNull(objectNameToBacNetObjectMap.get(objectName), objectName + " has no definition");
+ })
+ );
+ }
+ return tests;
+ }
+
+ @TestFactory
+ Collection<DynamicNode> testThatEveryPropertyIsUsed() {
+ List<DynamicNode> tests = new LinkedList<>();
+ TypeDefinition baCnetPropertyIdentifier = typeDefinitions.get(BACNET_PROPERTY_IDENTIFIER_TYPE_NAME);
+ assertNotNull(baCnetPropertyIdentifier, "We could not find essential type " + BACNET_OBJECT_TYPE_TYPE_NAME);
+ EnumTypeDefinition baCnetPropertyIdentifierEnumTypeDefinition = (EnumTypeDefinition) baCnetPropertyIdentifier;
+ for (EnumValue enumValue : baCnetPropertyIdentifierEnumTypeDefinition.getEnumValues()) {
+ String propertyIdentifier = enumValue.getName();
+ if ("VENDOR_PROPRIETARY_VALUE".equals(propertyIdentifier)) continue;
+ tests.add(
+ DynamicTest.dynamicTest("Test definition for " + propertyIdentifier,
+ () -> {
+ switch (propertyIdentifier) {
+ case "ALL":
+ //TODO: check what is up with those properties
+ case "LOG_DEVICE_OBJECT_PROPERTY":
+ case "OPTIONAL":
+ case "PROCESS_IDENTIFIER":
+ case "PROTOCOL_CONFORMANCE_CLASS":
+ case "REQUIRED":
+ throw new TestAbortedException(propertyIdentifier + " not in use");
+ }
+ assertNotNull(propertyIdentifier);
+ assertTrue(propertyIdToPropertyNameMap.containsKey(propertyIdentifier), propertyIdentifier + " has no usage");
+ })
+ );
+ }
+ return tests;
+ }
+
+ @Nested
+ @Tag("just-output")
+ class JustOutputs {
+
+ @Test
+ void outputObjectChapters() {
+ List<Integer> unrelatedTables = List.of(0, 1, 7, 9, 15, 25, 33, 41, 42, 59, 60, 63, 65, 66, 67, 68, 70, 72, 73, 74);
+ int tableNo = 0;
+ for (BacNetObject bacNetObject : bacNetObjects) {
+ while (unrelatedTables.contains(tableNo)) tableNo++;
+ LOGGER.info("Table 12-{}. Properties of the {} Object Type", tableNo++, bacNetObject.name);
+ }
+ }
+
+ @Test
+ void outputPropertyUsage() {
+ propertyToObjectNameMap.forEach((propertyIdentifier, bacNetObjectNames) -> LOGGER.info("property {} is used by {}", propertyIdentifier, bacNetObjectNames));
+ }
+
+ @Test
+ void outputTypeCombinationUsage() {
+ LinkedList<Map.Entry<PropertyTypeCombination, List<String>>> listOfCombinationEntries = new LinkedList<>(propertyTypeCombinationToObjectNameMap.entrySet());
+ listOfCombinationEntries.sort(Comparator.comparingInt(v -> v.getValue().size()));
+ Collections.reverse(listOfCombinationEntries);
+ listOfCombinationEntries.forEach(propertyTypeCombinationListEntry -> {
+ LOGGER.info("{} appearance of {} in {}", propertyTypeCombinationListEntry.getValue().size(), propertyTypeCombinationListEntry.getKey(), propertyTypeCombinationListEntry.getValue());
+ });
+ }
+
+ @Test
+ void outputTypeCombinationsSorted() {
+ Set<PropertyTypeCombination> propertyTypeCombinations = propertyTypeCombinationToObjectNameMap.keySet();
+ propertyTypeCombinations.stream().sorted().forEach(propertyTypeCombination -> LOGGER.info("{}", propertyTypeCombination));
+ }
+
+ @Test
+ void outputUniqueProperties() {
+ propertyToObjectNameMap.forEach((propertyIdentifier, bacNetObjectNames) -> {
+ if (bacNetObjectNames.size() > 1) {
+ return;
+ }
+ LOGGER.info("property {} is used by {} uniquely", propertyIdentifier, bacNetObjectNames.get(0));
+ });
+ }
+
+ @Test
+ void outputNonUniqueProperties() {
+ propertyToObjectNameMap.forEach((propertyIdentifier, bacNetObjectNames) -> {
+ if (bacNetObjectNames.size() == 1) {
+ return;
+ }
+ LOGGER.info("property {} is used by {} non uniquely", propertyIdentifier, bacNetObjectNames);
+ });
+ }
+ }
+}