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                                              ]