You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/05/24 12:10:00 UTC
[plc4x] 07/14: feat(bacnet): implemented BACnetNotificationParametersChangeOfStatusFlags
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 839386e61791f6043dd1f69ece974ba7eb2fe884
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 24 12:45:11 2022 +0200
feat(bacnet): implemented BACnetNotificationParametersChangeOfStatusFlags
---
.../model/BACnetNotificationParameters.go | 2 +
...netNotificationParametersChangeOfStatusFlags.go | 316 +++++++++++++++++++++
.../model/BACnetNotificationParametersUnmapped.go | 162 -----------
.../resources/protocols/bacnetip/bacnetip.mspec | 14 +-
4 files changed, 328 insertions(+), 166 deletions(-)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
index c8e7024a74..715f0d7dd2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
@@ -228,6 +228,8 @@ func BACnetNotificationParametersParse(readBuffer utils.ReadBuffer, tagNumber ui
_child, typeSwitchError = BACnetNotificationParametersUnsignedOutOfRangeParse(readBuffer, tagNumber, objectType, peekedTagNumber)
case peekedTagNumber == uint8(17): // BACnetNotificationParametersChangeOfCharacterString
_child, typeSwitchError = BACnetNotificationParametersChangeOfCharacterStringParse(readBuffer, tagNumber, objectType, peekedTagNumber)
+ case peekedTagNumber == uint8(18): // BACnetNotificationParametersChangeOfStatusFlags
+ _child, typeSwitchError = BACnetNotificationParametersChangeOfStatusFlagsParse(readBuffer, tagNumber, objectType, peekedTagNumber)
case true: // BACnetNotificationParametersUnmapped
_child, typeSwitchError = BACnetNotificationParametersUnmappedParse(readBuffer, tagNumber, objectType)
default:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfStatusFlags.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfStatusFlags.go
new file mode 100644
index 0000000000..4a4e0e4e0e
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfStatusFlags.go
@@ -0,0 +1,316 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+ "github.com/apache/plc4x/plc4go/internal/spi/utils"
+ "github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// BACnetNotificationParametersChangeOfStatusFlags is the data-structure of this message
+type BACnetNotificationParametersChangeOfStatusFlags struct {
+ *BACnetNotificationParameters
+ InnerOpeningTag *BACnetOpeningTag
+ PresentValue *BACnetConstructedData
+ StatusFlags *BACnetStatusFlags
+ InnerClosingTag *BACnetClosingTag
+
+ // Arguments.
+ TagNumber uint8
+ ObjectType BACnetObjectType
+}
+
+// IBACnetNotificationParametersChangeOfStatusFlags is the corresponding interface of BACnetNotificationParametersChangeOfStatusFlags
+type IBACnetNotificationParametersChangeOfStatusFlags interface {
+ IBACnetNotificationParameters
+ // GetInnerOpeningTag returns InnerOpeningTag (property field)
+ GetInnerOpeningTag() *BACnetOpeningTag
+ // GetPresentValue returns PresentValue (property field)
+ GetPresentValue() *BACnetConstructedData
+ // GetStatusFlags returns StatusFlags (property field)
+ GetStatusFlags() *BACnetStatusFlags
+ // GetInnerClosingTag returns InnerClosingTag (property field)
+ GetInnerClosingTag() *BACnetClosingTag
+ // GetLengthInBytes returns the length in bytes
+ GetLengthInBytes() uint16
+ // GetLengthInBits returns the length in bits
+ GetLengthInBits() uint16
+ // Serialize serializes this type
+ Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) InitializeParent(parent *BACnetNotificationParameters, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag) {
+ m.BACnetNotificationParameters.OpeningTag = openingTag
+ m.BACnetNotificationParameters.PeekedTagHeader = peekedTagHeader
+ m.BACnetNotificationParameters.ClosingTag = closingTag
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetParent() *BACnetNotificationParameters {
+ return m.BACnetNotificationParameters
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetInnerOpeningTag() *BACnetOpeningTag {
+ return m.InnerOpeningTag
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetPresentValue() *BACnetConstructedData {
+ return m.PresentValue
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetStatusFlags() *BACnetStatusFlags {
+ return m.StatusFlags
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetInnerClosingTag() *BACnetClosingTag {
+ return m.InnerClosingTag
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetNotificationParametersChangeOfStatusFlags factory function for BACnetNotificationParametersChangeOfStatusFlags
+func NewBACnetNotificationParametersChangeOfStatusFlags(innerOpeningTag *BACnetOpeningTag, presentValue *BACnetConstructedData, statusFlags *BACnetStatusFlags, innerClosingTag *BACnetClosingTag, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag, tagNumber uint8, objectType BACnetObjectType) *BACnetNotificationParametersChangeOfStatusFlags {
+ _result := &BACnetNotificationParametersChangeOfStatusFlags{
+ InnerOpeningTag: innerOpeningTag,
+ PresentValue: presentValue,
+ StatusFlags: statusFlags,
+ InnerClosingTag: innerClosingTag,
+ BACnetNotificationParameters: NewBACnetNotificationParameters(openingTag, peekedTagHeader, closingTag, tagNumber, objectType),
+ }
+ _result.Child = _result
+ return _result
+}
+
+func CastBACnetNotificationParametersChangeOfStatusFlags(structType interface{}) *BACnetNotificationParametersChangeOfStatusFlags {
+ if casted, ok := structType.(BACnetNotificationParametersChangeOfStatusFlags); ok {
+ return &casted
+ }
+ if casted, ok := structType.(*BACnetNotificationParametersChangeOfStatusFlags); ok {
+ return casted
+ }
+ if casted, ok := structType.(BACnetNotificationParameters); ok {
+ return CastBACnetNotificationParametersChangeOfStatusFlags(casted.Child)
+ }
+ if casted, ok := structType.(*BACnetNotificationParameters); ok {
+ return CastBACnetNotificationParametersChangeOfStatusFlags(casted.Child)
+ }
+ return nil
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetTypeName() string {
+ return "BACnetNotificationParametersChangeOfStatusFlags"
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetLengthInBits() uint16 {
+ return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetLengthInBitsConditional(lastItem bool) uint16 {
+ lengthInBits := uint16(m.GetParentLengthInBits())
+
+ // Simple field (innerOpeningTag)
+ lengthInBits += m.InnerOpeningTag.GetLengthInBits()
+
+ // Simple field (presentValue)
+ lengthInBits += m.PresentValue.GetLengthInBits()
+
+ // Simple field (statusFlags)
+ lengthInBits += m.StatusFlags.GetLengthInBits()
+
+ // Simple field (innerClosingTag)
+ lengthInBits += m.InnerClosingTag.GetLengthInBits()
+
+ return lengthInBits
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) GetLengthInBytes() uint16 {
+ return m.GetLengthInBits() / 8
+}
+
+func BACnetNotificationParametersChangeOfStatusFlagsParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType, peekedTagNumber uint8) (*BACnetNotificationParametersChangeOfStatusFlags, error) {
+ positionAware := readBuffer
+ _ = positionAware
+ if pullErr := readBuffer.PullContext("BACnetNotificationParametersChangeOfStatusFlags"); pullErr != nil {
+ return nil, pullErr
+ }
+ currentPos := positionAware.GetPos()
+ _ = currentPos
+
+ // Simple Field (innerOpeningTag)
+ if pullErr := readBuffer.PullContext("innerOpeningTag"); pullErr != nil {
+ return nil, pullErr
+ }
+ _innerOpeningTag, _innerOpeningTagErr := BACnetOpeningTagParse(readBuffer, uint8(peekedTagNumber))
+ if _innerOpeningTagErr != nil {
+ return nil, errors.Wrap(_innerOpeningTagErr, "Error parsing 'innerOpeningTag' field")
+ }
+ innerOpeningTag := CastBACnetOpeningTag(_innerOpeningTag)
+ if closeErr := readBuffer.CloseContext("innerOpeningTag"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (presentValue)
+ if pullErr := readBuffer.PullContext("presentValue"); pullErr != nil {
+ return nil, pullErr
+ }
+ _presentValue, _presentValueErr := BACnetConstructedDataParse(readBuffer, uint8(uint8(0)), BACnetObjectType(objectType), BACnetPropertyIdentifier(BACnetPropertyIdentifier_VENDOR_PROPRIETARY_VALUE))
+ if _presentValueErr != nil {
+ return nil, errors.Wrap(_presentValueErr, "Error parsing 'presentValue' field")
+ }
+ presentValue := CastBACnetConstructedData(_presentValue)
+ if closeErr := readBuffer.CloseContext("presentValue"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (statusFlags)
+ if pullErr := readBuffer.PullContext("statusFlags"); pullErr != nil {
+ return nil, pullErr
+ }
+ _statusFlags, _statusFlagsErr := BACnetStatusFlagsParse(readBuffer, uint8(uint8(1)))
+ if _statusFlagsErr != nil {
+ return nil, errors.Wrap(_statusFlagsErr, "Error parsing 'statusFlags' field")
+ }
+ statusFlags := CastBACnetStatusFlags(_statusFlags)
+ if closeErr := readBuffer.CloseContext("statusFlags"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Simple Field (innerClosingTag)
+ if pullErr := readBuffer.PullContext("innerClosingTag"); pullErr != nil {
+ return nil, pullErr
+ }
+ _innerClosingTag, _innerClosingTagErr := BACnetClosingTagParse(readBuffer, uint8(peekedTagNumber))
+ if _innerClosingTagErr != nil {
+ return nil, errors.Wrap(_innerClosingTagErr, "Error parsing 'innerClosingTag' field")
+ }
+ innerClosingTag := CastBACnetClosingTag(_innerClosingTag)
+ if closeErr := readBuffer.CloseContext("innerClosingTag"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ if closeErr := readBuffer.CloseContext("BACnetNotificationParametersChangeOfStatusFlags"); closeErr != nil {
+ return nil, closeErr
+ }
+
+ // Create a partially initialized instance
+ _child := &BACnetNotificationParametersChangeOfStatusFlags{
+ InnerOpeningTag: CastBACnetOpeningTag(innerOpeningTag),
+ PresentValue: CastBACnetConstructedData(presentValue),
+ StatusFlags: CastBACnetStatusFlags(statusFlags),
+ InnerClosingTag: CastBACnetClosingTag(innerClosingTag),
+ BACnetNotificationParameters: &BACnetNotificationParameters{},
+ }
+ _child.BACnetNotificationParameters.Child = _child
+ return _child, nil
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) Serialize(writeBuffer utils.WriteBuffer) error {
+ positionAware := writeBuffer
+ _ = positionAware
+ ser := func() error {
+ if pushErr := writeBuffer.PushContext("BACnetNotificationParametersChangeOfStatusFlags"); pushErr != nil {
+ return pushErr
+ }
+
+ // Simple Field (innerOpeningTag)
+ if pushErr := writeBuffer.PushContext("innerOpeningTag"); pushErr != nil {
+ return pushErr
+ }
+ _innerOpeningTagErr := m.InnerOpeningTag.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("innerOpeningTag"); popErr != nil {
+ return popErr
+ }
+ if _innerOpeningTagErr != nil {
+ return errors.Wrap(_innerOpeningTagErr, "Error serializing 'innerOpeningTag' field")
+ }
+
+ // Simple Field (presentValue)
+ if pushErr := writeBuffer.PushContext("presentValue"); pushErr != nil {
+ return pushErr
+ }
+ _presentValueErr := m.PresentValue.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("presentValue"); popErr != nil {
+ return popErr
+ }
+ if _presentValueErr != nil {
+ return errors.Wrap(_presentValueErr, "Error serializing 'presentValue' field")
+ }
+
+ // Simple Field (statusFlags)
+ if pushErr := writeBuffer.PushContext("statusFlags"); pushErr != nil {
+ return pushErr
+ }
+ _statusFlagsErr := m.StatusFlags.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("statusFlags"); popErr != nil {
+ return popErr
+ }
+ if _statusFlagsErr != nil {
+ return errors.Wrap(_statusFlagsErr, "Error serializing 'statusFlags' field")
+ }
+
+ // Simple Field (innerClosingTag)
+ if pushErr := writeBuffer.PushContext("innerClosingTag"); pushErr != nil {
+ return pushErr
+ }
+ _innerClosingTagErr := m.InnerClosingTag.Serialize(writeBuffer)
+ if popErr := writeBuffer.PopContext("innerClosingTag"); popErr != nil {
+ return popErr
+ }
+ if _innerClosingTagErr != nil {
+ return errors.Wrap(_innerClosingTagErr, "Error serializing 'innerClosingTag' field")
+ }
+
+ if popErr := writeBuffer.PopContext("BACnetNotificationParametersChangeOfStatusFlags"); popErr != nil {
+ return popErr
+ }
+ return nil
+ }
+ return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetNotificationParametersChangeOfStatusFlags) String() string {
+ if m == nil {
+ return "<nil>"
+ }
+ buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
+ if err := m.Serialize(buffer); err != nil {
+ return err.Error()
+ }
+ return buffer.GetBox().String()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersUnmapped.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersUnmapped.go
deleted file mode 100644
index 22893e17d7..0000000000
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersUnmapped.go
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package model
-
-import (
- "github.com/apache/plc4x/plc4go/internal/spi/utils"
-)
-
-// Code generated by code-generation. DO NOT EDIT.
-
-// BACnetNotificationParametersUnmapped is the data-structure of this message
-type BACnetNotificationParametersUnmapped struct {
- *BACnetNotificationParameters
-
- // Arguments.
- TagNumber uint8
- ObjectType BACnetObjectType
-}
-
-// IBACnetNotificationParametersUnmapped is the corresponding interface of BACnetNotificationParametersUnmapped
-type IBACnetNotificationParametersUnmapped interface {
- IBACnetNotificationParameters
- // GetLengthInBytes returns the length in bytes
- GetLengthInBytes() uint16
- // GetLengthInBits returns the length in bits
- GetLengthInBits() uint16
- // Serialize serializes this type
- Serialize(writeBuffer utils.WriteBuffer) error
-}
-
-///////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////
-/////////////////////// Accessors for discriminator values.
-///////////////////////
-
-///////////////////////
-///////////////////////
-///////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////
-
-func (m *BACnetNotificationParametersUnmapped) InitializeParent(parent *BACnetNotificationParameters, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag) {
- m.BACnetNotificationParameters.OpeningTag = openingTag
- m.BACnetNotificationParameters.PeekedTagHeader = peekedTagHeader
- m.BACnetNotificationParameters.ClosingTag = closingTag
-}
-
-func (m *BACnetNotificationParametersUnmapped) GetParent() *BACnetNotificationParameters {
- return m.BACnetNotificationParameters
-}
-
-// NewBACnetNotificationParametersUnmapped factory function for BACnetNotificationParametersUnmapped
-func NewBACnetNotificationParametersUnmapped(openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag, tagNumber uint8, objectType BACnetObjectType) *BACnetNotificationParametersUnmapped {
- _result := &BACnetNotificationParametersUnmapped{
- BACnetNotificationParameters: NewBACnetNotificationParameters(openingTag, peekedTagHeader, closingTag, tagNumber, objectType),
- }
- _result.Child = _result
- return _result
-}
-
-func CastBACnetNotificationParametersUnmapped(structType interface{}) *BACnetNotificationParametersUnmapped {
- if casted, ok := structType.(BACnetNotificationParametersUnmapped); ok {
- return &casted
- }
- if casted, ok := structType.(*BACnetNotificationParametersUnmapped); ok {
- return casted
- }
- if casted, ok := structType.(BACnetNotificationParameters); ok {
- return CastBACnetNotificationParametersUnmapped(casted.Child)
- }
- if casted, ok := structType.(*BACnetNotificationParameters); ok {
- return CastBACnetNotificationParametersUnmapped(casted.Child)
- }
- return nil
-}
-
-func (m *BACnetNotificationParametersUnmapped) GetTypeName() string {
- return "BACnetNotificationParametersUnmapped"
-}
-
-func (m *BACnetNotificationParametersUnmapped) GetLengthInBits() uint16 {
- return m.GetLengthInBitsConditional(false)
-}
-
-func (m *BACnetNotificationParametersUnmapped) GetLengthInBitsConditional(lastItem bool) uint16 {
- lengthInBits := uint16(m.GetParentLengthInBits())
-
- return lengthInBits
-}
-
-func (m *BACnetNotificationParametersUnmapped) GetLengthInBytes() uint16 {
- return m.GetLengthInBits() / 8
-}
-
-func BACnetNotificationParametersUnmappedParse(readBuffer utils.ReadBuffer, tagNumber uint8, objectType BACnetObjectType) (*BACnetNotificationParametersUnmapped, error) {
- positionAware := readBuffer
- _ = positionAware
- if pullErr := readBuffer.PullContext("BACnetNotificationParametersUnmapped"); pullErr != nil {
- return nil, pullErr
- }
- currentPos := positionAware.GetPos()
- _ = currentPos
-
- // Validation
- if !(bool((1) == (2))) {
- return nil, utils.ParseValidationError{"TODO: implement me"}
- }
-
- if closeErr := readBuffer.CloseContext("BACnetNotificationParametersUnmapped"); closeErr != nil {
- return nil, closeErr
- }
-
- // Create a partially initialized instance
- _child := &BACnetNotificationParametersUnmapped{
- BACnetNotificationParameters: &BACnetNotificationParameters{},
- }
- _child.BACnetNotificationParameters.Child = _child
- return _child, nil
-}
-
-func (m *BACnetNotificationParametersUnmapped) Serialize(writeBuffer utils.WriteBuffer) error {
- positionAware := writeBuffer
- _ = positionAware
- ser := func() error {
- if pushErr := writeBuffer.PushContext("BACnetNotificationParametersUnmapped"); pushErr != nil {
- return pushErr
- }
-
- if popErr := writeBuffer.PopContext("BACnetNotificationParametersUnmapped"); popErr != nil {
- return popErr
- }
- return nil
- }
- return m.SerializeParent(writeBuffer, m, ser)
-}
-
-func (m *BACnetNotificationParametersUnmapped) String() string {
- if m == nil {
- return "<nil>"
- }
- buffer := utils.NewBoxedWriteBufferWithOptions(true, true)
- if err := m.Serialize(buffer); err != nil {
- return err.Error()
- }
- return buffer.GetBox().String()
-}
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 8f771cc66c..ddc2a04d53 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -1443,11 +1443,17 @@
[simple BACnetClosingTag('peekedTagNumber')
innerClosingTag ]
]
- // TODO: implement other cases
- [BACnetNotificationParametersUnmapped
- // TODO: implement me
- [validation '1 == 2' "TODO: implement me"]
+ ['18' BACnetNotificationParametersChangeOfStatusFlags(uint 8 peekedTagNumber)
+ [simple BACnetOpeningTag('peekedTagNumber')
+ innerOpeningTag ]
+ [simple BACnetConstructedData('0', 'objectType', 'BACnetPropertyIdentifier.VENDOR_PROPRIETARY_VALUE')
+ presentValue ]
+ [simple BACnetStatusFlags('1')
+ statusFlags ]
+ [simple BACnetClosingTag('peekedTagNumber')
+ innerClosingTag ]
]
+ // TODO: implement other cases
]
[simple BACnetClosingTag('tagNumber')
closingTag ]