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

[plc4x] branch develop updated: fix(bacnet): fix some open issues

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new 6bf951376f fix(bacnet): fix some open issues
6bf951376f is described below

commit 6bf951376fd074e20e9d5fff4b366ce9ef7c7df9
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue May 24 14:41:00 2022 +0200

    fix(bacnet): fix some open issues
---
 .../protocols/bacnet/ParserSerializerTestsuite.xml | 32 +++++-----
 .../protocols/bacnetip/readwrite/ParserHelper.go   |  4 +-
 .../bacnetip/readwrite/XmlParserHelper.go          |  4 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      | 21 ++++++-
 .../BACnetConfirmedServiceRequestAuthenticate.go   | 45 ++++++++++++--
 ...tConfirmedServiceRequestConfirmedTextMessage.go |  2 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |  6 +-
 ...nfirmedServiceRequestReadPropertyConditional.go | 45 ++++++++++++--
 .../BACnetConfirmedServiceRequestRequestKey.go     | 45 ++++++++++++--
 ...netNotificationParametersChangeOfReliability.go |  4 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   | 72 +++++++++++-----------
 .../model/BACnetServiceAckAcknowledgeAlarm.go      |  8 +--
 .../model/BACnetServiceAckAddListElement.go        |  8 +--
 .../model/BACnetServiceAckAtomicReadFile.go        |  8 +--
 .../model/BACnetServiceAckAtomicWriteFile.go       |  8 +--
 .../model/BACnetServiceAckAuthenticate.go          | 53 +++++++++++++---
 .../BACnetServiceAckConfirmedCovNotification.go    |  8 +--
 ...etServiceAckConfirmedCovNotificationMultiple.go |  8 +--
 .../BACnetServiceAckConfirmedEventNotification.go  |  8 +--
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |  8 +--
 .../model/BACnetServiceAckConfirmedTextMessage.go  |  8 +--
 .../model/BACnetServiceAckCreateObject.go          |  8 +--
 .../BACnetServiceAckDeviceCommunicationControl.go  |  8 +--
 .../model/BACnetServiceAckGetAlarmSummary.go       |  8 +--
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |  8 +--
 .../model/BACnetServiceAckGetEventInformation.go   |  8 +--
 .../model/BACnetServiceAckLifeSafetyOperation.go   |  8 +--
 .../model/BACnetServiceAckReadProperty.go          |  8 +--
 .../BACnetServiceAckReadPropertyConditional.go     | 53 +++++++++++++---
 .../model/BACnetServiceAckReadPropertyMultiple.go  | 10 +--
 .../readwrite/model/BACnetServiceAckReadRange.go   |  8 +--
 .../model/BACnetServiceAckReinitializeDevice.go    |  8 +--
 .../model/BACnetServiceAckRemoveListElement.go     |  8 +--
 .../readwrite/model/BACnetServiceAckRequestKey.go  | 53 +++++++++++++---
 .../model/BACnetServiceAckSubscribeCov.go          |  8 +--
 .../model/BACnetServiceAckSubscribeCovProperty.go  |  8 +--
 ...BACnetServiceAckSubscribeCovPropertyMultiple.go |  8 +--
 .../readwrite/model/BACnetServiceAckVTClose.go     |  8 +--
 .../readwrite/model/BACnetServiceAckVTData.go      |  8 +--
 .../readwrite/model/BACnetServiceAckVTOpen.go      |  8 +--
 .../model/BACnetServiceAckWriteProperty.go         |  8 +--
 .../model/BACnetServiceAckWritePropertyMultiple.go |  8 +--
 .../bacnetip/readwrite/model/StaticHelper.go       |  6 +-
 .../bacnetip/readwrite/utils/StaticHelper.java     | 22 +++----
 .../resources/protocols/bacnetip/bacnetip.mspec    | 41 ++++++------
 .../protocols/bacnet/ParserSerializerTestsuite.xml | 32 +++++-----
 46 files changed, 496 insertions(+), 270 deletions(-)

diff --git a/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml b/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
index 2dd3181649..48a6416a7c 100644
--- a/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
+++ b/plc4go/assets/testing/protocols/bacnet/ParserSerializerTestsuite.xml
@@ -5713,7 +5713,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -5724,7 +5724,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="ENABLE">0</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6096,7 +6096,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6107,7 +6107,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="ENABLE">0</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6418,7 +6418,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6429,7 +6429,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6524,7 +6524,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6535,7 +6535,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6630,7 +6630,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6641,7 +6641,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6736,7 +6736,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6747,7 +6747,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6968,7 +6968,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6979,7 +6979,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -7165,7 +7165,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -7176,7 +7176,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
diff --git a/plc4go/protocols/bacnetip/readwrite/ParserHelper.go b/plc4go/protocols/bacnetip/readwrite/ParserHelper.go
index b5a74f4d45..e761f6f3bd 100644
--- a/plc4go/protocols/bacnetip/readwrite/ParserHelper.go
+++ b/plc4go/protocols/bacnetip/readwrite/ParserHelper.go
@@ -951,11 +951,11 @@ func (m BacnetipParserHelper) Parse(typeName string, arguments []string, io util
 		tagClass := model.TagClassByName(arguments[1])
 		return model.BACnetAccessEventTaggedParse(io, tagNumber, tagClass)
 	case "BACnetServiceAck":
-		serviceRequestLength, err := utils.StrToUint16(arguments[0])
+		serviceAckLength, err := utils.StrToUint16(arguments[0])
 		if err != nil {
 			return nil, errors.Wrap(err, "Error parsing")
 		}
-		return model.BACnetServiceAckParse(io, serviceRequestLength)
+		return model.BACnetServiceAckParse(io, serviceAckLength)
 	case "BACnetAccessCredentialDisableTagged":
 		tagNumber, err := utils.StrToUint8(arguments[0])
 		if err != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go b/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go
index 60f5859bc5..3c49790171 100644
--- a/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/bacnetip/readwrite/XmlParserHelper.go
@@ -1089,8 +1089,8 @@ func (m BacnetipXmlParserHelper) Parse(typeName string, xmlString string, parser
 		if err != nil {
 			return nil, err
 		}
-		serviceRequestLength := uint16(parsedUint0)
-		return model.BACnetServiceAckParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), serviceRequestLength)
+		serviceAckLength := uint16(parsedUint0)
+		return model.BACnetServiceAckParse(utils.NewXmlReadBuffer(strings.NewReader(xmlString)), serviceAckLength)
 	case "BACnetAccessCredentialDisableTagged":
 		parsedUint0, err := strconv.ParseUint(parserArguments[0], 10, 8)
 		if err != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetAddress.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetAddress.go
