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:07 UTC

[plc4x] 14/14: feat(bacnet): implemented BACnetConfirmedServiceRequestConfirmedTextMessage

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 6e5cfeeadfc2bb9a1b7a022fb91536be6e301b93
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 24 14:09:44 2022 +0200

    feat(bacnet): implemented BACnetConfirmedServiceRequestConfirmedTextMessage
---
 .../protocols/bacnetip/readwrite/ParserHelper.go   |  27 +-
 .../bacnetip/readwrite/XmlParserHelper.go          |  31 ++-
 ...tConfirmedServiceRequestConfirmedTextMessage.go | 177 ++++++++++++-
 ...rviceRequestConfirmedTextMessageMessageClass.go | 291 +++++++++++++++++++++
 ...estConfirmedTextMessageMessageClassCharacter.go | 204 +++++++++++++++
 ...questConfirmedTextMessageMessageClassNumeric.go | 204 +++++++++++++++
 ...ceRequestConfirmedTextMessageMessagePriority.go | 122 +++++++++
 ...stConfirmedTextMessageMessagePriorityTagged.go} |  58 ++--
 ...rmedServiceRequestDeviceCommunicationControl.go |  14 +-
 ...questDeviceCommunicationControlEnableDisable.go | 130 +++++++++
 ...viceCommunicationControlEnableDisableTagged.go} |  58 ++--
 ...erviceRequestReinitializeDeviceEnableDisable.go | 130 ---------
 .../protocols/bacnetip/bacnet-private-enums.mspec  |  20 +-
 .../resources/protocols/bacnetip/bacnetip.mspec    | 119 +++++----
 14 files changed, 1313 insertions(+), 272 deletions(-)

diff --git a/plc4go/protocols/bacnetip/readwrite/ParserHelper.go b/plc4go/protocols/bacnetip/readwrite/ParserHelper.go
index 60450b8d45..b5a74f4d45 100644
--- a/plc4go/protocols/bacnetip/readwrite/ParserHelper.go
+++ b/plc4go/protocols/bacnetip/readwrite/ParserHelper.go
@@ -100,6 +100,13 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
 			return nil, errors.Wrap(err, "Error parsing")
 		}
 		return model.BACnetPropertyReferenceEnclosedParse(io, tagNumber)
+	case "BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged":
+		tagNumber, err := utils.StrToUint8(arguments[0])
+		if err != nil {
+			return nil, errors.Wrap(err, "Error parsing")
+		}
+		tagClass := model.TagClassByName(arguments[1])
+		return model.BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTaggedParse(io, tagNumber, tagClass)
 	case "BACnetEventTransitionBits":
 		tagNumber, err := utils.StrToUint8(arguments[0])
 		if err != nil {
@@ -134,13 +141,6 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
 			return nil, errors.Wrap(err, "Error parsing")
 		}
 		return model.BACnetNotificationParametersExtendedParametersParse(io, tagNumber)
-	case "BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged":
-		tagNumber, err := utils.StrToUint8(arguments[0])
-		if err != nil {
-			return nil, errors.Wrap(err, "Error parsing")
-		}
-		tagClass := model.TagClassByName(arguments[1])
-		return model.BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTaggedParse(io, tagNumber, tagClass)
 	case "BACnetLoggingTypeTagged":
 		tagNumber, err := utils.StrToUint8(arguments[0])
 		if err != nil {
@@ -271,6 +271,12 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
 		}
 		tagClass := model.TagClassByName(arguments[1])
 		return model.BACnetLiftCarDirectionTaggedParse(io, tagNumber, tagClass)
+	case "BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass":
+		tagNumber, err := utils.StrToUint8(arguments[0])
+		if err != nil {
+			return nil, errors.Wrap(err, "Error parsing")
+		}
+		return model.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassParse(io, tagNumber)
 	case "BVLCBroadcastDistributionTableEntry":
 		return model.BVLCBroadcastDistributionTableEntryParse(io)
 	case "BACnetBackupStateTagged":
@@ -412,6 +418,13 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
 		}
 		tagClass := model.TagClassByName(arguments[1])
 		return model.BACnetEventStateTaggedParse(io, tagNumber, tagClass)
+	case "BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged":
+		tagNumber, err := utils.StrToUint8(arguments[0])
+		if err != nil {
+			return nil, errors.Wrap(err, "Error parsing")
+		}
+		tagClass := model.TagClassByName(arguments[1])
+		return model.BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTaggedParse(io, tagNumber, tagClass)
 	case "BACnetTagHeader":
 		return model.BACnetTagHeaderParse(io)
 	case "BACnetTagPayloadBoolean":
diff --git a/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go b/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go
index 530503b5a8..60f5859bc5 100644
--- a/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go
@@ -120,6 +120,14 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
 		}
 		tagNumber := uint8(parsedUint0)
 		return model.BACnetPropertyReferenceEnclosedParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber)
+	case "BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged":
+		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8)
+		if err != nil {
+			return nil, err
+		}
+		tagNumber := uint8(parsedUint0)
+		tagClass := model.TagClassByName(parserArguments[1])
+		return model.BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTaggedParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass)
 	case "BACnetEventTransitionBits":
 		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8)
 		if err != nil {
@@ -159,14 +167,6 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
 		}
 		tagNumber := uint8(parsedUint0)
 		return model.BACnetNotificationParametersExtendedParametersParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber)
-	case "BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged":
-		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8)
-		if err != nil {
-			return nil, err
-		}
-		tagNumber := uint8(parsedUint0)
-		tagClass := model.TagClassByName(parserArguments[1])
-		return model.BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTaggedParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass)
 	case "BACnetLoggingTypeTagged":
 		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8)
 		if err != nil {
@@ -315,6 +315,13 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
 		tagNumber := uint8(parsedUint0)
 		tagClass := model.TagClassByName(parserArguments[1])
 		return model.BACnetLiftCarDirectionTaggedParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass)
+	case "BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass":
+		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8)
+		if err != nil {
+			return nil, err
+		}
+		tagNumber := uint8(parsedUint0)
+		return model.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber)
 	case "BVLCBroadcastDistributionTableEntry":
 		return model.BVLCBroadcastDistributionTableEntryParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "BACnetBackupStateTagged":
@@ -476,6 +483,14 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
 		tagNumber := uint8(parsedUint0)
 		tagClass := model.TagClassByName(parserArguments[1])
 		return model.BACnetEventStateTaggedParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass)
