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/05/30 12:04:12 UTC
[plc4x] branch develop updated (ef1e4b394f -> fc22ff5277)
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
from ef1e4b394f feat(bacnet): add unknown enums to ApduType enum
new a64de11e6f feat(bacnet): mapped units to BACnetEngineeringUnits
new fc22ff5277 feat(bacnet): mapped controlled variable value
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../readwrite/model/BACnetConstructedData.go | 16 ++
...its.go => BACnetConstructedDataCarLoadUnits.go} | 92 +++++----
...ACnetConstructedDataControlledVariableUnits.go} | 92 +++++----
...BACnetConstructedDataControlledVariableValue.go | 211 +++++++++++++++++++++
...ACnetConstructedDataDerivativeConstantUnits.go} | 92 +++++----
... BACnetConstructedDataIntegralConstantUnits.go} | 92 +++++----
...nits.go => BACnetConstructedDataOutputUnits.go} | 92 +++++----
...CnetConstructedDataProportionalConstantUnits.go | 211 +++++++++++++++++++++
...tatesUnits.go => BACnetConstructedDataUnits.go} | 92 +++++----
.../bacnetip/readwrite/utils/StaticHelper.java | 2 +
.../resources/protocols/bacnetip/bacnetip.mspec | 39 +++-
11 files changed, 783 insertions(+), 248 deletions(-)
copy plc4go/protocols/bacnetip/readwrite/model/{BACnetPropertyStatesUnits.go => BACnetConstructedDataCarLoadUnits.go} (53%)
copy plc4go/protocols/bacnetip/readwrite/model/{BACnetPropertyStatesUnits.go => BACnetConstructedDataControlledVariableUnits.go} (50%)
create mode 100644 plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go
copy plc4go/protocols/bacnetip/readwrite/model/{BACnetPropertyStatesUnits.go => BACnetConstructedDataDerivativeConstantUnits.go} (50%)
copy plc4go/protocols/bacnetip/readwrite/model/{BACnetPropertyStatesUnits.go => BACnetConstructedDataIntegralConstantUnits.go} (50%)
copy plc4go/protocols/bacnetip/readwrite/model/{BACnetPropertyStatesUnits.go => BACnetConstructedDataOutputUnits.go} (53%)
create mode 100644 plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataProportionalConstantUnits.go
copy plc4go/protocols/bacnetip/readwrite/model/{BACnetPropertyStatesUnits.go => BACnetConstructedDataUnits.go} (55%)
[plc4x] 02/02: feat(bacnet): mapped controlled variable value
Posted by sr...@apache.org.
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
commit fc22ff5277ef26336224d7cc2f82a837f020384d
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon May 30 14:04:04 2022 +0200
feat(bacnet): mapped controlled variable value
---
...BACnetConstructedDataControlledVariableValue.go | 55 +++++++++++++++++++---
.../resources/protocols/bacnetip/bacnetip.mspec | 13 ++++-
2 files changed, 60 insertions(+), 8 deletions(-)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go
index 81859fff7b..323b8f3d8d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
// BACnetConstructedDataControlledVariableValue is the data-structure of this message
type BACnetConstructedDataControlledVariableValue struct {
*BACnetConstructedData
+ ControlledVariableValue *BACnetApplicationTagReal
// Arguments.
TagNumber uint8
@@ -36,6 +38,8 @@ type BACnetConstructedDataControlledVariableValue struct {
// IBACnetConstructedDataControlledVariableValue is the corresponding interface of BACnetConstructedDataControlledVariableValue
type IBACnetConstructedDataControlledVariableValue interface {
IBACnetConstructedData
+ // GetControlledVariableValue returns ControlledVariableValue (property field)
+ GetControlledVariableValue() *BACnetApplicationTagReal
// GetLengthInBytes returns the length in bytes
GetLengthInBytes() uint16
// GetLengthInBits returns the length in bits
@@ -71,10 +75,25 @@ func (m *BACnetConstructedDataControlledVariableValue) GetParent() *BACnetConstr
return m.BACnetConstructedData
}
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataControlledVariableValue) GetControlledVariableValue() *BACnetApplicationTagReal {
+ return m.ControlledVariableValue
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
// NewBACnetConstructedDataControlledVariableValue factory function for BACnetConstructedDataControlledVariableValue
-func NewBACnetConstructedDataControlledVariableValue(openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataControlledVariableValue {
+func NewBACnetConstructedDataControlledVariableValue(controlledVariableValue *BACnetApplicationTagReal, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataControlledVariableValue {
_result := &BACnetConstructedDataControlledVariableValue{
- BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ ControlledVariableValue: controlledVariableValue,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
}
_result.Child = _result
return _result
@@ -107,6 +126,9 @@ func (m *BACnetConstructedDataControlledVariableValue) GetLengthInBits() uint16
func (m *BACnetConstructedDataControlledVariableValue) GetLengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.GetParentLengthInBits())
+ // Simple field (controlledVariableValue)
+ lengthInBits += m.ControlledVariableValue.GetLengthInBits()
+
return lengthInBits
}
@@ -123,9 +145,17 @@ func BACnetConstructedDataControlledVariableValueParse(readBuffer utils.ReadBuff
currentPos := positionAware.GetPos()
_ = currentPos
- // Validation
- if !(bool((1) == (2))) {
- return nil, utils.ParseValidationError{"TODO: implement me CONTROLLED_VARIABLE_VALUE BACnetConstructedDataControlledVariableValue"}
+ // Simple Field (controlledVariableValue)
+ if pullErr := readBuffer.PullContext("controlledVariableValue"); pullErr != nil {
+ return nil, pullErr
+ }
+ _controlledVariableValue, _controlledVariableValueErr := BACnetApplicationTagParse(readBuffer)
+ if _controlledVariableValueErr != nil {
+ return nil, errors.Wrap(_controlledVariableValueErr, "Error parsing 'controlledVariableValue' field")
+ }
+ controlledVariableValue := CastBACnetApplicationTagReal(_controlledVariableValue)
+ if closeErr := readBuffer.CloseContext("controlledVariableValue"); closeErr != nil {
+ return nil, closeErr
}
if closeErr := readBuffer.CloseContext("BACnetConstructedDataControlledVariableValue"); closeErr != nil {
@@ -134,7 +164,8 @@ func BACnetConstructedDataControlledVariableValueParse(readBuffer utils.ReadBuff
// Create a partially initialized instance
_child := &BACnetConstructedDataControlledVariableValue{
- BACnetConstructedData: &BACnetConstructedData{},
+ ControlledVariableValue: CastBACnetApplicationTagReal(controlledVariableValue),
+ BACnetConstructedData: &BACnetConstructedData{},
}
_child.BACnetConstructedData.Child = _child
return _child, nil
@@ -148,6 +179,18 @@ func (m *BACnetConstructedDataControlledVariableValue) Serialize(writeBuffer uti
return pushErr
}
+ // Simple Field (controlledVariableValue)
+ if pushErr := writeBuffer.PushContext("controlledVariableValue"); pushErr != nil {
+ return pushErr
+ }
+ _controlledVariableValueErr := m.ControlledVariableValue.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("controlledVariableValue"); popErr != nil {
+ return popErr
+ }
+ if _controlledVariableValueErr != nil {
+ return errors.Wrap(_controlledVariableValueErr, "Error serializing 'controlledVariableValue' field")
+ }
+
if popErr := writeBuffer.PopContext("BACnetConstructedDataControlledVariableValue"); popErr != nil {
return popErr
}
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 273f3fe965..2a9b3cd0ba 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -2236,6 +2236,10 @@
]
//[*, 'ALARM_VALUES' BACnetConstructedDataAlarmValues [validation '1 == 2' "TODO: implement me ALARM_VALUES BACnetConstructedDataAlarmValues"]]
//[*, 'ALIGN_INTERVALS' BACnetConstructedDataAlignIntervals [validation '1 == 2' "TODO: implement me ALIGN_INTERVALS BACnetConstructedDataAlignIntervals"]]
+
+ /////
+ // All property implementations for every object
+
['ACCESS_CREDENTIAL' , 'ALL' BACnetConstructedDataAccessCredentialAl
[validation '1==2' "TODO: implement me BACnetConstructedData ...ACCESS_CREDENTIAL..."]
]
@@ -2458,6 +2462,9 @@
['TREND_LOG_MULTIPLE' , 'ALL' BACnetConstructedDataTrendLogMultipleAll
[validation '1==2' "TODO: implement me BACnetConstructedData ...TREND_LOG_MULTIPLE..."]
]
+ //
+ /////
+
//[*, 'ALL_WRITES_SUCCESSFUL' BACnetConstructedDataAllWritesSuccessful [validation '1 == 2' "TODO: implement me ALL_WRITES_SUCCESSFUL BACnetConstructedDataAllWritesSuccessful"]]
//[*, 'ALLOW_GROUP_DELAY_INHIBIT' BACnetConstructedDataAllowGroupDelayInhibit [validation '1 == 2' "TODO: implement me ALLOW_GROUP_DELAY_INHIBIT BACnetConstructedDataAllowGroupDelayInhibit"]]
//[*, 'APDU_LENGTH' BACnetConstructedDataAPDULength [validation '1 == 2' "TODO: implement me APDU_LENGTH BACnetConstructedDataAPDULength"]]
@@ -2521,9 +2528,11 @@
//[*, 'CONTROL_GROUPS' BACnetConstructedDataControlGroups [validation '1 == 2' "TODO: implement me CONTROL_GROUPS BACnetConstructedDataControlGroups"]]
//[*, 'CONTROLLED_VARIABLE_REFERENCE' BACnetConstructedDataControlledVariableReference [validation '1 == 2' "TODO: implement me CONTROLLED_VARIABLE_REFERENCE BACnetConstructedDataControlledVariableReference"]]
[*, 'CONTROLLED_VARIABLE_UNITS' BACnetConstructedDataControlledVariableUnits
- [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+ ]
+ [*, 'CONTROLLED_VARIABLE_VALUE' BACnetConstructedDataControlledVariableValue
+ [simple BACnetApplicationTagReal controlledVariableValue ]
]
- //[*, 'CONTROLLED_VARIABLE_VALUE' BACnetConstructedDataControlledVariableValue [validation '1 == 2' "TODO: implement me CONTROLLED_VARIABLE_VALUE BACnetConstructedDataControlledVariableValue"]]
//[*, 'COUNT' BACnetConstructedDataCount [validation '1 == 2' "TODO: implement me COUNT BACnetConstructedDataCount"]]
//[*, 'COUNT_BEFORE_CHANGE' BACnetConstructedDataCountBeforeChange [validation '1 == 2' "TODO: implement me COUNT_BEFORE_CHANGE BACnetConstructedDataCountBeforeChange"]]
//[*, 'COUNT_CHANGE_TIME' BACnetConstructedDataCountChangeTime [validation '1 == 2' "TODO: implement me COUNT_CHANGE_TIME BACnetConstructedDataCountChangeTime"]]
[plc4x] 01/02: feat(bacnet): mapped units to BACnetEngineeringUnits
Posted by sr...@apache.org.
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
commit a64de11e6f39b477ac4c919bbd386d0960c8f26c
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon May 30 13:54:16 2022 +0200
feat(bacnet): mapped units to BACnetEngineeringUnits
---
.../readwrite/model/BACnetConstructedData.go | 16 ++
.../model/BACnetConstructedDataCarLoadUnits.go | 211 +++++++++++++++++++++
...BACnetConstructedDataControlledVariableUnits.go | 211 +++++++++++++++++++++
...BACnetConstructedDataControlledVariableValue.go | 168 ++++++++++++++++
...BACnetConstructedDataDerivativeConstantUnits.go | 211 +++++++++++++++++++++
.../BACnetConstructedDataIntegralConstantUnits.go | 211 +++++++++++++++++++++
.../model/BACnetConstructedDataOutputUnits.go | 211 +++++++++++++++++++++
...CnetConstructedDataProportionalConstantUnits.go | 211 +++++++++++++++++++++
.../readwrite/model/BACnetConstructedDataUnits.go | 211 +++++++++++++++++++++
.../bacnetip/readwrite/utils/StaticHelper.java | 2 +
.../resources/protocols/bacnetip/bacnetip.mspec | 28 ++-
11 files changed, 1684 insertions(+), 7 deletions(-)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
index 2c43ddcb8d..e8643f5534 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
@@ -290,20 +290,36 @@ func BACnetConstructedDataParse(readBuffer utils.ReadBuffer, tagNumber uint8, ob
_child, typeSwitchError = BACnetConstructedDataTrendLogAllParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case objectType == BACnetObjectType_TREND_LOG_MULTIPLE && propertyIdentifierArgument == BACnetPropertyIdentifier_ALL: // BACnetConstructedDataTrendLogMultipleAll
_child, typeSwitchError = BACnetConstructedDataTrendLogMultipleAllParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_CAR_LOAD_UNITS: // BACnetConstructedDataCarLoadUnits
+ _child, typeSwitchError = BACnetConstructedDataCarLoadUnitsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_CONTROLLED_VARIABLE_UNITS: // BACnetConstructedDataControlledVariableUnits
+ _child, typeSwitchError = BACnetConstructedDataControlledVariableUnitsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_CONTROLLED_VARIABLE_VALUE: // BACnetConstructedDataControlledVariableValue
+ _child, typeSwitchError = BACnetConstructedDataControlledVariableValueParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_DERIVATIVE_CONSTANT_UNITS: // BACnetConstructedDataDerivativeConstantUnits
+ _child, typeSwitchError = BACnetConstructedDataDerivativeConstantUnitsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true && propertyIdentifierArgument == BACnetPropertyIdentifier_EVENT_TIME_STAMPS: // BACnetConstructedDataEventTimestamps
_child, typeSwitchError = BACnetConstructedDataEventTimestampsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case objectType == BACnetObjectType_LIFE_SAFETY_POINT && propertyIdentifierArgument == BACnetPropertyIdentifier_FAULT_VALUES: // BACnetConstructedDataLifeSafetyPointFaultValues
_child, typeSwitchError = BACnetConstructedDataLifeSafetyPointFaultValuesParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_INTEGRAL_CONSTANT_UNITS: // BACnetConstructedDataIntegralConstantUnits
+ _child, typeSwitchError = BACnetConstructedDataIntegralConstantUnitsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true && propertyIdentifierArgument == BACnetPropertyIdentifier_LIFE_SAFETY_ALARM_VALUES: // BACnetConstructedDataLifeSafetyAlarmValues
_child, typeSwitchError = BACnetConstructedDataLifeSafetyAlarmValuesParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true && propertyIdentifierArgument == BACnetPropertyIdentifier_LIST_OF_OBJECT_PROPERTY_REFERENCES: // BACnetConstructedDataListOfObjectPropertyReferences
_child, typeSwitchError = BACnetConstructedDataListOfObjectPropertyReferencesParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true && propertyIdentifierArgument == BACnetPropertyIdentifier_MEMBER_OF: // BACnetConstructedDataMemberOf
_child, typeSwitchError = BACnetConstructedDataMemberOfParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_OUTPUT_UNITS: // BACnetConstructedDataOutputUnits
+ _child, typeSwitchError = BACnetConstructedDataOutputUnitsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_PROPORTIONAL_CONSTANT_UNITS: // BACnetConstructedDataProportionalConstantUnits
+ _child, typeSwitchError = BACnetConstructedDataProportionalConstantUnitsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true && propertyIdentifierArgument == BACnetPropertyIdentifier_RELIABILITY: // BACnetConstructedDataReliability
_child, typeSwitchError = BACnetConstructedDataReliabilityParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true && propertyIdentifierArgument == BACnetPropertyIdentifier_SUBORDINATE_LIST: // BACnetConstructedDataSubordinateList
_child, typeSwitchError = BACnetConstructedDataSubordinateListParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
+ case true && propertyIdentifierArgument == BACnetPropertyIdentifier_UNITS: // BACnetConstructedDataUnits
+ _child, typeSwitchError = BACnetConstructedDataUnitsParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true && propertyIdentifierArgument == BACnetPropertyIdentifier_ZONE_MEMBERS: // BACnetConstructedDataZoneMembers
_child, typeSwitchError = BACnetConstructedDataZoneMembersParse(readBuffer, tagNumber, objectType, propertyIdentifierArgument)
case true: // BACnetConstructedDataUnspecified
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarLoadUnits.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarLoadUnits.go
new file mode 100644
index 0000000000..40d0031e9d
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataCarLoadUnits.go
@@ -0,0 +1,211 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataCarLoadUnits is the data-structure of this message
+type BACnetConstructedDataCarLoadUnits struct {
+ *BACnetConstructedData
+ Units *BACnetEngineeringUnitsTagged
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataCarLoadUnits is the corresponding interface of BACnetConstructedDataCarLoadUnits
+type IBACnetConstructedDataCarLoadUnits interface {
+ IBACnetConstructedData
+ // GetUnits returns Units (property field)
+ GetUnits() *BACnetEngineeringUnitsTagged
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataCarLoadUnits) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_CAR_LOAD_UNITS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataCarLoadUnits) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataCarLoadUnits) GetUnits() *BACnetEngineeringUnitsTagged {
+ return m.Units
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConstructedDataCarLoadUnits factory function for BACnetConstructedDataCarLoadUnits
+func NewBACnetConstructedDataCarLoadUnits(units *BACnetEngineeringUnitsTagged, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataCarLoadUnits {
+ _result := &BACnetConstructedDataCarLoadUnits{
+ Units: units,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataCarLoadUnits(structType interface{}) *BACnetConstructedDataCarLoadUnits {
+ if casted, ok := structType.(BACnetConstructedDataCarLoadUnits); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataCarLoadUnits); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataCarLoadUnits(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataCarLoadUnits(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) GetTypeName() string {
+ return "BACnetConstructedDataCarLoadUnits"
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (units)
+ lengthInBits += m.Units.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataCarLoadUnitsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataCarLoadUnits, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataCarLoadUnits"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (units)
+ if pullErr := readBuffer.PullContext("units"); pullErr != nil {
+ return nil, pullErr
+ }
+ _units, _unitsErr := BACnetEngineeringUnitsTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+ if _unitsErr != nil {
+ return nil, errors.Wrap(_unitsErr, "Error parsing 'units' field")
+ }
+ units := CastBACnetEngineeringUnitsTagged(_units)
+ if closeErr := readBuffer.CloseContext("units"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataCarLoadUnits"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataCarLoadUnits{
+ Units: CastBACnetEngineeringUnitsTagged(units),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataCarLoadUnits"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (units)
+ if pushErr := writeBuffer.PushContext("units"); pushErr != nil {
+ return pushErr
+ }
+ _unitsErr := m.Units.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("units"); popErr != nil {
+ return popErr
+ }
+ if _unitsErr != nil {
+ return errors.Wrap(_unitsErr, "Error serializing 'units' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataCarLoadUnits"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataCarLoadUnits) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableUnits.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableUnits.go
new file mode 100644
index 0000000000..de41f5317d
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableUnits.go
@@ -0,0 +1,211 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataControlledVariableUnits is the data-structure of this message
+type BACnetConstructedDataControlledVariableUnits struct {
+ *BACnetConstructedData
+ Units *BACnetEngineeringUnitsTagged
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataControlledVariableUnits is the corresponding interface of BACnetConstructedDataControlledVariableUnits
+type IBACnetConstructedDataControlledVariableUnits interface {
+ IBACnetConstructedData
+ // GetUnits returns Units (property field)
+ GetUnits() *BACnetEngineeringUnitsTagged
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_CONTROLLED_VARIABLE_UNITS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataControlledVariableUnits) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetUnits() *BACnetEngineeringUnitsTagged {
+ return m.Units
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConstructedDataControlledVariableUnits factory function for BACnetConstructedDataControlledVariableUnits
+func NewBACnetConstructedDataControlledVariableUnits(units *BACnetEngineeringUnitsTagged, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataControlledVariableUnits {
+ _result := &BACnetConstructedDataControlledVariableUnits{
+ Units: units,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataControlledVariableUnits(structType interface{}) *BACnetConstructedDataControlledVariableUnits {
+ if casted, ok := structType.(BACnetConstructedDataControlledVariableUnits); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataControlledVariableUnits); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataControlledVariableUnits(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataControlledVariableUnits(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetTypeName() string {
+ return "BACnetConstructedDataControlledVariableUnits"
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (units)
+ lengthInBits += m.Units.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataControlledVariableUnitsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataControlledVariableUnits, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataControlledVariableUnits"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (units)
+ if pullErr := readBuffer.PullContext("units"); pullErr != nil {
+ return nil, pullErr
+ }
+ _units, _unitsErr := BACnetEngineeringUnitsTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+ if _unitsErr != nil {
+ return nil, errors.Wrap(_unitsErr, "Error parsing 'units' field")
+ }
+ units := CastBACnetEngineeringUnitsTagged(_units)
+ if closeErr := readBuffer.CloseContext("units"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataControlledVariableUnits"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataControlledVariableUnits{
+ Units: CastBACnetEngineeringUnitsTagged(units),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataControlledVariableUnits"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (units)
+ if pushErr := writeBuffer.PushContext("units"); pushErr != nil {
+ return pushErr
+ }
+ _unitsErr := m.Units.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("units"); popErr != nil {
+ return popErr
+ }
+ if _unitsErr != nil {
+ return errors.Wrap(_unitsErr, "Error serializing 'units' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataControlledVariableUnits"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataControlledVariableUnits) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go
new file mode 100644
index 0000000000..81859fff7b
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataControlledVariableValue.go
@@ -0,0 +1,168 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataControlledVariableValue is the data-structure of this message
+type BACnetConstructedDataControlledVariableValue struct {
+ *BACnetConstructedData
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataControlledVariableValue is the corresponding interface of BACnetConstructedDataControlledVariableValue
+type IBACnetConstructedDataControlledVariableValue interface {
+ IBACnetConstructedData
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataControlledVariableValue) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_CONTROLLED_VARIABLE_VALUE
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataControlledVariableValue) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+// NewBACnetConstructedDataControlledVariableValue factory function for BACnetConstructedDataControlledVariableValue
+func NewBACnetConstructedDataControlledVariableValue(openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataControlledVariableValue {
+ _result := &BACnetConstructedDataControlledVariableValue{
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataControlledVariableValue(structType interface{}) *BACnetConstructedDataControlledVariableValue {
+ if casted, ok := structType.(BACnetConstructedDataControlledVariableValue); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataControlledVariableValue); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataControlledVariableValue(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataControlledVariableValue(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) GetTypeName() string {
+ return "BACnetConstructedDataControlledVariableValue"
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataControlledVariableValueParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataControlledVariableValue, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataControlledVariableValue"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Validation
+ if !(bool((1) == (2))) {
+ return nil, utils.ParseValidationError{"TODO: implement me CONTROLLED_VARIABLE_VALUE BACnetConstructedDataControlledVariableValue"}
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataControlledVariableValue"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataControlledVariableValue{
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataControlledVariableValue"); pushErr != nil {
+ return pushErr
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataControlledVariableValue"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataControlledVariableValue) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDerivativeConstantUnits.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDerivativeConstantUnits.go
new file mode 100644
index 0000000000..01c20cceb3
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataDerivativeConstantUnits.go
@@ -0,0 +1,211 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataDerivativeConstantUnits is the data-structure of this message
+type BACnetConstructedDataDerivativeConstantUnits struct {
+ *BACnetConstructedData
+ Units *BACnetEngineeringUnitsTagged
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataDerivativeConstantUnits is the corresponding interface of BACnetConstructedDataDerivativeConstantUnits
+type IBACnetConstructedDataDerivativeConstantUnits interface {
+ IBACnetConstructedData
+ // GetUnits returns Units (property field)
+ GetUnits() *BACnetEngineeringUnitsTagged
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_DERIVATIVE_CONSTANT_UNITS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetUnits() *BACnetEngineeringUnitsTagged {
+ return m.Units
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConstructedDataDerivativeConstantUnits factory function for BACnetConstructedDataDerivativeConstantUnits
+func NewBACnetConstructedDataDerivativeConstantUnits(units *BACnetEngineeringUnitsTagged, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataDerivativeConstantUnits {
+ _result := &BACnetConstructedDataDerivativeConstantUnits{
+ Units: units,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataDerivativeConstantUnits(structType interface{}) *BACnetConstructedDataDerivativeConstantUnits {
+ if casted, ok := structType.(BACnetConstructedDataDerivativeConstantUnits); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataDerivativeConstantUnits); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataDerivativeConstantUnits(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataDerivativeConstantUnits(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetTypeName() string {
+ return "BACnetConstructedDataDerivativeConstantUnits"
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (units)
+ lengthInBits += m.Units.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataDerivativeConstantUnitsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataDerivativeConstantUnits, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataDerivativeConstantUnits"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (units)
+ if pullErr := readBuffer.PullContext("units"); pullErr != nil {
+ return nil, pullErr
+ }
+ _units, _unitsErr := BACnetEngineeringUnitsTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+ if _unitsErr != nil {
+ return nil, errors.Wrap(_unitsErr, "Error parsing 'units' field")
+ }
+ units := CastBACnetEngineeringUnitsTagged(_units)
+ if closeErr := readBuffer.CloseContext("units"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataDerivativeConstantUnits"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataDerivativeConstantUnits{
+ Units: CastBACnetEngineeringUnitsTagged(units),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataDerivativeConstantUnits"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (units)
+ if pushErr := writeBuffer.PushContext("units"); pushErr != nil {
+ return pushErr
+ }
+ _unitsErr := m.Units.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("units"); popErr != nil {
+ return popErr
+ }
+ if _unitsErr != nil {
+ return errors.Wrap(_unitsErr, "Error serializing 'units' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataDerivativeConstantUnits"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataDerivativeConstantUnits) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIntegralConstantUnits.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIntegralConstantUnits.go
new file mode 100644
index 0000000000..908c470472
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataIntegralConstantUnits.go
@@ -0,0 +1,211 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataIntegralConstantUnits is the data-structure of this message
+type BACnetConstructedDataIntegralConstantUnits struct {
+ *BACnetConstructedData
+ Units *BACnetEngineeringUnitsTagged
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataIntegralConstantUnits is the corresponding interface of BACnetConstructedDataIntegralConstantUnits
+type IBACnetConstructedDataIntegralConstantUnits interface {
+ IBACnetConstructedData
+ // GetUnits returns Units (property field)
+ GetUnits() *BACnetEngineeringUnitsTagged
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_INTEGRAL_CONSTANT_UNITS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataIntegralConstantUnits) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetUnits() *BACnetEngineeringUnitsTagged {
+ return m.Units
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConstructedDataIntegralConstantUnits factory function for BACnetConstructedDataIntegralConstantUnits
+func NewBACnetConstructedDataIntegralConstantUnits(units *BACnetEngineeringUnitsTagged, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataIntegralConstantUnits {
+ _result := &BACnetConstructedDataIntegralConstantUnits{
+ Units: units,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataIntegralConstantUnits(structType interface{}) *BACnetConstructedDataIntegralConstantUnits {
+ if casted, ok := structType.(BACnetConstructedDataIntegralConstantUnits); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataIntegralConstantUnits); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataIntegralConstantUnits(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataIntegralConstantUnits(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetTypeName() string {
+ return "BACnetConstructedDataIntegralConstantUnits"
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (units)
+ lengthInBits += m.Units.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataIntegralConstantUnitsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataIntegralConstantUnits, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataIntegralConstantUnits"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (units)
+ if pullErr := readBuffer.PullContext("units"); pullErr != nil {
+ return nil, pullErr
+ }
+ _units, _unitsErr := BACnetEngineeringUnitsTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+ if _unitsErr != nil {
+ return nil, errors.Wrap(_unitsErr, "Error parsing 'units' field")
+ }
+ units := CastBACnetEngineeringUnitsTagged(_units)
+ if closeErr := readBuffer.CloseContext("units"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataIntegralConstantUnits"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataIntegralConstantUnits{
+ Units: CastBACnetEngineeringUnitsTagged(units),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataIntegralConstantUnits"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (units)
+ if pushErr := writeBuffer.PushContext("units"); pushErr != nil {
+ return pushErr
+ }
+ _unitsErr := m.Units.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("units"); popErr != nil {
+ return popErr
+ }
+ if _unitsErr != nil {
+ return errors.Wrap(_unitsErr, "Error serializing 'units' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataIntegralConstantUnits"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataIntegralConstantUnits) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataOutputUnits.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataOutputUnits.go
new file mode 100644
index 0000000000..527b07a89b
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataOutputUnits.go
@@ -0,0 +1,211 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataOutputUnits is the data-structure of this message
+type BACnetConstructedDataOutputUnits struct {
+ *BACnetConstructedData
+ Units *BACnetEngineeringUnitsTagged
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataOutputUnits is the corresponding interface of BACnetConstructedDataOutputUnits
+type IBACnetConstructedDataOutputUnits interface {
+ IBACnetConstructedData
+ // GetUnits returns Units (property field)
+ GetUnits() *BACnetEngineeringUnitsTagged
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataOutputUnits) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataOutputUnits) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_OUTPUT_UNITS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataOutputUnits) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataOutputUnits) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataOutputUnits) GetUnits() *BACnetEngineeringUnitsTagged {
+ return m.Units
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConstructedDataOutputUnits factory function for BACnetConstructedDataOutputUnits
+func NewBACnetConstructedDataOutputUnits(units *BACnetEngineeringUnitsTagged, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataOutputUnits {
+ _result := &BACnetConstructedDataOutputUnits{
+ Units: units,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataOutputUnits(structType interface{}) *BACnetConstructedDataOutputUnits {
+ if casted, ok := structType.(BACnetConstructedDataOutputUnits); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataOutputUnits); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataOutputUnits(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataOutputUnits(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataOutputUnits) GetTypeName() string {
+ return "BACnetConstructedDataOutputUnits"
+}
+
+func (m *BACnetConstructedDataOutputUnits) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataOutputUnits) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (units)
+ lengthInBits += m.Units.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataOutputUnits) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataOutputUnitsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataOutputUnits, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataOutputUnits"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (units)
+ if pullErr := readBuffer.PullContext("units"); pullErr != nil {
+ return nil, pullErr
+ }
+ _units, _unitsErr := BACnetEngineeringUnitsTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+ if _unitsErr != nil {
+ return nil, errors.Wrap(_unitsErr, "Error parsing 'units' field")
+ }
+ units := CastBACnetEngineeringUnitsTagged(_units)
+ if closeErr := readBuffer.CloseContext("units"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataOutputUnits"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataOutputUnits{
+ Units: CastBACnetEngineeringUnitsTagged(units),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataOutputUnits) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataOutputUnits"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (units)
+ if pushErr := writeBuffer.PushContext("units"); pushErr != nil {
+ return pushErr
+ }
+ _unitsErr := m.Units.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("units"); popErr != nil {
+ return popErr
+ }
+ if _unitsErr != nil {
+ return errors.Wrap(_unitsErr, "Error serializing 'units' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataOutputUnits"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataOutputUnits) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataProportionalConstantUnits.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataProportionalConstantUnits.go
new file mode 100644
index 0000000000..318b3c01f0
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataProportionalConstantUnits.go
@@ -0,0 +1,211 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataProportionalConstantUnits is the data-structure of this message
+type BACnetConstructedDataProportionalConstantUnits struct {
+ *BACnetConstructedData
+ Units *BACnetEngineeringUnitsTagged
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataProportionalConstantUnits is the corresponding interface of BACnetConstructedDataProportionalConstantUnits
+type IBACnetConstructedDataProportionalConstantUnits interface {
+ IBACnetConstructedData
+ // GetUnits returns Units (property field)
+ GetUnits() *BACnetEngineeringUnitsTagged
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_PROPORTIONAL_CONSTANT_UNITS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataProportionalConstantUnits) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetUnits() *BACnetEngineeringUnitsTagged {
+ return m.Units
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConstructedDataProportionalConstantUnits factory function for BACnetConstructedDataProportionalConstantUnits
+func NewBACnetConstructedDataProportionalConstantUnits(units *BACnetEngineeringUnitsTagged, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataProportionalConstantUnits {
+ _result := &BACnetConstructedDataProportionalConstantUnits{
+ Units: units,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataProportionalConstantUnits(structType interface{}) *BACnetConstructedDataProportionalConstantUnits {
+ if casted, ok := structType.(BACnetConstructedDataProportionalConstantUnits); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataProportionalConstantUnits); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataProportionalConstantUnits(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataProportionalConstantUnits(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetTypeName() string {
+ return "BACnetConstructedDataProportionalConstantUnits"
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (units)
+ lengthInBits += m.Units.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataProportionalConstantUnitsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataProportionalConstantUnits, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataProportionalConstantUnits"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (units)
+ if pullErr := readBuffer.PullContext("units"); pullErr != nil {
+ return nil, pullErr
+ }
+ _units, _unitsErr := BACnetEngineeringUnitsTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+ if _unitsErr != nil {
+ return nil, errors.Wrap(_unitsErr, "Error parsing 'units' field")
+ }
+ units := CastBACnetEngineeringUnitsTagged(_units)
+ if closeErr := readBuffer.CloseContext("units"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataProportionalConstantUnits"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataProportionalConstantUnits{
+ Units: CastBACnetEngineeringUnitsTagged(units),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataProportionalConstantUnits"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (units)
+ if pushErr := writeBuffer.PushContext("units"); pushErr != nil {
+ return pushErr
+ }
+ _unitsErr := m.Units.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("units"); popErr != nil {
+ return popErr
+ }
+ if _unitsErr != nil {
+ return errors.Wrap(_unitsErr, "Error serializing 'units' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataProportionalConstantUnits"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataProportionalConstantUnits) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUnits.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUnits.go
new file mode 100644
index 0000000000..f2f8b47ea7
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedDataUnits.go
@@ -0,0 +1,211 @@
+/*
+ * 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 model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetConstructedDataUnits is the data-structure of this message
+type BACnetConstructedDataUnits struct {
+ *BACnetConstructedData
+ Units *BACnetEngineeringUnitsTagged
+
+ // Arguments.
+ TagNumber uint8
+}
+
+// IBACnetConstructedDataUnits is the corresponding interface of BACnetConstructedDataUnits
+type IBACnetConstructedDataUnits interface {
+ IBACnetConstructedData
+ // GetUnits returns Units (property field)
+ GetUnits() *BACnetEngineeringUnitsTagged
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *BACnetConstructedDataUnits) GetObjectType() BACnetObjectType {
+ return 0
+}
+
+func (m *BACnetConstructedDataUnits) GetPropertyIdentifierArgument() BACnetPropertyIdentifier {
+ return BACnetPropertyIdentifier_UNITS
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetConstructedDataUnits) InitializeParent(parent *BACnetConstructedData, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag) {
+ m.BACnetConstructedData.OpeningTag = openingTag
+ m.BACnetConstructedData.ClosingTag = closingTag
+}
+
+func (m *BACnetConstructedDataUnits) GetParent() *BACnetConstructedData {
+ return m.BACnetConstructedData
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConstructedDataUnits) GetUnits() *BACnetEngineeringUnitsTagged {
+ return m.Units
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConstructedDataUnits factory function for BACnetConstructedDataUnits
+func NewBACnetConstructedDataUnits(units *BACnetEngineeringUnitsTagged, openingTag *BACnetOpeningTag, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConstructedDataUnits {
+ _result := &BACnetConstructedDataUnits{
+ Units: units,
+ BACnetConstructedData: NewBACnetConstructedData(openingTag, closingTag, tagNumber),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetConstructedDataUnits(structType interface{}) *BACnetConstructedDataUnits {
+ if casted, ok := structType.(BACnetConstructedDataUnits); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetConstructedDataUnits); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetConstructedData); ok {
+ return CastBACnetConstructedDataUnits(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetConstructedData); ok {
+ return CastBACnetConstructedDataUnits(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetConstructedDataUnits) GetTypeName() string {
+ return "BACnetConstructedDataUnits"
+}
+
+func (m *BACnetConstructedDataUnits) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedDataUnits) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (units)
+ lengthInBits += m.Units.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedDataUnits) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetConstructedDataUnitsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, propertyIdentifierArgument BACnetPropertyIdentifier) (*BACnetConstructedDataUnits, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetConstructedDataUnits"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (units)
+ if pullErr := readBuffer.PullContext("units"); pullErr != nil {
+ return nil, pullErr
+ }
+ _units, _unitsErr := BACnetEngineeringUnitsTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_APPLICATION_TAGS))
+ if _unitsErr != nil {
+ return nil, errors.Wrap(_unitsErr, "Error parsing 'units' field")
+ }
+ units := CastBACnetEngineeringUnitsTagged(_units)
+ if closeErr := readBuffer.CloseContext("units"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedDataUnits"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetConstructedDataUnits{
+ Units: CastBACnetEngineeringUnitsTagged(units),
+ BACnetConstructedData: &BACnetConstructedData{},
+ }
+ _child.BACnetConstructedData.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetConstructedDataUnits) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedDataUnits"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (units)
+ if pushErr := writeBuffer.PushContext("units"); pushErr != nil {
+ return pushErr
+ }
+ _unitsErr := m.Units.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("units"); popErr != nil {
+ return popErr
+ }
+ if _unitsErr != nil {
+ return errors.Wrap(_unitsErr, "Error serializing 'units' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedDataUnits"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConstructedDataUnits) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
index 640e2bd0df..26c8f827f1 100644
--- a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
@@ -137,6 +137,8 @@ public class StaticHelper {
paramValue = (short) rawValue;
} else if (parameterType == int.class || parameterType == Integer.class) {
paramValue = (int) rawValue;
+ }else if (parameterType == long.class || parameterType == Long.class) {
+ paramValue = (int) rawValue;
}
Object result = method.invoke(null, paramValue);
if (result == null) {
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 690b2b8129..273f3fe965 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -2504,7 +2504,9 @@
//[*, 'CAR_DOOR_ZONE' BACnetConstructedDataCarDoorZone [validation '1 == 2' "TODO: implement me CAR_DOOR_ZONE BACnetConstructedDataCarDoorZone"]]
//[*, 'CAR_DRIVE_STATUS' BACnetConstructedDataCarDriveStatus [validation '1 == 2' "TODO: implement me CAR_DRIVE_STATUS BACnetConstructedDataCarDriveStatus"]]
//[*, 'CAR_LOAD' BACnetConstructedDataCarLoad [validation '1 == 2' "TODO: implement me CAR_LOAD BACnetConstructedDataCarLoad"]]
- //[*, 'CAR_LOAD_UNITS' BACnetConstructedDataCarLoadUnits [validation '1 == 2' "TODO: implement me CAR_LOAD_UNITS BACnetConstructedDataCarLoadUnits"]]
+ [*, 'CAR_LOAD_UNITS' BACnetConstructedDataCarLoadUnits
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+ ]
//[*, 'CAR_MODE' BACnetConstructedDataCarMode [validation '1 == 2' "TODO: implement me CAR_MODE BACnetConstructedDataCarMode"]]
//[*, 'CAR_MOVING_DIRECTION' BACnetConstructedDataCarMovingDirection [validation '1 == 2' "TODO: implement me CAR_MOVING_DIRECTION BACnetConstructedDataCarMovingDirection"]]
//[*, 'CAR_POSITION' BACnetConstructedDataCarPosition [validation '1 == 2' "TODO: implement me CAR_POSITION BACnetConstructedDataCarPosition"]]
@@ -2518,7 +2520,9 @@
//[*, 'CONFIGURATION_FILES' BACnetConstructedDataConfigurationFiles [validation '1 == 2' "TODO: implement me CONFIGURATION_FILES BACnetConstructedDataConfigurationFiles"]]
//[*, 'CONTROL_GROUPS' BACnetConstructedDataControlGroups [validation '1 == 2' "TODO: implement me CONTROL_GROUPS BACnetConstructedDataControlGroups"]]
//[*, 'CONTROLLED_VARIABLE_REFERENCE' BACnetConstructedDataControlledVariableReference [validation '1 == 2' "TODO: implement me CONTROLLED_VARIABLE_REFERENCE BACnetConstructedDataControlledVariableReference"]]
- //[*, 'CONTROLLED_VARIABLE_UNITS' BACnetConstructedDataControlledVariableUnits [validation '1 == 2' "TODO: implement me CONTROLLED_VARIABLE_UNITS BACnetConstructedDataControlledVariableUnits"]]
+ [*, 'CONTROLLED_VARIABLE_UNITS' BACnetConstructedDataControlledVariableUnits
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+ ]
//[*, 'CONTROLLED_VARIABLE_VALUE' BACnetConstructedDataControlledVariableValue [validation '1 == 2' "TODO: implement me CONTROLLED_VARIABLE_VALUE BACnetConstructedDataControlledVariableValue"]]
//[*, 'COUNT' BACnetConstructedDataCount [validation '1 == 2' "TODO: implement me COUNT BACnetConstructedDataCount"]]
//[*, 'COUNT_BEFORE_CHANGE' BACnetConstructedDataCountBeforeChange [validation '1 == 2' "TODO: implement me COUNT_BEFORE_CHANGE BACnetConstructedDataCountBeforeChange"]]
@@ -2545,7 +2549,9 @@
//[*, 'DEFAULT_TIMEOUT' BACnetConstructedDataDefaultTimeout [validation '1 == 2' "TODO: implement me DEFAULT_TIMEOUT BACnetConstructedDataDefaultTimeout"]]
//[*, 'DEPLOYED_PROFILE_LOCATION' BACnetConstructedDataDeployedProfileLocation [validation '1 == 2' "TODO: implement me DEPLOYED_PROFILE_LOCATION BACnetConstructedDataDeployedProfileLocation"]]
//[*, 'DERIVATIVE_CONSTANT' BACnetConstructedDataDerivativeConstant [validation '1 == 2' "TODO: implement me DERIVATIVE_CONSTANT BACnetConstructedDataDerivativeConstant"]]
- //[*, 'DERIVATIVE_CONSTANT_UNITS' BACnetConstructedDataDerivativeConstantUnits [validation '1 == 2' "TODO: implement me DERIVATIVE_CONSTANT_UNITS BACnetConstructedDataDerivativeConstantUnits"]]
+ [*, 'DERIVATIVE_CONSTANT_UNITS' BACnetConstructedDataDerivativeConstantUnits
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+
//[*, 'DESCRIPTION' BACnetConstructedDataDescription [validation '1 == 2' "TODO: implement me DESCRIPTION BACnetConstructedDataDescription"]]
//[*, 'DESCRIPTION_OF_HALT' BACnetConstructedDataDescriptionOfHalt [validation '1 == 2' "TODO: implement me DESCRIPTION_OF_HALT BACnetConstructedDataDescriptionOfHalt"]]
//[*, 'DEVICE_ADDRESS_BINDING' BACnetConstructedDataDeviceAddressBinding [validation '1 == 2' "TODO: implement me DEVICE_ADDRESS_BINDING BACnetConstructedDataDeviceAddressBinding"]]
@@ -2633,7 +2639,9 @@
//[*, 'INSTANCE_OF' BACnetConstructedDataInstanceOf [validation '1 == 2' "TODO: implement me INSTANCE_OF BACnetConstructedDataInstanceOf"]]
//[*, 'INSTANTANEOUS_POWER' BACnetConstructedDataInstantaneousPower [validation '1 == 2' "TODO: implement me INSTANTANEOUS_POWER BACnetConstructedDataInstantaneousPower"]]
//[*, 'INTEGRAL_CONSTANT' BACnetConstructedDataIntegralConstant [validation '1 == 2' "TODO: implement me INTEGRAL_CONSTANT BACnetConstructedDataIntegralConstant"]]
- //[*, 'INTEGRAL_CONSTANT_UNITS' BACnetConstructedDataIntegralConstantUnits [validation '1 == 2' "TODO: implement me INTEGRAL_CONSTANT_UNITS BACnetConstructedDataIntegralConstantUnits"]]
+ [*, 'INTEGRAL_CONSTANT_UNITS' BACnetConstructedDataIntegralConstantUnits
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+
//[*, 'INTERFACE_VALUE' BACnetConstructedDataInterfaceValue [validation '1 == 2' "TODO: implement me INTERFACE_VALUE BACnetConstructedDataInterfaceValue"]]
//[*, 'INTERVAL_OFFSET' BACnetConstructedDataIntervalOffset [validation '1 == 2' "TODO: implement me INTERVAL_OFFSET BACnetConstructedDataIntervalOffset"]]
//[*, 'IP_ADDRESS' BACnetConstructedDataIpAddress [validation '1 == 2' "TODO: implement me IP_ADDRESS BACnetConstructedDataIpAddress"]]
@@ -2774,7 +2782,9 @@
//[*, 'OPERATION_EXPECTED' BACnetConstructedDataOperationExpected [validation '1 == 2' "TODO: implement me OPERATION_EXPECTED BACnetConstructedDataOperationExpected"]]
//[*, 'OPTIONAL' BACnetConstructedDataOptional [validation '1 == 2' "TODO: implement me OPTIONAL BACnetConstructedDataOptional"]]
//[*, 'OUT_OF_SERVICE' BACnetConstructedDataOutOfService [validation '1 == 2' "TODO: implement me OUT_OF_SERVICE BACnetConstructedDataOutOfService"]]
- //[*, 'OUTPUT_UNITS' BACnetConstructedDataOutputUnits [validation '1 == 2' "TODO: implement me OUTPUT_UNITS BACnetConstructedDataOutputUnits"]]
+ [*, 'OUTPUT_UNITS' BACnetConstructedDataOutputUnits
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+
//[*, 'PACKET_REORDER_TIME' BACnetConstructedDataPacketReorderTime [validation '1 == 2' "TODO: implement me PACKET_REORDER_TIME BACnetConstructedDataPacketReorderTime"]]
//[*, 'PASSBACK_MODE' BACnetConstructedDataPassbackMode [validation '1 == 2' "TODO: implement me PASSBACK_MODE BACnetConstructedDataPassbackMode"]]
//[*, 'PASSBACK_TIMEOUT' BACnetConstructedDataPassbackTimeout [validation '1 == 2' "TODO: implement me PASSBACK_TIMEOUT BACnetConstructedDataPassbackTimeout"]]
@@ -2798,7 +2808,9 @@
//[*, 'PROGRAM_STATE' BACnetConstructedDataProgramState [validation '1 == 2' "TODO: implement me PROGRAM_STATE BACnetConstructedDataProgramState"]]
//[*, 'PROPERTY_LIST' BACnetConstructedDataPropertyList [validation '1 == 2' "TODO: implement me PROPERTY_LIST BACnetConstructedDataPropertyList"]]
//[*, 'PROPORTIONAL_CONSTANT' BACnetConstructedDataProportionalConstant [validation '1 == 2' "TODO: implement me PROPORTIONAL_CONSTANT BACnetConstructedDataProportionalConstant"]]
- //[*, 'PROPORTIONAL_CONSTANT_UNITS' BACnetConstructedDataProportionalConstantUnits [validation '1 == 2' "TODO: implement me PROPORTIONAL_CONSTANT_UNITS BACnetConstructedDataProportionalConstantUnits"]]
+ [*, 'PROPORTIONAL_CONSTANT_UNITS' BACnetConstructedDataProportionalConstantUnits
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+
//[*, 'PROTOCOL_LEVEL' BACnetConstructedDataProtocolLevel [validation '1 == 2' "TODO: implement me PROTOCOL_LEVEL BACnetConstructedDataProtocolLevel"]]
//[*, 'PROTOCOL_CONFORMANCE_CLASS' BACnetConstructedDataProtocolConformanceClass [validation '1 == 2' "TODO: implement me PROTOCOL_CONFORMANCE_CLASS BACnetConstructedDataProtocolConformanceClass"]]
//[*, 'PROTOCOL_OBJECT_TYPES_SUPPORTED' BACnetConstructedDataProtocolObjectTypesSupported [validation '1 == 2' "TODO: implement me PROTOCOL_OBJECT_TYPES_SUPPORTED BACnetConstructedDataProtocolObjectTypesSupported"]]
@@ -2888,7 +2900,9 @@
//[*, 'TRANSACTION_NOTIFICATION_CLASS' BACnetConstructedDataTransactionNotificationClass [validation '1 == 2' "TODO: implement me TRANSACTION_NOTIFICATION_CLASS BACnetConstructedDataTransactionNotificationClass"]]
//[*, 'TRANSITION' BACnetConstructedDataTransition [validation '1 == 2' "TODO: implement me TRANSITION BACnetConstructedDataTransition"]]
//[*, 'TRIGGER' BACnetConstructedDataTrigger [validation '1 == 2' "TODO: implement me TRIGGER BACnetConstructedDataTrigger"]]
- //[*, 'UNITS' BACnetConstructedDataUnits [validation '1 == 2' "TODO: implement me UNITS BACnetConstructedDataUnits"]]
+ [*, 'UNITS' BACnetConstructedDataUnits
+ [simple BACnetEngineeringUnitsTagged('0', 'TagClass.APPLICATION_TAGS') units ]
+
//[*, 'UPDATE_INTERVAL' BACnetConstructedDataUpdateInterval [validation '1 == 2' "TODO: implement me UPDATE_INTERVAL BACnetConstructedDataUpdateInterval"]]
//[*, 'UPDATE_KEY_SET_TIMEOUT' BACnetConstructedDataUpdateKeySetTimeout [validation '1 == 2' "TODO: implement me UPDATE_KEY_SET_TIMEOUT BACnetConstructedDataUpdateKeySetTimeout"]]
//[*, 'UPDATE_TIME' BACnetConstructedDataUpdateTime [validation '1 == 2' "TODO: implement me UPDATE_TIME BACnetConstructedDataUpdateTime"]]