index 5757d3c45d..8b7c31b438 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetAddress.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetAddress.go
@@ -38,6 +38,8 @@ type IBACnetAddress interface {
 	GetNetworkNumber() *BACnetApplicationTagUnsignedInteger
 	// GetMacAddress returns MacAddress (property field)
 	GetMacAddress() *BACnetApplicationTagOctetString
+	// GetZero returns Zero (virtual field)
+	GetZero() uint64
 	// GetIsLocalNetwork returns IsLocalNetwork (virtual field)
 	GetIsLocalNetwork() bool
 	// GetIsBroadcast returns IsBroadcast (virtual field)
@@ -72,8 +74,12 @@ func (m *BACnetAddress) GetMacAddress() *BACnetApplicationTagOctetString {
 /////////////////////// Accessors for virtual fields.
 ///////////////////////
 
+func (m *BACnetAddress) GetZero() uint64 {
+	return uint64(uint64(0))
+}
+
 func (m *BACnetAddress) GetIsLocalNetwork() bool {
-	return bool(bool((m.GetNetworkNumber().GetActualValue()) == (0)))
+	return bool(bool((m.GetNetworkNumber().GetActualValue()) == (m.GetZero())))
 }
 
 func (m *BACnetAddress) GetIsBroadcast() bool {
@@ -116,6 +122,8 @@ func (m *BACnetAddress) GetLengthInBitsConditional(lastItem bool) uint16 {
 
 	// A virtual field doesn't have any in- or output.
 
+	// A virtual field doesn't have any in- or output.
+
 	// Simple field (macAddress)
 	lengthInBits += m.MacAddress.GetLengthInBits()
 
@@ -151,7 +159,12 @@ func BACnetAddressParse(readBuffer utils.ReadBuffer) (*BACnetAddress, error) {
 	}
 
 	// Virtual field
-	_isLocalNetwork := bool((networkNumber.GetActualValue()) == (0))
+	_zero := uint64(0)
+	zero := uint64(_zero)
+	_ = zero
+
+	// Virtual field
+	_isLocalNetwork := bool((networkNumber.GetActualValue()) == (zero))
 	isLocalNetwork := bool(_isLocalNetwork)
 	_ = isLocalNetwork
 
@@ -200,6 +213,10 @@ func (m *BACnetAddress) Serialize(writeBuffer utils.WriteBuffer) error {
 		return errors.Wrap(_networkNumberErr, "Error serializing 'networkNumber' field")
 	}
 	// Virtual field
+	if _zeroErr := writeBuffer.WriteVirtual("zero", m.GetZero()); _zeroErr != nil {
+		return errors.Wrap(_zeroErr, "Error serializing 'zero' field")
+	}
+	// Virtual field
 	if _isLocalNetworkErr := writeBuffer.WriteVirtual("isLocalNetwork", m.GetIsLocalNetwork()); _isLocalNetworkErr != nil {
 		return errors.Wrap(_isLocalNetworkErr, "Error serializing 'isLocalNetwork' field")
 	}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAuthenticate.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAuthenticate.go
index e3d18fed32..372ee79fe3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAuthenticate.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAuthenticate.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
 // BACnetConfirmedServiceRequestAuthenticate is the data-structure of this message
 type BACnetConfirmedServiceRequestAuthenticate struct {
 	*BACnetConfirmedServiceRequest
+	BytesOfRemovedService []byte
 
 	// Arguments.
 	ServiceRequestLength uint16
@@ -36,6 +38,8 @@ type BACnetConfirmedServiceRequestAuthenticate struct {
 // IBACnetConfirmedServiceRequestAuthenticate is the corresponding interface of BACnetConfirmedServiceRequestAuthenticate
 type IBACnetConfirmedServiceRequestAuthenticate interface {
 	IBACnetConfirmedServiceRequest
+	// GetBytesOfRemovedService returns BytesOfRemovedService (property field)
+	GetBytesOfRemovedService() []byte
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -65,9 +69,24 @@ func (m *BACnetConfirmedServiceRequestAuthenticate) GetParent() *BACnetConfirmed
 	return m.BACnetConfirmedServiceRequest
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestAuthenticate) GetBytesOfRemovedService() []byte {
+	return m.BytesOfRemovedService
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetConfirmedServiceRequestAuthenticate factory function for BACnetConfirmedServiceRequestAuthenticate
-func NewBACnetConfirmedServiceRequestAuthenticate(serviceRequestLength uint16) *BACnetConfirmedServiceRequestAuthenticate {
+func NewBACnetConfirmedServiceRequestAuthenticate(bytesOfRemovedService []byte, serviceRequestLength uint16) *BACnetConfirmedServiceRequestAuthenticate {
 	_result := &BACnetConfirmedServiceRequestAuthenticate{
+		BytesOfRemovedService:         bytesOfRemovedService,
 		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
 	}
 	_result.Child = _result
@@ -101,6 +120,11 @@ func (m *BACnetConfirmedServiceRequestAuthenticate) GetLengthInBits() uint16 {
 func (m *BACnetConfirmedServiceRequestAuthenticate) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Array field
+	if len(m.BytesOfRemovedService) > 0 {
+		lengthInBits += 8 * uint16(len(m.BytesOfRemovedService))
+	}
+
 	return lengthInBits
 }
 
@@ -116,10 +140,11 @@ func BACnetConfirmedServiceRequestAuthenticateParse(readBuffer utils.ReadBuffer,
 	}
 	currentPos := positionAware.GetPos()
 	_ = currentPos
-
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Byte Array field (bytesOfRemovedService)
+	numberOfBytesbytesOfRemovedService := int(utils.InlineIf(bool(bool((serviceRequestLength) > (0))), func() interface{} { return uint16(uint16(uint16(serviceRequestLength) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+	bytesOfRemovedService, _readArrayErr := readBuffer.ReadByteArray("bytesOfRemovedService", numberOfBytesbytesOfRemovedService)
+	if _readArrayErr != nil {
+		return nil, errors.Wrap(_readArrayErr, "Error parsing 'bytesOfRemovedService' field")
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestAuthenticate"); closeErr != nil {
@@ -128,6 +153,7 @@ func BACnetConfirmedServiceRequestAuthenticateParse(readBuffer utils.ReadBuffer,
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestAuthenticate{
+		BytesOfRemovedService:         bytesOfRemovedService,
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +168,15 @@ func (m *BACnetConfirmedServiceRequestAuthenticate) Serialize(writeBuffer utils.
 			return pushErr
 		}
 
+		// Array Field (bytesOfRemovedService)
+		if m.BytesOfRemovedService != nil {
+			// Byte Array field (bytesOfRemovedService)
+			_writeArrayErr := writeBuffer.WriteByteArray("bytesOfRemovedService", m.BytesOfRemovedService)
+			if _writeArrayErr != nil {
+				return errors.Wrap(_writeArrayErr, "Error serializing 'bytesOfRemovedService' field")
+			}
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestAuthenticate"); popErr != nil {
 			return popErr
 		}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
index 34a712bbb5..6c8cbd0245 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
@@ -213,7 +213,7 @@ func BACnetConfirmedServiceRequestConfirmedTextMessageParse(readBuffer utils.Rea
 	if pullErr := readBuffer.PullContext("messagePriority"); pullErr != nil {
 		return nil, pullErr
 	}
-	_messagePriority, _messagePriorityErr := BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTaggedParse(readBuffer, uint8(uint8(2)))
+	_messagePriority, _messagePriorityErr := BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTaggedParse(readBuffer, uint8(uint8(2)), TagClass(TagClass_CONTEXT_SPECIFIC_TAGS))
 	if _messagePriorityErr != nil {
 		return nil, errors.Wrap(_messagePriorityErr, "Error parsing 'messagePriority' field")
 	}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
index 10426ebd68..914d0a0347 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
@@ -209,7 +209,7 @@ func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(readBuffer utils.Rea
 	if pullErr := readBuffer.PullContext("acknowledgmentFilter"); pullErr != nil {
 		return nil, pullErr
 	}
-	_acknowledgmentFilter, _acknowledgmentFilterErr := BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTaggedParse(readBuffer, uint8(uint8(0)))
+	_acknowledgmentFilter, _acknowledgmentFilterErr := BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_CONTEXT_SPECIFIC_TAGS))
 	if _acknowledgmentFilterErr != nil {
 		return nil, errors.Wrap(_acknowledgmentFilterErr, "Error parsing 'acknowledgmentFilter' field")
 	}
@@ -246,7 +246,7 @@ func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(readBuffer utils.Rea
 		if pullErr := readBuffer.PullContext("eventStateFilter"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTaggedParse(readBuffer, uint8(2))
+		_val, _err := BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTaggedParse(readBuffer, uint8(2), TagClass_CONTEXT_SPECIFIC_TAGS)
 		switch {
 		case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
 			readBuffer.Reset(currentPos)
@@ -267,7 +267,7 @@ func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(readBuffer utils.Rea
 		if pullErr := readBuffer.PullContext("eventTypeFilter"); pullErr != nil {
 			return nil, pullErr
 		}
-		_val, _err := BACnetEventTypeTaggedParse(readBuffer, uint8(3))
+		_val, _err := BACnetEventTypeTaggedParse(readBuffer, uint8(3), TagClass_CONTEXT_SPECIFIC_TAGS)
 		switch {
 		case errors.Is(_err, utils.ParseAssertError{}) || errors.Is(_err, io.EOF):
 			readBuffer.Reset(currentPos)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyConditional.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyConditional.go
index dc1eed6a34..1e1454bc83 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyConditional.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyConditional.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
 // BACnetConfirmedServiceRequestReadPropertyConditional is the data-structure of this message
 type BACnetConfirmedServiceRequestReadPropertyConditional struct {
 	*BACnetConfirmedServiceRequest
+	BytesOfRemovedService []byte
 
 	// Arguments.
 	ServiceRequestLength uint16
@@ -36,6 +38,8 @@ type BACnetConfirmedServiceRequestReadPropertyConditional struct {
 // IBACnetConfirmedServiceRequestReadPropertyConditional is the corresponding interface of BACnetConfirmedServiceRequestReadPropertyConditional
 type IBACnetConfirmedServiceRequestReadPropertyConditional interface {
 	IBACnetConfirmedServiceRequest
+	// GetBytesOfRemovedService returns BytesOfRemovedService (property field)
+	GetBytesOfRemovedService() []byte
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -65,9 +69,24 @@ func (m *BACnetConfirmedServiceRequestReadPropertyConditional) GetParent() *BACn
 	return m.BACnetConfirmedServiceRequest
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestReadPropertyConditional) GetBytesOfRemovedService() []byte {
+	return m.BytesOfRemovedService
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetConfirmedServiceRequestReadPropertyConditional factory function for BACnetConfirmedServiceRequestReadPropertyConditional
-func NewBACnetConfirmedServiceRequestReadPropertyConditional(serviceRequestLength uint16) *BACnetConfirmedServiceRequestReadPropertyConditional {
+func NewBACnetConfirmedServiceRequestReadPropertyConditional(bytesOfRemovedService []byte, serviceRequestLength uint16) *BACnetConfirmedServiceRequestReadPropertyConditional {
 	_result := &BACnetConfirmedServiceRequestReadPropertyConditional{
+		BytesOfRemovedService:         bytesOfRemovedService,
 		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
 	}
 	_result.Child = _result
@@ -101,6 +120,11 @@ func (m *BACnetConfirmedServiceRequestReadPropertyConditional) GetLengthInBits()
 func (m *BACnetConfirmedServiceRequestReadPropertyConditional) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Array field
+	if len(m.BytesOfRemovedService) > 0 {
+		lengthInBits += 8 * uint16(len(m.BytesOfRemovedService))
+	}
+
 	return lengthInBits
 }
 
@@ -116,10 +140,11 @@ func BACnetConfirmedServiceRequestReadPropertyConditionalParse(readBuffer utils.
 	}
 	currentPos := positionAware.GetPos()
 	_ = currentPos
-
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Byte Array field (bytesOfRemovedService)
+	numberOfBytesbytesOfRemovedService := int(utils.InlineIf(bool(bool((serviceRequestLength) > (0))), func() interface{} { return uint16(uint16(uint16(serviceRequestLength) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+	bytesOfRemovedService, _readArrayErr := readBuffer.ReadByteArray("bytesOfRemovedService", numberOfBytesbytesOfRemovedService)
+	if _readArrayErr != nil {
+		return nil, errors.Wrap(_readArrayErr, "Error parsing 'bytesOfRemovedService' field")
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestReadPropertyConditional"); closeErr != nil {
@@ -128,6 +153,7 @@ func BACnetConfirmedServiceRequestReadPropertyConditionalParse(readBuffer utils.
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestReadPropertyConditional{
+		BytesOfRemovedService:         bytesOfRemovedService,
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +168,15 @@ func (m *BACnetConfirmedServiceRequestReadPropertyConditional) Serialize(writeBu
 			return pushErr
 		}
 
+		// Array Field (bytesOfRemovedService)
+		if m.BytesOfRemovedService != nil {
+			// Byte Array field (bytesOfRemovedService)
+			_writeArrayErr := writeBuffer.WriteByteArray("bytesOfRemovedService", m.BytesOfRemovedService)
+			if _writeArrayErr != nil {
+				return errors.Wrap(_writeArrayErr, "Error serializing 'bytesOfRemovedService' field")
+			}
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestReadPropertyConditional"); popErr != nil {
 			return popErr
 		}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRequestKey.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRequestKey.go
index a02466bdd7..a7ccf28192 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRequestKey.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRequestKey.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,6 +29,7 @@ import (
 // BACnetConfirmedServiceRequestRequestKey is the data-structure of this message
 type BACnetConfirmedServiceRequestRequestKey struct {
 	*BACnetConfirmedServiceRequest
+	BytesOfRemovedService []byte
 
 	// Arguments.
 	ServiceRequestLength uint16
@@ -36,6 +38,8 @@ type BACnetConfirmedServiceRequestRequestKey struct {
 // IBACnetConfirmedServiceRequestRequestKey is the corresponding interface of BACnetConfirmedServiceRequestRequestKey
 type IBACnetConfirmedServiceRequestRequestKey interface {
 	IBACnetConfirmedServiceRequest
+	// GetBytesOfRemovedService returns BytesOfRemovedService (property field)
+	GetBytesOfRemovedService() []byte
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -65,9 +69,24 @@ func (m *BACnetConfirmedServiceRequestRequestKey) GetParent() *BACnetConfirmedSe
 	return m.BACnetConfirmedServiceRequest
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetConfirmedServiceRequestRequestKey) GetBytesOfRemovedService() []byte {
+	return m.BytesOfRemovedService
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetConfirmedServiceRequestRequestKey factory function for BACnetConfirmedServiceRequestRequestKey
-func NewBACnetConfirmedServiceRequestRequestKey(serviceRequestLength uint16) *BACnetConfirmedServiceRequestRequestKey {
+func NewBACnetConfirmedServiceRequestRequestKey(bytesOfRemovedService []byte, serviceRequestLength uint16) *BACnetConfirmedServiceRequestRequestKey {
 	_result := &BACnetConfirmedServiceRequestRequestKey{
+		BytesOfRemovedService:         bytesOfRemovedService,
 		BACnetConfirmedServiceRequest: NewBACnetConfirmedServiceRequest(serviceRequestLength),
 	}
 	_result.Child = _result
@@ -101,6 +120,11 @@ func (m *BACnetConfirmedServiceRequestRequestKey) GetLengthInBits() uint16 {
 func (m *BACnetConfirmedServiceRequestRequestKey) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Array field
+	if len(m.BytesOfRemovedService) > 0 {
+		lengthInBits += 8 * uint16(len(m.BytesOfRemovedService))
+	}
+
 	return lengthInBits
 }
 
@@ -116,10 +140,11 @@ func BACnetConfirmedServiceRequestRequestKeyParse(readBuffer utils.ReadBuffer, s
 	}
 	currentPos := positionAware.GetPos()
 	_ = currentPos
-
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Byte Array field (bytesOfRemovedService)
+	numberOfBytesbytesOfRemovedService := int(utils.InlineIf(bool(bool((serviceRequestLength) > (0))), func() interface{} { return uint16(uint16(uint16(serviceRequestLength) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+	bytesOfRemovedService, _readArrayErr := readBuffer.ReadByteArray("bytesOfRemovedService", numberOfBytesbytesOfRemovedService)
+	if _readArrayErr != nil {
+		return nil, errors.Wrap(_readArrayErr, "Error parsing 'bytesOfRemovedService' field")
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetConfirmedServiceRequestRequestKey"); closeErr != nil {
@@ -128,6 +153,7 @@ func BACnetConfirmedServiceRequestRequestKeyParse(readBuffer utils.ReadBuffer, s
 
 	// Create a partially initialized instance
 	_child := &BACnetConfirmedServiceRequestRequestKey{
+		BytesOfRemovedService:         bytesOfRemovedService,
 		BACnetConfirmedServiceRequest: &BACnetConfirmedServiceRequest{},
 	}
 	_child.BACnetConfirmedServiceRequest.Child = _child
@@ -142,6 +168,15 @@ func (m *BACnetConfirmedServiceRequestRequestKey) Serialize(writeBuffer utils.Wr
 			return pushErr
 		}
 
+		// Array Field (bytesOfRemovedService)
+		if m.BytesOfRemovedService != nil {
+			// Byte Array field (bytesOfRemovedService)
+			_writeArrayErr := writeBuffer.WriteByteArray("bytesOfRemovedService", m.BytesOfRemovedService)
+			if _writeArrayErr != nil {
+				return errors.Wrap(_writeArrayErr, "Error serializing 'bytesOfRemovedService' field")
+			}
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetConfirmedServiceRequestRequestKey"); popErr != nil {
 			return popErr
 		}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfReliability.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfReliability.go
index 526d54ff67..163c7b8942 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfReliability.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfReliability.go
@@ -200,7 +200,7 @@ func BACnetNotificationParametersChangeOfReliabilityParse(readBuffer utils.ReadB
 	if pullErr := readBuffer.PullContext("reliability"); pullErr != nil {
 		return nil, pullErr
 	}
-	_reliability, _reliabilityErr := BACnetReliabilityTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_ContextSpecificTags))
+	_reliability, _reliabilityErr := BACnetReliabilityTaggedParse(readBuffer, uint8(uint8(0)), TagClass(TagClass_CONTEXT_SPECIFIC_TAGS))
 	if _reliabilityErr != nil {
 		return nil, errors.Wrap(_reliabilityErr, "Error parsing 'reliability' field")
 	}
@@ -226,7 +226,7 @@ func BACnetNotificationParametersChangeOfReliabilityParse(readBuffer utils.ReadB
 	if pullErr := readBuffer.PullContext("propertyValues"); pullErr != nil {
 		return nil, pullErr
 	}
-	_propertyValues, _propertyValuesErr := BACnetPropertyValuesParse(readBuffer, uint8(uint8(2)), BACnetObjectType(monitoredObjectIdentifier.GetObjectType()))
+	_propertyValues, _propertyValuesErr := BACnetPropertyValuesParse(readBuffer, uint8(uint8(2)), BACnetObjectType(objectType))
 	if _propertyValuesErr != nil {
 		return nil, errors.Wrap(_propertyValuesErr, "Error parsing 'propertyValues' field")
 	}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
index 6518930e39..a12f492cef 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -30,8 +30,8 @@ import (
 type BACnetServiceAck struct {
 
 	// Arguments.
-	ServiceRequestLength uint16
-	Child                IBACnetServiceAckChild
+	ServiceAckLength uint16
+	Child            IBACnetServiceAckChild
 }
 
 // IBACnetServiceAck is the corresponding interface of BACnetServiceAck
@@ -61,8 +61,8 @@ type IBACnetServiceAckChild interface {
 }
 
 // NewBACnetServiceAck factory function for BACnetServiceAck
-func NewBACnetServiceAck(serviceRequestLength uint16) *BACnetServiceAck {
-	return &BACnetServiceAck{ServiceRequestLength: serviceRequestLength}
+func NewBACnetServiceAck(serviceAckLength uint16) *BACnetServiceAck {
+	return &BACnetServiceAck{ServiceAckLength: serviceAckLength}
 }
 
 func CastBACnetServiceAck(structType interface{}) *BACnetServiceAck {
@@ -102,7 +102,7 @@ func (m *BACnetServiceAck) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAck, error) {
+func BACnetServiceAckParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAck, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAck"); pullErr != nil {
@@ -133,67 +133,67 @@ func BACnetServiceAckParse(readBuffer utils.ReadBuffer, serviceRequestLength uin
 	var typeSwitchError error
 	switch {
 	case serviceChoice == BACnetConfirmedServiceChoice_ACKNOWLEDGE_ALARM: // BACnetServiceAckAcknowledgeAlarm
-		_child, typeSwitchError = BACnetServiceAckAcknowledgeAlarmParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckAcknowledgeAlarmParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_COV_NOTIFICATION: // BACnetServiceAckConfirmedCovNotification
-		_child, typeSwitchError = BACnetServiceAckConfirmedCovNotificationParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckConfirmedCovNotificationParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_COV_NOTIFICATION_MULTIPLE: // BACnetServiceAckConfirmedCovNotificationMultiple
-		_child, typeSwitchError = BACnetServiceAckConfirmedCovNotificationMultipleParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckConfirmedCovNotificationMultipleParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_EVENT_NOTIFICATION: // BACnetServiceAckConfirmedEventNotification
-		_child, typeSwitchError = BACnetServiceAckConfirmedEventNotificationParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckConfirmedEventNotificationParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_ALARM_SUMMARY: // BACnetServiceAckGetAlarmSummary
-		_child, typeSwitchError = BACnetServiceAckGetAlarmSummaryParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckGetAlarmSummaryParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_ENROLLMENT_SUMMARY: // BACnetServiceAckGetEnrollmentSummary
-		_child, typeSwitchError = BACnetServiceAckGetEnrollmentSummaryParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckGetEnrollmentSummaryParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_GET_EVENT_INFORMATION: // BACnetServiceAckGetEventInformation
-		_child, typeSwitchError = BACnetServiceAckGetEventInformationParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckGetEventInformationParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_LIFE_SAFETY_OPERATION: // BACnetServiceAckLifeSafetyOperation
-		_child, typeSwitchError = BACnetServiceAckLifeSafetyOperationParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckLifeSafetyOperationParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_SUBSCRIBE_COV: // BACnetServiceAckSubscribeCov
-		_child, typeSwitchError = BACnetServiceAckSubscribeCovParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckSubscribeCovParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_SUBSCRIBE_COV_PROPERTY: // BACnetServiceAckSubscribeCovProperty
-		_child, typeSwitchError = BACnetServiceAckSubscribeCovPropertyParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckSubscribeCovPropertyParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_SUBSCRIBE_COV_PROPERTY_MULTIPLE: // BACnetServiceAckSubscribeCovPropertyMultiple
-		_child, typeSwitchError = BACnetServiceAckSubscribeCovPropertyMultipleParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckSubscribeCovPropertyMultipleParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_ATOMIC_READ_FILE: // BACnetServiceAckAtomicReadFile
-		_child, typeSwitchError = BACnetServiceAckAtomicReadFileParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckAtomicReadFileParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_ATOMIC_WRITE_FILE: // BACnetServiceAckAtomicWriteFile
-		_child, typeSwitchError = BACnetServiceAckAtomicWriteFileParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckAtomicWriteFileParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_ADD_LIST_ELEMENT: // BACnetServiceAckAddListElement
-		_child, typeSwitchError = BACnetServiceAckAddListElementParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckAddListElementParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_REMOVE_LIST_ELEMENT: // BACnetServiceAckRemoveListElement
-		_child, typeSwitchError = BACnetServiceAckRemoveListElementParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckRemoveListElementParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_CREATE_OBJECT: // BACnetServiceAckCreateObject
-		_child, typeSwitchError = BACnetServiceAckCreateObjectParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckCreateObjectParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY: // BACnetServiceAckReadProperty
-		_child, typeSwitchError = BACnetServiceAckReadPropertyParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckReadPropertyParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY_MULTIPLE: // BACnetServiceAckReadPropertyMultiple
-		_child, typeSwitchError = BACnetServiceAckReadPropertyMultipleParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckReadPropertyMultipleParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_RANGE: // BACnetServiceAckReadRange
-		_child, typeSwitchError = BACnetServiceAckReadRangeParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckReadRangeParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_WRITE_PROPERTY: // BACnetServiceAckWriteProperty
-		_child, typeSwitchError = BACnetServiceAckWritePropertyParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckWritePropertyParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_WRITE_PROPERTY_MULTIPLE: // BACnetServiceAckWritePropertyMultiple
-		_child, typeSwitchError = BACnetServiceAckWritePropertyMultipleParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckWritePropertyMultipleParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_DEVICE_COMMUNICATION_CONTROL: // BACnetServiceAckDeviceCommunicationControl
-		_child, typeSwitchError = BACnetServiceAckDeviceCommunicationControlParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckDeviceCommunicationControlParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_PRIVATE_TRANSFER: // BACnetServiceAckConfirmedPrivateTransfer
-		_child, typeSwitchError = BACnetServiceAckConfirmedPrivateTransferParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckConfirmedPrivateTransferParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_CONFIRMED_TEXT_MESSAGE: // BACnetServiceAckConfirmedTextMessage
-		_child, typeSwitchError = BACnetServiceAckConfirmedTextMessageParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckConfirmedTextMessageParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_REINITIALIZE_DEVICE: // BACnetServiceAckReinitializeDevice
-		_child, typeSwitchError = BACnetServiceAckReinitializeDeviceParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckReinitializeDeviceParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_OPEN: // BACnetServiceAckVTOpen
-		_child, typeSwitchError = BACnetServiceAckVTOpenParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckVTOpenParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_CLOSE: // BACnetServiceAckVTClose
-		_child, typeSwitchError = BACnetServiceAckVTCloseParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckVTCloseParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_VT_DATA: // BACnetServiceAckVTData
-		_child, typeSwitchError = BACnetServiceAckVTDataParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckVTDataParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_AUTHENTICATE: // BACnetServiceAckAuthenticate
-		_child, typeSwitchError = BACnetServiceAckAuthenticateParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckAuthenticateParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_REQUEST_KEY: // BACnetServiceAckRequestKey
-		_child, typeSwitchError = BACnetServiceAckRequestKeyParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckRequestKeyParse(readBuffer, serviceAckLength)
 	case serviceChoice == BACnetConfirmedServiceChoice_READ_PROPERTY_CONDITIONAL: // BACnetServiceAckReadPropertyConditional
-		_child, typeSwitchError = BACnetServiceAckReadPropertyConditionalParse(readBuffer, serviceRequestLength)
+		_child, typeSwitchError = BACnetServiceAckReadPropertyConditionalParse(readBuffer, serviceAckLength)
 	default:
 		// TODO: return actual type
 		typeSwitchError = errors.New("Unmapped type")
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAcknowledgeAlarm.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAcknowledgeAlarm.go
index 7e5aacdcd2..53c42763d4 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAcknowledgeAlarm.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAcknowledgeAlarm.go
@@ -30,7 +30,7 @@ type BACnetServiceAckAcknowledgeAlarm struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckAcknowledgeAlarm is the corresponding interface of BACnetServiceAckAcknowledgeAlarm
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckAcknowledgeAlarm) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckAcknowledgeAlarm factory function for BACnetServiceAckAcknowledgeAlarm
-func NewBACnetServiceAckAcknowledgeAlarm(serviceRequestLength uint16) *BACnetServiceAckAcknowledgeAlarm {
+func NewBACnetServiceAckAcknowledgeAlarm(serviceAckLength uint16) *BACnetServiceAckAcknowledgeAlarm {
 	_result := &BACnetServiceAckAcknowledgeAlarm{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckAcknowledgeAlarm) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckAcknowledgeAlarmParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckAcknowledgeAlarm, error) {
+func BACnetServiceAckAcknowledgeAlarmParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckAcknowledgeAlarm, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckAcknowledgeAlarm"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAddListElement.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAddListElement.go
index 8ecb83c30c..65f0e4136e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAddListElement.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAddListElement.go
@@ -30,7 +30,7 @@ type BACnetServiceAckAddListElement struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckAddListElement is the corresponding interface of BACnetServiceAckAddListElement
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckAddListElement) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckAddListElement factory function for BACnetServiceAckAddListElement
-func NewBACnetServiceAckAddListElement(serviceRequestLength uint16) *BACnetServiceAckAddListElement {
+func NewBACnetServiceAckAddListElement(serviceAckLength uint16) *BACnetServiceAckAddListElement {
 	_result := &BACnetServiceAckAddListElement{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckAddListElement) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckAddListElementParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckAddListElement, error) {
+func BACnetServiceAckAddListElementParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckAddListElement, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckAddListElement"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
index efcd7644bd..89ef9db7a4 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
@@ -33,7 +33,7 @@ type BACnetServiceAckAtomicReadFile struct {
 	AccessMethod *BACnetServiceAckAtomicReadFileStreamOrRecord
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckAtomicReadFile is the corresponding interface of BACnetServiceAckAtomicReadFile
@@ -90,11 +90,11 @@ func (m *BACnetServiceAckAtomicReadFile) GetAccessMethod() *BACnetServiceAckAtom
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckAtomicReadFile factory function for BACnetServiceAckAtomicReadFile
-func NewBACnetServiceAckAtomicReadFile(endOfFile *BACnetApplicationTagBoolean, accessMethod *BACnetServiceAckAtomicReadFileStreamOrRecord, serviceRequestLength uint16) *BACnetServiceAckAtomicReadFile {
+func NewBACnetServiceAckAtomicReadFile(endOfFile *BACnetApplicationTagBoolean, accessMethod *BACnetServiceAckAtomicReadFileStreamOrRecord, serviceAckLength uint16) *BACnetServiceAckAtomicReadFile {
 	_result := &BACnetServiceAckAtomicReadFile{
 		EndOfFile:        endOfFile,
 		AccessMethod:     accessMethod,
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -140,7 +140,7 @@ func (m *BACnetServiceAckAtomicReadFile) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckAtomicReadFileParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckAtomicReadFile, error) {
+func BACnetServiceAckAtomicReadFileParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckAtomicReadFile, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckAtomicReadFile"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
index 96b145cc8f..6d8dee5d44 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
@@ -32,7 +32,7 @@ type BACnetServiceAckAtomicWriteFile struct {
 	FileStartPosition *BACnetContextTagSignedInteger
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckAtomicWriteFile is the corresponding interface of BACnetServiceAckAtomicWriteFile
@@ -83,10 +83,10 @@ func (m *BACnetServiceAckAtomicWriteFile) GetFileStartPosition() *BACnetContextT
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckAtomicWriteFile factory function for BACnetServiceAckAtomicWriteFile
-func NewBACnetServiceAckAtomicWriteFile(fileStartPosition *BACnetContextTagSignedInteger, serviceRequestLength uint16) *BACnetServiceAckAtomicWriteFile {
+func NewBACnetServiceAckAtomicWriteFile(fileStartPosition *BACnetContextTagSignedInteger, serviceAckLength uint16) *BACnetServiceAckAtomicWriteFile {
 	_result := &BACnetServiceAckAtomicWriteFile{
 		FileStartPosition: fileStartPosition,
-		BACnetServiceAck:  NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck:  NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -129,7 +129,7 @@ func (m *BACnetServiceAckAtomicWriteFile) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckAtomicWriteFileParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckAtomicWriteFile, error) {
+func BACnetServiceAckAtomicWriteFileParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckAtomicWriteFile, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckAtomicWriteFile"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAuthenticate.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAuthenticate.go
index ec7a590c50..08fc301cbe 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAuthenticate.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAuthenticate.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,14 +29,17 @@ import (
 // BACnetServiceAckAuthenticate is the data-structure of this message
 type BACnetServiceAckAuthenticate struct {
 	*BACnetServiceAck
+	BytesOfRemovedService []byte
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckAuthenticate is the corresponding interface of BACnetServiceAckAuthenticate
 type IBACnetServiceAckAuthenticate interface {
 	IBACnetServiceAck
+	// GetBytesOfRemovedService returns BytesOfRemovedService (property field)
+	GetBytesOfRemovedService() []byte
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -64,10 +68,25 @@ func (m *BACnetServiceAckAuthenticate) GetParent() *BACnetServiceAck {
 	return m.BACnetServiceAck
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetServiceAckAuthenticate) GetBytesOfRemovedService() []byte {
+	return m.BytesOfRemovedService
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetServiceAckAuthenticate factory function for BACnetServiceAckAuthenticate
-func NewBACnetServiceAckAuthenticate(serviceRequestLength uint16) *BACnetServiceAckAuthenticate {
+func NewBACnetServiceAckAuthenticate(bytesOfRemovedService []byte, serviceAckLength uint16) *BACnetServiceAckAuthenticate {
 	_result := &BACnetServiceAckAuthenticate{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BytesOfRemovedService: bytesOfRemovedService,
+		BACnetServiceAck:      NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -100,6 +119,11 @@ func (m *BACnetServiceAckAuthenticate) GetLengthInBits() uint16 {
 func (m *BACnetServiceAckAuthenticate) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Array field
+	if len(m.BytesOfRemovedService) > 0 {
+		lengthInBits += 8 * uint16(len(m.BytesOfRemovedService))
+	}
+
 	return lengthInBits
 }
 
@@ -107,7 +131,7 @@ func (m *BACnetServiceAckAuthenticate) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckAuthenticateParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckAuthenticate, error) {
+func BACnetServiceAckAuthenticateParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckAuthenticate, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckAuthenticate"); pullErr != nil {
@@ -115,10 +139,11 @@ func BACnetServiceAckAuthenticateParse(readBuffer utils.ReadBuffer, serviceReque
 	}
 	currentPos := positionAware.GetPos()
 	_ = currentPos
-
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Byte Array field (bytesOfRemovedService)
+	numberOfBytesbytesOfRemovedService := int(utils.InlineIf(bool(bool((serviceAckLength) > (0))), func() interface{} { return uint16(uint16(uint16(serviceAckLength) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+	bytesOfRemovedService, _readArrayErr := readBuffer.ReadByteArray("bytesOfRemovedService", numberOfBytesbytesOfRemovedService)
+	if _readArrayErr != nil {
+		return nil, errors.Wrap(_readArrayErr, "Error parsing 'bytesOfRemovedService' field")
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetServiceAckAuthenticate"); closeErr != nil {
@@ -127,7 +152,8 @@ func BACnetServiceAckAuthenticateParse(readBuffer utils.ReadBuffer, serviceReque
 
 	// Create a partially initialized instance
 	_child := &BACnetServiceAckAuthenticate{
-		BACnetServiceAck: &BACnetServiceAck{},
+		BytesOfRemovedService: bytesOfRemovedService,
+		BACnetServiceAck:      &BACnetServiceAck{},
 	}
 	_child.BACnetServiceAck.Child = _child
 	return _child, nil
@@ -141,6 +167,15 @@ func (m *BACnetServiceAckAuthenticate) Serialize(writeBuffer utils.WriteBuffer)
 			return pushErr
 		}
 
+		// Array Field (bytesOfRemovedService)
+		if m.BytesOfRemovedService != nil {
+			// Byte Array field (bytesOfRemovedService)
+			_writeArrayErr := writeBuffer.WriteByteArray("bytesOfRemovedService", m.BytesOfRemovedService)
+			if _writeArrayErr != nil {
+				return errors.Wrap(_writeArrayErr, "Error serializing 'bytesOfRemovedService' field")
+			}
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetServiceAckAuthenticate"); popErr != nil {
 			return popErr
 		}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotification.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotification.go
index ca6d231da5..b87244255d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotification.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotification.go
@@ -30,7 +30,7 @@ type BACnetServiceAckConfirmedCovNotification struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckConfirmedCovNotification is the corresponding interface of BACnetServiceAckConfirmedCovNotification
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckConfirmedCovNotification) GetParent() *BACnetServiceAck
 }
 
 // NewBACnetServiceAckConfirmedCovNotification factory function for BACnetServiceAckConfirmedCovNotification
-func NewBACnetServiceAckConfirmedCovNotification(serviceRequestLength uint16) *BACnetServiceAckConfirmedCovNotification {
+func NewBACnetServiceAckConfirmedCovNotification(serviceAckLength uint16) *BACnetServiceAckConfirmedCovNotification {
 	_result := &BACnetServiceAckConfirmedCovNotification{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckConfirmedCovNotification) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckConfirmedCovNotificationParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckConfirmedCovNotification, error) {
+func BACnetServiceAckConfirmedCovNotificationParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckConfirmedCovNotification, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckConfirmedCovNotification"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotificationMultiple.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotificationMultiple.go
index a43b209066..71755128ff 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotificationMultiple.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedCovNotificationMultiple.go
@@ -30,7 +30,7 @@ type BACnetServiceAckConfirmedCovNotificationMultiple struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckConfirmedCovNotificationMultiple is the corresponding interface of BACnetServiceAckConfirmedCovNotificationMultiple
@@ -66,9 +66,9 @@ func (m *BACnetServiceAckConfirmedCovNotificationMultiple) GetParent() *BACnetSe
 }
 
 // NewBACnetServiceAckConfirmedCovNotificationMultiple factory function for BACnetServiceAckConfirmedCovNotificationMultiple
-func NewBACnetServiceAckConfirmedCovNotificationMultiple(serviceRequestLength uint16) *BACnetServiceAckConfirmedCovNotificationMultiple {
+func NewBACnetServiceAckConfirmedCovNotificationMultiple(serviceAckLength uint16) *BACnetServiceAckConfirmedCovNotificationMultiple {
 	_result := &BACnetServiceAckConfirmedCovNotificationMultiple{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -108,7 +108,7 @@ func (m *BACnetServiceAckConfirmedCovNotificationMultiple) GetLengthInBytes() ui
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckConfirmedCovNotificationMultipleParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckConfirmedCovNotificationMultiple, error) {
+func BACnetServiceAckConfirmedCovNotificationMultipleParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckConfirmedCovNotificationMultiple, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckConfirmedCovNotificationMultiple"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedEventNotification.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedEventNotification.go
index c39375fb27..4a8c450895 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedEventNotification.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedEventNotification.go
@@ -30,7 +30,7 @@ type BACnetServiceAckConfirmedEventNotification struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckConfirmedEventNotification is the corresponding interface of BACnetServiceAckConfirmedEventNotification
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckConfirmedEventNotification) GetParent() *BACnetServiceA
 }
 
 // NewBACnetServiceAckConfirmedEventNotification factory function for BACnetServiceAckConfirmedEventNotification
-func NewBACnetServiceAckConfirmedEventNotification(serviceRequestLength uint16) *BACnetServiceAckConfirmedEventNotification {
+func NewBACnetServiceAckConfirmedEventNotification(serviceAckLength uint16) *BACnetServiceAckConfirmedEventNotification {
 	_result := &BACnetServiceAckConfirmedEventNotification{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckConfirmedEventNotification) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckConfirmedEventNotificationParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckConfirmedEventNotification, error) {
+func BACnetServiceAckConfirmedEventNotificationParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckConfirmedEventNotification, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckConfirmedEventNotification"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
index cf70922a0d..1325edca18 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
@@ -35,7 +35,7 @@ type BACnetServiceAckConfirmedPrivateTransfer struct {
 	ResultBlock   *BACnetConstructedData
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckConfirmedPrivateTransfer is the corresponding interface of BACnetServiceAckConfirmedPrivateTransfer
@@ -98,12 +98,12 @@ func (m *BACnetServiceAckConfirmedPrivateTransfer) GetResultBlock() *BACnetConst
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckConfirmedPrivateTransfer factory function for BACnetServiceAckConfirmedPrivateTransfer
-func NewBACnetServiceAckConfirmedPrivateTransfer(vendorId *BACnetVendorIdTagged, serviceNumber *BACnetContextTagUnsignedInteger, resultBlock *BACnetConstructedData, serviceRequestLength uint16) *BACnetServiceAckConfirmedPrivateTransfer {
+func NewBACnetServiceAckConfirmedPrivateTransfer(vendorId *BACnetVendorIdTagged, serviceNumber *BACnetContextTagUnsignedInteger, resultBlock *BACnetConstructedData, serviceAckLength uint16) *BACnetServiceAckConfirmedPrivateTransfer {
 	_result := &BACnetServiceAckConfirmedPrivateTransfer{
 		VendorId:         vendorId,
 		ServiceNumber:    serviceNumber,
 		ResultBlock:      resultBlock,
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -154,7 +154,7 @@ func (m *BACnetServiceAckConfirmedPrivateTransfer) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckConfirmedPrivateTransferParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckConfirmedPrivateTransfer, error) {
+func BACnetServiceAckConfirmedPrivateTransferParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckConfirmedPrivateTransfer, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckConfirmedPrivateTransfer"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedTextMessage.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedTextMessage.go
index 2e7b5003b8..f11aa21ce5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedTextMessage.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckConfirmedTextMessage.go
@@ -30,7 +30,7 @@ type BACnetServiceAckConfirmedTextMessage struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckConfirmedTextMessage is the corresponding interface of BACnetServiceAckConfirmedTextMessage
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckConfirmedTextMessage) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckConfirmedTextMessage factory function for BACnetServiceAckConfirmedTextMessage
-func NewBACnetServiceAckConfirmedTextMessage(serviceRequestLength uint16) *BACnetServiceAckConfirmedTextMessage {
+func NewBACnetServiceAckConfirmedTextMessage(serviceAckLength uint16) *BACnetServiceAckConfirmedTextMessage {
 	_result := &BACnetServiceAckConfirmedTextMessage{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckConfirmedTextMessage) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckConfirmedTextMessageParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckConfirmedTextMessage, error) {
+func BACnetServiceAckConfirmedTextMessageParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckConfirmedTextMessage, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckConfirmedTextMessage"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
index 7f0a55991f..63738c26de 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
@@ -30,7 +30,7 @@ type BACnetServiceAckCreateObject struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckCreateObject is the corresponding interface of BACnetServiceAckCreateObject
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckCreateObject) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckCreateObject factory function for BACnetServiceAckCreateObject
-func NewBACnetServiceAckCreateObject(serviceRequestLength uint16) *BACnetServiceAckCreateObject {
+func NewBACnetServiceAckCreateObject(serviceAckLength uint16) *BACnetServiceAckCreateObject {
 	_result := &BACnetServiceAckCreateObject{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckCreateObject) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckCreateObjectParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckCreateObject, error) {
+func BACnetServiceAckCreateObjectParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckCreateObject, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckCreateObject"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckDeviceCommunicationControl.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckDeviceCommunicationControl.go
index 371f38caa9..f507681fee 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckDeviceCommunicationControl.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckDeviceCommunicationControl.go
@@ -30,7 +30,7 @@ type BACnetServiceAckDeviceCommunicationControl struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckDeviceCommunicationControl is the corresponding interface of BACnetServiceAckDeviceCommunicationControl
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckDeviceCommunicationControl) GetParent() *BACnetServiceA
 }
 
 // NewBACnetServiceAckDeviceCommunicationControl factory function for BACnetServiceAckDeviceCommunicationControl
-func NewBACnetServiceAckDeviceCommunicationControl(serviceRequestLength uint16) *BACnetServiceAckDeviceCommunicationControl {
+func NewBACnetServiceAckDeviceCommunicationControl(serviceAckLength uint16) *BACnetServiceAckDeviceCommunicationControl {
 	_result := &BACnetServiceAckDeviceCommunicationControl{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckDeviceCommunicationControl) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckDeviceCommunicationControlParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckDeviceCommunicationControl, error) {
+func BACnetServiceAckDeviceCommunicationControlParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckDeviceCommunicationControl, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckDeviceCommunicationControl"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
index 15157f236a..331b537cb0 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
@@ -30,7 +30,7 @@ type BACnetServiceAckGetAlarmSummary struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckGetAlarmSummary is the corresponding interface of BACnetServiceAckGetAlarmSummary
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckGetAlarmSummary) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckGetAlarmSummary factory function for BACnetServiceAckGetAlarmSummary
-func NewBACnetServiceAckGetAlarmSummary(serviceRequestLength uint16) *BACnetServiceAckGetAlarmSummary {
+func NewBACnetServiceAckGetAlarmSummary(serviceAckLength uint16) *BACnetServiceAckGetAlarmSummary {
 	_result := &BACnetServiceAckGetAlarmSummary{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckGetAlarmSummary) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckGetAlarmSummaryParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckGetAlarmSummary, error) {
+func BACnetServiceAckGetAlarmSummaryParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckGetAlarmSummary, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckGetAlarmSummary"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
index fc4455c79b..476873684b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
@@ -37,7 +37,7 @@ type BACnetServiceAckGetEnrollmentSummary struct {
 	NotificationClass *BACnetApplicationTagUnsignedInteger
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckGetEnrollmentSummary is the corresponding interface of BACnetServiceAckGetEnrollmentSummary
@@ -112,14 +112,14 @@ func (m *BACnetServiceAckGetEnrollmentSummary) GetNotificationClass() *BACnetApp
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckGetEnrollmentSummary factory function for BACnetServiceAckGetEnrollmentSummary
-func NewBACnetServiceAckGetEnrollmentSummary(objectIdentifier *BACnetApplicationTagObjectIdentifier, eventType *BACnetEventTypeTagged, eventState *BACnetEventStateTagged, priority *BACnetApplicationTagUnsignedInteger, notificationClass *BACnetApplicationTagUnsignedInteger, serviceRequestLength uint16) *BACnetServiceAckGetEnrollmentSummary {
+func NewBACnetServiceAckGetEnrollmentSummary(objectIdentifier *BACnetApplicationTagObjectIdentifier, eventType *BACnetEventTypeTagged, eventState *BACnetEventStateTagged, priority *BACnetApplicationTagUnsignedInteger, notificationClass *BACnetApplicationTagUnsignedInteger, serviceAckLength uint16) *BACnetServiceAckGetEnrollmentSummary {
 	_result := &BACnetServiceAckGetEnrollmentSummary{
 		ObjectIdentifier:  objectIdentifier,
 		EventType:         eventType,
 		EventState:        eventState,
 		Priority:          priority,
 		NotificationClass: notificationClass,
-		BACnetServiceAck:  NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck:  NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -176,7 +176,7 @@ func (m *BACnetServiceAckGetEnrollmentSummary) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckGetEnrollmentSummaryParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckGetEnrollmentSummary, error) {
+func BACnetServiceAckGetEnrollmentSummaryParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckGetEnrollmentSummary, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckGetEnrollmentSummary"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
index 84e03a1516..429ec53a31 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
@@ -33,7 +33,7 @@ type BACnetServiceAckGetEventInformation struct {
 	MoreEvents           *BACnetContextTagBoolean
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckGetEventInformation is the corresponding interface of BACnetServiceAckGetEventInformation
@@ -90,11 +90,11 @@ func (m *BACnetServiceAckGetEventInformation) GetMoreEvents() *BACnetContextTagB
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckGetEventInformation factory function for BACnetServiceAckGetEventInformation
-func NewBACnetServiceAckGetEventInformation(listOfEventSummaries *BACnetEventSummariesList, moreEvents *BACnetContextTagBoolean, serviceRequestLength uint16) *BACnetServiceAckGetEventInformation {
+func NewBACnetServiceAckGetEventInformation(listOfEventSummaries *BACnetEventSummariesList, moreEvents *BACnetContextTagBoolean, serviceAckLength uint16) *BACnetServiceAckGetEventInformation {
 	_result := &BACnetServiceAckGetEventInformation{
 		ListOfEventSummaries: listOfEventSummaries,
 		MoreEvents:           moreEvents,
-		BACnetServiceAck:     NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck:     NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -140,7 +140,7 @@ func (m *BACnetServiceAckGetEventInformation) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckGetEventInformationParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckGetEventInformation, error) {
+func BACnetServiceAckGetEventInformationParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckGetEventInformation, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckGetEventInformation"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckLifeSafetyOperation.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckLifeSafetyOperation.go
index 8d617bc7b8..94256c93e2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckLifeSafetyOperation.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckLifeSafetyOperation.go
@@ -30,7 +30,7 @@ type BACnetServiceAckLifeSafetyOperation struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckLifeSafetyOperation is the corresponding interface of BACnetServiceAckLifeSafetyOperation
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckLifeSafetyOperation) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckLifeSafetyOperation factory function for BACnetServiceAckLifeSafetyOperation
-func NewBACnetServiceAckLifeSafetyOperation(serviceRequestLength uint16) *BACnetServiceAckLifeSafetyOperation {
+func NewBACnetServiceAckLifeSafetyOperation(serviceAckLength uint16) *BACnetServiceAckLifeSafetyOperation {
 	_result := &BACnetServiceAckLifeSafetyOperation{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckLifeSafetyOperation) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckLifeSafetyOperationParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckLifeSafetyOperation, error) {
+func BACnetServiceAckLifeSafetyOperationParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckLifeSafetyOperation, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckLifeSafetyOperation"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
index 33f4eba76a..18493e4e37 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
@@ -36,7 +36,7 @@ type BACnetServiceAckReadProperty struct {
 	Values             *BACnetConstructedData
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckReadProperty is the corresponding interface of BACnetServiceAckReadProperty
@@ -105,13 +105,13 @@ func (m *BACnetServiceAckReadProperty) GetValues() *BACnetConstructedData {
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckReadProperty factory function for BACnetServiceAckReadProperty
-func NewBACnetServiceAckReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetPropertyIdentifierTagged, arrayIndex *BACnetContextTagUnsignedInteger, values *BACnetConstructedData, serviceRequestLength uint16) *BACnetServiceAckReadProperty {
+func NewBACnetServiceAckReadProperty(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetPropertyIdentifierTagged, arrayIndex *BACnetContextTagUnsignedInteger, values *BACnetConstructedData, serviceAckLength uint16) *BACnetServiceAckReadProperty {
 	_result := &BACnetServiceAckReadProperty{
 		ObjectIdentifier:   objectIdentifier,
 		PropertyIdentifier: propertyIdentifier,
 		ArrayIndex:         arrayIndex,
 		Values:             values,
-		BACnetServiceAck:   NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck:   NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -167,7 +167,7 @@ func (m *BACnetServiceAckReadProperty) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckReadPropertyParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckReadProperty, error) {
+func BACnetServiceAckReadPropertyParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckReadProperty, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckReadProperty"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyConditional.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyConditional.go
index 17df3c572f..36e492d2a6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyConditional.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyConditional.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,14 +29,17 @@ import (
 // BACnetServiceAckReadPropertyConditional is the data-structure of this message
 type BACnetServiceAckReadPropertyConditional struct {
 	*BACnetServiceAck
+	BytesOfRemovedService []byte
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckReadPropertyConditional is the corresponding interface of BACnetServiceAckReadPropertyConditional
 type IBACnetServiceAckReadPropertyConditional interface {
 	IBACnetServiceAck
+	// GetBytesOfRemovedService returns BytesOfRemovedService (property field)
+	GetBytesOfRemovedService() []byte
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -64,10 +68,25 @@ func (m *BACnetServiceAckReadPropertyConditional) GetParent() *BACnetServiceAck
 	return m.BACnetServiceAck
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetServiceAckReadPropertyConditional) GetBytesOfRemovedService() []byte {
+	return m.BytesOfRemovedService
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetServiceAckReadPropertyConditional factory function for BACnetServiceAckReadPropertyConditional
-func NewBACnetServiceAckReadPropertyConditional(serviceRequestLength uint16) *BACnetServiceAckReadPropertyConditional {
+func NewBACnetServiceAckReadPropertyConditional(bytesOfRemovedService []byte, serviceAckLength uint16) *BACnetServiceAckReadPropertyConditional {
 	_result := &BACnetServiceAckReadPropertyConditional{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BytesOfRemovedService: bytesOfRemovedService,
+		BACnetServiceAck:      NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -100,6 +119,11 @@ func (m *BACnetServiceAckReadPropertyConditional) GetLengthInBits() uint16 {
 func (m *BACnetServiceAckReadPropertyConditional) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Array field
+	if len(m.BytesOfRemovedService) > 0 {
+		lengthInBits += 8 * uint16(len(m.BytesOfRemovedService))
+	}
+
 	return lengthInBits
 }
 
@@ -107,7 +131,7 @@ func (m *BACnetServiceAckReadPropertyConditional) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckReadPropertyConditionalParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckReadPropertyConditional, error) {
+func BACnetServiceAckReadPropertyConditionalParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckReadPropertyConditional, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckReadPropertyConditional"); pullErr != nil {
@@ -115,10 +139,11 @@ func BACnetServiceAckReadPropertyConditionalParse(readBuffer utils.ReadBuffer, s
 	}
 	currentPos := positionAware.GetPos()
 	_ = currentPos
-
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Byte Array field (bytesOfRemovedService)
+	numberOfBytesbytesOfRemovedService := int(utils.InlineIf(bool(bool((serviceAckLength) > (0))), func() interface{} { return uint16(uint16(uint16(serviceAckLength) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+	bytesOfRemovedService, _readArrayErr := readBuffer.ReadByteArray("bytesOfRemovedService", numberOfBytesbytesOfRemovedService)
+	if _readArrayErr != nil {
+		return nil, errors.Wrap(_readArrayErr, "Error parsing 'bytesOfRemovedService' field")
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetServiceAckReadPropertyConditional"); closeErr != nil {
@@ -127,7 +152,8 @@ func BACnetServiceAckReadPropertyConditionalParse(readBuffer utils.ReadBuffer, s
 
 	// Create a partially initialized instance
 	_child := &BACnetServiceAckReadPropertyConditional{
-		BACnetServiceAck: &BACnetServiceAck{},
+		BytesOfRemovedService: bytesOfRemovedService,
+		BACnetServiceAck:      &BACnetServiceAck{},
 	}
 	_child.BACnetServiceAck.Child = _child
 	return _child, nil
@@ -141,6 +167,15 @@ func (m *BACnetServiceAckReadPropertyConditional) Serialize(writeBuffer utils.Wr
 			return pushErr
 		}
 
+		// Array Field (bytesOfRemovedService)
+		if m.BytesOfRemovedService != nil {
+			// Byte Array field (bytesOfRemovedService)
+			_writeArrayErr := writeBuffer.WriteByteArray("bytesOfRemovedService", m.BytesOfRemovedService)
+			if _writeArrayErr != nil {
+				return errors.Wrap(_writeArrayErr, "Error serializing 'bytesOfRemovedService' field")
+			}
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetServiceAckReadPropertyConditional"); popErr != nil {
 			return popErr
 		}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
index cab62f1f50..c9110f1c5c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
@@ -32,7 +32,7 @@ type BACnetServiceAckReadPropertyMultiple struct {
 	Data []*BACnetReadAccessResult
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckReadPropertyMultiple is the corresponding interface of BACnetServiceAckReadPropertyMultiple
@@ -83,10 +83,10 @@ func (m *BACnetServiceAckReadPropertyMultiple) GetData() []*BACnetReadAccessResu
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckReadPropertyMultiple factory function for BACnetServiceAckReadPropertyMultiple
-func NewBACnetServiceAckReadPropertyMultiple(data []*BACnetReadAccessResult, serviceRequestLength uint16) *BACnetServiceAckReadPropertyMultiple {
+func NewBACnetServiceAckReadPropertyMultiple(data []*BACnetReadAccessResult, serviceAckLength uint16) *BACnetServiceAckReadPropertyMultiple {
 	_result := &BACnetServiceAckReadPropertyMultiple{
 		Data:             data,
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -133,7 +133,7 @@ func (m *BACnetServiceAckReadPropertyMultiple) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckReadPropertyMultipleParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckReadPropertyMultiple, error) {
+func BACnetServiceAckReadPropertyMultipleParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckReadPropertyMultiple, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckReadPropertyMultiple"); pullErr != nil {
@@ -149,7 +149,7 @@ func BACnetServiceAckReadPropertyMultipleParse(readBuffer utils.ReadBuffer, serv
 	// Length array
 	data := make([]*BACnetReadAccessResult, 0)
 	{
-		_dataLength := serviceRequestLength
+		_dataLength := serviceAckLength
 		_dataEndPos := positionAware.GetPos() + uint16(_dataLength)
 		for positionAware.GetPos() < _dataEndPos {
 			_item, _err := BACnetReadAccessResultParse(readBuffer)
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadRange.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
index 1e63b45c4d..ce2da06cfd 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
@@ -39,7 +39,7 @@ type BACnetServiceAckReadRange struct {
 	FirstSequenceNumber *BACnetContextTagUnsignedInteger
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckReadRange is the corresponding interface of BACnetServiceAckReadRange
@@ -126,7 +126,7 @@ func (m *BACnetServiceAckReadRange) GetFirstSequenceNumber() *BACnetContextTagUn
 ///////////////////////////////////////////////////////////
 
 // NewBACnetServiceAckReadRange factory function for BACnetServiceAckReadRange
-func NewBACnetServiceAckReadRange(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetPropertyIdentifierTagged, propertyArrayIndex *BACnetContextTagUnsignedInteger, resultFlags *BACnetResultFlags, itemCount *BACnetContextTagUnsignedInteger, itemData *BACnetConstructedData, firstSequenceNumber *BACnetContextTagUnsignedInteger, serviceRequestLength uint16) *BACnetServiceAckReadRange {
+func NewBACnetServiceAckReadRange(objectIdentifier *BACnetContextTagObjectIdentifier, propertyIdentifier *BACnetPropertyIdentifierTagged, propertyArrayIndex *BACnetContextTagUnsignedInteger, resultFlags *BACnetResultFlags, itemCount *BACnetContextTagUnsignedInteger, itemData *BACnetConstructedData, firstSequenceNumber *BACnetContextTagUnsignedInteger, serviceAckLength uint16) *BACnetServiceAckReadRange {
 	_result := &BACnetServiceAckReadRange{
 		ObjectIdentifier:    objectIdentifier,
 		PropertyIdentifier:  propertyIdentifier,
@@ -135,7 +135,7 @@ func NewBACnetServiceAckReadRange(objectIdentifier *BACnetContextTagObjectIdenti
 		ItemCount:           itemCount,
 		ItemData:            itemData,
 		FirstSequenceNumber: firstSequenceNumber,
-		BACnetServiceAck:    NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck:    NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -202,7 +202,7 @@ func (m *BACnetServiceAckReadRange) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckReadRangeParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckReadRange, error) {
+func BACnetServiceAckReadRangeParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckReadRange, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckReadRange"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReinitializeDevice.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReinitializeDevice.go
index b58eb3a388..afe0a1426f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReinitializeDevice.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckReinitializeDevice.go
@@ -30,7 +30,7 @@ type BACnetServiceAckReinitializeDevice struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckReinitializeDevice is the corresponding interface of BACnetServiceAckReinitializeDevice
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckReinitializeDevice) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckReinitializeDevice factory function for BACnetServiceAckReinitializeDevice
-func NewBACnetServiceAckReinitializeDevice(serviceRequestLength uint16) *BACnetServiceAckReinitializeDevice {
+func NewBACnetServiceAckReinitializeDevice(serviceAckLength uint16) *BACnetServiceAckReinitializeDevice {
 	_result := &BACnetServiceAckReinitializeDevice{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckReinitializeDevice) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckReinitializeDeviceParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckReinitializeDevice, error) {
+func BACnetServiceAckReinitializeDeviceParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckReinitializeDevice, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckReinitializeDevice"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRemoveListElement.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRemoveListElement.go
index 94e2c5d3cc..777c822bab 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRemoveListElement.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRemoveListElement.go
@@ -30,7 +30,7 @@ type BACnetServiceAckRemoveListElement struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckRemoveListElement is the corresponding interface of BACnetServiceAckRemoveListElement
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckRemoveListElement) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckRemoveListElement factory function for BACnetServiceAckRemoveListElement
-func NewBACnetServiceAckRemoveListElement(serviceRequestLength uint16) *BACnetServiceAckRemoveListElement {
+func NewBACnetServiceAckRemoveListElement(serviceAckLength uint16) *BACnetServiceAckRemoveListElement {
 	_result := &BACnetServiceAckRemoveListElement{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckRemoveListElement) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckRemoveListElementParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckRemoveListElement, error) {
+func BACnetServiceAckRemoveListElementParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckRemoveListElement, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckRemoveListElement"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRequestKey.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRequestKey.go
index 9e4d3f7a0c..f7deb9ec28 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRequestKey.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckRequestKey.go
@@ -21,6 +21,7 @@ package model
 
 import (
 	"github.com/apache/plc4x/plc4go/internal/spi/utils"
+	"github.com/pkg/errors"
 )
 
 // Code generated by code-generation. DO NOT EDIT.
@@ -28,14 +29,17 @@ import (
 // BACnetServiceAckRequestKey is the data-structure of this message
 type BACnetServiceAckRequestKey struct {
 	*BACnetServiceAck
+	BytesOfRemovedService []byte
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckRequestKey is the corresponding interface of BACnetServiceAckRequestKey
 type IBACnetServiceAckRequestKey interface {
 	IBACnetServiceAck
+	// GetBytesOfRemovedService returns BytesOfRemovedService (property field)
+	GetBytesOfRemovedService() []byte
 	// GetLengthInBytes returns the length in bytes
 	GetLengthInBytes() uint16
 	// GetLengthInBits returns the length in bits
@@ -64,10 +68,25 @@ func (m *BACnetServiceAckRequestKey) GetParent() *BACnetServiceAck {
 	return m.BACnetServiceAck
 }
 
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for property fields.
+///////////////////////
+
+func (m *BACnetServiceAckRequestKey) GetBytesOfRemovedService() []byte {
+	return m.BytesOfRemovedService
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
 // NewBACnetServiceAckRequestKey factory function for BACnetServiceAckRequestKey
-func NewBACnetServiceAckRequestKey(serviceRequestLength uint16) *BACnetServiceAckRequestKey {
+func NewBACnetServiceAckRequestKey(bytesOfRemovedService []byte, serviceAckLength uint16) *BACnetServiceAckRequestKey {
 	_result := &BACnetServiceAckRequestKey{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BytesOfRemovedService: bytesOfRemovedService,
+		BACnetServiceAck:      NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -100,6 +119,11 @@ func (m *BACnetServiceAckRequestKey) GetLengthInBits() uint16 {
 func (m *BACnetServiceAckRequestKey) GetLengthInBitsConditional(lastItem bool) uint16 {
 	lengthInBits := uint16(m.GetParentLengthInBits())
 
+	// Array field
+	if len(m.BytesOfRemovedService) > 0 {
+		lengthInBits += 8 * uint16(len(m.BytesOfRemovedService))
+	}
+
 	return lengthInBits
 }
 
@@ -107,7 +131,7 @@ func (m *BACnetServiceAckRequestKey) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckRequestKeyParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckRequestKey, error) {
+func BACnetServiceAckRequestKeyParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckRequestKey, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckRequestKey"); pullErr != nil {
@@ -115,10 +139,11 @@ func BACnetServiceAckRequestKeyParse(readBuffer utils.ReadBuffer, serviceRequest
 	}
 	currentPos := positionAware.GetPos()
 	_ = currentPos
-
-	// Validation
-	if !(bool((1) == (2))) {
-		return nil, utils.ParseValidationError{"TODO: implement me"}
+	// Byte Array field (bytesOfRemovedService)
+	numberOfBytesbytesOfRemovedService := int(utils.InlineIf(bool(bool((serviceAckLength) > (0))), func() interface{} { return uint16(uint16(uint16(serviceAckLength) - uint16(uint16(1)))) }, func() interface{} { return uint16(uint16(0)) }).(uint16))
+	bytesOfRemovedService, _readArrayErr := readBuffer.ReadByteArray("bytesOfRemovedService", numberOfBytesbytesOfRemovedService)
+	if _readArrayErr != nil {
+		return nil, errors.Wrap(_readArrayErr, "Error parsing 'bytesOfRemovedService' field")
 	}
 
 	if closeErr := readBuffer.CloseContext("BACnetServiceAckRequestKey"); closeErr != nil {
@@ -127,7 +152,8 @@ func BACnetServiceAckRequestKeyParse(readBuffer utils.ReadBuffer, serviceRequest
 
 	// Create a partially initialized instance
 	_child := &BACnetServiceAckRequestKey{
-		BACnetServiceAck: &BACnetServiceAck{},
+		BytesOfRemovedService: bytesOfRemovedService,
+		BACnetServiceAck:      &BACnetServiceAck{},
 	}
 	_child.BACnetServiceAck.Child = _child
 	return _child, nil
@@ -141,6 +167,15 @@ func (m *BACnetServiceAckRequestKey) Serialize(writeBuffer utils.WriteBuffer) er
 			return pushErr
 		}
 
+		// Array Field (bytesOfRemovedService)
+		if m.BytesOfRemovedService != nil {
+			// Byte Array field (bytesOfRemovedService)
+			_writeArrayErr := writeBuffer.WriteByteArray("bytesOfRemovedService", m.BytesOfRemovedService)
+			if _writeArrayErr != nil {
+				return errors.Wrap(_writeArrayErr, "Error serializing 'bytesOfRemovedService' field")
+			}
+		}
+
 		if popErr := writeBuffer.PopContext("BACnetServiceAckRequestKey"); popErr != nil {
 			return popErr
 		}
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCov.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCov.go
index 65644d30b5..7d43cdafee 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCov.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCov.go
@@ -30,7 +30,7 @@ type BACnetServiceAckSubscribeCov struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckSubscribeCov is the corresponding interface of BACnetServiceAckSubscribeCov
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckSubscribeCov) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckSubscribeCov factory function for BACnetServiceAckSubscribeCov
-func NewBACnetServiceAckSubscribeCov(serviceRequestLength uint16) *BACnetServiceAckSubscribeCov {
+func NewBACnetServiceAckSubscribeCov(serviceAckLength uint16) *BACnetServiceAckSubscribeCov {
 	_result := &BACnetServiceAckSubscribeCov{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckSubscribeCov) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckSubscribeCovParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckSubscribeCov, error) {
+func BACnetServiceAckSubscribeCovParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckSubscribeCov, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckSubscribeCov"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovProperty.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovProperty.go
index 48899e2581..66dad3032d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovProperty.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovProperty.go
@@ -30,7 +30,7 @@ type BACnetServiceAckSubscribeCovProperty struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckSubscribeCovProperty is the corresponding interface of BACnetServiceAckSubscribeCovProperty
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckSubscribeCovProperty) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckSubscribeCovProperty factory function for BACnetServiceAckSubscribeCovProperty
-func NewBACnetServiceAckSubscribeCovProperty(serviceRequestLength uint16) *BACnetServiceAckSubscribeCovProperty {
+func NewBACnetServiceAckSubscribeCovProperty(serviceAckLength uint16) *BACnetServiceAckSubscribeCovProperty {
 	_result := &BACnetServiceAckSubscribeCovProperty{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckSubscribeCovProperty) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckSubscribeCovPropertyParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckSubscribeCovProperty, error) {
+func BACnetServiceAckSubscribeCovPropertyParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckSubscribeCovProperty, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckSubscribeCovProperty"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovPropertyMultiple.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovPropertyMultiple.go
index df34ae37b0..44f1a363ba 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovPropertyMultiple.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckSubscribeCovPropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetServiceAckSubscribeCovPropertyMultiple struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckSubscribeCovPropertyMultiple is the corresponding interface of BACnetServiceAckSubscribeCovPropertyMultiple
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckSubscribeCovPropertyMultiple) GetParent() *BACnetServic
 }
 
 // NewBACnetServiceAckSubscribeCovPropertyMultiple factory function for BACnetServiceAckSubscribeCovPropertyMultiple
-func NewBACnetServiceAckSubscribeCovPropertyMultiple(serviceRequestLength uint16) *BACnetServiceAckSubscribeCovPropertyMultiple {
+func NewBACnetServiceAckSubscribeCovPropertyMultiple(serviceAckLength uint16) *BACnetServiceAckSubscribeCovPropertyMultiple {
 	_result := &BACnetServiceAckSubscribeCovPropertyMultiple{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckSubscribeCovPropertyMultiple) GetLengthInBytes() uint16
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckSubscribeCovPropertyMultipleParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckSubscribeCovPropertyMultiple, error) {
+func BACnetServiceAckSubscribeCovPropertyMultipleParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckSubscribeCovPropertyMultiple, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckSubscribeCovPropertyMultiple"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTClose.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTClose.go
index c7d94e4941..4a6ef3cf3a 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTClose.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTClose.go
@@ -30,7 +30,7 @@ type BACnetServiceAckVTClose struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckVTClose is the corresponding interface of BACnetServiceAckVTClose
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckVTClose) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckVTClose factory function for BACnetServiceAckVTClose
-func NewBACnetServiceAckVTClose(serviceRequestLength uint16) *BACnetServiceAckVTClose {
+func NewBACnetServiceAckVTClose(serviceAckLength uint16) *BACnetServiceAckVTClose {
 	_result := &BACnetServiceAckVTClose{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckVTClose) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckVTCloseParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckVTClose, error) {
+func BACnetServiceAckVTCloseParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckVTClose, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckVTClose"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTData.go
index fb15901074..7e2976c902 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTData.go
@@ -30,7 +30,7 @@ type BACnetServiceAckVTData struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckVTData is the corresponding interface of BACnetServiceAckVTData
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckVTData) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckVTData factory function for BACnetServiceAckVTData
-func NewBACnetServiceAckVTData(serviceRequestLength uint16) *BACnetServiceAckVTData {
+func NewBACnetServiceAckVTData(serviceAckLength uint16) *BACnetServiceAckVTData {
 	_result := &BACnetServiceAckVTData{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckVTData) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckVTDataParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckVTData, error) {
+func BACnetServiceAckVTDataParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckVTData, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckVTData"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
index d292736bbf..ff70396a7c 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
@@ -30,7 +30,7 @@ type BACnetServiceAckVTOpen struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckVTOpen is the corresponding interface of BACnetServiceAckVTOpen
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckVTOpen) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckVTOpen factory function for BACnetServiceAckVTOpen
-func NewBACnetServiceAckVTOpen(serviceRequestLength uint16) *BACnetServiceAckVTOpen {
+func NewBACnetServiceAckVTOpen(serviceAckLength uint16) *BACnetServiceAckVTOpen {
 	_result := &BACnetServiceAckVTOpen{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckVTOpen) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckVTOpenParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckVTOpen, error) {
+func BACnetServiceAckVTOpenParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckVTOpen, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckVTOpen"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWriteProperty.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWriteProperty.go
index 741aeb94f2..74893a972e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWriteProperty.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWriteProperty.go
@@ -30,7 +30,7 @@ type BACnetServiceAckWriteProperty struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckWriteProperty is the corresponding interface of BACnetServiceAckWriteProperty
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckWriteProperty) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckWriteProperty factory function for BACnetServiceAckWriteProperty
-func NewBACnetServiceAckWriteProperty(serviceRequestLength uint16) *BACnetServiceAckWriteProperty {
+func NewBACnetServiceAckWriteProperty(serviceAckLength uint16) *BACnetServiceAckWriteProperty {
 	_result := &BACnetServiceAckWriteProperty{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckWriteProperty) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckWritePropertyParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckWriteProperty, error) {
+func BACnetServiceAckWritePropertyParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckWriteProperty, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckWriteProperty"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWritePropertyMultiple.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWritePropertyMultiple.go
index e202059d9f..b1dda95e6d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWritePropertyMultiple.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckWritePropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetServiceAckWritePropertyMultiple struct {
 	*BACnetServiceAck
 
 	// Arguments.
-	ServiceRequestLength uint16
+	ServiceAckLength uint16
 }
 
 // IBACnetServiceAckWritePropertyMultiple is the corresponding interface of BACnetServiceAckWritePropertyMultiple
@@ -65,9 +65,9 @@ func (m *BACnetServiceAckWritePropertyMultiple) GetParent() *BACnetServiceAck {
 }
 
 // NewBACnetServiceAckWritePropertyMultiple factory function for BACnetServiceAckWritePropertyMultiple
-func NewBACnetServiceAckWritePropertyMultiple(serviceRequestLength uint16) *BACnetServiceAckWritePropertyMultiple {
+func NewBACnetServiceAckWritePropertyMultiple(serviceAckLength uint16) *BACnetServiceAckWritePropertyMultiple {
 	_result := &BACnetServiceAckWritePropertyMultiple{
-		BACnetServiceAck: NewBACnetServiceAck(serviceRequestLength),
+		BACnetServiceAck: NewBACnetServiceAck(serviceAckLength),
 	}
 	_result.Child = _result
 	return _result
@@ -107,7 +107,7 @@ func (m *BACnetServiceAckWritePropertyMultiple) GetLengthInBytes() uint16 {
 	return m.GetLengthInBits() / 8
 }
 
-func BACnetServiceAckWritePropertyMultipleParse(readBuffer utils.ReadBuffer, serviceRequestLength uint16) (*BACnetServiceAckWritePropertyMultiple, error) {
+func BACnetServiceAckWritePropertyMultipleParse(readBuffer utils.ReadBuffer, serviceAckLength uint16) (*BACnetServiceAckWritePropertyMultiple, error) {
 	positionAware := readBuffer
 	_ = positionAware
 	if pullErr := readBuffer.PullContext("BACnetServiceAckWritePropertyMultiple"); pullErr != nil {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go b/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go
index 667308302b..2e03f90709 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/StaticHelper.go
@@ -33,8 +33,8 @@ func ReadEnumGenericFailing(readBuffer utils.ReadBuffer, actualLength uint32, te
 		return nil, err
 	}
 	switch template.(type) {
-	case BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable:
-		return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable(rawValue), nil
+	case BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable:
+		return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable(rawValue), nil
 	case BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice:
 		return BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice(rawValue), nil
 	case BACnetSegmentation:
@@ -392,7 +392,7 @@ func WriteEnumGeneric(writeBuffer utils.WriteBuffer, value interface{}) error {
 		valueValue = uint32(v)
 	case BACnetBinaryPV: // <<-- private enum is always defined
 		valueValue = uint32(v)
-	case BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable: // <<-- private enum is always defined
+	case BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable: // <<-- private enum is always defined
 		valueValue = uint32(v)
 	case BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice: // <<-- private enum is always defined
 		valueValue = uint32(v)
diff --git a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
index 9ea4523ddd..640e2bd0df 100644
--- a/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
+++ b/plc4j/drivers/bacnet/src/main/java/org/apache/plc4x/java/bacnetip/readwrite/utils/StaticHelper.java
@@ -46,29 +46,29 @@ public class StaticHelper {
         int bitsToRead = (int) (actualLength * 8);
         long rawValue = readBuffer.readUnsignedLong("value", bitsToRead);
         Class<?> declaringClass = template.getDeclaringClass();
-        if (declaringClass == BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class) {
-            if (!BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.isDefined((short) rawValue))
-                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class.getSimpleName());
-            return BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.enumForValue((short) rawValue);
+        if (declaringClass == BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.class) {
+            if (!BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.isDefined((short) rawValue))
+                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.class.getSimpleName());
+            return BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.enumForValue((short) rawValue);
         } else if (declaringClass == BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice.class) {
             if (!BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice.isDefined((short) rawValue))
-                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class.getSimpleName());
+                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice.class.getSimpleName());
             return BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice.enumForValue((short) rawValue);
         } else if (declaringClass == BACnetSegmentation.class) {
             if (!BACnetSegmentation.isDefined((short) rawValue))
-                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class.getSimpleName());
+                throw new ParseException("Invalid value " + rawValue + " for " + BACnetSegmentation.class.getSimpleName());
             return BACnetSegmentation.enumForValue((short) rawValue);
         } else if (declaringClass == BACnetAction.class) {
             if (!BACnetAction.isDefined((short) rawValue))
-                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class.getSimpleName());
+                throw new ParseException("Invalid value " + rawValue + " for " + BACnetAction.class.getSimpleName());
             return BACnetAction.enumForValue((short) rawValue);
         } else if (declaringClass == BACnetNotifyType.class) {
             if (!BACnetNotifyType.isDefined((short) rawValue))
-                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class.getSimpleName());
+                throw new ParseException("Invalid value " + rawValue + " for " + BACnetBinaryPV.class.getSimpleName());
             return BACnetNotifyType.enumForValue((short) rawValue);
         } else if (declaringClass == BACnetBinaryPV.class) {
             if (!BACnetBinaryPV.isDefined((short) rawValue))
-                throw new ParseException("Invalid value " + rawValue + " for " + BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class.getSimpleName());
+                throw new ParseException("Invalid value " + rawValue + " for " + BACnetBinaryPV.class.getSimpleName());
             return BACnetBinaryPV.enumForValue((short) rawValue);
         }
         throw new ParseException("Unmapped type " + declaringClass);
@@ -196,8 +196,8 @@ public class StaticHelper {
             valueValue = ((BACnetRejectReason) value).getValue();
         } else if (value.getDeclaringClass() == BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice.class) {
             valueValue = ((BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice) value).getValue();
-        } else if (value.getDeclaringClass() == BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable.class) {
-            valueValue = ((BACnetConfirmedServiceRequestReinitializeDeviceEnableDisable) value).getValue();
+        } else if (value.getDeclaringClass() == BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.class) {
+            valueValue = ((BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable) value).getValue();
         } else {
             LOGGER.warn("using reflection for {}", value.getDeclaringClass());
             try {
diff --git a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
index d2a78407d9..1c7f0888d2 100644
--- a/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
+++ b/protocols/bacnetip/src/main/resources/protocols/bacnetip/bacnetip.mspec
@@ -342,10 +342,12 @@
             [optional BACnetNotificationParameters('12', 'eventObjectIdentifier.objectType')            eventValues                    ]
         ]
         ['GET_ENROLLMENT_SUMMARY' BACnetConfirmedServiceRequestGetEnrollmentSummary
-            [simple   BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged('0') acknowledgmentFilter           ]
+            [simple   BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged('0', 'TagClass.CONTEXT_SPECIFIC_TAGS')
+                                                                                                        acknowledgmentFilter           ]
             [optional BACnetRecipientProcessEnclosed('1')                                               enrollmentFilter               ]
-            [optional BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged('2')      eventStateFilter               ]
-            [optional BACnetEventTypeTagged('3')                                                        eventTypeFilter                ]
+            [optional BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged('2', 'TagClass.CONTEXT_SPECIFIC_TAGS')
+                                                                                                        eventStateFilter               ]
+            [optional BACnetEventTypeTagged('3', 'TagClass.CONTEXT_SPECIFIC_TAGS')                      eventTypeFilter                ]
             [optional BACnetConfirmedServiceRequestGetEnrollmentSummaryPriorityFilter('4')              priorityFilter                 ]
             [optional BACnetContextTagUnsignedInteger('5', 'BACnetDataType.UNSIGNED_INTEGER')           notificationClassFilter        ]
         ]
@@ -478,7 +480,8 @@
         ['CONFIRMED_TEXT_MESSAGE' BACnetConfirmedServiceRequestConfirmedTextMessage
             [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      textMessageSourceDevice     ]
             [optional BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass('1')                    messageClass                ]
-            [simple   BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged('2')           messagePriority             ]
+            [simple   BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged('2', 'TagClass.CONTEXT_SPECIFIC_TAGS')
+                                                                                                            messagePriority             ]
             [simple   BACnetContextTagCharacterString('3', 'BACnetDataType.CHARACTER_STRING')               message                     ]
         ]
         ['REINITIALIZE_DEVICE' BACnetConfirmedServiceRequestReinitializeDevice
@@ -510,16 +513,13 @@
         //  Removed Services
 
         ['AUTHENTICATE' BACnetConfirmedServiceRequestAuthenticate
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [array    byte    bytesOfRemovedService length '(serviceRequestLength>0)?(serviceRequestLength - 1):0']
         ]
         ['REQUEST_KEY' BACnetConfirmedServiceRequestRequestKey
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [array    byte    bytesOfRemovedService length '(serviceRequestLength>0)?(serviceRequestLength - 1):0']
         ]
         ['READ_PROPERTY_CONDITIONAL' BACnetConfirmedServiceRequestReadPropertyConditional
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [array    byte    bytesOfRemovedService length '(serviceRequestLength>0)?(serviceRequestLength - 1):0']
         ]
         //
         ////
@@ -882,7 +882,7 @@
     ]
 ]
 
-[discriminatedType BACnetServiceAck(uint 16 serviceRequestLength)
+[discriminatedType BACnetServiceAck(uint 16 serviceAckLength)
     [discriminator   BACnetConfirmedServiceChoice
                         serviceChoice                   ]
     [typeSwitch serviceChoice
@@ -985,7 +985,7 @@
             [array    BACnetReadAccessResult
                             data
                             length
-                            'serviceRequestLength'                   ]
+                            'serviceAckLength'                   ]
         ]
         ['READ_RANGE' BACnetServiceAckReadRange
             [simple   BACnetContextTagObjectIdentifier('0', 'BACnetDataType.BACNET_OBJECT_IDENTIFIER')      objectIdentifier    ]
@@ -1054,16 +1054,13 @@
         //  Removed Services
 
         ['AUTHENTICATE' BACnetServiceAckAuthenticate
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [array    byte    bytesOfRemovedService length '(serviceAckLength>0)?(serviceAckLength - 1):0']
         ]
         ['REQUEST_KEY' BACnetServiceAckRequestKey
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [array    byte    bytesOfRemovedService length '(serviceAckLength>0)?(serviceAckLength - 1):0']
         ]
         ['READ_PROPERTY_CONDITIONAL' BACnetServiceAckReadPropertyConditional
-            // TODO: implement me
-            [validation    '1 == 2'    "TODO: implement me"]
+            [array    byte    bytesOfRemovedService length '(serviceAckLength>0)?(serviceAckLength - 1):0']
         ]
         //
         ////
@@ -1534,11 +1531,11 @@
         ['19' BACnetNotificationParametersChangeOfReliability(uint 8 peekedTagNumber)
             [simple   BACnetOpeningTag('peekedTagNumber')
                             innerOpeningTag                                         ]
-            [simple   BACnetReliabilityTagged('0', 'TagClass.ContextSpecificTags')
+            [simple   BACnetReliabilityTagged('0', 'TagClass.CONTEXT_SPECIFIC_TAGS')
                             reliability                                             ]
             [simple   BACnetStatusFlags('1')
                             statusFlags                                             ]
-            [simple   BACnetPropertyValues('2', 'monitoredObjectIdentifier.objectType')
+            [simple   BACnetPropertyValues('2', 'objectType')
                             propertyValues                                          ]
             [simple   BACnetClosingTag('peekedTagNumber')
                             innerClosingTag                                         ]
@@ -2094,7 +2091,9 @@
 [type BACnetAddress
     [simple   BACnetApplicationTagUnsignedInteger
                         networkNumber       ]
-    [virtual  bit   isLocalNetwork  'networkNumber.actualValue == 0']
+    // TODO: uint 64 ---> big int in java == boom
+    [virtual  uint 64   zero           '0'  ]
+    [virtual  bit   isLocalNetwork  'networkNumber.actualValue == zero']
     [simple   BACnetApplicationTagOctetString
                         macAddress          ]
     [virtual  bit   isBroadcast  'macAddress.actualLength == 0']
diff --git a/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml b/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml
index 2dd3181649..48a6416a7c 100644
--- a/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml
+++ b/protocols/bacnetip/src/test/resources/protocols/bacnet/ParserSerializerTestsuite.xml
@@ -5713,7 +5713,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -5724,7 +5724,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="ENABLE">0</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6096,7 +6096,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6107,7 +6107,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="ENABLE">0</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6418,7 +6418,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6429,7 +6429,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6524,7 +6524,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6535,7 +6535,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6630,7 +6630,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6641,7 +6641,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6736,7 +6736,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6747,7 +6747,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -6968,7 +6968,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -6979,7 +6979,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>
@@ -7165,7 +7165,7 @@
                         </serviceChoice>
                         <BACnetConfirmedServiceRequestDeviceCommunicationControl>
                           <enableDisable>
-                            <BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            <BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                               <header>
                                 <BACnetTagHeader>
                                   <tagNumber dataType="uint" bitLength="4">1</tagNumber>
@@ -7176,7 +7176,7 @@
                                 </BACnetTagHeader>
                               </header>
                               <value dataType="uint" bitLength="8" stringRepresentation="DISABLE">1</value>
-                            </BACnetConfirmedServiceRequestReinitializeDeviceEnableDisableTagged>
+                            </BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged>
                           </enableDisable>
                           <password>
                             <BACnetContextTag>