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/01/05 17:37:37 UTC
[plc4x] branch develop updated: fix(bacnet): cleaned up and worked on COV
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 4d24d1c fix(bacnet): cleaned up and worked on COV
4d24d1c is described below
commit 4d24d1c551c5c0cd8aef384dd08d6a7f06cc54d4
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Jan 5 18:36:44 2022 +0100
fix(bacnet): cleaned up and worked on COV
---
.../plc4go/bacnetip/readwrite/ParserHelper.go | 23 +-
.../plc4go/bacnetip/readwrite/XmlParserHelper.go | 27 +-
.../model/BACnetApplicationTagBitString.go | 2 +-
.../readwrite/model/BACnetApplicationTagBoolean.go | 2 +-
.../model/BACnetApplicationTagCharacterString.go | 2 +-
.../readwrite/model/BACnetApplicationTagDate.go | 2 +-
.../readwrite/model/BACnetApplicationTagDouble.go | 2 +-
.../model/BACnetApplicationTagEnumerated.go | 2 +-
.../readwrite/model/BACnetApplicationTagNull.go | 2 +-
.../model/BACnetApplicationTagObjectIdentifier.go | 2 +-
.../model/BACnetApplicationTagOctetString.go | 2 +-
.../readwrite/model/BACnetApplicationTagReal.go | 2 +-
.../model/BACnetApplicationTagSignedInteger.go | 2 +-
.../readwrite/model/BACnetApplicationTagTime.go | 2 +-
.../model/BACnetApplicationTagUnsignedInteger.go | 2 +-
...firmedServiceRequestConfirmedCOVNotification.go | 392 ++++++---------------
.../BACnetConfirmedServiceRequestSubscribeCOV.go | 281 +++++----------
.../BACnetConfirmedServiceRequestWriteProperty.go | 10 +-
.../readwrite/model/BACnetConstructedData.go | 224 ++++++++++++
.../bacnetip/readwrite/model/BACnetContextTag.go | 2 +-
.../readwrite/model/BACnetContextTagBoolean.go | 30 +-
.../model/BACnetContextTagWithoutContext.go | 52 ++-
.../readwrite/model/BACnetPropertyValue.go | 51 +--
...Enumerated.go => BACnetPropertyValueDefault.go} | 78 ++--
.../model/BACnetPropertyValueObjectType.go | 2 +-
.../model/BACnetPropertyValuePresentValue.go | 2 +-
.../model/BACnetPropertyValuePriorityValue.go | 2 +-
.../model/BACnetPropertyValueRelinquishDefault.go | 2 +-
.../model/BACnetServiceAckReadProperty.go | 46 +--
.../plc4go/bacnetip/readwrite/model/BACnetTag.go | 30 +-
...rmedServiceRequestUnconfirmedCOVNotification.go | 172 ++++++++-
.../resources/protocols/bacnetip/bacnetip.mspec | 64 ++--
.../bacnetip/protocol/BacNetIpProtocolLogic.java | 10 +-
.../plc4x/java/bacnetip/RandomPackagesTest.java | 41 ++-
34 files changed, 868 insertions(+), 699 deletions(-)
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go b/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
index e4c1114..a4b8ca9 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/ParserHelper.go
@@ -57,16 +57,6 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
return nil, errors.Wrap(err, "Error parsing")
}
return model.NLMParse(io, apduLength)
- case "EnclosedTags":
- openingTagNumber, err := utils.StrToUint8(arguments[0])
- if err != nil {
- return nil, errors.Wrap(err, "Error parsing")
- }
- closingTagNumber, err := utils.StrToUint8(arguments[1])
- if err != nil {
- return nil, errors.Wrap(err, "Error parsing")
- }
- return model.EnclosedTagsParse(io, openingTagNumber, closingTagNumber)
case "BACnetConfirmedServiceRequest":
len, err := utils.StrToUint16(arguments[0])
if err != nil {
@@ -77,7 +67,18 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
return model.BACnetAddressParse(io)
case "BACnetPropertyValue":
var identifier model.BACnetPropertyIdentifier
- return model.BACnetPropertyValueParse(io, identifier)
+ actualLength, err := utils.StrToUint32(arguments[1])
+ if err != nil {
+ return nil, errors.Wrap(err, "Error parsing")
+ }
+ return model.BACnetPropertyValueParse(io, identifier, actualLength)
+ case "BACnetConstructedData":
+ tagNumberArgument, err := utils.StrToUint8(arguments[0])
+ if err != nil {
+ return nil, errors.Wrap(err, "Error parsing")
+ }
+ var identifier model.BACnetPropertyIdentifier
+ return model.BACnetConstructedDataParse(io, tagNumberArgument, identifier)
case "BACnetConfirmedServiceACK":
return model.BACnetConfirmedServiceACKParse(io)
case "BACnetUnconfirmedServiceRequest":
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go b/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
index 0a8b032..469d11b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/XmlParserHelper.go
@@ -70,18 +70,6 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
}
apduLength := uint16(parsedUint0)
return model.NLMParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), apduLength)
- case "EnclosedTags":
- parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 4)
- if err != nil {
- return nil, err
- }
- openingTagNumber := uint8(parsedUint0)
- parsedUint1, err := strconv.ParseUint(parserArguments[1], 10, 4)
- if err != nil {
- return nil, err
- }
- closingTagNumber := uint8(parsedUint1)
- return model.EnclosedTagsParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), openingTagNumber, closingTagNumber)
case "BACnetConfirmedServiceRequest":
parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 16)
if err != nil {
@@ -93,7 +81,20 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
return model.BACnetAddressParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
case "BACnetPropertyValue":
identifier := model.BACnetPropertyIdentifierByName(parserArguments[0])
- return model.BACnetPropertyValueParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), identifier)
+ parsedUint1, err := strconv.ParseUint(parserArguments[1], 10, 32)
+ if err != nil {
+ return nil, err
+ }
+ actualLength := uint32(parsedUint1)
+ return model.BACnetPropertyValueParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), identifier, actualLength)
+ case "BACnetConstructedData":
+ parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 4)
+ if err != nil {
+ return nil, err
+ }
+ tagNumberArgument := uint8(parsedUint0)
+ identifier := model.BACnetPropertyIdentifierByName(parserArguments[1])
+ return model.BACnetConstructedDataParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumberArgument, identifier)
case "BACnetConfirmedServiceACK":
return model.BACnetConfirmedServiceACKParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
case "BACnetUnconfirmedServiceRequest":
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go
index 105d965..cc5888b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBitString.go
@@ -47,7 +47,7 @@ func (m *BACnetApplicationTagBitString) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagBitString) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagBitString) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go
index c516728..1564e72 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagBoolean.go
@@ -48,7 +48,7 @@ func (m *BACnetApplicationTagBoolean) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagBoolean) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagBoolean) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go
index 1be6138..c6cbf3e 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagCharacterString.go
@@ -48,7 +48,7 @@ func (m *BACnetApplicationTagCharacterString) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagCharacterString) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagCharacterString) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go
index eb8512c..4e61a47 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDate.go
@@ -60,7 +60,7 @@ func (m *BACnetApplicationTagDate) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagDate) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagDate) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go
index 6f83a10..0bb17a5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagDouble.go
@@ -46,7 +46,7 @@ func (m *BACnetApplicationTagDouble) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagDouble) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagDouble) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
index 4ca12fe..b866f21 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
@@ -46,7 +46,7 @@ func (m *BACnetApplicationTagEnumerated) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagEnumerated) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagEnumerated) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go
index 1bc2084..57ac83b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagNull.go
@@ -44,7 +44,7 @@ func (m *BACnetApplicationTagNull) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagNull) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagNull) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go
index ec8bdc3..11c4924 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagObjectIdentifier.go
@@ -47,7 +47,7 @@ func (m *BACnetApplicationTagObjectIdentifier) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagObjectIdentifier) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagObjectIdentifier) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go
index 628dc1f..9634e12 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagOctetString.go
@@ -47,7 +47,7 @@ func (m *BACnetApplicationTagOctetString) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagOctetString) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagOctetString) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go
index d456d27..265ff2b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagReal.go
@@ -46,7 +46,7 @@ func (m *BACnetApplicationTagReal) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagReal) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagReal) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go
index 663ace4..7d4ea1d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagSignedInteger.go
@@ -54,7 +54,7 @@ func (m *BACnetApplicationTagSignedInteger) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagSignedInteger) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagSignedInteger) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go
index d20f1d1..c034cd8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagTime.go
@@ -54,7 +54,7 @@ func (m *BACnetApplicationTagTime) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagTime) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagTime) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go
index 51e8da8..8472f66 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagUnsignedInteger.go
@@ -52,7 +52,7 @@ func (m *BACnetApplicationTagUnsignedInteger) TagClass() TagClass {
return TagClass_APPLICATION_TAGS
}
-func (m *BACnetApplicationTagUnsignedInteger) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetApplicationTagUnsignedInteger) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
index 5098c29..1628756 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
@@ -20,32 +20,20 @@
package model
import (
- "fmt"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
"github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
-// Constant values.
-const BACnetConfirmedServiceRequestConfirmedCOVNotification_SUBSCRIBERPROCESSIDENTIFIERHEADER uint8 = 0x09
-const BACnetConfirmedServiceRequestConfirmedCOVNotification_MONITOREDOBJECTIDENTIFIERHEADER uint8 = 0x1C
-const BACnetConfirmedServiceRequestConfirmedCOVNotification_ISSUECONFIRMEDNOTIFICATIONSHEADER uint8 = 0x2C
-const BACnetConfirmedServiceRequestConfirmedCOVNotification_LIFETIMEHEADER uint8 = 0x07
-const BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESOPENINGTAG uint8 = 0x4E
-const BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGTAG uint8 = 0x4F
-
// The data-structure of this message
type BACnetConfirmedServiceRequestConfirmedCOVNotification struct {
*BACnetConfirmedServiceRequest
- SubscriberProcessIdentifier uint8
- MonitoredObjectType uint16
- MonitoredObjectInstanceNumber uint32
- IssueConfirmedNotificationsType uint16
- IssueConfirmedNotificationsInstanceNumber uint32
- LifetimeLength uint8
- LifetimeSeconds []int8
- Notifications []*BACnetTagWithContent
+ SubscriberProcessIdentifier *BACnetContextTagUnsignedInteger
+ MonitoredObjectIdentifier *BACnetContextTagObjectIdentifier
+ IssueConfirmed *BACnetContextTagBoolean
+ LifetimeInSeconds *BACnetContextTagUnsignedInteger
+ ListOfValues *BACnetConstructedData
}
// The corresponding interface
@@ -65,17 +53,14 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) ServiceChoice()
func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) InitializeParent(parent *BACnetConfirmedServiceRequest) {
}
-func NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier uint8, monitoredObjectType uint16, monitoredObjectInstanceNumber uint32, issueConfirmedNotificationsType uint16, issueConfirmedNotificationsInstanceNumber uint32, lifetimeLength uint8, lifetimeSeconds []int8, notifications []*BACnetTagWithContent) *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier *BACnetContextTagUnsignedInteger, monitoredObjectIdentifier *BACnetContextTagObjectIdentifier, issueConfirmed *BACnetContextTagBoolean, lifetimeInSeconds *BACnetContextTagUnsignedInteger, listOfValues *BACnetConstructedData) *BACnetConfirmedServiceRequest {
child := &BACnetConfirmedServiceRequestConfirmedCOVNotification{
- SubscriberProcessIdentifier: subscriberProcessIdentifier,
- MonitoredObjectType: monitoredObjectType,
- MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber,
- IssueConfirmedNotificationsType: issueConfirmedNotificationsType,
- IssueConfirmedNotificationsInstanceNumber: issueConfirmedNotificationsInstanceNumber,
- LifetimeLength: lifetimeLength,
- LifetimeSeconds: lifetimeSeconds,
- Notifications: notifications,
- BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
+ SubscriberProcessIdentifier: subscriberProcessIdentifier,
+ MonitoredObjectIdentifier: monitoredObjectIdentifier,
+ IssueConfirmed: issueConfirmed,
+ LifetimeInSeconds: lifetimeInSeconds,
+ ListOfValues: listOfValues,
+ BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
}
child.Child = child
return child.BACnetConfirmedServiceRequest
@@ -111,54 +96,23 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBits() u
func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
- // Const Field (subscriberProcessIdentifierHeader)
- lengthInBits += 8
-
// Simple field (subscriberProcessIdentifier)
- lengthInBits += 8
-
- // Const Field (monitoredObjectIdentifierHeader)
- lengthInBits += 8
-
- // Simple field (monitoredObjectType)
- lengthInBits += 10
-
- // Simple field (monitoredObjectInstanceNumber)
- lengthInBits += 22
+ lengthInBits += m.SubscriberProcessIdentifier.LengthInBits()
- // Const Field (issueConfirmedNotificationsHeader)
- lengthInBits += 8
+ // Simple field (monitoredObjectIdentifier)
+ lengthInBits += m.MonitoredObjectIdentifier.LengthInBits()
- // Simple field (issueConfirmedNotificationsType)
- lengthInBits += 10
+ // Simple field (issueConfirmed)
+ lengthInBits += m.IssueConfirmed.LengthInBits()
- // Simple field (issueConfirmedNotificationsInstanceNumber)
- lengthInBits += 22
+ // Simple field (lifetimeInSeconds)
+ lengthInBits += m.LifetimeInSeconds.LengthInBits()
- // Const Field (lifetimeHeader)
- lengthInBits += 5
-
- // Simple field (lifetimeLength)
- lengthInBits += 3
-
- // Array field
- if len(m.LifetimeSeconds) > 0 {
- lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
+ // Optional Field (listOfValues)
+ if m.ListOfValues != nil {
+ lengthInBits += (*m.ListOfValues).LengthInBits()
}
- // Const Field (listOfValuesOpeningTag)
- lengthInBits += 8
-
- // Array field
- if len(m.Notifications) > 0 {
- for _, element := range m.Notifications {
- lengthInBits += element.LengthInBits()
- }
- }
-
- // Const Field (listOfValuesClosingTag)
- lengthInBits += 8
-
return lengthInBits
}
@@ -171,141 +125,78 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(readBuffer utils
return nil, pullErr
}
- // Const Field (subscriberProcessIdentifierHeader)
- subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := readBuffer.ReadUint8("subscriberProcessIdentifierHeader", 8)
- if _subscriberProcessIdentifierHeaderErr != nil {
- return nil, errors.Wrap(_subscriberProcessIdentifierHeaderErr, "Error parsing 'subscriberProcessIdentifierHeader' field")
- }
- if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_SUBSCRIBERPROCESSIDENTIFIERHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestConfirmedCOVNotification_SUBSCRIBERPROCESSIDENTIFIERHEADER) + " but got " + fmt.Sprintf("%d", subscriberProcessIdentifierHeader))
- }
-
// Simple Field (subscriberProcessIdentifier)
- _subscriberProcessIdentifier, _subscriberProcessIdentifierErr := readBuffer.ReadUint8("subscriberProcessIdentifier", 8)
+ if pullErr := readBuffer.PullContext("subscriberProcessIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _subscriberProcessIdentifier, _subscriberProcessIdentifierErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_UNSIGNED_INTEGER)
if _subscriberProcessIdentifierErr != nil {
return nil, errors.Wrap(_subscriberProcessIdentifierErr, "Error parsing 'subscriberProcessIdentifier' field")
}
- subscriberProcessIdentifier := _subscriberProcessIdentifier
-
- // Const Field (monitoredObjectIdentifierHeader)
- monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := readBuffer.ReadUint8("monitoredObjectIdentifierHeader", 8)
- if _monitoredObjectIdentifierHeaderErr != nil {
- return nil, errors.Wrap(_monitoredObjectIdentifierHeaderErr, "Error parsing 'monitoredObjectIdentifierHeader' field")
- }
- if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_MONITOREDOBJECTIDENTIFIERHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestConfirmedCOVNotification_MONITOREDOBJECTIDENTIFIERHEADER) + " but got " + fmt.Sprintf("%d", monitoredObjectIdentifierHeader))
- }
-
- // Simple Field (monitoredObjectType)
- _monitoredObjectType, _monitoredObjectTypeErr := readBuffer.ReadUint16("monitoredObjectType", 10)
- if _monitoredObjectTypeErr != nil {
- return nil, errors.Wrap(_monitoredObjectTypeErr, "Error parsing 'monitoredObjectType' field")
- }
- monitoredObjectType := _monitoredObjectType
-
- // Simple Field (monitoredObjectInstanceNumber)
- _monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := readBuffer.ReadUint32("monitoredObjectInstanceNumber", 22)
- if _monitoredObjectInstanceNumberErr != nil {
- return nil, errors.Wrap(_monitoredObjectInstanceNumberErr, "Error parsing 'monitoredObjectInstanceNumber' field")
+ subscriberProcessIdentifier := CastBACnetContextTagUnsignedInteger(_subscriberProcessIdentifier)
+ if closeErr := readBuffer.CloseContext("subscriberProcessIdentifier"); closeErr != nil {
+ return nil, closeErr
}
- monitoredObjectInstanceNumber := _monitoredObjectInstanceNumber
- // Const Field (issueConfirmedNotificationsHeader)
- issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := readBuffer.ReadUint8("issueConfirmedNotificationsHeader", 8)
- if _issueConfirmedNotificationsHeaderErr != nil {
- return nil, errors.Wrap(_issueConfirmedNotificationsHeaderErr, "Error parsing 'issueConfirmedNotificationsHeader' field")
- }
- if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_ISSUECONFIRMEDNOTIFICATIONSHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestConfirmedCOVNotification_ISSUECONFIRMEDNOTIFICATIONSHEADER) + " but got " + fmt.Sprintf("%d", issueConfirmedNotificationsHeader))
+ // Simple Field (monitoredObjectIdentifier)
+ if pullErr := readBuffer.PullContext("monitoredObjectIdentifier"); pullErr != nil {
+ return nil, pullErr
}
-
- // Simple Field (issueConfirmedNotificationsType)
- _issueConfirmedNotificationsType, _issueConfirmedNotificationsTypeErr := readBuffer.ReadUint16("issueConfirmedNotificationsType", 10)
- if _issueConfirmedNotificationsTypeErr != nil {
- return nil, errors.Wrap(_issueConfirmedNotificationsTypeErr, "Error parsing 'issueConfirmedNotificationsType' field")
+ _monitoredObjectIdentifier, _monitoredObjectIdentifierErr := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+ if _monitoredObjectIdentifierErr != nil {
+ return nil, errors.Wrap(_monitoredObjectIdentifierErr, "Error parsing 'monitoredObjectIdentifier' field")
}
- issueConfirmedNotificationsType := _issueConfirmedNotificationsType
-
- // Simple Field (issueConfirmedNotificationsInstanceNumber)
- _issueConfirmedNotificationsInstanceNumber, _issueConfirmedNotificationsInstanceNumberErr := readBuffer.ReadUint32("issueConfirmedNotificationsInstanceNumber", 22)
- if _issueConfirmedNotificationsInstanceNumberErr != nil {
- return nil, errors.Wrap(_issueConfirmedNotificationsInstanceNumberErr, "Error parsing 'issueConfirmedNotificationsInstanceNumber' field")
+ monitoredObjectIdentifier := CastBACnetContextTagObjectIdentifier(_monitoredObjectIdentifier)
+ if closeErr := readBuffer.CloseContext("monitoredObjectIdentifier"); closeErr != nil {
+ return nil, closeErr
}
- issueConfirmedNotificationsInstanceNumber := _issueConfirmedNotificationsInstanceNumber
- // Const Field (lifetimeHeader)
- lifetimeHeader, _lifetimeHeaderErr := readBuffer.ReadUint8("lifetimeHeader", 5)
- if _lifetimeHeaderErr != nil {
- return nil, errors.Wrap(_lifetimeHeaderErr, "Error parsing 'lifetimeHeader' field")
+ // Simple Field (issueConfirmed)
+ if pullErr := readBuffer.PullContext("issueConfirmed"); pullErr != nil {
+ return nil, pullErr
}
- if lifetimeHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_LIFETIMEHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestConfirmedCOVNotification_LIFETIMEHEADER) + " but got " + fmt.Sprintf("%d", lifetimeHeader))
+ _issueConfirmed, _issueConfirmedErr := BACnetContextTagParse(readBuffer, uint8(2), BACnetDataType_BOOLEAN)
+ if _issueConfirmedErr != nil {
+ return nil, errors.Wrap(_issueConfirmedErr, "Error parsing 'issueConfirmed' field")
}
-
- // Simple Field (lifetimeLength)
- _lifetimeLength, _lifetimeLengthErr := readBuffer.ReadUint8("lifetimeLength", 3)
- if _lifetimeLengthErr != nil {
- return nil, errors.Wrap(_lifetimeLengthErr, "Error parsing 'lifetimeLength' field")
+ issueConfirmed := CastBACnetContextTagBoolean(_issueConfirmed)
+ if closeErr := readBuffer.CloseContext("issueConfirmed"); closeErr != nil {
+ return nil, closeErr
}
- lifetimeLength := _lifetimeLength
- // Array field (lifetimeSeconds)
- if pullErr := readBuffer.PullContext("lifetimeSeconds", utils.WithRenderAsList(true)); pullErr != nil {
+ // Simple Field (lifetimeInSeconds)
+ if pullErr := readBuffer.PullContext("lifetimeInSeconds"); pullErr != nil {
return nil, pullErr
}
- // Count array
- lifetimeSeconds := make([]int8, lifetimeLength)
- {
- for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
- _item, _err := readBuffer.ReadInt8("", 8)
- if _err != nil {
- return nil, errors.Wrap(_err, "Error parsing 'lifetimeSeconds' field")
- }
- lifetimeSeconds[curItem] = _item
- }
+ _lifetimeInSeconds, _lifetimeInSecondsErr := BACnetContextTagParse(readBuffer, uint8(3), BACnetDataType_UNSIGNED_INTEGER)
+ if _lifetimeInSecondsErr != nil {
+ return nil, errors.Wrap(_lifetimeInSecondsErr, "Error parsing 'lifetimeInSeconds' field")
}
- if closeErr := readBuffer.CloseContext("lifetimeSeconds", utils.WithRenderAsList(true)); closeErr != nil {
+ lifetimeInSeconds := CastBACnetContextTagUnsignedInteger(_lifetimeInSeconds)
+ if closeErr := readBuffer.CloseContext("lifetimeInSeconds"); closeErr != nil {
return nil, closeErr
}
- // Const Field (listOfValuesOpeningTag)
- listOfValuesOpeningTag, _listOfValuesOpeningTagErr := readBuffer.ReadUint8("listOfValuesOpeningTag", 8)
- if _listOfValuesOpeningTagErr != nil {
- return nil, errors.Wrap(_listOfValuesOpeningTagErr, "Error parsing 'listOfValuesOpeningTag' field")
- }
- if listOfValuesOpeningTag != BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESOPENINGTAG {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESOPENINGTAG) + " but got " + fmt.Sprintf("%d", listOfValuesOpeningTag))
- }
-
- // Array field (notifications)
- if pullErr := readBuffer.PullContext("notifications", utils.WithRenderAsList(true)); pullErr != nil {
- return nil, pullErr
- }
- // Length array
- notifications := make([]*BACnetTagWithContent, 0)
+ // Optional Field (listOfValues) (Can be skipped, if a given expression evaluates to false)
+ var listOfValues *BACnetConstructedData = nil
{
- _notificationsLength := uint16(len) - uint16(uint16(18))
- _notificationsEndPos := readBuffer.GetPos() + uint16(_notificationsLength)
- for readBuffer.GetPos() < _notificationsEndPos {
- _item, _err := BACnetTagWithContentParse(readBuffer)
- if _err != nil {
- return nil, errors.Wrap(_err, "Error parsing 'notifications' field")
+ currentPos := readBuffer.GetPos()
+ if pullErr := readBuffer.PullContext("listOfValues"); pullErr != nil {
+ return nil, pullErr
+ }
+ _val, _err := BACnetConstructedDataParse(readBuffer, uint8(4), BACnetPropertyIdentifier_ALL)
+ switch {
+ case _err != nil && _err != utils.ParseAssertError:
+ return nil, errors.Wrap(_err, "Error parsing 'listOfValues' field")
+ case _err == utils.ParseAssertError:
+ readBuffer.SetPos(currentPos)
+ default:
+ listOfValues = CastBACnetConstructedData(_val)
+ if closeErr := readBuffer.CloseContext("listOfValues"); closeErr != nil {
+ return nil, closeErr
}
- notifications = append(notifications, _item)
}
}
- if closeErr := readBuffer.CloseContext("notifications", utils.WithRenderAsList(true)); closeErr != nil {
- return nil, closeErr
- }
-
- // Const Field (listOfValuesClosingTag)
- listOfValuesClosingTag, _listOfValuesClosingTagErr := readBuffer.ReadUint8("listOfValuesClosingTag", 8)
- if _listOfValuesClosingTagErr != nil {
- return nil, errors.Wrap(_listOfValuesClosingTagErr, "Error parsing 'listOfValuesClosingTag' field")
- }
- if listOfValuesClosingTag != BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGTAG {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGTAG) + " but got " + fmt.Sprintf("%d", listOfValuesClosingTag))
- }
if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestConfirmedCOVNotification"); closeErr != nil {
return nil, closeErr
@@ -313,15 +204,12 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(readBuffer utils
// Create a partially initialized instance
_child := &BACnetConfirmedServiceRequestConfirmedCOVNotification{
- SubscriberProcessIdentifier: subscriberProcessIdentifier,
- MonitoredObjectType: monitoredObjectType,
- MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber,
- IssueConfirmedNotificationsType: issueConfirmedNotificationsType,
- IssueConfirmedNotificationsInstanceNumber: issueConfirmedNotificationsInstanceNumber,
- LifetimeLength: lifetimeLength,
- LifetimeSeconds: lifetimeSeconds,
- Notifications: notifications,
- BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
+ SubscriberProcessIdentifier: CastBACnetContextTagUnsignedInteger(subscriberProcessIdentifier),
+ MonitoredObjectIdentifier: CastBACnetContextTagObjectIdentifier(monitoredObjectIdentifier),
+ IssueConfirmed: CastBACnetContextTagBoolean(issueConfirmed),
+ LifetimeInSeconds: CastBACnetContextTagUnsignedInteger(lifetimeInSeconds),
+ ListOfValues: CastBACnetConstructedData(listOfValues),
+ BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
}
_child.BACnetConfirmedServiceRequest.Child = _child
return _child.BACnetConfirmedServiceRequest, nil
@@ -333,114 +221,68 @@ func (m *BACnetConfirmedServiceRequestConfirmedCOVNotification) Serialize(writeB
return pushErr
}
- // Const Field (subscriberProcessIdentifierHeader)
- _subscriberProcessIdentifierHeaderErr := writeBuffer.WriteUint8("subscriberProcessIdentifierHeader", 8, 0x09)
- if _subscriberProcessIdentifierHeaderErr != nil {
- return errors.Wrap(_subscriberProcessIdentifierHeaderErr, "Error serializing 'subscriberProcessIdentifierHeader' field")
- }
-
// Simple Field (subscriberProcessIdentifier)
- subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
- _subscriberProcessIdentifierErr := writeBuffer.WriteUint8("subscriberProcessIdentifier", 8, (subscriberProcessIdentifier))
+ if pushErr := writeBuffer.PushContext("subscriberProcessIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _subscriberProcessIdentifierErr := m.SubscriberProcessIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("subscriberProcessIdentifier"); popErr != nil {
+ return popErr
+ }
if _subscriberProcessIdentifierErr != nil {
return errors.Wrap(_subscriberProcessIdentifierErr, "Error serializing 'subscriberProcessIdentifier' field")
}
- // Const Field (monitoredObjectIdentifierHeader)
- _monitoredObjectIdentifierHeaderErr := writeBuffer.WriteUint8("monitoredObjectIdentifierHeader", 8, 0x1C)
- if _monitoredObjectIdentifierHeaderErr != nil {
- return errors.Wrap(_monitoredObjectIdentifierHeaderErr, "Error serializing 'monitoredObjectIdentifierHeader' field")
+ // Simple Field (monitoredObjectIdentifier)
+ if pushErr := writeBuffer.PushContext("monitoredObjectIdentifier"); pushErr != nil {
+ return pushErr
}
-
- // Simple Field (monitoredObjectType)
- monitoredObjectType := uint16(m.MonitoredObjectType)
- _monitoredObjectTypeErr := writeBuffer.WriteUint16("monitoredObjectType", 10, (monitoredObjectType))
- if _monitoredObjectTypeErr != nil {
- return errors.Wrap(_monitoredObjectTypeErr, "Error serializing 'monitoredObjectType' field")
+ _monitoredObjectIdentifierErr := m.MonitoredObjectIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("monitoredObjectIdentifier"); popErr != nil {
+ return popErr
}
-
- // Simple Field (monitoredObjectInstanceNumber)
- monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
- _monitoredObjectInstanceNumberErr := writeBuffer.WriteUint32("monitoredObjectInstanceNumber", 22, (monitoredObjectInstanceNumber))
- if _monitoredObjectInstanceNumberErr != nil {
- return errors.Wrap(_monitoredObjectInstanceNumberErr, "Error serializing 'monitoredObjectInstanceNumber' field")
+ if _monitoredObjectIdentifierErr != nil {
+ return errors.Wrap(_monitoredObjectIdentifierErr, "Error serializing 'monitoredObjectIdentifier' field")
}
- // Const Field (issueConfirmedNotificationsHeader)
- _issueConfirmedNotificationsHeaderErr := writeBuffer.WriteUint8("issueConfirmedNotificationsHeader", 8, 0x2C)
- if _issueConfirmedNotificationsHeaderErr != nil {
- return errors.Wrap(_issueConfirmedNotificationsHeaderErr, "Error serializing 'issueConfirmedNotificationsHeader' field")
- }
-
- // Simple Field (issueConfirmedNotificationsType)
- issueConfirmedNotificationsType := uint16(m.IssueConfirmedNotificationsType)
- _issueConfirmedNotificationsTypeErr := writeBuffer.WriteUint16("issueConfirmedNotificationsType", 10, (issueConfirmedNotificationsType))
- if _issueConfirmedNotificationsTypeErr != nil {
- return errors.Wrap(_issueConfirmedNotificationsTypeErr, "Error serializing 'issueConfirmedNotificationsType' field")
+ // Simple Field (issueConfirmed)
+ if pushErr := writeBuffer.PushContext("issueConfirmed"); pushErr != nil {
+ return pushErr
}
-
- // Simple Field (issueConfirmedNotificationsInstanceNumber)
- issueConfirmedNotificationsInstanceNumber := uint32(m.IssueConfirmedNotificationsInstanceNumber)
- _issueConfirmedNotificationsInstanceNumberErr := writeBuffer.WriteUint32("issueConfirmedNotificationsInstanceNumber", 22, (issueConfirmedNotificationsInstanceNumber))
- if _issueConfirmedNotificationsInstanceNumberErr != nil {
- return errors.Wrap(_issueConfirmedNotificationsInstanceNumberErr, "Error serializing 'issueConfirmedNotificationsInstanceNumber' field")
+ _issueConfirmedErr := m.IssueConfirmed.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("issueConfirmed"); popErr != nil {
+ return popErr
}
-
- // Const Field (lifetimeHeader)
- _lifetimeHeaderErr := writeBuffer.WriteUint8("lifetimeHeader", 5, 0x07)
- if _lifetimeHeaderErr != nil {
- return errors.Wrap(_lifetimeHeaderErr, "Error serializing 'lifetimeHeader' field")
+ if _issueConfirmedErr != nil {
+ return errors.Wrap(_issueConfirmedErr, "Error serializing 'issueConfirmed' field")
}
- // Simple Field (lifetimeLength)
- lifetimeLength := uint8(m.LifetimeLength)
- _lifetimeLengthErr := writeBuffer.WriteUint8("lifetimeLength", 3, (lifetimeLength))
- if _lifetimeLengthErr != nil {
- return errors.Wrap(_lifetimeLengthErr, "Error serializing 'lifetimeLength' field")
+ // Simple Field (lifetimeInSeconds)
+ if pushErr := writeBuffer.PushContext("lifetimeInSeconds"); pushErr != nil {
+ return pushErr
}
-
- // Array Field (lifetimeSeconds)
- if m.LifetimeSeconds != nil {
- if pushErr := writeBuffer.PushContext("lifetimeSeconds", utils.WithRenderAsList(true)); pushErr != nil {
- return pushErr
- }
- for _, _element := range m.LifetimeSeconds {
- _elementErr := writeBuffer.WriteInt8("", 8, _element)
- if _elementErr != nil {
- return errors.Wrap(_elementErr, "Error serializing 'lifetimeSeconds' field")
- }
- }
- if popErr := writeBuffer.PopContext("lifetimeSeconds", utils.WithRenderAsList(true)); popErr != nil {
- return popErr
- }
+ _lifetimeInSecondsErr := m.LifetimeInSeconds.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("lifetimeInSeconds"); popErr != nil {
+ return popErr
}
-
- // Const Field (listOfValuesOpeningTag)
- _listOfValuesOpeningTagErr := writeBuffer.WriteUint8("listOfValuesOpeningTag", 8, 0x4E)
- if _listOfValuesOpeningTagErr != nil {
- return errors.Wrap(_listOfValuesOpeningTagErr, "Error serializing 'listOfValuesOpeningTag' field")
+ if _lifetimeInSecondsErr != nil {
+ return errors.Wrap(_lifetimeInSecondsErr, "Error serializing 'lifetimeInSeconds' field")
}
- // Array Field (notifications)
- if m.Notifications != nil {
- if pushErr := writeBuffer.PushContext("notifications", utils.WithRenderAsList(true)); pushErr != nil {
+ // Optional Field (listOfValues) (Can be skipped, if the value is null)
+ var listOfValues *BACnetConstructedData = nil
+ if m.ListOfValues != nil {
+ if pushErr := writeBuffer.PushContext("listOfValues"); pushErr != nil {
return pushErr
}
- for _, _element := range m.Notifications {
- _elementErr := _element.Serialize(writeBuffer)
- if _elementErr != nil {
- return errors.Wrap(_elementErr, "Error serializing 'notifications' field")
- }
- }
- if popErr := writeBuffer.PopContext("notifications", utils.WithRenderAsList(true)); popErr != nil {
+ listOfValues = m.ListOfValues
+ _listOfValuesErr := listOfValues.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("listOfValues"); popErr != nil {
return popErr
}
- }
-
- // Const Field (listOfValuesClosingTag)
- _listOfValuesClosingTagErr := writeBuffer.WriteUint8("listOfValuesClosingTag", 8, 0x4F)
- if _listOfValuesClosingTagErr != nil {
- return errors.Wrap(_listOfValuesClosingTagErr, "Error serializing 'listOfValuesClosingTag' field")
+ if _listOfValuesErr != nil {
+ return errors.Wrap(_listOfValuesErr, "Error serializing 'listOfValues' field")
+ }
}
if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestConfirmedCOVNotification"); popErr != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
index bd36633..4caeb0a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
@@ -20,29 +20,19 @@
package model
import (
- "fmt"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
"github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
-// Constant values.
-const BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER uint8 = 0x09
-const BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER uint8 = 0x1C
-const BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER uint8 = 0x29
-const BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS uint8 = 0x00
-const BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER uint8 = 0x07
-
// The data-structure of this message
type BACnetConfirmedServiceRequestSubscribeCOV struct {
*BACnetConfirmedServiceRequest
- SubscriberProcessIdentifier uint8
- MonitoredObjectType uint16
- MonitoredObjectInstanceNumber uint32
- IssueConfirmedNotifications bool
- LifetimeLength uint8
- LifetimeSeconds []int8
+ SubscriberProcessIdentifier *BACnetContextTagUnsignedInteger
+ MonitoredObjectIdentifier *BACnetContextTagObjectIdentifier
+ IssueConfirmed *BACnetContextTagBoolean
+ LifetimeInSeconds *BACnetContextTagUnsignedInteger
}
// The corresponding interface
@@ -62,14 +52,12 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOV) ServiceChoice() uint8 {
func (m *BACnetConfirmedServiceRequestSubscribeCOV) InitializeParent(parent *BACnetConfirmedServiceRequest) {
}
-func NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier uint8, monitoredObjectType uint16, monitoredObjectInstanceNumber uint32, issueConfirmedNotifications bool, lifetimeLength uint8, lifetimeSeconds []int8) *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier *BACnetContextTagUnsignedInteger, monitoredObjectIdentifier *BACnetContextTagObjectIdentifier, issueConfirmed *BACnetContextTagBoolean, lifetimeInSeconds *BACnetContextTagUnsignedInteger) *BACnetConfirmedServiceRequest {
child := &BACnetConfirmedServiceRequestSubscribeCOV{
SubscriberProcessIdentifier: subscriberProcessIdentifier,
- MonitoredObjectType: monitoredObjectType,
- MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber,
- IssueConfirmedNotifications: issueConfirmedNotifications,
- LifetimeLength: lifetimeLength,
- LifetimeSeconds: lifetimeSeconds,
+ MonitoredObjectIdentifier: monitoredObjectIdentifier,
+ IssueConfirmed: issueConfirmed,
+ LifetimeInSeconds: lifetimeInSeconds,
BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(),
}
child.Child = child
@@ -106,40 +94,17 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOV) LengthInBits() uint16 {
func (m *BACnetConfirmedServiceRequestSubscribeCOV) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
- // Const Field (subscriberProcessIdentifierHeader)
- lengthInBits += 8
-
// Simple field (subscriberProcessIdentifier)
- lengthInBits += 8
-
- // Const Field (monitoredObjectIdentifierHeader)
- lengthInBits += 8
-
- // Simple field (monitoredObjectType)
- lengthInBits += 10
-
- // Simple field (monitoredObjectInstanceNumber)
- lengthInBits += 22
-
- // Const Field (issueConfirmedNotificationsHeader)
- lengthInBits += 8
-
- // Const Field (issueConfirmedNotificationsSkipBits)
- lengthInBits += 7
+ lengthInBits += m.SubscriberProcessIdentifier.LengthInBits()
- // Simple field (issueConfirmedNotifications)
- lengthInBits += 1
+ // Simple field (monitoredObjectIdentifier)
+ lengthInBits += m.MonitoredObjectIdentifier.LengthInBits()
- // Const Field (lifetimeHeader)
- lengthInBits += 5
+ // Simple field (issueConfirmed)
+ lengthInBits += m.IssueConfirmed.LengthInBits()
- // Simple field (lifetimeLength)
- lengthInBits += 3
-
- // Array field
- if len(m.LifetimeSeconds) > 0 {
- lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
- }
+ // Simple field (lifetimeInSeconds)
+ lengthInBits += m.LifetimeInSeconds.LengthInBits()
return lengthInBits
}
@@ -153,102 +118,55 @@ func BACnetConfirmedServiceRequestSubscribeCOVParse(readBuffer utils.ReadBuffer,
return nil, pullErr
}
- // Const Field (subscriberProcessIdentifierHeader)
- subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := readBuffer.ReadUint8("subscriberProcessIdentifierHeader", 8)
- if _subscriberProcessIdentifierHeaderErr != nil {
- return nil, errors.Wrap(_subscriberProcessIdentifierHeaderErr, "Error parsing 'subscriberProcessIdentifierHeader' field")
- }
- if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestSubscribeCOV_SUBSCRIBERPROCESSIDENTIFIERHEADER) + " but got " + fmt.Sprintf("%d", subscriberProcessIdentifierHeader))
- }
-
// Simple Field (subscriberProcessIdentifier)
- _subscriberProcessIdentifier, _subscriberProcessIdentifierErr := readBuffer.ReadUint8("subscriberProcessIdentifier", 8)
+ if pullErr := readBuffer.PullContext("subscriberProcessIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _subscriberProcessIdentifier, _subscriberProcessIdentifierErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_UNSIGNED_INTEGER)
if _subscriberProcessIdentifierErr != nil {
return nil, errors.Wrap(_subscriberProcessIdentifierErr, "Error parsing 'subscriberProcessIdentifier' field")
}
- subscriberProcessIdentifier := _subscriberProcessIdentifier
-
- // Const Field (monitoredObjectIdentifierHeader)
- monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := readBuffer.ReadUint8("monitoredObjectIdentifierHeader", 8)
- if _monitoredObjectIdentifierHeaderErr != nil {
- return nil, errors.Wrap(_monitoredObjectIdentifierHeaderErr, "Error parsing 'monitoredObjectIdentifierHeader' field")
- }
- if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestSubscribeCOV_MONITOREDOBJECTIDENTIFIERHEADER) + " but got " + fmt.Sprintf("%d", monitoredObjectIdentifierHeader))
- }
-
- // Simple Field (monitoredObjectType)
- _monitoredObjectType, _monitoredObjectTypeErr := readBuffer.ReadUint16("monitoredObjectType", 10)
- if _monitoredObjectTypeErr != nil {
- return nil, errors.Wrap(_monitoredObjectTypeErr, "Error parsing 'monitoredObjectType' field")
- }
- monitoredObjectType := _monitoredObjectType
-
- // Simple Field (monitoredObjectInstanceNumber)
- _monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := readBuffer.ReadUint32("monitoredObjectInstanceNumber", 22)
- if _monitoredObjectInstanceNumberErr != nil {
- return nil, errors.Wrap(_monitoredObjectInstanceNumberErr, "Error parsing 'monitoredObjectInstanceNumber' field")
- }
- monitoredObjectInstanceNumber := _monitoredObjectInstanceNumber
-
- // Const Field (issueConfirmedNotificationsHeader)
- issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := readBuffer.ReadUint8("issueConfirmedNotificationsHeader", 8)
- if _issueConfirmedNotificationsHeaderErr != nil {
- return nil, errors.Wrap(_issueConfirmedNotificationsHeaderErr, "Error parsing 'issueConfirmedNotificationsHeader' field")
- }
- if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSHEADER) + " but got " + fmt.Sprintf("%d", issueConfirmedNotificationsHeader))
+ subscriberProcessIdentifier := CastBACnetContextTagUnsignedInteger(_subscriberProcessIdentifier)
+ if closeErr := readBuffer.CloseContext("subscriberProcessIdentifier"); closeErr != nil {
+ return nil, closeErr
}
- // Const Field (issueConfirmedNotificationsSkipBits)
- issueConfirmedNotificationsSkipBits, _issueConfirmedNotificationsSkipBitsErr := readBuffer.ReadUint8("issueConfirmedNotificationsSkipBits", 7)
- if _issueConfirmedNotificationsSkipBitsErr != nil {
- return nil, errors.Wrap(_issueConfirmedNotificationsSkipBitsErr, "Error parsing 'issueConfirmedNotificationsSkipBits' field")
+ // Simple Field (monitoredObjectIdentifier)
+ if pullErr := readBuffer.PullContext("monitoredObjectIdentifier"); pullErr != nil {
+ return nil, pullErr
}
- if issueConfirmedNotificationsSkipBits != BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestSubscribeCOV_ISSUECONFIRMEDNOTIFICATIONSSKIPBITS) + " but got " + fmt.Sprintf("%d", issueConfirmedNotificationsSkipBits))
+ _monitoredObjectIdentifier, _monitoredObjectIdentifierErr := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+ if _monitoredObjectIdentifierErr != nil {
+ return nil, errors.Wrap(_monitoredObjectIdentifierErr, "Error parsing 'monitoredObjectIdentifier' field")
}
-
- // Simple Field (issueConfirmedNotifications)
- _issueConfirmedNotifications, _issueConfirmedNotificationsErr := readBuffer.ReadBit("issueConfirmedNotifications")
- if _issueConfirmedNotificationsErr != nil {
- return nil, errors.Wrap(_issueConfirmedNotificationsErr, "Error parsing 'issueConfirmedNotifications' field")
+ monitoredObjectIdentifier := CastBACnetContextTagObjectIdentifier(_monitoredObjectIdentifier)
+ if closeErr := readBuffer.CloseContext("monitoredObjectIdentifier"); closeErr != nil {
+ return nil, closeErr
}
- issueConfirmedNotifications := _issueConfirmedNotifications
- // Const Field (lifetimeHeader)
- lifetimeHeader, _lifetimeHeaderErr := readBuffer.ReadUint8("lifetimeHeader", 5)
- if _lifetimeHeaderErr != nil {
- return nil, errors.Wrap(_lifetimeHeaderErr, "Error parsing 'lifetimeHeader' field")
+ // Simple Field (issueConfirmed)
+ if pullErr := readBuffer.PullContext("issueConfirmed"); pullErr != nil {
+ return nil, pullErr
}
- if lifetimeHeader != BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetConfirmedServiceRequestSubscribeCOV_LIFETIMEHEADER) + " but got " + fmt.Sprintf("%d", lifetimeHeader))
+ _issueConfirmed, _issueConfirmedErr := BACnetContextTagParse(readBuffer, uint8(2), BACnetDataType_BOOLEAN)
+ if _issueConfirmedErr != nil {
+ return nil, errors.Wrap(_issueConfirmedErr, "Error parsing 'issueConfirmed' field")
}
-
- // Simple Field (lifetimeLength)
- _lifetimeLength, _lifetimeLengthErr := readBuffer.ReadUint8("lifetimeLength", 3)
- if _lifetimeLengthErr != nil {
- return nil, errors.Wrap(_lifetimeLengthErr, "Error parsing 'lifetimeLength' field")
+ issueConfirmed := CastBACnetContextTagBoolean(_issueConfirmed)
+ if closeErr := readBuffer.CloseContext("issueConfirmed"); closeErr != nil {
+ return nil, closeErr
}
- lifetimeLength := _lifetimeLength
- // Array field (lifetimeSeconds)
- if pullErr := readBuffer.PullContext("lifetimeSeconds", utils.WithRenderAsList(true)); pullErr != nil {
+ // Simple Field (lifetimeInSeconds)
+ if pullErr := readBuffer.PullContext("lifetimeInSeconds"); pullErr != nil {
return nil, pullErr
}
- // Count array
- lifetimeSeconds := make([]int8, lifetimeLength)
- {
- for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
- _item, _err := readBuffer.ReadInt8("", 8)
- if _err != nil {
- return nil, errors.Wrap(_err, "Error parsing 'lifetimeSeconds' field")
- }
- lifetimeSeconds[curItem] = _item
- }
+ _lifetimeInSeconds, _lifetimeInSecondsErr := BACnetContextTagParse(readBuffer, uint8(3), BACnetDataType_UNSIGNED_INTEGER)
+ if _lifetimeInSecondsErr != nil {
+ return nil, errors.Wrap(_lifetimeInSecondsErr, "Error parsing 'lifetimeInSeconds' field")
}
- if closeErr := readBuffer.CloseContext("lifetimeSeconds", utils.WithRenderAsList(true)); closeErr != nil {
+ lifetimeInSeconds := CastBACnetContextTagUnsignedInteger(_lifetimeInSeconds)
+ if closeErr := readBuffer.CloseContext("lifetimeInSeconds"); closeErr != nil {
return nil, closeErr
}
@@ -258,12 +176,10 @@ func BACnetConfirmedServiceRequestSubscribeCOVParse(readBuffer utils.ReadBuffer,
// Create a partially initialized instance
_child := &BACnetConfirmedServiceRequestSubscribeCOV{
- SubscriberProcessIdentifier: subscriberProcessIdentifier,
- MonitoredObjectType: monitoredObjectType,
- MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber,
- IssueConfirmedNotifications: issueConfirmedNotifications,
- LifetimeLength: lifetimeLength,
- LifetimeSeconds: lifetimeSeconds,
+ SubscriberProcessIdentifier: CastBACnetContextTagUnsignedInteger(subscriberProcessIdentifier),
+ MonitoredObjectIdentifier: CastBACnetContextTagObjectIdentifier(monitoredObjectIdentifier),
+ IssueConfirmed: CastBACnetContextTagBoolean(issueConfirmed),
+ LifetimeInSeconds: CastBACnetContextTagUnsignedInteger(lifetimeInSeconds),
BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
}
_child.BACnetConfirmedServiceRequest.Child = _child
@@ -276,85 +192,52 @@ func (m *BACnetConfirmedServiceRequestSubscribeCOV) Serialize(writeBuffer utils.
return pushErr
}
- // Const Field (subscriberProcessIdentifierHeader)
- _subscriberProcessIdentifierHeaderErr := writeBuffer.WriteUint8("subscriberProcessIdentifierHeader", 8, 0x09)
- if _subscriberProcessIdentifierHeaderErr != nil {
- return errors.Wrap(_subscriberProcessIdentifierHeaderErr, "Error serializing 'subscriberProcessIdentifierHeader' field")
- }
-
// Simple Field (subscriberProcessIdentifier)
- subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
- _subscriberProcessIdentifierErr := writeBuffer.WriteUint8("subscriberProcessIdentifier", 8, (subscriberProcessIdentifier))
+ if pushErr := writeBuffer.PushContext("subscriberProcessIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _subscriberProcessIdentifierErr := m.SubscriberProcessIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("subscriberProcessIdentifier"); popErr != nil {
+ return popErr
+ }
if _subscriberProcessIdentifierErr != nil {
return errors.Wrap(_subscriberProcessIdentifierErr, "Error serializing 'subscriberProcessIdentifier' field")
}
- // Const Field (monitoredObjectIdentifierHeader)
- _monitoredObjectIdentifierHeaderErr := writeBuffer.WriteUint8("monitoredObjectIdentifierHeader", 8, 0x1C)
- if _monitoredObjectIdentifierHeaderErr != nil {
- return errors.Wrap(_monitoredObjectIdentifierHeaderErr, "Error serializing 'monitoredObjectIdentifierHeader' field")
+ // Simple Field (monitoredObjectIdentifier)
+ if pushErr := writeBuffer.PushContext("monitoredObjectIdentifier"); pushErr != nil {
+ return pushErr
}
-
- // Simple Field (monitoredObjectType)
- monitoredObjectType := uint16(m.MonitoredObjectType)
- _monitoredObjectTypeErr := writeBuffer.WriteUint16("monitoredObjectType", 10, (monitoredObjectType))
- if _monitoredObjectTypeErr != nil {
- return errors.Wrap(_monitoredObjectTypeErr, "Error serializing 'monitoredObjectType' field")
+ _monitoredObjectIdentifierErr := m.MonitoredObjectIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("monitoredObjectIdentifier"); popErr != nil {
+ return popErr
}
-
- // Simple Field (monitoredObjectInstanceNumber)
- monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
- _monitoredObjectInstanceNumberErr := writeBuffer.WriteUint32("monitoredObjectInstanceNumber", 22, (monitoredObjectInstanceNumber))
- if _monitoredObjectInstanceNumberErr != nil {
- return errors.Wrap(_monitoredObjectInstanceNumberErr, "Error serializing 'monitoredObjectInstanceNumber' field")
+ if _monitoredObjectIdentifierErr != nil {
+ return errors.Wrap(_monitoredObjectIdentifierErr, "Error serializing 'monitoredObjectIdentifier' field")
}
- // Const Field (issueConfirmedNotificationsHeader)
- _issueConfirmedNotificationsHeaderErr := writeBuffer.WriteUint8("issueConfirmedNotificationsHeader", 8, 0x29)
- if _issueConfirmedNotificationsHeaderErr != nil {
- return errors.Wrap(_issueConfirmedNotificationsHeaderErr, "Error serializing 'issueConfirmedNotificationsHeader' field")
+ // Simple Field (issueConfirmed)
+ if pushErr := writeBuffer.PushContext("issueConfirmed"); pushErr != nil {
+ return pushErr
}
-
- // Const Field (issueConfirmedNotificationsSkipBits)
- _issueConfirmedNotificationsSkipBitsErr := writeBuffer.WriteUint8("issueConfirmedNotificationsSkipBits", 7, 0x00)
- if _issueConfirmedNotificationsSkipBitsErr != nil {
- return errors.Wrap(_issueConfirmedNotificationsSkipBitsErr, "Error serializing 'issueConfirmedNotificationsSkipBits' field")
+ _issueConfirmedErr := m.IssueConfirmed.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("issueConfirmed"); popErr != nil {
+ return popErr
}
-
- // Simple Field (issueConfirmedNotifications)
- issueConfirmedNotifications := bool(m.IssueConfirmedNotifications)
- _issueConfirmedNotificationsErr := writeBuffer.WriteBit("issueConfirmedNotifications", (issueConfirmedNotifications))
- if _issueConfirmedNotificationsErr != nil {
- return errors.Wrap(_issueConfirmedNotificationsErr, "Error serializing 'issueConfirmedNotifications' field")
+ if _issueConfirmedErr != nil {
+ return errors.Wrap(_issueConfirmedErr, "Error serializing 'issueConfirmed' field")
}
- // Const Field (lifetimeHeader)
- _lifetimeHeaderErr := writeBuffer.WriteUint8("lifetimeHeader", 5, 0x07)
- if _lifetimeHeaderErr != nil {
- return errors.Wrap(_lifetimeHeaderErr, "Error serializing 'lifetimeHeader' field")
+ // Simple Field (lifetimeInSeconds)
+ if pushErr := writeBuffer.PushContext("lifetimeInSeconds"); pushErr != nil {
+ return pushErr
}
-
- // Simple Field (lifetimeLength)
- lifetimeLength := uint8(m.LifetimeLength)
- _lifetimeLengthErr := writeBuffer.WriteUint8("lifetimeLength", 3, (lifetimeLength))
- if _lifetimeLengthErr != nil {
- return errors.Wrap(_lifetimeLengthErr, "Error serializing 'lifetimeLength' field")
+ _lifetimeInSecondsErr := m.LifetimeInSeconds.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("lifetimeInSeconds"); popErr != nil {
+ return popErr
}
-
- // Array Field (lifetimeSeconds)
- if m.LifetimeSeconds != nil {
- if pushErr := writeBuffer.PushContext("lifetimeSeconds", utils.WithRenderAsList(true)); pushErr != nil {
- return pushErr
- }
- for _, _element := range m.LifetimeSeconds {
- _elementErr := writeBuffer.WriteInt8("", 8, _element)
- if _elementErr != nil {
- return errors.Wrap(_elementErr, "Error serializing 'lifetimeSeconds' field")
- }
- }
- if popErr := writeBuffer.PopContext("lifetimeSeconds", utils.WithRenderAsList(true)); popErr != nil {
- return popErr
- }
+ if _lifetimeInSecondsErr != nil {
+ return errors.Wrap(_lifetimeInSecondsErr, "Error serializing 'lifetimeInSeconds' field")
}
if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestSubscribeCOV"); popErr != nil {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
index 7c1550e..5107f3c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
@@ -32,7 +32,7 @@ type BACnetConfirmedServiceRequestWriteProperty struct {
ObjectIdentifier *BACnetContextTagObjectIdentifier
PropertyIdentifier *BACnetContextTagPropertyIdentifier
ArrayIndex *uint32
- PropertyValue *BACnetPropertyValue
+ PropertyValue *BACnetConstructedData
Priority *BACnetTag
}
@@ -53,7 +53,7 @@ func (m *BACnetConfirmedServiceRequestWriteProperty) ServiceChoice() uint8 {
func (m *BACnetConfirmedServiceRequestWriteProperty) InitializeParent(parent *BACnetConfirmedServiceRequest) {
}
-func NewBACnetConfirmedServiceRequestWriteProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *uint32, propertyValue *BACnetPropertyValue, priority *BACnetTag) *BACnetConfirmedServiceRequest {
+func NewBACnetConfirmedServiceRequestWriteProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *uint32, propertyValue *BACnetConstructedData, priority *BACnetTag) *BACnetConfirmedServiceRequest {
child := &BACnetConfirmedServiceRequestWriteProperty{
ObjectIdentifier: objectIdentifier,
PropertyIdentifier: propertyIdentifier,
@@ -169,11 +169,11 @@ func BACnetConfirmedServiceRequestWritePropertyParse(readBuffer utils.ReadBuffer
if pullErr := readBuffer.PullContext("propertyValue"); pullErr != nil {
return nil, pullErr
}
- _propertyValue, _propertyValueErr := BACnetPropertyValueParse(readBuffer, propertyIdentifier.Value)
+ _propertyValue, _propertyValueErr := BACnetConstructedDataParse(readBuffer, uint8(3), propertyIdentifier.Value)
if _propertyValueErr != nil {
return nil, errors.Wrap(_propertyValueErr, "Error parsing 'propertyValue' field")
}
- propertyValue := CastBACnetPropertyValue(_propertyValue)
+ propertyValue := CastBACnetConstructedData(_propertyValue)
if closeErr := readBuffer.CloseContext("propertyValue"); closeErr != nil {
return nil, closeErr
}
@@ -209,7 +209,7 @@ func BACnetConfirmedServiceRequestWritePropertyParse(readBuffer utils.ReadBuffer
ObjectIdentifier: CastBACnetContextTagObjectIdentifier(objectIdentifier),
PropertyIdentifier: CastBACnetContextTagPropertyIdentifier(propertyIdentifier),
ArrayIndex: arrayIndex,
- PropertyValue: CastBACnetPropertyValue(propertyValue),
+ PropertyValue: CastBACnetConstructedData(propertyValue),
Priority: CastBACnetTag(priority),
BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedData.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedData.go
new file mode 100644
index 0000000..a23e8f1
--- /dev/null
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConstructedData.go
@@ -0,0 +1,224 @@
+/*
+ * 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/plc4go/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// The data-structure of this message
+type BACnetConstructedData struct {
+ OpeningTag *BACnetContextTag
+ Data []*BACnetTag
+ ClosingTag *BACnetContextTag
+}
+
+// The corresponding interface
+type IBACnetConstructedData interface {
+ LengthInBytes() uint16
+ LengthInBits() uint16
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+func NewBACnetConstructedData(openingTag *BACnetContextTag, data []*BACnetTag, closingTag *BACnetContextTag) *BACnetConstructedData {
+ return &BACnetConstructedData{OpeningTag: openingTag, Data: data, ClosingTag: closingTag}
+}
+
+func CastBACnetConstructedData(structType interface{}) *BACnetConstructedData {
+ castFunc := func(typ interface{}) *BACnetConstructedData {
+ if casted, ok := typ.(BACnetConstructedData); ok {
+ return &casted
+ }
+ if casted, ok := typ.(*BACnetConstructedData); ok {
+ return casted
+ }
+ return nil
+ }
+ return castFunc(structType)
+}
+
+func (m *BACnetConstructedData) GetTypeName() string {
+ return "BACnetConstructedData"
+}
+
+func (m *BACnetConstructedData) LengthInBits() uint16 {
+ return m.LengthInBitsConditional(false)
+}
+
+func (m *BACnetConstructedData) LengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(0)
+
+ // Optional Field (openingTag)
+ if m.OpeningTag != nil {
+ lengthInBits += (*m.OpeningTag).LengthInBits()
+ }
+
+ // Manual Array Field (data)
+ data := m.Data
+ lengthInBits += TagsLength(data) * 8
+
+ // Optional Field (closingTag)
+ if m.ClosingTag != nil {
+ lengthInBits += (*m.ClosingTag).LengthInBits()
+ }
+
+ return lengthInBits
+}
+
+func (m *BACnetConstructedData) LengthInBytes() uint16 {
+ return m.LengthInBits() / 8
+}
+
+func BACnetConstructedDataParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, identifier BACnetPropertyIdentifier) (*BACnetConstructedData, error) {
+ if pullErr := readBuffer.PullContext("BACnetConstructedData"); pullErr != nil {
+ return nil, pullErr
+ }
+
+ // Optional Field (openingTag) (Can be skipped, if a given expression evaluates to false)
+ var openingTag *BACnetContextTag = nil
+ {
+ currentPos := readBuffer.GetPos()
+ if pullErr := readBuffer.PullContext("openingTag"); pullErr != nil {
+ return nil, pullErr
+ }
+ _val, _err := BACnetContextTagParse(readBuffer, tagNumberArgument, BACnetDataType_NULL)
+ switch {
+ case _err != nil && _err != utils.ParseAssertError:
+ return nil, errors.Wrap(_err, "Error parsing 'openingTag' field")
+ case _err == utils.ParseAssertError:
+ readBuffer.SetPos(currentPos)
+ default:
+ openingTag = CastBACnetContextTag(_val)
+ if closeErr := readBuffer.CloseContext("openingTag"); closeErr != nil {
+ return nil, closeErr
+ }
+ }
+ }
+ if pullErr := readBuffer.PullContext("data", utils.WithRenderAsList(true)); pullErr != nil {
+ return nil, pullErr
+ }
+ // Manual Array Field (data)
+ // Terminated array
+ _dataList := make([]*BACnetTag, 0)
+ for !((bool)(OpeningClosingTerminate(readBuffer, (openingTag)))) {
+ _dataList = append(_dataList, ((*BACnetTag)(ParseTags(readBuffer))))
+
+ }
+ data := _dataList
+ if closeErr := readBuffer.CloseContext("data", utils.WithRenderAsList(true)); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Optional Field (closingTag) (Can be skipped, if a given expression evaluates to false)
+ var closingTag *BACnetContextTag = nil
+ {
+ currentPos := readBuffer.GetPos()
+ if pullErr := readBuffer.PullContext("closingTag"); pullErr != nil {
+ return nil, pullErr
+ }
+ _val, _err := BACnetContextTagParse(readBuffer, tagNumberArgument, BACnetDataType_NULL)
+ switch {
+ case _err != nil && _err != utils.ParseAssertError:
+ return nil, errors.Wrap(_err, "Error parsing 'closingTag' field")
+ case _err == utils.ParseAssertError:
+ readBuffer.SetPos(currentPos)
+ default:
+ closingTag = CastBACnetContextTag(_val)
+ if closeErr := readBuffer.CloseContext("closingTag"); closeErr != nil {
+ return nil, closeErr
+ }
+ }
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetConstructedData"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create the instance
+ return NewBACnetConstructedData(openingTag, data, closingTag), nil
+}
+
+func (m *BACnetConstructedData) Serialize(writeBuffer utils.WriteBuffer) error {
+ if pushErr := writeBuffer.PushContext("BACnetConstructedData"); pushErr != nil {
+ return pushErr
+ }
+
+ // Optional Field (openingTag) (Can be skipped, if the value is null)
+ var openingTag *BACnetContextTag = nil
+ if m.OpeningTag != nil {
+ if pushErr := writeBuffer.PushContext("openingTag"); pushErr != nil {
+ return pushErr
+ }
+ openingTag = m.OpeningTag
+ _openingTagErr := openingTag.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("openingTag"); popErr != nil {
+ return popErr
+ }
+ if _openingTagErr != nil {
+ return errors.Wrap(_openingTagErr, "Error serializing 'openingTag' field")
+ }
+ }
+
+ // Manual Array Field (data)
+ if m.Data != nil {
+ if pushErr := writeBuffer.PushContext("data", utils.WithRenderAsList(true)); pushErr != nil {
+ return pushErr
+ }
+ for _, m := range m.Data {
+ WriteTags(writeBuffer, m)
+ }
+ if popErr := writeBuffer.PopContext("data", utils.WithRenderAsList(true)); popErr != nil {
+ return popErr
+ }
+ }
+
+ // Optional Field (closingTag) (Can be skipped, if the value is null)
+ var closingTag *BACnetContextTag = nil
+ if m.ClosingTag != nil {
+ if pushErr := writeBuffer.PushContext("closingTag"); pushErr != nil {
+ return pushErr
+ }
+ closingTag = m.ClosingTag
+ _closingTagErr := closingTag.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("closingTag"); popErr != nil {
+ return popErr
+ }
+ if _closingTagErr != nil {
+ return errors.Wrap(_closingTagErr, "Error serializing 'closingTag' field")
+ }
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetConstructedData"); popErr != nil {
+ return popErr
+ }
+ return nil
+}
+
+func (m *BACnetConstructedData) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ m.Serialize(buffer)
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTag.go
index 5d6594e..2cdaf78 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTag.go
@@ -215,7 +215,7 @@ func BACnetContextTagParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8,
case dataType == BACnetDataType_NULL: // BACnetContextTagNull
_parent, typeSwitchError = BACnetContextTagNullParse(readBuffer, tagNumberArgument, dataType)
case dataType == BACnetDataType_BOOLEAN: // BACnetContextTagBoolean
- _parent, typeSwitchError = BACnetContextTagBooleanParse(readBuffer, tagNumberArgument, dataType, actualLength)
+ _parent, typeSwitchError = BACnetContextTagBooleanParse(readBuffer, tagNumberArgument, dataType)
case dataType == BACnetDataType_UNSIGNED_INTEGER: // BACnetContextTagUnsignedInteger
_parent, typeSwitchError = BACnetContextTagUnsignedIntegerParse(readBuffer, tagNumberArgument, dataType, actualLength)
case dataType == BACnetDataType_SIGNED_INTEGER: // BACnetContextTagSignedInteger
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBoolean.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBoolean.go
index 4fe6594..0424cd8 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBoolean.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagBoolean.go
@@ -29,7 +29,7 @@ import (
// The data-structure of this message
type BACnetContextTagBoolean struct {
*BACnetContextTag
- Value bool
+ Value uint8
IsTrue bool
IsFalse bool
}
@@ -58,8 +58,9 @@ func (m *BACnetContextTagBoolean) InitializeParent(parent *BACnetContextTag, tag
m.ExtExtExtLength = extExtExtLength
}
-func NewBACnetContextTagBoolean(tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
+func NewBACnetContextTagBoolean(value uint8, tagNumber uint8, tagClass TagClass, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetContextTag {
child := &BACnetContextTagBoolean{
+ Value: value,
BACnetContextTag: NewBACnetContextTag(tagNumber, tagClass, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
}
child.Child = child
@@ -96,7 +97,8 @@ func (m *BACnetContextTagBoolean) LengthInBits() uint16 {
func (m *BACnetContextTagBoolean) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
- // A virtual field doesn't have any in- or output.
+ // Simple field (value)
+ lengthInBits += 8
// A virtual field doesn't have any in- or output.
@@ -109,21 +111,24 @@ func (m *BACnetContextTagBoolean) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetContextTagBooleanParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType, actualLength uint32) (*BACnetContextTag, error) {
+func BACnetContextTagBooleanParse(readBuffer utils.ReadBuffer, tagNumberArgument uint8, dataType BACnetDataType) (*BACnetContextTag, error) {
if pullErr := readBuffer.PullContext("BACnetContextTagBoolean"); pullErr != nil {
return nil, pullErr
}
- // Virtual field
- _value := bool((actualLength) == (1))
- value := bool(_value)
+ // Simple Field (value)
+ _value, _valueErr := readBuffer.ReadUint8("value", 8)
+ if _valueErr != nil {
+ return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
+ }
+ value := _value
// Virtual field
- _isTrue := value
+ _isTrue := bool((value) == (1))
isTrue := bool(_isTrue)
// Virtual field
- _isFalse := !(value)
+ _isFalse := bool((value) == (0))
isFalse := bool(_isFalse)
if closeErr := readBuffer.CloseContext("BACnetContextTagBoolean"); closeErr != nil {
@@ -146,8 +151,11 @@ func (m *BACnetContextTagBoolean) Serialize(writeBuffer utils.WriteBuffer) error
if pushErr := writeBuffer.PushContext("BACnetContextTagBoolean"); pushErr != nil {
return pushErr
}
- // Virtual field
- if _valueErr := writeBuffer.WriteVirtual("value", m.Value); _valueErr != nil {
+
+ // Simple Field (value)
+ value := uint8(m.Value)
+ _valueErr := writeBuffer.WriteUint8("value", 8, (value))
+ if _valueErr != nil {
return errors.Wrap(_valueErr, "Error serializing 'value' field")
}
// Virtual field
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagWithoutContext.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagWithoutContext.go
index 4941401..8caafa3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagWithoutContext.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetContextTagWithoutContext.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
// The data-structure of this message
type BACnetContextTagWithoutContext struct {
*BACnetTag
+ Data []int8
}
// The corresponding interface
@@ -44,7 +46,7 @@ func (m *BACnetContextTagWithoutContext) TagClass() TagClass {
return TagClass_CONTEXT_SPECIFIC_TAGS
}
-func (m *BACnetContextTagWithoutContext) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
+func (m *BACnetContextTagWithoutContext) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32) {
m.TagNumber = tagNumber
m.LengthValueType = lengthValueType
m.ExtTagNumber = extTagNumber
@@ -53,8 +55,9 @@ func (m *BACnetContextTagWithoutContext) InitializeParent(parent *BACnetTag, tag
m.ExtExtExtLength = extExtExtLength
}
-func NewBACnetContextTagWithoutContext(tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetTag {
+func NewBACnetContextTagWithoutContext(data []int8, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetTag {
child := &BACnetContextTagWithoutContext{
+ Data: data,
BACnetTag: NewBACnetTag(tagNumber, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
}
child.Child = child
@@ -91,6 +94,11 @@ func (m *BACnetContextTagWithoutContext) LengthInBits() uint16 {
func (m *BACnetContextTagWithoutContext) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
+ // Array field
+ if len(m.Data) > 0 {
+ lengthInBits += 8 * uint16(len(m.Data))
+ }
+
return lengthInBits
}
@@ -98,17 +106,39 @@ func (m *BACnetContextTagWithoutContext) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetContextTagWithoutContextParse(readBuffer utils.ReadBuffer) (*BACnetTag, error) {
+func BACnetContextTagWithoutContextParse(readBuffer utils.ReadBuffer, actualLength uint32) (*BACnetTag, error) {
if pullErr := readBuffer.PullContext("BACnetContextTagWithoutContext"); pullErr != nil {
return nil, pullErr
}
+ // Array field (data)
+ if pullErr := readBuffer.PullContext("data", utils.WithRenderAsList(true)); pullErr != nil {
+ return nil, pullErr
+ }
+ // Length array
+ data := make([]int8, 0)
+ {
+ _dataLength := actualLength
+ _dataEndPos := readBuffer.GetPos() + uint16(_dataLength)
+ for readBuffer.GetPos() < _dataEndPos {
+ _item, _err := readBuffer.ReadInt8("", 8)
+ if _err != nil {
+ return nil, errors.Wrap(_err, "Error parsing 'data' field")
+ }
+ data = append(data, _item)
+ }
+ }
+ if closeErr := readBuffer.CloseContext("data", utils.WithRenderAsList(true)); closeErr != nil {
+ return nil, closeErr
+ }
+
if closeErr := readBuffer.CloseContext("BACnetContextTagWithoutContext"); closeErr != nil {
return nil, closeErr
}
// Create a partially initialized instance
_child := &BACnetContextTagWithoutContext{
+ Data: data,
BACnetTag: &BACnetTag{},
}
_child.BACnetTag.Child = _child
@@ -121,6 +151,22 @@ func (m *BACnetContextTagWithoutContext) Serialize(writeBuffer utils.WriteBuffer
return pushErr
}
+ // Array Field (data)
+ if m.Data != nil {
+ if pushErr := writeBuffer.PushContext("data", utils.WithRenderAsList(true)); pushErr != nil {
+ return pushErr
+ }
+ for _, _element := range m.Data {
+ _elementErr := writeBuffer.WriteInt8("", 8, _element)
+ if _elementErr != nil {
+ return errors.Wrap(_elementErr, "Error serializing 'data' field")
+ }
+ }
+ if popErr := writeBuffer.PopContext("data", utils.WithRenderAsList(true)); popErr != nil {
+ return popErr
+ }
+ }
+
if popErr := writeBuffer.PopContext("BACnetContextTagWithoutContext"); popErr != nil {
return popErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValue.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValue.go
index d075eb2..848408d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValue.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValue.go
@@ -20,17 +20,12 @@
package model
import (
- "fmt"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
"github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
-// Constant values.
-const BACnetPropertyValue_OPENINGTAG uint8 = 0x3E
-const BACnetPropertyValue_CLOSINGTAG uint8 = 0x3F
-
// The data-structure of this message
type BACnetPropertyValue struct {
Child IBACnetPropertyValueChild
@@ -88,12 +83,6 @@ func (m *BACnetPropertyValue) LengthInBitsConditional(lastItem bool) uint16 {
func (m *BACnetPropertyValue) ParentLengthInBits() uint16 {
lengthInBits := uint16(0)
- // Const Field (openingTag)
- lengthInBits += 8
-
- // Const Field (closingTag)
- lengthInBits += 8
-
return lengthInBits
}
@@ -101,32 +90,23 @@ func (m *BACnetPropertyValue) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetPropertyValueParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier) (*BACnetPropertyValue, error) {
+func BACnetPropertyValueParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier, actualLength uint32) (*BACnetPropertyValue, error) {
if pullErr := readBuffer.PullContext("BACnetPropertyValue"); pullErr != nil {
return nil, pullErr
}
- // Const Field (openingTag)
- openingTag, _openingTagErr := readBuffer.ReadUint8("openingTag", 8)
- if _openingTagErr != nil {
- return nil, errors.Wrap(_openingTagErr, "Error parsing 'openingTag' field")
- }
- if openingTag != BACnetPropertyValue_OPENINGTAG {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetPropertyValue_OPENINGTAG) + " but got " + fmt.Sprintf("%d", openingTag))
- }
-
// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
var _parent *BACnetPropertyValue
var typeSwitchError error
switch {
case identifier == BACnetPropertyIdentifier_OBJECT_TYPE: // BACnetPropertyValueObjectType
- _parent, typeSwitchError = BACnetPropertyValueObjectTypeParse(readBuffer, identifier)
+ _parent, typeSwitchError = BACnetPropertyValueObjectTypeParse(readBuffer, identifier, actualLength)
case identifier == BACnetPropertyIdentifier_PRIORITY_ARRAY: // BACnetPropertyValuePriorityValue
- _parent, typeSwitchError = BACnetPropertyValuePriorityValueParse(readBuffer, identifier)
+ _parent, typeSwitchError = BACnetPropertyValuePriorityValueParse(readBuffer, identifier, actualLength)
case identifier == BACnetPropertyIdentifier_PRESENT_VALUE: // BACnetPropertyValuePresentValue
- _parent, typeSwitchError = BACnetPropertyValuePresentValueParse(readBuffer, identifier)
+ _parent, typeSwitchError = BACnetPropertyValuePresentValueParse(readBuffer, identifier, actualLength)
case identifier == BACnetPropertyIdentifier_RELINQUISH_DEFAULT: // BACnetPropertyValueRelinquishDefault
- _parent, typeSwitchError = BACnetPropertyValueRelinquishDefaultParse(readBuffer, identifier)
+ _parent, typeSwitchError = BACnetPropertyValueRelinquishDefaultParse(readBuffer, identifier, actualLength)
default:
// TODO: return actual type
typeSwitchError = errors.New("Unmapped type")
@@ -135,15 +115,6 @@ func BACnetPropertyValueParse(readBuffer utils.ReadBuffer, identifier BACnetProp
return nil, errors.Wrap(typeSwitchError, "Error parsing sub-type for type-switch.")
}
- // Const Field (closingTag)
- closingTag, _closingTagErr := readBuffer.ReadUint8("closingTag", 8)
- if _closingTagErr != nil {
- return nil, errors.Wrap(_closingTagErr, "Error parsing 'closingTag' field")
- }
- if closingTag != BACnetPropertyValue_CLOSINGTAG {
- return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", BACnetPropertyValue_CLOSINGTAG) + " but got " + fmt.Sprintf("%d", closingTag))
- }
-
if closeErr := readBuffer.CloseContext("BACnetPropertyValue"); closeErr != nil {
return nil, closeErr
}
@@ -162,23 +133,11 @@ func (m *BACnetPropertyValue) SerializeParent(writeBuffer utils.WriteBuffer, chi
return pushErr
}
- // Const Field (openingTag)
- _openingTagErr := writeBuffer.WriteUint8("openingTag", 8, 0x3E)
- if _openingTagErr != nil {
- return errors.Wrap(_openingTagErr, "Error serializing 'openingTag' field")
- }
-
// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
if _typeSwitchErr := serializeChildFunction(); _typeSwitchErr != nil {
return errors.Wrap(_typeSwitchErr, "Error serializing sub-type field")
}
- // Const Field (closingTag)
- _closingTagErr := writeBuffer.WriteUint8("closingTag", 8, 0x3F)
- if _closingTagErr != nil {
- return errors.Wrap(_closingTagErr, "Error serializing 'closingTag' field")
- }
-
if popErr := writeBuffer.PopContext("BACnetPropertyValue"); popErr != nil {
return popErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueDefault.go
similarity index 54%
copy from plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
copy to plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueDefault.go
index 4ca12fe..474ba6c 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetApplicationTagEnumerated.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueDefault.go
@@ -27,13 +27,13 @@ import (
// Code generated by code-generation. DO NOT EDIT.
// The data-structure of this message
-type BACnetApplicationTagEnumerated struct {
- *BACnetTag
+type BACnetPropertyValueDefault struct {
+ *BACnetPropertyValue
Data []int8
}
// The corresponding interface
-type IBACnetApplicationTagEnumerated interface {
+type IBACnetPropertyValueDefault interface {
LengthInBytes() uint16
LengthInBits() uint16
Serialize(writeBuffer utils.WriteBuffer) error
@@ -42,56 +42,50 @@ type IBACnetApplicationTagEnumerated interface {
///////////////////////////////////////////////////////////
// Accessors for discriminator values.
///////////////////////////////////////////////////////////
-func (m *BACnetApplicationTagEnumerated) TagClass() TagClass {
- return TagClass_APPLICATION_TAGS
+func (m *BACnetPropertyValueDefault) Identifier() BACnetPropertyIdentifier {
+ return 0
}
-func (m *BACnetApplicationTagEnumerated) InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32) {
- m.TagNumber = tagNumber
- m.LengthValueType = lengthValueType
- m.ExtTagNumber = extTagNumber
- m.ExtLength = extLength
- m.ExtExtLength = extExtLength
- m.ExtExtExtLength = extExtExtLength
+func (m *BACnetPropertyValueDefault) InitializeParent(parent *BACnetPropertyValue) {
}
-func NewBACnetApplicationTagEnumerated(data []int8, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32) *BACnetTag {
- child := &BACnetApplicationTagEnumerated{
- Data: data,
- BACnetTag: NewBACnetTag(tagNumber, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength),
+func NewBACnetPropertyValueDefault(data []int8) *BACnetPropertyValue {
+ child := &BACnetPropertyValueDefault{
+ Data: data,
+ BACnetPropertyValue: NewBACnetPropertyValue(),
}
child.Child = child
- return child.BACnetTag
+ return child.BACnetPropertyValue
}
-func CastBACnetApplicationTagEnumerated(structType interface{}) *BACnetApplicationTagEnumerated {
- castFunc := func(typ interface{}) *BACnetApplicationTagEnumerated {
- if casted, ok := typ.(BACnetApplicationTagEnumerated); ok {
+func CastBACnetPropertyValueDefault(structType interface{}) *BACnetPropertyValueDefault {
+ castFunc := func(typ interface{}) *BACnetPropertyValueDefault {
+ if casted, ok := typ.(BACnetPropertyValueDefault); ok {
return &casted
}
- if casted, ok := typ.(*BACnetApplicationTagEnumerated); ok {
+ if casted, ok := typ.(*BACnetPropertyValueDefault); ok {
return casted
}
- if casted, ok := typ.(BACnetTag); ok {
- return CastBACnetApplicationTagEnumerated(casted.Child)
+ if casted, ok := typ.(BACnetPropertyValue); ok {
+ return CastBACnetPropertyValueDefault(casted.Child)
}
- if casted, ok := typ.(*BACnetTag); ok {
- return CastBACnetApplicationTagEnumerated(casted.Child)
+ if casted, ok := typ.(*BACnetPropertyValue); ok {
+ return CastBACnetPropertyValueDefault(casted.Child)
}
return nil
}
return castFunc(structType)
}
-func (m *BACnetApplicationTagEnumerated) GetTypeName() string {
- return "BACnetApplicationTagEnumerated"
+func (m *BACnetPropertyValueDefault) GetTypeName() string {
+ return "BACnetPropertyValueDefault"
}
-func (m *BACnetApplicationTagEnumerated) LengthInBits() uint16 {
+func (m *BACnetPropertyValueDefault) LengthInBits() uint16 {
return m.LengthInBitsConditional(false)
}
-func (m *BACnetApplicationTagEnumerated) LengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetPropertyValueDefault) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
// Array field
@@ -102,12 +96,12 @@ func (m *BACnetApplicationTagEnumerated) LengthInBitsConditional(lastItem bool)
return lengthInBits
}
-func (m *BACnetApplicationTagEnumerated) LengthInBytes() uint16 {
+func (m *BACnetPropertyValueDefault) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetApplicationTagEnumeratedParse(readBuffer utils.ReadBuffer, actualLength uint32) (*BACnetTag, error) {
- if pullErr := readBuffer.PullContext("BACnetApplicationTagEnumerated"); pullErr != nil {
+func BACnetPropertyValueDefaultParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier, actualLength uint32) (*BACnetPropertyValue, error) {
+ if pullErr := readBuffer.PullContext("BACnetPropertyValueDefault"); pullErr != nil {
return nil, pullErr
}
@@ -132,22 +126,22 @@ func BACnetApplicationTagEnumeratedParse(readBuffer utils.ReadBuffer, actualLeng
return nil, closeErr
}
- if closeErr := readBuffer.CloseContext("BACnetApplicationTagEnumerated"); closeErr != nil {
+ if closeErr := readBuffer.CloseContext("BACnetPropertyValueDefault"); closeErr != nil {
return nil, closeErr
}
// Create a partially initialized instance
- _child := &BACnetApplicationTagEnumerated{
- Data: data,
- BACnetTag: &BACnetTag{},
+ _child := &BACnetPropertyValueDefault{
+ Data: data,
+ BACnetPropertyValue: &BACnetPropertyValue{},
}
- _child.BACnetTag.Child = _child
- return _child.BACnetTag, nil
+ _child.BACnetPropertyValue.Child = _child
+ return _child.BACnetPropertyValue, nil
}
-func (m *BACnetApplicationTagEnumerated) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetPropertyValueDefault) Serialize(writeBuffer utils.WriteBuffer) error {
ser := func() error {
- if pushErr := writeBuffer.PushContext("BACnetApplicationTagEnumerated"); pushErr != nil {
+ if pushErr := writeBuffer.PushContext("BACnetPropertyValueDefault"); pushErr != nil {
return pushErr
}
@@ -167,7 +161,7 @@ func (m *BACnetApplicationTagEnumerated) Serialize(writeBuffer utils.WriteBuffer
}
}
- if popErr := writeBuffer.PopContext("BACnetApplicationTagEnumerated"); popErr != nil {
+ if popErr := writeBuffer.PopContext("BACnetPropertyValueDefault"); popErr != nil {
return popErr
}
return nil
@@ -175,7 +169,7 @@ func (m *BACnetApplicationTagEnumerated) Serialize(writeBuffer utils.WriteBuffer
return m.SerializeParent(writeBuffer, m, ser)
}
-func (m *BACnetApplicationTagEnumerated) String() string {
+func (m *BACnetPropertyValueDefault) String() string {
if m == nil {
return "<nil>"
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueObjectType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueObjectType.go
index 3f8915c..7b0f744 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueObjectType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueObjectType.go
@@ -98,7 +98,7 @@ func (m *BACnetPropertyValueObjectType) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetPropertyValueObjectTypeParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier) (*BACnetPropertyValue, error) {
+func BACnetPropertyValueObjectTypeParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier, actualLength uint32) (*BACnetPropertyValue, error) {
if pullErr := readBuffer.PullContext("BACnetPropertyValueObjectType"); pullErr != nil {
return nil, pullErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePresentValue.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePresentValue.go
index 76cd03a..203e5f5 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePresentValue.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePresentValue.go
@@ -98,7 +98,7 @@ func (m *BACnetPropertyValuePresentValue) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetPropertyValuePresentValueParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier) (*BACnetPropertyValue, error) {
+func BACnetPropertyValuePresentValueParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier, actualLength uint32) (*BACnetPropertyValue, error) {
if pullErr := readBuffer.PullContext("BACnetPropertyValuePresentValue"); pullErr != nil {
return nil, pullErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePriorityValue.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePriorityValue.go
index 08f5d89..9cecd3a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePriorityValue.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValuePriorityValue.go
@@ -100,7 +100,7 @@ func (m *BACnetPropertyValuePriorityValue) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetPropertyValuePriorityValueParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier) (*BACnetPropertyValue, error) {
+func BACnetPropertyValuePriorityValueParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier, actualLength uint32) (*BACnetPropertyValue, error) {
if pullErr := readBuffer.PullContext("BACnetPropertyValuePriorityValue"); pullErr != nil {
return nil, pullErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueRelinquishDefault.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueRelinquishDefault.go
index d56c675..0444c01 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueRelinquishDefault.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetPropertyValueRelinquishDefault.go
@@ -98,7 +98,7 @@ func (m *BACnetPropertyValueRelinquishDefault) LengthInBytes() uint16 {
return m.LengthInBits() / 8
}
-func BACnetPropertyValueRelinquishDefaultParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier) (*BACnetPropertyValue, error) {
+func BACnetPropertyValueRelinquishDefaultParse(readBuffer utils.ReadBuffer, identifier BACnetPropertyIdentifier, actualLength uint32) (*BACnetPropertyValue, error) {
if pullErr := readBuffer.PullContext("BACnetPropertyValueRelinquishDefault"); pullErr != nil {
return nil, pullErr
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
index 28bbb04..1b0d090 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
@@ -32,7 +32,7 @@ type BACnetServiceAckReadProperty struct {
ObjectIdentifier *BACnetContextTagObjectIdentifier
PropertyIdentifier *BACnetContextTagPropertyIdentifier
ArrayIndex *uint32
- EnclosedTags *EnclosedTags
+ ConstructedData *BACnetConstructedData
}
// The corresponding interface
@@ -52,12 +52,12 @@ func (m *BACnetServiceAckReadProperty) ServiceChoice() uint8 {
func (m *BACnetServiceAckReadProperty) InitializeParent(parent *BACnetServiceAck) {
}
-func NewBACnetServiceAckReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *uint32, enclosedTags *EnclosedTags) *BACnetServiceAck {
+func NewBACnetServiceAckReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetContextTagPropertyIdentifier, arrayIndex *uint32, constructedData *BACnetConstructedData) *BACnetServiceAck {
child := &BACnetServiceAckReadProperty{
ObjectIdentifier: objectIdentifier,
PropertyIdentifier: propertyIdentifier,
ArrayIndex: arrayIndex,
- EnclosedTags: enclosedTags,
+ ConstructedData: constructedData,
BACnetServiceAck: NewBACnetServiceAck(),
}
child.Child = child
@@ -105,9 +105,9 @@ func (m *BACnetServiceAckReadProperty) LengthInBitsConditional(lastItem bool) ui
lengthInBits += 32
}
- // Optional Field (enclosedTags)
- if m.EnclosedTags != nil {
- lengthInBits += (*m.EnclosedTags).LengthInBits()
+ // Optional Field (constructedData)
+ if m.ConstructedData != nil {
+ lengthInBits += (*m.ConstructedData).LengthInBits()
}
return lengthInBits
@@ -158,22 +158,22 @@ func BACnetServiceAckReadPropertyParse(readBuffer utils.ReadBuffer) (*BACnetServ
arrayIndex = &_val
}
- // Optional Field (enclosedTags) (Can be skipped, if a given expression evaluates to false)
- var enclosedTags *EnclosedTags = nil
+ // Optional Field (constructedData) (Can be skipped, if a given expression evaluates to false)
+ var constructedData *BACnetConstructedData = nil
{
currentPos := readBuffer.GetPos()
- if pullErr := readBuffer.PullContext("enclosedTags"); pullErr != nil {
+ if pullErr := readBuffer.PullContext("constructedData"); pullErr != nil {
return nil, pullErr
}
- _val, _err := EnclosedTagsParse(readBuffer, uint8(3), uint8(7))
+ _val, _err := BACnetConstructedDataParse(readBuffer, uint8(3), propertyIdentifier.Value)
switch {
case _err != nil && _err != utils.ParseAssertError:
- return nil, errors.Wrap(_err, "Error parsing 'enclosedTags' field")
+ return nil, errors.Wrap(_err, "Error parsing 'constructedData' field")
case _err == utils.ParseAssertError:
readBuffer.SetPos(currentPos)
default:
- enclosedTags = CastEnclosedTags(_val)
- if closeErr := readBuffer.CloseContext("enclosedTags"); closeErr != nil {
+ constructedData = CastBACnetConstructedData(_val)
+ if closeErr := readBuffer.CloseContext("constructedData"); closeErr != nil {
return nil, closeErr
}
}
@@ -188,7 +188,7 @@ func BACnetServiceAckReadPropertyParse(readBuffer utils.ReadBuffer) (*BACnetServ
ObjectIdentifier: CastBACnetContextTagObjectIdentifier(objectIdentifier),
PropertyIdentifier: CastBACnetContextTagPropertyIdentifier(propertyIdentifier),
ArrayIndex: arrayIndex,
- EnclosedTags: CastEnclosedTags(enclosedTags),
+ ConstructedData: CastBACnetConstructedData(constructedData),
BACnetServiceAck: &BACnetServiceAck{},
}
_child.BACnetServiceAck.Child = _child
@@ -235,19 +235,19 @@ func (m *BACnetServiceAckReadProperty) Serialize(writeBuffer utils.WriteBuffer)
}
}
- // Optional Field (enclosedTags) (Can be skipped, if the value is null)
- var enclosedTags *EnclosedTags = nil
- if m.EnclosedTags != nil {
- if pushErr := writeBuffer.PushContext("enclosedTags"); pushErr != nil {
+ // Optional Field (constructedData) (Can be skipped, if the value is null)
+ var constructedData *BACnetConstructedData = nil
+ if m.ConstructedData != nil {
+ if pushErr := writeBuffer.PushContext("constructedData"); pushErr != nil {
return pushErr
}
- enclosedTags = m.EnclosedTags
- _enclosedTagsErr := enclosedTags.Serialize(writeBuffer)
- if popErr := writeBuffer.PopContext("enclosedTags"); popErr != nil {
+ constructedData = m.ConstructedData
+ _constructedDataErr := constructedData.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("constructedData"); popErr != nil {
return popErr
}
- if _enclosedTagsErr != nil {
- return errors.Wrap(_enclosedTagsErr, "Error serializing 'enclosedTags' field")
+ if _constructedDataErr != nil {
+ return errors.Wrap(_constructedDataErr, "Error serializing 'constructedData' field")
}
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
index 3d5773b..aef25b3 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
@@ -35,6 +35,8 @@ type BACnetTag struct {
ExtExtLength *uint16
ExtExtExtLength *uint32
ActualTagNumber uint8
+ IsBoolean bool
+ IsConstructed bool
IsPrimitiveAndNotBoolean bool
ActualLength uint32
Child IBACnetTagChild
@@ -55,7 +57,7 @@ type IBACnetTagParent interface {
type IBACnetTagChild interface {
Serialize(writeBuffer utils.WriteBuffer) error
- InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isPrimitiveAndNotBoolean bool, actualLength uint32)
+ InitializeParent(parent *BACnetTag, tagNumber uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, extExtLength *uint16, extExtExtLength *uint32, actualTagNumber uint8, isBoolean bool, isConstructed bool, isPrimitiveAndNotBoolean bool, actualLength uint32)
GetTypeName() string
IBACnetTag
}
@@ -109,6 +111,10 @@ func (m *BACnetTag) ParentLengthInBits() uint16 {
// A virtual field doesn't have any in- or output.
+ // A virtual field doesn't have any in- or output.
+
+ // A virtual field doesn't have any in- or output.
+
// Optional Field (extLength)
if m.ExtLength != nil {
lengthInBits += 8
@@ -174,7 +180,15 @@ func BACnetTagParse(readBuffer utils.ReadBuffer) (*BACnetTag, error) {
actualTagNumber := uint8(_actualTagNumber)
// Virtual field
- _isPrimitiveAndNotBoolean := bool(!(bool(bool(bool((tagClass) == (TagClass_CONTEXT_SPECIFIC_TAGS))) && bool(bool((lengthValueType) == (6)))))) && bool(bool((tagNumber) != (1)))
+ _isBoolean := bool(bool((tagNumber) == (1))) && bool(bool((tagClass) == (TagClass_APPLICATION_TAGS)))
+ isBoolean := bool(_isBoolean)
+
+ // Virtual field
+ _isConstructed := bool(bool((tagClass) == (TagClass_CONTEXT_SPECIFIC_TAGS))) && bool(bool((lengthValueType) == (6)))
+ isConstructed := bool(_isConstructed)
+
+ // Virtual field
+ _isPrimitiveAndNotBoolean := bool(!(isConstructed)) && bool(!(isBoolean))
isPrimitiveAndNotBoolean := bool(_isPrimitiveAndNotBoolean)
// Optional Field (extLength) (Can be skipped, if a given expression evaluates to false)
@@ -248,7 +262,7 @@ func BACnetTagParse(readBuffer utils.ReadBuffer) (*BACnetTag, error) {
case tagClass == TagClass_APPLICATION_TAGS && tagNumber == 0xC: // BACnetApplicationTagObjectIdentifier
_parent, typeSwitchError = BACnetApplicationTagObjectIdentifierParse(readBuffer)
case tagClass == TagClass_CONTEXT_SPECIFIC_TAGS: // BACnetContextTagWithoutContext
- _parent, typeSwitchError = BACnetContextTagWithoutContextParse(readBuffer)
+ _parent, typeSwitchError = BACnetContextTagWithoutContextParse(readBuffer, actualLength)
default:
// TODO: return actual type
typeSwitchError = errors.New("Unmapped type")
@@ -262,7 +276,7 @@ func BACnetTagParse(readBuffer utils.ReadBuffer) (*BACnetTag, error) {
}
// Finish initializing
- _parent.Child.InitializeParent(_parent, tagNumber, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength, actualTagNumber, isPrimitiveAndNotBoolean, actualLength)
+ _parent.Child.InitializeParent(_parent, tagNumber, lengthValueType, extTagNumber, extLength, extExtLength, extExtExtLength, actualTagNumber, isBoolean, isConstructed, isPrimitiveAndNotBoolean, actualLength)
return _parent, nil
}
@@ -311,6 +325,14 @@ func (m *BACnetTag) SerializeParent(writeBuffer utils.WriteBuffer, child IBACnet
return errors.Wrap(_actualTagNumberErr, "Error serializing 'actualTagNumber' field")
}
// Virtual field
+ if _isBooleanErr := writeBuffer.WriteVirtual("isBoolean", m.IsBoolean); _isBooleanErr != nil {
+ return errors.Wrap(_isBooleanErr, "Error serializing 'isBoolean' field")
+ }
+ // Virtual field
+ if _isConstructedErr := writeBuffer.WriteVirtual("isConstructed", m.IsConstructed); _isConstructedErr != nil {
+ return errors.Wrap(_isConstructedErr, "Error serializing 'isConstructed' field")
+ }
+ // Virtual field
if _isPrimitiveAndNotBooleanErr := writeBuffer.WriteVirtual("isPrimitiveAndNotBoolean", m.IsPrimitiveAndNotBoolean); _isPrimitiveAndNotBooleanErr != nil {
return errors.Wrap(_isPrimitiveAndNotBooleanErr, "Error serializing 'isPrimitiveAndNotBoolean' field")
}
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
index c2ad3a2..1c32b98 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
@@ -21,6 +21,7 @@ package model
import (
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
)
// Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,11 @@ import (
// The data-structure of this message
type BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification struct {
*BACnetUnconfirmedServiceRequest
+ SubscriberProcessIdentifier *BACnetContextTagUnsignedInteger
+ MonitoredDeviceIdentifier *BACnetContextTagObjectIdentifier
+ MonitoredObjectIdentifier *BACnetContextTagObjectIdentifier
+ Lifetime *BACnetContextTagUnsignedInteger
+ ListOfValues *BACnetConstructedData
}
// The corresponding interface
@@ -47,8 +53,13 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) ServiceChoic
func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) InitializeParent(parent *BACnetUnconfirmedServiceRequest) {
}
-func NewBACnetUnconfirmedServiceRequestUnconfirmedCOVNotification() *BACnetUnconfirmedServiceRequest {
+func NewBACnetUnconfirmedServiceRequestUnconfirmedCOVNotification(subscriberProcessIdentifier *BACnetContextTagUnsignedInteger, monitoredDeviceIdentifier *BACnetContextTagObjectIdentifier, monitoredObjectIdentifier *BACnetContextTagObjectIdentifier, lifetime *BACnetContextTagUnsignedInteger, listOfValues *BACnetConstructedData) *BACnetUnconfirmedServiceRequest {
child := &BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification{
+ SubscriberProcessIdentifier: subscriberProcessIdentifier,
+ MonitoredDeviceIdentifier: monitoredDeviceIdentifier,
+ MonitoredObjectIdentifier: monitoredObjectIdentifier,
+ Lifetime: lifetime,
+ ListOfValues: listOfValues,
BACnetUnconfirmedServiceRequest: NewBACnetUnconfirmedServiceRequest(),
}
child.Child = child
@@ -85,6 +96,23 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) LengthInBits
func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) LengthInBitsConditional(lastItem bool) uint16 {
lengthInBits := uint16(m.ParentLengthInBits())
+ // Simple field (subscriberProcessIdentifier)
+ lengthInBits += m.SubscriberProcessIdentifier.LengthInBits()
+
+ // Simple field (monitoredDeviceIdentifier)
+ lengthInBits += m.MonitoredDeviceIdentifier.LengthInBits()
+
+ // Simple field (monitoredObjectIdentifier)
+ lengthInBits += m.MonitoredObjectIdentifier.LengthInBits()
+
+ // Simple field (lifetime)
+ lengthInBits += m.Lifetime.LengthInBits()
+
+ // Optional Field (listOfValues)
+ if m.ListOfValues != nil {
+ lengthInBits += (*m.ListOfValues).LengthInBits()
+ }
+
return lengthInBits
}
@@ -97,12 +125,90 @@ func BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationParse(readBuffer u
return nil, pullErr
}
+ // Simple Field (subscriberProcessIdentifier)
+ if pullErr := readBuffer.PullContext("subscriberProcessIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _subscriberProcessIdentifier, _subscriberProcessIdentifierErr := BACnetContextTagParse(readBuffer, uint8(0), BACnetDataType_UNSIGNED_INTEGER)
+ if _subscriberProcessIdentifierErr != nil {
+ return nil, errors.Wrap(_subscriberProcessIdentifierErr, "Error parsing 'subscriberProcessIdentifier' field")
+ }
+ subscriberProcessIdentifier := CastBACnetContextTagUnsignedInteger(_subscriberProcessIdentifier)
+ if closeErr := readBuffer.CloseContext("subscriberProcessIdentifier"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (monitoredDeviceIdentifier)
+ if pullErr := readBuffer.PullContext("monitoredDeviceIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _monitoredDeviceIdentifier, _monitoredDeviceIdentifierErr := BACnetContextTagParse(readBuffer, uint8(1), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+ if _monitoredDeviceIdentifierErr != nil {
+ return nil, errors.Wrap(_monitoredDeviceIdentifierErr, "Error parsing 'monitoredDeviceIdentifier' field")
+ }
+ monitoredDeviceIdentifier := CastBACnetContextTagObjectIdentifier(_monitoredDeviceIdentifier)
+ if closeErr := readBuffer.CloseContext("monitoredDeviceIdentifier"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (monitoredObjectIdentifier)
+ if pullErr := readBuffer.PullContext("monitoredObjectIdentifier"); pullErr != nil {
+ return nil, pullErr
+ }
+ _monitoredObjectIdentifier, _monitoredObjectIdentifierErr := BACnetContextTagParse(readBuffer, uint8(2), BACnetDataType_BACNET_OBJECT_IDENTIFIER)
+ if _monitoredObjectIdentifierErr != nil {
+ return nil, errors.Wrap(_monitoredObjectIdentifierErr, "Error parsing 'monitoredObjectIdentifier' field")
+ }
+ monitoredObjectIdentifier := CastBACnetContextTagObjectIdentifier(_monitoredObjectIdentifier)
+ if closeErr := readBuffer.CloseContext("monitoredObjectIdentifier"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (lifetime)
+ if pullErr := readBuffer.PullContext("lifetime"); pullErr != nil {
+ return nil, pullErr
+ }
+ _lifetime, _lifetimeErr := BACnetContextTagParse(readBuffer, uint8(3), BACnetDataType_UNSIGNED_INTEGER)
+ if _lifetimeErr != nil {
+ return nil, errors.Wrap(_lifetimeErr, "Error parsing 'lifetime' field")
+ }
+ lifetime := CastBACnetContextTagUnsignedInteger(_lifetime)
+ if closeErr := readBuffer.CloseContext("lifetime"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Optional Field (listOfValues) (Can be skipped, if a given expression evaluates to false)
+ var listOfValues *BACnetConstructedData = nil
+ {
+ currentPos := readBuffer.GetPos()
+ if pullErr := readBuffer.PullContext("listOfValues"); pullErr != nil {
+ return nil, pullErr
+ }
+ _val, _err := BACnetConstructedDataParse(readBuffer, uint8(4), BACnetPropertyIdentifier_ALL)
+ switch {
+ case _err != nil && _err != utils.ParseAssertError:
+ return nil, errors.Wrap(_err, "Error parsing 'listOfValues' field")
+ case _err == utils.ParseAssertError:
+ readBuffer.SetPos(currentPos)
+ default:
+ listOfValues = CastBACnetConstructedData(_val)
+ if closeErr := readBuffer.CloseContext("listOfValues"); closeErr != nil {
+ return nil, closeErr
+ }
+ }
+ }
+
if closeErr := readBuffer.CloseContext("BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification"); closeErr != nil {
return nil, closeErr
}
// Create a partially initialized instance
_child := &BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification{
+ SubscriberProcessIdentifier: CastBACnetContextTagUnsignedInteger(subscriberProcessIdentifier),
+ MonitoredDeviceIdentifier: CastBACnetContextTagObjectIdentifier(monitoredDeviceIdentifier),
+ MonitoredObjectIdentifier: CastBACnetContextTagObjectIdentifier(monitoredObjectIdentifier),
+ Lifetime: CastBACnetContextTagUnsignedInteger(lifetime),
+ ListOfValues: CastBACnetConstructedData(listOfValues),
BACnetUnconfirmedServiceRequest: &BACnetUnconfirmedServiceRequest{},
}
_child.BACnetUnconfirmedServiceRequest.Child = _child
@@ -115,6 +221,70 @@ func (m *BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) Serialize(wr
return pushErr
}
+ // Simple Field (subscriberProcessIdentifier)
+ if pushErr := writeBuffer.PushContext("subscriberProcessIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _subscriberProcessIdentifierErr := m.SubscriberProcessIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("subscriberProcessIdentifier"); popErr != nil {
+ return popErr
+ }
+ if _subscriberProcessIdentifierErr != nil {
+ return errors.Wrap(_subscriberProcessIdentifierErr, "Error serializing 'subscriberProcessIdentifier' field")
+ }
+
+ // Simple Field (monitoredDeviceIdentifier)
+ if pushErr := writeBuffer.PushContext("monitoredDeviceIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _monitoredDeviceIdentifierErr := m.MonitoredDeviceIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("monitoredDeviceIdentifier"); popErr != nil {
+ return popErr
+ }
+ if _monitoredDeviceIdentifierErr != nil {
+ return errors.Wrap(_monitoredDeviceIdentifierErr, "Error serializing 'monitoredDeviceIdentifier' field")
+ }
+
+ // Simple Field (monitoredObjectIdentifier)
+ if pushErr := writeBuffer.PushContext("monitoredObjectIdentifier"); pushErr != nil {
+ return pushErr
+ }
+ _monitoredObjectIdentifierErr := m.MonitoredObjectIdentifier.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("monitoredObjectIdentifier"); popErr != nil {
+ return popErr
+ }
+ if _monitoredObjectIdentifierErr != nil {
+ return errors.Wrap(_monitoredObjectIdentifierErr, "Error serializing 'monitoredObjectIdentifier' field")
+ }
+
+ // Simple Field (lifetime)
+ if pushErr := writeBuffer.PushContext("lifetime"); pushErr != nil {
+ return pushErr
+ }
+ _lifetimeErr := m.Lifetime.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("lifetime"); popErr != nil {
+ return popErr
+ }
+ if _lifetimeErr != nil {
+ return errors.Wrap(_lifetimeErr, "Error serializing 'lifetime' field")
+ }
+
+ // Optional Field (listOfValues) (Can be skipped, if the value is null)
+ var listOfValues *BACnetConstructedData = nil
+ if m.ListOfValues != nil {
+ if pushErr := writeBuffer.PushContext("listOfValues"); pushErr != nil {
+ return pushErr
+ }
+ listOfValues = m.ListOfValues
+ _listOfValuesErr := listOfValues.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("listOfValues"); popErr != nil {
+ return popErr
+ }
+ if _listOfValuesErr != nil {
+ return errors.Wrap(_listOfValuesErr, "Error serializing 'listOfValues' field")
+ }
+ }
+
if popErr := writeBuffer.PopContext("BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification"); 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 c65ee42..1ba0e17 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -158,20 +158,11 @@
['0x00' BACnetConfirmedServiceRequestAcknowledgeAlarm
]
['0x01' BACnetConfirmedServiceRequestConfirmedCOVNotification
- [const uint 8 subscriberProcessIdentifierHeader 0x09 ]
- [simple uint 8 subscriberProcessIdentifier ]
- [const uint 8 monitoredObjectIdentifierHeader 0x1C ]
- [simple uint 10 monitoredObjectType ]
- [simple uint 22 monitoredObjectInstanceNumber ]
- [const uint 8 issueConfirmedNotificationsHeader 0x2C ]
- [simple uint 10 issueConfirmedNotificationsType ]
- [simple uint 22 issueConfirmedNotificationsInstanceNumber ]
- [const uint 5 lifetimeHeader 0x07 ]
- [simple uint 3 lifetimeLength ]
- [array int 8 lifetimeSeconds count 'lifetimeLength']
- [const uint 8 listOfValuesOpeningTag 0x4E ]
- [array BACnetTagWithContent notifications length 'len - 18' ]
- [const uint 8 listOfValuesClosingTag 0x4F ]
+ [simple BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') subscriberProcessIdentifier ]
+ [simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
+ [simple BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN') issueConfirmed ]
+ [simple BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetimeInSeconds ]
+ [optional BACnetConstructedData('4', 'BACnetPropertyIdentifier.ALL') listOfValues ]
]
['0x02' BACnetConfirmedServiceRequestConfirmedEventNotification
]
@@ -179,17 +170,10 @@
['0x04' BACnetConfirmedServiceRequestGetEnrollmentSummary
]
['0x05' BACnetConfirmedServiceRequestSubscribeCOV
- [const uint 8 subscriberProcessIdentifierHeader 0x09 ]
- [simple uint 8 subscriberProcessIdentifier ]
- [const uint 8 monitoredObjectIdentifierHeader 0x1C ]
- [simple uint 10 monitoredObjectType ]
- [simple uint 22 monitoredObjectInstanceNumber ]
- [const uint 8 issueConfirmedNotificationsHeader 0x29 ]
- [const uint 7 issueConfirmedNotificationsSkipBits 0x00 ]
- [simple bit issueConfirmedNotifications ]
- [const uint 5 lifetimeHeader 0x07 ]
- [simple uint 3 lifetimeLength ]
- [array int 8 lifetimeSeconds count 'lifetimeLength']
+ [simple BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') subscriberProcessIdentifier ]
+ [simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
+ [simple BACnetContextTagBoolean('2', 'BACnetDataType.BOOLEAN') issueConfirmed ]
+ [simple BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetimeInSeconds ]
]
['0x06' BACnetConfirmedServiceRequestAtomicReadFile
@@ -223,9 +207,9 @@
[simple BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') objectIdentifier ]
[simple BACnetContextTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
// TODO: check if this is the right identifier type and size
+ // TODO: replace with proper tag
[optional uint 32 arrayIndex 'propertyIdentifier.value == BACnetPropertyIdentifier.VALUE_SOURCE_ARRAY']
- // TODO: possible revert again
- [simple ConstructedData('propertyIdentifier.value') propertyValue ]
+ [simple BACnetConstructedData('3', 'propertyIdentifier.value') propertyValue ]
[optional BACnetTag priority 'curPos < (len - 1)' ]
]
['0x10' BACnetConfirmedServiceRequestWritePropertyMultiple
@@ -288,6 +272,11 @@
[simple BACnetApplicationTagCharacterString objectName ]
]
['0x02' BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification
+ [simple BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') subscriberProcessIdentifier ]
+ [simple BACnetContextTagObjectIdentifier('1', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredDeviceIdentifier ]
+ [simple BACnetContextTagObjectIdentifier('2', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') monitoredObjectIdentifier ]
+ [simple BACnetContextTagUnsignedInteger('3', 'BACnetDataType.UNSIGNED_INTEGER') lifetime ]
+ [optional BACnetConstructedData('4', 'BACnetPropertyIdentifier.ALL') listOfValues ]
]
['0x03' BACnetUnconfirmedServiceRequestUnconfirmedEventNotification
]
@@ -352,8 +341,9 @@
[simple BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER') objectIdentifier ]
[simple BACnetContextTagPropertyIdentifier('1', 'BACnetDataType.BACNET_PROPERTY_IDENTIFIER') propertyIdentifier ]
// TODO: check if this is the right identifier type and size
+ // TODO: replace with proper tag
[optional uint 32 arrayIndex 'propertyIdentifier.value == BACnetPropertyIdentifier.VALUE_SOURCE_ARRAY']
- [optional ConstructedData('propertyIdentifier.value') constructedData]
+ [optional BACnetConstructedData('3','propertyIdentifier.value') constructedData]
]
['0x0E' BACnetServiceAckReadPropertyMultiple
@@ -604,11 +594,11 @@
]
]
-[type ConstructedData(BACnetPropertyIdentifier identifier)
- [optional BACnetContextTag('3', 'BACnetDataType.NULL') openingTag]
+[type BACnetConstructedData(uint 4 tagNumberArgument, BACnetPropertyIdentifier identifier)
+ [optional BACnetContextTag('tagNumberArgument', 'BACnetDataType.NULL') openingTag]
// TODO: BACnetTag is not yet smart enough and looses type information
[manualArray BACnetTag data terminated 'STATIC_CALL("openingClosingTerminate", readBuffer, openingTag)' 'STATIC_CALL("parseTags", readBuffer)' 'STATIC_CALL("writeTags", writeBuffer, _value)' 'STATIC_CALL("tagsLength", data)']
- [optional BACnetContextTag('3', 'BACnetDataType.NULL') closingTag]
+ [optional BACnetContextTag('tagNumberArgument', 'BACnetDataType.NULL') closingTag]
]
[discriminatedType BACnetPropertyValue(BACnetPropertyIdentifier identifier, uint 32 actualLength)
@@ -625,9 +615,9 @@
['RELINQUISH_DEFAULT' BACnetPropertyValueRelinquishDefault
[simple BACnetApplicationTagReal value]
]
- [BACnetPropertyValueDefault
+ /*[BACnetPropertyValueDefault
[array int 8 data length 'actualLength']
- ]
+ ]*/
]
]
@@ -644,10 +634,10 @@
[typeSwitch dataType
['NULL' BACnetContextTagNull
]
- ['BOOLEAN' BACnetContextTagBoolean(uint 32 actualLength)
- [virtual bit value 'actualLength == 1' ]
- [virtual bit isTrue 'value' ]
- [virtual bit isFalse '!value' ]
+ ['BOOLEAN' BACnetContextTagBoolean
+ [simple uint 8 value ]
+ [virtual bit isTrue 'value == 1' ]
+ [virtual bit isFalse 'value == 0' ]
]
['UNSIGNED_INTEGER' BACnetContextTagUnsignedInteger(uint 32 actualLength)
[virtual bit isUint8 'actualLength == 1' ]
diff --git a/sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/protocol/BacNetIpProtocolLogic.java b/sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/protocol/BacNetIpProtocolLogic.java
index a1fde0c..6e39204 100644
--- a/sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/protocol/BacNetIpProtocolLogic.java
+++ b/sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/protocol/BacNetIpProtocolLogic.java
@@ -146,13 +146,15 @@ public class BacNetIpProtocolLogic extends Plc4xProtocolBase<BVLC> implements Ha
BACnetConfirmedServiceRequestConfirmedCOVNotification valueChange =
(BACnetConfirmedServiceRequestConfirmedCOVNotification) serviceRequest;
- long deviceIdentifier = valueChange.getMonitoredObjectInstanceNumber();
- int objectType = valueChange.getIssueConfirmedNotificationsType();
- long objectInstance = valueChange.getIssueConfirmedNotificationsInstanceNumber();
+ long deviceIdentifier = valueChange.getMonitoredObjectIdentifier().getInstanceNumber();
+ int objectType = valueChange.getMonitoredObjectIdentifier().getObjectType().getValue();
+ long objectInstance = valueChange.getMonitoredObjectIdentifier().getInstanceNumber();
BacNetIpField curField = new BacNetIpField(deviceIdentifier, objectType, objectInstance);
// The actual value change is in the notifications ... iterate through them to get it.
- for (BACnetTagWithContent notification : valueChange.getNotifications()) {
+ for (BACnetTag notification1 : valueChange.getListOfValues().getData()) {
+ // TODO: fixme
+ BACnetTagWithContent notification=null;
// These are value change notifications. Ignore the rest.
if (notification.getPropertyIdentifier().get(0) == (short) 0x55) {
final BACnetTag baCnetTag = notification.getValue();
diff --git a/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java b/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
index 6573da9..18d6b02 100644
--- a/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
+++ b/sandbox/test-java-bacnetip-driver/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
@@ -739,27 +739,54 @@ public class RandomPackagesTest {
);
}
+ @Disabled("This needs more work")
@TestFactory
@DisplayName("COV_AWF_ARF")
Collection<DynamicTest> COV_AWF_ARF() throws Exception {
PCAPEvaluator pcapEvaluator = pcapEvaluator("COV_AWF_ARF.cap");
return Arrays.asList(
- DynamicTest.dynamicTest("TODO",
+ DynamicTest.dynamicTest("Confirmed-REQ subscribeCOV[ 10] binary-input,0",
() -> {
BVLC bvlc;
bvlc = pcapEvaluator.nextBVLC();
dump(bvlc);
- // TODO:
- assumeTrue(false, "not properly implemented. Check manually and add asserts");
+ BVLCOriginalUnicastNPDU bvlcOriginalUnicastNPDU = (BVLCOriginalUnicastNPDU) bvlc;
+ APDUConfirmedRequest apduConfirmedRequest = (APDUConfirmedRequest) bvlcOriginalUnicastNPDU.getNpdu().getApdu();
+ BACnetConfirmedServiceRequest serviceRequest = apduConfirmedRequest.getServiceRequest();
+ assertNotNull(serviceRequest);
+ BACnetConfirmedServiceRequestSubscribeCOV baCnetConfirmedServiceRequestSubscribeCOV = (BACnetConfirmedServiceRequestSubscribeCOV) serviceRequest;
+ assertEquals((short) 123, baCnetConfirmedServiceRequestSubscribeCOV.getSubscriberProcessIdentifier().getValueUint8());
+ assertEquals(BACnetObjectType.BINARY_INPUT, baCnetConfirmedServiceRequestSubscribeCOV.getMonitoredObjectIdentifier().getObjectType());
+ assertEquals(0, baCnetConfirmedServiceRequestSubscribeCOV.getMonitoredObjectIdentifier().getInstanceNumber());
+ assertTrue(baCnetConfirmedServiceRequestSubscribeCOV.getIssueConfirmed().getIsFalse());
+ assertEquals(10, baCnetConfirmedServiceRequestSubscribeCOV.getLifetimeInSeconds().getActualValue() / 60);
}),
- DynamicTest.dynamicTest("TODO",
+ DynamicTest.dynamicTest("Simple-ACK subscribeCOV[ 10]",
() -> {
BVLC bvlc;
bvlc = pcapEvaluator.nextBVLC();
dump(bvlc);
- // TODO:
- assumeTrue(false, "not properly implemented. Check manually and add asserts");
- })
+ BVLCOriginalUnicastNPDU bvlcOriginalUnicastNPDU = (BVLCOriginalUnicastNPDU) bvlc;
+ APDUSimpleAck apduSimpleAck = (APDUSimpleAck) bvlcOriginalUnicastNPDU.getNpdu().getApdu();
+ assertEquals((short) 5,apduSimpleAck.getServiceChoice());
+ }),
+ DynamicTest.dynamicTest("Unconfirmed-REQ unconfirmedCOVNotification device,12345 binary-input,0 present-value status-flags",
+ () -> {
+ BVLC bvlc;
+ bvlc = pcapEvaluator.nextBVLC();
+ dump(bvlc);
+ BVLCOriginalUnicastNPDU bvlcOriginalUnicastNPDU = (BVLCOriginalUnicastNPDU) bvlc;
+ APDUConfirmedRequest apduConfirmedRequest = (APDUConfirmedRequest) bvlcOriginalUnicastNPDU.getNpdu().getApdu();
+ BACnetConfirmedServiceRequest serviceRequest = apduConfirmedRequest.getServiceRequest();
+ assertNotNull(serviceRequest);
+ BACnetConfirmedServiceRequestSubscribeCOV baCnetConfirmedServiceRequestSubscribeCOV = (BACnetConfirmedServiceRequestSubscribeCOV) serviceRequest;
+ assertEquals((short) 123, baCnetConfirmedServiceRequestSubscribeCOV.getSubscriberProcessIdentifier().getValueUint8());
+ assertEquals(BACnetObjectType.BINARY_INPUT, baCnetConfirmedServiceRequestSubscribeCOV.getMonitoredObjectIdentifier().getObjectType());
+ assertEquals(0, baCnetConfirmedServiceRequestSubscribeCOV.getMonitoredObjectIdentifier().getInstanceNumber());
+ assertTrue(baCnetConfirmedServiceRequestSubscribeCOV.getIssueConfirmed().getIsFalse());
+ assertEquals(10, baCnetConfirmedServiceRequestSubscribeCOV.getLifetimeInSeconds().getActualValue() / 60);
+ })
+ // TODO: finish me
);
}