You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/02/28 16:12:51 UTC

[plc4x] branch fix/cdutz/reenable-golang-driver-testsuites updated: chore(driver/eip): Push before wiping my computer (might not build)

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

cdutz pushed a commit to branch fix/cdutz/reenable-golang-driver-testsuites
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/fix/cdutz/reenable-golang-driver-testsuites by this push:
     new 7f0f53d163 chore(driver/eip): Push before wiping my computer (might not build)
7f0f53d163 is described below

commit 7f0f53d163e08e0e5c4ae373e1f771dbed715bf4
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Feb 28 17:12:41 2023 +0100

    chore(driver/eip): Push before wiping my computer (might not build)
---
 .../templates/go/complex-type-template.go.ftlh     |    6 +-
 .../testing/protocols/eip/DriverTestsuite.xml      |   21 +-
 plc4go/internal/eip/Configuration.go               |    5 +-
 plc4go/internal/eip/Connection.go                  |   68 +-
 plc4go/internal/eip/Reader.go                      |  119 +-
 plc4go/internal/eip/Tag.go                         |   27 +-
 plc4go/internal/eip/TagHandler.go                  |   21 +-
 plc4go/internal/s7/Tag.go                          |    1 +
 plc4go/protocols/ads/readwrite/model/AmsPacket.go  |    1 +
 .../readwrite/model/BACnetApplicationTag.go        |    1 +
 .../readwrite/model/BACnetCalendarEntry.go         |    1 +
 .../bacnetip/readwrite/model/BACnetChannelValue.go |    2 +
 .../bacnetip/readwrite/model/BACnetClientCOV.go    |    1 +
 ...edServiceRequestAtomicReadFileStreamOrRecord.go |    1 +
 ...rviceRequestConfirmedTextMessageMessageClass.go |    1 +
 .../BACnetConfirmedServiceRequestReadRangeRange.go |    1 +
 .../readwrite/model/BACnetConstructedData.go       |    1 +
 .../model/BACnetEventLogRecordLogDatum.go          |    1 +
 .../readwrite/model/BACnetEventParameter.go        |    1 +
 ...BACnetEventParameterChangeOfValueCivCriteria.go |    1 +
 .../readwrite/model/BACnetFaultParameter.go        |    1 +
 ...etFaultParameterFaultExtendedParametersEntry.go |    2 +
 ...tFaultParameterFaultOutOfRangeMaxNormalValue.go |    1 +
 ...tFaultParameterFaultOutOfRangeMinNormalValue.go |    1 +
 .../bacnetip/readwrite/model/BACnetHostAddress.go  |    1 +
 .../model/BACnetLandingCallStatusCommand.go        |    1 +
 .../bacnetip/readwrite/model/BACnetLogData.go      |    1 +
 .../readwrite/model/BACnetLogDataLogDataEntry.go   |    1 +
 .../readwrite/model/BACnetLogRecordLogDatum.go     |    1 +
 .../model/BACnetNotificationParameters.go          |    1 +
 ...ationParametersChangeOfDiscreteValueNewValue.go |    2 +
 ...tNotificationParametersChangeOfValueNewValue.go |    1 +
 .../readwrite/model/BACnetOptionalBinaryPV.go      |    1 +
 .../model/BACnetOptionalCharacterString.go         |    1 +
 .../bacnetip/readwrite/model/BACnetOptionalREAL.go |    1 +
 .../readwrite/model/BACnetOptionalUnsigned.go      |    1 +
 .../readwrite/model/BACnetPriorityValue.go         |    2 +
 .../readwrite/model/BACnetProcessIdSelection.go    |    1 +
 .../BACnetPropertyAccessResultAccessResult.go      |    1 +
 .../readwrite/model/BACnetPropertyStates.go        |    1 +
 .../bacnetip/readwrite/model/BACnetRecipient.go    |    1 +
 .../bacnetip/readwrite/model/BACnetScale.go        |    1 +
 ...BACnetServiceAckAtomicReadFileStreamOrRecord.go |    1 +
 .../bacnetip/readwrite/model/BACnetShedLevel.go    |    1 +
 .../readwrite/model/BACnetSpecialEventPeriod.go    |    1 +
 .../bacnetip/readwrite/model/BACnetTimeStamp.go    |    1 +
 .../readwrite/model/BACnetTimerStateChangeValue.go |    2 +
 .../BACnetUnconfirmedServiceRequestWhoHasObject.go |    1 +
 .../bacnetip/readwrite/model/BACnetValueSource.go  |    1 +
 .../bacnetip/readwrite/model/BACnetVendorId.go     |   16 +
 plc4go/protocols/bacnetip/readwrite/model/NLM.go   |    1 +
 .../cbus/readwrite/model/AccessControlData.go      |    1 +
 .../cbus/readwrite/model/AirConditioningData.go    |    1 +
 plc4go/protocols/cbus/readwrite/model/CALData.go   |    2 +
 plc4go/protocols/cbus/readwrite/model/CALReply.go  |    1 +
 .../protocols/cbus/readwrite/model/CBusCommand.go  |    2 +
 .../model/CBusPointToMultiPointCommand.go          |    1 +
 .../readwrite/model/CBusPointToPointCommand.go     |    1 +
 .../model/CBusPointToPointToMultiPointCommand.go   |    1 +
 .../readwrite/model/ClockAndTimekeepingData.go     |    2 +
 .../protocols/cbus/readwrite/model/EncodedReply.go |    1 +
 .../cbus/readwrite/model/ErrorReportingData.go     |    1 +
 .../cbus/readwrite/model/LevelInformation.go       |    2 +
 .../protocols/cbus/readwrite/model/LightingData.go |    1 +
 .../cbus/readwrite/model/MeasurementData.go        |    1 +
 .../readwrite/model/MediaTransportControlData.go   |    1 +
 .../protocols/cbus/readwrite/model/MeteringData.go |    2 +
 .../protocols/cbus/readwrite/model/MonitoredSAL.go |    1 +
 plc4go/protocols/cbus/readwrite/model/Reply.go     |    1 +
 .../cbus/readwrite/model/ReplyOrConfirmation.go    |    2 +
 plc4go/protocols/cbus/readwrite/model/Request.go   |    1 +
 .../protocols/cbus/readwrite/model/SecurityData.go |    2 +
 .../cbus/readwrite/model/StatusRequest.go          |    1 +
 .../cbus/readwrite/model/TelephonyData.go          |    2 +
 .../cbus/readwrite/model/TriggerControlData.go     |    1 +
 plc4go/protocols/eip/readwrite/model/CIPClassID.go |  536 ++++-
 plc4go/protocols/eip/readwrite/model/CIPStatus.go  |   14 +-
 plc4go/protocols/eip/readwrite/model/CipService.go |   28 +-
 .../eip/readwrite/model/GetAttributeListRequest.go |  175 ++
 .../readwrite/model/GetAttributeListResponse.go    |  175 ++
 .../readwrite/model/GetAttributeSingleRequest.go   |  175 ++
 .../readwrite/model/GetAttributeSingleResponse.go  |  175 ++
 .../eip/readwrite/model/SetAttributeAllRequest.go  |  175 ++
 .../eip/readwrite/model/SetAttributeAllResponse.go |  175 ++
 .../eip/readwrite/model/SetAttributeListRequest.go |  175 ++
 .../readwrite/model/SetAttributeListResponse.go    |  175 ++
 .../readwrite/model/SetAttributeSingleRequest.go   |  175 ++
 .../readwrite/model/SetAttributeSingleResponse.go  |  175 ++
 .../protocols/eip/readwrite/model/StaticHelper.go  |   19 +
 .../knxnetip/readwrite/model/KnxDatapoint.go       |   23 +
 .../knxnetip/readwrite/model/KnxDatapointType.go   | 2084 ++++++++++----------
 .../knxnetip/readwrite/model/KnxManufacturer.go    |   16 +-
 plc4go/spi/testutils/DriverTestRunner.go           |   12 +-
 plc4go/tests/drivers/tests/eip_driver_test.go      |   11 +-
 .../java/bacnetip/readwrite/BACnetVendorId.java    |    2 +
 .../plc4x/java/eip/readwrite/CIPClassID.java       |   69 +-
 .../apache/plc4x/java/eip/readwrite/CIPStatus.java |    2 +-
 .../plc4x/java/eip/readwrite/CipService.java       |   58 +-
 .../java/eip/base/protocol/EipProtocolLogic.java   |    3 +-
 .../org/apache/plc4x/java/eip/base/tag/EipTag.java |   16 +-
 .../java/knxnetip/readwrite/KnxDatapoint.java      |   30 +
 .../java/knxnetip/readwrite/KnxDatapointType.java  |  460 ++---
 .../java/knxnetip/readwrite/KnxManufacturer.java   |    3 +-
 .../apache/plc4x/java/spi/Plc4xNettyWrapper.java   |    2 +-
 .../org/apache/plc4x/java/spi/values/PlcDINT.java  |    2 +-
 protocols/ab-eth/pom.xml                           |    6 +
 protocols/ads/pom.xml                              |    6 +
 protocols/canopen/pom.xml                          |    6 +
 protocols/df1/pom.xml                              |    6 +
 protocols/eip/pom.xml                              |    6 +
 .../eip/src/main/resources/protocols/eip/eip.mspec |  529 ++++-
 .../resources/protocols/eip/DriverTestsuite.xml    |   21 +-
 protocols/firmata/pom.xml                          |    6 +
 protocols/genericcan/pom.xml                       |    6 +
 protocols/knxnetip/pom.xml                         |    6 +
 protocols/modbus/pom.xml                           |    6 +
 protocols/mqtt/pom.xml                             |    6 +
 protocols/opcua/pom.xml                            |    6 +
 protocols/open-protocol/pom.xml                    |    5 +
 protocols/plc4x-api/pom.xml                        |    6 +
 protocols/plc4x/pom.xml                            |    6 +
 protocols/profinet/pom.xml                         |    6 +
 protocols/s7/pom.xml                               |    6 +
 protocols/simulated/pom.xml                        |    6 +
 protocols/socketcan/pom.xml                        |    6 +
 125 files changed, 4622 insertions(+), 1538 deletions(-)

diff --git a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
index d8db4792fe..b6b4cc84f0 100644
--- a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
+++ b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh
@@ -151,13 +151,13 @@ type _${type.name} struct {
 }
 
 <#if type.isDiscriminatedParentTypeDefinition()>
-<#assign discriminatedParentType = type.asComplexTypeDefinition().orElseThrow()>
+<#assign complexTypeDefinition = type.asComplexTypeDefinition().orElseThrow()>
 type _${type.name}ChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
-    <#list discriminatedParentType.getDiscriminatorNames() as discriminatorName>
+    <#list complexTypeDefinition.getDiscriminatorNames() as discriminatorName>
     <#-- If the discriminator name matches that of another field, suppress the methods generation -->
-        <#if !type.isNonDiscriminatorField(discriminatorName)>
+        <#if type.isDiscriminatorField(discriminatorName)>
             <#assign typeRef=helper.getDiscriminatorTypes()[discriminatorName]>
 	Get${discriminatorName?cap_first}() <#if typeRef.isNonSimpleTypeReference() && !typeRef.isEnumTypeReference()>I</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
         </#if>
diff --git a/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml b/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml
index 66d1049691..38ee061974 100644
--- a/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml
+++ b/plc4go/assets/testing/protocols/eip/DriverTestsuite.xml
@@ -345,10 +345,10 @@
         </parser-arguments>
         <EipPacket>
           <command dataType="uint" bitLength="16">111</command>
-          <packetLength dataType="uint" bitLength="16">112</packetLength>
-          <sessionHandle dataType="uint" bitLength="32">1073742122</sessionHandle>
+          <packetLength dataType="uint" bitLength="16">36</packetLength>
+          <sessionHandle dataType="uint" bitLength="32">1074224669</sessionHandle>
           <status dataType="uint" bitLength="32">0</status>
-          <senderContext dataType="byte" bitLength="64">0x0000000000000000</senderContext>
+          <senderContext dataType="byte" bitLength="64">0x504c433458202020</senderContext>
           <options dataType="uint" bitLength="32">0</options>
           <CipRRData>
             <interfaceHandle dataType="uint" bitLength="32">0</interfaceHandle>
@@ -364,7 +364,7 @@
               <TypeId>
                 <id dataType="uint" bitLength="16">178</id>
                 <UnConnectedDataItem>
-                  <packetSize dataType="uint" bitLength="16">96</packetSize>
+                  <packetSize dataType="uint" bitLength="16">10</packetSize>
                   <service>
                     <CipService>
                       <response dataType="bit" bitLength="1">true</response>
@@ -376,9 +376,9 @@
                         <data>
                           <CIPData>
                             <dataType>
-                              <CIPDataTypeCode dataType="uint" bitLength="16" stringRepresentation="STRUCTURED">672</CIPDataTypeCode>
+                              <CIPDataTypeCode dataType="uint" bitLength="16" stringRepresentation="DINT">196</CIPDataTypeCode>
                             </dataType>
-                            <data dataType="byte" bitLength="720">0xce0f2b000000556d6d2c2049206e6f772073656520796f7520696e207468652077697265736861726b20636170747572650000000000000000000000000000000000000000000000000000000000000000000000000000000000</data>
+                            <data dataType="byte" bitLength="32">0x00000216</data>
                           </CIPData>
                         </data>
                       </CipReadResponse>
@@ -397,13 +397,18 @@
               <hurz>
                 <EipTag>
                   <node dataType="string" bitLength="40" encoding="UTF-8">%rate</node>
-                  <elementNb dataType="uint" bitLength="16">0</elementNb>
-                  <defaultJavaType dataType="string" bitLength="128" encoding="UTF-8">java.lang.Object</defaultJavaType>
+                  <elementNb dataType="uint" bitLength="16">1</elementNb>
                 </EipTag>
               </hurz>
             </tags>
           </PlcReadRequest>
           <values>
+            <hurz>
+              <ResponseItem>
+                <result dataType="string" bitLength="16" encoding="UTF-8">OK</result>
+                <PlcDINT dataType="int" bitLength="32">369229824</PlcDINT>
+              </ResponseItem>
+            </hurz>
           </values>
         </PlcReadResponse>
       </api-response>
diff --git a/plc4go/internal/eip/Configuration.go b/plc4go/internal/eip/Configuration.go
index d7c0e73c82..9a3f903c32 100644
--- a/plc4go/internal/eip/Configuration.go
+++ b/plc4go/internal/eip/Configuration.go
@@ -20,9 +20,10 @@
 package eip
 
 import (
+	"strconv"
+
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog/log"
-	"strconv"
 )
 
 type Configuration struct {
@@ -32,7 +33,7 @@ type Configuration struct {
 
 func ParseFromOptions(options map[string][]string) (Configuration, error) {
 	configuration := Configuration{
-		backplane: 0,
+		backplane: 1,
 		slot:      0,
 	}
 	if localRackString := getFromOptions(options, "backplane"); localRackString != "" {
diff --git a/plc4go/internal/eip/Connection.go b/plc4go/internal/eip/Connection.go
index 82aa6f9915..4ef90872eb 100644
--- a/plc4go/internal/eip/Connection.go
+++ b/plc4go/internal/eip/Connection.go
@@ -52,6 +52,8 @@ type Connection struct {
 	cipEncapsulationAvailable bool
 	connectionSerialNumber    uint16
 	connectionPathSize        uint8
+	useMessageRouter          bool
+	useConnectionManager      bool
 	routingAddress            []readWriteModel.PathSegment
 	tracer                    *spi.Tracer
 }
@@ -271,8 +273,70 @@ func (m *Connection) setupConnection(ctx context.Context, ch chan plc4go.PlcConn
 		case err := <-connectionResponseErrorChan:
 			m.fireConnectionError(errors.Wrap(err, "Error receiving of ListServices response"), ch)
 		case _ = <-connectionResponseChan:
-			// Send an event that connection setup is complete.
-			m.fireConnected(ch)
+
+			////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			// List All Attributes
+
+			log.Debug().Msg("Sending ListAllAttributes Request")
+			listAllAttributesResponseChan := make(chan readWriteModel.GetAttributeAllResponse)
+			listAllAttributesErrorChan := make(chan error)
+			classSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewClassID(uint8(0), uint8(2)))
+			instanceSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewInstanceID(uint8(0), uint8(1)))
+			if err := m.messageCodec.SendRequest(ctx, readWriteModel.NewCipRRData(EmptyInterfaceHandle, 0,
+				[]readWriteModel.TypeId{
+					readWriteModel.NewNullAddressItem(),
+					readWriteModel.NewUnConnectedDataItem(
+						readWriteModel.NewGetAttributeAllRequest(
+							classSegment, instanceSegment, uint16(0))),
+				}, m.sessionHandle, uint32(readWriteModel.CIPStatus_Success), m.senderContext, 0), func(message spi.Message) bool {
+				eipPacket := message.(readWriteModel.CipRRData)
+				return eipPacket != nil
+			}, func(message spi.Message) error {
+				cipRrData := message.(readWriteModel.CipRRData)
+				if cipRrData.GetStatus() == uint32(readWriteModel.CIPStatus_Success) {
+					dataItem := cipRrData.GetTypeIds()[1].(readWriteModel.UnConnectedDataItem)
+					response := dataItem.GetService().(readWriteModel.GetAttributeAllResponse)
+					if response.GetStatus() != uint8(readWriteModel.CIPStatus_Success) {
+						// TODO: Return an error ...
+					} else if response.GetAttributes() != nil {
+						for _, classId := range response.GetAttributes().GetClassId() {
+							if curCipClassId, ok := readWriteModel.CIPClassIDByValue(classId); ok {
+								switch curCipClassId {
+								case readWriteModel.CIPClassID_MessageRouter:
+									m.useMessageRouter = true
+								case readWriteModel.CIPClassID_ConnectionManager:
+									m.useConnectionManager = true
+								}
+							}
+						}
+					}
+					log.Debug().Msgf("Connection using message router %t, using connection manager %t", m.useMessageRouter, m.useConnectionManager)
+					listAllAttributesResponseChan <- response
+				}
+				return nil
+			}, func(err error) error {
+				// If this is a timeout, do a check if the connection requires a reconnection
+				if _, isTimeout := err.(plcerrors.TimeoutError); isTimeout {
+					log.Warn().Msg("Timeout during Connection establishing, closing channel...")
+					m.Close()
+				}
+				connectionResponseErrorChan <- errors.Wrap(err, "got error processing request")
+				return nil
+			}, m.GetTtl()); err != nil {
+				m.fireConnectionError(errors.Wrap(err, "Error during sending of EIP ListServices Request"), ch)
+			}
+
+			select {
+			case err := <-listAllAttributesErrorChan:
+				m.fireConnectionError(errors.Wrap(err, "Error receiving of ListServices response"), ch)
+			case _ = <-listAllAttributesResponseChan:
+				if m.useConnectionManager {
+					// TODO: Continue here ....
+				} else {
+					// Send an event that connection setup is complete.
+					m.fireConnected(ch)
+				}
+			}
 		}
 	}
 }
diff --git a/plc4go/internal/eip/Reader.go b/plc4go/internal/eip/Reader.go
index b369fe640c..2cf06398c8 100644
--- a/plc4go/internal/eip/Reader.go
+++ b/plc4go/internal/eip/Reader.go
@@ -22,8 +22,9 @@ package eip
 import (
 	"context"
 	"encoding/binary"
+	"fmt"
+	"regexp"
 	"strconv"
-	"strings"
 	"time"
 
 	"github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -59,7 +60,7 @@ func (m *Reader) Read(ctx context.Context, readRequest model.PlcReadRequest) <-c
 	result := make(chan model.PlcReadRequestResult)
 	go func() {
 		classSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewClassID(0, 6))
-		instanceSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewClassID(0, 1))
+		instanceSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewInstanceID(0, 1))
 		for _, tagName := range readRequest.GetTagNames() {
 			plcTag := readRequest.GetTag(tagName).(EIPPlcTag)
 			tag := plcTag.GetTag()
@@ -76,19 +77,17 @@ func (m *Reader) Read(ctx context.Context, readRequest model.PlcReadRequest) <-c
 				}
 				return
 			}
-			request := readWriteModel.NewCipReadRequest(ansi, elementsNb, uint16(0))
-			requestItem := readWriteModel.NewCipUnconnectedRequest(classSegment, instanceSegment, request,
+			requestItem := readWriteModel.NewCipUnconnectedRequest(classSegment, instanceSegment,
+				readWriteModel.NewCipReadRequest(ansi, elementsNb, 0),
 				m.configuration.backplane, m.configuration.slot, uint16(0))
 			typeIds := []readWriteModel.TypeId{
 				readWriteModel.NewNullAddressItem(),
 				readWriteModel.NewUnConnectedDataItem(requestItem),
 			}
-			pkt := readWriteModel.NewCipRRData(0, 0, typeIds, *m.sessionHandle,
-				uint32(readWriteModel.CIPStatus_Success), []byte(DefaultSenderContext), 0)
-
+			request := readWriteModel.NewCipRRData(0, 0, typeIds, *m.sessionHandle, uint32(readWriteModel.CIPStatus_Success), []byte(DefaultSenderContext), 0)
 			transaction := m.tm.StartTransaction()
 			transaction.Submit(func() {
-				if err := m.messageCodec.SendRequest(ctx, pkt,
+				if err := m.messageCodec.SendRequest(ctx, request,
 					func(message spi.Message) bool {
 						eipPacket := message.(readWriteModel.EipPacket)
 						if eipPacket == nil {
@@ -140,81 +139,43 @@ func (m *Reader) Read(ctx context.Context, readRequest model.PlcReadRequest) <-c
 }
 
 func toAnsi(tag string) ([]byte, error) {
-	arrayIndex := byte(0)
-	isArray := false
-	isStruct := false
-	tagFinal := tag
-	if strings.Contains(tag, "[") {
-		isArray = true
-		index := tag[strings.Index(tag, "[")+1 : strings.Index(tag, "]")]
-		parsedArrayIndex, err := strconv.ParseUint(index, 10, 8)
-		if err != nil {
-			return nil, err
-		}
-		arrayIndex = byte(parsedArrayIndex)
-		tagFinal = tag[0:strings.Index(tag, "[")]
-	}
-	if strings.Contains(tag, ".") {
-		tagFinal = tag[0:strings.Index(tag, ".")]
-		isStruct = true
-	}
-	isPadded := len(tagFinal)%2 != 0
-	dataSegLength := 2 + len(tagFinal)
-	if isPadded {
-		dataSegLength += 1
-	}
-	if isArray {
-		dataSegLength += 2
-	}
-
-	if isStruct {
-		for _, subStr := range strings.Split(tag[strings.Index(tag, ".")+1:], ".") {
-			dataSegLength += 2 + len(subStr) + len(subStr)%2
-		}
-	}
-
-	buffer := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-
-	err := buffer.WriteByte("", 0x91)
-	if err != nil {
-		return nil, err
-	}
-	err = buffer.WriteByte("", byte(len(tagFinal)))
-	if err != nil {
-		return nil, err
-	}
-
-	quoteToASCII := strconv.QuoteToASCII(tagFinal)
-	err = buffer.WriteByteArray("", []byte(quoteToASCII)[1:len(quoteToASCII)-1])
-	if err != nil {
-		return nil, err
-	}
+	resourceAddressPattern := regexp.MustCompile("([.\\[\\]])*([A-Za-z_0-9]+){1}")
 
-	if isPadded {
-		err = buffer.WriteByte("", 0x00)
-		if err != nil {
-			return nil, err
-		}
-	}
+	segments := make([]readWriteModel.PathSegment, 0)
+	lengthInBytes := uint16(0)
+	submatch := resourceAddressPattern.FindAllStringSubmatch(tag, -1)
+	for _, match := range submatch {
+		identifier := match[2]
+		qualifier := match[1]
 
-	if isArray {
-		err = buffer.WriteByte("", 0x28)
-		if err != nil {
-			return nil, err
-		}
-		err = buffer.WriteByte("", arrayIndex)
-		if err != nil {
-			return nil, err
+		var newSegment readWriteModel.PathSegment
+		if len(qualifier) > 0 {
+			if qualifier == "[" {
+				numericIdentifier, err := strconv.Atoi(identifier)
+				if err != nil {
+					return nil, fmt.Errorf("error parsing address %s, identifier %s couldn't be parsed to an integer", tag, identifier)
+				}
+				newSegment = readWriteModel.NewLogicalSegment(readWriteModel.NewMemberID(0, uint8(numericIdentifier)))
+			} else {
+				newSegment = readWriteModel.NewDataSegment(readWriteModel.NewAnsiExtendedSymbolSegment(identifier, nil))
+			}
+		} else {
+			var pad *uint8
+			if len(identifier)%2 != 0 {
+				paddingValue := uint8(0)
+				pad = &paddingValue
+			}
+			newSegment = readWriteModel.NewDataSegment(readWriteModel.NewAnsiExtendedSymbolSegment(identifier, pad))
 		}
+		lengthInBytes += newSegment.GetLengthInBytes(context.Background())
+		segments = append(segments, newSegment)
 	}
-	if isStruct {
-		ansi, err := toAnsi(tag[strings.Index(tag, ".")+1:])
-		if err != nil {
-			return nil, err
-		}
-		err = buffer.WriteByteArray("", ansi)
-		if err != nil {
-			return nil, err
+	buffer := utils.NewWriteBufferByteBased(
+		utils.WithInitialSizeForByteBasedBuffer(int(lengthInBytes)),
+		utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
+	for _, segment := range segments {
+		if err := segment.SerializeWithWriteBuffer(context.Background(), buffer); err != nil {
+			return nil, errors.Wrap(err, "error converting tag to ansi")
 		}
 	}
 	return buffer.GetBytes(), nil
diff --git a/plc4go/internal/eip/Tag.go b/plc4go/internal/eip/Tag.go
index 6cb16fe76e..6b689e07ce 100644
--- a/plc4go/internal/eip/Tag.go
+++ b/plc4go/internal/eip/Tag.go
@@ -20,6 +20,7 @@
 package eip
 
 import (
+	"context"
 	"encoding/binary"
 
 	"github.com/apache/plc4x/plc4go/pkg/api/model"
@@ -30,6 +31,7 @@ import (
 
 type EIPPlcTag interface {
 	model.PlcTag
+	utils.Serializable
 
 	GetTag() string
 	GetType() readWrite.CIPDataTypeCode
@@ -42,6 +44,14 @@ type plcTag struct {
 	ElementNb uint16
 }
 
+func NewTag(tag string, _type readWrite.CIPDataTypeCode, elementNb uint16) plcTag {
+	return plcTag{
+		Tag:       tag,
+		Type:      _type,
+		ElementNb: elementNb,
+	}
+}
+
 func (m plcTag) GetAddressString() string {
 	return m.GetTag()
 }
@@ -58,14 +68,6 @@ func (m plcTag) GetArrayInfo() []model.ArrayInfo {
 	return []model.ArrayInfo{}
 }
 
-func NewTag(tag string, _type readWrite.CIPDataTypeCode, elementNb uint16) plcTag {
-	return plcTag{
-		Tag:       tag,
-		Type:      _type,
-		ElementNb: elementNb,
-	}
-}
-
 func (m plcTag) GetTag() string {
 	return m.Tag
 }
@@ -80,13 +82,13 @@ func (m plcTag) GetElementNb() uint16 {
 
 func (m plcTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.LittleEndian))
-	if err := m.SerializeWithWriteBuffer(wb); err != nil {
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func (m plcTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
+func (m plcTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
 	if err := writeBuffer.PushContext("EipTag"); err != nil {
 		return err
 	}
@@ -105,11 +107,6 @@ func (m plcTag) SerializeWithWriteBuffer(writeBuffer utils.WriteBuffer) error {
 		return err
 	}
 
-	// TODO: remove this from the spec
-	if err := writeBuffer.WriteString("defaultJavaType", uint32(len([]rune("java.lang.Object"))*8), "UTF-8", "java.lang.Object"); err != nil {
-		return err
-	}
-
 	if err := writeBuffer.PopContext("EipTag"); err != nil {
 		return err
 	}
diff --git a/plc4go/internal/eip/TagHandler.go b/plc4go/internal/eip/TagHandler.go
index fdb3fa134e..2ba47d6aa3 100644
--- a/plc4go/internal/eip/TagHandler.go
+++ b/plc4go/internal/eip/TagHandler.go
@@ -22,12 +22,8 @@ package eip
 import (
 	"fmt"
 	"regexp"
-	"strconv"
 
 	"github.com/apache/plc4x/plc4go/pkg/api/model"
-	readWriteModel "github.com/apache/plc4x/plc4go/protocols/eip/readwrite/model"
-	"github.com/apache/plc4x/plc4go/spi/utils"
-	"github.com/pkg/errors"
 )
 
 type TagHandler struct {
@@ -36,7 +32,7 @@ type TagHandler struct {
 
 func NewTagHandler() TagHandler {
 	return TagHandler{
-		addressPattern: regexp.MustCompile(`^%(?P<tag>[a-zA-Z_.0-9]+\[?[0-9]*]?):?(?P<dataType>[A-Z]*):?(?P<elementNb>[0-9]*)`),
+		addressPattern: regexp.MustCompile(`^%(?P<tag>[%a-zA-Z_.0-9]+\[?[0-9]*]?):?(?P<dataType>[A-Z]*):?(?P<elementNb>[0-9]*)`),
 	}
 }
 
@@ -46,18 +42,9 @@ const (
 	ELEMENT_NB = "elementNb"
 )
 
-func (m TagHandler) ParseTag(query string) (model.PlcTag, error) {
-	if match := utils.GetSubgroupMatches(m.addressPattern, query); match != nil {
-		tag := match[TAG]
-		_type, ok := readWriteModel.CIPDataTypeCodeByName(match[DATA_TYPE])
-		if !ok {
-			return nil, errors.Errorf("Unknown type %s", match[DATA_TYPE])
-		}
-		parsedUint, _ := strconv.ParseUint(match[ELEMENT_NB], 10, 16)
-		elementNb := uint16(parsedUint)
-		return NewTag(tag, _type, elementNb), nil
-	}
-	return nil, errors.Errorf("Unable to parse %s", query)
+func (m TagHandler) ParseTag(tagAddress string) (model.PlcTag, error) {
+	// TODO: This isn't pretty ...
+	return NewTag(tagAddress, 0, uint16(1)), nil
 }
 
 func (m TagHandler) ParseQuery(query string) (model.PlcQuery, error) {
diff --git a/plc4go/internal/s7/Tag.go b/plc4go/internal/s7/Tag.go
index bcc7c923bc..664d011de1 100644
--- a/plc4go/internal/s7/Tag.go
+++ b/plc4go/internal/s7/Tag.go
@@ -136,6 +136,7 @@ func (m plcTag) GetBitOffset() uint8 {
 func (m plcTag) GetQuantity() uint16 {
 	return m.NumElements
 }
+
 func (m plcTag) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
 	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
diff --git a/plc4go/protocols/ads/readwrite/model/AmsPacket.go b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
index d237c1bc2b..34e596fdbc 100644
--- a/plc4go/protocols/ads/readwrite/model/AmsPacket.go
+++ b/plc4go/protocols/ads/readwrite/model/AmsPacket.go
@@ -83,6 +83,7 @@ type _AmsPacket struct {
 type _AmsPacketChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetErrorCode() uint32
 	GetCommandId() CommandId
 	GetResponse() bool
 }
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
index 5e103b492c..446093af0f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetApplicationTag.go
@@ -55,6 +55,7 @@ type _BACnetApplicationTag struct {
 type _BACnetApplicationTagChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetActualTagNumber() uint8
 }
 
 type BACnetApplicationTagParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
index cea64a454e..0f003c6345 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetCalendarEntry.go
@@ -53,6 +53,7 @@ type _BACnetCalendarEntry struct {
 type _BACnetCalendarEntryChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetCalendarEntryParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
index e100ff3b86..9825da6977 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetChannelValue.go
@@ -55,6 +55,8 @@ type _BACnetChannelValue struct {
 type _BACnetChannelValueChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
+	GetPeekedIsContextTag() bool
 }
 
 type BACnetChannelValueParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
index 2cf6f454f0..ef1a56b345 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetClientCOV.go
@@ -53,6 +53,7 @@ type _BACnetClientCOV struct {
 type _BACnetClientCOVChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetClientCOVParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
index b163098e90..79bb14e028 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord.go
@@ -59,6 +59,7 @@ type _BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecord struct {
 type _BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetConfirmedServiceRequestAtomicReadFileStreamOrRecordParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
index e37d303641..32698e7423 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass.go
@@ -62,6 +62,7 @@ type _BACnetConfirmedServiceRequestConfirmedTextMessageMessageClass struct {
 type _BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetConfirmedServiceRequestConfirmedTextMessageMessageClassParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
index 49a6430932..258c0e0bc7 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRangeRange.go
@@ -59,6 +59,7 @@ type _BACnetConfirmedServiceRequestReadRangeRange struct {
 type _BACnetConfirmedServiceRequestReadRangeRangeChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetConfirmedServiceRequestReadRangeRangeParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
index b08c5897ca..de08aa16aa 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetConstructedData.go
@@ -69,6 +69,7 @@ type _BACnetConstructedDataChildRequirements interface {
 	GetLengthInBits(ctx context.Context) uint16
 	GetObjectTypeArgument() BACnetObjectType
 	GetPropertyIdentifierArgument() BACnetPropertyIdentifier
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetConstructedDataParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
index 6372e38528..685aa0df26 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventLogRecordLogDatum.go
@@ -62,6 +62,7 @@ type _BACnetEventLogRecordLogDatum struct {
 type _BACnetEventLogRecordLogDatumChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetEventLogRecordLogDatumParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
index de33004ae0..b32064cf54 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameter.go
@@ -53,6 +53,7 @@ type _BACnetEventParameter struct {
 type _BACnetEventParameterChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetEventParameterParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
index 284278a33d..3ac4af8efb 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetEventParameterChangeOfValueCivCriteria.go
@@ -62,6 +62,7 @@ type _BACnetEventParameterChangeOfValueCivCriteria struct {
 type _BACnetEventParameterChangeOfValueCivCriteriaChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetEventParameterChangeOfValueCivCriteriaParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
index 2176885462..6d4d8419b5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameter.go
@@ -53,6 +53,7 @@ type _BACnetFaultParameter struct {
 type _BACnetFaultParameterChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetFaultParameterParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
index 5e261b8204..5544ef81c9 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultExtendedParametersEntry.go
@@ -55,6 +55,8 @@ type _BACnetFaultParameterFaultExtendedParametersEntry struct {
 type _BACnetFaultParameterFaultExtendedParametersEntryChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
+	GetPeekedIsContextTag() bool
 }
 
 type BACnetFaultParameterFaultExtendedParametersEntryParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
index 399c9b0fdd..bbf6c14742 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMaxNormalValue.go
@@ -62,6 +62,7 @@ type _BACnetFaultParameterFaultOutOfRangeMaxNormalValue struct {
 type _BACnetFaultParameterFaultOutOfRangeMaxNormalValueChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetFaultParameterFaultOutOfRangeMaxNormalValueParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
index d50cdc8979..f5b35640e5 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetFaultParameterFaultOutOfRangeMinNormalValue.go
@@ -62,6 +62,7 @@ type _BACnetFaultParameterFaultOutOfRangeMinNormalValue struct {
 type _BACnetFaultParameterFaultOutOfRangeMinNormalValueChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetFaultParameterFaultOutOfRangeMinNormalValueParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
index a062a15975..8c60a55687 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetHostAddress.go
@@ -53,6 +53,7 @@ type _BACnetHostAddress struct {
 type _BACnetHostAddressChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetHostAddressParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
index 7ef3f5db3d..cbccfc4acf 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLandingCallStatusCommand.go
@@ -53,6 +53,7 @@ type _BACnetLandingCallStatusCommand struct {
 type _BACnetLandingCallStatusCommandChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetLandingCallStatusCommandParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
index b1053625eb..95f3748a19 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogData.go
@@ -62,6 +62,7 @@ type _BACnetLogData struct {
 type _BACnetLogDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetLogDataParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
index 047932e47b..b6140584c0 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogDataLogDataEntry.go
@@ -53,6 +53,7 @@ type _BACnetLogDataLogDataEntry struct {
 type _BACnetLogDataLogDataEntryChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetLogDataLogDataEntryParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
index 5be81f9698..1b46c8f6b1 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetLogRecordLogDatum.go
@@ -62,6 +62,7 @@ type _BACnetLogRecordLogDatum struct {
 type _BACnetLogRecordLogDatumChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetLogRecordLogDatumParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
index 27fbb6733c..af45fccacf 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParameters.go
@@ -63,6 +63,7 @@ type _BACnetNotificationParameters struct {
 type _BACnetNotificationParametersChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetNotificationParametersParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
index 792dc7e65b..2dc7669115 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfDiscreteValueNewValue.go
@@ -64,6 +64,8 @@ type _BACnetNotificationParametersChangeOfDiscreteValueNewValue struct {
 type _BACnetNotificationParametersChangeOfDiscreteValueNewValueChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
+	GetPeekedIsContextTag() bool
 }
 
 type BACnetNotificationParametersChangeOfDiscreteValueNewValueParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
index 31925df960..aa3a124c4b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetNotificationParametersChangeOfValueNewValue.go
@@ -62,6 +62,7 @@ type _BACnetNotificationParametersChangeOfValueNewValue struct {
 type _BACnetNotificationParametersChangeOfValueNewValueChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetNotificationParametersChangeOfValueNewValueParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
index 5f5aeb88d4..8c8b55fca3 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalBinaryPV.go
@@ -53,6 +53,7 @@ type _BACnetOptionalBinaryPV struct {
 type _BACnetOptionalBinaryPVChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetOptionalBinaryPVParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
index d39cfe8558..8272a08750 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalCharacterString.go
@@ -53,6 +53,7 @@ type _BACnetOptionalCharacterString struct {
 type _BACnetOptionalCharacterStringChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetOptionalCharacterStringParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
index 50d59fb110..8f83487e0d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalREAL.go
@@ -53,6 +53,7 @@ type _BACnetOptionalREAL struct {
 type _BACnetOptionalREALChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetOptionalREALParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
index a76794f873..3da144d52e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetOptionalUnsigned.go
@@ -53,6 +53,7 @@ type _BACnetOptionalUnsigned struct {
 type _BACnetOptionalUnsignedChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetOptionalUnsignedParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
index 887c5e859a..41495ce498 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go
@@ -58,6 +58,8 @@ type _BACnetPriorityValue struct {
 type _BACnetPriorityValueChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
+	GetPeekedIsContextTag() bool
 }
 
 type BACnetPriorityValueParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
index dc979bb84f..be0a49d86e 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetProcessIdSelection.go
@@ -53,6 +53,7 @@ type _BACnetProcessIdSelection struct {
 type _BACnetProcessIdSelectionChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetProcessIdSelectionParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
index bb9793307d..351c245ec2 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyAccessResultAccessResult.go
@@ -58,6 +58,7 @@ type _BACnetPropertyAccessResultAccessResult struct {
 type _BACnetPropertyAccessResultAccessResultChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetPropertyAccessResultAccessResultParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
index b53a7eaf62..16e670912f 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetPropertyStates.go
@@ -53,6 +53,7 @@ type _BACnetPropertyStates struct {
 type _BACnetPropertyStatesChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetPropertyStatesParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
index 1fe0d1b831..49d40f7160 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetRecipient.go
@@ -53,6 +53,7 @@ type _BACnetRecipient struct {
 type _BACnetRecipientChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetRecipientParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
index ecaecaac79..7b02f774df 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetScale.go
@@ -53,6 +53,7 @@ type _BACnetScale struct {
 type _BACnetScaleChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetScaleParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
index ad5bc6e4a0..e4393b9cfd 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFileStreamOrRecord.go
@@ -59,6 +59,7 @@ type _BACnetServiceAckAtomicReadFileStreamOrRecord struct {
 type _BACnetServiceAckAtomicReadFileStreamOrRecordChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetServiceAckAtomicReadFileStreamOrRecordParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
index 11a26fb4c7..6d5ae4f149 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetShedLevel.go
@@ -53,6 +53,7 @@ type _BACnetShedLevel struct {
 type _BACnetShedLevelChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetShedLevelParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
index 03dfcb9dec..924bc9e4e6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetSpecialEventPeriod.go
@@ -53,6 +53,7 @@ type _BACnetSpecialEventPeriod struct {
 type _BACnetSpecialEventPeriodChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetSpecialEventPeriodParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
index 0341899397..ab722fef20 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimeStamp.go
@@ -53,6 +53,7 @@ type _BACnetTimeStamp struct {
 type _BACnetTimeStampChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetTimeStampParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
index c969cabdca..05b64b5a69 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetTimerStateChangeValue.go
@@ -58,6 +58,8 @@ type _BACnetTimerStateChangeValue struct {
 type _BACnetTimerStateChangeValueChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
+	GetPeekedIsContextTag() bool
 }
 
 type BACnetTimerStateChangeValueParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
index 0c02ae9bfe..1028ff9a3d 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHasObject.go
@@ -53,6 +53,7 @@ type _BACnetUnconfirmedServiceRequestWhoHasObject struct {
 type _BACnetUnconfirmedServiceRequestWhoHasObjectChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetUnconfirmedServiceRequestWhoHasObjectParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
index 9dd53e6687..b4e55c64e6 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetValueSource.go
@@ -53,6 +53,7 @@ type _BACnetValueSource struct {
 type _BACnetValueSourceChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedTagNumber() uint8
 }
 
 type BACnetValueSourceParent interface {
diff --git a/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go b/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
index ee884e7dbe..4f9ec3caff 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/BACnetVendorId.go
@@ -1437,6 +1437,7 @@ const (
 	BACnetVendorId_METRONICAKP_SPJ                                                              BACnetVendorId = 1406
 	BACnetVendorId_TECHKNAVE                                                                    BACnetVendorId = 1407
 	BACnetVendorId_ELSNER_ELEKTRONIK                                                            BACnetVendorId = 1408
+	BACnetVendorId_LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD                                             BACnetVendorId = 1409
 	BACnetVendorId_UNKNOWN_VENDOR                                                               BACnetVendorId = 0xFFFF
 )
 
@@ -2845,6 +2846,7 @@ func init() {
 		BACnetVendorId_METRONICAKP_SPJ,
 		BACnetVendorId_TECHKNAVE,
 		BACnetVendorId_ELSNER_ELEKTRONIK,
+		BACnetVendorId_LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD,
 		BACnetVendorId_UNKNOWN_VENDOR,
 	}
 }
@@ -4671,6 +4673,10 @@ func (e BACnetVendorId) VendorId() uint16 {
 		{ /* '1408' */
 			return 1408
 		}
+	case 1409:
+		{ /* '1409' */
+			return 1409
+		}
 	case 141:
 		{ /* '141' */
 			return 141
@@ -10293,6 +10299,10 @@ func (e BACnetVendorId) VendorName() string {
 		{ /* '1408' */
 			return "Elsner Elektronik"
 		}
+	case 1409:
+		{ /* '1409' */
+			return "LEFOO Industrial (Hangzhou) Co., Ltd."
+		}
 	case 141:
 		{ /* '141' */
 			return "Yaskawa America, Inc."
@@ -15004,6 +15014,8 @@ func BACnetVendorIdByValue(value uint16) (enum BACnetVendorId, ok bool) {
 		return BACnetVendorId_TECHKNAVE, true
 	case 1408:
 		return BACnetVendorId_ELSNER_ELEKTRONIK, true
+	case 1409:
+		return BACnetVendorId_LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD, true
 	case 141:
 		return BACnetVendorId_YASKAWA_AMERICA_INC, true
 	case 142:
@@ -17812,6 +17824,8 @@ func BACnetVendorIdByName(value string) (enum BACnetVendorId, ok bool) {
 		return BACnetVendorId_TECHKNAVE, true
 	case "ELSNER_ELEKTRONIK":
 		return BACnetVendorId_ELSNER_ELEKTRONIK, true
+	case "LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD":
+		return BACnetVendorId_LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD, true
 	case "YASKAWA_AMERICA_INC":
 		return BACnetVendorId_YASKAWA_AMERICA_INC, true
 	case "DEO_SCONTROLSYSTEMS_GMBH":
@@ -20677,6 +20691,8 @@ func (e BACnetVendorId) PLC4XEnumName() string {
 		return "TECHKNAVE"
 	case BACnetVendorId_ELSNER_ELEKTRONIK:
 		return "ELSNER_ELEKTRONIK"
+	case BACnetVendorId_LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD:
+		return "LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD"
 	case BACnetVendorId_YASKAWA_AMERICA_INC:
 		return "YASKAWA_AMERICA_INC"
 	case BACnetVendorId_DEO_SCONTROLSYSTEMS_GMBH:
diff --git a/plc4go/protocols/bacnetip/readwrite/model/NLM.go b/plc4go/protocols/bacnetip/readwrite/model/NLM.go
index c1da93ea9b..a15b53986b 100644
--- a/plc4go/protocols/bacnetip/readwrite/model/NLM.go
+++ b/plc4go/protocols/bacnetip/readwrite/model/NLM.go
@@ -56,6 +56,7 @@ type _NLMChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
 	GetMessageType() uint8
+	GetIsVendorProprietaryMessage() bool
 }
 
 type NLMParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/AccessControlData.go b/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
index a22ee13553..8e02347b59 100644
--- a/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/AccessControlData.go
@@ -59,6 +59,7 @@ type _AccessControlData struct {
 type _AccessControlDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() AccessControlCommandType
 }
 
 type AccessControlDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go b/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
index cc223cb5ba..316788b5da 100644
--- a/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
+++ b/plc4go/protocols/cbus/readwrite/model/AirConditioningData.go
@@ -53,6 +53,7 @@ type _AirConditioningData struct {
 type _AirConditioningDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() AirConditioningCommandType
 }
 
 type AirConditioningDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/CALData.go b/plc4go/protocols/cbus/readwrite/model/CALData.go
index 85d0c92781..be56be96a7 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALData.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALData.go
@@ -62,6 +62,8 @@ type _CALData struct {
 type _CALDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() CALCommandType
+	GetSendIdentifyRequestBefore() bool
 }
 
 type CALDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/CALReply.go b/plc4go/protocols/cbus/readwrite/model/CALReply.go
index 6d4ff04d71..19b03caf8f 100644
--- a/plc4go/protocols/cbus/readwrite/model/CALReply.go
+++ b/plc4go/protocols/cbus/readwrite/model/CALReply.go
@@ -58,6 +58,7 @@ type _CALReply struct {
 type _CALReplyChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCalType() byte
 }
 
 type CALReplyParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
index 737f18eb63..d9c2f3aee3 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusCommand.go
@@ -58,6 +58,8 @@ type _CBusCommand struct {
 type _CBusCommandChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetDestinationAddressType() DestinationAddressType
+	GetIsDeviceManagement() bool
 }
 
 type CBusCommandParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
index 3a4b4db332..f72c4107fb 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToMultiPointCommand.go
@@ -54,6 +54,7 @@ type _CBusPointToMultiPointCommand struct {
 type _CBusPointToMultiPointCommandChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedApplication() byte
 }
 
 type CBusPointToMultiPointCommandParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
index f8f807b6df..0a40d852be 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointCommand.go
@@ -59,6 +59,7 @@ type _CBusPointToPointCommand struct {
 type _CBusPointToPointCommandChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetIsDirect() bool
 }
 
 type CBusPointToPointCommandParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
index bbaa6bca15..695ce77e99 100644
--- a/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
+++ b/plc4go/protocols/cbus/readwrite/model/CBusPointToPointToMultiPointCommand.go
@@ -60,6 +60,7 @@ type _CBusPointToPointToMultiPointCommand struct {
 type _CBusPointToPointToMultiPointCommandChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedApplication() byte
 }
 
 type CBusPointToPointToMultiPointCommandParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go b/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
index 4e88d57c9f..63260f2231 100644
--- a/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/ClockAndTimekeepingData.go
@@ -56,6 +56,8 @@ type _ClockAndTimekeepingData struct {
 type _ClockAndTimekeepingDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() ClockAndTimekeepingCommandType
+	GetArgument() byte
 }
 
 type ClockAndTimekeepingDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/EncodedReply.go b/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
index d9a7a42e3b..ffd7dea633 100644
--- a/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
+++ b/plc4go/protocols/cbus/readwrite/model/EncodedReply.go
@@ -57,6 +57,7 @@ type _EncodedReply struct {
 type _EncodedReplyChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetIsMonitoredSAL() bool
 }
 
 type EncodedReplyParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go b/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
index ed7c641e80..be1905bfca 100644
--- a/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/ErrorReportingData.go
@@ -53,6 +53,7 @@ type _ErrorReportingData struct {
 type _ErrorReportingDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() ErrorReportingCommandType
 }
 
 type ErrorReportingDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/LevelInformation.go b/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
index 03389d0b4b..efa5d81081 100644
--- a/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
+++ b/plc4go/protocols/cbus/readwrite/model/LevelInformation.go
@@ -67,6 +67,8 @@ type _LevelInformation struct {
 type _LevelInformationChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetIsAbsent() bool
+	GetIsCorrupted() bool
 }
 
 type LevelInformationParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/LightingData.go b/plc4go/protocols/cbus/readwrite/model/LightingData.go
index 5640893b45..b887c7d2f7 100644
--- a/plc4go/protocols/cbus/readwrite/model/LightingData.go
+++ b/plc4go/protocols/cbus/readwrite/model/LightingData.go
@@ -53,6 +53,7 @@ type _LightingData struct {
 type _LightingDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() LightingCommandType
 }
 
 type LightingDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/MeasurementData.go b/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
index 783032217e..c2419242c5 100644
--- a/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MeasurementData.go
@@ -53,6 +53,7 @@ type _MeasurementData struct {
 type _MeasurementDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() MeasurementCommandType
 }
 
 type MeasurementDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go b/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
index 8997d14a2a..00cb386f96 100644
--- a/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MediaTransportControlData.go
@@ -56,6 +56,7 @@ type _MediaTransportControlData struct {
 type _MediaTransportControlDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() MediaTransportControlCommandType
 }
 
 type MediaTransportControlDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/MeteringData.go b/plc4go/protocols/cbus/readwrite/model/MeteringData.go
index 2f43281113..160c9f5ea8 100644
--- a/plc4go/protocols/cbus/readwrite/model/MeteringData.go
+++ b/plc4go/protocols/cbus/readwrite/model/MeteringData.go
@@ -56,6 +56,8 @@ type _MeteringData struct {
 type _MeteringDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() MeteringCommandType
+	GetArgument() byte
 }
 
 type MeteringDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go b/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
index 283b331048..e4de2974a9 100644
--- a/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
+++ b/plc4go/protocols/cbus/readwrite/model/MonitoredSAL.go
@@ -54,6 +54,7 @@ type _MonitoredSAL struct {
 type _MonitoredSALChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetSalType() byte
 }
 
 type MonitoredSALParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/Reply.go b/plc4go/protocols/cbus/readwrite/model/Reply.go
index 63f2354ac1..9d8b9abb1b 100644
--- a/plc4go/protocols/cbus/readwrite/model/Reply.go
+++ b/plc4go/protocols/cbus/readwrite/model/Reply.go
@@ -55,6 +55,7 @@ type _Reply struct {
 type _ReplyChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetPeekedByte() byte
 }
 
 type ReplyParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go b/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
index 851ee52cd9..f46f357be3 100644
--- a/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
+++ b/plc4go/protocols/cbus/readwrite/model/ReplyOrConfirmation.go
@@ -57,6 +57,8 @@ type _ReplyOrConfirmation struct {
 type _ReplyOrConfirmationChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetIsAlpha() bool
+	GetPeekedByte() byte
 }
 
 type ReplyOrConfirmationParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/Request.go b/plc4go/protocols/cbus/readwrite/model/Request.go
index 0195b19f29..9c4b5b7c1d 100644
--- a/plc4go/protocols/cbus/readwrite/model/Request.go
+++ b/plc4go/protocols/cbus/readwrite/model/Request.go
@@ -68,6 +68,7 @@ type _Request struct {
 type _RequestChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetActualPeek() RequestType
 }
 
 type RequestParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/SecurityData.go b/plc4go/protocols/cbus/readwrite/model/SecurityData.go
index 2145af0cdf..aae086707c 100644
--- a/plc4go/protocols/cbus/readwrite/model/SecurityData.go
+++ b/plc4go/protocols/cbus/readwrite/model/SecurityData.go
@@ -56,6 +56,8 @@ type _SecurityData struct {
 type _SecurityDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() SecurityCommandType
+	GetArgument() byte
 }
 
 type SecurityDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/StatusRequest.go b/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
index 91ce82b75c..e9465952aa 100644
--- a/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
+++ b/plc4go/protocols/cbus/readwrite/model/StatusRequest.go
@@ -51,6 +51,7 @@ type _StatusRequest struct {
 type _StatusRequestChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetStatusType() byte
 }
 
 type StatusRequestParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/TelephonyData.go b/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
index 7bca7a440d..4059649be7 100644
--- a/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
+++ b/plc4go/protocols/cbus/readwrite/model/TelephonyData.go
@@ -56,6 +56,8 @@ type _TelephonyData struct {
 type _TelephonyDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() TelephonyCommandType
+	GetArgument() byte
 }
 
 type TelephonyDataParent interface {
diff --git a/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go b/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
index 36ef190c90..16ca28b764 100644
--- a/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
+++ b/plc4go/protocols/cbus/readwrite/model/TriggerControlData.go
@@ -58,6 +58,7 @@ type _TriggerControlData struct {
 type _TriggerControlDataChildRequirements interface {
 	utils.Serializable
 	GetLengthInBits(ctx context.Context) uint16
+	GetCommandType() TriggerControlCommandType
 }
 
 type TriggerControlDataParent interface {
diff --git a/plc4go/protocols/eip/readwrite/model/CIPClassID.go b/plc4go/protocols/eip/readwrite/model/CIPClassID.go
index 3a2fdd79af..95e19f43be 100644
--- a/plc4go/protocols/eip/readwrite/model/CIPClassID.go
+++ b/plc4go/protocols/eip/readwrite/model/CIPClassID.go
@@ -35,9 +35,76 @@ type ICIPClassID interface {
 }
 
 const (
-	CIPClassID_Identity          CIPClassID = 0x0001
-	CIPClassID_MessageRouter     CIPClassID = 0x0002
-	CIPClassID_ConnectionManager CIPClassID = 0x0006
+	CIPClassID_Identity                     CIPClassID = 0x0001
+	CIPClassID_MessageRouter                CIPClassID = 0x0002
+	CIPClassID_Assembly                     CIPClassID = 0x0004
+	CIPClassID_Connection                   CIPClassID = 0x0005
+	CIPClassID_ConnectionManager            CIPClassID = 0x0006
+	CIPClassID_Register                     CIPClassID = 0x0007
+	CIPClassID_Parameter                    CIPClassID = 0x000F
+	CIPClassID_ParameterGroup               CIPClassID = 0x0010
+	CIPClassID_AcknowledgeHandler           CIPClassID = 0x002B
+	CIPClassID_Selection                    CIPClassID = 0x002E
+	CIPClassID_File                         CIPClassID = 0x0037
+	CIPClassID_OriginatorConnectionList     CIPClassID = 0x0045
+	CIPClassID_ConnectionConfiguration      CIPClassID = 0x00F3
+	CIPClassID_Port                         CIPClassID = 0x00F4
+	CIPClassID_DiscreteInputPoint           CIPClassID = 0x0008
+	CIPClassID_DiscreteOutputPoint          CIPClassID = 0x0009
+	CIPClassID_AnalogInputPoint             CIPClassID = 0x000A
+	CIPClassID_AnalogOutputPoint            CIPClassID = 0x000B
+	CIPClassID_PresenceSensing              CIPClassID = 0x000E
+	CIPClassID_Group                        CIPClassID = 0x0012
+	CIPClassID_DiscreteInputGroup           CIPClassID = 0x001D
+	CIPClassID_DiscreteOutputGroup          CIPClassID = 0x001E
+	CIPClassID_DiscreteGroup                CIPClassID = 0x001F
+	CIPClassID_AnalogInputGroup             CIPClassID = 0x0020
+	CIPClassID_AnalogOutputGroup            CIPClassID = 0x0021
+	CIPClassID_AnalogGroup                  CIPClassID = 0x0022
+	CIPClassID_PositionSensor               CIPClassID = 0x0023
+	CIPClassID_PositionControllerSupervisor CIPClassID = 0x0024
+	CIPClassID_PositionController           CIPClassID = 0x0025
+	CIPClassID_BlockSequencer               CIPClassID = 0x0026
+	CIPClassID_CommandBlock                 CIPClassID = 0x0027
+	CIPClassID_MotorData                    CIPClassID = 0x0028
+	CIPClassID_ControlSupervisor            CIPClassID = 0x0029
+	CIPClassID_AcDcDrive                    CIPClassID = 0x002A
+	CIPClassID_Overload                     CIPClassID = 0x002C
+	CIPClassID_SDeviceSupervisor            CIPClassID = 0x0030
+	CIPClassID_SAnalogSensor                CIPClassID = 0x0031
+	CIPClassID_SAnalogActuator              CIPClassID = 0x0032
+	CIPClassID_SSingleStageController       CIPClassID = 0x0033
+	CIPClassID_SGasCalibration              CIPClassID = 0x0034
+	CIPClassID_SPartialPressure             CIPClassID = 0x0038
+	CIPClassID_SSensorCalibration           CIPClassID = 0x0040
+	CIPClassID_EventLog                     CIPClassID = 0x0041
+	CIPClassID_MotionDeviceAxis             CIPClassID = 0x0042
+	CIPClassID_SafetyAnalogInputGroup       CIPClassID = 0x004A
+	CIPClassID_BaseEnergy                   CIPClassID = 0x004E
+	CIPClassID_ElectricalEnergy             CIPClassID = 0x004F
+	CIPClassID_NonElectricalEnergy          CIPClassID = 0x0050
+	CIPClassID_PowerManagementObject        CIPClassID = 0x0053
+	CIPClassID_PowerCurtailmentObject       CIPClassID = 0x005C
+	CIPClassID_DeviceNet                    CIPClassID = 0x0003
+	CIPClassID_Modbus                       CIPClassID = 0x0044
+	CIPClassID_ModbusSerialLink             CIPClassID = 0x0046
+	CIPClassID_DeviceLevelRing              CIPClassID = 0x0047
+	CIPClassID_QOS                          CIPClassID = 0x0048
+	CIPClassID_Sercos3Link                  CIPClassID = 0x004C
+	CIPClassID_BaseSwitch                   CIPClassID = 0x0051
+	CIPClassID_Snmp                         CIPClassID = 0x0052
+	CIPClassID_PowerManagement              CIPClassID = 0x0053
+	CIPClassID_RstpBridge                   CIPClassID = 0x0054
+	CIPClassID_RstpPort                     CIPClassID = 0x0055
+	CIPClassID_ParallelRedundancyProtocol   CIPClassID = 0x0056
+	CIPClassID_PrpNodesTable                CIPClassID = 0x0057
+	CIPClassID_ControlNet                   CIPClassID = 0x00F0
+	CIPClassID_ControlNetKeeper             CIPClassID = 0x00F1
+	CIPClassID_ControlNetScheduling         CIPClassID = 0x00F2
+	CIPClassID_TcpIpInterface               CIPClassID = 0x00F5
+	CIPClassID_EthernetLink                 CIPClassID = 0x00F6
+	CIPClassID_CompoNetLink                 CIPClassID = 0x00F7
+	CIPClassID_CompoNetRepeater             CIPClassID = 0x00F8
 )
 
 var CIPClassIDValues []CIPClassID
@@ -47,7 +114,74 @@ func init() {
 	CIPClassIDValues = []CIPClassID{
 		CIPClassID_Identity,
 		CIPClassID_MessageRouter,
+		CIPClassID_Assembly,
+		CIPClassID_Connection,
 		CIPClassID_ConnectionManager,
+		CIPClassID_Register,
+		CIPClassID_Parameter,
+		CIPClassID_ParameterGroup,
+		CIPClassID_AcknowledgeHandler,
+		CIPClassID_Selection,
+		CIPClassID_File,
+		CIPClassID_OriginatorConnectionList,
+		CIPClassID_ConnectionConfiguration,
+		CIPClassID_Port,
+		CIPClassID_DiscreteInputPoint,
+		CIPClassID_DiscreteOutputPoint,
+		CIPClassID_AnalogInputPoint,
+		CIPClassID_AnalogOutputPoint,
+		CIPClassID_PresenceSensing,
+		CIPClassID_Group,
+		CIPClassID_DiscreteInputGroup,
+		CIPClassID_DiscreteOutputGroup,
+		CIPClassID_DiscreteGroup,
+		CIPClassID_AnalogInputGroup,
+		CIPClassID_AnalogOutputGroup,
+		CIPClassID_AnalogGroup,
+		CIPClassID_PositionSensor,
+		CIPClassID_PositionControllerSupervisor,
+		CIPClassID_PositionController,
+		CIPClassID_BlockSequencer,
+		CIPClassID_CommandBlock,
+		CIPClassID_MotorData,
+		CIPClassID_ControlSupervisor,
+		CIPClassID_AcDcDrive,
+		CIPClassID_Overload,
+		CIPClassID_SDeviceSupervisor,
+		CIPClassID_SAnalogSensor,
+		CIPClassID_SAnalogActuator,
+		CIPClassID_SSingleStageController,
+		CIPClassID_SGasCalibration,
+		CIPClassID_SPartialPressure,
+		CIPClassID_SSensorCalibration,
+		CIPClassID_EventLog,
+		CIPClassID_MotionDeviceAxis,
+		CIPClassID_SafetyAnalogInputGroup,
+		CIPClassID_BaseEnergy,
+		CIPClassID_ElectricalEnergy,
+		CIPClassID_NonElectricalEnergy,
+		CIPClassID_PowerManagementObject,
+		CIPClassID_PowerCurtailmentObject,
+		CIPClassID_DeviceNet,
+		CIPClassID_Modbus,
+		CIPClassID_ModbusSerialLink,
+		CIPClassID_DeviceLevelRing,
+		CIPClassID_QOS,
+		CIPClassID_Sercos3Link,
+		CIPClassID_BaseSwitch,
+		CIPClassID_Snmp,
+		CIPClassID_PowerManagement,
+		CIPClassID_RstpBridge,
+		CIPClassID_RstpPort,
+		CIPClassID_ParallelRedundancyProtocol,
+		CIPClassID_PrpNodesTable,
+		CIPClassID_ControlNet,
+		CIPClassID_ControlNetKeeper,
+		CIPClassID_ControlNetScheduling,
+		CIPClassID_TcpIpInterface,
+		CIPClassID_EthernetLink,
+		CIPClassID_CompoNetLink,
+		CIPClassID_CompoNetRepeater,
 	}
 }
 
@@ -57,8 +191,140 @@ func CIPClassIDByValue(value uint16) (enum CIPClassID, ok bool) {
 		return CIPClassID_Identity, true
 	case 0x0002:
 		return CIPClassID_MessageRouter, true
+	case 0x0003:
+		return CIPClassID_DeviceNet, true
+	case 0x0004:
+		return CIPClassID_Assembly, true
+	case 0x0005:
+		return CIPClassID_Connection, true
 	case 0x0006:
 		return CIPClassID_ConnectionManager, true
+	case 0x0007:
+		return CIPClassID_Register, true
+	case 0x0008:
+		return CIPClassID_DiscreteInputPoint, true
+	case 0x0009:
+		return CIPClassID_DiscreteOutputPoint, true
+	case 0x000A:
+		return CIPClassID_AnalogInputPoint, true
+	case 0x000B:
+		return CIPClassID_AnalogOutputPoint, true
+	case 0x000E:
+		return CIPClassID_PresenceSensing, true
+	case 0x000F:
+		return CIPClassID_Parameter, true
+	case 0x0010:
+		return CIPClassID_ParameterGroup, true
+	case 0x0012:
+		return CIPClassID_Group, true
+	case 0x001D:
+		return CIPClassID_DiscreteInputGroup, true
+	case 0x001E:
+		return CIPClassID_DiscreteOutputGroup, true
+	case 0x001F:
+		return CIPClassID_DiscreteGroup, true
+	case 0x0020:
+		return CIPClassID_AnalogInputGroup, true
+	case 0x0021:
+		return CIPClassID_AnalogOutputGroup, true
+	case 0x0022:
+		return CIPClassID_AnalogGroup, true
+	case 0x0023:
+		return CIPClassID_PositionSensor, true
+	case 0x0024:
+		return CIPClassID_PositionControllerSupervisor, true
+	case 0x0025:
+		return CIPClassID_PositionController, true
+	case 0x0026:
+		return CIPClassID_BlockSequencer, true
+	case 0x0027:
+		return CIPClassID_CommandBlock, true
+	case 0x0028:
+		return CIPClassID_MotorData, true
+	case 0x0029:
+		return CIPClassID_ControlSupervisor, true
+	case 0x002A:
+		return CIPClassID_AcDcDrive, true
+	case 0x002B:
+		return CIPClassID_AcknowledgeHandler, true
+	case 0x002C:
+		return CIPClassID_Overload, true
+	case 0x002E:
+		return CIPClassID_Selection, true
+	case 0x0030:
+		return CIPClassID_SDeviceSupervisor, true
+	case 0x0031:
+		return CIPClassID_SAnalogSensor, true
+	case 0x0032:
+		return CIPClassID_SAnalogActuator, true
+	case 0x0033:
+		return CIPClassID_SSingleStageController, true
+	case 0x0034:
+		return CIPClassID_SGasCalibration, true
+	case 0x0037:
+		return CIPClassID_File, true
+	case 0x0038:
+		return CIPClassID_SPartialPressure, true
+	case 0x0040:
+		return CIPClassID_SSensorCalibration, true
+	case 0x0041:
+		return CIPClassID_EventLog, true
+	case 0x0042:
+		return CIPClassID_MotionDeviceAxis, true
+	case 0x0044:
+		return CIPClassID_Modbus, true
+	case 0x0045:
+		return CIPClassID_OriginatorConnectionList, true
+	case 0x0046:
+		return CIPClassID_ModbusSerialLink, true
+	case 0x0047:
+		return CIPClassID_DeviceLevelRing, true
+	case 0x0048:
+		return CIPClassID_QOS, true
+	case 0x004A:
+		return CIPClassID_SafetyAnalogInputGroup, true
+	case 0x004C:
+		return CIPClassID_Sercos3Link, true
+	case 0x004E:
+		return CIPClassID_BaseEnergy, true
+	case 0x004F:
+		return CIPClassID_ElectricalEnergy, true
+	case 0x0050:
+		return CIPClassID_NonElectricalEnergy, true
+	case 0x0051:
+		return CIPClassID_BaseSwitch, true
+	case 0x0052:
+		return CIPClassID_Snmp, true
+	case 0x0053:
+		return CIPClassID_PowerManagementObject, true
+	case 0x0054:
+		return CIPClassID_RstpBridge, true
+	case 0x0055:
+		return CIPClassID_RstpPort, true
+	case 0x0056:
+		return CIPClassID_ParallelRedundancyProtocol, true
+	case 0x0057:
+		return CIPClassID_PrpNodesTable, true
+	case 0x005C:
+		return CIPClassID_PowerCurtailmentObject, true
+	case 0x00F0:
+		return CIPClassID_ControlNet, true
+	case 0x00F1:
+		return CIPClassID_ControlNetKeeper, true
+	case 0x00F2:
+		return CIPClassID_ControlNetScheduling, true
+	case 0x00F3:
+		return CIPClassID_ConnectionConfiguration, true
+	case 0x00F4:
+		return CIPClassID_Port, true
+	case 0x00F5:
+		return CIPClassID_TcpIpInterface, true
+	case 0x00F6:
+		return CIPClassID_EthernetLink, true
+	case 0x00F7:
+		return CIPClassID_CompoNetLink, true
+	case 0x00F8:
+		return CIPClassID_CompoNetRepeater, true
 	}
 	return 0, false
 }
@@ -69,8 +335,140 @@ func CIPClassIDByName(value string) (enum CIPClassID, ok bool) {
 		return CIPClassID_Identity, true
 	case "MessageRouter":
 		return CIPClassID_MessageRouter, true
+	case "DeviceNet":
+		return CIPClassID_DeviceNet, true
+	case "Assembly":
+		return CIPClassID_Assembly, true
+	case "Connection":
+		return CIPClassID_Connection, true
 	case "ConnectionManager":
 		return CIPClassID_ConnectionManager, true
+	case "Register":
+		return CIPClassID_Register, true
+	case "DiscreteInputPoint":
+		return CIPClassID_DiscreteInputPoint, true
+	case "DiscreteOutputPoint":
+		return CIPClassID_DiscreteOutputPoint, true
+	case "AnalogInputPoint":
+		return CIPClassID_AnalogInputPoint, true
+	case "AnalogOutputPoint":
+		return CIPClassID_AnalogOutputPoint, true
+	case "PresenceSensing":
+		return CIPClassID_PresenceSensing, true
+	case "Parameter":
+		return CIPClassID_Parameter, true
+	case "ParameterGroup":
+		return CIPClassID_ParameterGroup, true
+	case "Group":
+		return CIPClassID_Group, true
+	case "DiscreteInputGroup":
+		return CIPClassID_DiscreteInputGroup, true
+	case "DiscreteOutputGroup":
+		return CIPClassID_DiscreteOutputGroup, true
+	case "DiscreteGroup":
+		return CIPClassID_DiscreteGroup, true
+	case "AnalogInputGroup":
+		return CIPClassID_AnalogInputGroup, true
+	case "AnalogOutputGroup":
+		return CIPClassID_AnalogOutputGroup, true
+	case "AnalogGroup":
+		return CIPClassID_AnalogGroup, true
+	case "PositionSensor":
+		return CIPClassID_PositionSensor, true
+	case "PositionControllerSupervisor":
+		return CIPClassID_PositionControllerSupervisor, true
+	case "PositionController":
+		return CIPClassID_PositionController, true
+	case "BlockSequencer":
+		return CIPClassID_BlockSequencer, true
+	case "CommandBlock":
+		return CIPClassID_CommandBlock, true
+	case "MotorData":
+		return CIPClassID_MotorData, true
+	case "ControlSupervisor":
+		return CIPClassID_ControlSupervisor, true
+	case "AcDcDrive":
+		return CIPClassID_AcDcDrive, true
+	case "AcknowledgeHandler":
+		return CIPClassID_AcknowledgeHandler, true
+	case "Overload":
+		return CIPClassID_Overload, true
+	case "Selection":
+		return CIPClassID_Selection, true
+	case "SDeviceSupervisor":
+		return CIPClassID_SDeviceSupervisor, true
+	case "SAnalogSensor":
+		return CIPClassID_SAnalogSensor, true
+	case "SAnalogActuator":
+		return CIPClassID_SAnalogActuator, true
+	case "SSingleStageController":
+		return CIPClassID_SSingleStageController, true
+	case "SGasCalibration":
+		return CIPClassID_SGasCalibration, true
+	case "File":
+		return CIPClassID_File, true
+	case "SPartialPressure":
+		return CIPClassID_SPartialPressure, true
+	case "SSensorCalibration":
+		return CIPClassID_SSensorCalibration, true
+	case "EventLog":
+		return CIPClassID_EventLog, true
+	case "MotionDeviceAxis":
+		return CIPClassID_MotionDeviceAxis, true
+	case "Modbus":
+		return CIPClassID_Modbus, true
+	case "OriginatorConnectionList":
+		return CIPClassID_OriginatorConnectionList, true
+	case "ModbusSerialLink":
+		return CIPClassID_ModbusSerialLink, true
+	case "DeviceLevelRing":
+		return CIPClassID_DeviceLevelRing, true
+	case "QOS":
+		return CIPClassID_QOS, true
+	case "SafetyAnalogInputGroup":
+		return CIPClassID_SafetyAnalogInputGroup, true
+	case "Sercos3Link":
+		return CIPClassID_Sercos3Link, true
+	case "BaseEnergy":
+		return CIPClassID_BaseEnergy, true
+	case "ElectricalEnergy":
+		return CIPClassID_ElectricalEnergy, true
+	case "NonElectricalEnergy":
+		return CIPClassID_NonElectricalEnergy, true
+	case "BaseSwitch":
+		return CIPClassID_BaseSwitch, true
+	case "Snmp":
+		return CIPClassID_Snmp, true
+	case "PowerManagementObject":
+		return CIPClassID_PowerManagementObject, true
+	case "RstpBridge":
+		return CIPClassID_RstpBridge, true
+	case "RstpPort":
+		return CIPClassID_RstpPort, true
+	case "ParallelRedundancyProtocol":
+		return CIPClassID_ParallelRedundancyProtocol, true
+	case "PrpNodesTable":
+		return CIPClassID_PrpNodesTable, true
+	case "PowerCurtailmentObject":
+		return CIPClassID_PowerCurtailmentObject, true
+	case "ControlNet":
+		return CIPClassID_ControlNet, true
+	case "ControlNetKeeper":
+		return CIPClassID_ControlNetKeeper, true
+	case "ControlNetScheduling":
+		return CIPClassID_ControlNetScheduling, true
+	case "ConnectionConfiguration":
+		return CIPClassID_ConnectionConfiguration, true
+	case "Port":
+		return CIPClassID_Port, true
+	case "TcpIpInterface":
+		return CIPClassID_TcpIpInterface, true
+	case "EthernetLink":
+		return CIPClassID_EthernetLink, true
+	case "CompoNetLink":
+		return CIPClassID_CompoNetLink, true
+	case "CompoNetRepeater":
+		return CIPClassID_CompoNetRepeater, true
 	}
 	return 0, false
 }
@@ -138,8 +536,140 @@ func (e CIPClassID) PLC4XEnumName() string {
 		return "Identity"
 	case CIPClassID_MessageRouter:
 		return "MessageRouter"
+	case CIPClassID_DeviceNet:
+		return "DeviceNet"
+	case CIPClassID_Assembly:
+		return "Assembly"
+	case CIPClassID_Connection:
+		return "Connection"
 	case CIPClassID_ConnectionManager:
 		return "ConnectionManager"
+	case CIPClassID_Register:
+		return "Register"
+	case CIPClassID_DiscreteInputPoint:
+		return "DiscreteInputPoint"
+	case CIPClassID_DiscreteOutputPoint:
+		return "DiscreteOutputPoint"
+	case CIPClassID_AnalogInputPoint:
+		return "AnalogInputPoint"
+	case CIPClassID_AnalogOutputPoint:
+		return "AnalogOutputPoint"
+	case CIPClassID_PresenceSensing:
+		return "PresenceSensing"
+	case CIPClassID_Parameter:
+		return "Parameter"
+	case CIPClassID_ParameterGroup:
+		return "ParameterGroup"
+	case CIPClassID_Group:
+		return "Group"
+	case CIPClassID_DiscreteInputGroup:
+		return "DiscreteInputGroup"
+	case CIPClassID_DiscreteOutputGroup:
+		return "DiscreteOutputGroup"
+	case CIPClassID_DiscreteGroup:
+		return "DiscreteGroup"
+	case CIPClassID_AnalogInputGroup:
+		return "AnalogInputGroup"
+	case CIPClassID_AnalogOutputGroup:
+		return "AnalogOutputGroup"
+	case CIPClassID_AnalogGroup:
+		return "AnalogGroup"
+	case CIPClassID_PositionSensor:
+		return "PositionSensor"
+	case CIPClassID_PositionControllerSupervisor:
+		return "PositionControllerSupervisor"
+	case CIPClassID_PositionController:
+		return "PositionController"
+	case CIPClassID_BlockSequencer:
+		return "BlockSequencer"
+	case CIPClassID_CommandBlock:
+		return "CommandBlock"
+	case CIPClassID_MotorData:
+		return "MotorData"
+	case CIPClassID_ControlSupervisor:
+		return "ControlSupervisor"
+	case CIPClassID_AcDcDrive:
+		return "AcDcDrive"
+	case CIPClassID_AcknowledgeHandler:
+		return "AcknowledgeHandler"
+	case CIPClassID_Overload:
+		return "Overload"
+	case CIPClassID_Selection:
+		return "Selection"
+	case CIPClassID_SDeviceSupervisor:
+		return "SDeviceSupervisor"
+	case CIPClassID_SAnalogSensor:
+		return "SAnalogSensor"
+	case CIPClassID_SAnalogActuator:
+		return "SAnalogActuator"
+	case CIPClassID_SSingleStageController:
+		return "SSingleStageController"
+	case CIPClassID_SGasCalibration:
+		return "SGasCalibration"
+	case CIPClassID_File:
+		return "File"
+	case CIPClassID_SPartialPressure:
+		return "SPartialPressure"
+	case CIPClassID_SSensorCalibration:
+		return "SSensorCalibration"
+	case CIPClassID_EventLog:
+		return "EventLog"
+	case CIPClassID_MotionDeviceAxis:
+		return "MotionDeviceAxis"
+	case CIPClassID_Modbus:
+		return "Modbus"
+	case CIPClassID_OriginatorConnectionList:
+		return "OriginatorConnectionList"
+	case CIPClassID_ModbusSerialLink:
+		return "ModbusSerialLink"
+	case CIPClassID_DeviceLevelRing:
+		return "DeviceLevelRing"
+	case CIPClassID_QOS:
+		return "QOS"
+	case CIPClassID_SafetyAnalogInputGroup:
+		return "SafetyAnalogInputGroup"
+	case CIPClassID_Sercos3Link:
+		return "Sercos3Link"
+	case CIPClassID_BaseEnergy:
+		return "BaseEnergy"
+	case CIPClassID_ElectricalEnergy:
+		return "ElectricalEnergy"
+	case CIPClassID_NonElectricalEnergy:
+		return "NonElectricalEnergy"
+	case CIPClassID_BaseSwitch:
+		return "BaseSwitch"
+	case CIPClassID_Snmp:
+		return "Snmp"
+	case CIPClassID_PowerManagementObject:
+		return "PowerManagementObject"
+	case CIPClassID_RstpBridge:
+		return "RstpBridge"
+	case CIPClassID_RstpPort:
+		return "RstpPort"
+	case CIPClassID_ParallelRedundancyProtocol:
+		return "ParallelRedundancyProtocol"
+	case CIPClassID_PrpNodesTable:
+		return "PrpNodesTable"
+	case CIPClassID_PowerCurtailmentObject:
+		return "PowerCurtailmentObject"
+	case CIPClassID_ControlNet:
+		return "ControlNet"
+	case CIPClassID_ControlNetKeeper:
+		return "ControlNetKeeper"
+	case CIPClassID_ControlNetScheduling:
+		return "ControlNetScheduling"
+	case CIPClassID_ConnectionConfiguration:
+		return "ConnectionConfiguration"
+	case CIPClassID_Port:
+		return "Port"
+	case CIPClassID_TcpIpInterface:
+		return "TcpIpInterface"
+	case CIPClassID_EthernetLink:
+		return "EthernetLink"
+	case CIPClassID_CompoNetLink:
+		return "CompoNetLink"
+	case CIPClassID_CompoNetRepeater:
+		return "CompoNetRepeater"
 	}
 	return ""
 }
diff --git a/plc4go/protocols/eip/readwrite/model/CIPStatus.go b/plc4go/protocols/eip/readwrite/model/CIPStatus.go
index 1ebb2d456d..12180bbf36 100644
--- a/plc4go/protocols/eip/readwrite/model/CIPStatus.go
+++ b/plc4go/protocols/eip/readwrite/model/CIPStatus.go
@@ -50,7 +50,7 @@ const (
 	CIPStatus_ObjectStateConflict           CIPStatus = 0x0000000C
 	CIPStatus_ObjectAlreadyExists           CIPStatus = 0x0000000D
 	CIPStatus_AttributeNotSettable          CIPStatus = 0x0000000E
-	CIPStatus_PriviligeViolation            CIPStatus = 0x0000000F
+	CIPStatus_PrivilegeViolation            CIPStatus = 0x0000000F
 	CIPStatus_DeviceStateConflict           CIPStatus = 0x00000010
 	CIPStatus_ReplyDataTooLarge             CIPStatus = 0x00000011
 	CIPStatus_FragmentationOfPrimitiveValue CIPStatus = 0x00000012
@@ -89,7 +89,7 @@ func init() {
 		CIPStatus_ObjectStateConflict,
 		CIPStatus_ObjectAlreadyExists,
 		CIPStatus_AttributeNotSettable,
-		CIPStatus_PriviligeViolation,
+		CIPStatus_PrivilegeViolation,
 		CIPStatus_DeviceStateConflict,
 		CIPStatus_ReplyDataTooLarge,
 		CIPStatus_FragmentationOfPrimitiveValue,
@@ -142,7 +142,7 @@ func CIPStatusByValue(value uint32) (enum CIPStatus, ok bool) {
 	case 0x0000000E:
 		return CIPStatus_AttributeNotSettable, true
 	case 0x0000000F:
-		return CIPStatus_PriviligeViolation, true
+		return CIPStatus_PrivilegeViolation, true
 	case 0x00000010:
 		return CIPStatus_DeviceStateConflict, true
 	case 0x00000011:
@@ -211,8 +211,8 @@ func CIPStatusByName(value string) (enum CIPStatus, ok bool) {
 		return CIPStatus_ObjectAlreadyExists, true
 	case "AttributeNotSettable":
 		return CIPStatus_AttributeNotSettable, true
-	case "PriviligeViolation":
-		return CIPStatus_PriviligeViolation, true
+	case "PrivilegeViolation":
+		return CIPStatus_PrivilegeViolation, true
 	case "DeviceStateConflict":
 		return CIPStatus_DeviceStateConflict, true
 	case "ReplyDataTooLarge":
@@ -338,8 +338,8 @@ func (e CIPStatus) PLC4XEnumName() string {
 		return "ObjectAlreadyExists"
 	case CIPStatus_AttributeNotSettable:
 		return "AttributeNotSettable"
-	case CIPStatus_PriviligeViolation:
-		return "PriviligeViolation"
+	case CIPStatus_PrivilegeViolation:
+		return "PrivilegeViolation"
 	case CIPStatus_DeviceStateConflict:
 		return "DeviceStateConflict"
 	case CIPStatus_ReplyDataTooLarge:
diff --git a/plc4go/protocols/eip/readwrite/model/CipService.go b/plc4go/protocols/eip/readwrite/model/CipService.go
index 4b84cfe8bf..9f8850b68e 100644
--- a/plc4go/protocols/eip/readwrite/model/CipService.go
+++ b/plc4go/protocols/eip/readwrite/model/CipService.go
@@ -149,6 +149,30 @@ func CipServiceParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer,
 		_childTemp, typeSwitchError = GetAttributeAllRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
 	case service == 0x01 && response == bool(true): // GetAttributeAllResponse
 		_childTemp, typeSwitchError = GetAttributeAllResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x02 && response == bool(false): // SetAttributeAllRequest
+		_childTemp, typeSwitchError = SetAttributeAllRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x02 && response == bool(true): // SetAttributeAllResponse
+		_childTemp, typeSwitchError = SetAttributeAllResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x03 && response == bool(false): // GetAttributeListRequest
+		_childTemp, typeSwitchError = GetAttributeListRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x03 && response == bool(true): // GetAttributeListResponse
+		_childTemp, typeSwitchError = GetAttributeListResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x04 && response == bool(false): // SetAttributeListRequest
+		_childTemp, typeSwitchError = SetAttributeListRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x04 && response == bool(true): // SetAttributeListResponse
+		_childTemp, typeSwitchError = SetAttributeListResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x0A && response == bool(false): // MultipleServiceRequest
+		_childTemp, typeSwitchError = MultipleServiceRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x0A && response == bool(true): // MultipleServiceResponse
+		_childTemp, typeSwitchError = MultipleServiceResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x0E && response == bool(false): // GetAttributeSingleRequest
+		_childTemp, typeSwitchError = GetAttributeSingleRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x0E && response == bool(true): // GetAttributeSingleResponse
+		_childTemp, typeSwitchError = GetAttributeSingleResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x10 && response == bool(false): // SetAttributeSingleRequest
+		_childTemp, typeSwitchError = SetAttributeSingleRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
+	case service == 0x10 && response == bool(true): // SetAttributeSingleResponse
+		_childTemp, typeSwitchError = SetAttributeSingleResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
 	case service == 0x4C && response == bool(false): // CipReadRequest
 		_childTemp, typeSwitchError = CipReadRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
 	case service == 0x4C && response == bool(true): // CipReadResponse
@@ -161,10 +185,6 @@ func CipServiceParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer,
 		_childTemp, typeSwitchError = CipConnectionManagerCloseRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
 	case service == 0x4E && response == bool(true): // CipConnectionManagerCloseResponse
 		_childTemp, typeSwitchError = CipConnectionManagerCloseResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
-	case service == 0x0A && response == bool(false): // MultipleServiceRequest
-		_childTemp, typeSwitchError = MultipleServiceRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
-	case service == 0x0A && response == bool(true): // MultipleServiceResponse
-		_childTemp, typeSwitchError = MultipleServiceResponseParseWithBuffer(ctx, readBuffer, connected, serviceLen)
 	case service == 0x52 && response == bool(false) && connected == bool(false): // CipUnconnectedRequest
 		_childTemp, typeSwitchError = CipUnconnectedRequestParseWithBuffer(ctx, readBuffer, connected, serviceLen)
 	case service == 0x52 && response == bool(false) && connected == bool(true): // CipConnectedRequest
diff --git a/plc4go/protocols/eip/readwrite/model/GetAttributeListRequest.go b/plc4go/protocols/eip/readwrite/model/GetAttributeListRequest.go
new file mode 100644
index 0000000000..a7c31b3ab3
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/GetAttributeListRequest.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// GetAttributeListRequest is the corresponding interface of GetAttributeListRequest
+type GetAttributeListRequest interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// GetAttributeListRequestExactly can be used when we want exactly this type and not a type which fulfills GetAttributeListRequest.
+// This is useful for switch cases.
+type GetAttributeListRequestExactly interface {
+	GetAttributeListRequest
+	isGetAttributeListRequest() bool
+}
+
+// _GetAttributeListRequest is the data-structure of this message
+type _GetAttributeListRequest struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_GetAttributeListRequest) GetService() uint8 {
+	return 0x03
+}
+
+func (m *_GetAttributeListRequest) GetResponse() bool {
+	return bool(false)
+}
+
+func (m *_GetAttributeListRequest) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_GetAttributeListRequest) InitializeParent(parent CipService) {}
+
+func (m *_GetAttributeListRequest) GetParent() CipService {
+	return m._CipService
+}
+
+// NewGetAttributeListRequest factory function for _GetAttributeListRequest
+func NewGetAttributeListRequest(serviceLen uint16) *_GetAttributeListRequest {
+	_result := &_GetAttributeListRequest{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastGetAttributeListRequest(structType interface{}) GetAttributeListRequest {
+	if casted, ok := structType.(GetAttributeListRequest); ok {
+		return casted
+	}
+	if casted, ok := structType.(*GetAttributeListRequest); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_GetAttributeListRequest) GetTypeName() string {
+	return "GetAttributeListRequest"
+}
+
+func (m *_GetAttributeListRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_GetAttributeListRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func GetAttributeListRequestParse(theBytes []byte, connected bool, serviceLen uint16) (GetAttributeListRequest, error) {
+	return GetAttributeListRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func GetAttributeListRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (GetAttributeListRequest, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("GetAttributeListRequest"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for GetAttributeListRequest")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("GetAttributeListRequest"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for GetAttributeListRequest")
+	}
+
+	// Create a partially initialized instance
+	_child := &_GetAttributeListRequest{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_GetAttributeListRequest) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_GetAttributeListRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("GetAttributeListRequest"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for GetAttributeListRequest")
+		}
+
+		if popErr := writeBuffer.PopContext("GetAttributeListRequest"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for GetAttributeListRequest")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_GetAttributeListRequest) isGetAttributeListRequest() bool {
+	return true
+}
+
+func (m *_GetAttributeListRequest) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/GetAttributeListResponse.go b/plc4go/protocols/eip/readwrite/model/GetAttributeListResponse.go
new file mode 100644
index 0000000000..87b902d106
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/GetAttributeListResponse.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// GetAttributeListResponse is the corresponding interface of GetAttributeListResponse
+type GetAttributeListResponse interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// GetAttributeListResponseExactly can be used when we want exactly this type and not a type which fulfills GetAttributeListResponse.
+// This is useful for switch cases.
+type GetAttributeListResponseExactly interface {
+	GetAttributeListResponse
+	isGetAttributeListResponse() bool
+}
+
+// _GetAttributeListResponse is the data-structure of this message
+type _GetAttributeListResponse struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_GetAttributeListResponse) GetService() uint8 {
+	return 0x03
+}
+
+func (m *_GetAttributeListResponse) GetResponse() bool {
+	return bool(true)
+}
+
+func (m *_GetAttributeListResponse) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_GetAttributeListResponse) InitializeParent(parent CipService) {}
+
+func (m *_GetAttributeListResponse) GetParent() CipService {
+	return m._CipService
+}
+
+// NewGetAttributeListResponse factory function for _GetAttributeListResponse
+func NewGetAttributeListResponse(serviceLen uint16) *_GetAttributeListResponse {
+	_result := &_GetAttributeListResponse{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastGetAttributeListResponse(structType interface{}) GetAttributeListResponse {
+	if casted, ok := structType.(GetAttributeListResponse); ok {
+		return casted
+	}
+	if casted, ok := structType.(*GetAttributeListResponse); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_GetAttributeListResponse) GetTypeName() string {
+	return "GetAttributeListResponse"
+}
+
+func (m *_GetAttributeListResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_GetAttributeListResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func GetAttributeListResponseParse(theBytes []byte, connected bool, serviceLen uint16) (GetAttributeListResponse, error) {
+	return GetAttributeListResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func GetAttributeListResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (GetAttributeListResponse, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("GetAttributeListResponse"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for GetAttributeListResponse")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("GetAttributeListResponse"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for GetAttributeListResponse")
+	}
+
+	// Create a partially initialized instance
+	_child := &_GetAttributeListResponse{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_GetAttributeListResponse) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_GetAttributeListResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("GetAttributeListResponse"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for GetAttributeListResponse")
+		}
+
+		if popErr := writeBuffer.PopContext("GetAttributeListResponse"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for GetAttributeListResponse")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_GetAttributeListResponse) isGetAttributeListResponse() bool {
+	return true
+}
+
+func (m *_GetAttributeListResponse) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/GetAttributeSingleRequest.go b/plc4go/protocols/eip/readwrite/model/GetAttributeSingleRequest.go
new file mode 100644
index 0000000000..916fa95d4f
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/GetAttributeSingleRequest.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// GetAttributeSingleRequest is the corresponding interface of GetAttributeSingleRequest
+type GetAttributeSingleRequest interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// GetAttributeSingleRequestExactly can be used when we want exactly this type and not a type which fulfills GetAttributeSingleRequest.
+// This is useful for switch cases.
+type GetAttributeSingleRequestExactly interface {
+	GetAttributeSingleRequest
+	isGetAttributeSingleRequest() bool
+}
+
+// _GetAttributeSingleRequest is the data-structure of this message
+type _GetAttributeSingleRequest struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_GetAttributeSingleRequest) GetService() uint8 {
+	return 0x0E
+}
+
+func (m *_GetAttributeSingleRequest) GetResponse() bool {
+	return bool(false)
+}
+
+func (m *_GetAttributeSingleRequest) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_GetAttributeSingleRequest) InitializeParent(parent CipService) {}
+
+func (m *_GetAttributeSingleRequest) GetParent() CipService {
+	return m._CipService
+}
+
+// NewGetAttributeSingleRequest factory function for _GetAttributeSingleRequest
+func NewGetAttributeSingleRequest(serviceLen uint16) *_GetAttributeSingleRequest {
+	_result := &_GetAttributeSingleRequest{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastGetAttributeSingleRequest(structType interface{}) GetAttributeSingleRequest {
+	if casted, ok := structType.(GetAttributeSingleRequest); ok {
+		return casted
+	}
+	if casted, ok := structType.(*GetAttributeSingleRequest); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_GetAttributeSingleRequest) GetTypeName() string {
+	return "GetAttributeSingleRequest"
+}
+
+func (m *_GetAttributeSingleRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_GetAttributeSingleRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func GetAttributeSingleRequestParse(theBytes []byte, connected bool, serviceLen uint16) (GetAttributeSingleRequest, error) {
+	return GetAttributeSingleRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func GetAttributeSingleRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (GetAttributeSingleRequest, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("GetAttributeSingleRequest"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for GetAttributeSingleRequest")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("GetAttributeSingleRequest"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for GetAttributeSingleRequest")
+	}
+
+	// Create a partially initialized instance
+	_child := &_GetAttributeSingleRequest{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_GetAttributeSingleRequest) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_GetAttributeSingleRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("GetAttributeSingleRequest"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for GetAttributeSingleRequest")
+		}
+
+		if popErr := writeBuffer.PopContext("GetAttributeSingleRequest"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for GetAttributeSingleRequest")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_GetAttributeSingleRequest) isGetAttributeSingleRequest() bool {
+	return true
+}
+
+func (m *_GetAttributeSingleRequest) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/GetAttributeSingleResponse.go b/plc4go/protocols/eip/readwrite/model/GetAttributeSingleResponse.go
new file mode 100644
index 0000000000..5f1823b531
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/GetAttributeSingleResponse.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// GetAttributeSingleResponse is the corresponding interface of GetAttributeSingleResponse
+type GetAttributeSingleResponse interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// GetAttributeSingleResponseExactly can be used when we want exactly this type and not a type which fulfills GetAttributeSingleResponse.
+// This is useful for switch cases.
+type GetAttributeSingleResponseExactly interface {
+	GetAttributeSingleResponse
+	isGetAttributeSingleResponse() bool
+}
+
+// _GetAttributeSingleResponse is the data-structure of this message
+type _GetAttributeSingleResponse struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_GetAttributeSingleResponse) GetService() uint8 {
+	return 0x0E
+}
+
+func (m *_GetAttributeSingleResponse) GetResponse() bool {
+	return bool(true)
+}
+
+func (m *_GetAttributeSingleResponse) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_GetAttributeSingleResponse) InitializeParent(parent CipService) {}
+
+func (m *_GetAttributeSingleResponse) GetParent() CipService {
+	return m._CipService
+}
+
+// NewGetAttributeSingleResponse factory function for _GetAttributeSingleResponse
+func NewGetAttributeSingleResponse(serviceLen uint16) *_GetAttributeSingleResponse {
+	_result := &_GetAttributeSingleResponse{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastGetAttributeSingleResponse(structType interface{}) GetAttributeSingleResponse {
+	if casted, ok := structType.(GetAttributeSingleResponse); ok {
+		return casted
+	}
+	if casted, ok := structType.(*GetAttributeSingleResponse); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_GetAttributeSingleResponse) GetTypeName() string {
+	return "GetAttributeSingleResponse"
+}
+
+func (m *_GetAttributeSingleResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_GetAttributeSingleResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func GetAttributeSingleResponseParse(theBytes []byte, connected bool, serviceLen uint16) (GetAttributeSingleResponse, error) {
+	return GetAttributeSingleResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func GetAttributeSingleResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (GetAttributeSingleResponse, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("GetAttributeSingleResponse"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for GetAttributeSingleResponse")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("GetAttributeSingleResponse"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for GetAttributeSingleResponse")
+	}
+
+	// Create a partially initialized instance
+	_child := &_GetAttributeSingleResponse{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_GetAttributeSingleResponse) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_GetAttributeSingleResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("GetAttributeSingleResponse"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for GetAttributeSingleResponse")
+		}
+
+		if popErr := writeBuffer.PopContext("GetAttributeSingleResponse"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for GetAttributeSingleResponse")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_GetAttributeSingleResponse) isGetAttributeSingleResponse() bool {
+	return true
+}
+
+func (m *_GetAttributeSingleResponse) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/SetAttributeAllRequest.go b/plc4go/protocols/eip/readwrite/model/SetAttributeAllRequest.go
new file mode 100644
index 0000000000..6424a1a97e
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/SetAttributeAllRequest.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// SetAttributeAllRequest is the corresponding interface of SetAttributeAllRequest
+type SetAttributeAllRequest interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// SetAttributeAllRequestExactly can be used when we want exactly this type and not a type which fulfills SetAttributeAllRequest.
+// This is useful for switch cases.
+type SetAttributeAllRequestExactly interface {
+	SetAttributeAllRequest
+	isSetAttributeAllRequest() bool
+}
+
+// _SetAttributeAllRequest is the data-structure of this message
+type _SetAttributeAllRequest struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_SetAttributeAllRequest) GetService() uint8 {
+	return 0x02
+}
+
+func (m *_SetAttributeAllRequest) GetResponse() bool {
+	return bool(false)
+}
+
+func (m *_SetAttributeAllRequest) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_SetAttributeAllRequest) InitializeParent(parent CipService) {}
+
+func (m *_SetAttributeAllRequest) GetParent() CipService {
+	return m._CipService
+}
+
+// NewSetAttributeAllRequest factory function for _SetAttributeAllRequest
+func NewSetAttributeAllRequest(serviceLen uint16) *_SetAttributeAllRequest {
+	_result := &_SetAttributeAllRequest{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastSetAttributeAllRequest(structType interface{}) SetAttributeAllRequest {
+	if casted, ok := structType.(SetAttributeAllRequest); ok {
+		return casted
+	}
+	if casted, ok := structType.(*SetAttributeAllRequest); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_SetAttributeAllRequest) GetTypeName() string {
+	return "SetAttributeAllRequest"
+}
+
+func (m *_SetAttributeAllRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_SetAttributeAllRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func SetAttributeAllRequestParse(theBytes []byte, connected bool, serviceLen uint16) (SetAttributeAllRequest, error) {
+	return SetAttributeAllRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func SetAttributeAllRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (SetAttributeAllRequest, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("SetAttributeAllRequest"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for SetAttributeAllRequest")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("SetAttributeAllRequest"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for SetAttributeAllRequest")
+	}
+
+	// Create a partially initialized instance
+	_child := &_SetAttributeAllRequest{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_SetAttributeAllRequest) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_SetAttributeAllRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("SetAttributeAllRequest"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for SetAttributeAllRequest")
+		}
+
+		if popErr := writeBuffer.PopContext("SetAttributeAllRequest"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for SetAttributeAllRequest")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_SetAttributeAllRequest) isSetAttributeAllRequest() bool {
+	return true
+}
+
+func (m *_SetAttributeAllRequest) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/SetAttributeAllResponse.go b/plc4go/protocols/eip/readwrite/model/SetAttributeAllResponse.go
new file mode 100644
index 0000000000..cf89f3c9d9
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/SetAttributeAllResponse.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// SetAttributeAllResponse is the corresponding interface of SetAttributeAllResponse
+type SetAttributeAllResponse interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// SetAttributeAllResponseExactly can be used when we want exactly this type and not a type which fulfills SetAttributeAllResponse.
+// This is useful for switch cases.
+type SetAttributeAllResponseExactly interface {
+	SetAttributeAllResponse
+	isSetAttributeAllResponse() bool
+}
+
+// _SetAttributeAllResponse is the data-structure of this message
+type _SetAttributeAllResponse struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_SetAttributeAllResponse) GetService() uint8 {
+	return 0x02
+}
+
+func (m *_SetAttributeAllResponse) GetResponse() bool {
+	return bool(true)
+}
+
+func (m *_SetAttributeAllResponse) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_SetAttributeAllResponse) InitializeParent(parent CipService) {}
+
+func (m *_SetAttributeAllResponse) GetParent() CipService {
+	return m._CipService
+}
+
+// NewSetAttributeAllResponse factory function for _SetAttributeAllResponse
+func NewSetAttributeAllResponse(serviceLen uint16) *_SetAttributeAllResponse {
+	_result := &_SetAttributeAllResponse{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastSetAttributeAllResponse(structType interface{}) SetAttributeAllResponse {
+	if casted, ok := structType.(SetAttributeAllResponse); ok {
+		return casted
+	}
+	if casted, ok := structType.(*SetAttributeAllResponse); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_SetAttributeAllResponse) GetTypeName() string {
+	return "SetAttributeAllResponse"
+}
+
+func (m *_SetAttributeAllResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_SetAttributeAllResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func SetAttributeAllResponseParse(theBytes []byte, connected bool, serviceLen uint16) (SetAttributeAllResponse, error) {
+	return SetAttributeAllResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func SetAttributeAllResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (SetAttributeAllResponse, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("SetAttributeAllResponse"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for SetAttributeAllResponse")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("SetAttributeAllResponse"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for SetAttributeAllResponse")
+	}
+
+	// Create a partially initialized instance
+	_child := &_SetAttributeAllResponse{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_SetAttributeAllResponse) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_SetAttributeAllResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("SetAttributeAllResponse"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for SetAttributeAllResponse")
+		}
+
+		if popErr := writeBuffer.PopContext("SetAttributeAllResponse"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for SetAttributeAllResponse")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_SetAttributeAllResponse) isSetAttributeAllResponse() bool {
+	return true
+}
+
+func (m *_SetAttributeAllResponse) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/SetAttributeListRequest.go b/plc4go/protocols/eip/readwrite/model/SetAttributeListRequest.go
new file mode 100644
index 0000000000..0ebddae3fd
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/SetAttributeListRequest.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// SetAttributeListRequest is the corresponding interface of SetAttributeListRequest
+type SetAttributeListRequest interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// SetAttributeListRequestExactly can be used when we want exactly this type and not a type which fulfills SetAttributeListRequest.
+// This is useful for switch cases.
+type SetAttributeListRequestExactly interface {
+	SetAttributeListRequest
+	isSetAttributeListRequest() bool
+}
+
+// _SetAttributeListRequest is the data-structure of this message
+type _SetAttributeListRequest struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_SetAttributeListRequest) GetService() uint8 {
+	return 0x04
+}
+
+func (m *_SetAttributeListRequest) GetResponse() bool {
+	return bool(false)
+}
+
+func (m *_SetAttributeListRequest) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_SetAttributeListRequest) InitializeParent(parent CipService) {}
+
+func (m *_SetAttributeListRequest) GetParent() CipService {
+	return m._CipService
+}
+
+// NewSetAttributeListRequest factory function for _SetAttributeListRequest
+func NewSetAttributeListRequest(serviceLen uint16) *_SetAttributeListRequest {
+	_result := &_SetAttributeListRequest{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastSetAttributeListRequest(structType interface{}) SetAttributeListRequest {
+	if casted, ok := structType.(SetAttributeListRequest); ok {
+		return casted
+	}
+	if casted, ok := structType.(*SetAttributeListRequest); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_SetAttributeListRequest) GetTypeName() string {
+	return "SetAttributeListRequest"
+}
+
+func (m *_SetAttributeListRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_SetAttributeListRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func SetAttributeListRequestParse(theBytes []byte, connected bool, serviceLen uint16) (SetAttributeListRequest, error) {
+	return SetAttributeListRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func SetAttributeListRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (SetAttributeListRequest, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("SetAttributeListRequest"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for SetAttributeListRequest")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("SetAttributeListRequest"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for SetAttributeListRequest")
+	}
+
+	// Create a partially initialized instance
+	_child := &_SetAttributeListRequest{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_SetAttributeListRequest) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_SetAttributeListRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("SetAttributeListRequest"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for SetAttributeListRequest")
+		}
+
+		if popErr := writeBuffer.PopContext("SetAttributeListRequest"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for SetAttributeListRequest")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_SetAttributeListRequest) isSetAttributeListRequest() bool {
+	return true
+}
+
+func (m *_SetAttributeListRequest) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/SetAttributeListResponse.go b/plc4go/protocols/eip/readwrite/model/SetAttributeListResponse.go
new file mode 100644
index 0000000000..95abbd2036
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/SetAttributeListResponse.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// SetAttributeListResponse is the corresponding interface of SetAttributeListResponse
+type SetAttributeListResponse interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// SetAttributeListResponseExactly can be used when we want exactly this type and not a type which fulfills SetAttributeListResponse.
+// This is useful for switch cases.
+type SetAttributeListResponseExactly interface {
+	SetAttributeListResponse
+	isSetAttributeListResponse() bool
+}
+
+// _SetAttributeListResponse is the data-structure of this message
+type _SetAttributeListResponse struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_SetAttributeListResponse) GetService() uint8 {
+	return 0x04
+}
+
+func (m *_SetAttributeListResponse) GetResponse() bool {
+	return bool(true)
+}
+
+func (m *_SetAttributeListResponse) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_SetAttributeListResponse) InitializeParent(parent CipService) {}
+
+func (m *_SetAttributeListResponse) GetParent() CipService {
+	return m._CipService
+}
+
+// NewSetAttributeListResponse factory function for _SetAttributeListResponse
+func NewSetAttributeListResponse(serviceLen uint16) *_SetAttributeListResponse {
+	_result := &_SetAttributeListResponse{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastSetAttributeListResponse(structType interface{}) SetAttributeListResponse {
+	if casted, ok := structType.(SetAttributeListResponse); ok {
+		return casted
+	}
+	if casted, ok := structType.(*SetAttributeListResponse); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_SetAttributeListResponse) GetTypeName() string {
+	return "SetAttributeListResponse"
+}
+
+func (m *_SetAttributeListResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_SetAttributeListResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func SetAttributeListResponseParse(theBytes []byte, connected bool, serviceLen uint16) (SetAttributeListResponse, error) {
+	return SetAttributeListResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func SetAttributeListResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (SetAttributeListResponse, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("SetAttributeListResponse"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for SetAttributeListResponse")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("SetAttributeListResponse"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for SetAttributeListResponse")
+	}
+
+	// Create a partially initialized instance
+	_child := &_SetAttributeListResponse{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_SetAttributeListResponse) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_SetAttributeListResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("SetAttributeListResponse"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for SetAttributeListResponse")
+		}
+
+		if popErr := writeBuffer.PopContext("SetAttributeListResponse"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for SetAttributeListResponse")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_SetAttributeListResponse) isSetAttributeListResponse() bool {
+	return true
+}
+
+func (m *_SetAttributeListResponse) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/SetAttributeSingleRequest.go b/plc4go/protocols/eip/readwrite/model/SetAttributeSingleRequest.go
new file mode 100644
index 0000000000..4f67f1ddfd
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/SetAttributeSingleRequest.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// SetAttributeSingleRequest is the corresponding interface of SetAttributeSingleRequest
+type SetAttributeSingleRequest interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// SetAttributeSingleRequestExactly can be used when we want exactly this type and not a type which fulfills SetAttributeSingleRequest.
+// This is useful for switch cases.
+type SetAttributeSingleRequestExactly interface {
+	SetAttributeSingleRequest
+	isSetAttributeSingleRequest() bool
+}
+
+// _SetAttributeSingleRequest is the data-structure of this message
+type _SetAttributeSingleRequest struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_SetAttributeSingleRequest) GetService() uint8 {
+	return 0x10
+}
+
+func (m *_SetAttributeSingleRequest) GetResponse() bool {
+	return bool(false)
+}
+
+func (m *_SetAttributeSingleRequest) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_SetAttributeSingleRequest) InitializeParent(parent CipService) {}
+
+func (m *_SetAttributeSingleRequest) GetParent() CipService {
+	return m._CipService
+}
+
+// NewSetAttributeSingleRequest factory function for _SetAttributeSingleRequest
+func NewSetAttributeSingleRequest(serviceLen uint16) *_SetAttributeSingleRequest {
+	_result := &_SetAttributeSingleRequest{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastSetAttributeSingleRequest(structType interface{}) SetAttributeSingleRequest {
+	if casted, ok := structType.(SetAttributeSingleRequest); ok {
+		return casted
+	}
+	if casted, ok := structType.(*SetAttributeSingleRequest); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_SetAttributeSingleRequest) GetTypeName() string {
+	return "SetAttributeSingleRequest"
+}
+
+func (m *_SetAttributeSingleRequest) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_SetAttributeSingleRequest) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func SetAttributeSingleRequestParse(theBytes []byte, connected bool, serviceLen uint16) (SetAttributeSingleRequest, error) {
+	return SetAttributeSingleRequestParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func SetAttributeSingleRequestParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (SetAttributeSingleRequest, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("SetAttributeSingleRequest"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for SetAttributeSingleRequest")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("SetAttributeSingleRequest"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for SetAttributeSingleRequest")
+	}
+
+	// Create a partially initialized instance
+	_child := &_SetAttributeSingleRequest{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_SetAttributeSingleRequest) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_SetAttributeSingleRequest) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("SetAttributeSingleRequest"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for SetAttributeSingleRequest")
+		}
+
+		if popErr := writeBuffer.PopContext("SetAttributeSingleRequest"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for SetAttributeSingleRequest")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_SetAttributeSingleRequest) isSetAttributeSingleRequest() bool {
+	return true
+}
+
+func (m *_SetAttributeSingleRequest) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/SetAttributeSingleResponse.go b/plc4go/protocols/eip/readwrite/model/SetAttributeSingleResponse.go
new file mode 100644
index 0000000000..335c5f239c
--- /dev/null
+++ b/plc4go/protocols/eip/readwrite/model/SetAttributeSingleResponse.go
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package model
+
+import (
+	"context"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+	"github.com/pkg/errors"
+)
+
+// Code generated by code-generation. DO NOT EDIT.
+
+// SetAttributeSingleResponse is the corresponding interface of SetAttributeSingleResponse
+type SetAttributeSingleResponse interface {
+	utils.LengthAware
+	utils.Serializable
+	CipService
+}
+
+// SetAttributeSingleResponseExactly can be used when we want exactly this type and not a type which fulfills SetAttributeSingleResponse.
+// This is useful for switch cases.
+type SetAttributeSingleResponseExactly interface {
+	SetAttributeSingleResponse
+	isSetAttributeSingleResponse() bool
+}
+
+// _SetAttributeSingleResponse is the data-structure of this message
+type _SetAttributeSingleResponse struct {
+	*_CipService
+}
+
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+/////////////////////// Accessors for discriminator values.
+///////////////////////
+
+func (m *_SetAttributeSingleResponse) GetService() uint8 {
+	return 0x10
+}
+
+func (m *_SetAttributeSingleResponse) GetResponse() bool {
+	return bool(true)
+}
+
+func (m *_SetAttributeSingleResponse) GetConnected() bool {
+	return false
+}
+
+///////////////////////
+///////////////////////
+///////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////
+
+func (m *_SetAttributeSingleResponse) InitializeParent(parent CipService) {}
+
+func (m *_SetAttributeSingleResponse) GetParent() CipService {
+	return m._CipService
+}
+
+// NewSetAttributeSingleResponse factory function for _SetAttributeSingleResponse
+func NewSetAttributeSingleResponse(serviceLen uint16) *_SetAttributeSingleResponse {
+	_result := &_SetAttributeSingleResponse{
+		_CipService: NewCipService(serviceLen),
+	}
+	_result._CipService._CipServiceChildRequirements = _result
+	return _result
+}
+
+// Deprecated: use the interface for direct cast
+func CastSetAttributeSingleResponse(structType interface{}) SetAttributeSingleResponse {
+	if casted, ok := structType.(SetAttributeSingleResponse); ok {
+		return casted
+	}
+	if casted, ok := structType.(*SetAttributeSingleResponse); ok {
+		return *casted
+	}
+	return nil
+}
+
+func (m *_SetAttributeSingleResponse) GetTypeName() string {
+	return "SetAttributeSingleResponse"
+}
+
+func (m *_SetAttributeSingleResponse) GetLengthInBits(ctx context.Context) uint16 {
+	lengthInBits := uint16(m.GetParentLengthInBits(ctx))
+
+	return lengthInBits
+}
+
+func (m *_SetAttributeSingleResponse) GetLengthInBytes(ctx context.Context) uint16 {
+	return m.GetLengthInBits(ctx) / 8
+}
+
+func SetAttributeSingleResponseParse(theBytes []byte, connected bool, serviceLen uint16) (SetAttributeSingleResponse, error) {
+	return SetAttributeSingleResponseParseWithBuffer(context.Background(), utils.NewReadBufferByteBased(theBytes), connected, serviceLen)
+}
+
+func SetAttributeSingleResponseParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, connected bool, serviceLen uint16) (SetAttributeSingleResponse, error) {
+	positionAware := readBuffer
+	_ = positionAware
+	if pullErr := readBuffer.PullContext("SetAttributeSingleResponse"); pullErr != nil {
+		return nil, errors.Wrap(pullErr, "Error pulling for SetAttributeSingleResponse")
+	}
+	currentPos := positionAware.GetPos()
+	_ = currentPos
+
+	if closeErr := readBuffer.CloseContext("SetAttributeSingleResponse"); closeErr != nil {
+		return nil, errors.Wrap(closeErr, "Error closing for SetAttributeSingleResponse")
+	}
+
+	// Create a partially initialized instance
+	_child := &_SetAttributeSingleResponse{
+		_CipService: &_CipService{
+			ServiceLen: serviceLen,
+		},
+	}
+	_child._CipService._CipServiceChildRequirements = _child
+	return _child, nil
+}
+
+func (m *_SetAttributeSingleResponse) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithInitialSizeForByteBasedBuffer(int(m.GetLengthInBytes(context.Background()))))
+	if err := m.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (m *_SetAttributeSingleResponse) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	positionAware := writeBuffer
+	_ = positionAware
+	ser := func() error {
+		if pushErr := writeBuffer.PushContext("SetAttributeSingleResponse"); pushErr != nil {
+			return errors.Wrap(pushErr, "Error pushing for SetAttributeSingleResponse")
+		}
+
+		if popErr := writeBuffer.PopContext("SetAttributeSingleResponse"); popErr != nil {
+			return errors.Wrap(popErr, "Error popping for SetAttributeSingleResponse")
+		}
+		return nil
+	}
+	return m.SerializeParent(ctx, writeBuffer, m, ser)
+}
+
+func (m *_SetAttributeSingleResponse) isSetAttributeSingleResponse() bool {
+	return true
+}
+
+func (m *_SetAttributeSingleResponse) String() string {
+	if m == nil {
+		return "<nil>"
+	}
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), m); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/protocols/eip/readwrite/model/StaticHelper.go b/plc4go/protocols/eip/readwrite/model/StaticHelper.go
index 4b2971d910..2cc506a64a 100644
--- a/plc4go/protocols/eip/readwrite/model/StaticHelper.go
+++ b/plc4go/protocols/eip/readwrite/model/StaticHelper.go
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 package model
 
 import (
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxDatapoint.go b/plc4go/protocols/knxnetip/readwrite/model/KnxDatapoint.go
index 5987c98400..a09bc93b74 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxDatapoint.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxDatapoint.go
@@ -1840,6 +1840,19 @@ func KnxDatapointParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe
 			return nil, errors.Wrap(_err, "Error parsing reserved field")
 		}
 
+		// Simple Field (value)
+		value, _valueErr := readBuffer.ReadFloat32("value", 16)
+		if _valueErr != nil {
+			return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
+		}
+		readBuffer.CloseContext("KnxDatapoint")
+		return values.NewPlcREAL(value), nil
+	case datapointType == KnxDatapointType_DPT_Coefficient: // REAL
+		// Reserved Field (Just skip the bytes)
+		if _, _err := readBuffer.ReadUint8("reserved", 8); _err != nil {
+			return nil, errors.Wrap(_err, "Error parsing reserved field")
+		}
+
 		// Simple Field (value)
 		value, _valueErr := readBuffer.ReadFloat32("value", 16)
 		if _valueErr != nil {
@@ -8933,6 +8946,16 @@ func KnxDatapointSerializeWithWriteBuffer(ctx context.Context, writeBuffer utils
 			return errors.Wrap(_err, "Error serializing reserved field")
 		}
 
+		// Simple Field (value)
+		if _err := writeBuffer.WriteFloat32("value", 16, value.GetFloat32()); _err != nil {
+			return errors.Wrap(_err, "Error serializing 'value' field")
+		}
+	case datapointType == KnxDatapointType_DPT_Coefficient: // REAL
+		// Reserved Field (Just skip the bytes)
+		if _err := writeBuffer.WriteUint8("reserved", 8, uint8(0x00)); _err != nil {
+			return errors.Wrap(_err, "Error serializing reserved field")
+		}
+
 		// Simple Field (value)
 		if _err := writeBuffer.WriteFloat32("value", 16, value.GetFloat32()); _err != nil {
 			return errors.Wrap(_err, "Error serializing 'value' field")
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxDatapointType.go b/plc4go/protocols/knxnetip/readwrite/model/KnxDatapointType.go
index 62eb51f9b8..2026c9cb17 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxDatapointType.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxDatapointType.go
@@ -159,235 +159,236 @@ const (
 	KnxDatapointType_DPT_Value_Wsp_kmh                            KnxDatapointType = 118
 	KnxDatapointType_DPT_Value_Absolute_Humidity                  KnxDatapointType = 119
 	KnxDatapointType_DPT_Concentration_ygm3                       KnxDatapointType = 120
-	KnxDatapointType_DPT_TimeOfDay                                KnxDatapointType = 121
-	KnxDatapointType_DPT_Date                                     KnxDatapointType = 122
-	KnxDatapointType_DPT_Value_4_Ucount                           KnxDatapointType = 123
-	KnxDatapointType_DPT_LongTimePeriod_Sec                       KnxDatapointType = 124
-	KnxDatapointType_DPT_LongTimePeriod_Min                       KnxDatapointType = 125
-	KnxDatapointType_DPT_LongTimePeriod_Hrs                       KnxDatapointType = 126
-	KnxDatapointType_DPT_VolumeLiquid_Litre                       KnxDatapointType = 127
-	KnxDatapointType_DPT_Volume_m_3                               KnxDatapointType = 128
-	KnxDatapointType_DPT_Value_4_Count                            KnxDatapointType = 129
-	KnxDatapointType_DPT_FlowRate_m3h                             KnxDatapointType = 130
-	KnxDatapointType_DPT_ActiveEnergy                             KnxDatapointType = 131
-	KnxDatapointType_DPT_ApparantEnergy                           KnxDatapointType = 132
-	KnxDatapointType_DPT_ReactiveEnergy                           KnxDatapointType = 133
-	KnxDatapointType_DPT_ActiveEnergy_kWh                         KnxDatapointType = 134
-	KnxDatapointType_DPT_ApparantEnergy_kVAh                      KnxDatapointType = 135
-	KnxDatapointType_DPT_ReactiveEnergy_kVARh                     KnxDatapointType = 136
-	KnxDatapointType_DPT_ActiveEnergy_MWh                         KnxDatapointType = 137
-	KnxDatapointType_DPT_LongDeltaTimeSec                         KnxDatapointType = 138
-	KnxDatapointType_DPT_DeltaVolumeLiquid_Litre                  KnxDatapointType = 139
-	KnxDatapointType_DPT_DeltaVolume_m_3                          KnxDatapointType = 140
-	KnxDatapointType_DPT_Value_Acceleration                       KnxDatapointType = 141
-	KnxDatapointType_DPT_Value_Acceleration_Angular               KnxDatapointType = 142
-	KnxDatapointType_DPT_Value_Activation_Energy                  KnxDatapointType = 143
-	KnxDatapointType_DPT_Value_Activity                           KnxDatapointType = 144
-	KnxDatapointType_DPT_Value_Mol                                KnxDatapointType = 145
-	KnxDatapointType_DPT_Value_Amplitude                          KnxDatapointType = 146
-	KnxDatapointType_DPT_Value_AngleRad                           KnxDatapointType = 147
-	KnxDatapointType_DPT_Value_AngleDeg                           KnxDatapointType = 148
-	KnxDatapointType_DPT_Value_Angular_Momentum                   KnxDatapointType = 149
-	KnxDatapointType_DPT_Value_Angular_Velocity                   KnxDatapointType = 150
-	KnxDatapointType_DPT_Value_Area                               KnxDatapointType = 151
-	KnxDatapointType_DPT_Value_Capacitance                        KnxDatapointType = 152
-	KnxDatapointType_DPT_Value_Charge_DensitySurface              KnxDatapointType = 153
-	KnxDatapointType_DPT_Value_Charge_DensityVolume               KnxDatapointType = 154
-	KnxDatapointType_DPT_Value_Compressibility                    KnxDatapointType = 155
-	KnxDatapointType_DPT_Value_Conductance                        KnxDatapointType = 156
-	KnxDatapointType_DPT_Value_Electrical_Conductivity            KnxDatapointType = 157
-	KnxDatapointType_DPT_Value_Density                            KnxDatapointType = 158
-	KnxDatapointType_DPT_Value_Electric_Charge                    KnxDatapointType = 159
-	KnxDatapointType_DPT_Value_Electric_Current                   KnxDatapointType = 160
-	KnxDatapointType_DPT_Value_Electric_CurrentDensity            KnxDatapointType = 161
-	KnxDatapointType_DPT_Value_Electric_DipoleMoment              KnxDatapointType = 162
-	KnxDatapointType_DPT_Value_Electric_Displacement              KnxDatapointType = 163
-	KnxDatapointType_DPT_Value_Electric_FieldStrength             KnxDatapointType = 164
-	KnxDatapointType_DPT_Value_Electric_Flux                      KnxDatapointType = 165
-	KnxDatapointType_DPT_Value_Electric_FluxDensity               KnxDatapointType = 166
-	KnxDatapointType_DPT_Value_Electric_Polarization              KnxDatapointType = 167
-	KnxDatapointType_DPT_Value_Electric_Potential                 KnxDatapointType = 168
-	KnxDatapointType_DPT_Value_Electric_PotentialDifference       KnxDatapointType = 169
-	KnxDatapointType_DPT_Value_ElectromagneticMoment              KnxDatapointType = 170
-	KnxDatapointType_DPT_Value_Electromotive_Force                KnxDatapointType = 171
-	KnxDatapointType_DPT_Value_Energy                             KnxDatapointType = 172
-	KnxDatapointType_DPT_Value_Force                              KnxDatapointType = 173
-	KnxDatapointType_DPT_Value_Frequency                          KnxDatapointType = 174
-	KnxDatapointType_DPT_Value_Angular_Frequency                  KnxDatapointType = 175
-	KnxDatapointType_DPT_Value_Heat_Capacity                      KnxDatapointType = 176
-	KnxDatapointType_DPT_Value_Heat_FlowRate                      KnxDatapointType = 177
-	KnxDatapointType_DPT_Value_Heat_Quantity                      KnxDatapointType = 178
-	KnxDatapointType_DPT_Value_Impedance                          KnxDatapointType = 179
-	KnxDatapointType_DPT_Value_Length                             KnxDatapointType = 180
-	KnxDatapointType_DPT_Value_Light_Quantity                     KnxDatapointType = 181
-	KnxDatapointType_DPT_Value_Luminance                          KnxDatapointType = 182
-	KnxDatapointType_DPT_Value_Luminous_Flux                      KnxDatapointType = 183
-	KnxDatapointType_DPT_Value_Luminous_Intensity                 KnxDatapointType = 184
-	KnxDatapointType_DPT_Value_Magnetic_FieldStrength             KnxDatapointType = 185
-	KnxDatapointType_DPT_Value_Magnetic_Flux                      KnxDatapointType = 186
-	KnxDatapointType_DPT_Value_Magnetic_FluxDensity               KnxDatapointType = 187
-	KnxDatapointType_DPT_Value_Magnetic_Moment                    KnxDatapointType = 188
-	KnxDatapointType_DPT_Value_Magnetic_Polarization              KnxDatapointType = 189
-	KnxDatapointType_DPT_Value_Magnetization                      KnxDatapointType = 190
-	KnxDatapointType_DPT_Value_MagnetomotiveForce                 KnxDatapointType = 191
-	KnxDatapointType_DPT_Value_Mass                               KnxDatapointType = 192
-	KnxDatapointType_DPT_Value_MassFlux                           KnxDatapointType = 193
-	KnxDatapointType_DPT_Value_Momentum                           KnxDatapointType = 194
-	KnxDatapointType_DPT_Value_Phase_AngleRad                     KnxDatapointType = 195
-	KnxDatapointType_DPT_Value_Phase_AngleDeg                     KnxDatapointType = 196
-	KnxDatapointType_DPT_Value_Power                              KnxDatapointType = 197
-	KnxDatapointType_DPT_Value_Power_Factor                       KnxDatapointType = 198
-	KnxDatapointType_DPT_Value_Pressure                           KnxDatapointType = 199
-	KnxDatapointType_DPT_Value_Reactance                          KnxDatapointType = 200
-	KnxDatapointType_DPT_Value_Resistance                         KnxDatapointType = 201
-	KnxDatapointType_DPT_Value_Resistivity                        KnxDatapointType = 202
-	KnxDatapointType_DPT_Value_SelfInductance                     KnxDatapointType = 203
-	KnxDatapointType_DPT_Value_SolidAngle                         KnxDatapointType = 204
-	KnxDatapointType_DPT_Value_Sound_Intensity                    KnxDatapointType = 205
-	KnxDatapointType_DPT_Value_Speed                              KnxDatapointType = 206
-	KnxDatapointType_DPT_Value_Stress                             KnxDatapointType = 207
-	KnxDatapointType_DPT_Value_Surface_Tension                    KnxDatapointType = 208
-	KnxDatapointType_DPT_Value_Common_Temperature                 KnxDatapointType = 209
-	KnxDatapointType_DPT_Value_Absolute_Temperature               KnxDatapointType = 210
-	KnxDatapointType_DPT_Value_TemperatureDifference              KnxDatapointType = 211
-	KnxDatapointType_DPT_Value_Thermal_Capacity                   KnxDatapointType = 212
-	KnxDatapointType_DPT_Value_Thermal_Conductivity               KnxDatapointType = 213
-	KnxDatapointType_DPT_Value_ThermoelectricPower                KnxDatapointType = 214
-	KnxDatapointType_DPT_Value_Time                               KnxDatapointType = 215
-	KnxDatapointType_DPT_Value_Torque                             KnxDatapointType = 216
-	KnxDatapointType_DPT_Value_Volume                             KnxDatapointType = 217
-	KnxDatapointType_DPT_Value_Volume_Flux                        KnxDatapointType = 218
-	KnxDatapointType_DPT_Value_Weight                             KnxDatapointType = 219
-	KnxDatapointType_DPT_Value_Work                               KnxDatapointType = 220
-	KnxDatapointType_DPT_Value_ApparentPower                      KnxDatapointType = 221
-	KnxDatapointType_DPT_Volume_Flux_Meter                        KnxDatapointType = 222
-	KnxDatapointType_DPT_Volume_Flux_ls                           KnxDatapointType = 223
-	KnxDatapointType_DPT_Access_Data                              KnxDatapointType = 224
-	KnxDatapointType_DPT_String_ASCII                             KnxDatapointType = 225
-	KnxDatapointType_DPT_String_8859_1                            KnxDatapointType = 226
-	KnxDatapointType_DPT_SceneNumber                              KnxDatapointType = 227
-	KnxDatapointType_DPT_SceneControl                             KnxDatapointType = 228
-	KnxDatapointType_DPT_DateTime                                 KnxDatapointType = 229
-	KnxDatapointType_DPT_SCLOMode                                 KnxDatapointType = 230
-	KnxDatapointType_DPT_BuildingMode                             KnxDatapointType = 231
-	KnxDatapointType_DPT_OccMode                                  KnxDatapointType = 232
-	KnxDatapointType_DPT_Priority                                 KnxDatapointType = 233
-	KnxDatapointType_DPT_LightApplicationMode                     KnxDatapointType = 234
-	KnxDatapointType_DPT_ApplicationArea                          KnxDatapointType = 235
-	KnxDatapointType_DPT_AlarmClassType                           KnxDatapointType = 236
-	KnxDatapointType_DPT_PSUMode                                  KnxDatapointType = 237
-	KnxDatapointType_DPT_ErrorClass_System                        KnxDatapointType = 238
-	KnxDatapointType_DPT_ErrorClass_HVAC                          KnxDatapointType = 239
-	KnxDatapointType_DPT_Time_Delay                               KnxDatapointType = 240
-	KnxDatapointType_DPT_Beaufort_Wind_Force_Scale                KnxDatapointType = 241
-	KnxDatapointType_DPT_SensorSelect                             KnxDatapointType = 242
-	KnxDatapointType_DPT_ActuatorConnectType                      KnxDatapointType = 243
-	KnxDatapointType_DPT_Cloud_Cover                              KnxDatapointType = 244
-	KnxDatapointType_DPT_PowerReturnMode                          KnxDatapointType = 245
-	KnxDatapointType_DPT_FuelType                                 KnxDatapointType = 246
-	KnxDatapointType_DPT_BurnerType                               KnxDatapointType = 247
-	KnxDatapointType_DPT_HVACMode                                 KnxDatapointType = 248
-	KnxDatapointType_DPT_DHWMode                                  KnxDatapointType = 249
-	KnxDatapointType_DPT_LoadPriority                             KnxDatapointType = 250
-	KnxDatapointType_DPT_HVACContrMode                            KnxDatapointType = 251
-	KnxDatapointType_DPT_HVACEmergMode                            KnxDatapointType = 252
-	KnxDatapointType_DPT_ChangeoverMode                           KnxDatapointType = 253
-	KnxDatapointType_DPT_ValveMode                                KnxDatapointType = 254
-	KnxDatapointType_DPT_DamperMode                               KnxDatapointType = 255
-	KnxDatapointType_DPT_HeaterMode                               KnxDatapointType = 256
-	KnxDatapointType_DPT_FanMode                                  KnxDatapointType = 257
-	KnxDatapointType_DPT_MasterSlaveMode                          KnxDatapointType = 258
-	KnxDatapointType_DPT_StatusRoomSetp                           KnxDatapointType = 259
-	KnxDatapointType_DPT_Metering_DeviceType                      KnxDatapointType = 260
-	KnxDatapointType_DPT_HumDehumMode                             KnxDatapointType = 261
-	KnxDatapointType_DPT_EnableHCStage                            KnxDatapointType = 262
-	KnxDatapointType_DPT_ADAType                                  KnxDatapointType = 263
-	KnxDatapointType_DPT_BackupMode                               KnxDatapointType = 264
-	KnxDatapointType_DPT_StartSynchronization                     KnxDatapointType = 265
-	KnxDatapointType_DPT_Behaviour_Lock_Unlock                    KnxDatapointType = 266
-	KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down              KnxDatapointType = 267
-	KnxDatapointType_DPT_DALI_Fade_Time                           KnxDatapointType = 268
-	KnxDatapointType_DPT_BlinkingMode                             KnxDatapointType = 269
-	KnxDatapointType_DPT_LightControlMode                         KnxDatapointType = 270
-	KnxDatapointType_DPT_SwitchPBModel                            KnxDatapointType = 271
-	KnxDatapointType_DPT_PBAction                                 KnxDatapointType = 272
-	KnxDatapointType_DPT_DimmPBModel                              KnxDatapointType = 273
-	KnxDatapointType_DPT_SwitchOnMode                             KnxDatapointType = 274
-	KnxDatapointType_DPT_LoadTypeSet                              KnxDatapointType = 275
-	KnxDatapointType_DPT_LoadTypeDetected                         KnxDatapointType = 276
-	KnxDatapointType_DPT_Converter_Test_Control                   KnxDatapointType = 277
-	KnxDatapointType_DPT_SABExcept_Behaviour                      KnxDatapointType = 278
-	KnxDatapointType_DPT_SABBehaviour_Lock_Unlock                 KnxDatapointType = 279
-	KnxDatapointType_DPT_SSSBMode                                 KnxDatapointType = 280
-	KnxDatapointType_DPT_BlindsControlMode                        KnxDatapointType = 281
-	KnxDatapointType_DPT_CommMode                                 KnxDatapointType = 282
-	KnxDatapointType_DPT_AddInfoTypes                             KnxDatapointType = 283
-	KnxDatapointType_DPT_RF_ModeSelect                            KnxDatapointType = 284
-	KnxDatapointType_DPT_RF_FilterSelect                          KnxDatapointType = 285
-	KnxDatapointType_DPT_StatusGen                                KnxDatapointType = 286
-	KnxDatapointType_DPT_Device_Control                           KnxDatapointType = 287
-	KnxDatapointType_DPT_ForceSign                                KnxDatapointType = 288
-	KnxDatapointType_DPT_ForceSignCool                            KnxDatapointType = 289
-	KnxDatapointType_DPT_StatusRHC                                KnxDatapointType = 290
-	KnxDatapointType_DPT_StatusSDHWC                              KnxDatapointType = 291
-	KnxDatapointType_DPT_FuelTypeSet                              KnxDatapointType = 292
-	KnxDatapointType_DPT_StatusRCC                                KnxDatapointType = 293
-	KnxDatapointType_DPT_StatusAHU                                KnxDatapointType = 294
-	KnxDatapointType_DPT_CombinedStatus_RTSM                      KnxDatapointType = 295
-	KnxDatapointType_DPT_LightActuatorErrorInfo                   KnxDatapointType = 296
-	KnxDatapointType_DPT_RF_ModeInfo                              KnxDatapointType = 297
-	KnxDatapointType_DPT_RF_FilterInfo                            KnxDatapointType = 298
-	KnxDatapointType_DPT_Channel_Activation_8                     KnxDatapointType = 299
-	KnxDatapointType_DPT_StatusDHWC                               KnxDatapointType = 300
-	KnxDatapointType_DPT_StatusRHCC                               KnxDatapointType = 301
-	KnxDatapointType_DPT_CombinedStatus_HVA                       KnxDatapointType = 302
-	KnxDatapointType_DPT_CombinedStatus_RTC                       KnxDatapointType = 303
-	KnxDatapointType_DPT_Media                                    KnxDatapointType = 304
-	KnxDatapointType_DPT_Channel_Activation_16                    KnxDatapointType = 305
-	KnxDatapointType_DPT_OnOffAction                              KnxDatapointType = 306
-	KnxDatapointType_DPT_Alarm_Reaction                           KnxDatapointType = 307
-	KnxDatapointType_DPT_UpDown_Action                            KnxDatapointType = 308
-	KnxDatapointType_DPT_HVAC_PB_Action                           KnxDatapointType = 309
-	KnxDatapointType_DPT_DoubleNibble                             KnxDatapointType = 310
-	KnxDatapointType_DPT_SceneInfo                                KnxDatapointType = 311
-	KnxDatapointType_DPT_CombinedInfoOnOff                        KnxDatapointType = 312
-	KnxDatapointType_DPT_ActiveEnergy_V64                         KnxDatapointType = 313
-	KnxDatapointType_DPT_ApparantEnergy_V64                       KnxDatapointType = 314
-	KnxDatapointType_DPT_ReactiveEnergy_V64                       KnxDatapointType = 315
-	KnxDatapointType_DPT_Channel_Activation_24                    KnxDatapointType = 316
-	KnxDatapointType_DPT_HVACModeNext                             KnxDatapointType = 317
-	KnxDatapointType_DPT_DHWModeNext                              KnxDatapointType = 318
-	KnxDatapointType_DPT_OccModeNext                              KnxDatapointType = 319
-	KnxDatapointType_DPT_BuildingModeNext                         KnxDatapointType = 320
-	KnxDatapointType_DPT_StatusLightingActuator                   KnxDatapointType = 321
-	KnxDatapointType_DPT_Version                                  KnxDatapointType = 322
-	KnxDatapointType_DPT_AlarmInfo                                KnxDatapointType = 323
-	KnxDatapointType_DPT_TempRoomSetpSetF16_3                     KnxDatapointType = 324
-	KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3                KnxDatapointType = 325
-	KnxDatapointType_DPT_Scaling_Speed                            KnxDatapointType = 326
-	KnxDatapointType_DPT_Scaling_Step_Time                        KnxDatapointType = 327
-	KnxDatapointType_DPT_MeteringValue                            KnxDatapointType = 328
-	KnxDatapointType_DPT_MBus_Address                             KnxDatapointType = 329
-	KnxDatapointType_DPT_Colour_RGB                               KnxDatapointType = 330
-	KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII                 KnxDatapointType = 331
-	KnxDatapointType_DPT_Tariff_ActiveEnergy                      KnxDatapointType = 332
-	KnxDatapointType_DPT_Prioritised_Mode_Control                 KnxDatapointType = 333
-	KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic             KnxDatapointType = 334
-	KnxDatapointType_DPT_DALI_Diagnostics                         KnxDatapointType = 335
-	KnxDatapointType_DPT_CombinedPosition                         KnxDatapointType = 336
-	KnxDatapointType_DPT_StatusSAB                                KnxDatapointType = 337
-	KnxDatapointType_DPT_Colour_xyY                               KnxDatapointType = 338
-	KnxDatapointType_DPT_Converter_Status                         KnxDatapointType = 339
-	KnxDatapointType_DPT_Converter_Test_Result                    KnxDatapointType = 340
-	KnxDatapointType_DPT_Battery_Info                             KnxDatapointType = 341
-	KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition KnxDatapointType = 342
-	KnxDatapointType_DPT_Brightness_Colour_Temperature_Control    KnxDatapointType = 343
-	KnxDatapointType_DPT_Colour_RGBW                              KnxDatapointType = 344
-	KnxDatapointType_DPT_Relative_Control_RGBW                    KnxDatapointType = 345
-	KnxDatapointType_DPT_Relative_Control_RGB                     KnxDatapointType = 346
-	KnxDatapointType_DPT_GeographicalLocation                     KnxDatapointType = 347
-	KnxDatapointType_DPT_TempRoomSetpSetF16_4                     KnxDatapointType = 348
-	KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4                KnxDatapointType = 349
+	KnxDatapointType_DPT_Coefficient                              KnxDatapointType = 121
+	KnxDatapointType_DPT_TimeOfDay                                KnxDatapointType = 122
+	KnxDatapointType_DPT_Date                                     KnxDatapointType = 123
+	KnxDatapointType_DPT_Value_4_Ucount                           KnxDatapointType = 124
+	KnxDatapointType_DPT_LongTimePeriod_Sec                       KnxDatapointType = 125
+	KnxDatapointType_DPT_LongTimePeriod_Min                       KnxDatapointType = 126
+	KnxDatapointType_DPT_LongTimePeriod_Hrs                       KnxDatapointType = 127
+	KnxDatapointType_DPT_VolumeLiquid_Litre                       KnxDatapointType = 128
+	KnxDatapointType_DPT_Volume_m_3                               KnxDatapointType = 129
+	KnxDatapointType_DPT_Value_4_Count                            KnxDatapointType = 130
+	KnxDatapointType_DPT_FlowRate_m3h                             KnxDatapointType = 131
+	KnxDatapointType_DPT_ActiveEnergy                             KnxDatapointType = 132
+	KnxDatapointType_DPT_ApparantEnergy                           KnxDatapointType = 133
+	KnxDatapointType_DPT_ReactiveEnergy                           KnxDatapointType = 134
+	KnxDatapointType_DPT_ActiveEnergy_kWh                         KnxDatapointType = 135
+	KnxDatapointType_DPT_ApparantEnergy_kVAh                      KnxDatapointType = 136
+	KnxDatapointType_DPT_ReactiveEnergy_kVARh                     KnxDatapointType = 137
+	KnxDatapointType_DPT_ActiveEnergy_MWh                         KnxDatapointType = 138
+	KnxDatapointType_DPT_LongDeltaTimeSec                         KnxDatapointType = 139
+	KnxDatapointType_DPT_DeltaVolumeLiquid_Litre                  KnxDatapointType = 140
+	KnxDatapointType_DPT_DeltaVolume_m_3                          KnxDatapointType = 141
+	KnxDatapointType_DPT_Value_Acceleration                       KnxDatapointType = 142
+	KnxDatapointType_DPT_Value_Acceleration_Angular               KnxDatapointType = 143
+	KnxDatapointType_DPT_Value_Activation_Energy                  KnxDatapointType = 144
+	KnxDatapointType_DPT_Value_Activity                           KnxDatapointType = 145
+	KnxDatapointType_DPT_Value_Mol                                KnxDatapointType = 146
+	KnxDatapointType_DPT_Value_Amplitude                          KnxDatapointType = 147
+	KnxDatapointType_DPT_Value_AngleRad                           KnxDatapointType = 148
+	KnxDatapointType_DPT_Value_AngleDeg                           KnxDatapointType = 149
+	KnxDatapointType_DPT_Value_Angular_Momentum                   KnxDatapointType = 150
+	KnxDatapointType_DPT_Value_Angular_Velocity                   KnxDatapointType = 151
+	KnxDatapointType_DPT_Value_Area                               KnxDatapointType = 152
+	KnxDatapointType_DPT_Value_Capacitance                        KnxDatapointType = 153
+	KnxDatapointType_DPT_Value_Charge_DensitySurface              KnxDatapointType = 154
+	KnxDatapointType_DPT_Value_Charge_DensityVolume               KnxDatapointType = 155
+	KnxDatapointType_DPT_Value_Compressibility                    KnxDatapointType = 156
+	KnxDatapointType_DPT_Value_Conductance                        KnxDatapointType = 157
+	KnxDatapointType_DPT_Value_Electrical_Conductivity            KnxDatapointType = 158
+	KnxDatapointType_DPT_Value_Density                            KnxDatapointType = 159
+	KnxDatapointType_DPT_Value_Electric_Charge                    KnxDatapointType = 160
+	KnxDatapointType_DPT_Value_Electric_Current                   KnxDatapointType = 161
+	KnxDatapointType_DPT_Value_Electric_CurrentDensity            KnxDatapointType = 162
+	KnxDatapointType_DPT_Value_Electric_DipoleMoment              KnxDatapointType = 163
+	KnxDatapointType_DPT_Value_Electric_Displacement              KnxDatapointType = 164
+	KnxDatapointType_DPT_Value_Electric_FieldStrength             KnxDatapointType = 165
+	KnxDatapointType_DPT_Value_Electric_Flux                      KnxDatapointType = 166
+	KnxDatapointType_DPT_Value_Electric_FluxDensity               KnxDatapointType = 167
+	KnxDatapointType_DPT_Value_Electric_Polarization              KnxDatapointType = 168
+	KnxDatapointType_DPT_Value_Electric_Potential                 KnxDatapointType = 169
+	KnxDatapointType_DPT_Value_Electric_PotentialDifference       KnxDatapointType = 170
+	KnxDatapointType_DPT_Value_ElectromagneticMoment              KnxDatapointType = 171
+	KnxDatapointType_DPT_Value_Electromotive_Force                KnxDatapointType = 172
+	KnxDatapointType_DPT_Value_Energy                             KnxDatapointType = 173
+	KnxDatapointType_DPT_Value_Force                              KnxDatapointType = 174
+	KnxDatapointType_DPT_Value_Frequency                          KnxDatapointType = 175
+	KnxDatapointType_DPT_Value_Angular_Frequency                  KnxDatapointType = 176
+	KnxDatapointType_DPT_Value_Heat_Capacity                      KnxDatapointType = 177
+	KnxDatapointType_DPT_Value_Heat_FlowRate                      KnxDatapointType = 178
+	KnxDatapointType_DPT_Value_Heat_Quantity                      KnxDatapointType = 179
+	KnxDatapointType_DPT_Value_Impedance                          KnxDatapointType = 180
+	KnxDatapointType_DPT_Value_Length                             KnxDatapointType = 181
+	KnxDatapointType_DPT_Value_Light_Quantity                     KnxDatapointType = 182
+	KnxDatapointType_DPT_Value_Luminance                          KnxDatapointType = 183
+	KnxDatapointType_DPT_Value_Luminous_Flux                      KnxDatapointType = 184
+	KnxDatapointType_DPT_Value_Luminous_Intensity                 KnxDatapointType = 185
+	KnxDatapointType_DPT_Value_Magnetic_FieldStrength             KnxDatapointType = 186
+	KnxDatapointType_DPT_Value_Magnetic_Flux                      KnxDatapointType = 187
+	KnxDatapointType_DPT_Value_Magnetic_FluxDensity               KnxDatapointType = 188
+	KnxDatapointType_DPT_Value_Magnetic_Moment                    KnxDatapointType = 189
+	KnxDatapointType_DPT_Value_Magnetic_Polarization              KnxDatapointType = 190
+	KnxDatapointType_DPT_Value_Magnetization                      KnxDatapointType = 191
+	KnxDatapointType_DPT_Value_MagnetomotiveForce                 KnxDatapointType = 192
+	KnxDatapointType_DPT_Value_Mass                               KnxDatapointType = 193
+	KnxDatapointType_DPT_Value_MassFlux                           KnxDatapointType = 194
+	KnxDatapointType_DPT_Value_Momentum                           KnxDatapointType = 195
+	KnxDatapointType_DPT_Value_Phase_AngleRad                     KnxDatapointType = 196
+	KnxDatapointType_DPT_Value_Phase_AngleDeg                     KnxDatapointType = 197
+	KnxDatapointType_DPT_Value_Power                              KnxDatapointType = 198
+	KnxDatapointType_DPT_Value_Power_Factor                       KnxDatapointType = 199
+	KnxDatapointType_DPT_Value_Pressure                           KnxDatapointType = 200
+	KnxDatapointType_DPT_Value_Reactance                          KnxDatapointType = 201
+	KnxDatapointType_DPT_Value_Resistance                         KnxDatapointType = 202
+	KnxDatapointType_DPT_Value_Resistivity                        KnxDatapointType = 203
+	KnxDatapointType_DPT_Value_SelfInductance                     KnxDatapointType = 204
+	KnxDatapointType_DPT_Value_SolidAngle                         KnxDatapointType = 205
+	KnxDatapointType_DPT_Value_Sound_Intensity                    KnxDatapointType = 206
+	KnxDatapointType_DPT_Value_Speed                              KnxDatapointType = 207
+	KnxDatapointType_DPT_Value_Stress                             KnxDatapointType = 208
+	KnxDatapointType_DPT_Value_Surface_Tension                    KnxDatapointType = 209
+	KnxDatapointType_DPT_Value_Common_Temperature                 KnxDatapointType = 210
+	KnxDatapointType_DPT_Value_Absolute_Temperature               KnxDatapointType = 211
+	KnxDatapointType_DPT_Value_TemperatureDifference              KnxDatapointType = 212
+	KnxDatapointType_DPT_Value_Thermal_Capacity                   KnxDatapointType = 213
+	KnxDatapointType_DPT_Value_Thermal_Conductivity               KnxDatapointType = 214
+	KnxDatapointType_DPT_Value_ThermoelectricPower                KnxDatapointType = 215
+	KnxDatapointType_DPT_Value_Time                               KnxDatapointType = 216
+	KnxDatapointType_DPT_Value_Torque                             KnxDatapointType = 217
+	KnxDatapointType_DPT_Value_Volume                             KnxDatapointType = 218
+	KnxDatapointType_DPT_Value_Volume_Flux                        KnxDatapointType = 219
+	KnxDatapointType_DPT_Value_Weight                             KnxDatapointType = 220
+	KnxDatapointType_DPT_Value_Work                               KnxDatapointType = 221
+	KnxDatapointType_DPT_Value_ApparentPower                      KnxDatapointType = 222
+	KnxDatapointType_DPT_Volume_Flux_Meter                        KnxDatapointType = 223
+	KnxDatapointType_DPT_Volume_Flux_ls                           KnxDatapointType = 224
+	KnxDatapointType_DPT_Access_Data                              KnxDatapointType = 225
+	KnxDatapointType_DPT_String_ASCII                             KnxDatapointType = 226
+	KnxDatapointType_DPT_String_8859_1                            KnxDatapointType = 227
+	KnxDatapointType_DPT_SceneNumber                              KnxDatapointType = 228
+	KnxDatapointType_DPT_SceneControl                             KnxDatapointType = 229
+	KnxDatapointType_DPT_DateTime                                 KnxDatapointType = 230
+	KnxDatapointType_DPT_SCLOMode                                 KnxDatapointType = 231
+	KnxDatapointType_DPT_BuildingMode                             KnxDatapointType = 232
+	KnxDatapointType_DPT_OccMode                                  KnxDatapointType = 233
+	KnxDatapointType_DPT_Priority                                 KnxDatapointType = 234
+	KnxDatapointType_DPT_LightApplicationMode                     KnxDatapointType = 235
+	KnxDatapointType_DPT_ApplicationArea                          KnxDatapointType = 236
+	KnxDatapointType_DPT_AlarmClassType                           KnxDatapointType = 237
+	KnxDatapointType_DPT_PSUMode                                  KnxDatapointType = 238
+	KnxDatapointType_DPT_ErrorClass_System                        KnxDatapointType = 239
+	KnxDatapointType_DPT_ErrorClass_HVAC                          KnxDatapointType = 240
+	KnxDatapointType_DPT_Time_Delay                               KnxDatapointType = 241
+	KnxDatapointType_DPT_Beaufort_Wind_Force_Scale                KnxDatapointType = 242
+	KnxDatapointType_DPT_SensorSelect                             KnxDatapointType = 243
+	KnxDatapointType_DPT_ActuatorConnectType                      KnxDatapointType = 244
+	KnxDatapointType_DPT_Cloud_Cover                              KnxDatapointType = 245
+	KnxDatapointType_DPT_PowerReturnMode                          KnxDatapointType = 246
+	KnxDatapointType_DPT_FuelType                                 KnxDatapointType = 247
+	KnxDatapointType_DPT_BurnerType                               KnxDatapointType = 248
+	KnxDatapointType_DPT_HVACMode                                 KnxDatapointType = 249
+	KnxDatapointType_DPT_DHWMode                                  KnxDatapointType = 250
+	KnxDatapointType_DPT_LoadPriority                             KnxDatapointType = 251
+	KnxDatapointType_DPT_HVACContrMode                            KnxDatapointType = 252
+	KnxDatapointType_DPT_HVACEmergMode                            KnxDatapointType = 253
+	KnxDatapointType_DPT_ChangeoverMode                           KnxDatapointType = 254
+	KnxDatapointType_DPT_ValveMode                                KnxDatapointType = 255
+	KnxDatapointType_DPT_DamperMode                               KnxDatapointType = 256
+	KnxDatapointType_DPT_HeaterMode                               KnxDatapointType = 257
+	KnxDatapointType_DPT_FanMode                                  KnxDatapointType = 258
+	KnxDatapointType_DPT_MasterSlaveMode                          KnxDatapointType = 259
+	KnxDatapointType_DPT_StatusRoomSetp                           KnxDatapointType = 260
+	KnxDatapointType_DPT_Metering_DeviceType                      KnxDatapointType = 261
+	KnxDatapointType_DPT_HumDehumMode                             KnxDatapointType = 262
+	KnxDatapointType_DPT_EnableHCStage                            KnxDatapointType = 263
+	KnxDatapointType_DPT_ADAType                                  KnxDatapointType = 264
+	KnxDatapointType_DPT_BackupMode                               KnxDatapointType = 265
+	KnxDatapointType_DPT_StartSynchronization                     KnxDatapointType = 266
+	KnxDatapointType_DPT_Behaviour_Lock_Unlock                    KnxDatapointType = 267
+	KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down              KnxDatapointType = 268
+	KnxDatapointType_DPT_DALI_Fade_Time                           KnxDatapointType = 269
+	KnxDatapointType_DPT_BlinkingMode                             KnxDatapointType = 270
+	KnxDatapointType_DPT_LightControlMode                         KnxDatapointType = 271
+	KnxDatapointType_DPT_SwitchPBModel                            KnxDatapointType = 272
+	KnxDatapointType_DPT_PBAction                                 KnxDatapointType = 273
+	KnxDatapointType_DPT_DimmPBModel                              KnxDatapointType = 274
+	KnxDatapointType_DPT_SwitchOnMode                             KnxDatapointType = 275
+	KnxDatapointType_DPT_LoadTypeSet                              KnxDatapointType = 276
+	KnxDatapointType_DPT_LoadTypeDetected                         KnxDatapointType = 277
+	KnxDatapointType_DPT_Converter_Test_Control                   KnxDatapointType = 278
+	KnxDatapointType_DPT_SABExcept_Behaviour                      KnxDatapointType = 279
+	KnxDatapointType_DPT_SABBehaviour_Lock_Unlock                 KnxDatapointType = 280
+	KnxDatapointType_DPT_SSSBMode                                 KnxDatapointType = 281
+	KnxDatapointType_DPT_BlindsControlMode                        KnxDatapointType = 282
+	KnxDatapointType_DPT_CommMode                                 KnxDatapointType = 283
+	KnxDatapointType_DPT_AddInfoTypes                             KnxDatapointType = 284
+	KnxDatapointType_DPT_RF_ModeSelect                            KnxDatapointType = 285
+	KnxDatapointType_DPT_RF_FilterSelect                          KnxDatapointType = 286
+	KnxDatapointType_DPT_StatusGen                                KnxDatapointType = 287
+	KnxDatapointType_DPT_Device_Control                           KnxDatapointType = 288
+	KnxDatapointType_DPT_ForceSign                                KnxDatapointType = 289
+	KnxDatapointType_DPT_ForceSignCool                            KnxDatapointType = 290
+	KnxDatapointType_DPT_StatusRHC                                KnxDatapointType = 291
+	KnxDatapointType_DPT_StatusSDHWC                              KnxDatapointType = 292
+	KnxDatapointType_DPT_FuelTypeSet                              KnxDatapointType = 293
+	KnxDatapointType_DPT_StatusRCC                                KnxDatapointType = 294
+	KnxDatapointType_DPT_StatusAHU                                KnxDatapointType = 295
+	KnxDatapointType_DPT_CombinedStatus_RTSM                      KnxDatapointType = 296
+	KnxDatapointType_DPT_LightActuatorErrorInfo                   KnxDatapointType = 297
+	KnxDatapointType_DPT_RF_ModeInfo                              KnxDatapointType = 298
+	KnxDatapointType_DPT_RF_FilterInfo                            KnxDatapointType = 299
+	KnxDatapointType_DPT_Channel_Activation_8                     KnxDatapointType = 300
+	KnxDatapointType_DPT_StatusDHWC                               KnxDatapointType = 301
+	KnxDatapointType_DPT_StatusRHCC                               KnxDatapointType = 302
+	KnxDatapointType_DPT_CombinedStatus_HVA                       KnxDatapointType = 303
+	KnxDatapointType_DPT_CombinedStatus_RTC                       KnxDatapointType = 304
+	KnxDatapointType_DPT_Media                                    KnxDatapointType = 305
+	KnxDatapointType_DPT_Channel_Activation_16                    KnxDatapointType = 306
+	KnxDatapointType_DPT_OnOffAction                              KnxDatapointType = 307
+	KnxDatapointType_DPT_Alarm_Reaction                           KnxDatapointType = 308
+	KnxDatapointType_DPT_UpDown_Action                            KnxDatapointType = 309
+	KnxDatapointType_DPT_HVAC_PB_Action                           KnxDatapointType = 310
+	KnxDatapointType_DPT_DoubleNibble                             KnxDatapointType = 311
+	KnxDatapointType_DPT_SceneInfo                                KnxDatapointType = 312
+	KnxDatapointType_DPT_CombinedInfoOnOff                        KnxDatapointType = 313
+	KnxDatapointType_DPT_ActiveEnergy_V64                         KnxDatapointType = 314
+	KnxDatapointType_DPT_ApparantEnergy_V64                       KnxDatapointType = 315
+	KnxDatapointType_DPT_ReactiveEnergy_V64                       KnxDatapointType = 316
+	KnxDatapointType_DPT_Channel_Activation_24                    KnxDatapointType = 317
+	KnxDatapointType_DPT_HVACModeNext                             KnxDatapointType = 318
+	KnxDatapointType_DPT_DHWModeNext                              KnxDatapointType = 319
+	KnxDatapointType_DPT_OccModeNext                              KnxDatapointType = 320
+	KnxDatapointType_DPT_BuildingModeNext                         KnxDatapointType = 321
+	KnxDatapointType_DPT_StatusLightingActuator                   KnxDatapointType = 322
+	KnxDatapointType_DPT_Version                                  KnxDatapointType = 323
+	KnxDatapointType_DPT_AlarmInfo                                KnxDatapointType = 324
+	KnxDatapointType_DPT_TempRoomSetpSetF16_3                     KnxDatapointType = 325
+	KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3                KnxDatapointType = 326
+	KnxDatapointType_DPT_Scaling_Speed                            KnxDatapointType = 327
+	KnxDatapointType_DPT_Scaling_Step_Time                        KnxDatapointType = 328
+	KnxDatapointType_DPT_MeteringValue                            KnxDatapointType = 329
+	KnxDatapointType_DPT_MBus_Address                             KnxDatapointType = 330
+	KnxDatapointType_DPT_Colour_RGB                               KnxDatapointType = 331
+	KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII                 KnxDatapointType = 332
+	KnxDatapointType_DPT_Tariff_ActiveEnergy                      KnxDatapointType = 333
+	KnxDatapointType_DPT_Prioritised_Mode_Control                 KnxDatapointType = 334
+	KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic             KnxDatapointType = 335
+	KnxDatapointType_DPT_DALI_Diagnostics                         KnxDatapointType = 336
+	KnxDatapointType_DPT_CombinedPosition                         KnxDatapointType = 337
+	KnxDatapointType_DPT_StatusSAB                                KnxDatapointType = 338
+	KnxDatapointType_DPT_Colour_xyY                               KnxDatapointType = 339
+	KnxDatapointType_DPT_Converter_Status                         KnxDatapointType = 340
+	KnxDatapointType_DPT_Converter_Test_Result                    KnxDatapointType = 341
+	KnxDatapointType_DPT_Battery_Info                             KnxDatapointType = 342
+	KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition KnxDatapointType = 343
+	KnxDatapointType_DPT_Brightness_Colour_Temperature_Control    KnxDatapointType = 344
+	KnxDatapointType_DPT_Colour_RGBW                              KnxDatapointType = 345
+	KnxDatapointType_DPT_Relative_Control_RGBW                    KnxDatapointType = 346
+	KnxDatapointType_DPT_Relative_Control_RGB                     KnxDatapointType = 347
+	KnxDatapointType_DPT_GeographicalLocation                     KnxDatapointType = 348
+	KnxDatapointType_DPT_TempRoomSetpSetF16_4                     KnxDatapointType = 349
+	KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4                KnxDatapointType = 350
 )
 
 var KnxDatapointTypeValues []KnxDatapointType
@@ -516,6 +517,7 @@ func init() {
 		KnxDatapointType_DPT_Value_Wsp_kmh,
 		KnxDatapointType_DPT_Value_Absolute_Humidity,
 		KnxDatapointType_DPT_Concentration_ygm3,
+		KnxDatapointType_DPT_Coefficient,
 		KnxDatapointType_DPT_TimeOfDay,
 		KnxDatapointType_DPT_Date,
 		KnxDatapointType_DPT_Value_4_Ucount,
@@ -856,7 +858,7 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 121:
 		{ /* '121' */
-			return 1
+			return 31
 		}
 	case 122:
 		{ /* '122' */
@@ -868,27 +870,27 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 124:
 		{ /* '124' */
-			return 100
+			return 1
 		}
 	case 125:
 		{ /* '125' */
-			return 101
+			return 100
 		}
 	case 126:
 		{ /* '126' */
-			return 102
+			return 101
 		}
 	case 127:
 		{ /* '127' */
-			return 1200
+			return 102
 		}
 	case 128:
 		{ /* '128' */
-			return 1201
+			return 1200
 		}
 	case 129:
 		{ /* '129' */
-			return 1
+			return 1201
 		}
 	case 13:
 		{ /* '13' */
@@ -896,43 +898,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 130:
 		{ /* '130' */
-			return 2
+			return 1
 		}
 	case 131:
 		{ /* '131' */
-			return 10
+			return 2
 		}
 	case 132:
 		{ /* '132' */
-			return 11
+			return 10
 		}
 	case 133:
 		{ /* '133' */
-			return 12
+			return 11
 		}
 	case 134:
 		{ /* '134' */
-			return 13
+			return 12
 		}
 	case 135:
 		{ /* '135' */
-			return 14
+			return 13
 		}
 	case 136:
 		{ /* '136' */
-			return 15
+			return 14
 		}
 	case 137:
 		{ /* '137' */
-			return 16
+			return 15
 		}
 	case 138:
 		{ /* '138' */
-			return 100
+			return 16
 		}
 	case 139:
 		{ /* '139' */
-			return 1200
+			return 100
 		}
 	case 14:
 		{ /* '14' */
@@ -940,43 +942,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 140:
 		{ /* '140' */
-			return 1201
+			return 1200
 		}
 	case 141:
 		{ /* '141' */
-			return 0
+			return 1201
 		}
 	case 142:
 		{ /* '142' */
-			return 1
+			return 0
 		}
 	case 143:
 		{ /* '143' */
-			return 2
+			return 1
 		}
 	case 144:
 		{ /* '144' */
-			return 3
+			return 2
 		}
 	case 145:
 		{ /* '145' */
-			return 4
+			return 3
 		}
 	case 146:
 		{ /* '146' */
-			return 5
+			return 4
 		}
 	case 147:
 		{ /* '147' */
-			return 6
+			return 5
 		}
 	case 148:
 		{ /* '148' */
-			return 7
+			return 6
 		}
 	case 149:
 		{ /* '149' */
-			return 8
+			return 7
 		}
 	case 15:
 		{ /* '15' */
@@ -984,43 +986,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 150:
 		{ /* '150' */
-			return 9
+			return 8
 		}
 	case 151:
 		{ /* '151' */
-			return 10
+			return 9
 		}
 	case 152:
 		{ /* '152' */
-			return 11
+			return 10
 		}
 	case 153:
 		{ /* '153' */
-			return 12
+			return 11
 		}
 	case 154:
 		{ /* '154' */
-			return 13
+			return 12
 		}
 	case 155:
 		{ /* '155' */
-			return 14
+			return 13
 		}
 	case 156:
 		{ /* '156' */
-			return 15
+			return 14
 		}
 	case 157:
 		{ /* '157' */
-			return 16
+			return 15
 		}
 	case 158:
 		{ /* '158' */
-			return 17
+			return 16
 		}
 	case 159:
 		{ /* '159' */
-			return 18
+			return 17
 		}
 	case 16:
 		{ /* '16' */
@@ -1028,43 +1030,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 160:
 		{ /* '160' */
-			return 19
+			return 18
 		}
 	case 161:
 		{ /* '161' */
-			return 20
+			return 19
 		}
 	case 162:
 		{ /* '162' */
-			return 21
+			return 20
 		}
 	case 163:
 		{ /* '163' */
-			return 22
+			return 21
 		}
 	case 164:
 		{ /* '164' */
-			return 23
+			return 22
 		}
 	case 165:
 		{ /* '165' */
-			return 24
+			return 23
 		}
 	case 166:
 		{ /* '166' */
-			return 25
+			return 24
 		}
 	case 167:
 		{ /* '167' */
-			return 26
+			return 25
 		}
 	case 168:
 		{ /* '168' */
-			return 27
+			return 26
 		}
 	case 169:
 		{ /* '169' */
-			return 28
+			return 27
 		}
 	case 17:
 		{ /* '17' */
@@ -1072,43 +1074,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 170:
 		{ /* '170' */
-			return 29
+			return 28
 		}
 	case 171:
 		{ /* '171' */
-			return 30
+			return 29
 		}
 	case 172:
 		{ /* '172' */
-			return 31
+			return 30
 		}
 	case 173:
 		{ /* '173' */
-			return 32
+			return 31
 		}
 	case 174:
 		{ /* '174' */
-			return 33
+			return 32
 		}
 	case 175:
 		{ /* '175' */
-			return 34
+			return 33
 		}
 	case 176:
 		{ /* '176' */
-			return 35
+			return 34
 		}
 	case 177:
 		{ /* '177' */
-			return 36
+			return 35
 		}
 	case 178:
 		{ /* '178' */
-			return 37
+			return 36
 		}
 	case 179:
 		{ /* '179' */
-			return 38
+			return 37
 		}
 	case 18:
 		{ /* '18' */
@@ -1116,43 +1118,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 180:
 		{ /* '180' */
-			return 39
+			return 38
 		}
 	case 181:
 		{ /* '181' */
-			return 40
+			return 39
 		}
 	case 182:
 		{ /* '182' */
-			return 41
+			return 40
 		}
 	case 183:
 		{ /* '183' */
-			return 42
+			return 41
 		}
 	case 184:
 		{ /* '184' */
-			return 43
+			return 42
 		}
 	case 185:
 		{ /* '185' */
-			return 44
+			return 43
 		}
 	case 186:
 		{ /* '186' */
-			return 45
+			return 44
 		}
 	case 187:
 		{ /* '187' */
-			return 46
+			return 45
 		}
 	case 188:
 		{ /* '188' */
-			return 47
+			return 46
 		}
 	case 189:
 		{ /* '189' */
-			return 48
+			return 47
 		}
 	case 19:
 		{ /* '19' */
@@ -1160,43 +1162,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 190:
 		{ /* '190' */
-			return 49
+			return 48
 		}
 	case 191:
 		{ /* '191' */
-			return 50
+			return 49
 		}
 	case 192:
 		{ /* '192' */
-			return 51
+			return 50
 		}
 	case 193:
 		{ /* '193' */
-			return 52
+			return 51
 		}
 	case 194:
 		{ /* '194' */
-			return 53
+			return 52
 		}
 	case 195:
 		{ /* '195' */
-			return 54
+			return 53
 		}
 	case 196:
 		{ /* '196' */
-			return 55
+			return 54
 		}
 	case 197:
 		{ /* '197' */
-			return 56
+			return 55
 		}
 	case 198:
 		{ /* '198' */
-			return 57
+			return 56
 		}
 	case 199:
 		{ /* '199' */
-			return 58
+			return 57
 		}
 	case 2:
 		{ /* '2' */
@@ -1208,43 +1210,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 200:
 		{ /* '200' */
-			return 59
+			return 58
 		}
 	case 201:
 		{ /* '201' */
-			return 60
+			return 59
 		}
 	case 202:
 		{ /* '202' */
-			return 61
+			return 60
 		}
 	case 203:
 		{ /* '203' */
-			return 62
+			return 61
 		}
 	case 204:
 		{ /* '204' */
-			return 63
+			return 62
 		}
 	case 205:
 		{ /* '205' */
-			return 64
+			return 63
 		}
 	case 206:
 		{ /* '206' */
-			return 65
+			return 64
 		}
 	case 207:
 		{ /* '207' */
-			return 66
+			return 65
 		}
 	case 208:
 		{ /* '208' */
-			return 67
+			return 66
 		}
 	case 209:
 		{ /* '209' */
-			return 68
+			return 67
 		}
 	case 21:
 		{ /* '21' */
@@ -1252,43 +1254,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 210:
 		{ /* '210' */
-			return 69
+			return 68
 		}
 	case 211:
 		{ /* '211' */
-			return 70
+			return 69
 		}
 	case 212:
 		{ /* '212' */
-			return 71
+			return 70
 		}
 	case 213:
 		{ /* '213' */
-			return 72
+			return 71
 		}
 	case 214:
 		{ /* '214' */
-			return 73
+			return 72
 		}
 	case 215:
 		{ /* '215' */
-			return 74
+			return 73
 		}
 	case 216:
 		{ /* '216' */
-			return 75
+			return 74
 		}
 	case 217:
 		{ /* '217' */
-			return 76
+			return 75
 		}
 	case 218:
 		{ /* '218' */
-			return 77
+			return 76
 		}
 	case 219:
 		{ /* '219' */
-			return 78
+			return 77
 		}
 	case 22:
 		{ /* '22' */
@@ -1296,23 +1298,23 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 220:
 		{ /* '220' */
-			return 79
+			return 78
 		}
 	case 221:
 		{ /* '221' */
-			return 80
+			return 79
 		}
 	case 222:
 		{ /* '222' */
-			return 1200
+			return 80
 		}
 	case 223:
 		{ /* '223' */
-			return 1201
+			return 1200
 		}
 	case 224:
 		{ /* '224' */
-			return 0
+			return 1201
 		}
 	case 225:
 		{ /* '225' */
@@ -1320,7 +1322,7 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 226:
 		{ /* '226' */
-			return 1
+			return 0
 		}
 	case 227:
 		{ /* '227' */
@@ -1344,39 +1346,39 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 231:
 		{ /* '231' */
-			return 2
+			return 1
 		}
 	case 232:
 		{ /* '232' */
-			return 3
+			return 2
 		}
 	case 233:
 		{ /* '233' */
-			return 4
+			return 3
 		}
 	case 234:
 		{ /* '234' */
-			return 5
+			return 4
 		}
 	case 235:
 		{ /* '235' */
-			return 6
+			return 5
 		}
 	case 236:
 		{ /* '236' */
-			return 7
+			return 6
 		}
 	case 237:
 		{ /* '237' */
-			return 8
+			return 7
 		}
 	case 238:
 		{ /* '238' */
-			return 11
+			return 8
 		}
 	case 239:
 		{ /* '239' */
-			return 12
+			return 11
 		}
 	case 24:
 		{ /* '24' */
@@ -1384,43 +1386,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 240:
 		{ /* '240' */
-			return 13
+			return 12
 		}
 	case 241:
 		{ /* '241' */
-			return 14
+			return 13
 		}
 	case 242:
 		{ /* '242' */
-			return 17
+			return 14
 		}
 	case 243:
 		{ /* '243' */
-			return 20
+			return 17
 		}
 	case 244:
 		{ /* '244' */
-			return 21
+			return 20
 		}
 	case 245:
 		{ /* '245' */
-			return 22
+			return 21
 		}
 	case 246:
 		{ /* '246' */
-			return 100
+			return 22
 		}
 	case 247:
 		{ /* '247' */
-			return 101
+			return 100
 		}
 	case 248:
 		{ /* '248' */
-			return 102
+			return 101
 		}
 	case 249:
 		{ /* '249' */
-			return 103
+			return 102
 		}
 	case 25:
 		{ /* '25' */
@@ -1428,43 +1430,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 250:
 		{ /* '250' */
-			return 104
+			return 103
 		}
 	case 251:
 		{ /* '251' */
-			return 105
+			return 104
 		}
 	case 252:
 		{ /* '252' */
-			return 106
+			return 105
 		}
 	case 253:
 		{ /* '253' */
-			return 107
+			return 106
 		}
 	case 254:
 		{ /* '254' */
-			return 108
+			return 107
 		}
 	case 255:
 		{ /* '255' */
-			return 109
+			return 108
 		}
 	case 256:
 		{ /* '256' */
-			return 110
+			return 109
 		}
 	case 257:
 		{ /* '257' */
-			return 111
+			return 110
 		}
 	case 258:
 		{ /* '258' */
-			return 112
+			return 111
 		}
 	case 259:
 		{ /* '259' */
-			return 113
+			return 112
 		}
 	case 26:
 		{ /* '26' */
@@ -1472,43 +1474,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 260:
 		{ /* '260' */
-			return 114
+			return 113
 		}
 	case 261:
 		{ /* '261' */
-			return 115
+			return 114
 		}
 	case 262:
 		{ /* '262' */
-			return 116
+			return 115
 		}
 	case 263:
 		{ /* '263' */
-			return 120
+			return 116
 		}
 	case 264:
 		{ /* '264' */
-			return 121
+			return 120
 		}
 	case 265:
 		{ /* '265' */
-			return 122
+			return 121
 		}
 	case 266:
 		{ /* '266' */
-			return 600
+			return 122
 		}
 	case 267:
 		{ /* '267' */
-			return 601
+			return 600
 		}
 	case 268:
 		{ /* '268' */
-			return 602
+			return 601
 		}
 	case 269:
 		{ /* '269' */
-			return 603
+			return 602
 		}
 	case 27:
 		{ /* '27' */
@@ -1516,43 +1518,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 270:
 		{ /* '270' */
-			return 604
+			return 603
 		}
 	case 271:
 		{ /* '271' */
-			return 605
+			return 604
 		}
 	case 272:
 		{ /* '272' */
-			return 606
+			return 605
 		}
 	case 273:
 		{ /* '273' */
-			return 607
+			return 606
 		}
 	case 274:
 		{ /* '274' */
-			return 608
+			return 607
 		}
 	case 275:
 		{ /* '275' */
-			return 609
+			return 608
 		}
 	case 276:
 		{ /* '276' */
-			return 610
+			return 609
 		}
 	case 277:
 		{ /* '277' */
-			return 611
+			return 610
 		}
 	case 278:
 		{ /* '278' */
-			return 801
+			return 611
 		}
 	case 279:
 		{ /* '279' */
-			return 802
+			return 801
 		}
 	case 28:
 		{ /* '28' */
@@ -1560,43 +1562,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 280:
 		{ /* '280' */
-			return 803
+			return 802
 		}
 	case 281:
 		{ /* '281' */
-			return 804
+			return 803
 		}
 	case 282:
 		{ /* '282' */
-			return 1000
+			return 804
 		}
 	case 283:
 		{ /* '283' */
-			return 1001
+			return 1000
 		}
 	case 284:
 		{ /* '284' */
-			return 1002
+			return 1001
 		}
 	case 285:
 		{ /* '285' */
-			return 1003
+			return 1002
 		}
 	case 286:
 		{ /* '286' */
-			return 1
+			return 1003
 		}
 	case 287:
 		{ /* '287' */
-			return 2
+			return 1
 		}
 	case 288:
 		{ /* '288' */
-			return 100
+			return 2
 		}
 	case 289:
 		{ /* '289' */
-			return 101
+			return 100
 		}
 	case 29:
 		{ /* '29' */
@@ -1604,43 +1606,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 290:
 		{ /* '290' */
-			return 102
+			return 101
 		}
 	case 291:
 		{ /* '291' */
-			return 103
+			return 102
 		}
 	case 292:
 		{ /* '292' */
-			return 104
+			return 103
 		}
 	case 293:
 		{ /* '293' */
-			return 105
+			return 104
 		}
 	case 294:
 		{ /* '294' */
-			return 106
+			return 105
 		}
 	case 295:
 		{ /* '295' */
-			return 107
+			return 106
 		}
 	case 296:
 		{ /* '296' */
-			return 601
+			return 107
 		}
 	case 297:
 		{ /* '297' */
-			return 1000
+			return 601
 		}
 	case 298:
 		{ /* '298' */
-			return 1001
+			return 1000
 		}
 	case 299:
 		{ /* '299' */
-			return 1010
+			return 1001
 		}
 	case 3:
 		{ /* '3' */
@@ -1652,43 +1654,43 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 300:
 		{ /* '300' */
-			return 100
+			return 1010
 		}
 	case 301:
 		{ /* '301' */
-			return 101
+			return 100
 		}
 	case 302:
 		{ /* '302' */
-			return 102
+			return 101
 		}
 	case 303:
 		{ /* '303' */
-			return 103
+			return 102
 		}
 	case 304:
 		{ /* '304' */
-			return 1000
+			return 103
 		}
 	case 305:
 		{ /* '305' */
-			return 1010
+			return 1000
 		}
 	case 306:
 		{ /* '306' */
-			return 1
+			return 1010
 		}
 	case 307:
 		{ /* '307' */
-			return 2
+			return 1
 		}
 	case 308:
 		{ /* '308' */
-			return 3
+			return 2
 		}
 	case 309:
 		{ /* '309' */
-			return 102
+			return 3
 		}
 	case 31:
 		{ /* '31' */
@@ -1696,11 +1698,11 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 310:
 		{ /* '310' */
-			return 1000
+			return 102
 		}
 	case 311:
 		{ /* '311' */
-			return 1
+			return 1000
 		}
 	case 312:
 		{ /* '312' */
@@ -1708,31 +1710,31 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 313:
 		{ /* '313' */
-			return 10
+			return 1
 		}
 	case 314:
 		{ /* '314' */
-			return 11
+			return 10
 		}
 	case 315:
 		{ /* '315' */
-			return 12
+			return 11
 		}
 	case 316:
 		{ /* '316' */
-			return 1010
+			return 12
 		}
 	case 317:
 		{ /* '317' */
-			return 100
+			return 1010
 		}
 	case 318:
 		{ /* '318' */
-			return 102
+			return 100
 		}
 	case 319:
 		{ /* '319' */
-			return 104
+			return 102
 		}
 	case 32:
 		{ /* '32' */
@@ -1740,15 +1742,15 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 320:
 		{ /* '320' */
-			return 105
+			return 104
 		}
 	case 321:
 		{ /* '321' */
-			return 600
+			return 105
 		}
 	case 322:
 		{ /* '322' */
-			return 1
+			return 600
 		}
 	case 323:
 		{ /* '323' */
@@ -1756,27 +1758,27 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 324:
 		{ /* '324' */
-			return 100
+			return 1
 		}
 	case 325:
 		{ /* '325' */
-			return 101
+			return 100
 		}
 	case 326:
 		{ /* '326' */
-			return 1
+			return 101
 		}
 	case 327:
 		{ /* '327' */
-			return 2
+			return 1
 		}
 	case 328:
 		{ /* '328' */
-			return 1
+			return 2
 		}
 	case 329:
 		{ /* '329' */
-			return 1000
+			return 1
 		}
 	case 33:
 		{ /* '33' */
@@ -1784,11 +1786,11 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 330:
 		{ /* '330' */
-			return 600
+			return 1000
 		}
 	case 331:
 		{ /* '331' */
-			return 1
+			return 600
 		}
 	case 332:
 		{ /* '332' */
@@ -1800,7 +1802,7 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 334:
 		{ /* '334' */
-			return 600
+			return 1
 		}
 	case 335:
 		{ /* '335' */
@@ -1808,7 +1810,7 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 336:
 		{ /* '336' */
-			return 800
+			return 600
 		}
 	case 337:
 		{ /* '337' */
@@ -1816,7 +1818,7 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 338:
 		{ /* '338' */
-			return 600
+			return 800
 		}
 	case 339:
 		{ /* '339' */
@@ -1856,20 +1858,24 @@ func (e KnxDatapointType) Number() uint16 {
 		}
 	case 347:
 		{ /* '347' */
-			return 1
+			return 600
 		}
 	case 348:
 		{ /* '348' */
-			return 100
+			return 1
 		}
 	case 349:
 		{ /* '349' */
-			return 101
+			return 100
 		}
 	case 35:
 		{ /* '35' */
 			return 9
 		}
+	case 350:
+		{ /* '350' */
+			return 101
+		}
 	case 36:
 		{ /* '36' */
 			return 10
@@ -2274,39 +2280,39 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 121:
 		{ /* '121' */
-			return "time of day"
+			return "coefficient"
 		}
 	case 122:
 		{ /* '122' */
-			return "date"
+			return "time of day"
 		}
 	case 123:
 		{ /* '123' */
-			return "counter pulses (unsigned)"
+			return "date"
 		}
 	case 124:
 		{ /* '124' */
-			return "counter timesec (s)"
+			return "counter pulses (unsigned)"
 		}
 	case 125:
 		{ /* '125' */
-			return "counter timemin (min)"
+			return "counter timesec (s)"
 		}
 	case 126:
 		{ /* '126' */
-			return "counter timehrs (h)"
+			return "counter timemin (min)"
 		}
 	case 127:
 		{ /* '127' */
-			return "volume liquid (l)"
+			return "counter timehrs (h)"
 		}
 	case 128:
 		{ /* '128' */
-			return "volume (m³)"
+			return "volume liquid (l)"
 		}
 	case 129:
 		{ /* '129' */
-			return "counter pulses (signed)"
+			return "volume (m³)"
 		}
 	case 13:
 		{ /* '13' */
@@ -2314,43 +2320,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 130:
 		{ /* '130' */
-			return "flow rate (m³/h)"
+			return "counter pulses (signed)"
 		}
 	case 131:
 		{ /* '131' */
-			return "active energy (Wh)"
+			return "flow rate (m³/h)"
 		}
 	case 132:
 		{ /* '132' */
-			return "apparant energy (VAh)"
+			return "active energy (Wh)"
 		}
 	case 133:
 		{ /* '133' */
-			return "reactive energy (VARh)"
+			return "apparant energy (VAh)"
 		}
 	case 134:
 		{ /* '134' */
-			return "active energy (kWh)"
+			return "reactive energy (VARh)"
 		}
 	case 135:
 		{ /* '135' */
-			return "apparant energy (kVAh)"
+			return "active energy (kWh)"
 		}
 	case 136:
 		{ /* '136' */
-			return "reactive energy (kVARh)"
+			return "apparant energy (kVAh)"
 		}
 	case 137:
 		{ /* '137' */
-			return "active energy (MWh)"
+			return "reactive energy (kVARh)"
 		}
 	case 138:
 		{ /* '138' */
-			return "time lag (s)"
+			return "active energy (MWh)"
 		}
 	case 139:
 		{ /* '139' */
-			return "delta volume liquid (l)"
+			return "time lag (s)"
 		}
 	case 14:
 		{ /* '14' */
@@ -2358,43 +2364,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 140:
 		{ /* '140' */
-			return "delta volume (m³)"
+			return "delta volume liquid (l)"
 		}
 	case 141:
 		{ /* '141' */
-			return "acceleration (m/s²)"
+			return "delta volume (m³)"
 		}
 	case 142:
 		{ /* '142' */
-			return "angular acceleration (rad/s²)"
+			return "acceleration (m/s²)"
 		}
 	case 143:
 		{ /* '143' */
-			return "activation energy (J/mol)"
+			return "angular acceleration (rad/s²)"
 		}
 	case 144:
 		{ /* '144' */
-			return "radioactive activity (1/s)"
+			return "activation energy (J/mol)"
 		}
 	case 145:
 		{ /* '145' */
-			return "amount of substance (mol)"
+			return "radioactive activity (1/s)"
 		}
 	case 146:
 		{ /* '146' */
-			return "amplitude"
+			return "amount of substance (mol)"
 		}
 	case 147:
 		{ /* '147' */
-			return "angle (radiant)"
+			return "amplitude"
 		}
 	case 148:
 		{ /* '148' */
-			return "angle (degree)"
+			return "angle (radiant)"
 		}
 	case 149:
 		{ /* '149' */
-			return "angular momentum (Js)"
+			return "angle (degree)"
 		}
 	case 15:
 		{ /* '15' */
@@ -2402,43 +2408,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 150:
 		{ /* '150' */
-			return "angular velocity (rad/s)"
+			return "angular momentum (Js)"
 		}
 	case 151:
 		{ /* '151' */
-			return "area (m*m)"
+			return "angular velocity (rad/s)"
 		}
 	case 152:
 		{ /* '152' */
-			return "capacitance (F)"
+			return "area (m*m)"
 		}
 	case 153:
 		{ /* '153' */
-			return "flux density (C/m²)"
+			return "capacitance (F)"
 		}
 	case 154:
 		{ /* '154' */
-			return "charge density (C/m³)"
+			return "flux density (C/m²)"
 		}
 	case 155:
 		{ /* '155' */
-			return "compressibility (m²/N)"
+			return "charge density (C/m³)"
 		}
 	case 156:
 		{ /* '156' */
-			return "conductance (S)"
+			return "compressibility (m²/N)"
 		}
 	case 157:
 		{ /* '157' */
-			return "conductivity  (S/m)"
+			return "conductance (S)"
 		}
 	case 158:
 		{ /* '158' */
-			return "density (kg/m³)"
+			return "conductivity  (S/m)"
 		}
 	case 159:
 		{ /* '159' */
-			return "electric charge (C)"
+			return "density (kg/m³)"
 		}
 	case 16:
 		{ /* '16' */
@@ -2446,43 +2452,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 160:
 		{ /* '160' */
-			return "electric current (A)"
+			return "electric charge (C)"
 		}
 	case 161:
 		{ /* '161' */
-			return "electric current density (A/m²)"
+			return "electric current (A)"
 		}
 	case 162:
 		{ /* '162' */
-			return "electric dipole moment (Cm)"
+			return "electric current density (A/m²)"
 		}
 	case 163:
 		{ /* '163' */
-			return "electric displacement (C/m²)"
+			return "electric dipole moment (Cm)"
 		}
 	case 164:
 		{ /* '164' */
-			return "electric field strength (V/m)"
+			return "electric displacement (C/m²)"
 		}
 	case 165:
 		{ /* '165' */
-			return "electric flux (C)"
+			return "electric field strength (V/m)"
 		}
 	case 166:
 		{ /* '166' */
-			return "electric flux density (C/m²)"
+			return "electric flux (C)"
 		}
 	case 167:
 		{ /* '167' */
-			return "electric polarization (C/m²)"
+			return "electric flux density (C/m²)"
 		}
 	case 168:
 		{ /* '168' */
-			return "electric potential (V)"
+			return "electric polarization (C/m²)"
 		}
 	case 169:
 		{ /* '169' */
-			return "electric potential difference (V)"
+			return "electric potential (V)"
 		}
 	case 17:
 		{ /* '17' */
@@ -2490,43 +2496,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 170:
 		{ /* '170' */
-			return "electromagnetic moment (Am²)"
+			return "electric potential difference (V)"
 		}
 	case 171:
 		{ /* '171' */
-			return "electromotive force (V)"
+			return "electromagnetic moment (Am²)"
 		}
 	case 172:
 		{ /* '172' */
-			return "energy (J)"
+			return "electromotive force (V)"
 		}
 	case 173:
 		{ /* '173' */
-			return "force (N)"
+			return "energy (J)"
 		}
 	case 174:
 		{ /* '174' */
-			return "frequency (Hz)"
+			return "force (N)"
 		}
 	case 175:
 		{ /* '175' */
-			return "angular frequency (rad/s)"
+			return "frequency (Hz)"
 		}
 	case 176:
 		{ /* '176' */
-			return "heat capacity (J/K)"
+			return "angular frequency (rad/s)"
 		}
 	case 177:
 		{ /* '177' */
-			return "heat flow rate (W)"
+			return "heat capacity (J/K)"
 		}
 	case 178:
 		{ /* '178' */
-			return "heat quantity"
+			return "heat flow rate (W)"
 		}
 	case 179:
 		{ /* '179' */
-			return "impedance (Ω)"
+			return "heat quantity"
 		}
 	case 18:
 		{ /* '18' */
@@ -2534,43 +2540,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 180:
 		{ /* '180' */
-			return "length (m)"
+			return "impedance (Ω)"
 		}
 	case 181:
 		{ /* '181' */
-			return "light quantity (J)"
+			return "length (m)"
 		}
 	case 182:
 		{ /* '182' */
-			return "luminance (cd/m²)"
+			return "light quantity (J)"
 		}
 	case 183:
 		{ /* '183' */
-			return "luminous flux (lm)"
+			return "luminance (cd/m²)"
 		}
 	case 184:
 		{ /* '184' */
-			return "luminous intensity (cd)"
+			return "luminous flux (lm)"
 		}
 	case 185:
 		{ /* '185' */
-			return "magnetic field strength (A/m)"
+			return "luminous intensity (cd)"
 		}
 	case 186:
 		{ /* '186' */
-			return "magnetic flux (Wb)"
+			return "magnetic field strength (A/m)"
 		}
 	case 187:
 		{ /* '187' */
-			return "magnetic flux density (T)"
+			return "magnetic flux (Wb)"
 		}
 	case 188:
 		{ /* '188' */
-			return "magnetic moment (Am²)"
+			return "magnetic flux density (T)"
 		}
 	case 189:
 		{ /* '189' */
-			return "magnetic polarization (T)"
+			return "magnetic moment (Am²)"
 		}
 	case 19:
 		{ /* '19' */
@@ -2578,43 +2584,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 190:
 		{ /* '190' */
-			return "magnetization (A/m)"
+			return "magnetic polarization (T)"
 		}
 	case 191:
 		{ /* '191' */
-			return "magnetomotive force (A)"
+			return "magnetization (A/m)"
 		}
 	case 192:
 		{ /* '192' */
-			return "mass (kg)"
+			return "magnetomotive force (A)"
 		}
 	case 193:
 		{ /* '193' */
-			return "mass flux (kg/s)"
+			return "mass (kg)"
 		}
 	case 194:
 		{ /* '194' */
-			return "momentum (N/s)"
+			return "mass flux (kg/s)"
 		}
 	case 195:
 		{ /* '195' */
-			return "phase angle (rad)"
+			return "momentum (N/s)"
 		}
 	case 196:
 		{ /* '196' */
-			return "phase angle (°)"
+			return "phase angle (rad)"
 		}
 	case 197:
 		{ /* '197' */
-			return "power (W)"
+			return "phase angle (°)"
 		}
 	case 198:
 		{ /* '198' */
-			return "power factor (cos Φ)"
+			return "power (W)"
 		}
 	case 199:
 		{ /* '199' */
-			return "pressure (Pa)"
+			return "power factor (cos Φ)"
 		}
 	case 2:
 		{ /* '2' */
@@ -2626,43 +2632,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 200:
 		{ /* '200' */
-			return "reactance (Ω)"
+			return "pressure (Pa)"
 		}
 	case 201:
 		{ /* '201' */
-			return "resistance (Ω)"
+			return "reactance (Ω)"
 		}
 	case 202:
 		{ /* '202' */
-			return "resistivity (Ωm)"
+			return "resistance (Ω)"
 		}
 	case 203:
 		{ /* '203' */
-			return "self inductance (H)"
+			return "resistivity (Ωm)"
 		}
 	case 204:
 		{ /* '204' */
-			return "solid angle (sr)"
+			return "self inductance (H)"
 		}
 	case 205:
 		{ /* '205' */
-			return "sound intensity (W/m²)"
+			return "solid angle (sr)"
 		}
 	case 206:
 		{ /* '206' */
-			return "speed (m/s)"
+			return "sound intensity (W/m²)"
 		}
 	case 207:
 		{ /* '207' */
-			return "stress (Pa)"
+			return "speed (m/s)"
 		}
 	case 208:
 		{ /* '208' */
-			return "surface tension (N/m)"
+			return "stress (Pa)"
 		}
 	case 209:
 		{ /* '209' */
-			return "temperature (°C)"
+			return "surface tension (N/m)"
 		}
 	case 21:
 		{ /* '21' */
@@ -2670,43 +2676,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 210:
 		{ /* '210' */
-			return "temperature absolute (K)"
+			return "temperature (°C)"
 		}
 	case 211:
 		{ /* '211' */
-			return "temperature difference (K)"
+			return "temperature absolute (K)"
 		}
 	case 212:
 		{ /* '212' */
-			return "thermal capacity (J/K)"
+			return "temperature difference (K)"
 		}
 	case 213:
 		{ /* '213' */
-			return "thermal conductivity (W/mK)"
+			return "thermal capacity (J/K)"
 		}
 	case 214:
 		{ /* '214' */
-			return "thermoelectric power (V/K)"
+			return "thermal conductivity (W/mK)"
 		}
 	case 215:
 		{ /* '215' */
-			return "time (s)"
+			return "thermoelectric power (V/K)"
 		}
 	case 216:
 		{ /* '216' */
-			return "torque (Nm)"
+			return "time (s)"
 		}
 	case 217:
 		{ /* '217' */
-			return "volume (m³)"
+			return "torque (Nm)"
 		}
 	case 218:
 		{ /* '218' */
-			return "volume flux (m³/s)"
+			return "volume (m³)"
 		}
 	case 219:
 		{ /* '219' */
-			return "weight (N)"
+			return "volume flux (m³/s)"
 		}
 	case 22:
 		{ /* '22' */
@@ -2714,43 +2720,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 220:
 		{ /* '220' */
-			return "work (J)"
+			return "weight (N)"
 		}
 	case 221:
 		{ /* '221' */
-			return "apparent power (VA)"
+			return "work (J)"
 		}
 	case 222:
 		{ /* '222' */
-			return "volume flux for meters (m³/h)"
+			return "apparent power (VA)"
 		}
 	case 223:
 		{ /* '223' */
-			return "volume flux for meters (1/ls)"
+			return "volume flux for meters (m³/h)"
 		}
 	case 224:
 		{ /* '224' */
-			return "entrance access"
+			return "volume flux for meters (1/ls)"
 		}
 	case 225:
 		{ /* '225' */
-			return "Character String (ASCII)"
+			return "entrance access"
 		}
 	case 226:
 		{ /* '226' */
-			return "Character String (ISO 8859-1)"
+			return "Character String (ASCII)"
 		}
 	case 227:
 		{ /* '227' */
-			return "scene number"
+			return "Character String (ISO 8859-1)"
 		}
 	case 228:
 		{ /* '228' */
-			return "scene control"
+			return "scene number"
 		}
 	case 229:
 		{ /* '229' */
-			return "date time"
+			return "scene control"
 		}
 	case 23:
 		{ /* '23' */
@@ -2758,43 +2764,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 230:
 		{ /* '230' */
-			return "SCLO mode"
+			return "date time"
 		}
 	case 231:
 		{ /* '231' */
-			return "building mode"
+			return "SCLO mode"
 		}
 	case 232:
 		{ /* '232' */
-			return "occupied"
+			return "building mode"
 		}
 	case 233:
 		{ /* '233' */
-			return "priority"
+			return "occupied"
 		}
 	case 234:
 		{ /* '234' */
-			return "light application mode"
+			return "priority"
 		}
 	case 235:
 		{ /* '235' */
-			return "light application area"
+			return "light application mode"
 		}
 	case 236:
 		{ /* '236' */
-			return "alarm class"
+			return "light application area"
 		}
 	case 237:
 		{ /* '237' */
-			return "PSU mode"
+			return "alarm class"
 		}
 	case 238:
 		{ /* '238' */
-			return "system error class"
+			return "PSU mode"
 		}
 	case 239:
 		{ /* '239' */
-			return "HVAC error class"
+			return "system error class"
 		}
 	case 24:
 		{ /* '24' */
@@ -2802,43 +2808,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 240:
 		{ /* '240' */
-			return "time delay"
+			return "HVAC error class"
 		}
 	case 241:
 		{ /* '241' */
-			return "wind force scale (0..12)"
+			return "time delay"
 		}
 	case 242:
 		{ /* '242' */
-			return "sensor mode"
+			return "wind force scale (0..12)"
 		}
 	case 243:
 		{ /* '243' */
-			return "actuator connect type"
+			return "sensor mode"
 		}
 	case 244:
 		{ /* '244' */
-			return "cloud cover"
+			return "actuator connect type"
 		}
 	case 245:
 		{ /* '245' */
-			return "power return mode"
+			return "cloud cover"
 		}
 	case 246:
 		{ /* '246' */
-			return "fuel type"
+			return "power return mode"
 		}
 	case 247:
 		{ /* '247' */
-			return "burner type"
+			return "fuel type"
 		}
 	case 248:
 		{ /* '248' */
-			return "HVAC mode"
+			return "burner type"
 		}
 	case 249:
 		{ /* '249' */
-			return "DHW mode"
+			return "HVAC mode"
 		}
 	case 25:
 		{ /* '25' */
@@ -2846,43 +2852,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 250:
 		{ /* '250' */
-			return "load priority"
+			return "DHW mode"
 		}
 	case 251:
 		{ /* '251' */
-			return "HVAC control mode"
+			return "load priority"
 		}
 	case 252:
 		{ /* '252' */
-			return "HVAC emergency mode"
+			return "HVAC control mode"
 		}
 	case 253:
 		{ /* '253' */
-			return "changeover mode"
+			return "HVAC emergency mode"
 		}
 	case 254:
 		{ /* '254' */
-			return "valve mode"
+			return "changeover mode"
 		}
 	case 255:
 		{ /* '255' */
-			return "damper mode"
+			return "valve mode"
 		}
 	case 256:
 		{ /* '256' */
-			return "heater mode"
+			return "damper mode"
 		}
 	case 257:
 		{ /* '257' */
-			return "fan mode"
+			return "heater mode"
 		}
 	case 258:
 		{ /* '258' */
-			return "master/slave mode"
+			return "fan mode"
 		}
 	case 259:
 		{ /* '259' */
-			return "status room setpoint"
+			return "master/slave mode"
 		}
 	case 26:
 		{ /* '26' */
@@ -2890,43 +2896,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 260:
 		{ /* '260' */
-			return "metering device type"
+			return "status room setpoint"
 		}
 	case 261:
 		{ /* '261' */
-			return "hum dehum mode"
+			return "metering device type"
 		}
 	case 262:
 		{ /* '262' */
-			return "enable H/C stage"
+			return "hum dehum mode"
 		}
 	case 263:
 		{ /* '263' */
-			return "ADA type"
+			return "enable H/C stage"
 		}
 	case 264:
 		{ /* '264' */
-			return "backup mode"
+			return "ADA type"
 		}
 	case 265:
 		{ /* '265' */
-			return "start syncronization type"
+			return "backup mode"
 		}
 	case 266:
 		{ /* '266' */
-			return "behavior lock/unlock"
+			return "start syncronization type"
 		}
 	case 267:
 		{ /* '267' */
-			return "behavior bus power up/down"
+			return "behavior lock/unlock"
 		}
 	case 268:
 		{ /* '268' */
-			return "dali fade time"
+			return "behavior bus power up/down"
 		}
 	case 269:
 		{ /* '269' */
-			return "blink mode"
+			return "dali fade time"
 		}
 	case 27:
 		{ /* '27' */
@@ -2934,43 +2940,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 270:
 		{ /* '270' */
-			return "light control mode"
+			return "blink mode"
 		}
 	case 271:
 		{ /* '271' */
-			return "PB switch mode"
+			return "light control mode"
 		}
 	case 272:
 		{ /* '272' */
-			return "PB action mode"
+			return "PB switch mode"
 		}
 	case 273:
 		{ /* '273' */
-			return "PB dimm mode"
+			return "PB action mode"
 		}
 	case 274:
 		{ /* '274' */
-			return "switch on mode"
+			return "PB dimm mode"
 		}
 	case 275:
 		{ /* '275' */
-			return "load type"
+			return "switch on mode"
 		}
 	case 276:
 		{ /* '276' */
-			return "load type detection"
+			return "load type"
 		}
 	case 277:
 		{ /* '277' */
-			return "converter test control"
+			return "load type detection"
 		}
 	case 278:
 		{ /* '278' */
-			return "SAB except behavior"
+			return "converter test control"
 		}
 	case 279:
 		{ /* '279' */
-			return "SAB behavior on lock/unlock"
+			return "SAB except behavior"
 		}
 	case 28:
 		{ /* '28' */
@@ -2978,43 +2984,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 280:
 		{ /* '280' */
-			return "SSSB mode"
+			return "SAB behavior on lock/unlock"
 		}
 	case 281:
 		{ /* '281' */
-			return "blinds control mode"
+			return "SSSB mode"
 		}
 	case 282:
 		{ /* '282' */
-			return "communication mode"
+			return "blinds control mode"
 		}
 	case 283:
 		{ /* '283' */
-			return "additional information type"
+			return "communication mode"
 		}
 	case 284:
 		{ /* '284' */
-			return "RF mode selection"
+			return "additional information type"
 		}
 	case 285:
 		{ /* '285' */
-			return "RF filter mode selection"
+			return "RF mode selection"
 		}
 	case 286:
 		{ /* '286' */
-			return "general status"
+			return "RF filter mode selection"
 		}
 	case 287:
 		{ /* '287' */
-			return "device control"
+			return "general status"
 		}
 	case 288:
 		{ /* '288' */
-			return "forcing signal"
+			return "device control"
 		}
 	case 289:
 		{ /* '289' */
-			return "forcing signal cool"
+			return "forcing signal"
 		}
 	case 29:
 		{ /* '29' */
@@ -3022,43 +3028,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 290:
 		{ /* '290' */
-			return "room heating controller status"
+			return "forcing signal cool"
 		}
 	case 291:
 		{ /* '291' */
-			return "solar DHW controller status"
+			return "room heating controller status"
 		}
 	case 292:
 		{ /* '292' */
-			return "fuel type set"
+			return "solar DHW controller status"
 		}
 	case 293:
 		{ /* '293' */
-			return "room cooling controller status"
+			return "fuel type set"
 		}
 	case 294:
 		{ /* '294' */
-			return "ventilation controller status"
+			return "room cooling controller status"
 		}
 	case 295:
 		{ /* '295' */
-			return "combined status RTSM"
+			return "ventilation controller status"
 		}
 	case 296:
 		{ /* '296' */
-			return "lighting actuator error information"
+			return "combined status RTSM"
 		}
 	case 297:
 		{ /* '297' */
-			return "RF communication mode info"
+			return "lighting actuator error information"
 		}
 	case 298:
 		{ /* '298' */
-			return "cEMI server supported RF filtering modes"
+			return "RF communication mode info"
 		}
 	case 299:
 		{ /* '299' */
-			return "channel activation for 8 channels"
+			return "cEMI server supported RF filtering modes"
 		}
 	case 3:
 		{ /* '3' */
@@ -3070,43 +3076,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 300:
 		{ /* '300' */
-			return "DHW controller status"
+			return "channel activation for 8 channels"
 		}
 	case 301:
 		{ /* '301' */
-			return "RHCC status"
+			return "DHW controller status"
 		}
 	case 302:
 		{ /* '302' */
-			return "combined status HVA"
+			return "RHCC status"
 		}
 	case 303:
 		{ /* '303' */
-			return "combined status RTC"
+			return "combined status HVA"
 		}
 	case 304:
 		{ /* '304' */
-			return "media"
+			return "combined status RTC"
 		}
 	case 305:
 		{ /* '305' */
-			return "channel activation for 16 channels"
+			return "media"
 		}
 	case 306:
 		{ /* '306' */
-			return "on/off action"
+			return "channel activation for 16 channels"
 		}
 	case 307:
 		{ /* '307' */
-			return "alarm reaction"
+			return "on/off action"
 		}
 	case 308:
 		{ /* '308' */
-			return "up/down action"
+			return "alarm reaction"
 		}
 	case 309:
 		{ /* '309' */
-			return "HVAC push button action"
+			return "up/down action"
 		}
 	case 31:
 		{ /* '31' */
@@ -3114,43 +3120,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 310:
 		{ /* '310' */
-			return "busy/nak repetitions"
+			return "HVAC push button action"
 		}
 	case 311:
 		{ /* '311' */
-			return "scene information"
+			return "busy/nak repetitions"
 		}
 	case 312:
 		{ /* '312' */
-			return "bit-combined info on/off"
+			return "scene information"
 		}
 	case 313:
 		{ /* '313' */
-			return "active energy (Wh)"
+			return "bit-combined info on/off"
 		}
 	case 314:
 		{ /* '314' */
-			return "apparant energy (VAh)"
+			return "active energy (Wh)"
 		}
 	case 315:
 		{ /* '315' */
-			return "reactive energy (VARh)"
+			return "apparant energy (VAh)"
 		}
 	case 316:
 		{ /* '316' */
-			return "activation state 0..23"
+			return "reactive energy (VARh)"
 		}
 	case 317:
 		{ /* '317' */
-			return "time delay & HVAC mode"
+			return "activation state 0..23"
 		}
 	case 318:
 		{ /* '318' */
-			return "time delay & DHW mode"
+			return "time delay & HVAC mode"
 		}
 	case 319:
 		{ /* '319' */
-			return "time delay & occupancy mode"
+			return "time delay & DHW mode"
 		}
 	case 32:
 		{ /* '32' */
@@ -3158,43 +3164,43 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 320:
 		{ /* '320' */
-			return "time delay & building mode"
+			return "time delay & occupancy mode"
 		}
 	case 321:
 		{ /* '321' */
-			return "Status Lighting Actuator"
+			return "time delay & building mode"
 		}
 	case 322:
 		{ /* '322' */
-			return "DPT version"
+			return "Status Lighting Actuator"
 		}
 	case 323:
 		{ /* '323' */
-			return "alarm info"
+			return "DPT version"
 		}
 	case 324:
 		{ /* '324' */
-			return "room temperature setpoint"
+			return "alarm info"
 		}
 	case 325:
 		{ /* '325' */
-			return "room temperature setpoint shift"
+			return "room temperature setpoint"
 		}
 	case 326:
 		{ /* '326' */
-			return "scaling speed"
+			return "room temperature setpoint shift"
 		}
 	case 327:
 		{ /* '327' */
-			return "scaling step time"
+			return "scaling speed"
 		}
 	case 328:
 		{ /* '328' */
-			return "metering value (value,encoding,cmd)"
+			return "scaling step time"
 		}
 	case 329:
 		{ /* '329' */
-			return "MBus address"
+			return "metering value (value,encoding,cmd)"
 		}
 	case 33:
 		{ /* '33' */
@@ -3202,23 +3208,23 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 330:
 		{ /* '330' */
-			return "RGB value 3x(0..255)"
+			return "MBus address"
 		}
 	case 331:
 		{ /* '331' */
-			return "language code (ASCII)"
+			return "RGB value 3x(0..255)"
 		}
 	case 332:
 		{ /* '332' */
-			return "electrical energy with tariff"
+			return "language code (ASCII)"
 		}
 	case 333:
 		{ /* '333' */
-			return "priority control"
+			return "electrical energy with tariff"
 		}
 	case 334:
 		{ /* '334' */
-			return "diagnostic value"
+			return "priority control"
 		}
 	case 335:
 		{ /* '335' */
@@ -3226,19 +3232,19 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 336:
 		{ /* '336' */
-			return "combined position"
+			return "diagnostic value"
 		}
 	case 337:
 		{ /* '337' */
-			return "status sunblind & shutter actuator"
+			return "combined position"
 		}
 	case 338:
 		{ /* '338' */
-			return "colour xyY"
+			return "status sunblind & shutter actuator"
 		}
 	case 339:
 		{ /* '339' */
-			return "DALI converter status"
+			return "colour xyY"
 		}
 	case 34:
 		{ /* '34' */
@@ -3246,48 +3252,52 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 340:
 		{ /* '340' */
-			return "DALI converter test result"
+			return "DALI converter status"
 		}
 	case 341:
 		{ /* '341' */
-			return "Battery Information"
+			return "DALI converter test result"
 		}
 	case 342:
 		{ /* '342' */
-			return "brightness colour temperature transition"
+			return "Battery Information"
 		}
 	case 343:
 		{ /* '343' */
-			return "brightness colour temperature control"
+			return "brightness colour temperature transition"
 		}
 	case 344:
 		{ /* '344' */
-			return "RGBW value 4x(0..100%)"
+			return "brightness colour temperature control"
 		}
 	case 345:
 		{ /* '345' */
-			return "RGBW relative control"
+			return "RGBW value 4x(0..100%)"
 		}
 	case 346:
 		{ /* '346' */
-			return "RGB relative control"
+			return "RGBW relative control"
 		}
 	case 347:
 		{ /* '347' */
-			return "geographical location (longitude and latitude) expressed in degrees"
+			return "RGB relative control"
 		}
 	case 348:
 		{ /* '348' */
-			return "Temperature setpoint setting for 4 HVAC Modes"
+			return "geographical location (longitude and latitude) expressed in degrees"
 		}
 	case 349:
 		{ /* '349' */
-			return "Temperature setpoint shift setting for 4 HVAC Modes"
+			return "Temperature setpoint setting for 4 HVAC Modes"
 		}
 	case 35:
 		{ /* '35' */
 			return "open/close"
 		}
+	case 350:
+		{ /* '350' */
+			return "Temperature setpoint shift setting for 4 HVAC Modes"
+		}
 	case 36:
 		{ /* '36' */
 			return "start/stop"
@@ -3692,15 +3702,15 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 121:
 		{ /* '121' */
-			return KnxDatapointMainType_DPT_TIME
+			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 122:
 		{ /* '122' */
-			return KnxDatapointMainType_DPT_DATE
+			return KnxDatapointMainType_DPT_TIME
 		}
 	case 123:
 		{ /* '123' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return KnxDatapointMainType_DPT_DATE
 		}
 	case 124:
 		{ /* '124' */
@@ -3724,7 +3734,7 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 129:
 		{ /* '129' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 13:
 		{ /* '13' */
@@ -3780,7 +3790,7 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 141:
 		{ /* '141' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 142:
 		{ /* '142' */
@@ -4148,11 +4158,11 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 224:
 		{ /* '224' */
-			return KnxDatapointMainType_DPT_ENTRANCE_ACCESS
+			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 225:
 		{ /* '225' */
-			return KnxDatapointMainType_DPT_CHARACTER_STRING
+			return KnxDatapointMainType_DPT_ENTRANCE_ACCESS
 		}
 	case 226:
 		{ /* '226' */
@@ -4160,15 +4170,15 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 227:
 		{ /* '227' */
-			return KnxDatapointMainType_DPT_SCENE_NUMBER
+			return KnxDatapointMainType_DPT_CHARACTER_STRING
 		}
 	case 228:
 		{ /* '228' */
-			return KnxDatapointMainType_DPT_SCENE_CONTROL
+			return KnxDatapointMainType_DPT_SCENE_NUMBER
 		}
 	case 229:
 		{ /* '229' */
-			return KnxDatapointMainType_DPT_DATE_TIME
+			return KnxDatapointMainType_DPT_SCENE_CONTROL
 		}
 	case 23:
 		{ /* '23' */
@@ -4176,7 +4186,7 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 230:
 		{ /* '230' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return KnxDatapointMainType_DPT_DATE_TIME
 		}
 	case 231:
 		{ /* '231' */
@@ -4420,7 +4430,7 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 286:
 		{ /* '286' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return KnxDatapointMainType_DPT_1_BYTE
 		}
 	case 287:
 		{ /* '287' */
@@ -4488,7 +4498,7 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 300:
 		{ /* '300' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return KnxDatapointMainType_DPT_8_BIT_SET
 		}
 	case 301:
 		{ /* '301' */
@@ -4512,7 +4522,7 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 306:
 		{ /* '306' */
-			return KnxDatapointMainType_DPT_2_BIT_SET
+			return KnxDatapointMainType_DPT_16_BIT_SET
 		}
 	case 307:
 		{ /* '307' */
@@ -4532,19 +4542,19 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 310:
 		{ /* '310' */
-			return KnxDatapointMainType_DPT_2_NIBBLE_SET
+			return KnxDatapointMainType_DPT_2_BIT_SET
 		}
 	case 311:
 		{ /* '311' */
-			return KnxDatapointMainType_DPT_8_BIT_SET_2
+			return KnxDatapointMainType_DPT_2_NIBBLE_SET
 		}
 	case 312:
 		{ /* '312' */
-			return KnxDatapointMainType_DPT_32_BIT_SET
+			return KnxDatapointMainType_DPT_8_BIT_SET_2
 		}
 	case 313:
 		{ /* '313' */
-			return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
+			return KnxDatapointMainType_DPT_32_BIT_SET
 		}
 	case 314:
 		{ /* '314' */
@@ -4556,11 +4566,11 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 316:
 		{ /* '316' */
-			return KnxDatapointMainType_DPT_24_TIMES_CHANNEL_ACTIVATION
+			return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
 		}
 	case 317:
 		{ /* '317' */
-			return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+			return KnxDatapointMainType_DPT_24_TIMES_CHANNEL_ACTIVATION
 		}
 	case 318:
 		{ /* '318' */
@@ -4580,19 +4590,19 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 321:
 		{ /* '321' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+			return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
 		}
 	case 322:
 		{ /* '322' */
-			return KnxDatapointMainType_DPT_DATAPOINT_TYPE_VERSION
+			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
 		}
 	case 323:
 		{ /* '323' */
-			return KnxDatapointMainType_DPT_ALARM_INFO
+			return KnxDatapointMainType_DPT_DATAPOINT_TYPE_VERSION
 		}
 	case 324:
 		{ /* '324' */
-			return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
+			return KnxDatapointMainType_DPT_ALARM_INFO
 		}
 	case 325:
 		{ /* '325' */
@@ -4600,7 +4610,7 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 326:
 		{ /* '326' */
-			return KnxDatapointMainType_DPT_SCALING_SPEED
+			return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
 		}
 	case 327:
 		{ /* '327' */
@@ -4608,11 +4618,11 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 328:
 		{ /* '328' */
-			return KnxDatapointMainType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
+			return KnxDatapointMainType_DPT_SCALING_SPEED
 		}
 	case 329:
 		{ /* '329' */
-			return KnxDatapointMainType_DPT_MBUS_ADDRESS
+			return KnxDatapointMainType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
 		}
 	case 33:
 		{ /* '33' */
@@ -4620,43 +4630,43 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 330:
 		{ /* '330' */
-			return KnxDatapointMainType_DPT_3_BYTE_COLOUR_RGB
+			return KnxDatapointMainType_DPT_MBUS_ADDRESS
 		}
 	case 331:
 		{ /* '331' */
-			return KnxDatapointMainType_DPT_LANGUAGE_CODE_ISO_639_1
+			return KnxDatapointMainType_DPT_3_BYTE_COLOUR_RGB
 		}
 	case 332:
 		{ /* '332' */
-			return KnxDatapointMainType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
+			return KnxDatapointMainType_DPT_LANGUAGE_CODE_ISO_639_1
 		}
 	case 333:
 		{ /* '333' */
-			return KnxDatapointMainType_DPT_PRIORITISED_MODE_CONTROL
+			return KnxDatapointMainType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
 		}
 	case 334:
 		{ /* '334' */
-			return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
+			return KnxDatapointMainType_DPT_PRIORITISED_MODE_CONTROL
 		}
 	case 335:
 		{ /* '335' */
-			return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
+			return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
 		}
 	case 336:
 		{ /* '336' */
-			return KnxDatapointMainType_DPT_POSITIONS
+			return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
 		}
 	case 337:
 		{ /* '337' */
-			return KnxDatapointMainType_DPT_STATUS_32_BIT
+			return KnxDatapointMainType_DPT_POSITIONS
 		}
 	case 338:
 		{ /* '338' */
-			return KnxDatapointMainType_DPT_STATUS_48_BIT
+			return KnxDatapointMainType_DPT_STATUS_32_BIT
 		}
 	case 339:
 		{ /* '339' */
-			return KnxDatapointMainType_DPT_CONVERTER_STATUS
+			return KnxDatapointMainType_DPT_STATUS_48_BIT
 		}
 	case 34:
 		{ /* '34' */
@@ -4664,39 +4674,39 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		}
 	case 340:
 		{ /* '340' */
-			return KnxDatapointMainType_DPT_CONVERTER_TEST_RESULT
+			return KnxDatapointMainType_DPT_CONVERTER_STATUS
 		}
 	case 341:
 		{ /* '341' */
-			return KnxDatapointMainType_DPT_BATTERY_INFORMATION
+			return KnxDatapointMainType_DPT_CONVERTER_TEST_RESULT
 		}
 	case 342:
 		{ /* '342' */
-			return KnxDatapointMainType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
+			return KnxDatapointMainType_DPT_BATTERY_INFORMATION
 		}
 	case 343:
 		{ /* '343' */
-			return KnxDatapointMainType_DPT_STATUS_24_BIT
+			return KnxDatapointMainType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
 		}
 	case 344:
 		{ /* '344' */
-			return KnxDatapointMainType_DPT_COLOUR_RGBW
+			return KnxDatapointMainType_DPT_STATUS_24_BIT
 		}
 	case 345:
 		{ /* '345' */
-			return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGBW
+			return KnxDatapointMainType_DPT_COLOUR_RGBW
 		}
 	case 346:
 		{ /* '346' */
-			return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGB
+			return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGBW
 		}
 	case 347:
 		{ /* '347' */
-			return KnxDatapointMainType_DPT_F32F32
+			return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGB
 		}
 	case 348:
 		{ /* '348' */
-			return KnxDatapointMainType_DPT_F16F16F16F16
+			return KnxDatapointMainType_DPT_F32F32
 		}
 	case 349:
 		{ /* '349' */
@@ -4706,6 +4716,10 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 		{ /* '35' */
 			return KnxDatapointMainType_DPT_1_BIT
 		}
+	case 350:
+		{ /* '350' */
+			return KnxDatapointMainType_DPT_F16F16F16F16
+		}
 	case 36:
 		{ /* '36' */
 			return KnxDatapointMainType_DPT_1_BIT
@@ -5056,513 +5070,515 @@ func KnxDatapointTypeByValue(value uint32) (enum KnxDatapointType, ok bool) {
 	case 120:
 		return KnxDatapointType_DPT_Concentration_ygm3, true
 	case 121:
-		return KnxDatapointType_DPT_TimeOfDay, true
+		return KnxDatapointType_DPT_Coefficient, true
 	case 122:
-		return KnxDatapointType_DPT_Date, true
+		return KnxDatapointType_DPT_TimeOfDay, true
 	case 123:
-		return KnxDatapointType_DPT_Value_4_Ucount, true
+		return KnxDatapointType_DPT_Date, true
 	case 124:
-		return KnxDatapointType_DPT_LongTimePeriod_Sec, true
+		return KnxDatapointType_DPT_Value_4_Ucount, true
 	case 125:
-		return KnxDatapointType_DPT_LongTimePeriod_Min, true
+		return KnxDatapointType_DPT_LongTimePeriod_Sec, true
 	case 126:
-		return KnxDatapointType_DPT_LongTimePeriod_Hrs, true
+		return KnxDatapointType_DPT_LongTimePeriod_Min, true
 	case 127:
-		return KnxDatapointType_DPT_VolumeLiquid_Litre, true
+		return KnxDatapointType_DPT_LongTimePeriod_Hrs, true
 	case 128:
-		return KnxDatapointType_DPT_Volume_m_3, true
+		return KnxDatapointType_DPT_VolumeLiquid_Litre, true
 	case 129:
-		return KnxDatapointType_DPT_Value_4_Count, true
+		return KnxDatapointType_DPT_Volume_m_3, true
 	case 13:
 		return KnxDatapointType_LINT, true
 	case 130:
-		return KnxDatapointType_DPT_FlowRate_m3h, true
+		return KnxDatapointType_DPT_Value_4_Count, true
 	case 131:
-		return KnxDatapointType_DPT_ActiveEnergy, true
+		return KnxDatapointType_DPT_FlowRate_m3h, true
 	case 132:
-		return KnxDatapointType_DPT_ApparantEnergy, true
+		return KnxDatapointType_DPT_ActiveEnergy, true
 	case 133:
-		return KnxDatapointType_DPT_ReactiveEnergy, true
+		return KnxDatapointType_DPT_ApparantEnergy, true
 	case 134:
-		return KnxDatapointType_DPT_ActiveEnergy_kWh, true
+		return KnxDatapointType_DPT_ReactiveEnergy, true
 	case 135:
-		return KnxDatapointType_DPT_ApparantEnergy_kVAh, true
+		return KnxDatapointType_DPT_ActiveEnergy_kWh, true
 	case 136:
-		return KnxDatapointType_DPT_ReactiveEnergy_kVARh, true
+		return KnxDatapointType_DPT_ApparantEnergy_kVAh, true
 	case 137:
-		return KnxDatapointType_DPT_ActiveEnergy_MWh, true
+		return KnxDatapointType_DPT_ReactiveEnergy_kVARh, true
 	case 138:
-		return KnxDatapointType_DPT_LongDeltaTimeSec, true
+		return KnxDatapointType_DPT_ActiveEnergy_MWh, true
 	case 139:
-		return KnxDatapointType_DPT_DeltaVolumeLiquid_Litre, true
+		return KnxDatapointType_DPT_LongDeltaTimeSec, true
 	case 14:
 		return KnxDatapointType_REAL, true
 	case 140:
-		return KnxDatapointType_DPT_DeltaVolume_m_3, true
+		return KnxDatapointType_DPT_DeltaVolumeLiquid_Litre, true
 	case 141:
-		return KnxDatapointType_DPT_Value_Acceleration, true
+		return KnxDatapointType_DPT_DeltaVolume_m_3, true
 	case 142:
-		return KnxDatapointType_DPT_Value_Acceleration_Angular, true
+		return KnxDatapointType_DPT_Value_Acceleration, true
 	case 143:
-		return KnxDatapointType_DPT_Value_Activation_Energy, true
+		return KnxDatapointType_DPT_Value_Acceleration_Angular, true
 	case 144:
-		return KnxDatapointType_DPT_Value_Activity, true
+		return KnxDatapointType_DPT_Value_Activation_Energy, true
 	case 145:
-		return KnxDatapointType_DPT_Value_Mol, true
+		return KnxDatapointType_DPT_Value_Activity, true
 	case 146:
-		return KnxDatapointType_DPT_Value_Amplitude, true
+		return KnxDatapointType_DPT_Value_Mol, true
 	case 147:
-		return KnxDatapointType_DPT_Value_AngleRad, true
+		return KnxDatapointType_DPT_Value_Amplitude, true
 	case 148:
-		return KnxDatapointType_DPT_Value_AngleDeg, true
+		return KnxDatapointType_DPT_Value_AngleRad, true
 	case 149:
-		return KnxDatapointType_DPT_Value_Angular_Momentum, true
+		return KnxDatapointType_DPT_Value_AngleDeg, true
 	case 15:
 		return KnxDatapointType_LREAL, true
 	case 150:
-		return KnxDatapointType_DPT_Value_Angular_Velocity, true
+		return KnxDatapointType_DPT_Value_Angular_Momentum, true
 	case 151:
-		return KnxDatapointType_DPT_Value_Area, true
+		return KnxDatapointType_DPT_Value_Angular_Velocity, true
 	case 152:
-		return KnxDatapointType_DPT_Value_Capacitance, true
+		return KnxDatapointType_DPT_Value_Area, true
 	case 153:
-		return KnxDatapointType_DPT_Value_Charge_DensitySurface, true
+		return KnxDatapointType_DPT_Value_Capacitance, true
 	case 154:
-		return KnxDatapointType_DPT_Value_Charge_DensityVolume, true
+		return KnxDatapointType_DPT_Value_Charge_DensitySurface, true
 	case 155:
-		return KnxDatapointType_DPT_Value_Compressibility, true
+		return KnxDatapointType_DPT_Value_Charge_DensityVolume, true
 	case 156:
-		return KnxDatapointType_DPT_Value_Conductance, true
+		return KnxDatapointType_DPT_Value_Compressibility, true
 	case 157:
-		return KnxDatapointType_DPT_Value_Electrical_Conductivity, true
+		return KnxDatapointType_DPT_Value_Conductance, true
 	case 158:
-		return KnxDatapointType_DPT_Value_Density, true
+		return KnxDatapointType_DPT_Value_Electrical_Conductivity, true
 	case 159:
-		return KnxDatapointType_DPT_Value_Electric_Charge, true
+		return KnxDatapointType_DPT_Value_Density, true
 	case 16:
 		return KnxDatapointType_CHAR, true
 	case 160:
-		return KnxDatapointType_DPT_Value_Electric_Current, true
+		return KnxDatapointType_DPT_Value_Electric_Charge, true
 	case 161:
-		return KnxDatapointType_DPT_Value_Electric_CurrentDensity, true
+		return KnxDatapointType_DPT_Value_Electric_Current, true
 	case 162:
-		return KnxDatapointType_DPT_Value_Electric_DipoleMoment, true
+		return KnxDatapointType_DPT_Value_Electric_CurrentDensity, true
 	case 163:
-		return KnxDatapointType_DPT_Value_Electric_Displacement, true
+		return KnxDatapointType_DPT_Value_Electric_DipoleMoment, true
 	case 164:
-		return KnxDatapointType_DPT_Value_Electric_FieldStrength, true
+		return KnxDatapointType_DPT_Value_Electric_Displacement, true
 	case 165:
-		return KnxDatapointType_DPT_Value_Electric_Flux, true
+		return KnxDatapointType_DPT_Value_Electric_FieldStrength, true
 	case 166:
-		return KnxDatapointType_DPT_Value_Electric_FluxDensity, true
+		return KnxDatapointType_DPT_Value_Electric_Flux, true
 	case 167:
-		return KnxDatapointType_DPT_Value_Electric_Polarization, true
+		return KnxDatapointType_DPT_Value_Electric_FluxDensity, true
 	case 168:
-		return KnxDatapointType_DPT_Value_Electric_Potential, true
+		return KnxDatapointType_DPT_Value_Electric_Polarization, true
 	case 169:
-		return KnxDatapointType_DPT_Value_Electric_PotentialDifference, true
+		return KnxDatapointType_DPT_Value_Electric_Potential, true
 	case 17:
 		return KnxDatapointType_WCHAR, true
 	case 170:
-		return KnxDatapointType_DPT_Value_ElectromagneticMoment, true
+		return KnxDatapointType_DPT_Value_Electric_PotentialDifference, true
 	case 171:
-		return KnxDatapointType_DPT_Value_Electromotive_Force, true
+		return KnxDatapointType_DPT_Value_ElectromagneticMoment, true
 	case 172:
-		return KnxDatapointType_DPT_Value_Energy, true
+		return KnxDatapointType_DPT_Value_Electromotive_Force, true
 	case 173:
-		return KnxDatapointType_DPT_Value_Force, true
+		return KnxDatapointType_DPT_Value_Energy, true
 	case 174:
-		return KnxDatapointType_DPT_Value_Frequency, true
+		return KnxDatapointType_DPT_Value_Force, true
 	case 175:
-		return KnxDatapointType_DPT_Value_Angular_Frequency, true
+		return KnxDatapointType_DPT_Value_Frequency, true
 	case 176:
-		return KnxDatapointType_DPT_Value_Heat_Capacity, true
+		return KnxDatapointType_DPT_Value_Angular_Frequency, true
 	case 177:
-		return KnxDatapointType_DPT_Value_Heat_FlowRate, true
+		return KnxDatapointType_DPT_Value_Heat_Capacity, true
 	case 178:
-		return KnxDatapointType_DPT_Value_Heat_Quantity, true
+		return KnxDatapointType_DPT_Value_Heat_FlowRate, true
 	case 179:
-		return KnxDatapointType_DPT_Value_Impedance, true
+		return KnxDatapointType_DPT_Value_Heat_Quantity, true
 	case 18:
 		return KnxDatapointType_STRING, true
 	case 180:
-		return KnxDatapointType_DPT_Value_Length, true
+		return KnxDatapointType_DPT_Value_Impedance, true
 	case 181:
-		return KnxDatapointType_DPT_Value_Light_Quantity, true
+		return KnxDatapointType_DPT_Value_Length, true
 	case 182:
-		return KnxDatapointType_DPT_Value_Luminance, true
+		return KnxDatapointType_DPT_Value_Light_Quantity, true
 	case 183:
-		return KnxDatapointType_DPT_Value_Luminous_Flux, true
+		return KnxDatapointType_DPT_Value_Luminance, true
 	case 184:
-		return KnxDatapointType_DPT_Value_Luminous_Intensity, true
+		return KnxDatapointType_DPT_Value_Luminous_Flux, true
 	case 185:
-		return KnxDatapointType_DPT_Value_Magnetic_FieldStrength, true
+		return KnxDatapointType_DPT_Value_Luminous_Intensity, true
 	case 186:
-		return KnxDatapointType_DPT_Value_Magnetic_Flux, true
+		return KnxDatapointType_DPT_Value_Magnetic_FieldStrength, true
 	case 187:
-		return KnxDatapointType_DPT_Value_Magnetic_FluxDensity, true
+		return KnxDatapointType_DPT_Value_Magnetic_Flux, true
 	case 188:
-		return KnxDatapointType_DPT_Value_Magnetic_Moment, true
+		return KnxDatapointType_DPT_Value_Magnetic_FluxDensity, true
 	case 189:
-		return KnxDatapointType_DPT_Value_Magnetic_Polarization, true
+		return KnxDatapointType_DPT_Value_Magnetic_Moment, true
 	case 19:
 		return KnxDatapointType_WSTRING, true
 	case 190:
-		return KnxDatapointType_DPT_Value_Magnetization, true
+		return KnxDatapointType_DPT_Value_Magnetic_Polarization, true
 	case 191:
-		return KnxDatapointType_DPT_Value_MagnetomotiveForce, true
+		return KnxDatapointType_DPT_Value_Magnetization, true
 	case 192:
-		return KnxDatapointType_DPT_Value_Mass, true
+		return KnxDatapointType_DPT_Value_MagnetomotiveForce, true
 	case 193:
-		return KnxDatapointType_DPT_Value_MassFlux, true
+		return KnxDatapointType_DPT_Value_Mass, true
 	case 194:
-		return KnxDatapointType_DPT_Value_Momentum, true
+		return KnxDatapointType_DPT_Value_MassFlux, true
 	case 195:
-		return KnxDatapointType_DPT_Value_Phase_AngleRad, true
+		return KnxDatapointType_DPT_Value_Momentum, true
 	case 196:
-		return KnxDatapointType_DPT_Value_Phase_AngleDeg, true
+		return KnxDatapointType_DPT_Value_Phase_AngleRad, true
 	case 197:
-		return KnxDatapointType_DPT_Value_Power, true
+		return KnxDatapointType_DPT_Value_Phase_AngleDeg, true
 	case 198:
-		return KnxDatapointType_DPT_Value_Power_Factor, true
+		return KnxDatapointType_DPT_Value_Power, true
 	case 199:
-		return KnxDatapointType_DPT_Value_Pressure, true
+		return KnxDatapointType_DPT_Value_Power_Factor, true
 	case 2:
 		return KnxDatapointType_BYTE, true
 	case 20:
 		return KnxDatapointType_TIME, true
 	case 200:
-		return KnxDatapointType_DPT_Value_Reactance, true
+		return KnxDatapointType_DPT_Value_Pressure, true
 	case 201:
-		return KnxDatapointType_DPT_Value_Resistance, true
+		return KnxDatapointType_DPT_Value_Reactance, true
 	case 202:
-		return KnxDatapointType_DPT_Value_Resistivity, true
+		return KnxDatapointType_DPT_Value_Resistance, true
 	case 203:
-		return KnxDatapointType_DPT_Value_SelfInductance, true
+		return KnxDatapointType_DPT_Value_Resistivity, true
 	case 204:
-		return KnxDatapointType_DPT_Value_SolidAngle, true
+		return KnxDatapointType_DPT_Value_SelfInductance, true
 	case 205:
-		return KnxDatapointType_DPT_Value_Sound_Intensity, true
+		return KnxDatapointType_DPT_Value_SolidAngle, true
 	case 206:
-		return KnxDatapointType_DPT_Value_Speed, true
+		return KnxDatapointType_DPT_Value_Sound_Intensity, true
 	case 207:
-		return KnxDatapointType_DPT_Value_Stress, true
+		return KnxDatapointType_DPT_Value_Speed, true
 	case 208:
-		return KnxDatapointType_DPT_Value_Surface_Tension, true
+		return KnxDatapointType_DPT_Value_Stress, true
 	case 209:
-		return KnxDatapointType_DPT_Value_Common_Temperature, true
+		return KnxDatapointType_DPT_Value_Surface_Tension, true
 	case 21:
 		return KnxDatapointType_LTIME, true
 	case 210:
-		return KnxDatapointType_DPT_Value_Absolute_Temperature, true
+		return KnxDatapointType_DPT_Value_Common_Temperature, true
 	case 211:
-		return KnxDatapointType_DPT_Value_TemperatureDifference, true
+		return KnxDatapointType_DPT_Value_Absolute_Temperature, true
 	case 212:
-		return KnxDatapointType_DPT_Value_Thermal_Capacity, true
+		return KnxDatapointType_DPT_Value_TemperatureDifference, true
 	case 213:
-		return KnxDatapointType_DPT_Value_Thermal_Conductivity, true
+		return KnxDatapointType_DPT_Value_Thermal_Capacity, true
 	case 214:
-		return KnxDatapointType_DPT_Value_ThermoelectricPower, true
+		return KnxDatapointType_DPT_Value_Thermal_Conductivity, true
 	case 215:
-		return KnxDatapointType_DPT_Value_Time, true
+		return KnxDatapointType_DPT_Value_ThermoelectricPower, true
 	case 216:
-		return KnxDatapointType_DPT_Value_Torque, true
+		return KnxDatapointType_DPT_Value_Time, true
 	case 217:
-		return KnxDatapointType_DPT_Value_Volume, true
+		return KnxDatapointType_DPT_Value_Torque, true
 	case 218:
-		return KnxDatapointType_DPT_Value_Volume_Flux, true
+		return KnxDatapointType_DPT_Value_Volume, true
 	case 219:
-		return KnxDatapointType_DPT_Value_Weight, true
+		return KnxDatapointType_DPT_Value_Volume_Flux, true
 	case 22:
 		return KnxDatapointType_DATE, true
 	case 220:
-		return KnxDatapointType_DPT_Value_Work, true
+		return KnxDatapointType_DPT_Value_Weight, true
 	case 221:
-		return KnxDatapointType_DPT_Value_ApparentPower, true
+		return KnxDatapointType_DPT_Value_Work, true
 	case 222:
-		return KnxDatapointType_DPT_Volume_Flux_Meter, true
+		return KnxDatapointType_DPT_Value_ApparentPower, true
 	case 223:
-		return KnxDatapointType_DPT_Volume_Flux_ls, true
+		return KnxDatapointType_DPT_Volume_Flux_Meter, true
 	case 224:
-		return KnxDatapointType_DPT_Access_Data, true
+		return KnxDatapointType_DPT_Volume_Flux_ls, true
 	case 225:
-		return KnxDatapointType_DPT_String_ASCII, true
+		return KnxDatapointType_DPT_Access_Data, true
 	case 226:
-		return KnxDatapointType_DPT_String_8859_1, true
+		return KnxDatapointType_DPT_String_ASCII, true
 	case 227:
-		return KnxDatapointType_DPT_SceneNumber, true
+		return KnxDatapointType_DPT_String_8859_1, true
 	case 228:
-		return KnxDatapointType_DPT_SceneControl, true
+		return KnxDatapointType_DPT_SceneNumber, true
 	case 229:
-		return KnxDatapointType_DPT_DateTime, true
+		return KnxDatapointType_DPT_SceneControl, true
 	case 23:
 		return KnxDatapointType_TIME_OF_DAY, true
 	case 230:
-		return KnxDatapointType_DPT_SCLOMode, true
+		return KnxDatapointType_DPT_DateTime, true
 	case 231:
-		return KnxDatapointType_DPT_BuildingMode, true
+		return KnxDatapointType_DPT_SCLOMode, true
 	case 232:
-		return KnxDatapointType_DPT_OccMode, true
+		return KnxDatapointType_DPT_BuildingMode, true
 	case 233:
-		return KnxDatapointType_DPT_Priority, true
+		return KnxDatapointType_DPT_OccMode, true
 	case 234:
-		return KnxDatapointType_DPT_LightApplicationMode, true
+		return KnxDatapointType_DPT_Priority, true
 	case 235:
-		return KnxDatapointType_DPT_ApplicationArea, true
+		return KnxDatapointType_DPT_LightApplicationMode, true
 	case 236:
-		return KnxDatapointType_DPT_AlarmClassType, true
+		return KnxDatapointType_DPT_ApplicationArea, true
 	case 237:
-		return KnxDatapointType_DPT_PSUMode, true
+		return KnxDatapointType_DPT_AlarmClassType, true
 	case 238:
-		return KnxDatapointType_DPT_ErrorClass_System, true
+		return KnxDatapointType_DPT_PSUMode, true
 	case 239:
-		return KnxDatapointType_DPT_ErrorClass_HVAC, true
+		return KnxDatapointType_DPT_ErrorClass_System, true
 	case 24:
 		return KnxDatapointType_TOD, true
 	case 240:
-		return KnxDatapointType_DPT_Time_Delay, true
+		return KnxDatapointType_DPT_ErrorClass_HVAC, true
 	case 241:
-		return KnxDatapointType_DPT_Beaufort_Wind_Force_Scale, true
+		return KnxDatapointType_DPT_Time_Delay, true
 	case 242:
-		return KnxDatapointType_DPT_SensorSelect, true
+		return KnxDatapointType_DPT_Beaufort_Wind_Force_Scale, true
 	case 243:
-		return KnxDatapointType_DPT_ActuatorConnectType, true
+		return KnxDatapointType_DPT_SensorSelect, true
 	case 244:
-		return KnxDatapointType_DPT_Cloud_Cover, true
+		return KnxDatapointType_DPT_ActuatorConnectType, true
 	case 245:
-		return KnxDatapointType_DPT_PowerReturnMode, true
+		return KnxDatapointType_DPT_Cloud_Cover, true
 	case 246:
-		return KnxDatapointType_DPT_FuelType, true
+		return KnxDatapointType_DPT_PowerReturnMode, true
 	case 247:
-		return KnxDatapointType_DPT_BurnerType, true
+		return KnxDatapointType_DPT_FuelType, true
 	case 248:
-		return KnxDatapointType_DPT_HVACMode, true
+		return KnxDatapointType_DPT_BurnerType, true
 	case 249:
-		return KnxDatapointType_DPT_DHWMode, true
+		return KnxDatapointType_DPT_HVACMode, true
 	case 25:
 		return KnxDatapointType_DATE_AND_TIME, true
 	case 250:
-		return KnxDatapointType_DPT_LoadPriority, true
+		return KnxDatapointType_DPT_DHWMode, true
 	case 251:
-		return KnxDatapointType_DPT_HVACContrMode, true
+		return KnxDatapointType_DPT_LoadPriority, true
 	case 252:
-		return KnxDatapointType_DPT_HVACEmergMode, true
+		return KnxDatapointType_DPT_HVACContrMode, true
 	case 253:
-		return KnxDatapointType_DPT_ChangeoverMode, true
+		return KnxDatapointType_DPT_HVACEmergMode, true
 	case 254:
-		return KnxDatapointType_DPT_ValveMode, true
+		return KnxDatapointType_DPT_ChangeoverMode, true
 	case 255:
-		return KnxDatapointType_DPT_DamperMode, true
+		return KnxDatapointType_DPT_ValveMode, true
 	case 256:
-		return KnxDatapointType_DPT_HeaterMode, true
+		return KnxDatapointType_DPT_DamperMode, true
 	case 257:
-		return KnxDatapointType_DPT_FanMode, true
+		return KnxDatapointType_DPT_HeaterMode, true
 	case 258:
-		return KnxDatapointType_DPT_MasterSlaveMode, true
+		return KnxDatapointType_DPT_FanMode, true
 	case 259:
-		return KnxDatapointType_DPT_StatusRoomSetp, true
+		return KnxDatapointType_DPT_MasterSlaveMode, true
 	case 26:
 		return KnxDatapointType_DT, true
 	case 260:
-		return KnxDatapointType_DPT_Metering_DeviceType, true
+		return KnxDatapointType_DPT_StatusRoomSetp, true
 	case 261:
-		return KnxDatapointType_DPT_HumDehumMode, true
+		return KnxDatapointType_DPT_Metering_DeviceType, true
 	case 262:
-		return KnxDatapointType_DPT_EnableHCStage, true
+		return KnxDatapointType_DPT_HumDehumMode, true
 	case 263:
-		return KnxDatapointType_DPT_ADAType, true
+		return KnxDatapointType_DPT_EnableHCStage, true
 	case 264:
-		return KnxDatapointType_DPT_BackupMode, true
+		return KnxDatapointType_DPT_ADAType, true
 	case 265:
-		return KnxDatapointType_DPT_StartSynchronization, true
+		return KnxDatapointType_DPT_BackupMode, true
 	case 266:
-		return KnxDatapointType_DPT_Behaviour_Lock_Unlock, true
+		return KnxDatapointType_DPT_StartSynchronization, true
 	case 267:
-		return KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down, true
+		return KnxDatapointType_DPT_Behaviour_Lock_Unlock, true
 	case 268:
-		return KnxDatapointType_DPT_DALI_Fade_Time, true
+		return KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down, true
 	case 269:
-		return KnxDatapointType_DPT_BlinkingMode, true
+		return KnxDatapointType_DPT_DALI_Fade_Time, true
 	case 27:
 		return KnxDatapointType_DPT_Switch, true
 	case 270:
-		return KnxDatapointType_DPT_LightControlMode, true
+		return KnxDatapointType_DPT_BlinkingMode, true
 	case 271:
-		return KnxDatapointType_DPT_SwitchPBModel, true
+		return KnxDatapointType_DPT_LightControlMode, true
 	case 272:
-		return KnxDatapointType_DPT_PBAction, true
+		return KnxDatapointType_DPT_SwitchPBModel, true
 	case 273:
-		return KnxDatapointType_DPT_DimmPBModel, true
+		return KnxDatapointType_DPT_PBAction, true
 	case 274:
-		return KnxDatapointType_DPT_SwitchOnMode, true
+		return KnxDatapointType_DPT_DimmPBModel, true
 	case 275:
-		return KnxDatapointType_DPT_LoadTypeSet, true
+		return KnxDatapointType_DPT_SwitchOnMode, true
 	case 276:
-		return KnxDatapointType_DPT_LoadTypeDetected, true
+		return KnxDatapointType_DPT_LoadTypeSet, true
 	case 277:
-		return KnxDatapointType_DPT_Converter_Test_Control, true
+		return KnxDatapointType_DPT_LoadTypeDetected, true
 	case 278:
-		return KnxDatapointType_DPT_SABExcept_Behaviour, true
+		return KnxDatapointType_DPT_Converter_Test_Control, true
 	case 279:
-		return KnxDatapointType_DPT_SABBehaviour_Lock_Unlock, true
+		return KnxDatapointType_DPT_SABExcept_Behaviour, true
 	case 28:
 		return KnxDatapointType_DPT_Bool, true
 	case 280:
-		return KnxDatapointType_DPT_SSSBMode, true
+		return KnxDatapointType_DPT_SABBehaviour_Lock_Unlock, true
 	case 281:
-		return KnxDatapointType_DPT_BlindsControlMode, true
+		return KnxDatapointType_DPT_SSSBMode, true
 	case 282:
-		return KnxDatapointType_DPT_CommMode, true
+		return KnxDatapointType_DPT_BlindsControlMode, true
 	case 283:
-		return KnxDatapointType_DPT_AddInfoTypes, true
+		return KnxDatapointType_DPT_CommMode, true
 	case 284:
-		return KnxDatapointType_DPT_RF_ModeSelect, true
+		return KnxDatapointType_DPT_AddInfoTypes, true
 	case 285:
-		return KnxDatapointType_DPT_RF_FilterSelect, true
+		return KnxDatapointType_DPT_RF_ModeSelect, true
 	case 286:
-		return KnxDatapointType_DPT_StatusGen, true
+		return KnxDatapointType_DPT_RF_FilterSelect, true
 	case 287:
-		return KnxDatapointType_DPT_Device_Control, true
+		return KnxDatapointType_DPT_StatusGen, true
 	case 288:
-		return KnxDatapointType_DPT_ForceSign, true
+		return KnxDatapointType_DPT_Device_Control, true
 	case 289:
-		return KnxDatapointType_DPT_ForceSignCool, true
+		return KnxDatapointType_DPT_ForceSign, true
 	case 29:
 		return KnxDatapointType_DPT_Enable, true
 	case 290:
-		return KnxDatapointType_DPT_StatusRHC, true
+		return KnxDatapointType_DPT_ForceSignCool, true
 	case 291:
-		return KnxDatapointType_DPT_StatusSDHWC, true
+		return KnxDatapointType_DPT_StatusRHC, true
 	case 292:
-		return KnxDatapointType_DPT_FuelTypeSet, true
+		return KnxDatapointType_DPT_StatusSDHWC, true
 	case 293:
-		return KnxDatapointType_DPT_StatusRCC, true
+		return KnxDatapointType_DPT_FuelTypeSet, true
 	case 294:
-		return KnxDatapointType_DPT_StatusAHU, true
+		return KnxDatapointType_DPT_StatusRCC, true
 	case 295:
-		return KnxDatapointType_DPT_CombinedStatus_RTSM, true
+		return KnxDatapointType_DPT_StatusAHU, true
 	case 296:
-		return KnxDatapointType_DPT_LightActuatorErrorInfo, true
+		return KnxDatapointType_DPT_CombinedStatus_RTSM, true
 	case 297:
-		return KnxDatapointType_DPT_RF_ModeInfo, true
+		return KnxDatapointType_DPT_LightActuatorErrorInfo, true
 	case 298:
-		return KnxDatapointType_DPT_RF_FilterInfo, true
+		return KnxDatapointType_DPT_RF_ModeInfo, true
 	case 299:
-		return KnxDatapointType_DPT_Channel_Activation_8, true
+		return KnxDatapointType_DPT_RF_FilterInfo, true
 	case 3:
 		return KnxDatapointType_WORD, true
 	case 30:
 		return KnxDatapointType_DPT_Ramp, true
 	case 300:
-		return KnxDatapointType_DPT_StatusDHWC, true
+		return KnxDatapointType_DPT_Channel_Activation_8, true
 	case 301:
-		return KnxDatapointType_DPT_StatusRHCC, true
+		return KnxDatapointType_DPT_StatusDHWC, true
 	case 302:
-		return KnxDatapointType_DPT_CombinedStatus_HVA, true
+		return KnxDatapointType_DPT_StatusRHCC, true
 	case 303:
-		return KnxDatapointType_DPT_CombinedStatus_RTC, true
+		return KnxDatapointType_DPT_CombinedStatus_HVA, true
 	case 304:
-		return KnxDatapointType_DPT_Media, true
+		return KnxDatapointType_DPT_CombinedStatus_RTC, true
 	case 305:
-		return KnxDatapointType_DPT_Channel_Activation_16, true
+		return KnxDatapointType_DPT_Media, true
 	case 306:
-		return KnxDatapointType_DPT_OnOffAction, true
+		return KnxDatapointType_DPT_Channel_Activation_16, true
 	case 307:
-		return KnxDatapointType_DPT_Alarm_Reaction, true
+		return KnxDatapointType_DPT_OnOffAction, true
 	case 308:
-		return KnxDatapointType_DPT_UpDown_Action, true
+		return KnxDatapointType_DPT_Alarm_Reaction, true
 	case 309:
-		return KnxDatapointType_DPT_HVAC_PB_Action, true
+		return KnxDatapointType_DPT_UpDown_Action, true
 	case 31:
 		return KnxDatapointType_DPT_Alarm, true
 	case 310:
-		return KnxDatapointType_DPT_DoubleNibble, true
+		return KnxDatapointType_DPT_HVAC_PB_Action, true
 	case 311:
-		return KnxDatapointType_DPT_SceneInfo, true
+		return KnxDatapointType_DPT_DoubleNibble, true
 	case 312:
-		return KnxDatapointType_DPT_CombinedInfoOnOff, true
+		return KnxDatapointType_DPT_SceneInfo, true
 	case 313:
-		return KnxDatapointType_DPT_ActiveEnergy_V64, true
+		return KnxDatapointType_DPT_CombinedInfoOnOff, true
 	case 314:
-		return KnxDatapointType_DPT_ApparantEnergy_V64, true
+		return KnxDatapointType_DPT_ActiveEnergy_V64, true
 	case 315:
-		return KnxDatapointType_DPT_ReactiveEnergy_V64, true
+		return KnxDatapointType_DPT_ApparantEnergy_V64, true
 	case 316:
-		return KnxDatapointType_DPT_Channel_Activation_24, true
+		return KnxDatapointType_DPT_ReactiveEnergy_V64, true
 	case 317:
-		return KnxDatapointType_DPT_HVACModeNext, true
+		return KnxDatapointType_DPT_Channel_Activation_24, true
 	case 318:
-		return KnxDatapointType_DPT_DHWModeNext, true
+		return KnxDatapointType_DPT_HVACModeNext, true
 	case 319:
-		return KnxDatapointType_DPT_OccModeNext, true
+		return KnxDatapointType_DPT_DHWModeNext, true
 	case 32:
 		return KnxDatapointType_DPT_BinaryValue, true
 	case 320:
-		return KnxDatapointType_DPT_BuildingModeNext, true
+		return KnxDatapointType_DPT_OccModeNext, true
 	case 321:
-		return KnxDatapointType_DPT_StatusLightingActuator, true
+		return KnxDatapointType_DPT_BuildingModeNext, true
 	case 322:
-		return KnxDatapointType_DPT_Version, true
+		return KnxDatapointType_DPT_StatusLightingActuator, true
 	case 323:
-		return KnxDatapointType_DPT_AlarmInfo, true
+		return KnxDatapointType_DPT_Version, true
 	case 324:
-		return KnxDatapointType_DPT_TempRoomSetpSetF16_3, true
+		return KnxDatapointType_DPT_AlarmInfo, true
 	case 325:
-		return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3, true
+		return KnxDatapointType_DPT_TempRoomSetpSetF16_3, true
 	case 326:
-		return KnxDatapointType_DPT_Scaling_Speed, true
+		return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3, true
 	case 327:
-		return KnxDatapointType_DPT_Scaling_Step_Time, true
+		return KnxDatapointType_DPT_Scaling_Speed, true
 	case 328:
-		return KnxDatapointType_DPT_MeteringValue, true
+		return KnxDatapointType_DPT_Scaling_Step_Time, true
 	case 329:
-		return KnxDatapointType_DPT_MBus_Address, true
+		return KnxDatapointType_DPT_MeteringValue, true
 	case 33:
 		return KnxDatapointType_DPT_Step, true
 	case 330:
-		return KnxDatapointType_DPT_Colour_RGB, true
+		return KnxDatapointType_DPT_MBus_Address, true
 	case 331:
-		return KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII, true
+		return KnxDatapointType_DPT_Colour_RGB, true
 	case 332:
-		return KnxDatapointType_DPT_Tariff_ActiveEnergy, true
+		return KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII, true
 	case 333:
-		return KnxDatapointType_DPT_Prioritised_Mode_Control, true
+		return KnxDatapointType_DPT_Tariff_ActiveEnergy, true
 	case 334:
-		return KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic, true
+		return KnxDatapointType_DPT_Prioritised_Mode_Control, true
 	case 335:
-		return KnxDatapointType_DPT_DALI_Diagnostics, true
+		return KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic, true
 	case 336:
-		return KnxDatapointType_DPT_CombinedPosition, true
+		return KnxDatapointType_DPT_DALI_Diagnostics, true
 	case 337:
-		return KnxDatapointType_DPT_StatusSAB, true
+		return KnxDatapointType_DPT_CombinedPosition, true
 	case 338:
-		return KnxDatapointType_DPT_Colour_xyY, true
+		return KnxDatapointType_DPT_StatusSAB, true
 	case 339:
-		return KnxDatapointType_DPT_Converter_Status, true
+		return KnxDatapointType_DPT_Colour_xyY, true
 	case 34:
 		return KnxDatapointType_DPT_UpDown, true
 	case 340:
-		return KnxDatapointType_DPT_Converter_Test_Result, true
+		return KnxDatapointType_DPT_Converter_Status, true
 	case 341:
-		return KnxDatapointType_DPT_Battery_Info, true
+		return KnxDatapointType_DPT_Converter_Test_Result, true
 	case 342:
-		return KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition, true
+		return KnxDatapointType_DPT_Battery_Info, true
 	case 343:
-		return KnxDatapointType_DPT_Brightness_Colour_Temperature_Control, true
+		return KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition, true
 	case 344:
-		return KnxDatapointType_DPT_Colour_RGBW, true
+		return KnxDatapointType_DPT_Brightness_Colour_Temperature_Control, true
 	case 345:
-		return KnxDatapointType_DPT_Relative_Control_RGBW, true
+		return KnxDatapointType_DPT_Colour_RGBW, true
 	case 346:
-		return KnxDatapointType_DPT_Relative_Control_RGB, true
+		return KnxDatapointType_DPT_Relative_Control_RGBW, true
 	case 347:
-		return KnxDatapointType_DPT_GeographicalLocation, true
+		return KnxDatapointType_DPT_Relative_Control_RGB, true
 	case 348:
-		return KnxDatapointType_DPT_TempRoomSetpSetF16_4, true
+		return KnxDatapointType_DPT_GeographicalLocation, true
 	case 349:
-		return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4, true
+		return KnxDatapointType_DPT_TempRoomSetpSetF16_4, true
 	case 35:
 		return KnxDatapointType_DPT_OpenClose, true
+	case 350:
+		return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4, true
 	case 36:
 		return KnxDatapointType_DPT_Start, true
 	case 37:
@@ -5761,6 +5777,8 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_ULINT, true
 	case "DPT_Concentration_ygm3":
 		return KnxDatapointType_DPT_Concentration_ygm3, true
+	case "DPT_Coefficient":
+		return KnxDatapointType_DPT_Coefficient, true
 	case "DPT_TimeOfDay":
 		return KnxDatapointType_DPT_TimeOfDay, true
 	case "DPT_Date":
@@ -5777,10 +5795,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_VolumeLiquid_Litre, true
 	case "DPT_Volume_m_3":
 		return KnxDatapointType_DPT_Volume_m_3, true
-	case "DPT_Value_4_Count":
-		return KnxDatapointType_DPT_Value_4_Count, true
 	case "LINT":
 		return KnxDatapointType_LINT, true
+	case "DPT_Value_4_Count":
+		return KnxDatapointType_DPT_Value_4_Count, true
 	case "DPT_FlowRate_m3h":
 		return KnxDatapointType_DPT_FlowRate_m3h, true
 	case "DPT_ActiveEnergy":
@@ -5799,10 +5817,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_ActiveEnergy_MWh, true
 	case "DPT_LongDeltaTimeSec":
 		return KnxDatapointType_DPT_LongDeltaTimeSec, true
-	case "DPT_DeltaVolumeLiquid_Litre":
-		return KnxDatapointType_DPT_DeltaVolumeLiquid_Litre, true
 	case "REAL":
 		return KnxDatapointType_REAL, true
+	case "DPT_DeltaVolumeLiquid_Litre":
+		return KnxDatapointType_DPT_DeltaVolumeLiquid_Litre, true
 	case "DPT_DeltaVolume_m_3":
 		return KnxDatapointType_DPT_DeltaVolume_m_3, true
 	case "DPT_Value_Acceleration":
@@ -5821,10 +5839,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_AngleRad, true
 	case "DPT_Value_AngleDeg":
 		return KnxDatapointType_DPT_Value_AngleDeg, true
-	case "DPT_Value_Angular_Momentum":
-		return KnxDatapointType_DPT_Value_Angular_Momentum, true
 	case "LREAL":
 		return KnxDatapointType_LREAL, true
+	case "DPT_Value_Angular_Momentum":
+		return KnxDatapointType_DPT_Value_Angular_Momentum, true
 	case "DPT_Value_Angular_Velocity":
 		return KnxDatapointType_DPT_Value_Angular_Velocity, true
 	case "DPT_Value_Area":
@@ -5843,10 +5861,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_Electrical_Conductivity, true
 	case "DPT_Value_Density":
 		return KnxDatapointType_DPT_Value_Density, true
-	case "DPT_Value_Electric_Charge":
-		return KnxDatapointType_DPT_Value_Electric_Charge, true
 	case "CHAR":
 		return KnxDatapointType_CHAR, true
+	case "DPT_Value_Electric_Charge":
+		return KnxDatapointType_DPT_Value_Electric_Charge, true
 	case "DPT_Value_Electric_Current":
 		return KnxDatapointType_DPT_Value_Electric_Current, true
 	case "DPT_Value_Electric_CurrentDensity":
@@ -5865,10 +5883,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_Electric_Polarization, true
 	case "DPT_Value_Electric_Potential":
 		return KnxDatapointType_DPT_Value_Electric_Potential, true
-	case "DPT_Value_Electric_PotentialDifference":
-		return KnxDatapointType_DPT_Value_Electric_PotentialDifference, true
 	case "WCHAR":
 		return KnxDatapointType_WCHAR, true
+	case "DPT_Value_Electric_PotentialDifference":
+		return KnxDatapointType_DPT_Value_Electric_PotentialDifference, true
 	case "DPT_Value_ElectromagneticMoment":
 		return KnxDatapointType_DPT_Value_ElectromagneticMoment, true
 	case "DPT_Value_Electromotive_Force":
@@ -5887,10 +5905,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_Heat_FlowRate, true
 	case "DPT_Value_Heat_Quantity":
 		return KnxDatapointType_DPT_Value_Heat_Quantity, true
-	case "DPT_Value_Impedance":
-		return KnxDatapointType_DPT_Value_Impedance, true
 	case "STRING":
 		return KnxDatapointType_STRING, true
+	case "DPT_Value_Impedance":
+		return KnxDatapointType_DPT_Value_Impedance, true
 	case "DPT_Value_Length":
 		return KnxDatapointType_DPT_Value_Length, true
 	case "DPT_Value_Light_Quantity":
@@ -5909,10 +5927,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_Magnetic_FluxDensity, true
 	case "DPT_Value_Magnetic_Moment":
 		return KnxDatapointType_DPT_Value_Magnetic_Moment, true
-	case "DPT_Value_Magnetic_Polarization":
-		return KnxDatapointType_DPT_Value_Magnetic_Polarization, true
 	case "WSTRING":
 		return KnxDatapointType_WSTRING, true
+	case "DPT_Value_Magnetic_Polarization":
+		return KnxDatapointType_DPT_Value_Magnetic_Polarization, true
 	case "DPT_Value_Magnetization":
 		return KnxDatapointType_DPT_Value_Magnetization, true
 	case "DPT_Value_MagnetomotiveForce":
@@ -5931,12 +5949,12 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_Power, true
 	case "DPT_Value_Power_Factor":
 		return KnxDatapointType_DPT_Value_Power_Factor, true
-	case "DPT_Value_Pressure":
-		return KnxDatapointType_DPT_Value_Pressure, true
 	case "BYTE":
 		return KnxDatapointType_BYTE, true
 	case "TIME":
 		return KnxDatapointType_TIME, true
+	case "DPT_Value_Pressure":
+		return KnxDatapointType_DPT_Value_Pressure, true
 	case "DPT_Value_Reactance":
 		return KnxDatapointType_DPT_Value_Reactance, true
 	case "DPT_Value_Resistance":
@@ -5955,10 +5973,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_Stress, true
 	case "DPT_Value_Surface_Tension":
 		return KnxDatapointType_DPT_Value_Surface_Tension, true
-	case "DPT_Value_Common_Temperature":
-		return KnxDatapointType_DPT_Value_Common_Temperature, true
 	case "LTIME":
 		return KnxDatapointType_LTIME, true
+	case "DPT_Value_Common_Temperature":
+		return KnxDatapointType_DPT_Value_Common_Temperature, true
 	case "DPT_Value_Absolute_Temperature":
 		return KnxDatapointType_DPT_Value_Absolute_Temperature, true
 	case "DPT_Value_TemperatureDifference":
@@ -5977,10 +5995,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Value_Volume, true
 	case "DPT_Value_Volume_Flux":
 		return KnxDatapointType_DPT_Value_Volume_Flux, true
-	case "DPT_Value_Weight":
-		return KnxDatapointType_DPT_Value_Weight, true
 	case "DATE":
 		return KnxDatapointType_DATE, true
+	case "DPT_Value_Weight":
+		return KnxDatapointType_DPT_Value_Weight, true
 	case "DPT_Value_Work":
 		return KnxDatapointType_DPT_Value_Work, true
 	case "DPT_Value_ApparentPower":
@@ -5999,10 +6017,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_SceneNumber, true
 	case "DPT_SceneControl":
 		return KnxDatapointType_DPT_SceneControl, true
-	case "DPT_DateTime":
-		return KnxDatapointType_DPT_DateTime, true
 	case "TIME_OF_DAY":
 		return KnxDatapointType_TIME_OF_DAY, true
+	case "DPT_DateTime":
+		return KnxDatapointType_DPT_DateTime, true
 	case "DPT_SCLOMode":
 		return KnxDatapointType_DPT_SCLOMode, true
 	case "DPT_BuildingMode":
@@ -6021,10 +6039,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_PSUMode, true
 	case "DPT_ErrorClass_System":
 		return KnxDatapointType_DPT_ErrorClass_System, true
-	case "DPT_ErrorClass_HVAC":
-		return KnxDatapointType_DPT_ErrorClass_HVAC, true
 	case "TOD":
 		return KnxDatapointType_TOD, true
+	case "DPT_ErrorClass_HVAC":
+		return KnxDatapointType_DPT_ErrorClass_HVAC, true
 	case "DPT_Time_Delay":
 		return KnxDatapointType_DPT_Time_Delay, true
 	case "DPT_Beaufort_Wind_Force_Scale":
@@ -6043,10 +6061,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_BurnerType, true
 	case "DPT_HVACMode":
 		return KnxDatapointType_DPT_HVACMode, true
-	case "DPT_DHWMode":
-		return KnxDatapointType_DPT_DHWMode, true
 	case "DATE_AND_TIME":
 		return KnxDatapointType_DATE_AND_TIME, true
+	case "DPT_DHWMode":
+		return KnxDatapointType_DPT_DHWMode, true
 	case "DPT_LoadPriority":
 		return KnxDatapointType_DPT_LoadPriority, true
 	case "DPT_HVACContrMode":
@@ -6065,10 +6083,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_FanMode, true
 	case "DPT_MasterSlaveMode":
 		return KnxDatapointType_DPT_MasterSlaveMode, true
-	case "DPT_StatusRoomSetp":
-		return KnxDatapointType_DPT_StatusRoomSetp, true
 	case "DT":
 		return KnxDatapointType_DT, true
+	case "DPT_StatusRoomSetp":
+		return KnxDatapointType_DPT_StatusRoomSetp, true
 	case "DPT_Metering_DeviceType":
 		return KnxDatapointType_DPT_Metering_DeviceType, true
 	case "DPT_HumDehumMode":
@@ -6087,10 +6105,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down, true
 	case "DPT_DALI_Fade_Time":
 		return KnxDatapointType_DPT_DALI_Fade_Time, true
-	case "DPT_BlinkingMode":
-		return KnxDatapointType_DPT_BlinkingMode, true
 	case "DPT_Switch":
 		return KnxDatapointType_DPT_Switch, true
+	case "DPT_BlinkingMode":
+		return KnxDatapointType_DPT_BlinkingMode, true
 	case "DPT_LightControlMode":
 		return KnxDatapointType_DPT_LightControlMode, true
 	case "DPT_SwitchPBModel":
@@ -6109,10 +6127,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Converter_Test_Control, true
 	case "DPT_SABExcept_Behaviour":
 		return KnxDatapointType_DPT_SABExcept_Behaviour, true
-	case "DPT_SABBehaviour_Lock_Unlock":
-		return KnxDatapointType_DPT_SABBehaviour_Lock_Unlock, true
 	case "DPT_Bool":
 		return KnxDatapointType_DPT_Bool, true
+	case "DPT_SABBehaviour_Lock_Unlock":
+		return KnxDatapointType_DPT_SABBehaviour_Lock_Unlock, true
 	case "DPT_SSSBMode":
 		return KnxDatapointType_DPT_SSSBMode, true
 	case "DPT_BlindsControlMode":
@@ -6131,10 +6149,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Device_Control, true
 	case "DPT_ForceSign":
 		return KnxDatapointType_DPT_ForceSign, true
-	case "DPT_ForceSignCool":
-		return KnxDatapointType_DPT_ForceSignCool, true
 	case "DPT_Enable":
 		return KnxDatapointType_DPT_Enable, true
+	case "DPT_ForceSignCool":
+		return KnxDatapointType_DPT_ForceSignCool, true
 	case "DPT_StatusRHC":
 		return KnxDatapointType_DPT_StatusRHC, true
 	case "DPT_StatusSDHWC":
@@ -6153,12 +6171,12 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_RF_ModeInfo, true
 	case "DPT_RF_FilterInfo":
 		return KnxDatapointType_DPT_RF_FilterInfo, true
-	case "DPT_Channel_Activation_8":
-		return KnxDatapointType_DPT_Channel_Activation_8, true
 	case "WORD":
 		return KnxDatapointType_WORD, true
 	case "DPT_Ramp":
 		return KnxDatapointType_DPT_Ramp, true
+	case "DPT_Channel_Activation_8":
+		return KnxDatapointType_DPT_Channel_Activation_8, true
 	case "DPT_StatusDHWC":
 		return KnxDatapointType_DPT_StatusDHWC, true
 	case "DPT_StatusRHCC":
@@ -6177,10 +6195,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Alarm_Reaction, true
 	case "DPT_UpDown_Action":
 		return KnxDatapointType_DPT_UpDown_Action, true
-	case "DPT_HVAC_PB_Action":
-		return KnxDatapointType_DPT_HVAC_PB_Action, true
 	case "DPT_Alarm":
 		return KnxDatapointType_DPT_Alarm, true
+	case "DPT_HVAC_PB_Action":
+		return KnxDatapointType_DPT_HVAC_PB_Action, true
 	case "DPT_DoubleNibble":
 		return KnxDatapointType_DPT_DoubleNibble, true
 	case "DPT_SceneInfo":
@@ -6199,10 +6217,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_HVACModeNext, true
 	case "DPT_DHWModeNext":
 		return KnxDatapointType_DPT_DHWModeNext, true
-	case "DPT_OccModeNext":
-		return KnxDatapointType_DPT_OccModeNext, true
 	case "DPT_BinaryValue":
 		return KnxDatapointType_DPT_BinaryValue, true
+	case "DPT_OccModeNext":
+		return KnxDatapointType_DPT_OccModeNext, true
 	case "DPT_BuildingModeNext":
 		return KnxDatapointType_DPT_BuildingModeNext, true
 	case "DPT_StatusLightingActuator":
@@ -6221,10 +6239,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_Scaling_Step_Time, true
 	case "DPT_MeteringValue":
 		return KnxDatapointType_DPT_MeteringValue, true
-	case "DPT_MBus_Address":
-		return KnxDatapointType_DPT_MBus_Address, true
 	case "DPT_Step":
 		return KnxDatapointType_DPT_Step, true
+	case "DPT_MBus_Address":
+		return KnxDatapointType_DPT_MBus_Address, true
 	case "DPT_Colour_RGB":
 		return KnxDatapointType_DPT_Colour_RGB, true
 	case "DPT_LanguageCodeAlpha2_ASCII":
@@ -6243,10 +6261,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_StatusSAB, true
 	case "DPT_Colour_xyY":
 		return KnxDatapointType_DPT_Colour_xyY, true
-	case "DPT_Converter_Status":
-		return KnxDatapointType_DPT_Converter_Status, true
 	case "DPT_UpDown":
 		return KnxDatapointType_DPT_UpDown, true
+	case "DPT_Converter_Status":
+		return KnxDatapointType_DPT_Converter_Status, true
 	case "DPT_Converter_Test_Result":
 		return KnxDatapointType_DPT_Converter_Test_Result, true
 	case "DPT_Battery_Info":
@@ -6265,10 +6283,10 @@ func KnxDatapointTypeByName(value string) (enum KnxDatapointType, ok bool) {
 		return KnxDatapointType_DPT_GeographicalLocation, true
 	case "DPT_TempRoomSetpSetF16_4":
 		return KnxDatapointType_DPT_TempRoomSetpSetF16_4, true
-	case "DPT_TempRoomSetpSetShiftF16_4":
-		return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4, true
 	case "DPT_OpenClose":
 		return KnxDatapointType_DPT_OpenClose, true
+	case "DPT_TempRoomSetpSetShiftF16_4":
+		return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4, true
 	case "DPT_Start":
 		return KnxDatapointType_DPT_Start, true
 	case "DPT_State":
@@ -6524,6 +6542,8 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "ULINT"
 	case KnxDatapointType_DPT_Concentration_ygm3:
 		return "DPT_Concentration_ygm3"
+	case KnxDatapointType_DPT_Coefficient:
+		return "DPT_Coefficient"
 	case KnxDatapointType_DPT_TimeOfDay:
 		return "DPT_TimeOfDay"
 	case KnxDatapointType_DPT_Date:
@@ -6540,10 +6560,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_VolumeLiquid_Litre"
 	case KnxDatapointType_DPT_Volume_m_3:
 		return "DPT_Volume_m_3"
-	case KnxDatapointType_DPT_Value_4_Count:
-		return "DPT_Value_4_Count"
 	case KnxDatapointType_LINT:
 		return "LINT"
+	case KnxDatapointType_DPT_Value_4_Count:
+		return "DPT_Value_4_Count"
 	case KnxDatapointType_DPT_FlowRate_m3h:
 		return "DPT_FlowRate_m3h"
 	case KnxDatapointType_DPT_ActiveEnergy:
@@ -6562,10 +6582,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_ActiveEnergy_MWh"
 	case KnxDatapointType_DPT_LongDeltaTimeSec:
 		return "DPT_LongDeltaTimeSec"
-	case KnxDatapointType_DPT_DeltaVolumeLiquid_Litre:
-		return "DPT_DeltaVolumeLiquid_Litre"
 	case KnxDatapointType_REAL:
 		return "REAL"
+	case KnxDatapointType_DPT_DeltaVolumeLiquid_Litre:
+		return "DPT_DeltaVolumeLiquid_Litre"
 	case KnxDatapointType_DPT_DeltaVolume_m_3:
 		return "DPT_DeltaVolume_m_3"
 	case KnxDatapointType_DPT_Value_Acceleration:
@@ -6584,10 +6604,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_AngleRad"
 	case KnxDatapointType_DPT_Value_AngleDeg:
 		return "DPT_Value_AngleDeg"
-	case KnxDatapointType_DPT_Value_Angular_Momentum:
-		return "DPT_Value_Angular_Momentum"
 	case KnxDatapointType_LREAL:
 		return "LREAL"
+	case KnxDatapointType_DPT_Value_Angular_Momentum:
+		return "DPT_Value_Angular_Momentum"
 	case KnxDatapointType_DPT_Value_Angular_Velocity:
 		return "DPT_Value_Angular_Velocity"
 	case KnxDatapointType_DPT_Value_Area:
@@ -6606,10 +6626,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_Electrical_Conductivity"
 	case KnxDatapointType_DPT_Value_Density:
 		return "DPT_Value_Density"
-	case KnxDatapointType_DPT_Value_Electric_Charge:
-		return "DPT_Value_Electric_Charge"
 	case KnxDatapointType_CHAR:
 		return "CHAR"
+	case KnxDatapointType_DPT_Value_Electric_Charge:
+		return "DPT_Value_Electric_Charge"
 	case KnxDatapointType_DPT_Value_Electric_Current:
 		return "DPT_Value_Electric_Current"
 	case KnxDatapointType_DPT_Value_Electric_CurrentDensity:
@@ -6628,10 +6648,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_Electric_Polarization"
 	case KnxDatapointType_DPT_Value_Electric_Potential:
 		return "DPT_Value_Electric_Potential"
-	case KnxDatapointType_DPT_Value_Electric_PotentialDifference:
-		return "DPT_Value_Electric_PotentialDifference"
 	case KnxDatapointType_WCHAR:
 		return "WCHAR"
+	case KnxDatapointType_DPT_Value_Electric_PotentialDifference:
+		return "DPT_Value_Electric_PotentialDifference"
 	case KnxDatapointType_DPT_Value_ElectromagneticMoment:
 		return "DPT_Value_ElectromagneticMoment"
 	case KnxDatapointType_DPT_Value_Electromotive_Force:
@@ -6650,10 +6670,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_Heat_FlowRate"
 	case KnxDatapointType_DPT_Value_Heat_Quantity:
 		return "DPT_Value_Heat_Quantity"
-	case KnxDatapointType_DPT_Value_Impedance:
-		return "DPT_Value_Impedance"
 	case KnxDatapointType_STRING:
 		return "STRING"
+	case KnxDatapointType_DPT_Value_Impedance:
+		return "DPT_Value_Impedance"
 	case KnxDatapointType_DPT_Value_Length:
 		return "DPT_Value_Length"
 	case KnxDatapointType_DPT_Value_Light_Quantity:
@@ -6672,10 +6692,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_Magnetic_FluxDensity"
 	case KnxDatapointType_DPT_Value_Magnetic_Moment:
 		return "DPT_Value_Magnetic_Moment"
-	case KnxDatapointType_DPT_Value_Magnetic_Polarization:
-		return "DPT_Value_Magnetic_Polarization"
 	case KnxDatapointType_WSTRING:
 		return "WSTRING"
+	case KnxDatapointType_DPT_Value_Magnetic_Polarization:
+		return "DPT_Value_Magnetic_Polarization"
 	case KnxDatapointType_DPT_Value_Magnetization:
 		return "DPT_Value_Magnetization"
 	case KnxDatapointType_DPT_Value_MagnetomotiveForce:
@@ -6694,12 +6714,12 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_Power"
 	case KnxDatapointType_DPT_Value_Power_Factor:
 		return "DPT_Value_Power_Factor"
-	case KnxDatapointType_DPT_Value_Pressure:
-		return "DPT_Value_Pressure"
 	case KnxDatapointType_BYTE:
 		return "BYTE"
 	case KnxDatapointType_TIME:
 		return "TIME"
+	case KnxDatapointType_DPT_Value_Pressure:
+		return "DPT_Value_Pressure"
 	case KnxDatapointType_DPT_Value_Reactance:
 		return "DPT_Value_Reactance"
 	case KnxDatapointType_DPT_Value_Resistance:
@@ -6718,10 +6738,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_Stress"
 	case KnxDatapointType_DPT_Value_Surface_Tension:
 		return "DPT_Value_Surface_Tension"
-	case KnxDatapointType_DPT_Value_Common_Temperature:
-		return "DPT_Value_Common_Temperature"
 	case KnxDatapointType_LTIME:
 		return "LTIME"
+	case KnxDatapointType_DPT_Value_Common_Temperature:
+		return "DPT_Value_Common_Temperature"
 	case KnxDatapointType_DPT_Value_Absolute_Temperature:
 		return "DPT_Value_Absolute_Temperature"
 	case KnxDatapointType_DPT_Value_TemperatureDifference:
@@ -6740,10 +6760,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Value_Volume"
 	case KnxDatapointType_DPT_Value_Volume_Flux:
 		return "DPT_Value_Volume_Flux"
-	case KnxDatapointType_DPT_Value_Weight:
-		return "DPT_Value_Weight"
 	case KnxDatapointType_DATE:
 		return "DATE"
+	case KnxDatapointType_DPT_Value_Weight:
+		return "DPT_Value_Weight"
 	case KnxDatapointType_DPT_Value_Work:
 		return "DPT_Value_Work"
 	case KnxDatapointType_DPT_Value_ApparentPower:
@@ -6762,10 +6782,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_SceneNumber"
 	case KnxDatapointType_DPT_SceneControl:
 		return "DPT_SceneControl"
-	case KnxDatapointType_DPT_DateTime:
-		return "DPT_DateTime"
 	case KnxDatapointType_TIME_OF_DAY:
 		return "TIME_OF_DAY"
+	case KnxDatapointType_DPT_DateTime:
+		return "DPT_DateTime"
 	case KnxDatapointType_DPT_SCLOMode:
 		return "DPT_SCLOMode"
 	case KnxDatapointType_DPT_BuildingMode:
@@ -6784,10 +6804,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_PSUMode"
 	case KnxDatapointType_DPT_ErrorClass_System:
 		return "DPT_ErrorClass_System"
-	case KnxDatapointType_DPT_ErrorClass_HVAC:
-		return "DPT_ErrorClass_HVAC"
 	case KnxDatapointType_TOD:
 		return "TOD"
+	case KnxDatapointType_DPT_ErrorClass_HVAC:
+		return "DPT_ErrorClass_HVAC"
 	case KnxDatapointType_DPT_Time_Delay:
 		return "DPT_Time_Delay"
 	case KnxDatapointType_DPT_Beaufort_Wind_Force_Scale:
@@ -6806,10 +6826,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_BurnerType"
 	case KnxDatapointType_DPT_HVACMode:
 		return "DPT_HVACMode"
-	case KnxDatapointType_DPT_DHWMode:
-		return "DPT_DHWMode"
 	case KnxDatapointType_DATE_AND_TIME:
 		return "DATE_AND_TIME"
+	case KnxDatapointType_DPT_DHWMode:
+		return "DPT_DHWMode"
 	case KnxDatapointType_DPT_LoadPriority:
 		return "DPT_LoadPriority"
 	case KnxDatapointType_DPT_HVACContrMode:
@@ -6828,10 +6848,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_FanMode"
 	case KnxDatapointType_DPT_MasterSlaveMode:
 		return "DPT_MasterSlaveMode"
-	case KnxDatapointType_DPT_StatusRoomSetp:
-		return "DPT_StatusRoomSetp"
 	case KnxDatapointType_DT:
 		return "DT"
+	case KnxDatapointType_DPT_StatusRoomSetp:
+		return "DPT_StatusRoomSetp"
 	case KnxDatapointType_DPT_Metering_DeviceType:
 		return "DPT_Metering_DeviceType"
 	case KnxDatapointType_DPT_HumDehumMode:
@@ -6850,10 +6870,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Behaviour_Bus_Power_Up_Down"
 	case KnxDatapointType_DPT_DALI_Fade_Time:
 		return "DPT_DALI_Fade_Time"
-	case KnxDatapointType_DPT_BlinkingMode:
-		return "DPT_BlinkingMode"
 	case KnxDatapointType_DPT_Switch:
 		return "DPT_Switch"
+	case KnxDatapointType_DPT_BlinkingMode:
+		return "DPT_BlinkingMode"
 	case KnxDatapointType_DPT_LightControlMode:
 		return "DPT_LightControlMode"
 	case KnxDatapointType_DPT_SwitchPBModel:
@@ -6872,10 +6892,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Converter_Test_Control"
 	case KnxDatapointType_DPT_SABExcept_Behaviour:
 		return "DPT_SABExcept_Behaviour"
-	case KnxDatapointType_DPT_SABBehaviour_Lock_Unlock:
-		return "DPT_SABBehaviour_Lock_Unlock"
 	case KnxDatapointType_DPT_Bool:
 		return "DPT_Bool"
+	case KnxDatapointType_DPT_SABBehaviour_Lock_Unlock:
+		return "DPT_SABBehaviour_Lock_Unlock"
 	case KnxDatapointType_DPT_SSSBMode:
 		return "DPT_SSSBMode"
 	case KnxDatapointType_DPT_BlindsControlMode:
@@ -6894,10 +6914,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Device_Control"
 	case KnxDatapointType_DPT_ForceSign:
 		return "DPT_ForceSign"
-	case KnxDatapointType_DPT_ForceSignCool:
-		return "DPT_ForceSignCool"
 	case KnxDatapointType_DPT_Enable:
 		return "DPT_Enable"
+	case KnxDatapointType_DPT_ForceSignCool:
+		return "DPT_ForceSignCool"
 	case KnxDatapointType_DPT_StatusRHC:
 		return "DPT_StatusRHC"
 	case KnxDatapointType_DPT_StatusSDHWC:
@@ -6916,12 +6936,12 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_RF_ModeInfo"
 	case KnxDatapointType_DPT_RF_FilterInfo:
 		return "DPT_RF_FilterInfo"
-	case KnxDatapointType_DPT_Channel_Activation_8:
-		return "DPT_Channel_Activation_8"
 	case KnxDatapointType_WORD:
 		return "WORD"
 	case KnxDatapointType_DPT_Ramp:
 		return "DPT_Ramp"
+	case KnxDatapointType_DPT_Channel_Activation_8:
+		return "DPT_Channel_Activation_8"
 	case KnxDatapointType_DPT_StatusDHWC:
 		return "DPT_StatusDHWC"
 	case KnxDatapointType_DPT_StatusRHCC:
@@ -6940,10 +6960,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Alarm_Reaction"
 	case KnxDatapointType_DPT_UpDown_Action:
 		return "DPT_UpDown_Action"
-	case KnxDatapointType_DPT_HVAC_PB_Action:
-		return "DPT_HVAC_PB_Action"
 	case KnxDatapointType_DPT_Alarm:
 		return "DPT_Alarm"
+	case KnxDatapointType_DPT_HVAC_PB_Action:
+		return "DPT_HVAC_PB_Action"
 	case KnxDatapointType_DPT_DoubleNibble:
 		return "DPT_DoubleNibble"
 	case KnxDatapointType_DPT_SceneInfo:
@@ -6962,10 +6982,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_HVACModeNext"
 	case KnxDatapointType_DPT_DHWModeNext:
 		return "DPT_DHWModeNext"
-	case KnxDatapointType_DPT_OccModeNext:
-		return "DPT_OccModeNext"
 	case KnxDatapointType_DPT_BinaryValue:
 		return "DPT_BinaryValue"
+	case KnxDatapointType_DPT_OccModeNext:
+		return "DPT_OccModeNext"
 	case KnxDatapointType_DPT_BuildingModeNext:
 		return "DPT_BuildingModeNext"
 	case KnxDatapointType_DPT_StatusLightingActuator:
@@ -6984,10 +7004,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_Scaling_Step_Time"
 	case KnxDatapointType_DPT_MeteringValue:
 		return "DPT_MeteringValue"
-	case KnxDatapointType_DPT_MBus_Address:
-		return "DPT_MBus_Address"
 	case KnxDatapointType_DPT_Step:
 		return "DPT_Step"
+	case KnxDatapointType_DPT_MBus_Address:
+		return "DPT_MBus_Address"
 	case KnxDatapointType_DPT_Colour_RGB:
 		return "DPT_Colour_RGB"
 	case KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII:
@@ -7006,10 +7026,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_StatusSAB"
 	case KnxDatapointType_DPT_Colour_xyY:
 		return "DPT_Colour_xyY"
-	case KnxDatapointType_DPT_Converter_Status:
-		return "DPT_Converter_Status"
 	case KnxDatapointType_DPT_UpDown:
 		return "DPT_UpDown"
+	case KnxDatapointType_DPT_Converter_Status:
+		return "DPT_Converter_Status"
 	case KnxDatapointType_DPT_Converter_Test_Result:
 		return "DPT_Converter_Test_Result"
 	case KnxDatapointType_DPT_Battery_Info:
@@ -7028,10 +7048,10 @@ func (e KnxDatapointType) PLC4XEnumName() string {
 		return "DPT_GeographicalLocation"
 	case KnxDatapointType_DPT_TempRoomSetpSetF16_4:
 		return "DPT_TempRoomSetpSetF16_4"
-	case KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4:
-		return "DPT_TempRoomSetpSetShiftF16_4"
 	case KnxDatapointType_DPT_OpenClose:
 		return "DPT_OpenClose"
+	case KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4:
+		return "DPT_TempRoomSetpSetShiftF16_4"
 	case KnxDatapointType_DPT_Start:
 		return "DPT_Start"
 	case KnxDatapointType_DPT_State:
diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
index ec9a1cddb8..03fbb8aa15 100644
--- a/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/protocols/knxnetip/readwrite/model/KnxManufacturer.go
@@ -632,7 +632,7 @@ const (
 	KnxManufacturer_M_DELTA_ELECTRONICS                                  KnxManufacturer = 592
 	KnxManufacturer_M_SHANGHAI_LEWIN_INTELLIGENT_TECHNOLOGY_CO__LTD_     KnxManufacturer = 593
 	KnxManufacturer_M_KG_POWER                                           KnxManufacturer = 594
-	KnxManufacturer_M_ZHEJIANG_MOORGEN_INTELLIGENT_TECHNOLOGY_CO___LTD   KnxManufacturer = 595
+	KnxManufacturer_M_ZHEJIANG_MOORGEN_GROUP_CO__LTD                     KnxManufacturer = 595
 	KnxManufacturer_M_GUANGDONG_KANWAY                                   KnxManufacturer = 596
 	KnxManufacturer_M_RAMIREZ_ENGINEERING_GMBH                           KnxManufacturer = 597
 	KnxManufacturer_M_ZHONGSHAN_TAIYANG_IMPANDEXP__CO_LTD                KnxManufacturer = 598
@@ -1255,7 +1255,7 @@ func init() {
 		KnxManufacturer_M_DELTA_ELECTRONICS,
 		KnxManufacturer_M_SHANGHAI_LEWIN_INTELLIGENT_TECHNOLOGY_CO__LTD_,
 		KnxManufacturer_M_KG_POWER,
-		KnxManufacturer_M_ZHEJIANG_MOORGEN_INTELLIGENT_TECHNOLOGY_CO___LTD,
+		KnxManufacturer_M_ZHEJIANG_MOORGEN_GROUP_CO__LTD,
 		KnxManufacturer_M_GUANGDONG_KANWAY,
 		KnxManufacturer_M_RAMIREZ_ENGINEERING_GMBH,
 		KnxManufacturer_M_ZHONGSHAN_TAIYANG_IMPANDEXP__CO_LTD,
@@ -5969,7 +5969,7 @@ func (e KnxManufacturer) Name() string {
 		}
 	case 595:
 		{ /* '595' */
-			return "Zhejiang Moorgen Intelligent Technology Co., Ltd"
+			return "Zhejiang Moorgen Group Co.,Ltd"
 		}
 	case 596:
 		{ /* '596' */
@@ -7347,7 +7347,7 @@ func KnxManufacturerByValue(value uint16) (enum KnxManufacturer, ok bool) {
 	case 594:
 		return KnxManufacturer_M_KG_POWER, true
 	case 595:
-		return KnxManufacturer_M_ZHEJIANG_MOORGEN_INTELLIGENT_TECHNOLOGY_CO___LTD, true
+		return KnxManufacturer_M_ZHEJIANG_MOORGEN_GROUP_CO__LTD, true
 	case 596:
 		return KnxManufacturer_M_GUANGDONG_KANWAY, true
 	case 597:
@@ -8584,8 +8584,8 @@ func KnxManufacturerByName(value string) (enum KnxManufacturer, ok bool) {
 		return KnxManufacturer_M_SHANGHAI_LEWIN_INTELLIGENT_TECHNOLOGY_CO__LTD_, true
 	case "M_KG_POWER":
 		return KnxManufacturer_M_KG_POWER, true
-	case "M_ZHEJIANG_MOORGEN_INTELLIGENT_TECHNOLOGY_CO___LTD":
-		return KnxManufacturer_M_ZHEJIANG_MOORGEN_INTELLIGENT_TECHNOLOGY_CO___LTD, true
+	case "M_ZHEJIANG_MOORGEN_GROUP_CO__LTD":
+		return KnxManufacturer_M_ZHEJIANG_MOORGEN_GROUP_CO__LTD, true
 	case "M_GUANGDONG_KANWAY":
 		return KnxManufacturer_M_GUANGDONG_KANWAY, true
 	case "M_RAMIREZ_ENGINEERING_GMBH":
@@ -9879,8 +9879,8 @@ func (e KnxManufacturer) PLC4XEnumName() string {
 		return "M_SHANGHAI_LEWIN_INTELLIGENT_TECHNOLOGY_CO__LTD_"
 	case KnxManufacturer_M_KG_POWER:
 		return "M_KG_POWER"
-	case KnxManufacturer_M_ZHEJIANG_MOORGEN_INTELLIGENT_TECHNOLOGY_CO___LTD:
-		return "M_ZHEJIANG_MOORGEN_INTELLIGENT_TECHNOLOGY_CO___LTD"
+	case KnxManufacturer_M_ZHEJIANG_MOORGEN_GROUP_CO__LTD:
+		return "M_ZHEJIANG_MOORGEN_GROUP_CO__LTD"
 	case KnxManufacturer_M_GUANGDONG_KANWAY:
 		return "M_GUANGDONG_KANWAY"
 	case KnxManufacturer_M_RAMIREZ_ENGINEERING_GMBH:
diff --git a/plc4go/spi/testutils/DriverTestRunner.go b/plc4go/spi/testutils/DriverTestRunner.go
index 077bbfff29..68d6ee844c 100644
--- a/plc4go/spi/testutils/DriverTestRunner.go
+++ b/plc4go/spi/testutils/DriverTestRunner.go
@@ -116,7 +116,7 @@ func (m DriverTestsuite) Run(driverManager plc4go.PlcDriverManager, testcase Tes
 			return errors.Wrap(err, "error in setup step "+testStep.name)
 		}
 		// We sleep a bit to not run too fast into the post setup steps and give connections a bit time to settle built up
-		time.Sleep(time.Second)
+		time.Sleep(2 * time.Millisecond)
 	}
 
 	// Run the actual scenario steps
@@ -305,9 +305,9 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 				drainableBytes := testTransportInstance.GetNumDrainableBytes()
 				actualRawOutput, _ := testTransportInstance.DrainWriteBuffer(drainableBytes)
 				return errors.Errorf("error getting bytes from transport. Not enough data available: actual(%d)<expected(%d), \nactual:   0x%X\nexpected: 0x%X\nHexdumps:\n%s",
-					drainableBytes, expectedRawOutputLength, actualRawOutput, expectedRawOutput, utils.DiffHex(actualRawOutput, expectedRawOutput))
+					drainableBytes, expectedRawOutputLength, actualRawOutput, expectedRawOutput, utils.DiffHex(expectedRawOutput, actualRawOutput))
 			}
-			time.Sleep(10 * time.Millisecond)
+			time.Sleep(2 * time.Millisecond)
 		}
 		actualRawOutput, err := testTransportInstance.DrainWriteBuffer(expectedRawOutputLength)
 		if testTransportInstance.GetNumDrainableBytes() != 0 {
@@ -334,7 +334,7 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 					actual, err := m.rootTypeParser(readBufferByteBased)
 					log.Error().Err(err).Msgf("A readable render of expectation:\n%v\nvs actual paket\n%v\n", expectedSerializable, actual)
 				}
-				return errors.Errorf("actual output doesn't match expected output:\nactual:   0x%X\nexpected: 0x%X\nHexdumps:\n%s", actualRawOutput, expectedRawOutput, utils.DiffHex(actualRawOutput, expectedRawOutput))
+				return errors.Errorf("actual output doesn't match expected output:\nactual:   0x%X\nexpected: 0x%X\nHexdumps:\n%s", actualRawOutput, expectedRawOutput, utils.DiffHex(expectedRawOutput, actualRawOutput))
 			}
 		}
 		// If there's a difference, parse the input and display it to simplify debugging
@@ -354,7 +354,7 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 		log.Trace().Msg("Comparing bytes")
 		for i := range expectedRawInput {
 			if expectedRawInput[i] != rawInput[i] {
-				return errors.Errorf("actual output doesn't match expected output:\nactual:   0x%X\nexpected: 0x%X\nHexdumps:\n%s", rawInput, expectedRawInput, utils.DiffHex(rawInput, expectedRawInput))
+				return errors.Errorf("actual output doesn't match expected output:\nactual:   0x%X\nexpected: 0x%X\nHexdumps:\n%s", rawInput, expectedRawInput, utils.DiffHex(expectedRawInput, rawInput))
 			}
 		}
 		// If there's a difference, parse the input and display it to simplify debugging
@@ -415,7 +415,7 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 		}
 		// Sleep for that long
 		log.Debug().Int("delay", delay).Msg("Sleeping")
-		time.Sleep(time.Millisecond * time.Duration(delay))
+		time.Sleep(time.Duration(delay) * time.Millisecond)
 	case StepTypeTerminate:
 		// Simply close the transport connection
 		log.Trace().Msg("closing transport")
diff --git a/plc4go/tests/drivers/tests/eip_driver_test.go b/plc4go/tests/drivers/tests/eip_driver_test.go
index f3a05a4edc..5397e786cb 100644
--- a/plc4go/tests/drivers/tests/eip_driver_test.go
+++ b/plc4go/tests/drivers/tests/eip_driver_test.go
@@ -20,16 +20,25 @@
 package tests
 
 import (
+	"os"
 	"testing"
 
 	"github.com/apache/plc4x/plc4go/internal/eip"
+	"github.com/apache/plc4x/plc4go/pkg/api/config"
 	"github.com/apache/plc4x/plc4go/protocols/eip/readwrite"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
 	_ "github.com/apache/plc4x/plc4go/tests/initializetest"
 	"github.com/rs/zerolog"
+	"github.com/rs/zerolog/log"
 )
 
 func TestEIPDriver(t *testing.T) {
-	zerolog.SetGlobalLevel(zerolog.DebugLevel)
+	log.Logger = log.
+		With().Caller().Logger().
+		Output(zerolog.ConsoleWriter{Out: os.Stderr}).
+		Level(zerolog.DebugLevel)
+	config.TraceTransactionManagerWorkers = true
+	config.TraceTransactionManagerTransactions = true
+	config.TraceDefaultMessageCodecWorker = true
 	testutils.RunDriverTestsuite(t, eip.NewDriver(), "assets/testing/protocols/eip/DriverTestsuite.xml", readwrite.EipXmlParserHelper{})
 }
diff --git a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
index 3a8b12ea1b..d8b8f333f9 100644
--- a/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
+++ b/plc4j/drivers/bacnet/src/main/generated/org/apache/plc4x/java/bacnetip/readwrite/BACnetVendorId.java
@@ -1617,6 +1617,8 @@ public enum BACnetVendorId {
   METRONICAKP_SPJ((int) 1406, (int) 1406, (String) "Metronic AKP Sp. J."),
   TECHKNAVE((int) 1407, (int) 1407, (String) "Techknave"),
   ELSNER_ELEKTRONIK((int) 1408, (int) 1408, (String) "Elsner Elektronik"),
+  LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD(
+      (int) 1409, (int) 1409, (String) "LEFOO Industrial (Hangzhou) Co., Ltd."),
   UNKNOWN_VENDOR((int) 0xFFFF, (int) 0xFFFF, (String) "Unknown");
   private static final Map<Integer, BACnetVendorId> map;
 
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPClassID.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPClassID.java
index d901ab682e..496b937ef1 100644
--- a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPClassID.java
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPClassID.java
@@ -26,7 +26,74 @@ import java.util.Map;
 public enum CIPClassID {
   Identity((int) 0x0001),
   MessageRouter((int) 0x0002),
-  ConnectionManager((int) 0x0006);
+  Assembly((int) 0x0004),
+  Connection((int) 0x0005),
+  ConnectionManager((int) 0x0006),
+  Register((int) 0x0007),
+  Parameter((int) 0x000F),
+  ParameterGroup((int) 0x0010),
+  AcknowledgeHandler((int) 0x002B),
+  Selection((int) 0x002E),
+  File((int) 0x0037),
+  OriginatorConnectionList((int) 0x0045),
+  ConnectionConfiguration((int) 0x00F3),
+  Port((int) 0x00F4),
+  DiscreteInputPoint((int) 0x0008),
+  DiscreteOutputPoint((int) 0x0009),
+  AnalogInputPoint((int) 0x000A),
+  AnalogOutputPoint((int) 0x000B),
+  PresenceSensing((int) 0x000E),
+  Group((int) 0x0012),
+  DiscreteInputGroup((int) 0x001D),
+  DiscreteOutputGroup((int) 0x001E),
+  DiscreteGroup((int) 0x001F),
+  AnalogInputGroup((int) 0x0020),
+  AnalogOutputGroup((int) 0x0021),
+  AnalogGroup((int) 0x0022),
+  PositionSensor((int) 0x0023),
+  PositionControllerSupervisor((int) 0x0024),
+  PositionController((int) 0x0025),
+  BlockSequencer((int) 0x0026),
+  CommandBlock((int) 0x0027),
+  MotorData((int) 0x0028),
+  ControlSupervisor((int) 0x0029),
+  AcDcDrive((int) 0x002A),
+  Overload((int) 0x002C),
+  SDeviceSupervisor((int) 0x0030),
+  SAnalogSensor((int) 0x0031),
+  SAnalogActuator((int) 0x0032),
+  SSingleStageController((int) 0x0033),
+  SGasCalibration((int) 0x0034),
+  SPartialPressure((int) 0x0038),
+  SSensorCalibration((int) 0x0040),
+  EventLog((int) 0x0041),
+  MotionDeviceAxis((int) 0x0042),
+  SafetyAnalogInputGroup((int) 0x004A),
+  BaseEnergy((int) 0x004E),
+  ElectricalEnergy((int) 0x004F),
+  NonElectricalEnergy((int) 0x0050),
+  PowerManagementObject((int) 0x0053),
+  PowerCurtailmentObject((int) 0x005C),
+  DeviceNet((int) 0x0003),
+  Modbus((int) 0x0044),
+  ModbusSerialLink((int) 0x0046),
+  DeviceLevelRing((int) 0x0047),
+  QOS((int) 0x0048),
+  Sercos3Link((int) 0x004C),
+  BaseSwitch((int) 0x0051),
+  Snmp((int) 0x0052),
+  PowerManagement((int) 0x0053),
+  RstpBridge((int) 0x0054),
+  RstpPort((int) 0x0055),
+  ParallelRedundancyProtocol((int) 0x0056),
+  PrpNodesTable((int) 0x0057),
+  ControlNet((int) 0x00F0),
+  ControlNetKeeper((int) 0x00F1),
+  ControlNetScheduling((int) 0x00F2),
+  TcpIpInterface((int) 0x00F5),
+  EthernetLink((int) 0x00F6),
+  CompoNetLink((int) 0x00F7),
+  CompoNetRepeater((int) 0x00F8);
   private static final Map<Integer, CIPClassID> map;
 
   static {
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPStatus.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPStatus.java
index f103a97830..d01443cb6c 100644
--- a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPStatus.java
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CIPStatus.java
@@ -39,7 +39,7 @@ public enum CIPStatus {
   ObjectStateConflict((long) 0x0000000CL),
   ObjectAlreadyExists((long) 0x0000000DL),
   AttributeNotSettable((long) 0x0000000EL),
-  PriviligeViolation((long) 0x0000000FL),
+  PrivilegeViolation((long) 0x0000000FL),
   DeviceStateConflict((long) 0x00000010L),
   ReplyDataTooLarge((long) 0x00000011L),
   FragmentationOfPrimitiveValue((long) 0x00000012L),
diff --git a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipService.java b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipService.java
index 964e55cede..60d97f5f85 100644
--- a/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipService.java
+++ b/plc4j/drivers/eip/src/main/generated/org/apache/plc4x/java/eip/readwrite/CipService.java
@@ -143,6 +143,56 @@ public abstract class CipService implements Message {
         && EvaluationHelper.equals(response, (boolean) true)) {
       builder =
           GetAttributeAllResponse.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x02)
+        && EvaluationHelper.equals(response, (boolean) false)) {
+      builder =
+          SetAttributeAllRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x02)
+        && EvaluationHelper.equals(response, (boolean) true)) {
+      builder =
+          SetAttributeAllResponse.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x03)
+        && EvaluationHelper.equals(response, (boolean) false)) {
+      builder =
+          GetAttributeListRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x03)
+        && EvaluationHelper.equals(response, (boolean) true)) {
+      builder =
+          GetAttributeListResponse.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x04)
+        && EvaluationHelper.equals(response, (boolean) false)) {
+      builder =
+          SetAttributeListRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x04)
+        && EvaluationHelper.equals(response, (boolean) true)) {
+      builder =
+          SetAttributeListResponse.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x0A)
+        && EvaluationHelper.equals(response, (boolean) false)) {
+      builder =
+          MultipleServiceRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x0A)
+        && EvaluationHelper.equals(response, (boolean) true)) {
+      builder =
+          MultipleServiceResponse.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x0E)
+        && EvaluationHelper.equals(response, (boolean) false)) {
+      builder =
+          GetAttributeSingleRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x0E)
+        && EvaluationHelper.equals(response, (boolean) true)) {
+      builder =
+          GetAttributeSingleResponse.staticParseCipServiceBuilder(
+              readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x10)
+        && EvaluationHelper.equals(response, (boolean) false)) {
+      builder =
+          SetAttributeSingleRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
+    } else if (EvaluationHelper.equals(service, (short) 0x10)
+        && EvaluationHelper.equals(response, (boolean) true)) {
+      builder =
+          SetAttributeSingleResponse.staticParseCipServiceBuilder(
+              readBuffer, connected, serviceLen);
     } else if (EvaluationHelper.equals(service, (short) 0x4C)
         && EvaluationHelper.equals(response, (boolean) false)) {
       builder = CipReadRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
@@ -165,14 +215,6 @@ public abstract class CipService implements Message {
       builder =
           CipConnectionManagerCloseResponse.staticParseCipServiceBuilder(
               readBuffer, connected, serviceLen);
-    } else if (EvaluationHelper.equals(service, (short) 0x0A)
-        && EvaluationHelper.equals(response, (boolean) false)) {
-      builder =
-          MultipleServiceRequest.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
-    } else if (EvaluationHelper.equals(service, (short) 0x0A)
-        && EvaluationHelper.equals(response, (boolean) true)) {
-      builder =
-          MultipleServiceResponse.staticParseCipServiceBuilder(readBuffer, connected, serviceLen);
     } else if (EvaluationHelper.equals(service, (short) 0x52)
         && EvaluationHelper.equals(response, (boolean) false)
         && EvaluationHelper.equals(connected, (boolean) false)) {
diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/protocol/EipProtocolLogic.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/protocol/EipProtocolLogic.java
index 171953116a..66d8f1d46b 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/protocol/EipProtocolLogic.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/protocol/EipProtocolLogic.java
@@ -468,8 +468,7 @@ public class EipProtocolLogic extends Plc4xProtocolBase<EipPacket> implements Ha
                         // Finish the request-transaction.
                         transaction.endRequest();
                     }));
-                internalFuture.get(REQUEST_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS);
-            } catch (SerializationException | TimeoutException | ExecutionException | InterruptedException e) {
+            } catch (SerializationException e) {
                 e.printStackTrace();
             }
         }
diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/tag/EipTag.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/tag/EipTag.java
index 1fa93dfc7f..b495235a36 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/tag/EipTag.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/tag/EipTag.java
@@ -50,6 +50,7 @@ public class EipTag implements PlcTag, Serializable {
 
     public EipTag(String tag) {
         this.tag = tag;
+        this.elementNb = 1;
     }
 
     public EipTag(String tag, int elementNb) {
@@ -111,7 +112,7 @@ public class EipTag implements PlcTag, Serializable {
         Matcher matcher = ADDRESS_PATTERN.matcher(tagString);
         if (matcher.matches()) {
             String tag = matcher.group(TAG);
-            int nb = 0;
+            int nb = 1;
             CIPDataTypeCode type;
             if (!matcher.group(ELEMENTS).isEmpty()) {
                 nb = Integer.parseInt(matcher.group(ELEMENTS));
@@ -122,15 +123,9 @@ public class EipTag implements PlcTag, Serializable {
                 type = CIPDataTypeCode.DINT;
             }
             if (nb != 0) {
-                if (type != null) {
-                    return new EipTag(tag, type, nb);
-                }
-                return new EipTag(tag, nb);
+                return new EipTag(tag, type, nb);
             } else {
-                if (type != null) {
-                    return new EipTag(tag, type);
-                }
-                return new EipTag(tag);
+                return new EipTag(tag, type);
             }
         }
         return null;
@@ -145,9 +140,6 @@ public class EipTag implements PlcTag, Serializable {
             writeBuffer.writeString("type", type.name().getBytes(StandardCharsets.UTF_8).length * 8, type.name(), WithOption.WithEncoding(StandardCharsets.UTF_8.name()));
         }
         writeBuffer.writeUnsignedInt("elementNb", 16, elementNb);
-        // TODO: remove this (not language agnostic)
-        String defaultJavaType = (type == null ? Object.class : getPlcValueType().getDefaultJavaType()).getName();
-        writeBuffer.writeString("defaultJavaType", defaultJavaType.getBytes(StandardCharsets.UTF_8).length * 8, defaultJavaType, WithOption.WithEncoding(StandardCharsets.UTF_8.name()));
 
         writeBuffer.popContext(getClass().getSimpleName());
     }
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapoint.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapoint.java
index 89e8f23e7b..6c3b3dc30f 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapoint.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapoint.java
@@ -2156,6 +2156,22 @@ public class KnxDatapoint {
       // Simple Field (value)
       Float value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readFloat("", 16);
 
+      return new PlcREAL(value);
+    } else if (EvaluationHelper.equals(datapointType, KnxDatapointType.DPT_Coefficient)) { // REAL
+
+      // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+      {
+        short reserved = /*TODO: migrate me*/ /*TODO: migrate me*/
+            readBuffer.readUnsignedShort("", 8);
+        if (reserved != (short) 0x00) {
+          LOGGER.info(
+              "Expected constant value " + 0x00 + " but got " + reserved + " for reserved field.");
+        }
+      }
+
+      // Simple Field (value)
+      Float value = /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.readFloat("", 16);
+
       return new PlcREAL(value);
     } else if (EvaluationHelper.equals(datapointType, KnxDatapointType.DPT_TimeOfDay)) { // Struct
 
@@ -9457,6 +9473,15 @@ public class KnxDatapoint {
       float value = (float) _value.getFloat();
       /*TODO: migrate me*/
       /*TODO: migrate me*/ writeBuffer.writeFloat("", 16, (value));
+    } else if (EvaluationHelper.equals(datapointType, KnxDatapointType.DPT_Coefficient)) { // REAL
+      // Reserved Field
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeUnsignedShort(
+          "", 8, ((Number) (short) 0x00).shortValue());
+      // Simple Field (value)
+      float value = (float) _value.getFloat();
+      /*TODO: migrate me*/
+      /*TODO: migrate me*/ writeBuffer.writeFloat("", 16, (value));
     } else if (EvaluationHelper.equals(datapointType, KnxDatapointType.DPT_TimeOfDay)) { // Struct
       // Reserved Field
       /*TODO: migrate me*/
@@ -14083,6 +14108,11 @@ public class KnxDatapoint {
       sizeInBits += 8;
       // Simple Field (value)
       sizeInBits += 16;
+    } else if (EvaluationHelper.equals(datapointType, KnxDatapointType.DPT_Coefficient)) { // REAL
+      // Reserved Field
+      sizeInBits += 8;
+      // Simple Field (value)
+      sizeInBits += 16;
     } else if (EvaluationHelper.equals(datapointType, KnxDatapointType.DPT_TimeOfDay)) { // Struct
       // Reserved Field
       sizeInBits += 8;
diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java
index ac33240d5f..b615d5c8c8 100644
--- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java
+++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxDatapointType.java
@@ -330,831 +330,833 @@ public enum KnxDatapointType {
       (int) 30,
       (String) "concentration (µg/m³)",
       KnxDatapointMainType.DPT_2_BYTE_FLOAT_VALUE),
-  DPT_TimeOfDay((long) 121L, (int) 1, (String) "time of day", KnxDatapointMainType.DPT_TIME),
-  DPT_Date((long) 122L, (int) 1, (String) "date", KnxDatapointMainType.DPT_DATE),
+  DPT_Coefficient(
+      (long) 121L, (int) 31, (String) "coefficient", KnxDatapointMainType.DPT_2_BYTE_FLOAT_VALUE),
+  DPT_TimeOfDay((long) 122L, (int) 1, (String) "time of day", KnxDatapointMainType.DPT_TIME),
+  DPT_Date((long) 123L, (int) 1, (String) "date", KnxDatapointMainType.DPT_DATE),
   DPT_Value_4_Ucount(
-      (long) 123L,
+      (long) 124L,
       (int) 1,
       (String) "counter pulses (unsigned)",
       KnxDatapointMainType.DPT_4_BYTE_UNSIGNED_VALUE),
   DPT_LongTimePeriod_Sec(
-      (long) 124L,
+      (long) 125L,
       (int) 100,
       (String) "counter timesec (s)",
       KnxDatapointMainType.DPT_4_BYTE_UNSIGNED_VALUE),
   DPT_LongTimePeriod_Min(
-      (long) 125L,
+      (long) 126L,
       (int) 101,
       (String) "counter timemin (min)",
       KnxDatapointMainType.DPT_4_BYTE_UNSIGNED_VALUE),
   DPT_LongTimePeriod_Hrs(
-      (long) 126L,
+      (long) 127L,
       (int) 102,
       (String) "counter timehrs (h)",
       KnxDatapointMainType.DPT_4_BYTE_UNSIGNED_VALUE),
   DPT_VolumeLiquid_Litre(
-      (long) 127L,
+      (long) 128L,
       (int) 1200,
       (String) "volume liquid (l)",
       KnxDatapointMainType.DPT_4_BYTE_UNSIGNED_VALUE),
   DPT_Volume_m_3(
-      (long) 128L,
+      (long) 129L,
       (int) 1201,
       (String) "volume (m³)",
       KnxDatapointMainType.DPT_4_BYTE_UNSIGNED_VALUE),
   DPT_Value_4_Count(
-      (long) 129L,
+      (long) 130L,
       (int) 1,
       (String) "counter pulses (signed)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_FlowRate_m3h(
-      (long) 130L,
+      (long) 131L,
       (int) 2,
       (String) "flow rate (m³/h)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_ActiveEnergy(
-      (long) 131L,
+      (long) 132L,
       (int) 10,
       (String) "active energy (Wh)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_ApparantEnergy(
-      (long) 132L,
+      (long) 133L,
       (int) 11,
       (String) "apparant energy (VAh)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_ReactiveEnergy(
-      (long) 133L,
+      (long) 134L,
       (int) 12,
       (String) "reactive energy (VARh)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_ActiveEnergy_kWh(
-      (long) 134L,
+      (long) 135L,
       (int) 13,
       (String) "active energy (kWh)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_ApparantEnergy_kVAh(
-      (long) 135L,
+      (long) 136L,
       (int) 14,
       (String) "apparant energy (kVAh)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_ReactiveEnergy_kVARh(
-      (long) 136L,
+      (long) 137L,
       (int) 15,
       (String) "reactive energy (kVARh)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_ActiveEnergy_MWh(
-      (long) 137L,
+      (long) 138L,
       (int) 16,
       (String) "active energy (MWh)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_LongDeltaTimeSec(
-      (long) 138L,
+      (long) 139L,
       (int) 100,
       (String) "time lag (s)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_DeltaVolumeLiquid_Litre(
-      (long) 139L,
+      (long) 140L,
       (int) 1200,
       (String) "delta volume liquid (l)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_DeltaVolume_m_3(
-      (long) 140L,
+      (long) 141L,
       (int) 1201,
       (String) "delta volume (m³)",
       KnxDatapointMainType.DPT_4_BYTE_SIGNED_VALUE),
   DPT_Value_Acceleration(
-      (long) 141L,
+      (long) 142L,
       (int) 0,
       (String) "acceleration (m/s²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Acceleration_Angular(
-      (long) 142L,
+      (long) 143L,
       (int) 1,
       (String) "angular acceleration (rad/s²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Activation_Energy(
-      (long) 143L,
+      (long) 144L,
       (int) 2,
       (String) "activation energy (J/mol)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Activity(
-      (long) 144L,
+      (long) 145L,
       (int) 3,
       (String) "radioactive activity (1/s)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Mol(
-      (long) 145L,
+      (long) 146L,
       (int) 4,
       (String) "amount of substance (mol)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Amplitude(
-      (long) 146L, (int) 5, (String) "amplitude", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 147L, (int) 5, (String) "amplitude", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_AngleRad(
-      (long) 147L,
+      (long) 148L,
       (int) 6,
       (String) "angle (radiant)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_AngleDeg(
-      (long) 148L, (int) 7, (String) "angle (degree)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 149L, (int) 7, (String) "angle (degree)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Angular_Momentum(
-      (long) 149L,
+      (long) 150L,
       (int) 8,
       (String) "angular momentum (Js)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Angular_Velocity(
-      (long) 150L,
+      (long) 151L,
       (int) 9,
       (String) "angular velocity (rad/s)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Area(
-      (long) 151L, (int) 10, (String) "area (m*m)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 152L, (int) 10, (String) "area (m*m)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Capacitance(
-      (long) 152L,
+      (long) 153L,
       (int) 11,
       (String) "capacitance (F)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Charge_DensitySurface(
-      (long) 153L,
+      (long) 154L,
       (int) 12,
       (String) "flux density (C/m²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Charge_DensityVolume(
-      (long) 154L,
+      (long) 155L,
       (int) 13,
       (String) "charge density (C/m³)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Compressibility(
-      (long) 155L,
+      (long) 156L,
       (int) 14,
       (String) "compressibility (m²/N)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Conductance(
-      (long) 156L,
+      (long) 157L,
       (int) 15,
       (String) "conductance (S)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electrical_Conductivity(
-      (long) 157L,
+      (long) 158L,
       (int) 16,
       (String) "conductivity (S/m)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Density(
-      (long) 158L,
+      (long) 159L,
       (int) 17,
       (String) "density (kg/m³)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_Charge(
-      (long) 159L,
+      (long) 160L,
       (int) 18,
       (String) "electric charge (C)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_Current(
-      (long) 160L,
+      (long) 161L,
       (int) 19,
       (String) "electric current (A)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_CurrentDensity(
-      (long) 161L,
+      (long) 162L,
       (int) 20,
       (String) "electric current density (A/m²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_DipoleMoment(
-      (long) 162L,
+      (long) 163L,
       (int) 21,
       (String) "electric dipole moment (Cm)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_Displacement(
-      (long) 163L,
+      (long) 164L,
       (int) 22,
       (String) "electric displacement (C/m²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_FieldStrength(
-      (long) 164L,
+      (long) 165L,
       (int) 23,
       (String) "electric field strength (V/m)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_Flux(
-      (long) 165L,
+      (long) 166L,
       (int) 24,
       (String) "electric flux (C)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_FluxDensity(
-      (long) 166L,
+      (long) 167L,
       (int) 25,
       (String) "electric flux density (C/m²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_Polarization(
-      (long) 167L,
+      (long) 168L,
       (int) 26,
       (String) "electric polarization (C/m²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_Potential(
-      (long) 168L,
+      (long) 169L,
       (int) 27,
       (String) "electric potential (V)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electric_PotentialDifference(
-      (long) 169L,
+      (long) 170L,
       (int) 28,
       (String) "electric potential difference (V)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_ElectromagneticMoment(
-      (long) 170L,
+      (long) 171L,
       (int) 29,
       (String) "electromagnetic moment (Am²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Electromotive_Force(
-      (long) 171L,
+      (long) 172L,
       (int) 30,
       (String) "electromotive force (V)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Energy(
-      (long) 172L, (int) 31, (String) "energy (J)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 173L, (int) 31, (String) "energy (J)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Force(
-      (long) 173L, (int) 32, (String) "force (N)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 174L, (int) 32, (String) "force (N)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Frequency(
-      (long) 174L,
+      (long) 175L,
       (int) 33,
       (String) "frequency (Hz)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Angular_Frequency(
-      (long) 175L,
+      (long) 176L,
       (int) 34,
       (String) "angular frequency (rad/s)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Heat_Capacity(
-      (long) 176L,
+      (long) 177L,
       (int) 35,
       (String) "heat capacity (J/K)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Heat_FlowRate(
-      (long) 177L,
+      (long) 178L,
       (int) 36,
       (String) "heat flow rate (W)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Heat_Quantity(
-      (long) 178L, (int) 37, (String) "heat quantity", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 179L, (int) 37, (String) "heat quantity", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Impedance(
-      (long) 179L, (int) 38, (String) "impedance (Ω)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 180L, (int) 38, (String) "impedance (Ω)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Length(
-      (long) 180L, (int) 39, (String) "length (m)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 181L, (int) 39, (String) "length (m)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Light_Quantity(
-      (long) 181L,
+      (long) 182L,
       (int) 40,
       (String) "light quantity (J)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Luminance(
-      (long) 182L,
+      (long) 183L,
       (int) 41,
       (String) "luminance (cd/m²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Luminous_Flux(
-      (long) 183L,
+      (long) 184L,
       (int) 42,
       (String) "luminous flux (lm)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Luminous_Intensity(
-      (long) 184L,
+      (long) 185L,
       (int) 43,
       (String) "luminous intensity (cd)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Magnetic_FieldStrength(
-      (long) 185L,
+      (long) 186L,
       (int) 44,
       (String) "magnetic field strength (A/m)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Magnetic_Flux(
-      (long) 186L,
+      (long) 187L,
       (int) 45,
       (String) "magnetic flux (Wb)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Magnetic_FluxDensity(
-      (long) 187L,
+      (long) 188L,
       (int) 46,
       (String) "magnetic flux density (T)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Magnetic_Moment(
-      (long) 188L,
+      (long) 189L,
       (int) 47,
       (String) "magnetic moment (Am²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Magnetic_Polarization(
-      (long) 189L,
+      (long) 190L,
       (int) 48,
       (String) "magnetic polarization (T)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Magnetization(
-      (long) 190L,
+      (long) 191L,
       (int) 49,
       (String) "magnetization (A/m)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_MagnetomotiveForce(
-      (long) 191L,
+      (long) 192L,
       (int) 50,
       (String) "magnetomotive force (A)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Mass(
-      (long) 192L, (int) 51, (String) "mass (kg)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 193L, (int) 51, (String) "mass (kg)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_MassFlux(
-      (long) 193L,
+      (long) 194L,
       (int) 52,
       (String) "mass flux (kg/s)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Momentum(
-      (long) 194L,
+      (long) 195L,
       (int) 53,
       (String) "momentum (N/s)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Phase_AngleRad(
-      (long) 195L,
+      (long) 196L,
       (int) 54,
       (String) "phase angle (rad)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Phase_AngleDeg(
-      (long) 196L,
+      (long) 197L,
       (int) 55,
       (String) "phase angle (°)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Power(
-      (long) 197L, (int) 56, (String) "power (W)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 198L, (int) 56, (String) "power (W)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Power_Factor(
-      (long) 198L,
+      (long) 199L,
       (int) 57,
       (String) "power factor (cos Φ)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Pressure(
-      (long) 199L, (int) 58, (String) "pressure (Pa)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 200L, (int) 58, (String) "pressure (Pa)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Reactance(
-      (long) 200L, (int) 59, (String) "reactance (Ω)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 201L, (int) 59, (String) "reactance (Ω)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Resistance(
-      (long) 201L,
+      (long) 202L,
       (int) 60,
       (String) "resistance (Ω)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Resistivity(
-      (long) 202L,
+      (long) 203L,
       (int) 61,
       (String) "resistivity (Ωm)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_SelfInductance(
-      (long) 203L,
+      (long) 204L,
       (int) 62,
       (String) "self inductance (H)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_SolidAngle(
-      (long) 204L,
+      (long) 205L,
       (int) 63,
       (String) "solid angle (sr)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Sound_Intensity(
-      (long) 205L,
+      (long) 206L,
       (int) 64,
       (String) "sound intensity (W/m²)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Speed(
-      (long) 206L, (int) 65, (String) "speed (m/s)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 207L, (int) 65, (String) "speed (m/s)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Stress(
-      (long) 207L, (int) 66, (String) "stress (Pa)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 208L, (int) 66, (String) "stress (Pa)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Surface_Tension(
-      (long) 208L,
+      (long) 209L,
       (int) 67,
       (String) "surface tension (N/m)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Common_Temperature(
-      (long) 209L,
+      (long) 210L,
       (int) 68,
       (String) "temperature (°C)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Absolute_Temperature(
-      (long) 210L,
+      (long) 211L,
       (int) 69,
       (String) "temperature absolute (K)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_TemperatureDifference(
-      (long) 211L,
+      (long) 212L,
       (int) 70,
       (String) "temperature difference (K)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Thermal_Capacity(
-      (long) 212L,
+      (long) 213L,
       (int) 71,
       (String) "thermal capacity (J/K)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Thermal_Conductivity(
-      (long) 213L,
+      (long) 214L,
       (int) 72,
       (String) "thermal conductivity (W/mK)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_ThermoelectricPower(
-      (long) 214L,
+      (long) 215L,
       (int) 73,
       (String) "thermoelectric power (V/K)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Time(
-      (long) 215L, (int) 74, (String) "time (s)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 216L, (int) 74, (String) "time (s)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Torque(
-      (long) 216L, (int) 75, (String) "torque (Nm)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 217L, (int) 75, (String) "torque (Nm)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Volume(
-      (long) 217L, (int) 76, (String) "volume (m³)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 218L, (int) 76, (String) "volume (m³)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Volume_Flux(
-      (long) 218L,
+      (long) 219L,
       (int) 77,
       (String) "volume flux (m³/s)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Weight(
-      (long) 219L, (int) 78, (String) "weight (N)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 220L, (int) 78, (String) "weight (N)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_Work(
-      (long) 220L, (int) 79, (String) "work (J)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
+      (long) 221L, (int) 79, (String) "work (J)", KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Value_ApparentPower(
-      (long) 221L,
+      (long) 222L,
       (int) 80,
       (String) "apparent power (VA)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Volume_Flux_Meter(
-      (long) 222L,
+      (long) 223L,
       (int) 1200,
       (String) "volume flux for meters (m³/h)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Volume_Flux_ls(
-      (long) 223L,
+      (long) 224L,
       (int) 1201,
       (String) "volume flux for meters (1/ls)",
       KnxDatapointMainType.DPT_4_BYTE_FLOAT_VALUE),
   DPT_Access_Data(
-      (long) 224L, (int) 0, (String) "entrance access", KnxDatapointMainType.DPT_ENTRANCE_ACCESS),
+      (long) 225L, (int) 0, (String) "entrance access", KnxDatapointMainType.DPT_ENTRANCE_ACCESS),
   DPT_String_ASCII(
-      (long) 225L,
+      (long) 226L,
       (int) 0,
       (String) "Character String (ASCII)",
       KnxDatapointMainType.DPT_CHARACTER_STRING),
   DPT_String_8859_1(
-      (long) 226L,
+      (long) 227L,
       (int) 1,
       (String) "Character String (ISO 8859-1)",
       KnxDatapointMainType.DPT_CHARACTER_STRING),
   DPT_SceneNumber(
-      (long) 227L, (int) 1, (String) "scene number", KnxDatapointMainType.DPT_SCENE_NUMBER),
+      (long) 228L, (int) 1, (String) "scene number", KnxDatapointMainType.DPT_SCENE_NUMBER),
   DPT_SceneControl(
-      (long) 228L, (int) 1, (String) "scene control", KnxDatapointMainType.DPT_SCENE_CONTROL),
-  DPT_DateTime((long) 229L, (int) 1, (String) "date time", KnxDatapointMainType.DPT_DATE_TIME),
-  DPT_SCLOMode((long) 230L, (int) 1, (String) "SCLO mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_BuildingMode((long) 231L, (int) 2, (String) "building mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_OccMode((long) 232L, (int) 3, (String) "occupied", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_Priority((long) 233L, (int) 4, (String) "priority", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 229L, (int) 1, (String) "scene control", KnxDatapointMainType.DPT_SCENE_CONTROL),
+  DPT_DateTime((long) 230L, (int) 1, (String) "date time", KnxDatapointMainType.DPT_DATE_TIME),
+  DPT_SCLOMode((long) 231L, (int) 1, (String) "SCLO mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_BuildingMode((long) 232L, (int) 2, (String) "building mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_OccMode((long) 233L, (int) 3, (String) "occupied", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_Priority((long) 234L, (int) 4, (String) "priority", KnxDatapointMainType.DPT_1_BYTE),
   DPT_LightApplicationMode(
-      (long) 234L, (int) 5, (String) "light application mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 235L, (int) 5, (String) "light application mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_ApplicationArea(
-      (long) 235L, (int) 6, (String) "light application area", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_AlarmClassType((long) 236L, (int) 7, (String) "alarm class", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_PSUMode((long) 237L, (int) 8, (String) "PSU mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 236L, (int) 6, (String) "light application area", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_AlarmClassType((long) 237L, (int) 7, (String) "alarm class", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_PSUMode((long) 238L, (int) 8, (String) "PSU mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_ErrorClass_System(
-      (long) 238L, (int) 11, (String) "system error class", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 239L, (int) 11, (String) "system error class", KnxDatapointMainType.DPT_1_BYTE),
   DPT_ErrorClass_HVAC(
-      (long) 239L, (int) 12, (String) "HVAC error class", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_Time_Delay((long) 240L, (int) 13, (String) "time delay", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 240L, (int) 12, (String) "HVAC error class", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_Time_Delay((long) 241L, (int) 13, (String) "time delay", KnxDatapointMainType.DPT_1_BYTE),
   DPT_Beaufort_Wind_Force_Scale(
-      (long) 241L, (int) 14, (String) "wind force scale (0..12)", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_SensorSelect((long) 242L, (int) 17, (String) "sensor mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 242L, (int) 14, (String) "wind force scale (0..12)", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_SensorSelect((long) 243L, (int) 17, (String) "sensor mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_ActuatorConnectType(
-      (long) 243L, (int) 20, (String) "actuator connect type", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_Cloud_Cover((long) 244L, (int) 21, (String) "cloud cover", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 244L, (int) 20, (String) "actuator connect type", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_Cloud_Cover((long) 245L, (int) 21, (String) "cloud cover", KnxDatapointMainType.DPT_1_BYTE),
   DPT_PowerReturnMode(
-      (long) 245L, (int) 22, (String) "power return mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_FuelType((long) 246L, (int) 100, (String) "fuel type", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_BurnerType((long) 247L, (int) 101, (String) "burner type", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_HVACMode((long) 248L, (int) 102, (String) "HVAC mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_DHWMode((long) 249L, (int) 103, (String) "DHW mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 246L, (int) 22, (String) "power return mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_FuelType((long) 247L, (int) 100, (String) "fuel type", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_BurnerType((long) 248L, (int) 101, (String) "burner type", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_HVACMode((long) 249L, (int) 102, (String) "HVAC mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_DHWMode((long) 250L, (int) 103, (String) "DHW mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_LoadPriority(
-      (long) 250L, (int) 104, (String) "load priority", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 251L, (int) 104, (String) "load priority", KnxDatapointMainType.DPT_1_BYTE),
   DPT_HVACContrMode(
-      (long) 251L, (int) 105, (String) "HVAC control mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 252L, (int) 105, (String) "HVAC control mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_HVACEmergMode(
-      (long) 252L, (int) 106, (String) "HVAC emergency mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 253L, (int) 106, (String) "HVAC emergency mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_ChangeoverMode(
-      (long) 253L, (int) 107, (String) "changeover mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_ValveMode((long) 254L, (int) 108, (String) "valve mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_DamperMode((long) 255L, (int) 109, (String) "damper mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_HeaterMode((long) 256L, (int) 110, (String) "heater mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_FanMode((long) 257L, (int) 111, (String) "fan mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 254L, (int) 107, (String) "changeover mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_ValveMode((long) 255L, (int) 108, (String) "valve mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_DamperMode((long) 256L, (int) 109, (String) "damper mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_HeaterMode((long) 257L, (int) 110, (String) "heater mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_FanMode((long) 258L, (int) 111, (String) "fan mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_MasterSlaveMode(
-      (long) 258L, (int) 112, (String) "master/slave mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 259L, (int) 112, (String) "master/slave mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_StatusRoomSetp(
-      (long) 259L, (int) 113, (String) "status room setpoint", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 260L, (int) 113, (String) "status room setpoint", KnxDatapointMainType.DPT_1_BYTE),
   DPT_Metering_DeviceType(
-      (long) 260L, (int) 114, (String) "metering device type", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 261L, (int) 114, (String) "metering device type", KnxDatapointMainType.DPT_1_BYTE),
   DPT_HumDehumMode(
-      (long) 261L, (int) 115, (String) "hum dehum mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 262L, (int) 115, (String) "hum dehum mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_EnableHCStage(
-      (long) 262L, (int) 116, (String) "enable H/C stage", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_ADAType((long) 263L, (int) 120, (String) "ADA type", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_BackupMode((long) 264L, (int) 121, (String) "backup mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 263L, (int) 116, (String) "enable H/C stage", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_ADAType((long) 264L, (int) 120, (String) "ADA type", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_BackupMode((long) 265L, (int) 121, (String) "backup mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_StartSynchronization(
-      (long) 265L,
+      (long) 266L,
       (int) 122,
       (String) "start syncronization type",
       KnxDatapointMainType.DPT_1_BYTE),
   DPT_Behaviour_Lock_Unlock(
-      (long) 266L, (int) 600, (String) "behavior lock/unlock", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 267L, (int) 600, (String) "behavior lock/unlock", KnxDatapointMainType.DPT_1_BYTE),
   DPT_Behaviour_Bus_Power_Up_Down(
-      (long) 267L,
+      (long) 268L,
       (int) 601,
       (String) "behavior bus power up/down",
       KnxDatapointMainType.DPT_1_BYTE),
   DPT_DALI_Fade_Time(
-      (long) 268L, (int) 602, (String) "dali fade time", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_BlinkingMode((long) 269L, (int) 603, (String) "blink mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 269L, (int) 602, (String) "dali fade time", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_BlinkingMode((long) 270L, (int) 603, (String) "blink mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_LightControlMode(
-      (long) 270L, (int) 604, (String) "light control mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 271L, (int) 604, (String) "light control mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_SwitchPBModel(
-      (long) 271L, (int) 605, (String) "PB switch mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_PBAction((long) 272L, (int) 606, (String) "PB action mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_DimmPBModel((long) 273L, (int) 607, (String) "PB dimm mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 272L, (int) 605, (String) "PB switch mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_PBAction((long) 273L, (int) 606, (String) "PB action mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_DimmPBModel((long) 274L, (int) 607, (String) "PB dimm mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_SwitchOnMode(
-      (long) 274L, (int) 608, (String) "switch on mode", KnxDatapointMainType.DPT_1_BYTE),
-  DPT_LoadTypeSet((long) 275L, (int) 609, (String) "load type", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 275L, (int) 608, (String) "switch on mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_LoadTypeSet((long) 276L, (int) 609, (String) "load type", KnxDatapointMainType.DPT_1_BYTE),
   DPT_LoadTypeDetected(
-      (long) 276L, (int) 610, (String) "load type detection", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 277L, (int) 610, (String) "load type detection", KnxDatapointMainType.DPT_1_BYTE),
   DPT_Converter_Test_Control(
-      (long) 277L, (int) 611, (String) "converter test control", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 278L, (int) 611, (String) "converter test control", KnxDatapointMainType.DPT_1_BYTE),
   DPT_SABExcept_Behaviour(
-      (long) 278L, (int) 801, (String) "SAB except behavior", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 279L, (int) 801, (String) "SAB except behavior", KnxDatapointMainType.DPT_1_BYTE),
   DPT_SABBehaviour_Lock_Unlock(
-      (long) 279L,
+      (long) 280L,
       (int) 802,
       (String) "SAB behavior on lock/unlock",
       KnxDatapointMainType.DPT_1_BYTE),
-  DPT_SSSBMode((long) 280L, (int) 803, (String) "SSSB mode", KnxDatapointMainType.DPT_1_BYTE),
+  DPT_SSSBMode((long) 281L, (int) 803, (String) "SSSB mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_BlindsControlMode(
-      (long) 281L, (int) 804, (String) "blinds control mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 282L, (int) 804, (String) "blinds control mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_CommMode(
-      (long) 282L, (int) 1000, (String) "communication mode", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 283L, (int) 1000, (String) "communication mode", KnxDatapointMainType.DPT_1_BYTE),
   DPT_AddInfoTypes(
-      (long) 283L,
+      (long) 284L,
       (int) 1001,
       (String) "additional information type",
       KnxDatapointMainType.DPT_1_BYTE),
   DPT_RF_ModeSelect(
-      (long) 284L, (int) 1002, (String) "RF mode selection", KnxDatapointMainType.DPT_1_BYTE),
+      (long) 285L, (int) 1002, (String) "RF mode selection", KnxDatapointMainType.DPT_1_BYTE),
   DPT_RF_FilterSelect(
-      (long) 285L,
+      (long) 286L,
       (int) 1003,
       (String) "RF filter mode selection",
       KnxDatapointMainType.DPT_1_BYTE),
   DPT_StatusGen(
-      (long) 286L, (int) 1, (String) "general status", KnxDatapointMainType.DPT_8_BIT_SET),
+      (long) 287L, (int) 1, (String) "general status", KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_Device_Control(
-      (long) 287L, (int) 2, (String) "device control", KnxDatapointMainType.DPT_8_BIT_SET),
+      (long) 288L, (int) 2, (String) "device control", KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_ForceSign(
-      (long) 288L, (int) 100, (String) "forcing signal", KnxDatapointMainType.DPT_8_BIT_SET),
+      (long) 289L, (int) 100, (String) "forcing signal", KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_ForceSignCool(
-      (long) 289L, (int) 101, (String) "forcing signal cool", KnxDatapointMainType.DPT_8_BIT_SET),
+      (long) 290L, (int) 101, (String) "forcing signal cool", KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_StatusRHC(
-      (long) 290L,
+      (long) 291L,
       (int) 102,
       (String) "room heating controller status",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_StatusSDHWC(
-      (long) 291L,
+      (long) 292L,
       (int) 103,
       (String) "solar DHW controller status",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_FuelTypeSet(
-      (long) 292L, (int) 104, (String) "fuel type set", KnxDatapointMainType.DPT_8_BIT_SET),
+      (long) 293L, (int) 104, (String) "fuel type set", KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_StatusRCC(
-      (long) 293L,
+      (long) 294L,
       (int) 105,
       (String) "room cooling controller status",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_StatusAHU(
-      (long) 294L,
+      (long) 295L,
       (int) 106,
       (String) "ventilation controller status",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_CombinedStatus_RTSM(
-      (long) 295L, (int) 107, (String) "combined status RTSM", KnxDatapointMainType.DPT_8_BIT_SET),
+      (long) 296L, (int) 107, (String) "combined status RTSM", KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_LightActuatorErrorInfo(
-      (long) 296L,
+      (long) 297L,
       (int) 601,
       (String) "lighting actuator error information",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_RF_ModeInfo(
-      (long) 297L,
+      (long) 298L,
       (int) 1000,
       (String) "RF communication mode info",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_RF_FilterInfo(
-      (long) 298L,
+      (long) 299L,
       (int) 1001,
       (String) "cEMI server supported RF filtering modes",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_Channel_Activation_8(
-      (long) 299L,
+      (long) 300L,
       (int) 1010,
       (String) "channel activation for 8 channels",
       KnxDatapointMainType.DPT_8_BIT_SET),
   DPT_StatusDHWC(
-      (long) 300L,
+      (long) 301L,
       (int) 100,
       (String) "DHW controller status",
       KnxDatapointMainType.DPT_16_BIT_SET),
   DPT_StatusRHCC(
-      (long) 301L, (int) 101, (String) "RHCC status", KnxDatapointMainType.DPT_16_BIT_SET),
+      (long) 302L, (int) 101, (String) "RHCC status", KnxDatapointMainType.DPT_16_BIT_SET),
   DPT_CombinedStatus_HVA(
-      (long) 302L, (int) 102, (String) "combined status HVA", KnxDatapointMainType.DPT_16_BIT_SET),
+      (long) 303L, (int) 102, (String) "combined status HVA", KnxDatapointMainType.DPT_16_BIT_SET),
   DPT_CombinedStatus_RTC(
-      (long) 303L, (int) 103, (String) "combined status RTC", KnxDatapointMainType.DPT_16_BIT_SET),
-  DPT_Media((long) 304L, (int) 1000, (String) "media", KnxDatapointMainType.DPT_16_BIT_SET),
+      (long) 304L, (int) 103, (String) "combined status RTC", KnxDatapointMainType.DPT_16_BIT_SET),
+  DPT_Media((long) 305L, (int) 1000, (String) "media", KnxDatapointMainType.DPT_16_BIT_SET),
   DPT_Channel_Activation_16(
-      (long) 305L,
+      (long) 306L,
       (int) 1010,
       (String) "channel activation for 16 channels",
       KnxDatapointMainType.DPT_16_BIT_SET),
   DPT_OnOffAction(
-      (long) 306L, (int) 1, (String) "on/off action", KnxDatapointMainType.DPT_2_BIT_SET),
+      (long) 307L, (int) 1, (String) "on/off action", KnxDatapointMainType.DPT_2_BIT_SET),
   DPT_Alarm_Reaction(
-      (long) 307L, (int) 2, (String) "alarm reaction", KnxDatapointMainType.DPT_2_BIT_SET),
+      (long) 308L, (int) 2, (String) "alarm reaction", KnxDatapointMainType.DPT_2_BIT_SET),
   DPT_UpDown_Action(
-      (long) 308L, (int) 3, (String) "up/down action", KnxDatapointMainType.DPT_2_BIT_SET),
+      (long) 309L, (int) 3, (String) "up/down action", KnxDatapointMainType.DPT_2_BIT_SET),
   DPT_HVAC_PB_Action(
-      (long) 309L,
+      (long) 310L,
       (int) 102,
       (String) "HVAC push button action",
       KnxDatapointMainType.DPT_2_BIT_SET),
   DPT_DoubleNibble(
-      (long) 310L,
+      (long) 311L,
       (int) 1000,
       (String) "busy/nak repetitions",
       KnxDatapointMainType.DPT_2_NIBBLE_SET),
   DPT_SceneInfo(
-      (long) 311L, (int) 1, (String) "scene information", KnxDatapointMainType.DPT_8_BIT_SET_2),
+      (long) 312L, (int) 1, (String) "scene information", KnxDatapointMainType.DPT_8_BIT_SET_2),
   DPT_CombinedInfoOnOff(
-      (long) 312L,
+      (long) 313L,
       (int) 1,
       (String) "bit-combined info on/off",
       KnxDatapointMainType.DPT_32_BIT_SET),
   DPT_ActiveEnergy_V64(
-      (long) 313L,
+      (long) 314L,
       (int) 10,
       (String) "active energy (Wh)",
       KnxDatapointMainType.DPT_ELECTRICAL_ENERGY),
   DPT_ApparantEnergy_V64(
-      (long) 314L,
+      (long) 315L,
       (int) 11,
       (String) "apparant energy (VAh)",
       KnxDatapointMainType.DPT_ELECTRICAL_ENERGY),
   DPT_ReactiveEnergy_V64(
-      (long) 315L,
+      (long) 316L,
       (int) 12,
       (String) "reactive energy (VARh)",
       KnxDatapointMainType.DPT_ELECTRICAL_ENERGY),
   DPT_Channel_Activation_24(
-      (long) 316L,
+      (long) 317L,
       (int) 1010,
       (String) "activation state 0..23",
       KnxDatapointMainType.DPT_24_TIMES_CHANNEL_ACTIVATION),
   DPT_HVACModeNext(
-      (long) 317L,
+      (long) 318L,
       (int) 100,
       (String) "time delay & HVAC mode",
       KnxDatapointMainType.DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM),
   DPT_DHWModeNext(
-      (long) 318L,
+      (long) 319L,
       (int) 102,
       (String) "time delay & DHW mode",
       KnxDatapointMainType.DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM),
   DPT_OccModeNext(
-      (long) 319L,
+      (long) 320L,
       (int) 104,
       (String) "time delay & occupancy mode",
       KnxDatapointMainType.DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM),
   DPT_BuildingModeNext(
-      (long) 320L,
+      (long) 321L,
       (int) 105,
       (String) "time delay & building mode",
       KnxDatapointMainType.DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM),
   DPT_StatusLightingActuator(
-      (long) 321L,
+      (long) 322L,
       (int) 600,
       (String) "Status Lighting Actuator",
       KnxDatapointMainType.DPT_8_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM),
   DPT_Version(
-      (long) 322L,
+      (long) 323L,
       (int) 1,
       (String) "DPT version",
       KnxDatapointMainType.DPT_DATAPOINT_TYPE_VERSION),
-  DPT_AlarmInfo((long) 323L, (int) 1, (String) "alarm info", KnxDatapointMainType.DPT_ALARM_INFO),
+  DPT_AlarmInfo((long) 324L, (int) 1, (String) "alarm info", KnxDatapointMainType.DPT_ALARM_INFO),
... 1155 lines suppressed ...