+	case "BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged":
+		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8)
+		if err != nil {
+			return nil, err
+		}
+		tagNumber := uint8(parsedUint0)
+		tagClass := model.TagClassByName(parserArguments[1])
+		return model.BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTaggedParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), tagNumber, tagClass)
 	case "BACnetTagHeader":
 		return model.BACnetTagHeaderParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "BACnetTagPayloadBoolean":
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
index 757ec8308c..34a712bbb5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
@@ -21,6 +21,8 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
+	"io"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +30,10 @@ import (
 // BACnetConfirmedServiceRequestConfirmedTextMessage is the data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedTextMessage struct {
 	*BACnetConfirmedServiceRequest
+	TextMessageSourceDevice *BACnetContextTagObjectIdentifier
+	MessageClass            *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+	MessagePriority         *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged
+	Message                 *BACnetContextTagCharacterString
 
 	// Arguments.
 	ServiceRequestLength uint16
@@ -36,6 +42,14 @@ type BACnetConfirmedServiceRequestConfirmedTextMessage struct {
 // IBACnetConfirmedServiceRequestConfirmedTextMessage is the corresponding interface of BACnetConfirmedServiceRequestConfirmedTextMessage
 type IBACnetConfirmedServiceRequestConfirmedTextMessage interface {
 	IBACnetConfirmedServiceRequest
+	// GetTextMessageSourceDevice returns TextMessageSourceDevice (property field)
+	GetTextMessageSourceDevice() *BACnetContextTagObjectIdentifier
+	// GetMessageClass returns MessageClass (property field)
+	GetMessageClass() *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+	// GetMessagePriority returns MessagePriority (property field)
+	GetMessagePriority() *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged
+	// GetMessage returns Message (property field)
+	GetMessage() *BACnetContextTagCharacterString
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -65,9 +79,39 @@ func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetParent() *BACnetC
 	return m.BACnetConfirmedServiceRequest
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetTextMessageSourceDevice() *BACnetContextTagObjectIdentifier {
+	return m.TextMessageSourceDevice
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetMessageClass() *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass {
+	return m.MessageClass
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetMessagePriority() *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged {
+	return m.MessagePriority
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetMessage() *BACnetContextTagCharacterString {
+	return m.Message
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetConfirmedServiceRequestConfirmedTextMessage factory function for BACnetConfirmedServiceRequestConfirmedTextMessage
-func NewBACnetConfirmedServiceRequestConfirmedTextMessage(serviceRequestLength uint16) *BACnetConfirmedServiceRequestConfirmedTextMessage {
+func NewBACnetConfirmedServiceRequestConfirmedTextMessage(textMessageSourceDevice *BACnetContextTagObjectIdentifier, messageClass *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, messagePriority *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged, message *BACnetContextTagCharacterString, serviceRequestLength uint16) *BACnetConfirmedServiceRequestConfirmedTextMessage {
 	_result := &BACnetConfirmedServiceRequestConfirmedTextMessage{
+		TextMessageSourceDevice:       textMessageSourceDevice,
+		MessageClass:                  messageClass,
+		MessagePriority:               messagePriority,
+		Message:                       message,
 		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
 	}
 	_result.Child = _result
@@ -101,6 +145,20 @@ func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetLengthInBits() ui
 func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Simple field (textMessageSourceDevice)
+	lengthInBits += m.TextMessageSourceDevice.GetLengthInBits()
+
+	// Optional Field (messageClass)
+	if m.MessageClass != nil {
+		lengthInBits += (*m.MessageClass).GetLengthInBits()
+	}
+
+	// Simple field (messagePriority)
+	lengthInBits += m.MessagePriority.GetLengthInBits()
+
+	// Simple field (message)
+	lengthInBits += m.Message.GetLengthInBits()
+
 	return lengthInBits
 }
 
@@ -117,9 +175,64 @@ func BACnetConfirmedServiceRequestConfirmedTextMessageParse(readBuffer utils.Rea
 	currentPos := positionAware.GetPos()
 	_ = currentPos
 
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Simple Field (textMessageSourceDevice)
+	if pullErr := readBuffer.PullContext("textMessageSourceDevice"); pullErr != nil {
+		return nil, pullErr
+	}
+	_textMessageSourceDevice, _textMessageSourceDeviceErr := BACnetContextTagParse(readBuffer, uint8(uint8(0)), BACnetDataType(BACnetDataType_BACNET_OBJECT_IDENTIFIER))
+	if _textMessageSourceDeviceErr != nil {
+		return nil, errors.Wrap(_textMessageSourceDeviceErr, "Error parsing 'textMessageSourceDevice' field")
+	}
+	textMessageSourceDevice := CastBACnetContextTagObjectIdentifier(_textMessageSourceDevice)
+	if closeErr := readBuffer.CloseContext("textMessageSourceDevice"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Optional Field (messageClass) (Can be skipped, if a given expression evaluates to false)
+	var messageClass *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass = nil
+	{
+		currentPos = positionAware.GetPos()
+		if pullErr := readBuffer.PullContext("messageClass"); pullErr != nil {
+			return nil, pullErr
+		}
+		_val, _err := BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassParse(readBuffer, uint8(1))
+		switch {
+		case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
+			readBuffer.Reset(currentPos)
+		case _err != nil:
+			return nil, errors.Wrap(_err, "Error parsing 'messageClass' field")
+		default:
+			messageClass = CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass(_val)
+			if closeErr := readBuffer.CloseContext("messageClass"); closeErr != nil {
+				return nil, closeErr
+			}
+		}
+	}
+
+	// Simple Field (messagePriority)
+	if pullErr := readBuffer.PullContext("messagePriority"); pullErr != nil {
+		return nil, pullErr
+	}
+	_messagePriority, _messagePriorityErr := BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTaggedParse(readBuffer, uint8(uint8(2)))
+	if _messagePriorityErr != nil {
+		return nil, errors.Wrap(_messagePriorityErr, "Error parsing 'messagePriority' field")
+	}
+	messagePriority := CastBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged(_messagePriority)
+	if closeErr := readBuffer.CloseContext("messagePriority"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Simple Field (message)
+	if pullErr := readBuffer.PullContext("message"); pullErr != nil {
+		return nil, pullErr
+	}
+	_message, _messageErr := BACnetContextTagParse(readBuffer, uint8(uint8(3)), BACnetDataType(BACnetDataType_CHARACTER_STRING))
+	if _messageErr != nil {
+		return nil, errors.Wrap(_messageErr, "Error parsing 'message' field")
+	}
+	message := CastBACnetContextTagCharacterString(_message)
+	if closeErr := readBuffer.CloseContext("message"); closeErr != nil {
+		return nil, closeErr
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestConfirmedTextMessage"); closeErr != nil {
@@ -128,6 +241,10 @@ func BACnetConfirmedServiceRequestConfirmedTextMessageParse(readBuffer utils.Rea
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestConfirmedTextMessage{
+		TextMessageSourceDevice:       CastBACnetContextTagObjectIdentifier(textMessageSourceDevice),
+		MessageClass:                  CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass(messageClass),
+		MessagePriority:               CastBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged(messagePriority),
+		Message:                       CastBACnetContextTagCharacterString(message),
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +259,58 @@ func (m *BACnetConfirmedServiceRequestConfirmedTextMessage) Serialize(writeBuffe
 			return pushErr
 		}
 
+		// Simple Field (textMessageSourceDevice)
+		if pushErr := writeBuffer.PushContext("textMessageSourceDevice"); pushErr != nil {
+			return pushErr
+		}
+		_textMessageSourceDeviceErr := m.TextMessageSourceDevice.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("textMessageSourceDevice"); popErr != nil {
+			return popErr
+		}
+		if _textMessageSourceDeviceErr != nil {
+			return errors.Wrap(_textMessageSourceDeviceErr, "Error serializing 'textMessageSourceDevice' field")
+		}
+
+		// Optional Field (messageClass) (Can be skipped, if the value is null)
+		var messageClass *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass = nil
+		if m.MessageClass != nil {
+			if pushErr := writeBuffer.PushContext("messageClass"); pushErr != nil {
+				return pushErr
+			}
+			messageClass = m.MessageClass
+			_messageClassErr := messageClass.Serialize(writeBuffer)
+			if popErr := writeBuffer.PopContext("messageClass"); popErr != nil {
+				return popErr
+			}
+			if _messageClassErr != nil {
+				return errors.Wrap(_messageClassErr, "Error serializing 'messageClass' field")
+			}
+		}
+
+		// Simple Field (messagePriority)
+		if pushErr := writeBuffer.PushContext("messagePriority"); pushErr != nil {
+			return pushErr
+		}
+		_messagePriorityErr := m.MessagePriority.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("messagePriority"); popErr != nil {
+			return popErr
+		}
+		if _messagePriorityErr != nil {
+			return errors.Wrap(_messagePriorityErr, "Error serializing 'messagePriority' field")
+		}
+
+		// Simple Field (message)
+		if pushErr := writeBuffer.PushContext("message"); pushErr != nil {
+			return pushErr
+		}
+		_messageErr := m.Message.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("message"); popErr != nil {
+			return popErr
+		}
+		if _messageErr != nil {
+			return errors.Wrap(_messageErr, "Error serializing 'message' field")
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestConfirmedTextMessage"); popErr != nil {
 			return popErr
 		}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
new file mode 100644
index 0000000000..387b77fcbe
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
@@ -0,0 +1,291 @@
+/*
+ * 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.
+
+// BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass is the data-structure of this message
+type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass struct {
+	OpeningTag      *BACnetOpeningTag
+	PeekedTagHeader *BACnetTagHeader
+	ClosingTag      *BACnetClosingTag
+
+	// Arguments.
+	TagNumber uint8
+	Child     IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChild
+}
+
+// IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass is the corresponding interface of BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+type IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass interface {
+	// GetOpeningTag returns OpeningTag (property field)
+	GetOpeningTag() *BACnetOpeningTag
+	// GetPeekedTagHeader returns PeekedTagHeader (property field)
+	GetPeekedTagHeader() *BACnetTagHeader
+	// GetClosingTag returns ClosingTag (property field)
+	GetClosingTag() *BACnetClosingTag
+	// GetPeekedTagNumber returns PeekedTagNumber (virtual field)
+	GetPeekedTagNumber() uint8
+	// 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
+}
+
+type IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassParent interface {
+	SerializeParent(writeBuffer utils.WriteBuffer, child IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, serializeChildFunction func() error) error
+	GetTypeName() string
+}
+
+type IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChild interface {
+	Serialize(writeBuffer utils.WriteBuffer) error
+	InitializeParent(parent *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag)
+	GetParent() *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+
+	GetTypeName() string
+	IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetOpeningTag() *BACnetOpeningTag {
+	return m.OpeningTag
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetPeekedTagHeader() *BACnetTagHeader {
+	return m.PeekedTagHeader
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetClosingTag() *BACnetClosingTag {
+	return m.ClosingTag
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for virtual fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetPeekedTagNumber() uint8 {
+	return uint8(m.GetPeekedTagHeader().GetActualTagNumber())
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass factory function for BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+func NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass(openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass {
+	return &BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass{OpeningTag: openingTag, PeekedTagHeader: peekedTagHeader, ClosingTag: closingTag, TagNumber: tagNumber}
+}
+
+func CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass(structType interface{}) *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass {
+	if casted, ok := structType.(BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass); ok {
+		return &casted
+	}
+	if casted, ok := structType.(*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass); ok {
+		return casted
+	}
+	if casted, ok := structType.(IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChild); ok {
+		return casted.GetParent()
+	}
+	return nil
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetTypeName() string {
+	return "BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass"
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetLengthInBitsConditional(lastItem bool) uint16 {
+	return m.Child.GetLengthInBits()
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetParentLengthInBits() uint16 {
+	lengthInBits := uint16(0)
+
+	// Simple field (openingTag)
+	lengthInBits += m.OpeningTag.GetLengthInBits()
+
+	// A virtual field doesn't have any in- or output.
+
+	// Simple field (closingTag)
+	lengthInBits += m.ClosingTag.GetLengthInBits()
+
+	return lengthInBits
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass"); pullErr != nil {
+		return nil, pullErr
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (openingTag)
+	if pullErr := readBuffer.PullContext("openingTag"); pullErr != nil {
+		return nil, pullErr
+	}
+	_openingTag, _openingTagErr := BACnetOpeningTagParse(readBuffer, uint8(tagNumber))
+	if _openingTagErr != nil {
+		return nil, errors.Wrap(_openingTagErr, "Error parsing 'openingTag' field")
+	}
+	openingTag := CastBACnetOpeningTag(_openingTag)
+	if closeErr := readBuffer.CloseContext("openingTag"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Peek Field (peekedTagHeader)
+	currentPos = positionAware.GetPos()
+	if pullErr := readBuffer.PullContext("peekedTagHeader"); pullErr != nil {
+		return nil, pullErr
+	}
+	peekedTagHeader, _ := BACnetTagHeaderParse(readBuffer)
+	readBuffer.Reset(currentPos)
+
+	// Virtual field
+	_peekedTagNumber := peekedTagHeader.GetActualTagNumber()
+	peekedTagNumber := uint8(_peekedTagNumber)
+	_ = peekedTagNumber
+
+	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+	type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChild interface {
+		InitializeParent(*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, *BACnetOpeningTag, *BACnetTagHeader, *BACnetClosingTag)
+		GetParent() *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+	}
+	var _child BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChild
+	var typeSwitchError error
+	switch {
+	case peekedTagNumber == uint8(0): // BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric
+		_child, typeSwitchError = BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumericParse(readBuffer, tagNumber)
+	case peekedTagNumber == uint8(1): // BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter
+		_child, typeSwitchError = BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacterParse(readBuffer, tagNumber)
+	default:
+		// TODO: return actual type
+		typeSwitchError = errors.New("Unmapped type")
+	}
+	if typeSwitchError != nil {
+		return nil, errors.Wrap(typeSwitchError, "Error parsing sub-type for type-switch.")
+	}
+
+	// Simple Field (closingTag)
+	if pullErr := readBuffer.PullContext("closingTag"); pullErr != nil {
+		return nil, pullErr
+	}
+	_closingTag, _closingTagErr := BACnetClosingTagParse(readBuffer, uint8(tagNumber))
+	if _closingTagErr != nil {
+		return nil, errors.Wrap(_closingTagErr, "Error parsing 'closingTag' field")
+	}
+	closingTag := CastBACnetClosingTag(_closingTag)
+	if closeErr := readBuffer.CloseContext("closingTag"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Finish initializing
+	_child.InitializeParent(_child.GetParent(), openingTag, peekedTagHeader, closingTag)
+	return _child.GetParent(), nil
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) Serialize(writeBuffer utils.WriteBuffer) error {
+	return m.Child.Serialize(writeBuffer)
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) SerializeParent(writeBuffer utils.WriteBuffer, child IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, serializeChildFunction func() error) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	if pushErr := writeBuffer.PushContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass"); pushErr != nil {
+		return pushErr
+	}
+
+	// Simple Field (openingTag)
+	if pushErr := writeBuffer.PushContext("openingTag"); pushErr != nil {
+		return pushErr
+	}
+	_openingTagErr := m.OpeningTag.Serialize(writeBuffer)
+	if popErr := writeBuffer.PopContext("openingTag"); popErr != nil {
+		return popErr
+	}
+	if _openingTagErr != nil {
+		return errors.Wrap(_openingTagErr, "Error serializing 'openingTag' field")
+	}
+	// Virtual field
+	if _peekedTagNumberErr := writeBuffer.WriteVirtual("peekedTagNumber", m.GetPeekedTagNumber()); _peekedTagNumberErr != nil {
+		return errors.Wrap(_peekedTagNumberErr, "Error serializing 'peekedTagNumber' 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")
+	}
+
+	// Simple Field (closingTag)
+	if pushErr := writeBuffer.PushContext("closingTag"); pushErr != nil {
+		return pushErr
+	}
+	_closingTagErr := m.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("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass"); popErr != nil {
+		return popErr
+	}
+	return nil
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass) 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/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter.go
new file mode 100644
index 0000000000..c5eebeadc7
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter.go
@@ -0,0 +1,204 @@
+/*
+ * 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.
+
+// BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter is the data-structure of this message
+type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter struct {
+	*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+	CharacterValue *BACnetContextTagCharacterString
+
+	// Arguments.
+	TagNumber uint8
+}
+
+// IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter is the corresponding interface of BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter
+type IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter interface {
+	IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+	// GetCharacterValue returns CharacterValue (property field)
+	GetCharacterValue() *BACnetContextTagCharacterString
+	// 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 *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) InitializeParent(parent *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag) {
+	m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.OpeningTag = openingTag
+	m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.PeekedTagHeader = peekedTagHeader
+	m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.ClosingTag = closingTag
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) GetParent() *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass {
+	return m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) GetCharacterValue() *BACnetContextTagCharacterString {
+	return m.CharacterValue
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter factory function for BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter
+func NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter(characterValue *BACnetContextTagCharacterString, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter {
+	_result := &BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter{
+		CharacterValue: characterValue,
+		BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass: NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass(openingTag, peekedTagHeader, closingTag, tagNumber),
+	}
+	_result.Child = _result
+	return _result
+}
+
+func CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter(structType interface{}) *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter {
+	if casted, ok := structType.(BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter); ok {
+		return &casted
+	}
+	if casted, ok := structType.(*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter); ok {
+		return casted
+	}
+	if casted, ok := structType.(BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass); ok {
+		return CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter(casted.Child)
+	}
+	if casted, ok := structType.(*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass); ok {
+		return CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter(casted.Child)
+	}
+	return nil
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) GetTypeName() string {
+	return "BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter"
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
+
+	// Simple field (characterValue)
+	lengthInBits += m.CharacterValue.GetLengthInBits()
+
+	return lengthInBits
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacterParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter"); pullErr != nil {
+		return nil, pullErr
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (characterValue)
+	if pullErr := readBuffer.PullContext("characterValue"); pullErr != nil {
+		return nil, pullErr
+	}
+	_characterValue, _characterValueErr := BACnetContextTagParse(readBuffer, uint8(uint8(1)), BACnetDataType(BACnetDataType_CHARACTER_STRING))
+	if _characterValueErr != nil {
+		return nil, errors.Wrap(_characterValueErr, "Error parsing 'characterValue' field")
+	}
+	characterValue := CastBACnetContextTagCharacterString(_characterValue)
+	if closeErr := readBuffer.CloseContext("characterValue"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Create a partially initialized instance
+	_child := &BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter{
+		CharacterValue: CastBACnetContextTagCharacterString(characterValue),
+		BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass: &BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass{},
+	}
+	_child.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.Child = _child
+	return _child, nil
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter"); pushErr != nil {
+			return pushErr
+		}
+
+		// Simple Field (characterValue)
+		if pushErr := writeBuffer.PushContext("characterValue"); pushErr != nil {
+			return pushErr
+		}
+		_characterValueErr := m.CharacterValue.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("characterValue"); popErr != nil {
+			return popErr
+		}
+		if _characterValueErr != nil {
+			return errors.Wrap(_characterValueErr, "Error serializing 'characterValue' field")
+		}
+
+		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter"); popErr != nil {
+			return popErr
+		}
+		return nil
+	}
+	return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter) 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/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric.go
new file mode 100644
index 0000000000..2f734a99ba
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric.go
@@ -0,0 +1,204 @@
+/*
+ * 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.
+
+// BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric is the data-structure of this message
+type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric struct {
+	*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+	NumericValue *BACnetContextTagUnsignedInteger
+
+	// Arguments.
+	TagNumber uint8
+}
+
+// IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric is the corresponding interface of BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric
+type IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric interface {
+	IBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+	// GetNumericValue returns NumericValue (property field)
+	GetNumericValue() *BACnetContextTagUnsignedInteger
+	// 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 *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) InitializeParent(parent *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag) {
+	m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.OpeningTag = openingTag
+	m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.PeekedTagHeader = peekedTagHeader
+	m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.ClosingTag = closingTag
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) GetParent() *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass {
+	return m.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) GetNumericValue() *BACnetContextTagUnsignedInteger {
+	return m.NumericValue
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+// NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric factory function for BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric
+func NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric(numericValue *BACnetContextTagUnsignedInteger, openingTag *BACnetOpeningTag, peekedTagHeader *BACnetTagHeader, closingTag *BACnetClosingTag, tagNumber uint8) *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric {
+	_result := &BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric{
+		NumericValue: numericValue,
+		BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass: NewBACnetConfirmedServiceRequestConfirmedTextMessageMessageClass(openingTag, peekedTagHeader, closingTag, tagNumber),
+	}
+	_result.Child = _result
+	return _result
+}
+
+func CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric(structType interface{}) *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric {
+	if casted, ok := structType.(BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric); ok {
+		return &casted
+	}
+	if casted, ok := structType.(*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric); ok {
+		return casted
+	}
+	if casted, ok := structType.(BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass); ok {
+		return CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric(casted.Child)
+	}
+	if casted, ok := structType.(*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass); ok {
+		return CastBACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric(casted.Child)
+	}
+	return nil
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) GetTypeName() string {
+	return "BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric"
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) GetLengthInBits() uint16 {
+	return m.GetLengthInBitsConditional(false)
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) GetLengthInBitsConditional(lastItem bool) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits())
+
+	// Simple field (numericValue)
+	lengthInBits += m.NumericValue.GetLengthInBits()
+
+	return lengthInBits
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumericParse(readBuffer utils.ReadBuffer, tagNumber uint8) (*BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric"); pullErr != nil {
+		return nil, pullErr
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	// Simple Field (numericValue)
+	if pullErr := readBuffer.PullContext("numericValue"); pullErr != nil {
+		return nil, pullErr
+	}
+	_numericValue, _numericValueErr := BACnetContextTagParse(readBuffer, uint8(uint8(0)), BACnetDataType(BACnetDataType_UNSIGNED_INTEGER))
+	if _numericValueErr != nil {
+		return nil, errors.Wrap(_numericValueErr, "Error parsing 'numericValue' field")
+	}
+	numericValue := CastBACnetContextTagUnsignedInteger(_numericValue)
+	if closeErr := readBuffer.CloseContext("numericValue"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric"); closeErr != nil {
+		return nil, closeErr
+	}
+
+	// Create a partially initialized instance
+	_child := &BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric{
+		NumericValue: CastBACnetContextTagUnsignedInteger(numericValue),
+		BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass: &BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass{},
+	}
+	_child.BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.Child = _child
+	return _child, nil
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) Serialize(writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric"); pushErr != nil {
+			return pushErr
+		}
+
+		// Simple Field (numericValue)
+		if pushErr := writeBuffer.PushContext("numericValue"); pushErr != nil {
+			return pushErr
+		}
+		_numericValueErr := m.NumericValue.Serialize(writeBuffer)
+		if popErr := writeBuffer.PopContext("numericValue"); popErr != nil {
+			return popErr
+		}
+		if _numericValueErr != nil {
+			return errors.Wrap(_numericValueErr, "Error serializing 'numericValue' field")
+		}
+
+		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric"); popErr != nil {
+			return popErr
+		}
+		return nil
+	}
+	return m.SerializeParent(writeBuffer, m, ser)
+}
+
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric) 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/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority.go
new file mode 100644
index 0000000000..ffe8bfecda
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority.go
@@ -0,0 +1,122 @@
+/*
+ * 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.
+
+// BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority is an enum
+type BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority uint8
+
+type IBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority interface {
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+	BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_NORMAL BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority = 0
+	BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_URGENT BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority = 1
+)
+
+var BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityValues []BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority
+
+func init() {
+	_ = errors.New
+	BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityValues = []BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority{
+		BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_NORMAL,
+		BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_URGENT,
+	}
+}
+
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityByValue(value uint8) BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority {
+	switch value {
+	case 0:
+		return BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_NORMAL
+	case 1:
+		return BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_URGENT
+	}
+	return 0
+}
+
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityByName(value string) BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority {
+	switch value {
+	case "NORMAL":
+		return BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_NORMAL
+	case "URGENT":
+		return BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_URGENT
+	}
+	return 0
+}
+
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityKnows(value uint8) bool {
+	for _, typeValue := range BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityValues {
+		if uint8(typeValue) == value {
+			return true
+		}
+	}
+	return false
+}
+
+func CastBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority(structType interface{}) BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority {
+	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority {
+		if sBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority, ok := typ.(BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority); ok {
+			return sBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority
+		}
+		return 0
+	}
+	return castFunc(structType)
+}
+
+func (m BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority) GetLengthInBits() uint16 {
+	return 8
+}
+
+func (m BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityParse(readBuffer utils.ReadBuffer) (BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority, error) {
+	val, err := readBuffer.ReadUint8("BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority", 8)
+	if err != nil {
+		return 0, nil
+	}
+	return BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityByValue(val), nil
+}
+
+func (e BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority) Serialize(writeBuffer utils.WriteBuffer) error {
+	return writeBuffer.WriteUint8("BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority", 8, uint8(e), utils.WithAdditionalStringRepresentation(e.name()))
+}
+
+func (e BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority) name() string {
+	switch e {
+	case BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_NORMAL:
+		return "NORMAL"
+	case BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_URGENT:
+		return "URGENT"
+	}
+	return ""
+}
+
+func (e BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority) String() string {
+	return e.name()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged.go
similarity index 56%
copy from plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged.go
copy to plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged.go
index e74f28a780..23360a1f66 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged.go
@@ -26,22 +26,22 @@ import (
 
 // Code generated by code-generation. DO NOT EDIT.
 
-// BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged is the data-structure of this message
-type BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged struct {
+// BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged is the data-structure of this message
+type BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged struct {
 	Header *BACnetTagHeader
-	Value  BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
+	Value  BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority
 
 	// Arguments.
 	TagNumber uint8
 	TagClass  TagClass
 }
 
-// IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged is the corresponding interface of BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged
-type IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged interface {
+// IBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged is the corresponding interface of BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged
+type IBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged interface {
 	// GetHeader returns Header (property field)
 	GetHeader() *BACnetTagHeader
 	// GetValue returns Value (property field)
-	GetValue() BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
+	GetValue() BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -55,11 +55,11 @@ type IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged interfa
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetHeader() *BACnetTagHeader {
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) GetHeader() *BACnetTagHeader {
 	return m.Header
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetValue() BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) GetValue() BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority {
 	return m.Value
 }
 
@@ -68,30 +68,30 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Get
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
 
-// NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged factory function for BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged
-func NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(header *BACnetTagHeader, value BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable, tagNumber uint8, tagClass TagClass) *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged {
-	return &BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged{Header: header, Value: value, TagNumber: tagNumber, TagClass: tagClass}
+// NewBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged factory function for BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged
+func NewBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged(header *BACnetTagHeader, value BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority, tagNumber uint8, tagClass TagClass) *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged {
+	return &BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged{Header: header, Value: value, TagNumber: tagNumber, TagClass: tagClass}
 }
 
-func CastBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(structType interface{}) *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged {
-	if casted, ok := structType.(BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged); ok {
+func CastBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged(structType interface{}) *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged {
+	if casted, ok := structType.(BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged); ok {
 		return &casted
 	}
-	if casted, ok := structType.(*BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged); ok {
+	if casted, ok := structType.(*BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged); ok {
 		return casted
 	}
 	return nil
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetTypeName() string {
-	return "BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) GetTypeName() string {
+	return "BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged"
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetLengthInBits() uint16 {
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) GetLengthInBits() uint16 {
 	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (header)
@@ -103,14 +103,14 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Get
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetLengthInBytes() uint16 {
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTaggedParse(readBuffer utils.ReadBuffer, tagNumber uint8, tagClass TagClass) (*BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged, error) {
+func BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTaggedParse(readBuffer utils.ReadBuffer, tagNumber uint8, tagClass TagClass) (*BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged, error) {
 	positionAware := readBuffer
 	_ = positionAware
-	if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); pullErr != nil {
+	if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged"); pullErr != nil {
 		return nil, pullErr
 	}
 	currentPos := positionAware.GetPos()
@@ -140,24 +140,24 @@ func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTaggedParse(rea
 	}
 
 	// Manual Field (value)
-	_value, _valueErr := ReadEnumGenericFailing(readBuffer, header.GetActualLength(), BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_ENABLE)
+	_value, _valueErr := ReadEnumGenericFailing(readBuffer, header.GetActualLength(), BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority_NORMAL)
 	if _valueErr != nil {
 		return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
 	}
-	value := _value.(BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable)
+	value := _value.(BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority)
 
-	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create the instance
-	return NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(header, value, tagNumber, tagClass), nil
+	return NewBACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged(header, value, tagNumber, tagClass), nil
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) Serialize(writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
-	if pushErr := writeBuffer.PushContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); pushErr != nil {
+	if pushErr := writeBuffer.PushContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged"); pushErr != nil {
 		return pushErr
 	}
 
@@ -179,13 +179,13 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Ser
 		return errors.Wrap(_valueErr, "Error serializing 'value' field")
 	}
 
-	if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); popErr != nil {
+	if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged"); popErr != nil {
 		return popErr
 	}
 	return nil
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) String() string {
+func (m *BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
index 643dc489cf..52df443d09 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
@@ -31,7 +31,7 @@ import (
 type BACnetConfirmedServiceRequestDeviceCommunicationControl struct {
 	*BACnetConfirmedServiceRequest
 	TimeDuration  *BACnetContextTagUnsignedInteger
-	EnableDisable *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged
+	EnableDisable *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged
 	Password      *BACnetContextTagCharacterString
 
 	// Arguments.
@@ -44,7 +44,7 @@ type IBACnetConfirmedServiceRequestDeviceCommunicationControl interface {
 	// GetTimeDuration returns TimeDuration (property field)
 	GetTimeDuration() *BACnetContextTagUnsignedInteger
 	// GetEnableDisable returns EnableDisable (property field)
-	GetEnableDisable() *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged
+	GetEnableDisable() *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged
 	// GetPassword returns Password (property field)
 	GetPassword() *BACnetContextTagCharacterString
 	// GetLengthInBytes returns the length in bytes
@@ -85,7 +85,7 @@ func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetTimeDuratio
 	return m.TimeDuration
 }
 
-func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetEnableDisable() *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetEnableDisable() *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged {
 	return m.EnableDisable
 }
 
@@ -99,7 +99,7 @@ func (m *BACnetConfirmedServiceRequestDeviceCommunicationControl) GetPassword()
 ///////////////////////////////////////////////////////////
 
 // NewBACnetConfirmedServiceRequestDeviceCommunicationControl factory function for BACnetConfirmedServiceRequestDeviceCommunicationControl
-func NewBACnetConfirmedServiceRequestDeviceCommunicationControl(timeDuration *BACnetContextTagUnsignedInteger, enableDisable *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged, password *BACnetContextTagCharacterString, serviceRequestLength uint16) *BACnetConfirmedServiceRequestDeviceCommunicationControl {
+func NewBACnetConfirmedServiceRequestDeviceCommunicationControl(timeDuration *BACnetContextTagUnsignedInteger, enableDisable *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged, password *BACnetContextTagCharacterString, serviceRequestLength uint16) *BACnetConfirmedServiceRequestDeviceCommunicationControl {
 	_result := &BACnetConfirmedServiceRequestDeviceCommunicationControl{
 		TimeDuration:                  timeDuration,
 		EnableDisable:                 enableDisable,
@@ -191,11 +191,11 @@ func BACnetConfirmedServiceRequestDeviceCommunicationControlParse(readBuffer uti
 	if pullErr := readBuffer.PullContext("enableDisable"); pullErr != nil {
 		return nil, pullErr
 	}
-	_enableDisable, _enableDisableErr := BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTaggedParse(readBuffer, uint8(uint8(1)), TagClass(TagClass_CONTEXT_SPECIFIC_TAGS))
+	_enableDisable, _enableDisableErr := BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTaggedParse(readBuffer, uint8(uint8(1)), TagClass(TagClass_CONTEXT_SPECIFIC_TAGS))
 	if _enableDisableErr != nil {
 		return nil, errors.Wrap(_enableDisableErr, "Error parsing 'enableDisable' field")
 	}
-	enableDisable := CastBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(_enableDisable)
+	enableDisable := CastBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged(_enableDisable)
 	if closeErr := readBuffer.CloseContext("enableDisable"); closeErr != nil {
 		return nil, closeErr
 	}
@@ -228,7 +228,7 @@ func BACnetConfirmedServiceRequestDeviceCommunicationControlParse(readBuffer uti
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestDeviceCommunicationControl{
 		TimeDuration:                  CastBACnetContextTagUnsignedInteger(timeDuration),
-		EnableDisable:                 CastBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(enableDisable),
+		EnableDisable:                 CastBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged(enableDisable),
 		Password:                      CastBACnetContextTagCharacterString(password),
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.go
new file mode 100644
index 0000000000..4a2cc86ea4
--- /dev/null
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.go
@@ -0,0 +1,130 @@
+/*
+ * 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.
+
+// BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable is an enum
+type BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable uint8
+
+type IBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable interface {
+	Serialize(writeBuffer utils.WriteBuffer) error
+}
+
+const (
+	BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_ENABLE             BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable = 0
+	BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE            BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable = 1
+	BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE_INITIATION BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable = 2
+)
+
+var BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableValues []BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable
+
+func init() {
+	_ = errors.New
+	BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableValues = []BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable{
+		BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_ENABLE,
+		BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE,
+		BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE_INITIATION,
+	}
+}
+
+func BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableByValue(value uint8) BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable {
+	switch value {
+	case 0:
+		return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_ENABLE
+	case 1:
+		return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE
+	case 2:
+		return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE_INITIATION
+	}
+	return 0
+}
+
+func BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableByName(value string) BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable {
+	switch value {
+	case "ENABLE":
+		return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_ENABLE
+	case "DISABLE":
+		return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE
+	case "DISABLE_INITIATION":
+		return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE_INITIATION
+	}
+	return 0
+}
+
+func BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableKnows(value uint8) bool {
+	for _, typeValue := range BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableValues {
+		if uint8(typeValue) == value {
+			return true
+		}
+	}
+	return false
+}
+
+func CastBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable(structType interface{}) BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable {
+	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable {
+		if sBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable, ok := typ.(BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable); ok {
+			return sBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable
+		}
+		return 0
+	}
+	return castFunc(structType)
+}
+
+func (m BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable) GetLengthInBits() uint16 {
+	return 8
+}
+
+func (m BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable) GetLengthInBytes() uint16 {
+	return m.GetLengthInBits() / 8
+}
+
+func BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableParse(readBuffer utils.ReadBuffer) (BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable, error) {
+	val, err := readBuffer.ReadUint8("BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable", 8)
+	if err != nil {
+		return 0, nil
+	}
+	return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableByValue(val), nil
+}
+
+func (e BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable) Serialize(writeBuffer utils.WriteBuffer) error {
+	return writeBuffer.WriteUint8("BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable", 8, uint8(e), utils.WithAdditionalStringRepresentation(e.name()))
+}
+
+func (e BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable) name() string {
+	switch e {
+	case BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_ENABLE:
+		return "ENABLE"
+	case BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE:
+		return "DISABLE"
+	case BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_DISABLE_INITIATION:
+		return "DISABLE_INITIATION"
+	}
+	return ""
+}
+
+func (e BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable) String() string {
+	return e.name()
+}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged.go
similarity index 55%
rename from plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged.go
rename to plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged.go
index e74f28a780..6abb080ee3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged.go
@@ -26,22 +26,22 @@ import (
 
 // Code generated by code-generation. DO NOT EDIT.
 
-// BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged is the data-structure of this message
-type BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged struct {
+// BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged is the data-structure of this message
+type BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged struct {
 	Header *BACnetTagHeader
-	Value  BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
+	Value  BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable
 
 	// Arguments.
 	TagNumber uint8
 	TagClass  TagClass
 }
 
-// IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged is the corresponding interface of BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged
-type IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged interface {
+// IBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged is the corresponding interface of BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged
+type IBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged interface {
 	// GetHeader returns Header (property field)
 	GetHeader() *BACnetTagHeader
 	// GetValue returns Value (property field)
-	GetValue() BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
+	GetValue() BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -55,11 +55,11 @@ type IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged interfa
 /////////////////////// Accessors for property fields.
 ///////////////////////
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetHeader() *BACnetTagHeader {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) GetHeader() *BACnetTagHeader {
 	return m.Header
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetValue() BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) GetValue() BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable {
 	return m.Value
 }
 
@@ -68,30 +68,30 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Get
 ///////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////
 
-// NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged factory function for BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged
-func NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(header *BACnetTagHeader, value BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable, tagNumber uint8, tagClass TagClass) *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged {
-	return &BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged{Header: header, Value: value, TagNumber: tagNumber, TagClass: tagClass}
+// NewBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged factory function for BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged
+func NewBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged(header *BACnetTagHeader, value BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable, tagNumber uint8, tagClass TagClass) *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged {
+	return &BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged{Header: header, Value: value, TagNumber: tagNumber, TagClass: tagClass}
 }
 
-func CastBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(structType interface{}) *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged {
-	if casted, ok := structType.(BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged); ok {
+func CastBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged(structType interface{}) *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged {
+	if casted, ok := structType.(BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged); ok {
 		return &casted
 	}
-	if casted, ok := structType.(*BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged); ok {
+	if casted, ok := structType.(*BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged); ok {
 		return casted
 	}
 	return nil
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetTypeName() string {
-	return "BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) GetTypeName() string {
+	return "BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged"
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetLengthInBits() uint16 {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) GetLengthInBits() uint16 {
 	return m.GetLengthInBitsConditional(false)
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetLengthInBitsConditional(lastItem bool) uint16 {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(0)
 
 	// Simple field (header)
@@ -103,14 +103,14 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Get
 	return lengthInBits
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) GetLengthInBytes() uint16 {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTaggedParse(readBuffer utils.ReadBuffer, tagNumber uint8, tagClass TagClass) (*BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged, error) {
+func BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTaggedParse(readBuffer utils.ReadBuffer, tagNumber uint8, tagClass TagClass) (*BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged, error) {
 	positionAware := readBuffer
 	_ = positionAware
-	if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); pullErr != nil {
+	if pullErr := readBuffer.PullContext("BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged"); pullErr != nil {
 		return nil, pullErr
 	}
 	currentPos := positionAware.GetPos()
@@ -140,24 +140,24 @@ func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTaggedParse(rea
 	}
 
 	// Manual Field (value)
-	_value, _valueErr := ReadEnumGenericFailing(readBuffer, header.GetActualLength(), BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_ENABLE)
+	_value, _valueErr := ReadEnumGenericFailing(readBuffer, header.GetActualLength(), BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable_ENABLE)
 	if _valueErr != nil {
 		return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
 	}
-	value := _value.(BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable)
+	value := _value.(BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable)
 
-	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); closeErr != nil {
+	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged"); closeErr != nil {
 		return nil, closeErr
 	}
 
 	// Create the instance
-	return NewBACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged(header, value, tagNumber, tagClass), nil
+	return NewBACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged(header, value, tagNumber, tagClass), nil
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Serialize(writeBuffer utils.WriteBuffer) error {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) Serialize(writeBuffer utils.WriteBuffer) error {
 	positionAware := writeBuffer
 	_ = positionAware
-	if pushErr := writeBuffer.PushContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); pushErr != nil {
+	if pushErr := writeBuffer.PushContext("BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged"); pushErr != nil {
 		return pushErr
 	}
 
@@ -179,13 +179,13 @@ func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) Ser
 		return errors.Wrap(_valueErr, "Error serializing 'value' field")
 	}
 
-	if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged"); popErr != nil {
+	if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged"); popErr != nil {
 		return popErr
 	}
 	return nil
 }
 
-func (m *BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged) String() string {
+func (m *BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged) String() string {
 	if m == nil {
 		return "<nil>"
 	}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.go
deleted file mode 100644
index 923d4fec9a..0000000000
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.go
+++ /dev/null
@@ -1,130 +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"
-	"github.com/pkg/errors"
-)
-
-// Code generated by code-generation. DO NOT EDIT.
-
-// BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable is an enum
-type BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable uint8
-
-type IBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable interface {
-	Serialize(writeBuffer utils.WriteBuffer) error
-}
-
-const (
-	BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_ENABLE             BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable = 0
-	BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE            BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable = 1
-	BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE_INITIATION BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable = 2
-)
-
-var BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableValues []BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
-
-func init() {
-	_ = errors.New
-	BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableValues = []BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable{
-		BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_ENABLE,
-		BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE,
-		BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE_INITIATION,
-	}
-}
-
-func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableByValue(value uint8) BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
-	switch value {
-	case 0:
-		return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_ENABLE
-	case 1:
-		return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE
-	case 2:
-		return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE_INITIATION
-	}
-	return 0
-}
-
-func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableByName(value string) BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
-	switch value {
-	case "ENABLE":
-		return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_ENABLE
-	case "DISABLE":
-		return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE
-	case "DISABLE_INITIATION":
-		return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE_INITIATION
-	}
-	return 0
-}
-
-func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableKnows(value uint8) bool {
-	for _, typeValue := range BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableValues {
-		if uint8(typeValue) == value {
-			return true
-		}
-	}
-	return false
-}
-
-func CastBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable(structType interface{}) BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable {
-		if sBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable, ok := typ.(BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable); ok {
-			return sBACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
-		}
-		return 0
-	}
-	return castFunc(structType)
-}
-
-func (m BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetLengthInBits() uint16 {
-	return 8
-}
-
-func (m BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) GetLengthInBytes() uint16 {
-	return m.GetLengthInBits() / 8
-}
-
-func BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableParse(readBuffer utils.ReadBuffer) (BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable, error) {
-	val, err := readBuffer.ReadUint8("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable", 8)
-	if err != nil {
-		return 0, nil
-	}
-	return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableByValue(val), nil
-}
-
-func (e BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) Serialize(writeBuffer utils.WriteBuffer) error {
-	return writeBuffer.WriteUint8("BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable", 8, uint8(e), utils.WithAdditionalStringRepresentation(e.name()))
-}
-
-func (e BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) name() string {
-	switch e {
-	case BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_ENABLE:
-		return "ENABLE"
-	case BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE:
-		return "DISABLE"
-	case BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable_DISABLE_INITIATION:
-		return "DISABLE_INITIATION"
-	}
-	return ""
-}
-
-func (e BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) String() string {
-	return e.name()
-}
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec
index 3ecce72671..8d2a45d4d6 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnet-private-enums.mspec
@@ -158,6 +158,19 @@
     ////
 ]
 
+// Attention: No proprietary extension allowed
+[enum uint 8 BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority
+    ['0' NORMAL                                 ]
+    ['1' URGENT                                 ]
+]
+
+// Attention: No proprietary extension allowed
+[enum uint 8 BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable
+    ['0' ENABLE                                 ]
+    ['1' DISABLE                                ]
+    ['2' DISABLE_INITIATION                     ]
+]
+
 // Attention: No proprietary extension allowed
 [enum uint 8 BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilter
     ['0' ALL                                    ]
@@ -174,13 +187,6 @@
     ['4' ACTIVE                                 ]
 ]
 
-// Attention: No proprietary extension allowed
-[enum uint 8 BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable
-    ['0' ENABLE                                 ]
-    ['1' DISABLE                                ]
-    ['2' DISABLE_INITIATION                     ]
-]
-
 // Attention: No proprietary extension allowed
 [enum uint 8 BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice
     ['0x0' COLDSTART                            ]
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index 6b05bdd585..d2a78407d9 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -92,8 +92,8 @@
 ]
 
 [type NPDU(uint 16 npduLength)
-    [simple   uint 8      protocolVersionNumber                                                                   ]
-    [simple   NPDUControl control                                                                                 ]
+    [simple   uint 8      protocolVersionNumber                                                                     ]
+    [simple   NPDUControl control                                                                                   ]
     [optional   uint 16     destinationNetworkAddress   'control.destinationSpecified'                              ]
     [optional   uint 8      destinationLength           'control.destinationSpecified'                              ]
     [array      uint 8      destinationAddress count    'control.destinationSpecified ? destinationLength : 0'      ]
@@ -115,17 +115,17 @@
 
 [type NPDUControl
     [simple   bit         messageTypeFieldPresent         ]
-    [reserved   uint 1      '0'                             ]
+    [reserved   uint 1      '0'                           ]
     [simple   bit         destinationSpecified            ]
-    [reserved   uint 1      '0'                             ]
+    [reserved   uint 1      '0'                           ]
     [simple   bit         sourceSpecified                 ]
     [simple   bit         expectingReply                  ]
     [simple   NPDUNetworkPriority
-                            networkPriority                 ]
+                            networkPriority               ]
 ]
 
 [discriminatedType NLM(uint 16 apduLength)
-    [discriminator uint 8   messageType                     ]
+    [discriminator uint 8   messageType                   ]
     [optional      BACnetVendorId
                             vendorId '(messageType >= 128) && (messageType <= 255)']
     [typeSwitch messageType
@@ -141,7 +141,7 @@
         ]
         ['0x03' NLMRejectRouterToNetwork(uint 8 messageType)
             [simple   NLMRejectRouterToNetworkRejectReason
-                                    rejectReason                ]
+                                    rejectReason              ]
             [simple   uint 16     destinationNetworkAddress   ]
         ]
         ['0x04' NLMRouterBusyToNetwork(uint 8 messageType)
@@ -154,13 +154,13 @@
             [simple   uint 8      numberOfPorts               ]
             [array      NLMInitalizeRoutingTablePortMapping
                                     portMappings
-                        count 'numberOfPorts'                   ]
+                        count 'numberOfPorts'                 ]
         ]
         ['0x07' NLMInitalizeRoutingTableAck(uint 8 messageType)
             [simple   uint 8      numberOfPorts               ]
             [array      NLMInitalizeRoutingTablePortMapping
                                     portMappings
-                        count 'numberOfPorts'                   ]
+                        count 'numberOfPorts'                 ]
         ]
         ['0x08' NLMEstablishConnectionToNetwork(uint 8 messageType)
             [simple   uint 16     destinationNetworkAddress   ]
@@ -387,15 +387,15 @@
         // File Access Services
 
         ['ATOMIC_READ_FILE' BACnetConfirmedServiceRequestAtomicReadFile
-            [simple   BACnetApplicationTagObjectIdentifier                        fileIdentifier      ]
-            [simple   BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord   accessMethod        ]
+            [simple   BACnetApplicationTagObjectIdentifier                                               fileIdentifier               ]
+            [simple   BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord                          accessMethod                 ]
         ]
         ['ATOMIC_WRITE_FILE' BACnetConfirmedServiceRequestAtomicWriteFile
-            [simple   BACnetApplicationTagObjectIdentifier                  deviceIdentifier          ]
-            [optional BACnetOpeningTag('0')                               openingTag                ]
-            [simple   BACnetApplicationTagSignedInteger                     fileStartPosition         ]
-            [simple   BACnetApplicationTagOctetString                       fileData                  ]
-            [optional BACnetClosingTag('0')                               closingTag                ]
+            [simple   BACnetApplicationTagObjectIdentifier                                               deviceIdentifier             ]
+            [optional BACnetOpeningTag('0')                                                              openingTag                   ]
+            [simple   BACnetApplicationTagSignedInteger                                                  fileStartPosition            ]
+            [simple   BACnetApplicationTagOctetString                                                    fileData                     ]
+            [optional BACnetClosingTag('0')                                                              closingTag                   ]
         ]
         //
         ////
@@ -403,24 +403,24 @@
         ////
         // Object Access Services
         ['ADD_LIST_ELEMENT' BACnetConfirmedServiceRequestAddListElement
-            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier    ]
-            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier  ]
-            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               arrayIndex          ]
-            [optional BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier.value') listOfElements      ]
+            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier            ]
+            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier          ]
+            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               arrayIndex                  ]
+            [optional BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier.value') listOfElements              ]
         ]
         ['REMOVE_LIST_ELEMENT' BACnetConfirmedServiceRequestRemoveListElement
-            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier    ]
-            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier  ]
-            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               arrayIndex          ]
-            [optional BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier.value') listOfElements      ]
+            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier            ]
+            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier          ]
+            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               arrayIndex                  ]
+            [optional BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier.value') listOfElements              ]
         ]
         ['CREATE_OBJECT' BACnetConfirmedServiceRequestCreateObject
-            [simple   BACnetConfirmedServiceRequestCreateObjectObjectSpecifier('0')                    objectSpecifier     ]
+            [simple   BACnetConfirmedServiceRequestCreateObjectObjectSpecifier('0')                         objectSpecifier             ]
             [optional BACnetPropertyValues('1', 'objectSpecifier.isObjectType?objectSpecifier.objectType:objectSpecifier.objectIdentifier.objectType')
-                                                                                                           listOfValues        ]
+                                                                                                            listOfValues                ]
         ]
         ['DELETE_OBJECT' BACnetConfirmedServiceRequestDeleteObject
-            [simple   BACnetApplicationTagObjectIdentifier                                                 objectIdentifier    ]
+            [simple   BACnetApplicationTagObjectIdentifier                                                  objectIdentifier            ]
         ]
         ['READ_PROPERTY' BACnetConfirmedServiceRequestReadProperty
             [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')
@@ -437,18 +437,18 @@
                             'serviceRequestLength'                   ]
         ]
         ['READ_RANGE' BACnetConfirmedServiceRequestReadRange
-            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier    ]
-            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier  ]
-            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               propertyArrayIndex  ]
+            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier            ]
+            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier          ]
+            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               propertyArrayIndex          ]
             // TODO: this attribute should be named range but this is a keyword in golang (so at this point we should build a language translator which makes keywords safe)
-            [optional BACnetConfirmedServiceRequestReadRangeRange                                           readRange           ]
+            [optional BACnetConfirmedServiceRequestReadRangeRange                                           readRange                   ]
         ]
         ['WRITE_PROPERTY' BACnetConfirmedServiceRequestWriteProperty
-            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier    ]
-            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier  ]
-            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               arrayIndex          ]
-            [simple   BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier.value') propertyValue       ]
-            [optional BACnetContextTagUnsignedInteger('4', 'BACnetDataType.UNSIGNED_INTEGER')               priority            ]
+            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier            ]
+            [simple   BACnetPropertyIdentifierTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')                 propertyIdentifier          ]
+            [optional BACnetContextTagUnsignedInteger('2', 'BACnetDataType.UNSIGNED_INTEGER')               arrayIndex                  ]
+            [simple   BACnetConstructedData('3', 'objectIdentifier.objectType', 'propertyIdentifier.value') propertyValue               ]
+            [optional BACnetContextTagUnsignedInteger('4', 'BACnetDataType.UNSIGNED_INTEGER')               priority                    ]
         ]
         ['WRITE_PROPERTY_MULTIPLE' BACnetConfirmedServiceRequestWritePropertyMultiple
             [array    BACnetWriteAccessSpecification
@@ -463,31 +463,29 @@
         // Remote Device Management Services
 
         ['DEVICE_COMMUNICATION_CONTROL' BACnetConfirmedServiceRequestDeviceCommunicationControl
-            [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')
-                                timeDuration                                                        ]
-            [simple   BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')
-                                enableDisable                                                       ]
-            [optional BACnetContextTagCharacterString('2', 'BACnetDataType.CHARACTER_STRING')
-                                password                                                            ]
+            [optional BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER')               timeDuration                ]
+            [simple   BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged('1', 'TagClass.CONTEXT_SPECIFIC_TAGS')
+                                                                                                            enableDisable               ]
+            [optional BACnetContextTagCharacterString('2', 'BACnetDataType.CHARACTER_STRING')               password                    ]
 
         ]
         ['CONFIRMED_PRIVATE_TRANSFER' BACnetConfirmedServiceRequestConfirmedPrivateTransfer
-            [simple   BACnetVendorIdTagged('0', 'TagClass.CONTEXT_SPECIFIC_TAGS')
-                                vendorId                                                            ]
-            [simple   BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')
-                                serviceNumber                                                       ]
+            [simple   BACnetVendorIdTagged('0', 'TagClass.CONTEXT_SPECIFIC_TAGS')                           vendorId                    ]
+            [simple   BACnetContextTagUnsignedInteger('1', 'BACnetDataType.UNSIGNED_INTEGER')               serviceNumber               ]
             [optional BACnetConstructedData('2', 'BACnetObjectType.VENDOR_PROPRIETARY_VALUE', 'BACnetPropertyIdentifier.VENDOR_PROPRIETARY_VALUE')
-                                serviceParameters                                                   ]
+                                                                                                            serviceParameters           ]
         ]
         ['CONFIRMED_TEXT_MESSAGE' BACnetConfirmedServiceRequestConfirmedTextMessage
-             // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      textMessageSourceDevice     ]
+            [optional BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass('1')                    messageClass                ]
+            [simple   BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged('2')           messagePriority             ]
+            [simple   BACnetContextTagCharacterString('3', 'BACnetDataType.CHARACTER_STRING')               message                     ]
         ]
         ['REINITIALIZE_DEVICE' BACnetConfirmedServiceRequestReinitializeDevice
           [simple   BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged('0', 'TagClass.CONTEXT_SPECIFIC_TAGS')
-                                reinitializedStateOfDevice                                          ]
+                                                                                                            reinitializedStateOfDevice  ]
           [optional BACnetContextTagCharacterString('1', 'BACnetDataType.CHARACTER_STRING')
-                                password                                                            ]
+                                                                                                            password                    ]
         ]
 
         ////
@@ -729,6 +727,25 @@
                      closingTag                     ]
 ]
 
+[type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass(uint 8 tagNumber)
+    [simple   BACnetOpeningTag('tagNumber')
+                  openingTag                  ]
+    [peek       BACnetTagHeader
+                        peekedTagHeader                 ]
+
+    [virtual    uint 8      peekedTagNumber     'peekedTagHeader.actualTagNumber']
+    [typeSwitch peekedTagNumber
+        ['0' BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassNumeric
+            [simple   BACnetContextTagUnsignedInteger('0', 'BACnetDataType.UNSIGNED_INTEGER') numericValue             ]
+        ]
+        ['1' BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassCharacter
+            [simple   BACnetContextTagCharacterString('1', 'BACnetDataType.CHARACTER_STRING') characterValue           ]
+        ]
+    ]
+    [simple   BACnetClosingTag('tagNumber')
+                  closingTag                  ]
+]
+
 [type BACnetConfirmedServiceRequestReadRangeRange
     [peek       BACnetTagHeader
                     peekedTagHeader                 ]