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 2021/01/06 19:25:20 UTC

[plc4x] 02/02: - Explicitly added two factory methods to the enum generation in go "ByName" and "ByValue"

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

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

commit 628898e3582701164ab2e5b26a5b6105d15b544d
Author: cdutz <ch...@c-ware.de>
AuthorDate: Wed Jan 6 19:40:33 2021 +0100

    - Explicitly added two factory methods to the enum generation in go "ByName" and "ByValue"
---
 .../main/resources/templates/go/enum-template.ftlh |   14 +-
 .../bacnetip/readwrite/model/ApplicationTag.go     |  214 +--
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |  190 +--
 .../bacnetip/readwrite/model/BACnetNodeType.go     |  322 +++--
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |   94 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |  766 ++++++-----
 plc4go/internal/plc4go/knxnetip/KnxNetIpField.go   |    8 +-
 .../plc4go/knxnetip/KnxNetIpFieldHandler.go        |  110 +-
 .../plc4go/knxnetip/readwrite/model/APCI.go        |  250 ++--
 .../knxnetip/readwrite/model/CEMIPriority.go       |  106 +-
 .../plc4go/knxnetip/readwrite/model/ControlType.go |  106 +-
 .../knxnetip/readwrite/model/ExtendedAPCI.go       |  550 ++++----
 .../knxnetip/readwrite/model/HostProtocolCode.go   |   82 +-
 .../readwrite/model/KnxDatapointSubtype.go         |  652 +++++++++-
 .../knxnetip/readwrite/model/KnxDatapointType.go   |  118 +-
 .../readwrite/model/KnxInterfaceObjectProperty.go  |  440 ++++++-
 .../readwrite/model/KnxInterfaceObjectType.go      |   58 +-
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |   94 +-
 .../knxnetip/readwrite/model/KnxManufacturer.go    | 1084 +++++++++++++++-
 .../plc4go/knxnetip/readwrite/model/KnxMedium.go   |  130 +-
 .../readwrite/model/KnxPropertyDataType.go         |  108 +-
 .../plc4go/knxnetip/readwrite/model/Status.go      |  202 +--
 .../readwrite/model/SupportedPhysicalMedia.go      |  631 +++++----
 .../internal/plc4go/modbus/ModbusFieldHandler.go   |   20 +-
 plc4go/internal/plc4go/modbus/ModbusReader.go      |   86 +-
 .../modbus/readwrite/model/ModbusDataTypeSizes.go  |  572 ++++----
 .../modbus/readwrite/model/ModbusErrorCode.go      |  178 +--
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |  118 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |  205 +--
 .../s7/readwrite/model/DataTransportErrorCode.go   |  130 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |  205 +--
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |   94 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |  243 ++--
 .../s7/readwrite/model/SzlModuleTypeClass.go       |  106 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |  286 ++--
 .../plc4go/s7/readwrite/model/TransportSize.go     | 1361 +++++++++++---------
 .../plc4go/spi/transports/tcp/TcpTransport.go      |  232 ++--
 .../plc4go/spi/transports/udp/UdpTransport.go      |  300 ++---
 plc4go/internal/plc4go/spi/utils/Regexp.go         |   24 +-
 39 files changed, 6991 insertions(+), 3498 deletions(-)

diff --git a/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
index b708123..2b76ef6 100644
--- a/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
@@ -90,7 +90,7 @@ func (e ${type.name}) ${constantName?cap_first}() ${helper.getLanguageTypeNameFo
 }
     </#list>
 </#if>
-func ${type.name}ValueOf(value <#if type.type?has_content>${helper.getLanguageTypeNameForTypeReference(type.type)}<#else>string</#if>) ${type.name} {
+func ${type.name}ByValue(value <#if type.type?has_content>${helper.getLanguageTypeNameForTypeReference(type.type)}<#else>string</#if>) ${type.name} {
     switch value {
 <#list helper.getUniqueEnumValues(type.enumValues) as enumValue>
         case <#if helper.isStringTypeReference(type.type)>"${enumValue.value}"<#else>${enumValue.value}</#if>:
@@ -100,6 +100,16 @@ func ${type.name}ValueOf(value <#if type.type?has_content>${helper.getLanguageTy
     return <#if helper.isStringTypeReference(type.type)>""<#else>0</#if>
 }
 
+func ${type.name}ByName(value string) ${type.name} {
+    switch value {
+    <#list helper.getUniqueEnumValues(type.enumValues) as enumValue>
+    case "${enumValue.name}":
+        return ${type.name}_${enumValue.name}
+    </#list>
+    }
+    return <#if helper.isStringTypeReference(type.type)>""<#else>0</#if>
+}
+
 func Cast${type.name}(structType interface{}) ${type.name} {
     castFunc := func(typ interface{}) ${type.name} {
         if s${type.name}, ok := typ.(${type.name}); ok {
@@ -127,7 +137,7 @@ func ${type.name}Parse(io *utils.ReadBuffer) (${type.name}, error) {
     if err != nil {
         return <#if helper.isStringTypeReference(type.type)>""<#else>0</#if>, nil
     }
-    return ${type.name}ValueOf(val), nil
+    return ${type.name}ByValue(val), nil
 }
 
 func (e ${type.name}) Serialize(io utils.WriteBuffer) error {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
index eec4d15..6677b6b 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
@@ -19,122 +19,154 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type ApplicationTag int8
 
 type IApplicationTag interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    ApplicationTag_NULL ApplicationTag = 0x0
-    ApplicationTag_BOOLEAN ApplicationTag = 0x1
-    ApplicationTag_UNSIGNED_INTEGER ApplicationTag = 0x2
-    ApplicationTag_SIGNED_INTEGER ApplicationTag = 0x3
-    ApplicationTag_REAL ApplicationTag = 0x4
-    ApplicationTag_DOUBLE ApplicationTag = 0x5
-    ApplicationTag_OCTET_STRING ApplicationTag = 0x6
-    ApplicationTag_CHARACTER_STRING ApplicationTag = 0x7
-    ApplicationTag_BIT_STRING ApplicationTag = 0x8
-    ApplicationTag_ENUMERATED ApplicationTag = 0x9
-    ApplicationTag_DATE ApplicationTag = 0xA
-    ApplicationTag_TIME ApplicationTag = 0xB
-    ApplicationTag_BACNET_OBJECT_IDENTIFIER ApplicationTag = 0xC
+const (
+	ApplicationTag_NULL                     ApplicationTag = 0x0
+	ApplicationTag_BOOLEAN                  ApplicationTag = 0x1
+	ApplicationTag_UNSIGNED_INTEGER         ApplicationTag = 0x2
+	ApplicationTag_SIGNED_INTEGER           ApplicationTag = 0x3
+	ApplicationTag_REAL                     ApplicationTag = 0x4
+	ApplicationTag_DOUBLE                   ApplicationTag = 0x5
+	ApplicationTag_OCTET_STRING             ApplicationTag = 0x6
+	ApplicationTag_CHARACTER_STRING         ApplicationTag = 0x7
+	ApplicationTag_BIT_STRING               ApplicationTag = 0x8
+	ApplicationTag_ENUMERATED               ApplicationTag = 0x9
+	ApplicationTag_DATE                     ApplicationTag = 0xA
+	ApplicationTag_TIME                     ApplicationTag = 0xB
+	ApplicationTag_BACNET_OBJECT_IDENTIFIER ApplicationTag = 0xC
 )
 
-func ApplicationTagValueOf(value int8) ApplicationTag {
-    switch value {
-        case 0x0:
-            return ApplicationTag_NULL
-        case 0x1:
-            return ApplicationTag_BOOLEAN
-        case 0x2:
-            return ApplicationTag_UNSIGNED_INTEGER
-        case 0x3:
-            return ApplicationTag_SIGNED_INTEGER
-        case 0x4:
-            return ApplicationTag_REAL
-        case 0x5:
-            return ApplicationTag_DOUBLE
-        case 0x6:
-            return ApplicationTag_OCTET_STRING
-        case 0x7:
-            return ApplicationTag_CHARACTER_STRING
-        case 0x8:
-            return ApplicationTag_BIT_STRING
-        case 0x9:
-            return ApplicationTag_ENUMERATED
-        case 0xA:
-            return ApplicationTag_DATE
-        case 0xB:
-            return ApplicationTag_TIME
-        case 0xC:
-            return ApplicationTag_BACNET_OBJECT_IDENTIFIER
-    }
-    return 0
+func ApplicationTagByValue(value int8) ApplicationTag {
+	switch value {
+	case 0x0:
+		return ApplicationTag_NULL
+	case 0x1:
+		return ApplicationTag_BOOLEAN
+	case 0x2:
+		return ApplicationTag_UNSIGNED_INTEGER
+	case 0x3:
+		return ApplicationTag_SIGNED_INTEGER
+	case 0x4:
+		return ApplicationTag_REAL
+	case 0x5:
+		return ApplicationTag_DOUBLE
+	case 0x6:
+		return ApplicationTag_OCTET_STRING
+	case 0x7:
+		return ApplicationTag_CHARACTER_STRING
+	case 0x8:
+		return ApplicationTag_BIT_STRING
+	case 0x9:
+		return ApplicationTag_ENUMERATED
+	case 0xA:
+		return ApplicationTag_DATE
+	case 0xB:
+		return ApplicationTag_TIME
+	case 0xC:
+		return ApplicationTag_BACNET_OBJECT_IDENTIFIER
+	}
+	return 0
+}
+
+func ApplicationTagByName(value string) ApplicationTag {
+	switch value {
+	case "NULL":
+		return ApplicationTag_NULL
+	case "BOOLEAN":
+		return ApplicationTag_BOOLEAN
+	case "UNSIGNED_INTEGER":
+		return ApplicationTag_UNSIGNED_INTEGER
+	case "SIGNED_INTEGER":
+		return ApplicationTag_SIGNED_INTEGER
+	case "REAL":
+		return ApplicationTag_REAL
+	case "DOUBLE":
+		return ApplicationTag_DOUBLE
+	case "OCTET_STRING":
+		return ApplicationTag_OCTET_STRING
+	case "CHARACTER_STRING":
+		return ApplicationTag_CHARACTER_STRING
+	case "BIT_STRING":
+		return ApplicationTag_BIT_STRING
+	case "ENUMERATED":
+		return ApplicationTag_ENUMERATED
+	case "DATE":
+		return ApplicationTag_DATE
+	case "TIME":
+		return ApplicationTag_TIME
+	case "BACNET_OBJECT_IDENTIFIER":
+		return ApplicationTag_BACNET_OBJECT_IDENTIFIER
+	}
+	return 0
 }
 
 func CastApplicationTag(structType interface{}) ApplicationTag {
-    castFunc := func(typ interface{}) ApplicationTag {
-        if sApplicationTag, ok := typ.(ApplicationTag); ok {
-            return sApplicationTag
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ApplicationTag {
+		if sApplicationTag, ok := typ.(ApplicationTag); ok {
+			return sApplicationTag
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m ApplicationTag) LengthInBits() uint16 {
-    return 4
+	return 4
 }
 
 func (m ApplicationTag) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func ApplicationTagParse(io *utils.ReadBuffer) (ApplicationTag, error) {
-    val, err := io.ReadInt8(4)
-    if err != nil {
-        return 0, nil
-    }
-    return ApplicationTagValueOf(val), nil
+	val, err := io.ReadInt8(4)
+	if err != nil {
+		return 0, nil
+	}
+	return ApplicationTagByValue(val), nil
 }
 
 func (e ApplicationTag) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteInt8(4, int8(e))
-    return err
+	err := io.WriteInt8(4, int8(e))
+	return err
 }
 
 func (e ApplicationTag) String() string {
-    switch e {
-    case ApplicationTag_NULL:
-        return "NULL"
-    case ApplicationTag_BOOLEAN:
-        return "BOOLEAN"
-    case ApplicationTag_UNSIGNED_INTEGER:
-        return "UNSIGNED_INTEGER"
-    case ApplicationTag_SIGNED_INTEGER:
-        return "SIGNED_INTEGER"
-    case ApplicationTag_REAL:
-        return "REAL"
-    case ApplicationTag_DOUBLE:
-        return "DOUBLE"
-    case ApplicationTag_OCTET_STRING:
-        return "OCTET_STRING"
-    case ApplicationTag_CHARACTER_STRING:
-        return "CHARACTER_STRING"
-    case ApplicationTag_BIT_STRING:
-        return "BIT_STRING"
-    case ApplicationTag_ENUMERATED:
-        return "ENUMERATED"
-    case ApplicationTag_DATE:
-        return "DATE"
-    case ApplicationTag_TIME:
-        return "TIME"
-    case ApplicationTag_BACNET_OBJECT_IDENTIFIER:
-        return "BACNET_OBJECT_IDENTIFIER"
-    }
-    return ""
+	switch e {
+	case ApplicationTag_NULL:
+		return "NULL"
+	case ApplicationTag_BOOLEAN:
+		return "BOOLEAN"
+	case ApplicationTag_UNSIGNED_INTEGER:
+		return "UNSIGNED_INTEGER"
+	case ApplicationTag_SIGNED_INTEGER:
+		return "SIGNED_INTEGER"
+	case ApplicationTag_REAL:
+		return "REAL"
+	case ApplicationTag_DOUBLE:
+		return "DOUBLE"
+	case ApplicationTag_OCTET_STRING:
+		return "OCTET_STRING"
+	case ApplicationTag_CHARACTER_STRING:
+		return "CHARACTER_STRING"
+	case ApplicationTag_BIT_STRING:
+		return "BIT_STRING"
+	case ApplicationTag_ENUMERATED:
+		return "ENUMERATED"
+	case ApplicationTag_DATE:
+		return "DATE"
+	case ApplicationTag_TIME:
+		return "TIME"
+	case ApplicationTag_BACNET_OBJECT_IDENTIFIER:
+		return "BACNET_OBJECT_IDENTIFIER"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
index 2c19b88..0ca7dba 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
@@ -19,112 +19,140 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type BACnetNetworkType uint8
 
 type IBACnetNetworkType interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    BACnetNetworkType_ETHERNET BACnetNetworkType = 0x0
-    BACnetNetworkType_ARCNET BACnetNetworkType = 0x1
-    BACnetNetworkType_MSTP BACnetNetworkType = 0x2
-    BACnetNetworkType_PTP BACnetNetworkType = 0x3
-    BACnetNetworkType_LONTALK BACnetNetworkType = 0x4
-    BACnetNetworkType_IPV4 BACnetNetworkType = 0x5
-    BACnetNetworkType_ZIGBEE BACnetNetworkType = 0x6
-    BACnetNetworkType_VIRTUAL BACnetNetworkType = 0x7
-    BACnetNetworkType_REMOVED_NON_BACNET BACnetNetworkType = 0x8
-    BACnetNetworkType_IPV6 BACnetNetworkType = 0x9
-    BACnetNetworkType_SERIAL BACnetNetworkType = 0xA
+const (
+	BACnetNetworkType_ETHERNET           BACnetNetworkType = 0x0
+	BACnetNetworkType_ARCNET             BACnetNetworkType = 0x1
+	BACnetNetworkType_MSTP               BACnetNetworkType = 0x2
+	BACnetNetworkType_PTP                BACnetNetworkType = 0x3
+	BACnetNetworkType_LONTALK            BACnetNetworkType = 0x4
+	BACnetNetworkType_IPV4               BACnetNetworkType = 0x5
+	BACnetNetworkType_ZIGBEE             BACnetNetworkType = 0x6
+	BACnetNetworkType_VIRTUAL            BACnetNetworkType = 0x7
+	BACnetNetworkType_REMOVED_NON_BACNET BACnetNetworkType = 0x8
+	BACnetNetworkType_IPV6               BACnetNetworkType = 0x9
+	BACnetNetworkType_SERIAL             BACnetNetworkType = 0xA
 )
 
-func BACnetNetworkTypeValueOf(value uint8) BACnetNetworkType {
-    switch value {
-        case 0x0:
-            return BACnetNetworkType_ETHERNET
-        case 0x1:
-            return BACnetNetworkType_ARCNET
-        case 0x2:
-            return BACnetNetworkType_MSTP
-        case 0x3:
-            return BACnetNetworkType_PTP
-        case 0x4:
-            return BACnetNetworkType_LONTALK
-        case 0x5:
-            return BACnetNetworkType_IPV4
-        case 0x6:
-            return BACnetNetworkType_ZIGBEE
-        case 0x7:
-            return BACnetNetworkType_VIRTUAL
-        case 0x8:
-            return BACnetNetworkType_REMOVED_NON_BACNET
-        case 0x9:
-            return BACnetNetworkType_IPV6
-        case 0xA:
-            return BACnetNetworkType_SERIAL
-    }
-    return 0
+func BACnetNetworkTypeByValue(value uint8) BACnetNetworkType {
+	switch value {
+	case 0x0:
+		return BACnetNetworkType_ETHERNET
+	case 0x1:
+		return BACnetNetworkType_ARCNET
+	case 0x2:
+		return BACnetNetworkType_MSTP
+	case 0x3:
+		return BACnetNetworkType_PTP
+	case 0x4:
+		return BACnetNetworkType_LONTALK
+	case 0x5:
+		return BACnetNetworkType_IPV4
+	case 0x6:
+		return BACnetNetworkType_ZIGBEE
+	case 0x7:
+		return BACnetNetworkType_VIRTUAL
+	case 0x8:
+		return BACnetNetworkType_REMOVED_NON_BACNET
+	case 0x9:
+		return BACnetNetworkType_IPV6
+	case 0xA:
+		return BACnetNetworkType_SERIAL
+	}
+	return 0
+}
+
+func BACnetNetworkTypeByName(value string) BACnetNetworkType {
+	switch value {
+	case "ETHERNET":
+		return BACnetNetworkType_ETHERNET
+	case "ARCNET":
+		return BACnetNetworkType_ARCNET
+	case "MSTP":
+		return BACnetNetworkType_MSTP
+	case "PTP":
+		return BACnetNetworkType_PTP
+	case "LONTALK":
+		return BACnetNetworkType_LONTALK
+	case "IPV4":
+		return BACnetNetworkType_IPV4
+	case "ZIGBEE":
+		return BACnetNetworkType_ZIGBEE
+	case "VIRTUAL":
+		return BACnetNetworkType_VIRTUAL
+	case "REMOVED_NON_BACNET":
+		return BACnetNetworkType_REMOVED_NON_BACNET
+	case "IPV6":
+		return BACnetNetworkType_IPV6
+	case "SERIAL":
+		return BACnetNetworkType_SERIAL
+	}
+	return 0
 }
 
 func CastBACnetNetworkType(structType interface{}) BACnetNetworkType {
-    castFunc := func(typ interface{}) BACnetNetworkType {
-        if sBACnetNetworkType, ok := typ.(BACnetNetworkType); ok {
-            return sBACnetNetworkType
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) BACnetNetworkType {
+		if sBACnetNetworkType, ok := typ.(BACnetNetworkType); ok {
+			return sBACnetNetworkType
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m BACnetNetworkType) LengthInBits() uint16 {
-    return 4
+	return 4
 }
 
 func (m BACnetNetworkType) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func BACnetNetworkTypeParse(io *utils.ReadBuffer) (BACnetNetworkType, error) {
-    val, err := io.ReadUint8(4)
-    if err != nil {
-        return 0, nil
-    }
-    return BACnetNetworkTypeValueOf(val), nil
+	val, err := io.ReadUint8(4)
+	if err != nil {
+		return 0, nil
+	}
+	return BACnetNetworkTypeByValue(val), nil
 }
 
 func (e BACnetNetworkType) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(4, uint8(e))
-    return err
+	err := io.WriteUint8(4, uint8(e))
+	return err
 }
 
 func (e BACnetNetworkType) String() string {
-    switch e {
-    case BACnetNetworkType_ETHERNET:
-        return "ETHERNET"
-    case BACnetNetworkType_ARCNET:
-        return "ARCNET"
-    case BACnetNetworkType_MSTP:
-        return "MSTP"
-    case BACnetNetworkType_PTP:
-        return "PTP"
-    case BACnetNetworkType_LONTALK:
-        return "LONTALK"
-    case BACnetNetworkType_IPV4:
-        return "IPV4"
-    case BACnetNetworkType_ZIGBEE:
-        return "ZIGBEE"
-    case BACnetNetworkType_VIRTUAL:
-        return "VIRTUAL"
-    case BACnetNetworkType_REMOVED_NON_BACNET:
-        return "REMOVED_NON_BACNET"
-    case BACnetNetworkType_IPV6:
-        return "IPV6"
-    case BACnetNetworkType_SERIAL:
-        return "SERIAL"
-    }
-    return ""
+	switch e {
+	case BACnetNetworkType_ETHERNET:
+		return "ETHERNET"
+	case BACnetNetworkType_ARCNET:
+		return "ARCNET"
+	case BACnetNetworkType_MSTP:
+		return "MSTP"
+	case BACnetNetworkType_PTP:
+		return "PTP"
+	case BACnetNetworkType_LONTALK:
+		return "LONTALK"
+	case BACnetNetworkType_IPV4:
+		return "IPV4"
+	case BACnetNetworkType_ZIGBEE:
+		return "ZIGBEE"
+	case BACnetNetworkType_VIRTUAL:
+		return "VIRTUAL"
+	case BACnetNetworkType_REMOVED_NON_BACNET:
+		return "REMOVED_NON_BACNET"
+	case BACnetNetworkType_IPV6:
+		return "IPV6"
+	case BACnetNetworkType_SERIAL:
+		return "SERIAL"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
index 063d438..50eb91a 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
@@ -19,167 +19,217 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type BACnetNodeType uint8
 
 type IBACnetNodeType interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    BACnetNodeType_UNKNOWN BACnetNodeType = 0x00
-    BACnetNodeType_SYSTEM BACnetNodeType = 0x01
-    BACnetNodeType_NETWORK BACnetNodeType = 0x02
-    BACnetNodeType_DEVICE BACnetNodeType = 0x03
-    BACnetNodeType_ORGANIZATIONAL BACnetNodeType = 0x04
-    BACnetNodeType_AREA BACnetNodeType = 0x05
-    BACnetNodeType_EQUIPMENT BACnetNodeType = 0x06
-    BACnetNodeType_POINT BACnetNodeType = 0x07
-    BACnetNodeType_COLLECTION BACnetNodeType = 0x08
-    BACnetNodeType_PROPERTY BACnetNodeType = 0x09
-    BACnetNodeType_FUNCTIONAL BACnetNodeType = 0x0A
-    BACnetNodeType_OTHER BACnetNodeType = 0x0B
-    BACnetNodeType_SUBSYSTEM BACnetNodeType = 0x0C
-    BACnetNodeType_BUILDING BACnetNodeType = 0x0D
-    BACnetNodeType_FLOOR BACnetNodeType = 0x0E
-    BACnetNodeType_SECTION BACnetNodeType = 0x0F
-    BACnetNodeType_MODULE BACnetNodeType = 0x10
-    BACnetNodeType_TREE BACnetNodeType = 0x11
-    BACnetNodeType_MEMBER BACnetNodeType = 0x12
-    BACnetNodeType_PROTOCOL BACnetNodeType = 0x13
-    BACnetNodeType_ROOM BACnetNodeType = 0x14
-    BACnetNodeType_ZONE BACnetNodeType = 0x15
+const (
+	BACnetNodeType_UNKNOWN        BACnetNodeType = 0x00
+	BACnetNodeType_SYSTEM         BACnetNodeType = 0x01
+	BACnetNodeType_NETWORK        BACnetNodeType = 0x02
+	BACnetNodeType_DEVICE         BACnetNodeType = 0x03
+	BACnetNodeType_ORGANIZATIONAL BACnetNodeType = 0x04
+	BACnetNodeType_AREA           BACnetNodeType = 0x05
+	BACnetNodeType_EQUIPMENT      BACnetNodeType = 0x06
+	BACnetNodeType_POINT          BACnetNodeType = 0x07
+	BACnetNodeType_COLLECTION     BACnetNodeType = 0x08
+	BACnetNodeType_PROPERTY       BACnetNodeType = 0x09
+	BACnetNodeType_FUNCTIONAL     BACnetNodeType = 0x0A
+	BACnetNodeType_OTHER          BACnetNodeType = 0x0B
+	BACnetNodeType_SUBSYSTEM      BACnetNodeType = 0x0C
+	BACnetNodeType_BUILDING       BACnetNodeType = 0x0D
+	BACnetNodeType_FLOOR          BACnetNodeType = 0x0E
+	BACnetNodeType_SECTION        BACnetNodeType = 0x0F
+	BACnetNodeType_MODULE         BACnetNodeType = 0x10
+	BACnetNodeType_TREE           BACnetNodeType = 0x11
+	BACnetNodeType_MEMBER         BACnetNodeType = 0x12
+	BACnetNodeType_PROTOCOL       BACnetNodeType = 0x13
+	BACnetNodeType_ROOM           BACnetNodeType = 0x14
+	BACnetNodeType_ZONE           BACnetNodeType = 0x15
 )
 
-func BACnetNodeTypeValueOf(value uint8) BACnetNodeType {
-    switch value {
-        case 0x00:
-            return BACnetNodeType_UNKNOWN
-        case 0x01:
-            return BACnetNodeType_SYSTEM
-        case 0x02:
-            return BACnetNodeType_NETWORK
-        case 0x03:
-            return BACnetNodeType_DEVICE
-        case 0x04:
-            return BACnetNodeType_ORGANIZATIONAL
-        case 0x05:
-            return BACnetNodeType_AREA
-        case 0x06:
-            return BACnetNodeType_EQUIPMENT
-        case 0x07:
-            return BACnetNodeType_POINT
-        case 0x08:
-            return BACnetNodeType_COLLECTION
-        case 0x09:
-            return BACnetNodeType_PROPERTY
-        case 0x0A:
-            return BACnetNodeType_FUNCTIONAL
-        case 0x0B:
-            return BACnetNodeType_OTHER
-        case 0x0C:
-            return BACnetNodeType_SUBSYSTEM
-        case 0x0D:
-            return BACnetNodeType_BUILDING
-        case 0x0E:
-            return BACnetNodeType_FLOOR
-        case 0x0F:
-            return BACnetNodeType_SECTION
-        case 0x10:
-            return BACnetNodeType_MODULE
-        case 0x11:
-            return BACnetNodeType_TREE
-        case 0x12:
-            return BACnetNodeType_MEMBER
-        case 0x13:
-            return BACnetNodeType_PROTOCOL
-        case 0x14:
-            return BACnetNodeType_ROOM
-        case 0x15:
-            return BACnetNodeType_ZONE
-    }
-    return 0
+func BACnetNodeTypeByValue(value uint8) BACnetNodeType {
+	switch value {
+	case 0x00:
+		return BACnetNodeType_UNKNOWN
+	case 0x01:
+		return BACnetNodeType_SYSTEM
+	case 0x02:
+		return BACnetNodeType_NETWORK
+	case 0x03:
+		return BACnetNodeType_DEVICE
+	case 0x04:
+		return BACnetNodeType_ORGANIZATIONAL
+	case 0x05:
+		return BACnetNodeType_AREA
+	case 0x06:
+		return BACnetNodeType_EQUIPMENT
+	case 0x07:
+		return BACnetNodeType_POINT
+	case 0x08:
+		return BACnetNodeType_COLLECTION
+	case 0x09:
+		return BACnetNodeType_PROPERTY
+	case 0x0A:
+		return BACnetNodeType_FUNCTIONAL
+	case 0x0B:
+		return BACnetNodeType_OTHER
+	case 0x0C:
+		return BACnetNodeType_SUBSYSTEM
+	case 0x0D:
+		return BACnetNodeType_BUILDING
+	case 0x0E:
+		return BACnetNodeType_FLOOR
+	case 0x0F:
+		return BACnetNodeType_SECTION
+	case 0x10:
+		return BACnetNodeType_MODULE
+	case 0x11:
+		return BACnetNodeType_TREE
+	case 0x12:
+		return BACnetNodeType_MEMBER
+	case 0x13:
+		return BACnetNodeType_PROTOCOL
+	case 0x14:
+		return BACnetNodeType_ROOM
+	case 0x15:
+		return BACnetNodeType_ZONE
+	}
+	return 0
+}
+
+func BACnetNodeTypeByName(value string) BACnetNodeType {
+	switch value {
+	case "UNKNOWN":
+		return BACnetNodeType_UNKNOWN
+	case "SYSTEM":
+		return BACnetNodeType_SYSTEM
+	case "NETWORK":
+		return BACnetNodeType_NETWORK
+	case "DEVICE":
+		return BACnetNodeType_DEVICE
+	case "ORGANIZATIONAL":
+		return BACnetNodeType_ORGANIZATIONAL
+	case "AREA":
+		return BACnetNodeType_AREA
+	case "EQUIPMENT":
+		return BACnetNodeType_EQUIPMENT
+	case "POINT":
+		return BACnetNodeType_POINT
+	case "COLLECTION":
+		return BACnetNodeType_COLLECTION
+	case "PROPERTY":
+		return BACnetNodeType_PROPERTY
+	case "FUNCTIONAL":
+		return BACnetNodeType_FUNCTIONAL
+	case "OTHER":
+		return BACnetNodeType_OTHER
+	case "SUBSYSTEM":
+		return BACnetNodeType_SUBSYSTEM
+	case "BUILDING":
+		return BACnetNodeType_BUILDING
+	case "FLOOR":
+		return BACnetNodeType_FLOOR
+	case "SECTION":
+		return BACnetNodeType_SECTION
+	case "MODULE":
+		return BACnetNodeType_MODULE
+	case "TREE":
+		return BACnetNodeType_TREE
+	case "MEMBER":
+		return BACnetNodeType_MEMBER
+	case "PROTOCOL":
+		return BACnetNodeType_PROTOCOL
+	case "ROOM":
+		return BACnetNodeType_ROOM
+	case "ZONE":
+		return BACnetNodeType_ZONE
+	}
+	return 0
 }
 
 func CastBACnetNodeType(structType interface{}) BACnetNodeType {
-    castFunc := func(typ interface{}) BACnetNodeType {
-        if sBACnetNodeType, ok := typ.(BACnetNodeType); ok {
-            return sBACnetNodeType
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) BACnetNodeType {
+		if sBACnetNodeType, ok := typ.(BACnetNodeType); ok {
+			return sBACnetNodeType
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m BACnetNodeType) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m BACnetNodeType) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func BACnetNodeTypeParse(io *utils.ReadBuffer) (BACnetNodeType, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return BACnetNodeTypeValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return BACnetNodeTypeByValue(val), nil
 }
 
 func (e BACnetNodeType) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e BACnetNodeType) String() string {
-    switch e {
-    case BACnetNodeType_UNKNOWN:
-        return "UNKNOWN"
-    case BACnetNodeType_SYSTEM:
-        return "SYSTEM"
-    case BACnetNodeType_NETWORK:
-        return "NETWORK"
-    case BACnetNodeType_DEVICE:
-        return "DEVICE"
-    case BACnetNodeType_ORGANIZATIONAL:
-        return "ORGANIZATIONAL"
-    case BACnetNodeType_AREA:
-        return "AREA"
-    case BACnetNodeType_EQUIPMENT:
-        return "EQUIPMENT"
-    case BACnetNodeType_POINT:
-        return "POINT"
-    case BACnetNodeType_COLLECTION:
-        return "COLLECTION"
-    case BACnetNodeType_PROPERTY:
-        return "PROPERTY"
-    case BACnetNodeType_FUNCTIONAL:
-        return "FUNCTIONAL"
-    case BACnetNodeType_OTHER:
-        return "OTHER"
-    case BACnetNodeType_SUBSYSTEM:
-        return "SUBSYSTEM"
-    case BACnetNodeType_BUILDING:
-        return "BUILDING"
-    case BACnetNodeType_FLOOR:
-        return "FLOOR"
-    case BACnetNodeType_SECTION:
-        return "SECTION"
-    case BACnetNodeType_MODULE:
-        return "MODULE"
-    case BACnetNodeType_TREE:
-        return "TREE"
-    case BACnetNodeType_MEMBER:
-        return "MEMBER"
-    case BACnetNodeType_PROTOCOL:
-        return "PROTOCOL"
-    case BACnetNodeType_ROOM:
-        return "ROOM"
-    case BACnetNodeType_ZONE:
-        return "ZONE"
-    }
-    return ""
+	switch e {
+	case BACnetNodeType_UNKNOWN:
+		return "UNKNOWN"
+	case BACnetNodeType_SYSTEM:
+		return "SYSTEM"
+	case BACnetNodeType_NETWORK:
+		return "NETWORK"
+	case BACnetNodeType_DEVICE:
+		return "DEVICE"
+	case BACnetNodeType_ORGANIZATIONAL:
+		return "ORGANIZATIONAL"
+	case BACnetNodeType_AREA:
+		return "AREA"
+	case BACnetNodeType_EQUIPMENT:
+		return "EQUIPMENT"
+	case BACnetNodeType_POINT:
+		return "POINT"
+	case BACnetNodeType_COLLECTION:
+		return "COLLECTION"
+	case BACnetNodeType_PROPERTY:
+		return "PROPERTY"
+	case BACnetNodeType_FUNCTIONAL:
+		return "FUNCTIONAL"
+	case BACnetNodeType_OTHER:
+		return "OTHER"
+	case BACnetNodeType_SUBSYSTEM:
+		return "SUBSYSTEM"
+	case BACnetNodeType_BUILDING:
+		return "BUILDING"
+	case BACnetNodeType_FLOOR:
+		return "FLOOR"
+	case BACnetNodeType_SECTION:
+		return "SECTION"
+	case BACnetNodeType_MODULE:
+		return "MODULE"
+	case BACnetNodeType_TREE:
+		return "TREE"
+	case BACnetNodeType_MEMBER:
+		return "MEMBER"
+	case BACnetNodeType_PROTOCOL:
+		return "PROTOCOL"
+	case BACnetNodeType_ROOM:
+		return "ROOM"
+	case BACnetNodeType_ZONE:
+		return "ZONE"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
index cd988ef..02f0242 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
@@ -19,72 +19,84 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type BACnetNotifyType uint8
 
 type IBACnetNotifyType interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    BACnetNotifyType_ALARM BACnetNotifyType = 0x0
-    BACnetNotifyType_EVENT BACnetNotifyType = 0x1
-    BACnetNotifyType_ACK_NOTIFICATION BACnetNotifyType = 0x2
+const (
+	BACnetNotifyType_ALARM            BACnetNotifyType = 0x0
+	BACnetNotifyType_EVENT            BACnetNotifyType = 0x1
+	BACnetNotifyType_ACK_NOTIFICATION BACnetNotifyType = 0x2
 )
 
-func BACnetNotifyTypeValueOf(value uint8) BACnetNotifyType {
-    switch value {
-        case 0x0:
-            return BACnetNotifyType_ALARM
-        case 0x1:
-            return BACnetNotifyType_EVENT
-        case 0x2:
-            return BACnetNotifyType_ACK_NOTIFICATION
-    }
-    return 0
+func BACnetNotifyTypeByValue(value uint8) BACnetNotifyType {
+	switch value {
+	case 0x0:
+		return BACnetNotifyType_ALARM
+	case 0x1:
+		return BACnetNotifyType_EVENT
+	case 0x2:
+		return BACnetNotifyType_ACK_NOTIFICATION
+	}
+	return 0
+}
+
+func BACnetNotifyTypeByName(value string) BACnetNotifyType {
+	switch value {
+	case "ALARM":
+		return BACnetNotifyType_ALARM
+	case "EVENT":
+		return BACnetNotifyType_EVENT
+	case "ACK_NOTIFICATION":
+		return BACnetNotifyType_ACK_NOTIFICATION
+	}
+	return 0
 }
 
 func CastBACnetNotifyType(structType interface{}) BACnetNotifyType {
-    castFunc := func(typ interface{}) BACnetNotifyType {
-        if sBACnetNotifyType, ok := typ.(BACnetNotifyType); ok {
-            return sBACnetNotifyType
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) BACnetNotifyType {
+		if sBACnetNotifyType, ok := typ.(BACnetNotifyType); ok {
+			return sBACnetNotifyType
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m BACnetNotifyType) LengthInBits() uint16 {
-    return 4
+	return 4
 }
 
 func (m BACnetNotifyType) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func BACnetNotifyTypeParse(io *utils.ReadBuffer) (BACnetNotifyType, error) {
-    val, err := io.ReadUint8(4)
-    if err != nil {
-        return 0, nil
-    }
-    return BACnetNotifyTypeValueOf(val), nil
+	val, err := io.ReadUint8(4)
+	if err != nil {
+		return 0, nil
+	}
+	return BACnetNotifyTypeByValue(val), nil
 }
 
 func (e BACnetNotifyType) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(4, uint8(e))
-    return err
+	err := io.WriteUint8(4, uint8(e))
+	return err
 }
 
 func (e BACnetNotifyType) String() string {
-    switch e {
-    case BACnetNotifyType_ALARM:
-        return "ALARM"
-    case BACnetNotifyType_EVENT:
-        return "EVENT"
-    case BACnetNotifyType_ACK_NOTIFICATION:
-        return "ACK_NOTIFICATION"
-    }
-    return ""
+	switch e {
+	case BACnetNotifyType_ALARM:
+		return "ALARM"
+	case BACnetNotifyType_EVENT:
+		return "EVENT"
+	case BACnetNotifyType_ACK_NOTIFICATION:
+		return "ACK_NOTIFICATION"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
index 7adfb80..90fc865 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
@@ -19,352 +19,476 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type BACnetObjectType uint16
 
 type IBACnetObjectType interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    BACnetObjectType_ANALOG_INPUT BACnetObjectType = 0x000
-    BACnetObjectType_ANALOG_OUTPUT BACnetObjectType = 0x001
-    BACnetObjectType_ANALOG_VALUE BACnetObjectType = 0x002
-    BACnetObjectType_BINARY_INPUT BACnetObjectType = 0x003
-    BACnetObjectType_BINARY_OUTPUT BACnetObjectType = 0x004
-    BACnetObjectType_BINARY_VALUE BACnetObjectType = 0x005
-    BACnetObjectType_MULTISTATE_INPUT BACnetObjectType = 0x00D
-    BACnetObjectType_MULTISTATE_OUTPUT BACnetObjectType = 0x00E
-    BACnetObjectType_MULTISTATE_VALUE BACnetObjectType = 0x013
-    BACnetObjectType_SCHEDULE BACnetObjectType = 0x011
-    BACnetObjectType_DEVICE BACnetObjectType = 0x008
-    BACnetObjectType_CALENDAR BACnetObjectType = 0x006
-    BACnetObjectType_COMMAND BACnetObjectType = 0x007
-    BACnetObjectType_EVENT_ENROLLMENT BACnetObjectType = 0x009
-    BACnetObjectType_FILE BACnetObjectType = 0x00A
-    BACnetObjectType_GROUP BACnetObjectType = 0x00B
-    BACnetObjectType_LOOP BACnetObjectType = 0x00C
-    BACnetObjectType_NOTIFICATION_CLASS BACnetObjectType = 0x00F
-    BACnetObjectType_PROGRAM BACnetObjectType = 0x010
-    BACnetObjectType_AVERAGING BACnetObjectType = 0x012
-    BACnetObjectType_TREND_LOG BACnetObjectType = 0x014
-    BACnetObjectType_LIFE_SAFETY_POINT BACnetObjectType = 0x015
-    BACnetObjectType_LIFE_SAFETY_ZONE BACnetObjectType = 0x016
-    BACnetObjectType_ACCUMULATOR BACnetObjectType = 0x017
-    BACnetObjectType_PULSE_CONVERTER BACnetObjectType = 0x018
-    BACnetObjectType_EVENT_LOG BACnetObjectType = 0x019
-    BACnetObjectType_GLOBAL_GROUP BACnetObjectType = 0x01A
-    BACnetObjectType_TREND_LOG_MULTIPLE BACnetObjectType = 0x01B
-    BACnetObjectType_LOAD_CONTROL BACnetObjectType = 0x01C
-    BACnetObjectType_STRUCTURED_VIEW BACnetObjectType = 0x01D
-    BACnetObjectType_ACCESS_DOOR BACnetObjectType = 0x01E
-    BACnetObjectType_TIMER BACnetObjectType = 0x01F
-    BACnetObjectType_ACCESS_CREDENTIAL BACnetObjectType = 0x020
-    BACnetObjectType_ACCESS_POINT BACnetObjectType = 0x021
-    BACnetObjectType_ACCESS_RIGHTS BACnetObjectType = 0x022
-    BACnetObjectType_ACCESS_USER BACnetObjectType = 0x023
-    BACnetObjectType_ACCESS_ZONE BACnetObjectType = 0x024
-    BACnetObjectType_CREDENTIAL_DATA_INPUT BACnetObjectType = 0x025
-    BACnetObjectType_NETWORK_SECURITY BACnetObjectType = 0x026
-    BACnetObjectType_BITSTRING_VALUE BACnetObjectType = 0x027
-    BACnetObjectType_CHARACTERSTRING_VALUE BACnetObjectType = 0x028
-    BACnetObjectType_DATEPATTERN_VALUE BACnetObjectType = 0x029
-    BACnetObjectType_DATE_VALUE BACnetObjectType = 0x02A
-    BACnetObjectType_DATETIMEPATTERN_VALUE BACnetObjectType = 0x02B
-    BACnetObjectType_DATETIME_VALUE BACnetObjectType = 0x02C
-    BACnetObjectType_INTEGER_VALUE BACnetObjectType = 0x02D
-    BACnetObjectType_LARGE_ANALOG_VALUE BACnetObjectType = 0x02E
-    BACnetObjectType_OCTETSTRING_VALUE BACnetObjectType = 0x02F
-    BACnetObjectType_POSITIVE_INTEGER_VALUE BACnetObjectType = 0x030
-    BACnetObjectType_TIMEPATTERN_VALUE BACnetObjectType = 0x031
-    BACnetObjectType_TIME_VALUE BACnetObjectType = 0x032
-    BACnetObjectType_NOTIFICATION_FORWARDER BACnetObjectType = 0x033
-    BACnetObjectType_ALERT_ENROLLMENT BACnetObjectType = 0x034
-    BACnetObjectType_CHANNEL BACnetObjectType = 0x035
-    BACnetObjectType_LIGHTING_OUTPUT BACnetObjectType = 0x036
-    BACnetObjectType_BINARY_LIGHTING_OUTPUT BACnetObjectType = 0x037
-    BACnetObjectType_NETWORK_PORT BACnetObjectType = 0x038
-    BACnetObjectType_ELEVATOR_GROUP BACnetObjectType = 0x039
-    BACnetObjectType_ESCALATOR BACnetObjectType = 0x03A
+const (
+	BACnetObjectType_ANALOG_INPUT           BACnetObjectType = 0x000
+	BACnetObjectType_ANALOG_OUTPUT          BACnetObjectType = 0x001
+	BACnetObjectType_ANALOG_VALUE           BACnetObjectType = 0x002
+	BACnetObjectType_BINARY_INPUT           BACnetObjectType = 0x003
+	BACnetObjectType_BINARY_OUTPUT          BACnetObjectType = 0x004
+	BACnetObjectType_BINARY_VALUE           BACnetObjectType = 0x005
+	BACnetObjectType_MULTISTATE_INPUT       BACnetObjectType = 0x00D
+	BACnetObjectType_MULTISTATE_OUTPUT      BACnetObjectType = 0x00E
+	BACnetObjectType_MULTISTATE_VALUE       BACnetObjectType = 0x013
+	BACnetObjectType_SCHEDULE               BACnetObjectType = 0x011
+	BACnetObjectType_DEVICE                 BACnetObjectType = 0x008
+	BACnetObjectType_CALENDAR               BACnetObjectType = 0x006
+	BACnetObjectType_COMMAND                BACnetObjectType = 0x007
+	BACnetObjectType_EVENT_ENROLLMENT       BACnetObjectType = 0x009
+	BACnetObjectType_FILE                   BACnetObjectType = 0x00A
+	BACnetObjectType_GROUP                  BACnetObjectType = 0x00B
+	BACnetObjectType_LOOP                   BACnetObjectType = 0x00C
+	BACnetObjectType_NOTIFICATION_CLASS     BACnetObjectType = 0x00F
+	BACnetObjectType_PROGRAM                BACnetObjectType = 0x010
+	BACnetObjectType_AVERAGING              BACnetObjectType = 0x012
+	BACnetObjectType_TREND_LOG              BACnetObjectType = 0x014
+	BACnetObjectType_LIFE_SAFETY_POINT      BACnetObjectType = 0x015
+	BACnetObjectType_LIFE_SAFETY_ZONE       BACnetObjectType = 0x016
+	BACnetObjectType_ACCUMULATOR            BACnetObjectType = 0x017
+	BACnetObjectType_PULSE_CONVERTER        BACnetObjectType = 0x018
+	BACnetObjectType_EVENT_LOG              BACnetObjectType = 0x019
+	BACnetObjectType_GLOBAL_GROUP           BACnetObjectType = 0x01A
+	BACnetObjectType_TREND_LOG_MULTIPLE     BACnetObjectType = 0x01B
+	BACnetObjectType_LOAD_CONTROL           BACnetObjectType = 0x01C
+	BACnetObjectType_STRUCTURED_VIEW        BACnetObjectType = 0x01D
+	BACnetObjectType_ACCESS_DOOR            BACnetObjectType = 0x01E
+	BACnetObjectType_TIMER                  BACnetObjectType = 0x01F
+	BACnetObjectType_ACCESS_CREDENTIAL      BACnetObjectType = 0x020
+	BACnetObjectType_ACCESS_POINT           BACnetObjectType = 0x021
+	BACnetObjectType_ACCESS_RIGHTS          BACnetObjectType = 0x022
+	BACnetObjectType_ACCESS_USER            BACnetObjectType = 0x023
+	BACnetObjectType_ACCESS_ZONE            BACnetObjectType = 0x024
+	BACnetObjectType_CREDENTIAL_DATA_INPUT  BACnetObjectType = 0x025
+	BACnetObjectType_NETWORK_SECURITY       BACnetObjectType = 0x026
+	BACnetObjectType_BITSTRING_VALUE        BACnetObjectType = 0x027
+	BACnetObjectType_CHARACTERSTRING_VALUE  BACnetObjectType = 0x028
+	BACnetObjectType_DATEPATTERN_VALUE      BACnetObjectType = 0x029
+	BACnetObjectType_DATE_VALUE             BACnetObjectType = 0x02A
+	BACnetObjectType_DATETIMEPATTERN_VALUE  BACnetObjectType = 0x02B
+	BACnetObjectType_DATETIME_VALUE         BACnetObjectType = 0x02C
+	BACnetObjectType_INTEGER_VALUE          BACnetObjectType = 0x02D
+	BACnetObjectType_LARGE_ANALOG_VALUE     BACnetObjectType = 0x02E
+	BACnetObjectType_OCTETSTRING_VALUE      BACnetObjectType = 0x02F
+	BACnetObjectType_POSITIVE_INTEGER_VALUE BACnetObjectType = 0x030
+	BACnetObjectType_TIMEPATTERN_VALUE      BACnetObjectType = 0x031
+	BACnetObjectType_TIME_VALUE             BACnetObjectType = 0x032
+	BACnetObjectType_NOTIFICATION_FORWARDER BACnetObjectType = 0x033
+	BACnetObjectType_ALERT_ENROLLMENT       BACnetObjectType = 0x034
+	BACnetObjectType_CHANNEL                BACnetObjectType = 0x035
+	BACnetObjectType_LIGHTING_OUTPUT        BACnetObjectType = 0x036
+	BACnetObjectType_BINARY_LIGHTING_OUTPUT BACnetObjectType = 0x037
+	BACnetObjectType_NETWORK_PORT           BACnetObjectType = 0x038
+	BACnetObjectType_ELEVATOR_GROUP         BACnetObjectType = 0x039
+	BACnetObjectType_ESCALATOR              BACnetObjectType = 0x03A
 )
 
-func BACnetObjectTypeValueOf(value uint16) BACnetObjectType {
-    switch value {
-        case 0x000:
-            return BACnetObjectType_ANALOG_INPUT
-        case 0x001:
-            return BACnetObjectType_ANALOG_OUTPUT
-        case 0x002:
-            return BACnetObjectType_ANALOG_VALUE
-        case 0x003:
-            return BACnetObjectType_BINARY_INPUT
-        case 0x004:
-            return BACnetObjectType_BINARY_OUTPUT
-        case 0x005:
-            return BACnetObjectType_BINARY_VALUE
-        case 0x006:
-            return BACnetObjectType_CALENDAR
-        case 0x007:
-            return BACnetObjectType_COMMAND
-        case 0x008:
-            return BACnetObjectType_DEVICE
-        case 0x009:
-            return BACnetObjectType_EVENT_ENROLLMENT
-        case 0x00A:
-            return BACnetObjectType_FILE
-        case 0x00B:
-            return BACnetObjectType_GROUP
-        case 0x00C:
-            return BACnetObjectType_LOOP
-        case 0x00D:
-            return BACnetObjectType_MULTISTATE_INPUT
-        case 0x00E:
-            return BACnetObjectType_MULTISTATE_OUTPUT
-        case 0x00F:
-            return BACnetObjectType_NOTIFICATION_CLASS
-        case 0x010:
-            return BACnetObjectType_PROGRAM
-        case 0x011:
-            return BACnetObjectType_SCHEDULE
-        case 0x012:
-            return BACnetObjectType_AVERAGING
-        case 0x013:
-            return BACnetObjectType_MULTISTATE_VALUE
-        case 0x014:
-            return BACnetObjectType_TREND_LOG
-        case 0x015:
-            return BACnetObjectType_LIFE_SAFETY_POINT
-        case 0x016:
-            return BACnetObjectType_LIFE_SAFETY_ZONE
-        case 0x017:
-            return BACnetObjectType_ACCUMULATOR
-        case 0x018:
-            return BACnetObjectType_PULSE_CONVERTER
-        case 0x019:
-            return BACnetObjectType_EVENT_LOG
-        case 0x01A:
-            return BACnetObjectType_GLOBAL_GROUP
-        case 0x01B:
-            return BACnetObjectType_TREND_LOG_MULTIPLE
-        case 0x01C:
-            return BACnetObjectType_LOAD_CONTROL
-        case 0x01D:
-            return BACnetObjectType_STRUCTURED_VIEW
-        case 0x01E:
-            return BACnetObjectType_ACCESS_DOOR
-        case 0x01F:
-            return BACnetObjectType_TIMER
-        case 0x020:
-            return BACnetObjectType_ACCESS_CREDENTIAL
-        case 0x021:
-            return BACnetObjectType_ACCESS_POINT
-        case 0x022:
-            return BACnetObjectType_ACCESS_RIGHTS
-        case 0x023:
-            return BACnetObjectType_ACCESS_USER
-        case 0x024:
-            return BACnetObjectType_ACCESS_ZONE
-        case 0x025:
-            return BACnetObjectType_CREDENTIAL_DATA_INPUT
-        case 0x026:
-            return BACnetObjectType_NETWORK_SECURITY
-        case 0x027:
-            return BACnetObjectType_BITSTRING_VALUE
-        case 0x028:
-            return BACnetObjectType_CHARACTERSTRING_VALUE
-        case 0x029:
-            return BACnetObjectType_DATEPATTERN_VALUE
-        case 0x02A:
-            return BACnetObjectType_DATE_VALUE
-        case 0x02B:
-            return BACnetObjectType_DATETIMEPATTERN_VALUE
-        case 0x02C:
-            return BACnetObjectType_DATETIME_VALUE
-        case 0x02D:
-            return BACnetObjectType_INTEGER_VALUE
-        case 0x02E:
-            return BACnetObjectType_LARGE_ANALOG_VALUE
-        case 0x02F:
-            return BACnetObjectType_OCTETSTRING_VALUE
-        case 0x030:
-            return BACnetObjectType_POSITIVE_INTEGER_VALUE
-        case 0x031:
-            return BACnetObjectType_TIMEPATTERN_VALUE
-        case 0x032:
-            return BACnetObjectType_TIME_VALUE
-        case 0x033:
-            return BACnetObjectType_NOTIFICATION_FORWARDER
-        case 0x034:
-            return BACnetObjectType_ALERT_ENROLLMENT
-        case 0x035:
-            return BACnetObjectType_CHANNEL
-        case 0x036:
-            return BACnetObjectType_LIGHTING_OUTPUT
-        case 0x037:
-            return BACnetObjectType_BINARY_LIGHTING_OUTPUT
-        case 0x038:
-            return BACnetObjectType_NETWORK_PORT
-        case 0x039:
-            return BACnetObjectType_ELEVATOR_GROUP
-        case 0x03A:
-            return BACnetObjectType_ESCALATOR
-    }
-    return 0
+func BACnetObjectTypeByValue(value uint16) BACnetObjectType {
+	switch value {
+	case 0x000:
+		return BACnetObjectType_ANALOG_INPUT
+	case 0x001:
+		return BACnetObjectType_ANALOG_OUTPUT
+	case 0x002:
+		return BACnetObjectType_ANALOG_VALUE
+	case 0x003:
+		return BACnetObjectType_BINARY_INPUT
+	case 0x004:
+		return BACnetObjectType_BINARY_OUTPUT
+	case 0x005:
+		return BACnetObjectType_BINARY_VALUE
+	case 0x006:
+		return BACnetObjectType_CALENDAR
+	case 0x007:
+		return BACnetObjectType_COMMAND
+	case 0x008:
+		return BACnetObjectType_DEVICE
+	case 0x009:
+		return BACnetObjectType_EVENT_ENROLLMENT
+	case 0x00A:
+		return BACnetObjectType_FILE
+	case 0x00B:
+		return BACnetObjectType_GROUP
+	case 0x00C:
+		return BACnetObjectType_LOOP
+	case 0x00D:
+		return BACnetObjectType_MULTISTATE_INPUT
+	case 0x00E:
+		return BACnetObjectType_MULTISTATE_OUTPUT
+	case 0x00F:
+		return BACnetObjectType_NOTIFICATION_CLASS
+	case 0x010:
+		return BACnetObjectType_PROGRAM
+	case 0x011:
+		return BACnetObjectType_SCHEDULE
+	case 0x012:
+		return BACnetObjectType_AVERAGING
+	case 0x013:
+		return BACnetObjectType_MULTISTATE_VALUE
+	case 0x014:
+		return BACnetObjectType_TREND_LOG
+	case 0x015:
+		return BACnetObjectType_LIFE_SAFETY_POINT
+	case 0x016:
+		return BACnetObjectType_LIFE_SAFETY_ZONE
+	case 0x017:
+		return BACnetObjectType_ACCUMULATOR
+	case 0x018:
+		return BACnetObjectType_PULSE_CONVERTER
+	case 0x019:
+		return BACnetObjectType_EVENT_LOG
+	case 0x01A:
+		return BACnetObjectType_GLOBAL_GROUP
+	case 0x01B:
+		return BACnetObjectType_TREND_LOG_MULTIPLE
+	case 0x01C:
+		return BACnetObjectType_LOAD_CONTROL
+	case 0x01D:
+		return BACnetObjectType_STRUCTURED_VIEW
+	case 0x01E:
+		return BACnetObjectType_ACCESS_DOOR
+	case 0x01F:
+		return BACnetObjectType_TIMER
+	case 0x020:
+		return BACnetObjectType_ACCESS_CREDENTIAL
+	case 0x021:
+		return BACnetObjectType_ACCESS_POINT
+	case 0x022:
+		return BACnetObjectType_ACCESS_RIGHTS
+	case 0x023:
+		return BACnetObjectType_ACCESS_USER
+	case 0x024:
+		return BACnetObjectType_ACCESS_ZONE
+	case 0x025:
+		return BACnetObjectType_CREDENTIAL_DATA_INPUT
+	case 0x026:
+		return BACnetObjectType_NETWORK_SECURITY
+	case 0x027:
+		return BACnetObjectType_BITSTRING_VALUE
+	case 0x028:
+		return BACnetObjectType_CHARACTERSTRING_VALUE
+	case 0x029:
+		return BACnetObjectType_DATEPATTERN_VALUE
+	case 0x02A:
+		return BACnetObjectType_DATE_VALUE
+	case 0x02B:
+		return BACnetObjectType_DATETIMEPATTERN_VALUE
+	case 0x02C:
+		return BACnetObjectType_DATETIME_VALUE
+	case 0x02D:
+		return BACnetObjectType_INTEGER_VALUE
+	case 0x02E:
+		return BACnetObjectType_LARGE_ANALOG_VALUE
+	case 0x02F:
+		return BACnetObjectType_OCTETSTRING_VALUE
+	case 0x030:
+		return BACnetObjectType_POSITIVE_INTEGER_VALUE
+	case 0x031:
+		return BACnetObjectType_TIMEPATTERN_VALUE
+	case 0x032:
+		return BACnetObjectType_TIME_VALUE
+	case 0x033:
+		return BACnetObjectType_NOTIFICATION_FORWARDER
+	case 0x034:
+		return BACnetObjectType_ALERT_ENROLLMENT
+	case 0x035:
+		return BACnetObjectType_CHANNEL
+	case 0x036:
+		return BACnetObjectType_LIGHTING_OUTPUT
+	case 0x037:
+		return BACnetObjectType_BINARY_LIGHTING_OUTPUT
+	case 0x038:
+		return BACnetObjectType_NETWORK_PORT
+	case 0x039:
+		return BACnetObjectType_ELEVATOR_GROUP
+	case 0x03A:
+		return BACnetObjectType_ESCALATOR
+	}
+	return 0
+}
+
+func BACnetObjectTypeByName(value string) BACnetObjectType {
+	switch value {
+	case "ANALOG_INPUT":
+		return BACnetObjectType_ANALOG_INPUT
+	case "ANALOG_OUTPUT":
+		return BACnetObjectType_ANALOG_OUTPUT
+	case "ANALOG_VALUE":
+		return BACnetObjectType_ANALOG_VALUE
+	case "BINARY_INPUT":
+		return BACnetObjectType_BINARY_INPUT
+	case "BINARY_OUTPUT":
+		return BACnetObjectType_BINARY_OUTPUT
+	case "BINARY_VALUE":
+		return BACnetObjectType_BINARY_VALUE
+	case "CALENDAR":
+		return BACnetObjectType_CALENDAR
+	case "COMMAND":
+		return BACnetObjectType_COMMAND
+	case "DEVICE":
+		return BACnetObjectType_DEVICE
+	case "EVENT_ENROLLMENT":
+		return BACnetObjectType_EVENT_ENROLLMENT
+	case "FILE":
+		return BACnetObjectType_FILE
+	case "GROUP":
+		return BACnetObjectType_GROUP
+	case "LOOP":
+		return BACnetObjectType_LOOP
+	case "MULTISTATE_INPUT":
+		return BACnetObjectType_MULTISTATE_INPUT
+	case "MULTISTATE_OUTPUT":
+		return BACnetObjectType_MULTISTATE_OUTPUT
+	case "NOTIFICATION_CLASS":
+		return BACnetObjectType_NOTIFICATION_CLASS
+	case "PROGRAM":
+		return BACnetObjectType_PROGRAM
+	case "SCHEDULE":
+		return BACnetObjectType_SCHEDULE
+	case "AVERAGING":
+		return BACnetObjectType_AVERAGING
+	case "MULTISTATE_VALUE":
+		return BACnetObjectType_MULTISTATE_VALUE
+	case "TREND_LOG":
+		return BACnetObjectType_TREND_LOG
+	case "LIFE_SAFETY_POINT":
+		return BACnetObjectType_LIFE_SAFETY_POINT
+	case "LIFE_SAFETY_ZONE":
+		return BACnetObjectType_LIFE_SAFETY_ZONE
+	case "ACCUMULATOR":
+		return BACnetObjectType_ACCUMULATOR
+	case "PULSE_CONVERTER":
+		return BACnetObjectType_PULSE_CONVERTER
+	case "EVENT_LOG":
+		return BACnetObjectType_EVENT_LOG
+	case "GLOBAL_GROUP":
+		return BACnetObjectType_GLOBAL_GROUP
+	case "TREND_LOG_MULTIPLE":
+		return BACnetObjectType_TREND_LOG_MULTIPLE
+	case "LOAD_CONTROL":
+		return BACnetObjectType_LOAD_CONTROL
+	case "STRUCTURED_VIEW":
+		return BACnetObjectType_STRUCTURED_VIEW
+	case "ACCESS_DOOR":
+		return BACnetObjectType_ACCESS_DOOR
+	case "TIMER":
+		return BACnetObjectType_TIMER
+	case "ACCESS_CREDENTIAL":
+		return BACnetObjectType_ACCESS_CREDENTIAL
+	case "ACCESS_POINT":
+		return BACnetObjectType_ACCESS_POINT
+	case "ACCESS_RIGHTS":
+		return BACnetObjectType_ACCESS_RIGHTS
+	case "ACCESS_USER":
+		return BACnetObjectType_ACCESS_USER
+	case "ACCESS_ZONE":
+		return BACnetObjectType_ACCESS_ZONE
+	case "CREDENTIAL_DATA_INPUT":
+		return BACnetObjectType_CREDENTIAL_DATA_INPUT
+	case "NETWORK_SECURITY":
+		return BACnetObjectType_NETWORK_SECURITY
+	case "BITSTRING_VALUE":
+		return BACnetObjectType_BITSTRING_VALUE
+	case "CHARACTERSTRING_VALUE":
+		return BACnetObjectType_CHARACTERSTRING_VALUE
+	case "DATEPATTERN_VALUE":
+		return BACnetObjectType_DATEPATTERN_VALUE
+	case "DATE_VALUE":
+		return BACnetObjectType_DATE_VALUE
+	case "DATETIMEPATTERN_VALUE":
+		return BACnetObjectType_DATETIMEPATTERN_VALUE
+	case "DATETIME_VALUE":
+		return BACnetObjectType_DATETIME_VALUE
+	case "INTEGER_VALUE":
+		return BACnetObjectType_INTEGER_VALUE
+	case "LARGE_ANALOG_VALUE":
+		return BACnetObjectType_LARGE_ANALOG_VALUE
+	case "OCTETSTRING_VALUE":
+		return BACnetObjectType_OCTETSTRING_VALUE
+	case "POSITIVE_INTEGER_VALUE":
+		return BACnetObjectType_POSITIVE_INTEGER_VALUE
+	case "TIMEPATTERN_VALUE":
+		return BACnetObjectType_TIMEPATTERN_VALUE
+	case "TIME_VALUE":
+		return BACnetObjectType_TIME_VALUE
+	case "NOTIFICATION_FORWARDER":
+		return BACnetObjectType_NOTIFICATION_FORWARDER
+	case "ALERT_ENROLLMENT":
+		return BACnetObjectType_ALERT_ENROLLMENT
+	case "CHANNEL":
+		return BACnetObjectType_CHANNEL
+	case "LIGHTING_OUTPUT":
+		return BACnetObjectType_LIGHTING_OUTPUT
+	case "BINARY_LIGHTING_OUTPUT":
+		return BACnetObjectType_BINARY_LIGHTING_OUTPUT
+	case "NETWORK_PORT":
+		return BACnetObjectType_NETWORK_PORT
+	case "ELEVATOR_GROUP":
+		return BACnetObjectType_ELEVATOR_GROUP
+	case "ESCALATOR":
+		return BACnetObjectType_ESCALATOR
+	}
+	return 0
 }
 
 func CastBACnetObjectType(structType interface{}) BACnetObjectType {
-    castFunc := func(typ interface{}) BACnetObjectType {
-        if sBACnetObjectType, ok := typ.(BACnetObjectType); ok {
-            return sBACnetObjectType
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) BACnetObjectType {
+		if sBACnetObjectType, ok := typ.(BACnetObjectType); ok {
+			return sBACnetObjectType
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m BACnetObjectType) LengthInBits() uint16 {
-    return 10
+	return 10
 }
 
 func (m BACnetObjectType) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func BACnetObjectTypeParse(io *utils.ReadBuffer) (BACnetObjectType, error) {
-    val, err := io.ReadUint16(10)
-    if err != nil {
-        return 0, nil
-    }
-    return BACnetObjectTypeValueOf(val), nil
+	val, err := io.ReadUint16(10)
+	if err != nil {
+		return 0, nil
+	}
+	return BACnetObjectTypeByValue(val), nil
 }
 
 func (e BACnetObjectType) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint16(10, uint16(e))
-    return err
+	err := io.WriteUint16(10, uint16(e))
+	return err
 }
 
 func (e BACnetObjectType) String() string {
-    switch e {
-    case BACnetObjectType_ANALOG_INPUT:
-        return "ANALOG_INPUT"
-    case BACnetObjectType_ANALOG_OUTPUT:
-        return "ANALOG_OUTPUT"
-    case BACnetObjectType_ANALOG_VALUE:
-        return "ANALOG_VALUE"
-    case BACnetObjectType_BINARY_INPUT:
-        return "BINARY_INPUT"
-    case BACnetObjectType_BINARY_OUTPUT:
-        return "BINARY_OUTPUT"
-    case BACnetObjectType_BINARY_VALUE:
-        return "BINARY_VALUE"
-    case BACnetObjectType_CALENDAR:
-        return "CALENDAR"
-    case BACnetObjectType_COMMAND:
-        return "COMMAND"
-    case BACnetObjectType_DEVICE:
-        return "DEVICE"
-    case BACnetObjectType_EVENT_ENROLLMENT:
-        return "EVENT_ENROLLMENT"
-    case BACnetObjectType_FILE:
-        return "FILE"
-    case BACnetObjectType_GROUP:
-        return "GROUP"
-    case BACnetObjectType_LOOP:
-        return "LOOP"
-    case BACnetObjectType_MULTISTATE_INPUT:
-        return "MULTISTATE_INPUT"
-    case BACnetObjectType_MULTISTATE_OUTPUT:
-        return "MULTISTATE_OUTPUT"
-    case BACnetObjectType_NOTIFICATION_CLASS:
-        return "NOTIFICATION_CLASS"
-    case BACnetObjectType_PROGRAM:
-        return "PROGRAM"
-    case BACnetObjectType_SCHEDULE:
-        return "SCHEDULE"
-    case BACnetObjectType_AVERAGING:
-        return "AVERAGING"
-    case BACnetObjectType_MULTISTATE_VALUE:
-        return "MULTISTATE_VALUE"
-    case BACnetObjectType_TREND_LOG:
-        return "TREND_LOG"
-    case BACnetObjectType_LIFE_SAFETY_POINT:
-        return "LIFE_SAFETY_POINT"
-    case BACnetObjectType_LIFE_SAFETY_ZONE:
-        return "LIFE_SAFETY_ZONE"
-    case BACnetObjectType_ACCUMULATOR:
-        return "ACCUMULATOR"
-    case BACnetObjectType_PULSE_CONVERTER:
-        return "PULSE_CONVERTER"
-    case BACnetObjectType_EVENT_LOG:
-        return "EVENT_LOG"
-    case BACnetObjectType_GLOBAL_GROUP:
-        return "GLOBAL_GROUP"
-    case BACnetObjectType_TREND_LOG_MULTIPLE:
-        return "TREND_LOG_MULTIPLE"
-    case BACnetObjectType_LOAD_CONTROL:
-        return "LOAD_CONTROL"
-    case BACnetObjectType_STRUCTURED_VIEW:
-        return "STRUCTURED_VIEW"
-    case BACnetObjectType_ACCESS_DOOR:
-        return "ACCESS_DOOR"
-    case BACnetObjectType_TIMER:
-        return "TIMER"
-    case BACnetObjectType_ACCESS_CREDENTIAL:
-        return "ACCESS_CREDENTIAL"
-    case BACnetObjectType_ACCESS_POINT:
-        return "ACCESS_POINT"
-    case BACnetObjectType_ACCESS_RIGHTS:
-        return "ACCESS_RIGHTS"
-    case BACnetObjectType_ACCESS_USER:
-        return "ACCESS_USER"
-    case BACnetObjectType_ACCESS_ZONE:
-        return "ACCESS_ZONE"
-    case BACnetObjectType_CREDENTIAL_DATA_INPUT:
-        return "CREDENTIAL_DATA_INPUT"
-    case BACnetObjectType_NETWORK_SECURITY:
-        return "NETWORK_SECURITY"
-    case BACnetObjectType_BITSTRING_VALUE:
-        return "BITSTRING_VALUE"
-    case BACnetObjectType_CHARACTERSTRING_VALUE:
-        return "CHARACTERSTRING_VALUE"
-    case BACnetObjectType_DATEPATTERN_VALUE:
-        return "DATEPATTERN_VALUE"
-    case BACnetObjectType_DATE_VALUE:
-        return "DATE_VALUE"
-    case BACnetObjectType_DATETIMEPATTERN_VALUE:
-        return "DATETIMEPATTERN_VALUE"
-    case BACnetObjectType_DATETIME_VALUE:
-        return "DATETIME_VALUE"
-    case BACnetObjectType_INTEGER_VALUE:
-        return "INTEGER_VALUE"
-    case BACnetObjectType_LARGE_ANALOG_VALUE:
-        return "LARGE_ANALOG_VALUE"
-    case BACnetObjectType_OCTETSTRING_VALUE:
-        return "OCTETSTRING_VALUE"
-    case BACnetObjectType_POSITIVE_INTEGER_VALUE:
-        return "POSITIVE_INTEGER_VALUE"
-    case BACnetObjectType_TIMEPATTERN_VALUE:
-        return "TIMEPATTERN_VALUE"
-    case BACnetObjectType_TIME_VALUE:
-        return "TIME_VALUE"
-    case BACnetObjectType_NOTIFICATION_FORWARDER:
-        return "NOTIFICATION_FORWARDER"
-    case BACnetObjectType_ALERT_ENROLLMENT:
-        return "ALERT_ENROLLMENT"
-    case BACnetObjectType_CHANNEL:
-        return "CHANNEL"
-    case BACnetObjectType_LIGHTING_OUTPUT:
-        return "LIGHTING_OUTPUT"
-    case BACnetObjectType_BINARY_LIGHTING_OUTPUT:
-        return "BINARY_LIGHTING_OUTPUT"
-    case BACnetObjectType_NETWORK_PORT:
-        return "NETWORK_PORT"
-    case BACnetObjectType_ELEVATOR_GROUP:
-        return "ELEVATOR_GROUP"
-    case BACnetObjectType_ESCALATOR:
-        return "ESCALATOR"
-    }
-    return ""
+	switch e {
+	case BACnetObjectType_ANALOG_INPUT:
+		return "ANALOG_INPUT"
+	case BACnetObjectType_ANALOG_OUTPUT:
+		return "ANALOG_OUTPUT"
+	case BACnetObjectType_ANALOG_VALUE:
+		return "ANALOG_VALUE"
+	case BACnetObjectType_BINARY_INPUT:
+		return "BINARY_INPUT"
+	case BACnetObjectType_BINARY_OUTPUT:
+		return "BINARY_OUTPUT"
+	case BACnetObjectType_BINARY_VALUE:
+		return "BINARY_VALUE"
+	case BACnetObjectType_CALENDAR:
+		return "CALENDAR"
+	case BACnetObjectType_COMMAND:
+		return "COMMAND"
+	case BACnetObjectType_DEVICE:
+		return "DEVICE"
+	case BACnetObjectType_EVENT_ENROLLMENT:
+		return "EVENT_ENROLLMENT"
+	case BACnetObjectType_FILE:
+		return "FILE"
+	case BACnetObjectType_GROUP:
+		return "GROUP"
+	case BACnetObjectType_LOOP:
+		return "LOOP"
+	case BACnetObjectType_MULTISTATE_INPUT:
+		return "MULTISTATE_INPUT"
+	case BACnetObjectType_MULTISTATE_OUTPUT:
+		return "MULTISTATE_OUTPUT"
+	case BACnetObjectType_NOTIFICATION_CLASS:
+		return "NOTIFICATION_CLASS"
+	case BACnetObjectType_PROGRAM:
+		return "PROGRAM"
+	case BACnetObjectType_SCHEDULE:
+		return "SCHEDULE"
+	case BACnetObjectType_AVERAGING:
+		return "AVERAGING"
+	case BACnetObjectType_MULTISTATE_VALUE:
+		return "MULTISTATE_VALUE"
+	case BACnetObjectType_TREND_LOG:
+		return "TREND_LOG"
+	case BACnetObjectType_LIFE_SAFETY_POINT:
+		return "LIFE_SAFETY_POINT"
+	case BACnetObjectType_LIFE_SAFETY_ZONE:
+		return "LIFE_SAFETY_ZONE"
+	case BACnetObjectType_ACCUMULATOR:
+		return "ACCUMULATOR"
+	case BACnetObjectType_PULSE_CONVERTER:
+		return "PULSE_CONVERTER"
+	case BACnetObjectType_EVENT_LOG:
+		return "EVENT_LOG"
+	case BACnetObjectType_GLOBAL_GROUP:
+		return "GLOBAL_GROUP"
+	case BACnetObjectType_TREND_LOG_MULTIPLE:
+		return "TREND_LOG_MULTIPLE"
+	case BACnetObjectType_LOAD_CONTROL:
+		return "LOAD_CONTROL"
+	case BACnetObjectType_STRUCTURED_VIEW:
+		return "STRUCTURED_VIEW"
+	case BACnetObjectType_ACCESS_DOOR:
+		return "ACCESS_DOOR"
+	case BACnetObjectType_TIMER:
+		return "TIMER"
+	case BACnetObjectType_ACCESS_CREDENTIAL:
+		return "ACCESS_CREDENTIAL"
+	case BACnetObjectType_ACCESS_POINT:
+		return "ACCESS_POINT"
+	case BACnetObjectType_ACCESS_RIGHTS:
+		return "ACCESS_RIGHTS"
+	case BACnetObjectType_ACCESS_USER:
+		return "ACCESS_USER"
+	case BACnetObjectType_ACCESS_ZONE:
+		return "ACCESS_ZONE"
+	case BACnetObjectType_CREDENTIAL_DATA_INPUT:
+		return "CREDENTIAL_DATA_INPUT"
+	case BACnetObjectType_NETWORK_SECURITY:
+		return "NETWORK_SECURITY"
+	case BACnetObjectType_BITSTRING_VALUE:
+		return "BITSTRING_VALUE"
+	case BACnetObjectType_CHARACTERSTRING_VALUE:
+		return "CHARACTERSTRING_VALUE"
+	case BACnetObjectType_DATEPATTERN_VALUE:
+		return "DATEPATTERN_VALUE"
+	case BACnetObjectType_DATE_VALUE:
+		return "DATE_VALUE"
+	case BACnetObjectType_DATETIMEPATTERN_VALUE:
+		return "DATETIMEPATTERN_VALUE"
+	case BACnetObjectType_DATETIME_VALUE:
+		return "DATETIME_VALUE"
+	case BACnetObjectType_INTEGER_VALUE:
+		return "INTEGER_VALUE"
+	case BACnetObjectType_LARGE_ANALOG_VALUE:
+		return "LARGE_ANALOG_VALUE"
+	case BACnetObjectType_OCTETSTRING_VALUE:
+		return "OCTETSTRING_VALUE"
+	case BACnetObjectType_POSITIVE_INTEGER_VALUE:
+		return "POSITIVE_INTEGER_VALUE"
+	case BACnetObjectType_TIMEPATTERN_VALUE:
+		return "TIMEPATTERN_VALUE"
+	case BACnetObjectType_TIME_VALUE:
+		return "TIME_VALUE"
+	case BACnetObjectType_NOTIFICATION_FORWARDER:
+		return "NOTIFICATION_FORWARDER"
+	case BACnetObjectType_ALERT_ENROLLMENT:
+		return "ALERT_ENROLLMENT"
+	case BACnetObjectType_CHANNEL:
+		return "CHANNEL"
+	case BACnetObjectType_LIGHTING_OUTPUT:
+		return "LIGHTING_OUTPUT"
+	case BACnetObjectType_BINARY_LIGHTING_OUTPUT:
+		return "BINARY_LIGHTING_OUTPUT"
+	case BACnetObjectType_NETWORK_PORT:
+		return "NETWORK_PORT"
+	case BACnetObjectType_ELEVATOR_GROUP:
+		return "ELEVATOR_GROUP"
+	case BACnetObjectType_ESCALATOR:
+		return "ESCALATOR"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpField.go b/plc4go/internal/plc4go/knxnetip/KnxNetIpField.go
index 361dad4..cd866c6 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpField.go
+++ b/plc4go/internal/plc4go/knxnetip/KnxNetIpField.go
@@ -54,7 +54,7 @@ func NewKnxNetIpGroupAddress3LevelPlcField(fieldType *driverModel.KnxDatapointTy
 }
 
 func (k KnxNetIpGroupAddress3LevelPlcField) GetTypeName() string {
-	return k.FieldType.FormatName()
+	return k.FieldType.Text()
 }
 
 func (k KnxNetIpGroupAddress3LevelPlcField) GetQuantity() uint16 {
@@ -127,7 +127,7 @@ func NewKnxNetIpGroupAddress2LevelPlcField(fieldType *driverModel.KnxDatapointTy
 }
 
 func (k KnxNetIpGroupAddress2LevelPlcField) GetTypeName() string {
-	return k.FieldType.FormatName()
+	return k.FieldType.Text()
 }
 
 func (k KnxNetIpGroupAddress2LevelPlcField) GetQuantity() uint16 {
@@ -188,7 +188,7 @@ func NewKnxNetIpGroupAddress1LevelPlcField(fieldType *driverModel.KnxDatapointTy
 }
 
 func (k KnxNetIpGroupAddress1LevelPlcField) GetTypeName() string {
-	return k.FieldType.FormatName()
+	return k.FieldType.Text()
 }
 
 func (k KnxNetIpGroupAddress1LevelPlcField) GetQuantity() uint16 {
@@ -250,7 +250,7 @@ func NewKnxNetIpDevicePropertyAddressPlcField(fieldType *driverModel.KnxDatapoin
 }
 
 func (k KnxNetIpDevicePropertyAddressPlcField) GetTypeName() string {
-	return k.FieldType.FormatName()
+	return k.FieldType.Text()
 }
 
 func (k KnxNetIpDevicePropertyAddressPlcField) GetQuantity() uint16 {
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go b/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go
index 12fe85b..2971763 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go
+++ b/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go
@@ -19,76 +19,76 @@
 package knxnetip
 
 import (
-    "errors"
-    driverModel "github.com/apache/plc4x/plc4go/internal/plc4go/knxnetip/readwrite/model"
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi"
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
-    apiModel "github.com/apache/plc4x/plc4go/pkg/plc4go/model"
-    "regexp"
+	"errors"
+	driverModel "github.com/apache/plc4x/plc4go/internal/plc4go/knxnetip/readwrite/model"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	apiModel "github.com/apache/plc4x/plc4go/pkg/plc4go/model"
+	"regexp"
 )
 
 type KnxNetIpFieldType uint8
 
 const (
-    KNX_NET_IP_FIELD_COIL KnxNetIpFieldType = 0x00
+	KNX_NET_IP_FIELD_COIL KnxNetIpFieldType = 0x00
 )
 
 func (m KnxNetIpFieldType) GetName() string {
-    switch m {
-    case KNX_NET_IP_FIELD_COIL:
-        return "ModbusFieldHoldingRegister"
-    }
-    return ""
+	switch m {
+	case KNX_NET_IP_FIELD_COIL:
+		return "ModbusFieldHoldingRegister"
+	}
+	return ""
 }
 
 type FieldHandler struct {
-    knxNetIpGroupAddress3Level    *regexp.Regexp
-    knxNetIpGroupAddress2Level    *regexp.Regexp
-    knxNetIpGroupAddress1Level    *regexp.Regexp
-    knxNetIpDevicePropertyAddress *regexp.Regexp
-    knxNetIpDeviceQuery           *regexp.Regexp
-    spi.PlcFieldHandler
+	knxNetIpGroupAddress3Level    *regexp.Regexp
+	knxNetIpGroupAddress2Level    *regexp.Regexp
+	knxNetIpGroupAddress1Level    *regexp.Regexp
+	knxNetIpDevicePropertyAddress *regexp.Regexp
+	knxNetIpDeviceQuery           *regexp.Regexp
+	spi.PlcFieldHandler
 }
 
 func NewFieldHandler() FieldHandler {
-    return FieldHandler{
-        knxNetIpGroupAddress3Level:    regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
-        knxNetIpGroupAddress2Level:    regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))/(?P<subGroup>(\d{1,4}|\*|\[(\d{1,4}|\d{1,4}\-\d{1,4})(,(\d{1,4}|\d{1,4}\-\d{1,4}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
-        knxNetIpGroupAddress1Level:    regexp.MustCompile(`^(?P<mainGroup>(\d{1,5}|\*|\[(\d{1,5}|\d{1,5}\-\d{1,5})(,(\d{1,5}|\d{1,5}\-\d{1,5}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
-        knxNetIpDevicePropertyAddress: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})\/(?P<objectId>\d{1,3})\/(?P<propertyId>\d{1,3})(:(?P<datatype>[a-zA-Z_]+))?$`),
-        knxNetIpDeviceQuery:           regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(\/(?P<objectId>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(\/(?P<propertyId>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\ [...]
-    }
+	return FieldHandler{
+		knxNetIpGroupAddress3Level:    regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
+		knxNetIpGroupAddress2Level:    regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))/(?P<subGroup>(\d{1,4}|\*|\[(\d{1,4}|\d{1,4}\-\d{1,4})(,(\d{1,4}|\d{1,4}\-\d{1,4}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
+		knxNetIpGroupAddress1Level:    regexp.MustCompile(`^(?P<mainGroup>(\d{1,5}|\*|\[(\d{1,5}|\d{1,5}\-\d{1,5})(,(\d{1,5}|\d{1,5}\-\d{1,5}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
+		knxNetIpDevicePropertyAddress: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})\/(?P<objectId>\d{1,3})\/(?P<propertyId>\d{1,3})(:(?P<datatype>[a-zA-Z_]+))?$`),
+		knxNetIpDeviceQuery:           regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(\/(?P<objectId>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(\/(?P<propertyId>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1, [...]
+	}
 }
 
 func (m FieldHandler) ParseQuery(query string) (apiModel.PlcField, error) {
-    if match := utils.GetSubgropMatches(m.knxNetIpDeviceQuery, query); match != nil {
-        fieldTypeName, ok := match["datatype"]
-        var fieldType driverModel.KnxDatapointType
-        if ok {
-            fieldType = driverModel.KnxDatapointTypeValueOf(fieldTypeName)
-        }
-        return NewKnxNetIpDevicePropertyAddressPlcField(&fieldType, match["mainGroup"], match["middleGroup"], match["subGroup"], match["objectId"], match["propertyId"]), nil
-    } else if match := utils.GetSubgropMatches(m.knxNetIpGroupAddress3Level, query); match != nil {
-        fieldTypeName, ok := match["datatype"]
-        var fieldType driverModel.KnxDatapointType
-        if ok {
-            fieldType = driverModel.KnxDatapointTypeValueOf(fieldTypeName)
-        }
-        return NewKnxNetIpGroupAddress3LevelPlcField(&fieldType, match["mainGroup"], match["middleGroup"], match["subGroup"]), nil
-    } else if match := utils.GetSubgropMatches(m.knxNetIpGroupAddress2Level, query); match != nil {
-        fieldTypeName, ok := match["datatype"]
-        var fieldType driverModel.KnxDatapointType
-        if ok {
-            fieldType = driverModel.KnxDatapointTypeValueOf(fieldTypeName)
-        }
-        return NewKnxNetIpGroupAddress2LevelPlcField(&fieldType, match["mainGroup"], match["subGroup"]), nil
-    } else if match := utils.GetSubgropMatches(m.knxNetIpGroupAddress1Level, query); match != nil {
-        fieldTypeName, ok := match["datatype"]
-        var fieldType driverModel.KnxDatapointType
-        if ok {
-            fieldType = driverModel.KnxDatapointTypeValueOf(fieldTypeName)
-        }
-        return NewKnxNetIpGroupAddress1LevelPlcField(&fieldType, match["mainGroup"]), nil
-    }
-    return nil, errors.New("Invalid address format for address '" + query + "'")
+	if match := utils.GetSubgroupMatches(m.knxNetIpDeviceQuery, query); match != nil {
+		fieldTypeName, ok := match["datatype"]
+		var fieldType driverModel.KnxDatapointType
+		if ok {
+			fieldType = driverModel.KnxDatapointTypeByName(fieldTypeName)
+		}
+		return NewKnxNetIpDevicePropertyAddressPlcField(&fieldType, match["mainGroup"], match["middleGroup"], match["subGroup"], match["objectId"], match["propertyId"]), nil
+	} else if match := utils.GetSubgroupMatches(m.knxNetIpGroupAddress3Level, query); match != nil {
+		fieldTypeName, ok := match["datatype"]
+		var fieldType driverModel.KnxDatapointType
+		if ok {
+			fieldType = driverModel.KnxDatapointTypeByName(fieldTypeName)
+		}
+		return NewKnxNetIpGroupAddress3LevelPlcField(&fieldType, match["mainGroup"], match["middleGroup"], match["subGroup"]), nil
+	} else if match := utils.GetSubgroupMatches(m.knxNetIpGroupAddress2Level, query); match != nil {
+		fieldTypeName, ok := match["datatype"]
+		var fieldType driverModel.KnxDatapointType
+		if ok {
+			fieldType = driverModel.KnxDatapointTypeByName(fieldTypeName)
+		}
+		return NewKnxNetIpGroupAddress2LevelPlcField(&fieldType, match["mainGroup"], match["subGroup"]), nil
+	} else if match := utils.GetSubgroupMatches(m.knxNetIpGroupAddress1Level, query); match != nil {
+		fieldTypeName, ok := match["datatype"]
+		var fieldType driverModel.KnxDatapointType
+		if ok {
+			fieldType = driverModel.KnxDatapointTypeByName(fieldTypeName)
+		}
+		return NewKnxNetIpGroupAddress1LevelPlcField(&fieldType, match["mainGroup"]), nil
+	}
+	return nil, errors.New("Invalid address format for address '" + query + "'")
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
index bfbe37e..686fedf 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
@@ -19,137 +19,175 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type APCI uint8
 
 type IAPCI interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    APCI_GROUP_VALUE_READ_PDU APCI = 0x0
-    APCI_GROUP_VALUE_RESPONSE_PDU APCI = 0x1
-    APCI_GROUP_VALUE_WRITE_PDU APCI = 0x2
-    APCI_INDIVIDUAL_ADDRESS_WRITE_PDU APCI = 0x3
-    APCI_INDIVIDUAL_ADDRESS_READ_PDU APCI = 0x4
-    APCI_INDIVIDUAL_ADDRESS_RESPONSE_PDU APCI = 0x5
-    APCI_ADC_READ_PDU APCI = 0x6
-    APCI_ADC_RESPONSE_PDU APCI = 0x7
-    APCI_MEMORY_READ_PDU APCI = 0x8
-    APCI_MEMORY_RESPONSE_PDU APCI = 0x9
-    APCI_MEMORY_WRITE_PDU APCI = 0xA
-    APCI_USER_MESSAGE_PDU APCI = 0xB
-    APCI_DEVICE_DESCRIPTOR_READ_PDU APCI = 0xC
-    APCI_DEVICE_DESCRIPTOR_RESPONSE_PDU APCI = 0xD
-    APCI_RESTART_PDU APCI = 0xE
-    APCI_OTHER_PDU APCI = 0xF
+const (
+	APCI_GROUP_VALUE_READ_PDU            APCI = 0x0
+	APCI_GROUP_VALUE_RESPONSE_PDU        APCI = 0x1
+	APCI_GROUP_VALUE_WRITE_PDU           APCI = 0x2
+	APCI_INDIVIDUAL_ADDRESS_WRITE_PDU    APCI = 0x3
+	APCI_INDIVIDUAL_ADDRESS_READ_PDU     APCI = 0x4
+	APCI_INDIVIDUAL_ADDRESS_RESPONSE_PDU APCI = 0x5
+	APCI_ADC_READ_PDU                    APCI = 0x6
+	APCI_ADC_RESPONSE_PDU                APCI = 0x7
+	APCI_MEMORY_READ_PDU                 APCI = 0x8
+	APCI_MEMORY_RESPONSE_PDU             APCI = 0x9
+	APCI_MEMORY_WRITE_PDU                APCI = 0xA
+	APCI_USER_MESSAGE_PDU                APCI = 0xB
+	APCI_DEVICE_DESCRIPTOR_READ_PDU      APCI = 0xC
+	APCI_DEVICE_DESCRIPTOR_RESPONSE_PDU  APCI = 0xD
+	APCI_RESTART_PDU                     APCI = 0xE
+	APCI_OTHER_PDU                       APCI = 0xF
 )
 
-func APCIValueOf(value uint8) APCI {
-    switch value {
-        case 0x0:
-            return APCI_GROUP_VALUE_READ_PDU
-        case 0x1:
-            return APCI_GROUP_VALUE_RESPONSE_PDU
-        case 0x2:
-            return APCI_GROUP_VALUE_WRITE_PDU
-        case 0x3:
-            return APCI_INDIVIDUAL_ADDRESS_WRITE_PDU
-        case 0x4:
-            return APCI_INDIVIDUAL_ADDRESS_READ_PDU
-        case 0x5:
-            return APCI_INDIVIDUAL_ADDRESS_RESPONSE_PDU
-        case 0x6:
-            return APCI_ADC_READ_PDU
-        case 0x7:
-            return APCI_ADC_RESPONSE_PDU
-        case 0x8:
-            return APCI_MEMORY_READ_PDU
-        case 0x9:
-            return APCI_MEMORY_RESPONSE_PDU
-        case 0xA:
-            return APCI_MEMORY_WRITE_PDU
-        case 0xB:
-            return APCI_USER_MESSAGE_PDU
-        case 0xC:
-            return APCI_DEVICE_DESCRIPTOR_READ_PDU
-        case 0xD:
-            return APCI_DEVICE_DESCRIPTOR_RESPONSE_PDU
-        case 0xE:
-            return APCI_RESTART_PDU
-        case 0xF:
-            return APCI_OTHER_PDU
-    }
-    return 0
+func APCIByValue(value uint8) APCI {
+	switch value {
+	case 0x0:
+		return APCI_GROUP_VALUE_READ_PDU
+	case 0x1:
+		return APCI_GROUP_VALUE_RESPONSE_PDU
+	case 0x2:
+		return APCI_GROUP_VALUE_WRITE_PDU
+	case 0x3:
+		return APCI_INDIVIDUAL_ADDRESS_WRITE_PDU
+	case 0x4:
+		return APCI_INDIVIDUAL_ADDRESS_READ_PDU
+	case 0x5:
+		return APCI_INDIVIDUAL_ADDRESS_RESPONSE_PDU
+	case 0x6:
+		return APCI_ADC_READ_PDU
+	case 0x7:
+		return APCI_ADC_RESPONSE_PDU
+	case 0x8:
+		return APCI_MEMORY_READ_PDU
+	case 0x9:
+		return APCI_MEMORY_RESPONSE_PDU
+	case 0xA:
+		return APCI_MEMORY_WRITE_PDU
+	case 0xB:
+		return APCI_USER_MESSAGE_PDU
+	case 0xC:
+		return APCI_DEVICE_DESCRIPTOR_READ_PDU
+	case 0xD:
+		return APCI_DEVICE_DESCRIPTOR_RESPONSE_PDU
+	case 0xE:
+		return APCI_RESTART_PDU
+	case 0xF:
+		return APCI_OTHER_PDU
+	}
+	return 0
+}
+
+func APCIByName(value string) APCI {
+	switch value {
+	case "GROUP_VALUE_READ_PDU":
+		return APCI_GROUP_VALUE_READ_PDU
+	case "GROUP_VALUE_RESPONSE_PDU":
+		return APCI_GROUP_VALUE_RESPONSE_PDU
+	case "GROUP_VALUE_WRITE_PDU":
+		return APCI_GROUP_VALUE_WRITE_PDU
+	case "INDIVIDUAL_ADDRESS_WRITE_PDU":
+		return APCI_INDIVIDUAL_ADDRESS_WRITE_PDU
+	case "INDIVIDUAL_ADDRESS_READ_PDU":
+		return APCI_INDIVIDUAL_ADDRESS_READ_PDU
+	case "INDIVIDUAL_ADDRESS_RESPONSE_PDU":
+		return APCI_INDIVIDUAL_ADDRESS_RESPONSE_PDU
+	case "ADC_READ_PDU":
+		return APCI_ADC_READ_PDU
+	case "ADC_RESPONSE_PDU":
+		return APCI_ADC_RESPONSE_PDU
+	case "MEMORY_READ_PDU":
+		return APCI_MEMORY_READ_PDU
+	case "MEMORY_RESPONSE_PDU":
+		return APCI_MEMORY_RESPONSE_PDU
+	case "MEMORY_WRITE_PDU":
+		return APCI_MEMORY_WRITE_PDU
+	case "USER_MESSAGE_PDU":
+		return APCI_USER_MESSAGE_PDU
+	case "DEVICE_DESCRIPTOR_READ_PDU":
+		return APCI_DEVICE_DESCRIPTOR_READ_PDU
+	case "DEVICE_DESCRIPTOR_RESPONSE_PDU":
+		return APCI_DEVICE_DESCRIPTOR_RESPONSE_PDU
+	case "RESTART_PDU":
+		return APCI_RESTART_PDU
+	case "OTHER_PDU":
+		return APCI_OTHER_PDU
+	}
+	return 0
 }
 
 func CastAPCI(structType interface{}) APCI {
-    castFunc := func(typ interface{}) APCI {
-        if sAPCI, ok := typ.(APCI); ok {
-            return sAPCI
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) APCI {
+		if sAPCI, ok := typ.(APCI); ok {
+			return sAPCI
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m APCI) LengthInBits() uint16 {
-    return 4
+	return 4
 }
 
 func (m APCI) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func APCIParse(io *utils.ReadBuffer) (APCI, error) {
-    val, err := io.ReadUint8(4)
-    if err != nil {
-        return 0, nil
-    }
-    return APCIValueOf(val), nil
+	val, err := io.ReadUint8(4)
+	if err != nil {
+		return 0, nil
+	}
+	return APCIByValue(val), nil
 }
 
 func (e APCI) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(4, uint8(e))
-    return err
+	err := io.WriteUint8(4, uint8(e))
+	return err
 }
 
 func (e APCI) String() string {
-    switch e {
-    case APCI_GROUP_VALUE_READ_PDU:
-        return "GROUP_VALUE_READ_PDU"
-    case APCI_GROUP_VALUE_RESPONSE_PDU:
-        return "GROUP_VALUE_RESPONSE_PDU"
-    case APCI_GROUP_VALUE_WRITE_PDU:
-        return "GROUP_VALUE_WRITE_PDU"
-    case APCI_INDIVIDUAL_ADDRESS_WRITE_PDU:
-        return "INDIVIDUAL_ADDRESS_WRITE_PDU"
-    case APCI_INDIVIDUAL_ADDRESS_READ_PDU:
-        return "INDIVIDUAL_ADDRESS_READ_PDU"
-    case APCI_INDIVIDUAL_ADDRESS_RESPONSE_PDU:
-        return "INDIVIDUAL_ADDRESS_RESPONSE_PDU"
-    case APCI_ADC_READ_PDU:
-        return "ADC_READ_PDU"
-    case APCI_ADC_RESPONSE_PDU:
-        return "ADC_RESPONSE_PDU"
-    case APCI_MEMORY_READ_PDU:
-        return "MEMORY_READ_PDU"
-    case APCI_MEMORY_RESPONSE_PDU:
-        return "MEMORY_RESPONSE_PDU"
-    case APCI_MEMORY_WRITE_PDU:
-        return "MEMORY_WRITE_PDU"
-    case APCI_USER_MESSAGE_PDU:
-        return "USER_MESSAGE_PDU"
-    case APCI_DEVICE_DESCRIPTOR_READ_PDU:
-        return "DEVICE_DESCRIPTOR_READ_PDU"
-    case APCI_DEVICE_DESCRIPTOR_RESPONSE_PDU:
-        return "DEVICE_DESCRIPTOR_RESPONSE_PDU"
-    case APCI_RESTART_PDU:
-        return "RESTART_PDU"
-    case APCI_OTHER_PDU:
-        return "OTHER_PDU"
-    }
-    return ""
+	switch e {
+	case APCI_GROUP_VALUE_READ_PDU:
+		return "GROUP_VALUE_READ_PDU"
+	case APCI_GROUP_VALUE_RESPONSE_PDU:
+		return "GROUP_VALUE_RESPONSE_PDU"
+	case APCI_GROUP_VALUE_WRITE_PDU:
+		return "GROUP_VALUE_WRITE_PDU"
+	case APCI_INDIVIDUAL_ADDRESS_WRITE_PDU:
+		return "INDIVIDUAL_ADDRESS_WRITE_PDU"
+	case APCI_INDIVIDUAL_ADDRESS_READ_PDU:
+		return "INDIVIDUAL_ADDRESS_READ_PDU"
+	case APCI_INDIVIDUAL_ADDRESS_RESPONSE_PDU:
+		return "INDIVIDUAL_ADDRESS_RESPONSE_PDU"
+	case APCI_ADC_READ_PDU:
+		return "ADC_READ_PDU"
+	case APCI_ADC_RESPONSE_PDU:
+		return "ADC_RESPONSE_PDU"
+	case APCI_MEMORY_READ_PDU:
+		return "MEMORY_READ_PDU"
+	case APCI_MEMORY_RESPONSE_PDU:
+		return "MEMORY_RESPONSE_PDU"
+	case APCI_MEMORY_WRITE_PDU:
+		return "MEMORY_WRITE_PDU"
+	case APCI_USER_MESSAGE_PDU:
+		return "USER_MESSAGE_PDU"
+	case APCI_DEVICE_DESCRIPTOR_READ_PDU:
+		return "DEVICE_DESCRIPTOR_READ_PDU"
+	case APCI_DEVICE_DESCRIPTOR_RESPONSE_PDU:
+		return "DEVICE_DESCRIPTOR_RESPONSE_PDU"
+	case APCI_RESTART_PDU:
+		return "RESTART_PDU"
+	case APCI_OTHER_PDU:
+		return "OTHER_PDU"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
index 5536158..145856a 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
@@ -19,77 +19,91 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type CEMIPriority uint8
 
 type ICEMIPriority interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    CEMIPriority_SYSTEM CEMIPriority = 0x0
-    CEMIPriority_NORMAL CEMIPriority = 0x1
-    CEMIPriority_URGENT CEMIPriority = 0x2
-    CEMIPriority_LOW CEMIPriority = 0x3
+const (
+	CEMIPriority_SYSTEM CEMIPriority = 0x0
+	CEMIPriority_NORMAL CEMIPriority = 0x1
+	CEMIPriority_URGENT CEMIPriority = 0x2
+	CEMIPriority_LOW    CEMIPriority = 0x3
 )
 
-func CEMIPriorityValueOf(value uint8) CEMIPriority {
-    switch value {
-        case 0x0:
-            return CEMIPriority_SYSTEM
-        case 0x1:
-            return CEMIPriority_NORMAL
-        case 0x2:
-            return CEMIPriority_URGENT
-        case 0x3:
-            return CEMIPriority_LOW
-    }
-    return 0
+func CEMIPriorityByValue(value uint8) CEMIPriority {
+	switch value {
+	case 0x0:
+		return CEMIPriority_SYSTEM
+	case 0x1:
+		return CEMIPriority_NORMAL
+	case 0x2:
+		return CEMIPriority_URGENT
+	case 0x3:
+		return CEMIPriority_LOW
+	}
+	return 0
+}
+
+func CEMIPriorityByName(value string) CEMIPriority {
+	switch value {
+	case "SYSTEM":
+		return CEMIPriority_SYSTEM
+	case "NORMAL":
+		return CEMIPriority_NORMAL
+	case "URGENT":
+		return CEMIPriority_URGENT
+	case "LOW":
+		return CEMIPriority_LOW
+	}
+	return 0
 }
 
 func CastCEMIPriority(structType interface{}) CEMIPriority {
-    castFunc := func(typ interface{}) CEMIPriority {
-        if sCEMIPriority, ok := typ.(CEMIPriority); ok {
-            return sCEMIPriority
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) CEMIPriority {
+		if sCEMIPriority, ok := typ.(CEMIPriority); ok {
+			return sCEMIPriority
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m CEMIPriority) LengthInBits() uint16 {
-    return 2
+	return 2
 }
 
 func (m CEMIPriority) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func CEMIPriorityParse(io *utils.ReadBuffer) (CEMIPriority, error) {
-    val, err := io.ReadUint8(2)
-    if err != nil {
-        return 0, nil
-    }
-    return CEMIPriorityValueOf(val), nil
+	val, err := io.ReadUint8(2)
+	if err != nil {
+		return 0, nil
+	}
+	return CEMIPriorityByValue(val), nil
 }
 
 func (e CEMIPriority) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(2, uint8(e))
-    return err
+	err := io.WriteUint8(2, uint8(e))
+	return err
 }
 
 func (e CEMIPriority) String() string {
-    switch e {
-    case CEMIPriority_SYSTEM:
-        return "SYSTEM"
-    case CEMIPriority_NORMAL:
-        return "NORMAL"
-    case CEMIPriority_URGENT:
-        return "URGENT"
-    case CEMIPriority_LOW:
-        return "LOW"
-    }
-    return ""
+	switch e {
+	case CEMIPriority_SYSTEM:
+		return "SYSTEM"
+	case CEMIPriority_NORMAL:
+		return "NORMAL"
+	case CEMIPriority_URGENT:
+		return "URGENT"
+	case CEMIPriority_LOW:
+		return "LOW"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go
index 184994d..ab3de53 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go
@@ -19,77 +19,91 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type ControlType uint8
 
 type IControlType interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    ControlType_CONNECT ControlType = 0x0
-    ControlType_DISCONNECT ControlType = 0x1
-    ControlType_ACK ControlType = 0x2
-    ControlType_NACK ControlType = 0x3
+const (
+	ControlType_CONNECT    ControlType = 0x0
+	ControlType_DISCONNECT ControlType = 0x1
+	ControlType_ACK        ControlType = 0x2
+	ControlType_NACK       ControlType = 0x3
 )
 
-func ControlTypeValueOf(value uint8) ControlType {
-    switch value {
-        case 0x0:
-            return ControlType_CONNECT
-        case 0x1:
-            return ControlType_DISCONNECT
-        case 0x2:
-            return ControlType_ACK
-        case 0x3:
-            return ControlType_NACK
-    }
-    return 0
+func ControlTypeByValue(value uint8) ControlType {
+	switch value {
+	case 0x0:
+		return ControlType_CONNECT
+	case 0x1:
+		return ControlType_DISCONNECT
+	case 0x2:
+		return ControlType_ACK
+	case 0x3:
+		return ControlType_NACK
+	}
+	return 0
+}
+
+func ControlTypeByName(value string) ControlType {
+	switch value {
+	case "CONNECT":
+		return ControlType_CONNECT
+	case "DISCONNECT":
+		return ControlType_DISCONNECT
+	case "ACK":
+		return ControlType_ACK
+	case "NACK":
+		return ControlType_NACK
+	}
+	return 0
 }
 
 func CastControlType(structType interface{}) ControlType {
-    castFunc := func(typ interface{}) ControlType {
-        if sControlType, ok := typ.(ControlType); ok {
-            return sControlType
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ControlType {
+		if sControlType, ok := typ.(ControlType); ok {
+			return sControlType
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m ControlType) LengthInBits() uint16 {
-    return 2
+	return 2
 }
 
 func (m ControlType) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func ControlTypeParse(io *utils.ReadBuffer) (ControlType, error) {
-    val, err := io.ReadUint8(2)
-    if err != nil {
-        return 0, nil
-    }
-    return ControlTypeValueOf(val), nil
+	val, err := io.ReadUint8(2)
+	if err != nil {
+		return 0, nil
+	}
+	return ControlTypeByValue(val), nil
 }
 
 func (e ControlType) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(2, uint8(e))
-    return err
+	err := io.WriteUint8(2, uint8(e))
+	return err
 }
 
 func (e ControlType) String() string {
-    switch e {
-    case ControlType_CONNECT:
-        return "CONNECT"
-    case ControlType_DISCONNECT:
-        return "DISCONNECT"
-    case ControlType_ACK:
-        return "ACK"
-    case ControlType_NACK:
-        return "NACK"
-    }
-    return ""
+	switch e {
+	case ControlType_CONNECT:
+		return "CONNECT"
+	case ControlType_DISCONNECT:
+		return "DISCONNECT"
+	case ControlType_ACK:
+		return "ACK"
+	case ControlType_NACK:
+		return "NACK"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go
index f59b46b..9ebcfa0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go
@@ -19,262 +19,350 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type ExtendedAPCI uint8
 
 type IExtendedAPCI interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    ExtendedAPCI_OPEN_ROUTING_TABLE_REQUEST_PDU ExtendedAPCI = 0x00
-    ExtendedAPCI_READ_ROUTING_TABLE_REQUEST_PDU ExtendedAPCI = 0x01
-    ExtendedAPCI_READ_ROUTING_TABLE_RESPONSE_PDU ExtendedAPCI = 0x02
-    ExtendedAPCI_WRITE_ROUTING_TABLE_REQUEST_PDU ExtendedAPCI = 0x03
-    ExtendedAPCI_READ_ROUTER_MEMORY_REQUEST_PDU ExtendedAPCI = 0x08
-    ExtendedAPCI_READ_ROUTER_MEMORY_RESPONSE_PDU ExtendedAPCI = 0x09
-    ExtendedAPCI_WRITE_ROUTER_MEMORY_REQUEST_PDU ExtendedAPCI = 0x0A
-    ExtendedAPCI_READ_ROUTER_STATUS_REQUEST_PDU ExtendedAPCI = 0x0D
-    ExtendedAPCI_READ_ROUTER_STATUS_RESPONSE_PDU ExtendedAPCI = 0x0E
-    ExtendedAPCI_WRITE_ROUTER_STATUS_REQUEST_PDU ExtendedAPCI = 0x0F
-    ExtendedAPCI_MEMORY_BIT_WRITE_PDU ExtendedAPCI = 0x10
-    ExtendedAPCI_AUTHORIZE_REQUEST_PDU ExtendedAPCI = 0x11
-    ExtendedAPCI_AUTHORIZE_RESPONSE_PDU ExtendedAPCI = 0x12
-    ExtendedAPCI_KEY_WRITE_PDU ExtendedAPCI = 0x13
-    ExtendedAPCI_KEY_RESPONSE_PDU ExtendedAPCI = 0x14
-    ExtendedAPCI_PROPERTY_VALUE_READ_PDU ExtendedAPCI = 0x15
-    ExtendedAPCI_PROPERTY_VALUE_RESPONSE_PDU ExtendedAPCI = 0x16
-    ExtendedAPCI_PROPERTY_VALUE_WRITE_PDU ExtendedAPCI = 0x17
-    ExtendedAPCI_PROPERTY_DESCRIPTION_READ_PDU ExtendedAPCI = 0x18
-    ExtendedAPCI_PROPERTY_DESCRIPTION_RESPONSE_PDU ExtendedAPCI = 0x19
-    ExtendedAPCI_NETWORK_PARAMETER_READ_PDU ExtendedAPCI = 0x1A
-    ExtendedAPCI_NETWORK_PARAMETER_RESPONSE_PDU ExtendedAPCI = 0x1B
-    ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU ExtendedAPCI = 0x1C
-    ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU ExtendedAPCI = 0x1D
-    ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU ExtendedAPCI = 0x1E
-    ExtendedAPCI_DOMAIN_ADDRESS_WRITE ExtendedAPCI = 0x20
-    ExtendedAPCI_DOMAIN_ADDRESS_READ ExtendedAPCI = 0x21
-    ExtendedAPCI_DOMAIN_ADDRESS_RESPONSE ExtendedAPCI = 0x22
-    ExtendedAPCI_DOMAIN_ADDRESS_SELECTIVE_READ ExtendedAPCI = 0x23
-    ExtendedAPCI_NETWORK_PARAMETER_WRITE ExtendedAPCI = 0x24
-    ExtendedAPCI_LINK_READ ExtendedAPCI = 0x25
-    ExtendedAPCI_LINK_RESPONSE ExtendedAPCI = 0x26
-    ExtendedAPCI_LINK_WRITE ExtendedAPCI = 0x27
-    ExtendedAPCI_GROUP_PROPERTY_VALUE_READ ExtendedAPCI = 0x28
-    ExtendedAPCI_GROUP_PROPERTY_VALUE_RESPONSE ExtendedAPCI = 0x29
-    ExtendedAPCI_GROUP_PROPERTY_VALUE_WRITE ExtendedAPCI = 0x2A
-    ExtendedAPCI_GROUP_PROPERTY_VALUE_INFO_REPORT ExtendedAPCI = 0x2B
-    ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_READ ExtendedAPCI = 0x2C
-    ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE ExtendedAPCI = 0x2D
-    ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE ExtendedAPCI = 0x2E
-    ExtendedAPCI_FILE_STREAM_INFO_REPORT ExtendedAPCI = 0x30
+const (
+	ExtendedAPCI_OPEN_ROUTING_TABLE_REQUEST_PDU                ExtendedAPCI = 0x00
+	ExtendedAPCI_READ_ROUTING_TABLE_REQUEST_PDU                ExtendedAPCI = 0x01
+	ExtendedAPCI_READ_ROUTING_TABLE_RESPONSE_PDU               ExtendedAPCI = 0x02
+	ExtendedAPCI_WRITE_ROUTING_TABLE_REQUEST_PDU               ExtendedAPCI = 0x03
+	ExtendedAPCI_READ_ROUTER_MEMORY_REQUEST_PDU                ExtendedAPCI = 0x08
+	ExtendedAPCI_READ_ROUTER_MEMORY_RESPONSE_PDU               ExtendedAPCI = 0x09
+	ExtendedAPCI_WRITE_ROUTER_MEMORY_REQUEST_PDU               ExtendedAPCI = 0x0A
+	ExtendedAPCI_READ_ROUTER_STATUS_REQUEST_PDU                ExtendedAPCI = 0x0D
+	ExtendedAPCI_READ_ROUTER_STATUS_RESPONSE_PDU               ExtendedAPCI = 0x0E
+	ExtendedAPCI_WRITE_ROUTER_STATUS_REQUEST_PDU               ExtendedAPCI = 0x0F
+	ExtendedAPCI_MEMORY_BIT_WRITE_PDU                          ExtendedAPCI = 0x10
+	ExtendedAPCI_AUTHORIZE_REQUEST_PDU                         ExtendedAPCI = 0x11
+	ExtendedAPCI_AUTHORIZE_RESPONSE_PDU                        ExtendedAPCI = 0x12
+	ExtendedAPCI_KEY_WRITE_PDU                                 ExtendedAPCI = 0x13
+	ExtendedAPCI_KEY_RESPONSE_PDU                              ExtendedAPCI = 0x14
+	ExtendedAPCI_PROPERTY_VALUE_READ_PDU                       ExtendedAPCI = 0x15
+	ExtendedAPCI_PROPERTY_VALUE_RESPONSE_PDU                   ExtendedAPCI = 0x16
+	ExtendedAPCI_PROPERTY_VALUE_WRITE_PDU                      ExtendedAPCI = 0x17
+	ExtendedAPCI_PROPERTY_DESCRIPTION_READ_PDU                 ExtendedAPCI = 0x18
+	ExtendedAPCI_PROPERTY_DESCRIPTION_RESPONSE_PDU             ExtendedAPCI = 0x19
+	ExtendedAPCI_NETWORK_PARAMETER_READ_PDU                    ExtendedAPCI = 0x1A
+	ExtendedAPCI_NETWORK_PARAMETER_RESPONSE_PDU                ExtendedAPCI = 0x1B
+	ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU     ExtendedAPCI = 0x1C
+	ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU ExtendedAPCI = 0x1D
+	ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU    ExtendedAPCI = 0x1E
+	ExtendedAPCI_DOMAIN_ADDRESS_WRITE                          ExtendedAPCI = 0x20
+	ExtendedAPCI_DOMAIN_ADDRESS_READ                           ExtendedAPCI = 0x21
+	ExtendedAPCI_DOMAIN_ADDRESS_RESPONSE                       ExtendedAPCI = 0x22
+	ExtendedAPCI_DOMAIN_ADDRESS_SELECTIVE_READ                 ExtendedAPCI = 0x23
+	ExtendedAPCI_NETWORK_PARAMETER_WRITE                       ExtendedAPCI = 0x24
+	ExtendedAPCI_LINK_READ                                     ExtendedAPCI = 0x25
+	ExtendedAPCI_LINK_RESPONSE                                 ExtendedAPCI = 0x26
+	ExtendedAPCI_LINK_WRITE                                    ExtendedAPCI = 0x27
+	ExtendedAPCI_GROUP_PROPERTY_VALUE_READ                     ExtendedAPCI = 0x28
+	ExtendedAPCI_GROUP_PROPERTY_VALUE_RESPONSE                 ExtendedAPCI = 0x29
+	ExtendedAPCI_GROUP_PROPERTY_VALUE_WRITE                    ExtendedAPCI = 0x2A
+	ExtendedAPCI_GROUP_PROPERTY_VALUE_INFO_REPORT              ExtendedAPCI = 0x2B
+	ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_READ             ExtendedAPCI = 0x2C
+	ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE         ExtendedAPCI = 0x2D
+	ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE            ExtendedAPCI = 0x2E
+	ExtendedAPCI_FILE_STREAM_INFO_REPORT                       ExtendedAPCI = 0x30
 )
 
-func ExtendedAPCIValueOf(value uint8) ExtendedAPCI {
-    switch value {
-        case 0x00:
-            return ExtendedAPCI_OPEN_ROUTING_TABLE_REQUEST_PDU
-        case 0x01:
-            return ExtendedAPCI_READ_ROUTING_TABLE_REQUEST_PDU
-        case 0x02:
-            return ExtendedAPCI_READ_ROUTING_TABLE_RESPONSE_PDU
-        case 0x03:
-            return ExtendedAPCI_WRITE_ROUTING_TABLE_REQUEST_PDU
-        case 0x08:
-            return ExtendedAPCI_READ_ROUTER_MEMORY_REQUEST_PDU
-        case 0x09:
-            return ExtendedAPCI_READ_ROUTER_MEMORY_RESPONSE_PDU
-        case 0x0A:
-            return ExtendedAPCI_WRITE_ROUTER_MEMORY_REQUEST_PDU
-        case 0x0D:
-            return ExtendedAPCI_READ_ROUTER_STATUS_REQUEST_PDU
-        case 0x0E:
-            return ExtendedAPCI_READ_ROUTER_STATUS_RESPONSE_PDU
-        case 0x0F:
-            return ExtendedAPCI_WRITE_ROUTER_STATUS_REQUEST_PDU
-        case 0x10:
-            return ExtendedAPCI_MEMORY_BIT_WRITE_PDU
-        case 0x11:
-            return ExtendedAPCI_AUTHORIZE_REQUEST_PDU
-        case 0x12:
-            return ExtendedAPCI_AUTHORIZE_RESPONSE_PDU
-        case 0x13:
-            return ExtendedAPCI_KEY_WRITE_PDU
-        case 0x14:
-            return ExtendedAPCI_KEY_RESPONSE_PDU
-        case 0x15:
-            return ExtendedAPCI_PROPERTY_VALUE_READ_PDU
-        case 0x16:
-            return ExtendedAPCI_PROPERTY_VALUE_RESPONSE_PDU
-        case 0x17:
-            return ExtendedAPCI_PROPERTY_VALUE_WRITE_PDU
-        case 0x18:
-            return ExtendedAPCI_PROPERTY_DESCRIPTION_READ_PDU
-        case 0x19:
-            return ExtendedAPCI_PROPERTY_DESCRIPTION_RESPONSE_PDU
-        case 0x1A:
-            return ExtendedAPCI_NETWORK_PARAMETER_READ_PDU
-        case 0x1B:
-            return ExtendedAPCI_NETWORK_PARAMETER_RESPONSE_PDU
-        case 0x1C:
-            return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU
-        case 0x1D:
-            return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU
-        case 0x1E:
-            return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU
-        case 0x20:
-            return ExtendedAPCI_DOMAIN_ADDRESS_WRITE
-        case 0x21:
-            return ExtendedAPCI_DOMAIN_ADDRESS_READ
-        case 0x22:
-            return ExtendedAPCI_DOMAIN_ADDRESS_RESPONSE
-        case 0x23:
-            return ExtendedAPCI_DOMAIN_ADDRESS_SELECTIVE_READ
-        case 0x24:
-            return ExtendedAPCI_NETWORK_PARAMETER_WRITE
-        case 0x25:
-            return ExtendedAPCI_LINK_READ
-        case 0x26:
-            return ExtendedAPCI_LINK_RESPONSE
-        case 0x27:
-            return ExtendedAPCI_LINK_WRITE
-        case 0x28:
-            return ExtendedAPCI_GROUP_PROPERTY_VALUE_READ
-        case 0x29:
-            return ExtendedAPCI_GROUP_PROPERTY_VALUE_RESPONSE
-        case 0x2A:
-            return ExtendedAPCI_GROUP_PROPERTY_VALUE_WRITE
-        case 0x2B:
-            return ExtendedAPCI_GROUP_PROPERTY_VALUE_INFO_REPORT
-        case 0x2C:
-            return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_READ
-        case 0x2D:
-            return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE
-        case 0x2E:
-            return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE
-        case 0x30:
-            return ExtendedAPCI_FILE_STREAM_INFO_REPORT
-    }
-    return 0
+func ExtendedAPCIByValue(value uint8) ExtendedAPCI {
+	switch value {
+	case 0x00:
+		return ExtendedAPCI_OPEN_ROUTING_TABLE_REQUEST_PDU
+	case 0x01:
+		return ExtendedAPCI_READ_ROUTING_TABLE_REQUEST_PDU
+	case 0x02:
+		return ExtendedAPCI_READ_ROUTING_TABLE_RESPONSE_PDU
+	case 0x03:
+		return ExtendedAPCI_WRITE_ROUTING_TABLE_REQUEST_PDU
+	case 0x08:
+		return ExtendedAPCI_READ_ROUTER_MEMORY_REQUEST_PDU
+	case 0x09:
+		return ExtendedAPCI_READ_ROUTER_MEMORY_RESPONSE_PDU
+	case 0x0A:
+		return ExtendedAPCI_WRITE_ROUTER_MEMORY_REQUEST_PDU
+	case 0x0D:
+		return ExtendedAPCI_READ_ROUTER_STATUS_REQUEST_PDU
+	case 0x0E:
+		return ExtendedAPCI_READ_ROUTER_STATUS_RESPONSE_PDU
+	case 0x0F:
+		return ExtendedAPCI_WRITE_ROUTER_STATUS_REQUEST_PDU
+	case 0x10:
+		return ExtendedAPCI_MEMORY_BIT_WRITE_PDU
+	case 0x11:
+		return ExtendedAPCI_AUTHORIZE_REQUEST_PDU
+	case 0x12:
+		return ExtendedAPCI_AUTHORIZE_RESPONSE_PDU
+	case 0x13:
+		return ExtendedAPCI_KEY_WRITE_PDU
+	case 0x14:
+		return ExtendedAPCI_KEY_RESPONSE_PDU
+	case 0x15:
+		return ExtendedAPCI_PROPERTY_VALUE_READ_PDU
+	case 0x16:
+		return ExtendedAPCI_PROPERTY_VALUE_RESPONSE_PDU
+	case 0x17:
+		return ExtendedAPCI_PROPERTY_VALUE_WRITE_PDU
+	case 0x18:
+		return ExtendedAPCI_PROPERTY_DESCRIPTION_READ_PDU
+	case 0x19:
+		return ExtendedAPCI_PROPERTY_DESCRIPTION_RESPONSE_PDU
+	case 0x1A:
+		return ExtendedAPCI_NETWORK_PARAMETER_READ_PDU
+	case 0x1B:
+		return ExtendedAPCI_NETWORK_PARAMETER_RESPONSE_PDU
+	case 0x1C:
+		return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU
+	case 0x1D:
+		return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU
+	case 0x1E:
+		return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU
+	case 0x20:
+		return ExtendedAPCI_DOMAIN_ADDRESS_WRITE
+	case 0x21:
+		return ExtendedAPCI_DOMAIN_ADDRESS_READ
+	case 0x22:
+		return ExtendedAPCI_DOMAIN_ADDRESS_RESPONSE
+	case 0x23:
+		return ExtendedAPCI_DOMAIN_ADDRESS_SELECTIVE_READ
+	case 0x24:
+		return ExtendedAPCI_NETWORK_PARAMETER_WRITE
+	case 0x25:
+		return ExtendedAPCI_LINK_READ
+	case 0x26:
+		return ExtendedAPCI_LINK_RESPONSE
+	case 0x27:
+		return ExtendedAPCI_LINK_WRITE
+	case 0x28:
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_READ
+	case 0x29:
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_RESPONSE
+	case 0x2A:
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_WRITE
+	case 0x2B:
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_INFO_REPORT
+	case 0x2C:
+		return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_READ
+	case 0x2D:
+		return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE
+	case 0x2E:
+		return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE
+	case 0x30:
+		return ExtendedAPCI_FILE_STREAM_INFO_REPORT
+	}
+	return 0
+}
+
+func ExtendedAPCIByName(value string) ExtendedAPCI {
+	switch value {
+	case "OPEN_ROUTING_TABLE_REQUEST_PDU":
+		return ExtendedAPCI_OPEN_ROUTING_TABLE_REQUEST_PDU
+	case "READ_ROUTING_TABLE_REQUEST_PDU":
+		return ExtendedAPCI_READ_ROUTING_TABLE_REQUEST_PDU
+	case "READ_ROUTING_TABLE_RESPONSE_PDU":
+		return ExtendedAPCI_READ_ROUTING_TABLE_RESPONSE_PDU
+	case "WRITE_ROUTING_TABLE_REQUEST_PDU":
+		return ExtendedAPCI_WRITE_ROUTING_TABLE_REQUEST_PDU
+	case "READ_ROUTER_MEMORY_REQUEST_PDU":
+		return ExtendedAPCI_READ_ROUTER_MEMORY_REQUEST_PDU
+	case "READ_ROUTER_MEMORY_RESPONSE_PDU":
+		return ExtendedAPCI_READ_ROUTER_MEMORY_RESPONSE_PDU
+	case "WRITE_ROUTER_MEMORY_REQUEST_PDU":
+		return ExtendedAPCI_WRITE_ROUTER_MEMORY_REQUEST_PDU
+	case "READ_ROUTER_STATUS_REQUEST_PDU":
+		return ExtendedAPCI_READ_ROUTER_STATUS_REQUEST_PDU
+	case "READ_ROUTER_STATUS_RESPONSE_PDU":
+		return ExtendedAPCI_READ_ROUTER_STATUS_RESPONSE_PDU
+	case "WRITE_ROUTER_STATUS_REQUEST_PDU":
+		return ExtendedAPCI_WRITE_ROUTER_STATUS_REQUEST_PDU
+	case "MEMORY_BIT_WRITE_PDU":
+		return ExtendedAPCI_MEMORY_BIT_WRITE_PDU
+	case "AUTHORIZE_REQUEST_PDU":
+		return ExtendedAPCI_AUTHORIZE_REQUEST_PDU
+	case "AUTHORIZE_RESPONSE_PDU":
+		return ExtendedAPCI_AUTHORIZE_RESPONSE_PDU
+	case "KEY_WRITE_PDU":
+		return ExtendedAPCI_KEY_WRITE_PDU
+	case "KEY_RESPONSE_PDU":
+		return ExtendedAPCI_KEY_RESPONSE_PDU
+	case "PROPERTY_VALUE_READ_PDU":
+		return ExtendedAPCI_PROPERTY_VALUE_READ_PDU
+	case "PROPERTY_VALUE_RESPONSE_PDU":
+		return ExtendedAPCI_PROPERTY_VALUE_RESPONSE_PDU
+	case "PROPERTY_VALUE_WRITE_PDU":
+		return ExtendedAPCI_PROPERTY_VALUE_WRITE_PDU
+	case "PROPERTY_DESCRIPTION_READ_PDU":
+		return ExtendedAPCI_PROPERTY_DESCRIPTION_READ_PDU
+	case "PROPERTY_DESCRIPTION_RESPONSE_PDU":
+		return ExtendedAPCI_PROPERTY_DESCRIPTION_RESPONSE_PDU
+	case "NETWORK_PARAMETER_READ_PDU":
+		return ExtendedAPCI_NETWORK_PARAMETER_READ_PDU
+	case "NETWORK_PARAMETER_RESPONSE_PDU":
+		return ExtendedAPCI_NETWORK_PARAMETER_RESPONSE_PDU
+	case "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU":
+		return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU
+	case "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU":
+		return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU
+	case "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU":
+		return ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU
+	case "DOMAIN_ADDRESS_WRITE":
+		return ExtendedAPCI_DOMAIN_ADDRESS_WRITE
+	case "DOMAIN_ADDRESS_READ":
+		return ExtendedAPCI_DOMAIN_ADDRESS_READ
+	case "DOMAIN_ADDRESS_RESPONSE":
+		return ExtendedAPCI_DOMAIN_ADDRESS_RESPONSE
+	case "DOMAIN_ADDRESS_SELECTIVE_READ":
+		return ExtendedAPCI_DOMAIN_ADDRESS_SELECTIVE_READ
+	case "NETWORK_PARAMETER_WRITE":
+		return ExtendedAPCI_NETWORK_PARAMETER_WRITE
+	case "LINK_READ":
+		return ExtendedAPCI_LINK_READ
+	case "LINK_RESPONSE":
+		return ExtendedAPCI_LINK_RESPONSE
+	case "LINK_WRITE":
+		return ExtendedAPCI_LINK_WRITE
+	case "GROUP_PROPERTY_VALUE_READ":
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_READ
+	case "GROUP_PROPERTY_VALUE_RESPONSE":
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_RESPONSE
+	case "GROUP_PROPERTY_VALUE_WRITE":
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_WRITE
+	case "GROUP_PROPERTY_VALUE_INFO_REPORT":
+		return ExtendedAPCI_GROUP_PROPERTY_VALUE_INFO_REPORT
+	case "DOMAIN_ADDRESS_SERIAL_NUMBER_READ":
+		return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_READ
+	case "DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE":
+		return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE
+	case "DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE":
+		return ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE
+	case "FILE_STREAM_INFO_REPORT":
+		return ExtendedAPCI_FILE_STREAM_INFO_REPORT
+	}
+	return 0
 }
 
 func CastExtendedAPCI(structType interface{}) ExtendedAPCI {
-    castFunc := func(typ interface{}) ExtendedAPCI {
-        if sExtendedAPCI, ok := typ.(ExtendedAPCI); ok {
-            return sExtendedAPCI
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ExtendedAPCI {
+		if sExtendedAPCI, ok := typ.(ExtendedAPCI); ok {
+			return sExtendedAPCI
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m ExtendedAPCI) LengthInBits() uint16 {
-    return 6
+	return 6
 }
 
 func (m ExtendedAPCI) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func ExtendedAPCIParse(io *utils.ReadBuffer) (ExtendedAPCI, error) {
-    val, err := io.ReadUint8(6)
-    if err != nil {
-        return 0, nil
-    }
-    return ExtendedAPCIValueOf(val), nil
+	val, err := io.ReadUint8(6)
+	if err != nil {
+		return 0, nil
+	}
+	return ExtendedAPCIByValue(val), nil
 }
 
 func (e ExtendedAPCI) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(6, uint8(e))
-    return err
+	err := io.WriteUint8(6, uint8(e))
+	return err
 }
 
 func (e ExtendedAPCI) String() string {
-    switch e {
-    case ExtendedAPCI_OPEN_ROUTING_TABLE_REQUEST_PDU:
-        return "OPEN_ROUTING_TABLE_REQUEST_PDU"
-    case ExtendedAPCI_READ_ROUTING_TABLE_REQUEST_PDU:
-        return "READ_ROUTING_TABLE_REQUEST_PDU"
-    case ExtendedAPCI_READ_ROUTING_TABLE_RESPONSE_PDU:
-        return "READ_ROUTING_TABLE_RESPONSE_PDU"
-    case ExtendedAPCI_WRITE_ROUTING_TABLE_REQUEST_PDU:
-        return "WRITE_ROUTING_TABLE_REQUEST_PDU"
-    case ExtendedAPCI_READ_ROUTER_MEMORY_REQUEST_PDU:
-        return "READ_ROUTER_MEMORY_REQUEST_PDU"
-    case ExtendedAPCI_READ_ROUTER_MEMORY_RESPONSE_PDU:
-        return "READ_ROUTER_MEMORY_RESPONSE_PDU"
-    case ExtendedAPCI_WRITE_ROUTER_MEMORY_REQUEST_PDU:
-        return "WRITE_ROUTER_MEMORY_REQUEST_PDU"
-    case ExtendedAPCI_READ_ROUTER_STATUS_REQUEST_PDU:
-        return "READ_ROUTER_STATUS_REQUEST_PDU"
-    case ExtendedAPCI_READ_ROUTER_STATUS_RESPONSE_PDU:
-        return "READ_ROUTER_STATUS_RESPONSE_PDU"
-    case ExtendedAPCI_WRITE_ROUTER_STATUS_REQUEST_PDU:
-        return "WRITE_ROUTER_STATUS_REQUEST_PDU"
-    case ExtendedAPCI_MEMORY_BIT_WRITE_PDU:
-        return "MEMORY_BIT_WRITE_PDU"
-    case ExtendedAPCI_AUTHORIZE_REQUEST_PDU:
-        return "AUTHORIZE_REQUEST_PDU"
-    case ExtendedAPCI_AUTHORIZE_RESPONSE_PDU:
-        return "AUTHORIZE_RESPONSE_PDU"
-    case ExtendedAPCI_KEY_WRITE_PDU:
-        return "KEY_WRITE_PDU"
-    case ExtendedAPCI_KEY_RESPONSE_PDU:
-        return "KEY_RESPONSE_PDU"
-    case ExtendedAPCI_PROPERTY_VALUE_READ_PDU:
-        return "PROPERTY_VALUE_READ_PDU"
-    case ExtendedAPCI_PROPERTY_VALUE_RESPONSE_PDU:
-        return "PROPERTY_VALUE_RESPONSE_PDU"
-    case ExtendedAPCI_PROPERTY_VALUE_WRITE_PDU:
-        return "PROPERTY_VALUE_WRITE_PDU"
-    case ExtendedAPCI_PROPERTY_DESCRIPTION_READ_PDU:
-        return "PROPERTY_DESCRIPTION_READ_PDU"
-    case ExtendedAPCI_PROPERTY_DESCRIPTION_RESPONSE_PDU:
-        return "PROPERTY_DESCRIPTION_RESPONSE_PDU"
-    case ExtendedAPCI_NETWORK_PARAMETER_READ_PDU:
-        return "NETWORK_PARAMETER_READ_PDU"
-    case ExtendedAPCI_NETWORK_PARAMETER_RESPONSE_PDU:
-        return "NETWORK_PARAMETER_RESPONSE_PDU"
-    case ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU:
-        return "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU"
-    case ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU:
-        return "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU"
-    case ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU:
-        return "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU"
-    case ExtendedAPCI_DOMAIN_ADDRESS_WRITE:
-        return "DOMAIN_ADDRESS_WRITE"
-    case ExtendedAPCI_DOMAIN_ADDRESS_READ:
-        return "DOMAIN_ADDRESS_READ"
-    case ExtendedAPCI_DOMAIN_ADDRESS_RESPONSE:
-        return "DOMAIN_ADDRESS_RESPONSE"
-    case ExtendedAPCI_DOMAIN_ADDRESS_SELECTIVE_READ:
-        return "DOMAIN_ADDRESS_SELECTIVE_READ"
-    case ExtendedAPCI_NETWORK_PARAMETER_WRITE:
-        return "NETWORK_PARAMETER_WRITE"
-    case ExtendedAPCI_LINK_READ:
-        return "LINK_READ"
-    case ExtendedAPCI_LINK_RESPONSE:
-        return "LINK_RESPONSE"
-    case ExtendedAPCI_LINK_WRITE:
-        return "LINK_WRITE"
-    case ExtendedAPCI_GROUP_PROPERTY_VALUE_READ:
-        return "GROUP_PROPERTY_VALUE_READ"
-    case ExtendedAPCI_GROUP_PROPERTY_VALUE_RESPONSE:
-        return "GROUP_PROPERTY_VALUE_RESPONSE"
-    case ExtendedAPCI_GROUP_PROPERTY_VALUE_WRITE:
-        return "GROUP_PROPERTY_VALUE_WRITE"
-    case ExtendedAPCI_GROUP_PROPERTY_VALUE_INFO_REPORT:
-        return "GROUP_PROPERTY_VALUE_INFO_REPORT"
-    case ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_READ:
-        return "DOMAIN_ADDRESS_SERIAL_NUMBER_READ"
-    case ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE:
-        return "DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE"
-    case ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE:
-        return "DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE"
-    case ExtendedAPCI_FILE_STREAM_INFO_REPORT:
-        return "FILE_STREAM_INFO_REPORT"
-    }
-    return ""
+	switch e {
+	case ExtendedAPCI_OPEN_ROUTING_TABLE_REQUEST_PDU:
+		return "OPEN_ROUTING_TABLE_REQUEST_PDU"
+	case ExtendedAPCI_READ_ROUTING_TABLE_REQUEST_PDU:
+		return "READ_ROUTING_TABLE_REQUEST_PDU"
+	case ExtendedAPCI_READ_ROUTING_TABLE_RESPONSE_PDU:
+		return "READ_ROUTING_TABLE_RESPONSE_PDU"
+	case ExtendedAPCI_WRITE_ROUTING_TABLE_REQUEST_PDU:
+		return "WRITE_ROUTING_TABLE_REQUEST_PDU"
+	case ExtendedAPCI_READ_ROUTER_MEMORY_REQUEST_PDU:
+		return "READ_ROUTER_MEMORY_REQUEST_PDU"
+	case ExtendedAPCI_READ_ROUTER_MEMORY_RESPONSE_PDU:
+		return "READ_ROUTER_MEMORY_RESPONSE_PDU"
+	case ExtendedAPCI_WRITE_ROUTER_MEMORY_REQUEST_PDU:
+		return "WRITE_ROUTER_MEMORY_REQUEST_PDU"
+	case ExtendedAPCI_READ_ROUTER_STATUS_REQUEST_PDU:
+		return "READ_ROUTER_STATUS_REQUEST_PDU"
+	case ExtendedAPCI_READ_ROUTER_STATUS_RESPONSE_PDU:
+		return "READ_ROUTER_STATUS_RESPONSE_PDU"
+	case ExtendedAPCI_WRITE_ROUTER_STATUS_REQUEST_PDU:
+		return "WRITE_ROUTER_STATUS_REQUEST_PDU"
+	case ExtendedAPCI_MEMORY_BIT_WRITE_PDU:
+		return "MEMORY_BIT_WRITE_PDU"
+	case ExtendedAPCI_AUTHORIZE_REQUEST_PDU:
+		return "AUTHORIZE_REQUEST_PDU"
+	case ExtendedAPCI_AUTHORIZE_RESPONSE_PDU:
+		return "AUTHORIZE_RESPONSE_PDU"
+	case ExtendedAPCI_KEY_WRITE_PDU:
+		return "KEY_WRITE_PDU"
+	case ExtendedAPCI_KEY_RESPONSE_PDU:
+		return "KEY_RESPONSE_PDU"
+	case ExtendedAPCI_PROPERTY_VALUE_READ_PDU:
+		return "PROPERTY_VALUE_READ_PDU"
+	case ExtendedAPCI_PROPERTY_VALUE_RESPONSE_PDU:
+		return "PROPERTY_VALUE_RESPONSE_PDU"
+	case ExtendedAPCI_PROPERTY_VALUE_WRITE_PDU:
+		return "PROPERTY_VALUE_WRITE_PDU"
+	case ExtendedAPCI_PROPERTY_DESCRIPTION_READ_PDU:
+		return "PROPERTY_DESCRIPTION_READ_PDU"
+	case ExtendedAPCI_PROPERTY_DESCRIPTION_RESPONSE_PDU:
+		return "PROPERTY_DESCRIPTION_RESPONSE_PDU"
+	case ExtendedAPCI_NETWORK_PARAMETER_READ_PDU:
+		return "NETWORK_PARAMETER_READ_PDU"
+	case ExtendedAPCI_NETWORK_PARAMETER_RESPONSE_PDU:
+		return "NETWORK_PARAMETER_RESPONSE_PDU"
+	case ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU:
+		return "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU"
+	case ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU:
+		return "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU"
+	case ExtendedAPCI_INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU:
+		return "INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU"
+	case ExtendedAPCI_DOMAIN_ADDRESS_WRITE:
+		return "DOMAIN_ADDRESS_WRITE"
+	case ExtendedAPCI_DOMAIN_ADDRESS_READ:
+		return "DOMAIN_ADDRESS_READ"
+	case ExtendedAPCI_DOMAIN_ADDRESS_RESPONSE:
+		return "DOMAIN_ADDRESS_RESPONSE"
+	case ExtendedAPCI_DOMAIN_ADDRESS_SELECTIVE_READ:
+		return "DOMAIN_ADDRESS_SELECTIVE_READ"
+	case ExtendedAPCI_NETWORK_PARAMETER_WRITE:
+		return "NETWORK_PARAMETER_WRITE"
+	case ExtendedAPCI_LINK_READ:
+		return "LINK_READ"
+	case ExtendedAPCI_LINK_RESPONSE:
+		return "LINK_RESPONSE"
+	case ExtendedAPCI_LINK_WRITE:
+		return "LINK_WRITE"
+	case ExtendedAPCI_GROUP_PROPERTY_VALUE_READ:
+		return "GROUP_PROPERTY_VALUE_READ"
+	case ExtendedAPCI_GROUP_PROPERTY_VALUE_RESPONSE:
+		return "GROUP_PROPERTY_VALUE_RESPONSE"
+	case ExtendedAPCI_GROUP_PROPERTY_VALUE_WRITE:
+		return "GROUP_PROPERTY_VALUE_WRITE"
+	case ExtendedAPCI_GROUP_PROPERTY_VALUE_INFO_REPORT:
+		return "GROUP_PROPERTY_VALUE_INFO_REPORT"
+	case ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_READ:
+		return "DOMAIN_ADDRESS_SERIAL_NUMBER_READ"
+	case ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE:
+		return "DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE"
+	case ExtendedAPCI_DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE:
+		return "DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE"
+	case ExtendedAPCI_FILE_STREAM_INFO_REPORT:
+		return "FILE_STREAM_INFO_REPORT"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
index f91a638..a504019 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
@@ -19,67 +19,77 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type HostProtocolCode uint8
 
 type IHostProtocolCode interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    HostProtocolCode_IPV4_UDP HostProtocolCode = 0x01
-    HostProtocolCode_IPV4_TCP HostProtocolCode = 0x02
+const (
+	HostProtocolCode_IPV4_UDP HostProtocolCode = 0x01
+	HostProtocolCode_IPV4_TCP HostProtocolCode = 0x02
 )
 
-func HostProtocolCodeValueOf(value uint8) HostProtocolCode {
-    switch value {
-        case 0x01:
-            return HostProtocolCode_IPV4_UDP
-        case 0x02:
-            return HostProtocolCode_IPV4_TCP
-    }
-    return 0
+func HostProtocolCodeByValue(value uint8) HostProtocolCode {
+	switch value {
+	case 0x01:
+		return HostProtocolCode_IPV4_UDP
+	case 0x02:
+		return HostProtocolCode_IPV4_TCP
+	}
+	return 0
+}
+
+func HostProtocolCodeByName(value string) HostProtocolCode {
+	switch value {
+	case "IPV4_UDP":
+		return HostProtocolCode_IPV4_UDP
+	case "IPV4_TCP":
+		return HostProtocolCode_IPV4_TCP
+	}
+	return 0
 }
 
 func CastHostProtocolCode(structType interface{}) HostProtocolCode {
-    castFunc := func(typ interface{}) HostProtocolCode {
-        if sHostProtocolCode, ok := typ.(HostProtocolCode); ok {
-            return sHostProtocolCode
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) HostProtocolCode {
+		if sHostProtocolCode, ok := typ.(HostProtocolCode); ok {
+			return sHostProtocolCode
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m HostProtocolCode) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m HostProtocolCode) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func HostProtocolCodeParse(io *utils.ReadBuffer) (HostProtocolCode, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return HostProtocolCodeValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return HostProtocolCodeByValue(val), nil
 }
 
 func (e HostProtocolCode) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e HostProtocolCode) String() string {
-    switch e {
-    case HostProtocolCode_IPV4_UDP:
-        return "IPV4_UDP"
-    case HostProtocolCode_IPV4_TCP:
-        return "IPV4_TCP"
-    }
-    return ""
+	switch e {
+	case HostProtocolCode_IPV4_UDP:
+		return "IPV4_UDP"
+	case HostProtocolCode_IPV4_TCP:
+		return "IPV4_TCP"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go
index b422694..7c931ff 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go
@@ -2939,7 +2939,7 @@ func (e KnxDatapointSubtype) Text() string {
 		}
 	}
 }
-func KnxDatapointSubtypeValueOf(value uint32) KnxDatapointSubtype {
+func KnxDatapointSubtypeByValue(value uint32) KnxDatapointSubtype {
 	switch value {
 	case 100001:
 		return KnxDatapointSubtype_DPST_TimeOfDay
@@ -3587,6 +3587,654 @@ func KnxDatapointSubtypeValueOf(value uint32) KnxDatapointSubtype {
 	return 0
 }
 
+func KnxDatapointSubtypeByName(value string) KnxDatapointSubtype {
+	switch value {
+	case "DPST_TimeOfDay":
+		return KnxDatapointSubtype_DPST_TimeOfDay
+	case "DPST_Switch":
+		return KnxDatapointSubtype_DPST_Switch
+	case "DPST_Bool":
+		return KnxDatapointSubtype_DPST_Bool
+	case "DPST_Enable":
+		return KnxDatapointSubtype_DPST_Enable
+	case "DPST_Ramp":
+		return KnxDatapointSubtype_DPST_Ramp
+	case "DPST_Alarm":
+		return KnxDatapointSubtype_DPST_Alarm
+	case "DPST_BinaryValue":
+		return KnxDatapointSubtype_DPST_BinaryValue
+	case "DPST_Step":
+		return KnxDatapointSubtype_DPST_Step
+	case "DPST_UpDown":
+		return KnxDatapointSubtype_DPST_UpDown
+	case "DPST_OpenClose":
+		return KnxDatapointSubtype_DPST_OpenClose
+	case "DPST_Start":
+		return KnxDatapointSubtype_DPST_Start
+	case "DPST_State":
+		return KnxDatapointSubtype_DPST_State
+	case "DPST_Invert":
+		return KnxDatapointSubtype_DPST_Invert
+	case "DPST_DimSendStyle":
+		return KnxDatapointSubtype_DPST_DimSendStyle
+	case "DPST_InputSource":
+		return KnxDatapointSubtype_DPST_InputSource
+	case "DPST_Reset":
+		return KnxDatapointSubtype_DPST_Reset
+	case "DPST_Ack":
+		return KnxDatapointSubtype_DPST_Ack
+	case "DPST_Trigger":
+		return KnxDatapointSubtype_DPST_Trigger
+	case "DPST_Occupancy":
+		return KnxDatapointSubtype_DPST_Occupancy
+	case "DPST_Window_Door":
+		return KnxDatapointSubtype_DPST_Window_Door
+	case "DPST_LogicalFunction":
+		return KnxDatapointSubtype_DPST_LogicalFunction
+	case "DPST_Scene_AB":
+		return KnxDatapointSubtype_DPST_Scene_AB
+	case "DPST_ShutterBlinds_Mode":
+		return KnxDatapointSubtype_DPST_ShutterBlinds_Mode
+	case "DPST_DayNight":
+		return KnxDatapointSubtype_DPST_DayNight
+	case "DPST_Heat_Cool":
+		return KnxDatapointSubtype_DPST_Heat_Cool
+	case "DPST_Date":
+		return KnxDatapointSubtype_DPST_Date
+	case "DPST_Value_4_Ucount":
+		return KnxDatapointSubtype_DPST_Value_4_Ucount
+	case "DPST_LongTimePeriod_Sec":
+		return KnxDatapointSubtype_DPST_LongTimePeriod_Sec
+	case "DPST_LongTimePeriod_Min":
+		return KnxDatapointSubtype_DPST_LongTimePeriod_Min
+	case "DPST_LongTimePeriod_Hrs":
+		return KnxDatapointSubtype_DPST_LongTimePeriod_Hrs
+	case "DPST_VolumeLiquid_Litre":
+		return KnxDatapointSubtype_DPST_VolumeLiquid_Litre
+	case "DPST_Volume_m_3":
+		return KnxDatapointSubtype_DPST_Volume_m_3
+	case "DPST_Value_4_Count":
+		return KnxDatapointSubtype_DPST_Value_4_Count
+	case "DPST_FlowRate_m3h":
+		return KnxDatapointSubtype_DPST_FlowRate_m3h
+	case "DPST_ActiveEnergy":
+		return KnxDatapointSubtype_DPST_ActiveEnergy
+	case "DPST_ApparantEnergy":
+		return KnxDatapointSubtype_DPST_ApparantEnergy
+	case "DPST_ReactiveEnergy":
+		return KnxDatapointSubtype_DPST_ReactiveEnergy
+	case "DPST_ActiveEnergy_kWh":
+		return KnxDatapointSubtype_DPST_ActiveEnergy_kWh
+	case "DPST_ApparantEnergy_kVAh":
+		return KnxDatapointSubtype_DPST_ApparantEnergy_kVAh
+	case "DPST_ReactiveEnergy_kVARh":
+		return KnxDatapointSubtype_DPST_ReactiveEnergy_kVARh
+	case "DPST_ActiveEnergy_MWh":
+		return KnxDatapointSubtype_DPST_ActiveEnergy_MWh
+	case "DPST_LongDeltaTimeSec":
+		return KnxDatapointSubtype_DPST_LongDeltaTimeSec
+	case "DPST_DeltaVolumeLiquid_Litre":
+		return KnxDatapointSubtype_DPST_DeltaVolumeLiquid_Litre
+	case "DPST_DeltaVolume_m_3":
+		return KnxDatapointSubtype_DPST_DeltaVolume_m_3
+	case "DPST_Value_Acceleration":
+		return KnxDatapointSubtype_DPST_Value_Acceleration
+	case "DPST_Value_Acceleration_Angular":
+		return KnxDatapointSubtype_DPST_Value_Acceleration_Angular
+	case "DPST_Value_Activation_Energy":
+		return KnxDatapointSubtype_DPST_Value_Activation_Energy
+	case "DPST_Value_Activity":
+		return KnxDatapointSubtype_DPST_Value_Activity
+	case "DPST_Value_Mol":
+		return KnxDatapointSubtype_DPST_Value_Mol
+	case "DPST_Value_Amplitude":
+		return KnxDatapointSubtype_DPST_Value_Amplitude
+	case "DPST_Value_AngleRad":
+		return KnxDatapointSubtype_DPST_Value_AngleRad
+	case "DPST_Value_AngleDeg":
+		return KnxDatapointSubtype_DPST_Value_AngleDeg
+	case "DPST_Value_Angular_Momentum":
+		return KnxDatapointSubtype_DPST_Value_Angular_Momentum
+	case "DPST_Value_Angular_Velocity":
+		return KnxDatapointSubtype_DPST_Value_Angular_Velocity
+	case "DPST_Value_Area":
+		return KnxDatapointSubtype_DPST_Value_Area
+	case "DPST_Value_Capacitance":
+		return KnxDatapointSubtype_DPST_Value_Capacitance
+	case "DPST_Value_Charge_DensitySurface":
+		return KnxDatapointSubtype_DPST_Value_Charge_DensitySurface
+	case "DPST_Value_Charge_DensityVolume":
+		return KnxDatapointSubtype_DPST_Value_Charge_DensityVolume
+	case "DPST_Value_Compressibility":
+		return KnxDatapointSubtype_DPST_Value_Compressibility
+	case "DPST_Value_Conductance":
+		return KnxDatapointSubtype_DPST_Value_Conductance
+	case "DPST_Value_Electrical_Conductivity":
+		return KnxDatapointSubtype_DPST_Value_Electrical_Conductivity
+	case "DPST_Value_Density":
+		return KnxDatapointSubtype_DPST_Value_Density
+	case "DPST_Value_Electric_Charge":
+		return KnxDatapointSubtype_DPST_Value_Electric_Charge
+	case "DPST_Value_Electric_Current":
+		return KnxDatapointSubtype_DPST_Value_Electric_Current
+	case "DPST_Value_Electric_CurrentDensity":
+		return KnxDatapointSubtype_DPST_Value_Electric_CurrentDensity
+	case "DPST_Value_Electric_DipoleMoment":
+		return KnxDatapointSubtype_DPST_Value_Electric_DipoleMoment
+	case "DPST_Value_Electric_Displacement":
+		return KnxDatapointSubtype_DPST_Value_Electric_Displacement
+	case "DPST_Value_Electric_FieldStrength":
+		return KnxDatapointSubtype_DPST_Value_Electric_FieldStrength
+	case "DPST_Value_Electric_Flux":
+		return KnxDatapointSubtype_DPST_Value_Electric_Flux
+	case "DPST_Value_Electric_FluxDensity":
+		return KnxDatapointSubtype_DPST_Value_Electric_FluxDensity
+	case "DPST_Value_Electric_Polarization":
+		return KnxDatapointSubtype_DPST_Value_Electric_Polarization
+	case "DPST_Value_Electric_Potential":
+		return KnxDatapointSubtype_DPST_Value_Electric_Potential
+	case "DPST_Value_Electric_PotentialDifference":
+		return KnxDatapointSubtype_DPST_Value_Electric_PotentialDifference
+	case "DPST_Value_ElectromagneticMoment":
+		return KnxDatapointSubtype_DPST_Value_ElectromagneticMoment
+	case "DPST_Value_Electromotive_Force":
+		return KnxDatapointSubtype_DPST_Value_Electromotive_Force
+	case "DPST_Value_Energy":
+		return KnxDatapointSubtype_DPST_Value_Energy
+	case "DPST_Value_Force":
+		return KnxDatapointSubtype_DPST_Value_Force
+	case "DPST_Value_Frequency":
+		return KnxDatapointSubtype_DPST_Value_Frequency
+	case "DPST_Value_Angular_Frequency":
+		return KnxDatapointSubtype_DPST_Value_Angular_Frequency
+	case "DPST_Value_Heat_Capacity":
+		return KnxDatapointSubtype_DPST_Value_Heat_Capacity
+	case "DPST_Value_Heat_FlowRate":
+		return KnxDatapointSubtype_DPST_Value_Heat_FlowRate
+	case "DPST_Value_Heat_Quantity":
+		return KnxDatapointSubtype_DPST_Value_Heat_Quantity
+	case "DPST_Value_Impedance":
+		return KnxDatapointSubtype_DPST_Value_Impedance
+	case "DPST_Value_Length":
+		return KnxDatapointSubtype_DPST_Value_Length
+	case "DPST_Value_Light_Quantity":
+		return KnxDatapointSubtype_DPST_Value_Light_Quantity
+	case "DPST_Value_Luminance":
+		return KnxDatapointSubtype_DPST_Value_Luminance
+	case "DPST_Value_Luminous_Flux":
+		return KnxDatapointSubtype_DPST_Value_Luminous_Flux
+	case "DPST_Value_Luminous_Intensity":
+		return KnxDatapointSubtype_DPST_Value_Luminous_Intensity
+	case "DPST_Value_Magnetic_FieldStrength":
+		return KnxDatapointSubtype_DPST_Value_Magnetic_FieldStrength
+	case "DPST_Value_Magnetic_Flux":
+		return KnxDatapointSubtype_DPST_Value_Magnetic_Flux
+	case "DPST_Value_Magnetic_FluxDensity":
+		return KnxDatapointSubtype_DPST_Value_Magnetic_FluxDensity
+	case "DPST_Value_Magnetic_Moment":
+		return KnxDatapointSubtype_DPST_Value_Magnetic_Moment
+	case "DPST_Value_Magnetic_Polarization":
+		return KnxDatapointSubtype_DPST_Value_Magnetic_Polarization
+	case "DPST_Value_Magnetization":
+		return KnxDatapointSubtype_DPST_Value_Magnetization
+	case "DPST_Value_MagnetomotiveForce":
+		return KnxDatapointSubtype_DPST_Value_MagnetomotiveForce
+	case "DPST_Value_Mass":
+		return KnxDatapointSubtype_DPST_Value_Mass
+	case "DPST_Value_MassFlux":
+		return KnxDatapointSubtype_DPST_Value_MassFlux
+	case "DPST_Value_Momentum":
+		return KnxDatapointSubtype_DPST_Value_Momentum
+	case "DPST_Value_Phase_AngleRad":
+		return KnxDatapointSubtype_DPST_Value_Phase_AngleRad
+	case "DPST_Value_Phase_AngleDeg":
+		return KnxDatapointSubtype_DPST_Value_Phase_AngleDeg
+	case "DPST_Value_Power":
+		return KnxDatapointSubtype_DPST_Value_Power
+	case "DPST_Value_Power_Factor":
+		return KnxDatapointSubtype_DPST_Value_Power_Factor
+	case "DPST_Value_Pressure":
+		return KnxDatapointSubtype_DPST_Value_Pressure
+	case "DPST_Value_Reactance":
+		return KnxDatapointSubtype_DPST_Value_Reactance
+	case "DPST_Value_Resistance":
+		return KnxDatapointSubtype_DPST_Value_Resistance
+	case "DPST_Value_Resistivity":
+		return KnxDatapointSubtype_DPST_Value_Resistivity
+	case "DPST_Value_SelfInductance":
+		return KnxDatapointSubtype_DPST_Value_SelfInductance
+	case "DPST_Value_SolidAngle":
+		return KnxDatapointSubtype_DPST_Value_SolidAngle
+	case "DPST_Value_Sound_Intensity":
+		return KnxDatapointSubtype_DPST_Value_Sound_Intensity
+	case "DPST_Value_Speed":
+		return KnxDatapointSubtype_DPST_Value_Speed
+	case "DPST_Value_Stress":
+		return KnxDatapointSubtype_DPST_Value_Stress
+	case "DPST_Value_Surface_Tension":
+		return KnxDatapointSubtype_DPST_Value_Surface_Tension
+	case "DPST_Value_Common_Temperature":
+		return KnxDatapointSubtype_DPST_Value_Common_Temperature
+	case "DPST_Value_Absolute_Temperature":
+		return KnxDatapointSubtype_DPST_Value_Absolute_Temperature
+	case "DPST_Value_TemperatureDifference":
+		return KnxDatapointSubtype_DPST_Value_TemperatureDifference
+	case "DPST_Value_Thermal_Capacity":
+		return KnxDatapointSubtype_DPST_Value_Thermal_Capacity
+	case "DPST_Value_Thermal_Conductivity":
+		return KnxDatapointSubtype_DPST_Value_Thermal_Conductivity
+	case "DPST_Value_ThermoelectricPower":
+		return KnxDatapointSubtype_DPST_Value_ThermoelectricPower
+	case "DPST_Value_Time":
+		return KnxDatapointSubtype_DPST_Value_Time
+	case "DPST_Value_Torque":
+		return KnxDatapointSubtype_DPST_Value_Torque
+	case "DPST_Value_Volume":
+		return KnxDatapointSubtype_DPST_Value_Volume
+	case "DPST_Value_Volume_Flux":
+		return KnxDatapointSubtype_DPST_Value_Volume_Flux
+	case "DPST_Value_Weight":
+		return KnxDatapointSubtype_DPST_Value_Weight
+	case "DPST_Value_Work":
+		return KnxDatapointSubtype_DPST_Value_Work
+	case "DPST_Volume_Flux_Meter":
+		return KnxDatapointSubtype_DPST_Volume_Flux_Meter
+	case "DPST_Volume_Flux_ls":
+		return KnxDatapointSubtype_DPST_Volume_Flux_ls
+	case "DPST_Access_Data":
+		return KnxDatapointSubtype_DPST_Access_Data
+	case "DPST_String_ASCII":
+		return KnxDatapointSubtype_DPST_String_ASCII
+	case "DPST_String_8859_1":
+		return KnxDatapointSubtype_DPST_String_8859_1
+	case "DPST_SceneNumber":
+		return KnxDatapointSubtype_DPST_SceneNumber
+	case "DPST_SceneControl":
+		return KnxDatapointSubtype_DPST_SceneControl
+	case "DPST_DateTime":
+		return KnxDatapointSubtype_DPST_DateTime
+	case "DPST_SCLOMode":
+		return KnxDatapointSubtype_DPST_SCLOMode
+	case "DPST_BuildingMode":
+		return KnxDatapointSubtype_DPST_BuildingMode
+	case "DPST_OccMode":
+		return KnxDatapointSubtype_DPST_OccMode
+	case "DPST_Priority":
+		return KnxDatapointSubtype_DPST_Priority
+	case "DPST_LightApplicationMode":
+		return KnxDatapointSubtype_DPST_LightApplicationMode
+	case "DPST_ApplicationArea":
+		return KnxDatapointSubtype_DPST_ApplicationArea
+	case "DPST_AlarmClassType":
+		return KnxDatapointSubtype_DPST_AlarmClassType
+	case "DPST_PSUMode":
+		return KnxDatapointSubtype_DPST_PSUMode
+	case "DPST_Switch_Control":
+		return KnxDatapointSubtype_DPST_Switch_Control
+	case "DPST_ErrorClass_System":
+		return KnxDatapointSubtype_DPST_ErrorClass_System
+	case "DPST_ErrorClass_HVAC":
+		return KnxDatapointSubtype_DPST_ErrorClass_HVAC
+	case "DPST_Time_Delay":
+		return KnxDatapointSubtype_DPST_Time_Delay
+	case "DPST_Beaufort_Wind_Force_Scale":
+		return KnxDatapointSubtype_DPST_Beaufort_Wind_Force_Scale
+	case "DPST_SensorSelect":
+		return KnxDatapointSubtype_DPST_SensorSelect
+	case "DPST_Bool_Control":
+		return KnxDatapointSubtype_DPST_Bool_Control
+	case "DPST_ActuatorConnectType":
+		return KnxDatapointSubtype_DPST_ActuatorConnectType
+	case "DPST_Cloud_Cover":
+		return KnxDatapointSubtype_DPST_Cloud_Cover
+	case "DPST_PowerReturnMode":
+		return KnxDatapointSubtype_DPST_PowerReturnMode
+	case "DPST_Enable_Control":
+		return KnxDatapointSubtype_DPST_Enable_Control
+	case "DPST_Ramp_Control":
+		return KnxDatapointSubtype_DPST_Ramp_Control
+	case "DPST_Alarm_Control":
+		return KnxDatapointSubtype_DPST_Alarm_Control
+	case "DPST_BinaryValue_Control":
+		return KnxDatapointSubtype_DPST_BinaryValue_Control
+	case "DPST_Step_Control":
+		return KnxDatapointSubtype_DPST_Step_Control
+	case "DPST_Direction1_Control":
+		return KnxDatapointSubtype_DPST_Direction1_Control
+	case "DPST_Direction2_Control":
+		return KnxDatapointSubtype_DPST_Direction2_Control
+	case "DPST_Start_Control":
+		return KnxDatapointSubtype_DPST_Start_Control
+	case "DPST_FuelType":
+		return KnxDatapointSubtype_DPST_FuelType
+	case "DPST_BurnerType":
+		return KnxDatapointSubtype_DPST_BurnerType
+	case "DPST_HVACMode":
+		return KnxDatapointSubtype_DPST_HVACMode
+	case "DPST_DHWMode":
+		return KnxDatapointSubtype_DPST_DHWMode
+	case "DPST_LoadPriority":
+		return KnxDatapointSubtype_DPST_LoadPriority
+	case "DPST_HVACContrMode":
+		return KnxDatapointSubtype_DPST_HVACContrMode
+	case "DPST_HVACEmergMode":
+		return KnxDatapointSubtype_DPST_HVACEmergMode
+	case "DPST_ChangeoverMode":
+		return KnxDatapointSubtype_DPST_ChangeoverMode
+	case "DPST_ValveMode":
+		return KnxDatapointSubtype_DPST_ValveMode
+	case "DPST_DamperMode":
+		return KnxDatapointSubtype_DPST_DamperMode
+	case "DPST_State_Control":
+		return KnxDatapointSubtype_DPST_State_Control
+	case "DPST_HeaterMode":
+		return KnxDatapointSubtype_DPST_HeaterMode
+	case "DPST_FanMode":
+		return KnxDatapointSubtype_DPST_FanMode
+	case "DPST_MasterSlaveMode":
+		return KnxDatapointSubtype_DPST_MasterSlaveMode
+	case "DPST_StatusRoomSetp":
+		return KnxDatapointSubtype_DPST_StatusRoomSetp
+	case "DPST_Metering_DeviceType":
+		return KnxDatapointSubtype_DPST_Metering_DeviceType
+	case "DPST_HumDehumMode":
+		return KnxDatapointSubtype_DPST_HumDehumMode
+	case "DPST_EnableHCStage":
+		return KnxDatapointSubtype_DPST_EnableHCStage
+	case "DPST_Invert_Control":
+		return KnxDatapointSubtype_DPST_Invert_Control
+	case "DPST_ADAType":
+		return KnxDatapointSubtype_DPST_ADAType
+	case "DPST_BackupMode":
+		return KnxDatapointSubtype_DPST_BackupMode
+	case "DPST_StartSynchronization":
+		return KnxDatapointSubtype_DPST_StartSynchronization
+	case "DPST_Behaviour_Lock_Unlock":
+		return KnxDatapointSubtype_DPST_Behaviour_Lock_Unlock
+	case "DPST_Behaviour_Bus_Power_Up_Down":
+		return KnxDatapointSubtype_DPST_Behaviour_Bus_Power_Up_Down
+	case "DPST_DALI_Fade_Time":
+		return KnxDatapointSubtype_DPST_DALI_Fade_Time
+	case "DPST_BlinkingMode":
+		return KnxDatapointSubtype_DPST_BlinkingMode
+	case "DPST_LightControlMode":
+		return KnxDatapointSubtype_DPST_LightControlMode
+	case "DPST_SwitchPBModel":
+		return KnxDatapointSubtype_DPST_SwitchPBModel
+	case "DPST_PBAction":
+		return KnxDatapointSubtype_DPST_PBAction
+	case "DPST_DimmPBModel":
+		return KnxDatapointSubtype_DPST_DimmPBModel
+	case "DPST_SwitchOnMode":
+		return KnxDatapointSubtype_DPST_SwitchOnMode
+	case "DPST_LoadTypeSet":
+		return KnxDatapointSubtype_DPST_LoadTypeSet
+	case "DPST_LoadTypeDetected":
+		return KnxDatapointSubtype_DPST_LoadTypeDetected
+	case "DPST_Converter_Test_Control":
+		return KnxDatapointSubtype_DPST_Converter_Test_Control
+	case "DPST_SABExcept_Behaviour":
+		return KnxDatapointSubtype_DPST_SABExcept_Behaviour
+	case "DPST_SABBehaviour_Lock_Unlock":
+		return KnxDatapointSubtype_DPST_SABBehaviour_Lock_Unlock
+	case "DPST_SSSBMode":
+		return KnxDatapointSubtype_DPST_SSSBMode
+	case "DPST_BlindsControlMode":
+		return KnxDatapointSubtype_DPST_BlindsControlMode
+	case "DPST_CommMode":
+		return KnxDatapointSubtype_DPST_CommMode
+	case "DPST_AddInfoTypes":
+		return KnxDatapointSubtype_DPST_AddInfoTypes
+	case "DPST_RF_ModeSelect":
+		return KnxDatapointSubtype_DPST_RF_ModeSelect
+	case "DPST_RF_FilterSelect":
+		return KnxDatapointSubtype_DPST_RF_FilterSelect
+	case "DPST_HVACModeNext":
+		return KnxDatapointSubtype_DPST_HVACModeNext
+	case "DPST_DHWModeNext":
+		return KnxDatapointSubtype_DPST_DHWModeNext
+	case "DPST_OccModeNext":
+		return KnxDatapointSubtype_DPST_OccModeNext
+	case "DPST_BuildingModeNext":
+		return KnxDatapointSubtype_DPST_BuildingModeNext
+	case "DPST_StatusGen":
+		return KnxDatapointSubtype_DPST_StatusGen
+	case "DPST_Device_Control":
+		return KnxDatapointSubtype_DPST_Device_Control
+	case "DPST_ForceSign":
+		return KnxDatapointSubtype_DPST_ForceSign
+	case "DPST_ForceSignCool":
+		return KnxDatapointSubtype_DPST_ForceSignCool
+	case "DPST_StatusRHC":
+		return KnxDatapointSubtype_DPST_StatusRHC
+	case "DPST_StatusSDHWC":
+		return KnxDatapointSubtype_DPST_StatusSDHWC
+	case "DPST_FuelTypeSet":
+		return KnxDatapointSubtype_DPST_FuelTypeSet
+	case "DPST_StatusRCC":
+		return KnxDatapointSubtype_DPST_StatusRCC
+	case "DPST_StatusAHU":
+		return KnxDatapointSubtype_DPST_StatusAHU
+	case "DPST_CombinedStatus_RTSM":
+		return KnxDatapointSubtype_DPST_CombinedStatus_RTSM
+	case "DPST_LightActuatorErrorInfo":
+		return KnxDatapointSubtype_DPST_LightActuatorErrorInfo
+	case "DPST_RF_ModeInfo":
+		return KnxDatapointSubtype_DPST_RF_ModeInfo
+	case "DPST_RF_FilterInfo":
+		return KnxDatapointSubtype_DPST_RF_FilterInfo
+	case "DPST_Channel_Activation_8":
+		return KnxDatapointSubtype_DPST_Channel_Activation_8
+	case "DPST_Version":
+		return KnxDatapointSubtype_DPST_Version
+	case "DPST_AlarmInfo":
+		return KnxDatapointSubtype_DPST_AlarmInfo
+	case "DPST_StatusDHWC":
+		return KnxDatapointSubtype_DPST_StatusDHWC
+	case "DPST_StatusRHCC":
+		return KnxDatapointSubtype_DPST_StatusRHCC
+	case "DPST_CombinedStatus_HVA":
+		return KnxDatapointSubtype_DPST_CombinedStatus_HVA
+	case "DPST_CombinedStatus_RTC":
+		return KnxDatapointSubtype_DPST_CombinedStatus_RTC
+	case "DPST_Media":
+		return KnxDatapointSubtype_DPST_Media
+	case "DPST_Channel_Activation_16":
+		return KnxDatapointSubtype_DPST_Channel_Activation_16
+	case "DPST_TempRoomSetpSetF16_3":
+		return KnxDatapointSubtype_DPST_TempRoomSetpSetF16_3
+	case "DPST_TempRoomSetpSetShiftF16_3":
+		return KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_3
+	case "DPST_Scaling_Speed":
+		return KnxDatapointSubtype_DPST_Scaling_Speed
+	case "DPST_Scaling_Step_Time":
+		return KnxDatapointSubtype_DPST_Scaling_Step_Time
+	case "DPST_MeteringValue":
+		return KnxDatapointSubtype_DPST_MeteringValue
+	case "DPST_OnOffAction":
+		return KnxDatapointSubtype_DPST_OnOffAction
+	case "DPST_Alarm_Reaction":
+		return KnxDatapointSubtype_DPST_Alarm_Reaction
+	case "DPST_UpDown_Action":
+		return KnxDatapointSubtype_DPST_UpDown_Action
+	case "DPST_MBus_Address":
+		return KnxDatapointSubtype_DPST_MBus_Address
+	case "DPST_HVAC_PB_Action":
+		return KnxDatapointSubtype_DPST_HVAC_PB_Action
+	case "DPST_Colour_RGB":
+		return KnxDatapointSubtype_DPST_Colour_RGB
+	case "DPST_LanguageCodeAlpha2_ASCII":
+		return KnxDatapointSubtype_DPST_LanguageCodeAlpha2_ASCII
+	case "DPST_Tariff_ActiveEnergy":
+		return KnxDatapointSubtype_DPST_Tariff_ActiveEnergy
+	case "DPST_Prioritised_Mode_Control":
+		return KnxDatapointSubtype_DPST_Prioritised_Mode_Control
+	case "DPST_DALI_Control_Gear_Diagnostic":
+		return KnxDatapointSubtype_DPST_DALI_Control_Gear_Diagnostic
+	case "DPST_DALI_Diagnostics":
+		return KnxDatapointSubtype_DPST_DALI_Diagnostics
+	case "DPST_CombinedPosition":
+		return KnxDatapointSubtype_DPST_CombinedPosition
+	case "DPST_StatusSAB":
+		return KnxDatapointSubtype_DPST_StatusSAB
+	case "DPST_Colour_xyY":
+		return KnxDatapointSubtype_DPST_Colour_xyY
+	case "DPST_Converter_Status":
+		return KnxDatapointSubtype_DPST_Converter_Status
+	case "DPST_Converter_Test_Result":
+		return KnxDatapointSubtype_DPST_Converter_Test_Result
+	case "DPST_Battery_Info":
+		return KnxDatapointSubtype_DPST_Battery_Info
+	case "DPST_Brightness_Colour_Temperature_Transition":
+		return KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Transition
+	case "DPST_Brightness_Colour_Temperature_Control":
+		return KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Control
+	case "DPST_DoubleNibble":
+		return KnxDatapointSubtype_DPST_DoubleNibble
+	case "DPST_Colour_RGBW":
+		return KnxDatapointSubtype_DPST_Colour_RGBW
+	case "DPST_Relative_Control_RGBW":
+		return KnxDatapointSubtype_DPST_Relative_Control_RGBW
+	case "DPST_Relative_Control_RGB":
+		return KnxDatapointSubtype_DPST_Relative_Control_RGB
+	case "DPST_GeographicalLocation":
+		return KnxDatapointSubtype_DPST_GeographicalLocation
+	case "DPST_SceneInfo":
+		return KnxDatapointSubtype_DPST_SceneInfo
+	case "DPST_CombinedInfoOnOff":
+		return KnxDatapointSubtype_DPST_CombinedInfoOnOff
+	case "DPST_TempRoomSetpSetF16_4":
+		return KnxDatapointSubtype_DPST_TempRoomSetpSetF16_4
+	case "DPST_TempRoomSetpSetShiftF16_4":
+		return KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_4
+	case "DPST_ActiveEnergy_V64":
+		return KnxDatapointSubtype_DPST_ActiveEnergy_V64
+	case "DPST_ApparantEnergy_V64":
+		return KnxDatapointSubtype_DPST_ApparantEnergy_V64
+	case "DPST_ReactiveEnergy_V64":
+		return KnxDatapointSubtype_DPST_ReactiveEnergy_V64
+	case "DPST_Control_Dimming":
+		return KnxDatapointSubtype_DPST_Control_Dimming
+	case "DPST_Control_Blinds":
+		return KnxDatapointSubtype_DPST_Control_Blinds
+	case "DPST_Channel_Activation_24":
+		return KnxDatapointSubtype_DPST_Channel_Activation_24
+	case "DPST_Char_ASCII":
+		return KnxDatapointSubtype_DPST_Char_ASCII
+	case "DPST_Char_8859_1":
+		return KnxDatapointSubtype_DPST_Char_8859_1
+	case "DPST_Scaling":
+		return KnxDatapointSubtype_DPST_Scaling
+	case "DPST_Angle":
+		return KnxDatapointSubtype_DPST_Angle
+	case "DPST_Percent_U8":
+		return KnxDatapointSubtype_DPST_Percent_U8
+	case "DPST_DecimalFactor":
+		return KnxDatapointSubtype_DPST_DecimalFactor
+	case "DPST_Tariff":
+		return KnxDatapointSubtype_DPST_Tariff
+	case "DPST_Value_1_Ucount":
+		return KnxDatapointSubtype_DPST_Value_1_Ucount
+	case "DPST_FanStage":
+		return KnxDatapointSubtype_DPST_FanStage
+	case "DPST_Percent_V8":
+		return KnxDatapointSubtype_DPST_Percent_V8
+	case "DPST_Value_1_Count":
+		return KnxDatapointSubtype_DPST_Value_1_Count
+	case "DPST_Status_Mode3":
+		return KnxDatapointSubtype_DPST_Status_Mode3
+	case "DPST_Value_2_Ucount":
+		return KnxDatapointSubtype_DPST_Value_2_Ucount
+	case "DPST_TimePeriodMsec":
+		return KnxDatapointSubtype_DPST_TimePeriodMsec
+	case "DPST_TimePeriod10Msec":
+		return KnxDatapointSubtype_DPST_TimePeriod10Msec
+	case "DPST_TimePeriod100Msec":
+		return KnxDatapointSubtype_DPST_TimePeriod100Msec
+	case "DPST_TimePeriodSec":
+		return KnxDatapointSubtype_DPST_TimePeriodSec
+	case "DPST_TimePeriodMin":
+		return KnxDatapointSubtype_DPST_TimePeriodMin
+	case "DPST_TimePeriodHrs":
+		return KnxDatapointSubtype_DPST_TimePeriodHrs
+	case "DPST_PropDataType":
+		return KnxDatapointSubtype_DPST_PropDataType
+	case "DPST_Length_mm":
+		return KnxDatapointSubtype_DPST_Length_mm
+	case "DPST_UElCurrentmA":
+		return KnxDatapointSubtype_DPST_UElCurrentmA
+	case "DPST_Brightness":
+		return KnxDatapointSubtype_DPST_Brightness
+	case "DPST_Absolute_Colour_Temperature":
+		return KnxDatapointSubtype_DPST_Absolute_Colour_Temperature
+	case "DPST_Value_2_Count":
+		return KnxDatapointSubtype_DPST_Value_2_Count
+	case "DPST_DeltaTimeMsec":
+		return KnxDatapointSubtype_DPST_DeltaTimeMsec
+	case "DPST_DeltaTime10Msec":
+		return KnxDatapointSubtype_DPST_DeltaTime10Msec
+	case "DPST_DeltaTime100Msec":
+		return KnxDatapointSubtype_DPST_DeltaTime100Msec
+	case "DPST_DeltaTimeSec":
+		return KnxDatapointSubtype_DPST_DeltaTimeSec
+	case "DPST_DeltaTimeMin":
+		return KnxDatapointSubtype_DPST_DeltaTimeMin
+	case "DPST_DeltaTimeHrs":
+		return KnxDatapointSubtype_DPST_DeltaTimeHrs
+	case "DPST_Percent_V16":
+		return KnxDatapointSubtype_DPST_Percent_V16
+	case "DPST_Rotation_Angle":
+		return KnxDatapointSubtype_DPST_Rotation_Angle
+	case "DPST_Length_m":
+		return KnxDatapointSubtype_DPST_Length_m
+	case "DPST_Value_Temp":
+		return KnxDatapointSubtype_DPST_Value_Temp
+	case "DPST_Value_Tempd":
+		return KnxDatapointSubtype_DPST_Value_Tempd
+	case "DPST_Value_Tempa":
+		return KnxDatapointSubtype_DPST_Value_Tempa
+	case "DPST_Value_Lux":
+		return KnxDatapointSubtype_DPST_Value_Lux
+	case "DPST_Value_Wsp":
+		return KnxDatapointSubtype_DPST_Value_Wsp
+	case "DPST_Value_Pres":
+		return KnxDatapointSubtype_DPST_Value_Pres
+	case "DPST_Value_Humidity":
+		return KnxDatapointSubtype_DPST_Value_Humidity
+	case "DPST_Value_AirQuality":
+		return KnxDatapointSubtype_DPST_Value_AirQuality
+	case "DPST_Value_AirFlow":
+		return KnxDatapointSubtype_DPST_Value_AirFlow
+	case "DPST_Value_Time1":
+		return KnxDatapointSubtype_DPST_Value_Time1
+	case "DPST_Value_Time2":
+		return KnxDatapointSubtype_DPST_Value_Time2
+	case "DPST_Value_Volt":
+		return KnxDatapointSubtype_DPST_Value_Volt
+	case "DPST_Value_Curr":
+		return KnxDatapointSubtype_DPST_Value_Curr
+	case "DPST_PowerDensity":
+		return KnxDatapointSubtype_DPST_PowerDensity
+	case "DPST_KelvinPerPercent":
+		return KnxDatapointSubtype_DPST_KelvinPerPercent
+	case "DPST_Power":
+		return KnxDatapointSubtype_DPST_Power
+	case "DPST_Value_Volume_Flow":
+		return KnxDatapointSubtype_DPST_Value_Volume_Flow
+	case "DPST_Rain_Amount":
+		return KnxDatapointSubtype_DPST_Rain_Amount
+	case "DPST_Value_Temp_F":
+		return KnxDatapointSubtype_DPST_Value_Temp_F
+	case "DPST_Value_Wsp_kmh":
+		return KnxDatapointSubtype_DPST_Value_Wsp_kmh
+	case "DPST_Value_Absolute_Humidity":
+		return KnxDatapointSubtype_DPST_Value_Absolute_Humidity
+	case "DPST_Concentration_ygm3":
+		return KnxDatapointSubtype_DPST_Concentration_ygm3
+	}
+	return 0
+}
+
 func CastKnxDatapointSubtype(structType interface{}) KnxDatapointSubtype {
 	castFunc := func(typ interface{}) KnxDatapointSubtype {
 		if sKnxDatapointSubtype, ok := typ.(KnxDatapointSubtype); ok {
@@ -3610,7 +4258,7 @@ func KnxDatapointSubtypeParse(io *utils.ReadBuffer) (KnxDatapointSubtype, error)
 	if err != nil {
 		return 0, nil
 	}
-	return KnxDatapointSubtypeValueOf(val), nil
+	return KnxDatapointSubtypeByValue(val), nil
 }
 
 func (e KnxDatapointSubtype) Serialize(io utils.WriteBuffer) error {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
index f2a56f3..f5c35f3 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
@@ -536,7 +536,7 @@ func (e KnxDatapointType) SizeInBits() uint8 {
 		}
 	}
 }
-func KnxDatapointTypeValueOf(value uint16) KnxDatapointType {
+func KnxDatapointTypeByValue(value uint16) KnxDatapointType {
 	switch value {
 	case 1:
 		return KnxDatapointType_DPT_1_BIT
@@ -650,6 +650,120 @@ func KnxDatapointTypeValueOf(value uint16) KnxDatapointType {
 	return 0
 }
 
+func KnxDatapointTypeByName(value string) KnxDatapointType {
+	switch value {
+	case "DPT_1_BIT":
+		return KnxDatapointType_DPT_1_BIT
+	case "DPT_TIME":
+		return KnxDatapointType_DPT_TIME
+	case "DPT_DATE":
+		return KnxDatapointType_DPT_DATE
+	case "DPT_4_BYTE_UNSIGNED_VALUE":
+		return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+	case "DPT_4_BYTE_SIGNED_VALUE":
+		return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+	case "DPT_4_BYTE_FLOAT_VALUE":
+		return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+	case "DPT_ENTRANCE_ACCESS":
+		return KnxDatapointType_DPT_ENTRANCE_ACCESS
+	case "DPT_CHARACTER_STRING":
+		return KnxDatapointType_DPT_CHARACTER_STRING
+	case "DPT_SCENE_NUMBER":
+		return KnxDatapointType_DPT_SCENE_NUMBER
+	case "DPT_SCENE_CONTROL":
+		return KnxDatapointType_DPT_SCENE_CONTROL
+	case "DPT_DATE_TIME":
+		return KnxDatapointType_DPT_DATE_TIME
+	case "DPT_1_BIT_CONTROLLED":
+		return KnxDatapointType_DPT_1_BIT_CONTROLLED
+	case "DPT_1_BYTE":
+		return KnxDatapointType_DPT_1_BYTE
+	case "DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM":
+		return KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+	case "DPT_8_BIT_SET":
+		return KnxDatapointType_DPT_8_BIT_SET
+	case "DPT_DATAPOINT_TYPE_VERSION":
+		return KnxDatapointType_DPT_DATAPOINT_TYPE_VERSION
+	case "DPT_ALARM_INFO":
+		return KnxDatapointType_DPT_ALARM_INFO
+	case "DPT_16_BIT_SET":
+		return KnxDatapointType_DPT_16_BIT_SET
+	case "DPT_3X_2_BYTE_FLOAT_VALUE":
+		return KnxDatapointType_DPT_3X_2_BYTE_FLOAT_VALUE
+	case "DPT_SCALING_SPEED":
+		return KnxDatapointType_DPT_SCALING_SPEED
+	case "DPT_4_1_1_BYTE_COMBINED_INFORMATION":
+		return KnxDatapointType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
+	case "DPT_2_BIT_SET":
+		return KnxDatapointType_DPT_2_BIT_SET
+	case "DPT_MBUS_ADDRESS":
+		return KnxDatapointType_DPT_MBUS_ADDRESS
+	case "DPT_3_BYTE_COLOUR_RGB":
+		return KnxDatapointType_DPT_3_BYTE_COLOUR_RGB
+	case "DPT_LANGUAGE_CODE_ISO_639_1":
+		return KnxDatapointType_DPT_LANGUAGE_CODE_ISO_639_1
+	case "DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY":
+		return KnxDatapointType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
+	case "DPT_PRIORITISED_MODE_CONTROL":
+		return KnxDatapointType_DPT_PRIORITISED_MODE_CONTROL
+	case "DPT_CONFIGURATION_DIAGNOSTICS_16_BIT":
+		return KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
+	case "DPT_CONFIGURATION_DIAGNOSTICS_8_BIT":
+		return KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
+	case "DPT_POSITIONS":
+		return KnxDatapointType_DPT_POSITIONS
+	case "DPT_STATUS_32_BIT":
+		return KnxDatapointType_DPT_STATUS_32_BIT
+	case "DPT_STATUS_48_BIT":
+		return KnxDatapointType_DPT_STATUS_48_BIT
+	case "DPT_CONVERTER_STATUS":
+		return KnxDatapointType_DPT_CONVERTER_STATUS
+	case "DPT_CONVERTER_TEST_RESULT":
+		return KnxDatapointType_DPT_CONVERTER_TEST_RESULT
+	case "DPT_BATTERY_INFORMATION":
+		return KnxDatapointType_DPT_BATTERY_INFORMATION
+	case "DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION":
+		return KnxDatapointType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
+	case "DPT_2_NIBBLE_SET":
+		return KnxDatapointType_DPT_2_NIBBLE_SET
+	case "DPT_STATUS_24_BIT":
+		return KnxDatapointType_DPT_STATUS_24_BIT
+	case "DPT_COLOUR_RGBW":
+		return KnxDatapointType_DPT_COLOUR_RGBW
+	case "DPT_RELATIVE_CONTROL_RGBW":
+		return KnxDatapointType_DPT_RELATIVE_CONTROL_RGBW
+	case "DPT_RELATIVE_CONTROL_RGB":
+		return KnxDatapointType_DPT_RELATIVE_CONTROL_RGB
+	case "DPT_F32F32":
+		return KnxDatapointType_DPT_F32F32
+	case "DPT_8_BIT_SET_2":
+		return KnxDatapointType_DPT_8_BIT_SET_2
+	case "DPT_32_BIT_SET":
+		return KnxDatapointType_DPT_32_BIT_SET
+	case "DPT_F16F16F16F16":
+		return KnxDatapointType_DPT_F16F16F16F16
+	case "DPT_ELECTRICAL_ENERGY":
+		return KnxDatapointType_DPT_ELECTRICAL_ENERGY
+	case "DPT_3_BIT_CONTROLLED":
+		return KnxDatapointType_DPT_3_BIT_CONTROLLED
+	case "DPT_24_TIMES_CHANNEL_ACTIVATION":
+		return KnxDatapointType_DPT_24_TIMES_CHANNEL_ACTIVATION
+	case "DPT_CHARACTER":
+		return KnxDatapointType_DPT_CHARACTER
+	case "DPT_8_BIT_UNSIGNED_VALUE":
+		return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+	case "DPT_8_BIT_SIGNED_VALUE":
+		return KnxDatapointType_DPT_8_BIT_SIGNED_VALUE
+	case "DPT_2_BYTE_UNSIGNED_VALUE":
+		return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+	case "DPT_2_BYTE_SIGNED_VALUE":
+		return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+	case "DPT_2_BYTE_FLOAT_VALUE":
+		return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+	}
+	return 0
+}
+
 func CastKnxDatapointType(structType interface{}) KnxDatapointType {
 	castFunc := func(typ interface{}) KnxDatapointType {
 		if sKnxDatapointType, ok := typ.(KnxDatapointType); ok {
@@ -673,7 +787,7 @@ func KnxDatapointTypeParse(io *utils.ReadBuffer) (KnxDatapointType, error) {
 	if err != nil {
 		return 0, nil
 	}
-	return KnxDatapointTypeValueOf(val), nil
+	return KnxDatapointTypeByValue(val), nil
 }
 
 func (e KnxDatapointType) Serialize(io utils.WriteBuffer) error {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
index a913168..74c93ff 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
@@ -3725,7 +3725,7 @@ func (e KnxInterfaceObjectProperty) ObjectType() KnxInterfaceObjectType {
 		}
 	}
 }
-func KnxInterfaceObjectPropertyValueOf(value uint32) KnxInterfaceObjectProperty {
+func KnxInterfaceObjectPropertyByValue(value uint32) KnxInterfaceObjectProperty {
 	switch value {
 	case 11051:
 		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_PROJECT_INSTALLATION_ID
@@ -4161,6 +4161,442 @@ func KnxInterfaceObjectPropertyValueOf(value uint32) KnxInterfaceObjectProperty
 	return 0
 }
 
+func KnxInterfaceObjectPropertyByName(value string) KnxInterfaceObjectProperty {
+	switch value {
+	case "PID_KNXIP_PARAMETER_PROJECT_INSTALLATION_ID":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_PROJECT_INSTALLATION_ID
+	case "PID_KNXIP_PARAMETER_KNX_INDIVIDUAL_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_KNX_INDIVIDUAL_ADDRESS
+	case "PID_KNXIP_PARAMETER_ADDITIONAL_INDIVIDUAL_ADDRESSES":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_ADDITIONAL_INDIVIDUAL_ADDRESSES
+	case "PID_KNXIP_PARAMETER_CURRENT_IP_ASSIGNMENT_METHOD":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_CURRENT_IP_ASSIGNMENT_METHOD
+	case "PID_KNXIP_PARAMETER_IP_ASSIGNMENT_METHOD":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_IP_ASSIGNMENT_METHOD
+	case "PID_KNXIP_PARAMETER_IP_CAPABILITIES":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_IP_CAPABILITIES
+	case "PID_KNXIP_PARAMETER_CURRENT_IP_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_CURRENT_IP_ADDRESS
+	case "PID_KNXIP_PARAMETER_CURRENT_SUBNET_MASK":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_CURRENT_SUBNET_MASK
+	case "PID_KNXIP_PARAMETER_CURRENT_DEFAULT_GATEWAY":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_CURRENT_DEFAULT_GATEWAY
+	case "PID_KNXIP_PARAMETER_IP_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_IP_ADDRESS
+	case "PID_KNXIP_PARAMETER_SUBNET_MASK":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_SUBNET_MASK
+	case "PID_KNXIP_PARAMETER_DEFAULT_GATEWAY":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_DEFAULT_GATEWAY
+	case "PID_KNXIP_PARAMETER_DHCP_BOOTP_SERVER":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_DHCP_BOOTP_SERVER
+	case "PID_KNXIP_PARAMETER_MAC_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_MAC_ADDRESS
+	case "PID_KNXIP_PARAMETER_SYSTEM_SETUP_MULTICAST_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_SYSTEM_SETUP_MULTICAST_ADDRESS
+	case "PID_KNXIP_PARAMETER_ROUTING_MULTICAST_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_ROUTING_MULTICAST_ADDRESS
+	case "PID_KNXIP_PARAMETER_TTL":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_TTL
+	case "PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_CAPABILITIES":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_CAPABILITIES
+	case "PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_STATE":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_STATE
+	case "PID_KNXIP_PARAMETER_KNXNETIP_ROUTING_CAPABILITIES":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_KNXNETIP_ROUTING_CAPABILITIES
+	case "PID_KNXIP_PARAMETER_PRIORITY_FIFO_ENABLED":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_PRIORITY_FIFO_ENABLED
+	case "PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_IP":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_IP
+	case "PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_KNX":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_KNX
+	case "PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_IP":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_IP
+	case "PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_KNX":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_KNX
+	case "PID_KNXIP_PARAMETER_FRIENDLY_NAME":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_FRIENDLY_NAME
+	case "PID_KNXIP_PARAMETER_BACKBONE_KEY":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_BACKBONE_KEY
+	case "PID_KNXIP_PARAMETER_DEVICE_AUTHENTICATION_CODE":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_DEVICE_AUTHENTICATION_CODE
+	case "PID_KNXIP_PARAMETER_PASSWORD_HASHES":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_PASSWORD_HASHES
+	case "PID_KNXIP_PARAMETER_SECURED_SERVICE_FAMILIES":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_SECURED_SERVICE_FAMILIES
+	case "PID_KNXIP_PARAMETER_MULTICAST_LATENCY_TOLERANCE":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_MULTICAST_LATENCY_TOLERANCE
+	case "PID_KNXIP_PARAMETER_SYNC_LATENCY_FRACTION":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_SYNC_LATENCY_FRACTION
+	case "PID_KNXIP_PARAMETER_TUNNELLING_USERS":
+		return KnxInterfaceObjectProperty_PID_KNXIP_PARAMETER_TUNNELLING_USERS
+	case "PID_SECURITY_SECURITY_MODE":
+		return KnxInterfaceObjectProperty_PID_SECURITY_SECURITY_MODE
+	case "PID_SECURITY_P2P_KEY_TABLE":
+		return KnxInterfaceObjectProperty_PID_SECURITY_P2P_KEY_TABLE
+	case "PID_SECURITY_GRP_KEY_TABLE":
+		return KnxInterfaceObjectProperty_PID_SECURITY_GRP_KEY_TABLE
+	case "PID_SECURITY_SECURITY_INDIVIDUAL_ADDRESS_TABLE":
+		return KnxInterfaceObjectProperty_PID_SECURITY_SECURITY_INDIVIDUAL_ADDRESS_TABLE
+	case "PID_SECURITY_SECURITY_FAILURES_LOG":
+		return KnxInterfaceObjectProperty_PID_SECURITY_SECURITY_FAILURES_LOG
+	case "PID_SECURITY_SKI_TOOL":
+		return KnxInterfaceObjectProperty_PID_SECURITY_SKI_TOOL
+	case "PID_SECURITY_SECURITY_REPORT":
+		return KnxInterfaceObjectProperty_PID_SECURITY_SECURITY_REPORT
+	case "PID_SECURITY_SECURITY_REPORT_CONTROL":
+		return KnxInterfaceObjectProperty_PID_SECURITY_SECURITY_REPORT_CONTROL
+	case "PID_SECURITY_SEQUENCE_NUMBER_SENDING":
+		return KnxInterfaceObjectProperty_PID_SECURITY_SEQUENCE_NUMBER_SENDING
+	case "PID_SECURITY_ZONE_KEYS_TABLE":
+		return KnxInterfaceObjectProperty_PID_SECURITY_ZONE_KEYS_TABLE
+	case "PID_SECURITY_GO_SECURITY_FLAGS":
+		return KnxInterfaceObjectProperty_PID_SECURITY_GO_SECURITY_FLAGS
+	case "PID_RF_MEDIUM_RF_MULTI_TYPE":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_MULTI_TYPE
+	case "PID_RF_MEDIUM_RF_DOMAIN_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_DOMAIN_ADDRESS
+	case "PID_RF_MEDIUM_RF_RETRANSMITTER":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_RETRANSMITTER
+	case "PID_RF_MEDIUM_SECURITY_REPORT_CONTROL":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_SECURITY_REPORT_CONTROL
+	case "PID_RF_MEDIUM_RF_FILTERING_MODE_SELECT":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_FILTERING_MODE_SELECT
+	case "PID_RF_MEDIUM_RF_BIDIR_TIMEOUT":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_BIDIR_TIMEOUT
+	case "PID_RF_MEDIUM_RF_DIAG_SA_FILTER_TABLE":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_DIAG_SA_FILTER_TABLE
+	case "PID_RF_MEDIUM_RF_DIAG_QUALITY_TABLE":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_DIAG_QUALITY_TABLE
+	case "PID_RF_MEDIUM_RF_DIAG_PROBE":
+		return KnxInterfaceObjectProperty_PID_RF_MEDIUM_RF_DIAG_PROBE
+	case "PID_INDOOR_BRIGHTNESS_SENSOR_CHANGE_OF_VALUE":
+		return KnxInterfaceObjectProperty_PID_INDOOR_BRIGHTNESS_SENSOR_CHANGE_OF_VALUE
+	case "PID_INDOOR_BRIGHTNESS_SENSOR_REPETITION_TIME":
+		return KnxInterfaceObjectProperty_PID_INDOOR_BRIGHTNESS_SENSOR_REPETITION_TIME
+	case "PID_INDOOR_LUMINANCE_SENSOR_CHANGE_OF_VALUE":
+		return KnxInterfaceObjectProperty_PID_INDOOR_LUMINANCE_SENSOR_CHANGE_OF_VALUE
+	case "PID_INDOOR_LUMINANCE_SENSOR_REPETITION_TIME":
+		return KnxInterfaceObjectProperty_PID_INDOOR_LUMINANCE_SENSOR_REPETITION_TIME
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_ON_DELAY":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_ON_DELAY
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_OFF_DELAY":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_OFF_DELAY
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_DURATION":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_DURATION
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_PREWARNING_DURATION":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_PREWARNING_DURATION
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_OUTPUT_STATE":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_OUTPUT_STATE
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_LOCK_STATE":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_LOCK_STATE
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_UNLOCK_STATE":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_UNLOCK_STATE
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STATE_FOR_SCENE_NUMBER":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STATE_FOR_SCENE_NUMBER
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_STATE":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_STATE
+	case "PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_2":
+		return KnxInterfaceObjectProperty_PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_2
+	case "PID_DIMMING_ACTUATOR_BASIC_ON_DELAY":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_ON_DELAY
+	case "PID_DIMMING_ACTUATOR_BASIC_OFF_DELAY":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_OFF_DELAY
+	case "PID_DIMMING_ACTUATOR_BASIC_SWITCH_OFF_BRIGHTNESS_DELAY_TIME":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_SWITCH_OFF_BRIGHTNESS_DELAY_TIME
+	case "PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_DURATION":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_DURATION
+	case "PID_DIMMING_ACTUATOR_BASIC_PREWARNING_DURATION":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_PREWARNING_DURATION
+	case "PID_DIMMING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME
+	case "PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY
+	case "PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED
+	case "PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME
+	case "PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_ON_SET_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_ON_SET_VALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_OFF":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_OFF
+	case "PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_ON_SET_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_ON_SET_VALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_OFF":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_OFF
+	case "PID_DIMMING_ACTUATOR_BASIC_SWITCFH_OFF_BRIGHTNESS":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_SWITCFH_OFF_BRIGHTNESS
+	case "PID_DIMMING_ACTUATOR_BASIC_MINIMUM_SET_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_MINIMUM_SET_VALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_MAXIMUM_SET_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_MAXIMUM_SET_VALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_SWITCH_ON_SET_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_SWITCH_ON_SET_VALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_DIMM_MODE_SELECTION":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DIMM_MODE_SELECTION
+	case "PID_DIMMING_ACTUATOR_BASIC_RELATIV_OFF_ENABLE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_RELATIV_OFF_ENABLE
+	case "PID_DIMMING_ACTUATOR_BASIC_MEMORY_FUNCTION":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_MEMORY_FUNCTION
+	case "PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION
+	case "PID_DIMMING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE
+	case "PID_DIMMING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE
+	case "PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING
+	case "PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING
+	case "PID_DIMMING_ACTUATOR_BASIC_LOCK_SETVALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_LOCK_SETVALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_UNLOCK_SETVALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_UNLOCK_SETVALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_BIGHTNESS_FOR_SCENE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BIGHTNESS_FOR_SCENE
+	case "PID_DIMMING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE
+	case "PID_DIMMING_ACTUATOR_BASIC_DELTA_DIMMING_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_DELTA_DIMMING_VALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP
+	case "PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_SET_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_SET_VALUE
+	case "PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN
+	case "PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_DOWN_SET_VALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_DOWN_SET_VALUE
+	case "PID_DIMMING_SENSOR_BASIC_ON_OFF_ACTION":
+		return KnxInterfaceObjectProperty_PID_DIMMING_SENSOR_BASIC_ON_OFF_ACTION
+	case "PID_DIMMING_SENSOR_BASIC_ENABLE_TOGGLE_MODE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_SENSOR_BASIC_ENABLE_TOGGLE_MODE
+	case "PID_DIMMING_SENSOR_BASIC_ABSOLUTE_SETVALUE":
+		return KnxInterfaceObjectProperty_PID_DIMMING_SENSOR_BASIC_ABSOLUTE_SETVALUE
+	case "PID_SWITCHING_SENSOR_BASIC_ON_OFF_ACTION":
+		return KnxInterfaceObjectProperty_PID_SWITCHING_SENSOR_BASIC_ON_OFF_ACTION
+	case "PID_SWITCHING_SENSOR_BASIC_ENABLE_TOGGLE_MODE":
+		return KnxInterfaceObjectProperty_PID_SWITCHING_SENSOR_BASIC_ENABLE_TOGGLE_MODE
+	case "PID_DEVICE_ROUTING_COUNT":
+		return KnxInterfaceObjectProperty_PID_DEVICE_ROUTING_COUNT
+	case "PID_DEVICE_MAX_RETRY_COUNT":
+		return KnxInterfaceObjectProperty_PID_DEVICE_MAX_RETRY_COUNT
+	case "PID_DEVICE_ERROR_FLAGS":
+		return KnxInterfaceObjectProperty_PID_DEVICE_ERROR_FLAGS
+	case "PID_DEVICE_PROGMODE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PROGMODE
+	case "PID_DEVICE_PRODUCT_ID":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PRODUCT_ID
+	case "PID_DEVICE_MAX_APDULENGTH":
+		return KnxInterfaceObjectProperty_PID_DEVICE_MAX_APDULENGTH
+	case "PID_DEVICE_SUBNET_ADDR":
+		return KnxInterfaceObjectProperty_PID_DEVICE_SUBNET_ADDR
+	case "PID_DEVICE_DEVICE_ADDR":
+		return KnxInterfaceObjectProperty_PID_DEVICE_DEVICE_ADDR
+	case "PID_DEVICE_PB_CONFIG":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PB_CONFIG
+	case "PID_DEVICE_ADDR_REPORT":
+		return KnxInterfaceObjectProperty_PID_DEVICE_ADDR_REPORT
+	case "PID_ROUTER_LINE_STATUS":
+		return KnxInterfaceObjectProperty_PID_ROUTER_LINE_STATUS
+	case "PID_ROUTER_MAIN_LCCONFIG":
+		return KnxInterfaceObjectProperty_PID_ROUTER_MAIN_LCCONFIG
+	case "PID_ROUTER_SUB_LCCONFIG":
+		return KnxInterfaceObjectProperty_PID_ROUTER_SUB_LCCONFIG
+	case "PID_ROUTER_MAIN_LCGRPCONFIG":
+		return KnxInterfaceObjectProperty_PID_ROUTER_MAIN_LCGRPCONFIG
+	case "PID_ROUTER_SUB_LCGRPCONFIG":
+		return KnxInterfaceObjectProperty_PID_ROUTER_SUB_LCGRPCONFIG
+	case "PID_ROUTER_ROUTETABLE_CONTROL":
+		return KnxInterfaceObjectProperty_PID_ROUTER_ROUTETABLE_CONTROL
+	case "PID_ROUTER_COUPL_SERV_CONTROL":
+		return KnxInterfaceObjectProperty_PID_ROUTER_COUPL_SERV_CONTROL
+	case "PID_ROUTER_MAX_ROUTER_APDU_LENGTH":
+		return KnxInterfaceObjectProperty_PID_ROUTER_MAX_ROUTER_APDU_LENGTH
+	case "PID_ROUTER_MEDIUM":
+		return KnxInterfaceObjectProperty_PID_ROUTER_MEDIUM
+	case "PID_ROUTER_FILTER_TABLE_USE":
+		return KnxInterfaceObjectProperty_PID_ROUTER_FILTER_TABLE_USE
+	case "PID_DEVICE_ADDR_CHECK":
+		return KnxInterfaceObjectProperty_PID_DEVICE_ADDR_CHECK
+	case "PID_ROUTER_RF_ENABLE_SBC":
+		return KnxInterfaceObjectProperty_PID_ROUTER_RF_ENABLE_SBC
+	case "PID_DEVICE_OBJECT_VALUE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_OBJECT_VALUE
+	case "PID_DEVICE_OBJECTLINK":
+		return KnxInterfaceObjectProperty_PID_DEVICE_OBJECTLINK
+	case "PID_DEVICE_APPLICATION":
+		return KnxInterfaceObjectProperty_PID_DEVICE_APPLICATION
+	case "PID_DEVICE_PARAMETER":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PARAMETER
+	case "PID_GENERAL_OBJECT_TYPE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_OBJECT_TYPE
+	case "PID_GENERAL_OBJECT_NAME":
+		return KnxInterfaceObjectProperty_PID_GENERAL_OBJECT_NAME
+	case "PID_GENERAL_SEMAPHOR":
+		return KnxInterfaceObjectProperty_PID_GENERAL_SEMAPHOR
+	case "PID_GENERAL_GROUP_OBJECT_REFERENCE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_GROUP_OBJECT_REFERENCE
+	case "PID_GENERAL_LOAD_STATE_CONTROL":
+		return KnxInterfaceObjectProperty_PID_GENERAL_LOAD_STATE_CONTROL
+	case "PID_GENERAL_RUN_STATE_CONTROL":
+		return KnxInterfaceObjectProperty_PID_GENERAL_RUN_STATE_CONTROL
+	case "PID_GENERAL_TABLE_REFERENCE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_TABLE_REFERENCE
+	case "PID_GENERAL_SERVICE_CONTROL":
+		return KnxInterfaceObjectProperty_PID_GENERAL_SERVICE_CONTROL
+	case "PID_GENERAL_FIRMWARE_REVISION":
+		return KnxInterfaceObjectProperty_PID_GENERAL_FIRMWARE_REVISION
+	case "PID_GENERAL_SERVICES_SUPPORTED":
+		return KnxInterfaceObjectProperty_PID_GENERAL_SERVICES_SUPPORTED
+	case "PID_GENERAL_SERIAL_NUMBER":
+		return KnxInterfaceObjectProperty_PID_GENERAL_SERIAL_NUMBER
+	case "PID_GENERAL_MANUFACTURER_ID":
+		return KnxInterfaceObjectProperty_PID_GENERAL_MANUFACTURER_ID
+	case "PID_GENERAL_PROGRAM_VERSION":
+		return KnxInterfaceObjectProperty_PID_GENERAL_PROGRAM_VERSION
+	case "PID_GENERAL_DEVICE_CONTROL":
+		return KnxInterfaceObjectProperty_PID_GENERAL_DEVICE_CONTROL
+	case "PID_GENERAL_ORDER_INFO":
+		return KnxInterfaceObjectProperty_PID_GENERAL_ORDER_INFO
+	case "PID_GENERAL_PEI_TYPE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_PEI_TYPE
+	case "PID_GENERAL_PORT_CONFIGURATION":
+		return KnxInterfaceObjectProperty_PID_GENERAL_PORT_CONFIGURATION
+	case "PID_GENERAL_POLL_GROUP_SETTINGS":
+		return KnxInterfaceObjectProperty_PID_GENERAL_POLL_GROUP_SETTINGS
+	case "PID_GENERAL_MANUFACTURER_DATA":
+		return KnxInterfaceObjectProperty_PID_GENERAL_MANUFACTURER_DATA
+	case "PID_GENERAL_ENABLE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_ENABLE
+	case "PID_GENERAL_DESCRIPTION":
+		return KnxInterfaceObjectProperty_PID_GENERAL_DESCRIPTION
+	case "PID_GENERAL_FILE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_FILE
+	case "PID_GENERAL_TABLE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_TABLE
+	case "PID_GENERAL_ENROL":
+		return KnxInterfaceObjectProperty_PID_GENERAL_ENROL
+	case "PID_GENERAL_VERSION":
+		return KnxInterfaceObjectProperty_PID_GENERAL_VERSION
+	case "PID_GENERAL_GROUP_OBJECT_LINK":
+		return KnxInterfaceObjectProperty_PID_GENERAL_GROUP_OBJECT_LINK
+	case "PID_GENERAL_MCB_TABLE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_MCB_TABLE
+	case "PID_GENERAL_ERROR_CODE":
+		return KnxInterfaceObjectProperty_PID_GENERAL_ERROR_CODE
+	case "PID_GENERAL_OBJECT_INDEX":
+		return KnxInterfaceObjectProperty_PID_GENERAL_OBJECT_INDEX
+	case "PID_GENERAL_DOWNLOAD_COUNTER":
+		return KnxInterfaceObjectProperty_PID_GENERAL_DOWNLOAD_COUNTER
+	case "PID_DEVICE_OBJECTADDRESS":
+		return KnxInterfaceObjectProperty_PID_DEVICE_OBJECTADDRESS
+	case "PID_DEVICE_PSU_TYPE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PSU_TYPE
+	case "PID_DEVICE_PSU_STATUS":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PSU_STATUS
+	case "PID_DEVICE_PSU_ENABLE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PSU_ENABLE
+	case "PID_DEVICE_DOMAIN_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_DEVICE_DOMAIN_ADDRESS
+	case "PID_DEVICE_IO_LIST":
+		return KnxInterfaceObjectProperty_PID_DEVICE_IO_LIST
+	case "PID_DEVICE_MGT_DESCRIPTOR_01":
+		return KnxInterfaceObjectProperty_PID_DEVICE_MGT_DESCRIPTOR_01
+	case "PID_DEVICE_PL110_PARAM":
+		return KnxInterfaceObjectProperty_PID_DEVICE_PL110_PARAM
+	case "PID_DEVICE_RF_REPEAT_COUNTER":
+		return KnxInterfaceObjectProperty_PID_DEVICE_RF_REPEAT_COUNTER
+	case "PID_DEVICE_RECEIVE_BLOCK_TABLE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_RECEIVE_BLOCK_TABLE
+	case "PID_DEVICE_RANDOM_PAUSE_TABLE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_RANDOM_PAUSE_TABLE
+	case "PID_DEVICE_RECEIVE_BLOCK_NR":
+		return KnxInterfaceObjectProperty_PID_DEVICE_RECEIVE_BLOCK_NR
+	case "PID_DEVICE_HARDWARE_TYPE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_HARDWARE_TYPE
+	case "PID_DEVICE_RETRANSMITTER_NUMBER":
+		return KnxInterfaceObjectProperty_PID_DEVICE_RETRANSMITTER_NUMBER
+	case "PID_DEVICE_SERIAL_NR_TABLE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_SERIAL_NR_TABLE
+	case "PID_SUNBLIND_ACTUATOR_BASIC_REVERSION_PAUSE_TIME":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_REVERSION_PAUSE_TIME
+	case "PID_SUNBLIND_ACTUATOR_BASIC_MOVE_UP_DOWN_TIME":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_MOVE_UP_DOWN_TIME
+	case "PID_SUNBLIND_ACTUATOR_BASIC_SLAT_STEP_TIME":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_SLAT_STEP_TIME
+	case "PID_SUNBLIND_ACTUATOR_BASIC_MOVE_PRESET_POSITION_TIME":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_MOVE_PRESET_POSITION_TIME
+	case "PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_IN_PERCENT":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_IN_PERCENT
+	case "PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_LENGTH":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_LENGTH
+	case "PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_PERCENT":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_PERCENT
+	case "PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_ANGLE":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_ANGLE
+	case "PID_SUNBLIND_ACTUATOR_BASIC_REACTION_WIND_ALARM":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_REACTION_WIND_ALARM
+	case "PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_WIND_ALARM":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_WIND_ALARM
+	case "PID_SUNBLIND_ACTUATOR_BASIC_REACTION_ON_RAIN_ALARM":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_REACTION_ON_RAIN_ALARM
+	case "PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_RAIN_ALARM":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_RAIN_ALARM
+	case "PID_SUNBLIND_ACTUATOR_BASIC_REACTION_FROST_ALARM":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_REACTION_FROST_ALARM
+	case "PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_FROST_ALARM":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_FROST_ALARM
+	case "PID_SUNBLIND_ACTUATOR_BASIC_MAX_SLAT_MOVE_TIME":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_MAX_SLAT_MOVE_TIME
+	case "PID_SUNBLIND_ACTUATOR_BASIC_ENABLE_BLINDS_MODE":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_ENABLE_BLINDS_MODE
+	case "PID_SUNBLIND_ACTUATOR_BASIC_STORAGE_FUNCTIONS_FOR_SCENE":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_ACTUATOR_BASIC_STORAGE_FUNCTIONS_FOR_SCENE
+	case "PID_SUNBLIND_SENSOR_BASIC_ENABLE_BLINDS_MODE":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_SENSOR_BASIC_ENABLE_BLINDS_MODE
+	case "PID_SUNBLIND_SENSOR_BASIC_UP_DOWN_ACTION":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_SENSOR_BASIC_UP_DOWN_ACTION
+	case "PID_SUNBLIND_SENSOR_BASIC_ENABLE_TOGGLE_MODE":
+		return KnxInterfaceObjectProperty_PID_SUNBLIND_SENSOR_BASIC_ENABLE_TOGGLE_MODE
+	case "PID_DEVICE_BIBATMASTER_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_DEVICE_BIBATMASTER_ADDRESS
+	case "PID_DEVICE_RF_DOMAIN_ADDRESS":
+		return KnxInterfaceObjectProperty_PID_DEVICE_RF_DOMAIN_ADDRESS
+	case "PID_DEVICE_DEVICE_DESCRIPTOR":
+		return KnxInterfaceObjectProperty_PID_DEVICE_DEVICE_DESCRIPTOR
+	case "PID_DEVICE_METERING_FILTER_TABLE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_METERING_FILTER_TABLE
+	case "PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_TIME_BASE":
+		return KnxInterfaceObjectProperty_PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_TIME_BASE
+	case "PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_NO_OF_TELEGR":
+		return KnxInterfaceObjectProperty_PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_NO_OF_TELEGR
+	case "PID_GROUP_OBJECT_TABLE_GRPOBJTABLE":
+		return KnxInterfaceObjectProperty_PID_GROUP_OBJECT_TABLE_GRPOBJTABLE
+	case "PID_GROUP_OBJECT_TABLE_EXT_GRPOBJREFERENCE":
+		return KnxInterfaceObjectProperty_PID_GROUP_OBJECT_TABLE_EXT_GRPOBJREFERENCE
+	}
+	return 0
+}
+
 func CastKnxInterfaceObjectProperty(structType interface{}) KnxInterfaceObjectProperty {
 	castFunc := func(typ interface{}) KnxInterfaceObjectProperty {
 		if sKnxInterfaceObjectProperty, ok := typ.(KnxInterfaceObjectProperty); ok {
@@ -4184,7 +4620,7 @@ func KnxInterfaceObjectPropertyParse(io *utils.ReadBuffer) (KnxInterfaceObjectPr
 	if err != nil {
 		return 0, nil
 	}
-	return KnxInterfaceObjectPropertyValueOf(val), nil
+	return KnxInterfaceObjectPropertyByValue(val), nil
 }
 
 func (e KnxInterfaceObjectProperty) Serialize(io utils.WriteBuffer) error {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
index cd224ac..61ac52e 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectType.go
@@ -160,7 +160,7 @@ func (e KnxInterfaceObjectType) Text() string {
 		}
 	}
 }
-func KnxInterfaceObjectTypeValueOf(value uint16) KnxInterfaceObjectType {
+func KnxInterfaceObjectTypeByValue(value uint16) KnxInterfaceObjectType {
 	switch value {
 	case 0:
 		return KnxInterfaceObjectType_OT_DEVICE
@@ -214,6 +214,60 @@ func KnxInterfaceObjectTypeValueOf(value uint16) KnxInterfaceObjectType {
 	return 0
 }
 
+func KnxInterfaceObjectTypeByName(value string) KnxInterfaceObjectType {
+	switch value {
+	case "OT_DEVICE":
+		return KnxInterfaceObjectType_OT_DEVICE
+	case "OT_ADDRESS_TABLE":
+		return KnxInterfaceObjectType_OT_ADDRESS_TABLE
+	case "OT_POLLING_MASTER":
+		return KnxInterfaceObjectType_OT_POLLING_MASTER
+	case "OT_KNXIP_PARAMETER":
+		return KnxInterfaceObjectType_OT_KNXIP_PARAMETER
+	case "OT_FILE_SERVER":
+		return KnxInterfaceObjectType_OT_FILE_SERVER
+	case "OT_SECURITY":
+		return KnxInterfaceObjectType_OT_SECURITY
+	case "OT_RF_MEDIUM":
+		return KnxInterfaceObjectType_OT_RF_MEDIUM
+	case "OT_ASSOCIATION_TABLE":
+		return KnxInterfaceObjectType_OT_ASSOCIATION_TABLE
+	case "OT_APPLICATION_PROGRAM":
+		return KnxInterfaceObjectType_OT_APPLICATION_PROGRAM
+	case "OT_INTERACE_PROGRAM":
+		return KnxInterfaceObjectType_OT_INTERACE_PROGRAM
+	case "OT_INDOOR_BRIGHTNESS_SENSOR":
+		return KnxInterfaceObjectType_OT_INDOOR_BRIGHTNESS_SENSOR
+	case "OT_INDOOR_LUMINANCE_SENSOR":
+		return KnxInterfaceObjectType_OT_INDOOR_LUMINANCE_SENSOR
+	case "OT_LIGHT_SWITCHING_ACTUATOR_BASIC":
+		return KnxInterfaceObjectType_OT_LIGHT_SWITCHING_ACTUATOR_BASIC
+	case "OT_DIMMING_ACTUATOR_BASIC":
+		return KnxInterfaceObjectType_OT_DIMMING_ACTUATOR_BASIC
+	case "OT_DIMMING_SENSOR_BASIC":
+		return KnxInterfaceObjectType_OT_DIMMING_SENSOR_BASIC
+	case "OT_SWITCHING_SENSOR_BASIC":
+		return KnxInterfaceObjectType_OT_SWITCHING_SENSOR_BASIC
+	case "OT_EIBOBJECT_ASSOCIATATION_TABLE":
+		return KnxInterfaceObjectType_OT_EIBOBJECT_ASSOCIATATION_TABLE
+	case "OT_ROUTER":
+		return KnxInterfaceObjectType_OT_ROUTER
+	case "OT_GENERAL":
+		return KnxInterfaceObjectType_OT_GENERAL
+	case "OT_LTE_ADDRESS_ROUTING_TABLE":
+		return KnxInterfaceObjectType_OT_LTE_ADDRESS_ROUTING_TABLE
+	case "OT_CEMI_SERVER":
+		return KnxInterfaceObjectType_OT_CEMI_SERVER
+	case "OT_SUNBLIND_ACTUATOR_BASIC":
+		return KnxInterfaceObjectType_OT_SUNBLIND_ACTUATOR_BASIC
+	case "OT_SUNBLIND_SENSOR_BASIC":
+		return KnxInterfaceObjectType_OT_SUNBLIND_SENSOR_BASIC
+	case "OT_GROUP_OBJECT_TABLE":
+		return KnxInterfaceObjectType_OT_GROUP_OBJECT_TABLE
+	}
+	return 0
+}
+
 func CastKnxInterfaceObjectType(structType interface{}) KnxInterfaceObjectType {
 	castFunc := func(typ interface{}) KnxInterfaceObjectType {
 		if sKnxInterfaceObjectType, ok := typ.(KnxInterfaceObjectType); ok {
@@ -237,7 +291,7 @@ func KnxInterfaceObjectTypeParse(io *utils.ReadBuffer) (KnxInterfaceObjectType,
 	if err != nil {
 		return 0, nil
 	}
-	return KnxInterfaceObjectTypeValueOf(val), nil
+	return KnxInterfaceObjectTypeByValue(val), nil
 }
 
 func (e KnxInterfaceObjectType) Serialize(io utils.WriteBuffer) error {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
index d72fbfe..c4725cd 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
@@ -19,72 +19,84 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type KnxLayer uint8
 
 type IKnxLayer interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    KnxLayer_TUNNEL_LINK_LAYER KnxLayer = 0x02
-    KnxLayer_TUNNEL_RAW KnxLayer = 0x04
-    KnxLayer_TUNNEL_BUSMONITOR KnxLayer = 0x80
+const (
+	KnxLayer_TUNNEL_LINK_LAYER KnxLayer = 0x02
+	KnxLayer_TUNNEL_RAW        KnxLayer = 0x04
+	KnxLayer_TUNNEL_BUSMONITOR KnxLayer = 0x80
 )
 
-func KnxLayerValueOf(value uint8) KnxLayer {
-    switch value {
-        case 0x02:
-            return KnxLayer_TUNNEL_LINK_LAYER
-        case 0x04:
-            return KnxLayer_TUNNEL_RAW
-        case 0x80:
-            return KnxLayer_TUNNEL_BUSMONITOR
-    }
-    return 0
+func KnxLayerByValue(value uint8) KnxLayer {
+	switch value {
+	case 0x02:
+		return KnxLayer_TUNNEL_LINK_LAYER
+	case 0x04:
+		return KnxLayer_TUNNEL_RAW
+	case 0x80:
+		return KnxLayer_TUNNEL_BUSMONITOR
+	}
+	return 0
+}
+
+func KnxLayerByName(value string) KnxLayer {
+	switch value {
+	case "TUNNEL_LINK_LAYER":
+		return KnxLayer_TUNNEL_LINK_LAYER
+	case "TUNNEL_RAW":
+		return KnxLayer_TUNNEL_RAW
+	case "TUNNEL_BUSMONITOR":
+		return KnxLayer_TUNNEL_BUSMONITOR
+	}
+	return 0
 }
 
 func CastKnxLayer(structType interface{}) KnxLayer {
-    castFunc := func(typ interface{}) KnxLayer {
-        if sKnxLayer, ok := typ.(KnxLayer); ok {
-            return sKnxLayer
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) KnxLayer {
+		if sKnxLayer, ok := typ.(KnxLayer); ok {
+			return sKnxLayer
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m KnxLayer) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m KnxLayer) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func KnxLayerParse(io *utils.ReadBuffer) (KnxLayer, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return KnxLayerValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return KnxLayerByValue(val), nil
 }
 
 func (e KnxLayer) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e KnxLayer) String() string {
-    switch e {
-    case KnxLayer_TUNNEL_LINK_LAYER:
-        return "TUNNEL_LINK_LAYER"
-    case KnxLayer_TUNNEL_RAW:
-        return "TUNNEL_RAW"
-    case KnxLayer_TUNNEL_BUSMONITOR:
-        return "TUNNEL_BUSMONITOR"
-    }
-    return ""
+	switch e {
+	case KnxLayer_TUNNEL_LINK_LAYER:
+		return "TUNNEL_LINK_LAYER"
+	case KnxLayer_TUNNEL_RAW:
+		return "TUNNEL_RAW"
+	case KnxLayer_TUNNEL_BUSMONITOR:
+		return "TUNNEL_BUSMONITOR"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
index 8e97dc8..074cfac 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxManufacturer.go
@@ -2725,7 +2725,7 @@ func (e KnxManufacturer) Text() string {
 		}
 	}
 }
-func KnxManufacturerValueOf(value uint16) KnxManufacturer {
+func KnxManufacturerByValue(value uint16) KnxManufacturer {
 	switch value {
 	case 1:
 		return KnxManufacturer_SIEMENS
@@ -3805,6 +3805,1086 @@ func KnxManufacturerValueOf(value uint16) KnxManufacturer {
 	return 0
 }
 
+func KnxManufacturerByName(value string) KnxManufacturer {
+	switch value {
+	case "SIEMENS":
+		return KnxManufacturer_SIEMENS
+	case "INSTA_GMBH":
+		return KnxManufacturer_INSTA_GMBH
+	case "SCHNEIDER_ELECTRIC_INDUSTRIES_SAS":
+		return KnxManufacturer_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS
+	case "WHD_WILHELM_HUBER_Plus_SOEHNE":
+		return KnxManufacturer_WHD_WILHELM_HUBER_Plus_SOEHNE
+	case "BISCHOFF_ELEKTRONIK":
+		return KnxManufacturer_BISCHOFF_ELEKTRONIK
+	case "JEPAZ":
+		return KnxManufacturer_JEPAZ
+	case "RTS_AUTOMATION":
+		return KnxManufacturer_RTS_AUTOMATION
+	case "EIBMARKT_GMBH":
+		return KnxManufacturer_EIBMARKT_GMBH
+	case "WAREMA_RENKHOFF_SE":
+		return KnxManufacturer_WAREMA_RENKHOFF_SE
+	case "EELECTRON":
+		return KnxManufacturer_EELECTRON
+	case "BELDEN_WIRE_AND_CABLE_B_V_":
+		return KnxManufacturer_BELDEN_WIRE_AND_CABLE_B_V_
+	case "LEGRAND_APPAREILLAGE_ELECTRIQUE":
+		return KnxManufacturer_LEGRAND_APPAREILLAGE_ELECTRIQUE
+	case "BECKER_ANTRIEBE_GMBH":
+		return KnxManufacturer_BECKER_ANTRIEBE_GMBH
+	case "J_STEHLEPlusSOEHNE_GMBH":
+		return KnxManufacturer_J_STEHLEPlusSOEHNE_GMBH
+	case "AGFEO":
+		return KnxManufacturer_AGFEO
+	case "ZENNIO":
+		return KnxManufacturer_ZENNIO
+	case "TAPKO_TECHNOLOGIES":
+		return KnxManufacturer_TAPKO_TECHNOLOGIES
+	case "HDL":
+		return KnxManufacturer_HDL
+	case "UPONOR":
+		return KnxManufacturer_UPONOR
+	case "SE_LIGHTMANAGEMENT_AG":
+		return KnxManufacturer_SE_LIGHTMANAGEMENT_AG
+	case "ARCUS_EDS":
+		return KnxManufacturer_ARCUS_EDS
+	case "INTESIS":
+		return KnxManufacturer_INTESIS
+	case "MERTEN":
+		return KnxManufacturer_MERTEN
+	case "HERHOLDT_CONTROLS_SRL":
+		return KnxManufacturer_HERHOLDT_CONTROLS_SRL
+	case "NIKO_ZUBLIN":
+		return KnxManufacturer_NIKO_ZUBLIN
+	case "DURABLE_TECHNOLOGIES":
+		return KnxManufacturer_DURABLE_TECHNOLOGIES
+	case "INNOTEAM":
+		return KnxManufacturer_INNOTEAM
+	case "ISE_GMBH":
+		return KnxManufacturer_ISE_GMBH
+	case "TEAM_FOR_TRONICS":
+		return KnxManufacturer_TEAM_FOR_TRONICS
+	case "CIAT":
+		return KnxManufacturer_CIAT
+	case "REMEHA_BV":
+		return KnxManufacturer_REMEHA_BV
+	case "ESYLUX":
+		return KnxManufacturer_ESYLUX
+	case "BASALTE":
+		return KnxManufacturer_BASALTE
+	case "VESTAMATIC":
+		return KnxManufacturer_VESTAMATIC
+	case "MDT_TECHNOLOGIES":
+		return KnxManufacturer_MDT_TECHNOLOGIES
+	case "WARENDORFER_KUECHEN_GMBH":
+		return KnxManufacturer_WARENDORFER_KUECHEN_GMBH
+	case "VIDEO_STAR":
+		return KnxManufacturer_VIDEO_STAR
+	case "SITEK":
+		return KnxManufacturer_SITEK
+	case "CONTROLTRONIC":
+		return KnxManufacturer_CONTROLTRONIC
+	case "FUNCTION_TECHNOLOGY":
+		return KnxManufacturer_FUNCTION_TECHNOLOGY
+	case "AMX":
+		return KnxManufacturer_AMX
+	case "ELDAT":
+		return KnxManufacturer_ELDAT
+	case "PANASONIC":
+		return KnxManufacturer_PANASONIC
+	case "ABB_SPA_SACE_DIVISION":
+		return KnxManufacturer_ABB_SPA_SACE_DIVISION
+	case "PULSE_TECHNOLOGIES":
+		return KnxManufacturer_PULSE_TECHNOLOGIES
+	case "CRESTRON":
+		return KnxManufacturer_CRESTRON
+	case "STEINEL_PROFESSIONAL":
+		return KnxManufacturer_STEINEL_PROFESSIONAL
+	case "BILTON_LED_LIGHTING":
+		return KnxManufacturer_BILTON_LED_LIGHTING
+	case "DENRO_AG":
+		return KnxManufacturer_DENRO_AG
+	case "GEPRO":
+		return KnxManufacturer_GEPRO
+	case "PREUSSEN_AUTOMATION":
+		return KnxManufacturer_PREUSSEN_AUTOMATION
+	case "ZOPPAS_INDUSTRIES":
+		return KnxManufacturer_ZOPPAS_INDUSTRIES
+	case "MACTECH":
+		return KnxManufacturer_MACTECH
+	case "TECHNO_TREND":
+		return KnxManufacturer_TECHNO_TREND
+	case "FS_CABLES":
+		return KnxManufacturer_FS_CABLES
+	case "DELTA_DORE":
+		return KnxManufacturer_DELTA_DORE
+	case "EISSOUND":
+		return KnxManufacturer_EISSOUND
+	case "CISCO":
+		return KnxManufacturer_CISCO
+	case "DINUY":
+		return KnxManufacturer_DINUY
+	case "IKNIX":
+		return KnxManufacturer_IKNIX
+	case "RADEMACHER_GERAETE_ELEKTRONIK_GMBH":
+		return KnxManufacturer_RADEMACHER_GERAETE_ELEKTRONIK_GMBH
+	case "EGI_ELECTROACUSTICA_GENERAL_IBERICA":
+		return KnxManufacturer_EGI_ELECTROACUSTICA_GENERAL_IBERICA
+	case "BES___INGENIUM":
+		return KnxManufacturer_BES___INGENIUM
+	case "ELABNET":
+		return KnxManufacturer_ELABNET
+	case "BLUMOTIX":
+		return KnxManufacturer_BLUMOTIX
+	case "HUNTER_DOUGLAS":
+		return KnxManufacturer_HUNTER_DOUGLAS
+	case "APRICUM":
+		return KnxManufacturer_APRICUM
+	case "TIANSU_AUTOMATION":
+		return KnxManufacturer_TIANSU_AUTOMATION
+	case "BUBENDORFF":
+		return KnxManufacturer_BUBENDORFF
+	case "MBS_GMBH":
+		return KnxManufacturer_MBS_GMBH
+	case "ENERTEX_BAYERN_GMBH":
+		return KnxManufacturer_ENERTEX_BAYERN_GMBH
+	case "BMS":
+		return KnxManufacturer_BMS
+	case "SINAPSI":
+		return KnxManufacturer_SINAPSI
+	case "EMBEDDED_SYSTEMS_SIA":
+		return KnxManufacturer_EMBEDDED_SYSTEMS_SIA
+	case "KNX1":
+		return KnxManufacturer_KNX1
+	case "TOKKA":
+		return KnxManufacturer_TOKKA
+	case "NANOSENSE":
+		return KnxManufacturer_NANOSENSE
+	case "PEAR_AUTOMATION_GMBH":
+		return KnxManufacturer_PEAR_AUTOMATION_GMBH
+	case "DGA":
+		return KnxManufacturer_DGA
+	case "LUTRON":
+		return KnxManufacturer_LUTRON
+	case "AIRZONE___ALTRA":
+		return KnxManufacturer_AIRZONE___ALTRA
+	case "LITHOSS_DESIGN_SWITCHES":
+		return KnxManufacturer_LITHOSS_DESIGN_SWITCHES
+	case "3ATEL":
+		return KnxManufacturer_3ATEL
+	case "PHILIPS_CONTROLS":
+		return KnxManufacturer_PHILIPS_CONTROLS
+	case "VELUX_AS":
+		return KnxManufacturer_VELUX_AS
+	case "LOYTEC":
+		return KnxManufacturer_LOYTEC
+	case "EKINEX_S_P_A_":
+		return KnxManufacturer_EKINEX_S_P_A_
+	case "SIRLAN_TECHNOLOGIES":
+		return KnxManufacturer_SIRLAN_TECHNOLOGIES
+	case "PROKNX_SAS":
+		return KnxManufacturer_PROKNX_SAS
+	case "IT_GMBH":
+		return KnxManufacturer_IT_GMBH
+	case "RENSON":
+		return KnxManufacturer_RENSON
+	case "HEP_GROUP":
+		return KnxManufacturer_HEP_GROUP
+	case "BALMART":
+		return KnxManufacturer_BALMART
+	case "GFS_GMBH":
+		return KnxManufacturer_GFS_GMBH
+	case "SCHENKER_STOREN_AG":
+		return KnxManufacturer_SCHENKER_STOREN_AG
+	case "ALGODUE_ELETTRONICA_S_R_L_":
+		return KnxManufacturer_ALGODUE_ELETTRONICA_S_R_L_
+	case "ABB_FRANCE":
+		return KnxManufacturer_ABB_FRANCE
+	case "MAINTRONIC":
+		return KnxManufacturer_MAINTRONIC
+	case "VANTAGE":
+		return KnxManufacturer_VANTAGE
+	case "FORESIS":
+		return KnxManufacturer_FORESIS
+	case "RESEARCH_AND_PRODUCTION_ASSOCIATION_SEM":
+		return KnxManufacturer_RESEARCH_AND_PRODUCTION_ASSOCIATION_SEM
+	case "WEINZIERL_ENGINEERING_GMBH":
+		return KnxManufacturer_WEINZIERL_ENGINEERING_GMBH
+	case "MOEHLENHOFF_WAERMETECHNIK_GMBH":
+		return KnxManufacturer_MOEHLENHOFF_WAERMETECHNIK_GMBH
+	case "PKC_GROUP_OYJ":
+		return KnxManufacturer_PKC_GROUP_OYJ
+	case "ABB":
+		return KnxManufacturer_ABB
+	case "B_E_G_":
+		return KnxManufacturer_B_E_G_
+	case "ELSNER_ELEKTRONIK_GMBH":
+		return KnxManufacturer_ELSNER_ELEKTRONIK_GMBH
+	case "SIEMENS_BUILDING_TECHNOLOGIES_HKCHINA_LTD_":
+		return KnxManufacturer_SIEMENS_BUILDING_TECHNOLOGIES_HKCHINA_LTD_
+	case "EUTRAC":
+		return KnxManufacturer_EUTRAC
+	case "GUSTAV_HENSEL_GMBH_AND_CO__KG":
+		return KnxManufacturer_GUSTAV_HENSEL_GMBH_AND_CO__KG
+	case "GARO_AB":
+		return KnxManufacturer_GARO_AB
+	case "WALDMANN_LICHTTECHNIK":
+		return KnxManufacturer_WALDMANN_LICHTTECHNIK
+	case "SCHUECO":
+		return KnxManufacturer_SCHUECO
+	case "EMU":
+		return KnxManufacturer_EMU
+	case "JNET_SYSTEMS_AG":
+		return KnxManufacturer_JNET_SYSTEMS_AG
+	case "TOTAL_SOLUTION_GMBH":
+		return KnxManufacturer_TOTAL_SOLUTION_GMBH
+	case "O_Y_L__ELECTRONICS":
+		return KnxManufacturer_O_Y_L__ELECTRONICS
+	case "GALAX_SYSTEM":
+		return KnxManufacturer_GALAX_SYSTEM
+	case "DISCH":
+		return KnxManufacturer_DISCH
+	case "AUCOTEAM":
+		return KnxManufacturer_AUCOTEAM
+	case "LUXMATE_CONTROLS":
+		return KnxManufacturer_LUXMATE_CONTROLS
+	case "DANFOSS":
+		return KnxManufacturer_DANFOSS
+	case "SIEDLE_AND_SOEHNE":
+		return KnxManufacturer_SIEDLE_AND_SOEHNE
+	case "AST_GMBH":
+		return KnxManufacturer_AST_GMBH
+	case "WILA_LEUCHTEN":
+		return KnxManufacturer_WILA_LEUCHTEN
+	case "BPlusB_AUTOMATIONS__UND_STEUERUNGSTECHNIK":
+		return KnxManufacturer_BPlusB_AUTOMATIONS__UND_STEUERUNGSTECHNIK
+	case "LINGG_AND_JANKE":
+		return KnxManufacturer_LINGG_AND_JANKE
+	case "SAUTER":
+		return KnxManufacturer_SAUTER
+	case "SIMU":
+		return KnxManufacturer_SIMU
+	case "THEBEN_HTS_AG":
+		return KnxManufacturer_THEBEN_HTS_AG
+	case "AMANN_GMBH":
+		return KnxManufacturer_AMANN_GMBH
+	case "BERG_ENERGIEKONTROLLSYSTEME_GMBH":
+		return KnxManufacturer_BERG_ENERGIEKONTROLLSYSTEME_GMBH
+	case "HUEPPE_FORM_SONNENSCHUTZSYSTEME_GMBH":
+		return KnxManufacturer_HUEPPE_FORM_SONNENSCHUTZSYSTEME_GMBH
+	case "OVENTROP_KG":
+		return KnxManufacturer_OVENTROP_KG
+	case "GRIESSER_AG":
+		return KnxManufacturer_GRIESSER_AG
+	case "IPAS_GMBH":
+		return KnxManufacturer_IPAS_GMBH
+	case "EBERLE":
+		return KnxManufacturer_EBERLE
+	case "ELERO_GMBH":
+		return KnxManufacturer_ELERO_GMBH
+	case "ARDAN_PRODUCTION_AND_INDUSTRIAL_CONTROLS_LTD_":
+		return KnxManufacturer_ARDAN_PRODUCTION_AND_INDUSTRIAL_CONTROLS_LTD_
+	case "METEC_MESSTECHNIK_GMBH":
+		return KnxManufacturer_METEC_MESSTECHNIK_GMBH
+	case "ELKA_ELEKTRONIK_GMBH":
+		return KnxManufacturer_ELKA_ELEKTRONIK_GMBH
+	case "ELEKTROANLAGEN_D__NAGEL":
+		return KnxManufacturer_ELEKTROANLAGEN_D__NAGEL
+	case "TRIDONIC_BAUELEMENTE_GMBH":
+		return KnxManufacturer_TRIDONIC_BAUELEMENTE_GMBH
+	case "STENGLER_GESELLSCHAFT":
+		return KnxManufacturer_STENGLER_GESELLSCHAFT
+	case "SCHNEIDER_ELECTRIC_MG":
+		return KnxManufacturer_SCHNEIDER_ELECTRIC_MG
+	case "GEWISS":
+		return KnxManufacturer_GEWISS
+	case "KNX_ASSOCIATION":
+		return KnxManufacturer_KNX_ASSOCIATION
+	case "VIVO":
+		return KnxManufacturer_VIVO
+	case "HUGO_MUELLER_GMBH_AND_CO_KG":
+		return KnxManufacturer_HUGO_MUELLER_GMBH_AND_CO_KG
+	case "SIEMENS_HVAC":
+		return KnxManufacturer_SIEMENS_HVAC
+	case "APT":
+		return KnxManufacturer_APT
+	case "HIGHDOM":
+		return KnxManufacturer_HIGHDOM
+	case "TOP_SERVICES":
+		return KnxManufacturer_TOP_SERVICES
+	case "AMBIHOME":
+		return KnxManufacturer_AMBIHOME
+	case "DATEC_ELECTRONIC_AG":
+		return KnxManufacturer_DATEC_ELECTRONIC_AG
+	case "ABUS_SECURITY_CENTER":
+		return KnxManufacturer_ABUS_SECURITY_CENTER
+	case "LITE_PUTER":
+		return KnxManufacturer_LITE_PUTER
+	case "TANTRON_ELECTRONIC":
+		return KnxManufacturer_TANTRON_ELECTRONIC
+	case "INTERRA":
+		return KnxManufacturer_INTERRA
+	case "DKX_TECH":
+		return KnxManufacturer_DKX_TECH
+	case "VIATRON":
+		return KnxManufacturer_VIATRON
+	case "NAUTIBUS":
+		return KnxManufacturer_NAUTIBUS
+	case "ON_SEMICONDUCTOR":
+		return KnxManufacturer_ON_SEMICONDUCTOR
+	case "LONGCHUANG":
+		return KnxManufacturer_LONGCHUANG
+	case "AIR_ON_AG":
+		return KnxManufacturer_AIR_ON_AG
+	case "ALBERT_ACKERMANN":
+		return KnxManufacturer_ALBERT_ACKERMANN
+	case "IB_COMPANY_GMBH":
+		return KnxManufacturer_IB_COMPANY_GMBH
+	case "SATION_FACTORY":
+		return KnxManufacturer_SATION_FACTORY
+	case "AGENTILO_GMBH":
+		return KnxManufacturer_AGENTILO_GMBH
+	case "MAKEL_ELEKTRIK":
+		return KnxManufacturer_MAKEL_ELEKTRIK
+	case "HELIOS_VENTILATOREN":
+		return KnxManufacturer_HELIOS_VENTILATOREN
+	case "OTTO_SOLUTIONS_PTE_LTD":
+		return KnxManufacturer_OTTO_SOLUTIONS_PTE_LTD
+	case "AIRMASTER":
+		return KnxManufacturer_AIRMASTER
+	case "VALLOX_GMBH":
+		return KnxManufacturer_VALLOX_GMBH
+	case "DALITEK":
+		return KnxManufacturer_DALITEK
+	case "ASIN":
+		return KnxManufacturer_ASIN
+	case "SCHUPA_GMBH":
+		return KnxManufacturer_SCHUPA_GMBH
+	case "BRIDGES_INTELLIGENCE_TECHNOLOGY_INC_":
+		return KnxManufacturer_BRIDGES_INTELLIGENCE_TECHNOLOGY_INC_
+	case "ARBONIA":
+		return KnxManufacturer_ARBONIA
+	case "KERMI":
+		return KnxManufacturer_KERMI
+	case "PROLUX":
+		return KnxManufacturer_PROLUX
+	case "CLICHOME":
+		return KnxManufacturer_CLICHOME
+	case "COMMAX":
+		return KnxManufacturer_COMMAX
+	case "EAE":
+		return KnxManufacturer_EAE
+	case "TENSE":
+		return KnxManufacturer_TENSE
+	case "SEYOUNG_ELECTRONICS":
+		return KnxManufacturer_SEYOUNG_ELECTRONICS
+	case "LIFEDOMUS":
+		return KnxManufacturer_LIFEDOMUS
+	case "ABB_SCHWEIZ":
+		return KnxManufacturer_ABB_SCHWEIZ
+	case "EUROTRONIC_TECHNOLOGY_GMBH":
+		return KnxManufacturer_EUROTRONIC_TECHNOLOGY_GMBH
+	case "TCI":
+		return KnxManufacturer_TCI
+	case "RISHUN_ELECTRONIC":
+		return KnxManufacturer_RISHUN_ELECTRONIC
+	case "ZIPATO":
+		return KnxManufacturer_ZIPATO
+	case "CM_SECURITY_GMBH_AND_CO_KG":
+		return KnxManufacturer_CM_SECURITY_GMBH_AND_CO_KG
+	case "QING_CABLES":
+		return KnxManufacturer_QING_CABLES
+	case "LABIO":
+		return KnxManufacturer_LABIO
+	case "COSTER_TECNOLOGIE_ELETTRONICHE_S_P_A_":
+		return KnxManufacturer_COSTER_TECNOLOGIE_ELETTRONICHE_S_P_A_
+	case "E_G_E":
+		return KnxManufacturer_E_G_E
+	case "NETXAUTOMATION":
+		return KnxManufacturer_NETXAUTOMATION
+	case "FELLER":
+		return KnxManufacturer_FELLER
+	case "TECALOR":
+		return KnxManufacturer_TECALOR
+	case "URMET_ELECTRONICS_HUIZHOU_LTD_":
+		return KnxManufacturer_URMET_ELECTRONICS_HUIZHOU_LTD_
+	case "PEIYING_BUILDING_CONTROL":
+		return KnxManufacturer_PEIYING_BUILDING_CONTROL
+	case "BPT_S_P_A__A_SOCIO_UNICO":
+		return KnxManufacturer_BPT_S_P_A__A_SOCIO_UNICO
+	case "KANONTEC___KANONBUS":
+		return KnxManufacturer_KANONTEC___KANONBUS
+	case "ISER_TECH":
+		return KnxManufacturer_ISER_TECH
+	case "FINELINE":
+		return KnxManufacturer_FINELINE
+	case "CP_ELECTRONICS_LTD":
+		return KnxManufacturer_CP_ELECTRONICS_LTD
+	case "NIKO_SERVODAN_AS":
+		return KnxManufacturer_NIKO_SERVODAN_AS
+	case "SIMON_309":
+		return KnxManufacturer_SIMON_309
+	case "GLAMOX_AS":
+		return KnxManufacturer_GLAMOX_AS
+	case "GM_MODULAR_PVT__LTD_":
+		return KnxManufacturer_GM_MODULAR_PVT__LTD_
+	case "FU_CHENG_INTELLIGENCE":
+		return KnxManufacturer_FU_CHENG_INTELLIGENCE
+	case "NEXKON":
+		return KnxManufacturer_NEXKON
+	case "FEEL_S_R_L":
+		return KnxManufacturer_FEEL_S_R_L
+	case "NOT_ASSIGNED_314":
+		return KnxManufacturer_NOT_ASSIGNED_314
+	case "SHENZHEN_FANHAI_SANJIANG_ELECTRONICS_CO___LTD_":
+		return KnxManufacturer_SHENZHEN_FANHAI_SANJIANG_ELECTRONICS_CO___LTD_
+	case "JIUZHOU_GREEBLE":
+		return KnxManufacturer_JIUZHOU_GREEBLE
+	case "AUMUELLER_AUMATIC_GMBH":
+		return KnxManufacturer_AUMUELLER_AUMATIC_GMBH
+	case "ETMAN_ELECTRIC":
+		return KnxManufacturer_ETMAN_ELECTRIC
+	case "BLACK_NOVA":
+		return KnxManufacturer_BLACK_NOVA
+	case "DEHN_AND_SOEHNE":
+		return KnxManufacturer_DEHN_AND_SOEHNE
+	case "ZIDATECH_AG":
+		return KnxManufacturer_ZIDATECH_AG
+	case "IDGS_BVBA":
+		return KnxManufacturer_IDGS_BVBA
+	case "DAKANIMO":
+		return KnxManufacturer_DAKANIMO
+	case "TREBOR_AUTOMATION_AB":
+		return KnxManufacturer_TREBOR_AUTOMATION_AB
+	case "SATEL_SP__Z_O_O_":
+		return KnxManufacturer_SATEL_SP__Z_O_O_
+	case "RUSSOUND__INC_":
+		return KnxManufacturer_RUSSOUND__INC_
+	case "MIDEA_HEATING_AND_VENTILATING_EQUIPMENT_CO_LTD":
+		return KnxManufacturer_MIDEA_HEATING_AND_VENTILATING_EQUIPMENT_CO_LTD
+	case "CONSORZIO_TERRANUOVA":
+		return KnxManufacturer_CONSORZIO_TERRANUOVA
+	case "WOLF_HEIZTECHNIK_GMBH":
+		return KnxManufacturer_WOLF_HEIZTECHNIK_GMBH
+	case "SONTEC":
+		return KnxManufacturer_SONTEC
+	case "CRABTREE":
+		return KnxManufacturer_CRABTREE
+	case "BELCOM_CABLES_LTD_":
+		return KnxManufacturer_BELCOM_CABLES_LTD_
+	case "GUANGZHOU_SEAWIN_ELECTRICAL_TECHNOLOGIES_CO___LTD_":
+		return KnxManufacturer_GUANGZHOU_SEAWIN_ELECTRICAL_TECHNOLOGIES_CO___LTD_
+	case "ACREL":
+		return KnxManufacturer_ACREL
+	case "FRANKE_AQUAROTTER_GMBH":
+		return KnxManufacturer_FRANKE_AQUAROTTER_GMBH
+	case "ORION_SYSTEMS":
+		return KnxManufacturer_ORION_SYSTEMS
+	case "SCHRACK_TECHNIK_GMBH":
+		return KnxManufacturer_SCHRACK_TECHNIK_GMBH
+	case "INSPRID":
+		return KnxManufacturer_INSPRID
+	case "SUNRICHER":
+		return KnxManufacturer_SUNRICHER
+	case "MENRED_AUTOMATION_SYSTEMSHANGHAI_CO__LTD_":
+		return KnxManufacturer_MENRED_AUTOMATION_SYSTEMSHANGHAI_CO__LTD_
+	case "AUREX":
+		return KnxManufacturer_AUREX
+	case "EVOKNX":
+		return KnxManufacturer_EVOKNX
+	case "JOSEF_BARTHELME_GMBH_AND_CO__KG":
+		return KnxManufacturer_JOSEF_BARTHELME_GMBH_AND_CO__KG
+	case "ARCHITECTURE_NUMERIQUE":
+		return KnxManufacturer_ARCHITECTURE_NUMERIQUE
+	case "UP_GROUP":
+		return KnxManufacturer_UP_GROUP
+	case "TEKNOS_AVINNO":
+		return KnxManufacturer_TEKNOS_AVINNO
+	case "NINGBO_DOOYA_MECHANIC_AND_ELECTRONIC_TECHNOLOGY":
+		return KnxManufacturer_NINGBO_DOOYA_MECHANIC_AND_ELECTRONIC_TECHNOLOGY
+	case "THERMOKON_SENSORTECHNIK_GMBH":
+		return KnxManufacturer_THERMOKON_SENSORTECHNIK_GMBH
+	case "BELIMO_AUTOMATION_AG":
+		return KnxManufacturer_BELIMO_AUTOMATION_AG
+	case "ZEHNDER_GROUP_INTERNATIONAL_AG":
+		return KnxManufacturer_ZEHNDER_GROUP_INTERNATIONAL_AG
+	case "SKS_KINKEL_ELEKTRONIK":
+		return KnxManufacturer_SKS_KINKEL_ELEKTRONIK
+	case "ECE_WURMITZER_GMBH":
+		return KnxManufacturer_ECE_WURMITZER_GMBH
+	case "LARS":
+		return KnxManufacturer_LARS
+	case "URC":
+		return KnxManufacturer_URC
+	case "LIGHTCONTROL":
+		return KnxManufacturer_LIGHTCONTROL
+	case "SHENZHEN_YM":
+		return KnxManufacturer_SHENZHEN_YM
+	case "MEAN_WELL_ENTERPRISES_CO__LTD_":
+		return KnxManufacturer_MEAN_WELL_ENTERPRISES_CO__LTD_
+	case "OSIX":
+		return KnxManufacturer_OSIX
+	case "AYPRO_TECHNOLOGY":
+		return KnxManufacturer_AYPRO_TECHNOLOGY
+	case "HEFEI_ECOLITE_SOFTWARE":
+		return KnxManufacturer_HEFEI_ECOLITE_SOFTWARE
+	case "ENNO":
+		return KnxManufacturer_ENNO
+	case "OHOSURE":
+		return KnxManufacturer_OHOSURE
+	case "PAUL_HOCHKOEPPER":
+		return KnxManufacturer_PAUL_HOCHKOEPPER
+	case "GAREFOWL":
+		return KnxManufacturer_GAREFOWL
+	case "GEZE":
+		return KnxManufacturer_GEZE
+	case "LG_ELECTRONICS_INC_":
+		return KnxManufacturer_LG_ELECTRONICS_INC_
+	case "SMC_INTERIORS":
+		return KnxManufacturer_SMC_INTERIORS
+	case "NOT_ASSIGNED_364":
+		return KnxManufacturer_NOT_ASSIGNED_364
+	case "SCS_CABLE":
+		return KnxManufacturer_SCS_CABLE
+	case "HOVAL":
+		return KnxManufacturer_HOVAL
+	case "CANST":
+		return KnxManufacturer_CANST
+	case "HANGZHOU_BERLIN":
+		return KnxManufacturer_HANGZHOU_BERLIN
+	case "EVN_LICHTTECHNIK":
+		return KnxManufacturer_EVN_LICHTTECHNIK
+	case "ALTENBURGER_ELECTRONIC":
+		return KnxManufacturer_ALTENBURGER_ELECTRONIC
+	case "RUTEC":
+		return KnxManufacturer_RUTEC
+	case "FINDER":
+		return KnxManufacturer_FINDER
+	case "FUJITSU_GENERAL_LIMITED":
+		return KnxManufacturer_FUJITSU_GENERAL_LIMITED
+	case "ZF_FRIEDRICHSHAFEN_AG":
+		return KnxManufacturer_ZF_FRIEDRICHSHAFEN_AG
+	case "CREALED":
+		return KnxManufacturer_CREALED
+	case "MILES_MAGIC_AUTOMATION_PRIVATE_LIMITED":
+		return KnxManufacturer_MILES_MAGIC_AUTOMATION_PRIVATE_LIMITED
+	case "EPlus":
+		return KnxManufacturer_EPlus
+	case "ITALCOND":
+		return KnxManufacturer_ITALCOND
+	case "SATION":
+		return KnxManufacturer_SATION
+	case "NEWBEST":
+		return KnxManufacturer_NEWBEST
+	case "GDS_DIGITAL_SYSTEMS":
+		return KnxManufacturer_GDS_DIGITAL_SYSTEMS
+	case "IDDERO":
+		return KnxManufacturer_IDDERO
+	case "MBNLED":
+		return KnxManufacturer_MBNLED
+	case "VITRUM":
+		return KnxManufacturer_VITRUM
+	case "EKEY_BIOMETRIC_SYSTEMS_GMBH":
+		return KnxManufacturer_EKEY_BIOMETRIC_SYSTEMS_GMBH
+	case "AMC":
+		return KnxManufacturer_AMC
+	case "TRILUX_GMBH_AND_CO__KG":
+		return KnxManufacturer_TRILUX_GMBH_AND_CO__KG
+	case "WEXCEDO":
+		return KnxManufacturer_WEXCEDO
+	case "VEMER_SPA":
+		return KnxManufacturer_VEMER_SPA
+	case "ALEXANDER_BUERKLE_GMBH_AND_CO_KG":
+		return KnxManufacturer_ALEXANDER_BUERKLE_GMBH_AND_CO_KG
+	case "CITRON":
+		return KnxManufacturer_CITRON
+	case "SHENZHEN_HEGUANG":
+		return KnxManufacturer_SHENZHEN_HEGUANG
+	case "NOT_ASSIGNED_392":
+		return KnxManufacturer_NOT_ASSIGNED_392
+	case "TRANE_B_V_B_A":
+		return KnxManufacturer_TRANE_B_V_B_A
+	case "CAREL":
+		return KnxManufacturer_CAREL
+	case "PROLITE_CONTROLS":
+		return KnxManufacturer_PROLITE_CONTROLS
+	case "BOSMER":
+		return KnxManufacturer_BOSMER
+	case "EUCHIPS":
+		return KnxManufacturer_EUCHIPS
+	case "CONNECT_THINKA_CONNECT":
+		return KnxManufacturer_CONNECT_THINKA_CONNECT
+	case "PEAKNX_A_DOGAWIST_COMPANY":
+		return KnxManufacturer_PEAKNX_A_DOGAWIST_COMPANY
+	case "ALBRECHT_JUNG":
+		return KnxManufacturer_ALBRECHT_JUNG
+	case "ACEMATIC":
+		return KnxManufacturer_ACEMATIC
+	case "ELAUSYS":
+		return KnxManufacturer_ELAUSYS
+	case "ITK_ENGINEERING_AG":
+		return KnxManufacturer_ITK_ENGINEERING_AG
+	case "INTEGRA_METERING_AG":
+		return KnxManufacturer_INTEGRA_METERING_AG
+	case "FMS_HOSPITALITY_PTE_LTD":
+		return KnxManufacturer_FMS_HOSPITALITY_PTE_LTD
+	case "NUVO":
+		return KnxManufacturer_NUVO
+	case "U__LUX_GMBH":
+		return KnxManufacturer_U__LUX_GMBH
+	case "BRUMBERG_LEUCHTEN":
+		return KnxManufacturer_BRUMBERG_LEUCHTEN
+	case "LIME":
+		return KnxManufacturer_LIME
+	case "GREAT_EMPIRE_INTERNATIONAL_GROUP_CO___LTD_":
+		return KnxManufacturer_GREAT_EMPIRE_INTERNATIONAL_GROUP_CO___LTD_
+	case "GRAESSLIN":
+		return KnxManufacturer_GRAESSLIN
+	case "KAVOSHPISHRO_ASIA":
+		return KnxManufacturer_KAVOSHPISHRO_ASIA
+	case "V2_SPA":
+		return KnxManufacturer_V2_SPA
+	case "JOHNSON_CONTROLS":
+		return KnxManufacturer_JOHNSON_CONTROLS
+	case "ARKUD":
+		return KnxManufacturer_ARKUD
+	case "IRIDIUM_LTD_":
+		return KnxManufacturer_IRIDIUM_LTD_
+	case "BSMART":
+		return KnxManufacturer_BSMART
+	case "BAB_TECHNOLOGIE_GMBH":
+		return KnxManufacturer_BAB_TECHNOLOGIE_GMBH
+	case "NICE_SPA":
+		return KnxManufacturer_NICE_SPA
+	case "REDFISH_GROUP_PTY_LTD":
+		return KnxManufacturer_REDFISH_GROUP_PTY_LTD
+	case "SABIANA_SPA":
+		return KnxManufacturer_SABIANA_SPA
+	case "SIMON_42":
+		return KnxManufacturer_SIMON_42
+	case "UBEE_INTERACTIVE_EUROPE":
+		return KnxManufacturer_UBEE_INTERACTIVE_EUROPE
+	case "REXEL":
+		return KnxManufacturer_REXEL
+	case "GES_TEKNIK_A_S_":
+		return KnxManufacturer_GES_TEKNIK_A_S_
+	case "AVE_S_P_A_":
+		return KnxManufacturer_AVE_S_P_A_
+	case "ZHUHAI_LTECH_TECHNOLOGY_CO___LTD_":
+		return KnxManufacturer_ZHUHAI_LTECH_TECHNOLOGY_CO___LTD_
+	case "ARCOM":
+		return KnxManufacturer_ARCOM
+	case "VIA_TECHNOLOGIES__INC_":
+		return KnxManufacturer_VIA_TECHNOLOGIES__INC_
+	case "FEELSMART_":
+		return KnxManufacturer_FEELSMART_
+	case "SUPCON":
+		return KnxManufacturer_SUPCON
+	case "MANIC":
+		return KnxManufacturer_MANIC
+	case "TDE_GMBH":
+		return KnxManufacturer_TDE_GMBH
+	case "NANJING_SHUFAN_INFORMATION_TECHNOLOGY_CO__LTD_":
+		return KnxManufacturer_NANJING_SHUFAN_INFORMATION_TECHNOLOGY_CO__LTD_
+	case "EWTECH":
+		return KnxManufacturer_EWTECH
+	case "KLUGER_AUTOMATION_GMBH":
+		return KnxManufacturer_KLUGER_AUTOMATION_GMBH
+	case "JOONGANG_CONTROL":
+		return KnxManufacturer_JOONGANG_CONTROL
+	case "GREENCONTROLS_TECHNOLOGY_SDN__BHD_":
+		return KnxManufacturer_GREENCONTROLS_TECHNOLOGY_SDN__BHD_
+	case "IME_S_P_A_":
+		return KnxManufacturer_IME_S_P_A_
+	case "SICHUAN_HAODING":
+		return KnxManufacturer_SICHUAN_HAODING
+	case "MINDJAGA_LTD_":
+		return KnxManufacturer_MINDJAGA_LTD_
+	case "RUILI_SMART_CONTROL":
+		return KnxManufacturer_RUILI_SMART_CONTROL
+	case "ABB___RESERVED":
+		return KnxManufacturer_ABB___RESERVED
+	case "BUSCH_JAEGER_ELEKTRO___RESERVED":
+		return KnxManufacturer_BUSCH_JAEGER_ELEKTRO___RESERVED
+	case "VIMAR":
+		return KnxManufacturer_VIMAR
+	case "CODESYS_GMBH":
+		return KnxManufacturer_CODESYS_GMBH
+	case "MOORGEN_DEUTSCHLAND_GMBH":
+		return KnxManufacturer_MOORGEN_DEUTSCHLAND_GMBH
+	case "CULLMANN_TECH":
+		return KnxManufacturer_CULLMANN_TECH
+	case "MERCK_WINDOW_TECHNOLOGIES_B_V_":
+		return KnxManufacturer_MERCK_WINDOW_TECHNOLOGIES_B_V_
+	case "ABEGO":
+		return KnxManufacturer_ABEGO
+	case "MYGEKKO":
+		return KnxManufacturer_MYGEKKO
+	case "ERGO3_SARL":
+		return KnxManufacturer_ERGO3_SARL
+	case "STMICROELECTRONICS_INTERNATIONAL_N_V_":
+		return KnxManufacturer_STMICROELECTRONICS_INTERNATIONAL_N_V_
+	case "CJC_SYSTEMS":
+		return KnxManufacturer_CJC_SYSTEMS
+	case "SUDOKU":
+		return KnxManufacturer_SUDOKU
+	case "MOELLER_GEBAEUDEAUTOMATION_KG":
+		return KnxManufacturer_MOELLER_GEBAEUDEAUTOMATION_KG
+	case "AZ_E_LITE_PTE_LTD":
+		return KnxManufacturer_AZ_E_LITE_PTE_LTD
+	case "ARLIGHT":
+		return KnxManufacturer_ARLIGHT
+	case "GRUENBECK_WASSERAUFBEREITUNG_GMBH":
+		return KnxManufacturer_GRUENBECK_WASSERAUFBEREITUNG_GMBH
+	case "MODULE_ELECTRONIC":
+		return KnxManufacturer_MODULE_ELECTRONIC
+	case "KOPLAT":
+		return KnxManufacturer_KOPLAT
+	case "GUANGZHOU_LETOUR_LIFE_TECHNOLOGY_CO___LTD":
+		return KnxManufacturer_GUANGZHOU_LETOUR_LIFE_TECHNOLOGY_CO___LTD
+	case "ILEVIA":
+		return KnxManufacturer_ILEVIA
+	case "LN_SYSTEMTEQ":
+		return KnxManufacturer_LN_SYSTEMTEQ
+	case "HISENSE_SMARTHOME":
+		return KnxManufacturer_HISENSE_SMARTHOME
+	case "ELTAKO":
+		return KnxManufacturer_ELTAKO
+	case "FLINK_AUTOMATION_SYSTEM":
+		return KnxManufacturer_FLINK_AUTOMATION_SYSTEM
+	case "XXTER_BV":
+		return KnxManufacturer_XXTER_BV
+	case "LYNXUS_TECHNOLOGY":
+		return KnxManufacturer_LYNXUS_TECHNOLOGY
+	case "ROBOT_S_A_":
+		return KnxManufacturer_ROBOT_S_A_
+	case "SHENZHEN_ATTE_SMART_LIFE_CO__LTD_":
+		return KnxManufacturer_SHENZHEN_ATTE_SMART_LIFE_CO__LTD_
+	case "NOBLESSE":
+		return KnxManufacturer_NOBLESSE
+	case "ADVANCED_DEVICES":
+		return KnxManufacturer_ADVANCED_DEVICES
+	case "ATRINA_BUILDING_AUTOMATION_CO__LTD":
+		return KnxManufacturer_ATRINA_BUILDING_AUTOMATION_CO__LTD
+	case "GUANGDONG_DAMING_LAFFEY_ELECTRIC_CO___LTD_":
+		return KnxManufacturer_GUANGDONG_DAMING_LAFFEY_ELECTRIC_CO___LTD_
+	case "WESTERSTRAND_URFABRIK_AB":
+		return KnxManufacturer_WESTERSTRAND_URFABRIK_AB
+	case "CONTROL4_CORPORATE":
+		return KnxManufacturer_CONTROL4_CORPORATE
+	case "ONTROL":
+		return KnxManufacturer_ONTROL
+	case "STARNET":
+		return KnxManufacturer_STARNET
+	case "BETA_CAVI":
+		return KnxManufacturer_BETA_CAVI
+	case "EASEMORE":
+		return KnxManufacturer_EASEMORE
+	case "VIVALDI_SRL":
+		return KnxManufacturer_VIVALDI_SRL
+	case "GREE_ELECTRIC_APPLIANCES_INC__OF_ZHUHAI":
+		return KnxManufacturer_GREE_ELECTRIC_APPLIANCES_INC__OF_ZHUHAI
+	case "HWISCON":
+		return KnxManufacturer_HWISCON
+	case "SHANGHAI_ELECON_INTELLIGENT_TECHNOLOGY_CO___LTD_":
+		return KnxManufacturer_SHANGHAI_ELECON_INTELLIGENT_TECHNOLOGY_CO___LTD_
+	case "KAMPMANN":
+		return KnxManufacturer_KAMPMANN
+	case "IMPOLUX_GMBH_LEDIMAX":
+		return KnxManufacturer_IMPOLUX_GMBH_LEDIMAX
+	case "EVAUX":
+		return KnxManufacturer_EVAUX
+	case "WEBRO_CABLES_AND_CONNECTORS_LIMITED":
+		return KnxManufacturer_WEBRO_CABLES_AND_CONNECTORS_LIMITED
+	case "SHANGHAI_E_TECH_SOLUTION":
+		return KnxManufacturer_SHANGHAI_E_TECH_SOLUTION
+	case "GUANGZHOU_HOKO_ELECTRIC_CO__LTD_":
+		return KnxManufacturer_GUANGZHOU_HOKO_ELECTRIC_CO__LTD_
+	case "LAMMIN_HIGH_TECH_CO__LTD":
+		return KnxManufacturer_LAMMIN_HIGH_TECH_CO__LTD
+	case "SHENZHEN_MERRYTEK_TECHNOLOGY_CO___LTD":
+		return KnxManufacturer_SHENZHEN_MERRYTEK_TECHNOLOGY_CO___LTD
+	case "I_LUXUS":
+		return KnxManufacturer_I_LUXUS
+	case "ELMOS_SEMICONDUCTOR_AG":
+		return KnxManufacturer_ELMOS_SEMICONDUCTOR_AG
+	case "EMCOM_TECHNOLOGY_INC":
+		return KnxManufacturer_EMCOM_TECHNOLOGY_INC
+	case "BOSCH_SIEMENS_HAUSHALTSGERAETE":
+		return KnxManufacturer_BOSCH_SIEMENS_HAUSHALTSGERAETE
+	case "PROJECT_INNOVATIONS_GMBH":
+		return KnxManufacturer_PROJECT_INNOVATIONS_GMBH
+	case "ITC":
+		return KnxManufacturer_ITC
+	case "ABB_LV_INSTALLATION_MATERIALS_COMPANY_LTD__BEIJING":
+		return KnxManufacturer_ABB_LV_INSTALLATION_MATERIALS_COMPANY_LTD__BEIJING
+	case "MAICO":
+		return KnxManufacturer_MAICO
+	case "ELAN_SRL":
+		return KnxManufacturer_ELAN_SRL
+	case "MINHHA_TECHNOLOGY_CO__LTD":
+		return KnxManufacturer_MINHHA_TECHNOLOGY_CO__LTD
+	case "ZHEJIANG_TIANJIE_INDUSTRIAL_CORP_":
+		return KnxManufacturer_ZHEJIANG_TIANJIE_INDUSTRIAL_CORP_
+	case "IAUTOMATION_PTY_LIMITED":
+		return KnxManufacturer_IAUTOMATION_PTY_LIMITED
+	case "EXTRON":
+		return KnxManufacturer_EXTRON
+	case "BTICINO":
+		return KnxManufacturer_BTICINO
+	case "FREEDOMPRO":
+		return KnxManufacturer_FREEDOMPRO
+	case "1HOME":
+		return KnxManufacturer_1HOME
+	case "EOS_SAUNATECHNIK_GMBH":
+		return KnxManufacturer_EOS_SAUNATECHNIK_GMBH
+	case "KUSATEK_GMBH":
+		return KnxManufacturer_KUSATEK_GMBH
+	case "EISBAER_SCADA":
+		return KnxManufacturer_EISBAER_SCADA
+	case "AUTOMATISMI_BENINCA_S_P_A_":
+		return KnxManufacturer_AUTOMATISMI_BENINCA_S_P_A_
+	case "BLENDOM":
+		return KnxManufacturer_BLENDOM
+	case "MADEL_AIR_TECHNICAL_DIFFUSION":
+		return KnxManufacturer_MADEL_AIR_TECHNICAL_DIFFUSION
+	case "NIKO":
+		return KnxManufacturer_NIKO
+	case "BOSCH_REXROTH_AG":
+		return KnxManufacturer_BOSCH_REXROTH_AG
+	case "CANDM_PRODUCTS":
+		return KnxManufacturer_CANDM_PRODUCTS
+	case "HOERMANN_KG_VERKAUFSGESELLSCHAFT":
+		return KnxManufacturer_HOERMANN_KG_VERKAUFSGESELLSCHAFT
+	case "SHANGHAI_RAJAYASA_CO__LTD":
+		return KnxManufacturer_SHANGHAI_RAJAYASA_CO__LTD
+	case "SUZUKI":
+		return KnxManufacturer_SUZUKI
+	case "SILENT_GLISS_INTERNATIONAL_LTD_":
+		return KnxManufacturer_SILENT_GLISS_INTERNATIONAL_LTD_
+	case "BEE_CONTROLS_ADGSC_GROUP":
+		return KnxManufacturer_BEE_CONTROLS_ADGSC_GROUP
+	case "XDTECGMBH":
+		return KnxManufacturer_XDTECGMBH
+	case "OSRAM":
+		return KnxManufacturer_OSRAM
+	case "RITTO_GMBHANDCO_KG":
+		return KnxManufacturer_RITTO_GMBHANDCO_KG
+	case "LEBENOR":
+		return KnxManufacturer_LEBENOR
+	case "AUTOMANENG":
+		return KnxManufacturer_AUTOMANENG
+	case "HONEYWELL_AUTOMATION_SOLUTION_CONTROLCHINA":
+		return KnxManufacturer_HONEYWELL_AUTOMATION_SOLUTION_CONTROLCHINA
+	case "HANGZHOU_BINTHEN_INTELLIGENCE_TECHNOLOGY_CO__LTD":
+		return KnxManufacturer_HANGZHOU_BINTHEN_INTELLIGENCE_TECHNOLOGY_CO__LTD
+	case "ETA_HEIZTECHNIK":
+		return KnxManufacturer_ETA_HEIZTECHNIK
+	case "DIVUS_GMBH":
+		return KnxManufacturer_DIVUS_GMBH
+	case "NANJING_TAIJIESAI_INTELLIGENT_TECHNOLOGY_CO__LTD_":
+		return KnxManufacturer_NANJING_TAIJIESAI_INTELLIGENT_TECHNOLOGY_CO__LTD_
+	case "LUNATONE":
+		return KnxManufacturer_LUNATONE
+	case "ZHEJIANG_SCTECH_BUILDING_INTELLIGENT":
+		return KnxManufacturer_ZHEJIANG_SCTECH_BUILDING_INTELLIGENT
+	case "FOSHAN_QITE_TECHNOLOGY_CO___LTD_":
+		return KnxManufacturer_FOSHAN_QITE_TECHNOLOGY_CO___LTD_
+	case "POWER_CONTROLS":
+		return KnxManufacturer_POWER_CONTROLS
+	case "NOKE":
+		return KnxManufacturer_NOKE
+	case "LANDCOM":
+		return KnxManufacturer_LANDCOM
+	case "STORK_AS":
+		return KnxManufacturer_STORK_AS
+	case "HANGZHOU_SHENDU_TECHNOLOGY_CO___LTD_":
+		return KnxManufacturer_HANGZHOU_SHENDU_TECHNOLOGY_CO___LTD_
+	case "COOLAUTOMATION":
+		return KnxManufacturer_COOLAUTOMATION
+	case "APRSTERN":
+		return KnxManufacturer_APRSTERN
+	case "SONNEN":
+		return KnxManufacturer_SONNEN
+	case "DNAKE":
+		return KnxManufacturer_DNAKE
+	case "NEUBERGER_GEBAEUDEAUTOMATION_GMBH":
+		return KnxManufacturer_NEUBERGER_GEBAEUDEAUTOMATION_GMBH
+	case "STILIGER":
+		return KnxManufacturer_STILIGER
+	case "BERGHOF_AUTOMATION_GMBH":
+		return KnxManufacturer_BERGHOF_AUTOMATION_GMBH
+	case "TOTAL_AUTOMATION_AND_CONTROLS_GMBH":
+		return KnxManufacturer_TOTAL_AUTOMATION_AND_CONTROLS_GMBH
+	case "DOVIT":
+		return KnxManufacturer_DOVIT
+	case "INSTALIGHTING_GMBH":
+		return KnxManufacturer_INSTALIGHTING_GMBH
+	case "UNI_TEC":
+		return KnxManufacturer_UNI_TEC
+	case "CASATUNES":
+		return KnxManufacturer_CASATUNES
+	case "EMT":
+		return KnxManufacturer_EMT
+	case "SENFFICIENT":
+		return KnxManufacturer_SENFFICIENT
+	case "AUROLITE_ELECTRICAL_PANYU_GUANGZHOU_LIMITED":
+		return KnxManufacturer_AUROLITE_ELECTRICAL_PANYU_GUANGZHOU_LIMITED
+	case "ABB_XIAMEN_SMART_TECHNOLOGY_CO___LTD_":
+		return KnxManufacturer_ABB_XIAMEN_SMART_TECHNOLOGY_CO___LTD_
+	case "ZUMTOBEL":
+		return KnxManufacturer_ZUMTOBEL
+	case "SAMSON_ELECTRIC_WIRE":
+		return KnxManufacturer_SAMSON_ELECTRIC_WIRE
+	case "T_TOUCHING":
+		return KnxManufacturer_T_TOUCHING
+	case "CORE_SMART_HOME":
+		return KnxManufacturer_CORE_SMART_HOME
+	case "GREENCONNECT_SOLUTIONS_SA":
+		return KnxManufacturer_GREENCONNECT_SOLUTIONS_SA
+	case "ELETTRONICA_CONDUTTORI":
+		return KnxManufacturer_ELETTRONICA_CONDUTTORI
+	case "MKFC":
+		return KnxManufacturer_MKFC
+	case "AUTOMATIONPlus":
+		return KnxManufacturer_AUTOMATIONPlus
+	case "BLUE_AND_RED":
+		return KnxManufacturer_BLUE_AND_RED
+	case "FROGBLUE":
+		return KnxManufacturer_FROGBLUE
+	case "SAVESOR":
+		return KnxManufacturer_SAVESOR
+	case "APP_TECH":
+		return KnxManufacturer_APP_TECH
+	case "SENSORTEC_AG":
+		return KnxManufacturer_SENSORTEC_AG
+	case "NYSA_TECHNOLOGY_AND_SOLUTIONS":
+		return KnxManufacturer_NYSA_TECHNOLOGY_AND_SOLUTIONS
+	case "FARADITE":
+		return KnxManufacturer_FARADITE
+	case "OPTIMUS":
+		return KnxManufacturer_OPTIMUS
+	case "KTS_S_R_L_":
+		return KnxManufacturer_KTS_S_R_L_
+	case "RAMCRO_SPA":
+		return KnxManufacturer_RAMCRO_SPA
+	case "WUHAN_WISECREATE_UNIVERSE_TECHNOLOGY_CO___LTD":
+		return KnxManufacturer_WUHAN_WISECREATE_UNIVERSE_TECHNOLOGY_CO___LTD
+	case "BEMI_SMART_HOME_LTD":
+		return KnxManufacturer_BEMI_SMART_HOME_LTD
+	case "ARDOMUS":
+		return KnxManufacturer_ARDOMUS
+	case "PHOENIX_CONTACT":
+		return KnxManufacturer_PHOENIX_CONTACT
+	case "CHANGXING":
+		return KnxManufacturer_CHANGXING
+	case "E_CONTROLS":
+		return KnxManufacturer_E_CONTROLS
+	case "AIB_TECHNOLOGY":
+		return KnxManufacturer_AIB_TECHNOLOGY
+	case "NVC":
+		return KnxManufacturer_NVC
+	case "KBOX":
+		return KnxManufacturer_KBOX
+	case "CNS":
+		return KnxManufacturer_CNS
+	case "TYBA":
+		return KnxManufacturer_TYBA
+	case "ATREL":
+		return KnxManufacturer_ATREL
+	case "SIMON_ELECTRIC_CHINA_CO___LTD":
+		return KnxManufacturer_SIMON_ELECTRIC_CHINA_CO___LTD
+	case "KORDZ_GROUP":
+		return KnxManufacturer_KORDZ_GROUP
+	case "ND_ELECTRIC":
+		return KnxManufacturer_ND_ELECTRIC
+	case "CONTROLIUM":
+		return KnxManufacturer_CONTROLIUM
+	case "FAMO_GMBH_AND_CO__KG":
+		return KnxManufacturer_FAMO_GMBH_AND_CO__KG
+	case "CDN_SMART":
+		return KnxManufacturer_CDN_SMART
+	case "HESTON":
+		return KnxManufacturer_HESTON
+	case "ESLA_CONEXIONES_S_L_":
+		return KnxManufacturer_ESLA_CONEXIONES_S_L_
+	case "WEISHAUPT":
+		return KnxManufacturer_WEISHAUPT
+	case "ASTRUM_TECHNOLOGY":
+		return KnxManufacturer_ASTRUM_TECHNOLOGY
+	case "WUERTH_ELEKTRONIK_STELVIO_KONTEK_S_P_A_":
+		return KnxManufacturer_WUERTH_ELEKTRONIK_STELVIO_KONTEK_S_P_A_
+	case "NANOTECO_CORPORATION":
+		return KnxManufacturer_NANOTECO_CORPORATION
+	case "NIETIAN":
+		return KnxManufacturer_NIETIAN
+	case "SUMSIR":
+		return KnxManufacturer_SUMSIR
+	case "ORBIS_TECNOLOGIA_ELECTRICA_SA":
+		return KnxManufacturer_ORBIS_TECNOLOGIA_ELECTRICA_SA
+	case "BERKER":
+		return KnxManufacturer_BERKER
+	case "WAGO_KONTAKTTECHNIK":
+		return KnxManufacturer_WAGO_KONTAKTTECHNIK
+	case "KNXPRESSO":
+		return KnxManufacturer_KNXPRESSO
+	case "WIELAND_ELECTRIC":
+		return KnxManufacturer_WIELAND_ELECTRIC
+	case "HERMANN_KLEINHUIS":
+		return KnxManufacturer_HERMANN_KLEINHUIS
+	case "STIEBEL_ELTRON":
+		return KnxManufacturer_STIEBEL_ELTRON
+	case "BUSCH_JAEGER_ELEKTRO":
+		return KnxManufacturer_BUSCH_JAEGER_ELEKTRO
+	case "TEHALIT":
+		return KnxManufacturer_TEHALIT
+	case "THEBEN_AG":
+		return KnxManufacturer_THEBEN_AG
+	case "WILHELM_RUTENBECK":
+		return KnxManufacturer_WILHELM_RUTENBECK
+	case "WINKHAUS":
+		return KnxManufacturer_WINKHAUS
+	case "ROBERT_BOSCH":
+		return KnxManufacturer_ROBERT_BOSCH
+	case "SOMFY":
+		return KnxManufacturer_SOMFY
+	case "GIRA_GIERSIEPEN":
+		return KnxManufacturer_GIRA_GIERSIEPEN
+	case "WOERTZ":
+		return KnxManufacturer_WOERTZ
+	case "VIESSMANN_WERKE":
+		return KnxManufacturer_VIESSMANN_WERKE
+	case "IMI_HYDRONIC_ENGINEERING":
+		return KnxManufacturer_IMI_HYDRONIC_ENGINEERING
+	case "JOH__VAILLANT":
+		return KnxManufacturer_JOH__VAILLANT
+	case "AMP_DEUTSCHLAND":
+		return KnxManufacturer_AMP_DEUTSCHLAND
+	case "BOSCH_THERMOTECHNIK_GMBH":
+		return KnxManufacturer_BOSCH_THERMOTECHNIK_GMBH
+	case "HAGER_ELECTRO":
+		return KnxManufacturer_HAGER_ELECTRO
+	case "SEF___ECOTEC":
+		return KnxManufacturer_SEF___ECOTEC
+	case "DORMA_GMBH_Plus_CO__KG":
+		return KnxManufacturer_DORMA_GMBH_Plus_CO__KG
+	case "WINDOWMASTER_AS":
+		return KnxManufacturer_WINDOWMASTER_AS
+	case "WALTHER_WERKE":
+		return KnxManufacturer_WALTHER_WERKE
+	case "ORAS":
+		return KnxManufacturer_ORAS
+	case "DAETWYLER":
+		return KnxManufacturer_DAETWYLER
+	case "ELECTRAK":
+		return KnxManufacturer_ELECTRAK
+	case "TECHEM":
+		return KnxManufacturer_TECHEM
+	}
+	return 0
+}
+
 func CastKnxManufacturer(structType interface{}) KnxManufacturer {
 	castFunc := func(typ interface{}) KnxManufacturer {
 		if sKnxManufacturer, ok := typ.(KnxManufacturer); ok {
@@ -3828,7 +4908,7 @@ func KnxManufacturerParse(io *utils.ReadBuffer) (KnxManufacturer, error) {
 	if err != nil {
 		return 0, nil
 	}
-	return KnxManufacturerValueOf(val), nil
+	return KnxManufacturerByValue(val), nil
 }
 
 func (e KnxManufacturer) Serialize(io utils.WriteBuffer) error {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
index 920ccf6..67b24eb 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxMedium.go
@@ -19,87 +19,105 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type KnxMedium uint8
 
 type IKnxMedium interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    KnxMedium_MEDIUM_RESERVED_1 KnxMedium = 0x01
-    KnxMedium_MEDIUM_TP1 KnxMedium = 0x02
-    KnxMedium_MEDIUM_PL110 KnxMedium = 0x04
-    KnxMedium_MEDIUM_RESERVED_2 KnxMedium = 0x08
-    KnxMedium_MEDIUM_RF KnxMedium = 0x10
-    KnxMedium_MEDIUM_KNX_IP KnxMedium = 0x20
+const (
+	KnxMedium_MEDIUM_RESERVED_1 KnxMedium = 0x01
+	KnxMedium_MEDIUM_TP1        KnxMedium = 0x02
+	KnxMedium_MEDIUM_PL110      KnxMedium = 0x04
+	KnxMedium_MEDIUM_RESERVED_2 KnxMedium = 0x08
+	KnxMedium_MEDIUM_RF         KnxMedium = 0x10
+	KnxMedium_MEDIUM_KNX_IP     KnxMedium = 0x20
 )
 
-func KnxMediumValueOf(value uint8) KnxMedium {
-    switch value {
-        case 0x01:
-            return KnxMedium_MEDIUM_RESERVED_1
-        case 0x02:
-            return KnxMedium_MEDIUM_TP1
-        case 0x04:
-            return KnxMedium_MEDIUM_PL110
-        case 0x08:
-            return KnxMedium_MEDIUM_RESERVED_2
-        case 0x10:
-            return KnxMedium_MEDIUM_RF
-        case 0x20:
-            return KnxMedium_MEDIUM_KNX_IP
-    }
-    return 0
+func KnxMediumByValue(value uint8) KnxMedium {
+	switch value {
+	case 0x01:
+		return KnxMedium_MEDIUM_RESERVED_1
+	case 0x02:
+		return KnxMedium_MEDIUM_TP1
+	case 0x04:
+		return KnxMedium_MEDIUM_PL110
+	case 0x08:
+		return KnxMedium_MEDIUM_RESERVED_2
+	case 0x10:
+		return KnxMedium_MEDIUM_RF
+	case 0x20:
+		return KnxMedium_MEDIUM_KNX_IP
+	}
+	return 0
+}
+
+func KnxMediumByName(value string) KnxMedium {
+	switch value {
+	case "MEDIUM_RESERVED_1":
+		return KnxMedium_MEDIUM_RESERVED_1
+	case "MEDIUM_TP1":
+		return KnxMedium_MEDIUM_TP1
+	case "MEDIUM_PL110":
+		return KnxMedium_MEDIUM_PL110
+	case "MEDIUM_RESERVED_2":
+		return KnxMedium_MEDIUM_RESERVED_2
+	case "MEDIUM_RF":
+		return KnxMedium_MEDIUM_RF
+	case "MEDIUM_KNX_IP":
+		return KnxMedium_MEDIUM_KNX_IP
+	}
+	return 0
 }
 
 func CastKnxMedium(structType interface{}) KnxMedium {
-    castFunc := func(typ interface{}) KnxMedium {
-        if sKnxMedium, ok := typ.(KnxMedium); ok {
-            return sKnxMedium
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) KnxMedium {
+		if sKnxMedium, ok := typ.(KnxMedium); ok {
+			return sKnxMedium
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m KnxMedium) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m KnxMedium) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func KnxMediumParse(io *utils.ReadBuffer) (KnxMedium, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return KnxMediumValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return KnxMediumByValue(val), nil
 }
 
 func (e KnxMedium) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e KnxMedium) String() string {
-    switch e {
-    case KnxMedium_MEDIUM_RESERVED_1:
-        return "MEDIUM_RESERVED_1"
-    case KnxMedium_MEDIUM_TP1:
-        return "MEDIUM_TP1"
-    case KnxMedium_MEDIUM_PL110:
-        return "MEDIUM_PL110"
-    case KnxMedium_MEDIUM_RESERVED_2:
-        return "MEDIUM_RESERVED_2"
-    case KnxMedium_MEDIUM_RF:
-        return "MEDIUM_RF"
-    case KnxMedium_MEDIUM_KNX_IP:
-        return "MEDIUM_KNX_IP"
-    }
-    return ""
+	switch e {
+	case KnxMedium_MEDIUM_RESERVED_1:
+		return "MEDIUM_RESERVED_1"
+	case KnxMedium_MEDIUM_TP1:
+		return "MEDIUM_TP1"
+	case KnxMedium_MEDIUM_PL110:
+		return "MEDIUM_PL110"
+	case KnxMedium_MEDIUM_RESERVED_2:
+		return "MEDIUM_RESERVED_2"
+	case KnxMedium_MEDIUM_RF:
+		return "MEDIUM_RF"
+	case KnxMedium_MEDIUM_KNX_IP:
+		return "MEDIUM_KNX_IP"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
index 3a5bacb..c901671 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxPropertyDataType.go
@@ -285,7 +285,7 @@ func (e KnxPropertyDataType) SizeInBytes() uint8 {
 		}
 	}
 }
-func KnxPropertyDataTypeValueOf(value uint8) KnxPropertyDataType {
+func KnxPropertyDataTypeByValue(value uint8) KnxPropertyDataType {
 	switch value {
 	case 0:
 		return KnxPropertyDataType_PDT_CONTROL
@@ -389,6 +389,110 @@ func KnxPropertyDataTypeValueOf(value uint8) KnxPropertyDataType {
 	return 0
 }
 
+func KnxPropertyDataTypeByName(value string) KnxPropertyDataType {
+	switch value {
+	case "PDT_CONTROL":
+		return KnxPropertyDataType_PDT_CONTROL
+	case "PDT_CHAR":
+		return KnxPropertyDataType_PDT_CHAR
+	case "PDT_FLOAT":
+		return KnxPropertyDataType_PDT_FLOAT
+	case "PDT_DOUBLE":
+		return KnxPropertyDataType_PDT_DOUBLE
+	case "PDT_CHAR_BLOCK":
+		return KnxPropertyDataType_PDT_CHAR_BLOCK
+	case "PDT_POLL_GROUP_SETTINGS":
+		return KnxPropertyDataType_PDT_POLL_GROUP_SETTINGS
+	case "PDT_SHORT_CHAR_BLOCK":
+		return KnxPropertyDataType_PDT_SHORT_CHAR_BLOCK
+	case "PDT_DATE_TIME":
+		return KnxPropertyDataType_PDT_DATE_TIME
+	case "PDT_VARIABLE_LENGTH":
+		return KnxPropertyDataType_PDT_VARIABLE_LENGTH
+	case "PDT_GENERIC_01":
+		return KnxPropertyDataType_PDT_GENERIC_01
+	case "PDT_GENERIC_02":
+		return KnxPropertyDataType_PDT_GENERIC_02
+	case "PDT_GENERIC_03":
+		return KnxPropertyDataType_PDT_GENERIC_03
+	case "PDT_UNSIGNED_CHAR":
+		return KnxPropertyDataType_PDT_UNSIGNED_CHAR
+	case "PDT_GENERIC_04":
+		return KnxPropertyDataType_PDT_GENERIC_04
+	case "PDT_GENERIC_05":
+		return KnxPropertyDataType_PDT_GENERIC_05
+	case "PDT_GENERIC_06":
+		return KnxPropertyDataType_PDT_GENERIC_06
+	case "PDT_GENERIC_07":
+		return KnxPropertyDataType_PDT_GENERIC_07
+	case "PDT_GENERIC_08":
+		return KnxPropertyDataType_PDT_GENERIC_08
+	case "PDT_GENERIC_09":
+		return KnxPropertyDataType_PDT_GENERIC_09
+	case "PDT_GENERIC_10":
+		return KnxPropertyDataType_PDT_GENERIC_10
+	case "PDT_GENERIC_11":
+		return KnxPropertyDataType_PDT_GENERIC_11
+	case "PDT_GENERIC_12":
+		return KnxPropertyDataType_PDT_GENERIC_12
+	case "PDT_GENERIC_13":
+		return KnxPropertyDataType_PDT_GENERIC_13
+	case "PDT_INT":
+		return KnxPropertyDataType_PDT_INT
+	case "PDT_GENERIC_14":
+		return KnxPropertyDataType_PDT_GENERIC_14
+	case "PDT_GENERIC_15":
+		return KnxPropertyDataType_PDT_GENERIC_15
+	case "PDT_GENERIC_16":
+		return KnxPropertyDataType_PDT_GENERIC_16
+	case "PDT_GENERIC_17":
+		return KnxPropertyDataType_PDT_GENERIC_17
+	case "PDT_GENERIC_18":
+		return KnxPropertyDataType_PDT_GENERIC_18
+	case "PDT_GENERIC_19":
+		return KnxPropertyDataType_PDT_GENERIC_19
+	case "PDT_GENERIC_20":
+		return KnxPropertyDataType_PDT_GENERIC_20
+	case "PDT_UNSIGNED_INT":
+		return KnxPropertyDataType_PDT_UNSIGNED_INT
+	case "PDT_UTF_8":
+		return KnxPropertyDataType_PDT_UTF_8
+	case "PDT_VERSION":
+		return KnxPropertyDataType_PDT_VERSION
+	case "PDT_ALARM_INFO":
+		return KnxPropertyDataType_PDT_ALARM_INFO
+	case "PDT_KNX_FLOAT":
+		return KnxPropertyDataType_PDT_KNX_FLOAT
+	case "PDT_BINARY_INFORMATION":
+		return KnxPropertyDataType_PDT_BINARY_INFORMATION
+	case "PDT_BITSET8":
+		return KnxPropertyDataType_PDT_BITSET8
+	case "PDT_BITSET16":
+		return KnxPropertyDataType_PDT_BITSET16
+	case "PDT_ENUM8":
+		return KnxPropertyDataType_PDT_ENUM8
+	case "PDT_SCALING":
+		return KnxPropertyDataType_PDT_SCALING
+	case "PDT_DATE":
+		return KnxPropertyDataType_PDT_DATE
+	case "PDT_NE_VL":
+		return KnxPropertyDataType_PDT_NE_VL
+	case "PDT_NE_FL":
+		return KnxPropertyDataType_PDT_NE_FL
+	case "PDT_FUNCTION":
+		return KnxPropertyDataType_PDT_FUNCTION
+	case "PDT_ESCAPE":
+		return KnxPropertyDataType_PDT_ESCAPE
+	case "PDT_TIME":
+		return KnxPropertyDataType_PDT_TIME
+	case "PDT_LONG":
+		return KnxPropertyDataType_PDT_LONG
+	case "PDT_UNSIGNED_LONG":
+		return KnxPropertyDataType_PDT_UNSIGNED_LONG
+	}
+	return 0
+}
+
 func CastKnxPropertyDataType(structType interface{}) KnxPropertyDataType {
 	castFunc := func(typ interface{}) KnxPropertyDataType {
 		if sKnxPropertyDataType, ok := typ.(KnxPropertyDataType); ok {
@@ -412,7 +516,7 @@ func KnxPropertyDataTypeParse(io *utils.ReadBuffer) (KnxPropertyDataType, error)
 	if err != nil {
 		return 0, nil
 	}
-	return KnxPropertyDataTypeValueOf(val), nil
+	return KnxPropertyDataTypeByValue(val), nil
 }
 
 func (e KnxPropertyDataType) Serialize(io utils.WriteBuffer) error {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
index a45c392..06fc746 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
@@ -19,117 +19,147 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type Status uint8
 
 type IStatus interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    Status_NO_ERROR Status = 0x00
-    Status_PROTOCOL_TYPE_NOT_SUPPORTED Status = 0x01
-    Status_UNSUPPORTED_PROTOCOL_VERSION Status = 0x02
-    Status_OUT_OF_ORDER_SEQUENCE_NUMBER Status = 0x04
-    Status_INVALID_CONNECTION_ID Status = 0x21
-    Status_CONNECTION_TYPE_NOT_SUPPORTED Status = 0x22
-    Status_CONNECTION_OPTION_NOT_SUPPORTED Status = 0x23
-    Status_NO_MORE_CONNECTIONS Status = 0x24
-    Status_NO_MORE_UNIQUE_CONNECTIONS Status = 0x25
-    Status_DATA_CONNECTION Status = 0x26
-    Status_KNX_CONNECTION Status = 0x27
-    Status_TUNNELLING_LAYER_NOT_SUPPORTED Status = 0x29
+const (
+	Status_NO_ERROR                        Status = 0x00
+	Status_PROTOCOL_TYPE_NOT_SUPPORTED     Status = 0x01
+	Status_UNSUPPORTED_PROTOCOL_VERSION    Status = 0x02
+	Status_OUT_OF_ORDER_SEQUENCE_NUMBER    Status = 0x04
+	Status_INVALID_CONNECTION_ID           Status = 0x21
+	Status_CONNECTION_TYPE_NOT_SUPPORTED   Status = 0x22
+	Status_CONNECTION_OPTION_NOT_SUPPORTED Status = 0x23
+	Status_NO_MORE_CONNECTIONS             Status = 0x24
+	Status_NO_MORE_UNIQUE_CONNECTIONS      Status = 0x25
+	Status_DATA_CONNECTION                 Status = 0x26
+	Status_KNX_CONNECTION                  Status = 0x27
+	Status_TUNNELLING_LAYER_NOT_SUPPORTED  Status = 0x29
 )
 
-func StatusValueOf(value uint8) Status {
-    switch value {
-        case 0x00:
-            return Status_NO_ERROR
-        case 0x01:
-            return Status_PROTOCOL_TYPE_NOT_SUPPORTED
-        case 0x02:
-            return Status_UNSUPPORTED_PROTOCOL_VERSION
-        case 0x04:
-            return Status_OUT_OF_ORDER_SEQUENCE_NUMBER
-        case 0x21:
-            return Status_INVALID_CONNECTION_ID
-        case 0x22:
-            return Status_CONNECTION_TYPE_NOT_SUPPORTED
-        case 0x23:
-            return Status_CONNECTION_OPTION_NOT_SUPPORTED
-        case 0x24:
-            return Status_NO_MORE_CONNECTIONS
-        case 0x25:
-            return Status_NO_MORE_UNIQUE_CONNECTIONS
-        case 0x26:
-            return Status_DATA_CONNECTION
-        case 0x27:
-            return Status_KNX_CONNECTION
-        case 0x29:
-            return Status_TUNNELLING_LAYER_NOT_SUPPORTED
-    }
-    return 0
+func StatusByValue(value uint8) Status {
+	switch value {
+	case 0x00:
+		return Status_NO_ERROR
+	case 0x01:
+		return Status_PROTOCOL_TYPE_NOT_SUPPORTED
+	case 0x02:
+		return Status_UNSUPPORTED_PROTOCOL_VERSION
+	case 0x04:
+		return Status_OUT_OF_ORDER_SEQUENCE_NUMBER
+	case 0x21:
+		return Status_INVALID_CONNECTION_ID
+	case 0x22:
+		return Status_CONNECTION_TYPE_NOT_SUPPORTED
+	case 0x23:
+		return Status_CONNECTION_OPTION_NOT_SUPPORTED
+	case 0x24:
+		return Status_NO_MORE_CONNECTIONS
+	case 0x25:
+		return Status_NO_MORE_UNIQUE_CONNECTIONS
+	case 0x26:
+		return Status_DATA_CONNECTION
+	case 0x27:
+		return Status_KNX_CONNECTION
+	case 0x29:
+		return Status_TUNNELLING_LAYER_NOT_SUPPORTED
+	}
+	return 0
+}
+
+func StatusByName(value string) Status {
+	switch value {
+	case "NO_ERROR":
+		return Status_NO_ERROR
+	case "PROTOCOL_TYPE_NOT_SUPPORTED":
+		return Status_PROTOCOL_TYPE_NOT_SUPPORTED
+	case "UNSUPPORTED_PROTOCOL_VERSION":
+		return Status_UNSUPPORTED_PROTOCOL_VERSION
+	case "OUT_OF_ORDER_SEQUENCE_NUMBER":
+		return Status_OUT_OF_ORDER_SEQUENCE_NUMBER
+	case "INVALID_CONNECTION_ID":
+		return Status_INVALID_CONNECTION_ID
+	case "CONNECTION_TYPE_NOT_SUPPORTED":
+		return Status_CONNECTION_TYPE_NOT_SUPPORTED
+	case "CONNECTION_OPTION_NOT_SUPPORTED":
+		return Status_CONNECTION_OPTION_NOT_SUPPORTED
+	case "NO_MORE_CONNECTIONS":
+		return Status_NO_MORE_CONNECTIONS
+	case "NO_MORE_UNIQUE_CONNECTIONS":
+		return Status_NO_MORE_UNIQUE_CONNECTIONS
+	case "DATA_CONNECTION":
+		return Status_DATA_CONNECTION
+	case "KNX_CONNECTION":
+		return Status_KNX_CONNECTION
+	case "TUNNELLING_LAYER_NOT_SUPPORTED":
+		return Status_TUNNELLING_LAYER_NOT_SUPPORTED
+	}
+	return 0
 }
 
 func CastStatus(structType interface{}) Status {
-    castFunc := func(typ interface{}) Status {
-        if sStatus, ok := typ.(Status); ok {
-            return sStatus
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) Status {
+		if sStatus, ok := typ.(Status); ok {
+			return sStatus
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m Status) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m Status) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func StatusParse(io *utils.ReadBuffer) (Status, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return StatusValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return StatusByValue(val), nil
 }
 
 func (e Status) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e Status) String() string {
-    switch e {
-    case Status_NO_ERROR:
-        return "NO_ERROR"
-    case Status_PROTOCOL_TYPE_NOT_SUPPORTED:
-        return "PROTOCOL_TYPE_NOT_SUPPORTED"
-    case Status_UNSUPPORTED_PROTOCOL_VERSION:
-        return "UNSUPPORTED_PROTOCOL_VERSION"
-    case Status_OUT_OF_ORDER_SEQUENCE_NUMBER:
-        return "OUT_OF_ORDER_SEQUENCE_NUMBER"
-    case Status_INVALID_CONNECTION_ID:
-        return "INVALID_CONNECTION_ID"
-    case Status_CONNECTION_TYPE_NOT_SUPPORTED:
-        return "CONNECTION_TYPE_NOT_SUPPORTED"
-    case Status_CONNECTION_OPTION_NOT_SUPPORTED:
-        return "CONNECTION_OPTION_NOT_SUPPORTED"
-    case Status_NO_MORE_CONNECTIONS:
-        return "NO_MORE_CONNECTIONS"
-    case Status_NO_MORE_UNIQUE_CONNECTIONS:
-        return "NO_MORE_UNIQUE_CONNECTIONS"
-    case Status_DATA_CONNECTION:
-        return "DATA_CONNECTION"
-    case Status_KNX_CONNECTION:
-        return "KNX_CONNECTION"
-    case Status_TUNNELLING_LAYER_NOT_SUPPORTED:
-        return "TUNNELLING_LAYER_NOT_SUPPORTED"
-    }
-    return ""
+	switch e {
+	case Status_NO_ERROR:
+		return "NO_ERROR"
+	case Status_PROTOCOL_TYPE_NOT_SUPPORTED:
+		return "PROTOCOL_TYPE_NOT_SUPPORTED"
+	case Status_UNSUPPORTED_PROTOCOL_VERSION:
+		return "UNSUPPORTED_PROTOCOL_VERSION"
+	case Status_OUT_OF_ORDER_SEQUENCE_NUMBER:
+		return "OUT_OF_ORDER_SEQUENCE_NUMBER"
+	case Status_INVALID_CONNECTION_ID:
+		return "INVALID_CONNECTION_ID"
+	case Status_CONNECTION_TYPE_NOT_SUPPORTED:
+		return "CONNECTION_TYPE_NOT_SUPPORTED"
+	case Status_CONNECTION_OPTION_NOT_SUPPORTED:
+		return "CONNECTION_OPTION_NOT_SUPPORTED"
+	case Status_NO_MORE_CONNECTIONS:
+		return "NO_MORE_CONNECTIONS"
+	case Status_NO_MORE_UNIQUE_CONNECTIONS:
+		return "NO_MORE_UNIQUE_CONNECTIONS"
+	case Status_DATA_CONNECTION:
+		return "DATA_CONNECTION"
+	case Status_KNX_CONNECTION:
+		return "KNX_CONNECTION"
+	case Status_TUNNELLING_LAYER_NOT_SUPPORTED:
+		return "TUNNELLING_LAYER_NOT_SUPPORTED"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
index 6dc1542..6eb6128 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/SupportedPhysicalMedia.go
@@ -19,306 +19,397 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type SupportedPhysicalMedia uint8
 
 type ISupportedPhysicalMedia interface {
-    KnxSupport() bool
-    Description() string
-    Serialize(io utils.WriteBuffer) error
+	KnxSupport() bool
+	Description() string
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    SupportedPhysicalMedia_OTHER SupportedPhysicalMedia = 0x00
-    SupportedPhysicalMedia_OIL_METER SupportedPhysicalMedia = 0x01
-    SupportedPhysicalMedia_ELECTRICITY_METER SupportedPhysicalMedia = 0x02
-    SupportedPhysicalMedia_GAS_METER SupportedPhysicalMedia = 0x03
-    SupportedPhysicalMedia_HEAT_METER SupportedPhysicalMedia = 0x04
-    SupportedPhysicalMedia_STEAM_METER SupportedPhysicalMedia = 0x05
-    SupportedPhysicalMedia_WARM_WATER_METER SupportedPhysicalMedia = 0x06
-    SupportedPhysicalMedia_WATER_METER SupportedPhysicalMedia = 0x07
-    SupportedPhysicalMedia_HEAT_COST_ALLOCATOR SupportedPhysicalMedia = 0x08
-    SupportedPhysicalMedia_COMPRESSED_AIR SupportedPhysicalMedia = 0x09
-    SupportedPhysicalMedia_COOLING_LOAD_METER_INLET SupportedPhysicalMedia = 0x0A
-    SupportedPhysicalMedia_COOLING_LOAD_METER_OUTLET SupportedPhysicalMedia = 0x0B
-    SupportedPhysicalMedia_HEAT_INLET SupportedPhysicalMedia = 0x0C
-    SupportedPhysicalMedia_HEAT_AND_COOL SupportedPhysicalMedia = 0x0D
-    SupportedPhysicalMedia_BUS_OR_SYSTEM SupportedPhysicalMedia = 0x0E
-    SupportedPhysicalMedia_UNKNOWN_DEVICE_TYPE SupportedPhysicalMedia = 0x0F
-    SupportedPhysicalMedia_BREAKER SupportedPhysicalMedia = 0x20
-    SupportedPhysicalMedia_VALVE SupportedPhysicalMedia = 0x21
-    SupportedPhysicalMedia_WASTE_WATER_METER SupportedPhysicalMedia = 0x28
-    SupportedPhysicalMedia_GARBAGE SupportedPhysicalMedia = 0x29
-    SupportedPhysicalMedia_RADIO_CONVERTER SupportedPhysicalMedia = 0x37
+const (
+	SupportedPhysicalMedia_OTHER                     SupportedPhysicalMedia = 0x00
+	SupportedPhysicalMedia_OIL_METER                 SupportedPhysicalMedia = 0x01
+	SupportedPhysicalMedia_ELECTRICITY_METER         SupportedPhysicalMedia = 0x02
+	SupportedPhysicalMedia_GAS_METER                 SupportedPhysicalMedia = 0x03
+	SupportedPhysicalMedia_HEAT_METER                SupportedPhysicalMedia = 0x04
+	SupportedPhysicalMedia_STEAM_METER               SupportedPhysicalMedia = 0x05
+	SupportedPhysicalMedia_WARM_WATER_METER          SupportedPhysicalMedia = 0x06
+	SupportedPhysicalMedia_WATER_METER               SupportedPhysicalMedia = 0x07
+	SupportedPhysicalMedia_HEAT_COST_ALLOCATOR       SupportedPhysicalMedia = 0x08
+	SupportedPhysicalMedia_COMPRESSED_AIR            SupportedPhysicalMedia = 0x09
+	SupportedPhysicalMedia_COOLING_LOAD_METER_INLET  SupportedPhysicalMedia = 0x0A
+	SupportedPhysicalMedia_COOLING_LOAD_METER_OUTLET SupportedPhysicalMedia = 0x0B
+	SupportedPhysicalMedia_HEAT_INLET                SupportedPhysicalMedia = 0x0C
+	SupportedPhysicalMedia_HEAT_AND_COOL             SupportedPhysicalMedia = 0x0D
+	SupportedPhysicalMedia_BUS_OR_SYSTEM             SupportedPhysicalMedia = 0x0E
+	SupportedPhysicalMedia_UNKNOWN_DEVICE_TYPE       SupportedPhysicalMedia = 0x0F
+	SupportedPhysicalMedia_BREAKER                   SupportedPhysicalMedia = 0x20
+	SupportedPhysicalMedia_VALVE                     SupportedPhysicalMedia = 0x21
+	SupportedPhysicalMedia_WASTE_WATER_METER         SupportedPhysicalMedia = 0x28
+	SupportedPhysicalMedia_GARBAGE                   SupportedPhysicalMedia = 0x29
+	SupportedPhysicalMedia_RADIO_CONVERTER           SupportedPhysicalMedia = 0x37
 )
 
-
 func (e SupportedPhysicalMedia) KnxSupport() bool {
-    switch e  {
-        case 0x00: { /* '0x00' */
-            return true
-        }
-        case 0x01: { /* '0x01' */
-            return true
-        }
-        case 0x02: { /* '0x02' */
-            return true
-        }
-        case 0x03: { /* '0x03' */
-            return true
-        }
-        case 0x04: { /* '0x04' */
-            return true
-        }
-        case 0x05: { /* '0x05' */
-            return true
-        }
-        case 0x06: { /* '0x06' */
-            return true
-        }
-        case 0x07: { /* '0x07' */
-            return true
-        }
-        case 0x08: { /* '0x08' */
-            return true
-        }
-        case 0x09: { /* '0x09' */
-            return false
-        }
-        case 0x0A: { /* '0x0A' */
-            return true
-        }
-        case 0x0B: { /* '0x0B' */
-            return true
-        }
-        case 0x0C: { /* '0x0C' */
-            return true
-        }
-        case 0x0D: { /* '0x0D' */
-            return true
-        }
-        case 0x0E: { /* '0x0E' */
-            return false
-        }
-        case 0x0F: { /* '0x0F' */
-            return false
-        }
-        case 0x20: { /* '0x20' */
-            return true
-        }
-        case 0x21: { /* '0x21' */
-            return true
-        }
-        case 0x28: { /* '0x28' */
-            return true
-        }
-        case 0x29: { /* '0x29' */
-            return true
-        }
-        case 0x37: { /* '0x37' */
-            return false
-        }
-        default: {
-            return false
-        }
-    }
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return true
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return true
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return true
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return true
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return true
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return true
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return true
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return true
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return true
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return false
+		}
+	case 0x0A:
+		{ /* '0x0A' */
+			return true
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return true
+		}
+	case 0x0C:
+		{ /* '0x0C' */
+			return true
+		}
+	case 0x0D:
+		{ /* '0x0D' */
+			return true
+		}
+	case 0x0E:
+		{ /* '0x0E' */
+			return false
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return false
+		}
+	case 0x20:
+		{ /* '0x20' */
+			return true
+		}
+	case 0x21:
+		{ /* '0x21' */
+			return true
+		}
+	case 0x28:
+		{ /* '0x28' */
+			return true
+		}
+	case 0x29:
+		{ /* '0x29' */
+			return true
+		}
+	case 0x37:
+		{ /* '0x37' */
+			return false
+		}
+	default:
+		{
+			return false
+		}
+	}
 }
 
 func (e SupportedPhysicalMedia) Description() string {
-    switch e  {
-        case 0x00: { /* '0x00' */
-            return "used_for_undefined_physical_medium"
-        }
-        case 0x01: { /* '0x01' */
-            return "measures_volume_of_oil"
-        }
-        case 0x02: { /* '0x02' */
-            return "measures_electric_energy"
-        }
-        case 0x03: { /* '0x03' */
-            return "measures_volume_of_gaseous_energy"
-        }
-        case 0x04: { /* '0x04' */
-            return "heat_energy_measured_in_outlet_pipe"
-        }
-        case 0x05: { /* '0x05' */
-            return "measures_weight_of_hot_steam"
-        }
-        case 0x06: { /* '0x06' */
-            return "measured_heated_water_volume"
-        }
-        case 0x07: { /* '0x07' */
-            return "measured_water_volume"
-        }
-        case 0x08: { /* '0x08' */
-            return "measured_relative_cumulated_heat_consumption"
-        }
-        case 0x09: { /* '0x09' */
-            return "measures_weight_of_compressed_air"
-        }
-        case 0x0A: { /* '0x0A' */
-            return "cooling_energy_measured_in_inlet_pipe"
-        }
-        case 0x0B: { /* '0x0B' */
-            return "cooling_energy_measured_in_outlet_pipe"
-        }
-        case 0x0C: { /* '0x0C' */
-            return "heat_energy_measured_in_inlet_pipe"
-        }
-        case 0x0D: { /* '0x0D' */
-            return "measures_both_heat_and_cool"
-        }
-        case 0x0E: { /* '0x0E' */
-            return "no_meter"
-        }
-        case 0x0F: { /* '0x0F' */
-            return "used_for_undefined_physical_medium"
-        }
-        case 0x20: { /* '0x20' */
-            return "status_of_electric_energy_supply"
-        }
-        case 0x21: { /* '0x21' */
-            return "status_of_supply_of_Gas_or_water"
-        }
-        case 0x28: { /* '0x28' */
-            return "measured_volume_of_disposed_water"
-        }
-        case 0x29: { /* '0x29' */
-            return "measured_weight_of_disposed_rubbish"
-        }
-        case 0x37: { /* '0x37' */
-            return "enables_the_radio_transmission_of_a_meter_without_a_radio_interface"
-        }
-        default: {
-            return ""
-        }
-    }
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return "used_for_undefined_physical_medium"
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return "measures_volume_of_oil"
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return "measures_electric_energy"
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return "measures_volume_of_gaseous_energy"
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return "heat_energy_measured_in_outlet_pipe"
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return "measures_weight_of_hot_steam"
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return "measured_heated_water_volume"
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return "measured_water_volume"
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return "measured_relative_cumulated_heat_consumption"
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return "measures_weight_of_compressed_air"
+		}
+	case 0x0A:
+		{ /* '0x0A' */
+			return "cooling_energy_measured_in_inlet_pipe"
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return "cooling_energy_measured_in_outlet_pipe"
+		}
+	case 0x0C:
+		{ /* '0x0C' */
+			return "heat_energy_measured_in_inlet_pipe"
+		}
+	case 0x0D:
+		{ /* '0x0D' */
+			return "measures_both_heat_and_cool"
+		}
+	case 0x0E:
+		{ /* '0x0E' */
+			return "no_meter"
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return "used_for_undefined_physical_medium"
+		}
+	case 0x20:
+		{ /* '0x20' */
+			return "status_of_electric_energy_supply"
+		}
+	case 0x21:
+		{ /* '0x21' */
+			return "status_of_supply_of_Gas_or_water"
+		}
+	case 0x28:
+		{ /* '0x28' */
+			return "measured_volume_of_disposed_water"
+		}
+	case 0x29:
+		{ /* '0x29' */
+			return "measured_weight_of_disposed_rubbish"
+		}
+	case 0x37:
+		{ /* '0x37' */
+			return "enables_the_radio_transmission_of_a_meter_without_a_radio_interface"
+		}
+	default:
+		{
+			return ""
+		}
+	}
+}
+func SupportedPhysicalMediaByValue(value uint8) SupportedPhysicalMedia {
+	switch value {
+	case 0x00:
+		return SupportedPhysicalMedia_OTHER
+	case 0x01:
+		return SupportedPhysicalMedia_OIL_METER
+	case 0x02:
+		return SupportedPhysicalMedia_ELECTRICITY_METER
+	case 0x03:
+		return SupportedPhysicalMedia_GAS_METER
+	case 0x04:
+		return SupportedPhysicalMedia_HEAT_METER
+	case 0x05:
+		return SupportedPhysicalMedia_STEAM_METER
+	case 0x06:
+		return SupportedPhysicalMedia_WARM_WATER_METER
+	case 0x07:
+		return SupportedPhysicalMedia_WATER_METER
+	case 0x08:
+		return SupportedPhysicalMedia_HEAT_COST_ALLOCATOR
+	case 0x09:
+		return SupportedPhysicalMedia_COMPRESSED_AIR
+	case 0x0A:
+		return SupportedPhysicalMedia_COOLING_LOAD_METER_INLET
+	case 0x0B:
+		return SupportedPhysicalMedia_COOLING_LOAD_METER_OUTLET
+	case 0x0C:
+		return SupportedPhysicalMedia_HEAT_INLET
+	case 0x0D:
+		return SupportedPhysicalMedia_HEAT_AND_COOL
+	case 0x0E:
+		return SupportedPhysicalMedia_BUS_OR_SYSTEM
+	case 0x0F:
+		return SupportedPhysicalMedia_UNKNOWN_DEVICE_TYPE
+	case 0x20:
+		return SupportedPhysicalMedia_BREAKER
+	case 0x21:
+		return SupportedPhysicalMedia_VALVE
+	case 0x28:
+		return SupportedPhysicalMedia_WASTE_WATER_METER
+	case 0x29:
+		return SupportedPhysicalMedia_GARBAGE
+	case 0x37:
+		return SupportedPhysicalMedia_RADIO_CONVERTER
+	}
+	return 0
 }
-func SupportedPhysicalMediaValueOf(value uint8) SupportedPhysicalMedia {
-    switch value {
-        case 0x00:
-            return SupportedPhysicalMedia_OTHER
-        case 0x01:
-            return SupportedPhysicalMedia_OIL_METER
-        case 0x02:
-            return SupportedPhysicalMedia_ELECTRICITY_METER
-        case 0x03:
-            return SupportedPhysicalMedia_GAS_METER
-        case 0x04:
-            return SupportedPhysicalMedia_HEAT_METER
-        case 0x05:
-            return SupportedPhysicalMedia_STEAM_METER
-        case 0x06:
-            return SupportedPhysicalMedia_WARM_WATER_METER
-        case 0x07:
-            return SupportedPhysicalMedia_WATER_METER
-        case 0x08:
-            return SupportedPhysicalMedia_HEAT_COST_ALLOCATOR
-        case 0x09:
-            return SupportedPhysicalMedia_COMPRESSED_AIR
-        case 0x0A:
-            return SupportedPhysicalMedia_COOLING_LOAD_METER_INLET
-        case 0x0B:
-            return SupportedPhysicalMedia_COOLING_LOAD_METER_OUTLET
-        case 0x0C:
-            return SupportedPhysicalMedia_HEAT_INLET
-        case 0x0D:
-            return SupportedPhysicalMedia_HEAT_AND_COOL
-        case 0x0E:
-            return SupportedPhysicalMedia_BUS_OR_SYSTEM
-        case 0x0F:
-            return SupportedPhysicalMedia_UNKNOWN_DEVICE_TYPE
-        case 0x20:
-            return SupportedPhysicalMedia_BREAKER
-        case 0x21:
-            return SupportedPhysicalMedia_VALVE
-        case 0x28:
-            return SupportedPhysicalMedia_WASTE_WATER_METER
-        case 0x29:
-            return SupportedPhysicalMedia_GARBAGE
-        case 0x37:
-            return SupportedPhysicalMedia_RADIO_CONVERTER
-    }
-    return 0
+
+func SupportedPhysicalMediaByName(value string) SupportedPhysicalMedia {
+	switch value {
+	case "OTHER":
+		return SupportedPhysicalMedia_OTHER
+	case "OIL_METER":
+		return SupportedPhysicalMedia_OIL_METER
+	case "ELECTRICITY_METER":
+		return SupportedPhysicalMedia_ELECTRICITY_METER
+	case "GAS_METER":
+		return SupportedPhysicalMedia_GAS_METER
+	case "HEAT_METER":
+		return SupportedPhysicalMedia_HEAT_METER
+	case "STEAM_METER":
+		return SupportedPhysicalMedia_STEAM_METER
+	case "WARM_WATER_METER":
+		return SupportedPhysicalMedia_WARM_WATER_METER
+	case "WATER_METER":
+		return SupportedPhysicalMedia_WATER_METER
+	case "HEAT_COST_ALLOCATOR":
+		return SupportedPhysicalMedia_HEAT_COST_ALLOCATOR
+	case "COMPRESSED_AIR":
+		return SupportedPhysicalMedia_COMPRESSED_AIR
+	case "COOLING_LOAD_METER_INLET":
+		return SupportedPhysicalMedia_COOLING_LOAD_METER_INLET
+	case "COOLING_LOAD_METER_OUTLET":
+		return SupportedPhysicalMedia_COOLING_LOAD_METER_OUTLET
+	case "HEAT_INLET":
+		return SupportedPhysicalMedia_HEAT_INLET
+	case "HEAT_AND_COOL":
+		return SupportedPhysicalMedia_HEAT_AND_COOL
+	case "BUS_OR_SYSTEM":
+		return SupportedPhysicalMedia_BUS_OR_SYSTEM
+	case "UNKNOWN_DEVICE_TYPE":
+		return SupportedPhysicalMedia_UNKNOWN_DEVICE_TYPE
+	case "BREAKER":
+		return SupportedPhysicalMedia_BREAKER
+	case "VALVE":
+		return SupportedPhysicalMedia_VALVE
+	case "WASTE_WATER_METER":
+		return SupportedPhysicalMedia_WASTE_WATER_METER
+	case "GARBAGE":
+		return SupportedPhysicalMedia_GARBAGE
+	case "RADIO_CONVERTER":
+		return SupportedPhysicalMedia_RADIO_CONVERTER
+	}
+	return 0
 }
 
 func CastSupportedPhysicalMedia(structType interface{}) SupportedPhysicalMedia {
-    castFunc := func(typ interface{}) SupportedPhysicalMedia {
-        if sSupportedPhysicalMedia, ok := typ.(SupportedPhysicalMedia); ok {
-            return sSupportedPhysicalMedia
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) SupportedPhysicalMedia {
+		if sSupportedPhysicalMedia, ok := typ.(SupportedPhysicalMedia); ok {
+			return sSupportedPhysicalMedia
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m SupportedPhysicalMedia) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m SupportedPhysicalMedia) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func SupportedPhysicalMediaParse(io *utils.ReadBuffer) (SupportedPhysicalMedia, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return SupportedPhysicalMediaValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return SupportedPhysicalMediaByValue(val), nil
 }
 
 func (e SupportedPhysicalMedia) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e SupportedPhysicalMedia) String() string {
-    switch e {
-    case SupportedPhysicalMedia_OTHER:
-        return "OTHER"
-    case SupportedPhysicalMedia_OIL_METER:
-        return "OIL_METER"
-    case SupportedPhysicalMedia_ELECTRICITY_METER:
-        return "ELECTRICITY_METER"
-    case SupportedPhysicalMedia_GAS_METER:
-        return "GAS_METER"
-    case SupportedPhysicalMedia_HEAT_METER:
-        return "HEAT_METER"
-    case SupportedPhysicalMedia_STEAM_METER:
-        return "STEAM_METER"
-    case SupportedPhysicalMedia_WARM_WATER_METER:
-        return "WARM_WATER_METER"
-    case SupportedPhysicalMedia_WATER_METER:
-        return "WATER_METER"
-    case SupportedPhysicalMedia_HEAT_COST_ALLOCATOR:
-        return "HEAT_COST_ALLOCATOR"
-    case SupportedPhysicalMedia_COMPRESSED_AIR:
-        return "COMPRESSED_AIR"
-    case SupportedPhysicalMedia_COOLING_LOAD_METER_INLET:
-        return "COOLING_LOAD_METER_INLET"
-    case SupportedPhysicalMedia_COOLING_LOAD_METER_OUTLET:
-        return "COOLING_LOAD_METER_OUTLET"
-    case SupportedPhysicalMedia_HEAT_INLET:
-        return "HEAT_INLET"
-    case SupportedPhysicalMedia_HEAT_AND_COOL:
-        return "HEAT_AND_COOL"
-    case SupportedPhysicalMedia_BUS_OR_SYSTEM:
-        return "BUS_OR_SYSTEM"
-    case SupportedPhysicalMedia_UNKNOWN_DEVICE_TYPE:
-        return "UNKNOWN_DEVICE_TYPE"
-    case SupportedPhysicalMedia_BREAKER:
-        return "BREAKER"
-    case SupportedPhysicalMedia_VALVE:
-        return "VALVE"
-    case SupportedPhysicalMedia_WASTE_WATER_METER:
-        return "WASTE_WATER_METER"
-    case SupportedPhysicalMedia_GARBAGE:
-        return "GARBAGE"
-    case SupportedPhysicalMedia_RADIO_CONVERTER:
-        return "RADIO_CONVERTER"
-    }
-    return ""
+	switch e {
+	case SupportedPhysicalMedia_OTHER:
+		return "OTHER"
+	case SupportedPhysicalMedia_OIL_METER:
+		return "OIL_METER"
+	case SupportedPhysicalMedia_ELECTRICITY_METER:
+		return "ELECTRICITY_METER"
+	case SupportedPhysicalMedia_GAS_METER:
+		return "GAS_METER"
+	case SupportedPhysicalMedia_HEAT_METER:
+		return "HEAT_METER"
+	case SupportedPhysicalMedia_STEAM_METER:
+		return "STEAM_METER"
+	case SupportedPhysicalMedia_WARM_WATER_METER:
+		return "WARM_WATER_METER"
+	case SupportedPhysicalMedia_WATER_METER:
+		return "WATER_METER"
+	case SupportedPhysicalMedia_HEAT_COST_ALLOCATOR:
+		return "HEAT_COST_ALLOCATOR"
+	case SupportedPhysicalMedia_COMPRESSED_AIR:
+		return "COMPRESSED_AIR"
+	case SupportedPhysicalMedia_COOLING_LOAD_METER_INLET:
+		return "COOLING_LOAD_METER_INLET"
+	case SupportedPhysicalMedia_COOLING_LOAD_METER_OUTLET:
+		return "COOLING_LOAD_METER_OUTLET"
+	case SupportedPhysicalMedia_HEAT_INLET:
+		return "HEAT_INLET"
+	case SupportedPhysicalMedia_HEAT_AND_COOL:
+		return "HEAT_AND_COOL"
+	case SupportedPhysicalMedia_BUS_OR_SYSTEM:
+		return "BUS_OR_SYSTEM"
+	case SupportedPhysicalMedia_UNKNOWN_DEVICE_TYPE:
+		return "UNKNOWN_DEVICE_TYPE"
+	case SupportedPhysicalMedia_BREAKER:
+		return "BREAKER"
+	case SupportedPhysicalMedia_VALVE:
+		return "VALVE"
+	case SupportedPhysicalMedia_WASTE_WATER_METER:
+		return "WASTE_WATER_METER"
+	case SupportedPhysicalMedia_GARBAGE:
+		return "GARBAGE"
+	case SupportedPhysicalMedia_RADIO_CONVERTER:
+		return "RADIO_CONVERTER"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/modbus/ModbusFieldHandler.go b/plc4go/internal/plc4go/modbus/ModbusFieldHandler.go
index c320ccc..7addbb4 100644
--- a/plc4go/internal/plc4go/modbus/ModbusFieldHandler.go
+++ b/plc4go/internal/plc4go/modbus/ModbusFieldHandler.go
@@ -84,25 +84,25 @@ func NewFieldHandler() FieldHandler {
 }
 
 func (m FieldHandler) ParseQuery(query string) (model.PlcField, error) {
-	if match := utils.GetSubgropMatches(m.plc4xCoilPattern, query); match != nil {
+	if match := utils.GetSubgroupMatches(m.plc4xCoilPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_COIL, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.numericCoilPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.numericCoilPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_COIL, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.plc4xDiscreteInputPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.plc4xDiscreteInputPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_DISCRETE_INPUT, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.numericDiscreteInputPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.numericDiscreteInputPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_DISCRETE_INPUT, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.plc4xInputRegisterPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.plc4xInputRegisterPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_INPUT_REGISTER, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.numericInputRegisterPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.numericInputRegisterPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_INPUT_REGISTER, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.plc4xHoldingRegisterPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.plc4xHoldingRegisterPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_HOLDING_REGISTER, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.numericHoldingRegisterPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.numericHoldingRegisterPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_HOLDING_REGISTER, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.plc4xExtendedRegisterPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.plc4xExtendedRegisterPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_EXTENDED_REGISTER, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
-	} else if match := utils.GetSubgropMatches(m.numericExtendedRegisterPattern, query); match != nil {
+	} else if match := utils.GetSubgroupMatches(m.numericExtendedRegisterPattern, query); match != nil {
 		return NewModbusPlcFieldFromStrings(MODBUS_FIELD_EXTENDED_REGISTER, match["address"], match["quantity"], "IEC61131_"+match["datatype"])
 	}
 	return nil, errors.New("Invalid address format for address '" + query + "'")
diff --git a/plc4go/internal/plc4go/modbus/ModbusReader.go b/plc4go/internal/plc4go/modbus/ModbusReader.go
index 3c0b398..ff8439b 100644
--- a/plc4go/internal/plc4go/modbus/ModbusReader.go
+++ b/plc4go/internal/plc4go/modbus/ModbusReader.go
@@ -19,16 +19,16 @@
 package modbus
 
 import (
-    "errors"
-    modbusModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi"
-    plc4goModel "github.com/apache/plc4x/plc4go/internal/plc4go/spi/model"
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
-    "github.com/apache/plc4x/plc4go/pkg/plc4go/model"
-    "github.com/apache/plc4x/plc4go/pkg/plc4go/values"
-    "math"
-    "sync/atomic"
-    "time"
+	"errors"
+	modbusModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi"
+	plc4goModel "github.com/apache/plc4x/plc4go/internal/plc4go/spi/model"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/pkg/plc4go/model"
+	"github.com/apache/plc4x/plc4go/pkg/plc4go/values"
+	"math"
+	"sync/atomic"
+	"time"
 )
 
 type ModbusReader struct {
@@ -61,11 +61,11 @@ func (m *ModbusReader) Read(readRequest model.PlcReadRequest) <-chan model.PlcRe
 			}
 			return result
 		}
-		numWords := uint16(math.Ceil(float64(modbusField.Quantity*uint16(modbusModel.ModbusDataTypeSizesValueOf(modbusField.Datatype).DataTypeSize())) / float64(2)))
+		numWords := uint16(math.Ceil(float64(modbusField.Quantity*uint16(modbusModel.ModbusDataTypeSizesByName(modbusField.Datatype).DataTypeSize())) / float64(2)))
 		var pdu *modbusModel.ModbusPDU = nil
 		switch modbusField.FieldType {
 		case MODBUS_FIELD_COIL:
-		    pdu = modbusModel.NewModbusPDUReadCoilsRequest(modbusField.Address, modbusField.Quantity)
+			pdu = modbusModel.NewModbusPDUReadCoilsRequest(modbusField.Address, modbusField.Quantity)
 		case MODBUS_FIELD_DISCRETE_INPUT:
 			pdu = modbusModel.NewModbusPDUReadDiscreteInputsRequest(modbusField.Address, modbusField.Quantity)
 		case MODBUS_FIELD_INPUT_REGISTER:
@@ -104,39 +104,39 @@ func (m *ModbusReader) Read(readRequest model.PlcReadRequest) <-chan model.PlcRe
 
 		// Send the ADU over the wire
 		err = m.messageCodec.SendRequest(
-		    requestAdu,
-		    func(message interface{}) bool {
-                responseAdu := modbusModel.CastModbusTcpADU(message)
-                return responseAdu.TransactionIdentifier == uint16(transactionIdentifier) &&
-                    responseAdu.UnitIdentifier == requestAdu.UnitIdentifier
-            },
-            func(message interface{}) error {
-                // Convert the response into an ADU
-                responseAdu := modbusModel.CastModbusTcpADU(message)
-                // Convert the modbus response into a PLC4X response
-                readResponse, err := m.ToPlc4xReadResponse(*responseAdu, readRequest)
+			requestAdu,
+			func(message interface{}) bool {
+				responseAdu := modbusModel.CastModbusTcpADU(message)
+				return responseAdu.TransactionIdentifier == uint16(transactionIdentifier) &&
+					responseAdu.UnitIdentifier == requestAdu.UnitIdentifier
+			},
+			func(message interface{}) error {
+				// Convert the response into an ADU
+				responseAdu := modbusModel.CastModbusTcpADU(message)
+				// Convert the modbus response into a PLC4X response
+				readResponse, err := m.ToPlc4xReadResponse(*responseAdu, readRequest)
 
-                if err != nil {
-                    result <- model.PlcReadRequestResult{
-                        Request: readRequest,
-                        Err:     errors.New("Error decoding response: " + err.Error()),
-                    }
-                } else {
-                    result <- model.PlcReadRequestResult{
-                        Request:  readRequest,
-                        Response: readResponse,
-                    }
-                }
-                return nil
-            },
-            time.Second * 1)
+				if err != nil {
+					result <- model.PlcReadRequestResult{
+						Request: readRequest,
+						Err:     errors.New("Error decoding response: " + err.Error()),
+					}
+				} else {
+					result <- model.PlcReadRequestResult{
+						Request:  readRequest,
+						Response: readResponse,
+					}
+				}
+				return nil
+			},
+			time.Second*1)
 		if err != nil {
-            result <- model.PlcReadRequestResult{
-                Request:  readRequest,
-                Response: nil,
-                Err:      errors.New("error sending message: " + err.Error()),
-            }
-        }
+			result <- model.PlcReadRequestResult{
+				Request:  readRequest,
+				Response: nil,
+				Err:      errors.New("error sending message: " + err.Error()),
+			}
+		}
 	} else {
 		result <- model.PlcReadRequestResult{
 			Request:  readRequest,
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go
index 40dc989..aecd6ae 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go
@@ -19,270 +19,356 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type ModbusDataTypeSizes string
 
 type IModbusDataTypeSizes interface {
-    DataTypeSize() uint8
-    Serialize(io utils.WriteBuffer) error
+	DataTypeSize() uint8
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    ModbusDataTypeSizes_BOOL ModbusDataTypeSizes = "IEC61131_BOOL"
-    ModbusDataTypeSizes_BYTE ModbusDataTypeSizes = "IEC61131_BYTE"
-    ModbusDataTypeSizes_WORD ModbusDataTypeSizes = "IEC61131_WORD"
-    ModbusDataTypeSizes_DWORD ModbusDataTypeSizes = "IEC61131_DWORD"
-    ModbusDataTypeSizes_LWORD ModbusDataTypeSizes = "IEC61131_LWORD"
-    ModbusDataTypeSizes_SINT ModbusDataTypeSizes = "IEC61131_SINT"
-    ModbusDataTypeSizes_INT ModbusDataTypeSizes = "IEC61131_INT"
-    ModbusDataTypeSizes_DINT ModbusDataTypeSizes = "IEC61131_DINT"
-    ModbusDataTypeSizes_LINT ModbusDataTypeSizes = "IEC61131_LINT"
-    ModbusDataTypeSizes_USINT ModbusDataTypeSizes = "IEC61131_USINT"
-    ModbusDataTypeSizes_UINT ModbusDataTypeSizes = "IEC61131_UINT"
-    ModbusDataTypeSizes_UDINT ModbusDataTypeSizes = "IEC61131_UDINT"
-    ModbusDataTypeSizes_ULINT ModbusDataTypeSizes = "IEC61131_ULINT"
-    ModbusDataTypeSizes_REAL ModbusDataTypeSizes = "IEC61131_REAL"
-    ModbusDataTypeSizes_LREAL ModbusDataTypeSizes = "IEC61131_LREAL"
-    ModbusDataTypeSizes_TIME ModbusDataTypeSizes = "IEC61131_TIME"
-    ModbusDataTypeSizes_LTIME ModbusDataTypeSizes = "IEC61131_LTIME"
-    ModbusDataTypeSizes_DATE ModbusDataTypeSizes = "IEC61131_DATE"
-    ModbusDataTypeSizes_LDATE ModbusDataTypeSizes = "IEC61131_LDATE"
-    ModbusDataTypeSizes_TIME_OF_DAY ModbusDataTypeSizes = "IEC61131_TIME_OF_DAY"
-    ModbusDataTypeSizes_LTIME_OF_DAY ModbusDataTypeSizes = "IEC61131_LTIME_OF_DAY"
-    ModbusDataTypeSizes_DATE_AND_TIME ModbusDataTypeSizes = "IEC61131_DATE_AND_TIME"
-    ModbusDataTypeSizes_LDATE_AND_TIME ModbusDataTypeSizes = "IEC61131_LDATE_AND_TIME"
-    ModbusDataTypeSizes_CHAR ModbusDataTypeSizes = "IEC61131_CHAR"
-    ModbusDataTypeSizes_WCHAR ModbusDataTypeSizes = "IEC61131_WCHAR"
-    ModbusDataTypeSizes_STRING ModbusDataTypeSizes = "IEC61131_STRING"
-    ModbusDataTypeSizes_WSTRING ModbusDataTypeSizes = "IEC61131_WSTRING"
+const (
+	ModbusDataTypeSizes_BOOL           ModbusDataTypeSizes = "IEC61131_BOOL"
+	ModbusDataTypeSizes_BYTE           ModbusDataTypeSizes = "IEC61131_BYTE"
+	ModbusDataTypeSizes_WORD           ModbusDataTypeSizes = "IEC61131_WORD"
+	ModbusDataTypeSizes_DWORD          ModbusDataTypeSizes = "IEC61131_DWORD"
+	ModbusDataTypeSizes_LWORD          ModbusDataTypeSizes = "IEC61131_LWORD"
+	ModbusDataTypeSizes_SINT           ModbusDataTypeSizes = "IEC61131_SINT"
+	ModbusDataTypeSizes_INT            ModbusDataTypeSizes = "IEC61131_INT"
+	ModbusDataTypeSizes_DINT           ModbusDataTypeSizes = "IEC61131_DINT"
+	ModbusDataTypeSizes_LINT           ModbusDataTypeSizes = "IEC61131_LINT"
+	ModbusDataTypeSizes_USINT          ModbusDataTypeSizes = "IEC61131_USINT"
+	ModbusDataTypeSizes_UINT           ModbusDataTypeSizes = "IEC61131_UINT"
+	ModbusDataTypeSizes_UDINT          ModbusDataTypeSizes = "IEC61131_UDINT"
+	ModbusDataTypeSizes_ULINT          ModbusDataTypeSizes = "IEC61131_ULINT"
+	ModbusDataTypeSizes_REAL           ModbusDataTypeSizes = "IEC61131_REAL"
+	ModbusDataTypeSizes_LREAL          ModbusDataTypeSizes = "IEC61131_LREAL"
+	ModbusDataTypeSizes_TIME           ModbusDataTypeSizes = "IEC61131_TIME"
+	ModbusDataTypeSizes_LTIME          ModbusDataTypeSizes = "IEC61131_LTIME"
+	ModbusDataTypeSizes_DATE           ModbusDataTypeSizes = "IEC61131_DATE"
+	ModbusDataTypeSizes_LDATE          ModbusDataTypeSizes = "IEC61131_LDATE"
+	ModbusDataTypeSizes_TIME_OF_DAY    ModbusDataTypeSizes = "IEC61131_TIME_OF_DAY"
+	ModbusDataTypeSizes_LTIME_OF_DAY   ModbusDataTypeSizes = "IEC61131_LTIME_OF_DAY"
+	ModbusDataTypeSizes_DATE_AND_TIME  ModbusDataTypeSizes = "IEC61131_DATE_AND_TIME"
+	ModbusDataTypeSizes_LDATE_AND_TIME ModbusDataTypeSizes = "IEC61131_LDATE_AND_TIME"
+	ModbusDataTypeSizes_CHAR           ModbusDataTypeSizes = "IEC61131_CHAR"
+	ModbusDataTypeSizes_WCHAR          ModbusDataTypeSizes = "IEC61131_WCHAR"
+	ModbusDataTypeSizes_STRING         ModbusDataTypeSizes = "IEC61131_STRING"
+	ModbusDataTypeSizes_WSTRING        ModbusDataTypeSizes = "IEC61131_WSTRING"
 )
 
-
 func (e ModbusDataTypeSizes) DataTypeSize() uint8 {
-    switch e  {
-        case "IEC61131_BOOL": { /* 'IEC61131_BOOL' */
-            return 1
-        }
-        case "IEC61131_BYTE": { /* 'IEC61131_BYTE' */
-            return 1
-        }
-        case "IEC61131_CHAR": { /* 'IEC61131_CHAR' */
-            return 1
-        }
-        case "IEC61131_DATE": { /* 'IEC61131_DATE' */
-            return 8
-        }
-        case "IEC61131_DATE_AND_TIME": { /* 'IEC61131_DATE_AND_TIME' */
-            return 8
-        }
-        case "IEC61131_DINT": { /* 'IEC61131_DINT' */
-            return 4
-        }
-        case "IEC61131_DWORD": { /* 'IEC61131_DWORD' */
-            return 4
-        }
-        case "IEC61131_INT": { /* 'IEC61131_INT' */
-            return 2
-        }
-        case "IEC61131_LDATE": { /* 'IEC61131_LDATE' */
-            return 8
-        }
-        case "IEC61131_LDATE_AND_TIME": { /* 'IEC61131_LDATE_AND_TIME' */
-            return 8
-        }
-        case "IEC61131_LINT": { /* 'IEC61131_LINT' */
-            return 8
-        }
-        case "IEC61131_LREAL": { /* 'IEC61131_LREAL' */
-            return 8
-        }
-        case "IEC61131_LTIME": { /* 'IEC61131_LTIME' */
-            return 8
-        }
-        case "IEC61131_LTIME_OF_DAY": { /* 'IEC61131_LTIME_OF_DAY' */
-            return 8
-        }
-        case "IEC61131_LWORD": { /* 'IEC61131_LWORD' */
-            return 8
-        }
-        case "IEC61131_REAL": { /* 'IEC61131_REAL' */
-            return 4
-        }
-        case "IEC61131_SINT": { /* 'IEC61131_SINT' */
-            return 1
-        }
-        case "IEC61131_STRING": { /* 'IEC61131_STRING' */
-            return 1
-        }
-        case "IEC61131_TIME": { /* 'IEC61131_TIME' */
-            return 8
-        }
-        case "IEC61131_TIME_OF_DAY": { /* 'IEC61131_TIME_OF_DAY' */
-            return 8
-        }
-        case "IEC61131_UDINT": { /* 'IEC61131_UDINT' */
-            return 4
-        }
-        case "IEC61131_UINT": { /* 'IEC61131_UINT' */
-            return 2
-        }
-        case "IEC61131_ULINT": { /* 'IEC61131_ULINT' */
-            return 8
-        }
-        case "IEC61131_USINT": { /* 'IEC61131_USINT' */
-            return 1
-        }
-        case "IEC61131_WCHAR": { /* 'IEC61131_WCHAR' */
-            return 2
-        }
-        case "IEC61131_WORD": { /* 'IEC61131_WORD' */
-            return 2
-        }
-        case "IEC61131_WSTRING": { /* 'IEC61131_WSTRING' */
-            return 2
-        }
-        default: {
-            return 0
-        }
-    }
+	switch e {
+	case "IEC61131_BOOL":
+		{ /* 'IEC61131_BOOL' */
+			return 1
+		}
+	case "IEC61131_BYTE":
+		{ /* 'IEC61131_BYTE' */
+			return 1
+		}
+	case "IEC61131_CHAR":
+		{ /* 'IEC61131_CHAR' */
+			return 1
+		}
+	case "IEC61131_DATE":
+		{ /* 'IEC61131_DATE' */
+			return 8
+		}
+	case "IEC61131_DATE_AND_TIME":
+		{ /* 'IEC61131_DATE_AND_TIME' */
+			return 8
+		}
+	case "IEC61131_DINT":
+		{ /* 'IEC61131_DINT' */
+			return 4
+		}
+	case "IEC61131_DWORD":
+		{ /* 'IEC61131_DWORD' */
+			return 4
+		}
+	case "IEC61131_INT":
+		{ /* 'IEC61131_INT' */
+			return 2
+		}
+	case "IEC61131_LDATE":
+		{ /* 'IEC61131_LDATE' */
+			return 8
+		}
+	case "IEC61131_LDATE_AND_TIME":
+		{ /* 'IEC61131_LDATE_AND_TIME' */
+			return 8
+		}
+	case "IEC61131_LINT":
+		{ /* 'IEC61131_LINT' */
+			return 8
+		}
+	case "IEC61131_LREAL":
+		{ /* 'IEC61131_LREAL' */
+			return 8
+		}
+	case "IEC61131_LTIME":
+		{ /* 'IEC61131_LTIME' */
+			return 8
+		}
+	case "IEC61131_LTIME_OF_DAY":
+		{ /* 'IEC61131_LTIME_OF_DAY' */
+			return 8
+		}
+	case "IEC61131_LWORD":
+		{ /* 'IEC61131_LWORD' */
+			return 8
+		}
+	case "IEC61131_REAL":
+		{ /* 'IEC61131_REAL' */
+			return 4
+		}
+	case "IEC61131_SINT":
+		{ /* 'IEC61131_SINT' */
+			return 1
+		}
+	case "IEC61131_STRING":
+		{ /* 'IEC61131_STRING' */
+			return 1
+		}
+	case "IEC61131_TIME":
+		{ /* 'IEC61131_TIME' */
+			return 8
+		}
+	case "IEC61131_TIME_OF_DAY":
+		{ /* 'IEC61131_TIME_OF_DAY' */
+			return 8
+		}
+	case "IEC61131_UDINT":
+		{ /* 'IEC61131_UDINT' */
+			return 4
+		}
+	case "IEC61131_UINT":
+		{ /* 'IEC61131_UINT' */
+			return 2
+		}
+	case "IEC61131_ULINT":
+		{ /* 'IEC61131_ULINT' */
+			return 8
+		}
+	case "IEC61131_USINT":
+		{ /* 'IEC61131_USINT' */
+			return 1
+		}
+	case "IEC61131_WCHAR":
+		{ /* 'IEC61131_WCHAR' */
+			return 2
+		}
+	case "IEC61131_WORD":
+		{ /* 'IEC61131_WORD' */
+			return 2
+		}
+	case "IEC61131_WSTRING":
+		{ /* 'IEC61131_WSTRING' */
+			return 2
+		}
+	default:
+		{
+			return 0
+		}
+	}
+}
+func ModbusDataTypeSizesByValue(value string) ModbusDataTypeSizes {
+	switch value {
+	case "IEC61131_BOOL":
+		return ModbusDataTypeSizes_BOOL
+	case "IEC61131_BYTE":
+		return ModbusDataTypeSizes_BYTE
+	case "IEC61131_CHAR":
+		return ModbusDataTypeSizes_CHAR
+	case "IEC61131_DATE":
+		return ModbusDataTypeSizes_DATE
+	case "IEC61131_DATE_AND_TIME":
+		return ModbusDataTypeSizes_DATE_AND_TIME
+	case "IEC61131_DINT":
+		return ModbusDataTypeSizes_DINT
+	case "IEC61131_DWORD":
+		return ModbusDataTypeSizes_DWORD
+	case "IEC61131_INT":
+		return ModbusDataTypeSizes_INT
+	case "IEC61131_LDATE":
+		return ModbusDataTypeSizes_LDATE
+	case "IEC61131_LDATE_AND_TIME":
+		return ModbusDataTypeSizes_LDATE_AND_TIME
+	case "IEC61131_LINT":
+		return ModbusDataTypeSizes_LINT
+	case "IEC61131_LREAL":
+		return ModbusDataTypeSizes_LREAL
+	case "IEC61131_LTIME":
+		return ModbusDataTypeSizes_LTIME
+	case "IEC61131_LTIME_OF_DAY":
+		return ModbusDataTypeSizes_LTIME_OF_DAY
+	case "IEC61131_LWORD":
+		return ModbusDataTypeSizes_LWORD
+	case "IEC61131_REAL":
+		return ModbusDataTypeSizes_REAL
+	case "IEC61131_SINT":
+		return ModbusDataTypeSizes_SINT
+	case "IEC61131_STRING":
+		return ModbusDataTypeSizes_STRING
+	case "IEC61131_TIME":
+		return ModbusDataTypeSizes_TIME
+	case "IEC61131_TIME_OF_DAY":
+		return ModbusDataTypeSizes_TIME_OF_DAY
+	case "IEC61131_UDINT":
+		return ModbusDataTypeSizes_UDINT
+	case "IEC61131_UINT":
+		return ModbusDataTypeSizes_UINT
+	case "IEC61131_ULINT":
+		return ModbusDataTypeSizes_ULINT
+	case "IEC61131_USINT":
+		return ModbusDataTypeSizes_USINT
+	case "IEC61131_WCHAR":
+		return ModbusDataTypeSizes_WCHAR
+	case "IEC61131_WORD":
+		return ModbusDataTypeSizes_WORD
+	case "IEC61131_WSTRING":
+		return ModbusDataTypeSizes_WSTRING
+	}
+	return ""
 }
-func ModbusDataTypeSizesValueOf(value string) ModbusDataTypeSizes {
-    switch value {
-        case "IEC61131_BOOL":
-            return ModbusDataTypeSizes_BOOL
-        case "IEC61131_BYTE":
-            return ModbusDataTypeSizes_BYTE
-        case "IEC61131_CHAR":
-            return ModbusDataTypeSizes_CHAR
-        case "IEC61131_DATE":
-            return ModbusDataTypeSizes_DATE
-        case "IEC61131_DATE_AND_TIME":
-            return ModbusDataTypeSizes_DATE_AND_TIME
-        case "IEC61131_DINT":
-            return ModbusDataTypeSizes_DINT
-        case "IEC61131_DWORD":
-            return ModbusDataTypeSizes_DWORD
-        case "IEC61131_INT":
-            return ModbusDataTypeSizes_INT
-        case "IEC61131_LDATE":
-            return ModbusDataTypeSizes_LDATE
-        case "IEC61131_LDATE_AND_TIME":
-            return ModbusDataTypeSizes_LDATE_AND_TIME
-        case "IEC61131_LINT":
-            return ModbusDataTypeSizes_LINT
-        case "IEC61131_LREAL":
-            return ModbusDataTypeSizes_LREAL
-        case "IEC61131_LTIME":
-            return ModbusDataTypeSizes_LTIME
-        case "IEC61131_LTIME_OF_DAY":
-            return ModbusDataTypeSizes_LTIME_OF_DAY
-        case "IEC61131_LWORD":
-            return ModbusDataTypeSizes_LWORD
-        case "IEC61131_REAL":
-            return ModbusDataTypeSizes_REAL
-        case "IEC61131_SINT":
-            return ModbusDataTypeSizes_SINT
-        case "IEC61131_STRING":
-            return ModbusDataTypeSizes_STRING
-        case "IEC61131_TIME":
-            return ModbusDataTypeSizes_TIME
-        case "IEC61131_TIME_OF_DAY":
-            return ModbusDataTypeSizes_TIME_OF_DAY
-        case "IEC61131_UDINT":
-            return ModbusDataTypeSizes_UDINT
-        case "IEC61131_UINT":
-            return ModbusDataTypeSizes_UINT
-        case "IEC61131_ULINT":
-            return ModbusDataTypeSizes_ULINT
-        case "IEC61131_USINT":
-            return ModbusDataTypeSizes_USINT
-        case "IEC61131_WCHAR":
-            return ModbusDataTypeSizes_WCHAR
-        case "IEC61131_WORD":
-            return ModbusDataTypeSizes_WORD
-        case "IEC61131_WSTRING":
-            return ModbusDataTypeSizes_WSTRING
-    }
-    return ""
+
+func ModbusDataTypeSizesByName(value string) ModbusDataTypeSizes {
+	switch value {
+	case "BOOL":
+		return ModbusDataTypeSizes_BOOL
+	case "BYTE":
+		return ModbusDataTypeSizes_BYTE
+	case "CHAR":
+		return ModbusDataTypeSizes_CHAR
+	case "DATE":
+		return ModbusDataTypeSizes_DATE
+	case "DATE_AND_TIME":
+		return ModbusDataTypeSizes_DATE_AND_TIME
+	case "DINT":
+		return ModbusDataTypeSizes_DINT
+	case "DWORD":
+		return ModbusDataTypeSizes_DWORD
+	case "INT":
+		return ModbusDataTypeSizes_INT
+	case "LDATE":
+		return ModbusDataTypeSizes_LDATE
+	case "LDATE_AND_TIME":
+		return ModbusDataTypeSizes_LDATE_AND_TIME
+	case "LINT":
+		return ModbusDataTypeSizes_LINT
+	case "LREAL":
+		return ModbusDataTypeSizes_LREAL
+	case "LTIME":
+		return ModbusDataTypeSizes_LTIME
+	case "LTIME_OF_DAY":
+		return ModbusDataTypeSizes_LTIME_OF_DAY
+	case "LWORD":
+		return ModbusDataTypeSizes_LWORD
+	case "REAL":
+		return ModbusDataTypeSizes_REAL
+	case "SINT":
+		return ModbusDataTypeSizes_SINT
+	case "STRING":
+		return ModbusDataTypeSizes_STRING
+	case "TIME":
+		return ModbusDataTypeSizes_TIME
+	case "TIME_OF_DAY":
+		return ModbusDataTypeSizes_TIME_OF_DAY
+	case "UDINT":
+		return ModbusDataTypeSizes_UDINT
+	case "UINT":
+		return ModbusDataTypeSizes_UINT
+	case "ULINT":
+		return ModbusDataTypeSizes_ULINT
+	case "USINT":
+		return ModbusDataTypeSizes_USINT
+	case "WCHAR":
+		return ModbusDataTypeSizes_WCHAR
+	case "WORD":
+		return ModbusDataTypeSizes_WORD
+	case "WSTRING":
+		return ModbusDataTypeSizes_WSTRING
+	}
+	return ""
 }
 
 func CastModbusDataTypeSizes(structType interface{}) ModbusDataTypeSizes {
-    castFunc := func(typ interface{}) ModbusDataTypeSizes {
-        if sModbusDataTypeSizes, ok := typ.(ModbusDataTypeSizes); ok {
-            return sModbusDataTypeSizes
-        }
-        return ""
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ModbusDataTypeSizes {
+		if sModbusDataTypeSizes, ok := typ.(ModbusDataTypeSizes); ok {
+			return sModbusDataTypeSizes
+		}
+		return ""
+	}
+	return castFunc(structType)
 }
 
 func (m ModbusDataTypeSizes) LengthInBits() uint16 {
-    return 0
+	return 0
 }
 
 func (m ModbusDataTypeSizes) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
-
 func (e ModbusDataTypeSizes) String() string {
-    switch e {
-    case ModbusDataTypeSizes_BOOL:
-        return "BOOL"
-    case ModbusDataTypeSizes_BYTE:
-        return "BYTE"
-    case ModbusDataTypeSizes_CHAR:
-        return "CHAR"
-    case ModbusDataTypeSizes_DATE:
-        return "DATE"
-    case ModbusDataTypeSizes_DATE_AND_TIME:
-        return "DATE_AND_TIME"
-    case ModbusDataTypeSizes_DINT:
-        return "DINT"
-    case ModbusDataTypeSizes_DWORD:
-        return "DWORD"
-    case ModbusDataTypeSizes_INT:
-        return "INT"
-    case ModbusDataTypeSizes_LDATE:
-        return "LDATE"
-    case ModbusDataTypeSizes_LDATE_AND_TIME:
-        return "LDATE_AND_TIME"
-    case ModbusDataTypeSizes_LINT:
-        return "LINT"
-    case ModbusDataTypeSizes_LREAL:
-        return "LREAL"
-    case ModbusDataTypeSizes_LTIME:
-        return "LTIME"
-    case ModbusDataTypeSizes_LTIME_OF_DAY:
-        return "LTIME_OF_DAY"
-    case ModbusDataTypeSizes_LWORD:
-        return "LWORD"
-    case ModbusDataTypeSizes_REAL:
-        return "REAL"
-    case ModbusDataTypeSizes_SINT:
-        return "SINT"
-    case ModbusDataTypeSizes_STRING:
-        return "STRING"
-    case ModbusDataTypeSizes_TIME:
-        return "TIME"
-    case ModbusDataTypeSizes_TIME_OF_DAY:
-        return "TIME_OF_DAY"
-    case ModbusDataTypeSizes_UDINT:
-        return "UDINT"
-    case ModbusDataTypeSizes_UINT:
-        return "UINT"
-    case ModbusDataTypeSizes_ULINT:
-        return "ULINT"
-    case ModbusDataTypeSizes_USINT:
-        return "USINT"
-    case ModbusDataTypeSizes_WCHAR:
-        return "WCHAR"
-    case ModbusDataTypeSizes_WORD:
-        return "WORD"
-    case ModbusDataTypeSizes_WSTRING:
-        return "WSTRING"
-    }
-    return ""
+	switch e {
+	case ModbusDataTypeSizes_BOOL:
+		return "BOOL"
+	case ModbusDataTypeSizes_BYTE:
+		return "BYTE"
+	case ModbusDataTypeSizes_CHAR:
+		return "CHAR"
+	case ModbusDataTypeSizes_DATE:
+		return "DATE"
+	case ModbusDataTypeSizes_DATE_AND_TIME:
+		return "DATE_AND_TIME"
+	case ModbusDataTypeSizes_DINT:
+		return "DINT"
+	case ModbusDataTypeSizes_DWORD:
+		return "DWORD"
+	case ModbusDataTypeSizes_INT:
+		return "INT"
+	case ModbusDataTypeSizes_LDATE:
+		return "LDATE"
+	case ModbusDataTypeSizes_LDATE_AND_TIME:
+		return "LDATE_AND_TIME"
+	case ModbusDataTypeSizes_LINT:
+		return "LINT"
+	case ModbusDataTypeSizes_LREAL:
+		return "LREAL"
+	case ModbusDataTypeSizes_LTIME:
+		return "LTIME"
+	case ModbusDataTypeSizes_LTIME_OF_DAY:
+		return "LTIME_OF_DAY"
+	case ModbusDataTypeSizes_LWORD:
+		return "LWORD"
+	case ModbusDataTypeSizes_REAL:
+		return "REAL"
+	case ModbusDataTypeSizes_SINT:
+		return "SINT"
+	case ModbusDataTypeSizes_STRING:
+		return "STRING"
+	case ModbusDataTypeSizes_TIME:
+		return "TIME"
+	case ModbusDataTypeSizes_TIME_OF_DAY:
+		return "TIME_OF_DAY"
+	case ModbusDataTypeSizes_UDINT:
+		return "UDINT"
+	case ModbusDataTypeSizes_UINT:
+		return "UINT"
+	case ModbusDataTypeSizes_ULINT:
+		return "ULINT"
+	case ModbusDataTypeSizes_USINT:
+		return "USINT"
+	case ModbusDataTypeSizes_WCHAR:
+		return "WCHAR"
+	case ModbusDataTypeSizes_WORD:
+		return "WORD"
+	case ModbusDataTypeSizes_WSTRING:
+		return "WSTRING"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
index a3e3086..8d34c3c 100644
--- a/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
+++ b/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
@@ -19,107 +19,133 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type ModbusErrorCode uint8
 
 type IModbusErrorCode interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    ModbusErrorCode_ILLEGAL_FUNCTION ModbusErrorCode = 1
-    ModbusErrorCode_ILLEGAL_DATA_ADDRESS ModbusErrorCode = 2
-    ModbusErrorCode_ILLEGAL_DATA_VALUE ModbusErrorCode = 3
-    ModbusErrorCode_SLAVE_DEVICE_FAILURE ModbusErrorCode = 4
-    ModbusErrorCode_ACKNOWLEDGE ModbusErrorCode = 5
-    ModbusErrorCode_SLAVE_DEVICE_BUSY ModbusErrorCode = 6
-    ModbusErrorCode_NEGATIVE_ACKNOWLEDGE ModbusErrorCode = 7
-    ModbusErrorCode_MEMORY_PARITY_ERROR ModbusErrorCode = 8
-    ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE ModbusErrorCode = 10
-    ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND ModbusErrorCode = 11
+const (
+	ModbusErrorCode_ILLEGAL_FUNCTION                        ModbusErrorCode = 1
+	ModbusErrorCode_ILLEGAL_DATA_ADDRESS                    ModbusErrorCode = 2
+	ModbusErrorCode_ILLEGAL_DATA_VALUE                      ModbusErrorCode = 3
+	ModbusErrorCode_SLAVE_DEVICE_FAILURE                    ModbusErrorCode = 4
+	ModbusErrorCode_ACKNOWLEDGE                             ModbusErrorCode = 5
+	ModbusErrorCode_SLAVE_DEVICE_BUSY                       ModbusErrorCode = 6
+	ModbusErrorCode_NEGATIVE_ACKNOWLEDGE                    ModbusErrorCode = 7
+	ModbusErrorCode_MEMORY_PARITY_ERROR                     ModbusErrorCode = 8
+	ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE                ModbusErrorCode = 10
+	ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND ModbusErrorCode = 11
 )
 
-func ModbusErrorCodeValueOf(value uint8) ModbusErrorCode {
-    switch value {
-        case 1:
-            return ModbusErrorCode_ILLEGAL_FUNCTION
-        case 10:
-            return ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE
-        case 11:
-            return ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND
-        case 2:
-            return ModbusErrorCode_ILLEGAL_DATA_ADDRESS
-        case 3:
-            return ModbusErrorCode_ILLEGAL_DATA_VALUE
-        case 4:
-            return ModbusErrorCode_SLAVE_DEVICE_FAILURE
-        case 5:
-            return ModbusErrorCode_ACKNOWLEDGE
-        case 6:
-            return ModbusErrorCode_SLAVE_DEVICE_BUSY
-        case 7:
-            return ModbusErrorCode_NEGATIVE_ACKNOWLEDGE
-        case 8:
-            return ModbusErrorCode_MEMORY_PARITY_ERROR
-    }
-    return 0
+func ModbusErrorCodeByValue(value uint8) ModbusErrorCode {
+	switch value {
+	case 1:
+		return ModbusErrorCode_ILLEGAL_FUNCTION
+	case 10:
+		return ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE
+	case 11:
+		return ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND
+	case 2:
+		return ModbusErrorCode_ILLEGAL_DATA_ADDRESS
+	case 3:
+		return ModbusErrorCode_ILLEGAL_DATA_VALUE
+	case 4:
+		return ModbusErrorCode_SLAVE_DEVICE_FAILURE
+	case 5:
+		return ModbusErrorCode_ACKNOWLEDGE
+	case 6:
+		return ModbusErrorCode_SLAVE_DEVICE_BUSY
+	case 7:
+		return ModbusErrorCode_NEGATIVE_ACKNOWLEDGE
+	case 8:
+		return ModbusErrorCode_MEMORY_PARITY_ERROR
+	}
+	return 0
+}
+
+func ModbusErrorCodeByName(value string) ModbusErrorCode {
+	switch value {
+	case "ILLEGAL_FUNCTION":
+		return ModbusErrorCode_ILLEGAL_FUNCTION
+	case "GATEWAY_PATH_UNAVAILABLE":
+		return ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE
+	case "GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND":
+		return ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND
+	case "ILLEGAL_DATA_ADDRESS":
+		return ModbusErrorCode_ILLEGAL_DATA_ADDRESS
+	case "ILLEGAL_DATA_VALUE":
+		return ModbusErrorCode_ILLEGAL_DATA_VALUE
+	case "SLAVE_DEVICE_FAILURE":
+		return ModbusErrorCode_SLAVE_DEVICE_FAILURE
+	case "ACKNOWLEDGE":
+		return ModbusErrorCode_ACKNOWLEDGE
+	case "SLAVE_DEVICE_BUSY":
+		return ModbusErrorCode_SLAVE_DEVICE_BUSY
+	case "NEGATIVE_ACKNOWLEDGE":
+		return ModbusErrorCode_NEGATIVE_ACKNOWLEDGE
+	case "MEMORY_PARITY_ERROR":
+		return ModbusErrorCode_MEMORY_PARITY_ERROR
+	}
+	return 0
 }
 
 func CastModbusErrorCode(structType interface{}) ModbusErrorCode {
-    castFunc := func(typ interface{}) ModbusErrorCode {
-        if sModbusErrorCode, ok := typ.(ModbusErrorCode); ok {
-            return sModbusErrorCode
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) ModbusErrorCode {
+		if sModbusErrorCode, ok := typ.(ModbusErrorCode); ok {
+			return sModbusErrorCode
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m ModbusErrorCode) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m ModbusErrorCode) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func ModbusErrorCodeParse(io *utils.ReadBuffer) (ModbusErrorCode, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return ModbusErrorCodeValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return ModbusErrorCodeByValue(val), nil
 }
 
 func (e ModbusErrorCode) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e ModbusErrorCode) String() string {
-    switch e {
-    case ModbusErrorCode_ILLEGAL_FUNCTION:
-        return "ILLEGAL_FUNCTION"
-    case ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE:
-        return "GATEWAY_PATH_UNAVAILABLE"
-    case ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND:
-        return "GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND"
-    case ModbusErrorCode_ILLEGAL_DATA_ADDRESS:
-        return "ILLEGAL_DATA_ADDRESS"
-    case ModbusErrorCode_ILLEGAL_DATA_VALUE:
-        return "ILLEGAL_DATA_VALUE"
-    case ModbusErrorCode_SLAVE_DEVICE_FAILURE:
-        return "SLAVE_DEVICE_FAILURE"
-    case ModbusErrorCode_ACKNOWLEDGE:
-        return "ACKNOWLEDGE"
-    case ModbusErrorCode_SLAVE_DEVICE_BUSY:
-        return "SLAVE_DEVICE_BUSY"
-    case ModbusErrorCode_NEGATIVE_ACKNOWLEDGE:
-        return "NEGATIVE_ACKNOWLEDGE"
-    case ModbusErrorCode_MEMORY_PARITY_ERROR:
-        return "MEMORY_PARITY_ERROR"
-    }
-    return ""
+	switch e {
+	case ModbusErrorCode_ILLEGAL_FUNCTION:
+		return "ILLEGAL_FUNCTION"
+	case ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE:
+		return "GATEWAY_PATH_UNAVAILABLE"
+	case ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND:
+		return "GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND"
+	case ModbusErrorCode_ILLEGAL_DATA_ADDRESS:
+		return "ILLEGAL_DATA_ADDRESS"
+	case ModbusErrorCode_ILLEGAL_DATA_VALUE:
+		return "ILLEGAL_DATA_VALUE"
+	case ModbusErrorCode_SLAVE_DEVICE_FAILURE:
+		return "SLAVE_DEVICE_FAILURE"
+	case ModbusErrorCode_ACKNOWLEDGE:
+		return "ACKNOWLEDGE"
+	case ModbusErrorCode_SLAVE_DEVICE_BUSY:
+		return "SLAVE_DEVICE_BUSY"
+	case ModbusErrorCode_NEGATIVE_ACKNOWLEDGE:
+		return "NEGATIVE_ACKNOWLEDGE"
+	case ModbusErrorCode_MEMORY_PARITY_ERROR:
+		return "MEMORY_PARITY_ERROR"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
index fc50b35..b3518e4 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPProtocolClass.go
@@ -19,82 +19,98 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type COTPProtocolClass int8
 
 type ICOTPProtocolClass interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    COTPProtocolClass_CLASS_0 COTPProtocolClass = 0x00
-    COTPProtocolClass_CLASS_1 COTPProtocolClass = 0x10
-    COTPProtocolClass_CLASS_2 COTPProtocolClass = 0x20
-    COTPProtocolClass_CLASS_3 COTPProtocolClass = 0x30
-    COTPProtocolClass_CLASS_4 COTPProtocolClass = 0x40
+const (
+	COTPProtocolClass_CLASS_0 COTPProtocolClass = 0x00
+	COTPProtocolClass_CLASS_1 COTPProtocolClass = 0x10
+	COTPProtocolClass_CLASS_2 COTPProtocolClass = 0x20
+	COTPProtocolClass_CLASS_3 COTPProtocolClass = 0x30
+	COTPProtocolClass_CLASS_4 COTPProtocolClass = 0x40
 )
 
-func COTPProtocolClassValueOf(value int8) COTPProtocolClass {
-    switch value {
-        case 0x00:
-            return COTPProtocolClass_CLASS_0
-        case 0x10:
-            return COTPProtocolClass_CLASS_1
-        case 0x20:
-            return COTPProtocolClass_CLASS_2
-        case 0x30:
-            return COTPProtocolClass_CLASS_3
-        case 0x40:
-            return COTPProtocolClass_CLASS_4
-    }
-    return 0
+func COTPProtocolClassByValue(value int8) COTPProtocolClass {
+	switch value {
+	case 0x00:
+		return COTPProtocolClass_CLASS_0
+	case 0x10:
+		return COTPProtocolClass_CLASS_1
+	case 0x20:
+		return COTPProtocolClass_CLASS_2
+	case 0x30:
+		return COTPProtocolClass_CLASS_3
+	case 0x40:
+		return COTPProtocolClass_CLASS_4
+	}
+	return 0
+}
+
+func COTPProtocolClassByName(value string) COTPProtocolClass {
+	switch value {
+	case "CLASS_0":
+		return COTPProtocolClass_CLASS_0
+	case "CLASS_1":
+		return COTPProtocolClass_CLASS_1
+	case "CLASS_2":
+		return COTPProtocolClass_CLASS_2
+	case "CLASS_3":
+		return COTPProtocolClass_CLASS_3
+	case "CLASS_4":
+		return COTPProtocolClass_CLASS_4
+	}
+	return 0
 }
 
 func CastCOTPProtocolClass(structType interface{}) COTPProtocolClass {
-    castFunc := func(typ interface{}) COTPProtocolClass {
-        if sCOTPProtocolClass, ok := typ.(COTPProtocolClass); ok {
-            return sCOTPProtocolClass
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) COTPProtocolClass {
+		if sCOTPProtocolClass, ok := typ.(COTPProtocolClass); ok {
+			return sCOTPProtocolClass
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m COTPProtocolClass) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m COTPProtocolClass) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func COTPProtocolClassParse(io *utils.ReadBuffer) (COTPProtocolClass, error) {
-    val, err := io.ReadInt8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return COTPProtocolClassValueOf(val), nil
+	val, err := io.ReadInt8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return COTPProtocolClassByValue(val), nil
 }
 
 func (e COTPProtocolClass) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteInt8(8, int8(e))
-    return err
+	err := io.WriteInt8(8, int8(e))
+	return err
 }
 
 func (e COTPProtocolClass) String() string {
-    switch e {
-    case COTPProtocolClass_CLASS_0:
-        return "CLASS_0"
-    case COTPProtocolClass_CLASS_1:
-        return "CLASS_1"
-    case COTPProtocolClass_CLASS_2:
-        return "CLASS_2"
-    case COTPProtocolClass_CLASS_3:
-        return "CLASS_3"
-    case COTPProtocolClass_CLASS_4:
-        return "CLASS_4"
-    }
-    return ""
+	switch e {
+	case COTPProtocolClass_CLASS_0:
+		return "CLASS_0"
+	case COTPProtocolClass_CLASS_1:
+		return "CLASS_1"
+	case COTPProtocolClass_CLASS_2:
+		return "CLASS_2"
+	case COTPProtocolClass_CLASS_3:
+		return "CLASS_3"
+	case COTPProtocolClass_CLASS_4:
+		return "CLASS_4"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go b/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
index 1aa9c21..e196843 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/COTPTpduSize.go
@@ -19,122 +19,149 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type COTPTpduSize int8
 
 type ICOTPTpduSize interface {
-    SizeInBytes() uint16
-    Serialize(io utils.WriteBuffer) error
+	SizeInBytes() uint16
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    COTPTpduSize_SIZE_128 COTPTpduSize = 0x07
-    COTPTpduSize_SIZE_256 COTPTpduSize = 0x08
-    COTPTpduSize_SIZE_512 COTPTpduSize = 0x09
-    COTPTpduSize_SIZE_1024 COTPTpduSize = 0x0a
-    COTPTpduSize_SIZE_2048 COTPTpduSize = 0x0b
-    COTPTpduSize_SIZE_4096 COTPTpduSize = 0x0c
-    COTPTpduSize_SIZE_8192 COTPTpduSize = 0x0d
+const (
+	COTPTpduSize_SIZE_128  COTPTpduSize = 0x07
+	COTPTpduSize_SIZE_256  COTPTpduSize = 0x08
+	COTPTpduSize_SIZE_512  COTPTpduSize = 0x09
+	COTPTpduSize_SIZE_1024 COTPTpduSize = 0x0a
+	COTPTpduSize_SIZE_2048 COTPTpduSize = 0x0b
+	COTPTpduSize_SIZE_4096 COTPTpduSize = 0x0c
+	COTPTpduSize_SIZE_8192 COTPTpduSize = 0x0d
 )
 
-
 func (e COTPTpduSize) SizeInBytes() uint16 {
-    switch e  {
-        case 0x07: { /* '0x07' */
-            return 128
-        }
-        case 0x08: { /* '0x08' */
-            return 256
-        }
-        case 0x09: { /* '0x09' */
-            return 512
-        }
-        case 0x0a: { /* '0x0a' */
-            return 1024
-        }
-        case 0x0b: { /* '0x0b' */
-            return 2048
-        }
-        case 0x0c: { /* '0x0c' */
-            return 4096
-        }
-        case 0x0d: { /* '0x0d' */
-            return 8192
-        }
-        default: {
-            return 0
-        }
-    }
+	switch e {
+	case 0x07:
+		{ /* '0x07' */
+			return 128
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return 256
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return 512
+		}
+	case 0x0a:
+		{ /* '0x0a' */
+			return 1024
+		}
+	case 0x0b:
+		{ /* '0x0b' */
+			return 2048
+		}
+	case 0x0c:
+		{ /* '0x0c' */
+			return 4096
+		}
+	case 0x0d:
+		{ /* '0x0d' */
+			return 8192
+		}
+	default:
+		{
+			return 0
+		}
+	}
+}
+func COTPTpduSizeByValue(value int8) COTPTpduSize {
+	switch value {
+	case 0x07:
+		return COTPTpduSize_SIZE_128
+	case 0x08:
+		return COTPTpduSize_SIZE_256
+	case 0x09:
+		return COTPTpduSize_SIZE_512
+	case 0x0a:
+		return COTPTpduSize_SIZE_1024
+	case 0x0b:
+		return COTPTpduSize_SIZE_2048
+	case 0x0c:
+		return COTPTpduSize_SIZE_4096
+	case 0x0d:
+		return COTPTpduSize_SIZE_8192
+	}
+	return 0
 }
-func COTPTpduSizeValueOf(value int8) COTPTpduSize {
-    switch value {
-        case 0x07:
-            return COTPTpduSize_SIZE_128
-        case 0x08:
-            return COTPTpduSize_SIZE_256
-        case 0x09:
-            return COTPTpduSize_SIZE_512
-        case 0x0a:
-            return COTPTpduSize_SIZE_1024
-        case 0x0b:
-            return COTPTpduSize_SIZE_2048
-        case 0x0c:
-            return COTPTpduSize_SIZE_4096
-        case 0x0d:
-            return COTPTpduSize_SIZE_8192
-    }
-    return 0
+
+func COTPTpduSizeByName(value string) COTPTpduSize {
+	switch value {
+	case "SIZE_128":
+		return COTPTpduSize_SIZE_128
+	case "SIZE_256":
+		return COTPTpduSize_SIZE_256
+	case "SIZE_512":
+		return COTPTpduSize_SIZE_512
+	case "SIZE_1024":
+		return COTPTpduSize_SIZE_1024
+	case "SIZE_2048":
+		return COTPTpduSize_SIZE_2048
+	case "SIZE_4096":
+		return COTPTpduSize_SIZE_4096
+	case "SIZE_8192":
+		return COTPTpduSize_SIZE_8192
+	}
+	return 0
 }
 
 func CastCOTPTpduSize(structType interface{}) COTPTpduSize {
-    castFunc := func(typ interface{}) COTPTpduSize {
-        if sCOTPTpduSize, ok := typ.(COTPTpduSize); ok {
-            return sCOTPTpduSize
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) COTPTpduSize {
+		if sCOTPTpduSize, ok := typ.(COTPTpduSize); ok {
+			return sCOTPTpduSize
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m COTPTpduSize) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m COTPTpduSize) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func COTPTpduSizeParse(io *utils.ReadBuffer) (COTPTpduSize, error) {
-    val, err := io.ReadInt8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return COTPTpduSizeValueOf(val), nil
+	val, err := io.ReadInt8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return COTPTpduSizeByValue(val), nil
 }
 
 func (e COTPTpduSize) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteInt8(8, int8(e))
-    return err
+	err := io.WriteInt8(8, int8(e))
+	return err
 }
 
 func (e COTPTpduSize) String() string {
-    switch e {
-    case COTPTpduSize_SIZE_128:
-        return "SIZE_128"
-    case COTPTpduSize_SIZE_256:
-        return "SIZE_256"
-    case COTPTpduSize_SIZE_512:
-        return "SIZE_512"
-    case COTPTpduSize_SIZE_1024:
-        return "SIZE_1024"
-    case COTPTpduSize_SIZE_2048:
-        return "SIZE_2048"
-    case COTPTpduSize_SIZE_4096:
-        return "SIZE_4096"
-    case COTPTpduSize_SIZE_8192:
-        return "SIZE_8192"
-    }
-    return ""
+	switch e {
+	case COTPTpduSize_SIZE_128:
+		return "SIZE_128"
+	case COTPTpduSize_SIZE_256:
+		return "SIZE_256"
+	case COTPTpduSize_SIZE_512:
+		return "SIZE_512"
+	case COTPTpduSize_SIZE_1024:
+		return "SIZE_1024"
+	case COTPTpduSize_SIZE_2048:
+		return "SIZE_2048"
+	case COTPTpduSize_SIZE_4096:
+		return "SIZE_4096"
+	case COTPTpduSize_SIZE_8192:
+		return "SIZE_8192"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
index c0b695f..b0b97b0 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportErrorCode.go
@@ -19,87 +19,105 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type DataTransportErrorCode uint8
 
 type IDataTransportErrorCode interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    DataTransportErrorCode_RESERVED DataTransportErrorCode = 0x00
-    DataTransportErrorCode_OK DataTransportErrorCode = 0xFF
-    DataTransportErrorCode_ACCESS_DENIED DataTransportErrorCode = 0x03
-    DataTransportErrorCode_INVALID_ADDRESS DataTransportErrorCode = 0x05
-    DataTransportErrorCode_DATA_TYPE_NOT_SUPPORTED DataTransportErrorCode = 0x06
-    DataTransportErrorCode_NOT_FOUND DataTransportErrorCode = 0x0A
+const (
+	DataTransportErrorCode_RESERVED                DataTransportErrorCode = 0x00
+	DataTransportErrorCode_OK                      DataTransportErrorCode = 0xFF
+	DataTransportErrorCode_ACCESS_DENIED           DataTransportErrorCode = 0x03
+	DataTransportErrorCode_INVALID_ADDRESS         DataTransportErrorCode = 0x05
+	DataTransportErrorCode_DATA_TYPE_NOT_SUPPORTED DataTransportErrorCode = 0x06
+	DataTransportErrorCode_NOT_FOUND               DataTransportErrorCode = 0x0A
 )
 
-func DataTransportErrorCodeValueOf(value uint8) DataTransportErrorCode {
-    switch value {
-        case 0x00:
-            return DataTransportErrorCode_RESERVED
-        case 0x03:
-            return DataTransportErrorCode_ACCESS_DENIED
-        case 0x05:
-            return DataTransportErrorCode_INVALID_ADDRESS
-        case 0x06:
-            return DataTransportErrorCode_DATA_TYPE_NOT_SUPPORTED
-        case 0x0A:
-            return DataTransportErrorCode_NOT_FOUND
-        case 0xFF:
-            return DataTransportErrorCode_OK
-    }
-    return 0
+func DataTransportErrorCodeByValue(value uint8) DataTransportErrorCode {
+	switch value {
+	case 0x00:
+		return DataTransportErrorCode_RESERVED
+	case 0x03:
+		return DataTransportErrorCode_ACCESS_DENIED
+	case 0x05:
+		return DataTransportErrorCode_INVALID_ADDRESS
+	case 0x06:
+		return DataTransportErrorCode_DATA_TYPE_NOT_SUPPORTED
+	case 0x0A:
+		return DataTransportErrorCode_NOT_FOUND
+	case 0xFF:
+		return DataTransportErrorCode_OK
+	}
+	return 0
+}
+
+func DataTransportErrorCodeByName(value string) DataTransportErrorCode {
+	switch value {
+	case "RESERVED":
+		return DataTransportErrorCode_RESERVED
+	case "ACCESS_DENIED":
+		return DataTransportErrorCode_ACCESS_DENIED
+	case "INVALID_ADDRESS":
+		return DataTransportErrorCode_INVALID_ADDRESS
+	case "DATA_TYPE_NOT_SUPPORTED":
+		return DataTransportErrorCode_DATA_TYPE_NOT_SUPPORTED
+	case "NOT_FOUND":
+		return DataTransportErrorCode_NOT_FOUND
+	case "OK":
+		return DataTransportErrorCode_OK
+	}
+	return 0
 }
 
 func CastDataTransportErrorCode(structType interface{}) DataTransportErrorCode {
-    castFunc := func(typ interface{}) DataTransportErrorCode {
-        if sDataTransportErrorCode, ok := typ.(DataTransportErrorCode); ok {
-            return sDataTransportErrorCode
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) DataTransportErrorCode {
+		if sDataTransportErrorCode, ok := typ.(DataTransportErrorCode); ok {
+			return sDataTransportErrorCode
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m DataTransportErrorCode) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m DataTransportErrorCode) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func DataTransportErrorCodeParse(io *utils.ReadBuffer) (DataTransportErrorCode, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return DataTransportErrorCodeValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return DataTransportErrorCodeByValue(val), nil
 }
 
 func (e DataTransportErrorCode) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e DataTransportErrorCode) String() string {
-    switch e {
-    case DataTransportErrorCode_RESERVED:
-        return "RESERVED"
-    case DataTransportErrorCode_ACCESS_DENIED:
-        return "ACCESS_DENIED"
-    case DataTransportErrorCode_INVALID_ADDRESS:
-        return "INVALID_ADDRESS"
-    case DataTransportErrorCode_DATA_TYPE_NOT_SUPPORTED:
-        return "DATA_TYPE_NOT_SUPPORTED"
-    case DataTransportErrorCode_NOT_FOUND:
-        return "NOT_FOUND"
-    case DataTransportErrorCode_OK:
-        return "OK"
-    }
-    return ""
+	switch e {
+	case DataTransportErrorCode_RESERVED:
+		return "RESERVED"
+	case DataTransportErrorCode_ACCESS_DENIED:
+		return "ACCESS_DENIED"
+	case DataTransportErrorCode_INVALID_ADDRESS:
+		return "INVALID_ADDRESS"
+	case DataTransportErrorCode_DATA_TYPE_NOT_SUPPORTED:
+		return "DATA_TYPE_NOT_SUPPORTED"
+	case DataTransportErrorCode_NOT_FOUND:
+		return "NOT_FOUND"
+	case DataTransportErrorCode_OK:
+		return "OK"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
index 60e4a95..82a9e6b 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DataTransportSize.go
@@ -19,122 +19,149 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type DataTransportSize uint8
 
 type IDataTransportSize interface {
-    SizeInBits() bool
-    Serialize(io utils.WriteBuffer) error
+	SizeInBits() bool
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    DataTransportSize_NULL DataTransportSize = 0x00
-    DataTransportSize_BIT DataTransportSize = 0x03
-    DataTransportSize_BYTE_WORD_DWORD DataTransportSize = 0x04
-    DataTransportSize_INTEGER DataTransportSize = 0x05
-    DataTransportSize_DINTEGER DataTransportSize = 0x06
-    DataTransportSize_REAL DataTransportSize = 0x07
-    DataTransportSize_OCTET_STRING DataTransportSize = 0x09
+const (
+	DataTransportSize_NULL            DataTransportSize = 0x00
+	DataTransportSize_BIT             DataTransportSize = 0x03
+	DataTransportSize_BYTE_WORD_DWORD DataTransportSize = 0x04
+	DataTransportSize_INTEGER         DataTransportSize = 0x05
+	DataTransportSize_DINTEGER        DataTransportSize = 0x06
+	DataTransportSize_REAL            DataTransportSize = 0x07
+	DataTransportSize_OCTET_STRING    DataTransportSize = 0x09
 )
 
-
 func (e DataTransportSize) SizeInBits() bool {
-    switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
-        case 0x03: { /* '0x03' */
-            return true
-        }
-        case 0x04: { /* '0x04' */
-            return true
-        }
-        case 0x05: { /* '0x05' */
-            return true
-        }
-        case 0x06: { /* '0x06' */
-            return false
-        }
-        case 0x07: { /* '0x07' */
-            return false
-        }
-        case 0x09: { /* '0x09' */
-            return false
-        }
-        default: {
-            return false
-        }
-    }
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return false
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return true
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return true
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return true
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return false
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return false
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return false
+		}
+	default:
+		{
+			return false
+		}
+	}
+}
+func DataTransportSizeByValue(value uint8) DataTransportSize {
+	switch value {
+	case 0x00:
+		return DataTransportSize_NULL
+	case 0x03:
+		return DataTransportSize_BIT
+	case 0x04:
+		return DataTransportSize_BYTE_WORD_DWORD
+	case 0x05:
+		return DataTransportSize_INTEGER
+	case 0x06:
+		return DataTransportSize_DINTEGER
+	case 0x07:
+		return DataTransportSize_REAL
+	case 0x09:
+		return DataTransportSize_OCTET_STRING
+	}
+	return 0
 }
-func DataTransportSizeValueOf(value uint8) DataTransportSize {
-    switch value {
-        case 0x00:
-            return DataTransportSize_NULL
-        case 0x03:
-            return DataTransportSize_BIT
-        case 0x04:
-            return DataTransportSize_BYTE_WORD_DWORD
-        case 0x05:
-            return DataTransportSize_INTEGER
-        case 0x06:
-            return DataTransportSize_DINTEGER
-        case 0x07:
-            return DataTransportSize_REAL
-        case 0x09:
-            return DataTransportSize_OCTET_STRING
-    }
-    return 0
+
+func DataTransportSizeByName(value string) DataTransportSize {
+	switch value {
+	case "NULL":
+		return DataTransportSize_NULL
+	case "BIT":
+		return DataTransportSize_BIT
+	case "BYTE_WORD_DWORD":
+		return DataTransportSize_BYTE_WORD_DWORD
+	case "INTEGER":
+		return DataTransportSize_INTEGER
+	case "DINTEGER":
+		return DataTransportSize_DINTEGER
+	case "REAL":
+		return DataTransportSize_REAL
+	case "OCTET_STRING":
+		return DataTransportSize_OCTET_STRING
+	}
+	return 0
 }
 
 func CastDataTransportSize(structType interface{}) DataTransportSize {
-    castFunc := func(typ interface{}) DataTransportSize {
-        if sDataTransportSize, ok := typ.(DataTransportSize); ok {
-            return sDataTransportSize
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) DataTransportSize {
+		if sDataTransportSize, ok := typ.(DataTransportSize); ok {
+			return sDataTransportSize
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m DataTransportSize) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m DataTransportSize) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func DataTransportSizeParse(io *utils.ReadBuffer) (DataTransportSize, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return DataTransportSizeValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return DataTransportSizeByValue(val), nil
 }
 
 func (e DataTransportSize) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e DataTransportSize) String() string {
-    switch e {
-    case DataTransportSize_NULL:
-        return "NULL"
-    case DataTransportSize_BIT:
-        return "BIT"
-    case DataTransportSize_BYTE_WORD_DWORD:
-        return "BYTE_WORD_DWORD"
-    case DataTransportSize_INTEGER:
-        return "INTEGER"
-    case DataTransportSize_DINTEGER:
-        return "DINTEGER"
-    case DataTransportSize_REAL:
-        return "REAL"
-    case DataTransportSize_OCTET_STRING:
-        return "OCTET_STRING"
-    }
-    return ""
+	switch e {
+	case DataTransportSize_NULL:
+		return "NULL"
+	case DataTransportSize_BIT:
+		return "BIT"
+	case DataTransportSize_BYTE_WORD_DWORD:
+		return "BYTE_WORD_DWORD"
+	case DataTransportSize_INTEGER:
+		return "INTEGER"
+	case DataTransportSize_DINTEGER:
+		return "DINTEGER"
+	case DataTransportSize_REAL:
+		return "REAL"
+	case DataTransportSize_OCTET_STRING:
+		return "OCTET_STRING"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go b/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
index 2ceec38..95cf2eb 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/DeviceGroup.go
@@ -19,72 +19,84 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type DeviceGroup int8
 
 type IDeviceGroup interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    DeviceGroup_PG_OR_PC DeviceGroup = 0x01
-    DeviceGroup_OS DeviceGroup = 0x02
-    DeviceGroup_OTHERS DeviceGroup = 0x03
+const (
+	DeviceGroup_PG_OR_PC DeviceGroup = 0x01
+	DeviceGroup_OS       DeviceGroup = 0x02
+	DeviceGroup_OTHERS   DeviceGroup = 0x03
 )
 
-func DeviceGroupValueOf(value int8) DeviceGroup {
-    switch value {
-        case 0x01:
-            return DeviceGroup_PG_OR_PC
-        case 0x02:
-            return DeviceGroup_OS
-        case 0x03:
-            return DeviceGroup_OTHERS
-    }
-    return 0
+func DeviceGroupByValue(value int8) DeviceGroup {
+	switch value {
+	case 0x01:
+		return DeviceGroup_PG_OR_PC
+	case 0x02:
+		return DeviceGroup_OS
+	case 0x03:
+		return DeviceGroup_OTHERS
+	}
+	return 0
+}
+
+func DeviceGroupByName(value string) DeviceGroup {
+	switch value {
+	case "PG_OR_PC":
+		return DeviceGroup_PG_OR_PC
+	case "OS":
+		return DeviceGroup_OS
+	case "OTHERS":
+		return DeviceGroup_OTHERS
+	}
+	return 0
 }
 
 func CastDeviceGroup(structType interface{}) DeviceGroup {
-    castFunc := func(typ interface{}) DeviceGroup {
-        if sDeviceGroup, ok := typ.(DeviceGroup); ok {
-            return sDeviceGroup
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) DeviceGroup {
+		if sDeviceGroup, ok := typ.(DeviceGroup); ok {
+			return sDeviceGroup
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m DeviceGroup) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m DeviceGroup) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func DeviceGroupParse(io *utils.ReadBuffer) (DeviceGroup, error) {
-    val, err := io.ReadInt8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return DeviceGroupValueOf(val), nil
+	val, err := io.ReadInt8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return DeviceGroupByValue(val), nil
 }
 
 func (e DeviceGroup) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteInt8(8, int8(e))
-    return err
+	err := io.WriteInt8(8, int8(e))
+	return err
 }
 
 func (e DeviceGroup) String() string {
-    switch e {
-    case DeviceGroup_PG_OR_PC:
-        return "PG_OR_PC"
-    case DeviceGroup_OS:
-        return "OS"
-    case DeviceGroup_OTHERS:
-        return "OTHERS"
-    }
-    return ""
+	switch e {
+	case DeviceGroup_PG_OR_PC:
+		return "PG_OR_PC"
+	case DeviceGroup_OS:
+		return "OS"
+	case DeviceGroup_OTHERS:
+		return "OTHERS"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go b/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
index 1e45a98..647d1fb 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/MemoryArea.go
@@ -19,138 +19,171 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type MemoryArea uint8
 
 type IMemoryArea interface {
-    ShortName() string
-    Serialize(io utils.WriteBuffer) error
+	ShortName() string
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    MemoryArea_COUNTERS MemoryArea = 0x1C
-    MemoryArea_TIMERS MemoryArea = 0x1D
-    MemoryArea_DIRECT_PERIPHERAL_ACCESS MemoryArea = 0x80
-    MemoryArea_INPUTS MemoryArea = 0x81
-    MemoryArea_OUTPUTS MemoryArea = 0x82
-    MemoryArea_FLAGS_MARKERS MemoryArea = 0x83
-    MemoryArea_DATA_BLOCKS MemoryArea = 0x84
-    MemoryArea_INSTANCE_DATA_BLOCKS MemoryArea = 0x85
-    MemoryArea_LOCAL_DATA MemoryArea = 0x86
+const (
+	MemoryArea_COUNTERS                 MemoryArea = 0x1C
+	MemoryArea_TIMERS                   MemoryArea = 0x1D
+	MemoryArea_DIRECT_PERIPHERAL_ACCESS MemoryArea = 0x80
+	MemoryArea_INPUTS                   MemoryArea = 0x81
+	MemoryArea_OUTPUTS                  MemoryArea = 0x82
+	MemoryArea_FLAGS_MARKERS            MemoryArea = 0x83
+	MemoryArea_DATA_BLOCKS              MemoryArea = 0x84
+	MemoryArea_INSTANCE_DATA_BLOCKS     MemoryArea = 0x85
+	MemoryArea_LOCAL_DATA               MemoryArea = 0x86
 )
 
-
 func (e MemoryArea) ShortName() string {
-    switch e  {
-        case 0x1C: { /* '0x1C' */
-            return "C"
-        }
-        case 0x1D: { /* '0x1D' */
-            return "T"
-        }
-        case 0x80: { /* '0x80' */
-            return "D"
-        }
-        case 0x81: { /* '0x81' */
-            return "I"
-        }
-        case 0x82: { /* '0x82' */
-            return "Q"
-        }
-        case 0x83: { /* '0x83' */
-            return "M"
-        }
-        case 0x84: { /* '0x84' */
-            return "DB"
-        }
-        case 0x85: { /* '0x85' */
-            return "DBI"
-        }
-        case 0x86: { /* '0x86' */
-            return "LD"
-        }
-        default: {
-            return ""
-        }
-    }
+	switch e {
+	case 0x1C:
+		{ /* '0x1C' */
+			return "C"
+		}
+	case 0x1D:
+		{ /* '0x1D' */
+			return "T"
+		}
+	case 0x80:
+		{ /* '0x80' */
+			return "D"
+		}
+	case 0x81:
+		{ /* '0x81' */
+			return "I"
+		}
+	case 0x82:
+		{ /* '0x82' */
+			return "Q"
+		}
+	case 0x83:
+		{ /* '0x83' */
+			return "M"
+		}
+	case 0x84:
+		{ /* '0x84' */
+			return "DB"
+		}
+	case 0x85:
+		{ /* '0x85' */
+			return "DBI"
+		}
+	case 0x86:
+		{ /* '0x86' */
+			return "LD"
+		}
+	default:
+		{
+			return ""
+		}
+	}
+}
+func MemoryAreaByValue(value uint8) MemoryArea {
+	switch value {
+	case 0x1C:
+		return MemoryArea_COUNTERS
+	case 0x1D:
+		return MemoryArea_TIMERS
+	case 0x80:
+		return MemoryArea_DIRECT_PERIPHERAL_ACCESS
+	case 0x81:
+		return MemoryArea_INPUTS
+	case 0x82:
+		return MemoryArea_OUTPUTS
+	case 0x83:
+		return MemoryArea_FLAGS_MARKERS
+	case 0x84:
+		return MemoryArea_DATA_BLOCKS
+	case 0x85:
+		return MemoryArea_INSTANCE_DATA_BLOCKS
+	case 0x86:
+		return MemoryArea_LOCAL_DATA
+	}
+	return 0
 }
-func MemoryAreaValueOf(value uint8) MemoryArea {
-    switch value {
-        case 0x1C:
-            return MemoryArea_COUNTERS
-        case 0x1D:
-            return MemoryArea_TIMERS
-        case 0x80:
-            return MemoryArea_DIRECT_PERIPHERAL_ACCESS
-        case 0x81:
-            return MemoryArea_INPUTS
-        case 0x82:
-            return MemoryArea_OUTPUTS
-        case 0x83:
-            return MemoryArea_FLAGS_MARKERS
-        case 0x84:
-            return MemoryArea_DATA_BLOCKS
-        case 0x85:
-            return MemoryArea_INSTANCE_DATA_BLOCKS
-        case 0x86:
-            return MemoryArea_LOCAL_DATA
-    }
-    return 0
+
+func MemoryAreaByName(value string) MemoryArea {
+	switch value {
+	case "COUNTERS":
+		return MemoryArea_COUNTERS
+	case "TIMERS":
+		return MemoryArea_TIMERS
+	case "DIRECT_PERIPHERAL_ACCESS":
+		return MemoryArea_DIRECT_PERIPHERAL_ACCESS
+	case "INPUTS":
+		return MemoryArea_INPUTS
+	case "OUTPUTS":
+		return MemoryArea_OUTPUTS
+	case "FLAGS_MARKERS":
+		return MemoryArea_FLAGS_MARKERS
+	case "DATA_BLOCKS":
+		return MemoryArea_DATA_BLOCKS
+	case "INSTANCE_DATA_BLOCKS":
+		return MemoryArea_INSTANCE_DATA_BLOCKS
+	case "LOCAL_DATA":
+		return MemoryArea_LOCAL_DATA
+	}
+	return 0
 }
 
 func CastMemoryArea(structType interface{}) MemoryArea {
-    castFunc := func(typ interface{}) MemoryArea {
-        if sMemoryArea, ok := typ.(MemoryArea); ok {
-            return sMemoryArea
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) MemoryArea {
+		if sMemoryArea, ok := typ.(MemoryArea); ok {
+			return sMemoryArea
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m MemoryArea) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m MemoryArea) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func MemoryAreaParse(io *utils.ReadBuffer) (MemoryArea, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return MemoryAreaValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return MemoryAreaByValue(val), nil
 }
 
 func (e MemoryArea) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e MemoryArea) String() string {
-    switch e {
-    case MemoryArea_COUNTERS:
-        return "COUNTERS"
-    case MemoryArea_TIMERS:
-        return "TIMERS"
-    case MemoryArea_DIRECT_PERIPHERAL_ACCESS:
-        return "DIRECT_PERIPHERAL_ACCESS"
-    case MemoryArea_INPUTS:
-        return "INPUTS"
-    case MemoryArea_OUTPUTS:
-        return "OUTPUTS"
-    case MemoryArea_FLAGS_MARKERS:
-        return "FLAGS_MARKERS"
-    case MemoryArea_DATA_BLOCKS:
-        return "DATA_BLOCKS"
-    case MemoryArea_INSTANCE_DATA_BLOCKS:
-        return "INSTANCE_DATA_BLOCKS"
-    case MemoryArea_LOCAL_DATA:
-        return "LOCAL_DATA"
-    }
-    return ""
+	switch e {
+	case MemoryArea_COUNTERS:
+		return "COUNTERS"
+	case MemoryArea_TIMERS:
+		return "TIMERS"
+	case MemoryArea_DIRECT_PERIPHERAL_ACCESS:
+		return "DIRECT_PERIPHERAL_ACCESS"
+	case MemoryArea_INPUTS:
+		return "INPUTS"
+	case MemoryArea_OUTPUTS:
+		return "OUTPUTS"
+	case MemoryArea_FLAGS_MARKERS:
+		return "FLAGS_MARKERS"
+	case MemoryArea_DATA_BLOCKS:
+		return "DATA_BLOCKS"
+	case MemoryArea_INSTANCE_DATA_BLOCKS:
+		return "INSTANCE_DATA_BLOCKS"
+	case MemoryArea_LOCAL_DATA:
+		return "LOCAL_DATA"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go b/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
index a5281d3..a0ef297 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlModuleTypeClass.go
@@ -19,77 +19,91 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type SzlModuleTypeClass uint8
 
 type ISzlModuleTypeClass interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    SzlModuleTypeClass_CPU SzlModuleTypeClass = 0x0
-    SzlModuleTypeClass_IM SzlModuleTypeClass = 0x4
-    SzlModuleTypeClass_FM SzlModuleTypeClass = 0x8
-    SzlModuleTypeClass_CP SzlModuleTypeClass = 0xC
+const (
+	SzlModuleTypeClass_CPU SzlModuleTypeClass = 0x0
+	SzlModuleTypeClass_IM  SzlModuleTypeClass = 0x4
+	SzlModuleTypeClass_FM  SzlModuleTypeClass = 0x8
+	SzlModuleTypeClass_CP  SzlModuleTypeClass = 0xC
 )
 
-func SzlModuleTypeClassValueOf(value uint8) SzlModuleTypeClass {
-    switch value {
-        case 0x0:
-            return SzlModuleTypeClass_CPU
-        case 0x4:
-            return SzlModuleTypeClass_IM
-        case 0x8:
-            return SzlModuleTypeClass_FM
-        case 0xC:
-            return SzlModuleTypeClass_CP
-    }
-    return 0
+func SzlModuleTypeClassByValue(value uint8) SzlModuleTypeClass {
+	switch value {
+	case 0x0:
+		return SzlModuleTypeClass_CPU
+	case 0x4:
+		return SzlModuleTypeClass_IM
+	case 0x8:
+		return SzlModuleTypeClass_FM
+	case 0xC:
+		return SzlModuleTypeClass_CP
+	}
+	return 0
+}
+
+func SzlModuleTypeClassByName(value string) SzlModuleTypeClass {
+	switch value {
+	case "CPU":
+		return SzlModuleTypeClass_CPU
+	case "IM":
+		return SzlModuleTypeClass_IM
+	case "FM":
+		return SzlModuleTypeClass_FM
+	case "CP":
+		return SzlModuleTypeClass_CP
+	}
+	return 0
 }
 
 func CastSzlModuleTypeClass(structType interface{}) SzlModuleTypeClass {
-    castFunc := func(typ interface{}) SzlModuleTypeClass {
-        if sSzlModuleTypeClass, ok := typ.(SzlModuleTypeClass); ok {
-            return sSzlModuleTypeClass
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) SzlModuleTypeClass {
+		if sSzlModuleTypeClass, ok := typ.(SzlModuleTypeClass); ok {
+			return sSzlModuleTypeClass
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m SzlModuleTypeClass) LengthInBits() uint16 {
-    return 4
+	return 4
 }
 
 func (m SzlModuleTypeClass) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func SzlModuleTypeClassParse(io *utils.ReadBuffer) (SzlModuleTypeClass, error) {
-    val, err := io.ReadUint8(4)
-    if err != nil {
-        return 0, nil
-    }
-    return SzlModuleTypeClassValueOf(val), nil
+	val, err := io.ReadUint8(4)
+	if err != nil {
+		return 0, nil
+	}
+	return SzlModuleTypeClassByValue(val), nil
 }
 
 func (e SzlModuleTypeClass) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(4, uint8(e))
-    return err
+	err := io.WriteUint8(4, uint8(e))
+	return err
 }
 
 func (e SzlModuleTypeClass) String() string {
-    switch e {
-    case SzlModuleTypeClass_CPU:
-        return "CPU"
-    case SzlModuleTypeClass_IM:
-        return "IM"
-    case SzlModuleTypeClass_FM:
-        return "FM"
-    case SzlModuleTypeClass_CP:
-        return "CP"
-    }
-    return ""
+	switch e {
+	case SzlModuleTypeClass_CPU:
+		return "CPU"
+	case SzlModuleTypeClass_IM:
+		return "IM"
+	case SzlModuleTypeClass_FM:
+		return "FM"
+	case SzlModuleTypeClass_CP:
+		return "CP"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go b/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
index 6c038c1..641c229 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/SzlSublist.go
@@ -19,152 +19,196 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type SzlSublist uint8
 
 type ISzlSublist interface {
-    Serialize(io utils.WriteBuffer) error
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    SzlSublist_MODULE_IDENTIFICATION SzlSublist = 0x11
-    SzlSublist_CPU_FEATURES SzlSublist = 0x12
-    SzlSublist_USER_MEMORY_AREA SzlSublist = 0x13
-    SzlSublist_SYSTEM_AREAS SzlSublist = 0x14
-    SzlSublist_BLOCK_TYPES SzlSublist = 0x15
-    SzlSublist_STATUS_MODULE_LEDS SzlSublist = 0x19
-    SzlSublist_COMPONENT_IDENTIFICATION SzlSublist = 0x1C
-    SzlSublist_INTERRUPT_STATUS SzlSublist = 0x22
-    SzlSublist_ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS SzlSublist = 0x25
-    SzlSublist_COMMUNICATION_STATUS_DATA SzlSublist = 0x32
-    SzlSublist_STATUS_SINGLE_MODULE_LED SzlSublist = 0x74
-    SzlSublist_DP_MASTER_SYSTEM_INFORMATION SzlSublist = 0x90
-    SzlSublist_MODULE_STATUS_INFORMATION SzlSublist = 0x91
-    SzlSublist_RACK_OR_STATION_STATUS_INFORMATION SzlSublist = 0x92
-    SzlSublist_RACK_OR_STATION_STATUS_INFORMATION_2 SzlSublist = 0x94
-    SzlSublist_ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION SzlSublist = 0x95
-    SzlSublist_MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP SzlSublist = 0x96
-    SzlSublist_DIAGNOSTIC_BUFFER SzlSublist = 0xA0
-    SzlSublist_MODULE_DIAGNOSTIC_DATA SzlSublist = 0xB1
+const (
+	SzlSublist_MODULE_IDENTIFICATION                                         SzlSublist = 0x11
+	SzlSublist_CPU_FEATURES                                                  SzlSublist = 0x12
+	SzlSublist_USER_MEMORY_AREA                                              SzlSublist = 0x13
+	SzlSublist_SYSTEM_AREAS                                                  SzlSublist = 0x14
+	SzlSublist_BLOCK_TYPES                                                   SzlSublist = 0x15
+	SzlSublist_STATUS_MODULE_LEDS                                            SzlSublist = 0x19
+	SzlSublist_COMPONENT_IDENTIFICATION                                      SzlSublist = 0x1C
+	SzlSublist_INTERRUPT_STATUS                                              SzlSublist = 0x22
+	SzlSublist_ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS           SzlSublist = 0x25
+	SzlSublist_COMMUNICATION_STATUS_DATA                                     SzlSublist = 0x32
+	SzlSublist_STATUS_SINGLE_MODULE_LED                                      SzlSublist = 0x74
+	SzlSublist_DP_MASTER_SYSTEM_INFORMATION                                  SzlSublist = 0x90
+	SzlSublist_MODULE_STATUS_INFORMATION                                     SzlSublist = 0x91
+	SzlSublist_RACK_OR_STATION_STATUS_INFORMATION                            SzlSublist = 0x92
+	SzlSublist_RACK_OR_STATION_STATUS_INFORMATION_2                          SzlSublist = 0x94
+	SzlSublist_ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION SzlSublist = 0x95
+	SzlSublist_MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP         SzlSublist = 0x96
+	SzlSublist_DIAGNOSTIC_BUFFER                                             SzlSublist = 0xA0
+	SzlSublist_MODULE_DIAGNOSTIC_DATA                                        SzlSublist = 0xB1
 )
 
-func SzlSublistValueOf(value uint8) SzlSublist {
-    switch value {
-        case 0x11:
-            return SzlSublist_MODULE_IDENTIFICATION
-        case 0x12:
-            return SzlSublist_CPU_FEATURES
-        case 0x13:
-            return SzlSublist_USER_MEMORY_AREA
-        case 0x14:
-            return SzlSublist_SYSTEM_AREAS
-        case 0x15:
-            return SzlSublist_BLOCK_TYPES
-        case 0x19:
-            return SzlSublist_STATUS_MODULE_LEDS
-        case 0x1C:
-            return SzlSublist_COMPONENT_IDENTIFICATION
-        case 0x22:
-            return SzlSublist_INTERRUPT_STATUS
-        case 0x25:
-            return SzlSublist_ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS
-        case 0x32:
-            return SzlSublist_COMMUNICATION_STATUS_DATA
-        case 0x74:
-            return SzlSublist_STATUS_SINGLE_MODULE_LED
-        case 0x90:
-            return SzlSublist_DP_MASTER_SYSTEM_INFORMATION
-        case 0x91:
-            return SzlSublist_MODULE_STATUS_INFORMATION
-        case 0x92:
-            return SzlSublist_RACK_OR_STATION_STATUS_INFORMATION
-        case 0x94:
-            return SzlSublist_RACK_OR_STATION_STATUS_INFORMATION_2
-        case 0x95:
-            return SzlSublist_ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION
-        case 0x96:
-            return SzlSublist_MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP
-        case 0xA0:
-            return SzlSublist_DIAGNOSTIC_BUFFER
-        case 0xB1:
-            return SzlSublist_MODULE_DIAGNOSTIC_DATA
-    }
-    return 0
+func SzlSublistByValue(value uint8) SzlSublist {
+	switch value {
+	case 0x11:
+		return SzlSublist_MODULE_IDENTIFICATION
+	case 0x12:
+		return SzlSublist_CPU_FEATURES
+	case 0x13:
+		return SzlSublist_USER_MEMORY_AREA
+	case 0x14:
+		return SzlSublist_SYSTEM_AREAS
+	case 0x15:
+		return SzlSublist_BLOCK_TYPES
+	case 0x19:
+		return SzlSublist_STATUS_MODULE_LEDS
+	case 0x1C:
+		return SzlSublist_COMPONENT_IDENTIFICATION
+	case 0x22:
+		return SzlSublist_INTERRUPT_STATUS
+	case 0x25:
+		return SzlSublist_ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS
+	case 0x32:
+		return SzlSublist_COMMUNICATION_STATUS_DATA
+	case 0x74:
+		return SzlSublist_STATUS_SINGLE_MODULE_LED
+	case 0x90:
+		return SzlSublist_DP_MASTER_SYSTEM_INFORMATION
+	case 0x91:
+		return SzlSublist_MODULE_STATUS_INFORMATION
+	case 0x92:
+		return SzlSublist_RACK_OR_STATION_STATUS_INFORMATION
+	case 0x94:
+		return SzlSublist_RACK_OR_STATION_STATUS_INFORMATION_2
+	case 0x95:
+		return SzlSublist_ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION
+	case 0x96:
+		return SzlSublist_MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP
+	case 0xA0:
+		return SzlSublist_DIAGNOSTIC_BUFFER
+	case 0xB1:
+		return SzlSublist_MODULE_DIAGNOSTIC_DATA
+	}
+	return 0
+}
+
+func SzlSublistByName(value string) SzlSublist {
+	switch value {
+	case "MODULE_IDENTIFICATION":
+		return SzlSublist_MODULE_IDENTIFICATION
+	case "CPU_FEATURES":
+		return SzlSublist_CPU_FEATURES
+	case "USER_MEMORY_AREA":
+		return SzlSublist_USER_MEMORY_AREA
+	case "SYSTEM_AREAS":
+		return SzlSublist_SYSTEM_AREAS
+	case "BLOCK_TYPES":
+		return SzlSublist_BLOCK_TYPES
+	case "STATUS_MODULE_LEDS":
+		return SzlSublist_STATUS_MODULE_LEDS
+	case "COMPONENT_IDENTIFICATION":
+		return SzlSublist_COMPONENT_IDENTIFICATION
+	case "INTERRUPT_STATUS":
+		return SzlSublist_INTERRUPT_STATUS
+	case "ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS":
+		return SzlSublist_ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS
+	case "COMMUNICATION_STATUS_DATA":
+		return SzlSublist_COMMUNICATION_STATUS_DATA
+	case "STATUS_SINGLE_MODULE_LED":
+		return SzlSublist_STATUS_SINGLE_MODULE_LED
+	case "DP_MASTER_SYSTEM_INFORMATION":
+		return SzlSublist_DP_MASTER_SYSTEM_INFORMATION
+	case "MODULE_STATUS_INFORMATION":
+		return SzlSublist_MODULE_STATUS_INFORMATION
+	case "RACK_OR_STATION_STATUS_INFORMATION":
+		return SzlSublist_RACK_OR_STATION_STATUS_INFORMATION
+	case "RACK_OR_STATION_STATUS_INFORMATION_2":
+		return SzlSublist_RACK_OR_STATION_STATUS_INFORMATION_2
+	case "ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION":
+		return SzlSublist_ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION
+	case "MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP":
+		return SzlSublist_MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP
+	case "DIAGNOSTIC_BUFFER":
+		return SzlSublist_DIAGNOSTIC_BUFFER
+	case "MODULE_DIAGNOSTIC_DATA":
+		return SzlSublist_MODULE_DIAGNOSTIC_DATA
+	}
+	return 0
 }
 
 func CastSzlSublist(structType interface{}) SzlSublist {
-    castFunc := func(typ interface{}) SzlSublist {
-        if sSzlSublist, ok := typ.(SzlSublist); ok {
-            return sSzlSublist
-        }
-        return 0
-    }
-    return castFunc(structType)
+	castFunc := func(typ interface{}) SzlSublist {
+		if sSzlSublist, ok := typ.(SzlSublist); ok {
+			return sSzlSublist
+		}
+		return 0
+	}
+	return castFunc(structType)
 }
 
 func (m SzlSublist) LengthInBits() uint16 {
-    return 8
+	return 8
 }
 
 func (m SzlSublist) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
+	return m.LengthInBits() / 8
 }
 
 func SzlSublistParse(io *utils.ReadBuffer) (SzlSublist, error) {
-    val, err := io.ReadUint8(8)
-    if err != nil {
-        return 0, nil
-    }
-    return SzlSublistValueOf(val), nil
+	val, err := io.ReadUint8(8)
+	if err != nil {
+		return 0, nil
+	}
+	return SzlSublistByValue(val), nil
 }
 
 func (e SzlSublist) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint8(8, uint8(e))
-    return err
+	err := io.WriteUint8(8, uint8(e))
+	return err
 }
 
 func (e SzlSublist) String() string {
-    switch e {
-    case SzlSublist_MODULE_IDENTIFICATION:
-        return "MODULE_IDENTIFICATION"
-    case SzlSublist_CPU_FEATURES:
-        return "CPU_FEATURES"
-    case SzlSublist_USER_MEMORY_AREA:
-        return "USER_MEMORY_AREA"
-    case SzlSublist_SYSTEM_AREAS:
-        return "SYSTEM_AREAS"
-    case SzlSublist_BLOCK_TYPES:
-        return "BLOCK_TYPES"
-    case SzlSublist_STATUS_MODULE_LEDS:
-        return "STATUS_MODULE_LEDS"
-    case SzlSublist_COMPONENT_IDENTIFICATION:
-        return "COMPONENT_IDENTIFICATION"
-    case SzlSublist_INTERRUPT_STATUS:
-        return "INTERRUPT_STATUS"
-    case SzlSublist_ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS:
-        return "ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS"
-    case SzlSublist_COMMUNICATION_STATUS_DATA:
-        return "COMMUNICATION_STATUS_DATA"
-    case SzlSublist_STATUS_SINGLE_MODULE_LED:
-        return "STATUS_SINGLE_MODULE_LED"
-    case SzlSublist_DP_MASTER_SYSTEM_INFORMATION:
-        return "DP_MASTER_SYSTEM_INFORMATION"
-    case SzlSublist_MODULE_STATUS_INFORMATION:
-        return "MODULE_STATUS_INFORMATION"
-    case SzlSublist_RACK_OR_STATION_STATUS_INFORMATION:
-        return "RACK_OR_STATION_STATUS_INFORMATION"
-    case SzlSublist_RACK_OR_STATION_STATUS_INFORMATION_2:
-        return "RACK_OR_STATION_STATUS_INFORMATION_2"
-    case SzlSublist_ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION:
-        return "ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION"
-    case SzlSublist_MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP:
-        return "MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP"
-    case SzlSublist_DIAGNOSTIC_BUFFER:
-        return "DIAGNOSTIC_BUFFER"
-    case SzlSublist_MODULE_DIAGNOSTIC_DATA:
-        return "MODULE_DIAGNOSTIC_DATA"
-    }
-    return ""
+	switch e {
+	case SzlSublist_MODULE_IDENTIFICATION:
+		return "MODULE_IDENTIFICATION"
+	case SzlSublist_CPU_FEATURES:
+		return "CPU_FEATURES"
+	case SzlSublist_USER_MEMORY_AREA:
+		return "USER_MEMORY_AREA"
+	case SzlSublist_SYSTEM_AREAS:
+		return "SYSTEM_AREAS"
+	case SzlSublist_BLOCK_TYPES:
+		return "BLOCK_TYPES"
+	case SzlSublist_STATUS_MODULE_LEDS:
+		return "STATUS_MODULE_LEDS"
+	case SzlSublist_COMPONENT_IDENTIFICATION:
+		return "COMPONENT_IDENTIFICATION"
+	case SzlSublist_INTERRUPT_STATUS:
+		return "INTERRUPT_STATUS"
+	case SzlSublist_ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS:
+		return "ASSIGNMENT_BETWEEN_PROCESS_IMAGE_PARTITIONS_AND_OBS"
+	case SzlSublist_COMMUNICATION_STATUS_DATA:
+		return "COMMUNICATION_STATUS_DATA"
+	case SzlSublist_STATUS_SINGLE_MODULE_LED:
+		return "STATUS_SINGLE_MODULE_LED"
+	case SzlSublist_DP_MASTER_SYSTEM_INFORMATION:
+		return "DP_MASTER_SYSTEM_INFORMATION"
+	case SzlSublist_MODULE_STATUS_INFORMATION:
+		return "MODULE_STATUS_INFORMATION"
+	case SzlSublist_RACK_OR_STATION_STATUS_INFORMATION:
+		return "RACK_OR_STATION_STATUS_INFORMATION"
+	case SzlSublist_RACK_OR_STATION_STATUS_INFORMATION_2:
+		return "RACK_OR_STATION_STATUS_INFORMATION_2"
+	case SzlSublist_ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION:
+		return "ADDITIONAL_DP_MASTER_SYSTEM_OR_PROFINET_IO_SYSTEM_INFORMATION"
+	case SzlSublist_MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP:
+		return "MODULE_STATUS_INFORMATION_PROFINET_IO_AND_PROFIBUS_DP"
+	case SzlSublist_DIAGNOSTIC_BUFFER:
+		return "DIAGNOSTIC_BUFFER"
+	case SzlSublist_MODULE_DIAGNOSTIC_DATA:
+		return "MODULE_DIAGNOSTIC_DATA"
+	}
+	return ""
 }
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
index ca4904f..3bbff60 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
@@ -19,649 +19,832 @@
 package model
 
 import (
-    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+	"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
 type TransportSize int8
 
 type ITransportSize interface {
-    Supported_S7_300() bool
-    Supported_LOGO() bool
-    SizeInBytes() uint8
-    Supported_S7_400() bool
-    Supported_S7_1200() bool
-    SizeCode() uint8
-    Supported_S7_1500() bool
-    DataTransportSize() DataTransportSize
-    BaseType() TransportSize
-    DataProtocolId() string
-    Serialize(io utils.WriteBuffer) error
+	Supported_S7_300() bool
+	Supported_LOGO() bool
+	SizeInBytes() uint8
+	Supported_S7_400() bool
+	Supported_S7_1200() bool
+	SizeCode() uint8
+	Supported_S7_1500() bool
+	DataTransportSize() DataTransportSize
+	BaseType() TransportSize
+	DataProtocolId() string
+	Serialize(io utils.WriteBuffer) error
 }
 
-const(
-    TransportSize_BOOL TransportSize = 0x01
-    TransportSize_BYTE TransportSize = 0x02
-    TransportSize_WORD TransportSize = 0x04
-    TransportSize_DWORD TransportSize = 0x06
-    TransportSize_LWORD TransportSize = 0x00
-    TransportSize_INT TransportSize = 0x05
-    TransportSize_UINT TransportSize = 0x05
-    TransportSize_SINT TransportSize = 0x02
-    TransportSize_USINT TransportSize = 0x02
-    TransportSize_DINT TransportSize = 0x07
-    TransportSize_UDINT TransportSize = 0x07
-    TransportSize_LINT TransportSize = 0x00
-    TransportSize_ULINT TransportSize = 0x00
-    TransportSize_REAL TransportSize = 0x08
-    TransportSize_LREAL TransportSize = 0x30
-    TransportSize_CHAR TransportSize = 0x03
-    TransportSize_WCHAR TransportSize = 0x13
-    TransportSize_STRING TransportSize = 0x03
-    TransportSize_WSTRING TransportSize = 0x00
-    TransportSize_TIME TransportSize = 0x0B
-    TransportSize_LTIME TransportSize = 0x00
-    TransportSize_DATE TransportSize = 0x09
-    TransportSize_TIME_OF_DAY TransportSize = 0x06
-    TransportSize_TOD TransportSize = 0x06
-    TransportSize_DATE_AND_TIME TransportSize = 0x0F
-    TransportSize_DT TransportSize = 0x0F
+const (
+	TransportSize_BOOL          TransportSize = 0x01
+	TransportSize_BYTE          TransportSize = 0x02
+	TransportSize_WORD          TransportSize = 0x04
+	TransportSize_DWORD         TransportSize = 0x06
+	TransportSize_LWORD         TransportSize = 0x00
+	TransportSize_INT           TransportSize = 0x05
+	TransportSize_UINT          TransportSize = 0x05
+	TransportSize_SINT          TransportSize = 0x02
+	TransportSize_USINT         TransportSize = 0x02
+	TransportSize_DINT          TransportSize = 0x07
+	TransportSize_UDINT         TransportSize = 0x07
+	TransportSize_LINT          TransportSize = 0x00
+	TransportSize_ULINT         TransportSize = 0x00
+	TransportSize_REAL          TransportSize = 0x08
+	TransportSize_LREAL         TransportSize = 0x30
+	TransportSize_CHAR          TransportSize = 0x03
+	TransportSize_WCHAR         TransportSize = 0x13
+	TransportSize_STRING        TransportSize = 0x03
+	TransportSize_WSTRING       TransportSize = 0x00
+	TransportSize_TIME          TransportSize = 0x0B
+	TransportSize_LTIME         TransportSize = 0x00
+	TransportSize_DATE          TransportSize = 0x09
+	TransportSize_TIME_OF_DAY   TransportSize = 0x06
+	TransportSize_TOD           TransportSize = 0x06
+	TransportSize_DATE_AND_TIME TransportSize = 0x0F
+	TransportSize_DT            TransportSize = 0x0F
 )
 
-
 func (e TransportSize) Supported_S7_300() bool {
-    switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
-        case 0x01: { /* '0x01' */
-            return true
-        }
-        case 0x02: { /* '0x02' */
-            return true
-        }
-        case 0x03: { /* '0x03' */
-            return true
-        }
-        case 0x04: { /* '0x04' */
-            return true
-        }
-        case 0x05: { /* '0x05' */
-            return true
-        }
-        case 0x06: { /* '0x06' */
-            return true
-        }
-        case 0x07: { /* '0x07' */
-            return true
-        }
-        case 0x08: { /* '0x08' */
-            return true
-        }
-        case 0x09: { /* '0x09' */
-            return true
-        }
-        case 0x0B: { /* '0x0B' */
-            return true
-        }
-        case 0x0F: { /* '0x0F' */
-            return true
-        }
-        case 0x13: { /* '0x13' */
-            return false
-        }
-        case 0x30: { /* '0x30' */
-            return false
-        }
-        default: {
-            return false
-        }
-    }
+	switch e {
+	case 0x00:
+		{ /* '0x00' */
+			return false
+		}
+	case 0x01:
+		{ /* '0x01' */
+			return true
+		}
+	case 0x02:
+		{ /* '0x02' */
+			return true
+		}
+	case 0x03:
+		{ /* '0x03' */
+			return true
+		}
+	case 0x04:
+		{ /* '0x04' */
+			return true
+		}
+	case 0x05:
+		{ /* '0x05' */
+			return true
+		}
+	case 0x06:
+		{ /* '0x06' */
+			return true
+		}
+	case 0x07:
+		{ /* '0x07' */
+			return true
+		}
+	case 0x08:
+		{ /* '0x08' */
+			return true
+		}
+	case 0x09:
+		{ /* '0x09' */
+			return true
+		}
+	case 0x0B:
+		{ /* '0x0B' */
+			return true
+		}
+	case 0x0F:
+		{ /* '0x0F' */
+			return true
+		}
+	case 0x13:
+		{ /* '0x13' */
+			return false
+		}
+	case 0x30:
+		{ /* '0x30' */
+			return false
+		}
+	default:
+		{
+			return false
+		}
+	}
 }
 
 func (e TransportSize) Supported_LOGO() bool {
-    switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
-        case 0x01: { /* '0x01' */
-            return true
-        }
-        case 0x02: { /* '0x02' */
-            return true
-        }
-        case 0x03: { /* '0x03' */
-            return true
-        }
-        case 0x04: { /* '0x04' */
-            return true
-        }
-        case 0x05: { /* '0x05' */
-            return true
... 1869 lines suppressed ...