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/31 13:01:16 UTC

[plc4x] branch develop updated (d976d01 -> 2e9c8a0)

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

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


    from d976d01  Update manifest based on Rankesh's request.
     new 604e1b6  - Continuing work on the C S7 driver (Curenlty the changes in mspec are not correct ... need to continue there)
     new 7f1db3b  PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) - When splitting up into more than one request, the new request was correctly initialized with the empty-request size, however the current element wasn't added. This should now be fixed
     new 6216389  PLC4X-276 - [S7] The most of the supported types don't work correctly - Fixed this by extending the syntax for enum fields to allow providing a "field name" to use for serialization/deserialization
     new 01bb98c  - Finished the missing temporal types
     new 12f497d  PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) - When splitting up into more than one request, the new request was correctly initialized with the empty-request size, however the current element wasn't added. This should now be fixed
     new d265090  - Fixed the RELEASE_NOTES
     new 2e9c8a0  - Fixed the RELEASE_NOTES

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../BaseFreemarkerLanguageTemplateHelper.java      |  144 +-
 .../resources/templates/c/data-io-template-c.ftlh  |  136 +-
 .../resources/templates/c/enum-template-c.ftlh     |   25 +-
 .../resources/templates/c/enum-template-h.ftlh     |    1 +
 .../resources/templates/c/pojo-template-c.ftlh     |   18 +
 .../resources/templates/java/enum-template.ftlh    |   21 +
 .../main/resources/templates/java/io-template.ftlh |    8 +
 .../plugins/codegenerator/language/mspec/MSpec.g4  |    2 +-
 .../mspec/model/fields/DefaultEnumField.java       |    8 +-
 .../mspec/parser/MessageFormatListener.java        |   22 +-
 .../plc4go/knxnetip/readwrite/model/APCI.go        |  193 +
 .../plc4go/knxnetip/readwrite/model/ControlType.go |  109 +
 .../knxnetip/readwrite/model/ExtendedAPCI.go       |  368 ++
 .../readwrite/model/KnxDatapointSubtype.go         | 5260 ++++++++++++++++++++
 .../model/{MPropWriteReq.go => LDataFrameAck.go}   |   68 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  811 ++-
 .../plc4x/java/s7/readwrite/field/S7Field.java     |    6 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |   58 +-
 sandbox/plc4c/api/include/plc4c/data.h             |   15 +
 sandbox/plc4c/api/include/plc4c/types.h            |    4 +-
 sandbox/plc4c/drivers/s7/CMakeLists.txt            |   18 +-
 sandbox/plc4c/drivers/s7/src/driver_s7.c           |   67 +-
 .../plc4c/drivers/s7/src/driver_s7_encode_decode.c |   22 +-
 sandbox/plc4c/drivers/s7/src/driver_s7_packets.c   |   57 +-
 sandbox/plc4c/drivers/s7/src/driver_s7_sm_read.c   |    9 +-
 .../examples/hello-subsciptions/CMakeLists.txt     |   17 +-
 sandbox/plc4c/examples/hello-world/CMakeLists.txt  |   32 +-
 .../plc4c/examples/hello-world/src/hello_world.c   |  206 +-
 .../modbus/include/modbus_data_type_sizes.h        |    1 +
 .../plc4c/generated-sources/modbus/src/data_item.c |  442 +-
 .../modbus/src/modbus_data_type_sizes.c            |  142 +-
 .../modbus/src/modbus_error_code.c                 |   30 +-
 .../generated-sources/s7/include/cotp_tpdu_size.h  |    1 +
 .../s7/include/data_transport_size.h               |    1 +
 .../generated-sources/s7/include/memory_area.h     |    1 +
 .../generated-sources/s7/include/transport_size.h  |   63 +-
 .../generated-sources/s7/src/cotp_tpdu_size.c      |   29 +
 sandbox/plc4c/generated-sources/s7/src/data_item.c |  182 +-
 .../s7/src/data_transport_error_code.c             |   16 +-
 .../generated-sources/s7/src/data_transport_size.c |   14 +
 .../plc4c/generated-sources/s7/src/memory_area.c   |   30 +
 .../plc4c/generated-sources/s7/src/s7_address.c    |   12 +-
 .../generated-sources/s7/src/transport_size.c      | 1167 ++++-
 sandbox/plc4c/pom.xml                              |    2 +-
 sandbox/plc4c/spi/CMakeLists.txt                   |   12 +-
 .../plc4c/spi/include/plc4c/spi/types_private.h    |    1 +
 sandbox/plc4c/spi/src/data.c                       |   51 +-
 sandbox/plc4c/transports/tcp/src/transport_tcp.c   |    8 +
 48 files changed, 9034 insertions(+), 876 deletions(-)
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go
 copy plc4go/internal/plc4go/knxnetip/readwrite/model/{MPropWriteReq.go => LDataFrameAck.go} (56%)


[plc4x] 02/07: PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) - When splitting up into more than one request, the new request was correctly initialized with the empty-request size, however the current element wasn't added. This should now be fixed

Posted by cd...@apache.org.
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 7f1db3ba868dfaa2e34e75e3d0345a5ff86961cd
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Jan 18 13:06:10 2021 +0100

    PLC4X-272
    When splitting up large requests, too big sub-requests are generated (S7)
    - When splitting up into more than one request, the new request was correctly initialized with the empty-request size, however the current element wasn't added. This should now be fixed
---
 .../plc4go/s7/readwrite/model/TransportSize.go     | 811 ++++-----------------
 1 file changed, 146 insertions(+), 665 deletions(-)

diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
index 38f3d8d..26cf716 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
@@ -27,11 +27,10 @@ type TransportSize int8
 type ITransportSize interface {
     Supported_S7_300() bool
     Supported_LOGO() bool
-    Code() uint8
     SizeInBytes() uint8
     Supported_S7_400() bool
     Supported_S7_1200() bool
-    ShortName() uint8
+    SizeCode() uint8
     Supported_S7_1500() bool
     DataTransportSize() DataTransportSize
     BaseType() TransportSize
@@ -42,35 +41,38 @@ type ITransportSize interface {
 const(
     TransportSize_BOOL TransportSize = 0x01
     TransportSize_BYTE TransportSize = 0x02
-    TransportSize_WORD TransportSize = 0x03
-    TransportSize_DWORD TransportSize = 0x04
-    TransportSize_LWORD TransportSize = 0x05
-    TransportSize_INT TransportSize = 0x06
-    TransportSize_UINT TransportSize = 0x07
-    TransportSize_SINT TransportSize = 0x08
-    TransportSize_USINT TransportSize = 0x09
-    TransportSize_DINT TransportSize = 0x0A
-    TransportSize_UDINT TransportSize = 0x0B
-    TransportSize_LINT TransportSize = 0x0C
-    TransportSize_ULINT TransportSize = 0x0D
-    TransportSize_REAL TransportSize = 0x0E
-    TransportSize_LREAL TransportSize = 0x0F
-    TransportSize_CHAR TransportSize = 0x10
-    TransportSize_WCHAR TransportSize = 0x11
-    TransportSize_STRING TransportSize = 0x12
-    TransportSize_WSTRING TransportSize = 0x13
-    TransportSize_TIME TransportSize = 0x14
-    TransportSize_LTIME TransportSize = 0x16
-    TransportSize_DATE TransportSize = 0x17
-    TransportSize_TIME_OF_DAY TransportSize = 0x18
-    TransportSize_TOD TransportSize = 0x19
-    TransportSize_DATE_AND_TIME TransportSize = 0x1A
-    TransportSize_DT TransportSize = 0x1B
+    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
         }
@@ -84,71 +86,32 @@ func (e TransportSize) Supported_S7_300() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return false
+            return true
         }
         case 0x08: { /* '0x08' */
-            return false
+            return true
         }
         case 0x09: { /* '0x09' */
-            return false
-        }
-        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
-            return false
-        }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
-            return false
-        }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return false
-        }
-        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
+        case 0x30: { /* '0x30' */
             return false
         }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return true
-        }
-        case 0x1B: { /* '0x1B' */
-            return true
-        }
         default: {
             return false
         }
@@ -157,6 +120,9 @@ func (e TransportSize) Supported_S7_300() bool {
 
 func (e TransportSize) Supported_LOGO() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return false
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -170,7 +136,7 @@ func (e TransportSize) Supported_LOGO() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
@@ -184,55 +150,16 @@ func (e TransportSize) Supported_LOGO() bool {
         case 0x09: { /* '0x09' */
             return true
         }
-        case 0x0A: { /* '0x0A' */
-            return true
-        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
-            return true
-        }
         case 0x0F: { /* '0x0F' */
             return false
         }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return true
-        }
-        case 0x12: { /* '0x12' */
-            return true
-        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
-            return false
-        }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return false
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return false
         }
         default: {
@@ -241,94 +168,11 @@ func (e TransportSize) Supported_LOGO() bool {
     }
 }
 
-func (e TransportSize) Code() uint8 {
-    switch e  {
-        case 0x01: { /* '0x01' */
-            return 0x01
-        }
-        case 0x02: { /* '0x02' */
-            return 0x02
-        }
-        case 0x03: { /* '0x03' */
-            return 0x04
-        }
-        case 0x04: { /* '0x04' */
-            return 0x06
-        }
-        case 0x05: { /* '0x05' */
-            return 0x00
-        }
-        case 0x06: { /* '0x06' */
-            return 0x05
-        }
-        case 0x07: { /* '0x07' */
-            return 0x05
-        }
-        case 0x08: { /* '0x08' */
-            return 0x02
-        }
-        case 0x09: { /* '0x09' */
-            return 0x02
-        }
-        case 0x0A: { /* '0x0A' */
-            return 0x07
-        }
-        case 0x0B: { /* '0x0B' */
-            return 0x07
-        }
-        case 0x0C: { /* '0x0C' */
-            return 0x00
-        }
-        case 0x0D: { /* '0x0D' */
-            return 0x00
-        }
-        case 0x0E: { /* '0x0E' */
-            return 0x08
-        }
-        case 0x0F: { /* '0x0F' */
-            return 0x30
-        }
-        case 0x10: { /* '0x10' */
-            return 0x03
-        }
-        case 0x11: { /* '0x11' */
-            return 0x13
-        }
-        case 0x12: { /* '0x12' */
-            return 0x03
-        }
-        case 0x13: { /* '0x13' */
-            return 0x00
-        }
-        case 0x14: { /* '0x14' */
-            return 0x0B
-        }
-        case 0x16: { /* '0x16' */
-            return 0x00
-        }
-        case 0x17: { /* '0x17' */
-            return 0x09
-        }
-        case 0x18: { /* '0x18' */
-            return 0x06
-        }
-        case 0x19: { /* '0x19' */
-            return 0x06
-        }
-        case 0x1A: { /* '0x1A' */
-            return 0x0F
-        }
-        case 0x1B: { /* '0x1B' */
-            return 0x0F
-        }
-        default: {
-            return 0
-        }
-    }
-}
-
 func (e TransportSize) SizeInBytes() uint8 {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 8
+        }
         case 0x01: { /* '0x01' */
             return 1
         }
@@ -336,77 +180,38 @@ func (e TransportSize) SizeInBytes() uint8 {
             return 1
         }
         case 0x03: { /* '0x03' */
-            return 2
+            return 1
         }
         case 0x04: { /* '0x04' */
-            return 4
+            return 2
         }
         case 0x05: { /* '0x05' */
-            return 8
+            return 2
         }
         case 0x06: { /* '0x06' */
-            return 2
+            return 4
         }
         case 0x07: { /* '0x07' */
-            return 2
+            return 4
         }
         case 0x08: { /* '0x08' */
-            return 1
+            return 4
         }
         case 0x09: { /* '0x09' */
-            return 1
-        }
-        case 0x0A: { /* '0x0A' */
-            return 4
+            return 2
         }
         case 0x0B: { /* '0x0B' */
             return 4
         }
-        case 0x0C: { /* '0x0C' */
-            return 8
-        }
-        case 0x0D: { /* '0x0D' */
-            return 16
-        }
-        case 0x0E: { /* '0x0E' */
-            return 4
-        }
         case 0x0F: { /* '0x0F' */
-            return 8
-        }
-        case 0x10: { /* '0x10' */
-            return 1
-        }
-        case 0x11: { /* '0x11' */
-            return 2
-        }
-        case 0x12: { /* '0x12' */
-            return 1
+            return 12
         }
         case 0x13: { /* '0x13' */
             return 2
         }
-        case 0x14: { /* '0x14' */
-            return 4
-        }
-        case 0x16: { /* '0x16' */
+        case 0x30: { /* '0x30' */
             return 8
         }
-        case 0x17: { /* '0x17' */
-            return 2
-        }
-        case 0x18: { /* '0x18' */
-            return 4
-        }
-        case 0x19: { /* '0x19' */
-            return 4
-        }
-        case 0x1A: { /* '0x1A' */
-            return 12
-        }
-        case 0x1B: { /* '0x1B' */
-            return 12
-        }
         default: {
             return 0
         }
@@ -415,6 +220,9 @@ func (e TransportSize) SizeInBytes() uint8 {
 
 func (e TransportSize) Supported_S7_400() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return false
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -428,71 +236,32 @@ func (e TransportSize) Supported_S7_400() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return false
+            return true
         }
         case 0x08: { /* '0x08' */
-            return false
+            return true
         }
         case 0x09: { /* '0x09' */
-            return false
-        }
-        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
-            return false
-        }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
-            return false
-        }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return false
-        }
-        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
+        case 0x30: { /* '0x30' */
             return false
         }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return true
-        }
-        case 0x1B: { /* '0x1B' */
-            return true
-        }
         default: {
             return false
         }
@@ -501,6 +270,9 @@ func (e TransportSize) Supported_S7_400() bool {
 
 func (e TransportSize) Supported_S7_1200() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return false
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -514,7 +286,7 @@ func (e TransportSize) Supported_S7_1200() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
@@ -528,65 +300,29 @@ func (e TransportSize) Supported_S7_1200() bool {
         case 0x09: { /* '0x09' */
             return true
         }
-        case 0x0A: { /* '0x0A' */
-            return true
-        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
-            return true
-        }
         case 0x0F: { /* '0x0F' */
-            return true
-        }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return true
-        }
-        case 0x12: { /* '0x12' */
-            return true
-        }
-        case 0x13: { /* '0x13' */
-            return true
-        }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
             return false
         }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
+        case 0x13: { /* '0x13' */
             return true
         }
-        case 0x19: { /* '0x19' */
+        case 0x30: { /* '0x30' */
             return true
         }
-        case 0x1A: { /* '0x1A' */
-            return false
-        }
-        case 0x1B: { /* '0x1B' */
-            return false
-        }
         default: {
             return false
         }
     }
 }
 
-func (e TransportSize) ShortName() uint8 {
+func (e TransportSize) SizeCode() uint8 {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 'X'
+        }
         case 0x01: { /* '0x01' */
             return 'X'
         }
@@ -594,75 +330,36 @@ func (e TransportSize) ShortName() uint8 {
             return 'B'
         }
         case 0x03: { /* '0x03' */
-            return 'W'
+            return 'B'
         }
         case 0x04: { /* '0x04' */
-            return 'D'
+            return 'W'
         }
         case 0x05: { /* '0x05' */
-            return 'X'
+            return 'W'
         }
         case 0x06: { /* '0x06' */
-            return 'W'
+            return 'D'
         }
         case 0x07: { /* '0x07' */
-            return 'W'
-        }
-        case 0x08: { /* '0x08' */
-            return 'B'
-        }
-        case 0x09: { /* '0x09' */
-            return 'B'
-        }
-        case 0x0A: { /* '0x0A' */
             return 'D'
         }
-        case 0x0B: { /* '0x0B' */
+        case 0x08: { /* '0x08' */
             return 'D'
         }
-        case 0x0C: { /* '0x0C' */
+        case 0x09: { /* '0x09' */
             return 'X'
         }
-        case 0x0D: { /* '0x0D' */
+        case 0x0B: { /* '0x0B' */
             return 'X'
         }
-        case 0x0E: { /* '0x0E' */
-            return 'D'
-        }
         case 0x0F: { /* '0x0F' */
             return 'X'
         }
-        case 0x10: { /* '0x10' */
-            return 'B'
-        }
-        case 0x11: { /* '0x11' */
-            return 'X'
-        }
-        case 0x12: { /* '0x12' */
-            return 'X'
-        }
         case 0x13: { /* '0x13' */
             return 'X'
         }
-        case 0x14: { /* '0x14' */
-            return 'X'
-        }
-        case 0x16: { /* '0x16' */
-            return 'X'
-        }
-        case 0x17: { /* '0x17' */
-            return 'X'
-        }
-        case 0x18: { /* '0x18' */
-            return 'X'
-        }
-        case 0x19: { /* '0x19' */
-            return 'X'
-        }
-        case 0x1A: { /* '0x1A' */
-            return 'X'
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return 'X'
         }
         default: {
@@ -673,6 +370,9 @@ func (e TransportSize) ShortName() uint8 {
 
 func (e TransportSize) Supported_S7_1500() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return true
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -700,55 +400,16 @@ func (e TransportSize) Supported_S7_1500() bool {
         case 0x09: { /* '0x09' */
             return true
         }
-        case 0x0A: { /* '0x0A' */
-            return true
-        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0C: { /* '0x0C' */
-            return true
-        }
-        case 0x0D: { /* '0x0D' */
-            return true
-        }
-        case 0x0E: { /* '0x0E' */
-            return true
-        }
         case 0x0F: { /* '0x0F' */
             return true
         }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return true
-        }
-        case 0x12: { /* '0x12' */
-            return true
-        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
-            return true
-        }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return true
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return true
         }
         default: {
@@ -759,6 +420,9 @@ func (e TransportSize) Supported_S7_1500() bool {
 
 func (e TransportSize) DataTransportSize() DataTransportSize {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 0
+        }
         case 0x01: { /* '0x01' */
             return DataTransportSize_BIT
         }
@@ -772,10 +436,10 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
             return DataTransportSize_BYTE_WORD_DWORD
         }
         case 0x05: { /* '0x05' */
-            return 0
+            return DataTransportSize_INTEGER
         }
         case 0x06: { /* '0x06' */
-            return DataTransportSize_INTEGER
+            return DataTransportSize_BYTE_WORD_DWORD
         }
         case 0x07: { /* '0x07' */
             return DataTransportSize_INTEGER
@@ -786,55 +450,16 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
         case 0x09: { /* '0x09' */
             return DataTransportSize_BYTE_WORD_DWORD
         }
-        case 0x0A: { /* '0x0A' */
-            return DataTransportSize_INTEGER
-        }
         case 0x0B: { /* '0x0B' */
-            return DataTransportSize_INTEGER
-        }
-        case 0x0C: { /* '0x0C' */
             return 0
         }
-        case 0x0D: { /* '0x0D' */
-            return 0
-        }
-        case 0x0E: { /* '0x0E' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
         case 0x0F: { /* '0x0F' */
             return 0
         }
-        case 0x10: { /* '0x10' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x11: { /* '0x11' */
-            return 0
-        }
-        case 0x12: { /* '0x12' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x14: { /* '0x14' */
-            return 0
-        }
-        case 0x16: { /* '0x16' */
-            return 0
-        }
-        case 0x17: { /* '0x17' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x18: { /* '0x18' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x19: { /* '0x19' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x1A: { /* '0x1A' */
-            return 0
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return 0
         }
         default: {
@@ -845,6 +470,9 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
 
 func (e TransportSize) BaseType() TransportSize {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 0
+        }
         case 0x01: { /* '0x01' */
             return 0
         }
@@ -855,73 +483,34 @@ func (e TransportSize) BaseType() TransportSize {
             return 0
         }
         case 0x04: { /* '0x04' */
-            return TransportSize_WORD
+            return 0
         }
         case 0x05: { /* '0x05' */
             return 0
         }
         case 0x06: { /* '0x06' */
-            return 0
+            return TransportSize_WORD
         }
         case 0x07: { /* '0x07' */
             return TransportSize_INT
         }
         case 0x08: { /* '0x08' */
-            return TransportSize_INT
+            return 0
         }
         case 0x09: { /* '0x09' */
-            return TransportSize_INT
-        }
-        case 0x0A: { /* '0x0A' */
-            return TransportSize_INT
+            return 0
         }
         case 0x0B: { /* '0x0B' */
-            return TransportSize_INT
-        }
-        case 0x0C: { /* '0x0C' */
-            return TransportSize_INT
-        }
-        case 0x0D: { /* '0x0D' */
-            return TransportSize_INT
-        }
-        case 0x0E: { /* '0x0E' */
             return 0
         }
         case 0x0F: { /* '0x0F' */
-            return TransportSize_REAL
-        }
-        case 0x10: { /* '0x10' */
-            return 0
-        }
-        case 0x11: { /* '0x11' */
-            return 0
-        }
-        case 0x12: { /* '0x12' */
             return 0
         }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x14: { /* '0x14' */
-            return 0
-        }
-        case 0x16: { /* '0x16' */
-            return TransportSize_TIME
-        }
-        case 0x17: { /* '0x17' */
-            return 0
-        }
-        case 0x18: { /* '0x18' */
-            return 0
-        }
-        case 0x19: { /* '0x19' */
-            return 0
-        }
-        case 0x1A: { /* '0x1A' */
-            return 0
-        }
-        case 0x1B: { /* '0x1B' */
-            return 0
+        case 0x30: { /* '0x30' */
+            return TransportSize_REAL
         }
         default: {
             return 0
@@ -931,6 +520,9 @@ func (e TransportSize) BaseType() TransportSize {
 
 func (e TransportSize) DataProtocolId() string {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return "IEC61131_LWORD"
+        }
         case 0x01: { /* '0x01' */
             return "IEC61131_BOOL"
         }
@@ -938,76 +530,37 @@ func (e TransportSize) DataProtocolId() string {
             return "IEC61131_BYTE"
         }
         case 0x03: { /* '0x03' */
-            return "IEC61131_WORD"
+            return "IEC61131_CHAR"
         }
         case 0x04: { /* '0x04' */
-            return "IEC61131_DWORD"
+            return "IEC61131_WORD"
         }
         case 0x05: { /* '0x05' */
-            return "IEC61131_LWORD"
+            return "IEC61131_INT"
         }
         case 0x06: { /* '0x06' */
-            return "IEC61131_INT"
+            return "IEC61131_DWORD"
         }
         case 0x07: { /* '0x07' */
-            return "IEC61131_UINT"
+            return "IEC61131_DINT"
         }
         case 0x08: { /* '0x08' */
-            return "IEC61131_SINT"
+            return "IEC61131_REAL"
         }
         case 0x09: { /* '0x09' */
-            return "IEC61131_USINT"
-        }
-        case 0x0A: { /* '0x0A' */
-            return "IEC61131_DINT"
+            return "IEC61131_DATE"
         }
         case 0x0B: { /* '0x0B' */
-            return "IEC61131_UDINT"
-        }
-        case 0x0C: { /* '0x0C' */
-            return "IEC61131_LINT"
-        }
-        case 0x0D: { /* '0x0D' */
-            return "IEC61131_ULINT"
-        }
-        case 0x0E: { /* '0x0E' */
-            return "IEC61131_REAL"
+            return "IEC61131_TIME"
         }
         case 0x0F: { /* '0x0F' */
-            return "IEC61131_LREAL"
-        }
-        case 0x10: { /* '0x10' */
-            return "IEC61131_CHAR"
-        }
-        case 0x11: { /* '0x11' */
-            return "IEC61131_WCHAR"
-        }
-        case 0x12: { /* '0x12' */
-            return "IEC61131_STRING"
+            return "IEC61131_DATE_AND_TIME"
         }
         case 0x13: { /* '0x13' */
-            return "IEC61131_WSTRING"
-        }
-        case 0x14: { /* '0x14' */
-            return "IEC61131_TIME"
-        }
-        case 0x16: { /* '0x16' */
-            return "IEC61131_LTIME"
-        }
-        case 0x17: { /* '0x17' */
-            return "IEC61131_DATE"
-        }
-        case 0x18: { /* '0x18' */
-            return "IEC61131_TIME_OF_DAY"
-        }
-        case 0x19: { /* '0x19' */
-            return "IEC61131_TIME_OF_DAY"
-        }
-        case 0x1A: { /* '0x1A' */
-            return "IEC61131_DATE_AND_TIME"
+            return "IEC61131_WCHAR"
         }
-        case 0x1B: { /* '0x1B' */
-            return "IEC61131_DATE_AND_TIME"
+        case 0x30: { /* '0x30' */
+            return "IEC61131_LREAL"
         }
         default: {
             return ""
@@ -1016,116 +569,68 @@ func (e TransportSize) DataProtocolId() string {
 }
 func TransportSizeByValue(value int8) TransportSize {
     switch value {
+        case 0x00:
+            return TransportSize_LWORD
         case 0x01:
             return TransportSize_BOOL
         case 0x02:
             return TransportSize_BYTE
         case 0x03:
-            return TransportSize_WORD
+            return TransportSize_CHAR
         case 0x04:
-            return TransportSize_DWORD
+            return TransportSize_WORD
         case 0x05:
-            return TransportSize_LWORD
-        case 0x06:
             return TransportSize_INT
+        case 0x06:
+            return TransportSize_DWORD
         case 0x07:
-            return TransportSize_UINT
+            return TransportSize_DINT
         case 0x08:
-            return TransportSize_SINT
+            return TransportSize_REAL
         case 0x09:
-            return TransportSize_USINT
-        case 0x0A:
-            return TransportSize_DINT
+            return TransportSize_DATE
         case 0x0B:
-            return TransportSize_UDINT
-        case 0x0C:
-            return TransportSize_LINT
-        case 0x0D:
-            return TransportSize_ULINT
-        case 0x0E:
-            return TransportSize_REAL
-        case 0x0F:
-            return TransportSize_LREAL
-        case 0x10:
-            return TransportSize_CHAR
-        case 0x11:
-            return TransportSize_WCHAR
-        case 0x12:
-            return TransportSize_STRING
-        case 0x13:
-            return TransportSize_WSTRING
-        case 0x14:
             return TransportSize_TIME
-        case 0x16:
-            return TransportSize_LTIME
-        case 0x17:
-            return TransportSize_DATE
-        case 0x18:
-            return TransportSize_TIME_OF_DAY
-        case 0x19:
-            return TransportSize_TOD
-        case 0x1A:
+        case 0x0F:
             return TransportSize_DATE_AND_TIME
-        case 0x1B:
-            return TransportSize_DT
+        case 0x13:
+            return TransportSize_WCHAR
+        case 0x30:
+            return TransportSize_LREAL
     }
     return 0
 }
 
 func TransportSizeByName(value string) TransportSize {
     switch value {
+    case "LWORD":
+        return TransportSize_LWORD
     case "BOOL":
         return TransportSize_BOOL
     case "BYTE":
         return TransportSize_BYTE
+    case "CHAR":
+        return TransportSize_CHAR
     case "WORD":
         return TransportSize_WORD
-    case "DWORD":
-        return TransportSize_DWORD
-    case "LWORD":
-        return TransportSize_LWORD
     case "INT":
         return TransportSize_INT
-    case "UINT":
-        return TransportSize_UINT
-    case "SINT":
-        return TransportSize_SINT
-    case "USINT":
-        return TransportSize_USINT
+    case "DWORD":
+        return TransportSize_DWORD
     case "DINT":
         return TransportSize_DINT
-    case "UDINT":
-        return TransportSize_UDINT
-    case "LINT":
-        return TransportSize_LINT
-    case "ULINT":
-        return TransportSize_ULINT
     case "REAL":
         return TransportSize_REAL
-    case "LREAL":
-        return TransportSize_LREAL
-    case "CHAR":
-        return TransportSize_CHAR
-    case "WCHAR":
-        return TransportSize_WCHAR
-    case "STRING":
-        return TransportSize_STRING
-    case "WSTRING":
-        return TransportSize_WSTRING
-    case "TIME":
-        return TransportSize_TIME
-    case "LTIME":
-        return TransportSize_LTIME
     case "DATE":
         return TransportSize_DATE
-    case "TIME_OF_DAY":
-        return TransportSize_TIME_OF_DAY
-    case "TOD":
-        return TransportSize_TOD
+    case "TIME":
+        return TransportSize_TIME
     case "DATE_AND_TIME":
         return TransportSize_DATE_AND_TIME
-    case "DT":
-        return TransportSize_DT
+    case "WCHAR":
+        return TransportSize_WCHAR
+    case "LREAL":
+        return TransportSize_LREAL
     }
     return 0
 }
@@ -1163,58 +668,34 @@ func (e TransportSize) Serialize(io utils.WriteBuffer) error {
 
 func (e TransportSize) String() string {
     switch e {
+    case TransportSize_LWORD:
+        return "LWORD"
     case TransportSize_BOOL:
         return "BOOL"
     case TransportSize_BYTE:
         return "BYTE"
+    case TransportSize_CHAR:
+        return "CHAR"
     case TransportSize_WORD:
         return "WORD"
-    case TransportSize_DWORD:
-        return "DWORD"
-    case TransportSize_LWORD:
-        return "LWORD"
     case TransportSize_INT:
         return "INT"
-    case TransportSize_UINT:
-        return "UINT"
-    case TransportSize_SINT:
-        return "SINT"
-    case TransportSize_USINT:
-        return "USINT"
+    case TransportSize_DWORD:
+        return "DWORD"
     case TransportSize_DINT:
         return "DINT"
-    case TransportSize_UDINT:
-        return "UDINT"
-    case TransportSize_LINT:
-        return "LINT"
-    case TransportSize_ULINT:
-        return "ULINT"
     case TransportSize_REAL:
         return "REAL"
-    case TransportSize_LREAL:
-        return "LREAL"
-    case TransportSize_CHAR:
-        return "CHAR"
-    case TransportSize_WCHAR:
-        return "WCHAR"
-    case TransportSize_STRING:
-        return "STRING"
-    case TransportSize_WSTRING:
-        return "WSTRING"
-    case TransportSize_TIME:
-        return "TIME"
-    case TransportSize_LTIME:
-        return "LTIME"
     case TransportSize_DATE:
         return "DATE"
-    case TransportSize_TIME_OF_DAY:
-        return "TIME_OF_DAY"
-    case TransportSize_TOD:
-        return "TOD"
+    case TransportSize_TIME:
+        return "TIME"
     case TransportSize_DATE_AND_TIME:
         return "DATE_AND_TIME"
-    case TransportSize_DT:
-        return "DT"
+    case TransportSize_WCHAR:
+        return "WCHAR"
+    case TransportSize_LREAL:
+        return "LREAL"
     }
     return ""
 }


[plc4x] 03/07: PLC4X-276 - [S7] The most of the supported types don't work correctly - Fixed this by extending the syntax for enum fields to allow providing a "field name" to use for serialization/deserialization

Posted by cd...@apache.org.
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 62163897503f7d8639dff507f2d5032a92198c38
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Jan 31 12:17:45 2021 +0100

    PLC4X-276 - [S7] The most of the supported types don't work correctly
    - Fixed this by extending the syntax for enum fields to allow providing a "field name" to use for serialization/deserialization
    
    NO JIRA:
    - Continued working on getting more of the S7 datatypes working in the PLC4C S7 driver (All except the temporal types now work)
---
 .../BaseFreemarkerLanguageTemplateHelper.java      | 144 ++--
 .../resources/templates/c/enum-template-c.ftlh     |  21 +
 .../resources/templates/c/enum-template-h.ftlh     |   1 +
 .../resources/templates/c/pojo-template-c.ftlh     |  18 +
 .../resources/templates/java/enum-template.ftlh    |  21 +
 .../main/resources/templates/java/io-template.ftlh |   8 +
 .../plugins/codegenerator/language/mspec/MSpec.g4  |   2 +-
 .../mspec/model/fields/DefaultEnumField.java       |   8 +-
 .../mspec/parser/MessageFormatListener.java        |  22 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     | 811 +++++++++++++++++----
 .../s7/src/main/resources/protocols/s7/s7.mspec    |   2 +-
 sandbox/plc4c/api/include/plc4c/data.h             |   2 +-
 sandbox/plc4c/drivers/s7/src/driver_s7.c           |  67 +-
 .../plc4c/drivers/s7/src/driver_s7_encode_decode.c |   6 +-
 sandbox/plc4c/drivers/s7/src/driver_s7_sm_read.c   |   5 +
 .../plc4c/examples/hello-world/src/hello_world.c   |  62 +-
 .../modbus/include/modbus_data_type_sizes.h        |   1 +
 .../modbus/src/modbus_data_type_sizes.c            |  20 +
 .../generated-sources/s7/include/cotp_tpdu_size.h  |   1 +
 .../s7/include/data_transport_size.h               |   1 +
 .../generated-sources/s7/include/memory_area.h     |   1 +
 .../generated-sources/s7/include/transport_size.h  |  11 +
 .../generated-sources/s7/src/cotp_tpdu_size.c      |  29 +
 .../generated-sources/s7/src/data_transport_size.c |  14 +
 .../plc4c/generated-sources/s7/src/memory_area.c   |  30 +
 .../plc4c/generated-sources/s7/src/s7_address.c    |  12 +-
 .../generated-sources/s7/src/transport_size.c      | 281 +++++++
 sandbox/plc4c/pom.xml                              |   2 +-
 sandbox/plc4c/spi/src/data.c                       |  29 +-
 29 files changed, 1362 insertions(+), 270 deletions(-)

diff --git a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
index bd767b2..cce146b 100644
--- a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
+++ b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
@@ -43,6 +43,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     // As they should be shared over all language template implementations,
     // these are defined here manually.
     private static Map<String, SimpleTypeReference> builtInFields;
+
     {
         builtInFields = new HashMap<>();
         builtInFields.put("curPos", new SimpleTypeReference() {
@@ -180,7 +181,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         // If this is a subtype of a discriminated type, we have to add a reference to the parent type.
         if (baseType instanceof DiscriminatedComplexTypeDefinition) {
             DiscriminatedComplexTypeDefinition discriminatedComplexTypeDefinition = (DiscriminatedComplexTypeDefinition) baseType;
-            if(!discriminatedComplexTypeDefinition.isAbstract()) {
+            if (!discriminatedComplexTypeDefinition.isAbstract()) {
                 complexTypeReferences.add(((ComplexTypeReference)
                     discriminatedComplexTypeDefinition.getParentType().getTypeReference()).getName());
             }
@@ -190,13 +191,13 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         if (baseType instanceof ComplexTypeDefinition) {
             ComplexTypeDefinition complexTypeDefinition = (ComplexTypeDefinition) baseType;
             for (Field field : complexTypeDefinition.getFields()) {
-                if(field instanceof PropertyField) {
+                if (field instanceof PropertyField) {
                     PropertyField propertyField = (PropertyField) field;
                     if (propertyField.getType() instanceof ComplexTypeReference) {
                         ComplexTypeReference complexTypeReference = (ComplexTypeReference) propertyField.getType();
                         complexTypeReferences.add(complexTypeReference.getName());
                     }
-                } else if(field instanceof SwitchField) {
+                } else if (field instanceof SwitchField) {
                     SwitchField switchField = (SwitchField) field;
                     for (DiscriminatedComplexTypeDefinition switchCase : switchField.getCases()) {
                         complexTypeReferences.addAll(getComplexTypeReferences(switchCase));
@@ -215,7 +216,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
             }
         }
         // If the type has any parser arguments, these have to be checked too.
-        if(baseType.getParserArguments() != null) {
+        if (baseType.getParserArguments() != null) {
             for (Argument parserArgument : baseType.getParserArguments()) {
                 if (parserArgument.getType() instanceof ComplexTypeReference) {
                     ComplexTypeReference complexTypeReference = (ComplexTypeReference) parserArgument.getType();
@@ -229,19 +230,19 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     /**
      * Little helper to return the type of a given property.
      *
-     * @param baseType base type definition that contains the given property.
+     * @param baseType     base type definition that contains the given property.
      * @param propertyName name of the property
      * @return the type reference of the given property
      */
     public Optional<TypeReference> getTypeReferenceForProperty(ComplexTypeDefinition baseType, String propertyName) {
         // If this is a built-in type, use that.
-        if(builtInFields.containsKey(propertyName)) {
+        if (builtInFields.containsKey(propertyName)) {
             return Optional.of(builtInFields.get(propertyName));
         }
         // Check if the expression root is referencing a field
         final Optional<PropertyField> propertyFieldOptional = baseType.getPropertyFields().stream().filter(
             propertyField -> propertyField.getName().equals(propertyName)).findFirst();
-        if(propertyFieldOptional.isPresent()) {
+        if (propertyFieldOptional.isPresent()) {
             final PropertyField propertyField = propertyFieldOptional.get();
             return Optional.of(propertyField.getType());
         }
@@ -249,12 +250,12 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         final Optional<ImplicitField> implicitFieldOptional = baseType.getFields().stream().filter(
             field -> field instanceof ImplicitField).map(field -> (ImplicitField) field).filter(
             implicitField -> implicitField.getName().equals(propertyName)).findFirst();
-        if(implicitFieldOptional.isPresent()) {
+        if (implicitFieldOptional.isPresent()) {
             final ImplicitField implicitField = implicitFieldOptional.get();
             return Optional.of(implicitField.getType());
         }
         // Check if the expression root is referencing an argument
-        if(baseType.getParserArguments() != null) {
+        if (baseType.getParserArguments() != null) {
             final Optional<Argument> argumentOptional = Arrays.stream(baseType.getParserArguments()).filter(
                 argument -> argument.getName().equals(propertyName)).findFirst();
             if (argumentOptional.isPresent()) {
@@ -267,7 +268,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         final Optional<DiscriminatorField> discriminatorFieldOptional = baseType.getFields().stream().filter(
             field -> field instanceof DiscriminatorField).map(field -> (DiscriminatorField) field).filter(
             discriminatorField -> discriminatorField.getName().equals(propertyName)).findFirst();
-        if(discriminatorFieldOptional.isPresent()) {
+        if (discriminatorFieldOptional.isPresent()) {
             final DiscriminatorField discriminatorField = discriminatorFieldOptional.get();
             return Optional.of(discriminatorField.getType());
         }
@@ -286,10 +287,10 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         }
         ComplexTypeReference complexTypeReference = (ComplexTypeReference) typeReference;
         final TypeDefinition typeDefinition = types.get(complexTypeReference.getName());
-        if(typeDefinition == null) {
+        if (typeDefinition == null) {
             throw new RuntimeException("Couldn't find given enum type definition with name " + complexTypeReference.getName());
         }
-        if(!(typeDefinition instanceof EnumTypeDefinition)) {
+        if (!(typeDefinition instanceof EnumTypeDefinition)) {
             throw new RuntimeException("Referenced type with name " + complexTypeReference.getName() + " is not an enum type");
         }
         EnumTypeDefinition enumTypeDefinition = (EnumTypeDefinition) typeDefinition;
@@ -302,8 +303,8 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
      **********************************************************************************/
 
     public boolean hasFieldOfType(String fieldTypeName) {
-        if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
-           return ((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().anyMatch(field -> field.getTypeName().equals(fieldTypeName));
+        if (getThisTypeDefinition() instanceof ComplexTypeDefinition) {
+            return ((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().anyMatch(field -> field.getTypeName().equals(fieldTypeName));
         }
         return false;
     }
@@ -312,14 +313,14 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         for (String name : names) {
             boolean foundName = false;
             for (Field field : fields) {
-                if(field instanceof NamedField) {
-                    if(name.equals(((NamedField) field).getName())) {
+                if (field instanceof NamedField) {
+                    if (name.equals(((NamedField) field).getName())) {
                         foundName = true;
                         break;
                     }
                 }
             }
-            if(!foundName) {
+            if (!foundName) {
                 return false;
             }
         }
@@ -327,7 +328,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public Field getFieldForNameFromCurrentOrParent(String fieldName) {
-        if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
+        if (getThisTypeDefinition() instanceof ComplexTypeDefinition) {
             return ((ComplexTypeDefinition) getThisTypeDefinition()).getAllPropertyFields()
                 .stream().filter(propertyField -> propertyField.getName().equals(fieldName)).findFirst().orElse(null);
         }
@@ -335,7 +336,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public Field getFieldForNameFromCurrent(String fieldName) {
-        if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
+        if (getThisTypeDefinition() instanceof ComplexTypeDefinition) {
             return ((ComplexTypeDefinition) getThisTypeDefinition()).getPropertyFields()
                 .stream().filter(propertyField -> propertyField.getName().equals(fieldName)).findFirst().orElse(null);
         }
@@ -363,12 +364,12 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public boolean isEnumField(Field field) {
-        if(field instanceof TypedField) {
+        if (field instanceof TypedField) {
             TypedField typedField = (TypedField) field;
             TypeReference typeReference = typedField.getType();
-            if(!isSimpleTypeReference(typeReference)) {
+            if (!isSimpleTypeReference(typeReference)) {
                 TypeDefinition typeDefinition = getTypeDefinitionForTypeReference(typedField.getType());
-                if(typeDefinition instanceof EnumTypeDefinition) {
+                if (typeDefinition instanceof EnumTypeDefinition) {
                     return true;
                 }
             }
@@ -421,11 +422,11 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public boolean isCountArrayField(Field field) {
-        if(field instanceof ArrayField) {
+        if (field instanceof ArrayField) {
             ArrayField arrayField = (ArrayField) field;
             return arrayField.getLoopType() == ArrayField.LoopType.COUNT;
         }
-        if(field instanceof ManualArrayField) {
+        if (field instanceof ManualArrayField) {
             ManualArrayField arrayField = (ManualArrayField) field;
             return arrayField.getLoopType() == ManualArrayField.LoopType.COUNT;
         }
@@ -433,11 +434,11 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public boolean isLengthArrayField(Field field) {
-        if(field instanceof ArrayField) {
+        if (field instanceof ArrayField) {
             ArrayField arrayField = (ArrayField) field;
             return arrayField.getLoopType() == ArrayField.LoopType.LENGTH;
         }
-        if(field instanceof ManualArrayField) {
+        if (field instanceof ManualArrayField) {
             ManualArrayField arrayField = (ManualArrayField) field;
             return arrayField.getLoopType() == ManualArrayField.LoopType.LENGTH;
         }
@@ -445,11 +446,11 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public boolean isTerminatedArrayField(Field field) {
-        if(field instanceof ArrayField) {
+        if (field instanceof ArrayField) {
             ArrayField arrayField = (ArrayField) field;
             return arrayField.getLoopType() == ArrayField.LoopType.TERMINATED;
         }
-        if(field instanceof ManualArrayField) {
+        if (field instanceof ManualArrayField) {
             ManualArrayField arrayField = (ManualArrayField) field;
             return arrayField.getLoopType() == ManualArrayField.LoopType.TERMINATED;
         }
@@ -481,7 +482,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public Collection<Field> getPropertyAndSwitchFields(TypeDefinition typeDefinition) {
-        if(thisType instanceof ComplexTypeDefinition) {
+        if (thisType instanceof ComplexTypeDefinition) {
             return ((ComplexTypeDefinition) thisType).getFields().stream().filter(
                 field -> (field instanceof PropertyField) || (field instanceof SwitchField)).collect(Collectors.toList());
         }
@@ -509,7 +510,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public TypeDefinition getTypeDefinitionForTypeReference(TypeReference typeReference) {
-        if(!(typeReference instanceof ComplexTypeReference)) {
+        if (!(typeReference instanceof ComplexTypeReference)) {
             throw new RuntimeException("Type reference must be a complex type reference");
         }
         return getTypeDefinitions().get(((ComplexTypeReference) typeReference).getName());
@@ -623,11 +624,12 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     /**
      * Get an ordered list of generated names for the discriminators.
      * These names can be used to access the type definitions as well as well as the values.
+     *
      * @return list of symbolic names for the discriminators.
      */
     public List<String> getDiscriminatorNames() {
         TypeDefinition baseType = thisType;
-        if(thisType.getParentType() != null) {
+        if (thisType.getParentType() != null) {
             baseType = thisType.getParentType();
         }
         final SwitchField switchField = getSwitchField(baseType);
@@ -642,6 +644,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
      * Check if there's any field with the given name.
      * This is required to suppress the generation of a discriminator field
      * in case a named field is providing the information.
+     *
      * @param discriminatorName name of the discriminator name
      * @return true if a field with the given name already exists in the same type.
      */
@@ -652,31 +655,32 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
 
     /**
      * Converts a given discriminator description into a symbolic name.
+     *
      * @param discriminatorExpression discriminator expression
      * @return name
      */
     public String getDiscriminatorName(Term discriminatorExpression) {
-        if(discriminatorExpression instanceof Literal) {
+        if (discriminatorExpression instanceof Literal) {
             Literal literal = (Literal) discriminatorExpression;
-            if(literal instanceof NullLiteral) {
+            if (literal instanceof NullLiteral) {
                 return "null";
-            } else if(literal instanceof BooleanLiteral) {
+            } else if (literal instanceof BooleanLiteral) {
                 return Boolean.toString(((BooleanLiteral) literal).getValue());
-            } else if(literal instanceof NumericLiteral) {
+            } else if (literal instanceof NumericLiteral) {
                 return ((NumericLiteral) literal).getNumber().toString();
-            } else if(literal instanceof StringLiteral) {
+            } else if (literal instanceof StringLiteral) {
                 return ((StringLiteral) literal).getValue();
-            } else if(literal instanceof VariableLiteral) {
+            } else if (literal instanceof VariableLiteral) {
                 VariableLiteral variableLiteral = (VariableLiteral) literal;
                 return getVariableLiteralName(variableLiteral);
             }
-        } else if(discriminatorExpression instanceof UnaryTerm) {
+        } else if (discriminatorExpression instanceof UnaryTerm) {
             UnaryTerm unaryTerm = (UnaryTerm) discriminatorExpression;
             return getDiscriminatorName(unaryTerm.getA());
-        } else if(discriminatorExpression instanceof BinaryTerm) {
+        } else if (discriminatorExpression instanceof BinaryTerm) {
             BinaryTerm binaryTerm = (BinaryTerm) discriminatorExpression;
             return getDiscriminatorName(binaryTerm.getA()) + "_" + getDiscriminatorName(binaryTerm.getB());
-        } else if(discriminatorExpression instanceof TernaryTerm) {
+        } else if (discriminatorExpression instanceof TernaryTerm) {
             TernaryTerm ternaryTerm = (TernaryTerm) discriminatorExpression;
             return getDiscriminatorName(ternaryTerm.getA()) + "_" + getDiscriminatorName(ternaryTerm.getB())
                 + "_" + getDiscriminatorName(ternaryTerm.getC());
@@ -686,7 +690,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
 
     private String getVariableLiteralName(VariableLiteral variableLiteral) {
         String rest = "";
-        if(variableLiteral.getChild() != null) {
+        if (variableLiteral.getChild() != null) {
             rest = getVariableLiteralName(variableLiteral.getChild());
             rest = rest.substring(0, 1).toUpperCase() + rest.substring(1);
         }
@@ -695,6 +699,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
 
     /**
      * Get a list of the types for every discriminator name.
+     *
      * @return Map mapping discriminator names to types.
      */
     public Map<String, TypeReference> getDiscriminatorTypes() {
@@ -741,6 +746,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
 
     /**
      * Get a list of the values for every discriminator name for every discriminated type.
+     *
      * @return Map mapping discriminator names to discriminator values for every discriminated type.
      */
     public Map<String, Map<String, String>> getDiscriminatorValues() {
@@ -765,13 +771,13 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public TypeReference getArgumentType(TypeReference typeReference, int index) {
-        if(typeReference instanceof ComplexTypeReference) {
+        if (typeReference instanceof ComplexTypeReference) {
             ComplexTypeReference complexTypeReference = (ComplexTypeReference) typeReference;
-            if(!getTypeDefinitions().containsKey(complexTypeReference.getName())) {
+            if (!getTypeDefinitions().containsKey(complexTypeReference.getName())) {
                 throw new RuntimeException("Could not find definition of complex type " + complexTypeReference.getName());
             }
             TypeDefinition complexTypeDefinition = getTypeDefinitions().get(complexTypeReference.getName());
-            if(complexTypeDefinition.getParserArguments().length <= index) {
+            if (complexTypeDefinition.getParserArguments().length <= index) {
                 throw new RuntimeException("Type " + complexTypeReference.getName() + " specifies too few parser arguments");
             }
             return complexTypeDefinition.getParserArguments()[index].getType();
@@ -787,7 +793,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
      */
     public List<Argument> getSerializerArguments(Argument[] arguments) {
         List<Argument> serializerArguments = new LinkedList<>();
-        if(arguments != null) {
+        if (arguments != null) {
             for (Argument argument : arguments) {
                 if ("lastItem".equals(argument.getName())) {
                     serializerArguments.add(argument);
@@ -799,7 +805,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
 
     public List<Term> getSerializerTerms(Term[] terms) {
         List<Term> serializerTerms = new LinkedList<>();
-        if(terms != null) {
+        if (terms != null) {
             for (Term term : terms) {
                 if (term.contains("lastItem")) {
                     serializerTerms.add(term);
@@ -810,7 +816,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public boolean hasLastItemTerm(Term[] terms) {
-        if(terms != null) {
+        if (terms != null) {
             for (Term term : terms) {
                 if (term.contains("lastItem")) {
                     return true;
@@ -821,28 +827,28 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
     }
 
     public boolean discriminatorValueNeedsStringEqualityCheck(Term term) {
-        if(term instanceof VariableLiteral) {
+        if (term instanceof VariableLiteral) {
             VariableLiteral variableLiteral = (VariableLiteral) term;
             // If this literal references an Enum type, then we have to output it differently.
             if (getTypeDefinitions().get(variableLiteral.getName()) instanceof EnumTypeDefinition) {
                 return false;
             }
 
-            if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
+            if (getThisTypeDefinition() instanceof ComplexTypeDefinition) {
                 Field referencedField = ((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().filter(field -> ((field instanceof NamedField) && ((NamedField) field).getName().equals(variableLiteral.getName()))).findFirst().orElse(null);
-                if(referencedField != null) {
-                    if(referencedField instanceof TypedField) {
+                if (referencedField != null) {
+                    if (referencedField instanceof TypedField) {
                         TypedField typedField = (TypedField) referencedField;
-                        if(typedField.getType() instanceof StringTypeReference) {
+                        if (typedField.getType() instanceof StringTypeReference) {
                             return true;
                         }
                     }
                 }
             }
-            if(getThisTypeDefinition().getParserArguments() != null) {
+            if (getThisTypeDefinition().getParserArguments() != null) {
                 for (Argument parserArgument : getThisTypeDefinition().getParserArguments()) {
                     if (parserArgument.getName().equals(variableLiteral.getName())) {
-                        if(parserArgument.getType() instanceof StringTypeReference) {
+                        if (parserArgument.getType() instanceof StringTypeReference) {
                             return true;
                         }
                     }
@@ -862,4 +868,34 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         return filteredEnumValues.values();
     }
 
+    public Collection<EnumValue> getEnumValuesForUniqueConstantValues(EnumValue[] enumValues, String constantName) {
+        Map<String, EnumValue> filteredEnumValues = new TreeMap<>();
+        for (EnumValue enumValue : enumValues) {
+            if (!filteredEnumValues.containsKey(enumValue.getConstant(constantName))) {
+                filteredEnumValues.put(enumValue.getConstant(constantName), enumValue);
+            }
+        }
+        return filteredEnumValues.values();
+    }
+
+    public Collection<EnumValue> getEnumValuesForConstantValue(EnumValue[] enumValues, String constantName, String constantValue) {
+        List<EnumValue> filteredEnumValues = new ArrayList<>();
+        for (EnumValue enumValue : enumValues) {
+            if(enumValue.getConstant(constantName).equals(constantValue)) {
+                filteredEnumValues.add(enumValue);
+            }
+        }
+        return filteredEnumValues;
+    }
+
+    public SimpleTypeReference getEnumFieldSimpleTypeReference(TypeReference type, String fieldName) {
+        TypeDefinition typeDefinition = getTypeDefinitionForTypeReference(type);
+        if (typeDefinition instanceof EnumTypeDefinition) {
+            if (((EnumTypeDefinition) typeDefinition).getConstantType(fieldName) instanceof SimpleTypeReference) {
+                return (SimpleTypeReference) ((EnumTypeDefinition) typeDefinition).getConstantType(fieldName);
+            }
+        }
+        return null;
+    }
+
 }
diff --git a/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh b/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh
index 2211ef6..2328390 100644
--- a/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh
@@ -101,5 +101,26 @@ ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))
     }
   }
 }
+
+${helper.getCTypeName(type.name)} ${helper.getCTypeName(type.name)}_get_first_enum_for_field_${helper.camelCaseToSnakeCase(constantName)}(${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))} value) {
+    <#if helper.isStringTypeReference(type.getConstantType(constantName))>
+        <#list helper.getEnumValuesForUniqueConstantValues(type.enumValues, constantName) as enumValue>
+    if (strcmp(value, ${helper.escapeEnumValue(type.getConstantType(constantName), enumValue.getConstant(constantName))?no_esc}) == 0) {
+        return ${helper.getCTypeName(type.name)}_${enumValue.name};
+    }
+        </#list>
+    <#else>
+    switch(value) {
+    <#list helper.getEnumValuesForUniqueConstantValues(type.enumValues, constantName) as enumValue>
+        case ${helper.escapeEnumValue(type.getConstantType(constantName), enumValue.getConstant(constantName))?no_esc}: {
+            return ${helper.getCTypeName(type.name)}_${enumValue.name};
+        }
+    </#list>
+        default: {
+            return -1;
+        }
+    }
+    </#if>
+}
     </#list>
 </#if>
diff --git a/build-utils/language-c/src/main/resources/templates/c/enum-template-h.ftlh b/build-utils/language-c/src/main/resources/templates/c/enum-template-h.ftlh
index 266c39b..497195d 100644
--- a/build-utils/language-c/src/main/resources/templates/c/enum-template-h.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/enum-template-h.ftlh
@@ -82,6 +82,7 @@ ${helper.getCTypeName(type.name)} ${helper.getCTypeName(type.name)}_value_for_in
     <#list type.constantNames as constantName>
 
 ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))} ${helper.getCTypeName(type.name)}_get_${helper.camelCaseToSnakeCase(constantName)}(${helper.getCTypeName(type.name)} value);
+${helper.getCTypeName(type.name)} ${helper.getCTypeName(type.name)}_get_first_enum_for_field_${helper.camelCaseToSnakeCase(constantName)}(${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))} value);
     </#list>
 </#if>
 
diff --git a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
index fb38e1a..43ac99a 100644
--- a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
@@ -265,10 +265,21 @@ plc4c_return_code ${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_buffer*
 
 <#if indentContent>  </#if>  // Enum field (${enumField.name})
 <#if indentContent>  </#if>  ${helper.getLanguageTypeNameForField(field)} ${enumField.name} = ${helper.getNullValueForTypeReference(enumField.type)};
+            <#if enumField.fieldName?has_content>
+<#if indentContent>  </#if>  {
+<#if indentContent>  </#if>    ${helper.getLanguageTypeNameForTypeReference(helper.getEnumFieldSimpleTypeReference(enumField.type, enumField.fieldName))} _constantValue = ${helper.getNullValueForTypeReference(helper.getEnumFieldSimpleTypeReference(enumField.type, enumField.fieldName))};
+<#if indentContent>  </#if>    _res = ${helper.getReadBufferReadMethodCall(helper.getEnumFieldSimpleTypeReference(enumField.type, enumField.fieldName), "&_constantValue")};
+<#if indentContent>  </#if>    if(_res != OK) {
+<#if indentContent>  </#if>      return _res;
+<#if indentContent>  </#if>    }
+<#if indentContent>  </#if>    ${enumField.name} = ${helper.getLanguageTypeNameForTypeReference(enumField.type)}_get_first_enum_for_field_${helper.camelCaseToSnakeCase(enumField.fieldName)}(_constantValue);
+<#if indentContent>  </#if>  }
+            <#else>
 <#if indentContent>  </#if>  _res = ${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(enumField.type), "&" + enumField.name)};
 <#if indentContent>  </#if>  if(_res != OK) {
 <#if indentContent>  </#if>    return _res;
 <#if indentContent>  </#if>  }
+            </#if>
 <#if indentContent>  </#if>  (*_message)-><@fieldName baseType=baseType field=enumField/> = ${enumField.name};
             <#break>
         <#case "implicit">
@@ -461,10 +472,17 @@ plc4c_return_code ${helper.getCTypeName(type.name)}_serialize(plc4c_spi_write_bu
             <#assign enumField = field>
 
 <#if indentContent>    </#if>  // Enum field (${enumField.name})
+                <#if enumField.fieldName?has_content>
+<#if indentContent>    </#if>  _res = ${helper.getWriteBufferWriteMethodCall(helper.getEnumFieldSimpleTypeReference(enumField.type, enumField.fieldName), helper.getLanguageTypeNameForTypeReference(enumField.type) + "_get_" + helper.camelCaseToSnakeCase(enumField.fieldName) + "(_message->" + helper.getFieldName(baseType, enumField) + ")")};
+<#if indentContent>    </#if>  if(_res != OK) {
+<#if indentContent>    </#if>    return _res;
+<#if indentContent>    </#if>  }
+                <#else>
 <#if indentContent>    </#if>  _res = ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(enumField.type), "_message->" + helper.getFieldName(baseType, enumField))};
 <#if indentContent>    </#if>  if(_res != OK) {
 <#if indentContent>    </#if>    return _res;
 <#if indentContent>    </#if>  }
+                </#if>
             <#break>
         <#case "implicit">
             <#assign implicitField = field>
diff --git a/build-utils/language-java/src/main/resources/templates/java/enum-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/enum-template.ftlh
index c182bbc..bdc44b3 100644
--- a/build-utils/language-java/src/main/resources/templates/java/enum-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/enum-template.ftlh
@@ -51,7 +51,9 @@ import org.apache.plc4x.java.spi.generation.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 public enum ${type.name} {
@@ -100,6 +102,25 @@ public enum ${type.name} {
         return ${constantName};
     }
 
+    public static ${type.name} firstEnumForField${constantName?cap_first}(${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)} fieldValue) {
+        for (${type.name} _val : ${type.name}.values()) {
+            if(_val.get${constantName?cap_first}() == fieldValue) {
+                return _val;
+            }
+        }
+        return null;
+    }
+
+    public static List<${type.name}> enumsForField${constantName?cap_first}(${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)} fieldValue) {
+        List<${type.name}> _values = new ArrayList();
+        for (${type.name} _val : ${type.name}.values()) {
+            if(_val.get${constantName?cap_first}() == fieldValue) {
+                _values.add(_val);
+            }
+        }
+        return _values;
+    }
+
     </#list>
 </#if>
 <#if type.type?has_content>
diff --git a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
index dc127b6..bc15070 100644
--- a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
@@ -252,7 +252,11 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
         <#assign enumField = field>
 
         // Enum field (${enumField.name})
+        <#if enumField.fieldName?has_content>
+        ${helper.getLanguageTypeNameForField(field)} ${enumField.name} = ${helper.getLanguageTypeNameForField(field)}.firstEnumForField${enumField.fieldName?cap_first}(${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(enumField.type))});
+        <#else>
         ${helper.getLanguageTypeNameForField(field)} ${enumField.name} = ${helper.getLanguageTypeNameForField(field)}.enumForValue(${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(enumField.type))});
+        </#if>
         <#break>
     <#case "implicit">
         <#assign implicitField = field>
@@ -471,7 +475,11 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
 
         // Enum field (${enumField.name})
         ${helper.getLanguageTypeNameForField(field)} ${enumField.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${enumField.name?cap_first}();
+        <#if enumField.fieldName?has_content>
+        ${helper.getWriteBufferWriteMethodCall(helper.getEnumFieldSimpleTypeReference(enumField.type, enumField.fieldName), "(" + enumField.name + ".get" + enumField.fieldName?cap_first + "())")};
+        <#else>
         ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(enumField.type), "(" + enumField.name + ".getValue())")};
+        </#if>
         <#break>
     <#case "implicit">
         <#assign implicitField = field>
diff --git a/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4 b/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4
index d79ba85..add3267 100644
--- a/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4
+++ b/build-utils/protocol-base-mspec/src/main/antlr4/org/apache/plc4x/plugins/codegenerator/language/mspec/MSpec.g4
@@ -80,7 +80,7 @@ discriminatorField
  ;
 
 enumField
- : 'enum' type=typeReference name=idExpression
+ : 'enum' type=typeReference name=idExpression (fieldName=idExpression)?
  ;
 
 implicitField
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/fields/DefaultEnumField.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/fields/DefaultEnumField.java
index 97c7912..4c36511 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/fields/DefaultEnumField.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/fields/DefaultEnumField.java
@@ -27,12 +27,14 @@ public class DefaultEnumField extends DefaultTaggedField implements EnumField {
 
     private final TypeReference type;
     private final String name;
+    private final String fieldName;
     private final Term[] params;
 
-    public DefaultEnumField(String[] tags, TypeReference type, String name, Term[] params) {
+    public DefaultEnumField(String[] tags, TypeReference type, String name, String fieldName, Term[] params) {
         super(tags);
         this.type = type;
         this.name = name;
+        this.fieldName = fieldName;
         this.params = params;
     }
 
@@ -44,6 +46,10 @@ public class DefaultEnumField extends DefaultTaggedField implements EnumField {
         return name;
     }
 
+    public String getFieldName() {
+        return fieldName;
+    }
+
     public Term[] getParams() {
         return params;
     }
diff --git a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
index 135fd4f..251e09d 100644
--- a/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
+++ b/build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/parser/MessageFormatListener.java
@@ -197,8 +197,12 @@ public class MessageFormatListener extends MSpecBaseListener {
     public void enterEnumField(MSpecParser.EnumFieldContext ctx) {
         ComplexTypeReference type = new DefaultComplexTypeReference(ctx.type.complexTypeReference.getText());
         String name = getIdString(ctx.name);
+        String fieldName = null;
+        if (ctx.fieldName != null) {
+            fieldName = getIdString(ctx.fieldName);
+        }
         Term[] params = getFieldParams((MSpecParser.FieldDefinitionContext) ctx.parent.parent);
-        Field field = new DefaultEnumField(null, type, name, params);
+        Field field = new DefaultEnumField(null, type, name, fieldName, params);
         if (parserContexts.peek() != null) {
             parserContexts.peek().add(field);
         }
@@ -341,7 +345,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         String typeName = ctx.name.getText();
         List<Argument> parserArguments = new LinkedList<>();
         // For DataIO types, add all the arguments from the parent type.
-        if(!(ctx.parent.parent.parent.parent instanceof MSpecParser.ComplexTypeContext)) {
+        if (!(ctx.parent.parent.parent.parent instanceof MSpecParser.ComplexTypeContext)) {
             if (((MSpecParser.ComplexTypeContext) ctx.parent.parent.parent).params != null) {
                 parserArguments.addAll(Arrays.asList(getParserArguments(
                     ((MSpecParser.ComplexTypeContext) ctx.parent.parent.parent).params.argument())));
@@ -401,7 +405,7 @@ public class MessageFormatListener extends MSpecBaseListener {
                 MSpecParser.ExpressionContext expression = ctx.constantValueExpressions.expression(i);
                 String constant = unquoteString(expression.getText());
                 // String expressions are double escaped
-                if(constant.startsWith("\"")) {
+                if (constant.startsWith("\"")) {
                     constant = unquoteString(constant);
                 }
                 constants.put(constantName, constant);
@@ -423,7 +427,7 @@ public class MessageFormatListener extends MSpecBaseListener {
 
     private TypeReference getTypeReference(MSpecParser.TypeReferenceContext ctx) {
         if (ctx.simpleTypeReference != null) {
-            return getSimpleTypeReference (ctx.simpleTypeReference);
+            return getSimpleTypeReference(ctx.simpleTypeReference);
         } else {
             return new DefaultComplexTypeReference(ctx.complexTypeReference.getText());
         }
@@ -433,7 +437,7 @@ public class MessageFormatListener extends MSpecBaseListener {
         SimpleTypeReference.SimpleBaseType simpleBaseType =
             SimpleTypeReference.SimpleBaseType.valueOf(ctx.base.getText().toUpperCase());
         // String types need an additional "encoding" field and an optional size.
-        if(simpleBaseType == SimpleTypeReference.SimpleBaseType.STRING) {
+        if (simpleBaseType == SimpleTypeReference.SimpleBaseType.STRING) {
             int size = (ctx.size != null) ? Integer.parseInt(ctx.size.getText()) : -1;
             String encoding = (ctx.encoding != null) ? ctx.encoding.getText() : "UTF-8";
             return new DefaultStringTypeReference(simpleBaseType, size, encoding);
@@ -444,17 +448,15 @@ public class MessageFormatListener extends MSpecBaseListener {
             return new DefaultIntegerTypeReference(simpleBaseType, size);
         }
         // If exponent and mantissa are present, it's a floating point representation.
-        else if((ctx.exponent != null) && (ctx.mantissa != null)) {
+        else if ((ctx.exponent != null) && (ctx.mantissa != null)) {
             int exponent = Integer.parseInt(ctx.exponent.getText());
             int mantissa = Integer.parseInt(ctx.mantissa.getText());
             return new DefaultFloatTypeReference(simpleBaseType, exponent, mantissa);
-        }
-        else if((simpleBaseType == SimpleTypeReference.SimpleBaseType.TIME) ||
+        } else if ((simpleBaseType == SimpleTypeReference.SimpleBaseType.TIME) ||
             (simpleBaseType == SimpleTypeReference.SimpleBaseType.DATE) ||
             (simpleBaseType == SimpleTypeReference.SimpleBaseType.DATETIME)) {
             return new DefaultTemporalTypeReference(simpleBaseType);
-        }
-        else if(simpleBaseType == SimpleTypeReference.SimpleBaseType.BIT) {
+        } else if (simpleBaseType == SimpleTypeReference.SimpleBaseType.BIT) {
             return new DefaultBooleanTypeReference();
         }
         // In all other cases (bit) it's just assume it's length it 1.
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
index 26cf716..38f3d8d 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
@@ -27,10 +27,11 @@ type TransportSize int8
 type ITransportSize interface {
     Supported_S7_300() bool
     Supported_LOGO() bool
+    Code() uint8
     SizeInBytes() uint8
     Supported_S7_400() bool
     Supported_S7_1200() bool
-    SizeCode() uint8
+    ShortName() uint8
     Supported_S7_1500() bool
     DataTransportSize() DataTransportSize
     BaseType() TransportSize
@@ -41,38 +42,35 @@ type ITransportSize interface {
 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
+    TransportSize_WORD TransportSize = 0x03
+    TransportSize_DWORD TransportSize = 0x04
+    TransportSize_LWORD TransportSize = 0x05
+    TransportSize_INT TransportSize = 0x06
+    TransportSize_UINT TransportSize = 0x07
+    TransportSize_SINT TransportSize = 0x08
+    TransportSize_USINT TransportSize = 0x09
+    TransportSize_DINT TransportSize = 0x0A
+    TransportSize_UDINT TransportSize = 0x0B
+    TransportSize_LINT TransportSize = 0x0C
+    TransportSize_ULINT TransportSize = 0x0D
+    TransportSize_REAL TransportSize = 0x0E
+    TransportSize_LREAL TransportSize = 0x0F
+    TransportSize_CHAR TransportSize = 0x10
+    TransportSize_WCHAR TransportSize = 0x11
+    TransportSize_STRING TransportSize = 0x12
+    TransportSize_WSTRING TransportSize = 0x13
+    TransportSize_TIME TransportSize = 0x14
+    TransportSize_LTIME TransportSize = 0x16
+    TransportSize_DATE TransportSize = 0x17
+    TransportSize_TIME_OF_DAY TransportSize = 0x18
+    TransportSize_TOD TransportSize = 0x19
+    TransportSize_DATE_AND_TIME TransportSize = 0x1A
+    TransportSize_DT TransportSize = 0x1B
 )
 
 
 func (e TransportSize) Supported_S7_300() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -86,32 +84,71 @@ func (e TransportSize) Supported_S7_300() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return true
+            return false
         }
         case 0x08: { /* '0x08' */
-            return true
+            return false
         }
         case 0x09: { /* '0x09' */
+            return false
+        }
+        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
+            return false
+        }
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
+            return false
+        }
+        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
+            return false
+        }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return false
+        }
+        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
             return false
         }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return true
+        }
+        case 0x1B: { /* '0x1B' */
+            return true
+        }
         default: {
             return false
         }
@@ -120,9 +157,6 @@ func (e TransportSize) Supported_S7_300() bool {
 
 func (e TransportSize) Supported_LOGO() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -136,7 +170,7 @@ func (e TransportSize) Supported_LOGO() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
@@ -150,16 +184,55 @@ func (e TransportSize) Supported_LOGO() bool {
         case 0x09: { /* '0x09' */
             return true
         }
+        case 0x0A: { /* '0x0A' */
+            return true
+        }
         case 0x0B: { /* '0x0B' */
             return true
         }
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
+            return false
+        }
+        case 0x0E: { /* '0x0E' */
+            return true
+        }
         case 0x0F: { /* '0x0F' */
             return false
         }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return true
+        }
+        case 0x12: { /* '0x12' */
+            return true
+        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
+            return false
+        }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return false
+        }
+        case 0x1B: { /* '0x1B' */
             return false
         }
         default: {
@@ -168,11 +241,94 @@ func (e TransportSize) Supported_LOGO() bool {
     }
 }
 
-func (e TransportSize) SizeInBytes() uint8 {
+func (e TransportSize) Code() uint8 {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 8
+        case 0x01: { /* '0x01' */
+            return 0x01
+        }
+        case 0x02: { /* '0x02' */
+            return 0x02
+        }
+        case 0x03: { /* '0x03' */
+            return 0x04
+        }
+        case 0x04: { /* '0x04' */
+            return 0x06
+        }
+        case 0x05: { /* '0x05' */
+            return 0x00
+        }
+        case 0x06: { /* '0x06' */
+            return 0x05
+        }
+        case 0x07: { /* '0x07' */
+            return 0x05
+        }
+        case 0x08: { /* '0x08' */
+            return 0x02
+        }
+        case 0x09: { /* '0x09' */
+            return 0x02
+        }
+        case 0x0A: { /* '0x0A' */
+            return 0x07
+        }
+        case 0x0B: { /* '0x0B' */
+            return 0x07
+        }
+        case 0x0C: { /* '0x0C' */
+            return 0x00
+        }
+        case 0x0D: { /* '0x0D' */
+            return 0x00
+        }
+        case 0x0E: { /* '0x0E' */
+            return 0x08
         }
+        case 0x0F: { /* '0x0F' */
+            return 0x30
+        }
+        case 0x10: { /* '0x10' */
+            return 0x03
+        }
+        case 0x11: { /* '0x11' */
+            return 0x13
+        }
+        case 0x12: { /* '0x12' */
+            return 0x03
+        }
+        case 0x13: { /* '0x13' */
+            return 0x00
+        }
+        case 0x14: { /* '0x14' */
+            return 0x0B
+        }
+        case 0x16: { /* '0x16' */
+            return 0x00
+        }
+        case 0x17: { /* '0x17' */
+            return 0x09
+        }
+        case 0x18: { /* '0x18' */
+            return 0x06
+        }
+        case 0x19: { /* '0x19' */
+            return 0x06
+        }
+        case 0x1A: { /* '0x1A' */
+            return 0x0F
+        }
+        case 0x1B: { /* '0x1B' */
+            return 0x0F
+        }
+        default: {
+            return 0
+        }
+    }
+}
+
+func (e TransportSize) SizeInBytes() uint8 {
+    switch e  {
         case 0x01: { /* '0x01' */
             return 1
         }
@@ -180,38 +336,77 @@ func (e TransportSize) SizeInBytes() uint8 {
             return 1
         }
         case 0x03: { /* '0x03' */
-            return 1
+            return 2
         }
         case 0x04: { /* '0x04' */
-            return 2
+            return 4
         }
         case 0x05: { /* '0x05' */
-            return 2
+            return 8
         }
         case 0x06: { /* '0x06' */
-            return 4
+            return 2
         }
         case 0x07: { /* '0x07' */
-            return 4
+            return 2
         }
         case 0x08: { /* '0x08' */
-            return 4
+            return 1
         }
         case 0x09: { /* '0x09' */
-            return 2
+            return 1
+        }
+        case 0x0A: { /* '0x0A' */
+            return 4
         }
         case 0x0B: { /* '0x0B' */
             return 4
         }
+        case 0x0C: { /* '0x0C' */
+            return 8
+        }
+        case 0x0D: { /* '0x0D' */
+            return 16
+        }
+        case 0x0E: { /* '0x0E' */
+            return 4
+        }
         case 0x0F: { /* '0x0F' */
-            return 12
+            return 8
+        }
+        case 0x10: { /* '0x10' */
+            return 1
+        }
+        case 0x11: { /* '0x11' */
+            return 2
+        }
+        case 0x12: { /* '0x12' */
+            return 1
         }
         case 0x13: { /* '0x13' */
             return 2
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return 4
+        }
+        case 0x16: { /* '0x16' */
             return 8
         }
+        case 0x17: { /* '0x17' */
+            return 2
+        }
+        case 0x18: { /* '0x18' */
+            return 4
+        }
+        case 0x19: { /* '0x19' */
+            return 4
+        }
+        case 0x1A: { /* '0x1A' */
+            return 12
+        }
+        case 0x1B: { /* '0x1B' */
+            return 12
+        }
         default: {
             return 0
         }
@@ -220,9 +415,6 @@ func (e TransportSize) SizeInBytes() uint8 {
 
 func (e TransportSize) Supported_S7_400() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -236,32 +428,71 @@ func (e TransportSize) Supported_S7_400() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return true
+            return false
         }
         case 0x08: { /* '0x08' */
-            return true
+            return false
         }
         case 0x09: { /* '0x09' */
+            return false
+        }
+        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
+            return false
+        }
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
+            return false
+        }
+        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
+            return false
+        }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return false
+        }
+        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
             return false
         }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return true
+        }
+        case 0x1B: { /* '0x1B' */
+            return true
+        }
         default: {
             return false
         }
@@ -270,9 +501,6 @@ func (e TransportSize) Supported_S7_400() bool {
 
 func (e TransportSize) Supported_S7_1200() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -286,7 +514,7 @@ func (e TransportSize) Supported_S7_1200() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
@@ -300,29 +528,65 @@ func (e TransportSize) Supported_S7_1200() bool {
         case 0x09: { /* '0x09' */
             return true
         }
+        case 0x0A: { /* '0x0A' */
+            return true
+        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0F: { /* '0x0F' */
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
             return false
         }
+        case 0x0E: { /* '0x0E' */
+            return true
+        }
+        case 0x0F: { /* '0x0F' */
+            return true
+        }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return true
+        }
+        case 0x12: { /* '0x12' */
+            return true
+        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
             return true
         }
+        case 0x16: { /* '0x16' */
+            return false
+        }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return false
+        }
+        case 0x1B: { /* '0x1B' */
+            return false
+        }
         default: {
             return false
         }
     }
 }
 
-func (e TransportSize) SizeCode() uint8 {
+func (e TransportSize) ShortName() uint8 {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 'X'
-        }
         case 0x01: { /* '0x01' */
             return 'X'
         }
@@ -330,36 +594,75 @@ func (e TransportSize) SizeCode() uint8 {
             return 'B'
         }
         case 0x03: { /* '0x03' */
-            return 'B'
+            return 'W'
         }
         case 0x04: { /* '0x04' */
-            return 'W'
+            return 'D'
         }
         case 0x05: { /* '0x05' */
-            return 'W'
+            return 'X'
         }
         case 0x06: { /* '0x06' */
-            return 'D'
+            return 'W'
         }
         case 0x07: { /* '0x07' */
-            return 'D'
+            return 'W'
         }
         case 0x08: { /* '0x08' */
-            return 'D'
+            return 'B'
         }
         case 0x09: { /* '0x09' */
-            return 'X'
+            return 'B'
+        }
+        case 0x0A: { /* '0x0A' */
+            return 'D'
         }
         case 0x0B: { /* '0x0B' */
+            return 'D'
+        }
+        case 0x0C: { /* '0x0C' */
+            return 'X'
+        }
+        case 0x0D: { /* '0x0D' */
             return 'X'
         }
+        case 0x0E: { /* '0x0E' */
+            return 'D'
+        }
         case 0x0F: { /* '0x0F' */
             return 'X'
         }
+        case 0x10: { /* '0x10' */
+            return 'B'
+        }
+        case 0x11: { /* '0x11' */
+            return 'X'
+        }
+        case 0x12: { /* '0x12' */
+            return 'X'
+        }
         case 0x13: { /* '0x13' */
             return 'X'
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return 'X'
+        }
+        case 0x16: { /* '0x16' */
+            return 'X'
+        }
+        case 0x17: { /* '0x17' */
+            return 'X'
+        }
+        case 0x18: { /* '0x18' */
+            return 'X'
+        }
+        case 0x19: { /* '0x19' */
+            return 'X'
+        }
+        case 0x1A: { /* '0x1A' */
+            return 'X'
+        }
+        case 0x1B: { /* '0x1B' */
             return 'X'
         }
         default: {
@@ -370,9 +673,6 @@ func (e TransportSize) SizeCode() uint8 {
 
 func (e TransportSize) Supported_S7_1500() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return true
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -400,16 +700,55 @@ func (e TransportSize) Supported_S7_1500() bool {
         case 0x09: { /* '0x09' */
             return true
         }
+        case 0x0A: { /* '0x0A' */
+            return true
+        }
         case 0x0B: { /* '0x0B' */
             return true
         }
+        case 0x0C: { /* '0x0C' */
+            return true
+        }
+        case 0x0D: { /* '0x0D' */
+            return true
+        }
+        case 0x0E: { /* '0x0E' */
+            return true
+        }
         case 0x0F: { /* '0x0F' */
             return true
         }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return true
+        }
+        case 0x12: { /* '0x12' */
+            return true
+        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
+            return true
+        }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return true
+        }
+        case 0x1B: { /* '0x1B' */
             return true
         }
         default: {
@@ -420,9 +759,6 @@ func (e TransportSize) Supported_S7_1500() bool {
 
 func (e TransportSize) DataTransportSize() DataTransportSize {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 0
-        }
         case 0x01: { /* '0x01' */
             return DataTransportSize_BIT
         }
@@ -436,10 +772,10 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
             return DataTransportSize_BYTE_WORD_DWORD
         }
         case 0x05: { /* '0x05' */
-            return DataTransportSize_INTEGER
+            return 0
         }
         case 0x06: { /* '0x06' */
-            return DataTransportSize_BYTE_WORD_DWORD
+            return DataTransportSize_INTEGER
         }
         case 0x07: { /* '0x07' */
             return DataTransportSize_INTEGER
@@ -450,16 +786,55 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
         case 0x09: { /* '0x09' */
             return DataTransportSize_BYTE_WORD_DWORD
         }
+        case 0x0A: { /* '0x0A' */
+            return DataTransportSize_INTEGER
+        }
         case 0x0B: { /* '0x0B' */
+            return DataTransportSize_INTEGER
+        }
+        case 0x0C: { /* '0x0C' */
             return 0
         }
+        case 0x0D: { /* '0x0D' */
+            return 0
+        }
+        case 0x0E: { /* '0x0E' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
         case 0x0F: { /* '0x0F' */
             return 0
         }
+        case 0x10: { /* '0x10' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x11: { /* '0x11' */
+            return 0
+        }
+        case 0x12: { /* '0x12' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return 0
+        }
+        case 0x16: { /* '0x16' */
+            return 0
+        }
+        case 0x17: { /* '0x17' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x18: { /* '0x18' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x19: { /* '0x19' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x1A: { /* '0x1A' */
+            return 0
+        }
+        case 0x1B: { /* '0x1B' */
             return 0
         }
         default: {
@@ -470,9 +845,6 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
 
 func (e TransportSize) BaseType() TransportSize {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 0
-        }
         case 0x01: { /* '0x01' */
             return 0
         }
@@ -483,34 +855,73 @@ func (e TransportSize) BaseType() TransportSize {
             return 0
         }
         case 0x04: { /* '0x04' */
-            return 0
+            return TransportSize_WORD
         }
         case 0x05: { /* '0x05' */
             return 0
         }
         case 0x06: { /* '0x06' */
-            return TransportSize_WORD
+            return 0
         }
         case 0x07: { /* '0x07' */
             return TransportSize_INT
         }
         case 0x08: { /* '0x08' */
-            return 0
+            return TransportSize_INT
         }
         case 0x09: { /* '0x09' */
-            return 0
+            return TransportSize_INT
+        }
+        case 0x0A: { /* '0x0A' */
+            return TransportSize_INT
         }
         case 0x0B: { /* '0x0B' */
+            return TransportSize_INT
+        }
+        case 0x0C: { /* '0x0C' */
+            return TransportSize_INT
+        }
+        case 0x0D: { /* '0x0D' */
+            return TransportSize_INT
+        }
+        case 0x0E: { /* '0x0E' */
             return 0
         }
         case 0x0F: { /* '0x0F' */
+            return TransportSize_REAL
+        }
+        case 0x10: { /* '0x10' */
+            return 0
+        }
+        case 0x11: { /* '0x11' */
+            return 0
+        }
+        case 0x12: { /* '0x12' */
             return 0
         }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x30: { /* '0x30' */
-            return TransportSize_REAL
+        case 0x14: { /* '0x14' */
+            return 0
+        }
+        case 0x16: { /* '0x16' */
+            return TransportSize_TIME
+        }
+        case 0x17: { /* '0x17' */
+            return 0
+        }
+        case 0x18: { /* '0x18' */
+            return 0
+        }
+        case 0x19: { /* '0x19' */
+            return 0
+        }
+        case 0x1A: { /* '0x1A' */
+            return 0
+        }
+        case 0x1B: { /* '0x1B' */
+            return 0
         }
         default: {
             return 0
@@ -520,9 +931,6 @@ func (e TransportSize) BaseType() TransportSize {
 
 func (e TransportSize) DataProtocolId() string {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return "IEC61131_LWORD"
-        }
         case 0x01: { /* '0x01' */
             return "IEC61131_BOOL"
         }
@@ -530,37 +938,76 @@ func (e TransportSize) DataProtocolId() string {
             return "IEC61131_BYTE"
         }
         case 0x03: { /* '0x03' */
-            return "IEC61131_CHAR"
+            return "IEC61131_WORD"
         }
         case 0x04: { /* '0x04' */
-            return "IEC61131_WORD"
+            return "IEC61131_DWORD"
         }
         case 0x05: { /* '0x05' */
-            return "IEC61131_INT"
+            return "IEC61131_LWORD"
         }
         case 0x06: { /* '0x06' */
-            return "IEC61131_DWORD"
+            return "IEC61131_INT"
         }
         case 0x07: { /* '0x07' */
-            return "IEC61131_DINT"
+            return "IEC61131_UINT"
         }
         case 0x08: { /* '0x08' */
-            return "IEC61131_REAL"
+            return "IEC61131_SINT"
         }
         case 0x09: { /* '0x09' */
-            return "IEC61131_DATE"
+            return "IEC61131_USINT"
+        }
+        case 0x0A: { /* '0x0A' */
+            return "IEC61131_DINT"
         }
         case 0x0B: { /* '0x0B' */
-            return "IEC61131_TIME"
+            return "IEC61131_UDINT"
+        }
+        case 0x0C: { /* '0x0C' */
+            return "IEC61131_LINT"
+        }
+        case 0x0D: { /* '0x0D' */
+            return "IEC61131_ULINT"
+        }
+        case 0x0E: { /* '0x0E' */
+            return "IEC61131_REAL"
         }
         case 0x0F: { /* '0x0F' */
-            return "IEC61131_DATE_AND_TIME"
+            return "IEC61131_LREAL"
         }
-        case 0x13: { /* '0x13' */
+        case 0x10: { /* '0x10' */
+            return "IEC61131_CHAR"
+        }
+        case 0x11: { /* '0x11' */
             return "IEC61131_WCHAR"
         }
-        case 0x30: { /* '0x30' */
-            return "IEC61131_LREAL"
+        case 0x12: { /* '0x12' */
+            return "IEC61131_STRING"
+        }
+        case 0x13: { /* '0x13' */
+            return "IEC61131_WSTRING"
+        }
+        case 0x14: { /* '0x14' */
+            return "IEC61131_TIME"
+        }
+        case 0x16: { /* '0x16' */
+            return "IEC61131_LTIME"
+        }
+        case 0x17: { /* '0x17' */
+            return "IEC61131_DATE"
+        }
+        case 0x18: { /* '0x18' */
+            return "IEC61131_TIME_OF_DAY"
+        }
+        case 0x19: { /* '0x19' */
+            return "IEC61131_TIME_OF_DAY"
+        }
+        case 0x1A: { /* '0x1A' */
+            return "IEC61131_DATE_AND_TIME"
+        }
+        case 0x1B: { /* '0x1B' */
+            return "IEC61131_DATE_AND_TIME"
         }
         default: {
             return ""
@@ -569,68 +1016,116 @@ func (e TransportSize) DataProtocolId() string {
 }
 func TransportSizeByValue(value int8) TransportSize {
     switch value {
-        case 0x00:
-            return TransportSize_LWORD
         case 0x01:
             return TransportSize_BOOL
         case 0x02:
             return TransportSize_BYTE
         case 0x03:
-            return TransportSize_CHAR
-        case 0x04:
             return TransportSize_WORD
+        case 0x04:
+            return TransportSize_DWORD
         case 0x05:
-            return TransportSize_INT
+            return TransportSize_LWORD
         case 0x06:
-            return TransportSize_DWORD
+            return TransportSize_INT
         case 0x07:
-            return TransportSize_DINT
+            return TransportSize_UINT
         case 0x08:
-            return TransportSize_REAL
+            return TransportSize_SINT
         case 0x09:
-            return TransportSize_DATE
+            return TransportSize_USINT
+        case 0x0A:
+            return TransportSize_DINT
         case 0x0B:
-            return TransportSize_TIME
+            return TransportSize_UDINT
+        case 0x0C:
+            return TransportSize_LINT
+        case 0x0D:
+            return TransportSize_ULINT
+        case 0x0E:
+            return TransportSize_REAL
         case 0x0F:
-            return TransportSize_DATE_AND_TIME
-        case 0x13:
-            return TransportSize_WCHAR
-        case 0x30:
             return TransportSize_LREAL
+        case 0x10:
+            return TransportSize_CHAR
+        case 0x11:
+            return TransportSize_WCHAR
+        case 0x12:
+            return TransportSize_STRING
+        case 0x13:
+            return TransportSize_WSTRING
+        case 0x14:
+            return TransportSize_TIME
+        case 0x16:
+            return TransportSize_LTIME
+        case 0x17:
+            return TransportSize_DATE
+        case 0x18:
+            return TransportSize_TIME_OF_DAY
+        case 0x19:
+            return TransportSize_TOD
+        case 0x1A:
+            return TransportSize_DATE_AND_TIME
+        case 0x1B:
+            return TransportSize_DT
     }
     return 0
 }
 
 func TransportSizeByName(value string) TransportSize {
     switch value {
-    case "LWORD":
-        return TransportSize_LWORD
     case "BOOL":
         return TransportSize_BOOL
     case "BYTE":
         return TransportSize_BYTE
-    case "CHAR":
-        return TransportSize_CHAR
     case "WORD":
         return TransportSize_WORD
-    case "INT":
-        return TransportSize_INT
     case "DWORD":
         return TransportSize_DWORD
+    case "LWORD":
+        return TransportSize_LWORD
+    case "INT":
+        return TransportSize_INT
+    case "UINT":
+        return TransportSize_UINT
+    case "SINT":
+        return TransportSize_SINT
+    case "USINT":
+        return TransportSize_USINT
     case "DINT":
         return TransportSize_DINT
+    case "UDINT":
+        return TransportSize_UDINT
+    case "LINT":
+        return TransportSize_LINT
+    case "ULINT":
+        return TransportSize_ULINT
     case "REAL":
         return TransportSize_REAL
-    case "DATE":
-        return TransportSize_DATE
+    case "LREAL":
+        return TransportSize_LREAL
+    case "CHAR":
+        return TransportSize_CHAR
+    case "WCHAR":
+        return TransportSize_WCHAR
+    case "STRING":
+        return TransportSize_STRING
+    case "WSTRING":
+        return TransportSize_WSTRING
     case "TIME":
         return TransportSize_TIME
+    case "LTIME":
+        return TransportSize_LTIME
+    case "DATE":
+        return TransportSize_DATE
+    case "TIME_OF_DAY":
+        return TransportSize_TIME_OF_DAY
+    case "TOD":
+        return TransportSize_TOD
     case "DATE_AND_TIME":
         return TransportSize_DATE_AND_TIME
-    case "WCHAR":
-        return TransportSize_WCHAR
-    case "LREAL":
-        return TransportSize_LREAL
+    case "DT":
+        return TransportSize_DT
     }
     return 0
 }
@@ -668,34 +1163,58 @@ func (e TransportSize) Serialize(io utils.WriteBuffer) error {
 
 func (e TransportSize) String() string {
     switch e {
-    case TransportSize_LWORD:
-        return "LWORD"
     case TransportSize_BOOL:
         return "BOOL"
     case TransportSize_BYTE:
         return "BYTE"
-    case TransportSize_CHAR:
-        return "CHAR"
     case TransportSize_WORD:
         return "WORD"
-    case TransportSize_INT:
-        return "INT"
     case TransportSize_DWORD:
         return "DWORD"
+    case TransportSize_LWORD:
+        return "LWORD"
+    case TransportSize_INT:
+        return "INT"
+    case TransportSize_UINT:
+        return "UINT"
+    case TransportSize_SINT:
+        return "SINT"
+    case TransportSize_USINT:
+        return "USINT"
     case TransportSize_DINT:
         return "DINT"
+    case TransportSize_UDINT:
+        return "UDINT"
+    case TransportSize_LINT:
+        return "LINT"
+    case TransportSize_ULINT:
+        return "ULINT"
     case TransportSize_REAL:
         return "REAL"
-    case TransportSize_DATE:
-        return "DATE"
+    case TransportSize_LREAL:
+        return "LREAL"
+    case TransportSize_CHAR:
+        return "CHAR"
+    case TransportSize_WCHAR:
+        return "WCHAR"
+    case TransportSize_STRING:
+        return "STRING"
+    case TransportSize_WSTRING:
+        return "WSTRING"
     case TransportSize_TIME:
         return "TIME"
+    case TransportSize_LTIME:
+        return "LTIME"
+    case TransportSize_DATE:
+        return "DATE"
+    case TransportSize_TIME_OF_DAY:
+        return "TIME_OF_DAY"
+    case TransportSize_TOD:
+        return "TOD"
     case TransportSize_DATE_AND_TIME:
         return "DATE_AND_TIME"
-    case TransportSize_WCHAR:
-        return "WCHAR"
-    case TransportSize_LREAL:
-        return "LREAL"
+    case TransportSize_DT:
+        return "DT"
     }
     return ""
 }
diff --git a/protocols/s7/src/main/resources/protocols/s7/s7.mspec b/protocols/s7/src/main/resources/protocols/s7/s7.mspec
index 928531d..38dcb47 100644
--- a/protocols/s7/src/main/resources/protocols/s7/s7.mspec
+++ b/protocols/s7/src/main/resources/protocols/s7/s7.mspec
@@ -166,7 +166,7 @@
     [discriminator uint 8 'addressType']
     [typeSwitch 'addressType'
         ['0x10' S7AddressAny
-            [enum     TransportSize 'transportSize']
+            [enum     TransportSize 'transportSize' 'code']
             [simple   uint 16       'numberOfElements']
             [simple   uint 16       'dbNumber']
             [enum     MemoryArea    'area']
diff --git a/sandbox/plc4c/api/include/plc4c/data.h b/sandbox/plc4c/api/include/plc4c/data.h
index 67c0d91..265f7aa 100644
--- a/sandbox/plc4c/api/include/plc4c/data.h
+++ b/sandbox/plc4c/api/include/plc4c/data.h
@@ -141,7 +141,7 @@ plc4c_data *plc4c_data_create_constant_string_data(unsigned int size, char *s);
  * @param s the char value
  * @return pointer to plc4c_data
  */
-plc4c_data *plc4c_data_create_char_data(char s);
+plc4c_data *plc4c_data_create_char_data(char* s);
 
 /**
  * Creates a plc4c_data which contains a list of values
diff --git a/sandbox/plc4c/drivers/s7/src/driver_s7.c b/sandbox/plc4c/drivers/s7/src/driver_s7.c
index 2cfd568..40a5938 100644
--- a/sandbox/plc4c/drivers/s7/src/driver_s7.c
+++ b/sandbox/plc4c/drivers/s7/src/driver_s7.c
@@ -18,13 +18,16 @@
 */
 
 #include "plc4c/driver_s7.h"
-#include "plc4c/driver_s7_sm.h"
+
+#include <string.h>
+
 #include "plc4c/driver_s7_encode_decode.h"
+#include "plc4c/driver_s7_sm.h"
 
-plc4c_return_code plc4c_driver_s7_configure_function(
-    plc4c_list* parameters, void** configuration) {
+plc4c_return_code plc4c_driver_s7_configure_function(plc4c_list* parameters,
+                                                     void** configuration) {
   plc4c_driver_s7_config* s7_config = malloc(sizeof(plc4c_driver_s7_config));
-  if(s7_config == NULL) {
+  if (s7_config == NULL) {
     return NO_MEMORY;
   }
 
@@ -70,13 +73,60 @@ plc4c_driver* plc4c_driver_s7_create() {
  *
  */
 
-char* plc4c_s7_read_write_parse_s7_string(plc4c_spi_read_buffer* io, int32_t stringLength, char* encoding) {
-  // TODO: Implement ...
+char* plc4c_s7_read_write_parse_s7_string(plc4c_spi_read_buffer* io,
+                                          int32_t stringLength,
+                                          char* encoding) {
+  if (strcmp(encoding, "UTF-8") == 0) {
+    // Read the max length (which is not interesting for us.
+    uint8_t maxLen;
+    plc4c_return_code res = plc4c_spi_read_unsigned_byte(io, 8, &maxLen);
+    if (res != OK) {
+      return NULL;
+    }
+    // Read the effective length of the string.
+    uint8_t effectiveStringLength;
+    res = plc4c_spi_read_unsigned_byte(io, 8, &effectiveStringLength);
+    if (res != OK) {
+      return NULL;
+    }
+    char* result = malloc(sizeof(char) * (effectiveStringLength + 1));
+    if (result == NULL) {
+      return NULL;
+    }
+    char* curPos = result;
+    for(int i = 0; i < effectiveStringLength; i++) {
+      uint8_t val;
+      plc4c_return_code res = plc4c_spi_read_unsigned_byte(io, 8, &val);
+      if (res != OK) {
+        return NULL;
+      }
+      *curPos = (char) val;
+      curPos++;
+    }
+    *curPos = '\0';
+    return result;
+  } else if (strcmp(encoding, "UTF-16") == 0) {
+  }
   return "";
 }
 
-char* plc4c_s7_read_write_parse_s7_char(plc4c_spi_read_buffer* io, char* encoding) {
-  // TODO: Implement ...
+char* plc4c_s7_read_write_parse_s7_char(plc4c_spi_read_buffer* io,
+                                        char* encoding) {
+  if (strcmp(encoding, "UTF-8") == 0) {
+    char* result = malloc(sizeof(char) * 2);
+    if (result == NULL) {
+      return NULL;
+    }
+    uint8_t val;
+    plc4c_return_code res = plc4c_spi_read_unsigned_byte(io, 8, &val);
+    if (res != OK) {
+      return NULL;
+    }
+    *result = (char) val;
+    *(result+1) = '\0';
+    return result;
+  } else if (strcmp(encoding, "UTF-16") == 0) {
+  }
   return "";
 }
 
@@ -109,4 +159,3 @@ time_t plc4c_s7_read_write_parse_tia_date_time(plc4c_spi_read_buffer* io) {
   // TODO: Implement ...
   return 0;
 }
-
diff --git a/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c b/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c
index defc8dd..955a45d 100644
--- a/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c
+++ b/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c
@@ -220,8 +220,8 @@ plc4c_return_code plc4c_driver_s7_encode_address(
 
     if ((*cur_pos == '(') && (strcmp(data_type, "STRING") == 0)) {
       // Next comes the string_length
-      last_pos = cur_pos;
-      while (isalpha(*cur_pos)) {
+      last_pos = ++cur_pos;
+      while (isdigit(*cur_pos)) {
         cur_pos++;
       }
       len = cur_pos - last_pos;
@@ -307,7 +307,7 @@ plc4c_return_code plc4c_driver_s7_encode_address(
 
     // Check the optional transport size code.
     if(transfer_size_code != NULL) {
-      if(plc4c_s7_read_write_transport_size_get_size_code(any_address->s7_address_any_transport_size) != *transfer_size_code) {
+      if(plc4c_s7_read_write_transport_size_get_short_name(any_address->s7_address_any_transport_size) != *transfer_size_code) {
         return INVALID_ADDRESS;
       }
     }
diff --git a/sandbox/plc4c/drivers/s7/src/driver_s7_sm_read.c b/sandbox/plc4c/drivers/s7/src/driver_s7_sm_read.c
index b8adcf0..1b0a811 100644
--- a/sandbox/plc4c/drivers/s7/src/driver_s7_sm_read.c
+++ b/sandbox/plc4c/drivers/s7/src/driver_s7_sm_read.c
@@ -131,6 +131,11 @@ plc4c_return_code plc4c_driver_s7_read_machine_function(
         char* data_protocol_id = plc4c_s7_read_write_transport_size_get_data_protocol_id(transport_size);
         uint16_t num_elements = s7_address->s7_var_request_parameter_item_address_address->s7_address_any_number_of_elements;
         int32_t string_length = 0;
+        if(transport_size == plc4c_s7_read_write_transport_size_STRING) {
+          // TODO: This needs to be changed to read arrays of strings.
+          string_length = num_elements;
+          num_elements = 1;
+        }
 
         // Convert the linked list with uint8_t elements into an array of uint8_t.
         plc4c_s7_read_write_s7_var_payload_data_item* cur_response_item = cur_response_item_element->value;
diff --git a/sandbox/plc4c/examples/hello-world/src/hello_world.c b/sandbox/plc4c/examples/hello-world/src/hello_world.c
index 1a13892..9c9e158 100644
--- a/sandbox/plc4c/examples/hello-world/src/hello_world.c
+++ b/sandbox/plc4c/examples/hello-world/src/hello_world.c
@@ -69,8 +69,8 @@ enum plc4c_connection_state_t {
 };
 typedef enum plc4c_connection_state_t plc4c_connection_state;
 
-#pragma clang diagnostic push
-#pragma ide diagnostic ignored "hicpp-multiway-paths-covered"
+//#pragma clang diagnostic push
+//#pragma ide diagnostic ignored "hicpp-multiway-paths-covered"
 
 int main() {
   bool loop = true;
@@ -195,81 +195,83 @@ int main() {
         }
         printf("SUCCESS\n");
 
-        printf("Adding an item for '%I0.0:BOOL' ... ");
-        result =
+        /*result =
             plc4c_read_request_add_item(read_request, "BOOL", "%DB4:0.0:BOOL");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "BYTE", "%DB4:1:BYTE");
+            plc4c_read_request_add_item(read_request, "BYTE", "%DB4.1:BYTE");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "WORD", "%DB4:2:WORD");
+            plc4c_read_request_add_item(read_request, "WORD", "%DB4.2:WORD");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "DWORD", "%DB4:4:DWORD");
+            plc4c_read_request_add_item(read_request, "DWORD", "%DB4.4:DWORD");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "SINT", "%DB4:16:SINT");
+            plc4c_read_request_add_item(read_request, "SINT", "%DB4.16:SINT");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "USINT", "%DB4:17:USINT");
+            plc4c_read_request_add_item(read_request, "USINT", "%DB4.17:USINT");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "INT", "%DB4:18:INT");
+            plc4c_read_request_add_item(read_request, "INT", "%DB4.18:INT");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "UINT", "%DB4:20:UINT");
+            plc4c_read_request_add_item(read_request, "UINT", "%DB4.20:UINT");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "DINT", "%DB4:22:DINT");
+            plc4c_read_request_add_item(read_request, "DINT", "%DB4.22:DINT");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "UDINT", "%DB4:26:UDINT");
+            plc4c_read_request_add_item(read_request, "UDINT", "%DB4.26:UDINT");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         result =
-            plc4c_read_request_add_item(read_request, "REAL", "%DB4:46:REAL");
+            plc4c_read_request_add_item(read_request, "REAL", "%DB4.46:REAL");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
-        }
+        }*/
+
+        // Works till here ...
+
         // S7 reports "Not supported"
-        /*result =
+        result =
             plc4c_read_request_add_item(read_request, "TIME", "%DB4:58:TIME");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
-        result =
+        /*result =
             plc4c_read_request_add_item(read_request, "DATE", "%DB4:70:DATE");
         if (result != OK) {
           printf("FAILED\n");
@@ -281,36 +283,38 @@ int main() {
           printf("FAILED\n");
           return -1;
         }*/
-        result =
+        /*result =
             plc4c_read_request_add_item(read_request, "TOD", "%DB4:76:TOD");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
-        }
-        /*result =
+        }*/
+        result =
             plc4c_read_request_add_item(read_request, "CHAR", "%DB4:136:CHAR");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
-        result =
+        // UTF-16 doesn't work well in a portable way
+        /*result =
             plc4c_read_request_add_item(read_request, "WCHAR", "%DB4:138:WCHAR");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
-        }
+        }*/
         result =
             plc4c_read_request_add_item(read_request, "STRING", "%DB4:140:STRING(10)");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
-        result =
-            plc4c_read_request_add_item(read_request, "WSTRING", "%DB4:396:WSTRING(10)");
-        if (result != OK) {
-          printf("FAILED\n");
-          return -1;
-        }*/
+        // UTF-16 doesn't work well in a portable way
+        /*result =
+               plc4c_read_request_add_item(read_request, "WSTRING", "%DB4:396:WSTRING(10)");
+           if (result != OK) {
+             printf("FAILED\n");
+             return -1;
+           }*/
         printf("SUCCESS\n");
 
         // Execute the read-request.
@@ -354,7 +358,7 @@ int main() {
         while (cur_element != NULL) {
           plc4c_response_value_item *value_item = cur_element->value;
 
-          printf("Value %s (%s):", value_item->item->name,
+          printf("Value %s (%s): ", value_item->item->name,
                  plc4c_response_code_to_message(value_item->response_code));
           plc4c_data_printf(value_item->value);
           printf("\n");
diff --git a/sandbox/plc4c/generated-sources/modbus/include/modbus_data_type_sizes.h b/sandbox/plc4c/generated-sources/modbus/include/modbus_data_type_sizes.h
index 945e5e1..04a5ebf 100644
--- a/sandbox/plc4c/generated-sources/modbus/include/modbus_data_type_sizes.h
+++ b/sandbox/plc4c/generated-sources/modbus/include/modbus_data_type_sizes.h
@@ -68,6 +68,7 @@ int plc4c_modbus_read_write_modbus_data_type_sizes_num_values();
 plc4c_modbus_read_write_modbus_data_type_sizes plc4c_modbus_read_write_modbus_data_type_sizes_value_for_index(int index);
 
 uint8_t plc4c_modbus_read_write_modbus_data_type_sizes_get_data_type_size(plc4c_modbus_read_write_modbus_data_type_sizes value);
+plc4c_modbus_read_write_modbus_data_type_sizes plc4c_modbus_read_write_modbus_data_type_sizes_get_first_enum_for_field_data_type_size(uint8_t value);
 
 #ifdef __cplusplus
 }
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_data_type_sizes.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_data_type_sizes.c
index 263ce2d..0eeaabd 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_data_type_sizes.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_data_type_sizes.c
@@ -294,3 +294,23 @@ uint8_t plc4c_modbus_read_write_modbus_data_type_sizes_get_data_type_size(plc4c_
     }
   }
 }
+
+plc4c_modbus_read_write_modbus_data_type_sizes plc4c_modbus_read_write_modbus_data_type_sizes_get_first_enum_for_field_data_type_size(uint8_t value) {
+    switch(value) {
+        case 1: {
+            return plc4c_modbus_read_write_modbus_data_type_sizes_BOOL;
+        }
+        case 2: {
+            return plc4c_modbus_read_write_modbus_data_type_sizes_WORD;
+        }
+        case 4: {
+            return plc4c_modbus_read_write_modbus_data_type_sizes_DWORD;
+        }
+        case 8: {
+            return plc4c_modbus_read_write_modbus_data_type_sizes_LWORD;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
diff --git a/sandbox/plc4c/generated-sources/s7/include/cotp_tpdu_size.h b/sandbox/plc4c/generated-sources/s7/include/cotp_tpdu_size.h
index 6906a00..fc27eb4 100644
--- a/sandbox/plc4c/generated-sources/s7/include/cotp_tpdu_size.h
+++ b/sandbox/plc4c/generated-sources/s7/include/cotp_tpdu_size.h
@@ -48,6 +48,7 @@ int plc4c_s7_read_write_cotp_tpdu_size_num_values();
 plc4c_s7_read_write_cotp_tpdu_size plc4c_s7_read_write_cotp_tpdu_size_value_for_index(int index);
 
 uint16_t plc4c_s7_read_write_cotp_tpdu_size_get_size_in_bytes(plc4c_s7_read_write_cotp_tpdu_size value);
+plc4c_s7_read_write_cotp_tpdu_size plc4c_s7_read_write_cotp_tpdu_size_get_first_enum_for_field_size_in_bytes(uint16_t value);
 
 #ifdef __cplusplus
 }
diff --git a/sandbox/plc4c/generated-sources/s7/include/data_transport_size.h b/sandbox/plc4c/generated-sources/s7/include/data_transport_size.h
index 4525b5b..70ff8cd 100644
--- a/sandbox/plc4c/generated-sources/s7/include/data_transport_size.h
+++ b/sandbox/plc4c/generated-sources/s7/include/data_transport_size.h
@@ -48,6 +48,7 @@ int plc4c_s7_read_write_data_transport_size_num_values();
 plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_data_transport_size_value_for_index(int index);
 
 bool plc4c_s7_read_write_data_transport_size_get_size_in_bits(plc4c_s7_read_write_data_transport_size value);
+plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_data_transport_size_get_first_enum_for_field_size_in_bits(bool value);
 
 #ifdef __cplusplus
 }
diff --git a/sandbox/plc4c/generated-sources/s7/include/memory_area.h b/sandbox/plc4c/generated-sources/s7/include/memory_area.h
index f6f357e..55694cb 100644
--- a/sandbox/plc4c/generated-sources/s7/include/memory_area.h
+++ b/sandbox/plc4c/generated-sources/s7/include/memory_area.h
@@ -50,6 +50,7 @@ int plc4c_s7_read_write_memory_area_num_values();
 plc4c_s7_read_write_memory_area plc4c_s7_read_write_memory_area_value_for_index(int index);
 
 char* plc4c_s7_read_write_memory_area_get_short_name(plc4c_s7_read_write_memory_area value);
+plc4c_s7_read_write_memory_area plc4c_s7_read_write_memory_area_get_first_enum_for_field_short_name(char* value);
 
 #ifdef __cplusplus
 }
diff --git a/sandbox/plc4c/generated-sources/s7/include/transport_size.h b/sandbox/plc4c/generated-sources/s7/include/transport_size.h
index 8f77697..1eebc59 100644
--- a/sandbox/plc4c/generated-sources/s7/include/transport_size.h
+++ b/sandbox/plc4c/generated-sources/s7/include/transport_size.h
@@ -69,26 +69,37 @@ int plc4c_s7_read_write_transport_size_num_values();
 plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_value_for_index(int index);
 
 bool plc4c_s7_read_write_transport_size_get_supported__s7_300(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_300(bool value);
 
 bool plc4c_s7_read_write_transport_size_get_supported__logo(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__logo(bool value);
 
 uint8_t plc4c_s7_read_write_transport_size_get_code(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_code(uint8_t value);
 
 uint8_t plc4c_s7_read_write_transport_size_get_size_in_bytes(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_size_in_bytes(uint8_t value);
 
 bool plc4c_s7_read_write_transport_size_get_supported__s7_400(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_400(bool value);
 
 bool plc4c_s7_read_write_transport_size_get_supported__s7_1200(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_1200(bool value);
 
 uint8_t plc4c_s7_read_write_transport_size_get_short_name(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_short_name(uint8_t value);
 
 bool plc4c_s7_read_write_transport_size_get_supported__s7_1500(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_1500(bool value);
 
 plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_transport_size_get_data_transport_size(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_data_transport_size(plc4c_s7_read_write_data_transport_size value);
 
 plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_base_type(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_base_type(plc4c_s7_read_write_transport_size value);
 
 char* plc4c_s7_read_write_transport_size_get_data_protocol_id(plc4c_s7_read_write_transport_size value);
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_data_protocol_id(char* value);
 
 #ifdef __cplusplus
 }
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_tpdu_size.c b/sandbox/plc4c/generated-sources/s7/src/cotp_tpdu_size.c
index d5deae3..3e98970 100644
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_tpdu_size.c
+++ b/sandbox/plc4c/generated-sources/s7/src/cotp_tpdu_size.c
@@ -114,3 +114,32 @@ uint16_t plc4c_s7_read_write_cotp_tpdu_size_get_size_in_bytes(plc4c_s7_read_writ
     }
   }
 }
+
+plc4c_s7_read_write_cotp_tpdu_size plc4c_s7_read_write_cotp_tpdu_size_get_first_enum_for_field_size_in_bytes(uint16_t value) {
+    switch(value) {
+        case 1024: {
+            return plc4c_s7_read_write_cotp_tpdu_size_SIZE_1024;
+        }
+        case 128: {
+            return plc4c_s7_read_write_cotp_tpdu_size_SIZE_128;
+        }
+        case 2048: {
+            return plc4c_s7_read_write_cotp_tpdu_size_SIZE_2048;
+        }
+        case 256: {
+            return plc4c_s7_read_write_cotp_tpdu_size_SIZE_256;
+        }
+        case 4096: {
+            return plc4c_s7_read_write_cotp_tpdu_size_SIZE_4096;
+        }
+        case 512: {
+            return plc4c_s7_read_write_cotp_tpdu_size_SIZE_512;
+        }
+        case 8192: {
+            return plc4c_s7_read_write_cotp_tpdu_size_SIZE_8192;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
diff --git a/sandbox/plc4c/generated-sources/s7/src/data_transport_size.c b/sandbox/plc4c/generated-sources/s7/src/data_transport_size.c
index 14b508d..c58ff58 100644
--- a/sandbox/plc4c/generated-sources/s7/src/data_transport_size.c
+++ b/sandbox/plc4c/generated-sources/s7/src/data_transport_size.c
@@ -114,3 +114,17 @@ bool plc4c_s7_read_write_data_transport_size_get_size_in_bits(plc4c_s7_read_writ
     }
   }
 }
+
+plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_data_transport_size_get_first_enum_for_field_size_in_bits(bool value) {
+    switch(value) {
+        case false: {
+            return plc4c_s7_read_write_data_transport_size_NULL;
+        }
+        case true: {
+            return plc4c_s7_read_write_data_transport_size_BIT;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
diff --git a/sandbox/plc4c/generated-sources/s7/src/memory_area.c b/sandbox/plc4c/generated-sources/s7/src/memory_area.c
index 51a929f..b822207 100644
--- a/sandbox/plc4c/generated-sources/s7/src/memory_area.c
+++ b/sandbox/plc4c/generated-sources/s7/src/memory_area.c
@@ -132,3 +132,33 @@ char* plc4c_s7_read_write_memory_area_get_short_name(plc4c_s7_read_write_memory_
     }
   }
 }
+
+plc4c_s7_read_write_memory_area plc4c_s7_read_write_memory_area_get_first_enum_for_field_short_name(char* value) {
+    if (strcmp(value, "C") == 0) {
+        return plc4c_s7_read_write_memory_area_COUNTERS;
+    }
+    if (strcmp(value, "D") == 0) {
+        return plc4c_s7_read_write_memory_area_DIRECT_PERIPHERAL_ACCESS;
+    }
+    if (strcmp(value, "DB") == 0) {
+        return plc4c_s7_read_write_memory_area_DATA_BLOCKS;
+    }
+    if (strcmp(value, "DBI") == 0) {
+        return plc4c_s7_read_write_memory_area_INSTANCE_DATA_BLOCKS;
+    }
+    if (strcmp(value, "I") == 0) {
+        return plc4c_s7_read_write_memory_area_INPUTS;
+    }
+    if (strcmp(value, "LD") == 0) {
+        return plc4c_s7_read_write_memory_area_LOCAL_DATA;
+    }
+    if (strcmp(value, "M") == 0) {
+        return plc4c_s7_read_write_memory_area_FLAGS_MARKERS;
+    }
+    if (strcmp(value, "Q") == 0) {
+        return plc4c_s7_read_write_memory_area_OUTPUTS;
+    }
+    if (strcmp(value, "T") == 0) {
+        return plc4c_s7_read_write_memory_area_TIMERS;
+    }
+}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_address.c b/sandbox/plc4c/generated-sources/s7/src/s7_address.c
index 0f239fb..923cb2c 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_address.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_address.c
@@ -67,9 +67,13 @@ plc4c_return_code plc4c_s7_read_write_s7_address_parse(plc4c_spi_read_buffer* io
                     
     // Enum field (transportSize)
     plc4c_s7_read_write_transport_size transportSize = plc4c_s7_read_write_transport_size_null();
-    _res = plc4c_spi_read_signed_byte(io, 8, (int8_t*) &transportSize);
-    if(_res != OK) {
-      return _res;
+    {
+      uint8_t _constantValue = 0;
+      _res = plc4c_spi_read_unsigned_byte(io, 8, (uint8_t*) &_constantValue);
+      if(_res != OK) {
+        return _res;
+      }
+      transportSize = plc4c_s7_read_write_transport_size_get_first_enum_for_field_code(_constantValue);
     }
     (*_message)->s7_address_any_transport_size = transportSize;
 
@@ -153,7 +157,7 @@ plc4c_return_code plc4c_s7_read_write_s7_address_serialize(plc4c_spi_write_buffe
     case plc4c_s7_read_write_s7_address_type_plc4c_s7_read_write_s7_address_any: {
 
       // Enum field (transportSize)
-      _res = plc4c_spi_write_signed_byte(io, 8, _message->s7_address_any_transport_size);
+      _res = plc4c_spi_write_unsigned_byte(io, 8, plc4c_s7_read_write_transport_size_get_code(_message->s7_address_any_transport_size));
       if(_res != OK) {
         return _res;
       }
diff --git a/sandbox/plc4c/generated-sources/s7/src/transport_size.c b/sandbox/plc4c/generated-sources/s7/src/transport_size.c
index c8bb738..17fd0d8 100644
--- a/sandbox/plc4c/generated-sources/s7/src/transport_size.c
+++ b/sandbox/plc4c/generated-sources/s7/src/transport_size.c
@@ -288,6 +288,20 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_300(plc4c_s7_read_writ
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_300(bool value) {
+    switch(value) {
+        case false: {
+            return plc4c_s7_read_write_transport_size_LWORD;
+        }
+        case true: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 bool plc4c_s7_read_write_transport_size_get_supported__logo(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -374,6 +388,20 @@ bool plc4c_s7_read_write_transport_size_get_supported__logo(plc4c_s7_read_write_
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__logo(bool value) {
+    switch(value) {
+        case false: {
+            return plc4c_s7_read_write_transport_size_LWORD;
+        }
+        case true: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 uint8_t plc4c_s7_read_write_transport_size_get_code(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -460,6 +488,56 @@ uint8_t plc4c_s7_read_write_transport_size_get_code(plc4c_s7_read_write_transpor
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_code(uint8_t value) {
+    switch(value) {
+        case 0: {
+            return plc4c_s7_read_write_transport_size_LWORD;
+        }
+        case 1: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        case 2: {
+            return plc4c_s7_read_write_transport_size_BYTE;
+        }
+        case 3: {
+            return plc4c_s7_read_write_transport_size_CHAR;
+        }
+        case 4: {
+            return plc4c_s7_read_write_transport_size_WORD;
+        }
+        case 5: {
+            return plc4c_s7_read_write_transport_size_INT;
+        }
+        case 6: {
+            return plc4c_s7_read_write_transport_size_DWORD;
+        }
+        case 7: {
+            return plc4c_s7_read_write_transport_size_DINT;
+        }
+        case 8: {
+            return plc4c_s7_read_write_transport_size_REAL;
+        }
+        case 9: {
+            return plc4c_s7_read_write_transport_size_DATE;
+        }
+        case 11: {
+            return plc4c_s7_read_write_transport_size_TIME;
+        }
+        case 15: {
+            return plc4c_s7_read_write_transport_size_DATE_AND_TIME;
+        }
+        case 19: {
+            return plc4c_s7_read_write_transport_size_WCHAR;
+        }
+        case 48: {
+            return plc4c_s7_read_write_transport_size_LREAL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 uint8_t plc4c_s7_read_write_transport_size_get_size_in_bytes(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -546,6 +624,32 @@ uint8_t plc4c_s7_read_write_transport_size_get_size_in_bytes(plc4c_s7_read_write
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_size_in_bytes(uint8_t value) {
+    switch(value) {
+        case 1: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        case 12: {
+            return plc4c_s7_read_write_transport_size_DATE_AND_TIME;
+        }
+        case 16: {
+            return plc4c_s7_read_write_transport_size_ULINT;
+        }
+        case 2: {
+            return plc4c_s7_read_write_transport_size_WORD;
+        }
+        case 4: {
+            return plc4c_s7_read_write_transport_size_DWORD;
+        }
+        case 8: {
+            return plc4c_s7_read_write_transport_size_LWORD;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 bool plc4c_s7_read_write_transport_size_get_supported__s7_400(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -632,6 +736,20 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_400(plc4c_s7_read_writ
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_400(bool value) {
+    switch(value) {
+        case false: {
+            return plc4c_s7_read_write_transport_size_LWORD;
+        }
+        case true: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 bool plc4c_s7_read_write_transport_size_get_supported__s7_1200(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -718,6 +836,20 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_1200(plc4c_s7_read_wri
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_1200(bool value) {
+    switch(value) {
+        case false: {
+            return plc4c_s7_read_write_transport_size_LWORD;
+        }
+        case true: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 uint8_t plc4c_s7_read_write_transport_size_get_short_name(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -804,6 +936,26 @@ uint8_t plc4c_s7_read_write_transport_size_get_short_name(plc4c_s7_read_write_tr
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_short_name(uint8_t value) {
+    switch(value) {
+        case 'B': {
+            return plc4c_s7_read_write_transport_size_BYTE;
+        }
+        case 'D': {
+            return plc4c_s7_read_write_transport_size_DWORD;
+        }
+        case 'W': {
+            return plc4c_s7_read_write_transport_size_WORD;
+        }
+        case 'X': {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 bool plc4c_s7_read_write_transport_size_get_supported__s7_1500(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -890,6 +1042,17 @@ bool plc4c_s7_read_write_transport_size_get_supported__s7_1500(plc4c_s7_read_wri
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_supported__s7_1500(bool value) {
+    switch(value) {
+        case true: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_transport_size_get_data_transport_size(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -976,6 +1139,26 @@ plc4c_s7_read_write_data_transport_size plc4c_s7_read_write_transport_size_get_d
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_data_transport_size(plc4c_s7_read_write_data_transport_size value) {
+    switch(value) {
+        case plc4c_s7_read_write_data_transport_size_BIT: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        case plc4c_s7_read_write_data_transport_size_BYTE_WORD_DWORD: {
+            return plc4c_s7_read_write_transport_size_BYTE;
+        }
+        case plc4c_s7_read_write_data_transport_size_INTEGER: {
+            return plc4c_s7_read_write_transport_size_INT;
+        }
+        case -1: {
+            return plc4c_s7_read_write_transport_size_LWORD;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_base_type(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -1062,6 +1245,29 @@ plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_base_t
   }
 }
 
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_base_type(plc4c_s7_read_write_transport_size value) {
+    switch(value) {
+        case plc4c_s7_read_write_transport_size_INT: {
+            return plc4c_s7_read_write_transport_size_UINT;
+        }
+        case plc4c_s7_read_write_transport_size_REAL: {
+            return plc4c_s7_read_write_transport_size_LREAL;
+        }
+        case plc4c_s7_read_write_transport_size_TIME: {
+            return plc4c_s7_read_write_transport_size_LTIME;
+        }
+        case plc4c_s7_read_write_transport_size_WORD: {
+            return plc4c_s7_read_write_transport_size_DWORD;
+        }
+        case -1: {
+            return plc4c_s7_read_write_transport_size_BOOL;
+        }
+        default: {
+            return -1;
+        }
+    }
+}
+
 char* plc4c_s7_read_write_transport_size_get_data_protocol_id(plc4c_s7_read_write_transport_size value) {
   switch(value) {
     case plc4c_s7_read_write_transport_size_BOOL: { /* '0x01' */
@@ -1147,3 +1353,78 @@ char* plc4c_s7_read_write_transport_size_get_data_protocol_id(plc4c_s7_read_writ
     }
   }
 }
+
+plc4c_s7_read_write_transport_size plc4c_s7_read_write_transport_size_get_first_enum_for_field_data_protocol_id(char* value) {
+    if (strcmp(value, "IEC61131_BOOL") == 0) {
+        return plc4c_s7_read_write_transport_size_BOOL;
+    }
+    if (strcmp(value, "IEC61131_BYTE") == 0) {
+        return plc4c_s7_read_write_transport_size_BYTE;
+    }
+    if (strcmp(value, "IEC61131_CHAR") == 0) {
+        return plc4c_s7_read_write_transport_size_CHAR;
+    }
+    if (strcmp(value, "IEC61131_DATE") == 0) {
+        return plc4c_s7_read_write_transport_size_DATE;
+    }
+    if (strcmp(value, "IEC61131_DATE_AND_TIME") == 0) {
+        return plc4c_s7_read_write_transport_size_DATE_AND_TIME;
+    }
+    if (strcmp(value, "IEC61131_DINT") == 0) {
+        return plc4c_s7_read_write_transport_size_DINT;
+    }
+    if (strcmp(value, "IEC61131_DWORD") == 0) {
+        return plc4c_s7_read_write_transport_size_DWORD;
+    }
+    if (strcmp(value, "IEC61131_INT") == 0) {
+        return plc4c_s7_read_write_transport_size_INT;
+    }
+    if (strcmp(value, "IEC61131_LINT") == 0) {
+        return plc4c_s7_read_write_transport_size_LINT;
+    }
+    if (strcmp(value, "IEC61131_LREAL") == 0) {
+        return plc4c_s7_read_write_transport_size_LREAL;
+    }
+    if (strcmp(value, "IEC61131_LTIME") == 0) {
+        return plc4c_s7_read_write_transport_size_LTIME;
+    }
+    if (strcmp(value, "IEC61131_LWORD") == 0) {
+        return plc4c_s7_read_write_transport_size_LWORD;
+    }
+    if (strcmp(value, "IEC61131_REAL") == 0) {
+        return plc4c_s7_read_write_transport_size_REAL;
+    }
+    if (strcmp(value, "IEC61131_SINT") == 0) {
+        return plc4c_s7_read_write_transport_size_SINT;
+    }
+    if (strcmp(value, "IEC61131_STRING") == 0) {
+        return plc4c_s7_read_write_transport_size_STRING;
+    }
+    if (strcmp(value, "IEC61131_TIME") == 0) {
+        return plc4c_s7_read_write_transport_size_TIME;
+    }
+    if (strcmp(value, "IEC61131_TIME_OF_DAY") == 0) {
+        return plc4c_s7_read_write_transport_size_TIME_OF_DAY;
+    }
+    if (strcmp(value, "IEC61131_UDINT") == 0) {
+        return plc4c_s7_read_write_transport_size_UDINT;
+    }
+    if (strcmp(value, "IEC61131_UINT") == 0) {
+        return plc4c_s7_read_write_transport_size_UINT;
+    }
+    if (strcmp(value, "IEC61131_ULINT") == 0) {
+        return plc4c_s7_read_write_transport_size_ULINT;
+    }
+    if (strcmp(value, "IEC61131_USINT") == 0) {
+        return plc4c_s7_read_write_transport_size_USINT;
+    }
+    if (strcmp(value, "IEC61131_WCHAR") == 0) {
+        return plc4c_s7_read_write_transport_size_WCHAR;
+    }
+    if (strcmp(value, "IEC61131_WORD") == 0) {
+        return plc4c_s7_read_write_transport_size_WORD;
+    }
+    if (strcmp(value, "IEC61131_WSTRING") == 0) {
+        return plc4c_s7_read_write_transport_size_WSTRING;
+    }
+}
diff --git a/sandbox/plc4c/pom.xml b/sandbox/plc4c/pom.xml
index 4e187bf..e3e4df2 100644
--- a/sandbox/plc4c/pom.xml
+++ b/sandbox/plc4c/pom.xml
@@ -287,7 +287,7 @@
         </plugins>
         <!--
           Developers working in plc4c will probably use an IDE like CLion to edit just this
-          Part of the project. These IDEs generate some work-directries we need to exclude.
+          Part of the project. These IDEs generate some work-directories we need to exclude.
         -->
         <pluginManagement>
           <plugins>
diff --git a/sandbox/plc4c/spi/src/data.c b/sandbox/plc4c/spi/src/data.c
index a688732..f12f00a 100644
--- a/sandbox/plc4c/spi/src/data.c
+++ b/sandbox/plc4c/spi/src/data.c
@@ -154,7 +154,7 @@ plc4c_data *plc4c_data_create_constant_string_data(unsigned int size, char *s) {
   return data;
 }
 
-plc4c_data *plc4c_data_create_char_data(char s) {
+plc4c_data *plc4c_data_create_char_data(char* s) {
   plc4c_data *data = malloc(sizeof(plc4c_data));
   data->data_type = PLC4C_CONSTANT_STRING;
   data->size = 1;
@@ -188,6 +188,10 @@ plc4c_data *plc4c_data_create_void_pointer_data(void *v) {
 }
 
 void plc4c_data_printf(plc4c_data *data) {
+  if (data == NULL) {
+    printf("NULL");
+    return;
+  }
   switch (data->data_type) {
     case PLC4C_BOOL:
       printf("%s", data->data.boolean_value ? "true" : "false");
@@ -196,25 +200,25 @@ void plc4c_data_printf(plc4c_data *data) {
       printf("%d", data->data.char_value);
       break;
     case PLC4C_UCHAR:
-      printf("%d", data->data.uchar_value);
+      printf("%u", data->data.uchar_value);
       break;
     case PLC4C_SHORT:
       printf("%d", data->data.short_value);
       break;
     case PLC4C_USHORT:
-      printf("%d", data->data.ushort_value);
+      printf("%u", data->data.ushort_value);
       break;
     case PLC4C_INT:
       printf("%d", data->data.int_value);
       break;
     case PLC4C_UINT:
-      printf("%iu", data->data.uint_value);
+      printf("%u", data->data.uint_value);
       break;
     case PLC4C_LINT:
-      printf("%d", data->data.lint_value);
+      printf("%I64d", data->data.lint_value);
       break;
     case PLC4C_ULINT:
-      printf("%d", data->data.ulint_value);
+      printf("%I64u", data->data.ulint_value);
       break;
     case PLC4C_FLOAT:
       printf("%f", data->data.float_value);
@@ -226,14 +230,19 @@ void plc4c_data_printf(plc4c_data *data) {
       printf("%s", data->data.const_string_value);
       break;
     case PLC4C_LIST:
-      printf("{");
+      printf("[");
       plc4c_list_element *cur_element =
           plc4c_utils_list_tail(&data->data.list_value);
       while (cur_element != NULL) {
-        plc4c_response_value_item *value_item = cur_element->value;
-        plc4c_data_printf(value_item->value);
+        plc4c_data *data_item = cur_element->value;
+        plc4c_data_printf(data_item);
+        cur_element = cur_element->next;
+        if (cur_element != NULL) {
+          printf(", ");
+        }
       }
-      printf("}");
+      printf("]");
+      break;
     case PLC4C_VOID_POINTER:
       if (data->custom_printf != NULL) {
         data->custom_printf(data);


[plc4x] 06/07: - Fixed the RELEASE_NOTES

Posted by cd...@apache.org.
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 d265090b88f8f81480ce3a6be22087174c740c15
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Jan 31 13:57:17 2021 +0100

    - Fixed the RELEASE_NOTES
---
 RELEASE_NOTES | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index e90b42d..5080fa7 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,5 +1,18 @@
 ==============================================================
-(Unreleased) Apache PLC4X 0.8.0-SNAPSHOT
+(Unreleased) Apache PLC4X 0.9.0-SNAPSHOT
+==============================================================
+
+New Features
+------------
+
+Incompatible changes
+--------------------
+
+Bug Fixes
+---------
+
+==============================================================
+Apache PLC4X 0.8.0
 ==============================================================
 
 This is an ordinary PLC4X release, containing changes that


[plc4x] 05/07: PLC4X-272 When splitting up large requests, too big sub-requests are generated (S7) - When splitting up into more than one request, the new request was correctly initialized with the empty-request size, however the current element wasn't added. This should now be fixed

Posted by cd...@apache.org.
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 12f497d3c6dcf0e3750a2c2a90444807e1a8fadc
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Jan 18 13:06:10 2021 +0100

    PLC4X-272
    When splitting up large requests, too big sub-requests are generated (S7)
    - When splitting up into more than one request, the new request was correctly initialized with the empty-request size, however the current element wasn't added. This should now be fixed
---
 RELEASE_NOTES                                      |  19 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     | 811 ++++-----------------
 2 files changed, 147 insertions(+), 683 deletions(-)

diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 60fbf4e..e90b42d 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,18 +1,5 @@
 ==============================================================
-(Unreleased) Apache PLC4X 0.9.0-SNAPSHOT
-==============================================================
-
-New Features
-------------
-
-Incompatible changes
---------------------
-
-Bug Fixes
----------
-
-==============================================================
-Apache PLC4X 0.8.0
+(Unreleased) Apache PLC4X 0.8.0-SNAPSHOT
 ==============================================================
 
 This is an ordinary PLC4X release, containing changes that
@@ -92,7 +79,6 @@ PLC4X-218   [Scraper] After stopping the scraper still the
             terminate
 PLC4X-239   Read DTL (Date and Time)
 PLC4X-240   Protocol error in reading string
-PLC4X-246	S7 driver hangs on read
 PLC4X-245   [Modbus] Apache NiFi processor throws
             java.io.IOException after a while
 PLC4X-255   Kafka Connector Source Task doesn't block within poll()
@@ -101,9 +87,6 @@ PLC4X-261   Pooled connection manager returns a connection that isn't
             connected in some situations.
 PLC4X-272   When splitting up large requests, too big sub-requests
             are generated (S7)
-PLC4X-256	ReadBuffer truncate last byte of even small payloads
-PLC4X-262	Error in reading Array
-PLC4X-270	Ads driver does not accept double-digit array indexes
 
 ==============================================================
 Apache PLC4X 0.7.0
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
index 38f3d8d..26cf716 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
@@ -27,11 +27,10 @@ type TransportSize int8
 type ITransportSize interface {
     Supported_S7_300() bool
     Supported_LOGO() bool
-    Code() uint8
     SizeInBytes() uint8
     Supported_S7_400() bool
     Supported_S7_1200() bool
-    ShortName() uint8
+    SizeCode() uint8
     Supported_S7_1500() bool
     DataTransportSize() DataTransportSize
     BaseType() TransportSize
@@ -42,35 +41,38 @@ type ITransportSize interface {
 const(
     TransportSize_BOOL TransportSize = 0x01
     TransportSize_BYTE TransportSize = 0x02
-    TransportSize_WORD TransportSize = 0x03
-    TransportSize_DWORD TransportSize = 0x04
-    TransportSize_LWORD TransportSize = 0x05
-    TransportSize_INT TransportSize = 0x06
-    TransportSize_UINT TransportSize = 0x07
-    TransportSize_SINT TransportSize = 0x08
-    TransportSize_USINT TransportSize = 0x09
-    TransportSize_DINT TransportSize = 0x0A
-    TransportSize_UDINT TransportSize = 0x0B
-    TransportSize_LINT TransportSize = 0x0C
-    TransportSize_ULINT TransportSize = 0x0D
-    TransportSize_REAL TransportSize = 0x0E
-    TransportSize_LREAL TransportSize = 0x0F
-    TransportSize_CHAR TransportSize = 0x10
-    TransportSize_WCHAR TransportSize = 0x11
-    TransportSize_STRING TransportSize = 0x12
-    TransportSize_WSTRING TransportSize = 0x13
-    TransportSize_TIME TransportSize = 0x14
-    TransportSize_LTIME TransportSize = 0x16
-    TransportSize_DATE TransportSize = 0x17
-    TransportSize_TIME_OF_DAY TransportSize = 0x18
-    TransportSize_TOD TransportSize = 0x19
-    TransportSize_DATE_AND_TIME TransportSize = 0x1A
-    TransportSize_DT TransportSize = 0x1B
+    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
         }
@@ -84,71 +86,32 @@ func (e TransportSize) Supported_S7_300() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return false
+            return true
         }
         case 0x08: { /* '0x08' */
-            return false
+            return true
         }
         case 0x09: { /* '0x09' */
-            return false
-        }
-        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
-            return false
-        }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
-            return false
-        }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return false
-        }
-        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
+        case 0x30: { /* '0x30' */
             return false
         }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return true
-        }
-        case 0x1B: { /* '0x1B' */
-            return true
-        }
         default: {
             return false
         }
@@ -157,6 +120,9 @@ func (e TransportSize) Supported_S7_300() bool {
 
 func (e TransportSize) Supported_LOGO() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return false
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -170,7 +136,7 @@ func (e TransportSize) Supported_LOGO() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
@@ -184,55 +150,16 @@ func (e TransportSize) Supported_LOGO() bool {
         case 0x09: { /* '0x09' */
             return true
         }
-        case 0x0A: { /* '0x0A' */
-            return true
-        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
-            return true
-        }
         case 0x0F: { /* '0x0F' */
             return false
         }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return true
-        }
-        case 0x12: { /* '0x12' */
-            return true
-        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
-            return false
-        }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return false
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return false
         }
         default: {
@@ -241,94 +168,11 @@ func (e TransportSize) Supported_LOGO() bool {
     }
 }
 
-func (e TransportSize) Code() uint8 {
-    switch e  {
-        case 0x01: { /* '0x01' */
-            return 0x01
-        }
-        case 0x02: { /* '0x02' */
-            return 0x02
-        }
-        case 0x03: { /* '0x03' */
-            return 0x04
-        }
-        case 0x04: { /* '0x04' */
-            return 0x06
-        }
-        case 0x05: { /* '0x05' */
-            return 0x00
-        }
-        case 0x06: { /* '0x06' */
-            return 0x05
-        }
-        case 0x07: { /* '0x07' */
-            return 0x05
-        }
-        case 0x08: { /* '0x08' */
-            return 0x02
-        }
-        case 0x09: { /* '0x09' */
-            return 0x02
-        }
-        case 0x0A: { /* '0x0A' */
-            return 0x07
-        }
-        case 0x0B: { /* '0x0B' */
-            return 0x07
-        }
-        case 0x0C: { /* '0x0C' */
-            return 0x00
-        }
-        case 0x0D: { /* '0x0D' */
-            return 0x00
-        }
-        case 0x0E: { /* '0x0E' */
-            return 0x08
-        }
-        case 0x0F: { /* '0x0F' */
-            return 0x30
-        }
-        case 0x10: { /* '0x10' */
-            return 0x03
-        }
-        case 0x11: { /* '0x11' */
-            return 0x13
-        }
-        case 0x12: { /* '0x12' */
-            return 0x03
-        }
-        case 0x13: { /* '0x13' */
-            return 0x00
-        }
-        case 0x14: { /* '0x14' */
-            return 0x0B
-        }
-        case 0x16: { /* '0x16' */
-            return 0x00
-        }
-        case 0x17: { /* '0x17' */
-            return 0x09
-        }
-        case 0x18: { /* '0x18' */
-            return 0x06
-        }
-        case 0x19: { /* '0x19' */
-            return 0x06
-        }
-        case 0x1A: { /* '0x1A' */
-            return 0x0F
-        }
-        case 0x1B: { /* '0x1B' */
-            return 0x0F
-        }
-        default: {
-            return 0
-        }
-    }
-}
-
 func (e TransportSize) SizeInBytes() uint8 {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 8
+        }
         case 0x01: { /* '0x01' */
             return 1
         }
@@ -336,77 +180,38 @@ func (e TransportSize) SizeInBytes() uint8 {
             return 1
         }
         case 0x03: { /* '0x03' */
-            return 2
+            return 1
         }
         case 0x04: { /* '0x04' */
-            return 4
+            return 2
         }
         case 0x05: { /* '0x05' */
-            return 8
+            return 2
         }
         case 0x06: { /* '0x06' */
-            return 2
+            return 4
         }
         case 0x07: { /* '0x07' */
-            return 2
+            return 4
         }
         case 0x08: { /* '0x08' */
-            return 1
+            return 4
         }
         case 0x09: { /* '0x09' */
-            return 1
-        }
-        case 0x0A: { /* '0x0A' */
-            return 4
+            return 2
         }
         case 0x0B: { /* '0x0B' */
             return 4
         }
-        case 0x0C: { /* '0x0C' */
-            return 8
-        }
-        case 0x0D: { /* '0x0D' */
-            return 16
-        }
-        case 0x0E: { /* '0x0E' */
-            return 4
-        }
         case 0x0F: { /* '0x0F' */
-            return 8
-        }
-        case 0x10: { /* '0x10' */
-            return 1
-        }
-        case 0x11: { /* '0x11' */
-            return 2
-        }
-        case 0x12: { /* '0x12' */
-            return 1
+            return 12
         }
         case 0x13: { /* '0x13' */
             return 2
         }
-        case 0x14: { /* '0x14' */
-            return 4
-        }
-        case 0x16: { /* '0x16' */
+        case 0x30: { /* '0x30' */
             return 8
         }
-        case 0x17: { /* '0x17' */
-            return 2
-        }
-        case 0x18: { /* '0x18' */
-            return 4
-        }
-        case 0x19: { /* '0x19' */
-            return 4
-        }
-        case 0x1A: { /* '0x1A' */
-            return 12
-        }
-        case 0x1B: { /* '0x1B' */
-            return 12
-        }
         default: {
             return 0
         }
@@ -415,6 +220,9 @@ func (e TransportSize) SizeInBytes() uint8 {
 
 func (e TransportSize) Supported_S7_400() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return false
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -428,71 +236,32 @@ func (e TransportSize) Supported_S7_400() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return false
+            return true
         }
         case 0x08: { /* '0x08' */
-            return false
+            return true
         }
         case 0x09: { /* '0x09' */
-            return false
-        }
-        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
-            return false
-        }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
-            return false
-        }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return false
-        }
-        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
+        case 0x30: { /* '0x30' */
             return false
         }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return true
-        }
-        case 0x1B: { /* '0x1B' */
-            return true
-        }
         default: {
             return false
         }
@@ -501,6 +270,9 @@ func (e TransportSize) Supported_S7_400() bool {
 
 func (e TransportSize) Supported_S7_1200() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return false
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -514,7 +286,7 @@ func (e TransportSize) Supported_S7_1200() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return false
+            return true
         }
         case 0x06: { /* '0x06' */
             return true
@@ -528,65 +300,29 @@ func (e TransportSize) Supported_S7_1200() bool {
         case 0x09: { /* '0x09' */
             return true
         }
-        case 0x0A: { /* '0x0A' */
-            return true
-        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0C: { /* '0x0C' */
-            return false
-        }
-        case 0x0D: { /* '0x0D' */
-            return false
-        }
-        case 0x0E: { /* '0x0E' */
-            return true
-        }
         case 0x0F: { /* '0x0F' */
-            return true
-        }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return true
-        }
-        case 0x12: { /* '0x12' */
-            return true
-        }
-        case 0x13: { /* '0x13' */
-            return true
-        }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
             return false
         }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
+        case 0x13: { /* '0x13' */
             return true
         }
-        case 0x19: { /* '0x19' */
+        case 0x30: { /* '0x30' */
             return true
         }
-        case 0x1A: { /* '0x1A' */
-            return false
-        }
-        case 0x1B: { /* '0x1B' */
-            return false
-        }
         default: {
             return false
         }
     }
 }
 
-func (e TransportSize) ShortName() uint8 {
+func (e TransportSize) SizeCode() uint8 {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 'X'
+        }
         case 0x01: { /* '0x01' */
             return 'X'
         }
@@ -594,75 +330,36 @@ func (e TransportSize) ShortName() uint8 {
             return 'B'
         }
         case 0x03: { /* '0x03' */
-            return 'W'
+            return 'B'
         }
         case 0x04: { /* '0x04' */
-            return 'D'
+            return 'W'
         }
         case 0x05: { /* '0x05' */
-            return 'X'
+            return 'W'
         }
         case 0x06: { /* '0x06' */
-            return 'W'
+            return 'D'
         }
         case 0x07: { /* '0x07' */
-            return 'W'
-        }
-        case 0x08: { /* '0x08' */
-            return 'B'
-        }
-        case 0x09: { /* '0x09' */
-            return 'B'
-        }
-        case 0x0A: { /* '0x0A' */
             return 'D'
         }
-        case 0x0B: { /* '0x0B' */
+        case 0x08: { /* '0x08' */
             return 'D'
         }
-        case 0x0C: { /* '0x0C' */
+        case 0x09: { /* '0x09' */
             return 'X'
         }
-        case 0x0D: { /* '0x0D' */
+        case 0x0B: { /* '0x0B' */
             return 'X'
         }
-        case 0x0E: { /* '0x0E' */
-            return 'D'
-        }
         case 0x0F: { /* '0x0F' */
             return 'X'
         }
-        case 0x10: { /* '0x10' */
-            return 'B'
-        }
-        case 0x11: { /* '0x11' */
-            return 'X'
-        }
-        case 0x12: { /* '0x12' */
-            return 'X'
-        }
         case 0x13: { /* '0x13' */
             return 'X'
         }
-        case 0x14: { /* '0x14' */
-            return 'X'
-        }
-        case 0x16: { /* '0x16' */
-            return 'X'
-        }
-        case 0x17: { /* '0x17' */
-            return 'X'
-        }
-        case 0x18: { /* '0x18' */
-            return 'X'
-        }
-        case 0x19: { /* '0x19' */
-            return 'X'
-        }
-        case 0x1A: { /* '0x1A' */
-            return 'X'
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return 'X'
         }
         default: {
@@ -673,6 +370,9 @@ func (e TransportSize) ShortName() uint8 {
 
 func (e TransportSize) Supported_S7_1500() bool {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return true
+        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -700,55 +400,16 @@ func (e TransportSize) Supported_S7_1500() bool {
         case 0x09: { /* '0x09' */
             return true
         }
-        case 0x0A: { /* '0x0A' */
-            return true
-        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0C: { /* '0x0C' */
-            return true
-        }
-        case 0x0D: { /* '0x0D' */
-            return true
-        }
-        case 0x0E: { /* '0x0E' */
-            return true
-        }
         case 0x0F: { /* '0x0F' */
             return true
         }
-        case 0x10: { /* '0x10' */
-            return true
-        }
-        case 0x11: { /* '0x11' */
-            return true
-        }
-        case 0x12: { /* '0x12' */
-            return true
-        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x14: { /* '0x14' */
-            return true
-        }
-        case 0x16: { /* '0x16' */
-            return true
-        }
-        case 0x17: { /* '0x17' */
-            return true
-        }
-        case 0x18: { /* '0x18' */
-            return true
-        }
-        case 0x19: { /* '0x19' */
-            return true
-        }
-        case 0x1A: { /* '0x1A' */
-            return true
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return true
         }
         default: {
@@ -759,6 +420,9 @@ func (e TransportSize) Supported_S7_1500() bool {
 
 func (e TransportSize) DataTransportSize() DataTransportSize {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 0
+        }
         case 0x01: { /* '0x01' */
             return DataTransportSize_BIT
         }
@@ -772,10 +436,10 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
             return DataTransportSize_BYTE_WORD_DWORD
         }
         case 0x05: { /* '0x05' */
-            return 0
+            return DataTransportSize_INTEGER
         }
         case 0x06: { /* '0x06' */
-            return DataTransportSize_INTEGER
+            return DataTransportSize_BYTE_WORD_DWORD
         }
         case 0x07: { /* '0x07' */
             return DataTransportSize_INTEGER
@@ -786,55 +450,16 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
         case 0x09: { /* '0x09' */
             return DataTransportSize_BYTE_WORD_DWORD
         }
-        case 0x0A: { /* '0x0A' */
-            return DataTransportSize_INTEGER
-        }
         case 0x0B: { /* '0x0B' */
-            return DataTransportSize_INTEGER
-        }
-        case 0x0C: { /* '0x0C' */
             return 0
         }
-        case 0x0D: { /* '0x0D' */
-            return 0
-        }
-        case 0x0E: { /* '0x0E' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
         case 0x0F: { /* '0x0F' */
             return 0
         }
-        case 0x10: { /* '0x10' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x11: { /* '0x11' */
-            return 0
-        }
-        case 0x12: { /* '0x12' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x14: { /* '0x14' */
-            return 0
-        }
-        case 0x16: { /* '0x16' */
-            return 0
-        }
-        case 0x17: { /* '0x17' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x18: { /* '0x18' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x19: { /* '0x19' */
-            return DataTransportSize_BYTE_WORD_DWORD
-        }
-        case 0x1A: { /* '0x1A' */
-            return 0
-        }
-        case 0x1B: { /* '0x1B' */
+        case 0x30: { /* '0x30' */
             return 0
         }
         default: {
@@ -845,6 +470,9 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
 
 func (e TransportSize) BaseType() TransportSize {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return 0
+        }
         case 0x01: { /* '0x01' */
             return 0
         }
@@ -855,73 +483,34 @@ func (e TransportSize) BaseType() TransportSize {
             return 0
         }
         case 0x04: { /* '0x04' */
-            return TransportSize_WORD
+            return 0
         }
         case 0x05: { /* '0x05' */
             return 0
         }
         case 0x06: { /* '0x06' */
-            return 0
+            return TransportSize_WORD
         }
         case 0x07: { /* '0x07' */
             return TransportSize_INT
         }
         case 0x08: { /* '0x08' */
-            return TransportSize_INT
+            return 0
         }
         case 0x09: { /* '0x09' */
-            return TransportSize_INT
-        }
-        case 0x0A: { /* '0x0A' */
-            return TransportSize_INT
+            return 0
         }
         case 0x0B: { /* '0x0B' */
-            return TransportSize_INT
-        }
-        case 0x0C: { /* '0x0C' */
-            return TransportSize_INT
-        }
-        case 0x0D: { /* '0x0D' */
-            return TransportSize_INT
-        }
-        case 0x0E: { /* '0x0E' */
             return 0
         }
         case 0x0F: { /* '0x0F' */
-            return TransportSize_REAL
-        }
-        case 0x10: { /* '0x10' */
-            return 0
-        }
-        case 0x11: { /* '0x11' */
-            return 0
-        }
-        case 0x12: { /* '0x12' */
             return 0
         }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x14: { /* '0x14' */
-            return 0
-        }
-        case 0x16: { /* '0x16' */
-            return TransportSize_TIME
-        }
-        case 0x17: { /* '0x17' */
-            return 0
-        }
-        case 0x18: { /* '0x18' */
-            return 0
-        }
-        case 0x19: { /* '0x19' */
-            return 0
-        }
-        case 0x1A: { /* '0x1A' */
-            return 0
-        }
-        case 0x1B: { /* '0x1B' */
-            return 0
+        case 0x30: { /* '0x30' */
+            return TransportSize_REAL
         }
         default: {
             return 0
@@ -931,6 +520,9 @@ func (e TransportSize) BaseType() TransportSize {
 
 func (e TransportSize) DataProtocolId() string {
     switch e  {
+        case 0x00: { /* '0x00' */
+            return "IEC61131_LWORD"
+        }
         case 0x01: { /* '0x01' */
             return "IEC61131_BOOL"
         }
@@ -938,76 +530,37 @@ func (e TransportSize) DataProtocolId() string {
             return "IEC61131_BYTE"
         }
         case 0x03: { /* '0x03' */
-            return "IEC61131_WORD"
+            return "IEC61131_CHAR"
         }
         case 0x04: { /* '0x04' */
-            return "IEC61131_DWORD"
+            return "IEC61131_WORD"
         }
         case 0x05: { /* '0x05' */
-            return "IEC61131_LWORD"
+            return "IEC61131_INT"
         }
         case 0x06: { /* '0x06' */
-            return "IEC61131_INT"
+            return "IEC61131_DWORD"
         }
         case 0x07: { /* '0x07' */
-            return "IEC61131_UINT"
+            return "IEC61131_DINT"
         }
         case 0x08: { /* '0x08' */
-            return "IEC61131_SINT"
+            return "IEC61131_REAL"
         }
         case 0x09: { /* '0x09' */
-            return "IEC61131_USINT"
-        }
-        case 0x0A: { /* '0x0A' */
-            return "IEC61131_DINT"
+            return "IEC61131_DATE"
         }
         case 0x0B: { /* '0x0B' */
-            return "IEC61131_UDINT"
-        }
-        case 0x0C: { /* '0x0C' */
-            return "IEC61131_LINT"
-        }
-        case 0x0D: { /* '0x0D' */
-            return "IEC61131_ULINT"
-        }
-        case 0x0E: { /* '0x0E' */
-            return "IEC61131_REAL"
+            return "IEC61131_TIME"
         }
         case 0x0F: { /* '0x0F' */
-            return "IEC61131_LREAL"
-        }
-        case 0x10: { /* '0x10' */
-            return "IEC61131_CHAR"
-        }
-        case 0x11: { /* '0x11' */
-            return "IEC61131_WCHAR"
-        }
-        case 0x12: { /* '0x12' */
-            return "IEC61131_STRING"
+            return "IEC61131_DATE_AND_TIME"
         }
         case 0x13: { /* '0x13' */
-            return "IEC61131_WSTRING"
-        }
-        case 0x14: { /* '0x14' */
-            return "IEC61131_TIME"
-        }
-        case 0x16: { /* '0x16' */
-            return "IEC61131_LTIME"
-        }
-        case 0x17: { /* '0x17' */
-            return "IEC61131_DATE"
-        }
-        case 0x18: { /* '0x18' */
-            return "IEC61131_TIME_OF_DAY"
-        }
-        case 0x19: { /* '0x19' */
-            return "IEC61131_TIME_OF_DAY"
-        }
-        case 0x1A: { /* '0x1A' */
-            return "IEC61131_DATE_AND_TIME"
+            return "IEC61131_WCHAR"
         }
-        case 0x1B: { /* '0x1B' */
-            return "IEC61131_DATE_AND_TIME"
+        case 0x30: { /* '0x30' */
+            return "IEC61131_LREAL"
         }
         default: {
             return ""
@@ -1016,116 +569,68 @@ func (e TransportSize) DataProtocolId() string {
 }
 func TransportSizeByValue(value int8) TransportSize {
     switch value {
+        case 0x00:
+            return TransportSize_LWORD
         case 0x01:
             return TransportSize_BOOL
         case 0x02:
             return TransportSize_BYTE
         case 0x03:
-            return TransportSize_WORD
+            return TransportSize_CHAR
         case 0x04:
-            return TransportSize_DWORD
+            return TransportSize_WORD
         case 0x05:
-            return TransportSize_LWORD
-        case 0x06:
             return TransportSize_INT
+        case 0x06:
+            return TransportSize_DWORD
         case 0x07:
-            return TransportSize_UINT
+            return TransportSize_DINT
         case 0x08:
-            return TransportSize_SINT
+            return TransportSize_REAL
         case 0x09:
-            return TransportSize_USINT
-        case 0x0A:
-            return TransportSize_DINT
+            return TransportSize_DATE
         case 0x0B:
-            return TransportSize_UDINT
-        case 0x0C:
-            return TransportSize_LINT
-        case 0x0D:
-            return TransportSize_ULINT
-        case 0x0E:
-            return TransportSize_REAL
-        case 0x0F:
-            return TransportSize_LREAL
-        case 0x10:
-            return TransportSize_CHAR
-        case 0x11:
-            return TransportSize_WCHAR
-        case 0x12:
-            return TransportSize_STRING
-        case 0x13:
-            return TransportSize_WSTRING
-        case 0x14:
             return TransportSize_TIME
-        case 0x16:
-            return TransportSize_LTIME
-        case 0x17:
-            return TransportSize_DATE
-        case 0x18:
-            return TransportSize_TIME_OF_DAY
-        case 0x19:
-            return TransportSize_TOD
-        case 0x1A:
+        case 0x0F:
             return TransportSize_DATE_AND_TIME
-        case 0x1B:
-            return TransportSize_DT
+        case 0x13:
+            return TransportSize_WCHAR
+        case 0x30:
+            return TransportSize_LREAL
     }
     return 0
 }
 
 func TransportSizeByName(value string) TransportSize {
     switch value {
+    case "LWORD":
+        return TransportSize_LWORD
     case "BOOL":
         return TransportSize_BOOL
     case "BYTE":
         return TransportSize_BYTE
+    case "CHAR":
+        return TransportSize_CHAR
     case "WORD":
         return TransportSize_WORD
-    case "DWORD":
-        return TransportSize_DWORD
-    case "LWORD":
-        return TransportSize_LWORD
     case "INT":
         return TransportSize_INT
-    case "UINT":
-        return TransportSize_UINT
-    case "SINT":
-        return TransportSize_SINT
-    case "USINT":
-        return TransportSize_USINT
+    case "DWORD":
+        return TransportSize_DWORD
     case "DINT":
         return TransportSize_DINT
-    case "UDINT":
-        return TransportSize_UDINT
-    case "LINT":
-        return TransportSize_LINT
-    case "ULINT":
-        return TransportSize_ULINT
     case "REAL":
         return TransportSize_REAL
-    case "LREAL":
-        return TransportSize_LREAL
-    case "CHAR":
-        return TransportSize_CHAR
-    case "WCHAR":
-        return TransportSize_WCHAR
-    case "STRING":
-        return TransportSize_STRING
-    case "WSTRING":
-        return TransportSize_WSTRING
-    case "TIME":
-        return TransportSize_TIME
-    case "LTIME":
-        return TransportSize_LTIME
     case "DATE":
         return TransportSize_DATE
-    case "TIME_OF_DAY":
-        return TransportSize_TIME_OF_DAY
-    case "TOD":
-        return TransportSize_TOD
+    case "TIME":
+        return TransportSize_TIME
     case "DATE_AND_TIME":
         return TransportSize_DATE_AND_TIME
-    case "DT":
-        return TransportSize_DT
+    case "WCHAR":
+        return TransportSize_WCHAR
+    case "LREAL":
+        return TransportSize_LREAL
     }
     return 0
 }
@@ -1163,58 +668,34 @@ func (e TransportSize) Serialize(io utils.WriteBuffer) error {
 
 func (e TransportSize) String() string {
     switch e {
+    case TransportSize_LWORD:
+        return "LWORD"
     case TransportSize_BOOL:
         return "BOOL"
     case TransportSize_BYTE:
         return "BYTE"
+    case TransportSize_CHAR:
+        return "CHAR"
     case TransportSize_WORD:
         return "WORD"
-    case TransportSize_DWORD:
-        return "DWORD"
-    case TransportSize_LWORD:
-        return "LWORD"
     case TransportSize_INT:
         return "INT"
-    case TransportSize_UINT:
-        return "UINT"
-    case TransportSize_SINT:
-        return "SINT"
-    case TransportSize_USINT:
-        return "USINT"
+    case TransportSize_DWORD:
+        return "DWORD"
     case TransportSize_DINT:
         return "DINT"
-    case TransportSize_UDINT:
-        return "UDINT"
-    case TransportSize_LINT:
-        return "LINT"
-    case TransportSize_ULINT:
-        return "ULINT"
     case TransportSize_REAL:
         return "REAL"
-    case TransportSize_LREAL:
-        return "LREAL"
-    case TransportSize_CHAR:
-        return "CHAR"
-    case TransportSize_WCHAR:
-        return "WCHAR"
-    case TransportSize_STRING:
-        return "STRING"
-    case TransportSize_WSTRING:
-        return "WSTRING"
-    case TransportSize_TIME:
-        return "TIME"
-    case TransportSize_LTIME:
-        return "LTIME"
     case TransportSize_DATE:
         return "DATE"
-    case TransportSize_TIME_OF_DAY:
-        return "TIME_OF_DAY"
-    case TransportSize_TOD:
-        return "TOD"
+    case TransportSize_TIME:
+        return "TIME"
     case TransportSize_DATE_AND_TIME:
         return "DATE_AND_TIME"
-    case TransportSize_DT:
-        return "DT"
+    case TransportSize_WCHAR:
+        return "WCHAR"
+    case TransportSize_LREAL:
+        return "LREAL"
     }
     return ""
 }


[plc4x] 01/07: - Continuing work on the C S7 driver (Curenlty the changes in mspec are not correct ... need to continue there)

Posted by cd...@apache.org.
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 604e1b62d827fa41c88d938cd74b25698762f9cd
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Jan 18 11:16:31 2021 +0100

    - Continuing work on the C S7 driver (Curenlty the changes in mspec are not correct ... need to continue there)
---
 .../resources/templates/c/data-io-template-c.ftlh  |  136 +-
 .../resources/templates/c/enum-template-c.ftlh     |    4 +-
 .../plc4go/knxnetip/readwrite/ParserHelper.go      |   22 +-
 .../plc4go/knxnetip/readwrite/XmlParserHelper.go   |   44 +-
 .../plc4go/knxnetip/readwrite/model/APCI.go        |  193 +
 .../plc4go/knxnetip/readwrite/model/ControlType.go |  109 +
 .../knxnetip/readwrite/model/ExtendedAPCI.go       |  368 ++
 .../readwrite/model/KnxDatapointSubtype.go         | 5260 ++++++++++++++++++
 .../knxnetip/readwrite/model/KnxDatapointType.go   | 5564 +++-----------------
 .../plc4go/knxnetip/readwrite/model/LBusmonInd.go  |    2 +-
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |   63 +-
 .../knxnetip/readwrite/model/LDataFrameAck.go      |  147 +
 .../knxnetip/readwrite/model/LDataFrameData.go     |  325 +-
 .../knxnetip/readwrite/model/LDataFrameDataExt.go  |  325 +-
 .../readwrite/model/LDataFramePollingData.go       |   11 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  811 ++-
 .../plc4x/java/s7/readwrite/field/S7Field.java     |    6 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |   56 +-
 sandbox/plc4c/api/include/plc4c/data.h             |   15 +
 sandbox/plc4c/api/include/plc4c/types.h            |    4 +-
 sandbox/plc4c/drivers/s7/CMakeLists.txt            |   18 +-
 .../plc4c/drivers/s7/src/driver_s7_encode_decode.c |   12 +-
 sandbox/plc4c/drivers/s7/src/driver_s7_sm_read.c   |    4 +-
 .../examples/hello-subsciptions/CMakeLists.txt     |   17 +-
 sandbox/plc4c/examples/hello-world/CMakeLists.txt  |   32 +-
 .../plc4c/examples/hello-world/src/hello_world.c   |  136 +-
 .../plc4c/generated-sources/modbus/src/data_item.c |  442 +-
 .../modbus/src/modbus_data_type_sizes.c            |  122 +-
 .../modbus/src/modbus_error_code.c                 |   30 +-
 .../generated-sources/s7/include/transport_size.h  |   52 +-
 sandbox/plc4c/generated-sources/s7/src/data_item.c |  182 +-
 .../s7/src/data_transport_error_code.c             |   16 +-
 .../generated-sources/s7/src/transport_size.c      |  886 +++-
 sandbox/plc4c/spi/CMakeLists.txt                   |   12 +-
 .../plc4c/spi/include/plc4c/spi/types_private.h    |    1 +
 sandbox/plc4c/spi/src/data.c                       |   32 +
 sandbox/plc4c/transports/tcp/src/transport_tcp.c   |    8 +
 37 files changed, 9683 insertions(+), 5784 deletions(-)

diff --git a/build-utils/language-c/src/main/resources/templates/c/data-io-template-c.ftlh b/build-utils/language-c/src/main/resources/templates/c/data-io-template-c.ftlh
index 487ee37..269007c 100644
--- a/build-utils/language-c/src/main/resources/templates/c/data-io-template-c.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/data-io-template-c.ftlh
@@ -65,6 +65,7 @@
 #include <string.h>
 #include <time.h>
 #include <plc4c/data.h>
+#include <plc4c/utils/list.h>
 #include <plc4c/spi/evaluation_helper.h>
 #include <plc4c/driver_${helper.getProtocolName()}.h>
 #include "${helper.camelCaseToSnakeCase(type.name)}.h"
@@ -76,114 +77,120 @@ plc4c_return_code ${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_buffer*
     plc4c_return_code _res = OK;
 
     <#list type.switchField.cases as case>
-        <#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue><#if case.discriminatorValues?size &gt; 1>(</#if><#if helper.discriminatorValueNeedsStringEqualityCheck(type.switchField.discriminatorExpressions[discriminatorValue?index])>strcmp(${helper.toParseExpression(type, null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)}, "${discriminatorValue}") == 0<#else>${helper.toParseExpression(type, null [...]
+    <#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue><#if case.discriminatorValues?size &gt; 1>(</#if><#if helper.discriminatorValueNeedsStringEqualityCheck(type.switchField.discriminatorExpressions[discriminatorValue?index])>strcmp(${helper.toParseExpression(type, null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)}, "${discriminatorValue}") == 0<#else>${helper.toParseExpression(type, null, ty [...]
 <#--        (*_message)->_type = ${helper.getCTypeName(type.name)}_type_${helper.getCTypeName(case.name)};-->
         <#assign skipReturn=false>
         <#list case.fields as field>
             <#switch field.typeName>
                 <#case "array">
 
-                    // Array field (${field.name})
-                <#-- Only update curPos if the length expression uses it
+        // Array field (${field.name})
+                <#-- Only update curPos if the length expression uses it -->
                     <#if field.loopExpression.contains("curPos")>
-                        curPos = io.getPos() - startPos;
+        curPos = io.getPos() - startPos;
                     </#if>
-                <#- If this is a count array, we can directly initialize an array with the given size ->
+                <#-- If this is a count array, we can directly initialize an array with the given size -->
                     <#if helper.isCountArrayField(field)>
-                        // Count array
-                        if(${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)} > Integer.MAX_VALUE) {
-                        throw new ParseException("Array count of " + (${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)}) + " exceeds the maximum allowed count of " + Integer.MAX_VALUE);
-                        }
-                        ${helper.getLanguageTypeNameForField(field)}[] ${field.name};
-                        {
-                        int itemCount = (int) ${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)};
-                        ${field.name} = new ${helper.getLanguageTypeNameForField(field)}[itemCount];
-                        for(int curItem = 0; curItem < itemCount; curItem++) {
-                        ${field.name}[curItem] = <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(type, field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>;
-                        }
-                        }
-                    <#- In all other cases do we have to work with a list, that is later converted to an array ->
+        // Count array
+        if(${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)} > INT_MAX) {
+            return INTERNAL_ERROR;
+        }
+        plc4c_list* ${field.name};
+        plc4c_utils_list_create(&${field.name});
+        int itemCount = (int) ${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)};
+        for(int curItem = 0; curItem < itemCount; curItem++) {
+            ${helper.getLanguageTypeNameForField(field)}* _val = malloc(sizeof(${helper.getLanguageTypeNameForField(field)}) * 1);
+            _res = <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type, "_val")}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(type, field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>;
+            if(_res != OK) {
+                return _res;
+            }
+            plc4c_data* _item = plc4c_data_create_${helper.getLanguageTypeNameForField(field)}_data(_val);
+            plc4c_utils_list_insert_head_value(${field.name}, _item);
+        }
+                    <#-- In all other cases do we have to work with a list, that is later converted to an array -->
                     <#else>
-                    <#- For a length array, we read data till the read position of the buffer reaches a given position ->
+                    <#-- For a length array, we read data till the read position of the buffer reaches a given position -->
                         <#if helper.isLengthArrayField(field)>
-                            // Length array
-                            int _${field.name}Length = ${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)};
-                            List<${helper.getLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
-                            int ${field.name}EndPos = io.getPos() + _${field.name}Length;
-                            while(io.getPos() < ${field.name}EndPos) {
-                            _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(type, field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
-                        <#- After parsing, update the current position, but only if it's needed ->
+        // Length array
+        int _${field.name}Length = ${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)};
+        List<${helper.getLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
+        int ${field.name}EndPos = io.getPos() + _${field.name}Length;
+        while(io.getPos() < ${field.name}EndPos) {
+            _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(type, field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
+                        <#-- After parsing, update the current position, but only if it's needed -->
                             <#if field.loopExpression.contains("curPos")>
-                                curPos = io.getPos() - startPos;
+            curPos = io.getPos() - startPos;
                             </#if>
-                            }
-                        <#- A terminated array keeps on reading data as long as the termination expression evaluates to false ->
+        }
+                        <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
                         <#elseif helper.isTerminatedArrayField(field)>
-                            // Terminated array
-                            List<${helper.getLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
-                            while(!((boolean) (${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)}))) {
-                            _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(type, field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
+        // Terminated array
+        List<${helper.getLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
+        while(!((boolean) (${helper.toParseExpression(type, field, field.loopExpression, type.parserArguments)}))) {
+            _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(type, field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
 
-                        <#- After parsing, update the current position, but only if it's needed ->
+                        <#-- After parsing, update the current position, but only if it's needed -->
                             <#if field.loopExpression.contains("curPos")>
-                                curPos = io.getPos() - startPos;
+            curPos = io.getPos() - startPos;
                             </#if>
-                            }
+        }
                         </#if>
-                    <#-
+                    <#--
                         Convert the list into an array. However if the array is of a primitive
                         type we have to iterate over it's elements and explicitly cast them.
                         Otherwise a simple toArray call is fine.
-                    ->
+                    -->
                         <#if helper.isSimpleTypeReference(field.type)>
-                            ${helper.getLanguageTypeNameForField(field)}[] ${field.name} = new ${helper.getLanguageTypeNameForField(field)}[_${field.name}List.size()];
-                            for(int i = 0; i < _${field.name}List.size(); i++) {
-                            ${field.name}[i] = (${helper.getLanguageTypeNameForField(field)}) _${field.name}List.get(i);
-                            }
+        ${helper.getLanguageTypeNameForField(field)}[] ${field.name} = new ${helper.getLanguageTypeNameForField(field)}[_${field.name}List.size()];
+        for(int i = 0; i < _${field.name}List.size(); i++) {
+            ${field.name}[i] = (${helper.getLanguageTypeNameForField(field)}) _${field.name}List.get(i);
+        }
                         <#else>
-                            ${helper.getLanguageTypeNameForField(field)}[] ${field.name} = _${field.name}List.toArray(new ${helper.getLanguageTypeNameForField(field)}[0]);
+        ${helper.getLanguageTypeNameForField(field)}[] ${field.name} = _${field.name}List.toArray(new ${helper.getLanguageTypeNameForField(field)}[0]);
                         </#if>
                     </#if>
-                    -->
+        *data_item = plc4c_data_create_list_data(*${field.name});
+
                     <#break>
                 <#case "const">
 
-                    // Const Field (${field.name})
-                    ${helper.getLanguageTypeNameForField(field)} ${field.name} = ${helper.getReadBufferReadMethodCall(field.type)};
-                    if(${field.name} != ${type.name}.${field.name?upper_case}) {
+                // Const Field (${field.name})
+                ${helper.getLanguageTypeNameForField(field)} ${field.name} = ${helper.getReadBufferReadMethodCall(field.type)};
+                if(${field.name} != ${type.name}.${field.name?upper_case}) {
                     throw new ParseException("Expected constant value " + ${type.name}.${field.name?upper_case} + " but got " + ${field.name});
-                    }
+                }
                     <#break>
                 <#case "enum">
 
-                    // Enum field (${field.name})
-                    ${helper.getLanguageTypeNameForField(field)} ${field.name} = ${helper.getLanguageTypeNameForField(field)}.valueOf(${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(field.type))});
+                // Enum field (${field.name})
+                ${helper.getLanguageTypeNameForField(field)} ${field.name} = ${helper.getLanguageTypeNameForField(field)}.valueOf(${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(field.type))});
                     <#break>
                 <#case "manual">
 
-                    // Manual Field (${field.name})
-                    ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(type, field, field.parseExpression, type.parserArguments)});
-                    <#--<#switch case.name>
-                        <#case "Time">
-                            return new PlcTime(${field.name});
+                // Manual Field (${field.name})
+                ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(type, field, field.parseExpression, type.parserArguments)});
+
+                    <#switch case.name>
+                        <#--#case "Time">
+                return new PlcTime(${field.name});
                             <#break>
                         <#case "Date">
-                            return new PlcDate(${field.name});
+                return new PlcDate(${field.name});
                             <#break>
                         <#case "DateTime">
-                            return new PlcDateTime(${field.name});
+                return new PlcDateTime(${field.name});
                             <#break>
                         <#case "Struct">
-                            return new PlcStruct(${field.name});
-                            <#break>
-                        <#case "String">
-                            return new PlcString(${field.name});
+                return new PlcStruct(${field.name});
+                            <#break-->
+                        <#case "STRING">
+                *data_item = plc4c_data_create_string_data(stringLength, ${field.name});
                             <#break>
                         <#default>
-                            return new Plc${case.name}(${field.name});
+                *data_item = plc4c_data_create_${case.name?lower_case}_data(${field.name});
                     </#switch>
                     <#assign skipReturn=true>
-                    -->
+
                     <#break>
                 <#case "reserved">
 
@@ -220,8 +227,7 @@ plc4c_return_code ${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_buffer*
                     <#break>
             </#switch>
         </#list>
-        }<#sep> else </#sep>
-    </#list>
+    }<#sep> else </#sep></#list>
 
   return OK;
 }
diff --git a/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh b/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh
index 2be06b4..2211ef6 100644
--- a/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/enum-template-c.ftlh
@@ -56,7 +56,7 @@ ${helper.getCTypeName(type.name)} ${helper.getCTypeName(type.name)}_null() {
 }
 
 ${helper.getCTypeName(type.name)} ${helper.getCTypeName(type.name)}_value_of(char* value_string) {
-<#list helper.getUniqueEnumValues(type.enumValues) as enumValue>
+<#list type.enumValues as enumValue>
     if(strcmp(value_string, "${enumValue.name}") == 0) {
         return ${helper.getCTypeName(type.name)}_${enumValue.name};
     }
@@ -70,7 +70,7 @@ int ${helper.getCTypeName(type.name)}_num_values() {
 
 ${helper.getCTypeName(type.name)} ${helper.getCTypeName(type.name)}_value_for_index(int index) {
     switch(index) {
-    <#list helper.getUniqueEnumValues(type.enumValues) as enumValue>
+    <#list type.enumValues as enumValue>
       case ${enumValue?index}: {
         return ${helper.getCTypeName(type.name)}_${enumValue.name};
       }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go b/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go
index d1ddcd9..6c83543 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go
@@ -16,7 +16,7 @@
 // specific language governing permissions and limitations
 // under the License.
 //
-package readwrite
+package model
 
 import (
     "errors"
@@ -34,16 +34,10 @@ func (m KnxnetipParserHelper) Parse(typeName string, arguments []string, io *uti
         return model.HPAIControlEndpointParse(io)
     case "TunnelingResponseDataBlock":
         return model.TunnelingResponseDataBlockParse(io)
-    case "DeviceDescriptorType2":
-        return model.DeviceDescriptorType2Parse(io)
-    case "ChannelInformation":
-        return model.ChannelInformationParse(io)
     case "DeviceConfigurationAckDataBlock":
         return model.DeviceConfigurationAckDataBlockParse(io)
     case "ConnectionRequestInformation":
         return model.ConnectionRequestInformationParse(io)
-    case "Apdu":
-        return model.ApduParse(io)
     case "HPAIDiscoveryEndpoint":
         return model.HPAIDiscoveryEndpointParse(io)
     case "ProjectInstallationIdentifier":
@@ -82,14 +76,6 @@ func (m KnxnetipParserHelper) Parse(typeName string, arguments []string, io *uti
         return model.DIBSuppSvcFamiliesParse(io)
     case "LDataFrame":
         return model.LDataFrameParse(io)
-    case "ApduDataExt":
-        length, err := utils.StrToUint8(arguments[0])
-        if err != nil {
-            return nil, err
-        }
-        return model.ApduDataExtParse(io, length)
-    case "ApduControl":
-        return model.ApduControlParse(io)
     case "KnxGroupAddress":
         numLevels, err := utils.StrToUint8(arguments[0])
         if err != nil {
@@ -98,12 +84,6 @@ func (m KnxnetipParserHelper) Parse(typeName string, arguments []string, io *uti
         return model.KnxGroupAddressParse(io, numLevels)
     case "MACAddress":
         return model.MACAddressParse(io)
-    case "ApduData":
-        dataLength, err := utils.StrToUint8(arguments[0])
-        if err != nil {
-            return nil, err
-        }
-        return model.ApduDataParse(io, dataLength)
     }
     return nil, errors.New("Unsupported type " + typeName)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go b/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go
index 95ca62e..b06768b 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go
@@ -16,7 +16,7 @@
 // specific language governing permissions and limitations
 // under the License.
 //
-package readwrite
+package model
 
 import (
     "encoding/xml"
@@ -44,20 +44,6 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
-    case "DeviceDescriptorType2":
-        var obj *model.DeviceDescriptorType2
-        err := xml.Unmarshal([]byte(xmlString), &obj)
-        if err != nil {
-            return nil, errors.New("error unmarshalling xml: " + err.Error())
-        }
-        return obj, nil
-    case "ChannelInformation":
-        var obj *model.ChannelInformation
-        err := xml.Unmarshal([]byte(xmlString), &obj)
-        if err != nil {
-            return nil, errors.New("error unmarshalling xml: " + err.Error())
-        }
-        return obj, nil
     case "DeviceConfigurationAckDataBlock":
         var obj *model.DeviceConfigurationAckDataBlock
         err := xml.Unmarshal([]byte(xmlString), &obj)
@@ -72,13 +58,6 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
-    case "Apdu":
-        var obj *model.Apdu
-        err := xml.Unmarshal([]byte(xmlString), &obj)
-        if err != nil {
-            return nil, errors.New("error unmarshalling xml: " + err.Error())
-        }
-        return obj, nil
     case "HPAIDiscoveryEndpoint":
         var obj *model.HPAIDiscoveryEndpoint
         err := xml.Unmarshal([]byte(xmlString), &obj)
@@ -198,20 +177,6 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
-    case "ApduDataExt":
-        var obj *model.ApduDataExt
-        err := xml.Unmarshal([]byte(xmlString), &obj)
-        if err != nil {
-            return nil, errors.New("error unmarshalling xml: " + err.Error())
-        }
-        return obj, nil
-    case "ApduControl":
-        var obj *model.ApduControl
-        err := xml.Unmarshal([]byte(xmlString), &obj)
-        if err != nil {
-            return nil, errors.New("error unmarshalling xml: " + err.Error())
-        }
-        return obj, nil
     case "KnxGroupAddress":
         var obj *model.KnxGroupAddress
         err := xml.Unmarshal([]byte(xmlString), &obj)
@@ -226,13 +191,6 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
-    case "ApduData":
-        var obj *model.ApduData
-        err := xml.Unmarshal([]byte(xmlString), &obj)
-        if err != nil {
-            return nil, errors.New("error unmarshalling xml: " + err.Error())
-        }
-        return obj, nil
     }
     return nil, errors.New("Unsupported type " + typeName)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
new file mode 100644
index 0000000..4023f52
--- /dev/null
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
@@ -0,0 +1,193 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package model
+
+import (
+    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+)
+
+type APCI uint8
+
+type IAPCI interface {
+    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
+)
+
+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)
+}
+
+func (m APCI) LengthInBits() uint16 {
+    return 4
+}
+
+func (m APCI) LengthInBytes() uint16 {
+    return m.LengthInBits() / 8
+}
+
+func APCIParse(io *utils.ReadBuffer) (APCI, error) {
+    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
+}
+
+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 ""
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go
new file mode 100644
index 0000000..b08b5f3
--- /dev/null
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ControlType.go
@@ -0,0 +1,109 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package model
+
+import (
+    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+)
+
+type ControlType uint8
+
+type IControlType interface {
+    Serialize(io utils.WriteBuffer) error
+}
+
+const(
+    ControlType_CONNECT ControlType = 0x0
+    ControlType_DISCONNECT ControlType = 0x1
+    ControlType_ACK ControlType = 0x2
+    ControlType_NACK ControlType = 0x3
+)
+
+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)
+}
+
+func (m ControlType) LengthInBits() uint16 {
+    return 2
+}
+
+func (m ControlType) LengthInBytes() uint16 {
+    return m.LengthInBits() / 8
+}
+
+func ControlTypeParse(io *utils.ReadBuffer) (ControlType, error) {
+    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
+}
+
+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 ""
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go
new file mode 100644
index 0000000..2e1201a
--- /dev/null
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ExtendedAPCI.go
@@ -0,0 +1,368 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package model
+
+import (
+    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+)
+
+type ExtendedAPCI uint8
+
+type IExtendedAPCI interface {
+    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
+)
+
+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)
+}
+
+func (m ExtendedAPCI) LengthInBits() uint16 {
+    return 6
+}
+
+func (m ExtendedAPCI) LengthInBytes() uint16 {
+    return m.LengthInBits() / 8
+}
+
+func ExtendedAPCIParse(io *utils.ReadBuffer) (ExtendedAPCI, error) {
+    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
+}
+
+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 ""
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go
new file mode 100644
index 0000000..7619453
--- /dev/null
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointSubtype.go
@@ -0,0 +1,5260 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+package model
+
+import (
+    "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+)
+
+type KnxDatapointSubtype uint32
+
+type IKnxDatapointSubtype interface {
+    Number() uint16
+    DatapointType() KnxDatapointType
+    Name() string
+    Serialize(io utils.WriteBuffer) error
+}
+
+const(
+    KnxDatapointSubtype_DPST_UNKNOWN KnxDatapointSubtype = 0
+    KnxDatapointSubtype_DPST_Switch KnxDatapointSubtype = 1
+    KnxDatapointSubtype_DPST_Bool KnxDatapointSubtype = 2
+    KnxDatapointSubtype_DPST_Enable KnxDatapointSubtype = 3
+    KnxDatapointSubtype_DPST_Ramp KnxDatapointSubtype = 4
+    KnxDatapointSubtype_DPST_Alarm KnxDatapointSubtype = 5
+    KnxDatapointSubtype_DPST_BinaryValue KnxDatapointSubtype = 6
+    KnxDatapointSubtype_DPST_Step KnxDatapointSubtype = 7
+    KnxDatapointSubtype_DPST_UpDown KnxDatapointSubtype = 8
+    KnxDatapointSubtype_DPST_OpenClose KnxDatapointSubtype = 9
+    KnxDatapointSubtype_DPST_Start KnxDatapointSubtype = 10
+    KnxDatapointSubtype_DPST_State KnxDatapointSubtype = 11
+    KnxDatapointSubtype_DPST_Invert KnxDatapointSubtype = 12
+    KnxDatapointSubtype_DPST_DimSendStyle KnxDatapointSubtype = 13
+    KnxDatapointSubtype_DPST_InputSource KnxDatapointSubtype = 14
+    KnxDatapointSubtype_DPST_Reset KnxDatapointSubtype = 15
+    KnxDatapointSubtype_DPST_Ack KnxDatapointSubtype = 16
+    KnxDatapointSubtype_DPST_Trigger KnxDatapointSubtype = 17
+    KnxDatapointSubtype_DPST_Occupancy KnxDatapointSubtype = 18
+    KnxDatapointSubtype_DPST_Window_Door KnxDatapointSubtype = 19
+    KnxDatapointSubtype_DPST_LogicalFunction KnxDatapointSubtype = 20
+    KnxDatapointSubtype_DPST_Scene_AB KnxDatapointSubtype = 21
+    KnxDatapointSubtype_DPST_ShutterBlinds_Mode KnxDatapointSubtype = 22
+    KnxDatapointSubtype_DPST_DayNight KnxDatapointSubtype = 23
+    KnxDatapointSubtype_DPST_Heat_Cool KnxDatapointSubtype = 24
+    KnxDatapointSubtype_DPST_Switch_Control KnxDatapointSubtype = 25
+    KnxDatapointSubtype_DPST_Bool_Control KnxDatapointSubtype = 26
+    KnxDatapointSubtype_DPST_Enable_Control KnxDatapointSubtype = 27
+    KnxDatapointSubtype_DPST_Ramp_Control KnxDatapointSubtype = 28
+    KnxDatapointSubtype_DPST_Alarm_Control KnxDatapointSubtype = 29
+    KnxDatapointSubtype_DPST_BinaryValue_Control KnxDatapointSubtype = 30
+    KnxDatapointSubtype_DPST_Step_Control KnxDatapointSubtype = 31
+    KnxDatapointSubtype_DPST_Direction1_Control KnxDatapointSubtype = 32
+    KnxDatapointSubtype_DPST_Direction2_Control KnxDatapointSubtype = 33
+    KnxDatapointSubtype_DPST_Start_Control KnxDatapointSubtype = 34
+    KnxDatapointSubtype_DPST_State_Control KnxDatapointSubtype = 35
+    KnxDatapointSubtype_DPST_Invert_Control KnxDatapointSubtype = 36
+    KnxDatapointSubtype_DPST_Control_Dimming KnxDatapointSubtype = 37
+    KnxDatapointSubtype_DPST_Control_Blinds KnxDatapointSubtype = 38
+    KnxDatapointSubtype_DPST_Char_ASCII KnxDatapointSubtype = 39
+    KnxDatapointSubtype_DPST_Char_8859_1 KnxDatapointSubtype = 40
+    KnxDatapointSubtype_DPST_Scaling KnxDatapointSubtype = 41
+    KnxDatapointSubtype_DPST_Angle KnxDatapointSubtype = 42
+    KnxDatapointSubtype_DPST_Percent_U8 KnxDatapointSubtype = 43
+    KnxDatapointSubtype_DPST_DecimalFactor KnxDatapointSubtype = 44
+    KnxDatapointSubtype_DPST_Tariff KnxDatapointSubtype = 45
+    KnxDatapointSubtype_DPST_Value_1_Ucount KnxDatapointSubtype = 46
+    KnxDatapointSubtype_DPST_FanStage KnxDatapointSubtype = 47
+    KnxDatapointSubtype_DPST_Percent_V8 KnxDatapointSubtype = 48
+    KnxDatapointSubtype_DPST_Value_1_Count KnxDatapointSubtype = 49
+    KnxDatapointSubtype_DPST_Status_Mode3 KnxDatapointSubtype = 50
+    KnxDatapointSubtype_DPST_Value_2_Ucount KnxDatapointSubtype = 51
+    KnxDatapointSubtype_DPST_TimePeriodMsec KnxDatapointSubtype = 52
+    KnxDatapointSubtype_DPST_TimePeriod10Msec KnxDatapointSubtype = 53
+    KnxDatapointSubtype_DPST_TimePeriod100Msec KnxDatapointSubtype = 54
+    KnxDatapointSubtype_DPST_TimePeriodSec KnxDatapointSubtype = 55
+    KnxDatapointSubtype_DPST_TimePeriodMin KnxDatapointSubtype = 56
+    KnxDatapointSubtype_DPST_TimePeriodHrs KnxDatapointSubtype = 57
+    KnxDatapointSubtype_DPST_PropDataType KnxDatapointSubtype = 58
+    KnxDatapointSubtype_DPST_Length_mm KnxDatapointSubtype = 59
+    KnxDatapointSubtype_DPST_UElCurrentmA KnxDatapointSubtype = 60
+    KnxDatapointSubtype_DPST_Brightness KnxDatapointSubtype = 61
+    KnxDatapointSubtype_DPST_Absolute_Colour_Temperature KnxDatapointSubtype = 62
+    KnxDatapointSubtype_DPST_Value_2_Count KnxDatapointSubtype = 63
+    KnxDatapointSubtype_DPST_DeltaTimeMsec KnxDatapointSubtype = 64
+    KnxDatapointSubtype_DPST_DeltaTime10Msec KnxDatapointSubtype = 65
+    KnxDatapointSubtype_DPST_DeltaTime100Msec KnxDatapointSubtype = 66
+    KnxDatapointSubtype_DPST_DeltaTimeSec KnxDatapointSubtype = 67
+    KnxDatapointSubtype_DPST_DeltaTimeMin KnxDatapointSubtype = 68
+    KnxDatapointSubtype_DPST_DeltaTimeHrs KnxDatapointSubtype = 69
+    KnxDatapointSubtype_DPST_Percent_V16 KnxDatapointSubtype = 70
+    KnxDatapointSubtype_DPST_Rotation_Angle KnxDatapointSubtype = 71
+    KnxDatapointSubtype_DPST_Length_m KnxDatapointSubtype = 72
+    KnxDatapointSubtype_DPST_Value_Temp KnxDatapointSubtype = 73
+    KnxDatapointSubtype_DPST_Value_Tempd KnxDatapointSubtype = 74
+    KnxDatapointSubtype_DPST_Value_Tempa KnxDatapointSubtype = 75
+    KnxDatapointSubtype_DPST_Value_Lux KnxDatapointSubtype = 76
+    KnxDatapointSubtype_DPST_Value_Wsp KnxDatapointSubtype = 77
+    KnxDatapointSubtype_DPST_Value_Pres KnxDatapointSubtype = 78
+    KnxDatapointSubtype_DPST_Value_Humidity KnxDatapointSubtype = 79
+    KnxDatapointSubtype_DPST_Value_AirQuality KnxDatapointSubtype = 80
+    KnxDatapointSubtype_DPST_Value_AirFlow KnxDatapointSubtype = 81
+    KnxDatapointSubtype_DPST_Value_Time1 KnxDatapointSubtype = 82
+    KnxDatapointSubtype_DPST_Value_Time2 KnxDatapointSubtype = 83
+    KnxDatapointSubtype_DPST_Value_Volt KnxDatapointSubtype = 84
+    KnxDatapointSubtype_DPST_Value_Curr KnxDatapointSubtype = 85
+    KnxDatapointSubtype_DPST_PowerDensity KnxDatapointSubtype = 86
+    KnxDatapointSubtype_DPST_KelvinPerPercent KnxDatapointSubtype = 87
+    KnxDatapointSubtype_DPST_Power KnxDatapointSubtype = 88
+    KnxDatapointSubtype_DPST_Value_Volume_Flow KnxDatapointSubtype = 89
+    KnxDatapointSubtype_DPST_Rain_Amount KnxDatapointSubtype = 90
+    KnxDatapointSubtype_DPST_Value_Temp_F KnxDatapointSubtype = 91
+    KnxDatapointSubtype_DPST_Value_Wsp_kmh KnxDatapointSubtype = 92
+    KnxDatapointSubtype_DPST_Value_Absolute_Humidity KnxDatapointSubtype = 93
+    KnxDatapointSubtype_DPST_Concentration_ygm3 KnxDatapointSubtype = 94
+    KnxDatapointSubtype_DPST_TimeOfDay KnxDatapointSubtype = 95
+    KnxDatapointSubtype_DPST_Date KnxDatapointSubtype = 96
+    KnxDatapointSubtype_DPST_Value_4_Ucount KnxDatapointSubtype = 97
+    KnxDatapointSubtype_DPST_LongTimePeriod_Sec KnxDatapointSubtype = 98
+    KnxDatapointSubtype_DPST_LongTimePeriod_Min KnxDatapointSubtype = 99
+    KnxDatapointSubtype_DPST_LongTimePeriod_Hrs KnxDatapointSubtype = 100
+    KnxDatapointSubtype_DPST_VolumeLiquid_Litre KnxDatapointSubtype = 101
+    KnxDatapointSubtype_DPST_Volume_m_3 KnxDatapointSubtype = 102
+    KnxDatapointSubtype_DPST_Value_4_Count KnxDatapointSubtype = 103
+    KnxDatapointSubtype_DPST_FlowRate_m3h KnxDatapointSubtype = 104
+    KnxDatapointSubtype_DPST_ActiveEnergy KnxDatapointSubtype = 105
+    KnxDatapointSubtype_DPST_ApparantEnergy KnxDatapointSubtype = 106
+    KnxDatapointSubtype_DPST_ReactiveEnergy KnxDatapointSubtype = 107
+    KnxDatapointSubtype_DPST_ActiveEnergy_kWh KnxDatapointSubtype = 108
+    KnxDatapointSubtype_DPST_ApparantEnergy_kVAh KnxDatapointSubtype = 109
+    KnxDatapointSubtype_DPST_ReactiveEnergy_kVARh KnxDatapointSubtype = 110
+    KnxDatapointSubtype_DPST_ActiveEnergy_MWh KnxDatapointSubtype = 111
+    KnxDatapointSubtype_DPST_LongDeltaTimeSec KnxDatapointSubtype = 112
+    KnxDatapointSubtype_DPST_DeltaVolumeLiquid_Litre KnxDatapointSubtype = 113
+    KnxDatapointSubtype_DPST_DeltaVolume_m_3 KnxDatapointSubtype = 114
+    KnxDatapointSubtype_DPST_Value_Acceleration KnxDatapointSubtype = 115
+    KnxDatapointSubtype_DPST_Value_Acceleration_Angular KnxDatapointSubtype = 116
+    KnxDatapointSubtype_DPST_Value_Activation_Energy KnxDatapointSubtype = 117
+    KnxDatapointSubtype_DPST_Value_Activity KnxDatapointSubtype = 118
+    KnxDatapointSubtype_DPST_Value_Mol KnxDatapointSubtype = 119
+    KnxDatapointSubtype_DPST_Value_Amplitude KnxDatapointSubtype = 120
+    KnxDatapointSubtype_DPST_Value_AngleRad KnxDatapointSubtype = 121
+    KnxDatapointSubtype_DPST_Value_AngleDeg KnxDatapointSubtype = 122
+    KnxDatapointSubtype_DPST_Value_Angular_Momentum KnxDatapointSubtype = 123
+    KnxDatapointSubtype_DPST_Value_Angular_Velocity KnxDatapointSubtype = 124
+    KnxDatapointSubtype_DPST_Value_Area KnxDatapointSubtype = 125
+    KnxDatapointSubtype_DPST_Value_Capacitance KnxDatapointSubtype = 126
+    KnxDatapointSubtype_DPST_Value_Charge_DensitySurface KnxDatapointSubtype = 127
+    KnxDatapointSubtype_DPST_Value_Charge_DensityVolume KnxDatapointSubtype = 128
+    KnxDatapointSubtype_DPST_Value_Compressibility KnxDatapointSubtype = 129
+    KnxDatapointSubtype_DPST_Value_Conductance KnxDatapointSubtype = 130
+    KnxDatapointSubtype_DPST_Value_Electrical_Conductivity KnxDatapointSubtype = 131
+    KnxDatapointSubtype_DPST_Value_Density KnxDatapointSubtype = 132
+    KnxDatapointSubtype_DPST_Value_Electric_Charge KnxDatapointSubtype = 133
+    KnxDatapointSubtype_DPST_Value_Electric_Current KnxDatapointSubtype = 134
+    KnxDatapointSubtype_DPST_Value_Electric_CurrentDensity KnxDatapointSubtype = 135
+    KnxDatapointSubtype_DPST_Value_Electric_DipoleMoment KnxDatapointSubtype = 136
+    KnxDatapointSubtype_DPST_Value_Electric_Displacement KnxDatapointSubtype = 137
+    KnxDatapointSubtype_DPST_Value_Electric_FieldStrength KnxDatapointSubtype = 138
+    KnxDatapointSubtype_DPST_Value_Electric_Flux KnxDatapointSubtype = 139
+    KnxDatapointSubtype_DPST_Value_Electric_FluxDensity KnxDatapointSubtype = 140
+    KnxDatapointSubtype_DPST_Value_Electric_Polarization KnxDatapointSubtype = 141
+    KnxDatapointSubtype_DPST_Value_Electric_Potential KnxDatapointSubtype = 142
+    KnxDatapointSubtype_DPST_Value_Electric_PotentialDifference KnxDatapointSubtype = 143
+    KnxDatapointSubtype_DPST_Value_ElectromagneticMoment KnxDatapointSubtype = 144
+    KnxDatapointSubtype_DPST_Value_Electromotive_Force KnxDatapointSubtype = 145
+    KnxDatapointSubtype_DPST_Value_Energy KnxDatapointSubtype = 146
+    KnxDatapointSubtype_DPST_Value_Force KnxDatapointSubtype = 147
+    KnxDatapointSubtype_DPST_Value_Frequency KnxDatapointSubtype = 148
+    KnxDatapointSubtype_DPST_Value_Angular_Frequency KnxDatapointSubtype = 149
+    KnxDatapointSubtype_DPST_Value_Heat_Capacity KnxDatapointSubtype = 150
+    KnxDatapointSubtype_DPST_Value_Heat_FlowRate KnxDatapointSubtype = 151
+    KnxDatapointSubtype_DPST_Value_Heat_Quantity KnxDatapointSubtype = 152
+    KnxDatapointSubtype_DPST_Value_Impedance KnxDatapointSubtype = 153
+    KnxDatapointSubtype_DPST_Value_Length KnxDatapointSubtype = 154
+    KnxDatapointSubtype_DPST_Value_Light_Quantity KnxDatapointSubtype = 155
+    KnxDatapointSubtype_DPST_Value_Luminance KnxDatapointSubtype = 156
+    KnxDatapointSubtype_DPST_Value_Luminous_Flux KnxDatapointSubtype = 157
+    KnxDatapointSubtype_DPST_Value_Luminous_Intensity KnxDatapointSubtype = 158
+    KnxDatapointSubtype_DPST_Value_Magnetic_FieldStrength KnxDatapointSubtype = 159
+    KnxDatapointSubtype_DPST_Value_Magnetic_Flux KnxDatapointSubtype = 160
+    KnxDatapointSubtype_DPST_Value_Magnetic_FluxDensity KnxDatapointSubtype = 161
+    KnxDatapointSubtype_DPST_Value_Magnetic_Moment KnxDatapointSubtype = 162
+    KnxDatapointSubtype_DPST_Value_Magnetic_Polarization KnxDatapointSubtype = 163
+    KnxDatapointSubtype_DPST_Value_Magnetization KnxDatapointSubtype = 164
+    KnxDatapointSubtype_DPST_Value_MagnetomotiveForce KnxDatapointSubtype = 165
+    KnxDatapointSubtype_DPST_Value_Mass KnxDatapointSubtype = 166
+    KnxDatapointSubtype_DPST_Value_MassFlux KnxDatapointSubtype = 167
+    KnxDatapointSubtype_DPST_Value_Momentum KnxDatapointSubtype = 168
+    KnxDatapointSubtype_DPST_Value_Phase_AngleRad KnxDatapointSubtype = 169
+    KnxDatapointSubtype_DPST_Value_Phase_AngleDeg KnxDatapointSubtype = 170
+    KnxDatapointSubtype_DPST_Value_Power KnxDatapointSubtype = 171
+    KnxDatapointSubtype_DPST_Value_Power_Factor KnxDatapointSubtype = 172
+    KnxDatapointSubtype_DPST_Value_Pressure KnxDatapointSubtype = 173
+    KnxDatapointSubtype_DPST_Value_Reactance KnxDatapointSubtype = 174
+    KnxDatapointSubtype_DPST_Value_Resistance KnxDatapointSubtype = 175
+    KnxDatapointSubtype_DPST_Value_Resistivity KnxDatapointSubtype = 176
+    KnxDatapointSubtype_DPST_Value_SelfInductance KnxDatapointSubtype = 177
+    KnxDatapointSubtype_DPST_Value_SolidAngle KnxDatapointSubtype = 178
+    KnxDatapointSubtype_DPST_Value_Sound_Intensity KnxDatapointSubtype = 179
+    KnxDatapointSubtype_DPST_Value_Speed KnxDatapointSubtype = 180
+    KnxDatapointSubtype_DPST_Value_Stress KnxDatapointSubtype = 181
+    KnxDatapointSubtype_DPST_Value_Surface_Tension KnxDatapointSubtype = 182
+    KnxDatapointSubtype_DPST_Value_Common_Temperature KnxDatapointSubtype = 183
+    KnxDatapointSubtype_DPST_Value_Absolute_Temperature KnxDatapointSubtype = 184
+    KnxDatapointSubtype_DPST_Value_TemperatureDifference KnxDatapointSubtype = 185
+    KnxDatapointSubtype_DPST_Value_Thermal_Capacity KnxDatapointSubtype = 186
+    KnxDatapointSubtype_DPST_Value_Thermal_Conductivity KnxDatapointSubtype = 187
+    KnxDatapointSubtype_DPST_Value_ThermoelectricPower KnxDatapointSubtype = 188
+    KnxDatapointSubtype_DPST_Value_Time KnxDatapointSubtype = 189
+    KnxDatapointSubtype_DPST_Value_Torque KnxDatapointSubtype = 190
+    KnxDatapointSubtype_DPST_Value_Volume KnxDatapointSubtype = 191
+    KnxDatapointSubtype_DPST_Value_Volume_Flux KnxDatapointSubtype = 192
+    KnxDatapointSubtype_DPST_Value_Weight KnxDatapointSubtype = 193
+    KnxDatapointSubtype_DPST_Value_Work KnxDatapointSubtype = 194
+    KnxDatapointSubtype_DPST_Volume_Flux_Meter KnxDatapointSubtype = 195
+    KnxDatapointSubtype_DPST_Volume_Flux_ls KnxDatapointSubtype = 196
+    KnxDatapointSubtype_DPST_Access_Data KnxDatapointSubtype = 197
+    KnxDatapointSubtype_DPST_String_ASCII KnxDatapointSubtype = 198
+    KnxDatapointSubtype_DPST_String_8859_1 KnxDatapointSubtype = 199
+    KnxDatapointSubtype_DPST_SceneNumber KnxDatapointSubtype = 200
+    KnxDatapointSubtype_DPST_SceneControl KnxDatapointSubtype = 201
+    KnxDatapointSubtype_DPST_DateTime KnxDatapointSubtype = 202
+    KnxDatapointSubtype_DPST_SCLOMode KnxDatapointSubtype = 203
+    KnxDatapointSubtype_DPST_BuildingMode KnxDatapointSubtype = 204
+    KnxDatapointSubtype_DPST_OccMode KnxDatapointSubtype = 205
+    KnxDatapointSubtype_DPST_Priority KnxDatapointSubtype = 206
+    KnxDatapointSubtype_DPST_LightApplicationMode KnxDatapointSubtype = 207
+    KnxDatapointSubtype_DPST_ApplicationArea KnxDatapointSubtype = 208
+    KnxDatapointSubtype_DPST_AlarmClassType KnxDatapointSubtype = 209
+    KnxDatapointSubtype_DPST_PSUMode KnxDatapointSubtype = 210
+    KnxDatapointSubtype_DPST_ErrorClass_System KnxDatapointSubtype = 211
+    KnxDatapointSubtype_DPST_ErrorClass_HVAC KnxDatapointSubtype = 212
+    KnxDatapointSubtype_DPST_Time_Delay KnxDatapointSubtype = 213
+    KnxDatapointSubtype_DPST_Beaufort_Wind_Force_Scale KnxDatapointSubtype = 214
+    KnxDatapointSubtype_DPST_SensorSelect KnxDatapointSubtype = 215
+    KnxDatapointSubtype_DPST_ActuatorConnectType KnxDatapointSubtype = 216
+    KnxDatapointSubtype_DPST_Cloud_Cover KnxDatapointSubtype = 217
+    KnxDatapointSubtype_DPST_PowerReturnMode KnxDatapointSubtype = 218
+    KnxDatapointSubtype_DPST_FuelType KnxDatapointSubtype = 219
+    KnxDatapointSubtype_DPST_BurnerType KnxDatapointSubtype = 220
+    KnxDatapointSubtype_DPST_HVACMode KnxDatapointSubtype = 221
+    KnxDatapointSubtype_DPST_DHWMode KnxDatapointSubtype = 222
+    KnxDatapointSubtype_DPST_LoadPriority KnxDatapointSubtype = 223
+    KnxDatapointSubtype_DPST_HVACContrMode KnxDatapointSubtype = 224
+    KnxDatapointSubtype_DPST_HVACEmergMode KnxDatapointSubtype = 225
+    KnxDatapointSubtype_DPST_ChangeoverMode KnxDatapointSubtype = 226
+    KnxDatapointSubtype_DPST_ValveMode KnxDatapointSubtype = 227
+    KnxDatapointSubtype_DPST_DamperMode KnxDatapointSubtype = 228
+    KnxDatapointSubtype_DPST_HeaterMode KnxDatapointSubtype = 229
+    KnxDatapointSubtype_DPST_FanMode KnxDatapointSubtype = 230
+    KnxDatapointSubtype_DPST_MasterSlaveMode KnxDatapointSubtype = 231
+    KnxDatapointSubtype_DPST_StatusRoomSetp KnxDatapointSubtype = 232
+    KnxDatapointSubtype_DPST_Metering_DeviceType KnxDatapointSubtype = 233
+    KnxDatapointSubtype_DPST_HumDehumMode KnxDatapointSubtype = 234
+    KnxDatapointSubtype_DPST_EnableHCStage KnxDatapointSubtype = 235
+    KnxDatapointSubtype_DPST_ADAType KnxDatapointSubtype = 236
+    KnxDatapointSubtype_DPST_BackupMode KnxDatapointSubtype = 237
+    KnxDatapointSubtype_DPST_StartSynchronization KnxDatapointSubtype = 238
+    KnxDatapointSubtype_DPST_Behaviour_Lock_Unlock KnxDatapointSubtype = 239
+    KnxDatapointSubtype_DPST_Behaviour_Bus_Power_Up_Down KnxDatapointSubtype = 240
+    KnxDatapointSubtype_DPST_DALI_Fade_Time KnxDatapointSubtype = 241
+    KnxDatapointSubtype_DPST_BlinkingMode KnxDatapointSubtype = 242
+    KnxDatapointSubtype_DPST_LightControlMode KnxDatapointSubtype = 243
+    KnxDatapointSubtype_DPST_SwitchPBModel KnxDatapointSubtype = 244
+    KnxDatapointSubtype_DPST_PBAction KnxDatapointSubtype = 245
+    KnxDatapointSubtype_DPST_DimmPBModel KnxDatapointSubtype = 246
+    KnxDatapointSubtype_DPST_SwitchOnMode KnxDatapointSubtype = 247
+    KnxDatapointSubtype_DPST_LoadTypeSet KnxDatapointSubtype = 248
+    KnxDatapointSubtype_DPST_LoadTypeDetected KnxDatapointSubtype = 249
+    KnxDatapointSubtype_DPST_Converter_Test_Control KnxDatapointSubtype = 250
+    KnxDatapointSubtype_DPST_SABExcept_Behaviour KnxDatapointSubtype = 251
+    KnxDatapointSubtype_DPST_SABBehaviour_Lock_Unlock KnxDatapointSubtype = 252
+    KnxDatapointSubtype_DPST_SSSBMode KnxDatapointSubtype = 253
+    KnxDatapointSubtype_DPST_BlindsControlMode KnxDatapointSubtype = 254
+    KnxDatapointSubtype_DPST_CommMode KnxDatapointSubtype = 255
+    KnxDatapointSubtype_DPST_AddInfoTypes KnxDatapointSubtype = 256
+    KnxDatapointSubtype_DPST_RF_ModeSelect KnxDatapointSubtype = 257
+    KnxDatapointSubtype_DPST_RF_FilterSelect KnxDatapointSubtype = 258
+    KnxDatapointSubtype_DPST_StatusGen KnxDatapointSubtype = 259
+    KnxDatapointSubtype_DPST_Device_Control KnxDatapointSubtype = 260
+    KnxDatapointSubtype_DPST_ForceSign KnxDatapointSubtype = 261
+    KnxDatapointSubtype_DPST_ForceSignCool KnxDatapointSubtype = 262
+    KnxDatapointSubtype_DPST_StatusRHC KnxDatapointSubtype = 263
+    KnxDatapointSubtype_DPST_StatusSDHWC KnxDatapointSubtype = 264
+    KnxDatapointSubtype_DPST_FuelTypeSet KnxDatapointSubtype = 265
+    KnxDatapointSubtype_DPST_StatusRCC KnxDatapointSubtype = 266
+    KnxDatapointSubtype_DPST_StatusAHU KnxDatapointSubtype = 267
+    KnxDatapointSubtype_DPST_CombinedStatus_RTSM KnxDatapointSubtype = 268
+    KnxDatapointSubtype_DPST_LightActuatorErrorInfo KnxDatapointSubtype = 269
+    KnxDatapointSubtype_DPST_RF_ModeInfo KnxDatapointSubtype = 270
+    KnxDatapointSubtype_DPST_RF_FilterInfo KnxDatapointSubtype = 271
+    KnxDatapointSubtype_DPST_Channel_Activation_8 KnxDatapointSubtype = 272
+    KnxDatapointSubtype_DPST_StatusDHWC KnxDatapointSubtype = 273
+    KnxDatapointSubtype_DPST_StatusRHCC KnxDatapointSubtype = 274
+    KnxDatapointSubtype_DPST_CombinedStatus_HVA KnxDatapointSubtype = 275
+    KnxDatapointSubtype_DPST_CombinedStatus_RTC KnxDatapointSubtype = 276
+    KnxDatapointSubtype_DPST_Media KnxDatapointSubtype = 277
+    KnxDatapointSubtype_DPST_Channel_Activation_16 KnxDatapointSubtype = 278
+    KnxDatapointSubtype_DPST_OnOffAction KnxDatapointSubtype = 279
+    KnxDatapointSubtype_DPST_Alarm_Reaction KnxDatapointSubtype = 280
+    KnxDatapointSubtype_DPST_UpDown_Action KnxDatapointSubtype = 281
+    KnxDatapointSubtype_DPST_HVAC_PB_Action KnxDatapointSubtype = 282
+    KnxDatapointSubtype_DPST_DoubleNibble KnxDatapointSubtype = 283
+    KnxDatapointSubtype_DPST_SceneInfo KnxDatapointSubtype = 284
+    KnxDatapointSubtype_DPST_CombinedInfoOnOff KnxDatapointSubtype = 285
+    KnxDatapointSubtype_DPST_ActiveEnergy_V64 KnxDatapointSubtype = 286
+    KnxDatapointSubtype_DPST_ApparantEnergy_V64 KnxDatapointSubtype = 287
+    KnxDatapointSubtype_DPST_ReactiveEnergy_V64 KnxDatapointSubtype = 288
+    KnxDatapointSubtype_DPST_Channel_Activation_24 KnxDatapointSubtype = 289
+    KnxDatapointSubtype_DPST_HVACModeNext KnxDatapointSubtype = 290
+    KnxDatapointSubtype_DPST_DHWModeNext KnxDatapointSubtype = 291
+    KnxDatapointSubtype_DPST_OccModeNext KnxDatapointSubtype = 292
+    KnxDatapointSubtype_DPST_BuildingModeNext KnxDatapointSubtype = 293
+    KnxDatapointSubtype_DPST_Version KnxDatapointSubtype = 294
+    KnxDatapointSubtype_DPST_AlarmInfo KnxDatapointSubtype = 295
+    KnxDatapointSubtype_DPST_TempRoomSetpSetF16_3 KnxDatapointSubtype = 296
+    KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_3 KnxDatapointSubtype = 297
+    KnxDatapointSubtype_DPST_Scaling_Speed KnxDatapointSubtype = 298
+    KnxDatapointSubtype_DPST_Scaling_Step_Time KnxDatapointSubtype = 299
+    KnxDatapointSubtype_DPST_MeteringValue KnxDatapointSubtype = 300
+    KnxDatapointSubtype_DPST_MBus_Address KnxDatapointSubtype = 301
+    KnxDatapointSubtype_DPST_Colour_RGB KnxDatapointSubtype = 302
+    KnxDatapointSubtype_DPST_LanguageCodeAlpha2_ASCII KnxDatapointSubtype = 303
+    KnxDatapointSubtype_DPST_Tariff_ActiveEnergy KnxDatapointSubtype = 304
+    KnxDatapointSubtype_DPST_Prioritised_Mode_Control KnxDatapointSubtype = 305
+    KnxDatapointSubtype_DPST_DALI_Control_Gear_Diagnostic KnxDatapointSubtype = 306
+    KnxDatapointSubtype_DPST_DALI_Diagnostics KnxDatapointSubtype = 307
+    KnxDatapointSubtype_DPST_CombinedPosition KnxDatapointSubtype = 308
+    KnxDatapointSubtype_DPST_StatusSAB KnxDatapointSubtype = 309
+    KnxDatapointSubtype_DPST_Colour_xyY KnxDatapointSubtype = 310
+    KnxDatapointSubtype_DPST_Converter_Status KnxDatapointSubtype = 311
+    KnxDatapointSubtype_DPST_Converter_Test_Result KnxDatapointSubtype = 312
+    KnxDatapointSubtype_DPST_Battery_Info KnxDatapointSubtype = 313
+    KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Transition KnxDatapointSubtype = 314
+    KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Control KnxDatapointSubtype = 315
+    KnxDatapointSubtype_DPST_Colour_RGBW KnxDatapointSubtype = 316
+    KnxDatapointSubtype_DPST_Relative_Control_RGBW KnxDatapointSubtype = 317
+    KnxDatapointSubtype_DPST_Relative_Control_RGB KnxDatapointSubtype = 318
+    KnxDatapointSubtype_DPST_GeographicalLocation KnxDatapointSubtype = 319
+    KnxDatapointSubtype_DPST_TempRoomSetpSetF16_4 KnxDatapointSubtype = 320
+    KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_4 KnxDatapointSubtype = 321
+)
+
+
+func (e KnxDatapointSubtype) Number() uint16 {
+    switch e  {
+        case 0: { /* '0' */
+            return 0
+        }
+        case 1: { /* '1' */
+            return 1
+        }
+        case 10: { /* '10' */
+            return 10
+        }
+        case 100: { /* '100' */
+            return 102
+        }
+        case 101: { /* '101' */
+            return 1200
+        }
+        case 102: { /* '102' */
+            return 1201
+        }
+        case 103: { /* '103' */
+            return 1
+        }
+        case 104: { /* '104' */
+            return 2
+        }
+        case 105: { /* '105' */
+            return 10
+        }
+        case 106: { /* '106' */
+            return 11
+        }
+        case 107: { /* '107' */
+            return 12
+        }
+        case 108: { /* '108' */
+            return 13
+        }
+        case 109: { /* '109' */
+            return 14
+        }
+        case 11: { /* '11' */
+            return 11
+        }
+        case 110: { /* '110' */
+            return 15
+        }
+        case 111: { /* '111' */
+            return 16
+        }
+        case 112: { /* '112' */
+            return 100
+        }
+        case 113: { /* '113' */
+            return 1200
+        }
+        case 114: { /* '114' */
+            return 1201
+        }
+        case 115: { /* '115' */
+            return 0
+        }
+        case 116: { /* '116' */
+            return 1
+        }
+        case 117: { /* '117' */
+            return 2
+        }
+        case 118: { /* '118' */
+            return 3
+        }
+        case 119: { /* '119' */
+            return 4
+        }
+        case 12: { /* '12' */
+            return 12
+        }
+        case 120: { /* '120' */
+            return 5
+        }
+        case 121: { /* '121' */
+            return 6
+        }
+        case 122: { /* '122' */
+            return 7
+        }
+        case 123: { /* '123' */
+            return 8
+        }
+        case 124: { /* '124' */
+            return 9
+        }
+        case 125: { /* '125' */
+            return 10
+        }
+        case 126: { /* '126' */
+            return 11
+        }
+        case 127: { /* '127' */
+            return 12
+        }
+        case 128: { /* '128' */
+            return 13
+        }
+        case 129: { /* '129' */
+            return 14
+        }
+        case 13: { /* '13' */
+            return 13
+        }
+        case 130: { /* '130' */
+            return 15
+        }
+        case 131: { /* '131' */
+            return 16
+        }
+        case 132: { /* '132' */
+            return 17
+        }
+        case 133: { /* '133' */
+            return 18
+        }
+        case 134: { /* '134' */
+            return 19
+        }
+        case 135: { /* '135' */
+            return 20
+        }
+        case 136: { /* '136' */
+            return 21
+        }
+        case 137: { /* '137' */
+            return 22
+        }
+        case 138: { /* '138' */
+            return 23
+        }
+        case 139: { /* '139' */
+            return 24
+        }
+        case 14: { /* '14' */
+            return 14
+        }
+        case 140: { /* '140' */
+            return 25
+        }
+        case 141: { /* '141' */
+            return 26
+        }
+        case 142: { /* '142' */
+            return 27
+        }
+        case 143: { /* '143' */
+            return 28
+        }
+        case 144: { /* '144' */
+            return 29
+        }
+        case 145: { /* '145' */
+            return 30
+        }
+        case 146: { /* '146' */
+            return 31
+        }
+        case 147: { /* '147' */
+            return 32
+        }
+        case 148: { /* '148' */
+            return 33
+        }
+        case 149: { /* '149' */
+            return 34
+        }
+        case 15: { /* '15' */
+            return 15
+        }
+        case 150: { /* '150' */
+            return 35
+        }
+        case 151: { /* '151' */
+            return 36
+        }
+        case 152: { /* '152' */
+            return 37
+        }
+        case 153: { /* '153' */
+            return 38
+        }
+        case 154: { /* '154' */
+            return 39
+        }
+        case 155: { /* '155' */
+            return 40
+        }
+        case 156: { /* '156' */
+            return 41
+        }
+        case 157: { /* '157' */
+            return 42
+        }
+        case 158: { /* '158' */
+            return 43
+        }
+        case 159: { /* '159' */
+            return 44
+        }
+        case 16: { /* '16' */
+            return 16
+        }
+        case 160: { /* '160' */
+            return 45
+        }
+        case 161: { /* '161' */
+            return 46
+        }
+        case 162: { /* '162' */
+            return 47
+        }
+        case 163: { /* '163' */
+            return 48
+        }
+        case 164: { /* '164' */
+            return 49
+        }
+        case 165: { /* '165' */
+            return 50
+        }
+        case 166: { /* '166' */
+            return 51
+        }
+        case 167: { /* '167' */
+            return 52
+        }
+        case 168: { /* '168' */
+            return 53
+        }
+        case 169: { /* '169' */
+            return 54
+        }
+        case 17: { /* '17' */
+            return 17
+        }
+        case 170: { /* '170' */
+            return 55
+        }
+        case 171: { /* '171' */
+            return 56
+        }
+        case 172: { /* '172' */
+            return 57
+        }
+        case 173: { /* '173' */
+            return 58
+        }
+        case 174: { /* '174' */
+            return 59
+        }
+        case 175: { /* '175' */
+            return 60
+        }
+        case 176: { /* '176' */
+            return 61
+        }
+        case 177: { /* '177' */
+            return 62
+        }
+        case 178: { /* '178' */
+            return 63
+        }
+        case 179: { /* '179' */
+            return 64
+        }
+        case 18: { /* '18' */
+            return 18
+        }
+        case 180: { /* '180' */
+            return 65
+        }
+        case 181: { /* '181' */
+            return 66
+        }
+        case 182: { /* '182' */
+            return 67
+        }
+        case 183: { /* '183' */
+            return 68
+        }
+        case 184: { /* '184' */
+            return 69
+        }
+        case 185: { /* '185' */
+            return 70
+        }
+        case 186: { /* '186' */
+            return 71
+        }
+        case 187: { /* '187' */
+            return 72
+        }
+        case 188: { /* '188' */
+            return 73
+        }
+        case 189: { /* '189' */
+            return 74
+        }
+        case 19: { /* '19' */
+            return 19
+        }
+        case 190: { /* '190' */
+            return 75
+        }
+        case 191: { /* '191' */
+            return 76
+        }
+        case 192: { /* '192' */
+            return 77
+        }
+        case 193: { /* '193' */
+            return 78
+        }
+        case 194: { /* '194' */
+            return 79
+        }
+        case 195: { /* '195' */
+            return 1200
+        }
+        case 196: { /* '196' */
+            return 1201
+        }
+        case 197: { /* '197' */
+            return 0
+        }
+        case 198: { /* '198' */
+            return 0
+        }
+        case 199: { /* '199' */
+            return 1
+        }
+        case 2: { /* '2' */
+            return 2
+        }
+        case 20: { /* '20' */
+            return 21
+        }
+        case 200: { /* '200' */
+            return 1
+        }
+        case 201: { /* '201' */
+            return 1
+        }
+        case 202: { /* '202' */
+            return 1
+        }
+        case 203: { /* '203' */
+            return 1
+        }
+        case 204: { /* '204' */
+            return 2
+        }
+        case 205: { /* '205' */
+            return 3
+        }
+        case 206: { /* '206' */
+            return 4
+        }
+        case 207: { /* '207' */
+            return 5
+        }
+        case 208: { /* '208' */
+            return 6
+        }
+        case 209: { /* '209' */
+            return 7
+        }
+        case 21: { /* '21' */
+            return 22
+        }
+        case 210: { /* '210' */
+            return 8
+        }
+        case 211: { /* '211' */
+            return 11
+        }
+        case 212: { /* '212' */
+            return 12
+        }
+        case 213: { /* '213' */
+            return 13
+        }
+        case 214: { /* '214' */
+            return 14
+        }
+        case 215: { /* '215' */
+            return 17
+        }
+        case 216: { /* '216' */
+            return 20
+        }
+        case 217: { /* '217' */
+            return 21
+        }
+        case 218: { /* '218' */
+            return 22
+        }
+        case 219: { /* '219' */
+            return 100
+        }
+        case 22: { /* '22' */
+            return 23
+        }
+        case 220: { /* '220' */
+            return 101
+        }
+        case 221: { /* '221' */
+            return 102
+        }
+        case 222: { /* '222' */
+            return 103
+        }
+        case 223: { /* '223' */
+            return 104
+        }
+        case 224: { /* '224' */
+            return 105
+        }
+        case 225: { /* '225' */
+            return 106
+        }
+        case 226: { /* '226' */
+            return 107
+        }
+        case 227: { /* '227' */
+            return 108
+        }
+        case 228: { /* '228' */
+            return 109
+        }
+        case 229: { /* '229' */
+            return 110
+        }
+        case 23: { /* '23' */
+            return 24
+        }
+        case 230: { /* '230' */
+            return 111
+        }
+        case 231: { /* '231' */
+            return 112
+        }
+        case 232: { /* '232' */
+            return 113
+        }
+        case 233: { /* '233' */
+            return 114
+        }
+        case 234: { /* '234' */
+            return 115
+        }
+        case 235: { /* '235' */
+            return 116
+        }
+        case 236: { /* '236' */
+            return 120
+        }
+        case 237: { /* '237' */
+            return 121
+        }
+        case 238: { /* '238' */
+            return 122
+        }
+        case 239: { /* '239' */
+            return 600
+        }
+        case 24: { /* '24' */
+            return 100
+        }
+        case 240: { /* '240' */
+            return 601
+        }
+        case 241: { /* '241' */
+            return 602
+        }
+        case 242: { /* '242' */
+            return 603
+        }
+        case 243: { /* '243' */
+            return 604
+        }
+        case 244: { /* '244' */
+            return 605
+        }
+        case 245: { /* '245' */
+            return 606
+        }
+        case 246: { /* '246' */
+            return 607
+        }
+        case 247: { /* '247' */
+            return 608
+        }
+        case 248: { /* '248' */
+            return 609
+        }
+        case 249: { /* '249' */
+            return 610
+        }
+        case 25: { /* '25' */
+            return 1
+        }
+        case 250: { /* '250' */
+            return 611
+        }
+        case 251: { /* '251' */
+            return 801
+        }
+        case 252: { /* '252' */
+            return 802
+        }
+        case 253: { /* '253' */
+            return 803
+        }
+        case 254: { /* '254' */
+            return 804
+        }
+        case 255: { /* '255' */
+            return 1000
+        }
+        case 256: { /* '256' */
+            return 1001
+        }
+        case 257: { /* '257' */
+            return 1002
+        }
+        case 258: { /* '258' */
+            return 1003
+        }
+        case 259: { /* '259' */
+            return 1
+        }
+        case 26: { /* '26' */
+            return 2
+        }
+        case 260: { /* '260' */
+            return 2
+        }
+        case 261: { /* '261' */
+            return 100
+        }
+        case 262: { /* '262' */
+            return 101
+        }
+        case 263: { /* '263' */
+            return 102
+        }
+        case 264: { /* '264' */
+            return 103
+        }
+        case 265: { /* '265' */
+            return 104
+        }
+        case 266: { /* '266' */
+            return 105
+        }
+        case 267: { /* '267' */
+            return 106
+        }
+        case 268: { /* '268' */
+            return 107
+        }
+        case 269: { /* '269' */
+            return 601
+        }
+        case 27: { /* '27' */
+            return 3
+        }
+        case 270: { /* '270' */
+            return 1000
+        }
+        case 271: { /* '271' */
+            return 1001
+        }
+        case 272: { /* '272' */
+            return 1010
+        }
+        case 273: { /* '273' */
+            return 100
+        }
+        case 274: { /* '274' */
+            return 101
+        }
+        case 275: { /* '275' */
+            return 102
+        }
+        case 276: { /* '276' */
+            return 103
+        }
+        case 277: { /* '277' */
+            return 1000
+        }
+        case 278: { /* '278' */
+            return 1010
+        }
+        case 279: { /* '279' */
+            return 1
+        }
+        case 28: { /* '28' */
+            return 4
+        }
+        case 280: { /* '280' */
+            return 2
+        }
+        case 281: { /* '281' */
+            return 3
+        }
+        case 282: { /* '282' */
+            return 102
+        }
+        case 283: { /* '283' */
+            return 1000
+        }
+        case 284: { /* '284' */
+            return 1
+        }
+        case 285: { /* '285' */
+            return 1
+        }
+        case 286: { /* '286' */
+            return 10
+        }
+        case 287: { /* '287' */
+            return 11
+        }
+        case 288: { /* '288' */
+            return 12
+        }
+        case 289: { /* '289' */
+            return 1010
+        }
+        case 29: { /* '29' */
+            return 5
+        }
+        case 290: { /* '290' */
+            return 100
+        }
+        case 291: { /* '291' */
+            return 102
+        }
+        case 292: { /* '292' */
+            return 104
+        }
+        case 293: { /* '293' */
+            return 105
+        }
+        case 294: { /* '294' */
+            return 1
+        }
+        case 295: { /* '295' */
+            return 1
+        }
+        case 296: { /* '296' */
+            return 100
+        }
+        case 297: { /* '297' */
+            return 101
+        }
+        case 298: { /* '298' */
+            return 1
+        }
+        case 299: { /* '299' */
+            return 2
+        }
+        case 3: { /* '3' */
+            return 3
+        }
+        case 30: { /* '30' */
+            return 6
+        }
+        case 300: { /* '300' */
+            return 1
+        }
+        case 301: { /* '301' */
+            return 1000
+        }
+        case 302: { /* '302' */
+            return 600
+        }
+        case 303: { /* '303' */
+            return 1
+        }
+        case 304: { /* '304' */
+            return 1
+        }
+        case 305: { /* '305' */
+            return 1
+        }
+        case 306: { /* '306' */
+            return 600
+        }
+        case 307: { /* '307' */
+            return 600
+        }
+        case 308: { /* '308' */
+            return 800
+        }
+        case 309: { /* '309' */
+            return 800
+        }
+        case 31: { /* '31' */
+            return 7
+        }
+        case 310: { /* '310' */
+            return 600
+        }
+        case 311: { /* '311' */
+            return 600
+        }
+        case 312: { /* '312' */
+            return 600
+        }
+        case 313: { /* '313' */
+            return 600
+        }
+        case 314: { /* '314' */
+            return 600
+        }
+        case 315: { /* '315' */
+            return 600
+        }
+        case 316: { /* '316' */
+            return 600
+        }
+        case 317: { /* '317' */
+            return 600
+        }
+        case 318: { /* '318' */
+            return 600
+        }
+        case 319: { /* '319' */
+            return 1
+        }
+        case 32: { /* '32' */
+            return 8
+        }
+        case 320: { /* '320' */
+            return 100
+        }
+        case 321: { /* '321' */
+            return 101
+        }
+        case 33: { /* '33' */
+            return 9
+        }
+        case 34: { /* '34' */
+            return 10
+        }
+        case 35: { /* '35' */
+            return 11
+        }
+        case 36: { /* '36' */
+            return 12
+        }
+        case 37: { /* '37' */
+            return 7
+        }
+        case 38: { /* '38' */
+            return 8
+        }
+        case 39: { /* '39' */
+            return 1
+        }
+        case 4: { /* '4' */
+            return 4
+        }
+        case 40: { /* '40' */
+            return 2
+        }
+        case 41: { /* '41' */
+            return 1
+        }
+        case 42: { /* '42' */
+            return 3
+        }
+        case 43: { /* '43' */
+            return 4
+        }
+        case 44: { /* '44' */
+            return 5
+        }
+        case 45: { /* '45' */
+            return 6
+        }
+        case 46: { /* '46' */
+            return 10
+        }
+        case 47: { /* '47' */
+            return 100
+        }
+        case 48: { /* '48' */
+            return 1
+        }
+        case 49: { /* '49' */
+            return 10
+        }
+        case 5: { /* '5' */
+            return 5
+        }
+        case 50: { /* '50' */
+            return 20
+        }
+        case 51: { /* '51' */
+            return 1
+        }
+        case 52: { /* '52' */
+            return 2
+        }
+        case 53: { /* '53' */
+            return 3
+        }
+        case 54: { /* '54' */
+            return 4
+        }
+        case 55: { /* '55' */
+            return 5
+        }
+        case 56: { /* '56' */
+            return 6
+        }
+        case 57: { /* '57' */
+            return 7
+        }
+        case 58: { /* '58' */
+            return 10
+        }
+        case 59: { /* '59' */
+            return 11
+        }
+        case 6: { /* '6' */
+            return 6
+        }
+        case 60: { /* '60' */
+            return 12
+        }
+        case 61: { /* '61' */
+            return 13
+        }
+        case 62: { /* '62' */
+            return 600
+        }
+        case 63: { /* '63' */
+            return 1
+        }
+        case 64: { /* '64' */
+            return 2
+        }
+        case 65: { /* '65' */
+            return 3
+        }
+        case 66: { /* '66' */
+            return 4
+        }
+        case 67: { /* '67' */
+            return 5
+        }
+        case 68: { /* '68' */
+            return 6
+        }
+        case 69: { /* '69' */
+            return 7
+        }
+        case 7: { /* '7' */
+            return 7
+        }
+        case 70: { /* '70' */
+            return 10
+        }
+        case 71: { /* '71' */
+            return 11
+        }
+        case 72: { /* '72' */
+            return 12
+        }
+        case 73: { /* '73' */
+            return 1
+        }
+        case 74: { /* '74' */
+            return 2
+        }
+        case 75: { /* '75' */
+            return 3
+        }
+        case 76: { /* '76' */
+            return 4
+        }
+        case 77: { /* '77' */
+            return 5
+        }
+        case 78: { /* '78' */
+            return 6
+        }
+        case 79: { /* '79' */
+            return 7
+        }
+        case 8: { /* '8' */
+            return 8
+        }
+        case 80: { /* '80' */
+            return 8
+        }
+        case 81: { /* '81' */
+            return 9
+        }
+        case 82: { /* '82' */
+            return 10
+        }
+        case 83: { /* '83' */
+            return 11
+        }
+        case 84: { /* '84' */
+            return 20
+        }
+        case 85: { /* '85' */
+            return 21
+        }
+        case 86: { /* '86' */
+            return 22
+        }
+        case 87: { /* '87' */
+            return 23
+        }
+        case 88: { /* '88' */
+            return 24
+        }
+        case 89: { /* '89' */
+            return 25
+        }
+        case 9: { /* '9' */
+            return 9
+        }
+        case 90: { /* '90' */
+            return 26
+        }
+        case 91: { /* '91' */
+            return 27
+        }
+        case 92: { /* '92' */
+            return 28
+        }
+        case 93: { /* '93' */
+            return 29
+        }
+        case 94: { /* '94' */
+            return 30
+        }
+        case 95: { /* '95' */
+            return 1
+        }
+        case 96: { /* '96' */
+            return 1
+        }
+        case 97: { /* '97' */
+            return 1
+        }
+        case 98: { /* '98' */
+            return 100
+        }
+        case 99: { /* '99' */
+            return 101
+        }
+        default: {
+            return 0
+        }
+    }
+}
+
+func (e KnxDatapointSubtype) DatapointType() KnxDatapointType {
+    switch e  {
+        case 0: { /* '0' */
+            return KnxDatapointType_DPT_UNKNOWN
+        }
+        case 1: { /* '1' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 10: { /* '10' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 100: { /* '100' */
+            return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 101: { /* '101' */
+            return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 102: { /* '102' */
+            return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 103: { /* '103' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 104: { /* '104' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 105: { /* '105' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 106: { /* '106' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 107: { /* '107' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 108: { /* '108' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 109: { /* '109' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 11: { /* '11' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 110: { /* '110' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 111: { /* '111' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 112: { /* '112' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 113: { /* '113' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 114: { /* '114' */
+            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 115: { /* '115' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 116: { /* '116' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 117: { /* '117' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 118: { /* '118' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 119: { /* '119' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 12: { /* '12' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 120: { /* '120' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 121: { /* '121' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 122: { /* '122' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 123: { /* '123' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 124: { /* '124' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 125: { /* '125' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 126: { /* '126' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 127: { /* '127' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 128: { /* '128' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 129: { /* '129' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 13: { /* '13' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 130: { /* '130' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 131: { /* '131' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 132: { /* '132' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 133: { /* '133' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 134: { /* '134' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 135: { /* '135' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 136: { /* '136' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 137: { /* '137' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 138: { /* '138' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 139: { /* '139' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 14: { /* '14' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 140: { /* '140' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 141: { /* '141' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 142: { /* '142' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 143: { /* '143' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 144: { /* '144' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 145: { /* '145' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 146: { /* '146' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 147: { /* '147' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 148: { /* '148' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 149: { /* '149' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 15: { /* '15' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 150: { /* '150' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 151: { /* '151' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 152: { /* '152' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 153: { /* '153' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 154: { /* '154' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 155: { /* '155' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 156: { /* '156' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 157: { /* '157' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 158: { /* '158' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 159: { /* '159' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 16: { /* '16' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 160: { /* '160' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 161: { /* '161' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 162: { /* '162' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 163: { /* '163' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 164: { /* '164' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 165: { /* '165' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 166: { /* '166' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 167: { /* '167' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 168: { /* '168' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 169: { /* '169' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 17: { /* '17' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 170: { /* '170' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 171: { /* '171' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 172: { /* '172' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 173: { /* '173' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 174: { /* '174' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 175: { /* '175' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 176: { /* '176' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 177: { /* '177' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 178: { /* '178' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 179: { /* '179' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 18: { /* '18' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 180: { /* '180' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 181: { /* '181' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 182: { /* '182' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 183: { /* '183' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 184: { /* '184' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 185: { /* '185' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 186: { /* '186' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 187: { /* '187' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 188: { /* '188' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 189: { /* '189' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 19: { /* '19' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 190: { /* '190' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 191: { /* '191' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 192: { /* '192' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 193: { /* '193' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 194: { /* '194' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 195: { /* '195' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 196: { /* '196' */
+            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 197: { /* '197' */
+            return KnxDatapointType_DPT_ENTRANCE_ACCESS
+        }
+        case 198: { /* '198' */
+            return KnxDatapointType_DPT_CHARACTER_STRING
+        }
+        case 199: { /* '199' */
+            return KnxDatapointType_DPT_CHARACTER_STRING
+        }
+        case 2: { /* '2' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 20: { /* '20' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 200: { /* '200' */
+            return KnxDatapointType_DPT_SCENE_NUMBER
+        }
+        case 201: { /* '201' */
+            return KnxDatapointType_DPT_SCENE_CONTROL
+        }
+        case 202: { /* '202' */
+            return KnxDatapointType_DPT_DATE_TIME
+        }
+        case 203: { /* '203' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 204: { /* '204' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 205: { /* '205' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 206: { /* '206' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 207: { /* '207' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 208: { /* '208' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 209: { /* '209' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 21: { /* '21' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 210: { /* '210' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 211: { /* '211' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 212: { /* '212' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 213: { /* '213' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 214: { /* '214' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 215: { /* '215' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 216: { /* '216' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 217: { /* '217' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 218: { /* '218' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 219: { /* '219' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 22: { /* '22' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 220: { /* '220' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 221: { /* '221' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 222: { /* '222' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 223: { /* '223' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 224: { /* '224' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 225: { /* '225' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 226: { /* '226' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 227: { /* '227' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 228: { /* '228' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 229: { /* '229' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 23: { /* '23' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 230: { /* '230' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 231: { /* '231' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 232: { /* '232' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 233: { /* '233' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 234: { /* '234' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 235: { /* '235' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 236: { /* '236' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 237: { /* '237' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 238: { /* '238' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 239: { /* '239' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 24: { /* '24' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 240: { /* '240' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 241: { /* '241' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 242: { /* '242' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 243: { /* '243' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 244: { /* '244' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 245: { /* '245' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 246: { /* '246' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 247: { /* '247' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 248: { /* '248' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 249: { /* '249' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 25: { /* '25' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 250: { /* '250' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 251: { /* '251' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 252: { /* '252' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 253: { /* '253' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 254: { /* '254' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 255: { /* '255' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 256: { /* '256' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 257: { /* '257' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 258: { /* '258' */
+            return KnxDatapointType_DPT_1_BYTE
+        }
+        case 259: { /* '259' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 26: { /* '26' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 260: { /* '260' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 261: { /* '261' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 262: { /* '262' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 263: { /* '263' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 264: { /* '264' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 265: { /* '265' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 266: { /* '266' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 267: { /* '267' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 268: { /* '268' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 269: { /* '269' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 27: { /* '27' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 270: { /* '270' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 271: { /* '271' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 272: { /* '272' */
+            return KnxDatapointType_DPT_8_BIT_SET
+        }
+        case 273: { /* '273' */
+            return KnxDatapointType_DPT_16_BIT_SET
+        }
+        case 274: { /* '274' */
+            return KnxDatapointType_DPT_16_BIT_SET
+        }
+        case 275: { /* '275' */
+            return KnxDatapointType_DPT_16_BIT_SET
+        }
+        case 276: { /* '276' */
+            return KnxDatapointType_DPT_16_BIT_SET
+        }
+        case 277: { /* '277' */
+            return KnxDatapointType_DPT_16_BIT_SET
+        }
+        case 278: { /* '278' */
+            return KnxDatapointType_DPT_16_BIT_SET
+        }
+        case 279: { /* '279' */
+            return KnxDatapointType_DPT_2_BIT_SET
+        }
+        case 28: { /* '28' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 280: { /* '280' */
+            return KnxDatapointType_DPT_2_BIT_SET
+        }
+        case 281: { /* '281' */
+            return KnxDatapointType_DPT_2_BIT_SET
+        }
+        case 282: { /* '282' */
+            return KnxDatapointType_DPT_2_BIT_SET
+        }
+        case 283: { /* '283' */
+            return KnxDatapointType_DPT_2_NIBBLE_SET
+        }
+        case 284: { /* '284' */
+            return KnxDatapointType_DPT_8_BIT_SET_2
+        }
+        case 285: { /* '285' */
+            return KnxDatapointType_DPT_32_BIT_SET
+        }
+        case 286: { /* '286' */
+            return KnxDatapointType_DPT_ELECTRICAL_ENERGY
+        }
+        case 287: { /* '287' */
+            return KnxDatapointType_DPT_ELECTRICAL_ENERGY
+        }
+        case 288: { /* '288' */
+            return KnxDatapointType_DPT_ELECTRICAL_ENERGY
+        }
+        case 289: { /* '289' */
+            return KnxDatapointType_DPT_24_TIMES_CHANNEL_ACTIVATION
+        }
+        case 29: { /* '29' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 290: { /* '290' */
+            return KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        }
+        case 291: { /* '291' */
+            return KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        }
+        case 292: { /* '292' */
+            return KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        }
+        case 293: { /* '293' */
+            return KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        }
+        case 294: { /* '294' */
+            return KnxDatapointType_DPT_DATAPOINT_TYPE_VERSION
+        }
+        case 295: { /* '295' */
+            return KnxDatapointType_DPT_ALARM_INFO
+        }
+        case 296: { /* '296' */
+            return KnxDatapointType_DPT_3X_2_BYTE_FLOAT_VALUE
+        }
+        case 297: { /* '297' */
+            return KnxDatapointType_DPT_3X_2_BYTE_FLOAT_VALUE
+        }
+        case 298: { /* '298' */
+            return KnxDatapointType_DPT_SCALING_SPEED
+        }
+        case 299: { /* '299' */
+            return KnxDatapointType_DPT_SCALING_SPEED
+        }
+        case 3: { /* '3' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 30: { /* '30' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 300: { /* '300' */
+            return KnxDatapointType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
+        }
+        case 301: { /* '301' */
+            return KnxDatapointType_DPT_MBUS_ADDRESS
+        }
+        case 302: { /* '302' */
+            return KnxDatapointType_DPT_3_BYTE_COLOUR_RGB
+        }
+        case 303: { /* '303' */
+            return KnxDatapointType_DPT_LANGUAGE_CODE_ISO_639_1
+        }
+        case 304: { /* '304' */
+            return KnxDatapointType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
+        }
+        case 305: { /* '305' */
+            return KnxDatapointType_DPT_PRIORITISED_MODE_CONTROL
+        }
+        case 306: { /* '306' */
+            return KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
+        }
+        case 307: { /* '307' */
+            return KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
+        }
+        case 308: { /* '308' */
+            return KnxDatapointType_DPT_POSITIONS
+        }
+        case 309: { /* '309' */
+            return KnxDatapointType_DPT_STATUS_32_BIT
+        }
+        case 31: { /* '31' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 310: { /* '310' */
+            return KnxDatapointType_DPT_STATUS_48_BIT
+        }
+        case 311: { /* '311' */
+            return KnxDatapointType_DPT_CONVERTER_STATUS
+        }
+        case 312: { /* '312' */
+            return KnxDatapointType_DPT_CONVERTER_TEST_RESULT
+        }
+        case 313: { /* '313' */
+            return KnxDatapointType_DPT_BATTERY_INFORMATION
+        }
+        case 314: { /* '314' */
+            return KnxDatapointType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
+        }
+        case 315: { /* '315' */
+            return KnxDatapointType_DPT_STATUS_24_BIT
+        }
+        case 316: { /* '316' */
+            return KnxDatapointType_DPT_COLOUR_RGBW
+        }
+        case 317: { /* '317' */
+            return KnxDatapointType_DPT_RELATIVE_CONTROL_RGBW
+        }
+        case 318: { /* '318' */
+            return KnxDatapointType_DPT_RELATIVE_CONTROL_RGB
+        }
+        case 319: { /* '319' */
+            return KnxDatapointType_DPT_F32F32
+        }
+        case 32: { /* '32' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 320: { /* '320' */
+            return KnxDatapointType_DPT_F16F16F16F16
+        }
+        case 321: { /* '321' */
+            return KnxDatapointType_DPT_F16F16F16F16
+        }
+        case 33: { /* '33' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 34: { /* '34' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 35: { /* '35' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 36: { /* '36' */
+            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+        }
+        case 37: { /* '37' */
+            return KnxDatapointType_DPT_3_BIT_CONTROLLED
+        }
+        case 38: { /* '38' */
+            return KnxDatapointType_DPT_3_BIT_CONTROLLED
+        }
+        case 39: { /* '39' */
+            return KnxDatapointType_DPT_CHARACTER
+        }
+        case 4: { /* '4' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 40: { /* '40' */
+            return KnxDatapointType_DPT_CHARACTER
+        }
+        case 41: { /* '41' */
+            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+        }
+        case 42: { /* '42' */
+            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+        }
+        case 43: { /* '43' */
+            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+        }
+        case 44: { /* '44' */
+            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+        }
+        case 45: { /* '45' */
+            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+        }
+        case 46: { /* '46' */
+            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+        }
+        case 47: { /* '47' */
+            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+        }
+        case 48: { /* '48' */
+            return KnxDatapointType_DPT_8_BIT_SIGNED_VALUE
+        }
+        case 49: { /* '49' */
+            return KnxDatapointType_DPT_8_BIT_SIGNED_VALUE
+        }
+        case 5: { /* '5' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 50: { /* '50' */
+            return KnxDatapointType_DPT_8_BIT_SIGNED_VALUE
+        }
+        case 51: { /* '51' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 52: { /* '52' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 53: { /* '53' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 54: { /* '54' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 55: { /* '55' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 56: { /* '56' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 57: { /* '57' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 58: { /* '58' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 59: { /* '59' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 6: { /* '6' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 60: { /* '60' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 61: { /* '61' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 62: { /* '62' */
+            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 63: { /* '63' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 64: { /* '64' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 65: { /* '65' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 66: { /* '66' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 67: { /* '67' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 68: { /* '68' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 69: { /* '69' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 7: { /* '7' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 70: { /* '70' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 71: { /* '71' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 72: { /* '72' */
+            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 73: { /* '73' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 74: { /* '74' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 75: { /* '75' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 76: { /* '76' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 77: { /* '77' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 78: { /* '78' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 79: { /* '79' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 8: { /* '8' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 80: { /* '80' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 81: { /* '81' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 82: { /* '82' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 83: { /* '83' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 84: { /* '84' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 85: { /* '85' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 86: { /* '86' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 87: { /* '87' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 88: { /* '88' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 89: { /* '89' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 9: { /* '9' */
+            return KnxDatapointType_DPT_1_BIT
+        }
+        case 90: { /* '90' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 91: { /* '91' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 92: { /* '92' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 93: { /* '93' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 94: { /* '94' */
+            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 95: { /* '95' */
+            return KnxDatapointType_DPT_TIME
+        }
+        case 96: { /* '96' */
+            return KnxDatapointType_DPT_DATE
+        }
+        case 97: { /* '97' */
+            return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 98: { /* '98' */
+            return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 99: { /* '99' */
+            return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        default: {
+            return 0
+        }
+    }
+}
+
+func (e KnxDatapointSubtype) Name() string {
+    switch e  {
+        case 0: { /* '0' */
+            return "Unknown Datapoint Subtype"
+        }
+        case 1: { /* '1' */
+            return "switch"
+        }
+        case 10: { /* '10' */
+            return "start/stop"
+        }
+        case 100: { /* '100' */
+            return "counter timehrs (h)"
+        }
+        case 101: { /* '101' */
+            return "volume liquid (l)"
+        }
+        case 102: { /* '102' */
+            return "volume (m³)"
+        }
+        case 103: { /* '103' */
+            return "counter pulses (signed)"
+        }
+        case 104: { /* '104' */
+            return "flow rate (m³/h)"
+        }
+        case 105: { /* '105' */
+            return "active energy (Wh)"
+        }
+        case 106: { /* '106' */
+            return "apparant energy (VAh)"
+        }
+        case 107: { /* '107' */
+            return "reactive energy (VARh)"
+        }
+        case 108: { /* '108' */
+            return "active energy (kWh)"
+        }
+        case 109: { /* '109' */
+            return "apparant energy (kVAh)"
+        }
+        case 11: { /* '11' */
+            return "state"
+        }
+        case 110: { /* '110' */
+            return "reactive energy (kVARh)"
+        }
+        case 111: { /* '111' */
+            return "active energy (MWh)"
+        }
+        case 112: { /* '112' */
+            return "time lag (s)"
+        }
+        case 113: { /* '113' */
+            return "delta volume liquid (l)"
+        }
+        case 114: { /* '114' */
+            return "delta volume (m³)"
+        }
+        case 115: { /* '115' */
+            return "acceleration (m/s²)"
+        }
+        case 116: { /* '116' */
+            return "angular acceleration (rad/s²)"
+        }
+        case 117: { /* '117' */
+            return "activation energy (J/mol)"
+        }
+        case 118: { /* '118' */
+            return "radioactive activity (1/s)"
+        }
+        case 119: { /* '119' */
+            return "amount of substance (mol)"
+        }
+        case 12: { /* '12' */
+            return "invert"
+        }
+        case 120: { /* '120' */
+            return "amplitude"
+        }
+        case 121: { /* '121' */
+            return "angle (radiant)"
+        }
+        case 122: { /* '122' */
+            return "angle (degree)"
+        }
+        case 123: { /* '123' */
+            return "angular momentum (Js)"
+        }
+        case 124: { /* '124' */
+            return "angular velocity (rad/s)"
+        }
+        case 125: { /* '125' */
+            return "area (m*m)"
+        }
+        case 126: { /* '126' */
+            return "capacitance (F)"
+        }
+        case 127: { /* '127' */
+            return "flux density (C/m²)"
+        }
+        case 128: { /* '128' */
+            return "charge density (C/m³)"
+        }
+        case 129: { /* '129' */
+            return "compressibility (m²/N)"
+        }
+        case 13: { /* '13' */
+            return "dim send style"
+        }
+        case 130: { /* '130' */
+            return "conductance (S)"
+        }
+        case 131: { /* '131' */
+            return "conductivity  (S/m)"
+        }
+        case 132: { /* '132' */
+            return "density (kg/m³)"
+        }
+        case 133: { /* '133' */
+            return "electric charge (C)"
+        }
+        case 134: { /* '134' */
+            return "electric current (A)"
+        }
+        case 135: { /* '135' */
+            return "electric current density (A/m²)"
+        }
+        case 136: { /* '136' */
+            return "electric dipole moment (Cm)"
+        }
+        case 137: { /* '137' */
+            return "electric displacement (C/m²)"
+        }
+        case 138: { /* '138' */
+            return "electric field strength (V/m)"
+        }
+        case 139: { /* '139' */
+            return "electric flux (C)"
+        }
+        case 14: { /* '14' */
+            return "input source"
+        }
+        case 140: { /* '140' */
+            return "electric flux density (C/m²)"
+        }
+        case 141: { /* '141' */
+            return "electric polarization (C/m²)"
+        }
+        case 142: { /* '142' */
+            return "electric potential (V)"
+        }
+        case 143: { /* '143' */
+            return "electric potential difference (V)"
+        }
+        case 144: { /* '144' */
+            return "electromagnetic moment (Am²)"
+        }
+        case 145: { /* '145' */
+            return "electromotive force (V)"
+        }
+        case 146: { /* '146' */
+            return "energy (J)"
+        }
+        case 147: { /* '147' */
+            return "force (N)"
+        }
+        case 148: { /* '148' */
+            return "frequency (Hz)"
+        }
+        case 149: { /* '149' */
+            return "angular frequency (rad/s)"
+        }
+        case 15: { /* '15' */
+            return "reset"
+        }
+        case 150: { /* '150' */
+            return "heat capacity (J/K)"
+        }
+        case 151: { /* '151' */
+            return "heat flow rate (W)"
+        }
+        case 152: { /* '152' */
+            return "heat quantity"
+        }
+        case 153: { /* '153' */
+            return "impedance (Ω)"
+        }
+        case 154: { /* '154' */
+            return "length (m)"
+        }
+        case 155: { /* '155' */
+            return "light quantity (J)"
+        }
+        case 156: { /* '156' */
+            return "luminance (cd/m²)"
+        }
+        case 157: { /* '157' */
+            return "luminous flux (lm)"
+        }
+        case 158: { /* '158' */
+            return "luminous intensity (cd)"
+        }
+        case 159: { /* '159' */
+            return "magnetic field strength (A/m)"
+        }
+        case 16: { /* '16' */
+            return "acknowledge"
+        }
+        case 160: { /* '160' */
+            return "magnetic flux (Wb)"
+        }
+        case 161: { /* '161' */
+            return "magnetic flux density (T)"
+        }
+        case 162: { /* '162' */
+            return "magnetic moment (Am²)"
+        }
+        case 163: { /* '163' */
+            return "magnetic polarization (T)"
+        }
+        case 164: { /* '164' */
+            return "magnetization (A/m)"
+        }
+        case 165: { /* '165' */
+            return "magnetomotive force (A)"
+        }
+        case 166: { /* '166' */
+            return "mass (kg)"
+        }
+        case 167: { /* '167' */
+            return "mass flux (kg/s)"
+        }
+        case 168: { /* '168' */
+            return "momentum (N/s)"
+        }
+        case 169: { /* '169' */
+            return "phase angle (rad)"
+        }
+        case 17: { /* '17' */
+            return "trigger"
+        }
+        case 170: { /* '170' */
+            return "phase angle (°)"
+        }
+        case 171: { /* '171' */
+            return "power (W)"
+        }
+        case 172: { /* '172' */
+            return "power factor (cos Φ)"
+        }
+        case 173: { /* '173' */
+            return "pressure (Pa)"
+        }
+        case 174: { /* '174' */
+            return "reactance (Ω)"
+        }
+        case 175: { /* '175' */
+            return "resistance (Ω)"
+        }
+        case 176: { /* '176' */
+            return "resistivity (Ωm)"
+        }
+        case 177: { /* '177' */
+            return "self inductance (H)"
+        }
+        case 178: { /* '178' */
+            return "solid angle (sr)"
+        }
+        case 179: { /* '179' */
+            return "sound intensity (W/m²)"
+        }
+        case 18: { /* '18' */
+            return "occupancy"
+        }
+        case 180: { /* '180' */
+            return "speed (m/s)"
+        }
+        case 181: { /* '181' */
+            return "stress (Pa)"
+        }
+        case 182: { /* '182' */
+            return "surface tension (N/m)"
+        }
+        case 183: { /* '183' */
+            return "temperature (°C)"
+        }
+        case 184: { /* '184' */
+            return "temperature absolute (K)"
+        }
+        case 185: { /* '185' */
+            return "temperature difference (K)"
+        }
+        case 186: { /* '186' */
+            return "thermal capacity (J/K)"
+        }
+        case 187: { /* '187' */
+            return "thermal conductivity (W/mK)"
+        }
+        case 188: { /* '188' */
+            return "thermoelectric power (V/K)"
+        }
+        case 189: { /* '189' */
+            return "time (s)"
+        }
+        case 19: { /* '19' */
+            return "window/door"
+        }
+        case 190: { /* '190' */
+            return "torque (Nm)"
+        }
+        case 191: { /* '191' */
+            return "volume (m³)"
+        }
+        case 192: { /* '192' */
+            return "volume flux (m³/s)"
+        }
+        case 193: { /* '193' */
+            return "weight (N)"
+        }
+        case 194: { /* '194' */
+            return "work (J)"
+        }
+        case 195: { /* '195' */
+            return "volume flux for meters (m³/h)"
+        }
+        case 196: { /* '196' */
+            return "volume flux for meters (1/ls)"
+        }
+        case 197: { /* '197' */
+            return "entrance access"
+        }
+        case 198: { /* '198' */
+            return "Character String (ASCII)"
+        }
+        case 199: { /* '199' */
+            return "Character String (ISO 8859-1)"
+        }
+        case 2: { /* '2' */
+            return "boolean"
+        }
+        case 20: { /* '20' */
+            return "logical function"
+        }
+        case 200: { /* '200' */
+            return "scene number"
+        }
+        case 201: { /* '201' */
+            return "scene control"
+        }
+        case 202: { /* '202' */
+            return "date time"
+        }
+        case 203: { /* '203' */
+            return "SCLO mode"
+        }
+        case 204: { /* '204' */
+            return "building mode"
+        }
+        case 205: { /* '205' */
+            return "occupied"
+        }
+        case 206: { /* '206' */
+            return "priority"
+        }
+        case 207: { /* '207' */
+            return "light application mode"
+        }
+        case 208: { /* '208' */
+            return "light application area"
+        }
+        case 209: { /* '209' */
+            return "alarm class"
+        }
+        case 21: { /* '21' */
+            return "scene"
+        }
+        case 210: { /* '210' */
+            return "PSU mode"
+        }
+        case 211: { /* '211' */
+            return "system error class"
+        }
+        case 212: { /* '212' */
+            return "HVAC error class"
+        }
+        case 213: { /* '213' */
+            return "time delay"
+        }
+        case 214: { /* '214' */
+            return "wind force scale (0..12)"
+        }
+        case 215: { /* '215' */
+            return "sensor mode"
+        }
+        case 216: { /* '216' */
+            return "actuator connect type"
+        }
+        case 217: { /* '217' */
+            return "cloud cover"
+        }
+        case 218: { /* '218' */
+            return "power return mode"
+        }
+        case 219: { /* '219' */
+            return "fuel type"
+        }
+        case 22: { /* '22' */
+            return "shutter/blinds mode"
+        }
+        case 220: { /* '220' */
+            return "burner type"
+        }
+        case 221: { /* '221' */
+            return "HVAC mode"
+        }
+        case 222: { /* '222' */
+            return "DHW mode"
+        }
+        case 223: { /* '223' */
+            return "load priority"
+        }
+        case 224: { /* '224' */
+            return "HVAC control mode"
+        }
+        case 225: { /* '225' */
+            return "HVAC emergency mode"
+        }
+        case 226: { /* '226' */
+            return "changeover mode"
+        }
+        case 227: { /* '227' */
+            return "valve mode"
+        }
+        case 228: { /* '228' */
+            return "damper mode"
+        }
+        case 229: { /* '229' */
+            return "heater mode"
+        }
+        case 23: { /* '23' */
+            return "day/night"
+        }
+        case 230: { /* '230' */
+            return "fan mode"
+        }
+        case 231: { /* '231' */
+            return "master/slave mode"
+        }
+        case 232: { /* '232' */
+            return "status room setpoint"
+        }
+        case 233: { /* '233' */
+            return "metering device type"
+        }
+        case 234: { /* '234' */
+            return "hum dehum mode"
+        }
+        case 235: { /* '235' */
+            return "enable H/C stage"
+        }
+        case 236: { /* '236' */
+            return "ADA type"
+        }
+        case 237: { /* '237' */
+            return "backup mode"
+        }
+        case 238: { /* '238' */
+            return "start syncronization type"
+        }
+        case 239: { /* '239' */
+            return "behavior lock/unlock"
+        }
+        case 24: { /* '24' */
+            return "cooling/heating"
+        }
+        case 240: { /* '240' */
+            return "behavior bus power up/down"
+        }
+        case 241: { /* '241' */
+            return "dali fade time"
+        }
+        case 242: { /* '242' */
+            return "blink mode"
+        }
+        case 243: { /* '243' */
+            return "light control mode"
+        }
+        case 244: { /* '244' */
+            return "PB switch mode"
+        }
+        case 245: { /* '245' */
+            return "PB action mode"
+        }
+        case 246: { /* '246' */
+            return "PB dimm mode"
+        }
+        case 247: { /* '247' */
+            return "switch on mode"
+        }
+        case 248: { /* '248' */
+            return "load type"
+        }
+        case 249: { /* '249' */
+            return "load type detection"
+        }
+        case 25: { /* '25' */
+            return "switch control"
+        }
+        case 250: { /* '250' */
+            return "converter test control"
+        }
+        case 251: { /* '251' */
+            return "SAB except behavior"
+        }
+        case 252: { /* '252' */
+            return "SAB behavior on lock/unlock"
+        }
+        case 253: { /* '253' */
+            return "SSSB mode"
+        }
+        case 254: { /* '254' */
+            return "blinds control mode"
+        }
+        case 255: { /* '255' */
+            return "communication mode"
+        }
+        case 256: { /* '256' */
+            return "additional information type"
+        }
+        case 257: { /* '257' */
+            return "RF mode selection"
+        }
+        case 258: { /* '258' */
+            return "RF filter mode selection"
+        }
+        case 259: { /* '259' */
+            return "general status"
+        }
+        case 26: { /* '26' */
+            return "boolean control"
+        }
+        case 260: { /* '260' */
+            return "device control"
+        }
+        case 261: { /* '261' */
+            return "forcing signal"
+        }
+        case 262: { /* '262' */
+            return "forcing signal cool"
+        }
+        case 263: { /* '263' */
+            return "room heating controller status"
+        }
+        case 264: { /* '264' */
+            return "solar DHW controller status"
+        }
+        case 265: { /* '265' */
+            return "fuel type set"
+        }
+        case 266: { /* '266' */
+            return "room cooling controller status"
+        }
+        case 267: { /* '267' */
+            return "ventilation controller status"
+        }
+        case 268: { /* '268' */
+            return "combined status RTSM"
+        }
+        case 269: { /* '269' */
+            return "lighting actuator error information"
+        }
+        case 27: { /* '27' */
+            return "enable control"
+        }
+        case 270: { /* '270' */
+            return "RF communication mode info"
+        }
+        case 271: { /* '271' */
+            return "cEMI server supported RF filtering modes"
+        }
+        case 272: { /* '272' */
+            return "channel activation for 8 channels"
+        }
+        case 273: { /* '273' */
+            return "DHW controller status"
+        }
+        case 274: { /* '274' */
+            return "RHCC status"
+        }
+        case 275: { /* '275' */
+            return "combined status HVA"
+        }
+        case 276: { /* '276' */
+            return "combined status RTC"
+        }
+        case 277: { /* '277' */
+            return "media"
+        }
+        case 278: { /* '278' */
+            return "channel activation for 16 channels"
+        }
+        case 279: { /* '279' */
+            return "on/off action"
+        }
+        case 28: { /* '28' */
+            return "ramp control"
+        }
+        case 280: { /* '280' */
+            return "alarm reaction"
+        }
+        case 281: { /* '281' */
+            return "up/down action"
+        }
+        case 282: { /* '282' */
+            return "HVAC push button action"
+        }
+        case 283: { /* '283' */
+            return "busy/nak repetitions"
+        }
+        case 284: { /* '284' */
+            return "scene information"
+        }
+        case 285: { /* '285' */
+            return "bit-combined info on/off"
+        }
+        case 286: { /* '286' */
+            return "active energy (Wh)"
+        }
+        case 287: { /* '287' */
+            return "apparant energy (VAh)"
+        }
+        case 288: { /* '288' */
+            return "reactive energy (VARh)"
+        }
+        case 289: { /* '289' */
+            return "activation state 0..23"
+        }
+        case 29: { /* '29' */
+            return "alarm control"
+        }
+        case 290: { /* '290' */
+            return "time delay & HVAC mode"
+        }
+        case 291: { /* '291' */
+            return "time delay & DHW mode"
+        }
+        case 292: { /* '292' */
+            return "time delay & occupancy mode"
+        }
+        case 293: { /* '293' */
+            return "time delay & building mode"
+        }
+        case 294: { /* '294' */
+            return "DPT version"
+        }
+        case 295: { /* '295' */
+            return "alarm info"
+        }
+        case 296: { /* '296' */
+            return "room temperature setpoint"
+        }
+        case 297: { /* '297' */
+            return "room temperature setpoint shift"
+        }
+        case 298: { /* '298' */
+            return "scaling speed"
+        }
+        case 299: { /* '299' */
+            return "scaling step time"
+        }
+        case 3: { /* '3' */
+            return "enable"
+        }
+        case 30: { /* '30' */
+            return "binary value control"
+        }
+        case 300: { /* '300' */
+            return "metering value (value,encoding,cmd)"
+        }
+        case 301: { /* '301' */
+            return "MBus address"
+        }
+        case 302: { /* '302' */
+            return "RGB value 3x(0..255)"
+        }
+        case 303: { /* '303' */
+            return "language code (ASCII)"
+        }
+        case 304: { /* '304' */
+            return "electrical energy with tariff"
+        }
+        case 305: { /* '305' */
+            return "priority control"
+        }
+        case 306: { /* '306' */
+            return "diagnostic value"
+        }
+        case 307: { /* '307' */
+            return "diagnostic value"
+        }
+        case 308: { /* '308' */
+            return "combined position"
+        }
+        case 309: { /* '309' */
+            return "status sunblind & shutter actuator"
+        }
+        case 31: { /* '31' */
+            return "step control"
+        }
+        case 310: { /* '310' */
+            return "colour xyY"
+        }
+        case 311: { /* '311' */
+            return "DALI converter status"
+        }
+        case 312: { /* '312' */
+            return "DALI converter test result"
+        }
+        case 313: { /* '313' */
+            return "Battery Information"
+        }
+        case 314: { /* '314' */
+            return "brightness colour temperature transition"
+        }
+        case 315: { /* '315' */
+            return "brightness colour temperature control"
+        }
+        case 316: { /* '316' */
+            return "RGBW value 4x(0..100%)"
+        }
+        case 317: { /* '317' */
+            return "RGBW relative control"
+        }
+        case 318: { /* '318' */
+            return "RGB relative control"
+        }
+        case 319: { /* '319' */
+            return "geographical location (longitude and latitude) expressed in degrees"
+        }
+        case 32: { /* '32' */
+            return "direction control 1"
+        }
+        case 320: { /* '320' */
+            return "Temperature setpoint setting for 4 HVAC Modes"
+        }
+        case 321: { /* '321' */
+            return "Temperature setpoint shift setting for 4 HVAC Modes"
+        }
+        case 33: { /* '33' */
+            return "direction control 2"
+        }
+        case 34: { /* '34' */
+            return "start control"
+        }
+        case 35: { /* '35' */
+            return "state control"
+        }
+        case 36: { /* '36' */
+            return "invert control"
+        }
+        case 37: { /* '37' */
+            return "dimming control"
+        }
+        case 38: { /* '38' */
+            return "blind control"
+        }
+        case 39: { /* '39' */
+            return "character (ASCII)"
+        }
+        case 4: { /* '4' */
+            return "ramp"
+        }
+        case 40: { /* '40' */
+            return "character (ISO 8859-1)"
+        }
+        case 41: { /* '41' */
+            return "percentage (0..100%)"
+        }
+        case 42: { /* '42' */
+            return "angle (degrees)"
+        }
+        case 43: { /* '43' */
+            return "percentage (0..255%)"
+        }
+        case 44: { /* '44' */
+            return "ratio (0..255)"
+        }
+        case 45: { /* '45' */
+            return "tariff (0..255)"
+        }
+        case 46: { /* '46' */
+            return "counter pulses (0..255)"
+        }
+        case 47: { /* '47' */
+            return "fan stage (0..255)"
+        }
+        case 48: { /* '48' */
+            return "percentage (-128..127%)"
+        }
+        case 49: { /* '49' */
+            return "counter pulses (-128..127)"
+        }
+        case 5: { /* '5' */
+            return "alarm"
+        }
+        case 50: { /* '50' */
+            return "status with mode"
+        }
+        case 51: { /* '51' */
+            return "pulses"
+        }
+        case 52: { /* '52' */
+            return "time (ms)"
+        }
+        case 53: { /* '53' */
+            return "time (10 ms)"
+        }
+        case 54: { /* '54' */
+            return "time (100 ms)"
+        }
+        case 55: { /* '55' */
+            return "time (s)"
+        }
+        case 56: { /* '56' */
+            return "time (min)"
+        }
+        case 57: { /* '57' */
+            return "time (h)"
+        }
+        case 58: { /* '58' */
+            return "property data type"
+        }
+        case 59: { /* '59' */
+            return "length (mm)"
+        }
+        case 6: { /* '6' */
+            return "binary value"
+        }
+        case 60: { /* '60' */
+            return "current (mA)"
+        }
+        case 61: { /* '61' */
+            return "brightness (lux)"
+        }
+        case 62: { /* '62' */
+            return "absolute colour temperature (K)"
+        }
+        case 63: { /* '63' */
+            return "pulses difference"
+        }
+        case 64: { /* '64' */
+            return "time lag (ms)"
+        }
+        case 65: { /* '65' */
+            return "time lag(10 ms)"
+        }
+        case 66: { /* '66' */
+            return "time lag (100 ms)"
+        }
+        case 67: { /* '67' */
+            return "time lag (s)"
+        }
+        case 68: { /* '68' */
+            return "time lag (min)"
+        }
+        case 69: { /* '69' */
+            return "time lag (h)"
+        }
+        case 7: { /* '7' */
+            return "step"
+        }
+        case 70: { /* '70' */
+            return "percentage difference (%)"
+        }
+        case 71: { /* '71' */
+            return "rotation angle (°)"
+        }
+        case 72: { /* '72' */
+            return "length (m)"
+        }
+        case 73: { /* '73' */
+            return "temperature (°C)"
+        }
+        case 74: { /* '74' */
+            return "temperature difference (K)"
+        }
+        case 75: { /* '75' */
+            return "kelvin/hour (K/h)"
+        }
+        case 76: { /* '76' */
+            return "lux (Lux)"
+        }
+        case 77: { /* '77' */
+            return "speed (m/s)"
+        }
+        case 78: { /* '78' */
+            return "pressure (Pa)"
+        }
+        case 79: { /* '79' */
+            return "humidity (%)"
+        }
+        case 8: { /* '8' */
+            return "up/down"
+        }
+        case 80: { /* '80' */
+            return "parts/million (ppm)"
+        }
+        case 81: { /* '81' */
+            return "air flow (m³/h)"
+        }
+        case 82: { /* '82' */
+            return "time (s)"
+        }
+        case 83: { /* '83' */
+            return "time (ms)"
+        }
+        case 84: { /* '84' */
+            return "voltage (mV)"
+        }
+        case 85: { /* '85' */
+            return "current (mA)"
+        }
+        case 86: { /* '86' */
+            return "power denisity (W/m²)"
+        }
+        case 87: { /* '87' */
+            return "kelvin/percent (K/%)"
+        }
+        case 88: { /* '88' */
+            return "power (kW)"
+        }
+        case 89: { /* '89' */
+            return "volume flow (l/h)"
+        }
+        case 9: { /* '9' */
+            return "open/close"
+        }
+        case 90: { /* '90' */
+            return "rain amount (l/m²)"
+        }
+        case 91: { /* '91' */
+            return "temperature (°F)"
+        }
+        case 92: { /* '92' */
+            return "wind speed (km/h)"
+        }
+        case 93: { /* '93' */
+            return "absolute humidity (g/m³)"
+        }
+        case 94: { /* '94' */
+            return "concentration (µg/m³)"
+        }
+        case 95: { /* '95' */
+            return "time of day"
+        }
+        case 96: { /* '96' */
+            return "date"
+        }
+        case 97: { /* '97' */
+            return "counter pulses (unsigned)"
+        }
+        case 98: { /* '98' */
+            return "counter timesec (s)"
+        }
+        case 99: { /* '99' */
+            return "counter timemin (min)"
+        }
+        default: {
+            return ""
+        }
+    }
+}
+func KnxDatapointSubtypeByValue(value uint32) KnxDatapointSubtype {
+    switch value {
+        case 0:
+            return KnxDatapointSubtype_DPST_UNKNOWN
+        case 1:
+            return KnxDatapointSubtype_DPST_Switch
+        case 10:
+            return KnxDatapointSubtype_DPST_Start
+        case 100:
+            return KnxDatapointSubtype_DPST_LongTimePeriod_Hrs
+        case 101:
+            return KnxDatapointSubtype_DPST_VolumeLiquid_Litre
+        case 102:
+            return KnxDatapointSubtype_DPST_Volume_m_3
+        case 103:
+            return KnxDatapointSubtype_DPST_Value_4_Count
+        case 104:
+            return KnxDatapointSubtype_DPST_FlowRate_m3h
+        case 105:
+            return KnxDatapointSubtype_DPST_ActiveEnergy
+        case 106:
+            return KnxDatapointSubtype_DPST_ApparantEnergy
+        case 107:
+            return KnxDatapointSubtype_DPST_ReactiveEnergy
+        case 108:
+            return KnxDatapointSubtype_DPST_ActiveEnergy_kWh
+        case 109:
+            return KnxDatapointSubtype_DPST_ApparantEnergy_kVAh
+        case 11:
+            return KnxDatapointSubtype_DPST_State
+        case 110:
+            return KnxDatapointSubtype_DPST_ReactiveEnergy_kVARh
+        case 111:
+            return KnxDatapointSubtype_DPST_ActiveEnergy_MWh
+        case 112:
+            return KnxDatapointSubtype_DPST_LongDeltaTimeSec
+        case 113:
+            return KnxDatapointSubtype_DPST_DeltaVolumeLiquid_Litre
+        case 114:
+            return KnxDatapointSubtype_DPST_DeltaVolume_m_3
+        case 115:
+            return KnxDatapointSubtype_DPST_Value_Acceleration
+        case 116:
+            return KnxDatapointSubtype_DPST_Value_Acceleration_Angular
+        case 117:
+            return KnxDatapointSubtype_DPST_Value_Activation_Energy
+        case 118:
+            return KnxDatapointSubtype_DPST_Value_Activity
+        case 119:
+            return KnxDatapointSubtype_DPST_Value_Mol
+        case 12:
+            return KnxDatapointSubtype_DPST_Invert
+        case 120:
+            return KnxDatapointSubtype_DPST_Value_Amplitude
+        case 121:
+            return KnxDatapointSubtype_DPST_Value_AngleRad
+        case 122:
+            return KnxDatapointSubtype_DPST_Value_AngleDeg
+        case 123:
+            return KnxDatapointSubtype_DPST_Value_Angular_Momentum
+        case 124:
+            return KnxDatapointSubtype_DPST_Value_Angular_Velocity
+        case 125:
+            return KnxDatapointSubtype_DPST_Value_Area
+        case 126:
+            return KnxDatapointSubtype_DPST_Value_Capacitance
+        case 127:
+            return KnxDatapointSubtype_DPST_Value_Charge_DensitySurface
+        case 128:
+            return KnxDatapointSubtype_DPST_Value_Charge_DensityVolume
+        case 129:
+            return KnxDatapointSubtype_DPST_Value_Compressibility
+        case 13:
+            return KnxDatapointSubtype_DPST_DimSendStyle
+        case 130:
+            return KnxDatapointSubtype_DPST_Value_Conductance
+        case 131:
+            return KnxDatapointSubtype_DPST_Value_Electrical_Conductivity
+        case 132:
+            return KnxDatapointSubtype_DPST_Value_Density
+        case 133:
+            return KnxDatapointSubtype_DPST_Value_Electric_Charge
+        case 134:
+            return KnxDatapointSubtype_DPST_Value_Electric_Current
+        case 135:
+            return KnxDatapointSubtype_DPST_Value_Electric_CurrentDensity
+        case 136:
+            return KnxDatapointSubtype_DPST_Value_Electric_DipoleMoment
+        case 137:
+            return KnxDatapointSubtype_DPST_Value_Electric_Displacement
+        case 138:
+            return KnxDatapointSubtype_DPST_Value_Electric_FieldStrength
+        case 139:
+            return KnxDatapointSubtype_DPST_Value_Electric_Flux
+        case 14:
+            return KnxDatapointSubtype_DPST_InputSource
+        case 140:
+            return KnxDatapointSubtype_DPST_Value_Electric_FluxDensity
+        case 141:
+            return KnxDatapointSubtype_DPST_Value_Electric_Polarization
+        case 142:
+            return KnxDatapointSubtype_DPST_Value_Electric_Potential
+        case 143:
+            return KnxDatapointSubtype_DPST_Value_Electric_PotentialDifference
+        case 144:
+            return KnxDatapointSubtype_DPST_Value_ElectromagneticMoment
+        case 145:
+            return KnxDatapointSubtype_DPST_Value_Electromotive_Force
+        case 146:
+            return KnxDatapointSubtype_DPST_Value_Energy
+        case 147:
+            return KnxDatapointSubtype_DPST_Value_Force
+        case 148:
+            return KnxDatapointSubtype_DPST_Value_Frequency
+        case 149:
+            return KnxDatapointSubtype_DPST_Value_Angular_Frequency
+        case 15:
+            return KnxDatapointSubtype_DPST_Reset
+        case 150:
+            return KnxDatapointSubtype_DPST_Value_Heat_Capacity
+        case 151:
+            return KnxDatapointSubtype_DPST_Value_Heat_FlowRate
+        case 152:
+            return KnxDatapointSubtype_DPST_Value_Heat_Quantity
+        case 153:
+            return KnxDatapointSubtype_DPST_Value_Impedance
+        case 154:
+            return KnxDatapointSubtype_DPST_Value_Length
+        case 155:
+            return KnxDatapointSubtype_DPST_Value_Light_Quantity
+        case 156:
+            return KnxDatapointSubtype_DPST_Value_Luminance
+        case 157:
+            return KnxDatapointSubtype_DPST_Value_Luminous_Flux
+        case 158:
+            return KnxDatapointSubtype_DPST_Value_Luminous_Intensity
+        case 159:
+            return KnxDatapointSubtype_DPST_Value_Magnetic_FieldStrength
+        case 16:
+            return KnxDatapointSubtype_DPST_Ack
+        case 160:
+            return KnxDatapointSubtype_DPST_Value_Magnetic_Flux
+        case 161:
+            return KnxDatapointSubtype_DPST_Value_Magnetic_FluxDensity
+        case 162:
+            return KnxDatapointSubtype_DPST_Value_Magnetic_Moment
+        case 163:
+            return KnxDatapointSubtype_DPST_Value_Magnetic_Polarization
+        case 164:
+            return KnxDatapointSubtype_DPST_Value_Magnetization
+        case 165:
+            return KnxDatapointSubtype_DPST_Value_MagnetomotiveForce
+        case 166:
+            return KnxDatapointSubtype_DPST_Value_Mass
+        case 167:
+            return KnxDatapointSubtype_DPST_Value_MassFlux
+        case 168:
+            return KnxDatapointSubtype_DPST_Value_Momentum
+        case 169:
+            return KnxDatapointSubtype_DPST_Value_Phase_AngleRad
+        case 17:
+            return KnxDatapointSubtype_DPST_Trigger
+        case 170:
+            return KnxDatapointSubtype_DPST_Value_Phase_AngleDeg
+        case 171:
+            return KnxDatapointSubtype_DPST_Value_Power
+        case 172:
+            return KnxDatapointSubtype_DPST_Value_Power_Factor
+        case 173:
+            return KnxDatapointSubtype_DPST_Value_Pressure
+        case 174:
+            return KnxDatapointSubtype_DPST_Value_Reactance
+        case 175:
+            return KnxDatapointSubtype_DPST_Value_Resistance
+        case 176:
+            return KnxDatapointSubtype_DPST_Value_Resistivity
+        case 177:
+            return KnxDatapointSubtype_DPST_Value_SelfInductance
+        case 178:
+            return KnxDatapointSubtype_DPST_Value_SolidAngle
+        case 179:
+            return KnxDatapointSubtype_DPST_Value_Sound_Intensity
+        case 18:
+            return KnxDatapointSubtype_DPST_Occupancy
+        case 180:
+            return KnxDatapointSubtype_DPST_Value_Speed
+        case 181:
+            return KnxDatapointSubtype_DPST_Value_Stress
+        case 182:
+            return KnxDatapointSubtype_DPST_Value_Surface_Tension
+        case 183:
+            return KnxDatapointSubtype_DPST_Value_Common_Temperature
+        case 184:
+            return KnxDatapointSubtype_DPST_Value_Absolute_Temperature
+        case 185:
+            return KnxDatapointSubtype_DPST_Value_TemperatureDifference
+        case 186:
+            return KnxDatapointSubtype_DPST_Value_Thermal_Capacity
+        case 187:
+            return KnxDatapointSubtype_DPST_Value_Thermal_Conductivity
+        case 188:
+            return KnxDatapointSubtype_DPST_Value_ThermoelectricPower
+        case 189:
+            return KnxDatapointSubtype_DPST_Value_Time
+        case 19:
+            return KnxDatapointSubtype_DPST_Window_Door
+        case 190:
+            return KnxDatapointSubtype_DPST_Value_Torque
+        case 191:
+            return KnxDatapointSubtype_DPST_Value_Volume
+        case 192:
+            return KnxDatapointSubtype_DPST_Value_Volume_Flux
+        case 193:
+            return KnxDatapointSubtype_DPST_Value_Weight
+        case 194:
+            return KnxDatapointSubtype_DPST_Value_Work
+        case 195:
+            return KnxDatapointSubtype_DPST_Volume_Flux_Meter
+        case 196:
+            return KnxDatapointSubtype_DPST_Volume_Flux_ls
+        case 197:
+            return KnxDatapointSubtype_DPST_Access_Data
+        case 198:
+            return KnxDatapointSubtype_DPST_String_ASCII
+        case 199:
+            return KnxDatapointSubtype_DPST_String_8859_1
+        case 2:
+            return KnxDatapointSubtype_DPST_Bool
+        case 20:
+            return KnxDatapointSubtype_DPST_LogicalFunction
+        case 200:
+            return KnxDatapointSubtype_DPST_SceneNumber
+        case 201:
+            return KnxDatapointSubtype_DPST_SceneControl
+        case 202:
+            return KnxDatapointSubtype_DPST_DateTime
+        case 203:
+            return KnxDatapointSubtype_DPST_SCLOMode
+        case 204:
+            return KnxDatapointSubtype_DPST_BuildingMode
+        case 205:
+            return KnxDatapointSubtype_DPST_OccMode
+        case 206:
+            return KnxDatapointSubtype_DPST_Priority
+        case 207:
+            return KnxDatapointSubtype_DPST_LightApplicationMode
+        case 208:
+            return KnxDatapointSubtype_DPST_ApplicationArea
+        case 209:
+            return KnxDatapointSubtype_DPST_AlarmClassType
+        case 21:
+            return KnxDatapointSubtype_DPST_Scene_AB
+        case 210:
+            return KnxDatapointSubtype_DPST_PSUMode
+        case 211:
+            return KnxDatapointSubtype_DPST_ErrorClass_System
+        case 212:
+            return KnxDatapointSubtype_DPST_ErrorClass_HVAC
+        case 213:
+            return KnxDatapointSubtype_DPST_Time_Delay
+        case 214:
+            return KnxDatapointSubtype_DPST_Beaufort_Wind_Force_Scale
+        case 215:
+            return KnxDatapointSubtype_DPST_SensorSelect
+        case 216:
+            return KnxDatapointSubtype_DPST_ActuatorConnectType
+        case 217:
+            return KnxDatapointSubtype_DPST_Cloud_Cover
+        case 218:
+            return KnxDatapointSubtype_DPST_PowerReturnMode
+        case 219:
+            return KnxDatapointSubtype_DPST_FuelType
+        case 22:
+            return KnxDatapointSubtype_DPST_ShutterBlinds_Mode
+        case 220:
+            return KnxDatapointSubtype_DPST_BurnerType
+        case 221:
+            return KnxDatapointSubtype_DPST_HVACMode
+        case 222:
+            return KnxDatapointSubtype_DPST_DHWMode
+        case 223:
+            return KnxDatapointSubtype_DPST_LoadPriority
+        case 224:
+            return KnxDatapointSubtype_DPST_HVACContrMode
+        case 225:
+            return KnxDatapointSubtype_DPST_HVACEmergMode
+        case 226:
+            return KnxDatapointSubtype_DPST_ChangeoverMode
+        case 227:
+            return KnxDatapointSubtype_DPST_ValveMode
+        case 228:
+            return KnxDatapointSubtype_DPST_DamperMode
+        case 229:
+            return KnxDatapointSubtype_DPST_HeaterMode
+        case 23:
+            return KnxDatapointSubtype_DPST_DayNight
+        case 230:
+            return KnxDatapointSubtype_DPST_FanMode
+        case 231:
+            return KnxDatapointSubtype_DPST_MasterSlaveMode
+        case 232:
+            return KnxDatapointSubtype_DPST_StatusRoomSetp
+        case 233:
+            return KnxDatapointSubtype_DPST_Metering_DeviceType
+        case 234:
+            return KnxDatapointSubtype_DPST_HumDehumMode
+        case 235:
+            return KnxDatapointSubtype_DPST_EnableHCStage
+        case 236:
+            return KnxDatapointSubtype_DPST_ADAType
+        case 237:
+            return KnxDatapointSubtype_DPST_BackupMode
+        case 238:
+            return KnxDatapointSubtype_DPST_StartSynchronization
+        case 239:
+            return KnxDatapointSubtype_DPST_Behaviour_Lock_Unlock
+        case 24:
+            return KnxDatapointSubtype_DPST_Heat_Cool
+        case 240:
+            return KnxDatapointSubtype_DPST_Behaviour_Bus_Power_Up_Down
+        case 241:
+            return KnxDatapointSubtype_DPST_DALI_Fade_Time
+        case 242:
+            return KnxDatapointSubtype_DPST_BlinkingMode
+        case 243:
+            return KnxDatapointSubtype_DPST_LightControlMode
+        case 244:
+            return KnxDatapointSubtype_DPST_SwitchPBModel
+        case 245:
+            return KnxDatapointSubtype_DPST_PBAction
+        case 246:
+            return KnxDatapointSubtype_DPST_DimmPBModel
+        case 247:
+            return KnxDatapointSubtype_DPST_SwitchOnMode
+        case 248:
+            return KnxDatapointSubtype_DPST_LoadTypeSet
+        case 249:
+            return KnxDatapointSubtype_DPST_LoadTypeDetected
+        case 25:
+            return KnxDatapointSubtype_DPST_Switch_Control
+        case 250:
+            return KnxDatapointSubtype_DPST_Converter_Test_Control
+        case 251:
+            return KnxDatapointSubtype_DPST_SABExcept_Behaviour
+        case 252:
+            return KnxDatapointSubtype_DPST_SABBehaviour_Lock_Unlock
+        case 253:
+            return KnxDatapointSubtype_DPST_SSSBMode
+        case 254:
+            return KnxDatapointSubtype_DPST_BlindsControlMode
+        case 255:
+            return KnxDatapointSubtype_DPST_CommMode
+        case 256:
+            return KnxDatapointSubtype_DPST_AddInfoTypes
+        case 257:
+            return KnxDatapointSubtype_DPST_RF_ModeSelect
+        case 258:
+            return KnxDatapointSubtype_DPST_RF_FilterSelect
+        case 259:
+            return KnxDatapointSubtype_DPST_StatusGen
+        case 26:
+            return KnxDatapointSubtype_DPST_Bool_Control
+        case 260:
+            return KnxDatapointSubtype_DPST_Device_Control
+        case 261:
+            return KnxDatapointSubtype_DPST_ForceSign
+        case 262:
+            return KnxDatapointSubtype_DPST_ForceSignCool
+        case 263:
+            return KnxDatapointSubtype_DPST_StatusRHC
+        case 264:
+            return KnxDatapointSubtype_DPST_StatusSDHWC
+        case 265:
+            return KnxDatapointSubtype_DPST_FuelTypeSet
+        case 266:
+            return KnxDatapointSubtype_DPST_StatusRCC
+        case 267:
+            return KnxDatapointSubtype_DPST_StatusAHU
+        case 268:
+            return KnxDatapointSubtype_DPST_CombinedStatus_RTSM
+        case 269:
+            return KnxDatapointSubtype_DPST_LightActuatorErrorInfo
+        case 27:
+            return KnxDatapointSubtype_DPST_Enable_Control
+        case 270:
+            return KnxDatapointSubtype_DPST_RF_ModeInfo
+        case 271:
+            return KnxDatapointSubtype_DPST_RF_FilterInfo
+        case 272:
+            return KnxDatapointSubtype_DPST_Channel_Activation_8
+        case 273:
+            return KnxDatapointSubtype_DPST_StatusDHWC
+        case 274:
+            return KnxDatapointSubtype_DPST_StatusRHCC
+        case 275:
+            return KnxDatapointSubtype_DPST_CombinedStatus_HVA
+        case 276:
+            return KnxDatapointSubtype_DPST_CombinedStatus_RTC
+        case 277:
+            return KnxDatapointSubtype_DPST_Media
+        case 278:
+            return KnxDatapointSubtype_DPST_Channel_Activation_16
+        case 279:
+            return KnxDatapointSubtype_DPST_OnOffAction
+        case 28:
+            return KnxDatapointSubtype_DPST_Ramp_Control
+        case 280:
+            return KnxDatapointSubtype_DPST_Alarm_Reaction
+        case 281:
+            return KnxDatapointSubtype_DPST_UpDown_Action
+        case 282:
+            return KnxDatapointSubtype_DPST_HVAC_PB_Action
+        case 283:
+            return KnxDatapointSubtype_DPST_DoubleNibble
+        case 284:
+            return KnxDatapointSubtype_DPST_SceneInfo
+        case 285:
+            return KnxDatapointSubtype_DPST_CombinedInfoOnOff
+        case 286:
+            return KnxDatapointSubtype_DPST_ActiveEnergy_V64
+        case 287:
+            return KnxDatapointSubtype_DPST_ApparantEnergy_V64
+        case 288:
+            return KnxDatapointSubtype_DPST_ReactiveEnergy_V64
+        case 289:
+            return KnxDatapointSubtype_DPST_Channel_Activation_24
+        case 29:
+            return KnxDatapointSubtype_DPST_Alarm_Control
+        case 290:
+            return KnxDatapointSubtype_DPST_HVACModeNext
+        case 291:
+            return KnxDatapointSubtype_DPST_DHWModeNext
+        case 292:
+            return KnxDatapointSubtype_DPST_OccModeNext
+        case 293:
+            return KnxDatapointSubtype_DPST_BuildingModeNext
+        case 294:
+            return KnxDatapointSubtype_DPST_Version
+        case 295:
+            return KnxDatapointSubtype_DPST_AlarmInfo
+        case 296:
+            return KnxDatapointSubtype_DPST_TempRoomSetpSetF16_3
+        case 297:
+            return KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_3
+        case 298:
+            return KnxDatapointSubtype_DPST_Scaling_Speed
+        case 299:
+            return KnxDatapointSubtype_DPST_Scaling_Step_Time
+        case 3:
+            return KnxDatapointSubtype_DPST_Enable
+        case 30:
+            return KnxDatapointSubtype_DPST_BinaryValue_Control
+        case 300:
+            return KnxDatapointSubtype_DPST_MeteringValue
+        case 301:
+            return KnxDatapointSubtype_DPST_MBus_Address
+        case 302:
+            return KnxDatapointSubtype_DPST_Colour_RGB
+        case 303:
+            return KnxDatapointSubtype_DPST_LanguageCodeAlpha2_ASCII
+        case 304:
+            return KnxDatapointSubtype_DPST_Tariff_ActiveEnergy
+        case 305:
+            return KnxDatapointSubtype_DPST_Prioritised_Mode_Control
+        case 306:
+            return KnxDatapointSubtype_DPST_DALI_Control_Gear_Diagnostic
+        case 307:
+            return KnxDatapointSubtype_DPST_DALI_Diagnostics
+        case 308:
+            return KnxDatapointSubtype_DPST_CombinedPosition
+        case 309:
+            return KnxDatapointSubtype_DPST_StatusSAB
+        case 31:
+            return KnxDatapointSubtype_DPST_Step_Control
+        case 310:
+            return KnxDatapointSubtype_DPST_Colour_xyY
+        case 311:
+            return KnxDatapointSubtype_DPST_Converter_Status
+        case 312:
+            return KnxDatapointSubtype_DPST_Converter_Test_Result
+        case 313:
+            return KnxDatapointSubtype_DPST_Battery_Info
+        case 314:
+            return KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Transition
+        case 315:
+            return KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Control
+        case 316:
+            return KnxDatapointSubtype_DPST_Colour_RGBW
+        case 317:
+            return KnxDatapointSubtype_DPST_Relative_Control_RGBW
+        case 318:
+            return KnxDatapointSubtype_DPST_Relative_Control_RGB
+        case 319:
+            return KnxDatapointSubtype_DPST_GeographicalLocation
+        case 32:
+            return KnxDatapointSubtype_DPST_Direction1_Control
+        case 320:
+            return KnxDatapointSubtype_DPST_TempRoomSetpSetF16_4
+        case 321:
+            return KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_4
+        case 33:
+            return KnxDatapointSubtype_DPST_Direction2_Control
+        case 34:
+            return KnxDatapointSubtype_DPST_Start_Control
+        case 35:
+            return KnxDatapointSubtype_DPST_State_Control
+        case 36:
+            return KnxDatapointSubtype_DPST_Invert_Control
+        case 37:
+            return KnxDatapointSubtype_DPST_Control_Dimming
+        case 38:
+            return KnxDatapointSubtype_DPST_Control_Blinds
+        case 39:
+            return KnxDatapointSubtype_DPST_Char_ASCII
+        case 4:
+            return KnxDatapointSubtype_DPST_Ramp
+        case 40:
+            return KnxDatapointSubtype_DPST_Char_8859_1
+        case 41:
+            return KnxDatapointSubtype_DPST_Scaling
+        case 42:
+            return KnxDatapointSubtype_DPST_Angle
+        case 43:
+            return KnxDatapointSubtype_DPST_Percent_U8
+        case 44:
+            return KnxDatapointSubtype_DPST_DecimalFactor
+        case 45:
+            return KnxDatapointSubtype_DPST_Tariff
+        case 46:
+            return KnxDatapointSubtype_DPST_Value_1_Ucount
+        case 47:
+            return KnxDatapointSubtype_DPST_FanStage
+        case 48:
+            return KnxDatapointSubtype_DPST_Percent_V8
+        case 49:
+            return KnxDatapointSubtype_DPST_Value_1_Count
+        case 5:
+            return KnxDatapointSubtype_DPST_Alarm
+        case 50:
+            return KnxDatapointSubtype_DPST_Status_Mode3
+        case 51:
+            return KnxDatapointSubtype_DPST_Value_2_Ucount
+        case 52:
+            return KnxDatapointSubtype_DPST_TimePeriodMsec
+        case 53:
+            return KnxDatapointSubtype_DPST_TimePeriod10Msec
+        case 54:
+            return KnxDatapointSubtype_DPST_TimePeriod100Msec
+        case 55:
+            return KnxDatapointSubtype_DPST_TimePeriodSec
+        case 56:
+            return KnxDatapointSubtype_DPST_TimePeriodMin
+        case 57:
+            return KnxDatapointSubtype_DPST_TimePeriodHrs
+        case 58:
+            return KnxDatapointSubtype_DPST_PropDataType
+        case 59:
+            return KnxDatapointSubtype_DPST_Length_mm
+        case 6:
+            return KnxDatapointSubtype_DPST_BinaryValue
+        case 60:
+            return KnxDatapointSubtype_DPST_UElCurrentmA
+        case 61:
+            return KnxDatapointSubtype_DPST_Brightness
+        case 62:
+            return KnxDatapointSubtype_DPST_Absolute_Colour_Temperature
+        case 63:
+            return KnxDatapointSubtype_DPST_Value_2_Count
+        case 64:
+            return KnxDatapointSubtype_DPST_DeltaTimeMsec
+        case 65:
+            return KnxDatapointSubtype_DPST_DeltaTime10Msec
+        case 66:
+            return KnxDatapointSubtype_DPST_DeltaTime100Msec
+        case 67:
+            return KnxDatapointSubtype_DPST_DeltaTimeSec
+        case 68:
+            return KnxDatapointSubtype_DPST_DeltaTimeMin
+        case 69:
+            return KnxDatapointSubtype_DPST_DeltaTimeHrs
+        case 7:
+            return KnxDatapointSubtype_DPST_Step
+        case 70:
+            return KnxDatapointSubtype_DPST_Percent_V16
+        case 71:
+            return KnxDatapointSubtype_DPST_Rotation_Angle
+        case 72:
+            return KnxDatapointSubtype_DPST_Length_m
+        case 73:
+            return KnxDatapointSubtype_DPST_Value_Temp
+        case 74:
+            return KnxDatapointSubtype_DPST_Value_Tempd
+        case 75:
+            return KnxDatapointSubtype_DPST_Value_Tempa
+        case 76:
+            return KnxDatapointSubtype_DPST_Value_Lux
+        case 77:
+            return KnxDatapointSubtype_DPST_Value_Wsp
+        case 78:
+            return KnxDatapointSubtype_DPST_Value_Pres
+        case 79:
+            return KnxDatapointSubtype_DPST_Value_Humidity
+        case 8:
+            return KnxDatapointSubtype_DPST_UpDown
+        case 80:
+            return KnxDatapointSubtype_DPST_Value_AirQuality
+        case 81:
+            return KnxDatapointSubtype_DPST_Value_AirFlow
+        case 82:
+            return KnxDatapointSubtype_DPST_Value_Time1
+        case 83:
+            return KnxDatapointSubtype_DPST_Value_Time2
+        case 84:
+            return KnxDatapointSubtype_DPST_Value_Volt
+        case 85:
+            return KnxDatapointSubtype_DPST_Value_Curr
+        case 86:
+            return KnxDatapointSubtype_DPST_PowerDensity
+        case 87:
+            return KnxDatapointSubtype_DPST_KelvinPerPercent
+        case 88:
+            return KnxDatapointSubtype_DPST_Power
+        case 89:
+            return KnxDatapointSubtype_DPST_Value_Volume_Flow
+        case 9:
+            return KnxDatapointSubtype_DPST_OpenClose
+        case 90:
+            return KnxDatapointSubtype_DPST_Rain_Amount
+        case 91:
+            return KnxDatapointSubtype_DPST_Value_Temp_F
+        case 92:
+            return KnxDatapointSubtype_DPST_Value_Wsp_kmh
+        case 93:
+            return KnxDatapointSubtype_DPST_Value_Absolute_Humidity
+        case 94:
+            return KnxDatapointSubtype_DPST_Concentration_ygm3
+        case 95:
+            return KnxDatapointSubtype_DPST_TimeOfDay
+        case 96:
+            return KnxDatapointSubtype_DPST_Date
+        case 97:
+            return KnxDatapointSubtype_DPST_Value_4_Ucount
+        case 98:
+            return KnxDatapointSubtype_DPST_LongTimePeriod_Sec
+        case 99:
+            return KnxDatapointSubtype_DPST_LongTimePeriod_Min
+    }
+    return 0
+}
+
+func KnxDatapointSubtypeByName(value string) KnxDatapointSubtype {
+    switch value {
+    case "DPST_UNKNOWN":
+        return KnxDatapointSubtype_DPST_UNKNOWN
+    case "DPST_Switch":
+        return KnxDatapointSubtype_DPST_Switch
+    case "DPST_Start":
+        return KnxDatapointSubtype_DPST_Start
+    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_State":
+        return KnxDatapointSubtype_DPST_State
+    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_Invert":
+        return KnxDatapointSubtype_DPST_Invert
+    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_DimSendStyle":
+        return KnxDatapointSubtype_DPST_DimSendStyle
+    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_InputSource":
+        return KnxDatapointSubtype_DPST_InputSource
+    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_Reset":
+        return KnxDatapointSubtype_DPST_Reset
+    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_Ack":
+        return KnxDatapointSubtype_DPST_Ack
+    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_Trigger":
+        return KnxDatapointSubtype_DPST_Trigger
+    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_Occupancy":
+        return KnxDatapointSubtype_DPST_Occupancy
+    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_Window_Door":
+        return KnxDatapointSubtype_DPST_Window_Door
+    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_Bool":
+        return KnxDatapointSubtype_DPST_Bool
+    case "DPST_LogicalFunction":
+        return KnxDatapointSubtype_DPST_LogicalFunction
+    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_Scene_AB":
+        return KnxDatapointSubtype_DPST_Scene_AB
+    case "DPST_PSUMode":
+        return KnxDatapointSubtype_DPST_PSUMode
+    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_ActuatorConnectType":
+        return KnxDatapointSubtype_DPST_ActuatorConnectType
+    case "DPST_Cloud_Cover":
+        return KnxDatapointSubtype_DPST_Cloud_Cover
+    case "DPST_PowerReturnMode":
+        return KnxDatapointSubtype_DPST_PowerReturnMode
+    case "DPST_FuelType":
+        return KnxDatapointSubtype_DPST_FuelType
+    case "DPST_ShutterBlinds_Mode":
+        return KnxDatapointSubtype_DPST_ShutterBlinds_Mode
+    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_HeaterMode":
+        return KnxDatapointSubtype_DPST_HeaterMode
+    case "DPST_DayNight":
+        return KnxDatapointSubtype_DPST_DayNight
+    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_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_Heat_Cool":
+        return KnxDatapointSubtype_DPST_Heat_Cool
+    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_Switch_Control":
+        return KnxDatapointSubtype_DPST_Switch_Control
+    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_StatusGen":
+        return KnxDatapointSubtype_DPST_StatusGen
+    case "DPST_Bool_Control":
+        return KnxDatapointSubtype_DPST_Bool_Control
+    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_Enable_Control":
+        return KnxDatapointSubtype_DPST_Enable_Control
+    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_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_OnOffAction":
+        return KnxDatapointSubtype_DPST_OnOffAction
+    case "DPST_Ramp_Control":
+        return KnxDatapointSubtype_DPST_Ramp_Control
+    case "DPST_Alarm_Reaction":
+        return KnxDatapointSubtype_DPST_Alarm_Reaction
+    case "DPST_UpDown_Action":
+        return KnxDatapointSubtype_DPST_UpDown_Action
+    case "DPST_HVAC_PB_Action":
+        return KnxDatapointSubtype_DPST_HVAC_PB_Action
+    case "DPST_DoubleNibble":
+        return KnxDatapointSubtype_DPST_DoubleNibble
+    case "DPST_SceneInfo":
+        return KnxDatapointSubtype_DPST_SceneInfo
+    case "DPST_CombinedInfoOnOff":
+        return KnxDatapointSubtype_DPST_CombinedInfoOnOff
+    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_Channel_Activation_24":
+        return KnxDatapointSubtype_DPST_Channel_Activation_24
+    case "DPST_Alarm_Control":
+        return KnxDatapointSubtype_DPST_Alarm_Control
+    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_Version":
+        return KnxDatapointSubtype_DPST_Version
+    case "DPST_AlarmInfo":
+        return KnxDatapointSubtype_DPST_AlarmInfo
+    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_Enable":
+        return KnxDatapointSubtype_DPST_Enable
+    case "DPST_BinaryValue_Control":
+        return KnxDatapointSubtype_DPST_BinaryValue_Control
+    case "DPST_MeteringValue":
+        return KnxDatapointSubtype_DPST_MeteringValue
+    case "DPST_MBus_Address":
+        return KnxDatapointSubtype_DPST_MBus_Address
+    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_Step_Control":
+        return KnxDatapointSubtype_DPST_Step_Control
+    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_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_Direction1_Control":
+        return KnxDatapointSubtype_DPST_Direction1_Control
+    case "DPST_TempRoomSetpSetF16_4":
+        return KnxDatapointSubtype_DPST_TempRoomSetpSetF16_4
+    case "DPST_TempRoomSetpSetShiftF16_4":
+        return KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_4
+    case "DPST_Direction2_Control":
+        return KnxDatapointSubtype_DPST_Direction2_Control
+    case "DPST_Start_Control":
+        return KnxDatapointSubtype_DPST_Start_Control
+    case "DPST_State_Control":
+        return KnxDatapointSubtype_DPST_State_Control
+    case "DPST_Invert_Control":
+        return KnxDatapointSubtype_DPST_Invert_Control
+    case "DPST_Control_Dimming":
+        return KnxDatapointSubtype_DPST_Control_Dimming
+    case "DPST_Control_Blinds":
+        return KnxDatapointSubtype_DPST_Control_Blinds
+    case "DPST_Char_ASCII":
+        return KnxDatapointSubtype_DPST_Char_ASCII
+    case "DPST_Ramp":
+        return KnxDatapointSubtype_DPST_Ramp
+    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_Alarm":
+        return KnxDatapointSubtype_DPST_Alarm
+    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_BinaryValue":
+        return KnxDatapointSubtype_DPST_BinaryValue
+    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_Step":
+        return KnxDatapointSubtype_DPST_Step
+    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_UpDown":
+        return KnxDatapointSubtype_DPST_UpDown
+    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_OpenClose":
+        return KnxDatapointSubtype_DPST_OpenClose
+    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
+    case "DPST_TimeOfDay":
+        return KnxDatapointSubtype_DPST_TimeOfDay
+    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
+    }
+    return 0
+}
+
+func CastKnxDatapointSubtype(structType interface{}) KnxDatapointSubtype {
+    castFunc := func(typ interface{}) KnxDatapointSubtype {
+        if sKnxDatapointSubtype, ok := typ.(KnxDatapointSubtype); ok {
+            return sKnxDatapointSubtype
+        }
+        return 0
+    }
+    return castFunc(structType)
+}
+
+func (m KnxDatapointSubtype) LengthInBits() uint16 {
+    return 32
+}
+
+func (m KnxDatapointSubtype) LengthInBytes() uint16 {
+    return m.LengthInBits() / 8
+}
+
+func KnxDatapointSubtypeParse(io *utils.ReadBuffer) (KnxDatapointSubtype, error) {
+    val, err := io.ReadUint32(32)
+    if err != nil {
+        return 0, nil
+    }
+    return KnxDatapointSubtypeByValue(val), nil
+}
+
+func (e KnxDatapointSubtype) Serialize(io utils.WriteBuffer) error {
+    err := io.WriteUint32(32, uint32(e))
+    return err
+}
+
+func (e KnxDatapointSubtype) String() string {
+    switch e {
+    case KnxDatapointSubtype_DPST_UNKNOWN:
+        return "DPST_UNKNOWN"
+    case KnxDatapointSubtype_DPST_Switch:
+        return "DPST_Switch"
+    case KnxDatapointSubtype_DPST_Start:
+        return "DPST_Start"
+    case KnxDatapointSubtype_DPST_LongTimePeriod_Hrs:
+        return "DPST_LongTimePeriod_Hrs"
+    case KnxDatapointSubtype_DPST_VolumeLiquid_Litre:
+        return "DPST_VolumeLiquid_Litre"
+    case KnxDatapointSubtype_DPST_Volume_m_3:
+        return "DPST_Volume_m_3"
+    case KnxDatapointSubtype_DPST_Value_4_Count:
+        return "DPST_Value_4_Count"
+    case KnxDatapointSubtype_DPST_FlowRate_m3h:
+        return "DPST_FlowRate_m3h"
+    case KnxDatapointSubtype_DPST_ActiveEnergy:
+        return "DPST_ActiveEnergy"
+    case KnxDatapointSubtype_DPST_ApparantEnergy:
+        return "DPST_ApparantEnergy"
+    case KnxDatapointSubtype_DPST_ReactiveEnergy:
+        return "DPST_ReactiveEnergy"
+    case KnxDatapointSubtype_DPST_ActiveEnergy_kWh:
+        return "DPST_ActiveEnergy_kWh"
+    case KnxDatapointSubtype_DPST_ApparantEnergy_kVAh:
+        return "DPST_ApparantEnergy_kVAh"
+    case KnxDatapointSubtype_DPST_State:
+        return "DPST_State"
+    case KnxDatapointSubtype_DPST_ReactiveEnergy_kVARh:
+        return "DPST_ReactiveEnergy_kVARh"
+    case KnxDatapointSubtype_DPST_ActiveEnergy_MWh:
+        return "DPST_ActiveEnergy_MWh"
+    case KnxDatapointSubtype_DPST_LongDeltaTimeSec:
+        return "DPST_LongDeltaTimeSec"
+    case KnxDatapointSubtype_DPST_DeltaVolumeLiquid_Litre:
+        return "DPST_DeltaVolumeLiquid_Litre"
+    case KnxDatapointSubtype_DPST_DeltaVolume_m_3:
+        return "DPST_DeltaVolume_m_3"
+    case KnxDatapointSubtype_DPST_Value_Acceleration:
+        return "DPST_Value_Acceleration"
+    case KnxDatapointSubtype_DPST_Value_Acceleration_Angular:
+        return "DPST_Value_Acceleration_Angular"
+    case KnxDatapointSubtype_DPST_Value_Activation_Energy:
+        return "DPST_Value_Activation_Energy"
+    case KnxDatapointSubtype_DPST_Value_Activity:
+        return "DPST_Value_Activity"
+    case KnxDatapointSubtype_DPST_Value_Mol:
+        return "DPST_Value_Mol"
+    case KnxDatapointSubtype_DPST_Invert:
+        return "DPST_Invert"
+    case KnxDatapointSubtype_DPST_Value_Amplitude:
+        return "DPST_Value_Amplitude"
+    case KnxDatapointSubtype_DPST_Value_AngleRad:
+        return "DPST_Value_AngleRad"
+    case KnxDatapointSubtype_DPST_Value_AngleDeg:
+        return "DPST_Value_AngleDeg"
+    case KnxDatapointSubtype_DPST_Value_Angular_Momentum:
+        return "DPST_Value_Angular_Momentum"
+    case KnxDatapointSubtype_DPST_Value_Angular_Velocity:
+        return "DPST_Value_Angular_Velocity"
+    case KnxDatapointSubtype_DPST_Value_Area:
+        return "DPST_Value_Area"
+    case KnxDatapointSubtype_DPST_Value_Capacitance:
+        return "DPST_Value_Capacitance"
+    case KnxDatapointSubtype_DPST_Value_Charge_DensitySurface:
+        return "DPST_Value_Charge_DensitySurface"
+    case KnxDatapointSubtype_DPST_Value_Charge_DensityVolume:
+        return "DPST_Value_Charge_DensityVolume"
+    case KnxDatapointSubtype_DPST_Value_Compressibility:
+        return "DPST_Value_Compressibility"
+    case KnxDatapointSubtype_DPST_DimSendStyle:
+        return "DPST_DimSendStyle"
+    case KnxDatapointSubtype_DPST_Value_Conductance:
+        return "DPST_Value_Conductance"
+    case KnxDatapointSubtype_DPST_Value_Electrical_Conductivity:
+        return "DPST_Value_Electrical_Conductivity"
+    case KnxDatapointSubtype_DPST_Value_Density:
+        return "DPST_Value_Density"
+    case KnxDatapointSubtype_DPST_Value_Electric_Charge:
+        return "DPST_Value_Electric_Charge"
+    case KnxDatapointSubtype_DPST_Value_Electric_Current:
+        return "DPST_Value_Electric_Current"
+    case KnxDatapointSubtype_DPST_Value_Electric_CurrentDensity:
+        return "DPST_Value_Electric_CurrentDensity"
+    case KnxDatapointSubtype_DPST_Value_Electric_DipoleMoment:
+        return "DPST_Value_Electric_DipoleMoment"
+    case KnxDatapointSubtype_DPST_Value_Electric_Displacement:
+        return "DPST_Value_Electric_Displacement"
+    case KnxDatapointSubtype_DPST_Value_Electric_FieldStrength:
+        return "DPST_Value_Electric_FieldStrength"
+    case KnxDatapointSubtype_DPST_Value_Electric_Flux:
+        return "DPST_Value_Electric_Flux"
+    case KnxDatapointSubtype_DPST_InputSource:
+        return "DPST_InputSource"
+    case KnxDatapointSubtype_DPST_Value_Electric_FluxDensity:
+        return "DPST_Value_Electric_FluxDensity"
+    case KnxDatapointSubtype_DPST_Value_Electric_Polarization:
+        return "DPST_Value_Electric_Polarization"
+    case KnxDatapointSubtype_DPST_Value_Electric_Potential:
+        return "DPST_Value_Electric_Potential"
+    case KnxDatapointSubtype_DPST_Value_Electric_PotentialDifference:
+        return "DPST_Value_Electric_PotentialDifference"
+    case KnxDatapointSubtype_DPST_Value_ElectromagneticMoment:
+        return "DPST_Value_ElectromagneticMoment"
+    case KnxDatapointSubtype_DPST_Value_Electromotive_Force:
+        return "DPST_Value_Electromotive_Force"
+    case KnxDatapointSubtype_DPST_Value_Energy:
+        return "DPST_Value_Energy"
+    case KnxDatapointSubtype_DPST_Value_Force:
+        return "DPST_Value_Force"
+    case KnxDatapointSubtype_DPST_Value_Frequency:
+        return "DPST_Value_Frequency"
+    case KnxDatapointSubtype_DPST_Value_Angular_Frequency:
+        return "DPST_Value_Angular_Frequency"
+    case KnxDatapointSubtype_DPST_Reset:
+        return "DPST_Reset"
+    case KnxDatapointSubtype_DPST_Value_Heat_Capacity:
+        return "DPST_Value_Heat_Capacity"
+    case KnxDatapointSubtype_DPST_Value_Heat_FlowRate:
+        return "DPST_Value_Heat_FlowRate"
+    case KnxDatapointSubtype_DPST_Value_Heat_Quantity:
+        return "DPST_Value_Heat_Quantity"
+    case KnxDatapointSubtype_DPST_Value_Impedance:
+        return "DPST_Value_Impedance"
+    case KnxDatapointSubtype_DPST_Value_Length:
+        return "DPST_Value_Length"
+    case KnxDatapointSubtype_DPST_Value_Light_Quantity:
+        return "DPST_Value_Light_Quantity"
+    case KnxDatapointSubtype_DPST_Value_Luminance:
+        return "DPST_Value_Luminance"
+    case KnxDatapointSubtype_DPST_Value_Luminous_Flux:
+        return "DPST_Value_Luminous_Flux"
+    case KnxDatapointSubtype_DPST_Value_Luminous_Intensity:
+        return "DPST_Value_Luminous_Intensity"
+    case KnxDatapointSubtype_DPST_Value_Magnetic_FieldStrength:
+        return "DPST_Value_Magnetic_FieldStrength"
+    case KnxDatapointSubtype_DPST_Ack:
+        return "DPST_Ack"
+    case KnxDatapointSubtype_DPST_Value_Magnetic_Flux:
+        return "DPST_Value_Magnetic_Flux"
+    case KnxDatapointSubtype_DPST_Value_Magnetic_FluxDensity:
+        return "DPST_Value_Magnetic_FluxDensity"
+    case KnxDatapointSubtype_DPST_Value_Magnetic_Moment:
+        return "DPST_Value_Magnetic_Moment"
+    case KnxDatapointSubtype_DPST_Value_Magnetic_Polarization:
+        return "DPST_Value_Magnetic_Polarization"
+    case KnxDatapointSubtype_DPST_Value_Magnetization:
+        return "DPST_Value_Magnetization"
+    case KnxDatapointSubtype_DPST_Value_MagnetomotiveForce:
+        return "DPST_Value_MagnetomotiveForce"
+    case KnxDatapointSubtype_DPST_Value_Mass:
+        return "DPST_Value_Mass"
+    case KnxDatapointSubtype_DPST_Value_MassFlux:
+        return "DPST_Value_MassFlux"
+    case KnxDatapointSubtype_DPST_Value_Momentum:
+        return "DPST_Value_Momentum"
+    case KnxDatapointSubtype_DPST_Value_Phase_AngleRad:
+        return "DPST_Value_Phase_AngleRad"
+    case KnxDatapointSubtype_DPST_Trigger:
+        return "DPST_Trigger"
+    case KnxDatapointSubtype_DPST_Value_Phase_AngleDeg:
+        return "DPST_Value_Phase_AngleDeg"
+    case KnxDatapointSubtype_DPST_Value_Power:
+        return "DPST_Value_Power"
+    case KnxDatapointSubtype_DPST_Value_Power_Factor:
+        return "DPST_Value_Power_Factor"
+    case KnxDatapointSubtype_DPST_Value_Pressure:
+        return "DPST_Value_Pressure"
+    case KnxDatapointSubtype_DPST_Value_Reactance:
+        return "DPST_Value_Reactance"
+    case KnxDatapointSubtype_DPST_Value_Resistance:
+        return "DPST_Value_Resistance"
+    case KnxDatapointSubtype_DPST_Value_Resistivity:
+        return "DPST_Value_Resistivity"
+    case KnxDatapointSubtype_DPST_Value_SelfInductance:
+        return "DPST_Value_SelfInductance"
+    case KnxDatapointSubtype_DPST_Value_SolidAngle:
+        return "DPST_Value_SolidAngle"
+    case KnxDatapointSubtype_DPST_Value_Sound_Intensity:
+        return "DPST_Value_Sound_Intensity"
+    case KnxDatapointSubtype_DPST_Occupancy:
+        return "DPST_Occupancy"
+    case KnxDatapointSubtype_DPST_Value_Speed:
+        return "DPST_Value_Speed"
+    case KnxDatapointSubtype_DPST_Value_Stress:
+        return "DPST_Value_Stress"
+    case KnxDatapointSubtype_DPST_Value_Surface_Tension:
+        return "DPST_Value_Surface_Tension"
+    case KnxDatapointSubtype_DPST_Value_Common_Temperature:
+        return "DPST_Value_Common_Temperature"
+    case KnxDatapointSubtype_DPST_Value_Absolute_Temperature:
+        return "DPST_Value_Absolute_Temperature"
+    case KnxDatapointSubtype_DPST_Value_TemperatureDifference:
+        return "DPST_Value_TemperatureDifference"
+    case KnxDatapointSubtype_DPST_Value_Thermal_Capacity:
+        return "DPST_Value_Thermal_Capacity"
+    case KnxDatapointSubtype_DPST_Value_Thermal_Conductivity:
+        return "DPST_Value_Thermal_Conductivity"
+    case KnxDatapointSubtype_DPST_Value_ThermoelectricPower:
+        return "DPST_Value_ThermoelectricPower"
+    case KnxDatapointSubtype_DPST_Value_Time:
+        return "DPST_Value_Time"
+    case KnxDatapointSubtype_DPST_Window_Door:
+        return "DPST_Window_Door"
+    case KnxDatapointSubtype_DPST_Value_Torque:
+        return "DPST_Value_Torque"
+    case KnxDatapointSubtype_DPST_Value_Volume:
+        return "DPST_Value_Volume"
+    case KnxDatapointSubtype_DPST_Value_Volume_Flux:
+        return "DPST_Value_Volume_Flux"
+    case KnxDatapointSubtype_DPST_Value_Weight:
+        return "DPST_Value_Weight"
+    case KnxDatapointSubtype_DPST_Value_Work:
+        return "DPST_Value_Work"
+    case KnxDatapointSubtype_DPST_Volume_Flux_Meter:
+        return "DPST_Volume_Flux_Meter"
+    case KnxDatapointSubtype_DPST_Volume_Flux_ls:
+        return "DPST_Volume_Flux_ls"
+    case KnxDatapointSubtype_DPST_Access_Data:
+        return "DPST_Access_Data"
+    case KnxDatapointSubtype_DPST_String_ASCII:
+        return "DPST_String_ASCII"
+    case KnxDatapointSubtype_DPST_String_8859_1:
+        return "DPST_String_8859_1"
+    case KnxDatapointSubtype_DPST_Bool:
+        return "DPST_Bool"
+    case KnxDatapointSubtype_DPST_LogicalFunction:
+        return "DPST_LogicalFunction"
+    case KnxDatapointSubtype_DPST_SceneNumber:
+        return "DPST_SceneNumber"
+    case KnxDatapointSubtype_DPST_SceneControl:
+        return "DPST_SceneControl"
+    case KnxDatapointSubtype_DPST_DateTime:
+        return "DPST_DateTime"
+    case KnxDatapointSubtype_DPST_SCLOMode:
+        return "DPST_SCLOMode"
+    case KnxDatapointSubtype_DPST_BuildingMode:
+        return "DPST_BuildingMode"
+    case KnxDatapointSubtype_DPST_OccMode:
+        return "DPST_OccMode"
+    case KnxDatapointSubtype_DPST_Priority:
+        return "DPST_Priority"
+    case KnxDatapointSubtype_DPST_LightApplicationMode:
+        return "DPST_LightApplicationMode"
+    case KnxDatapointSubtype_DPST_ApplicationArea:
+        return "DPST_ApplicationArea"
+    case KnxDatapointSubtype_DPST_AlarmClassType:
+        return "DPST_AlarmClassType"
+    case KnxDatapointSubtype_DPST_Scene_AB:
+        return "DPST_Scene_AB"
+    case KnxDatapointSubtype_DPST_PSUMode:
+        return "DPST_PSUMode"
+    case KnxDatapointSubtype_DPST_ErrorClass_System:
+        return "DPST_ErrorClass_System"
+    case KnxDatapointSubtype_DPST_ErrorClass_HVAC:
+        return "DPST_ErrorClass_HVAC"
+    case KnxDatapointSubtype_DPST_Time_Delay:
+        return "DPST_Time_Delay"
+    case KnxDatapointSubtype_DPST_Beaufort_Wind_Force_Scale:
+        return "DPST_Beaufort_Wind_Force_Scale"
+    case KnxDatapointSubtype_DPST_SensorSelect:
+        return "DPST_SensorSelect"
+    case KnxDatapointSubtype_DPST_ActuatorConnectType:
+        return "DPST_ActuatorConnectType"
+    case KnxDatapointSubtype_DPST_Cloud_Cover:
+        return "DPST_Cloud_Cover"
+    case KnxDatapointSubtype_DPST_PowerReturnMode:
+        return "DPST_PowerReturnMode"
+    case KnxDatapointSubtype_DPST_FuelType:
+        return "DPST_FuelType"
+    case KnxDatapointSubtype_DPST_ShutterBlinds_Mode:
+        return "DPST_ShutterBlinds_Mode"
+    case KnxDatapointSubtype_DPST_BurnerType:
+        return "DPST_BurnerType"
+    case KnxDatapointSubtype_DPST_HVACMode:
+        return "DPST_HVACMode"
+    case KnxDatapointSubtype_DPST_DHWMode:
+        return "DPST_DHWMode"
+    case KnxDatapointSubtype_DPST_LoadPriority:
+        return "DPST_LoadPriority"
+    case KnxDatapointSubtype_DPST_HVACContrMode:
+        return "DPST_HVACContrMode"
+    case KnxDatapointSubtype_DPST_HVACEmergMode:
+        return "DPST_HVACEmergMode"
+    case KnxDatapointSubtype_DPST_ChangeoverMode:
+        return "DPST_ChangeoverMode"
+    case KnxDatapointSubtype_DPST_ValveMode:
+        return "DPST_ValveMode"
+    case KnxDatapointSubtype_DPST_DamperMode:
+        return "DPST_DamperMode"
+    case KnxDatapointSubtype_DPST_HeaterMode:
+        return "DPST_HeaterMode"
+    case KnxDatapointSubtype_DPST_DayNight:
+        return "DPST_DayNight"
+    case KnxDatapointSubtype_DPST_FanMode:
+        return "DPST_FanMode"
+    case KnxDatapointSubtype_DPST_MasterSlaveMode:
+        return "DPST_MasterSlaveMode"
+    case KnxDatapointSubtype_DPST_StatusRoomSetp:
+        return "DPST_StatusRoomSetp"
+    case KnxDatapointSubtype_DPST_Metering_DeviceType:
+        return "DPST_Metering_DeviceType"
+    case KnxDatapointSubtype_DPST_HumDehumMode:
+        return "DPST_HumDehumMode"
+    case KnxDatapointSubtype_DPST_EnableHCStage:
+        return "DPST_EnableHCStage"
+    case KnxDatapointSubtype_DPST_ADAType:
+        return "DPST_ADAType"
+    case KnxDatapointSubtype_DPST_BackupMode:
+        return "DPST_BackupMode"
+    case KnxDatapointSubtype_DPST_StartSynchronization:
+        return "DPST_StartSynchronization"
+    case KnxDatapointSubtype_DPST_Behaviour_Lock_Unlock:
+        return "DPST_Behaviour_Lock_Unlock"
+    case KnxDatapointSubtype_DPST_Heat_Cool:
+        return "DPST_Heat_Cool"
+    case KnxDatapointSubtype_DPST_Behaviour_Bus_Power_Up_Down:
+        return "DPST_Behaviour_Bus_Power_Up_Down"
+    case KnxDatapointSubtype_DPST_DALI_Fade_Time:
+        return "DPST_DALI_Fade_Time"
+    case KnxDatapointSubtype_DPST_BlinkingMode:
+        return "DPST_BlinkingMode"
+    case KnxDatapointSubtype_DPST_LightControlMode:
+        return "DPST_LightControlMode"
+    case KnxDatapointSubtype_DPST_SwitchPBModel:
+        return "DPST_SwitchPBModel"
+    case KnxDatapointSubtype_DPST_PBAction:
+        return "DPST_PBAction"
+    case KnxDatapointSubtype_DPST_DimmPBModel:
+        return "DPST_DimmPBModel"
+    case KnxDatapointSubtype_DPST_SwitchOnMode:
+        return "DPST_SwitchOnMode"
+    case KnxDatapointSubtype_DPST_LoadTypeSet:
+        return "DPST_LoadTypeSet"
+    case KnxDatapointSubtype_DPST_LoadTypeDetected:
+        return "DPST_LoadTypeDetected"
+    case KnxDatapointSubtype_DPST_Switch_Control:
+        return "DPST_Switch_Control"
+    case KnxDatapointSubtype_DPST_Converter_Test_Control:
+        return "DPST_Converter_Test_Control"
+    case KnxDatapointSubtype_DPST_SABExcept_Behaviour:
+        return "DPST_SABExcept_Behaviour"
+    case KnxDatapointSubtype_DPST_SABBehaviour_Lock_Unlock:
+        return "DPST_SABBehaviour_Lock_Unlock"
+    case KnxDatapointSubtype_DPST_SSSBMode:
+        return "DPST_SSSBMode"
+    case KnxDatapointSubtype_DPST_BlindsControlMode:
+        return "DPST_BlindsControlMode"
+    case KnxDatapointSubtype_DPST_CommMode:
+        return "DPST_CommMode"
+    case KnxDatapointSubtype_DPST_AddInfoTypes:
+        return "DPST_AddInfoTypes"
+    case KnxDatapointSubtype_DPST_RF_ModeSelect:
+        return "DPST_RF_ModeSelect"
+    case KnxDatapointSubtype_DPST_RF_FilterSelect:
+        return "DPST_RF_FilterSelect"
+    case KnxDatapointSubtype_DPST_StatusGen:
+        return "DPST_StatusGen"
+    case KnxDatapointSubtype_DPST_Bool_Control:
+        return "DPST_Bool_Control"
+    case KnxDatapointSubtype_DPST_Device_Control:
+        return "DPST_Device_Control"
+    case KnxDatapointSubtype_DPST_ForceSign:
+        return "DPST_ForceSign"
+    case KnxDatapointSubtype_DPST_ForceSignCool:
+        return "DPST_ForceSignCool"
+    case KnxDatapointSubtype_DPST_StatusRHC:
+        return "DPST_StatusRHC"
+    case KnxDatapointSubtype_DPST_StatusSDHWC:
+        return "DPST_StatusSDHWC"
+    case KnxDatapointSubtype_DPST_FuelTypeSet:
+        return "DPST_FuelTypeSet"
+    case KnxDatapointSubtype_DPST_StatusRCC:
+        return "DPST_StatusRCC"
+    case KnxDatapointSubtype_DPST_StatusAHU:
+        return "DPST_StatusAHU"
+    case KnxDatapointSubtype_DPST_CombinedStatus_RTSM:
+        return "DPST_CombinedStatus_RTSM"
+    case KnxDatapointSubtype_DPST_LightActuatorErrorInfo:
+        return "DPST_LightActuatorErrorInfo"
+    case KnxDatapointSubtype_DPST_Enable_Control:
+        return "DPST_Enable_Control"
+    case KnxDatapointSubtype_DPST_RF_ModeInfo:
+        return "DPST_RF_ModeInfo"
+    case KnxDatapointSubtype_DPST_RF_FilterInfo:
+        return "DPST_RF_FilterInfo"
+    case KnxDatapointSubtype_DPST_Channel_Activation_8:
+        return "DPST_Channel_Activation_8"
+    case KnxDatapointSubtype_DPST_StatusDHWC:
+        return "DPST_StatusDHWC"
+    case KnxDatapointSubtype_DPST_StatusRHCC:
+        return "DPST_StatusRHCC"
+    case KnxDatapointSubtype_DPST_CombinedStatus_HVA:
+        return "DPST_CombinedStatus_HVA"
+    case KnxDatapointSubtype_DPST_CombinedStatus_RTC:
+        return "DPST_CombinedStatus_RTC"
+    case KnxDatapointSubtype_DPST_Media:
+        return "DPST_Media"
+    case KnxDatapointSubtype_DPST_Channel_Activation_16:
+        return "DPST_Channel_Activation_16"
+    case KnxDatapointSubtype_DPST_OnOffAction:
+        return "DPST_OnOffAction"
+    case KnxDatapointSubtype_DPST_Ramp_Control:
+        return "DPST_Ramp_Control"
+    case KnxDatapointSubtype_DPST_Alarm_Reaction:
+        return "DPST_Alarm_Reaction"
+    case KnxDatapointSubtype_DPST_UpDown_Action:
+        return "DPST_UpDown_Action"
+    case KnxDatapointSubtype_DPST_HVAC_PB_Action:
+        return "DPST_HVAC_PB_Action"
+    case KnxDatapointSubtype_DPST_DoubleNibble:
+        return "DPST_DoubleNibble"
+    case KnxDatapointSubtype_DPST_SceneInfo:
+        return "DPST_SceneInfo"
+    case KnxDatapointSubtype_DPST_CombinedInfoOnOff:
+        return "DPST_CombinedInfoOnOff"
+    case KnxDatapointSubtype_DPST_ActiveEnergy_V64:
+        return "DPST_ActiveEnergy_V64"
+    case KnxDatapointSubtype_DPST_ApparantEnergy_V64:
+        return "DPST_ApparantEnergy_V64"
+    case KnxDatapointSubtype_DPST_ReactiveEnergy_V64:
+        return "DPST_ReactiveEnergy_V64"
+    case KnxDatapointSubtype_DPST_Channel_Activation_24:
+        return "DPST_Channel_Activation_24"
+    case KnxDatapointSubtype_DPST_Alarm_Control:
+        return "DPST_Alarm_Control"
+    case KnxDatapointSubtype_DPST_HVACModeNext:
+        return "DPST_HVACModeNext"
+    case KnxDatapointSubtype_DPST_DHWModeNext:
+        return "DPST_DHWModeNext"
+    case KnxDatapointSubtype_DPST_OccModeNext:
+        return "DPST_OccModeNext"
+    case KnxDatapointSubtype_DPST_BuildingModeNext:
+        return "DPST_BuildingModeNext"
+    case KnxDatapointSubtype_DPST_Version:
+        return "DPST_Version"
+    case KnxDatapointSubtype_DPST_AlarmInfo:
+        return "DPST_AlarmInfo"
+    case KnxDatapointSubtype_DPST_TempRoomSetpSetF16_3:
+        return "DPST_TempRoomSetpSetF16_3"
+    case KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_3:
+        return "DPST_TempRoomSetpSetShiftF16_3"
+    case KnxDatapointSubtype_DPST_Scaling_Speed:
+        return "DPST_Scaling_Speed"
+    case KnxDatapointSubtype_DPST_Scaling_Step_Time:
+        return "DPST_Scaling_Step_Time"
+    case KnxDatapointSubtype_DPST_Enable:
+        return "DPST_Enable"
+    case KnxDatapointSubtype_DPST_BinaryValue_Control:
+        return "DPST_BinaryValue_Control"
+    case KnxDatapointSubtype_DPST_MeteringValue:
+        return "DPST_MeteringValue"
+    case KnxDatapointSubtype_DPST_MBus_Address:
+        return "DPST_MBus_Address"
+    case KnxDatapointSubtype_DPST_Colour_RGB:
+        return "DPST_Colour_RGB"
+    case KnxDatapointSubtype_DPST_LanguageCodeAlpha2_ASCII:
+        return "DPST_LanguageCodeAlpha2_ASCII"
+    case KnxDatapointSubtype_DPST_Tariff_ActiveEnergy:
+        return "DPST_Tariff_ActiveEnergy"
+    case KnxDatapointSubtype_DPST_Prioritised_Mode_Control:
+        return "DPST_Prioritised_Mode_Control"
+    case KnxDatapointSubtype_DPST_DALI_Control_Gear_Diagnostic:
+        return "DPST_DALI_Control_Gear_Diagnostic"
+    case KnxDatapointSubtype_DPST_DALI_Diagnostics:
+        return "DPST_DALI_Diagnostics"
+    case KnxDatapointSubtype_DPST_CombinedPosition:
+        return "DPST_CombinedPosition"
+    case KnxDatapointSubtype_DPST_StatusSAB:
+        return "DPST_StatusSAB"
+    case KnxDatapointSubtype_DPST_Step_Control:
+        return "DPST_Step_Control"
+    case KnxDatapointSubtype_DPST_Colour_xyY:
+        return "DPST_Colour_xyY"
+    case KnxDatapointSubtype_DPST_Converter_Status:
+        return "DPST_Converter_Status"
+    case KnxDatapointSubtype_DPST_Converter_Test_Result:
+        return "DPST_Converter_Test_Result"
+    case KnxDatapointSubtype_DPST_Battery_Info:
+        return "DPST_Battery_Info"
+    case KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Transition:
+        return "DPST_Brightness_Colour_Temperature_Transition"
+    case KnxDatapointSubtype_DPST_Brightness_Colour_Temperature_Control:
+        return "DPST_Brightness_Colour_Temperature_Control"
+    case KnxDatapointSubtype_DPST_Colour_RGBW:
+        return "DPST_Colour_RGBW"
+    case KnxDatapointSubtype_DPST_Relative_Control_RGBW:
+        return "DPST_Relative_Control_RGBW"
+    case KnxDatapointSubtype_DPST_Relative_Control_RGB:
+        return "DPST_Relative_Control_RGB"
+    case KnxDatapointSubtype_DPST_GeographicalLocation:
+        return "DPST_GeographicalLocation"
+    case KnxDatapointSubtype_DPST_Direction1_Control:
+        return "DPST_Direction1_Control"
+    case KnxDatapointSubtype_DPST_TempRoomSetpSetF16_4:
+        return "DPST_TempRoomSetpSetF16_4"
+    case KnxDatapointSubtype_DPST_TempRoomSetpSetShiftF16_4:
+        return "DPST_TempRoomSetpSetShiftF16_4"
+    case KnxDatapointSubtype_DPST_Direction2_Control:
+        return "DPST_Direction2_Control"
+    case KnxDatapointSubtype_DPST_Start_Control:
+        return "DPST_Start_Control"
+    case KnxDatapointSubtype_DPST_State_Control:
+        return "DPST_State_Control"
+    case KnxDatapointSubtype_DPST_Invert_Control:
+        return "DPST_Invert_Control"
+    case KnxDatapointSubtype_DPST_Control_Dimming:
+        return "DPST_Control_Dimming"
+    case KnxDatapointSubtype_DPST_Control_Blinds:
+        return "DPST_Control_Blinds"
+    case KnxDatapointSubtype_DPST_Char_ASCII:
+        return "DPST_Char_ASCII"
+    case KnxDatapointSubtype_DPST_Ramp:
+        return "DPST_Ramp"
+    case KnxDatapointSubtype_DPST_Char_8859_1:
+        return "DPST_Char_8859_1"
+    case KnxDatapointSubtype_DPST_Scaling:
+        return "DPST_Scaling"
+    case KnxDatapointSubtype_DPST_Angle:
+        return "DPST_Angle"
+    case KnxDatapointSubtype_DPST_Percent_U8:
+        return "DPST_Percent_U8"
+    case KnxDatapointSubtype_DPST_DecimalFactor:
+        return "DPST_DecimalFactor"
+    case KnxDatapointSubtype_DPST_Tariff:
+        return "DPST_Tariff"
+    case KnxDatapointSubtype_DPST_Value_1_Ucount:
+        return "DPST_Value_1_Ucount"
+    case KnxDatapointSubtype_DPST_FanStage:
+        return "DPST_FanStage"
+    case KnxDatapointSubtype_DPST_Percent_V8:
+        return "DPST_Percent_V8"
+    case KnxDatapointSubtype_DPST_Value_1_Count:
+        return "DPST_Value_1_Count"
+    case KnxDatapointSubtype_DPST_Alarm:
+        return "DPST_Alarm"
+    case KnxDatapointSubtype_DPST_Status_Mode3:
+        return "DPST_Status_Mode3"
+    case KnxDatapointSubtype_DPST_Value_2_Ucount:
+        return "DPST_Value_2_Ucount"
+    case KnxDatapointSubtype_DPST_TimePeriodMsec:
+        return "DPST_TimePeriodMsec"
+    case KnxDatapointSubtype_DPST_TimePeriod10Msec:
+        return "DPST_TimePeriod10Msec"
+    case KnxDatapointSubtype_DPST_TimePeriod100Msec:
+        return "DPST_TimePeriod100Msec"
+    case KnxDatapointSubtype_DPST_TimePeriodSec:
+        return "DPST_TimePeriodSec"
+    case KnxDatapointSubtype_DPST_TimePeriodMin:
+        return "DPST_TimePeriodMin"
+    case KnxDatapointSubtype_DPST_TimePeriodHrs:
+        return "DPST_TimePeriodHrs"
+    case KnxDatapointSubtype_DPST_PropDataType:
+        return "DPST_PropDataType"
+    case KnxDatapointSubtype_DPST_Length_mm:
+        return "DPST_Length_mm"
+    case KnxDatapointSubtype_DPST_BinaryValue:
+        return "DPST_BinaryValue"
+    case KnxDatapointSubtype_DPST_UElCurrentmA:
+        return "DPST_UElCurrentmA"
+    case KnxDatapointSubtype_DPST_Brightness:
+        return "DPST_Brightness"
+    case KnxDatapointSubtype_DPST_Absolute_Colour_Temperature:
+        return "DPST_Absolute_Colour_Temperature"
+    case KnxDatapointSubtype_DPST_Value_2_Count:
+        return "DPST_Value_2_Count"
+    case KnxDatapointSubtype_DPST_DeltaTimeMsec:
+        return "DPST_DeltaTimeMsec"
+    case KnxDatapointSubtype_DPST_DeltaTime10Msec:
+        return "DPST_DeltaTime10Msec"
+    case KnxDatapointSubtype_DPST_DeltaTime100Msec:
+        return "DPST_DeltaTime100Msec"
+    case KnxDatapointSubtype_DPST_DeltaTimeSec:
+        return "DPST_DeltaTimeSec"
+    case KnxDatapointSubtype_DPST_DeltaTimeMin:
+        return "DPST_DeltaTimeMin"
+    case KnxDatapointSubtype_DPST_DeltaTimeHrs:
+        return "DPST_DeltaTimeHrs"
+    case KnxDatapointSubtype_DPST_Step:
+        return "DPST_Step"
+    case KnxDatapointSubtype_DPST_Percent_V16:
+        return "DPST_Percent_V16"
+    case KnxDatapointSubtype_DPST_Rotation_Angle:
+        return "DPST_Rotation_Angle"
+    case KnxDatapointSubtype_DPST_Length_m:
+        return "DPST_Length_m"
+    case KnxDatapointSubtype_DPST_Value_Temp:
+        return "DPST_Value_Temp"
+    case KnxDatapointSubtype_DPST_Value_Tempd:
+        return "DPST_Value_Tempd"
+    case KnxDatapointSubtype_DPST_Value_Tempa:
+        return "DPST_Value_Tempa"
+    case KnxDatapointSubtype_DPST_Value_Lux:
+        return "DPST_Value_Lux"
+    case KnxDatapointSubtype_DPST_Value_Wsp:
+        return "DPST_Value_Wsp"
+    case KnxDatapointSubtype_DPST_Value_Pres:
+        return "DPST_Value_Pres"
+    case KnxDatapointSubtype_DPST_Value_Humidity:
+        return "DPST_Value_Humidity"
+    case KnxDatapointSubtype_DPST_UpDown:
+        return "DPST_UpDown"
+    case KnxDatapointSubtype_DPST_Value_AirQuality:
+        return "DPST_Value_AirQuality"
+    case KnxDatapointSubtype_DPST_Value_AirFlow:
+        return "DPST_Value_AirFlow"
+    case KnxDatapointSubtype_DPST_Value_Time1:
+        return "DPST_Value_Time1"
+    case KnxDatapointSubtype_DPST_Value_Time2:
+        return "DPST_Value_Time2"
+    case KnxDatapointSubtype_DPST_Value_Volt:
+        return "DPST_Value_Volt"
+    case KnxDatapointSubtype_DPST_Value_Curr:
+        return "DPST_Value_Curr"
+    case KnxDatapointSubtype_DPST_PowerDensity:
+        return "DPST_PowerDensity"
+    case KnxDatapointSubtype_DPST_KelvinPerPercent:
+        return "DPST_KelvinPerPercent"
+    case KnxDatapointSubtype_DPST_Power:
+        return "DPST_Power"
+    case KnxDatapointSubtype_DPST_Value_Volume_Flow:
+        return "DPST_Value_Volume_Flow"
+    case KnxDatapointSubtype_DPST_OpenClose:
+        return "DPST_OpenClose"
+    case KnxDatapointSubtype_DPST_Rain_Amount:
+        return "DPST_Rain_Amount"
+    case KnxDatapointSubtype_DPST_Value_Temp_F:
+        return "DPST_Value_Temp_F"
+    case KnxDatapointSubtype_DPST_Value_Wsp_kmh:
+        return "DPST_Value_Wsp_kmh"
+    case KnxDatapointSubtype_DPST_Value_Absolute_Humidity:
+        return "DPST_Value_Absolute_Humidity"
+    case KnxDatapointSubtype_DPST_Concentration_ygm3:
+        return "DPST_Concentration_ygm3"
+    case KnxDatapointSubtype_DPST_TimeOfDay:
+        return "DPST_TimeOfDay"
+    case KnxDatapointSubtype_DPST_Date:
+        return "DPST_Date"
+    case KnxDatapointSubtype_DPST_Value_4_Ucount:
+        return "DPST_Value_4_Ucount"
+    case KnxDatapointSubtype_DPST_LongTimePeriod_Sec:
+        return "DPST_LongTimePeriod_Sec"
+    case KnxDatapointSubtype_DPST_LongTimePeriod_Min:
+        return "DPST_LongTimePeriod_Min"
+    }
+    return ""
+}
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
index 7638b34..253e921 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
@@ -22,338 +22,71 @@ import (
     "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-type KnxDatapointType uint32
+type KnxDatapointType uint16
 
 type IKnxDatapointType interface {
     Number() uint16
     Name() string
-    DatapointMainType() KnxDatapointMainType
+    SizeInBits() uint8
     Serialize(io utils.WriteBuffer) error
 }
 
 const(
     KnxDatapointType_DPT_UNKNOWN KnxDatapointType = 0
-    KnxDatapointType_DPT_Switch KnxDatapointType = 1
-    KnxDatapointType_DPT_Bool KnxDatapointType = 2
-    KnxDatapointType_DPT_Enable KnxDatapointType = 3
-    KnxDatapointType_DPT_Ramp KnxDatapointType = 4
-    KnxDatapointType_DPT_Alarm KnxDatapointType = 5
-    KnxDatapointType_DPT_BinaryValue KnxDatapointType = 6
-    KnxDatapointType_DPT_Step KnxDatapointType = 7
-    KnxDatapointType_DPT_UpDown KnxDatapointType = 8
-    KnxDatapointType_DPT_OpenClose KnxDatapointType = 9
-    KnxDatapointType_DPT_Start KnxDatapointType = 10
-    KnxDatapointType_DPT_State KnxDatapointType = 11
-    KnxDatapointType_DPT_Invert KnxDatapointType = 12
-    KnxDatapointType_DPT_DimSendStyle KnxDatapointType = 13
-    KnxDatapointType_DPT_InputSource KnxDatapointType = 14
-    KnxDatapointType_DPT_Reset KnxDatapointType = 15
-    KnxDatapointType_DPT_Ack KnxDatapointType = 16
-    KnxDatapointType_DPT_Trigger KnxDatapointType = 17
-    KnxDatapointType_DPT_Occupancy KnxDatapointType = 18
-    KnxDatapointType_DPT_Window_Door KnxDatapointType = 19
-    KnxDatapointType_DPT_LogicalFunction KnxDatapointType = 20
-    KnxDatapointType_DPT_Scene_AB KnxDatapointType = 21
-    KnxDatapointType_DPT_ShutterBlinds_Mode KnxDatapointType = 22
-    KnxDatapointType_DPT_DayNight KnxDatapointType = 23
-    KnxDatapointType_DPT_Heat_Cool KnxDatapointType = 24
-    KnxDatapointType_DPT_Switch_Control KnxDatapointType = 25
-    KnxDatapointType_DPT_Bool_Control KnxDatapointType = 26
-    KnxDatapointType_DPT_Enable_Control KnxDatapointType = 27
-    KnxDatapointType_DPT_Ramp_Control KnxDatapointType = 28
-    KnxDatapointType_DPT_Alarm_Control KnxDatapointType = 29
-    KnxDatapointType_DPT_BinaryValue_Control KnxDatapointType = 30
-    KnxDatapointType_DPT_Step_Control KnxDatapointType = 31
-    KnxDatapointType_DPT_Direction1_Control KnxDatapointType = 32
-    KnxDatapointType_DPT_Direction2_Control KnxDatapointType = 33
-    KnxDatapointType_DPT_Start_Control KnxDatapointType = 34
-    KnxDatapointType_DPT_State_Control KnxDatapointType = 35
-    KnxDatapointType_DPT_Invert_Control KnxDatapointType = 36
-    KnxDatapointType_DPT_Control_Dimming KnxDatapointType = 37
-    KnxDatapointType_DPT_Control_Blinds KnxDatapointType = 38
-    KnxDatapointType_DPT_Char_ASCII KnxDatapointType = 39
-    KnxDatapointType_DPT_Char_8859_1 KnxDatapointType = 40
-    KnxDatapointType_DPT_Scaling KnxDatapointType = 41
-    KnxDatapointType_DPT_Angle KnxDatapointType = 42
-    KnxDatapointType_DPT_Percent_U8 KnxDatapointType = 43
-    KnxDatapointType_DPT_DecimalFactor KnxDatapointType = 44
-    KnxDatapointType_DPT_Tariff KnxDatapointType = 45
-    KnxDatapointType_DPT_Value_1_Ucount KnxDatapointType = 46
-    KnxDatapointType_DPT_FanStage KnxDatapointType = 47
-    KnxDatapointType_DPT_Percent_V8 KnxDatapointType = 48
-    KnxDatapointType_DPT_Value_1_Count KnxDatapointType = 49
-    KnxDatapointType_DPT_Status_Mode3 KnxDatapointType = 50
-    KnxDatapointType_DPT_Value_2_Ucount KnxDatapointType = 51
-    KnxDatapointType_DPT_TimePeriodMsec KnxDatapointType = 52
-    KnxDatapointType_DPT_TimePeriod10Msec KnxDatapointType = 53
-    KnxDatapointType_DPT_TimePeriod100Msec KnxDatapointType = 54
-    KnxDatapointType_DPT_TimePeriodSec KnxDatapointType = 55
-    KnxDatapointType_DPT_TimePeriodMin KnxDatapointType = 56
-    KnxDatapointType_DPT_TimePeriodHrs KnxDatapointType = 57
-    KnxDatapointType_DPT_PropDataType KnxDatapointType = 58
-    KnxDatapointType_DPT_Length_mm KnxDatapointType = 59
-    KnxDatapointType_DPT_UElCurrentmA KnxDatapointType = 60
-    KnxDatapointType_DPT_Brightness KnxDatapointType = 61
-    KnxDatapointType_DPT_Absolute_Colour_Temperature KnxDatapointType = 62
-    KnxDatapointType_DPT_Value_2_Count KnxDatapointType = 63
-    KnxDatapointType_DPT_DeltaTimeMsec KnxDatapointType = 64
-    KnxDatapointType_DPT_DeltaTime10Msec KnxDatapointType = 65
-    KnxDatapointType_DPT_DeltaTime100Msec KnxDatapointType = 66
-    KnxDatapointType_DPT_DeltaTimeSec KnxDatapointType = 67
-    KnxDatapointType_DPT_DeltaTimeMin KnxDatapointType = 68
-    KnxDatapointType_DPT_DeltaTimeHrs KnxDatapointType = 69
-    KnxDatapointType_DPT_Percent_V16 KnxDatapointType = 70
-    KnxDatapointType_DPT_Rotation_Angle KnxDatapointType = 71
-    KnxDatapointType_DPT_Length_m KnxDatapointType = 72
-    KnxDatapointType_DPT_Value_Temp KnxDatapointType = 73
-    KnxDatapointType_DPT_Value_Tempd KnxDatapointType = 74
-    KnxDatapointType_DPT_Value_Tempa KnxDatapointType = 75
-    KnxDatapointType_DPT_Value_Lux KnxDatapointType = 76
-    KnxDatapointType_DPT_Value_Wsp KnxDatapointType = 77
-    KnxDatapointType_DPT_Value_Pres KnxDatapointType = 78
-    KnxDatapointType_DPT_Value_Humidity KnxDatapointType = 79
-    KnxDatapointType_DPT_Value_AirQuality KnxDatapointType = 80
-    KnxDatapointType_DPT_Value_AirFlow KnxDatapointType = 81
-    KnxDatapointType_DPT_Value_Time1 KnxDatapointType = 82
-    KnxDatapointType_DPT_Value_Time2 KnxDatapointType = 83
-    KnxDatapointType_DPT_Value_Volt KnxDatapointType = 84
-    KnxDatapointType_DPT_Value_Curr KnxDatapointType = 85
-    KnxDatapointType_DPT_PowerDensity KnxDatapointType = 86
-    KnxDatapointType_DPT_KelvinPerPercent KnxDatapointType = 87
-    KnxDatapointType_DPT_Power KnxDatapointType = 88
-    KnxDatapointType_DPT_Value_Volume_Flow KnxDatapointType = 89
-    KnxDatapointType_DPT_Rain_Amount KnxDatapointType = 90
-    KnxDatapointType_DPT_Value_Temp_F KnxDatapointType = 91
-    KnxDatapointType_DPT_Value_Wsp_kmh KnxDatapointType = 92
-    KnxDatapointType_DPT_Value_Absolute_Humidity KnxDatapointType = 93
-    KnxDatapointType_DPT_Concentration_ygm3 KnxDatapointType = 94
-    KnxDatapointType_DPT_TimeOfDay KnxDatapointType = 95
-    KnxDatapointType_DPT_Date KnxDatapointType = 96
-    KnxDatapointType_DPT_Value_4_Ucount KnxDatapointType = 97
-    KnxDatapointType_DPT_LongTimePeriod_Sec KnxDatapointType = 98
-    KnxDatapointType_DPT_LongTimePeriod_Min KnxDatapointType = 99
-    KnxDatapointType_DPT_LongTimePeriod_Hrs KnxDatapointType = 100
-    KnxDatapointType_DPT_VolumeLiquid_Litre KnxDatapointType = 101
-    KnxDatapointType_DPT_Volume_m_3 KnxDatapointType = 102
-    KnxDatapointType_DPT_Value_4_Count KnxDatapointType = 103
-    KnxDatapointType_DPT_FlowRate_m3h KnxDatapointType = 104
-    KnxDatapointType_DPT_ActiveEnergy KnxDatapointType = 105
-    KnxDatapointType_DPT_ApparantEnergy KnxDatapointType = 106
-    KnxDatapointType_DPT_ReactiveEnergy KnxDatapointType = 107
-    KnxDatapointType_DPT_ActiveEnergy_kWh KnxDatapointType = 108
-    KnxDatapointType_DPT_ApparantEnergy_kVAh KnxDatapointType = 109
-    KnxDatapointType_DPT_ReactiveEnergy_kVARh KnxDatapointType = 110
-    KnxDatapointType_DPT_ActiveEnergy_MWh KnxDatapointType = 111
-    KnxDatapointType_DPT_LongDeltaTimeSec KnxDatapointType = 112
-    KnxDatapointType_DPT_DeltaVolumeLiquid_Litre KnxDatapointType = 113
-    KnxDatapointType_DPT_DeltaVolume_m_3 KnxDatapointType = 114
-    KnxDatapointType_DPT_Value_Acceleration KnxDatapointType = 115
-    KnxDatapointType_DPT_Value_Acceleration_Angular KnxDatapointType = 116
-    KnxDatapointType_DPT_Value_Activation_Energy KnxDatapointType = 117
-    KnxDatapointType_DPT_Value_Activity KnxDatapointType = 118
-    KnxDatapointType_DPT_Value_Mol KnxDatapointType = 119
-    KnxDatapointType_DPT_Value_Amplitude KnxDatapointType = 120
-    KnxDatapointType_DPT_Value_AngleRad KnxDatapointType = 121
-    KnxDatapointType_DPT_Value_AngleDeg KnxDatapointType = 122
-    KnxDatapointType_DPT_Value_Angular_Momentum KnxDatapointType = 123
-    KnxDatapointType_DPT_Value_Angular_Velocity KnxDatapointType = 124
-    KnxDatapointType_DPT_Value_Area KnxDatapointType = 125
-    KnxDatapointType_DPT_Value_Capacitance KnxDatapointType = 126
-    KnxDatapointType_DPT_Value_Charge_DensitySurface KnxDatapointType = 127
-    KnxDatapointType_DPT_Value_Charge_DensityVolume KnxDatapointType = 128
-    KnxDatapointType_DPT_Value_Compressibility KnxDatapointType = 129
-    KnxDatapointType_DPT_Value_Conductance KnxDatapointType = 130
-    KnxDatapointType_DPT_Value_Electrical_Conductivity KnxDatapointType = 131
-    KnxDatapointType_DPT_Value_Density KnxDatapointType = 132
-    KnxDatapointType_DPT_Value_Electric_Charge KnxDatapointType = 133
-    KnxDatapointType_DPT_Value_Electric_Current KnxDatapointType = 134
-    KnxDatapointType_DPT_Value_Electric_CurrentDensity KnxDatapointType = 135
-    KnxDatapointType_DPT_Value_Electric_DipoleMoment KnxDatapointType = 136
-    KnxDatapointType_DPT_Value_Electric_Displacement KnxDatapointType = 137
-    KnxDatapointType_DPT_Value_Electric_FieldStrength KnxDatapointType = 138
-    KnxDatapointType_DPT_Value_Electric_Flux KnxDatapointType = 139
-    KnxDatapointType_DPT_Value_Electric_FluxDensity KnxDatapointType = 140
-    KnxDatapointType_DPT_Value_Electric_Polarization KnxDatapointType = 141
-    KnxDatapointType_DPT_Value_Electric_Potential KnxDatapointType = 142
-    KnxDatapointType_DPT_Value_Electric_PotentialDifference KnxDatapointType = 143
-    KnxDatapointType_DPT_Value_ElectromagneticMoment KnxDatapointType = 144
-    KnxDatapointType_DPT_Value_Electromotive_Force KnxDatapointType = 145
-    KnxDatapointType_DPT_Value_Energy KnxDatapointType = 146
-    KnxDatapointType_DPT_Value_Force KnxDatapointType = 147
-    KnxDatapointType_DPT_Value_Frequency KnxDatapointType = 148
-    KnxDatapointType_DPT_Value_Angular_Frequency KnxDatapointType = 149
-    KnxDatapointType_DPT_Value_Heat_Capacity KnxDatapointType = 150
-    KnxDatapointType_DPT_Value_Heat_FlowRate KnxDatapointType = 151
-    KnxDatapointType_DPT_Value_Heat_Quantity KnxDatapointType = 152
-    KnxDatapointType_DPT_Value_Impedance KnxDatapointType = 153
-    KnxDatapointType_DPT_Value_Length KnxDatapointType = 154
-    KnxDatapointType_DPT_Value_Light_Quantity KnxDatapointType = 155
-    KnxDatapointType_DPT_Value_Luminance KnxDatapointType = 156
-    KnxDatapointType_DPT_Value_Luminous_Flux KnxDatapointType = 157
-    KnxDatapointType_DPT_Value_Luminous_Intensity KnxDatapointType = 158
-    KnxDatapointType_DPT_Value_Magnetic_FieldStrength KnxDatapointType = 159
-    KnxDatapointType_DPT_Value_Magnetic_Flux KnxDatapointType = 160
-    KnxDatapointType_DPT_Value_Magnetic_FluxDensity KnxDatapointType = 161
-    KnxDatapointType_DPT_Value_Magnetic_Moment KnxDatapointType = 162
-    KnxDatapointType_DPT_Value_Magnetic_Polarization KnxDatapointType = 163
-    KnxDatapointType_DPT_Value_Magnetization KnxDatapointType = 164
-    KnxDatapointType_DPT_Value_MagnetomotiveForce KnxDatapointType = 165
-    KnxDatapointType_DPT_Value_Mass KnxDatapointType = 166
-    KnxDatapointType_DPT_Value_MassFlux KnxDatapointType = 167
-    KnxDatapointType_DPT_Value_Momentum KnxDatapointType = 168
-    KnxDatapointType_DPT_Value_Phase_AngleRad KnxDatapointType = 169
-    KnxDatapointType_DPT_Value_Phase_AngleDeg KnxDatapointType = 170
-    KnxDatapointType_DPT_Value_Power KnxDatapointType = 171
-    KnxDatapointType_DPT_Value_Power_Factor KnxDatapointType = 172
-    KnxDatapointType_DPT_Value_Pressure KnxDatapointType = 173
-    KnxDatapointType_DPT_Value_Reactance KnxDatapointType = 174
-    KnxDatapointType_DPT_Value_Resistance KnxDatapointType = 175
-    KnxDatapointType_DPT_Value_Resistivity KnxDatapointType = 176
-    KnxDatapointType_DPT_Value_SelfInductance KnxDatapointType = 177
-    KnxDatapointType_DPT_Value_SolidAngle KnxDatapointType = 178
-    KnxDatapointType_DPT_Value_Sound_Intensity KnxDatapointType = 179
-    KnxDatapointType_DPT_Value_Speed KnxDatapointType = 180
-    KnxDatapointType_DPT_Value_Stress KnxDatapointType = 181
-    KnxDatapointType_DPT_Value_Surface_Tension KnxDatapointType = 182
-    KnxDatapointType_DPT_Value_Common_Temperature KnxDatapointType = 183
-    KnxDatapointType_DPT_Value_Absolute_Temperature KnxDatapointType = 184
-    KnxDatapointType_DPT_Value_TemperatureDifference KnxDatapointType = 185
-    KnxDatapointType_DPT_Value_Thermal_Capacity KnxDatapointType = 186
-    KnxDatapointType_DPT_Value_Thermal_Conductivity KnxDatapointType = 187
-    KnxDatapointType_DPT_Value_ThermoelectricPower KnxDatapointType = 188
-    KnxDatapointType_DPT_Value_Time KnxDatapointType = 189
-    KnxDatapointType_DPT_Value_Torque KnxDatapointType = 190
-    KnxDatapointType_DPT_Value_Volume KnxDatapointType = 191
-    KnxDatapointType_DPT_Value_Volume_Flux KnxDatapointType = 192
-    KnxDatapointType_DPT_Value_Weight KnxDatapointType = 193
-    KnxDatapointType_DPT_Value_Work KnxDatapointType = 194
-    KnxDatapointType_DPT_Volume_Flux_Meter KnxDatapointType = 195
-    KnxDatapointType_DPT_Volume_Flux_ls KnxDatapointType = 196
-    KnxDatapointType_DPT_Access_Data KnxDatapointType = 197
-    KnxDatapointType_DPT_String_ASCII KnxDatapointType = 198
-    KnxDatapointType_DPT_String_8859_1 KnxDatapointType = 199
-    KnxDatapointType_DPT_SceneNumber KnxDatapointType = 200
-    KnxDatapointType_DPT_SceneControl KnxDatapointType = 201
-    KnxDatapointType_DPT_DateTime KnxDatapointType = 202
-    KnxDatapointType_DPT_SCLOMode KnxDatapointType = 203
-    KnxDatapointType_DPT_BuildingMode KnxDatapointType = 204
-    KnxDatapointType_DPT_OccMode KnxDatapointType = 205
-    KnxDatapointType_DPT_Priority KnxDatapointType = 206
-    KnxDatapointType_DPT_LightApplicationMode KnxDatapointType = 207
-    KnxDatapointType_DPT_ApplicationArea KnxDatapointType = 208
-    KnxDatapointType_DPT_AlarmClassType KnxDatapointType = 209
-    KnxDatapointType_DPT_PSUMode KnxDatapointType = 210
-    KnxDatapointType_DPT_ErrorClass_System KnxDatapointType = 211
-    KnxDatapointType_DPT_ErrorClass_HVAC KnxDatapointType = 212
-    KnxDatapointType_DPT_Time_Delay KnxDatapointType = 213
-    KnxDatapointType_DPT_Beaufort_Wind_Force_Scale KnxDatapointType = 214
-    KnxDatapointType_DPT_SensorSelect KnxDatapointType = 215
-    KnxDatapointType_DPT_ActuatorConnectType KnxDatapointType = 216
-    KnxDatapointType_DPT_Cloud_Cover KnxDatapointType = 217
-    KnxDatapointType_DPT_PowerReturnMode KnxDatapointType = 218
-    KnxDatapointType_DPT_FuelType KnxDatapointType = 219
-    KnxDatapointType_DPT_BurnerType KnxDatapointType = 220
-    KnxDatapointType_DPT_HVACMode KnxDatapointType = 221
-    KnxDatapointType_DPT_DHWMode KnxDatapointType = 222
-    KnxDatapointType_DPT_LoadPriority KnxDatapointType = 223
-    KnxDatapointType_DPT_HVACContrMode KnxDatapointType = 224
-    KnxDatapointType_DPT_HVACEmergMode KnxDatapointType = 225
-    KnxDatapointType_DPT_ChangeoverMode KnxDatapointType = 226
-    KnxDatapointType_DPT_ValveMode KnxDatapointType = 227
-    KnxDatapointType_DPT_DamperMode KnxDatapointType = 228
-    KnxDatapointType_DPT_HeaterMode KnxDatapointType = 229
-    KnxDatapointType_DPT_FanMode KnxDatapointType = 230
-    KnxDatapointType_DPT_MasterSlaveMode KnxDatapointType = 231
-    KnxDatapointType_DPT_StatusRoomSetp KnxDatapointType = 232
-    KnxDatapointType_DPT_Metering_DeviceType KnxDatapointType = 233
-    KnxDatapointType_DPT_HumDehumMode KnxDatapointType = 234
-    KnxDatapointType_DPT_EnableHCStage KnxDatapointType = 235
-    KnxDatapointType_DPT_ADAType KnxDatapointType = 236
-    KnxDatapointType_DPT_BackupMode KnxDatapointType = 237
-    KnxDatapointType_DPT_StartSynchronization KnxDatapointType = 238
-    KnxDatapointType_DPT_Behaviour_Lock_Unlock KnxDatapointType = 239
-    KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down KnxDatapointType = 240
-    KnxDatapointType_DPT_DALI_Fade_Time KnxDatapointType = 241
-    KnxDatapointType_DPT_BlinkingMode KnxDatapointType = 242
-    KnxDatapointType_DPT_LightControlMode KnxDatapointType = 243
-    KnxDatapointType_DPT_SwitchPBModel KnxDatapointType = 244
-    KnxDatapointType_DPT_PBAction KnxDatapointType = 245
-    KnxDatapointType_DPT_DimmPBModel KnxDatapointType = 246
-    KnxDatapointType_DPT_SwitchOnMode KnxDatapointType = 247
-    KnxDatapointType_DPT_LoadTypeSet KnxDatapointType = 248
-    KnxDatapointType_DPT_LoadTypeDetected KnxDatapointType = 249
-    KnxDatapointType_DPT_Converter_Test_Control KnxDatapointType = 250
-    KnxDatapointType_DPT_SABExcept_Behaviour KnxDatapointType = 251
-    KnxDatapointType_DPT_SABBehaviour_Lock_Unlock KnxDatapointType = 252
-    KnxDatapointType_DPT_SSSBMode KnxDatapointType = 253
-    KnxDatapointType_DPT_BlindsControlMode KnxDatapointType = 254
-    KnxDatapointType_DPT_CommMode KnxDatapointType = 255
-    KnxDatapointType_DPT_AddInfoTypes KnxDatapointType = 256
-    KnxDatapointType_DPT_RF_ModeSelect KnxDatapointType = 257
-    KnxDatapointType_DPT_RF_FilterSelect KnxDatapointType = 258
-    KnxDatapointType_DPT_StatusGen KnxDatapointType = 259
-    KnxDatapointType_DPT_Device_Control KnxDatapointType = 260
-    KnxDatapointType_DPT_ForceSign KnxDatapointType = 261
-    KnxDatapointType_DPT_ForceSignCool KnxDatapointType = 262
-    KnxDatapointType_DPT_StatusRHC KnxDatapointType = 263
-    KnxDatapointType_DPT_StatusSDHWC KnxDatapointType = 264
-    KnxDatapointType_DPT_FuelTypeSet KnxDatapointType = 265
-    KnxDatapointType_DPT_StatusRCC KnxDatapointType = 266
-    KnxDatapointType_DPT_StatusAHU KnxDatapointType = 267
-    KnxDatapointType_DPT_CombinedStatus_RTSM KnxDatapointType = 268
-    KnxDatapointType_DPT_LightActuatorErrorInfo KnxDatapointType = 269
-    KnxDatapointType_DPT_RF_ModeInfo KnxDatapointType = 270
-    KnxDatapointType_DPT_RF_FilterInfo KnxDatapointType = 271
-    KnxDatapointType_DPT_Channel_Activation_8 KnxDatapointType = 272
-    KnxDatapointType_DPT_StatusDHWC KnxDatapointType = 273
-    KnxDatapointType_DPT_StatusRHCC KnxDatapointType = 274
-    KnxDatapointType_DPT_CombinedStatus_HVA KnxDatapointType = 275
-    KnxDatapointType_DPT_CombinedStatus_RTC KnxDatapointType = 276
-    KnxDatapointType_DPT_Media KnxDatapointType = 277
-    KnxDatapointType_DPT_Channel_Activation_16 KnxDatapointType = 278
-    KnxDatapointType_DPT_OnOffAction KnxDatapointType = 279
-    KnxDatapointType_DPT_Alarm_Reaction KnxDatapointType = 280
-    KnxDatapointType_DPT_UpDown_Action KnxDatapointType = 281
-    KnxDatapointType_DPT_HVAC_PB_Action KnxDatapointType = 282
-    KnxDatapointType_DPT_DoubleNibble KnxDatapointType = 283
-    KnxDatapointType_DPT_SceneInfo KnxDatapointType = 284
-    KnxDatapointType_DPT_CombinedInfoOnOff KnxDatapointType = 285
-    KnxDatapointType_DPT_ActiveEnergy_V64 KnxDatapointType = 286
-    KnxDatapointType_DPT_ApparantEnergy_V64 KnxDatapointType = 287
-    KnxDatapointType_DPT_ReactiveEnergy_V64 KnxDatapointType = 288
-    KnxDatapointType_DPT_Channel_Activation_24 KnxDatapointType = 289
-    KnxDatapointType_DPT_HVACModeNext KnxDatapointType = 290
-    KnxDatapointType_DPT_DHWModeNext KnxDatapointType = 291
-    KnxDatapointType_DPT_OccModeNext KnxDatapointType = 292
-    KnxDatapointType_DPT_BuildingModeNext KnxDatapointType = 293
-    KnxDatapointType_DPT_Version KnxDatapointType = 294
-    KnxDatapointType_DPT_AlarmInfo KnxDatapointType = 295
-    KnxDatapointType_DPT_TempRoomSetpSetF16_3 KnxDatapointType = 296
-    KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3 KnxDatapointType = 297
-    KnxDatapointType_DPT_Scaling_Speed KnxDatapointType = 298
-    KnxDatapointType_DPT_Scaling_Step_Time KnxDatapointType = 299
-    KnxDatapointType_DPT_MeteringValue KnxDatapointType = 300
-    KnxDatapointType_DPT_MBus_Address KnxDatapointType = 301
-    KnxDatapointType_DPT_Colour_RGB KnxDatapointType = 302
-    KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII KnxDatapointType = 303
-    KnxDatapointType_DPT_Tariff_ActiveEnergy KnxDatapointType = 304
-    KnxDatapointType_DPT_Prioritised_Mode_Control KnxDatapointType = 305
-    KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic KnxDatapointType = 306
-    KnxDatapointType_DPT_DALI_Diagnostics KnxDatapointType = 307
-    KnxDatapointType_DPT_CombinedPosition KnxDatapointType = 308
-    KnxDatapointType_DPT_StatusSAB KnxDatapointType = 309
-    KnxDatapointType_DPT_Colour_xyY KnxDatapointType = 310
-    KnxDatapointType_DPT_Converter_Status KnxDatapointType = 311
-    KnxDatapointType_DPT_Converter_Test_Result KnxDatapointType = 312
-    KnxDatapointType_DPT_Battery_Info KnxDatapointType = 313
-    KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition KnxDatapointType = 314
-    KnxDatapointType_DPT_Brightness_Colour_Temperature_Control KnxDatapointType = 315
-    KnxDatapointType_DPT_Colour_RGBW KnxDatapointType = 316
-    KnxDatapointType_DPT_Relative_Control_RGBW KnxDatapointType = 317
-    KnxDatapointType_DPT_Relative_Control_RGB KnxDatapointType = 318
-    KnxDatapointType_DPT_GeographicalLocation KnxDatapointType = 319
-    KnxDatapointType_DPT_TempRoomSetpSetF16_4 KnxDatapointType = 320
-    KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4 KnxDatapointType = 321
+    KnxDatapointType_DPT_1_BIT KnxDatapointType = 1
+    KnxDatapointType_DPT_1_BIT_CONTROLLED KnxDatapointType = 2
+    KnxDatapointType_DPT_3_BIT_CONTROLLED KnxDatapointType = 3
+    KnxDatapointType_DPT_CHARACTER KnxDatapointType = 4
+    KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE KnxDatapointType = 5
+    KnxDatapointType_DPT_8_BIT_SIGNED_VALUE KnxDatapointType = 6
+    KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE KnxDatapointType = 7
+    KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE KnxDatapointType = 8
+    KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE KnxDatapointType = 9
+    KnxDatapointType_DPT_TIME KnxDatapointType = 10
+    KnxDatapointType_DPT_DATE KnxDatapointType = 11
+    KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE KnxDatapointType = 12
+    KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE KnxDatapointType = 13
+    KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE KnxDatapointType = 14
+    KnxDatapointType_DPT_ENTRANCE_ACCESS KnxDatapointType = 15
+    KnxDatapointType_DPT_CHARACTER_STRING KnxDatapointType = 16
+    KnxDatapointType_DPT_SCENE_NUMBER KnxDatapointType = 17
+    KnxDatapointType_DPT_SCENE_CONTROL KnxDatapointType = 18
+    KnxDatapointType_DPT_DATE_TIME KnxDatapointType = 19
+    KnxDatapointType_DPT_1_BYTE KnxDatapointType = 20
+    KnxDatapointType_DPT_8_BIT_SET KnxDatapointType = 21
+    KnxDatapointType_DPT_16_BIT_SET KnxDatapointType = 22
+    KnxDatapointType_DPT_2_BIT_SET KnxDatapointType = 23
+    KnxDatapointType_DPT_2_NIBBLE_SET KnxDatapointType = 24
+    KnxDatapointType_DPT_8_BIT_SET_2 KnxDatapointType = 25
+    KnxDatapointType_DPT_32_BIT_SET KnxDatapointType = 26
+    KnxDatapointType_DPT_ELECTRICAL_ENERGY KnxDatapointType = 27
+    KnxDatapointType_DPT_24_TIMES_CHANNEL_ACTIVATION KnxDatapointType = 28
+    KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM KnxDatapointType = 29
+    KnxDatapointType_DPT_DATAPOINT_TYPE_VERSION KnxDatapointType = 30
+    KnxDatapointType_DPT_ALARM_INFO KnxDatapointType = 31
+    KnxDatapointType_DPT_3X_2_BYTE_FLOAT_VALUE KnxDatapointType = 32
+    KnxDatapointType_DPT_SCALING_SPEED KnxDatapointType = 33
+    KnxDatapointType_DPT_4_1_1_BYTE_COMBINED_INFORMATION KnxDatapointType = 34
+    KnxDatapointType_DPT_MBUS_ADDRESS KnxDatapointType = 35
+    KnxDatapointType_DPT_3_BYTE_COLOUR_RGB KnxDatapointType = 36
+    KnxDatapointType_DPT_LANGUAGE_CODE_ISO_639_1 KnxDatapointType = 37
+    KnxDatapointType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY KnxDatapointType = 38
+    KnxDatapointType_DPT_PRIORITISED_MODE_CONTROL KnxDatapointType = 39
+    KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT KnxDatapointType = 40
+    KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT KnxDatapointType = 41
+    KnxDatapointType_DPT_POSITIONS KnxDatapointType = 42
+    KnxDatapointType_DPT_STATUS_32_BIT KnxDatapointType = 43
+    KnxDatapointType_DPT_STATUS_48_BIT KnxDatapointType = 44
+    KnxDatapointType_DPT_CONVERTER_STATUS KnxDatapointType = 45
+    KnxDatapointType_DPT_CONVERTER_TEST_RESULT KnxDatapointType = 46
+    KnxDatapointType_DPT_BATTERY_INFORMATION KnxDatapointType = 47
+    KnxDatapointType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION KnxDatapointType = 48
+    KnxDatapointType_DPT_STATUS_24_BIT KnxDatapointType = 49
+    KnxDatapointType_DPT_COLOUR_RGBW KnxDatapointType = 50
+    KnxDatapointType_DPT_RELATIVE_CONTROL_RGBW KnxDatapointType = 51
+    KnxDatapointType_DPT_RELATIVE_CONTROL_RGB KnxDatapointType = 52
+    KnxDatapointType_DPT_F32F32 KnxDatapointType = 53
+    KnxDatapointType_DPT_F16F16F16F16 KnxDatapointType = 54
 )
 
 
@@ -368,3562 +101,625 @@ func (e KnxDatapointType) Number() uint16 {
         case 10: { /* '10' */
             return 10
         }
-        case 100: { /* '100' */
-            return 102
-        }
-        case 101: { /* '101' */
-            return 1200
-        }
-        case 102: { /* '102' */
-            return 1201
-        }
-        case 103: { /* '103' */
-            return 1
-        }
-        case 104: { /* '104' */
-            return 2
-        }
-        case 105: { /* '105' */
-            return 10
-        }
-        case 106: { /* '106' */
-            return 11
-        }
-        case 107: { /* '107' */
-            return 12
-        }
-        case 108: { /* '108' */
-            return 13
-        }
-        case 109: { /* '109' */
-            return 14
-        }
         case 11: { /* '11' */
             return 11
         }
-        case 110: { /* '110' */
-            return 15
-        }
-        case 111: { /* '111' */
-            return 16
-        }
-        case 112: { /* '112' */
-            return 100
-        }
-        case 113: { /* '113' */
-            return 1200
-        }
-        case 114: { /* '114' */
-            return 1201
-        }
-        case 115: { /* '115' */
-            return 0
-        }
-        case 116: { /* '116' */
-            return 1
-        }
-        case 117: { /* '117' */
-            return 2
-        }
-        case 118: { /* '118' */
-            return 3
-        }
-        case 119: { /* '119' */
-            return 4
-        }
         case 12: { /* '12' */
             return 12
         }
-        case 120: { /* '120' */
-            return 5
-        }
-        case 121: { /* '121' */
-            return 6
-        }
-        case 122: { /* '122' */
-            return 7
-        }
-        case 123: { /* '123' */
-            return 8
-        }
-        case 124: { /* '124' */
-            return 9
-        }
-        case 125: { /* '125' */
-            return 10
-        }
-        case 126: { /* '126' */
-            return 11
-        }
-        case 127: { /* '127' */
-            return 12
-        }
-        case 128: { /* '128' */
-            return 13
-        }
-        case 129: { /* '129' */
-            return 14
-        }
         case 13: { /* '13' */
             return 13
         }
-        case 130: { /* '130' */
-            return 15
-        }
-        case 131: { /* '131' */
-            return 16
-        }
-        case 132: { /* '132' */
-            return 17
-        }
-        case 133: { /* '133' */
-            return 18
-        }
-        case 134: { /* '134' */
-            return 19
-        }
-        case 135: { /* '135' */
-            return 20
-        }
-        case 136: { /* '136' */
-            return 21
-        }
-        case 137: { /* '137' */
-            return 22
-        }
-        case 138: { /* '138' */
-            return 23
-        }
-        case 139: { /* '139' */
-            return 24
-        }
         case 14: { /* '14' */
             return 14
         }
-        case 140: { /* '140' */
-            return 25
-        }
-        case 141: { /* '141' */
-            return 26
-        }
-        case 142: { /* '142' */
-            return 27
-        }
-        case 143: { /* '143' */
-            return 28
-        }
-        case 144: { /* '144' */
-            return 29
-        }
-        case 145: { /* '145' */
-            return 30
-        }
-        case 146: { /* '146' */
-            return 31
-        }
-        case 147: { /* '147' */
-            return 32
-        }
-        case 148: { /* '148' */
-            return 33
-        }
-        case 149: { /* '149' */
-            return 34
-        }
-        case 15: { /* '15' */
-            return 15
-        }
-        case 150: { /* '150' */
-            return 35
-        }
-        case 151: { /* '151' */
-            return 36
-        }
-        case 152: { /* '152' */
-            return 37
-        }
-        case 153: { /* '153' */
-            return 38
-        }
-        case 154: { /* '154' */
-            return 39
-        }
-        case 155: { /* '155' */
-            return 40
-        }
-        case 156: { /* '156' */
-            return 41
-        }
-        case 157: { /* '157' */
-            return 42
-        }
-        case 158: { /* '158' */
-            return 43
-        }
-        case 159: { /* '159' */
-            return 44
-        }
-        case 16: { /* '16' */
-            return 16
-        }
-        case 160: { /* '160' */
-            return 45
-        }
-        case 161: { /* '161' */
-            return 46
-        }
-        case 162: { /* '162' */
-            return 47
-        }
-        case 163: { /* '163' */
-            return 48
-        }
-        case 164: { /* '164' */
-            return 49
-        }
-        case 165: { /* '165' */
-            return 50
-        }
-        case 166: { /* '166' */
-            return 51
-        }
-        case 167: { /* '167' */
-            return 52
-        }
-        case 168: { /* '168' */
-            return 53
-        }
-        case 169: { /* '169' */
-            return 54
-        }
-        case 17: { /* '17' */
-            return 17
-        }
-        case 170: { /* '170' */
-            return 55
-        }
-        case 171: { /* '171' */
-            return 56
-        }
-        case 172: { /* '172' */
-            return 57
-        }
-        case 173: { /* '173' */
-            return 58
-        }
-        case 174: { /* '174' */
-            return 59
-        }
-        case 175: { /* '175' */
-            return 60
-        }
-        case 176: { /* '176' */
-            return 61
-        }
-        case 177: { /* '177' */
-            return 62
-        }
-        case 178: { /* '178' */
-            return 63
-        }
-        case 179: { /* '179' */
-            return 64
-        }
-        case 18: { /* '18' */
-            return 18
-        }
-        case 180: { /* '180' */
-            return 65
-        }
-        case 181: { /* '181' */
-            return 66
-        }
-        case 182: { /* '182' */
-            return 67
-        }
-        case 183: { /* '183' */
-            return 68
-        }
-        case 184: { /* '184' */
-            return 69
-        }
-        case 185: { /* '185' */
-            return 70
-        }
-        case 186: { /* '186' */
-            return 71
-        }
-        case 187: { /* '187' */
-            return 72
-        }
-        case 188: { /* '188' */
-            return 73
-        }
-        case 189: { /* '189' */
-            return 74
-        }
-        case 19: { /* '19' */
-            return 19
-        }
-        case 190: { /* '190' */
-            return 75
-        }
-        case 191: { /* '191' */
-            return 76
-        }
-        case 192: { /* '192' */
-            return 77
-        }
-        case 193: { /* '193' */
-            return 78
-        }
-        case 194: { /* '194' */
-            return 79
-        }
-        case 195: { /* '195' */
-            return 1200
-        }
-        case 196: { /* '196' */
-            return 1201
-        }
-        case 197: { /* '197' */
-            return 0
-        }
-        case 198: { /* '198' */
-            return 0
-        }
-        case 199: { /* '199' */
-            return 1
-        }
-        case 2: { /* '2' */
-            return 2
-        }
-        case 20: { /* '20' */
-            return 21
-        }
-        case 200: { /* '200' */
-            return 1
-        }
-        case 201: { /* '201' */
-            return 1
-        }
-        case 202: { /* '202' */
-            return 1
-        }
-        case 203: { /* '203' */
-            return 1
-        }
-        case 204: { /* '204' */
-            return 2
-        }
-        case 205: { /* '205' */
-            return 3
-        }
-        case 206: { /* '206' */
-            return 4
-        }
-        case 207: { /* '207' */
-            return 5
-        }
-        case 208: { /* '208' */
-            return 6
-        }
-        case 209: { /* '209' */
-            return 7
-        }
-        case 21: { /* '21' */
-            return 22
-        }
-        case 210: { /* '210' */
-            return 8
-        }
-        case 211: { /* '211' */
-            return 11
-        }
-        case 212: { /* '212' */
-            return 12
-        }
-        case 213: { /* '213' */
-            return 13
-        }
-        case 214: { /* '214' */
-            return 14
-        }
-        case 215: { /* '215' */
-            return 17
-        }
-        case 216: { /* '216' */
-            return 20
-        }
-        case 217: { /* '217' */
-            return 21
-        }
-        case 218: { /* '218' */
-            return 22
-        }
-        case 219: { /* '219' */
-            return 100
-        }
-        case 22: { /* '22' */
-            return 23
-        }
-        case 220: { /* '220' */
-            return 101
-        }
-        case 221: { /* '221' */
-            return 102
-        }
-        case 222: { /* '222' */
-            return 103
-        }
-        case 223: { /* '223' */
-            return 104
-        }
-        case 224: { /* '224' */
-            return 105
-        }
-        case 225: { /* '225' */
-            return 106
-        }
-        case 226: { /* '226' */
-            return 107
-        }
-        case 227: { /* '227' */
-            return 108
-        }
-        case 228: { /* '228' */
-            return 109
-        }
-        case 229: { /* '229' */
-            return 110
-        }
-        case 23: { /* '23' */
-            return 24
-        }
-        case 230: { /* '230' */
-            return 111
-        }
-        case 231: { /* '231' */
-            return 112
-        }
-        case 232: { /* '232' */
-            return 113
-        }
-        case 233: { /* '233' */
-            return 114
-        }
-        case 234: { /* '234' */
-            return 115
-        }
-        case 235: { /* '235' */
-            return 116
-        }
-        case 236: { /* '236' */
-            return 120
-        }
-        case 237: { /* '237' */
-            return 121
-        }
-        case 238: { /* '238' */
-            return 122
-        }
-        case 239: { /* '239' */
-            return 600
-        }
-        case 24: { /* '24' */
-            return 100
-        }
-        case 240: { /* '240' */
-            return 601
-        }
-        case 241: { /* '241' */
-            return 602
-        }
-        case 242: { /* '242' */
-            return 603
-        }
-        case 243: { /* '243' */
-            return 604
-        }
-        case 244: { /* '244' */
-            return 605
-        }
-        case 245: { /* '245' */
-            return 606
-        }
-        case 246: { /* '246' */
-            return 607
-        }
-        case 247: { /* '247' */
-            return 608
-        }
-        case 248: { /* '248' */
-            return 609
-        }
-        case 249: { /* '249' */
-            return 610
-        }
-        case 25: { /* '25' */
-            return 1
-        }
-        case 250: { /* '250' */
-            return 611
-        }
-        case 251: { /* '251' */
-            return 801
-        }
-        case 252: { /* '252' */
-            return 802
-        }
-        case 253: { /* '253' */
-            return 803
-        }
-        case 254: { /* '254' */
-            return 804
-        }
-        case 255: { /* '255' */
-            return 1000
-        }
-        case 256: { /* '256' */
-            return 1001
-        }
-        case 257: { /* '257' */
-            return 1002
-        }
-        case 258: { /* '258' */
-            return 1003
-        }
-        case 259: { /* '259' */
-            return 1
-        }
-        case 26: { /* '26' */
-            return 2
-        }
-        case 260: { /* '260' */
-            return 2
-        }
-        case 261: { /* '261' */
-            return 100
-        }
-        case 262: { /* '262' */
-            return 101
-        }
-        case 263: { /* '263' */
-            return 102
-        }
-        case 264: { /* '264' */
-            return 103
-        }
-        case 265: { /* '265' */
-            return 104
-        }
-        case 266: { /* '266' */
-            return 105
-        }
-        case 267: { /* '267' */
-            return 106
-        }
-        case 268: { /* '268' */
-            return 107
-        }
-        case 269: { /* '269' */
-            return 601
-        }
-        case 27: { /* '27' */
-            return 3
-        }
-        case 270: { /* '270' */
-            return 1000
-        }
-        case 271: { /* '271' */
-            return 1001
-        }
-        case 272: { /* '272' */
-            return 1010
-        }
-        case 273: { /* '273' */
-            return 100
-        }
-        case 274: { /* '274' */
-            return 101
-        }
-        case 275: { /* '275' */
-            return 102
-        }
-        case 276: { /* '276' */
-            return 103
-        }
-        case 277: { /* '277' */
-            return 1000
-        }
-        case 278: { /* '278' */
-            return 1010
-        }
-        case 279: { /* '279' */
-            return 1
-        }
-        case 28: { /* '28' */
-            return 4
-        }
-        case 280: { /* '280' */
-            return 2
-        }
-        case 281: { /* '281' */
-            return 3
-        }
-        case 282: { /* '282' */
-            return 102
-        }
-        case 283: { /* '283' */
-            return 1000
-        }
-        case 284: { /* '284' */
-            return 1
-        }
-        case 285: { /* '285' */
-            return 1
-        }
-        case 286: { /* '286' */
-            return 10
-        }
-        case 287: { /* '287' */
-            return 11
-        }
-        case 288: { /* '288' */
-            return 12
-        }
-        case 289: { /* '289' */
-            return 1010
-        }
-        case 29: { /* '29' */
-            return 5
-        }
-        case 290: { /* '290' */
-            return 100
-        }
-        case 291: { /* '291' */
-            return 102
-        }
-        case 292: { /* '292' */
-            return 104
-        }
-        case 293: { /* '293' */
-            return 105
-        }
-        case 294: { /* '294' */
-            return 1
-        }
-        case 295: { /* '295' */
-            return 1
-        }
-        case 296: { /* '296' */
-            return 100
-        }
-        case 297: { /* '297' */
-            return 101
-        }
-        case 298: { /* '298' */
-            return 1
-        }
-        case 299: { /* '299' */
-            return 2
-        }
-        case 3: { /* '3' */
-            return 3
-        }
-        case 30: { /* '30' */
-            return 6
-        }
-        case 300: { /* '300' */
-            return 1
-        }
-        case 301: { /* '301' */
-            return 1000
-        }
-        case 302: { /* '302' */
-            return 600
-        }
-        case 303: { /* '303' */
-            return 1
-        }
-        case 304: { /* '304' */
-            return 1
-        }
-        case 305: { /* '305' */
-            return 1
-        }
-        case 306: { /* '306' */
-            return 600
-        }
-        case 307: { /* '307' */
-            return 600
-        }
-        case 308: { /* '308' */
-            return 800
-        }
-        case 309: { /* '309' */
-            return 800
-        }
-        case 31: { /* '31' */
-            return 7
-        }
-        case 310: { /* '310' */
-            return 600
-        }
-        case 311: { /* '311' */
-            return 600
-        }
-        case 312: { /* '312' */
-            return 600
-        }
-        case 313: { /* '313' */
-            return 600
-        }
-        case 314: { /* '314' */
-            return 600
-        }
-        case 315: { /* '315' */
-            return 600
-        }
-        case 316: { /* '316' */
-            return 600
-        }
-        case 317: { /* '317' */
-            return 600
-        }
-        case 318: { /* '318' */
-            return 600
-        }
-        case 319: { /* '319' */
-            return 1
-        }
-        case 32: { /* '32' */
-            return 8
-        }
-        case 320: { /* '320' */
-            return 100
-        }
-        case 321: { /* '321' */
-            return 101
-        }
-        case 33: { /* '33' */
-            return 9
-        }
-        case 34: { /* '34' */
-            return 10
-        }
-        case 35: { /* '35' */
-            return 11
-        }
-        case 36: { /* '36' */
-            return 12
-        }
-        case 37: { /* '37' */
-            return 7
-        }
-        case 38: { /* '38' */
-            return 8
-        }
-        case 39: { /* '39' */
-            return 1
-        }
-        case 4: { /* '4' */
-            return 4
-        }
-        case 40: { /* '40' */
-            return 2
-        }
-        case 41: { /* '41' */
-            return 1
-        }
-        case 42: { /* '42' */
-            return 3
-        }
-        case 43: { /* '43' */
-            return 4
-        }
-        case 44: { /* '44' */
-            return 5
-        }
-        case 45: { /* '45' */
-            return 6
-        }
-        case 46: { /* '46' */
-            return 10
-        }
-        case 47: { /* '47' */
-            return 100
-        }
-        case 48: { /* '48' */
-            return 1
-        }
-        case 49: { /* '49' */
-            return 10
-        }
-        case 5: { /* '5' */
-            return 5
-        }
-        case 50: { /* '50' */
-            return 20
-        }
-        case 51: { /* '51' */
-            return 1
-        }
-        case 52: { /* '52' */
-            return 2
-        }
-        case 53: { /* '53' */
-            return 3
-        }
-        case 54: { /* '54' */
-            return 4
-        }
-        case 55: { /* '55' */
-            return 5
-        }
-        case 56: { /* '56' */
-            return 6
-        }
-        case 57: { /* '57' */
-            return 7
-        }
-        case 58: { /* '58' */
-            return 10
-        }
-        case 59: { /* '59' */
-            return 11
-        }
-        case 6: { /* '6' */
-            return 6
-        }
-        case 60: { /* '60' */
-            return 12
-        }
-        case 61: { /* '61' */
-            return 13
-        }
-        case 62: { /* '62' */
-            return 600
-        }
-        case 63: { /* '63' */
-            return 1
-        }
-        case 64: { /* '64' */
-            return 2
-        }
-        case 65: { /* '65' */
-            return 3
-        }
-        case 66: { /* '66' */
-            return 4
-        }
-        case 67: { /* '67' */
-            return 5
-        }
-        case 68: { /* '68' */
-            return 6
-        }
-        case 69: { /* '69' */
-            return 7
-        }
-        case 7: { /* '7' */
-            return 7
-        }
-        case 70: { /* '70' */
-            return 10
-        }
-        case 71: { /* '71' */
-            return 11
-        }
-        case 72: { /* '72' */
-            return 12
-        }
-        case 73: { /* '73' */
-            return 1
-        }
-        case 74: { /* '74' */
-            return 2
-        }
-        case 75: { /* '75' */
-            return 3
-        }
-        case 76: { /* '76' */
-            return 4
-        }
-        case 77: { /* '77' */
-            return 5
-        }
-        case 78: { /* '78' */
-            return 6
-        }
-        case 79: { /* '79' */
-            return 7
-        }
-        case 8: { /* '8' */
-            return 8
-        }
-        case 80: { /* '80' */
-            return 8
-        }
-        case 81: { /* '81' */
-            return 9
-        }
-        case 82: { /* '82' */
-            return 10
-        }
-        case 83: { /* '83' */
-            return 11
-        }
-        case 84: { /* '84' */
-            return 20
-        }
-        case 85: { /* '85' */
-            return 21
-        }
-        case 86: { /* '86' */
-            return 22
-        }
-        case 87: { /* '87' */
-            return 23
-        }
-        case 88: { /* '88' */
-            return 24
-        }
-        case 89: { /* '89' */
-            return 25
-        }
-        case 9: { /* '9' */
-            return 9
-        }
-        case 90: { /* '90' */
-            return 26
-        }
-        case 91: { /* '91' */
-            return 27
-        }
-        case 92: { /* '92' */
-            return 28
-        }
-        case 93: { /* '93' */
-            return 29
-        }
-        case 94: { /* '94' */
-            return 30
-        }
-        case 95: { /* '95' */
-            return 1
-        }
-        case 96: { /* '96' */
-            return 1
-        }
-        case 97: { /* '97' */
-            return 1
-        }
-        case 98: { /* '98' */
-            return 100
-        }
-        case 99: { /* '99' */
-            return 101
-        }
-        default: {
-            return 0
-        }
-    }
-}
-
-func (e KnxDatapointType) Name() string {
-    switch e  {
-        case 0: { /* '0' */
-            return "Unknown Datapoint Subtype"
-        }
-        case 1: { /* '1' */
-            return "switch"
-        }
-        case 10: { /* '10' */
-            return "start/stop"
-        }
-        case 100: { /* '100' */
-            return "counter timehrs (h)"
-        }
-        case 101: { /* '101' */
-            return "volume liquid (l)"
-        }
-        case 102: { /* '102' */
-            return "volume (m³)"
-        }
-        case 103: { /* '103' */
-            return "counter pulses (signed)"
-        }
-        case 104: { /* '104' */
-            return "flow rate (m³/h)"
-        }
-        case 105: { /* '105' */
-            return "active energy (Wh)"
-        }
-        case 106: { /* '106' */
-            return "apparant energy (VAh)"
-        }
-        case 107: { /* '107' */
-            return "reactive energy (VARh)"
-        }
-        case 108: { /* '108' */
-            return "active energy (kWh)"
-        }
-        case 109: { /* '109' */
-            return "apparant energy (kVAh)"
-        }
-        case 11: { /* '11' */
-            return "state"
-        }
-        case 110: { /* '110' */
-            return "reactive energy (kVARh)"
-        }
-        case 111: { /* '111' */
-            return "active energy (MWh)"
-        }
-        case 112: { /* '112' */
-            return "time lag (s)"
-        }
-        case 113: { /* '113' */
-            return "delta volume liquid (l)"
-        }
-        case 114: { /* '114' */
-            return "delta volume (m³)"
-        }
-        case 115: { /* '115' */
-            return "acceleration (m/s²)"
-        }
-        case 116: { /* '116' */
-            return "angular acceleration (rad/s²)"
-        }
-        case 117: { /* '117' */
-            return "activation energy (J/mol)"
-        }
-        case 118: { /* '118' */
-            return "radioactive activity (1/s)"
-        }
-        case 119: { /* '119' */
-            return "amount of substance (mol)"
-        }
-        case 12: { /* '12' */
-            return "invert"
-        }
-        case 120: { /* '120' */
-            return "amplitude"
-        }
-        case 121: { /* '121' */
-            return "angle (radiant)"
-        }
-        case 122: { /* '122' */
-            return "angle (degree)"
-        }
-        case 123: { /* '123' */
-            return "angular momentum (Js)"
-        }
-        case 124: { /* '124' */
-            return "angular velocity (rad/s)"
-        }
-        case 125: { /* '125' */
-            return "area (m*m)"
-        }
-        case 126: { /* '126' */
-            return "capacitance (F)"
-        }
-        case 127: { /* '127' */
-            return "flux density (C/m²)"
-        }
-        case 128: { /* '128' */
-            return "charge density (C/m³)"
-        }
-        case 129: { /* '129' */
-            return "compressibility (m²/N)"
-        }
-        case 13: { /* '13' */
-            return "dim send style"
-        }
-        case 130: { /* '130' */
-            return "conductance (S)"
-        }
-        case 131: { /* '131' */
-            return "conductivity  (S/m)"
-        }
-        case 132: { /* '132' */
-            return "density (kg/m³)"
-        }
-        case 133: { /* '133' */
-            return "electric charge (C)"
-        }
-        case 134: { /* '134' */
-            return "electric current (A)"
-        }
-        case 135: { /* '135' */
-            return "electric current density (A/m²)"
-        }
-        case 136: { /* '136' */
-            return "electric dipole moment (Cm)"
-        }
-        case 137: { /* '137' */
-            return "electric displacement (C/m²)"
-        }
-        case 138: { /* '138' */
-            return "electric field strength (V/m)"
-        }
-        case 139: { /* '139' */
-            return "electric flux (C)"
-        }
-        case 14: { /* '14' */
-            return "input source"
-        }
-        case 140: { /* '140' */
-            return "electric flux density (C/m²)"
-        }
-        case 141: { /* '141' */
-            return "electric polarization (C/m²)"
-        }
-        case 142: { /* '142' */
-            return "electric potential (V)"
-        }
-        case 143: { /* '143' */
-            return "electric potential difference (V)"
-        }
-        case 144: { /* '144' */
-            return "electromagnetic moment (Am²)"
-        }
-        case 145: { /* '145' */
-            return "electromotive force (V)"
-        }
-        case 146: { /* '146' */
-            return "energy (J)"
-        }
-        case 147: { /* '147' */
-            return "force (N)"
-        }
-        case 148: { /* '148' */
-            return "frequency (Hz)"
-        }
-        case 149: { /* '149' */
-            return "angular frequency (rad/s)"
-        }
-        case 15: { /* '15' */
-            return "reset"
-        }
-        case 150: { /* '150' */
-            return "heat capacity (J/K)"
-        }
-        case 151: { /* '151' */
-            return "heat flow rate (W)"
-        }
-        case 152: { /* '152' */
-            return "heat quantity"
-        }
-        case 153: { /* '153' */
-            return "impedance (Ω)"
-        }
-        case 154: { /* '154' */
-            return "length (m)"
-        }
-        case 155: { /* '155' */
-            return "light quantity (J)"
-        }
-        case 156: { /* '156' */
-            return "luminance (cd/m²)"
-        }
-        case 157: { /* '157' */
-            return "luminous flux (lm)"
-        }
-        case 158: { /* '158' */
-            return "luminous intensity (cd)"
-        }
-        case 159: { /* '159' */
-            return "magnetic field strength (A/m)"
-        }
-        case 16: { /* '16' */
-            return "acknowledge"
-        }
-        case 160: { /* '160' */
-            return "magnetic flux (Wb)"
-        }
-        case 161: { /* '161' */
-            return "magnetic flux density (T)"
-        }
-        case 162: { /* '162' */
-            return "magnetic moment (Am²)"
-        }
-        case 163: { /* '163' */
-            return "magnetic polarization (T)"
-        }
-        case 164: { /* '164' */
-            return "magnetization (A/m)"
-        }
-        case 165: { /* '165' */
-            return "magnetomotive force (A)"
-        }
-        case 166: { /* '166' */
-            return "mass (kg)"
-        }
-        case 167: { /* '167' */
-            return "mass flux (kg/s)"
-        }
-        case 168: { /* '168' */
-            return "momentum (N/s)"
-        }
-        case 169: { /* '169' */
-            return "phase angle (rad)"
-        }
-        case 17: { /* '17' */
-            return "trigger"
-        }
-        case 170: { /* '170' */
-            return "phase angle (°)"
-        }
-        case 171: { /* '171' */
-            return "power (W)"
-        }
-        case 172: { /* '172' */
-            return "power factor (cos Φ)"
-        }
-        case 173: { /* '173' */
-            return "pressure (Pa)"
-        }
-        case 174: { /* '174' */
-            return "reactance (Ω)"
-        }
-        case 175: { /* '175' */
-            return "resistance (Ω)"
-        }
-        case 176: { /* '176' */
-            return "resistivity (Ωm)"
-        }
-        case 177: { /* '177' */
-            return "self inductance (H)"
-        }
-        case 178: { /* '178' */
-            return "solid angle (sr)"
-        }
-        case 179: { /* '179' */
-            return "sound intensity (W/m²)"
-        }
-        case 18: { /* '18' */
-            return "occupancy"
-        }
-        case 180: { /* '180' */
-            return "speed (m/s)"
-        }
-        case 181: { /* '181' */
-            return "stress (Pa)"
-        }
-        case 182: { /* '182' */
-            return "surface tension (N/m)"
-        }
-        case 183: { /* '183' */
-            return "temperature (°C)"
-        }
-        case 184: { /* '184' */
-            return "temperature absolute (K)"
-        }
-        case 185: { /* '185' */
-            return "temperature difference (K)"
-        }
-        case 186: { /* '186' */
-            return "thermal capacity (J/K)"
-        }
-        case 187: { /* '187' */
-            return "thermal conductivity (W/mK)"
-        }
-        case 188: { /* '188' */
-            return "thermoelectric power (V/K)"
-        }
-        case 189: { /* '189' */
-            return "time (s)"
-        }
-        case 19: { /* '19' */
-            return "window/door"
-        }
-        case 190: { /* '190' */
-            return "torque (Nm)"
-        }
-        case 191: { /* '191' */
-            return "volume (m³)"
-        }
-        case 192: { /* '192' */
-            return "volume flux (m³/s)"
-        }
-        case 193: { /* '193' */
-            return "weight (N)"
-        }
-        case 194: { /* '194' */
-            return "work (J)"
-        }
-        case 195: { /* '195' */
-            return "volume flux for meters (m³/h)"
-        }
-        case 196: { /* '196' */
-            return "volume flux for meters (1/ls)"
-        }
-        case 197: { /* '197' */
-            return "entrance access"
-        }
-        case 198: { /* '198' */
-            return "Character String (ASCII)"
-        }
-        case 199: { /* '199' */
-            return "Character String (ISO 8859-1)"
-        }
-        case 2: { /* '2' */
-            return "boolean"
-        }
-        case 20: { /* '20' */
-            return "logical function"
-        }
-        case 200: { /* '200' */
-            return "scene number"
-        }
-        case 201: { /* '201' */
-            return "scene control"
-        }
-        case 202: { /* '202' */
-            return "date time"
-        }
-        case 203: { /* '203' */
-            return "SCLO mode"
-        }
-        case 204: { /* '204' */
-            return "building mode"
-        }
-        case 205: { /* '205' */
-            return "occupied"
-        }
-        case 206: { /* '206' */
-            return "priority"
-        }
-        case 207: { /* '207' */
-            return "light application mode"
-        }
-        case 208: { /* '208' */
-            return "light application area"
-        }
-        case 209: { /* '209' */
-            return "alarm class"
-        }
-        case 21: { /* '21' */
-            return "scene"
-        }
-        case 210: { /* '210' */
-            return "PSU mode"
-        }
-        case 211: { /* '211' */
-            return "system error class"
-        }
-        case 212: { /* '212' */
-            return "HVAC error class"
-        }
-        case 213: { /* '213' */
-            return "time delay"
-        }
-        case 214: { /* '214' */
-            return "wind force scale (0..12)"
-        }
-        case 215: { /* '215' */
-            return "sensor mode"
-        }
-        case 216: { /* '216' */
-            return "actuator connect type"
-        }
-        case 217: { /* '217' */
-            return "cloud cover"
-        }
-        case 218: { /* '218' */
-            return "power return mode"
-        }
-        case 219: { /* '219' */
-            return "fuel type"
-        }
-        case 22: { /* '22' */
-            return "shutter/blinds mode"
-        }
-        case 220: { /* '220' */
-            return "burner type"
-        }
-        case 221: { /* '221' */
-            return "HVAC mode"
-        }
-        case 222: { /* '222' */
-            return "DHW mode"
-        }
-        case 223: { /* '223' */
-            return "load priority"
-        }
-        case 224: { /* '224' */
-            return "HVAC control mode"
-        }
-        case 225: { /* '225' */
-            return "HVAC emergency mode"
-        }
-        case 226: { /* '226' */
-            return "changeover mode"
-        }
-        case 227: { /* '227' */
-            return "valve mode"
-        }
-        case 228: { /* '228' */
-            return "damper mode"
-        }
-        case 229: { /* '229' */
-            return "heater mode"
-        }
-        case 23: { /* '23' */
-            return "day/night"
-        }
-        case 230: { /* '230' */
-            return "fan mode"
-        }
-        case 231: { /* '231' */
-            return "master/slave mode"
-        }
-        case 232: { /* '232' */
-            return "status room setpoint"
-        }
-        case 233: { /* '233' */
-            return "metering device type"
-        }
-        case 234: { /* '234' */
-            return "hum dehum mode"
-        }
-        case 235: { /* '235' */
-            return "enable H/C stage"
-        }
-        case 236: { /* '236' */
-            return "ADA type"
-        }
-        case 237: { /* '237' */
-            return "backup mode"
-        }
-        case 238: { /* '238' */
-            return "start syncronization type"
-        }
-        case 239: { /* '239' */
-            return "behavior lock/unlock"
-        }
-        case 24: { /* '24' */
-            return "cooling/heating"
-        }
-        case 240: { /* '240' */
-            return "behavior bus power up/down"
-        }
-        case 241: { /* '241' */
-            return "dali fade time"
-        }
-        case 242: { /* '242' */
-            return "blink mode"
-        }
-        case 243: { /* '243' */
-            return "light control mode"
-        }
-        case 244: { /* '244' */
-            return "PB switch mode"
-        }
-        case 245: { /* '245' */
-            return "PB action mode"
-        }
-        case 246: { /* '246' */
-            return "PB dimm mode"
-        }
-        case 247: { /* '247' */
-            return "switch on mode"
-        }
-        case 248: { /* '248' */
-            return "load type"
-        }
-        case 249: { /* '249' */
-            return "load type detection"
-        }
-        case 25: { /* '25' */
-            return "switch control"
-        }
-        case 250: { /* '250' */
-            return "converter test control"
-        }
-        case 251: { /* '251' */
-            return "SAB except behavior"
-        }
-        case 252: { /* '252' */
-            return "SAB behavior on lock/unlock"
-        }
-        case 253: { /* '253' */
-            return "SSSB mode"
-        }
-        case 254: { /* '254' */
-            return "blinds control mode"
-        }
-        case 255: { /* '255' */
-            return "communication mode"
-        }
-        case 256: { /* '256' */
-            return "additional information type"
-        }
-        case 257: { /* '257' */
-            return "RF mode selection"
-        }
-        case 258: { /* '258' */
-            return "RF filter mode selection"
-        }
-        case 259: { /* '259' */
-            return "general status"
-        }
-        case 26: { /* '26' */
-            return "boolean control"
-        }
-        case 260: { /* '260' */
-            return "device control"
-        }
-        case 261: { /* '261' */
-            return "forcing signal"
-        }
-        case 262: { /* '262' */
-            return "forcing signal cool"
-        }
-        case 263: { /* '263' */
-            return "room heating controller status"
-        }
-        case 264: { /* '264' */
-            return "solar DHW controller status"
-        }
-        case 265: { /* '265' */
-            return "fuel type set"
-        }
-        case 266: { /* '266' */
-            return "room cooling controller status"
-        }
-        case 267: { /* '267' */
-            return "ventilation controller status"
-        }
-        case 268: { /* '268' */
-            return "combined status RTSM"
-        }
-        case 269: { /* '269' */
-            return "lighting actuator error information"
-        }
-        case 27: { /* '27' */
-            return "enable control"
-        }
-        case 270: { /* '270' */
-            return "RF communication mode info"
-        }
-        case 271: { /* '271' */
-            return "cEMI server supported RF filtering modes"
-        }
-        case 272: { /* '272' */
-            return "channel activation for 8 channels"
-        }
-        case 273: { /* '273' */
-            return "DHW controller status"
-        }
-        case 274: { /* '274' */
-            return "RHCC status"
-        }
-        case 275: { /* '275' */
-            return "combined status HVA"
-        }
-        case 276: { /* '276' */
-            return "combined status RTC"
-        }
-        case 277: { /* '277' */
-            return "media"
-        }
-        case 278: { /* '278' */
-            return "channel activation for 16 channels"
-        }
-        case 279: { /* '279' */
-            return "on/off action"
-        }
-        case 28: { /* '28' */
-            return "ramp control"
-        }
-        case 280: { /* '280' */
-            return "alarm reaction"
-        }
-        case 281: { /* '281' */
-            return "up/down action"
-        }
-        case 282: { /* '282' */
-            return "HVAC push button action"
-        }
-        case 283: { /* '283' */
-            return "busy/nak repetitions"
-        }
-        case 284: { /* '284' */
-            return "scene information"
-        }
-        case 285: { /* '285' */
-            return "bit-combined info on/off"
-        }
-        case 286: { /* '286' */
-            return "active energy (Wh)"
-        }
-        case 287: { /* '287' */
-            return "apparant energy (VAh)"
-        }
-        case 288: { /* '288' */
-            return "reactive energy (VARh)"
-        }
-        case 289: { /* '289' */
-            return "activation state 0..23"
-        }
-        case 29: { /* '29' */
-            return "alarm control"
-        }
-        case 290: { /* '290' */
-            return "time delay & HVAC mode"
-        }
-        case 291: { /* '291' */
-            return "time delay & DHW mode"
-        }
-        case 292: { /* '292' */
-            return "time delay & occupancy mode"
-        }
-        case 293: { /* '293' */
-            return "time delay & building mode"
-        }
-        case 294: { /* '294' */
-            return "DPT version"
-        }
-        case 295: { /* '295' */
-            return "alarm info"
-        }
-        case 296: { /* '296' */
-            return "room temperature setpoint"
-        }
-        case 297: { /* '297' */
-            return "room temperature setpoint shift"
-        }
-        case 298: { /* '298' */
-            return "scaling speed"
-        }
-        case 299: { /* '299' */
-            return "scaling step time"
-        }
-        case 3: { /* '3' */
-            return "enable"
-        }
-        case 30: { /* '30' */
-            return "binary value control"
-        }
-        case 300: { /* '300' */
-            return "metering value (value,encoding,cmd)"
-        }
-        case 301: { /* '301' */
-            return "MBus address"
-        }
-        case 302: { /* '302' */
-            return "RGB value 3x(0..255)"
-        }
-        case 303: { /* '303' */
-            return "language code (ASCII)"
-        }
-        case 304: { /* '304' */
-            return "electrical energy with tariff"
-        }
-        case 305: { /* '305' */
-            return "priority control"
-        }
-        case 306: { /* '306' */
-            return "diagnostic value"
-        }
-        case 307: { /* '307' */
-            return "diagnostic value"
-        }
-        case 308: { /* '308' */
-            return "combined position"
-        }
-        case 309: { /* '309' */
-            return "status sunblind & shutter actuator"
-        }
-        case 31: { /* '31' */
-            return "step control"
-        }
-        case 310: { /* '310' */
-            return "colour xyY"
-        }
-        case 311: { /* '311' */
-            return "DALI converter status"
-        }
-        case 312: { /* '312' */
-            return "DALI converter test result"
-        }
-        case 313: { /* '313' */
-            return "Battery Information"
-        }
-        case 314: { /* '314' */
-            return "brightness colour temperature transition"
-        }
-        case 315: { /* '315' */
-            return "brightness colour temperature control"
-        }
-        case 316: { /* '316' */
-            return "RGBW value 4x(0..100%)"
-        }
-        case 317: { /* '317' */
-            return "RGBW relative control"
-        }
-        case 318: { /* '318' */
-            return "RGB relative control"
-        }
-        case 319: { /* '319' */
-            return "geographical location (longitude and latitude) expressed in degrees"
-        }
-        case 32: { /* '32' */
-            return "direction control 1"
-        }
-        case 320: { /* '320' */
-            return "Temperature setpoint setting for 4 HVAC Modes"
-        }
-        case 321: { /* '321' */
-            return "Temperature setpoint shift setting for 4 HVAC Modes"
-        }
-        case 33: { /* '33' */
-            return "direction control 2"
-        }
-        case 34: { /* '34' */
-            return "start control"
-        }
-        case 35: { /* '35' */
-            return "state control"
-        }
-        case 36: { /* '36' */
-            return "invert control"
-        }
-        case 37: { /* '37' */
-            return "dimming control"
-        }
-        case 38: { /* '38' */
-            return "blind control"
-        }
-        case 39: { /* '39' */
-            return "character (ASCII)"
-        }
-        case 4: { /* '4' */
-            return "ramp"
-        }
-        case 40: { /* '40' */
-            return "character (ISO 8859-1)"
-        }
-        case 41: { /* '41' */
-            return "percentage (0..100%)"
-        }
-        case 42: { /* '42' */
-            return "angle (degrees)"
-        }
-        case 43: { /* '43' */
-            return "percentage (0..255%)"
-        }
-        case 44: { /* '44' */
-            return "ratio (0..255)"
-        }
-        case 45: { /* '45' */
-            return "tariff (0..255)"
-        }
-        case 46: { /* '46' */
-            return "counter pulses (0..255)"
-        }
-        case 47: { /* '47' */
-            return "fan stage (0..255)"
-        }
-        case 48: { /* '48' */
-            return "percentage (-128..127%)"
-        }
-        case 49: { /* '49' */
-            return "counter pulses (-128..127)"
-        }
-        case 5: { /* '5' */
-            return "alarm"
-        }
-        case 50: { /* '50' */
-            return "status with mode"
-        }
-        case 51: { /* '51' */
-            return "pulses"
-        }
-        case 52: { /* '52' */
-            return "time (ms)"
-        }
-        case 53: { /* '53' */
-            return "time (10 ms)"
-        }
-        case 54: { /* '54' */
-            return "time (100 ms)"
-        }
-        case 55: { /* '55' */
-            return "time (s)"
-        }
-        case 56: { /* '56' */
-            return "time (min)"
-        }
-        case 57: { /* '57' */
-            return "time (h)"
-        }
-        case 58: { /* '58' */
-            return "property data type"
-        }
-        case 59: { /* '59' */
-            return "length (mm)"
-        }
-        case 6: { /* '6' */
-            return "binary value"
-        }
-        case 60: { /* '60' */
-            return "current (mA)"
-        }
-        case 61: { /* '61' */
-            return "brightness (lux)"
-        }
-        case 62: { /* '62' */
-            return "absolute colour temperature (K)"
-        }
-        case 63: { /* '63' */
-            return "pulses difference"
-        }
-        case 64: { /* '64' */
-            return "time lag (ms)"
-        }
-        case 65: { /* '65' */
-            return "time lag(10 ms)"
-        }
-        case 66: { /* '66' */
-            return "time lag (100 ms)"
-        }
-        case 67: { /* '67' */
-            return "time lag (s)"
-        }
-        case 68: { /* '68' */
-            return "time lag (min)"
-        }
-        case 69: { /* '69' */
-            return "time lag (h)"
-        }
-        case 7: { /* '7' */
-            return "step"
-        }
-        case 70: { /* '70' */
-            return "percentage difference (%)"
-        }
-        case 71: { /* '71' */
-            return "rotation angle (°)"
-        }
-        case 72: { /* '72' */
-            return "length (m)"
-        }
-        case 73: { /* '73' */
-            return "temperature (°C)"
-        }
-        case 74: { /* '74' */
-            return "temperature difference (K)"
-        }
-        case 75: { /* '75' */
-            return "kelvin/hour (K/h)"
-        }
-        case 76: { /* '76' */
-            return "lux (Lux)"
-        }
-        case 77: { /* '77' */
-            return "speed (m/s)"
-        }
-        case 78: { /* '78' */
-            return "pressure (Pa)"
-        }
-        case 79: { /* '79' */
-            return "humidity (%)"
-        }
-        case 8: { /* '8' */
-            return "up/down"
-        }
-        case 80: { /* '80' */
-            return "parts/million (ppm)"
-        }
-        case 81: { /* '81' */
-            return "air flow (m³/h)"
-        }
-        case 82: { /* '82' */
-            return "time (s)"
-        }
-        case 83: { /* '83' */
-            return "time (ms)"
-        }
-        case 84: { /* '84' */
-            return "voltage (mV)"
-        }
-        case 85: { /* '85' */
-            return "current (mA)"
-        }
-        case 86: { /* '86' */
-            return "power denisity (W/m²)"
-        }
-        case 87: { /* '87' */
-            return "kelvin/percent (K/%)"
-        }
-        case 88: { /* '88' */
-            return "power (kW)"
-        }
-        case 89: { /* '89' */
-            return "volume flow (l/h)"
-        }
-        case 9: { /* '9' */
-            return "open/close"
-        }
-        case 90: { /* '90' */
-            return "rain amount (l/m²)"
-        }
-        case 91: { /* '91' */
-            return "temperature (°F)"
-        }
-        case 92: { /* '92' */
-            return "wind speed (km/h)"
-        }
-        case 93: { /* '93' */
-            return "absolute humidity (g/m³)"
-        }
-        case 94: { /* '94' */
-            return "concentration (µg/m³)"
-        }
-        case 95: { /* '95' */
-            return "time of day"
-        }
-        case 96: { /* '96' */
-            return "date"
-        }
-        case 97: { /* '97' */
-            return "counter pulses (unsigned)"
-        }
-        case 98: { /* '98' */
-            return "counter timesec (s)"
-        }
-        case 99: { /* '99' */
-            return "counter timemin (min)"
-        }
-        default: {
-            return ""
-        }
-    }
-}
-
-func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
-    switch e  {
-        case 0: { /* '0' */
-            return KnxDatapointMainType_DPT_UNKNOWN
-        }
-        case 1: { /* '1' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 10: { /* '10' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 100: { /* '100' */
-            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
-        }
-        case 101: { /* '101' */
-            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
-        }
-        case 102: { /* '102' */
-            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
-        }
-        case 103: { /* '103' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 104: { /* '104' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 105: { /* '105' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 106: { /* '106' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 107: { /* '107' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 108: { /* '108' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 109: { /* '109' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 11: { /* '11' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 110: { /* '110' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 111: { /* '111' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 112: { /* '112' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 113: { /* '113' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 114: { /* '114' */
-            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
-        }
-        case 115: { /* '115' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 116: { /* '116' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 117: { /* '117' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 118: { /* '118' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 119: { /* '119' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 12: { /* '12' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 120: { /* '120' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 121: { /* '121' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 122: { /* '122' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 123: { /* '123' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 124: { /* '124' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 125: { /* '125' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 126: { /* '126' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 127: { /* '127' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 128: { /* '128' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 129: { /* '129' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 13: { /* '13' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 130: { /* '130' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 131: { /* '131' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 132: { /* '132' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 133: { /* '133' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 134: { /* '134' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 135: { /* '135' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 136: { /* '136' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 137: { /* '137' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 138: { /* '138' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 139: { /* '139' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 14: { /* '14' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 140: { /* '140' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 141: { /* '141' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 142: { /* '142' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 143: { /* '143' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 144: { /* '144' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 145: { /* '145' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 146: { /* '146' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 147: { /* '147' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 148: { /* '148' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 149: { /* '149' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 15: { /* '15' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 150: { /* '150' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 151: { /* '151' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 152: { /* '152' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 153: { /* '153' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 154: { /* '154' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 155: { /* '155' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 156: { /* '156' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 157: { /* '157' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 158: { /* '158' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 159: { /* '159' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 16: { /* '16' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 160: { /* '160' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 161: { /* '161' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 162: { /* '162' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 163: { /* '163' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 164: { /* '164' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 165: { /* '165' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 166: { /* '166' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 167: { /* '167' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 168: { /* '168' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 169: { /* '169' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 17: { /* '17' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 170: { /* '170' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 171: { /* '171' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 172: { /* '172' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 173: { /* '173' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 174: { /* '174' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 175: { /* '175' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 176: { /* '176' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 177: { /* '177' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 178: { /* '178' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 179: { /* '179' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 18: { /* '18' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 180: { /* '180' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 181: { /* '181' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 182: { /* '182' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 183: { /* '183' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 184: { /* '184' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 185: { /* '185' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 186: { /* '186' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 187: { /* '187' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 188: { /* '188' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 189: { /* '189' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 19: { /* '19' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 190: { /* '190' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 191: { /* '191' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 192: { /* '192' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 193: { /* '193' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 194: { /* '194' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 195: { /* '195' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 196: { /* '196' */
-            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
-        }
-        case 197: { /* '197' */
-            return KnxDatapointMainType_DPT_ENTRANCE_ACCESS
-        }
-        case 198: { /* '198' */
-            return KnxDatapointMainType_DPT_CHARACTER_STRING
-        }
-        case 199: { /* '199' */
-            return KnxDatapointMainType_DPT_CHARACTER_STRING
-        }
-        case 2: { /* '2' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 20: { /* '20' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 200: { /* '200' */
-            return KnxDatapointMainType_DPT_SCENE_NUMBER
-        }
-        case 201: { /* '201' */
-            return KnxDatapointMainType_DPT_SCENE_CONTROL
-        }
-        case 202: { /* '202' */
-            return KnxDatapointMainType_DPT_DATE_TIME
-        }
-        case 203: { /* '203' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 204: { /* '204' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 205: { /* '205' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 206: { /* '206' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 207: { /* '207' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 208: { /* '208' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 209: { /* '209' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 21: { /* '21' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 210: { /* '210' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 211: { /* '211' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 212: { /* '212' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 213: { /* '213' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 214: { /* '214' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 215: { /* '215' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 216: { /* '216' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 217: { /* '217' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 218: { /* '218' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 219: { /* '219' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 22: { /* '22' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 220: { /* '220' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 221: { /* '221' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 222: { /* '222' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 223: { /* '223' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 224: { /* '224' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 225: { /* '225' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 226: { /* '226' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 227: { /* '227' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 228: { /* '228' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 229: { /* '229' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 23: { /* '23' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 230: { /* '230' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 231: { /* '231' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 232: { /* '232' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 233: { /* '233' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 234: { /* '234' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 235: { /* '235' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 236: { /* '236' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 237: { /* '237' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 238: { /* '238' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 239: { /* '239' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 24: { /* '24' */
-            return KnxDatapointMainType_DPT_1_BIT
-        }
-        case 240: { /* '240' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 241: { /* '241' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 242: { /* '242' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 243: { /* '243' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 244: { /* '244' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 245: { /* '245' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 246: { /* '246' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 247: { /* '247' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 248: { /* '248' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 249: { /* '249' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 25: { /* '25' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
-        }
-        case 250: { /* '250' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 251: { /* '251' */
-            return KnxDatapointMainType_DPT_1_BYTE
-        }
-        case 252: { /* '252' */
-            return KnxDatapointMainType_DPT_1_BYTE
+        case 15: { /* '15' */
+            return 15
         }
-        case 253: { /* '253' */
-            return KnxDatapointMainType_DPT_1_BYTE
+        case 16: { /* '16' */
+            return 16
         }
-        case 254: { /* '254' */
-            return KnxDatapointMainType_DPT_1_BYTE
+        case 17: { /* '17' */
+            return 17
         }
-        case 255: { /* '255' */
-            return KnxDatapointMainType_DPT_1_BYTE
+        case 18: { /* '18' */
+            return 18
         }
-        case 256: { /* '256' */
-            return KnxDatapointMainType_DPT_1_BYTE
+        case 19: { /* '19' */
+            return 19
         }
-        case 257: { /* '257' */
-            return KnxDatapointMainType_DPT_1_BYTE
+        case 2: { /* '2' */
+            return 2
         }
-        case 258: { /* '258' */
-            return KnxDatapointMainType_DPT_1_BYTE
+        case 20: { /* '20' */
+            return 20
         }
-        case 259: { /* '259' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 21: { /* '21' */
+            return 21
         }
-        case 26: { /* '26' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+        case 22: { /* '22' */
+            return 22
         }
-        case 260: { /* '260' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 23: { /* '23' */
+            return 23
         }
-        case 261: { /* '261' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 24: { /* '24' */
+            return 25
         }
-        case 262: { /* '262' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 25: { /* '25' */
+            return 26
         }
-        case 263: { /* '263' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 26: { /* '26' */
+            return 27
         }
-        case 264: { /* '264' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 27: { /* '27' */
+            return 29
         }
-        case 265: { /* '265' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 28: { /* '28' */
+            return 30
         }
-        case 266: { /* '266' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 29: { /* '29' */
+            return 206
         }
-        case 267: { /* '267' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 3: { /* '3' */
+            return 3
         }
-        case 268: { /* '268' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 30: { /* '30' */
+            return 217
         }
-        case 269: { /* '269' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 31: { /* '31' */
+            return 219
         }
-        case 27: { /* '27' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+        case 32: { /* '32' */
+            return 222
         }
-        case 270: { /* '270' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 33: { /* '33' */
+            return 225
         }
-        case 271: { /* '271' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 34: { /* '34' */
+            return 229
         }
-        case 272: { /* '272' */
-            return KnxDatapointMainType_DPT_8_BIT_SET
+        case 35: { /* '35' */
+            return 230
         }
-        case 273: { /* '273' */
-            return KnxDatapointMainType_DPT_16_BIT_SET
+        case 36: { /* '36' */
+            return 232
         }
-        case 274: { /* '274' */
-            return KnxDatapointMainType_DPT_16_BIT_SET
+        case 37: { /* '37' */
+            return 234
         }
-        case 275: { /* '275' */
-            return KnxDatapointMainType_DPT_16_BIT_SET
+        case 38: { /* '38' */
+            return 235
         }
-        case 276: { /* '276' */
-            return KnxDatapointMainType_DPT_16_BIT_SET
+        case 39: { /* '39' */
+            return 236
         }
-        case 277: { /* '277' */
-            return KnxDatapointMainType_DPT_16_BIT_SET
+        case 4: { /* '4' */
+            return 4
         }
-        case 278: { /* '278' */
-            return KnxDatapointMainType_DPT_16_BIT_SET
+        case 40: { /* '40' */
+            return 237
         }
-        case 279: { /* '279' */
-            return KnxDatapointMainType_DPT_2_BIT_SET
+        case 41: { /* '41' */
+            return 238
         }
-        case 28: { /* '28' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+        case 42: { /* '42' */
+            return 240
         }
-        case 280: { /* '280' */
-            return KnxDatapointMainType_DPT_2_BIT_SET
+        case 43: { /* '43' */
+            return 241
         }
-        case 281: { /* '281' */
-            return KnxDatapointMainType_DPT_2_BIT_SET
+        case 44: { /* '44' */
+            return 242
         }
-        case 282: { /* '282' */
-            return KnxDatapointMainType_DPT_2_BIT_SET
+        case 45: { /* '45' */
+            return 244
         }
-        case 283: { /* '283' */
-            return KnxDatapointMainType_DPT_2_NIBBLE_SET
+        case 46: { /* '46' */
+            return 245
         }
-        case 284: { /* '284' */
-            return KnxDatapointMainType_DPT_8_BIT_SET_2
+        case 47: { /* '47' */
+            return 246
         }
-        case 285: { /* '285' */
-            return KnxDatapointMainType_DPT_32_BIT_SET
+        case 48: { /* '48' */
+            return 249
         }
-        case 286: { /* '286' */
-            return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
+        case 49: { /* '49' */
+            return 250
         }
-        case 287: { /* '287' */
-            return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
+        case 5: { /* '5' */
+            return 5
         }
-        case 288: { /* '288' */
-            return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
+        case 50: { /* '50' */
+            return 251
         }
-        case 289: { /* '289' */
-            return KnxDatapointMainType_DPT_24_TIMES_CHANNEL_ACTIVATION
+        case 51: { /* '51' */
+            return 252
         }
-        case 29: { /* '29' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+        case 52: { /* '52' */
+            return 254
         }
-        case 290: { /* '290' */
-            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        case 53: { /* '53' */
+            return 255
         }
-        case 291: { /* '291' */
-            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        case 54: { /* '54' */
+            return 275
         }
-        case 292: { /* '292' */
-            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        case 6: { /* '6' */
+            return 6
         }
-        case 293: { /* '293' */
-            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+        case 7: { /* '7' */
+            return 7
         }
-        case 294: { /* '294' */
-            return KnxDatapointMainType_DPT_DATAPOINT_TYPE_VERSION
+        case 8: { /* '8' */
+            return 8
         }
-        case 295: { /* '295' */
-            return KnxDatapointMainType_DPT_ALARM_INFO
+        case 9: { /* '9' */
+            return 9
         }
-        case 296: { /* '296' */
-            return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
+        default: {
+            return 0
         }
-        case 297: { /* '297' */
-            return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
+    }
+}
+
+func (e KnxDatapointType) Name() string {
+    switch e  {
+        case 0: { /* '0' */
+            return "Unknown Datapoint Type"
         }
-        case 298: { /* '298' */
-            return KnxDatapointMainType_DPT_SCALING_SPEED
+        case 1: { /* '1' */
+            return "1-bit"
         }
-        case 299: { /* '299' */
-            return KnxDatapointMainType_DPT_SCALING_SPEED
+        case 10: { /* '10' */
+            return "time"
         }
-        case 3: { /* '3' */
-            return KnxDatapointMainType_DPT_1_BIT
+        case 11: { /* '11' */
+            return "date"
         }
-        case 30: { /* '30' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+        case 12: { /* '12' */
+            return "4-byte unsigned value"
         }
-        case 300: { /* '300' */
-            return KnxDatapointMainType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
+        case 13: { /* '13' */
+            return "4-byte signed value"
         }
-        case 301: { /* '301' */
-            return KnxDatapointMainType_DPT_MBUS_ADDRESS
+        case 14: { /* '14' */
+            return "4-byte float value"
         }
-        case 302: { /* '302' */
-            return KnxDatapointMainType_DPT_3_BYTE_COLOUR_RGB
+        case 15: { /* '15' */
+            return "entrance access"
         }
-        case 303: { /* '303' */
-            return KnxDatapointMainType_DPT_LANGUAGE_CODE_ISO_639_1
+        case 16: { /* '16' */
+            return "character string"
         }
-        case 304: { /* '304' */
-            return KnxDatapointMainType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
+        case 17: { /* '17' */
+            return "scene number"
         }
-        case 305: { /* '305' */
-            return KnxDatapointMainType_DPT_PRIORITISED_MODE_CONTROL
+        case 18: { /* '18' */
+            return "scene control"
         }
-        case 306: { /* '306' */
-            return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
+        case 19: { /* '19' */
+            return "Date Time"
         }
-        case 307: { /* '307' */
-            return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
+        case 2: { /* '2' */
+            return "1-bit controlled"
         }
-        case 308: { /* '308' */
-            return KnxDatapointMainType_DPT_POSITIONS
+        case 20: { /* '20' */
+            return "1-byte"
         }
-        case 309: { /* '309' */
-            return KnxDatapointMainType_DPT_STATUS_32_BIT
+        case 21: { /* '21' */
+            return "8-bit set"
         }
-        case 31: { /* '31' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+        case 22: { /* '22' */
+            return "16-bit set"
         }
-        case 310: { /* '310' */
-            return KnxDatapointMainType_DPT_STATUS_48_BIT
+        case 23: { /* '23' */
+            return "2-bit set"
         }
-        case 311: { /* '311' */
-            return KnxDatapointMainType_DPT_CONVERTER_STATUS
+        case 24: { /* '24' */
+            return "2-nibble set"
         }
-        case 312: { /* '312' */
-            return KnxDatapointMainType_DPT_CONVERTER_TEST_RESULT
+        case 25: { /* '25' */
+            return "8-bit set"
         }
-        case 313: { /* '313' */
-            return KnxDatapointMainType_DPT_BATTERY_INFORMATION
+        case 26: { /* '26' */
+            return "32-bit set"
         }
-        case 314: { /* '314' */
-            return KnxDatapointMainType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
+        case 27: { /* '27' */
+            return "electrical energy"
         }
-        case 315: { /* '315' */
-            return KnxDatapointMainType_DPT_STATUS_24_BIT
+        case 28: { /* '28' */
+            return "24 times channel activation"
         }
-        case 316: { /* '316' */
-            return KnxDatapointMainType_DPT_COLOUR_RGBW
+        case 29: { /* '29' */
+            return "16-bit unsigned value & 8-bit enum"
         }
-        case 317: { /* '317' */
-            return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGBW
+        case 3: { /* '3' */
+            return "3-bit controlled"
         }
-        case 318: { /* '318' */
-            return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGB
+        case 30: { /* '30' */
+            return "datapoint type version"
         }
-        case 319: { /* '319' */
-            return KnxDatapointMainType_DPT_F32F32
+        case 31: { /* '31' */
+            return "alarm info"
         }
         case 32: { /* '32' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
-        }
-        case 320: { /* '320' */
-            return KnxDatapointMainType_DPT_F16F16F16F16
-        }
-        case 321: { /* '321' */
-            return KnxDatapointMainType_DPT_F16F16F16F16
+            return "3x 2-byte float value"
         }
         case 33: { /* '33' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+            return "scaling speed"
         }
         case 34: { /* '34' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+            return "4-1-1 byte combined information"
         }
         case 35: { /* '35' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+            return "MBus address"
         }
         case 36: { /* '36' */
-            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+            return "3-byte colour RGB"
         }
         case 37: { /* '37' */
-            return KnxDatapointMainType_DPT_3_BIT_CONTROLLED
+            return "language code ISO 639-1"
         }
         case 38: { /* '38' */
-            return KnxDatapointMainType_DPT_3_BIT_CONTROLLED
+            return "Signed value with classification and validity"
         }
         case 39: { /* '39' */
-            return KnxDatapointMainType_DPT_CHARACTER
+            return "Prioritised Mode Control"
         }
         case 4: { /* '4' */
-            return KnxDatapointMainType_DPT_1_BIT
+            return "character"
         }
         case 40: { /* '40' */
-            return KnxDatapointMainType_DPT_CHARACTER
+            return "configuration/ diagnostics"
         }
         case 41: { /* '41' */
-            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+            return "configuration/ diagnostics"
         }
         case 42: { /* '42' */
-            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+            return "positions"
         }
         case 43: { /* '43' */
-            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+            return "status"
         }
         case 44: { /* '44' */
-            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+            return "status"
         }
         case 45: { /* '45' */
-            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+            return "Converter Status"
         }
         case 46: { /* '46' */
-            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+            return "Converter test result"
         }
         case 47: { /* '47' */
-            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+            return "Battery Information"
         }
         case 48: { /* '48' */
-            return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
+            return "brightness colour temperature transition"
         }
         case 49: { /* '49' */
-            return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
+            return "status"
         }
         case 5: { /* '5' */
-            return KnxDatapointMainType_DPT_1_BIT
+            return "8-bit unsigned value"
         }
         case 50: { /* '50' */
-            return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
+            return "Colour RGBW"
         }
         case 51: { /* '51' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+            return "Relative Control RGBW"
         }
         case 52: { /* '52' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+            return "Relative Control RGB"
         }
         case 53: { /* '53' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+            return "F32F32"
         }
         case 54: { /* '54' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+            return "F16F16F16F16"
         }
-        case 55: { /* '55' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        case 6: { /* '6' */
+            return "8-bit signed value"
         }
-        case 56: { /* '56' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        case 7: { /* '7' */
+            return "2-byte unsigned value"
         }
-        case 57: { /* '57' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        case 8: { /* '8' */
+            return "2-byte signed value"
         }
-        case 58: { /* '58' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        case 9: { /* '9' */
+            return "2-byte float value"
         }
-        case 59: { /* '59' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        default: {
+            return ""
         }
-        case 6: { /* '6' */
-            return KnxDatapointMainType_DPT_1_BIT
+    }
+}
+
+func (e KnxDatapointType) SizeInBits() uint8 {
+    switch e  {
+        case 0: { /* '0' */
+            return 0
+        }
+        case 1: { /* '1' */
+            return 1
         }
-        case 60: { /* '60' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        case 10: { /* '10' */
+            return 24
         }
-        case 61: { /* '61' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        case 11: { /* '11' */
+            return 24
         }
-        case 62: { /* '62' */
-            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        case 12: { /* '12' */
+            return 32
         }
-        case 63: { /* '63' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 13: { /* '13' */
+            return 32
         }
-        case 64: { /* '64' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 14: { /* '14' */
+            return 32
         }
-        case 65: { /* '65' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 15: { /* '15' */
+            return 32
         }
-        case 66: { /* '66' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 16: { /* '16' */
+            return 112
         }
-        case 67: { /* '67' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 17: { /* '17' */
+            return 8
         }
-        case 68: { /* '68' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 18: { /* '18' */
+            return 8
         }
-        case 69: { /* '69' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 19: { /* '19' */
+            return 64
         }
-        case 7: { /* '7' */
-            return KnxDatapointMainType_DPT_1_BIT
+        case 2: { /* '2' */
+            return 2
         }
-        case 70: { /* '70' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 20: { /* '20' */
+            return 8
+        }
+        case 21: { /* '21' */
+            return 8
+        }
+        case 22: { /* '22' */
+            return 16
         }
-        case 71: { /* '71' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 23: { /* '23' */
+            return 2
+        }
+        case 24: { /* '24' */
+            return 8
         }
-        case 72: { /* '72' */
-            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        case 25: { /* '25' */
+            return 8
         }
-        case 73: { /* '73' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 26: { /* '26' */
+            return 32
         }
-        case 74: { /* '74' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 27: { /* '27' */
+            return 64
         }
-        case 75: { /* '75' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 28: { /* '28' */
+            return 24
         }
-        case 76: { /* '76' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 29: { /* '29' */
+            return 24
         }
-        case 77: { /* '77' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 3: { /* '3' */
+            return 4
         }
-        case 78: { /* '78' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 30: { /* '30' */
+            return 16
         }
-        case 79: { /* '79' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 31: { /* '31' */
+            return 48
         }
-        case 8: { /* '8' */
-            return KnxDatapointMainType_DPT_1_BIT
+        case 32: { /* '32' */
+            return 48
         }
-        case 80: { /* '80' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 33: { /* '33' */
+            return 24
+        }
+        case 34: { /* '34' */
+            return 48
+        }
+        case 35: { /* '35' */
+            return 64
         }
-        case 81: { /* '81' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 36: { /* '36' */
+            return 24
+        }
+        case 37: { /* '37' */
+            return 16
         }
-        case 82: { /* '82' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 38: { /* '38' */
+            return 48
         }
-        case 83: { /* '83' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 39: { /* '39' */
+            return 8
         }
-        case 84: { /* '84' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 4: { /* '4' */
+            return 8
         }
-        case 85: { /* '85' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 40: { /* '40' */
+            return 16
         }
-        case 86: { /* '86' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 41: { /* '41' */
+            return 8
         }
-        case 87: { /* '87' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 42: { /* '42' */
+            return 24
         }
-        case 88: { /* '88' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 43: { /* '43' */
+            return 32
         }
-        case 89: { /* '89' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 44: { /* '44' */
+            return 48
         }
-        case 9: { /* '9' */
-            return KnxDatapointMainType_DPT_1_BIT
+        case 45: { /* '45' */
+            return 16
         }
-        case 90: { /* '90' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 46: { /* '46' */
+            return 48
+        }
+        case 47: { /* '47' */
+            return 16
+        }
+        case 48: { /* '48' */
+            return 48
         }
-        case 91: { /* '91' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 49: { /* '49' */
+            return 24
+        }
+        case 5: { /* '5' */
+            return 8
+        }
+        case 50: { /* '50' */
+            return 48
         }
-        case 92: { /* '92' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 51: { /* '51' */
+            return 40
         }
-        case 93: { /* '93' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 52: { /* '52' */
+            return 24
         }
-        case 94: { /* '94' */
-            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        case 53: { /* '53' */
+            return 64
         }
-        case 95: { /* '95' */
-            return KnxDatapointMainType_DPT_TIME
+        case 54: { /* '54' */
+            return 64
         }
-        case 96: { /* '96' */
-            return KnxDatapointMainType_DPT_DATE
+        case 6: { /* '6' */
+            return 8
         }
-        case 97: { /* '97' */
-            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        case 7: { /* '7' */
+            return 16
         }
-        case 98: { /* '98' */
-            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        case 8: { /* '8' */
+            return 16
         }
-        case 99: { /* '99' */
-            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        case 9: { /* '9' */
+            return 16
         }
         default: {
             return 0
         }
     }
 }
-func KnxDatapointTypeByValue(value uint32) KnxDatapointType {
+func KnxDatapointTypeByValue(value uint16) KnxDatapointType {
     switch value {
... 7945 lines suppressed ...


[plc4x] 04/07: - Finished the missing temporal types

Posted by cd...@apache.org.
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 01bb98c1266354f0b9655b8ec91e1b3ed1370b02
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Jan 31 13:39:01 2021 +0100

    - Finished the missing temporal types
---
 .../plc4c/drivers/s7/src/driver_s7_encode_decode.c |   4 +
 sandbox/plc4c/drivers/s7/src/driver_s7_packets.c   |  57 +++++++++++-
 .../plc4c/examples/hello-world/src/hello_world.c   | 100 ++++++++++-----------
 3 files changed, 109 insertions(+), 52 deletions(-)

diff --git a/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c b/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c
index 955a45d..ebbb2c3 100644
--- a/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c
+++ b/sandbox/plc4c/drivers/s7/src/driver_s7_encode_decode.c
@@ -292,6 +292,7 @@ plc4c_return_code plc4c_driver_s7_encode_address(
       any_address->s7_address_any_number_of_elements = 1;
     }
 
+    // TODO: THis should be moved to "driver_s7_packets.c->plc4c_return_code plc4c_driver_s7_create_s7_read_request"
     if (any_address->s7_address_any_transport_size ==
          plc4c_s7_read_write_transport_size_STRING) {
       if (string_length != NULL) {
@@ -303,6 +304,9 @@ plc4c_return_code plc4c_driver_s7_encode_address(
         any_address->s7_address_any_number_of_elements =
             254 * any_address->s7_address_any_number_of_elements;
       }
+    } else if (any_address->s7_address_any_transport_size ==
+               plc4c_s7_read_write_transport_size_TOD) {
+      any_address->s7_address_any_transport_size = plc4c_s7_read_write_transport_size_TIME_OF_DAY;
     }
 
     // Check the optional transport size code.
diff --git a/sandbox/plc4c/drivers/s7/src/driver_s7_packets.c b/sandbox/plc4c/drivers/s7/src/driver_s7_packets.c
index d9e639e..70d6833 100644
--- a/sandbox/plc4c/drivers/s7/src/driver_s7_packets.c
+++ b/sandbox/plc4c/drivers/s7/src/driver_s7_packets.c
@@ -435,11 +435,66 @@ plc4c_return_code plc4c_driver_s7_create_s7_read_request(
     // Get the item address from the API request.
     plc4c_s7_read_write_s7_var_request_parameter_item* parsed_item_address = item->address;
 
+    // Create a copy of the request item...
+    plc4c_s7_read_write_s7_var_request_parameter_item* updated_item_address =
+        malloc(sizeof(plc4c_s7_read_write_s7_var_request_parameter_item));
+    if (updated_item_address == NULL) {
+      return NO_MEMORY;
+    }
+    updated_item_address->_type = parsed_item_address->_type;
+    updated_item_address->s7_var_request_parameter_item_address_address = malloc(sizeof(plc4c_s7_read_write_s7_address));
+    if (updated_item_address->s7_var_request_parameter_item_address_address == NULL) {
+      return NO_MEMORY;
+    }
+    updated_item_address->s7_var_request_parameter_item_address_address->_type =
+        parsed_item_address->s7_var_request_parameter_item_address_address->_type;
+    updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size =
+        parsed_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size;
+    updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_area =
+        parsed_item_address->s7_var_request_parameter_item_address_address->s7_address_any_area;
+    updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_db_number =
+        parsed_item_address->s7_var_request_parameter_item_address_address->s7_address_any_db_number;
+    updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_byte_address =
+        parsed_item_address->s7_var_request_parameter_item_address_address->s7_address_any_byte_address;
+    updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_bit_address =
+        parsed_item_address->s7_var_request_parameter_item_address_address->s7_address_any_bit_address;
+    updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_number_of_elements =
+        parsed_item_address->s7_var_request_parameter_item_address_address->s7_address_any_number_of_elements;
+
+    // Update the data-types and sizes...
+    /*if (updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size ==
+        plc4c_s7_read_write_transport_size_STRING) {
+      if (string_length != NULL) {
+        updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_number_of_elements =
+            strtol(string_length, 0, 10) *
+                updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_number_of_elements;
+      } else if (updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size ==
+                 plc4c_s7_read_write_transport_size_STRING) {
+        updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_number_of_elements =
+            254 * updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_number_of_elements;
+      }
+    }*/
+      // In case of TIME values, we read 4 bytes for each value instead.
+    if(updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size ==
+            plc4c_s7_read_write_transport_size_TIME) {
+      updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size =
+          plc4c_s7_read_write_transport_size_DINT;
+    } else if(updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size ==
+              plc4c_s7_read_write_transport_size_DATE) {
+      updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size =
+          plc4c_s7_read_write_transport_size_UINT;
+    } else if(updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size ==
+                   plc4c_s7_read_write_transport_size_TIME_OF_DAY ||
+               updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size ==
+                   plc4c_s7_read_write_transport_size_TOD) {
+      updated_item_address->s7_var_request_parameter_item_address_address->s7_address_any_transport_size =
+          plc4c_s7_read_write_transport_size_UDINT;
+    }
     // Add the new item to the request.
     plc4c_utils_list_insert_head_value(
         (*s7_read_request_packet)
             ->payload->payload->parameter->s7_parameter_read_var_request_items,
-        parsed_item_address);
+        updated_item_address);
 
     cur_item = cur_item->next;
   }
diff --git a/sandbox/plc4c/examples/hello-world/src/hello_world.c b/sandbox/plc4c/examples/hello-world/src/hello_world.c
index 9c9e158..86c5d2e 100644
--- a/sandbox/plc4c/examples/hello-world/src/hello_world.c
+++ b/sandbox/plc4c/examples/hello-world/src/hello_world.c
@@ -195,7 +195,7 @@ int main() {
         }
         printf("SUCCESS\n");
 
-        /*result =
+        result =
             plc4c_read_request_add_item(read_request, "BOOL", "%DB4:0.0:BOOL");
         if (result != OK) {
           printf("FAILED\n");
@@ -260,35 +260,31 @@ int main() {
         if (result != OK) {
           printf("FAILED\n");
           return -1;
-        }*/
-
-        // Works till here ...
-
-        // S7 reports "Not supported"
+        }
         result =
             plc4c_read_request_add_item(read_request, "TIME", "%DB4:58:TIME");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
-        /*result =
+        result =
             plc4c_read_request_add_item(read_request, "DATE", "%DB4:70:DATE");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
-        result =
-            plc4c_read_request_add_item(read_request, "TIME_OF_DAY", "%DB4:72:TIME_OF_DAY");
+        result = plc4c_read_request_add_item(read_request, "TIME_OF_DAY",
+                                             "%DB4:72:TIME_OF_DAY");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
-        }*/
-        /*result =
+        }
+        result =
             plc4c_read_request_add_item(read_request, "TOD", "%DB4:76:TOD");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
-        }*/
+        }
         result =
             plc4c_read_request_add_item(read_request, "CHAR", "%DB4:136:CHAR");
         if (result != OK) {
@@ -297,22 +293,19 @@ int main() {
         }
         // UTF-16 doesn't work well in a portable way
         /*result =
-            plc4c_read_request_add_item(read_request, "WCHAR", "%DB4:138:WCHAR");
-        if (result != OK) {
-          printf("FAILED\n");
-          return -1;
+            plc4c_read_request_add_item(read_request, "WCHAR",
+        "%DB4:138:WCHAR"); if (result != OK) { printf("FAILED\n"); return -1;
         }*/
-        result =
-            plc4c_read_request_add_item(read_request, "STRING", "%DB4:140:STRING(10)");
+        result = plc4c_read_request_add_item(read_request, "STRING",
+                                             "%DB4:140:STRING(10)");
         if (result != OK) {
           printf("FAILED\n");
           return -1;
         }
         // UTF-16 doesn't work well in a portable way
         /*result =
-               plc4c_read_request_add_item(read_request, "WSTRING", "%DB4:396:WSTRING(10)");
-           if (result != OK) {
-             printf("FAILED\n");
+               plc4c_read_request_add_item(read_request, "WSTRING",
+           "%DB4:396:WSTRING(10)"); if (result != OK) { printf("FAILED\n");
              return -1;
            }*/
         printf("SUCCESS\n");
@@ -361,6 +354,15 @@ int main() {
           printf("Value %s (%s): ", value_item->item->name,
                  plc4c_response_code_to_message(value_item->response_code));
           plc4c_data_printf(value_item->value);
+          if (strcmp(value_item->item->name, "TIME") == 0) {
+            printf(" (Duration in ms)");
+          } else if (strcmp(value_item->item->name, "DATE") == 0) {
+            printf(" (Days since 1990-01-01)");
+          } else if (strcmp(value_item->item->name, "TIME_OF_DAY") == 0) {
+            printf(" (Number of ms since midnight)");
+          } else if (strcmp(value_item->item->name, "TOD") == 0) {
+            printf(" (Number of ms since midnight)");
+          }
           printf("\n");
 
           cur_element = cur_element->next;
@@ -382,36 +384,32 @@ int main() {
         state = DISCONNECTING;
 
         // Create a new write-request.
-/*        printf("Preparing a write-request ... ");
-        char value[] = "bar";
-        result =
-            plc4c_connection_create_write_request(connection, &write_request);
-        if (result != OK) {
-          printf("FAILED\n");
-          return -1;
-        }
-        printf("SUCCESS\n");
-
-        printf("Adding an item for 'STDOUT/foo:INTEGER' ... ");
-        result = plc4c_write_request_add_item(
-            write_request, "STDOUT/foo:STRING",
-            plc4c_data_create_constant_string_data(strlen(value), value));
-        if (result != OK) {
-          printf("FAILED\n");
-          return -1;
-        }
-        printf("SUCCESS\n");
-
-        // Execute the write-request.
-        printf("Executing a write-request ... \n");
-        result = plc4c_write_request_execute(write_request,
-                                             &write_request_execution);
-        if (result != OK) {
-          printf("FAILED\n");
-          return -1;
-        } else {
-          state = WRITE_REQUEST_SENT;
-        }*/
+        /*        printf("Preparing a write-request ... ");
+                char value[] = "bar";
+                result =
+                    plc4c_connection_create_write_request(connection,
+           &write_request); if (result != OK) { printf("FAILED\n"); return -1;
+                }
+                printf("SUCCESS\n");
+
+                printf("Adding an item for 'STDOUT/foo:INTEGER' ... ");
+                result = plc4c_write_request_add_item(
+                    write_request, "STDOUT/foo:STRING",
+                    plc4c_data_create_constant_string_data(strlen(value),
+           value)); if (result != OK) { printf("FAILED\n"); return -1;
+                }
+                printf("SUCCESS\n");
+
+                // Execute the write-request.
+                printf("Executing a write-request ... \n");
+                result = plc4c_write_request_execute(write_request,
+                                                     &write_request_execution);
+                if (result != OK) {
+                  printf("FAILED\n");
+                  return -1;
+                } else {
+                  state = WRITE_REQUEST_SENT;
+                }*/
         break;
       }
         // Wait until the write-request execution is finished.


[plc4x] 07/07: - Fixed the RELEASE_NOTES

Posted by cd...@apache.org.
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 2e9c8a066307393946b5e5f8bba7cb74c1155f9f
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Jan 31 13:59:23 2021 +0100

    - Fixed the RELEASE_NOTES
---
 RELEASE_NOTES                                      |    4 +
 .../plc4go/knxnetip/readwrite/ParserHelper.go      |   22 +-
 .../plc4go/knxnetip/readwrite/XmlParserHelper.go   |   44 +-
 .../knxnetip/readwrite/model/KnxDatapointType.go   | 5492 +++++++++++++++++---
 .../plc4go/knxnetip/readwrite/model/LBusmonInd.go  |    2 +-
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |   63 +-
 .../knxnetip/readwrite/model/LDataFrameData.go     |  325 +-
 .../knxnetip/readwrite/model/LDataFrameDataExt.go  |  325 +-
 .../readwrite/model/LDataFramePollingData.go       |   11 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  811 ++-
 10 files changed, 5693 insertions(+), 1406 deletions(-)

diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 5080fa7..60fbf4e 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -92,6 +92,7 @@ PLC4X-218   [Scraper] After stopping the scraper still the
             terminate
 PLC4X-239   Read DTL (Date and Time)
 PLC4X-240   Protocol error in reading string
+PLC4X-246	S7 driver hangs on read
 PLC4X-245   [Modbus] Apache NiFi processor throws
             java.io.IOException after a while
 PLC4X-255   Kafka Connector Source Task doesn't block within poll()
@@ -100,6 +101,9 @@ PLC4X-261   Pooled connection manager returns a connection that isn't
             connected in some situations.
 PLC4X-272   When splitting up large requests, too big sub-requests
             are generated (S7)
+PLC4X-256	ReadBuffer truncate last byte of even small payloads
+PLC4X-262	Error in reading Array
+PLC4X-270	Ads driver does not accept double-digit array indexes
 
 ==============================================================
 Apache PLC4X 0.7.0
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go b/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go
index 6c83543..d1ddcd9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/ParserHelper.go
@@ -16,7 +16,7 @@
 // specific language governing permissions and limitations
 // under the License.
 //
-package model
+package readwrite
 
 import (
     "errors"
@@ -34,10 +34,16 @@ func (m KnxnetipParserHelper) Parse(typeName string, arguments []string, io *uti
         return model.HPAIControlEndpointParse(io)
     case "TunnelingResponseDataBlock":
         return model.TunnelingResponseDataBlockParse(io)
+    case "DeviceDescriptorType2":
+        return model.DeviceDescriptorType2Parse(io)
+    case "ChannelInformation":
+        return model.ChannelInformationParse(io)
     case "DeviceConfigurationAckDataBlock":
         return model.DeviceConfigurationAckDataBlockParse(io)
     case "ConnectionRequestInformation":
         return model.ConnectionRequestInformationParse(io)
+    case "Apdu":
+        return model.ApduParse(io)
     case "HPAIDiscoveryEndpoint":
         return model.HPAIDiscoveryEndpointParse(io)
     case "ProjectInstallationIdentifier":
@@ -76,6 +82,14 @@ func (m KnxnetipParserHelper) Parse(typeName string, arguments []string, io *uti
         return model.DIBSuppSvcFamiliesParse(io)
     case "LDataFrame":
         return model.LDataFrameParse(io)
+    case "ApduDataExt":
+        length, err := utils.StrToUint8(arguments[0])
+        if err != nil {
+            return nil, err
+        }
+        return model.ApduDataExtParse(io, length)
+    case "ApduControl":
+        return model.ApduControlParse(io)
     case "KnxGroupAddress":
         numLevels, err := utils.StrToUint8(arguments[0])
         if err != nil {
@@ -84,6 +98,12 @@ func (m KnxnetipParserHelper) Parse(typeName string, arguments []string, io *uti
         return model.KnxGroupAddressParse(io, numLevels)
     case "MACAddress":
         return model.MACAddressParse(io)
+    case "ApduData":
+        dataLength, err := utils.StrToUint8(arguments[0])
+        if err != nil {
+            return nil, err
+        }
+        return model.ApduDataParse(io, dataLength)
     }
     return nil, errors.New("Unsupported type " + typeName)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go b/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go
index b06768b..95ca62e 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/XmlParserHelper.go
@@ -16,7 +16,7 @@
 // specific language governing permissions and limitations
 // under the License.
 //
-package model
+package readwrite
 
 import (
     "encoding/xml"
@@ -44,6 +44,20 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
+    case "DeviceDescriptorType2":
+        var obj *model.DeviceDescriptorType2
+        err := xml.Unmarshal([]byte(xmlString), &obj)
+        if err != nil {
+            return nil, errors.New("error unmarshalling xml: " + err.Error())
+        }
+        return obj, nil
+    case "ChannelInformation":
+        var obj *model.ChannelInformation
+        err := xml.Unmarshal([]byte(xmlString), &obj)
+        if err != nil {
+            return nil, errors.New("error unmarshalling xml: " + err.Error())
+        }
+        return obj, nil
     case "DeviceConfigurationAckDataBlock":
         var obj *model.DeviceConfigurationAckDataBlock
         err := xml.Unmarshal([]byte(xmlString), &obj)
@@ -58,6 +72,13 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
+    case "Apdu":
+        var obj *model.Apdu
+        err := xml.Unmarshal([]byte(xmlString), &obj)
+        if err != nil {
+            return nil, errors.New("error unmarshalling xml: " + err.Error())
+        }
+        return obj, nil
     case "HPAIDiscoveryEndpoint":
         var obj *model.HPAIDiscoveryEndpoint
         err := xml.Unmarshal([]byte(xmlString), &obj)
@@ -177,6 +198,20 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
+    case "ApduDataExt":
+        var obj *model.ApduDataExt
+        err := xml.Unmarshal([]byte(xmlString), &obj)
+        if err != nil {
+            return nil, errors.New("error unmarshalling xml: " + err.Error())
+        }
+        return obj, nil
+    case "ApduControl":
+        var obj *model.ApduControl
+        err := xml.Unmarshal([]byte(xmlString), &obj)
+        if err != nil {
+            return nil, errors.New("error unmarshalling xml: " + err.Error())
+        }
+        return obj, nil
     case "KnxGroupAddress":
         var obj *model.KnxGroupAddress
         err := xml.Unmarshal([]byte(xmlString), &obj)
@@ -191,6 +226,13 @@ func (m KnxnetipXmlParserHelper) Parse(typeName string, xmlString string) (spi.M
             return nil, errors.New("error unmarshalling xml: " + err.Error())
         }
         return obj, nil
+    case "ApduData":
+        var obj *model.ApduData
+        err := xml.Unmarshal([]byte(xmlString), &obj)
+        if err != nil {
+            return nil, errors.New("error unmarshalling xml: " + err.Error())
+        }
+        return obj, nil
     }
     return nil, errors.New("Unsupported type " + typeName)
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
index 253e921..7638b34 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
@@ -22,71 +22,338 @@ import (
     "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
 )
 
-type KnxDatapointType uint16
+type KnxDatapointType uint32
 
 type IKnxDatapointType interface {
     Number() uint16
     Name() string
-    SizeInBits() uint8
+    DatapointMainType() KnxDatapointMainType
     Serialize(io utils.WriteBuffer) error
 }
 
 const(
     KnxDatapointType_DPT_UNKNOWN KnxDatapointType = 0
-    KnxDatapointType_DPT_1_BIT KnxDatapointType = 1
-    KnxDatapointType_DPT_1_BIT_CONTROLLED KnxDatapointType = 2
-    KnxDatapointType_DPT_3_BIT_CONTROLLED KnxDatapointType = 3
-    KnxDatapointType_DPT_CHARACTER KnxDatapointType = 4
-    KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE KnxDatapointType = 5
-    KnxDatapointType_DPT_8_BIT_SIGNED_VALUE KnxDatapointType = 6
-    KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE KnxDatapointType = 7
-    KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE KnxDatapointType = 8
-    KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE KnxDatapointType = 9
-    KnxDatapointType_DPT_TIME KnxDatapointType = 10
-    KnxDatapointType_DPT_DATE KnxDatapointType = 11
-    KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE KnxDatapointType = 12
-    KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE KnxDatapointType = 13
-    KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE KnxDatapointType = 14
-    KnxDatapointType_DPT_ENTRANCE_ACCESS KnxDatapointType = 15
-    KnxDatapointType_DPT_CHARACTER_STRING KnxDatapointType = 16
-    KnxDatapointType_DPT_SCENE_NUMBER KnxDatapointType = 17
-    KnxDatapointType_DPT_SCENE_CONTROL KnxDatapointType = 18
-    KnxDatapointType_DPT_DATE_TIME KnxDatapointType = 19
-    KnxDatapointType_DPT_1_BYTE KnxDatapointType = 20
-    KnxDatapointType_DPT_8_BIT_SET KnxDatapointType = 21
-    KnxDatapointType_DPT_16_BIT_SET KnxDatapointType = 22
-    KnxDatapointType_DPT_2_BIT_SET KnxDatapointType = 23
-    KnxDatapointType_DPT_2_NIBBLE_SET KnxDatapointType = 24
-    KnxDatapointType_DPT_8_BIT_SET_2 KnxDatapointType = 25
-    KnxDatapointType_DPT_32_BIT_SET KnxDatapointType = 26
-    KnxDatapointType_DPT_ELECTRICAL_ENERGY KnxDatapointType = 27
-    KnxDatapointType_DPT_24_TIMES_CHANNEL_ACTIVATION KnxDatapointType = 28
-    KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM KnxDatapointType = 29
-    KnxDatapointType_DPT_DATAPOINT_TYPE_VERSION KnxDatapointType = 30
-    KnxDatapointType_DPT_ALARM_INFO KnxDatapointType = 31
-    KnxDatapointType_DPT_3X_2_BYTE_FLOAT_VALUE KnxDatapointType = 32
-    KnxDatapointType_DPT_SCALING_SPEED KnxDatapointType = 33
-    KnxDatapointType_DPT_4_1_1_BYTE_COMBINED_INFORMATION KnxDatapointType = 34
-    KnxDatapointType_DPT_MBUS_ADDRESS KnxDatapointType = 35
-    KnxDatapointType_DPT_3_BYTE_COLOUR_RGB KnxDatapointType = 36
-    KnxDatapointType_DPT_LANGUAGE_CODE_ISO_639_1 KnxDatapointType = 37
-    KnxDatapointType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY KnxDatapointType = 38
-    KnxDatapointType_DPT_PRIORITISED_MODE_CONTROL KnxDatapointType = 39
-    KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT KnxDatapointType = 40
-    KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT KnxDatapointType = 41
-    KnxDatapointType_DPT_POSITIONS KnxDatapointType = 42
-    KnxDatapointType_DPT_STATUS_32_BIT KnxDatapointType = 43
-    KnxDatapointType_DPT_STATUS_48_BIT KnxDatapointType = 44
-    KnxDatapointType_DPT_CONVERTER_STATUS KnxDatapointType = 45
-    KnxDatapointType_DPT_CONVERTER_TEST_RESULT KnxDatapointType = 46
-    KnxDatapointType_DPT_BATTERY_INFORMATION KnxDatapointType = 47
-    KnxDatapointType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION KnxDatapointType = 48
-    KnxDatapointType_DPT_STATUS_24_BIT KnxDatapointType = 49
-    KnxDatapointType_DPT_COLOUR_RGBW KnxDatapointType = 50
-    KnxDatapointType_DPT_RELATIVE_CONTROL_RGBW KnxDatapointType = 51
-    KnxDatapointType_DPT_RELATIVE_CONTROL_RGB KnxDatapointType = 52
-    KnxDatapointType_DPT_F32F32 KnxDatapointType = 53
-    KnxDatapointType_DPT_F16F16F16F16 KnxDatapointType = 54
+    KnxDatapointType_DPT_Switch KnxDatapointType = 1
+    KnxDatapointType_DPT_Bool KnxDatapointType = 2
+    KnxDatapointType_DPT_Enable KnxDatapointType = 3
+    KnxDatapointType_DPT_Ramp KnxDatapointType = 4
+    KnxDatapointType_DPT_Alarm KnxDatapointType = 5
+    KnxDatapointType_DPT_BinaryValue KnxDatapointType = 6
+    KnxDatapointType_DPT_Step KnxDatapointType = 7
+    KnxDatapointType_DPT_UpDown KnxDatapointType = 8
+    KnxDatapointType_DPT_OpenClose KnxDatapointType = 9
+    KnxDatapointType_DPT_Start KnxDatapointType = 10
+    KnxDatapointType_DPT_State KnxDatapointType = 11
+    KnxDatapointType_DPT_Invert KnxDatapointType = 12
+    KnxDatapointType_DPT_DimSendStyle KnxDatapointType = 13
+    KnxDatapointType_DPT_InputSource KnxDatapointType = 14
+    KnxDatapointType_DPT_Reset KnxDatapointType = 15
+    KnxDatapointType_DPT_Ack KnxDatapointType = 16
+    KnxDatapointType_DPT_Trigger KnxDatapointType = 17
+    KnxDatapointType_DPT_Occupancy KnxDatapointType = 18
+    KnxDatapointType_DPT_Window_Door KnxDatapointType = 19
+    KnxDatapointType_DPT_LogicalFunction KnxDatapointType = 20
+    KnxDatapointType_DPT_Scene_AB KnxDatapointType = 21
+    KnxDatapointType_DPT_ShutterBlinds_Mode KnxDatapointType = 22
+    KnxDatapointType_DPT_DayNight KnxDatapointType = 23
+    KnxDatapointType_DPT_Heat_Cool KnxDatapointType = 24
+    KnxDatapointType_DPT_Switch_Control KnxDatapointType = 25
+    KnxDatapointType_DPT_Bool_Control KnxDatapointType = 26
+    KnxDatapointType_DPT_Enable_Control KnxDatapointType = 27
+    KnxDatapointType_DPT_Ramp_Control KnxDatapointType = 28
+    KnxDatapointType_DPT_Alarm_Control KnxDatapointType = 29
+    KnxDatapointType_DPT_BinaryValue_Control KnxDatapointType = 30
+    KnxDatapointType_DPT_Step_Control KnxDatapointType = 31
+    KnxDatapointType_DPT_Direction1_Control KnxDatapointType = 32
+    KnxDatapointType_DPT_Direction2_Control KnxDatapointType = 33
+    KnxDatapointType_DPT_Start_Control KnxDatapointType = 34
+    KnxDatapointType_DPT_State_Control KnxDatapointType = 35
+    KnxDatapointType_DPT_Invert_Control KnxDatapointType = 36
+    KnxDatapointType_DPT_Control_Dimming KnxDatapointType = 37
+    KnxDatapointType_DPT_Control_Blinds KnxDatapointType = 38
+    KnxDatapointType_DPT_Char_ASCII KnxDatapointType = 39
+    KnxDatapointType_DPT_Char_8859_1 KnxDatapointType = 40
+    KnxDatapointType_DPT_Scaling KnxDatapointType = 41
+    KnxDatapointType_DPT_Angle KnxDatapointType = 42
+    KnxDatapointType_DPT_Percent_U8 KnxDatapointType = 43
+    KnxDatapointType_DPT_DecimalFactor KnxDatapointType = 44
+    KnxDatapointType_DPT_Tariff KnxDatapointType = 45
+    KnxDatapointType_DPT_Value_1_Ucount KnxDatapointType = 46
+    KnxDatapointType_DPT_FanStage KnxDatapointType = 47
+    KnxDatapointType_DPT_Percent_V8 KnxDatapointType = 48
+    KnxDatapointType_DPT_Value_1_Count KnxDatapointType = 49
+    KnxDatapointType_DPT_Status_Mode3 KnxDatapointType = 50
+    KnxDatapointType_DPT_Value_2_Ucount KnxDatapointType = 51
+    KnxDatapointType_DPT_TimePeriodMsec KnxDatapointType = 52
+    KnxDatapointType_DPT_TimePeriod10Msec KnxDatapointType = 53
+    KnxDatapointType_DPT_TimePeriod100Msec KnxDatapointType = 54
+    KnxDatapointType_DPT_TimePeriodSec KnxDatapointType = 55
+    KnxDatapointType_DPT_TimePeriodMin KnxDatapointType = 56
+    KnxDatapointType_DPT_TimePeriodHrs KnxDatapointType = 57
+    KnxDatapointType_DPT_PropDataType KnxDatapointType = 58
+    KnxDatapointType_DPT_Length_mm KnxDatapointType = 59
+    KnxDatapointType_DPT_UElCurrentmA KnxDatapointType = 60
+    KnxDatapointType_DPT_Brightness KnxDatapointType = 61
+    KnxDatapointType_DPT_Absolute_Colour_Temperature KnxDatapointType = 62
+    KnxDatapointType_DPT_Value_2_Count KnxDatapointType = 63
+    KnxDatapointType_DPT_DeltaTimeMsec KnxDatapointType = 64
+    KnxDatapointType_DPT_DeltaTime10Msec KnxDatapointType = 65
+    KnxDatapointType_DPT_DeltaTime100Msec KnxDatapointType = 66
+    KnxDatapointType_DPT_DeltaTimeSec KnxDatapointType = 67
+    KnxDatapointType_DPT_DeltaTimeMin KnxDatapointType = 68
+    KnxDatapointType_DPT_DeltaTimeHrs KnxDatapointType = 69
+    KnxDatapointType_DPT_Percent_V16 KnxDatapointType = 70
+    KnxDatapointType_DPT_Rotation_Angle KnxDatapointType = 71
+    KnxDatapointType_DPT_Length_m KnxDatapointType = 72
+    KnxDatapointType_DPT_Value_Temp KnxDatapointType = 73
+    KnxDatapointType_DPT_Value_Tempd KnxDatapointType = 74
+    KnxDatapointType_DPT_Value_Tempa KnxDatapointType = 75
+    KnxDatapointType_DPT_Value_Lux KnxDatapointType = 76
+    KnxDatapointType_DPT_Value_Wsp KnxDatapointType = 77
+    KnxDatapointType_DPT_Value_Pres KnxDatapointType = 78
+    KnxDatapointType_DPT_Value_Humidity KnxDatapointType = 79
+    KnxDatapointType_DPT_Value_AirQuality KnxDatapointType = 80
+    KnxDatapointType_DPT_Value_AirFlow KnxDatapointType = 81
+    KnxDatapointType_DPT_Value_Time1 KnxDatapointType = 82
+    KnxDatapointType_DPT_Value_Time2 KnxDatapointType = 83
+    KnxDatapointType_DPT_Value_Volt KnxDatapointType = 84
+    KnxDatapointType_DPT_Value_Curr KnxDatapointType = 85
+    KnxDatapointType_DPT_PowerDensity KnxDatapointType = 86
+    KnxDatapointType_DPT_KelvinPerPercent KnxDatapointType = 87
+    KnxDatapointType_DPT_Power KnxDatapointType = 88
+    KnxDatapointType_DPT_Value_Volume_Flow KnxDatapointType = 89
+    KnxDatapointType_DPT_Rain_Amount KnxDatapointType = 90
+    KnxDatapointType_DPT_Value_Temp_F KnxDatapointType = 91
+    KnxDatapointType_DPT_Value_Wsp_kmh KnxDatapointType = 92
+    KnxDatapointType_DPT_Value_Absolute_Humidity KnxDatapointType = 93
+    KnxDatapointType_DPT_Concentration_ygm3 KnxDatapointType = 94
+    KnxDatapointType_DPT_TimeOfDay KnxDatapointType = 95
+    KnxDatapointType_DPT_Date KnxDatapointType = 96
+    KnxDatapointType_DPT_Value_4_Ucount KnxDatapointType = 97
+    KnxDatapointType_DPT_LongTimePeriod_Sec KnxDatapointType = 98
+    KnxDatapointType_DPT_LongTimePeriod_Min KnxDatapointType = 99
+    KnxDatapointType_DPT_LongTimePeriod_Hrs KnxDatapointType = 100
+    KnxDatapointType_DPT_VolumeLiquid_Litre KnxDatapointType = 101
+    KnxDatapointType_DPT_Volume_m_3 KnxDatapointType = 102
+    KnxDatapointType_DPT_Value_4_Count KnxDatapointType = 103
+    KnxDatapointType_DPT_FlowRate_m3h KnxDatapointType = 104
+    KnxDatapointType_DPT_ActiveEnergy KnxDatapointType = 105
+    KnxDatapointType_DPT_ApparantEnergy KnxDatapointType = 106
+    KnxDatapointType_DPT_ReactiveEnergy KnxDatapointType = 107
+    KnxDatapointType_DPT_ActiveEnergy_kWh KnxDatapointType = 108
+    KnxDatapointType_DPT_ApparantEnergy_kVAh KnxDatapointType = 109
+    KnxDatapointType_DPT_ReactiveEnergy_kVARh KnxDatapointType = 110
+    KnxDatapointType_DPT_ActiveEnergy_MWh KnxDatapointType = 111
+    KnxDatapointType_DPT_LongDeltaTimeSec KnxDatapointType = 112
+    KnxDatapointType_DPT_DeltaVolumeLiquid_Litre KnxDatapointType = 113
+    KnxDatapointType_DPT_DeltaVolume_m_3 KnxDatapointType = 114
+    KnxDatapointType_DPT_Value_Acceleration KnxDatapointType = 115
+    KnxDatapointType_DPT_Value_Acceleration_Angular KnxDatapointType = 116
+    KnxDatapointType_DPT_Value_Activation_Energy KnxDatapointType = 117
+    KnxDatapointType_DPT_Value_Activity KnxDatapointType = 118
+    KnxDatapointType_DPT_Value_Mol KnxDatapointType = 119
+    KnxDatapointType_DPT_Value_Amplitude KnxDatapointType = 120
+    KnxDatapointType_DPT_Value_AngleRad KnxDatapointType = 121
+    KnxDatapointType_DPT_Value_AngleDeg KnxDatapointType = 122
+    KnxDatapointType_DPT_Value_Angular_Momentum KnxDatapointType = 123
+    KnxDatapointType_DPT_Value_Angular_Velocity KnxDatapointType = 124
+    KnxDatapointType_DPT_Value_Area KnxDatapointType = 125
+    KnxDatapointType_DPT_Value_Capacitance KnxDatapointType = 126
+    KnxDatapointType_DPT_Value_Charge_DensitySurface KnxDatapointType = 127
+    KnxDatapointType_DPT_Value_Charge_DensityVolume KnxDatapointType = 128
+    KnxDatapointType_DPT_Value_Compressibility KnxDatapointType = 129
+    KnxDatapointType_DPT_Value_Conductance KnxDatapointType = 130
+    KnxDatapointType_DPT_Value_Electrical_Conductivity KnxDatapointType = 131
+    KnxDatapointType_DPT_Value_Density KnxDatapointType = 132
+    KnxDatapointType_DPT_Value_Electric_Charge KnxDatapointType = 133
+    KnxDatapointType_DPT_Value_Electric_Current KnxDatapointType = 134
+    KnxDatapointType_DPT_Value_Electric_CurrentDensity KnxDatapointType = 135
+    KnxDatapointType_DPT_Value_Electric_DipoleMoment KnxDatapointType = 136
+    KnxDatapointType_DPT_Value_Electric_Displacement KnxDatapointType = 137
+    KnxDatapointType_DPT_Value_Electric_FieldStrength KnxDatapointType = 138
+    KnxDatapointType_DPT_Value_Electric_Flux KnxDatapointType = 139
+    KnxDatapointType_DPT_Value_Electric_FluxDensity KnxDatapointType = 140
+    KnxDatapointType_DPT_Value_Electric_Polarization KnxDatapointType = 141
+    KnxDatapointType_DPT_Value_Electric_Potential KnxDatapointType = 142
+    KnxDatapointType_DPT_Value_Electric_PotentialDifference KnxDatapointType = 143
+    KnxDatapointType_DPT_Value_ElectromagneticMoment KnxDatapointType = 144
+    KnxDatapointType_DPT_Value_Electromotive_Force KnxDatapointType = 145
+    KnxDatapointType_DPT_Value_Energy KnxDatapointType = 146
+    KnxDatapointType_DPT_Value_Force KnxDatapointType = 147
+    KnxDatapointType_DPT_Value_Frequency KnxDatapointType = 148
+    KnxDatapointType_DPT_Value_Angular_Frequency KnxDatapointType = 149
+    KnxDatapointType_DPT_Value_Heat_Capacity KnxDatapointType = 150
+    KnxDatapointType_DPT_Value_Heat_FlowRate KnxDatapointType = 151
+    KnxDatapointType_DPT_Value_Heat_Quantity KnxDatapointType = 152
+    KnxDatapointType_DPT_Value_Impedance KnxDatapointType = 153
+    KnxDatapointType_DPT_Value_Length KnxDatapointType = 154
+    KnxDatapointType_DPT_Value_Light_Quantity KnxDatapointType = 155
+    KnxDatapointType_DPT_Value_Luminance KnxDatapointType = 156
+    KnxDatapointType_DPT_Value_Luminous_Flux KnxDatapointType = 157
+    KnxDatapointType_DPT_Value_Luminous_Intensity KnxDatapointType = 158
+    KnxDatapointType_DPT_Value_Magnetic_FieldStrength KnxDatapointType = 159
+    KnxDatapointType_DPT_Value_Magnetic_Flux KnxDatapointType = 160
+    KnxDatapointType_DPT_Value_Magnetic_FluxDensity KnxDatapointType = 161
+    KnxDatapointType_DPT_Value_Magnetic_Moment KnxDatapointType = 162
+    KnxDatapointType_DPT_Value_Magnetic_Polarization KnxDatapointType = 163
+    KnxDatapointType_DPT_Value_Magnetization KnxDatapointType = 164
+    KnxDatapointType_DPT_Value_MagnetomotiveForce KnxDatapointType = 165
+    KnxDatapointType_DPT_Value_Mass KnxDatapointType = 166
+    KnxDatapointType_DPT_Value_MassFlux KnxDatapointType = 167
+    KnxDatapointType_DPT_Value_Momentum KnxDatapointType = 168
+    KnxDatapointType_DPT_Value_Phase_AngleRad KnxDatapointType = 169
+    KnxDatapointType_DPT_Value_Phase_AngleDeg KnxDatapointType = 170
+    KnxDatapointType_DPT_Value_Power KnxDatapointType = 171
+    KnxDatapointType_DPT_Value_Power_Factor KnxDatapointType = 172
+    KnxDatapointType_DPT_Value_Pressure KnxDatapointType = 173
+    KnxDatapointType_DPT_Value_Reactance KnxDatapointType = 174
+    KnxDatapointType_DPT_Value_Resistance KnxDatapointType = 175
+    KnxDatapointType_DPT_Value_Resistivity KnxDatapointType = 176
+    KnxDatapointType_DPT_Value_SelfInductance KnxDatapointType = 177
+    KnxDatapointType_DPT_Value_SolidAngle KnxDatapointType = 178
+    KnxDatapointType_DPT_Value_Sound_Intensity KnxDatapointType = 179
+    KnxDatapointType_DPT_Value_Speed KnxDatapointType = 180
+    KnxDatapointType_DPT_Value_Stress KnxDatapointType = 181
+    KnxDatapointType_DPT_Value_Surface_Tension KnxDatapointType = 182
+    KnxDatapointType_DPT_Value_Common_Temperature KnxDatapointType = 183
+    KnxDatapointType_DPT_Value_Absolute_Temperature KnxDatapointType = 184
+    KnxDatapointType_DPT_Value_TemperatureDifference KnxDatapointType = 185
+    KnxDatapointType_DPT_Value_Thermal_Capacity KnxDatapointType = 186
+    KnxDatapointType_DPT_Value_Thermal_Conductivity KnxDatapointType = 187
+    KnxDatapointType_DPT_Value_ThermoelectricPower KnxDatapointType = 188
+    KnxDatapointType_DPT_Value_Time KnxDatapointType = 189
+    KnxDatapointType_DPT_Value_Torque KnxDatapointType = 190
+    KnxDatapointType_DPT_Value_Volume KnxDatapointType = 191
+    KnxDatapointType_DPT_Value_Volume_Flux KnxDatapointType = 192
+    KnxDatapointType_DPT_Value_Weight KnxDatapointType = 193
+    KnxDatapointType_DPT_Value_Work KnxDatapointType = 194
+    KnxDatapointType_DPT_Volume_Flux_Meter KnxDatapointType = 195
+    KnxDatapointType_DPT_Volume_Flux_ls KnxDatapointType = 196
+    KnxDatapointType_DPT_Access_Data KnxDatapointType = 197
+    KnxDatapointType_DPT_String_ASCII KnxDatapointType = 198
+    KnxDatapointType_DPT_String_8859_1 KnxDatapointType = 199
+    KnxDatapointType_DPT_SceneNumber KnxDatapointType = 200
+    KnxDatapointType_DPT_SceneControl KnxDatapointType = 201
+    KnxDatapointType_DPT_DateTime KnxDatapointType = 202
+    KnxDatapointType_DPT_SCLOMode KnxDatapointType = 203
+    KnxDatapointType_DPT_BuildingMode KnxDatapointType = 204
+    KnxDatapointType_DPT_OccMode KnxDatapointType = 205
+    KnxDatapointType_DPT_Priority KnxDatapointType = 206
+    KnxDatapointType_DPT_LightApplicationMode KnxDatapointType = 207
+    KnxDatapointType_DPT_ApplicationArea KnxDatapointType = 208
+    KnxDatapointType_DPT_AlarmClassType KnxDatapointType = 209
+    KnxDatapointType_DPT_PSUMode KnxDatapointType = 210
+    KnxDatapointType_DPT_ErrorClass_System KnxDatapointType = 211
+    KnxDatapointType_DPT_ErrorClass_HVAC KnxDatapointType = 212
+    KnxDatapointType_DPT_Time_Delay KnxDatapointType = 213
+    KnxDatapointType_DPT_Beaufort_Wind_Force_Scale KnxDatapointType = 214
+    KnxDatapointType_DPT_SensorSelect KnxDatapointType = 215
+    KnxDatapointType_DPT_ActuatorConnectType KnxDatapointType = 216
+    KnxDatapointType_DPT_Cloud_Cover KnxDatapointType = 217
+    KnxDatapointType_DPT_PowerReturnMode KnxDatapointType = 218
+    KnxDatapointType_DPT_FuelType KnxDatapointType = 219
+    KnxDatapointType_DPT_BurnerType KnxDatapointType = 220
+    KnxDatapointType_DPT_HVACMode KnxDatapointType = 221
+    KnxDatapointType_DPT_DHWMode KnxDatapointType = 222
+    KnxDatapointType_DPT_LoadPriority KnxDatapointType = 223
+    KnxDatapointType_DPT_HVACContrMode KnxDatapointType = 224
+    KnxDatapointType_DPT_HVACEmergMode KnxDatapointType = 225
+    KnxDatapointType_DPT_ChangeoverMode KnxDatapointType = 226
+    KnxDatapointType_DPT_ValveMode KnxDatapointType = 227
+    KnxDatapointType_DPT_DamperMode KnxDatapointType = 228
+    KnxDatapointType_DPT_HeaterMode KnxDatapointType = 229
+    KnxDatapointType_DPT_FanMode KnxDatapointType = 230
+    KnxDatapointType_DPT_MasterSlaveMode KnxDatapointType = 231
+    KnxDatapointType_DPT_StatusRoomSetp KnxDatapointType = 232
+    KnxDatapointType_DPT_Metering_DeviceType KnxDatapointType = 233
+    KnxDatapointType_DPT_HumDehumMode KnxDatapointType = 234
+    KnxDatapointType_DPT_EnableHCStage KnxDatapointType = 235
+    KnxDatapointType_DPT_ADAType KnxDatapointType = 236
+    KnxDatapointType_DPT_BackupMode KnxDatapointType = 237
+    KnxDatapointType_DPT_StartSynchronization KnxDatapointType = 238
+    KnxDatapointType_DPT_Behaviour_Lock_Unlock KnxDatapointType = 239
+    KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down KnxDatapointType = 240
+    KnxDatapointType_DPT_DALI_Fade_Time KnxDatapointType = 241
+    KnxDatapointType_DPT_BlinkingMode KnxDatapointType = 242
+    KnxDatapointType_DPT_LightControlMode KnxDatapointType = 243
+    KnxDatapointType_DPT_SwitchPBModel KnxDatapointType = 244
+    KnxDatapointType_DPT_PBAction KnxDatapointType = 245
+    KnxDatapointType_DPT_DimmPBModel KnxDatapointType = 246
+    KnxDatapointType_DPT_SwitchOnMode KnxDatapointType = 247
+    KnxDatapointType_DPT_LoadTypeSet KnxDatapointType = 248
+    KnxDatapointType_DPT_LoadTypeDetected KnxDatapointType = 249
+    KnxDatapointType_DPT_Converter_Test_Control KnxDatapointType = 250
+    KnxDatapointType_DPT_SABExcept_Behaviour KnxDatapointType = 251
+    KnxDatapointType_DPT_SABBehaviour_Lock_Unlock KnxDatapointType = 252
+    KnxDatapointType_DPT_SSSBMode KnxDatapointType = 253
+    KnxDatapointType_DPT_BlindsControlMode KnxDatapointType = 254
+    KnxDatapointType_DPT_CommMode KnxDatapointType = 255
+    KnxDatapointType_DPT_AddInfoTypes KnxDatapointType = 256
+    KnxDatapointType_DPT_RF_ModeSelect KnxDatapointType = 257
+    KnxDatapointType_DPT_RF_FilterSelect KnxDatapointType = 258
+    KnxDatapointType_DPT_StatusGen KnxDatapointType = 259
+    KnxDatapointType_DPT_Device_Control KnxDatapointType = 260
+    KnxDatapointType_DPT_ForceSign KnxDatapointType = 261
+    KnxDatapointType_DPT_ForceSignCool KnxDatapointType = 262
+    KnxDatapointType_DPT_StatusRHC KnxDatapointType = 263
+    KnxDatapointType_DPT_StatusSDHWC KnxDatapointType = 264
+    KnxDatapointType_DPT_FuelTypeSet KnxDatapointType = 265
+    KnxDatapointType_DPT_StatusRCC KnxDatapointType = 266
+    KnxDatapointType_DPT_StatusAHU KnxDatapointType = 267
+    KnxDatapointType_DPT_CombinedStatus_RTSM KnxDatapointType = 268
+    KnxDatapointType_DPT_LightActuatorErrorInfo KnxDatapointType = 269
+    KnxDatapointType_DPT_RF_ModeInfo KnxDatapointType = 270
+    KnxDatapointType_DPT_RF_FilterInfo KnxDatapointType = 271
+    KnxDatapointType_DPT_Channel_Activation_8 KnxDatapointType = 272
+    KnxDatapointType_DPT_StatusDHWC KnxDatapointType = 273
+    KnxDatapointType_DPT_StatusRHCC KnxDatapointType = 274
+    KnxDatapointType_DPT_CombinedStatus_HVA KnxDatapointType = 275
+    KnxDatapointType_DPT_CombinedStatus_RTC KnxDatapointType = 276
+    KnxDatapointType_DPT_Media KnxDatapointType = 277
+    KnxDatapointType_DPT_Channel_Activation_16 KnxDatapointType = 278
+    KnxDatapointType_DPT_OnOffAction KnxDatapointType = 279
+    KnxDatapointType_DPT_Alarm_Reaction KnxDatapointType = 280
+    KnxDatapointType_DPT_UpDown_Action KnxDatapointType = 281
+    KnxDatapointType_DPT_HVAC_PB_Action KnxDatapointType = 282
+    KnxDatapointType_DPT_DoubleNibble KnxDatapointType = 283
+    KnxDatapointType_DPT_SceneInfo KnxDatapointType = 284
+    KnxDatapointType_DPT_CombinedInfoOnOff KnxDatapointType = 285
+    KnxDatapointType_DPT_ActiveEnergy_V64 KnxDatapointType = 286
+    KnxDatapointType_DPT_ApparantEnergy_V64 KnxDatapointType = 287
+    KnxDatapointType_DPT_ReactiveEnergy_V64 KnxDatapointType = 288
+    KnxDatapointType_DPT_Channel_Activation_24 KnxDatapointType = 289
+    KnxDatapointType_DPT_HVACModeNext KnxDatapointType = 290
+    KnxDatapointType_DPT_DHWModeNext KnxDatapointType = 291
+    KnxDatapointType_DPT_OccModeNext KnxDatapointType = 292
+    KnxDatapointType_DPT_BuildingModeNext KnxDatapointType = 293
+    KnxDatapointType_DPT_Version KnxDatapointType = 294
+    KnxDatapointType_DPT_AlarmInfo KnxDatapointType = 295
+    KnxDatapointType_DPT_TempRoomSetpSetF16_3 KnxDatapointType = 296
+    KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3 KnxDatapointType = 297
+    KnxDatapointType_DPT_Scaling_Speed KnxDatapointType = 298
+    KnxDatapointType_DPT_Scaling_Step_Time KnxDatapointType = 299
+    KnxDatapointType_DPT_MeteringValue KnxDatapointType = 300
+    KnxDatapointType_DPT_MBus_Address KnxDatapointType = 301
+    KnxDatapointType_DPT_Colour_RGB KnxDatapointType = 302
+    KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII KnxDatapointType = 303
+    KnxDatapointType_DPT_Tariff_ActiveEnergy KnxDatapointType = 304
+    KnxDatapointType_DPT_Prioritised_Mode_Control KnxDatapointType = 305
+    KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic KnxDatapointType = 306
+    KnxDatapointType_DPT_DALI_Diagnostics KnxDatapointType = 307
+    KnxDatapointType_DPT_CombinedPosition KnxDatapointType = 308
+    KnxDatapointType_DPT_StatusSAB KnxDatapointType = 309
+    KnxDatapointType_DPT_Colour_xyY KnxDatapointType = 310
+    KnxDatapointType_DPT_Converter_Status KnxDatapointType = 311
+    KnxDatapointType_DPT_Converter_Test_Result KnxDatapointType = 312
+    KnxDatapointType_DPT_Battery_Info KnxDatapointType = 313
+    KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition KnxDatapointType = 314
+    KnxDatapointType_DPT_Brightness_Colour_Temperature_Control KnxDatapointType = 315
+    KnxDatapointType_DPT_Colour_RGBW KnxDatapointType = 316
+    KnxDatapointType_DPT_Relative_Control_RGBW KnxDatapointType = 317
+    KnxDatapointType_DPT_Relative_Control_RGB KnxDatapointType = 318
+    KnxDatapointType_DPT_GeographicalLocation KnxDatapointType = 319
+    KnxDatapointType_DPT_TempRoomSetpSetF16_4 KnxDatapointType = 320
+    KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4 KnxDatapointType = 321
 )
 
 
@@ -101,625 +368,3562 @@ func (e KnxDatapointType) Number() uint16 {
         case 10: { /* '10' */
             return 10
         }
+        case 100: { /* '100' */
+            return 102
+        }
+        case 101: { /* '101' */
+            return 1200
+        }
+        case 102: { /* '102' */
+            return 1201
+        }
+        case 103: { /* '103' */
+            return 1
+        }
+        case 104: { /* '104' */
+            return 2
+        }
+        case 105: { /* '105' */
+            return 10
+        }
+        case 106: { /* '106' */
+            return 11
+        }
+        case 107: { /* '107' */
+            return 12
+        }
+        case 108: { /* '108' */
+            return 13
+        }
+        case 109: { /* '109' */
+            return 14
+        }
         case 11: { /* '11' */
             return 11
         }
+        case 110: { /* '110' */
+            return 15
+        }
+        case 111: { /* '111' */
+            return 16
+        }
+        case 112: { /* '112' */
+            return 100
+        }
+        case 113: { /* '113' */
+            return 1200
+        }
+        case 114: { /* '114' */
+            return 1201
+        }
+        case 115: { /* '115' */
+            return 0
+        }
+        case 116: { /* '116' */
+            return 1
+        }
+        case 117: { /* '117' */
+            return 2
+        }
+        case 118: { /* '118' */
+            return 3
+        }
+        case 119: { /* '119' */
+            return 4
+        }
         case 12: { /* '12' */
             return 12
         }
+        case 120: { /* '120' */
+            return 5
+        }
+        case 121: { /* '121' */
+            return 6
+        }
+        case 122: { /* '122' */
+            return 7
+        }
+        case 123: { /* '123' */
+            return 8
+        }
+        case 124: { /* '124' */
+            return 9
+        }
+        case 125: { /* '125' */
+            return 10
+        }
+        case 126: { /* '126' */
+            return 11
+        }
+        case 127: { /* '127' */
+            return 12
+        }
+        case 128: { /* '128' */
+            return 13
+        }
+        case 129: { /* '129' */
+            return 14
+        }
         case 13: { /* '13' */
             return 13
         }
+        case 130: { /* '130' */
+            return 15
+        }
+        case 131: { /* '131' */
+            return 16
+        }
+        case 132: { /* '132' */
+            return 17
+        }
+        case 133: { /* '133' */
+            return 18
+        }
+        case 134: { /* '134' */
+            return 19
+        }
+        case 135: { /* '135' */
+            return 20
+        }
+        case 136: { /* '136' */
+            return 21
+        }
+        case 137: { /* '137' */
+            return 22
+        }
+        case 138: { /* '138' */
+            return 23
+        }
+        case 139: { /* '139' */
+            return 24
+        }
         case 14: { /* '14' */
             return 14
         }
+        case 140: { /* '140' */
+            return 25
+        }
+        case 141: { /* '141' */
+            return 26
+        }
+        case 142: { /* '142' */
+            return 27
+        }
+        case 143: { /* '143' */
+            return 28
+        }
+        case 144: { /* '144' */
+            return 29
+        }
+        case 145: { /* '145' */
+            return 30
+        }
+        case 146: { /* '146' */
+            return 31
+        }
+        case 147: { /* '147' */
+            return 32
+        }
+        case 148: { /* '148' */
+            return 33
+        }
+        case 149: { /* '149' */
+            return 34
+        }
         case 15: { /* '15' */
             return 15
         }
+        case 150: { /* '150' */
+            return 35
+        }
+        case 151: { /* '151' */
+            return 36
+        }
+        case 152: { /* '152' */
+            return 37
+        }
+        case 153: { /* '153' */
+            return 38
+        }
+        case 154: { /* '154' */
+            return 39
+        }
+        case 155: { /* '155' */
+            return 40
+        }
+        case 156: { /* '156' */
+            return 41
+        }
+        case 157: { /* '157' */
+            return 42
+        }
+        case 158: { /* '158' */
+            return 43
+        }
+        case 159: { /* '159' */
+            return 44
+        }
         case 16: { /* '16' */
             return 16
         }
+        case 160: { /* '160' */
+            return 45
+        }
+        case 161: { /* '161' */
+            return 46
+        }
+        case 162: { /* '162' */
+            return 47
+        }
+        case 163: { /* '163' */
+            return 48
+        }
+        case 164: { /* '164' */
+            return 49
+        }
+        case 165: { /* '165' */
+            return 50
+        }
+        case 166: { /* '166' */
+            return 51
+        }
+        case 167: { /* '167' */
+            return 52
+        }
+        case 168: { /* '168' */
+            return 53
+        }
+        case 169: { /* '169' */
+            return 54
+        }
         case 17: { /* '17' */
             return 17
         }
+        case 170: { /* '170' */
+            return 55
+        }
+        case 171: { /* '171' */
+            return 56
+        }
+        case 172: { /* '172' */
+            return 57
+        }
+        case 173: { /* '173' */
+            return 58
+        }
+        case 174: { /* '174' */
+            return 59
+        }
+        case 175: { /* '175' */
+            return 60
+        }
+        case 176: { /* '176' */
+            return 61
+        }
+        case 177: { /* '177' */
+            return 62
+        }
+        case 178: { /* '178' */
+            return 63
+        }
+        case 179: { /* '179' */
+            return 64
+        }
         case 18: { /* '18' */
             return 18
         }
+        case 180: { /* '180' */
+            return 65
+        }
+        case 181: { /* '181' */
+            return 66
+        }
+        case 182: { /* '182' */
+            return 67
+        }
+        case 183: { /* '183' */
+            return 68
+        }
+        case 184: { /* '184' */
+            return 69
+        }
+        case 185: { /* '185' */
+            return 70
+        }
+        case 186: { /* '186' */
+            return 71
+        }
+        case 187: { /* '187' */
+            return 72
+        }
+        case 188: { /* '188' */
+            return 73
+        }
+        case 189: { /* '189' */
+            return 74
+        }
         case 19: { /* '19' */
             return 19
         }
+        case 190: { /* '190' */
+            return 75
+        }
+        case 191: { /* '191' */
+            return 76
+        }
+        case 192: { /* '192' */
+            return 77
+        }
+        case 193: { /* '193' */
+            return 78
+        }
+        case 194: { /* '194' */
+            return 79
+        }
+        case 195: { /* '195' */
+            return 1200
+        }
+        case 196: { /* '196' */
+            return 1201
+        }
+        case 197: { /* '197' */
+            return 0
+        }
+        case 198: { /* '198' */
+            return 0
+        }
+        case 199: { /* '199' */
+            return 1
+        }
         case 2: { /* '2' */
             return 2
         }
         case 20: { /* '20' */
-            return 20
+            return 21
+        }
+        case 200: { /* '200' */
+            return 1
+        }
+        case 201: { /* '201' */
+            return 1
+        }
+        case 202: { /* '202' */
+            return 1
+        }
+        case 203: { /* '203' */
+            return 1
+        }
+        case 204: { /* '204' */
+            return 2
+        }
+        case 205: { /* '205' */
+            return 3
+        }
+        case 206: { /* '206' */
+            return 4
+        }
+        case 207: { /* '207' */
+            return 5
+        }
+        case 208: { /* '208' */
+            return 6
+        }
+        case 209: { /* '209' */
+            return 7
         }
         case 21: { /* '21' */
+            return 22
+        }
+        case 210: { /* '210' */
+            return 8
+        }
+        case 211: { /* '211' */
+            return 11
+        }
+        case 212: { /* '212' */
+            return 12
+        }
+        case 213: { /* '213' */
+            return 13
+        }
+        case 214: { /* '214' */
+            return 14
+        }
+        case 215: { /* '215' */
+            return 17
+        }
+        case 216: { /* '216' */
+            return 20
+        }
+        case 217: { /* '217' */
             return 21
         }
-        case 22: { /* '22' */
+        case 218: { /* '218' */
             return 22
         }
-        case 23: { /* '23' */
+        case 219: { /* '219' */
+            return 100
+        }
+        case 22: { /* '22' */
             return 23
         }
+        case 220: { /* '220' */
+            return 101
+        }
+        case 221: { /* '221' */
+            return 102
+        }
+        case 222: { /* '222' */
+            return 103
+        }
+        case 223: { /* '223' */
+            return 104
+        }
+        case 224: { /* '224' */
+            return 105
+        }
+        case 225: { /* '225' */
+            return 106
+        }
+        case 226: { /* '226' */
+            return 107
+        }
+        case 227: { /* '227' */
+            return 108
+        }
+        case 228: { /* '228' */
+            return 109
+        }
+        case 229: { /* '229' */
+            return 110
+        }
+        case 23: { /* '23' */
+            return 24
+        }
+        case 230: { /* '230' */
+            return 111
+        }
+        case 231: { /* '231' */
+            return 112
+        }
+        case 232: { /* '232' */
+            return 113
+        }
+        case 233: { /* '233' */
+            return 114
+        }
+        case 234: { /* '234' */
+            return 115
+        }
+        case 235: { /* '235' */
+            return 116
+        }
+        case 236: { /* '236' */
+            return 120
+        }
+        case 237: { /* '237' */
+            return 121
+        }
+        case 238: { /* '238' */
+            return 122
+        }
+        case 239: { /* '239' */
+            return 600
+        }
         case 24: { /* '24' */
-            return 25
+            return 100
+        }
+        case 240: { /* '240' */
+            return 601
+        }
+        case 241: { /* '241' */
+            return 602
+        }
+        case 242: { /* '242' */
+            return 603
+        }
+        case 243: { /* '243' */
+            return 604
+        }
+        case 244: { /* '244' */
+            return 605
+        }
+        case 245: { /* '245' */
+            return 606
+        }
+        case 246: { /* '246' */
+            return 607
+        }
+        case 247: { /* '247' */
+            return 608
+        }
+        case 248: { /* '248' */
+            return 609
+        }
+        case 249: { /* '249' */
+            return 610
         }
         case 25: { /* '25' */
-            return 26
+            return 1
+        }
+        case 250: { /* '250' */
+            return 611
+        }
+        case 251: { /* '251' */
+            return 801
+        }
+        case 252: { /* '252' */
+            return 802
+        }
+        case 253: { /* '253' */
+            return 803
+        }
+        case 254: { /* '254' */
+            return 804
+        }
+        case 255: { /* '255' */
+            return 1000
+        }
+        case 256: { /* '256' */
+            return 1001
+        }
+        case 257: { /* '257' */
+            return 1002
+        }
+        case 258: { /* '258' */
+            return 1003
+        }
+        case 259: { /* '259' */
+            return 1
         }
         case 26: { /* '26' */
-            return 27
+            return 2
+        }
+        case 260: { /* '260' */
+            return 2
+        }
+        case 261: { /* '261' */
+            return 100
+        }
+        case 262: { /* '262' */
+            return 101
+        }
+        case 263: { /* '263' */
+            return 102
+        }
+        case 264: { /* '264' */
+            return 103
+        }
+        case 265: { /* '265' */
+            return 104
+        }
+        case 266: { /* '266' */
+            return 105
+        }
+        case 267: { /* '267' */
+            return 106
+        }
+        case 268: { /* '268' */
+            return 107
+        }
+        case 269: { /* '269' */
+            return 601
         }
         case 27: { /* '27' */
-            return 29
+            return 3
         }
-        case 28: { /* '28' */
-            return 30
+        case 270: { /* '270' */
+            return 1000
+        }
+        case 271: { /* '271' */
+            return 1001
+        }
+        case 272: { /* '272' */
+            return 1010
+        }
+        case 273: { /* '273' */
+            return 100
+        }
+        case 274: { /* '274' */
+            return 101
+        }
+        case 275: { /* '275' */
+            return 102
+        }
+        case 276: { /* '276' */
+            return 103
+        }
+        case 277: { /* '277' */
+            return 1000
+        }
+        case 278: { /* '278' */
+            return 1010
+        }
+        case 279: { /* '279' */
+            return 1
+        }
+        case 28: { /* '28' */
+            return 4
+        }
+        case 280: { /* '280' */
+            return 2
+        }
+        case 281: { /* '281' */
+            return 3
+        }
+        case 282: { /* '282' */
+            return 102
+        }
+        case 283: { /* '283' */
+            return 1000
+        }
+        case 284: { /* '284' */
+            return 1
+        }
+        case 285: { /* '285' */
+            return 1
+        }
+        case 286: { /* '286' */
+            return 10
+        }
+        case 287: { /* '287' */
+            return 11
+        }
+        case 288: { /* '288' */
+            return 12
+        }
+        case 289: { /* '289' */
+            return 1010
+        }
+        case 29: { /* '29' */
+            return 5
+        }
+        case 290: { /* '290' */
+            return 100
+        }
+        case 291: { /* '291' */
+            return 102
+        }
+        case 292: { /* '292' */
+            return 104
+        }
+        case 293: { /* '293' */
+            return 105
+        }
+        case 294: { /* '294' */
+            return 1
+        }
+        case 295: { /* '295' */
+            return 1
+        }
+        case 296: { /* '296' */
+            return 100
+        }
+        case 297: { /* '297' */
+            return 101
+        }
+        case 298: { /* '298' */
+            return 1
+        }
+        case 299: { /* '299' */
+            return 2
+        }
+        case 3: { /* '3' */
+            return 3
+        }
+        case 30: { /* '30' */
+            return 6
+        }
+        case 300: { /* '300' */
+            return 1
+        }
+        case 301: { /* '301' */
+            return 1000
+        }
+        case 302: { /* '302' */
+            return 600
+        }
+        case 303: { /* '303' */
+            return 1
+        }
+        case 304: { /* '304' */
+            return 1
+        }
+        case 305: { /* '305' */
+            return 1
+        }
+        case 306: { /* '306' */
+            return 600
+        }
+        case 307: { /* '307' */
+            return 600
+        }
+        case 308: { /* '308' */
+            return 800
+        }
+        case 309: { /* '309' */
+            return 800
+        }
+        case 31: { /* '31' */
+            return 7
+        }
+        case 310: { /* '310' */
+            return 600
+        }
+        case 311: { /* '311' */
+            return 600
+        }
+        case 312: { /* '312' */
+            return 600
+        }
+        case 313: { /* '313' */
+            return 600
+        }
+        case 314: { /* '314' */
+            return 600
+        }
+        case 315: { /* '315' */
+            return 600
+        }
+        case 316: { /* '316' */
+            return 600
+        }
+        case 317: { /* '317' */
+            return 600
+        }
+        case 318: { /* '318' */
+            return 600
+        }
+        case 319: { /* '319' */
+            return 1
+        }
+        case 32: { /* '32' */
+            return 8
+        }
+        case 320: { /* '320' */
+            return 100
+        }
+        case 321: { /* '321' */
+            return 101
+        }
+        case 33: { /* '33' */
+            return 9
+        }
+        case 34: { /* '34' */
+            return 10
+        }
+        case 35: { /* '35' */
+            return 11
+        }
+        case 36: { /* '36' */
+            return 12
+        }
+        case 37: { /* '37' */
+            return 7
+        }
+        case 38: { /* '38' */
+            return 8
+        }
+        case 39: { /* '39' */
+            return 1
+        }
+        case 4: { /* '4' */
+            return 4
+        }
+        case 40: { /* '40' */
+            return 2
+        }
+        case 41: { /* '41' */
+            return 1
+        }
+        case 42: { /* '42' */
+            return 3
+        }
+        case 43: { /* '43' */
+            return 4
+        }
+        case 44: { /* '44' */
+            return 5
+        }
+        case 45: { /* '45' */
+            return 6
+        }
+        case 46: { /* '46' */
+            return 10
+        }
+        case 47: { /* '47' */
+            return 100
+        }
+        case 48: { /* '48' */
+            return 1
+        }
+        case 49: { /* '49' */
+            return 10
+        }
+        case 5: { /* '5' */
+            return 5
+        }
+        case 50: { /* '50' */
+            return 20
+        }
+        case 51: { /* '51' */
+            return 1
+        }
+        case 52: { /* '52' */
+            return 2
+        }
+        case 53: { /* '53' */
+            return 3
+        }
+        case 54: { /* '54' */
+            return 4
+        }
+        case 55: { /* '55' */
+            return 5
+        }
+        case 56: { /* '56' */
+            return 6
+        }
+        case 57: { /* '57' */
+            return 7
+        }
+        case 58: { /* '58' */
+            return 10
+        }
+        case 59: { /* '59' */
+            return 11
+        }
+        case 6: { /* '6' */
+            return 6
+        }
+        case 60: { /* '60' */
+            return 12
+        }
+        case 61: { /* '61' */
+            return 13
+        }
+        case 62: { /* '62' */
+            return 600
+        }
+        case 63: { /* '63' */
+            return 1
+        }
+        case 64: { /* '64' */
+            return 2
+        }
+        case 65: { /* '65' */
+            return 3
+        }
+        case 66: { /* '66' */
+            return 4
+        }
+        case 67: { /* '67' */
+            return 5
+        }
+        case 68: { /* '68' */
+            return 6
+        }
+        case 69: { /* '69' */
+            return 7
+        }
+        case 7: { /* '7' */
+            return 7
+        }
+        case 70: { /* '70' */
+            return 10
+        }
+        case 71: { /* '71' */
+            return 11
+        }
+        case 72: { /* '72' */
+            return 12
+        }
+        case 73: { /* '73' */
+            return 1
+        }
+        case 74: { /* '74' */
+            return 2
+        }
+        case 75: { /* '75' */
+            return 3
+        }
+        case 76: { /* '76' */
+            return 4
+        }
+        case 77: { /* '77' */
+            return 5
+        }
+        case 78: { /* '78' */
+            return 6
+        }
+        case 79: { /* '79' */
+            return 7
+        }
+        case 8: { /* '8' */
+            return 8
+        }
+        case 80: { /* '80' */
+            return 8
+        }
+        case 81: { /* '81' */
+            return 9
+        }
+        case 82: { /* '82' */
+            return 10
+        }
+        case 83: { /* '83' */
+            return 11
+        }
+        case 84: { /* '84' */
+            return 20
+        }
+        case 85: { /* '85' */
+            return 21
+        }
+        case 86: { /* '86' */
+            return 22
+        }
+        case 87: { /* '87' */
+            return 23
+        }
+        case 88: { /* '88' */
+            return 24
+        }
+        case 89: { /* '89' */
+            return 25
+        }
+        case 9: { /* '9' */
+            return 9
+        }
+        case 90: { /* '90' */
+            return 26
+        }
+        case 91: { /* '91' */
+            return 27
+        }
+        case 92: { /* '92' */
+            return 28
+        }
+        case 93: { /* '93' */
+            return 29
+        }
+        case 94: { /* '94' */
+            return 30
+        }
+        case 95: { /* '95' */
+            return 1
+        }
+        case 96: { /* '96' */
+            return 1
+        }
+        case 97: { /* '97' */
+            return 1
+        }
+        case 98: { /* '98' */
+            return 100
+        }
+        case 99: { /* '99' */
+            return 101
+        }
+        default: {
+            return 0
+        }
+    }
+}
+
+func (e KnxDatapointType) Name() string {
+    switch e  {
+        case 0: { /* '0' */
+            return "Unknown Datapoint Subtype"
+        }
+        case 1: { /* '1' */
+            return "switch"
+        }
+        case 10: { /* '10' */
+            return "start/stop"
+        }
+        case 100: { /* '100' */
+            return "counter timehrs (h)"
+        }
+        case 101: { /* '101' */
+            return "volume liquid (l)"
+        }
+        case 102: { /* '102' */
+            return "volume (m³)"
+        }
+        case 103: { /* '103' */
+            return "counter pulses (signed)"
+        }
+        case 104: { /* '104' */
+            return "flow rate (m³/h)"
+        }
+        case 105: { /* '105' */
+            return "active energy (Wh)"
+        }
+        case 106: { /* '106' */
+            return "apparant energy (VAh)"
+        }
+        case 107: { /* '107' */
+            return "reactive energy (VARh)"
+        }
+        case 108: { /* '108' */
+            return "active energy (kWh)"
+        }
+        case 109: { /* '109' */
+            return "apparant energy (kVAh)"
+        }
+        case 11: { /* '11' */
+            return "state"
+        }
+        case 110: { /* '110' */
+            return "reactive energy (kVARh)"
+        }
+        case 111: { /* '111' */
+            return "active energy (MWh)"
+        }
+        case 112: { /* '112' */
+            return "time lag (s)"
+        }
+        case 113: { /* '113' */
+            return "delta volume liquid (l)"
+        }
+        case 114: { /* '114' */
+            return "delta volume (m³)"
+        }
+        case 115: { /* '115' */
+            return "acceleration (m/s²)"
+        }
+        case 116: { /* '116' */
+            return "angular acceleration (rad/s²)"
+        }
+        case 117: { /* '117' */
+            return "activation energy (J/mol)"
+        }
+        case 118: { /* '118' */
+            return "radioactive activity (1/s)"
+        }
+        case 119: { /* '119' */
+            return "amount of substance (mol)"
+        }
+        case 12: { /* '12' */
+            return "invert"
+        }
+        case 120: { /* '120' */
+            return "amplitude"
+        }
+        case 121: { /* '121' */
+            return "angle (radiant)"
+        }
+        case 122: { /* '122' */
+            return "angle (degree)"
+        }
+        case 123: { /* '123' */
+            return "angular momentum (Js)"
+        }
+        case 124: { /* '124' */
+            return "angular velocity (rad/s)"
+        }
+        case 125: { /* '125' */
+            return "area (m*m)"
+        }
+        case 126: { /* '126' */
+            return "capacitance (F)"
+        }
+        case 127: { /* '127' */
+            return "flux density (C/m²)"
+        }
+        case 128: { /* '128' */
+            return "charge density (C/m³)"
+        }
+        case 129: { /* '129' */
+            return "compressibility (m²/N)"
+        }
+        case 13: { /* '13' */
+            return "dim send style"
+        }
+        case 130: { /* '130' */
+            return "conductance (S)"
+        }
+        case 131: { /* '131' */
+            return "conductivity  (S/m)"
+        }
+        case 132: { /* '132' */
+            return "density (kg/m³)"
+        }
+        case 133: { /* '133' */
+            return "electric charge (C)"
+        }
+        case 134: { /* '134' */
+            return "electric current (A)"
+        }
+        case 135: { /* '135' */
+            return "electric current density (A/m²)"
+        }
+        case 136: { /* '136' */
+            return "electric dipole moment (Cm)"
+        }
+        case 137: { /* '137' */
+            return "electric displacement (C/m²)"
+        }
+        case 138: { /* '138' */
+            return "electric field strength (V/m)"
+        }
+        case 139: { /* '139' */
+            return "electric flux (C)"
+        }
+        case 14: { /* '14' */
+            return "input source"
+        }
+        case 140: { /* '140' */
+            return "electric flux density (C/m²)"
+        }
+        case 141: { /* '141' */
+            return "electric polarization (C/m²)"
+        }
+        case 142: { /* '142' */
+            return "electric potential (V)"
+        }
+        case 143: { /* '143' */
+            return "electric potential difference (V)"
+        }
+        case 144: { /* '144' */
+            return "electromagnetic moment (Am²)"
+        }
+        case 145: { /* '145' */
+            return "electromotive force (V)"
+        }
+        case 146: { /* '146' */
+            return "energy (J)"
+        }
+        case 147: { /* '147' */
+            return "force (N)"
+        }
+        case 148: { /* '148' */
+            return "frequency (Hz)"
+        }
+        case 149: { /* '149' */
+            return "angular frequency (rad/s)"
+        }
+        case 15: { /* '15' */
+            return "reset"
+        }
+        case 150: { /* '150' */
+            return "heat capacity (J/K)"
+        }
+        case 151: { /* '151' */
+            return "heat flow rate (W)"
+        }
+        case 152: { /* '152' */
+            return "heat quantity"
+        }
+        case 153: { /* '153' */
+            return "impedance (Ω)"
+        }
+        case 154: { /* '154' */
+            return "length (m)"
+        }
+        case 155: { /* '155' */
+            return "light quantity (J)"
+        }
+        case 156: { /* '156' */
+            return "luminance (cd/m²)"
+        }
+        case 157: { /* '157' */
+            return "luminous flux (lm)"
+        }
+        case 158: { /* '158' */
+            return "luminous intensity (cd)"
+        }
+        case 159: { /* '159' */
+            return "magnetic field strength (A/m)"
+        }
+        case 16: { /* '16' */
+            return "acknowledge"
+        }
+        case 160: { /* '160' */
+            return "magnetic flux (Wb)"
+        }
+        case 161: { /* '161' */
+            return "magnetic flux density (T)"
+        }
+        case 162: { /* '162' */
+            return "magnetic moment (Am²)"
+        }
+        case 163: { /* '163' */
+            return "magnetic polarization (T)"
+        }
+        case 164: { /* '164' */
+            return "magnetization (A/m)"
+        }
+        case 165: { /* '165' */
+            return "magnetomotive force (A)"
+        }
+        case 166: { /* '166' */
+            return "mass (kg)"
+        }
+        case 167: { /* '167' */
+            return "mass flux (kg/s)"
+        }
+        case 168: { /* '168' */
+            return "momentum (N/s)"
+        }
+        case 169: { /* '169' */
+            return "phase angle (rad)"
+        }
+        case 17: { /* '17' */
+            return "trigger"
+        }
+        case 170: { /* '170' */
+            return "phase angle (°)"
+        }
+        case 171: { /* '171' */
+            return "power (W)"
+        }
+        case 172: { /* '172' */
+            return "power factor (cos Φ)"
+        }
+        case 173: { /* '173' */
+            return "pressure (Pa)"
+        }
+        case 174: { /* '174' */
+            return "reactance (Ω)"
+        }
+        case 175: { /* '175' */
+            return "resistance (Ω)"
+        }
+        case 176: { /* '176' */
+            return "resistivity (Ωm)"
+        }
+        case 177: { /* '177' */
+            return "self inductance (H)"
+        }
+        case 178: { /* '178' */
+            return "solid angle (sr)"
+        }
+        case 179: { /* '179' */
+            return "sound intensity (W/m²)"
+        }
+        case 18: { /* '18' */
+            return "occupancy"
+        }
+        case 180: { /* '180' */
+            return "speed (m/s)"
+        }
+        case 181: { /* '181' */
+            return "stress (Pa)"
+        }
+        case 182: { /* '182' */
+            return "surface tension (N/m)"
+        }
+        case 183: { /* '183' */
+            return "temperature (°C)"
+        }
+        case 184: { /* '184' */
+            return "temperature absolute (K)"
+        }
+        case 185: { /* '185' */
+            return "temperature difference (K)"
+        }
+        case 186: { /* '186' */
+            return "thermal capacity (J/K)"
+        }
+        case 187: { /* '187' */
+            return "thermal conductivity (W/mK)"
+        }
+        case 188: { /* '188' */
+            return "thermoelectric power (V/K)"
+        }
+        case 189: { /* '189' */
+            return "time (s)"
+        }
+        case 19: { /* '19' */
+            return "window/door"
+        }
+        case 190: { /* '190' */
+            return "torque (Nm)"
+        }
+        case 191: { /* '191' */
+            return "volume (m³)"
+        }
+        case 192: { /* '192' */
+            return "volume flux (m³/s)"
+        }
+        case 193: { /* '193' */
+            return "weight (N)"
+        }
+        case 194: { /* '194' */
+            return "work (J)"
+        }
+        case 195: { /* '195' */
+            return "volume flux for meters (m³/h)"
+        }
+        case 196: { /* '196' */
+            return "volume flux for meters (1/ls)"
+        }
+        case 197: { /* '197' */
+            return "entrance access"
+        }
+        case 198: { /* '198' */
+            return "Character String (ASCII)"
+        }
+        case 199: { /* '199' */
+            return "Character String (ISO 8859-1)"
+        }
+        case 2: { /* '2' */
+            return "boolean"
+        }
+        case 20: { /* '20' */
+            return "logical function"
+        }
+        case 200: { /* '200' */
+            return "scene number"
+        }
+        case 201: { /* '201' */
+            return "scene control"
+        }
+        case 202: { /* '202' */
+            return "date time"
+        }
+        case 203: { /* '203' */
+            return "SCLO mode"
+        }
+        case 204: { /* '204' */
+            return "building mode"
+        }
+        case 205: { /* '205' */
+            return "occupied"
+        }
+        case 206: { /* '206' */
+            return "priority"
+        }
+        case 207: { /* '207' */
+            return "light application mode"
+        }
+        case 208: { /* '208' */
+            return "light application area"
+        }
+        case 209: { /* '209' */
+            return "alarm class"
+        }
+        case 21: { /* '21' */
+            return "scene"
+        }
+        case 210: { /* '210' */
+            return "PSU mode"
+        }
+        case 211: { /* '211' */
+            return "system error class"
+        }
+        case 212: { /* '212' */
+            return "HVAC error class"
+        }
+        case 213: { /* '213' */
+            return "time delay"
+        }
+        case 214: { /* '214' */
+            return "wind force scale (0..12)"
+        }
+        case 215: { /* '215' */
+            return "sensor mode"
+        }
+        case 216: { /* '216' */
+            return "actuator connect type"
+        }
+        case 217: { /* '217' */
+            return "cloud cover"
+        }
+        case 218: { /* '218' */
+            return "power return mode"
+        }
+        case 219: { /* '219' */
+            return "fuel type"
+        }
+        case 22: { /* '22' */
+            return "shutter/blinds mode"
+        }
+        case 220: { /* '220' */
+            return "burner type"
+        }
+        case 221: { /* '221' */
+            return "HVAC mode"
+        }
+        case 222: { /* '222' */
+            return "DHW mode"
+        }
+        case 223: { /* '223' */
+            return "load priority"
+        }
+        case 224: { /* '224' */
+            return "HVAC control mode"
+        }
+        case 225: { /* '225' */
+            return "HVAC emergency mode"
+        }
+        case 226: { /* '226' */
+            return "changeover mode"
+        }
+        case 227: { /* '227' */
+            return "valve mode"
+        }
+        case 228: { /* '228' */
+            return "damper mode"
+        }
+        case 229: { /* '229' */
+            return "heater mode"
+        }
+        case 23: { /* '23' */
+            return "day/night"
+        }
+        case 230: { /* '230' */
+            return "fan mode"
+        }
+        case 231: { /* '231' */
+            return "master/slave mode"
+        }
+        case 232: { /* '232' */
+            return "status room setpoint"
+        }
+        case 233: { /* '233' */
+            return "metering device type"
+        }
+        case 234: { /* '234' */
+            return "hum dehum mode"
+        }
+        case 235: { /* '235' */
+            return "enable H/C stage"
+        }
+        case 236: { /* '236' */
+            return "ADA type"
+        }
+        case 237: { /* '237' */
+            return "backup mode"
+        }
+        case 238: { /* '238' */
+            return "start syncronization type"
+        }
+        case 239: { /* '239' */
+            return "behavior lock/unlock"
+        }
+        case 24: { /* '24' */
+            return "cooling/heating"
+        }
+        case 240: { /* '240' */
+            return "behavior bus power up/down"
+        }
+        case 241: { /* '241' */
+            return "dali fade time"
+        }
+        case 242: { /* '242' */
+            return "blink mode"
+        }
+        case 243: { /* '243' */
+            return "light control mode"
+        }
+        case 244: { /* '244' */
+            return "PB switch mode"
+        }
+        case 245: { /* '245' */
+            return "PB action mode"
+        }
+        case 246: { /* '246' */
+            return "PB dimm mode"
+        }
+        case 247: { /* '247' */
+            return "switch on mode"
+        }
+        case 248: { /* '248' */
+            return "load type"
+        }
+        case 249: { /* '249' */
+            return "load type detection"
+        }
+        case 25: { /* '25' */
+            return "switch control"
+        }
+        case 250: { /* '250' */
+            return "converter test control"
+        }
+        case 251: { /* '251' */
+            return "SAB except behavior"
+        }
+        case 252: { /* '252' */
+            return "SAB behavior on lock/unlock"
+        }
+        case 253: { /* '253' */
+            return "SSSB mode"
+        }
+        case 254: { /* '254' */
+            return "blinds control mode"
+        }
+        case 255: { /* '255' */
+            return "communication mode"
+        }
+        case 256: { /* '256' */
+            return "additional information type"
+        }
+        case 257: { /* '257' */
+            return "RF mode selection"
+        }
+        case 258: { /* '258' */
+            return "RF filter mode selection"
+        }
+        case 259: { /* '259' */
+            return "general status"
+        }
+        case 26: { /* '26' */
+            return "boolean control"
+        }
+        case 260: { /* '260' */
+            return "device control"
+        }
+        case 261: { /* '261' */
+            return "forcing signal"
+        }
+        case 262: { /* '262' */
+            return "forcing signal cool"
+        }
+        case 263: { /* '263' */
+            return "room heating controller status"
+        }
+        case 264: { /* '264' */
+            return "solar DHW controller status"
+        }
+        case 265: { /* '265' */
+            return "fuel type set"
+        }
+        case 266: { /* '266' */
+            return "room cooling controller status"
+        }
+        case 267: { /* '267' */
+            return "ventilation controller status"
+        }
+        case 268: { /* '268' */
+            return "combined status RTSM"
+        }
+        case 269: { /* '269' */
+            return "lighting actuator error information"
+        }
+        case 27: { /* '27' */
+            return "enable control"
+        }
+        case 270: { /* '270' */
+            return "RF communication mode info"
+        }
+        case 271: { /* '271' */
+            return "cEMI server supported RF filtering modes"
+        }
+        case 272: { /* '272' */
+            return "channel activation for 8 channels"
+        }
+        case 273: { /* '273' */
+            return "DHW controller status"
+        }
+        case 274: { /* '274' */
+            return "RHCC status"
+        }
+        case 275: { /* '275' */
+            return "combined status HVA"
+        }
+        case 276: { /* '276' */
+            return "combined status RTC"
+        }
+        case 277: { /* '277' */
+            return "media"
+        }
+        case 278: { /* '278' */
+            return "channel activation for 16 channels"
+        }
+        case 279: { /* '279' */
+            return "on/off action"
+        }
+        case 28: { /* '28' */
+            return "ramp control"
+        }
+        case 280: { /* '280' */
+            return "alarm reaction"
+        }
+        case 281: { /* '281' */
+            return "up/down action"
+        }
+        case 282: { /* '282' */
+            return "HVAC push button action"
+        }
+        case 283: { /* '283' */
+            return "busy/nak repetitions"
+        }
+        case 284: { /* '284' */
+            return "scene information"
+        }
+        case 285: { /* '285' */
+            return "bit-combined info on/off"
+        }
+        case 286: { /* '286' */
+            return "active energy (Wh)"
+        }
+        case 287: { /* '287' */
+            return "apparant energy (VAh)"
+        }
+        case 288: { /* '288' */
+            return "reactive energy (VARh)"
+        }
+        case 289: { /* '289' */
+            return "activation state 0..23"
+        }
+        case 29: { /* '29' */
+            return "alarm control"
+        }
+        case 290: { /* '290' */
+            return "time delay & HVAC mode"
+        }
+        case 291: { /* '291' */
+            return "time delay & DHW mode"
+        }
+        case 292: { /* '292' */
+            return "time delay & occupancy mode"
+        }
+        case 293: { /* '293' */
+            return "time delay & building mode"
+        }
+        case 294: { /* '294' */
+            return "DPT version"
+        }
+        case 295: { /* '295' */
+            return "alarm info"
+        }
+        case 296: { /* '296' */
+            return "room temperature setpoint"
+        }
+        case 297: { /* '297' */
+            return "room temperature setpoint shift"
+        }
+        case 298: { /* '298' */
+            return "scaling speed"
+        }
+        case 299: { /* '299' */
+            return "scaling step time"
+        }
+        case 3: { /* '3' */
+            return "enable"
+        }
+        case 30: { /* '30' */
+            return "binary value control"
+        }
+        case 300: { /* '300' */
+            return "metering value (value,encoding,cmd)"
+        }
+        case 301: { /* '301' */
+            return "MBus address"
+        }
+        case 302: { /* '302' */
+            return "RGB value 3x(0..255)"
+        }
+        case 303: { /* '303' */
+            return "language code (ASCII)"
+        }
+        case 304: { /* '304' */
+            return "electrical energy with tariff"
+        }
+        case 305: { /* '305' */
+            return "priority control"
+        }
+        case 306: { /* '306' */
+            return "diagnostic value"
+        }
+        case 307: { /* '307' */
+            return "diagnostic value"
+        }
+        case 308: { /* '308' */
+            return "combined position"
+        }
+        case 309: { /* '309' */
+            return "status sunblind & shutter actuator"
+        }
+        case 31: { /* '31' */
+            return "step control"
+        }
+        case 310: { /* '310' */
+            return "colour xyY"
+        }
+        case 311: { /* '311' */
+            return "DALI converter status"
+        }
+        case 312: { /* '312' */
+            return "DALI converter test result"
+        }
+        case 313: { /* '313' */
+            return "Battery Information"
+        }
+        case 314: { /* '314' */
+            return "brightness colour temperature transition"
+        }
+        case 315: { /* '315' */
+            return "brightness colour temperature control"
+        }
+        case 316: { /* '316' */
+            return "RGBW value 4x(0..100%)"
+        }
+        case 317: { /* '317' */
+            return "RGBW relative control"
+        }
+        case 318: { /* '318' */
+            return "RGB relative control"
+        }
+        case 319: { /* '319' */
+            return "geographical location (longitude and latitude) expressed in degrees"
+        }
+        case 32: { /* '32' */
+            return "direction control 1"
+        }
+        case 320: { /* '320' */
+            return "Temperature setpoint setting for 4 HVAC Modes"
+        }
+        case 321: { /* '321' */
+            return "Temperature setpoint shift setting for 4 HVAC Modes"
+        }
+        case 33: { /* '33' */
+            return "direction control 2"
+        }
+        case 34: { /* '34' */
+            return "start control"
+        }
+        case 35: { /* '35' */
+            return "state control"
+        }
+        case 36: { /* '36' */
+            return "invert control"
+        }
+        case 37: { /* '37' */
+            return "dimming control"
+        }
+        case 38: { /* '38' */
+            return "blind control"
+        }
+        case 39: { /* '39' */
+            return "character (ASCII)"
+        }
+        case 4: { /* '4' */
+            return "ramp"
+        }
+        case 40: { /* '40' */
+            return "character (ISO 8859-1)"
+        }
+        case 41: { /* '41' */
+            return "percentage (0..100%)"
+        }
+        case 42: { /* '42' */
+            return "angle (degrees)"
+        }
+        case 43: { /* '43' */
+            return "percentage (0..255%)"
+        }
+        case 44: { /* '44' */
+            return "ratio (0..255)"
+        }
+        case 45: { /* '45' */
+            return "tariff (0..255)"
+        }
+        case 46: { /* '46' */
+            return "counter pulses (0..255)"
+        }
+        case 47: { /* '47' */
+            return "fan stage (0..255)"
+        }
+        case 48: { /* '48' */
+            return "percentage (-128..127%)"
+        }
+        case 49: { /* '49' */
+            return "counter pulses (-128..127)"
+        }
+        case 5: { /* '5' */
+            return "alarm"
+        }
+        case 50: { /* '50' */
+            return "status with mode"
+        }
+        case 51: { /* '51' */
+            return "pulses"
+        }
+        case 52: { /* '52' */
+            return "time (ms)"
+        }
+        case 53: { /* '53' */
+            return "time (10 ms)"
+        }
+        case 54: { /* '54' */
+            return "time (100 ms)"
+        }
+        case 55: { /* '55' */
+            return "time (s)"
+        }
+        case 56: { /* '56' */
+            return "time (min)"
+        }
+        case 57: { /* '57' */
+            return "time (h)"
+        }
+        case 58: { /* '58' */
+            return "property data type"
+        }
+        case 59: { /* '59' */
+            return "length (mm)"
+        }
+        case 6: { /* '6' */
+            return "binary value"
+        }
+        case 60: { /* '60' */
+            return "current (mA)"
+        }
+        case 61: { /* '61' */
+            return "brightness (lux)"
+        }
+        case 62: { /* '62' */
+            return "absolute colour temperature (K)"
+        }
+        case 63: { /* '63' */
+            return "pulses difference"
+        }
+        case 64: { /* '64' */
+            return "time lag (ms)"
+        }
+        case 65: { /* '65' */
+            return "time lag(10 ms)"
+        }
+        case 66: { /* '66' */
+            return "time lag (100 ms)"
+        }
+        case 67: { /* '67' */
+            return "time lag (s)"
+        }
+        case 68: { /* '68' */
+            return "time lag (min)"
+        }
+        case 69: { /* '69' */
+            return "time lag (h)"
+        }
+        case 7: { /* '7' */
+            return "step"
+        }
+        case 70: { /* '70' */
+            return "percentage difference (%)"
+        }
+        case 71: { /* '71' */
+            return "rotation angle (°)"
+        }
+        case 72: { /* '72' */
+            return "length (m)"
+        }
+        case 73: { /* '73' */
+            return "temperature (°C)"
+        }
+        case 74: { /* '74' */
+            return "temperature difference (K)"
+        }
+        case 75: { /* '75' */
+            return "kelvin/hour (K/h)"
+        }
+        case 76: { /* '76' */
+            return "lux (Lux)"
+        }
+        case 77: { /* '77' */
+            return "speed (m/s)"
+        }
+        case 78: { /* '78' */
+            return "pressure (Pa)"
+        }
+        case 79: { /* '79' */
+            return "humidity (%)"
+        }
+        case 8: { /* '8' */
+            return "up/down"
+        }
+        case 80: { /* '80' */
+            return "parts/million (ppm)"
+        }
+        case 81: { /* '81' */
+            return "air flow (m³/h)"
+        }
+        case 82: { /* '82' */
+            return "time (s)"
+        }
+        case 83: { /* '83' */
+            return "time (ms)"
+        }
+        case 84: { /* '84' */
+            return "voltage (mV)"
+        }
+        case 85: { /* '85' */
+            return "current (mA)"
+        }
+        case 86: { /* '86' */
+            return "power denisity (W/m²)"
+        }
+        case 87: { /* '87' */
+            return "kelvin/percent (K/%)"
+        }
+        case 88: { /* '88' */
+            return "power (kW)"
+        }
+        case 89: { /* '89' */
+            return "volume flow (l/h)"
+        }
+        case 9: { /* '9' */
+            return "open/close"
+        }
+        case 90: { /* '90' */
+            return "rain amount (l/m²)"
+        }
+        case 91: { /* '91' */
+            return "temperature (°F)"
+        }
+        case 92: { /* '92' */
+            return "wind speed (km/h)"
+        }
+        case 93: { /* '93' */
+            return "absolute humidity (g/m³)"
+        }
+        case 94: { /* '94' */
+            return "concentration (µg/m³)"
+        }
+        case 95: { /* '95' */
+            return "time of day"
+        }
+        case 96: { /* '96' */
+            return "date"
+        }
+        case 97: { /* '97' */
+            return "counter pulses (unsigned)"
+        }
+        case 98: { /* '98' */
+            return "counter timesec (s)"
+        }
+        case 99: { /* '99' */
+            return "counter timemin (min)"
+        }
+        default: {
+            return ""
+        }
+    }
+}
+
+func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
+    switch e  {
+        case 0: { /* '0' */
+            return KnxDatapointMainType_DPT_UNKNOWN
+        }
+        case 1: { /* '1' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 10: { /* '10' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 100: { /* '100' */
+            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 101: { /* '101' */
+            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 102: { /* '102' */
+            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 103: { /* '103' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 104: { /* '104' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 105: { /* '105' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 106: { /* '106' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 107: { /* '107' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 108: { /* '108' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 109: { /* '109' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 11: { /* '11' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 110: { /* '110' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 111: { /* '111' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 112: { /* '112' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 113: { /* '113' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 114: { /* '114' */
+            return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+        }
+        case 115: { /* '115' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 116: { /* '116' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 117: { /* '117' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 118: { /* '118' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 119: { /* '119' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 12: { /* '12' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 120: { /* '120' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 121: { /* '121' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 122: { /* '122' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 123: { /* '123' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 124: { /* '124' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 125: { /* '125' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 126: { /* '126' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 127: { /* '127' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 128: { /* '128' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 129: { /* '129' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 13: { /* '13' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 130: { /* '130' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 131: { /* '131' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 132: { /* '132' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 133: { /* '133' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 134: { /* '134' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 135: { /* '135' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 136: { /* '136' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 137: { /* '137' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 138: { /* '138' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 139: { /* '139' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 14: { /* '14' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 140: { /* '140' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 141: { /* '141' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 142: { /* '142' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 143: { /* '143' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 144: { /* '144' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 145: { /* '145' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 146: { /* '146' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 147: { /* '147' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 148: { /* '148' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 149: { /* '149' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 15: { /* '15' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 150: { /* '150' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 151: { /* '151' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 152: { /* '152' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 153: { /* '153' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 154: { /* '154' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 155: { /* '155' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 156: { /* '156' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 157: { /* '157' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 158: { /* '158' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 159: { /* '159' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 16: { /* '16' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 160: { /* '160' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 161: { /* '161' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 162: { /* '162' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 163: { /* '163' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 164: { /* '164' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 165: { /* '165' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 166: { /* '166' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 167: { /* '167' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 168: { /* '168' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 169: { /* '169' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 17: { /* '17' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 170: { /* '170' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 171: { /* '171' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 172: { /* '172' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 173: { /* '173' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 174: { /* '174' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 175: { /* '175' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 176: { /* '176' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 177: { /* '177' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 178: { /* '178' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 179: { /* '179' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 18: { /* '18' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 180: { /* '180' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 181: { /* '181' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 182: { /* '182' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 183: { /* '183' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 184: { /* '184' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 185: { /* '185' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 186: { /* '186' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 187: { /* '187' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 188: { /* '188' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 189: { /* '189' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 19: { /* '19' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 190: { /* '190' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 191: { /* '191' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 192: { /* '192' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 193: { /* '193' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 194: { /* '194' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 195: { /* '195' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 196: { /* '196' */
+            return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+        }
+        case 197: { /* '197' */
+            return KnxDatapointMainType_DPT_ENTRANCE_ACCESS
+        }
+        case 198: { /* '198' */
+            return KnxDatapointMainType_DPT_CHARACTER_STRING
+        }
+        case 199: { /* '199' */
+            return KnxDatapointMainType_DPT_CHARACTER_STRING
+        }
+        case 2: { /* '2' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 20: { /* '20' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 200: { /* '200' */
+            return KnxDatapointMainType_DPT_SCENE_NUMBER
+        }
+        case 201: { /* '201' */
+            return KnxDatapointMainType_DPT_SCENE_CONTROL
+        }
+        case 202: { /* '202' */
+            return KnxDatapointMainType_DPT_DATE_TIME
+        }
+        case 203: { /* '203' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 204: { /* '204' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 205: { /* '205' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 206: { /* '206' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 207: { /* '207' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 208: { /* '208' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 209: { /* '209' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 21: { /* '21' */
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 210: { /* '210' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 211: { /* '211' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 212: { /* '212' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 213: { /* '213' */
+            return KnxDatapointMainType_DPT_1_BYTE
+        }
+        case 214: { /* '214' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 29: { /* '29' */
-            return 206
+        case 215: { /* '215' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 3: { /* '3' */
-            return 3
+        case 216: { /* '216' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 30: { /* '30' */
-            return 217
+        case 217: { /* '217' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 31: { /* '31' */
-            return 219
+        case 218: { /* '218' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 32: { /* '32' */
-            return 222
+        case 219: { /* '219' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 33: { /* '33' */
-            return 225
+        case 22: { /* '22' */
+            return KnxDatapointMainType_DPT_1_BIT
         }
-        case 34: { /* '34' */
-            return 229
+        case 220: { /* '220' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 35: { /* '35' */
-            return 230
+        case 221: { /* '221' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 36: { /* '36' */
-            return 232
+        case 222: { /* '222' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 37: { /* '37' */
-            return 234
+        case 223: { /* '223' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 38: { /* '38' */
-            return 235
+        case 224: { /* '224' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 39: { /* '39' */
-            return 236
+        case 225: { /* '225' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 4: { /* '4' */
-            return 4
+        case 226: { /* '226' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 40: { /* '40' */
-            return 237
+        case 227: { /* '227' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 41: { /* '41' */
-            return 238
+        case 228: { /* '228' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 42: { /* '42' */
-            return 240
+        case 229: { /* '229' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 43: { /* '43' */
-            return 241
+        case 23: { /* '23' */
+            return KnxDatapointMainType_DPT_1_BIT
         }
-        case 44: { /* '44' */
-            return 242
+        case 230: { /* '230' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 45: { /* '45' */
-            return 244
+        case 231: { /* '231' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 46: { /* '46' */
-            return 245
+        case 232: { /* '232' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 47: { /* '47' */
-            return 246
+        case 233: { /* '233' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 48: { /* '48' */
-            return 249
+        case 234: { /* '234' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 49: { /* '49' */
-            return 250
+        case 235: { /* '235' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 5: { /* '5' */
-            return 5
+        case 236: { /* '236' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 50: { /* '50' */
-            return 251
+        case 237: { /* '237' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 51: { /* '51' */
-            return 252
+        case 238: { /* '238' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 52: { /* '52' */
-            return 254
+        case 239: { /* '239' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 53: { /* '53' */
-            return 255
+        case 24: { /* '24' */
+            return KnxDatapointMainType_DPT_1_BIT
         }
-        case 54: { /* '54' */
-            return 275
+        case 240: { /* '240' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 6: { /* '6' */
-            return 6
+        case 241: { /* '241' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 7: { /* '7' */
-            return 7
+        case 242: { /* '242' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 8: { /* '8' */
-            return 8
+        case 243: { /* '243' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 9: { /* '9' */
-            return 9
+        case 244: { /* '244' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        default: {
-            return 0
+        case 245: { /* '245' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-    }
-}
-
-func (e KnxDatapointType) Name() string {
-    switch e  {
-        case 0: { /* '0' */
-            return "Unknown Datapoint Type"
+        case 246: { /* '246' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 1: { /* '1' */
-            return "1-bit"
+        case 247: { /* '247' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 10: { /* '10' */
-            return "time"
+        case 248: { /* '248' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 11: { /* '11' */
-            return "date"
+        case 249: { /* '249' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 12: { /* '12' */
-            return "4-byte unsigned value"
+        case 25: { /* '25' */
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
-        case 13: { /* '13' */
-            return "4-byte signed value"
+        case 250: { /* '250' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 14: { /* '14' */
-            return "4-byte float value"
+        case 251: { /* '251' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 15: { /* '15' */
-            return "entrance access"
+        case 252: { /* '252' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 16: { /* '16' */
-            return "character string"
+        case 253: { /* '253' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 17: { /* '17' */
-            return "scene number"
+        case 254: { /* '254' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 18: { /* '18' */
-            return "scene control"
+        case 255: { /* '255' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 19: { /* '19' */
-            return "Date Time"
+        case 256: { /* '256' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 2: { /* '2' */
-            return "1-bit controlled"
+        case 257: { /* '257' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 20: { /* '20' */
-            return "1-byte"
+        case 258: { /* '258' */
+            return KnxDatapointMainType_DPT_1_BYTE
         }
-        case 21: { /* '21' */
-            return "8-bit set"
+        case 259: { /* '259' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 22: { /* '22' */
-            return "16-bit set"
+        case 26: { /* '26' */
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
-        case 23: { /* '23' */
-            return "2-bit set"
+        case 260: { /* '260' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 24: { /* '24' */
-            return "2-nibble set"
+        case 261: { /* '261' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 25: { /* '25' */
-            return "8-bit set"
+        case 262: { /* '262' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 26: { /* '26' */
-            return "32-bit set"
+        case 263: { /* '263' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 27: { /* '27' */
-            return "electrical energy"
+        case 264: { /* '264' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 28: { /* '28' */
-            return "24 times channel activation"
+        case 265: { /* '265' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 29: { /* '29' */
-            return "16-bit unsigned value & 8-bit enum"
+        case 266: { /* '266' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 3: { /* '3' */
-            return "3-bit controlled"
+        case 267: { /* '267' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 30: { /* '30' */
-            return "datapoint type version"
+        case 268: { /* '268' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 31: { /* '31' */
-            return "alarm info"
+        case 269: { /* '269' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 32: { /* '32' */
-            return "3x 2-byte float value"
+        case 27: { /* '27' */
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
-        case 33: { /* '33' */
-            return "scaling speed"
+        case 270: { /* '270' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 34: { /* '34' */
-            return "4-1-1 byte combined information"
+        case 271: { /* '271' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 35: { /* '35' */
-            return "MBus address"
+        case 272: { /* '272' */
+            return KnxDatapointMainType_DPT_8_BIT_SET
         }
-        case 36: { /* '36' */
-            return "3-byte colour RGB"
+        case 273: { /* '273' */
+            return KnxDatapointMainType_DPT_16_BIT_SET
         }
-        case 37: { /* '37' */
-            return "language code ISO 639-1"
+        case 274: { /* '274' */
+            return KnxDatapointMainType_DPT_16_BIT_SET
         }
-        case 38: { /* '38' */
-            return "Signed value with classification and validity"
+        case 275: { /* '275' */
+            return KnxDatapointMainType_DPT_16_BIT_SET
         }
-        case 39: { /* '39' */
-            return "Prioritised Mode Control"
+        case 276: { /* '276' */
+            return KnxDatapointMainType_DPT_16_BIT_SET
         }
-        case 4: { /* '4' */
-            return "character"
+        case 277: { /* '277' */
+            return KnxDatapointMainType_DPT_16_BIT_SET
         }
-        case 40: { /* '40' */
-            return "configuration/ diagnostics"
+        case 278: { /* '278' */
+            return KnxDatapointMainType_DPT_16_BIT_SET
         }
-        case 41: { /* '41' */
-            return "configuration/ diagnostics"
+        case 279: { /* '279' */
+            return KnxDatapointMainType_DPT_2_BIT_SET
         }
-        case 42: { /* '42' */
-            return "positions"
+        case 28: { /* '28' */
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
-        case 43: { /* '43' */
-            return "status"
+        case 280: { /* '280' */
+            return KnxDatapointMainType_DPT_2_BIT_SET
         }
-        case 44: { /* '44' */
-            return "status"
+        case 281: { /* '281' */
+            return KnxDatapointMainType_DPT_2_BIT_SET
         }
-        case 45: { /* '45' */
-            return "Converter Status"
+        case 282: { /* '282' */
+            return KnxDatapointMainType_DPT_2_BIT_SET
         }
-        case 46: { /* '46' */
-            return "Converter test result"
+        case 283: { /* '283' */
+            return KnxDatapointMainType_DPT_2_NIBBLE_SET
         }
-        case 47: { /* '47' */
-            return "Battery Information"
+        case 284: { /* '284' */
+            return KnxDatapointMainType_DPT_8_BIT_SET_2
         }
-        case 48: { /* '48' */
-            return "brightness colour temperature transition"
+        case 285: { /* '285' */
+            return KnxDatapointMainType_DPT_32_BIT_SET
         }
-        case 49: { /* '49' */
-            return "status"
+        case 286: { /* '286' */
+            return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
         }
-        case 5: { /* '5' */
-            return "8-bit unsigned value"
+        case 287: { /* '287' */
+            return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
         }
-        case 50: { /* '50' */
-            return "Colour RGBW"
+        case 288: { /* '288' */
+            return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
         }
-        case 51: { /* '51' */
-            return "Relative Control RGBW"
+        case 289: { /* '289' */
+            return KnxDatapointMainType_DPT_24_TIMES_CHANNEL_ACTIVATION
         }
-        case 52: { /* '52' */
-            return "Relative Control RGB"
+        case 29: { /* '29' */
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
-        case 53: { /* '53' */
-            return "F32F32"
+        case 290: { /* '290' */
+            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
         }
-        case 54: { /* '54' */
-            return "F16F16F16F16"
+        case 291: { /* '291' */
+            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
         }
-        case 6: { /* '6' */
-            return "8-bit signed value"
+        case 292: { /* '292' */
+            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
         }
-        case 7: { /* '7' */
-            return "2-byte unsigned value"
+        case 293: { /* '293' */
+            return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
         }
-        case 8: { /* '8' */
-            return "2-byte signed value"
+        case 294: { /* '294' */
+            return KnxDatapointMainType_DPT_DATAPOINT_TYPE_VERSION
         }
-        case 9: { /* '9' */
-            return "2-byte float value"
+        case 295: { /* '295' */
+            return KnxDatapointMainType_DPT_ALARM_INFO
         }
-        default: {
-            return ""
+        case 296: { /* '296' */
+            return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
         }
-    }
-}
-
-func (e KnxDatapointType) SizeInBits() uint8 {
-    switch e  {
-        case 0: { /* '0' */
-            return 0
+        case 297: { /* '297' */
+            return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
         }
-        case 1: { /* '1' */
-            return 1
+        case 298: { /* '298' */
+            return KnxDatapointMainType_DPT_SCALING_SPEED
         }
-        case 10: { /* '10' */
-            return 24
+        case 299: { /* '299' */
+            return KnxDatapointMainType_DPT_SCALING_SPEED
         }
-        case 11: { /* '11' */
-            return 24
+        case 3: { /* '3' */
+            return KnxDatapointMainType_DPT_1_BIT
         }
-        case 12: { /* '12' */
-            return 32
+        case 30: { /* '30' */
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
-        case 13: { /* '13' */
-            return 32
+        case 300: { /* '300' */
+            return KnxDatapointMainType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
         }
-        case 14: { /* '14' */
-            return 32
+        case 301: { /* '301' */
+            return KnxDatapointMainType_DPT_MBUS_ADDRESS
         }
-        case 15: { /* '15' */
-            return 32
+        case 302: { /* '302' */
+            return KnxDatapointMainType_DPT_3_BYTE_COLOUR_RGB
         }
-        case 16: { /* '16' */
-            return 112
+        case 303: { /* '303' */
+            return KnxDatapointMainType_DPT_LANGUAGE_CODE_ISO_639_1
         }
-        case 17: { /* '17' */
-            return 8
+        case 304: { /* '304' */
+            return KnxDatapointMainType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
         }
-        case 18: { /* '18' */
-            return 8
+        case 305: { /* '305' */
+            return KnxDatapointMainType_DPT_PRIORITISED_MODE_CONTROL
         }
-        case 19: { /* '19' */
-            return 64
+        case 306: { /* '306' */
+            return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
         }
-        case 2: { /* '2' */
-            return 2
+        case 307: { /* '307' */
+            return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
         }
-        case 20: { /* '20' */
-            return 8
+        case 308: { /* '308' */
+            return KnxDatapointMainType_DPT_POSITIONS
         }
-        case 21: { /* '21' */
-            return 8
+        case 309: { /* '309' */
+            return KnxDatapointMainType_DPT_STATUS_32_BIT
         }
-        case 22: { /* '22' */
-            return 16
+        case 31: { /* '31' */
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
-        case 23: { /* '23' */
-            return 2
+        case 310: { /* '310' */
+            return KnxDatapointMainType_DPT_STATUS_48_BIT
         }
-        case 24: { /* '24' */
-            return 8
+        case 311: { /* '311' */
+            return KnxDatapointMainType_DPT_CONVERTER_STATUS
         }
-        case 25: { /* '25' */
-            return 8
+        case 312: { /* '312' */
+            return KnxDatapointMainType_DPT_CONVERTER_TEST_RESULT
         }
-        case 26: { /* '26' */
-            return 32
+        case 313: { /* '313' */
+            return KnxDatapointMainType_DPT_BATTERY_INFORMATION
         }
-        case 27: { /* '27' */
-            return 64
+        case 314: { /* '314' */
+            return KnxDatapointMainType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
         }
-        case 28: { /* '28' */
-            return 24
+        case 315: { /* '315' */
+            return KnxDatapointMainType_DPT_STATUS_24_BIT
         }
-        case 29: { /* '29' */
-            return 24
+        case 316: { /* '316' */
+            return KnxDatapointMainType_DPT_COLOUR_RGBW
         }
-        case 3: { /* '3' */
-            return 4
+        case 317: { /* '317' */
+            return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGBW
         }
-        case 30: { /* '30' */
-            return 16
+        case 318: { /* '318' */
+            return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGB
         }
-        case 31: { /* '31' */
-            return 48
+        case 319: { /* '319' */
+            return KnxDatapointMainType_DPT_F32F32
         }
         case 32: { /* '32' */
-            return 48
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+        }
+        case 320: { /* '320' */
+            return KnxDatapointMainType_DPT_F16F16F16F16
+        }
+        case 321: { /* '321' */
+            return KnxDatapointMainType_DPT_F16F16F16F16
         }
         case 33: { /* '33' */
-            return 24
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
         case 34: { /* '34' */
-            return 48
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
         case 35: { /* '35' */
-            return 64
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
         case 36: { /* '36' */
-            return 24
+            return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
         }
         case 37: { /* '37' */
-            return 16
+            return KnxDatapointMainType_DPT_3_BIT_CONTROLLED
         }
         case 38: { /* '38' */
-            return 48
+            return KnxDatapointMainType_DPT_3_BIT_CONTROLLED
         }
         case 39: { /* '39' */
-            return 8
+            return KnxDatapointMainType_DPT_CHARACTER
         }
         case 4: { /* '4' */
-            return 8
+            return KnxDatapointMainType_DPT_1_BIT
         }
         case 40: { /* '40' */
-            return 16
+            return KnxDatapointMainType_DPT_CHARACTER
         }
         case 41: { /* '41' */
-            return 8
+            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
         }
         case 42: { /* '42' */
-            return 24
+            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
         }
         case 43: { /* '43' */
-            return 32
+            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
         }
         case 44: { /* '44' */
-            return 48
+            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
         }
         case 45: { /* '45' */
-            return 16
+            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
         }
         case 46: { /* '46' */
-            return 48
+            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
         }
         case 47: { /* '47' */
-            return 16
+            return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
         }
         case 48: { /* '48' */
-            return 48
+            return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
         }
         case 49: { /* '49' */
-            return 24
+            return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
         }
         case 5: { /* '5' */
-            return 8
+            return KnxDatapointMainType_DPT_1_BIT
         }
         case 50: { /* '50' */
-            return 48
+            return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
         }
         case 51: { /* '51' */
-            return 40
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
         }
         case 52: { /* '52' */
-            return 24
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
         }
         case 53: { /* '53' */
-            return 64
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
         }
         case 54: { /* '54' */
-            return 64
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 55: { /* '55' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 56: { /* '56' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 57: { /* '57' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 58: { /* '58' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 59: { /* '59' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
         }
         case 6: { /* '6' */
-            return 8
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 60: { /* '60' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 61: { /* '61' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 62: { /* '62' */
+            return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+        }
+        case 63: { /* '63' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 64: { /* '64' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 65: { /* '65' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 66: { /* '66' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 67: { /* '67' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 68: { /* '68' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 69: { /* '69' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
         }
         case 7: { /* '7' */
-            return 16
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 70: { /* '70' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 71: { /* '71' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 72: { /* '72' */
+            return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+        }
+        case 73: { /* '73' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 74: { /* '74' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 75: { /* '75' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 76: { /* '76' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 77: { /* '77' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 78: { /* '78' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 79: { /* '79' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
         }
         case 8: { /* '8' */
-            return 16
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 80: { /* '80' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 81: { /* '81' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 82: { /* '82' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 83: { /* '83' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 84: { /* '84' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 85: { /* '85' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 86: { /* '86' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 87: { /* '87' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 88: { /* '88' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 89: { /* '89' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
         }
         case 9: { /* '9' */
-            return 16
+            return KnxDatapointMainType_DPT_1_BIT
+        }
+        case 90: { /* '90' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 91: { /* '91' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 92: { /* '92' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 93: { /* '93' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 94: { /* '94' */
+            return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+        }
+        case 95: { /* '95' */
+            return KnxDatapointMainType_DPT_TIME
+        }
+        case 96: { /* '96' */
+            return KnxDatapointMainType_DPT_DATE
+        }
+        case 97: { /* '97' */
+            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 98: { /* '98' */
+            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+        }
+        case 99: { /* '99' */
+            return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
         }
         default: {
             return 0
         }
     }
 }
-func KnxDatapointTypeByValue(value uint16) KnxDatapointType {
+func KnxDatapointTypeByValue(value uint32) KnxDatapointType {
     switch value {
         case 0:
             return KnxDatapointType_DPT_UNKNOWN
         case 1:
-            return KnxDatapointType_DPT_1_BIT
+            return KnxDatapointType_DPT_Switch
         case 10:
-            return KnxDatapointType_DPT_TIME
+            return KnxDatapointType_DPT_Start
+        case 100:
+            return KnxDatapointType_DPT_LongTimePeriod_Hrs
+        case 101:
+            return KnxDatapointType_DPT_VolumeLiquid_Litre
+        case 102:
+            return KnxDatapointType_DPT_Volume_m_3
+        case 103:
+            return KnxDatapointType_DPT_Value_4_Count
+        case 104:
+            return KnxDatapointType_DPT_FlowRate_m3h
+        case 105:
+            return KnxDatapointType_DPT_ActiveEnergy
+        case 106:
+            return KnxDatapointType_DPT_ApparantEnergy
+        case 107:
+            return KnxDatapointType_DPT_ReactiveEnergy
+        case 108:
+            return KnxDatapointType_DPT_ActiveEnergy_kWh
+        case 109:
+            return KnxDatapointType_DPT_ApparantEnergy_kVAh
         case 11:
-            return KnxDatapointType_DPT_DATE
+            return KnxDatapointType_DPT_State
+        case 110:
+            return KnxDatapointType_DPT_ReactiveEnergy_kVARh
+        case 111:
+            return KnxDatapointType_DPT_ActiveEnergy_MWh
+        case 112:
+            return KnxDatapointType_DPT_LongDeltaTimeSec
+        case 113:
+            return KnxDatapointType_DPT_DeltaVolumeLiquid_Litre
+        case 114:
+            return KnxDatapointType_DPT_DeltaVolume_m_3
+        case 115:
+            return KnxDatapointType_DPT_Value_Acceleration
+        case 116:
+            return KnxDatapointType_DPT_Value_Acceleration_Angular
+        case 117:
+            return KnxDatapointType_DPT_Value_Activation_Energy
+        case 118:
+            return KnxDatapointType_DPT_Value_Activity
+        case 119:
+            return KnxDatapointType_DPT_Value_Mol
         case 12:
-            return KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE
+            return KnxDatapointType_DPT_Invert
+        case 120:
+            return KnxDatapointType_DPT_Value_Amplitude
+        case 121:
+            return KnxDatapointType_DPT_Value_AngleRad
+        case 122:
+            return KnxDatapointType_DPT_Value_AngleDeg
+        case 123:
+            return KnxDatapointType_DPT_Value_Angular_Momentum
+        case 124:
+            return KnxDatapointType_DPT_Value_Angular_Velocity
+        case 125:
+            return KnxDatapointType_DPT_Value_Area
+        case 126:
+            return KnxDatapointType_DPT_Value_Capacitance
+        case 127:
+            return KnxDatapointType_DPT_Value_Charge_DensitySurface
+        case 128:
+            return KnxDatapointType_DPT_Value_Charge_DensityVolume
+        case 129:
+            return KnxDatapointType_DPT_Value_Compressibility
         case 13:
-            return KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE
+            return KnxDatapointType_DPT_DimSendStyle
+        case 130:
+            return KnxDatapointType_DPT_Value_Conductance
+        case 131:
+            return KnxDatapointType_DPT_Value_Electrical_Conductivity
+        case 132:
+            return KnxDatapointType_DPT_Value_Density
+        case 133:
+            return KnxDatapointType_DPT_Value_Electric_Charge
+        case 134:
+            return KnxDatapointType_DPT_Value_Electric_Current
+        case 135:
+            return KnxDatapointType_DPT_Value_Electric_CurrentDensity
+        case 136:
+            return KnxDatapointType_DPT_Value_Electric_DipoleMoment
+        case 137:
+            return KnxDatapointType_DPT_Value_Electric_Displacement
+        case 138:
+            return KnxDatapointType_DPT_Value_Electric_FieldStrength
+        case 139:
+            return KnxDatapointType_DPT_Value_Electric_Flux
         case 14:
-            return KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE
+            return KnxDatapointType_DPT_InputSource
+        case 140:
+            return KnxDatapointType_DPT_Value_Electric_FluxDensity
+        case 141:
+            return KnxDatapointType_DPT_Value_Electric_Polarization
+        case 142:
+            return KnxDatapointType_DPT_Value_Electric_Potential
+        case 143:
+            return KnxDatapointType_DPT_Value_Electric_PotentialDifference
+        case 144:
+            return KnxDatapointType_DPT_Value_ElectromagneticMoment
+        case 145:
+            return KnxDatapointType_DPT_Value_Electromotive_Force
+        case 146:
+            return KnxDatapointType_DPT_Value_Energy
+        case 147:
+            return KnxDatapointType_DPT_Value_Force
+        case 148:
+            return KnxDatapointType_DPT_Value_Frequency
+        case 149:
+            return KnxDatapointType_DPT_Value_Angular_Frequency
         case 15:
-            return KnxDatapointType_DPT_ENTRANCE_ACCESS
+            return KnxDatapointType_DPT_Reset
+        case 150:
+            return KnxDatapointType_DPT_Value_Heat_Capacity
+        case 151:
+            return KnxDatapointType_DPT_Value_Heat_FlowRate
+        case 152:
+            return KnxDatapointType_DPT_Value_Heat_Quantity
+        case 153:
+            return KnxDatapointType_DPT_Value_Impedance
+        case 154:
+            return KnxDatapointType_DPT_Value_Length
+        case 155:
+            return KnxDatapointType_DPT_Value_Light_Quantity
+        case 156:
+            return KnxDatapointType_DPT_Value_Luminance
+        case 157:
+            return KnxDatapointType_DPT_Value_Luminous_Flux
+        case 158:
+            return KnxDatapointType_DPT_Value_Luminous_Intensity
+        case 159:
+            return KnxDatapointType_DPT_Value_Magnetic_FieldStrength
         case 16:
-            return KnxDatapointType_DPT_CHARACTER_STRING
+            return KnxDatapointType_DPT_Ack
+        case 160:
+            return KnxDatapointType_DPT_Value_Magnetic_Flux
+        case 161:
+            return KnxDatapointType_DPT_Value_Magnetic_FluxDensity
+        case 162:
+            return KnxDatapointType_DPT_Value_Magnetic_Moment
+        case 163:
+            return KnxDatapointType_DPT_Value_Magnetic_Polarization
+        case 164:
+            return KnxDatapointType_DPT_Value_Magnetization
+        case 165:
+            return KnxDatapointType_DPT_Value_MagnetomotiveForce
+        case 166:
+            return KnxDatapointType_DPT_Value_Mass
+        case 167:
+            return KnxDatapointType_DPT_Value_MassFlux
+        case 168:
+            return KnxDatapointType_DPT_Value_Momentum
+        case 169:
+            return KnxDatapointType_DPT_Value_Phase_AngleRad
         case 17:
-            return KnxDatapointType_DPT_SCENE_NUMBER
+            return KnxDatapointType_DPT_Trigger
+        case 170:
+            return KnxDatapointType_DPT_Value_Phase_AngleDeg
+        case 171:
+            return KnxDatapointType_DPT_Value_Power
+        case 172:
+            return KnxDatapointType_DPT_Value_Power_Factor
+        case 173:
+            return KnxDatapointType_DPT_Value_Pressure
+        case 174:
+            return KnxDatapointType_DPT_Value_Reactance
+        case 175:
+            return KnxDatapointType_DPT_Value_Resistance
+        case 176:
+            return KnxDatapointType_DPT_Value_Resistivity
+        case 177:
+            return KnxDatapointType_DPT_Value_SelfInductance
+        case 178:
+            return KnxDatapointType_DPT_Value_SolidAngle
+        case 179:
+            return KnxDatapointType_DPT_Value_Sound_Intensity
         case 18:
-            return KnxDatapointType_DPT_SCENE_CONTROL
+            return KnxDatapointType_DPT_Occupancy
+        case 180:
+            return KnxDatapointType_DPT_Value_Speed
+        case 181:
+            return KnxDatapointType_DPT_Value_Stress
+        case 182:
+            return KnxDatapointType_DPT_Value_Surface_Tension
+        case 183:
+            return KnxDatapointType_DPT_Value_Common_Temperature
+        case 184:
+            return KnxDatapointType_DPT_Value_Absolute_Temperature
+        case 185:
+            return KnxDatapointType_DPT_Value_TemperatureDifference
+        case 186:
+            return KnxDatapointType_DPT_Value_Thermal_Capacity
+        case 187:
+            return KnxDatapointType_DPT_Value_Thermal_Conductivity
+        case 188:
+            return KnxDatapointType_DPT_Value_ThermoelectricPower
+        case 189:
+            return KnxDatapointType_DPT_Value_Time
         case 19:
-            return KnxDatapointType_DPT_DATE_TIME
+            return KnxDatapointType_DPT_Window_Door
+        case 190:
+            return KnxDatapointType_DPT_Value_Torque
+        case 191:
+            return KnxDatapointType_DPT_Value_Volume
+        case 192:
+            return KnxDatapointType_DPT_Value_Volume_Flux
+        case 193:
+            return KnxDatapointType_DPT_Value_Weight
+        case 194:
+            return KnxDatapointType_DPT_Value_Work
+        case 195:
+            return KnxDatapointType_DPT_Volume_Flux_Meter
+        case 196:
+            return KnxDatapointType_DPT_Volume_Flux_ls
+        case 197:
+            return KnxDatapointType_DPT_Access_Data
+        case 198:
+            return KnxDatapointType_DPT_String_ASCII
+        case 199:
+            return KnxDatapointType_DPT_String_8859_1
         case 2:
-            return KnxDatapointType_DPT_1_BIT_CONTROLLED
+            return KnxDatapointType_DPT_Bool
         case 20:
-            return KnxDatapointType_DPT_1_BYTE
+            return KnxDatapointType_DPT_LogicalFunction
+        case 200:
+            return KnxDatapointType_DPT_SceneNumber
+        case 201:
+            return KnxDatapointType_DPT_SceneControl
+        case 202:
+            return KnxDatapointType_DPT_DateTime
+        case 203:
+            return KnxDatapointType_DPT_SCLOMode
+        case 204:
+            return KnxDatapointType_DPT_BuildingMode
+        case 205:
+            return KnxDatapointType_DPT_OccMode
+        case 206:
+            return KnxDatapointType_DPT_Priority
+        case 207:
+            return KnxDatapointType_DPT_LightApplicationMode
+        case 208:
+            return KnxDatapointType_DPT_ApplicationArea
+        case 209:
+            return KnxDatapointType_DPT_AlarmClassType
         case 21:
-            return KnxDatapointType_DPT_8_BIT_SET
+            return KnxDatapointType_DPT_Scene_AB
+        case 210:
+            return KnxDatapointType_DPT_PSUMode
+        case 211:
+            return KnxDatapointType_DPT_ErrorClass_System
+        case 212:
+            return KnxDatapointType_DPT_ErrorClass_HVAC
+        case 213:
+            return KnxDatapointType_DPT_Time_Delay
+        case 214:
+            return KnxDatapointType_DPT_Beaufort_Wind_Force_Scale
+        case 215:
+            return KnxDatapointType_DPT_SensorSelect
+        case 216:
+            return KnxDatapointType_DPT_ActuatorConnectType
+        case 217:
+            return KnxDatapointType_DPT_Cloud_Cover
+        case 218:
+            return KnxDatapointType_DPT_PowerReturnMode
+        case 219:
+            return KnxDatapointType_DPT_FuelType
         case 22:
-            return KnxDatapointType_DPT_16_BIT_SET
+            return KnxDatapointType_DPT_ShutterBlinds_Mode
+        case 220:
+            return KnxDatapointType_DPT_BurnerType
+        case 221:
+            return KnxDatapointType_DPT_HVACMode
+        case 222:
+            return KnxDatapointType_DPT_DHWMode
+        case 223:
+            return KnxDatapointType_DPT_LoadPriority
+        case 224:
+            return KnxDatapointType_DPT_HVACContrMode
+        case 225:
+            return KnxDatapointType_DPT_HVACEmergMode
+        case 226:
+            return KnxDatapointType_DPT_ChangeoverMode
+        case 227:
+            return KnxDatapointType_DPT_ValveMode
+        case 228:
+            return KnxDatapointType_DPT_DamperMode
+        case 229:
+            return KnxDatapointType_DPT_HeaterMode
         case 23:
-            return KnxDatapointType_DPT_2_BIT_SET
+            return KnxDatapointType_DPT_DayNight
+        case 230:
+            return KnxDatapointType_DPT_FanMode
+        case 231:
+            return KnxDatapointType_DPT_MasterSlaveMode
+        case 232:
+            return KnxDatapointType_DPT_StatusRoomSetp
+        case 233:
+            return KnxDatapointType_DPT_Metering_DeviceType
+        case 234:
+            return KnxDatapointType_DPT_HumDehumMode
+        case 235:
+            return KnxDatapointType_DPT_EnableHCStage
+        case 236:
+            return KnxDatapointType_DPT_ADAType
+        case 237:
+            return KnxDatapointType_DPT_BackupMode
+        case 238:
+            return KnxDatapointType_DPT_StartSynchronization
+        case 239:
+            return KnxDatapointType_DPT_Behaviour_Lock_Unlock
         case 24:
-            return KnxDatapointType_DPT_2_NIBBLE_SET
+            return KnxDatapointType_DPT_Heat_Cool
+        case 240:
+            return KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down
+        case 241:
+            return KnxDatapointType_DPT_DALI_Fade_Time
+        case 242:
+            return KnxDatapointType_DPT_BlinkingMode
+        case 243:
+            return KnxDatapointType_DPT_LightControlMode
+        case 244:
+            return KnxDatapointType_DPT_SwitchPBModel
+        case 245:
+            return KnxDatapointType_DPT_PBAction
+        case 246:
+            return KnxDatapointType_DPT_DimmPBModel
+        case 247:
+            return KnxDatapointType_DPT_SwitchOnMode
+        case 248:
+            return KnxDatapointType_DPT_LoadTypeSet
+        case 249:
+            return KnxDatapointType_DPT_LoadTypeDetected
         case 25:
-            return KnxDatapointType_DPT_8_BIT_SET_2
+            return KnxDatapointType_DPT_Switch_Control
+        case 250:
+            return KnxDatapointType_DPT_Converter_Test_Control
+        case 251:
+            return KnxDatapointType_DPT_SABExcept_Behaviour
+        case 252:
+            return KnxDatapointType_DPT_SABBehaviour_Lock_Unlock
+        case 253:
+            return KnxDatapointType_DPT_SSSBMode
+        case 254:
+            return KnxDatapointType_DPT_BlindsControlMode
+        case 255:
+            return KnxDatapointType_DPT_CommMode
+        case 256:
+            return KnxDatapointType_DPT_AddInfoTypes
+        case 257:
+            return KnxDatapointType_DPT_RF_ModeSelect
+        case 258:
+            return KnxDatapointType_DPT_RF_FilterSelect
+        case 259:
+            return KnxDatapointType_DPT_StatusGen
         case 26:
-            return KnxDatapointType_DPT_32_BIT_SET
+            return KnxDatapointType_DPT_Bool_Control
+        case 260:
+            return KnxDatapointType_DPT_Device_Control
+        case 261:
+            return KnxDatapointType_DPT_ForceSign
+        case 262:
+            return KnxDatapointType_DPT_ForceSignCool
+        case 263:
+            return KnxDatapointType_DPT_StatusRHC
+        case 264:
+            return KnxDatapointType_DPT_StatusSDHWC
+        case 265:
+            return KnxDatapointType_DPT_FuelTypeSet
+        case 266:
+            return KnxDatapointType_DPT_StatusRCC
+        case 267:
+            return KnxDatapointType_DPT_StatusAHU
+        case 268:
+            return KnxDatapointType_DPT_CombinedStatus_RTSM
+        case 269:
+            return KnxDatapointType_DPT_LightActuatorErrorInfo
         case 27:
-            return KnxDatapointType_DPT_ELECTRICAL_ENERGY
+            return KnxDatapointType_DPT_Enable_Control
+        case 270:
+            return KnxDatapointType_DPT_RF_ModeInfo
+        case 271:
+            return KnxDatapointType_DPT_RF_FilterInfo
+        case 272:
+            return KnxDatapointType_DPT_Channel_Activation_8
+        case 273:
+            return KnxDatapointType_DPT_StatusDHWC
+        case 274:
+            return KnxDatapointType_DPT_StatusRHCC
+        case 275:
+            return KnxDatapointType_DPT_CombinedStatus_HVA
+        case 276:
+            return KnxDatapointType_DPT_CombinedStatus_RTC
+        case 277:
+            return KnxDatapointType_DPT_Media
+        case 278:
+            return KnxDatapointType_DPT_Channel_Activation_16
+        case 279:
+            return KnxDatapointType_DPT_OnOffAction
         case 28:
-            return KnxDatapointType_DPT_24_TIMES_CHANNEL_ACTIVATION
+            return KnxDatapointType_DPT_Ramp_Control
+        case 280:
+            return KnxDatapointType_DPT_Alarm_Reaction
+        case 281:
+            return KnxDatapointType_DPT_UpDown_Action
+        case 282:
+            return KnxDatapointType_DPT_HVAC_PB_Action
+        case 283:
+            return KnxDatapointType_DPT_DoubleNibble
+        case 284:
+            return KnxDatapointType_DPT_SceneInfo
+        case 285:
+            return KnxDatapointType_DPT_CombinedInfoOnOff
+        case 286:
+            return KnxDatapointType_DPT_ActiveEnergy_V64
+        case 287:
+            return KnxDatapointType_DPT_ApparantEnergy_V64
+        case 288:
+            return KnxDatapointType_DPT_ReactiveEnergy_V64
+        case 289:
+            return KnxDatapointType_DPT_Channel_Activation_24
         case 29:
-            return KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+            return KnxDatapointType_DPT_Alarm_Control
+        case 290:
+            return KnxDatapointType_DPT_HVACModeNext
+        case 291:
+            return KnxDatapointType_DPT_DHWModeNext
+        case 292:
+            return KnxDatapointType_DPT_OccModeNext
+        case 293:
+            return KnxDatapointType_DPT_BuildingModeNext
+        case 294:
+            return KnxDatapointType_DPT_Version
+        case 295:
+            return KnxDatapointType_DPT_AlarmInfo
+        case 296:
+            return KnxDatapointType_DPT_TempRoomSetpSetF16_3
+        case 297:
+            return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3
+        case 298:
+            return KnxDatapointType_DPT_Scaling_Speed
+        case 299:
+            return KnxDatapointType_DPT_Scaling_Step_Time
         case 3:
-            return KnxDatapointType_DPT_3_BIT_CONTROLLED
+            return KnxDatapointType_DPT_Enable
         case 30:
-            return KnxDatapointType_DPT_DATAPOINT_TYPE_VERSION
+            return KnxDatapointType_DPT_BinaryValue_Control
+        case 300:
+            return KnxDatapointType_DPT_MeteringValue
+        case 301:
+            return KnxDatapointType_DPT_MBus_Address
+        case 302:
+            return KnxDatapointType_DPT_Colour_RGB
+        case 303:
+            return KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII
+        case 304:
+            return KnxDatapointType_DPT_Tariff_ActiveEnergy
+        case 305:
+            return KnxDatapointType_DPT_Prioritised_Mode_Control
+        case 306:
+            return KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic
+        case 307:
+            return KnxDatapointType_DPT_DALI_Diagnostics
+        case 308:
+            return KnxDatapointType_DPT_CombinedPosition
+        case 309:
+            return KnxDatapointType_DPT_StatusSAB
         case 31:
-            return KnxDatapointType_DPT_ALARM_INFO
+            return KnxDatapointType_DPT_Step_Control
+        case 310:
+            return KnxDatapointType_DPT_Colour_xyY
+        case 311:
+            return KnxDatapointType_DPT_Converter_Status
+        case 312:
+            return KnxDatapointType_DPT_Converter_Test_Result
+        case 313:
+            return KnxDatapointType_DPT_Battery_Info
+        case 314:
+            return KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition
+        case 315:
+            return KnxDatapointType_DPT_Brightness_Colour_Temperature_Control
+        case 316:
+            return KnxDatapointType_DPT_Colour_RGBW
+        case 317:
+            return KnxDatapointType_DPT_Relative_Control_RGBW
+        case 318:
+            return KnxDatapointType_DPT_Relative_Control_RGB
+        case 319:
+            return KnxDatapointType_DPT_GeographicalLocation
         case 32:
-            return KnxDatapointType_DPT_3X_2_BYTE_FLOAT_VALUE
+            return KnxDatapointType_DPT_Direction1_Control
+        case 320:
+            return KnxDatapointType_DPT_TempRoomSetpSetF16_4
+        case 321:
+            return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4
         case 33:
-            return KnxDatapointType_DPT_SCALING_SPEED
+            return KnxDatapointType_DPT_Direction2_Control
         case 34:
-            return KnxDatapointType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
+            return KnxDatapointType_DPT_Start_Control
         case 35:
-            return KnxDatapointType_DPT_MBUS_ADDRESS
+            return KnxDatapointType_DPT_State_Control
         case 36:
-            return KnxDatapointType_DPT_3_BYTE_COLOUR_RGB
+            return KnxDatapointType_DPT_Invert_Control
         case 37:
-            return KnxDatapointType_DPT_LANGUAGE_CODE_ISO_639_1
+            return KnxDatapointType_DPT_Control_Dimming
         case 38:
-            return KnxDatapointType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
+            return KnxDatapointType_DPT_Control_Blinds
         case 39:
-            return KnxDatapointType_DPT_PRIORITISED_MODE_CONTROL
+            return KnxDatapointType_DPT_Char_ASCII
         case 4:
-            return KnxDatapointType_DPT_CHARACTER
+            return KnxDatapointType_DPT_Ramp
         case 40:
-            return KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
+            return KnxDatapointType_DPT_Char_8859_1
         case 41:
-            return KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
+            return KnxDatapointType_DPT_Scaling
         case 42:
-            return KnxDatapointType_DPT_POSITIONS
+            return KnxDatapointType_DPT_Angle
         case 43:
-            return KnxDatapointType_DPT_STATUS_32_BIT
+            return KnxDatapointType_DPT_Percent_U8
         case 44:
-            return KnxDatapointType_DPT_STATUS_48_BIT
+            return KnxDatapointType_DPT_DecimalFactor
         case 45:
-            return KnxDatapointType_DPT_CONVERTER_STATUS
+            return KnxDatapointType_DPT_Tariff
         case 46:
-            return KnxDatapointType_DPT_CONVERTER_TEST_RESULT
+            return KnxDatapointType_DPT_Value_1_Ucount
         case 47:
-            return KnxDatapointType_DPT_BATTERY_INFORMATION
+            return KnxDatapointType_DPT_FanStage
         case 48:
-            return KnxDatapointType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
+            return KnxDatapointType_DPT_Percent_V8
         case 49:
-            return KnxDatapointType_DPT_STATUS_24_BIT
+            return KnxDatapointType_DPT_Value_1_Count
         case 5:
-            return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
+            return KnxDatapointType_DPT_Alarm
         case 50:
-            return KnxDatapointType_DPT_COLOUR_RGBW
+            return KnxDatapointType_DPT_Status_Mode3
         case 51:
-            return KnxDatapointType_DPT_RELATIVE_CONTROL_RGBW
+            return KnxDatapointType_DPT_Value_2_Ucount
         case 52:
-            return KnxDatapointType_DPT_RELATIVE_CONTROL_RGB
+            return KnxDatapointType_DPT_TimePeriodMsec
         case 53:
-            return KnxDatapointType_DPT_F32F32
+            return KnxDatapointType_DPT_TimePeriod10Msec
         case 54:
-            return KnxDatapointType_DPT_F16F16F16F16
+            return KnxDatapointType_DPT_TimePeriod100Msec
+        case 55:
+            return KnxDatapointType_DPT_TimePeriodSec
+        case 56:
+            return KnxDatapointType_DPT_TimePeriodMin
+        case 57:
+            return KnxDatapointType_DPT_TimePeriodHrs
+        case 58:
+            return KnxDatapointType_DPT_PropDataType
+        case 59:
+            return KnxDatapointType_DPT_Length_mm
         case 6:
-            return KnxDatapointType_DPT_8_BIT_SIGNED_VALUE
+            return KnxDatapointType_DPT_BinaryValue
+        case 60:
+            return KnxDatapointType_DPT_UElCurrentmA
+        case 61:
+            return KnxDatapointType_DPT_Brightness
+        case 62:
+            return KnxDatapointType_DPT_Absolute_Colour_Temperature
+        case 63:
+            return KnxDatapointType_DPT_Value_2_Count
+        case 64:
+            return KnxDatapointType_DPT_DeltaTimeMsec
+        case 65:
+            return KnxDatapointType_DPT_DeltaTime10Msec
+        case 66:
+            return KnxDatapointType_DPT_DeltaTime100Msec
+        case 67:
+            return KnxDatapointType_DPT_DeltaTimeSec
+        case 68:
+            return KnxDatapointType_DPT_DeltaTimeMin
+        case 69:
+            return KnxDatapointType_DPT_DeltaTimeHrs
         case 7:
-            return KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE
+            return KnxDatapointType_DPT_Step
+        case 70:
+            return KnxDatapointType_DPT_Percent_V16
+        case 71:
+            return KnxDatapointType_DPT_Rotation_Angle
+        case 72:
+            return KnxDatapointType_DPT_Length_m
+        case 73:
+            return KnxDatapointType_DPT_Value_Temp
+        case 74:
+            return KnxDatapointType_DPT_Value_Tempd
+        case 75:
+            return KnxDatapointType_DPT_Value_Tempa
+        case 76:
+            return KnxDatapointType_DPT_Value_Lux
+        case 77:
+            return KnxDatapointType_DPT_Value_Wsp
+        case 78:
+            return KnxDatapointType_DPT_Value_Pres
+        case 79:
+            return KnxDatapointType_DPT_Value_Humidity
         case 8:
-            return KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE
+            return KnxDatapointType_DPT_UpDown
+        case 80:
+            return KnxDatapointType_DPT_Value_AirQuality
+        case 81:
+            return KnxDatapointType_DPT_Value_AirFlow
+        case 82:
+            return KnxDatapointType_DPT_Value_Time1
+        case 83:
+            return KnxDatapointType_DPT_Value_Time2
+        case 84:
+            return KnxDatapointType_DPT_Value_Volt
+        case 85:
+            return KnxDatapointType_DPT_Value_Curr
+        case 86:
+            return KnxDatapointType_DPT_PowerDensity
+        case 87:
+            return KnxDatapointType_DPT_KelvinPerPercent
+        case 88:
+            return KnxDatapointType_DPT_Power
+        case 89:
+            return KnxDatapointType_DPT_Value_Volume_Flow
         case 9:
-            return KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE
+            return KnxDatapointType_DPT_OpenClose
+        case 90:
+            return KnxDatapointType_DPT_Rain_Amount
+        case 91:
+            return KnxDatapointType_DPT_Value_Temp_F
+        case 92:
+            return KnxDatapointType_DPT_Value_Wsp_kmh
+        case 93:
+            return KnxDatapointType_DPT_Value_Absolute_Humidity
+        case 94:
+            return KnxDatapointType_DPT_Concentration_ygm3
+        case 95:
+            return KnxDatapointType_DPT_TimeOfDay
+        case 96:
+            return KnxDatapointType_DPT_Date
+        case 97:
+            return KnxDatapointType_DPT_Value_4_Ucount
+        case 98:
+            return KnxDatapointType_DPT_LongTimePeriod_Sec
+        case 99:
+            return KnxDatapointType_DPT_LongTimePeriod_Min
     }
     return 0
 }
@@ -728,114 +3932,648 @@ func KnxDatapointTypeByName(value string) KnxDatapointType {
     switch value {
     case "DPT_UNKNOWN":
         return KnxDatapointType_DPT_UNKNOWN
-    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_8_BIT_SET":
-        return KnxDatapointType_DPT_8_BIT_SET
-    case "DPT_16_BIT_SET":
-        return KnxDatapointType_DPT_16_BIT_SET
-    case "DPT_2_BIT_SET":
-        return KnxDatapointType_DPT_2_BIT_SET
-    case "DPT_2_NIBBLE_SET":
-        return KnxDatapointType_DPT_2_NIBBLE_SET
-    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_ELECTRICAL_ENERGY":
-        return KnxDatapointType_DPT_ELECTRICAL_ENERGY
-    case "DPT_24_TIMES_CHANNEL_ACTIVATION":
-        return KnxDatapointType_DPT_24_TIMES_CHANNEL_ACTIVATION
-    case "DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM":
-        return KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
-    case "DPT_3_BIT_CONTROLLED":
-        return KnxDatapointType_DPT_3_BIT_CONTROLLED
-    case "DPT_DATAPOINT_TYPE_VERSION":
-        return KnxDatapointType_DPT_DATAPOINT_TYPE_VERSION
-    case "DPT_ALARM_INFO":
-        return KnxDatapointType_DPT_ALARM_INFO
-    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_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_CHARACTER":
-        return KnxDatapointType_DPT_CHARACTER
-    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_STATUS_24_BIT":
-        return KnxDatapointType_DPT_STATUS_24_BIT
-    case "DPT_8_BIT_UNSIGNED_VALUE":
-        return KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE
-    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_F16F16F16F16":
-        return KnxDatapointType_DPT_F16F16F16F16
-    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
+    case "DPT_Switch":
+        return KnxDatapointType_DPT_Switch
+    case "DPT_Start":
+        return KnxDatapointType_DPT_Start
+    case "DPT_LongTimePeriod_Hrs":
+        return KnxDatapointType_DPT_LongTimePeriod_Hrs
+    case "DPT_VolumeLiquid_Litre":
+        return KnxDatapointType_DPT_VolumeLiquid_Litre
+    case "DPT_Volume_m_3":
+        return KnxDatapointType_DPT_Volume_m_3
+    case "DPT_Value_4_Count":
+        return KnxDatapointType_DPT_Value_4_Count
+    case "DPT_FlowRate_m3h":
+        return KnxDatapointType_DPT_FlowRate_m3h
+    case "DPT_ActiveEnergy":
+        return KnxDatapointType_DPT_ActiveEnergy
+    case "DPT_ApparantEnergy":
+        return KnxDatapointType_DPT_ApparantEnergy
+    case "DPT_ReactiveEnergy":
+        return KnxDatapointType_DPT_ReactiveEnergy
+    case "DPT_ActiveEnergy_kWh":
+        return KnxDatapointType_DPT_ActiveEnergy_kWh
+    case "DPT_ApparantEnergy_kVAh":
+        return KnxDatapointType_DPT_ApparantEnergy_kVAh
+    case "DPT_State":
+        return KnxDatapointType_DPT_State
+    case "DPT_ReactiveEnergy_kVARh":
+        return KnxDatapointType_DPT_ReactiveEnergy_kVARh
+    case "DPT_ActiveEnergy_MWh":
+        return KnxDatapointType_DPT_ActiveEnergy_MWh
+    case "DPT_LongDeltaTimeSec":
+        return KnxDatapointType_DPT_LongDeltaTimeSec
+    case "DPT_DeltaVolumeLiquid_Litre":
+        return KnxDatapointType_DPT_DeltaVolumeLiquid_Litre
+    case "DPT_DeltaVolume_m_3":
+        return KnxDatapointType_DPT_DeltaVolume_m_3
+    case "DPT_Value_Acceleration":
+        return KnxDatapointType_DPT_Value_Acceleration
+    case "DPT_Value_Acceleration_Angular":
+        return KnxDatapointType_DPT_Value_Acceleration_Angular
+    case "DPT_Value_Activation_Energy":
+        return KnxDatapointType_DPT_Value_Activation_Energy
+    case "DPT_Value_Activity":
+        return KnxDatapointType_DPT_Value_Activity
+    case "DPT_Value_Mol":
+        return KnxDatapointType_DPT_Value_Mol
+    case "DPT_Invert":
+        return KnxDatapointType_DPT_Invert
+    case "DPT_Value_Amplitude":
+        return KnxDatapointType_DPT_Value_Amplitude
+    case "DPT_Value_AngleRad":
+        return KnxDatapointType_DPT_Value_AngleRad
+    case "DPT_Value_AngleDeg":
+        return KnxDatapointType_DPT_Value_AngleDeg
+    case "DPT_Value_Angular_Momentum":
+        return KnxDatapointType_DPT_Value_Angular_Momentum
+    case "DPT_Value_Angular_Velocity":
+        return KnxDatapointType_DPT_Value_Angular_Velocity
+    case "DPT_Value_Area":
+        return KnxDatapointType_DPT_Value_Area
+    case "DPT_Value_Capacitance":
+        return KnxDatapointType_DPT_Value_Capacitance
+    case "DPT_Value_Charge_DensitySurface":
+        return KnxDatapointType_DPT_Value_Charge_DensitySurface
+    case "DPT_Value_Charge_DensityVolume":
+        return KnxDatapointType_DPT_Value_Charge_DensityVolume
+    case "DPT_Value_Compressibility":
+        return KnxDatapointType_DPT_Value_Compressibility
+    case "DPT_DimSendStyle":
+        return KnxDatapointType_DPT_DimSendStyle
+    case "DPT_Value_Conductance":
+        return KnxDatapointType_DPT_Value_Conductance
+    case "DPT_Value_Electrical_Conductivity":
+        return KnxDatapointType_DPT_Value_Electrical_Conductivity
+    case "DPT_Value_Density":
+        return KnxDatapointType_DPT_Value_Density
+    case "DPT_Value_Electric_Charge":
+        return KnxDatapointType_DPT_Value_Electric_Charge
+    case "DPT_Value_Electric_Current":
+        return KnxDatapointType_DPT_Value_Electric_Current
+    case "DPT_Value_Electric_CurrentDensity":
+        return KnxDatapointType_DPT_Value_Electric_CurrentDensity
+    case "DPT_Value_Electric_DipoleMoment":
+        return KnxDatapointType_DPT_Value_Electric_DipoleMoment
+    case "DPT_Value_Electric_Displacement":
+        return KnxDatapointType_DPT_Value_Electric_Displacement
+    case "DPT_Value_Electric_FieldStrength":
+        return KnxDatapointType_DPT_Value_Electric_FieldStrength
+    case "DPT_Value_Electric_Flux":
+        return KnxDatapointType_DPT_Value_Electric_Flux
+    case "DPT_InputSource":
+        return KnxDatapointType_DPT_InputSource
+    case "DPT_Value_Electric_FluxDensity":
+        return KnxDatapointType_DPT_Value_Electric_FluxDensity
+    case "DPT_Value_Electric_Polarization":
+        return KnxDatapointType_DPT_Value_Electric_Polarization
+    case "DPT_Value_Electric_Potential":
+        return KnxDatapointType_DPT_Value_Electric_Potential
+    case "DPT_Value_Electric_PotentialDifference":
+        return KnxDatapointType_DPT_Value_Electric_PotentialDifference
+    case "DPT_Value_ElectromagneticMoment":
+        return KnxDatapointType_DPT_Value_ElectromagneticMoment
+    case "DPT_Value_Electromotive_Force":
+        return KnxDatapointType_DPT_Value_Electromotive_Force
+    case "DPT_Value_Energy":
+        return KnxDatapointType_DPT_Value_Energy
+    case "DPT_Value_Force":
+        return KnxDatapointType_DPT_Value_Force
+    case "DPT_Value_Frequency":
+        return KnxDatapointType_DPT_Value_Frequency
+    case "DPT_Value_Angular_Frequency":
+        return KnxDatapointType_DPT_Value_Angular_Frequency
+    case "DPT_Reset":
+        return KnxDatapointType_DPT_Reset
+    case "DPT_Value_Heat_Capacity":
+        return KnxDatapointType_DPT_Value_Heat_Capacity
+    case "DPT_Value_Heat_FlowRate":
+        return KnxDatapointType_DPT_Value_Heat_FlowRate
+    case "DPT_Value_Heat_Quantity":
+        return KnxDatapointType_DPT_Value_Heat_Quantity
+    case "DPT_Value_Impedance":
+        return KnxDatapointType_DPT_Value_Impedance
+    case "DPT_Value_Length":
+        return KnxDatapointType_DPT_Value_Length
+    case "DPT_Value_Light_Quantity":
+        return KnxDatapointType_DPT_Value_Light_Quantity
+    case "DPT_Value_Luminance":
+        return KnxDatapointType_DPT_Value_Luminance
+    case "DPT_Value_Luminous_Flux":
+        return KnxDatapointType_DPT_Value_Luminous_Flux
+    case "DPT_Value_Luminous_Intensity":
+        return KnxDatapointType_DPT_Value_Luminous_Intensity
+    case "DPT_Value_Magnetic_FieldStrength":
+        return KnxDatapointType_DPT_Value_Magnetic_FieldStrength
+    case "DPT_Ack":
+        return KnxDatapointType_DPT_Ack
+    case "DPT_Value_Magnetic_Flux":
+        return KnxDatapointType_DPT_Value_Magnetic_Flux
+    case "DPT_Value_Magnetic_FluxDensity":
+        return KnxDatapointType_DPT_Value_Magnetic_FluxDensity
+    case "DPT_Value_Magnetic_Moment":
+        return KnxDatapointType_DPT_Value_Magnetic_Moment
+    case "DPT_Value_Magnetic_Polarization":
+        return KnxDatapointType_DPT_Value_Magnetic_Polarization
+    case "DPT_Value_Magnetization":
+        return KnxDatapointType_DPT_Value_Magnetization
+    case "DPT_Value_MagnetomotiveForce":
+        return KnxDatapointType_DPT_Value_MagnetomotiveForce
+    case "DPT_Value_Mass":
+        return KnxDatapointType_DPT_Value_Mass
+    case "DPT_Value_MassFlux":
+        return KnxDatapointType_DPT_Value_MassFlux
+    case "DPT_Value_Momentum":
+        return KnxDatapointType_DPT_Value_Momentum
+    case "DPT_Value_Phase_AngleRad":
+        return KnxDatapointType_DPT_Value_Phase_AngleRad
+    case "DPT_Trigger":
+        return KnxDatapointType_DPT_Trigger
+    case "DPT_Value_Phase_AngleDeg":
+        return KnxDatapointType_DPT_Value_Phase_AngleDeg
+    case "DPT_Value_Power":
+        return KnxDatapointType_DPT_Value_Power
+    case "DPT_Value_Power_Factor":
+        return KnxDatapointType_DPT_Value_Power_Factor
+    case "DPT_Value_Pressure":
+        return KnxDatapointType_DPT_Value_Pressure
+    case "DPT_Value_Reactance":
+        return KnxDatapointType_DPT_Value_Reactance
+    case "DPT_Value_Resistance":
+        return KnxDatapointType_DPT_Value_Resistance
+    case "DPT_Value_Resistivity":
+        return KnxDatapointType_DPT_Value_Resistivity
+    case "DPT_Value_SelfInductance":
+        return KnxDatapointType_DPT_Value_SelfInductance
+    case "DPT_Value_SolidAngle":
+        return KnxDatapointType_DPT_Value_SolidAngle
+    case "DPT_Value_Sound_Intensity":
+        return KnxDatapointType_DPT_Value_Sound_Intensity
+    case "DPT_Occupancy":
+        return KnxDatapointType_DPT_Occupancy
+    case "DPT_Value_Speed":
+        return KnxDatapointType_DPT_Value_Speed
+    case "DPT_Value_Stress":
+        return KnxDatapointType_DPT_Value_Stress
+    case "DPT_Value_Surface_Tension":
+        return KnxDatapointType_DPT_Value_Surface_Tension
+    case "DPT_Value_Common_Temperature":
+        return KnxDatapointType_DPT_Value_Common_Temperature
+    case "DPT_Value_Absolute_Temperature":
+        return KnxDatapointType_DPT_Value_Absolute_Temperature
+    case "DPT_Value_TemperatureDifference":
+        return KnxDatapointType_DPT_Value_TemperatureDifference
+    case "DPT_Value_Thermal_Capacity":
+        return KnxDatapointType_DPT_Value_Thermal_Capacity
+    case "DPT_Value_Thermal_Conductivity":
+        return KnxDatapointType_DPT_Value_Thermal_Conductivity
+    case "DPT_Value_ThermoelectricPower":
+        return KnxDatapointType_DPT_Value_ThermoelectricPower
+    case "DPT_Value_Time":
+        return KnxDatapointType_DPT_Value_Time
+    case "DPT_Window_Door":
+        return KnxDatapointType_DPT_Window_Door
+    case "DPT_Value_Torque":
+        return KnxDatapointType_DPT_Value_Torque
+    case "DPT_Value_Volume":
+        return KnxDatapointType_DPT_Value_Volume
+    case "DPT_Value_Volume_Flux":
+        return KnxDatapointType_DPT_Value_Volume_Flux
+    case "DPT_Value_Weight":
+        return KnxDatapointType_DPT_Value_Weight
+    case "DPT_Value_Work":
+        return KnxDatapointType_DPT_Value_Work
+    case "DPT_Volume_Flux_Meter":
+        return KnxDatapointType_DPT_Volume_Flux_Meter
+    case "DPT_Volume_Flux_ls":
+        return KnxDatapointType_DPT_Volume_Flux_ls
+    case "DPT_Access_Data":
+        return KnxDatapointType_DPT_Access_Data
+    case "DPT_String_ASCII":
+        return KnxDatapointType_DPT_String_ASCII
+    case "DPT_String_8859_1":
+        return KnxDatapointType_DPT_String_8859_1
+    case "DPT_Bool":
+        return KnxDatapointType_DPT_Bool
+    case "DPT_LogicalFunction":
+        return KnxDatapointType_DPT_LogicalFunction
+    case "DPT_SceneNumber":
+        return KnxDatapointType_DPT_SceneNumber
+    case "DPT_SceneControl":
+        return KnxDatapointType_DPT_SceneControl
+    case "DPT_DateTime":
+        return KnxDatapointType_DPT_DateTime
+    case "DPT_SCLOMode":
+        return KnxDatapointType_DPT_SCLOMode
+    case "DPT_BuildingMode":
+        return KnxDatapointType_DPT_BuildingMode
+    case "DPT_OccMode":
+        return KnxDatapointType_DPT_OccMode
+    case "DPT_Priority":
+        return KnxDatapointType_DPT_Priority
+    case "DPT_LightApplicationMode":
+        return KnxDatapointType_DPT_LightApplicationMode
+    case "DPT_ApplicationArea":
+        return KnxDatapointType_DPT_ApplicationArea
+    case "DPT_AlarmClassType":
+        return KnxDatapointType_DPT_AlarmClassType
+    case "DPT_Scene_AB":
+        return KnxDatapointType_DPT_Scene_AB
+    case "DPT_PSUMode":
+        return KnxDatapointType_DPT_PSUMode
+    case "DPT_ErrorClass_System":
+        return KnxDatapointType_DPT_ErrorClass_System
+    case "DPT_ErrorClass_HVAC":
+        return KnxDatapointType_DPT_ErrorClass_HVAC
+    case "DPT_Time_Delay":
+        return KnxDatapointType_DPT_Time_Delay
+    case "DPT_Beaufort_Wind_Force_Scale":
+        return KnxDatapointType_DPT_Beaufort_Wind_Force_Scale
+    case "DPT_SensorSelect":
+        return KnxDatapointType_DPT_SensorSelect
+    case "DPT_ActuatorConnectType":
+        return KnxDatapointType_DPT_ActuatorConnectType
+    case "DPT_Cloud_Cover":
+        return KnxDatapointType_DPT_Cloud_Cover
+    case "DPT_PowerReturnMode":
+        return KnxDatapointType_DPT_PowerReturnMode
+    case "DPT_FuelType":
+        return KnxDatapointType_DPT_FuelType
+    case "DPT_ShutterBlinds_Mode":
+        return KnxDatapointType_DPT_ShutterBlinds_Mode
+    case "DPT_BurnerType":
+        return KnxDatapointType_DPT_BurnerType
+    case "DPT_HVACMode":
+        return KnxDatapointType_DPT_HVACMode
+    case "DPT_DHWMode":
+        return KnxDatapointType_DPT_DHWMode
+    case "DPT_LoadPriority":
+        return KnxDatapointType_DPT_LoadPriority
+    case "DPT_HVACContrMode":
+        return KnxDatapointType_DPT_HVACContrMode
+    case "DPT_HVACEmergMode":
+        return KnxDatapointType_DPT_HVACEmergMode
+    case "DPT_ChangeoverMode":
+        return KnxDatapointType_DPT_ChangeoverMode
+    case "DPT_ValveMode":
+        return KnxDatapointType_DPT_ValveMode
+    case "DPT_DamperMode":
+        return KnxDatapointType_DPT_DamperMode
+    case "DPT_HeaterMode":
+        return KnxDatapointType_DPT_HeaterMode
+    case "DPT_DayNight":
+        return KnxDatapointType_DPT_DayNight
+    case "DPT_FanMode":
+        return KnxDatapointType_DPT_FanMode
+    case "DPT_MasterSlaveMode":
+        return KnxDatapointType_DPT_MasterSlaveMode
+    case "DPT_StatusRoomSetp":
+        return KnxDatapointType_DPT_StatusRoomSetp
+    case "DPT_Metering_DeviceType":
+        return KnxDatapointType_DPT_Metering_DeviceType
+    case "DPT_HumDehumMode":
+        return KnxDatapointType_DPT_HumDehumMode
+    case "DPT_EnableHCStage":
+        return KnxDatapointType_DPT_EnableHCStage
+    case "DPT_ADAType":
+        return KnxDatapointType_DPT_ADAType
+    case "DPT_BackupMode":
+        return KnxDatapointType_DPT_BackupMode
+    case "DPT_StartSynchronization":
+        return KnxDatapointType_DPT_StartSynchronization
+    case "DPT_Behaviour_Lock_Unlock":
+        return KnxDatapointType_DPT_Behaviour_Lock_Unlock
+    case "DPT_Heat_Cool":
+        return KnxDatapointType_DPT_Heat_Cool
+    case "DPT_Behaviour_Bus_Power_Up_Down":
+        return KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down
+    case "DPT_DALI_Fade_Time":
+        return KnxDatapointType_DPT_DALI_Fade_Time
+    case "DPT_BlinkingMode":
+        return KnxDatapointType_DPT_BlinkingMode
+    case "DPT_LightControlMode":
+        return KnxDatapointType_DPT_LightControlMode
+    case "DPT_SwitchPBModel":
+        return KnxDatapointType_DPT_SwitchPBModel
+    case "DPT_PBAction":
+        return KnxDatapointType_DPT_PBAction
+    case "DPT_DimmPBModel":
+        return KnxDatapointType_DPT_DimmPBModel
+    case "DPT_SwitchOnMode":
+        return KnxDatapointType_DPT_SwitchOnMode
+    case "DPT_LoadTypeSet":
+        return KnxDatapointType_DPT_LoadTypeSet
+    case "DPT_LoadTypeDetected":
+        return KnxDatapointType_DPT_LoadTypeDetected
+    case "DPT_Switch_Control":
+        return KnxDatapointType_DPT_Switch_Control
+    case "DPT_Converter_Test_Control":
+        return KnxDatapointType_DPT_Converter_Test_Control
+    case "DPT_SABExcept_Behaviour":
+        return KnxDatapointType_DPT_SABExcept_Behaviour
+    case "DPT_SABBehaviour_Lock_Unlock":
+        return KnxDatapointType_DPT_SABBehaviour_Lock_Unlock
+    case "DPT_SSSBMode":
+        return KnxDatapointType_DPT_SSSBMode
+    case "DPT_BlindsControlMode":
+        return KnxDatapointType_DPT_BlindsControlMode
+    case "DPT_CommMode":
+        return KnxDatapointType_DPT_CommMode
+    case "DPT_AddInfoTypes":
+        return KnxDatapointType_DPT_AddInfoTypes
+    case "DPT_RF_ModeSelect":
+        return KnxDatapointType_DPT_RF_ModeSelect
+    case "DPT_RF_FilterSelect":
+        return KnxDatapointType_DPT_RF_FilterSelect
+    case "DPT_StatusGen":
+        return KnxDatapointType_DPT_StatusGen
+    case "DPT_Bool_Control":
+        return KnxDatapointType_DPT_Bool_Control
+    case "DPT_Device_Control":
+        return KnxDatapointType_DPT_Device_Control
+    case "DPT_ForceSign":
+        return KnxDatapointType_DPT_ForceSign
+    case "DPT_ForceSignCool":
+        return KnxDatapointType_DPT_ForceSignCool
+    case "DPT_StatusRHC":
+        return KnxDatapointType_DPT_StatusRHC
+    case "DPT_StatusSDHWC":
+        return KnxDatapointType_DPT_StatusSDHWC
+    case "DPT_FuelTypeSet":
+        return KnxDatapointType_DPT_FuelTypeSet
+    case "DPT_StatusRCC":
+        return KnxDatapointType_DPT_StatusRCC
+    case "DPT_StatusAHU":
+        return KnxDatapointType_DPT_StatusAHU
+    case "DPT_CombinedStatus_RTSM":
+        return KnxDatapointType_DPT_CombinedStatus_RTSM
+    case "DPT_LightActuatorErrorInfo":
+        return KnxDatapointType_DPT_LightActuatorErrorInfo
+    case "DPT_Enable_Control":
+        return KnxDatapointType_DPT_Enable_Control
+    case "DPT_RF_ModeInfo":
+        return KnxDatapointType_DPT_RF_ModeInfo
+    case "DPT_RF_FilterInfo":
+        return KnxDatapointType_DPT_RF_FilterInfo
+    case "DPT_Channel_Activation_8":
+        return KnxDatapointType_DPT_Channel_Activation_8
+    case "DPT_StatusDHWC":
+        return KnxDatapointType_DPT_StatusDHWC
+    case "DPT_StatusRHCC":
+        return KnxDatapointType_DPT_StatusRHCC
+    case "DPT_CombinedStatus_HVA":
+        return KnxDatapointType_DPT_CombinedStatus_HVA
+    case "DPT_CombinedStatus_RTC":
+        return KnxDatapointType_DPT_CombinedStatus_RTC
+    case "DPT_Media":
+        return KnxDatapointType_DPT_Media
+    case "DPT_Channel_Activation_16":
+        return KnxDatapointType_DPT_Channel_Activation_16
+    case "DPT_OnOffAction":
+        return KnxDatapointType_DPT_OnOffAction
+    case "DPT_Ramp_Control":
+        return KnxDatapointType_DPT_Ramp_Control
+    case "DPT_Alarm_Reaction":
+        return KnxDatapointType_DPT_Alarm_Reaction
+    case "DPT_UpDown_Action":
+        return KnxDatapointType_DPT_UpDown_Action
+    case "DPT_HVAC_PB_Action":
+        return KnxDatapointType_DPT_HVAC_PB_Action
+    case "DPT_DoubleNibble":
+        return KnxDatapointType_DPT_DoubleNibble
+    case "DPT_SceneInfo":
+        return KnxDatapointType_DPT_SceneInfo
+    case "DPT_CombinedInfoOnOff":
+        return KnxDatapointType_DPT_CombinedInfoOnOff
+    case "DPT_ActiveEnergy_V64":
+        return KnxDatapointType_DPT_ActiveEnergy_V64
+    case "DPT_ApparantEnergy_V64":
+        return KnxDatapointType_DPT_ApparantEnergy_V64
+    case "DPT_ReactiveEnergy_V64":
+        return KnxDatapointType_DPT_ReactiveEnergy_V64
+    case "DPT_Channel_Activation_24":
+        return KnxDatapointType_DPT_Channel_Activation_24
+    case "DPT_Alarm_Control":
+        return KnxDatapointType_DPT_Alarm_Control
+    case "DPT_HVACModeNext":
+        return KnxDatapointType_DPT_HVACModeNext
+    case "DPT_DHWModeNext":
+        return KnxDatapointType_DPT_DHWModeNext
+    case "DPT_OccModeNext":
+        return KnxDatapointType_DPT_OccModeNext
+    case "DPT_BuildingModeNext":
+        return KnxDatapointType_DPT_BuildingModeNext
+    case "DPT_Version":
+        return KnxDatapointType_DPT_Version
+    case "DPT_AlarmInfo":
+        return KnxDatapointType_DPT_AlarmInfo
+    case "DPT_TempRoomSetpSetF16_3":
+        return KnxDatapointType_DPT_TempRoomSetpSetF16_3
+    case "DPT_TempRoomSetpSetShiftF16_3":
+        return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3
+    case "DPT_Scaling_Speed":
+        return KnxDatapointType_DPT_Scaling_Speed
+    case "DPT_Scaling_Step_Time":
+        return KnxDatapointType_DPT_Scaling_Step_Time
+    case "DPT_Enable":
+        return KnxDatapointType_DPT_Enable
+    case "DPT_BinaryValue_Control":
+        return KnxDatapointType_DPT_BinaryValue_Control
+    case "DPT_MeteringValue":
+        return KnxDatapointType_DPT_MeteringValue
+    case "DPT_MBus_Address":
+        return KnxDatapointType_DPT_MBus_Address
+    case "DPT_Colour_RGB":
+        return KnxDatapointType_DPT_Colour_RGB
+    case "DPT_LanguageCodeAlpha2_ASCII":
+        return KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII
+    case "DPT_Tariff_ActiveEnergy":
+        return KnxDatapointType_DPT_Tariff_ActiveEnergy
+    case "DPT_Prioritised_Mode_Control":
+        return KnxDatapointType_DPT_Prioritised_Mode_Control
+    case "DPT_DALI_Control_Gear_Diagnostic":
+        return KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic
+    case "DPT_DALI_Diagnostics":
+        return KnxDatapointType_DPT_DALI_Diagnostics
+    case "DPT_CombinedPosition":
+        return KnxDatapointType_DPT_CombinedPosition
+    case "DPT_StatusSAB":
+        return KnxDatapointType_DPT_StatusSAB
+    case "DPT_Step_Control":
+        return KnxDatapointType_DPT_Step_Control
+    case "DPT_Colour_xyY":
+        return KnxDatapointType_DPT_Colour_xyY
+    case "DPT_Converter_Status":
+        return KnxDatapointType_DPT_Converter_Status
+    case "DPT_Converter_Test_Result":
+        return KnxDatapointType_DPT_Converter_Test_Result
+    case "DPT_Battery_Info":
+        return KnxDatapointType_DPT_Battery_Info
+    case "DPT_Brightness_Colour_Temperature_Transition":
+        return KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition
+    case "DPT_Brightness_Colour_Temperature_Control":
+        return KnxDatapointType_DPT_Brightness_Colour_Temperature_Control
+    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_GeographicalLocation":
+        return KnxDatapointType_DPT_GeographicalLocation
+    case "DPT_Direction1_Control":
+        return KnxDatapointType_DPT_Direction1_Control
+    case "DPT_TempRoomSetpSetF16_4":
+        return KnxDatapointType_DPT_TempRoomSetpSetF16_4
+    case "DPT_TempRoomSetpSetShiftF16_4":
+        return KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4
+    case "DPT_Direction2_Control":
+        return KnxDatapointType_DPT_Direction2_Control
+    case "DPT_Start_Control":
+        return KnxDatapointType_DPT_Start_Control
+    case "DPT_State_Control":
+        return KnxDatapointType_DPT_State_Control
+    case "DPT_Invert_Control":
+        return KnxDatapointType_DPT_Invert_Control
+    case "DPT_Control_Dimming":
+        return KnxDatapointType_DPT_Control_Dimming
+    case "DPT_Control_Blinds":
+        return KnxDatapointType_DPT_Control_Blinds
+    case "DPT_Char_ASCII":
+        return KnxDatapointType_DPT_Char_ASCII
+    case "DPT_Ramp":
+        return KnxDatapointType_DPT_Ramp
+    case "DPT_Char_8859_1":
+        return KnxDatapointType_DPT_Char_8859_1
+    case "DPT_Scaling":
+        return KnxDatapointType_DPT_Scaling
+    case "DPT_Angle":
+        return KnxDatapointType_DPT_Angle
+    case "DPT_Percent_U8":
+        return KnxDatapointType_DPT_Percent_U8
+    case "DPT_DecimalFactor":
+        return KnxDatapointType_DPT_DecimalFactor
+    case "DPT_Tariff":
+        return KnxDatapointType_DPT_Tariff
+    case "DPT_Value_1_Ucount":
+        return KnxDatapointType_DPT_Value_1_Ucount
+    case "DPT_FanStage":
+        return KnxDatapointType_DPT_FanStage
+    case "DPT_Percent_V8":
+        return KnxDatapointType_DPT_Percent_V8
+    case "DPT_Value_1_Count":
+        return KnxDatapointType_DPT_Value_1_Count
+    case "DPT_Alarm":
+        return KnxDatapointType_DPT_Alarm
+    case "DPT_Status_Mode3":
+        return KnxDatapointType_DPT_Status_Mode3
+    case "DPT_Value_2_Ucount":
+        return KnxDatapointType_DPT_Value_2_Ucount
+    case "DPT_TimePeriodMsec":
+        return KnxDatapointType_DPT_TimePeriodMsec
+    case "DPT_TimePeriod10Msec":
+        return KnxDatapointType_DPT_TimePeriod10Msec
+    case "DPT_TimePeriod100Msec":
+        return KnxDatapointType_DPT_TimePeriod100Msec
+    case "DPT_TimePeriodSec":
+        return KnxDatapointType_DPT_TimePeriodSec
+    case "DPT_TimePeriodMin":
+        return KnxDatapointType_DPT_TimePeriodMin
+    case "DPT_TimePeriodHrs":
+        return KnxDatapointType_DPT_TimePeriodHrs
+    case "DPT_PropDataType":
+        return KnxDatapointType_DPT_PropDataType
+    case "DPT_Length_mm":
+        return KnxDatapointType_DPT_Length_mm
+    case "DPT_BinaryValue":
+        return KnxDatapointType_DPT_BinaryValue
+    case "DPT_UElCurrentmA":
+        return KnxDatapointType_DPT_UElCurrentmA
+    case "DPT_Brightness":
+        return KnxDatapointType_DPT_Brightness
+    case "DPT_Absolute_Colour_Temperature":
+        return KnxDatapointType_DPT_Absolute_Colour_Temperature
+    case "DPT_Value_2_Count":
+        return KnxDatapointType_DPT_Value_2_Count
+    case "DPT_DeltaTimeMsec":
+        return KnxDatapointType_DPT_DeltaTimeMsec
+    case "DPT_DeltaTime10Msec":
+        return KnxDatapointType_DPT_DeltaTime10Msec
+    case "DPT_DeltaTime100Msec":
+        return KnxDatapointType_DPT_DeltaTime100Msec
+    case "DPT_DeltaTimeSec":
+        return KnxDatapointType_DPT_DeltaTimeSec
+    case "DPT_DeltaTimeMin":
+        return KnxDatapointType_DPT_DeltaTimeMin
+    case "DPT_DeltaTimeHrs":
+        return KnxDatapointType_DPT_DeltaTimeHrs
+    case "DPT_Step":
+        return KnxDatapointType_DPT_Step
+    case "DPT_Percent_V16":
+        return KnxDatapointType_DPT_Percent_V16
+    case "DPT_Rotation_Angle":
+        return KnxDatapointType_DPT_Rotation_Angle
+    case "DPT_Length_m":
+        return KnxDatapointType_DPT_Length_m
+    case "DPT_Value_Temp":
+        return KnxDatapointType_DPT_Value_Temp
+    case "DPT_Value_Tempd":
+        return KnxDatapointType_DPT_Value_Tempd
+    case "DPT_Value_Tempa":
+        return KnxDatapointType_DPT_Value_Tempa
+    case "DPT_Value_Lux":
+        return KnxDatapointType_DPT_Value_Lux
+    case "DPT_Value_Wsp":
+        return KnxDatapointType_DPT_Value_Wsp
+    case "DPT_Value_Pres":
+        return KnxDatapointType_DPT_Value_Pres
+    case "DPT_Value_Humidity":
+        return KnxDatapointType_DPT_Value_Humidity
+    case "DPT_UpDown":
+        return KnxDatapointType_DPT_UpDown
+    case "DPT_Value_AirQuality":
+        return KnxDatapointType_DPT_Value_AirQuality
+    case "DPT_Value_AirFlow":
+        return KnxDatapointType_DPT_Value_AirFlow
+    case "DPT_Value_Time1":
+        return KnxDatapointType_DPT_Value_Time1
+    case "DPT_Value_Time2":
+        return KnxDatapointType_DPT_Value_Time2
+    case "DPT_Value_Volt":
+        return KnxDatapointType_DPT_Value_Volt
+    case "DPT_Value_Curr":
+        return KnxDatapointType_DPT_Value_Curr
+    case "DPT_PowerDensity":
+        return KnxDatapointType_DPT_PowerDensity
+    case "DPT_KelvinPerPercent":
+        return KnxDatapointType_DPT_KelvinPerPercent
+    case "DPT_Power":
+        return KnxDatapointType_DPT_Power
+    case "DPT_Value_Volume_Flow":
+        return KnxDatapointType_DPT_Value_Volume_Flow
+    case "DPT_OpenClose":
+        return KnxDatapointType_DPT_OpenClose
+    case "DPT_Rain_Amount":
+        return KnxDatapointType_DPT_Rain_Amount
+    case "DPT_Value_Temp_F":
+        return KnxDatapointType_DPT_Value_Temp_F
+    case "DPT_Value_Wsp_kmh":
+        return KnxDatapointType_DPT_Value_Wsp_kmh
+    case "DPT_Value_Absolute_Humidity":
+        return KnxDatapointType_DPT_Value_Absolute_Humidity
+    case "DPT_Concentration_ygm3":
+        return KnxDatapointType_DPT_Concentration_ygm3
+    case "DPT_TimeOfDay":
+        return KnxDatapointType_DPT_TimeOfDay
+    case "DPT_Date":
+        return KnxDatapointType_DPT_Date
+    case "DPT_Value_4_Ucount":
+        return KnxDatapointType_DPT_Value_4_Ucount
+    case "DPT_LongTimePeriod_Sec":
+        return KnxDatapointType_DPT_LongTimePeriod_Sec
+    case "DPT_LongTimePeriod_Min":
+        return KnxDatapointType_DPT_LongTimePeriod_Min
     }
     return 0
 }
@@ -851,7 +4589,7 @@ func CastKnxDatapointType(structType interface{}) KnxDatapointType {
 }
 
 func (m KnxDatapointType) LengthInBits() uint16 {
-    return 16
+    return 32
 }
 
 func (m KnxDatapointType) LengthInBytes() uint16 {
@@ -859,7 +4597,7 @@ func (m KnxDatapointType) LengthInBytes() uint16 {
 }
 
 func KnxDatapointTypeParse(io *utils.ReadBuffer) (KnxDatapointType, error) {
-    val, err := io.ReadUint16(16)
+    val, err := io.ReadUint32(32)
     if err != nil {
         return 0, nil
     }
@@ -867,7 +4605,7 @@ func KnxDatapointTypeParse(io *utils.ReadBuffer) (KnxDatapointType, error) {
 }
 
 func (e KnxDatapointType) Serialize(io utils.WriteBuffer) error {
-    err := io.WriteUint16(16, uint16(e))
+    err := io.WriteUint32(32, uint32(e))
     return err
 }
 
@@ -875,114 +4613,648 @@ func (e KnxDatapointType) String() string {
     switch e {
     case KnxDatapointType_DPT_UNKNOWN:
         return "DPT_UNKNOWN"
-    case KnxDatapointType_DPT_1_BIT:
-        return "DPT_1_BIT"
-    case KnxDatapointType_DPT_TIME:
-        return "DPT_TIME"
-    case KnxDatapointType_DPT_DATE:
-        return "DPT_DATE"
-    case KnxDatapointType_DPT_4_BYTE_UNSIGNED_VALUE:
-        return "DPT_4_BYTE_UNSIGNED_VALUE"
-    case KnxDatapointType_DPT_4_BYTE_SIGNED_VALUE:
-        return "DPT_4_BYTE_SIGNED_VALUE"
-    case KnxDatapointType_DPT_4_BYTE_FLOAT_VALUE:
-        return "DPT_4_BYTE_FLOAT_VALUE"
-    case KnxDatapointType_DPT_ENTRANCE_ACCESS:
-        return "DPT_ENTRANCE_ACCESS"
-    case KnxDatapointType_DPT_CHARACTER_STRING:
-        return "DPT_CHARACTER_STRING"
-    case KnxDatapointType_DPT_SCENE_NUMBER:
-        return "DPT_SCENE_NUMBER"
-    case KnxDatapointType_DPT_SCENE_CONTROL:
-        return "DPT_SCENE_CONTROL"
-    case KnxDatapointType_DPT_DATE_TIME:
-        return "DPT_DATE_TIME"
-    case KnxDatapointType_DPT_1_BIT_CONTROLLED:
-        return "DPT_1_BIT_CONTROLLED"
-    case KnxDatapointType_DPT_1_BYTE:
-        return "DPT_1_BYTE"
-    case KnxDatapointType_DPT_8_BIT_SET:
-        return "DPT_8_BIT_SET"
-    case KnxDatapointType_DPT_16_BIT_SET:
-        return "DPT_16_BIT_SET"
-    case KnxDatapointType_DPT_2_BIT_SET:
-        return "DPT_2_BIT_SET"
-    case KnxDatapointType_DPT_2_NIBBLE_SET:
-        return "DPT_2_NIBBLE_SET"
-    case KnxDatapointType_DPT_8_BIT_SET_2:
-        return "DPT_8_BIT_SET_2"
-    case KnxDatapointType_DPT_32_BIT_SET:
-        return "DPT_32_BIT_SET"
-    case KnxDatapointType_DPT_ELECTRICAL_ENERGY:
-        return "DPT_ELECTRICAL_ENERGY"
-    case KnxDatapointType_DPT_24_TIMES_CHANNEL_ACTIVATION:
-        return "DPT_24_TIMES_CHANNEL_ACTIVATION"
-    case KnxDatapointType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM:
-        return "DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM"
-    case KnxDatapointType_DPT_3_BIT_CONTROLLED:
-        return "DPT_3_BIT_CONTROLLED"
-    case KnxDatapointType_DPT_DATAPOINT_TYPE_VERSION:
-        return "DPT_DATAPOINT_TYPE_VERSION"
-    case KnxDatapointType_DPT_ALARM_INFO:
-        return "DPT_ALARM_INFO"
-    case KnxDatapointType_DPT_3X_2_BYTE_FLOAT_VALUE:
-        return "DPT_3X_2_BYTE_FLOAT_VALUE"
-    case KnxDatapointType_DPT_SCALING_SPEED:
-        return "DPT_SCALING_SPEED"
-    case KnxDatapointType_DPT_4_1_1_BYTE_COMBINED_INFORMATION:
-        return "DPT_4_1_1_BYTE_COMBINED_INFORMATION"
-    case KnxDatapointType_DPT_MBUS_ADDRESS:
-        return "DPT_MBUS_ADDRESS"
-    case KnxDatapointType_DPT_3_BYTE_COLOUR_RGB:
-        return "DPT_3_BYTE_COLOUR_RGB"
-    case KnxDatapointType_DPT_LANGUAGE_CODE_ISO_639_1:
-        return "DPT_LANGUAGE_CODE_ISO_639_1"
-    case KnxDatapointType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY:
-        return "DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY"
-    case KnxDatapointType_DPT_PRIORITISED_MODE_CONTROL:
-        return "DPT_PRIORITISED_MODE_CONTROL"
-    case KnxDatapointType_DPT_CHARACTER:
-        return "DPT_CHARACTER"
-    case KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT:
-        return "DPT_CONFIGURATION_DIAGNOSTICS_16_BIT"
-    case KnxDatapointType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT:
-        return "DPT_CONFIGURATION_DIAGNOSTICS_8_BIT"
-    case KnxDatapointType_DPT_POSITIONS:
-        return "DPT_POSITIONS"
-    case KnxDatapointType_DPT_STATUS_32_BIT:
-        return "DPT_STATUS_32_BIT"
-    case KnxDatapointType_DPT_STATUS_48_BIT:
-        return "DPT_STATUS_48_BIT"
-    case KnxDatapointType_DPT_CONVERTER_STATUS:
-        return "DPT_CONVERTER_STATUS"
-    case KnxDatapointType_DPT_CONVERTER_TEST_RESULT:
-        return "DPT_CONVERTER_TEST_RESULT"
-    case KnxDatapointType_DPT_BATTERY_INFORMATION:
-        return "DPT_BATTERY_INFORMATION"
-    case KnxDatapointType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION:
-        return "DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION"
-    case KnxDatapointType_DPT_STATUS_24_BIT:
-        return "DPT_STATUS_24_BIT"
-    case KnxDatapointType_DPT_8_BIT_UNSIGNED_VALUE:
-        return "DPT_8_BIT_UNSIGNED_VALUE"
-    case KnxDatapointType_DPT_COLOUR_RGBW:
-        return "DPT_COLOUR_RGBW"
-    case KnxDatapointType_DPT_RELATIVE_CONTROL_RGBW:
-        return "DPT_RELATIVE_CONTROL_RGBW"
-    case KnxDatapointType_DPT_RELATIVE_CONTROL_RGB:
-        return "DPT_RELATIVE_CONTROL_RGB"
-    case KnxDatapointType_DPT_F32F32:
-        return "DPT_F32F32"
-    case KnxDatapointType_DPT_F16F16F16F16:
-        return "DPT_F16F16F16F16"
-    case KnxDatapointType_DPT_8_BIT_SIGNED_VALUE:
-        return "DPT_8_BIT_SIGNED_VALUE"
-    case KnxDatapointType_DPT_2_BYTE_UNSIGNED_VALUE:
-        return "DPT_2_BYTE_UNSIGNED_VALUE"
-    case KnxDatapointType_DPT_2_BYTE_SIGNED_VALUE:
-        return "DPT_2_BYTE_SIGNED_VALUE"
-    case KnxDatapointType_DPT_2_BYTE_FLOAT_VALUE:
-        return "DPT_2_BYTE_FLOAT_VALUE"
+    case KnxDatapointType_DPT_Switch:
+        return "DPT_Switch"
+    case KnxDatapointType_DPT_Start:
+        return "DPT_Start"
+    case KnxDatapointType_DPT_LongTimePeriod_Hrs:
+        return "DPT_LongTimePeriod_Hrs"
+    case KnxDatapointType_DPT_VolumeLiquid_Litre:
+        return "DPT_VolumeLiquid_Litre"
+    case KnxDatapointType_DPT_Volume_m_3:
+        return "DPT_Volume_m_3"
+    case KnxDatapointType_DPT_Value_4_Count:
+        return "DPT_Value_4_Count"
+    case KnxDatapointType_DPT_FlowRate_m3h:
+        return "DPT_FlowRate_m3h"
+    case KnxDatapointType_DPT_ActiveEnergy:
+        return "DPT_ActiveEnergy"
+    case KnxDatapointType_DPT_ApparantEnergy:
+        return "DPT_ApparantEnergy"
+    case KnxDatapointType_DPT_ReactiveEnergy:
+        return "DPT_ReactiveEnergy"
+    case KnxDatapointType_DPT_ActiveEnergy_kWh:
+        return "DPT_ActiveEnergy_kWh"
+    case KnxDatapointType_DPT_ApparantEnergy_kVAh:
+        return "DPT_ApparantEnergy_kVAh"
+    case KnxDatapointType_DPT_State:
+        return "DPT_State"
+    case KnxDatapointType_DPT_ReactiveEnergy_kVARh:
+        return "DPT_ReactiveEnergy_kVARh"
+    case KnxDatapointType_DPT_ActiveEnergy_MWh:
+        return "DPT_ActiveEnergy_MWh"
+    case KnxDatapointType_DPT_LongDeltaTimeSec:
+        return "DPT_LongDeltaTimeSec"
+    case KnxDatapointType_DPT_DeltaVolumeLiquid_Litre:
+        return "DPT_DeltaVolumeLiquid_Litre"
+    case KnxDatapointType_DPT_DeltaVolume_m_3:
+        return "DPT_DeltaVolume_m_3"
+    case KnxDatapointType_DPT_Value_Acceleration:
+        return "DPT_Value_Acceleration"
+    case KnxDatapointType_DPT_Value_Acceleration_Angular:
+        return "DPT_Value_Acceleration_Angular"
+    case KnxDatapointType_DPT_Value_Activation_Energy:
+        return "DPT_Value_Activation_Energy"
+    case KnxDatapointType_DPT_Value_Activity:
+        return "DPT_Value_Activity"
+    case KnxDatapointType_DPT_Value_Mol:
+        return "DPT_Value_Mol"
+    case KnxDatapointType_DPT_Invert:
+        return "DPT_Invert"
+    case KnxDatapointType_DPT_Value_Amplitude:
+        return "DPT_Value_Amplitude"
+    case KnxDatapointType_DPT_Value_AngleRad:
+        return "DPT_Value_AngleRad"
+    case KnxDatapointType_DPT_Value_AngleDeg:
+        return "DPT_Value_AngleDeg"
+    case KnxDatapointType_DPT_Value_Angular_Momentum:
+        return "DPT_Value_Angular_Momentum"
+    case KnxDatapointType_DPT_Value_Angular_Velocity:
+        return "DPT_Value_Angular_Velocity"
+    case KnxDatapointType_DPT_Value_Area:
+        return "DPT_Value_Area"
+    case KnxDatapointType_DPT_Value_Capacitance:
+        return "DPT_Value_Capacitance"
+    case KnxDatapointType_DPT_Value_Charge_DensitySurface:
+        return "DPT_Value_Charge_DensitySurface"
+    case KnxDatapointType_DPT_Value_Charge_DensityVolume:
+        return "DPT_Value_Charge_DensityVolume"
+    case KnxDatapointType_DPT_Value_Compressibility:
+        return "DPT_Value_Compressibility"
+    case KnxDatapointType_DPT_DimSendStyle:
+        return "DPT_DimSendStyle"
+    case KnxDatapointType_DPT_Value_Conductance:
+        return "DPT_Value_Conductance"
+    case KnxDatapointType_DPT_Value_Electrical_Conductivity:
+        return "DPT_Value_Electrical_Conductivity"
+    case KnxDatapointType_DPT_Value_Density:
+        return "DPT_Value_Density"
+    case KnxDatapointType_DPT_Value_Electric_Charge:
+        return "DPT_Value_Electric_Charge"
+    case KnxDatapointType_DPT_Value_Electric_Current:
+        return "DPT_Value_Electric_Current"
+    case KnxDatapointType_DPT_Value_Electric_CurrentDensity:
+        return "DPT_Value_Electric_CurrentDensity"
+    case KnxDatapointType_DPT_Value_Electric_DipoleMoment:
+        return "DPT_Value_Electric_DipoleMoment"
+    case KnxDatapointType_DPT_Value_Electric_Displacement:
+        return "DPT_Value_Electric_Displacement"
+    case KnxDatapointType_DPT_Value_Electric_FieldStrength:
+        return "DPT_Value_Electric_FieldStrength"
+    case KnxDatapointType_DPT_Value_Electric_Flux:
+        return "DPT_Value_Electric_Flux"
+    case KnxDatapointType_DPT_InputSource:
+        return "DPT_InputSource"
+    case KnxDatapointType_DPT_Value_Electric_FluxDensity:
+        return "DPT_Value_Electric_FluxDensity"
+    case KnxDatapointType_DPT_Value_Electric_Polarization:
+        return "DPT_Value_Electric_Polarization"
+    case KnxDatapointType_DPT_Value_Electric_Potential:
+        return "DPT_Value_Electric_Potential"
+    case KnxDatapointType_DPT_Value_Electric_PotentialDifference:
+        return "DPT_Value_Electric_PotentialDifference"
+    case KnxDatapointType_DPT_Value_ElectromagneticMoment:
+        return "DPT_Value_ElectromagneticMoment"
+    case KnxDatapointType_DPT_Value_Electromotive_Force:
+        return "DPT_Value_Electromotive_Force"
+    case KnxDatapointType_DPT_Value_Energy:
+        return "DPT_Value_Energy"
+    case KnxDatapointType_DPT_Value_Force:
+        return "DPT_Value_Force"
+    case KnxDatapointType_DPT_Value_Frequency:
+        return "DPT_Value_Frequency"
+    case KnxDatapointType_DPT_Value_Angular_Frequency:
+        return "DPT_Value_Angular_Frequency"
+    case KnxDatapointType_DPT_Reset:
+        return "DPT_Reset"
+    case KnxDatapointType_DPT_Value_Heat_Capacity:
+        return "DPT_Value_Heat_Capacity"
+    case KnxDatapointType_DPT_Value_Heat_FlowRate:
+        return "DPT_Value_Heat_FlowRate"
+    case KnxDatapointType_DPT_Value_Heat_Quantity:
+        return "DPT_Value_Heat_Quantity"
+    case KnxDatapointType_DPT_Value_Impedance:
+        return "DPT_Value_Impedance"
+    case KnxDatapointType_DPT_Value_Length:
+        return "DPT_Value_Length"
+    case KnxDatapointType_DPT_Value_Light_Quantity:
+        return "DPT_Value_Light_Quantity"
+    case KnxDatapointType_DPT_Value_Luminance:
+        return "DPT_Value_Luminance"
+    case KnxDatapointType_DPT_Value_Luminous_Flux:
+        return "DPT_Value_Luminous_Flux"
+    case KnxDatapointType_DPT_Value_Luminous_Intensity:
+        return "DPT_Value_Luminous_Intensity"
+    case KnxDatapointType_DPT_Value_Magnetic_FieldStrength:
+        return "DPT_Value_Magnetic_FieldStrength"
+    case KnxDatapointType_DPT_Ack:
+        return "DPT_Ack"
+    case KnxDatapointType_DPT_Value_Magnetic_Flux:
+        return "DPT_Value_Magnetic_Flux"
+    case KnxDatapointType_DPT_Value_Magnetic_FluxDensity:
+        return "DPT_Value_Magnetic_FluxDensity"
+    case KnxDatapointType_DPT_Value_Magnetic_Moment:
+        return "DPT_Value_Magnetic_Moment"
+    case KnxDatapointType_DPT_Value_Magnetic_Polarization:
+        return "DPT_Value_Magnetic_Polarization"
+    case KnxDatapointType_DPT_Value_Magnetization:
+        return "DPT_Value_Magnetization"
+    case KnxDatapointType_DPT_Value_MagnetomotiveForce:
+        return "DPT_Value_MagnetomotiveForce"
+    case KnxDatapointType_DPT_Value_Mass:
+        return "DPT_Value_Mass"
+    case KnxDatapointType_DPT_Value_MassFlux:
+        return "DPT_Value_MassFlux"
+    case KnxDatapointType_DPT_Value_Momentum:
+        return "DPT_Value_Momentum"
+    case KnxDatapointType_DPT_Value_Phase_AngleRad:
+        return "DPT_Value_Phase_AngleRad"
+    case KnxDatapointType_DPT_Trigger:
+        return "DPT_Trigger"
+    case KnxDatapointType_DPT_Value_Phase_AngleDeg:
+        return "DPT_Value_Phase_AngleDeg"
+    case KnxDatapointType_DPT_Value_Power:
+        return "DPT_Value_Power"
+    case KnxDatapointType_DPT_Value_Power_Factor:
+        return "DPT_Value_Power_Factor"
+    case KnxDatapointType_DPT_Value_Pressure:
+        return "DPT_Value_Pressure"
+    case KnxDatapointType_DPT_Value_Reactance:
+        return "DPT_Value_Reactance"
+    case KnxDatapointType_DPT_Value_Resistance:
+        return "DPT_Value_Resistance"
+    case KnxDatapointType_DPT_Value_Resistivity:
+        return "DPT_Value_Resistivity"
+    case KnxDatapointType_DPT_Value_SelfInductance:
+        return "DPT_Value_SelfInductance"
+    case KnxDatapointType_DPT_Value_SolidAngle:
+        return "DPT_Value_SolidAngle"
+    case KnxDatapointType_DPT_Value_Sound_Intensity:
+        return "DPT_Value_Sound_Intensity"
+    case KnxDatapointType_DPT_Occupancy:
+        return "DPT_Occupancy"
+    case KnxDatapointType_DPT_Value_Speed:
+        return "DPT_Value_Speed"
+    case KnxDatapointType_DPT_Value_Stress:
+        return "DPT_Value_Stress"
+    case KnxDatapointType_DPT_Value_Surface_Tension:
+        return "DPT_Value_Surface_Tension"
+    case KnxDatapointType_DPT_Value_Common_Temperature:
+        return "DPT_Value_Common_Temperature"
+    case KnxDatapointType_DPT_Value_Absolute_Temperature:
+        return "DPT_Value_Absolute_Temperature"
+    case KnxDatapointType_DPT_Value_TemperatureDifference:
+        return "DPT_Value_TemperatureDifference"
+    case KnxDatapointType_DPT_Value_Thermal_Capacity:
+        return "DPT_Value_Thermal_Capacity"
+    case KnxDatapointType_DPT_Value_Thermal_Conductivity:
+        return "DPT_Value_Thermal_Conductivity"
+    case KnxDatapointType_DPT_Value_ThermoelectricPower:
+        return "DPT_Value_ThermoelectricPower"
+    case KnxDatapointType_DPT_Value_Time:
+        return "DPT_Value_Time"
+    case KnxDatapointType_DPT_Window_Door:
+        return "DPT_Window_Door"
+    case KnxDatapointType_DPT_Value_Torque:
+        return "DPT_Value_Torque"
+    case KnxDatapointType_DPT_Value_Volume:
+        return "DPT_Value_Volume"
+    case KnxDatapointType_DPT_Value_Volume_Flux:
+        return "DPT_Value_Volume_Flux"
+    case KnxDatapointType_DPT_Value_Weight:
+        return "DPT_Value_Weight"
+    case KnxDatapointType_DPT_Value_Work:
+        return "DPT_Value_Work"
+    case KnxDatapointType_DPT_Volume_Flux_Meter:
+        return "DPT_Volume_Flux_Meter"
+    case KnxDatapointType_DPT_Volume_Flux_ls:
+        return "DPT_Volume_Flux_ls"
+    case KnxDatapointType_DPT_Access_Data:
+        return "DPT_Access_Data"
+    case KnxDatapointType_DPT_String_ASCII:
+        return "DPT_String_ASCII"
+    case KnxDatapointType_DPT_String_8859_1:
+        return "DPT_String_8859_1"
+    case KnxDatapointType_DPT_Bool:
+        return "DPT_Bool"
+    case KnxDatapointType_DPT_LogicalFunction:
+        return "DPT_LogicalFunction"
+    case KnxDatapointType_DPT_SceneNumber:
+        return "DPT_SceneNumber"
+    case KnxDatapointType_DPT_SceneControl:
+        return "DPT_SceneControl"
+    case KnxDatapointType_DPT_DateTime:
+        return "DPT_DateTime"
+    case KnxDatapointType_DPT_SCLOMode:
+        return "DPT_SCLOMode"
+    case KnxDatapointType_DPT_BuildingMode:
+        return "DPT_BuildingMode"
+    case KnxDatapointType_DPT_OccMode:
+        return "DPT_OccMode"
+    case KnxDatapointType_DPT_Priority:
+        return "DPT_Priority"
+    case KnxDatapointType_DPT_LightApplicationMode:
+        return "DPT_LightApplicationMode"
+    case KnxDatapointType_DPT_ApplicationArea:
+        return "DPT_ApplicationArea"
+    case KnxDatapointType_DPT_AlarmClassType:
+        return "DPT_AlarmClassType"
+    case KnxDatapointType_DPT_Scene_AB:
+        return "DPT_Scene_AB"
+    case KnxDatapointType_DPT_PSUMode:
+        return "DPT_PSUMode"
+    case KnxDatapointType_DPT_ErrorClass_System:
+        return "DPT_ErrorClass_System"
+    case KnxDatapointType_DPT_ErrorClass_HVAC:
+        return "DPT_ErrorClass_HVAC"
+    case KnxDatapointType_DPT_Time_Delay:
+        return "DPT_Time_Delay"
+    case KnxDatapointType_DPT_Beaufort_Wind_Force_Scale:
+        return "DPT_Beaufort_Wind_Force_Scale"
+    case KnxDatapointType_DPT_SensorSelect:
+        return "DPT_SensorSelect"
+    case KnxDatapointType_DPT_ActuatorConnectType:
+        return "DPT_ActuatorConnectType"
+    case KnxDatapointType_DPT_Cloud_Cover:
+        return "DPT_Cloud_Cover"
+    case KnxDatapointType_DPT_PowerReturnMode:
+        return "DPT_PowerReturnMode"
+    case KnxDatapointType_DPT_FuelType:
+        return "DPT_FuelType"
+    case KnxDatapointType_DPT_ShutterBlinds_Mode:
+        return "DPT_ShutterBlinds_Mode"
+    case KnxDatapointType_DPT_BurnerType:
+        return "DPT_BurnerType"
+    case KnxDatapointType_DPT_HVACMode:
+        return "DPT_HVACMode"
+    case KnxDatapointType_DPT_DHWMode:
+        return "DPT_DHWMode"
+    case KnxDatapointType_DPT_LoadPriority:
+        return "DPT_LoadPriority"
+    case KnxDatapointType_DPT_HVACContrMode:
+        return "DPT_HVACContrMode"
+    case KnxDatapointType_DPT_HVACEmergMode:
+        return "DPT_HVACEmergMode"
+    case KnxDatapointType_DPT_ChangeoverMode:
+        return "DPT_ChangeoverMode"
+    case KnxDatapointType_DPT_ValveMode:
+        return "DPT_ValveMode"
+    case KnxDatapointType_DPT_DamperMode:
+        return "DPT_DamperMode"
+    case KnxDatapointType_DPT_HeaterMode:
+        return "DPT_HeaterMode"
+    case KnxDatapointType_DPT_DayNight:
+        return "DPT_DayNight"
+    case KnxDatapointType_DPT_FanMode:
+        return "DPT_FanMode"
+    case KnxDatapointType_DPT_MasterSlaveMode:
+        return "DPT_MasterSlaveMode"
+    case KnxDatapointType_DPT_StatusRoomSetp:
+        return "DPT_StatusRoomSetp"
+    case KnxDatapointType_DPT_Metering_DeviceType:
+        return "DPT_Metering_DeviceType"
+    case KnxDatapointType_DPT_HumDehumMode:
+        return "DPT_HumDehumMode"
+    case KnxDatapointType_DPT_EnableHCStage:
+        return "DPT_EnableHCStage"
+    case KnxDatapointType_DPT_ADAType:
+        return "DPT_ADAType"
+    case KnxDatapointType_DPT_BackupMode:
+        return "DPT_BackupMode"
+    case KnxDatapointType_DPT_StartSynchronization:
+        return "DPT_StartSynchronization"
+    case KnxDatapointType_DPT_Behaviour_Lock_Unlock:
+        return "DPT_Behaviour_Lock_Unlock"
+    case KnxDatapointType_DPT_Heat_Cool:
+        return "DPT_Heat_Cool"
+    case KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down:
+        return "DPT_Behaviour_Bus_Power_Up_Down"
+    case KnxDatapointType_DPT_DALI_Fade_Time:
+        return "DPT_DALI_Fade_Time"
+    case KnxDatapointType_DPT_BlinkingMode:
+        return "DPT_BlinkingMode"
+    case KnxDatapointType_DPT_LightControlMode:
+        return "DPT_LightControlMode"
+    case KnxDatapointType_DPT_SwitchPBModel:
+        return "DPT_SwitchPBModel"
+    case KnxDatapointType_DPT_PBAction:
+        return "DPT_PBAction"
+    case KnxDatapointType_DPT_DimmPBModel:
+        return "DPT_DimmPBModel"
+    case KnxDatapointType_DPT_SwitchOnMode:
+        return "DPT_SwitchOnMode"
+    case KnxDatapointType_DPT_LoadTypeSet:
+        return "DPT_LoadTypeSet"
+    case KnxDatapointType_DPT_LoadTypeDetected:
+        return "DPT_LoadTypeDetected"
+    case KnxDatapointType_DPT_Switch_Control:
+        return "DPT_Switch_Control"
+    case KnxDatapointType_DPT_Converter_Test_Control:
+        return "DPT_Converter_Test_Control"
+    case KnxDatapointType_DPT_SABExcept_Behaviour:
+        return "DPT_SABExcept_Behaviour"
+    case KnxDatapointType_DPT_SABBehaviour_Lock_Unlock:
+        return "DPT_SABBehaviour_Lock_Unlock"
+    case KnxDatapointType_DPT_SSSBMode:
+        return "DPT_SSSBMode"
+    case KnxDatapointType_DPT_BlindsControlMode:
+        return "DPT_BlindsControlMode"
+    case KnxDatapointType_DPT_CommMode:
+        return "DPT_CommMode"
+    case KnxDatapointType_DPT_AddInfoTypes:
+        return "DPT_AddInfoTypes"
+    case KnxDatapointType_DPT_RF_ModeSelect:
+        return "DPT_RF_ModeSelect"
+    case KnxDatapointType_DPT_RF_FilterSelect:
+        return "DPT_RF_FilterSelect"
+    case KnxDatapointType_DPT_StatusGen:
+        return "DPT_StatusGen"
+    case KnxDatapointType_DPT_Bool_Control:
+        return "DPT_Bool_Control"
+    case KnxDatapointType_DPT_Device_Control:
+        return "DPT_Device_Control"
+    case KnxDatapointType_DPT_ForceSign:
+        return "DPT_ForceSign"
+    case KnxDatapointType_DPT_ForceSignCool:
+        return "DPT_ForceSignCool"
+    case KnxDatapointType_DPT_StatusRHC:
+        return "DPT_StatusRHC"
+    case KnxDatapointType_DPT_StatusSDHWC:
+        return "DPT_StatusSDHWC"
+    case KnxDatapointType_DPT_FuelTypeSet:
+        return "DPT_FuelTypeSet"
+    case KnxDatapointType_DPT_StatusRCC:
+        return "DPT_StatusRCC"
+    case KnxDatapointType_DPT_StatusAHU:
+        return "DPT_StatusAHU"
+    case KnxDatapointType_DPT_CombinedStatus_RTSM:
+        return "DPT_CombinedStatus_RTSM"
+    case KnxDatapointType_DPT_LightActuatorErrorInfo:
+        return "DPT_LightActuatorErrorInfo"
+    case KnxDatapointType_DPT_Enable_Control:
+        return "DPT_Enable_Control"
+    case KnxDatapointType_DPT_RF_ModeInfo:
+        return "DPT_RF_ModeInfo"
+    case KnxDatapointType_DPT_RF_FilterInfo:
+        return "DPT_RF_FilterInfo"
+    case KnxDatapointType_DPT_Channel_Activation_8:
+        return "DPT_Channel_Activation_8"
+    case KnxDatapointType_DPT_StatusDHWC:
+        return "DPT_StatusDHWC"
+    case KnxDatapointType_DPT_StatusRHCC:
+        return "DPT_StatusRHCC"
+    case KnxDatapointType_DPT_CombinedStatus_HVA:
+        return "DPT_CombinedStatus_HVA"
+    case KnxDatapointType_DPT_CombinedStatus_RTC:
+        return "DPT_CombinedStatus_RTC"
+    case KnxDatapointType_DPT_Media:
+        return "DPT_Media"
+    case KnxDatapointType_DPT_Channel_Activation_16:
+        return "DPT_Channel_Activation_16"
+    case KnxDatapointType_DPT_OnOffAction:
+        return "DPT_OnOffAction"
+    case KnxDatapointType_DPT_Ramp_Control:
+        return "DPT_Ramp_Control"
+    case KnxDatapointType_DPT_Alarm_Reaction:
+        return "DPT_Alarm_Reaction"
+    case KnxDatapointType_DPT_UpDown_Action:
+        return "DPT_UpDown_Action"
+    case KnxDatapointType_DPT_HVAC_PB_Action:
+        return "DPT_HVAC_PB_Action"
+    case KnxDatapointType_DPT_DoubleNibble:
+        return "DPT_DoubleNibble"
+    case KnxDatapointType_DPT_SceneInfo:
+        return "DPT_SceneInfo"
+    case KnxDatapointType_DPT_CombinedInfoOnOff:
+        return "DPT_CombinedInfoOnOff"
+    case KnxDatapointType_DPT_ActiveEnergy_V64:
+        return "DPT_ActiveEnergy_V64"
+    case KnxDatapointType_DPT_ApparantEnergy_V64:
+        return "DPT_ApparantEnergy_V64"
+    case KnxDatapointType_DPT_ReactiveEnergy_V64:
+        return "DPT_ReactiveEnergy_V64"
+    case KnxDatapointType_DPT_Channel_Activation_24:
+        return "DPT_Channel_Activation_24"
+    case KnxDatapointType_DPT_Alarm_Control:
+        return "DPT_Alarm_Control"
+    case KnxDatapointType_DPT_HVACModeNext:
+        return "DPT_HVACModeNext"
+    case KnxDatapointType_DPT_DHWModeNext:
+        return "DPT_DHWModeNext"
+    case KnxDatapointType_DPT_OccModeNext:
+        return "DPT_OccModeNext"
+    case KnxDatapointType_DPT_BuildingModeNext:
+        return "DPT_BuildingModeNext"
+    case KnxDatapointType_DPT_Version:
+        return "DPT_Version"
+    case KnxDatapointType_DPT_AlarmInfo:
+        return "DPT_AlarmInfo"
+    case KnxDatapointType_DPT_TempRoomSetpSetF16_3:
+        return "DPT_TempRoomSetpSetF16_3"
+    case KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3:
+        return "DPT_TempRoomSetpSetShiftF16_3"
+    case KnxDatapointType_DPT_Scaling_Speed:
+        return "DPT_Scaling_Speed"
+    case KnxDatapointType_DPT_Scaling_Step_Time:
+        return "DPT_Scaling_Step_Time"
+    case KnxDatapointType_DPT_Enable:
+        return "DPT_Enable"
+    case KnxDatapointType_DPT_BinaryValue_Control:
+        return "DPT_BinaryValue_Control"
+    case KnxDatapointType_DPT_MeteringValue:
+        return "DPT_MeteringValue"
+    case KnxDatapointType_DPT_MBus_Address:
+        return "DPT_MBus_Address"
+    case KnxDatapointType_DPT_Colour_RGB:
+        return "DPT_Colour_RGB"
+    case KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII:
+        return "DPT_LanguageCodeAlpha2_ASCII"
+    case KnxDatapointType_DPT_Tariff_ActiveEnergy:
+        return "DPT_Tariff_ActiveEnergy"
+    case KnxDatapointType_DPT_Prioritised_Mode_Control:
+        return "DPT_Prioritised_Mode_Control"
+    case KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic:
+        return "DPT_DALI_Control_Gear_Diagnostic"
+    case KnxDatapointType_DPT_DALI_Diagnostics:
+        return "DPT_DALI_Diagnostics"
+    case KnxDatapointType_DPT_CombinedPosition:
+        return "DPT_CombinedPosition"
+    case KnxDatapointType_DPT_StatusSAB:
+        return "DPT_StatusSAB"
+    case KnxDatapointType_DPT_Step_Control:
+        return "DPT_Step_Control"
+    case KnxDatapointType_DPT_Colour_xyY:
+        return "DPT_Colour_xyY"
+    case KnxDatapointType_DPT_Converter_Status:
+        return "DPT_Converter_Status"
+    case KnxDatapointType_DPT_Converter_Test_Result:
+        return "DPT_Converter_Test_Result"
+    case KnxDatapointType_DPT_Battery_Info:
+        return "DPT_Battery_Info"
+    case KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition:
+        return "DPT_Brightness_Colour_Temperature_Transition"
+    case KnxDatapointType_DPT_Brightness_Colour_Temperature_Control:
+        return "DPT_Brightness_Colour_Temperature_Control"
+    case KnxDatapointType_DPT_Colour_RGBW:
+        return "DPT_Colour_RGBW"
+    case KnxDatapointType_DPT_Relative_Control_RGBW:
+        return "DPT_Relative_Control_RGBW"
+    case KnxDatapointType_DPT_Relative_Control_RGB:
+        return "DPT_Relative_Control_RGB"
+    case KnxDatapointType_DPT_GeographicalLocation:
+        return "DPT_GeographicalLocation"
+    case KnxDatapointType_DPT_Direction1_Control:
+        return "DPT_Direction1_Control"
+    case KnxDatapointType_DPT_TempRoomSetpSetF16_4:
+        return "DPT_TempRoomSetpSetF16_4"
+    case KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4:
+        return "DPT_TempRoomSetpSetShiftF16_4"
+    case KnxDatapointType_DPT_Direction2_Control:
+        return "DPT_Direction2_Control"
+    case KnxDatapointType_DPT_Start_Control:
+        return "DPT_Start_Control"
+    case KnxDatapointType_DPT_State_Control:
+        return "DPT_State_Control"
+    case KnxDatapointType_DPT_Invert_Control:
+        return "DPT_Invert_Control"
+    case KnxDatapointType_DPT_Control_Dimming:
+        return "DPT_Control_Dimming"
+    case KnxDatapointType_DPT_Control_Blinds:
+        return "DPT_Control_Blinds"
+    case KnxDatapointType_DPT_Char_ASCII:
+        return "DPT_Char_ASCII"
+    case KnxDatapointType_DPT_Ramp:
+        return "DPT_Ramp"
+    case KnxDatapointType_DPT_Char_8859_1:
+        return "DPT_Char_8859_1"
+    case KnxDatapointType_DPT_Scaling:
+        return "DPT_Scaling"
+    case KnxDatapointType_DPT_Angle:
+        return "DPT_Angle"
+    case KnxDatapointType_DPT_Percent_U8:
+        return "DPT_Percent_U8"
+    case KnxDatapointType_DPT_DecimalFactor:
+        return "DPT_DecimalFactor"
+    case KnxDatapointType_DPT_Tariff:
+        return "DPT_Tariff"
+    case KnxDatapointType_DPT_Value_1_Ucount:
+        return "DPT_Value_1_Ucount"
+    case KnxDatapointType_DPT_FanStage:
+        return "DPT_FanStage"
+    case KnxDatapointType_DPT_Percent_V8:
+        return "DPT_Percent_V8"
+    case KnxDatapointType_DPT_Value_1_Count:
+        return "DPT_Value_1_Count"
+    case KnxDatapointType_DPT_Alarm:
+        return "DPT_Alarm"
+    case KnxDatapointType_DPT_Status_Mode3:
+        return "DPT_Status_Mode3"
+    case KnxDatapointType_DPT_Value_2_Ucount:
+        return "DPT_Value_2_Ucount"
+    case KnxDatapointType_DPT_TimePeriodMsec:
+        return "DPT_TimePeriodMsec"
+    case KnxDatapointType_DPT_TimePeriod10Msec:
+        return "DPT_TimePeriod10Msec"
+    case KnxDatapointType_DPT_TimePeriod100Msec:
+        return "DPT_TimePeriod100Msec"
+    case KnxDatapointType_DPT_TimePeriodSec:
+        return "DPT_TimePeriodSec"
+    case KnxDatapointType_DPT_TimePeriodMin:
+        return "DPT_TimePeriodMin"
+    case KnxDatapointType_DPT_TimePeriodHrs:
+        return "DPT_TimePeriodHrs"
+    case KnxDatapointType_DPT_PropDataType:
+        return "DPT_PropDataType"
+    case KnxDatapointType_DPT_Length_mm:
+        return "DPT_Length_mm"
+    case KnxDatapointType_DPT_BinaryValue:
+        return "DPT_BinaryValue"
+    case KnxDatapointType_DPT_UElCurrentmA:
+        return "DPT_UElCurrentmA"
+    case KnxDatapointType_DPT_Brightness:
+        return "DPT_Brightness"
+    case KnxDatapointType_DPT_Absolute_Colour_Temperature:
+        return "DPT_Absolute_Colour_Temperature"
+    case KnxDatapointType_DPT_Value_2_Count:
+        return "DPT_Value_2_Count"
+    case KnxDatapointType_DPT_DeltaTimeMsec:
+        return "DPT_DeltaTimeMsec"
+    case KnxDatapointType_DPT_DeltaTime10Msec:
+        return "DPT_DeltaTime10Msec"
+    case KnxDatapointType_DPT_DeltaTime100Msec:
+        return "DPT_DeltaTime100Msec"
+    case KnxDatapointType_DPT_DeltaTimeSec:
+        return "DPT_DeltaTimeSec"
+    case KnxDatapointType_DPT_DeltaTimeMin:
+        return "DPT_DeltaTimeMin"
+    case KnxDatapointType_DPT_DeltaTimeHrs:
+        return "DPT_DeltaTimeHrs"
+    case KnxDatapointType_DPT_Step:
+        return "DPT_Step"
+    case KnxDatapointType_DPT_Percent_V16:
+        return "DPT_Percent_V16"
+    case KnxDatapointType_DPT_Rotation_Angle:
+        return "DPT_Rotation_Angle"
+    case KnxDatapointType_DPT_Length_m:
+        return "DPT_Length_m"
+    case KnxDatapointType_DPT_Value_Temp:
+        return "DPT_Value_Temp"
+    case KnxDatapointType_DPT_Value_Tempd:
+        return "DPT_Value_Tempd"
+    case KnxDatapointType_DPT_Value_Tempa:
+        return "DPT_Value_Tempa"
+    case KnxDatapointType_DPT_Value_Lux:
+        return "DPT_Value_Lux"
+    case KnxDatapointType_DPT_Value_Wsp:
+        return "DPT_Value_Wsp"
+    case KnxDatapointType_DPT_Value_Pres:
+        return "DPT_Value_Pres"
+    case KnxDatapointType_DPT_Value_Humidity:
+        return "DPT_Value_Humidity"
+    case KnxDatapointType_DPT_UpDown:
+        return "DPT_UpDown"
+    case KnxDatapointType_DPT_Value_AirQuality:
+        return "DPT_Value_AirQuality"
+    case KnxDatapointType_DPT_Value_AirFlow:
+        return "DPT_Value_AirFlow"
+    case KnxDatapointType_DPT_Value_Time1:
+        return "DPT_Value_Time1"
+    case KnxDatapointType_DPT_Value_Time2:
+        return "DPT_Value_Time2"
+    case KnxDatapointType_DPT_Value_Volt:
+        return "DPT_Value_Volt"
+    case KnxDatapointType_DPT_Value_Curr:
+        return "DPT_Value_Curr"
+    case KnxDatapointType_DPT_PowerDensity:
+        return "DPT_PowerDensity"
+    case KnxDatapointType_DPT_KelvinPerPercent:
+        return "DPT_KelvinPerPercent"
+    case KnxDatapointType_DPT_Power:
+        return "DPT_Power"
+    case KnxDatapointType_DPT_Value_Volume_Flow:
+        return "DPT_Value_Volume_Flow"
+    case KnxDatapointType_DPT_OpenClose:
+        return "DPT_OpenClose"
+    case KnxDatapointType_DPT_Rain_Amount:
+        return "DPT_Rain_Amount"
+    case KnxDatapointType_DPT_Value_Temp_F:
+        return "DPT_Value_Temp_F"
+    case KnxDatapointType_DPT_Value_Wsp_kmh:
+        return "DPT_Value_Wsp_kmh"
+    case KnxDatapointType_DPT_Value_Absolute_Humidity:
+        return "DPT_Value_Absolute_Humidity"
+    case KnxDatapointType_DPT_Concentration_ygm3:
+        return "DPT_Concentration_ygm3"
+    case KnxDatapointType_DPT_TimeOfDay:
+        return "DPT_TimeOfDay"
+    case KnxDatapointType_DPT_Date:
+        return "DPT_Date"
+    case KnxDatapointType_DPT_Value_4_Ucount:
+        return "DPT_Value_4_Ucount"
+    case KnxDatapointType_DPT_LongTimePeriod_Sec:
+        return "DPT_LongTimePeriod_Sec"
+    case KnxDatapointType_DPT_LongTimePeriod_Min:
+        return "DPT_LongTimePeriod_Min"
     }
     return ""
 }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
index 5877709..050e47d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LBusmonInd.go
@@ -146,7 +146,7 @@ func LBusmonIndParse(io *utils.ReadBuffer) (*CEMI, error) {
 
     // Optional Field (crc) (Can be skipped, if a given expression evaluates to false)
     var crc *uint8 = nil
-    if CastLDataFrame(dataFrame).NotAckFrame() {
+    if dataFrame.NotAckFrame {
         _val, _err := io.ReadUint8(8)
         if _err != nil {
             return nil, errors.New("Error parsing 'crc' field " + _err.Error())
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
index 1603800..8bf3bff 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrame.go
@@ -30,6 +30,7 @@ import (
 // The data-structure of this message
 type LDataFrame struct {
     Repeated bool
+    NotAckFrame bool
     Priority CEMIPriority
     AcknowledgeRequested bool
     ErrorFlag bool
@@ -41,7 +42,6 @@ type LDataFrame struct {
 // The corresponding interface
 type ILDataFrame interface {
     ExtendedFrame() bool
-    NotAckFrame() bool
     Polling() bool
     LengthInBytes() uint16
     LengthInBits() uint16
@@ -56,13 +56,13 @@ type ILDataFrameParent interface {
 
 type ILDataFrameChild interface {
     Serialize(io utils.WriteBuffer) error
-    InitializeParent(parent *LDataFrame, repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool)
+    InitializeParent(parent *LDataFrame, repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool)
     GetTypeName() string
     ILDataFrame
 }
 
-func NewLDataFrame(repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
-    return &LDataFrame{Repeated: repeated, Priority: priority, AcknowledgeRequested: acknowledgeRequested, ErrorFlag: errorFlag}
+func NewLDataFrame(repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
+    return &LDataFrame{Repeated: repeated, NotAckFrame: notAckFrame, Priority: priority, AcknowledgeRequested: acknowledgeRequested, ErrorFlag: errorFlag}
 }
 
 func CastLDataFrame(structType interface{}) *LDataFrame {
@@ -94,7 +94,7 @@ func (m *LDataFrame) LengthInBits() uint16 {
     // Simple field (repeated)
     lengthInBits += 1
 
-    // Discriminator Field (notAckFrame)
+    // Simple field (notAckFrame)
     lengthInBits += 1
 
     // Enum Field (priority)
@@ -136,7 +136,7 @@ func LDataFrameParse(io *utils.ReadBuffer) (*LDataFrame, error) {
         return nil, errors.New("Error parsing 'repeated' field " + _repeatedErr.Error())
     }
 
-    // Discriminator Field (notAckFrame) (Used as input to a switch field)
+    // Simple Field (notAckFrame)
     notAckFrame, _notAckFrameErr := io.ReadBit()
     if _notAckFrameErr != nil {
         return nil, errors.New("Error parsing 'notAckFrame' field " + _notAckFrameErr.Error())
@@ -164,23 +164,21 @@ func LDataFrameParse(io *utils.ReadBuffer) (*LDataFrame, error) {
     var _parent *LDataFrame
     var typeSwitchError error
     switch {
-    case notAckFrame == false:
-        _parent, typeSwitchError = LDataFrameAckParse(io)
-    case notAckFrame == true && extendedFrame == false && polling == false:
+    case extendedFrame == false && polling == false:
         _parent, typeSwitchError = LDataFrameDataParse(io)
-    case notAckFrame == true && extendedFrame == true && polling == true:
+    case extendedFrame == true && polling == false:
+        _parent, typeSwitchError = LDataFrameDataExtParse(io)
+    case extendedFrame == true && polling == true:
         _parent, typeSwitchError = LDataFramePollingDataParse(io)
-    case notAckFrame == true && extendedFrame == false && polling == true:
+    case extendedFrame == false && polling == true:
         _parent, typeSwitchError = LDataFramePollingDataParse(io)
-    case notAckFrame == true && extendedFrame == true && polling == false:
-        _parent, typeSwitchError = LDataFrameDataExtParse(io)
     }
     if typeSwitchError != nil {
         return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
     }
 
     // Finish initializing
-    _parent.Child.InitializeParent(_parent, repeated, priority, acknowledgeRequested, errorFlag)
+    _parent.Child.InitializeParent(_parent, repeated, notAckFrame, priority, acknowledgeRequested, errorFlag)
     return _parent, nil
 }
 
@@ -211,8 +209,8 @@ func (m *LDataFrame) SerializeParent(io utils.WriteBuffer, child ILDataFrame, se
         return errors.New("Error serializing 'repeated' field " + _repeatedErr.Error())
     }
 
-    // Discriminator Field (notAckFrame) (Used as input to a switch field)
-    notAckFrame := bool(child.NotAckFrame())
+    // Simple Field (notAckFrame)
+    notAckFrame := bool(m.NotAckFrame)
     _notAckFrameErr := io.WriteBit((notAckFrame))
     if _notAckFrameErr != nil {
         return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
@@ -269,6 +267,12 @@ func (m *LDataFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
                     return err
                 }
                 m.Repeated = data
+            case "notAckFrame":
+                var data bool
+                if err := d.DecodeElement(&data, &tok); err != nil {
+                    return err
+                }
+                m.NotAckFrame = data
             case "priority":
                 var data CEMIPriority
                 if err := d.DecodeElement(&data, &tok); err != nil {
@@ -289,18 +293,6 @@ func (m *LDataFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
                 m.ErrorFlag = data
             default:
                 switch start.Attr[0].Value {
-                    case "org.apache.plc4x.java.knxnetip.readwrite.LDataFrameAck":
-                        var dt *LDataFrameAck
-                        if m.Child != nil {
-                            dt = m.Child.(*LDataFrameAck)
-                        }
-                        if err := d.DecodeElement(&dt, &tok); err != nil {
-                            return err
-                        }
-                        if m.Child == nil {
-                            dt.Parent = m
-                            m.Child = dt
-                        }
                     case "org.apache.plc4x.java.knxnetip.readwrite.LDataFrameData":
                         var dt *LDataFrameData
                         if m.Child != nil {
@@ -313,10 +305,10 @@ func (m *LDataFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
                             dt.Parent = m
                             m.Child = dt
                         }
-                    case "org.apache.plc4x.java.knxnetip.readwrite.LDataFramePollingData":
-                        var dt *LDataFramePollingData
+                    case "org.apache.plc4x.java.knxnetip.readwrite.LDataFrameDataExt":
+                        var dt *LDataFrameDataExt
                         if m.Child != nil {
-                            dt = m.Child.(*LDataFramePollingData)
+                            dt = m.Child.(*LDataFrameDataExt)
                         }
                         if err := d.DecodeElement(&dt, &tok); err != nil {
                             return err
@@ -325,10 +317,10 @@ func (m *LDataFrame) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
                             dt.Parent = m
                             m.Child = dt
                         }
-                    case "org.apache.plc4x.java.knxnetip.readwrite.LDataFrameDataExt":
-                        var dt *LDataFrameDataExt
+                    case "org.apache.plc4x.java.knxnetip.readwrite.LDataFramePollingData":
+                        var dt *LDataFramePollingData
                         if m.Child != nil {
-                            dt = m.Child.(*LDataFrameDataExt)
+                            dt = m.Child.(*LDataFramePollingData)
                         }
                         if err := d.DecodeElement(&dt, &tok); err != nil {
                             return err
@@ -354,6 +346,9 @@ func (m *LDataFrame) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
     if err := e.EncodeElement(m.Repeated, xml.StartElement{Name: xml.Name{Local: "repeated"}}); err != nil {
         return err
     }
+    if err := e.EncodeElement(m.NotAckFrame, xml.StartElement{Name: xml.Name{Local: "notAckFrame"}}); err != nil {
+        return err
+    }
     if err := e.EncodeElement(m.Priority, xml.StartElement{Name: xml.Name{Local: "priority"}}); err != nil {
         return err
     }
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameData.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameData.go
index 12fda6d..6821d11 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameData.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameData.go
@@ -32,15 +32,7 @@ type LDataFrameData struct {
     DestinationAddress []int8
     GroupAddress bool
     HopCount uint8
-    DataLength uint8
-    Control bool
-    Numbered bool
-    Counter uint8
-    ControlType *ControlType
-    Apci *APCI
-    ExtendedApci *ExtendedAPCI
-    DataFirstByte *int8
-    Data []int8
+    Apdu *Apdu
     Parent *LDataFrame
     ILDataFrameData
 }
@@ -56,10 +48,6 @@ type ILDataFrameData interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *LDataFrameData) NotAckFrame() bool {
-    return true
-}
-
 func (m *LDataFrameData) ExtendedFrame() bool {
     return false
 }
@@ -69,29 +57,22 @@ func (m *LDataFrameData) Polling() bool {
 }
 
 
-func (m *LDataFrameData) InitializeParent(parent *LDataFrame, repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) {
+func (m *LDataFrameData) InitializeParent(parent *LDataFrame, repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) {
     m.Parent.Repeated = repeated
+    m.Parent.NotAckFrame = notAckFrame
     m.Parent.Priority = priority
     m.Parent.AcknowledgeRequested = acknowledgeRequested
     m.Parent.ErrorFlag = errorFlag
 }
 
-func NewLDataFrameData(sourceAddress *KnxAddress, destinationAddress []int8, groupAddress bool, hopCount uint8, dataLength uint8, control bool, numbered bool, counter uint8, controlType *ControlType, apci *APCI, extendedApci *ExtendedAPCI, dataFirstByte *int8, data []int8, repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
+func NewLDataFrameData(sourceAddress *KnxAddress, destinationAddress []int8, groupAddress bool, hopCount uint8, apdu *Apdu, repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
     child := &LDataFrameData{
         SourceAddress: sourceAddress,
         DestinationAddress: destinationAddress,
         GroupAddress: groupAddress,
         HopCount: hopCount,
-        DataLength: dataLength,
-        Control: control,
-        Numbered: numbered,
-        Counter: counter,
-        ControlType: controlType,
-        Apci: apci,
-        ExtendedApci: extendedApci,
-        DataFirstByte: dataFirstByte,
-        Data: data,
-        Parent: NewLDataFrame(repeated, priority, acknowledgeRequested, errorFlag),
+        Apdu: apdu,
+        Parent: NewLDataFrame(repeated, notAckFrame, priority, acknowledgeRequested, errorFlag),
     }
     child.Parent.Child = child
     return child.Parent
@@ -137,42 +118,8 @@ func (m *LDataFrameData) LengthInBits() uint16 {
     // Simple field (hopCount)
     lengthInBits += 3
 
-    // Simple field (dataLength)
-    lengthInBits += 4
-
-    // Simple field (control)
-    lengthInBits += 1
-
-    // Simple field (numbered)
-    lengthInBits += 1
-
-    // Simple field (counter)
-    lengthInBits += 4
-
-    // Optional Field (controlType)
-    if m.ControlType != nil {
-        lengthInBits += 2
-    }
-
-    // Optional Field (apci)
-    if m.Apci != nil {
-        lengthInBits += 4
-    }
-
-    // Optional Field (extendedApci)
-    if m.ExtendedApci != nil {
-        lengthInBits += 6
-    }
-
-    // Optional Field (dataFirstByte)
-    if m.DataFirstByte != nil {
-        lengthInBits += 6
-    }
-
-    // Array field
-    if len(m.Data) > 0 {
-        lengthInBits += 8 * uint16(len(m.Data))
-    }
+    // Simple field (apdu)
+    lengthInBits += m.Apdu.LengthInBits()
 
     return lengthInBits
 }
@@ -212,79 +159,10 @@ func LDataFrameDataParse(io *utils.ReadBuffer) (*LDataFrame, error) {
         return nil, errors.New("Error parsing 'hopCount' field " + _hopCountErr.Error())
     }
 
-    // Simple Field (dataLength)
-    dataLength, _dataLengthErr := io.ReadUint8(4)
-    if _dataLengthErr != nil {
-        return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Simple Field (control)
-    control, _controlErr := io.ReadBit()
-    if _controlErr != nil {
-        return nil, errors.New("Error parsing 'control' field " + _controlErr.Error())
-    }
-
-    // Simple Field (numbered)
-    numbered, _numberedErr := io.ReadBit()
-    if _numberedErr != nil {
-        return nil, errors.New("Error parsing 'numbered' field " + _numberedErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter, _counterErr := io.ReadUint8(4)
-    if _counterErr != nil {
-        return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
-    }
-
-    // Optional Field (controlType) (Can be skipped, if a given expression evaluates to false)
-    var controlType *ControlType = nil
-    if control {
-        _val, _err := ControlTypeParse(io)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'controlType' field " + _err.Error())
-        }
-        controlType = &_val
-    }
-
-    // Optional Field (apci) (Can be skipped, if a given expression evaluates to false)
-    var apci *APCI = nil
-    if !(control) {
-        _val, _err := APCIParse(io)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'apci' field " + _err.Error())
-        }
-        apci = &_val
-    }
-
-    // Optional Field (extendedApci) (Can be skipped, if a given expression evaluates to false)
-    var extendedApci *ExtendedAPCI = nil
-    if bool(!(control)) && bool(bool(((*apci)) == (APCI_OTHER_PDU))) {
-        _val, _err := ExtendedAPCIParse(io)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'extendedApci' field " + _err.Error())
-        }
-        extendedApci = &_val
-    }
-
-    // Optional Field (dataFirstByte) (Can be skipped, if a given expression evaluates to false)
-    var dataFirstByte *int8 = nil
-    if bool(!(control)) && bool(bool(((*apci)) != (APCI_OTHER_PDU))) {
-        _val, _err := io.ReadInt8(6)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'dataFirstByte' field " + _err.Error())
-        }
-        dataFirstByte = &_val
-    }
-
-    // Array field (data)
-    // Count array
-    data := make([]int8, utils.InlineIf(bool(bool((dataLength) < ((1)))), uint16(uint16(0)), uint16(uint16(dataLength) - uint16(uint16(1)))))
-    for curItem := uint16(0); curItem < uint16(utils.InlineIf(bool(bool((dataLength) < ((1)))), uint16(uint16(0)), uint16(uint16(dataLength) - uint16(uint16(1))))); curItem++ {
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'data' field " + _err.Error())
-        }
-        data[curItem] = _item
+    // Simple Field (apdu)
+    apdu, _apduErr := ApduParse(io)
+    if _apduErr != nil {
+        return nil, errors.New("Error parsing 'apdu' field " + _apduErr.Error())
     }
 
     // Create a partially initialized instance
@@ -293,15 +171,7 @@ func LDataFrameDataParse(io *utils.ReadBuffer) (*LDataFrame, error) {
         DestinationAddress: destinationAddress,
         GroupAddress: groupAddress,
         HopCount: hopCount,
-        DataLength: dataLength,
-        Control: control,
-        Numbered: numbered,
-        Counter: counter,
-        ControlType: controlType,
-        Apci: apci,
-        ExtendedApci: extendedApci,
-        DataFirstByte: dataFirstByte,
-        Data: data,
+        Apdu: apdu,
         Parent: &LDataFrame{},
     }
     _child.Parent.Child = _child
@@ -341,82 +211,10 @@ func (m *LDataFrameData) Serialize(io utils.WriteBuffer) error {
         return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
     }
 
-    // Simple Field (dataLength)
-    dataLength := uint8(m.DataLength)
-    _dataLengthErr := io.WriteUint8(4, (dataLength))
-    if _dataLengthErr != nil {
-        return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Simple Field (control)
-    control := bool(m.Control)
-    _controlErr := io.WriteBit((control))
-    if _controlErr != nil {
-        return errors.New("Error serializing 'control' field " + _controlErr.Error())
-    }
-
-    // Simple Field (numbered)
-    numbered := bool(m.Numbered)
-    _numberedErr := io.WriteBit((numbered))
-    if _numberedErr != nil {
-        return errors.New("Error serializing 'numbered' field " + _numberedErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter := uint8(m.Counter)
-    _counterErr := io.WriteUint8(4, (counter))
-    if _counterErr != nil {
-        return errors.New("Error serializing 'counter' field " + _counterErr.Error())
-    }
-
-    // Optional Field (controlType) (Can be skipped, if the value is null)
-    var controlType *ControlType = nil
-    if m.ControlType != nil {
-        controlType = m.ControlType
-        _controlTypeErr := controlType.Serialize(io)
-        if _controlTypeErr != nil {
-            return errors.New("Error serializing 'controlType' field " + _controlTypeErr.Error())
-        }
-    }
-
-    // Optional Field (apci) (Can be skipped, if the value is null)
-    var apci *APCI = nil
-    if m.Apci != nil {
-        apci = m.Apci
-        _apciErr := apci.Serialize(io)
-        if _apciErr != nil {
-            return errors.New("Error serializing 'apci' field " + _apciErr.Error())
-        }
-    }
-
-    // Optional Field (extendedApci) (Can be skipped, if the value is null)
-    var extendedApci *ExtendedAPCI = nil
-    if m.ExtendedApci != nil {
-        extendedApci = m.ExtendedApci
-        _extendedApciErr := extendedApci.Serialize(io)
-        if _extendedApciErr != nil {
-            return errors.New("Error serializing 'extendedApci' field " + _extendedApciErr.Error())
-        }
-    }
-
-    // Optional Field (dataFirstByte) (Can be skipped, if the value is null)
-    var dataFirstByte *int8 = nil
-    if m.DataFirstByte != nil {
-        dataFirstByte = m.DataFirstByte
-        _dataFirstByteErr := io.WriteInt8(6, *(dataFirstByte))
-        if _dataFirstByteErr != nil {
-            return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-        }
-    }
-
-    // Array Field (data)
-    if m.Data != nil {
-        for _, _element := range m.Data {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'data' field " + _elementErr.Error())
-            }
-        }
+    // Simple Field (apdu)
+    _apduErr := m.Apdu.Serialize(io)
+    if _apduErr != nil {
+        return errors.New("Error serializing 'apdu' field " + _apduErr.Error())
     }
 
         return nil
@@ -462,65 +260,12 @@ func (m *LDataFrameData) UnmarshalXML(d *xml.Decoder, start xml.StartElement) er
                     return err
                 }
                 m.HopCount = data
-            case "dataLength":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataLength = data
-            case "control":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Control = data
-            case "numbered":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Numbered = data
-            case "counter":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Counter = data
-            case "controlType":
-                var data *ControlType
-                if err := d.DecodeElement(data, &tok); err != nil {
-                    return err
-                }
-                m.ControlType = data
-            case "apci":
-                var data *APCI
-                if err := d.DecodeElement(data, &tok); err != nil {
-                    return err
-                }
-                m.Apci = data
-            case "extendedApci":
-                var data *ExtendedAPCI
-                if err := d.DecodeElement(data, &tok); err != nil {
-                    return err
-                }
-                m.ExtendedApci = data
-            case "dataFirstByte":
-                var data *int8
-                if err := d.DecodeElement(data, &tok); err != nil {
+            case "apdu":
+                var dt *Apdu
+                if err := d.DecodeElement(&dt, &tok); err != nil {
                     return err
                 }
-                m.DataFirstByte = data
-            case "data":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.Data = utils.ByteArrayToInt8Array(_decoded[0:_len])
+                m.Apdu = dt
             }
         }
         token, err = d.Token()
@@ -548,33 +293,7 @@ func (m *LDataFrameData) MarshalXML(e *xml.Encoder, start xml.StartElement) erro
     if err := e.EncodeElement(m.HopCount, xml.StartElement{Name: xml.Name{Local: "hopCount"}}); err != nil {
         return err
     }
-    if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Control, xml.StartElement{Name: xml.Name{Local: "control"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Numbered, xml.StartElement{Name: xml.Name{Local: "numbered"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ControlType, xml.StartElement{Name: xml.Name{Local: "controlType"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ExtendedApci, xml.StartElement{Name: xml.Name{Local: "extendedApci"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
-        return err
-    }
-    _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
-    base64.StdEncoding.Encode(_encodedData, utils.Int8ArrayToByteArray(m.Data))
-    if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+    if err := e.EncodeElement(m.Apdu, xml.StartElement{Name: xml.Name{Local: "apdu"}}); err != nil {
         return err
     }
     return nil
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameDataExt.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameDataExt.go
index a248882..c875cf1 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameDataExt.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFrameDataExt.go
@@ -33,15 +33,7 @@ type LDataFrameDataExt struct {
     ExtendedFrameFormat uint8
     SourceAddress *KnxAddress
     DestinationAddress []int8
-    DataLength uint8
-    Control bool
-    Numbered bool
-    Counter uint8
-    ControlType *ControlType
-    Apci *APCI
-    ExtendedApci *ExtendedAPCI
-    DataFirstByte *int8
-    Data []int8
+    Apdu *Apdu
     Parent *LDataFrame
     ILDataFrameDataExt
 }
@@ -57,10 +49,6 @@ type ILDataFrameDataExt interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *LDataFrameDataExt) NotAckFrame() bool {
-    return true
-}
-
 func (m *LDataFrameDataExt) ExtendedFrame() bool {
     return true
 }
@@ -70,30 +58,23 @@ func (m *LDataFrameDataExt) Polling() bool {
 }
 
 
-func (m *LDataFrameDataExt) InitializeParent(parent *LDataFrame, repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) {
+func (m *LDataFrameDataExt) InitializeParent(parent *LDataFrame, repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) {
     m.Parent.Repeated = repeated
+    m.Parent.NotAckFrame = notAckFrame
     m.Parent.Priority = priority
     m.Parent.AcknowledgeRequested = acknowledgeRequested
     m.Parent.ErrorFlag = errorFlag
 }
 
-func NewLDataFrameDataExt(groupAddress bool, hopCount uint8, extendedFrameFormat uint8, sourceAddress *KnxAddress, destinationAddress []int8, dataLength uint8, control bool, numbered bool, counter uint8, controlType *ControlType, apci *APCI, extendedApci *ExtendedAPCI, dataFirstByte *int8, data []int8, repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
+func NewLDataFrameDataExt(groupAddress bool, hopCount uint8, extendedFrameFormat uint8, sourceAddress *KnxAddress, destinationAddress []int8, apdu *Apdu, repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
     child := &LDataFrameDataExt{
         GroupAddress: groupAddress,
         HopCount: hopCount,
         ExtendedFrameFormat: extendedFrameFormat,
         SourceAddress: sourceAddress,
         DestinationAddress: destinationAddress,
-        DataLength: dataLength,
-        Control: control,
-        Numbered: numbered,
-        Counter: counter,
-        ControlType: controlType,
-        Apci: apci,
-        ExtendedApci: extendedApci,
-        DataFirstByte: dataFirstByte,
-        Data: data,
-        Parent: NewLDataFrame(repeated, priority, acknowledgeRequested, errorFlag),
+        Apdu: apdu,
+        Parent: NewLDataFrame(repeated, notAckFrame, priority, acknowledgeRequested, errorFlag),
     }
     child.Parent.Child = child
     return child.Parent
@@ -142,42 +123,8 @@ func (m *LDataFrameDataExt) LengthInBits() uint16 {
         lengthInBits += 8 * uint16(len(m.DestinationAddress))
     }
 
-    // Simple field (dataLength)
-    lengthInBits += 8
-
-    // Simple field (control)
-    lengthInBits += 1
-
-    // Simple field (numbered)
-    lengthInBits += 1
-
-    // Simple field (counter)
-    lengthInBits += 4
-
-    // Optional Field (controlType)
-    if m.ControlType != nil {
-        lengthInBits += 2
-    }
-
-    // Optional Field (apci)
-    if m.Apci != nil {
-        lengthInBits += 4
-    }
-
-    // Optional Field (extendedApci)
-    if m.ExtendedApci != nil {
-        lengthInBits += 6
-    }
-
-    // Optional Field (dataFirstByte)
-    if m.DataFirstByte != nil {
-        lengthInBits += 6
-    }
-
-    // Array field
-    if len(m.Data) > 0 {
-        lengthInBits += 8 * uint16(len(m.Data))
-    }
+    // Simple field (apdu)
+    lengthInBits += m.Apdu.LengthInBits()
 
     return lengthInBits
 }
@@ -223,79 +170,10 @@ func LDataFrameDataExtParse(io *utils.ReadBuffer) (*LDataFrame, error) {
         destinationAddress[curItem] = _item
     }
 
-    // Simple Field (dataLength)
-    dataLength, _dataLengthErr := io.ReadUint8(8)
-    if _dataLengthErr != nil {
-        return nil, errors.New("Error parsing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Simple Field (control)
-    control, _controlErr := io.ReadBit()
-    if _controlErr != nil {
-        return nil, errors.New("Error parsing 'control' field " + _controlErr.Error())
-    }
-
-    // Simple Field (numbered)
-    numbered, _numberedErr := io.ReadBit()
-    if _numberedErr != nil {
-        return nil, errors.New("Error parsing 'numbered' field " + _numberedErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter, _counterErr := io.ReadUint8(4)
-    if _counterErr != nil {
-        return nil, errors.New("Error parsing 'counter' field " + _counterErr.Error())
-    }
-
-    // Optional Field (controlType) (Can be skipped, if a given expression evaluates to false)
-    var controlType *ControlType = nil
-    if control {
-        _val, _err := ControlTypeParse(io)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'controlType' field " + _err.Error())
-        }
-        controlType = &_val
-    }
-
-    // Optional Field (apci) (Can be skipped, if a given expression evaluates to false)
-    var apci *APCI = nil
-    if !(control) {
-        _val, _err := APCIParse(io)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'apci' field " + _err.Error())
-        }
-        apci = &_val
-    }
-
-    // Optional Field (extendedApci) (Can be skipped, if a given expression evaluates to false)
-    var extendedApci *ExtendedAPCI = nil
-    if bool(!(control)) && bool(bool(((*apci)) == (APCI_OTHER_PDU))) {
-        _val, _err := ExtendedAPCIParse(io)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'extendedApci' field " + _err.Error())
-        }
-        extendedApci = &_val
-    }
-
-    // Optional Field (dataFirstByte) (Can be skipped, if a given expression evaluates to false)
-    var dataFirstByte *int8 = nil
-    if bool(!(control)) && bool(bool(((*apci)) != (APCI_OTHER_PDU))) {
-        _val, _err := io.ReadInt8(6)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'dataFirstByte' field " + _err.Error())
-        }
-        dataFirstByte = &_val
-    }
-
-    // Array field (data)
-    // Count array
-    data := make([]int8, utils.InlineIf(bool(bool((dataLength) < ((1)))), uint16(uint16(0)), uint16(uint16(dataLength) - uint16(uint16(1)))))
-    for curItem := uint16(0); curItem < uint16(utils.InlineIf(bool(bool((dataLength) < ((1)))), uint16(uint16(0)), uint16(uint16(dataLength) - uint16(uint16(1))))); curItem++ {
-        _item, _err := io.ReadInt8(8)
-        if _err != nil {
-            return nil, errors.New("Error parsing 'data' field " + _err.Error())
-        }
-        data[curItem] = _item
+    // Simple Field (apdu)
+    apdu, _apduErr := ApduParse(io)
+    if _apduErr != nil {
+        return nil, errors.New("Error parsing 'apdu' field " + _apduErr.Error())
     }
 
     // Create a partially initialized instance
@@ -305,15 +183,7 @@ func LDataFrameDataExtParse(io *utils.ReadBuffer) (*LDataFrame, error) {
         ExtendedFrameFormat: extendedFrameFormat,
         SourceAddress: sourceAddress,
         DestinationAddress: destinationAddress,
-        DataLength: dataLength,
-        Control: control,
-        Numbered: numbered,
-        Counter: counter,
-        ControlType: controlType,
-        Apci: apci,
-        ExtendedApci: extendedApci,
-        DataFirstByte: dataFirstByte,
-        Data: data,
+        Apdu: apdu,
         Parent: &LDataFrame{},
     }
     _child.Parent.Child = _child
@@ -360,82 +230,10 @@ func (m *LDataFrameDataExt) Serialize(io utils.WriteBuffer) error {
         }
     }
 
-    // Simple Field (dataLength)
-    dataLength := uint8(m.DataLength)
-    _dataLengthErr := io.WriteUint8(8, (dataLength))
-    if _dataLengthErr != nil {
-        return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
-    }
-
-    // Simple Field (control)
-    control := bool(m.Control)
-    _controlErr := io.WriteBit((control))
-    if _controlErr != nil {
-        return errors.New("Error serializing 'control' field " + _controlErr.Error())
-    }
-
-    // Simple Field (numbered)
-    numbered := bool(m.Numbered)
-    _numberedErr := io.WriteBit((numbered))
-    if _numberedErr != nil {
-        return errors.New("Error serializing 'numbered' field " + _numberedErr.Error())
-    }
-
-    // Simple Field (counter)
-    counter := uint8(m.Counter)
-    _counterErr := io.WriteUint8(4, (counter))
-    if _counterErr != nil {
-        return errors.New("Error serializing 'counter' field " + _counterErr.Error())
-    }
-
-    // Optional Field (controlType) (Can be skipped, if the value is null)
-    var controlType *ControlType = nil
-    if m.ControlType != nil {
-        controlType = m.ControlType
-        _controlTypeErr := controlType.Serialize(io)
-        if _controlTypeErr != nil {
-            return errors.New("Error serializing 'controlType' field " + _controlTypeErr.Error())
-        }
-    }
-
-    // Optional Field (apci) (Can be skipped, if the value is null)
-    var apci *APCI = nil
-    if m.Apci != nil {
-        apci = m.Apci
-        _apciErr := apci.Serialize(io)
-        if _apciErr != nil {
-            return errors.New("Error serializing 'apci' field " + _apciErr.Error())
-        }
-    }
-
-    // Optional Field (extendedApci) (Can be skipped, if the value is null)
-    var extendedApci *ExtendedAPCI = nil
-    if m.ExtendedApci != nil {
-        extendedApci = m.ExtendedApci
-        _extendedApciErr := extendedApci.Serialize(io)
-        if _extendedApciErr != nil {
-            return errors.New("Error serializing 'extendedApci' field " + _extendedApciErr.Error())
-        }
-    }
-
-    // Optional Field (dataFirstByte) (Can be skipped, if the value is null)
-    var dataFirstByte *int8 = nil
-    if m.DataFirstByte != nil {
-        dataFirstByte = m.DataFirstByte
-        _dataFirstByteErr := io.WriteInt8(6, *(dataFirstByte))
-        if _dataFirstByteErr != nil {
-            return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
-        }
-    }
-
-    // Array Field (data)
-    if m.Data != nil {
-        for _, _element := range m.Data {
-            _elementErr := io.WriteInt8(8, _element)
-            if _elementErr != nil {
-                return errors.New("Error serializing 'data' field " + _elementErr.Error())
-            }
-        }
+    // Simple Field (apdu)
+    _apduErr := m.Apdu.Serialize(io)
+    if _apduErr != nil {
+        return errors.New("Error serializing 'apdu' field " + _apduErr.Error())
     }
 
         return nil
@@ -487,65 +285,12 @@ func (m *LDataFrameDataExt) UnmarshalXML(d *xml.Decoder, start xml.StartElement)
                     return err
                 }
                 m.DestinationAddress = utils.ByteArrayToInt8Array(_decoded[0:_len])
-            case "dataLength":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.DataLength = data
-            case "control":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
+            case "apdu":
+                var dt *Apdu
+                if err := d.DecodeElement(&dt, &tok); err != nil {
                     return err
                 }
-                m.Control = data
-            case "numbered":
-                var data bool
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Numbered = data
-            case "counter":
-                var data uint8
-                if err := d.DecodeElement(&data, &tok); err != nil {
-                    return err
-                }
-                m.Counter = data
-            case "controlType":
-                var data *ControlType
-                if err := d.DecodeElement(data, &tok); err != nil {
-                    return err
-                }
-                m.ControlType = data
-            case "apci":
-                var data *APCI
-                if err := d.DecodeElement(data, &tok); err != nil {
-                    return err
-                }
-                m.Apci = data
-            case "extendedApci":
-                var data *ExtendedAPCI
-                if err := d.DecodeElement(data, &tok); err != nil {
-                    return err
-                }
-                m.ExtendedApci = data
-            case "dataFirstByte":
-                var data *int8
-                if err := d.DecodeElement(data, &tok); err != nil {
-                    return err
-                }
-                m.DataFirstByte = data
-            case "data":
-                var _encoded string
-                if err := d.DecodeElement(&_encoded, &tok); err != nil {
-                    return err
-                }
-                _decoded := make([]byte, base64.StdEncoding.DecodedLen(len(_encoded)))
-                _len, err := base64.StdEncoding.Decode(_decoded, []byte(_encoded))
-                if err != nil {
-                    return err
-                }
-                m.Data = utils.ByteArrayToInt8Array(_decoded[0:_len])
+                m.Apdu = dt
             }
         }
         token, err = d.Token()
@@ -576,33 +321,7 @@ func (m *LDataFrameDataExt) MarshalXML(e *xml.Encoder, start xml.StartElement) e
     if err := e.EncodeElement(_encodedDestinationAddress, xml.StartElement{Name: xml.Name{Local: "destinationAddress"}}); err != nil {
         return err
     }
-    if err := e.EncodeElement(m.DataLength, xml.StartElement{Name: xml.Name{Local: "dataLength"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Control, xml.StartElement{Name: xml.Name{Local: "control"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Numbered, xml.StartElement{Name: xml.Name{Local: "numbered"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Counter, xml.StartElement{Name: xml.Name{Local: "counter"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ControlType, xml.StartElement{Name: xml.Name{Local: "controlType"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.Apci, xml.StartElement{Name: xml.Name{Local: "apci"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.ExtendedApci, xml.StartElement{Name: xml.Name{Local: "extendedApci"}}); err != nil {
-        return err
-    }
-    if err := e.EncodeElement(m.DataFirstByte, xml.StartElement{Name: xml.Name{Local: "dataFirstByte"}}); err != nil {
-        return err
-    }
-    _encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(m.Data)))
-    base64.StdEncoding.Encode(_encodedData, utils.Int8ArrayToByteArray(m.Data))
-    if err := e.EncodeElement(_encodedData, xml.StartElement{Name: xml.Name{Local: "data"}}); err != nil {
+    if err := e.EncodeElement(m.Apdu, xml.StartElement{Name: xml.Name{Local: "apdu"}}); err != nil {
         return err
     }
     return nil
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFramePollingData.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFramePollingData.go
index dcd4e19..a00c2c5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFramePollingData.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/LDataFramePollingData.go
@@ -47,10 +47,6 @@ type ILDataFramePollingData interface {
 ///////////////////////////////////////////////////////////
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
-func (m *LDataFramePollingData) NotAckFrame() bool {
-    return true
-}
-
 func (m *LDataFramePollingData) ExtendedFrame() bool {
     return false
 }
@@ -60,19 +56,20 @@ func (m *LDataFramePollingData) Polling() bool {
 }
 
 
-func (m *LDataFramePollingData) InitializeParent(parent *LDataFrame, repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) {
+func (m *LDataFramePollingData) InitializeParent(parent *LDataFrame, repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) {
     m.Parent.Repeated = repeated
+    m.Parent.NotAckFrame = notAckFrame
     m.Parent.Priority = priority
     m.Parent.AcknowledgeRequested = acknowledgeRequested
     m.Parent.ErrorFlag = errorFlag
 }
 
-func NewLDataFramePollingData(sourceAddress *KnxAddress, targetAddress []int8, numberExpectedPollData uint8, repeated bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
+func NewLDataFramePollingData(sourceAddress *KnxAddress, targetAddress []int8, numberExpectedPollData uint8, repeated bool, notAckFrame bool, priority CEMIPriority, acknowledgeRequested bool, errorFlag bool) *LDataFrame {
     child := &LDataFramePollingData{
         SourceAddress: sourceAddress,
         TargetAddress: targetAddress,
         NumberExpectedPollData: numberExpectedPollData,
-        Parent: NewLDataFrame(repeated, priority, acknowledgeRequested, errorFlag),
+        Parent: NewLDataFrame(repeated, notAckFrame, priority, acknowledgeRequested, errorFlag),
     }
     child.Parent.Child = child
     return child.Parent
diff --git a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
index 26cf716..38f3d8d 100644
--- a/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
+++ b/plc4go/internal/plc4go/s7/readwrite/model/TransportSize.go
@@ -27,10 +27,11 @@ type TransportSize int8
 type ITransportSize interface {
     Supported_S7_300() bool
     Supported_LOGO() bool
+    Code() uint8
     SizeInBytes() uint8
     Supported_S7_400() bool
     Supported_S7_1200() bool
-    SizeCode() uint8
+    ShortName() uint8
     Supported_S7_1500() bool
     DataTransportSize() DataTransportSize
     BaseType() TransportSize
@@ -41,38 +42,35 @@ type ITransportSize interface {
 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
+    TransportSize_WORD TransportSize = 0x03
+    TransportSize_DWORD TransportSize = 0x04
+    TransportSize_LWORD TransportSize = 0x05
+    TransportSize_INT TransportSize = 0x06
+    TransportSize_UINT TransportSize = 0x07
+    TransportSize_SINT TransportSize = 0x08
+    TransportSize_USINT TransportSize = 0x09
+    TransportSize_DINT TransportSize = 0x0A
+    TransportSize_UDINT TransportSize = 0x0B
+    TransportSize_LINT TransportSize = 0x0C
+    TransportSize_ULINT TransportSize = 0x0D
+    TransportSize_REAL TransportSize = 0x0E
+    TransportSize_LREAL TransportSize = 0x0F
+    TransportSize_CHAR TransportSize = 0x10
+    TransportSize_WCHAR TransportSize = 0x11
+    TransportSize_STRING TransportSize = 0x12
+    TransportSize_WSTRING TransportSize = 0x13
+    TransportSize_TIME TransportSize = 0x14
+    TransportSize_LTIME TransportSize = 0x16
+    TransportSize_DATE TransportSize = 0x17
+    TransportSize_TIME_OF_DAY TransportSize = 0x18
+    TransportSize_TOD TransportSize = 0x19
+    TransportSize_DATE_AND_TIME TransportSize = 0x1A
+    TransportSize_DT TransportSize = 0x1B
 )
 
 
 func (e TransportSize) Supported_S7_300() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -86,32 +84,71 @@ func (e TransportSize) Supported_S7_300() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return true
+            return false
         }
         case 0x08: { /* '0x08' */
-            return true
+            return false
         }
         case 0x09: { /* '0x09' */
+            return false
+        }
+        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
+            return false
+        }
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
+            return false
+        }
+        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
+            return false
+        }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return false
+        }
+        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
             return false
         }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return true
+        }
+        case 0x1B: { /* '0x1B' */
+            return true
+        }
         default: {
             return false
         }
@@ -120,9 +157,6 @@ func (e TransportSize) Supported_S7_300() bool {
 
 func (e TransportSize) Supported_LOGO() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -136,7 +170,7 @@ func (e TransportSize) Supported_LOGO() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
@@ -150,16 +184,55 @@ func (e TransportSize) Supported_LOGO() bool {
         case 0x09: { /* '0x09' */
             return true
         }
+        case 0x0A: { /* '0x0A' */
+            return true
+        }
         case 0x0B: { /* '0x0B' */
             return true
         }
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
+            return false
+        }
+        case 0x0E: { /* '0x0E' */
+            return true
+        }
         case 0x0F: { /* '0x0F' */
             return false
         }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return true
+        }
+        case 0x12: { /* '0x12' */
+            return true
+        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
+            return false
+        }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return false
+        }
+        case 0x1B: { /* '0x1B' */
             return false
         }
         default: {
@@ -168,11 +241,94 @@ func (e TransportSize) Supported_LOGO() bool {
     }
 }
 
-func (e TransportSize) SizeInBytes() uint8 {
+func (e TransportSize) Code() uint8 {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 8
+        case 0x01: { /* '0x01' */
+            return 0x01
+        }
+        case 0x02: { /* '0x02' */
+            return 0x02
+        }
+        case 0x03: { /* '0x03' */
+            return 0x04
+        }
+        case 0x04: { /* '0x04' */
+            return 0x06
+        }
+        case 0x05: { /* '0x05' */
+            return 0x00
+        }
+        case 0x06: { /* '0x06' */
+            return 0x05
+        }
+        case 0x07: { /* '0x07' */
+            return 0x05
+        }
+        case 0x08: { /* '0x08' */
+            return 0x02
+        }
+        case 0x09: { /* '0x09' */
+            return 0x02
+        }
+        case 0x0A: { /* '0x0A' */
+            return 0x07
+        }
+        case 0x0B: { /* '0x0B' */
+            return 0x07
+        }
+        case 0x0C: { /* '0x0C' */
+            return 0x00
+        }
+        case 0x0D: { /* '0x0D' */
+            return 0x00
+        }
+        case 0x0E: { /* '0x0E' */
+            return 0x08
         }
+        case 0x0F: { /* '0x0F' */
+            return 0x30
+        }
+        case 0x10: { /* '0x10' */
+            return 0x03
+        }
+        case 0x11: { /* '0x11' */
+            return 0x13
+        }
+        case 0x12: { /* '0x12' */
+            return 0x03
+        }
+        case 0x13: { /* '0x13' */
+            return 0x00
+        }
+        case 0x14: { /* '0x14' */
+            return 0x0B
+        }
+        case 0x16: { /* '0x16' */
+            return 0x00
+        }
+        case 0x17: { /* '0x17' */
+            return 0x09
+        }
+        case 0x18: { /* '0x18' */
+            return 0x06
+        }
+        case 0x19: { /* '0x19' */
+            return 0x06
+        }
+        case 0x1A: { /* '0x1A' */
+            return 0x0F
+        }
+        case 0x1B: { /* '0x1B' */
+            return 0x0F
+        }
+        default: {
+            return 0
+        }
+    }
+}
+
+func (e TransportSize) SizeInBytes() uint8 {
+    switch e  {
         case 0x01: { /* '0x01' */
             return 1
         }
@@ -180,38 +336,77 @@ func (e TransportSize) SizeInBytes() uint8 {
             return 1
         }
         case 0x03: { /* '0x03' */
-            return 1
+            return 2
         }
         case 0x04: { /* '0x04' */
-            return 2
+            return 4
         }
         case 0x05: { /* '0x05' */
-            return 2
+            return 8
         }
         case 0x06: { /* '0x06' */
-            return 4
+            return 2
         }
         case 0x07: { /* '0x07' */
-            return 4
+            return 2
         }
         case 0x08: { /* '0x08' */
-            return 4
+            return 1
         }
         case 0x09: { /* '0x09' */
-            return 2
+            return 1
+        }
+        case 0x0A: { /* '0x0A' */
+            return 4
         }
         case 0x0B: { /* '0x0B' */
             return 4
         }
+        case 0x0C: { /* '0x0C' */
+            return 8
+        }
+        case 0x0D: { /* '0x0D' */
+            return 16
+        }
+        case 0x0E: { /* '0x0E' */
+            return 4
+        }
         case 0x0F: { /* '0x0F' */
-            return 12
+            return 8
+        }
+        case 0x10: { /* '0x10' */
+            return 1
+        }
+        case 0x11: { /* '0x11' */
+            return 2
+        }
+        case 0x12: { /* '0x12' */
+            return 1
         }
         case 0x13: { /* '0x13' */
             return 2
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return 4
+        }
+        case 0x16: { /* '0x16' */
             return 8
         }
+        case 0x17: { /* '0x17' */
+            return 2
+        }
+        case 0x18: { /* '0x18' */
+            return 4
+        }
+        case 0x19: { /* '0x19' */
+            return 4
+        }
+        case 0x1A: { /* '0x1A' */
+            return 12
+        }
+        case 0x1B: { /* '0x1B' */
+            return 12
+        }
         default: {
             return 0
         }
@@ -220,9 +415,6 @@ func (e TransportSize) SizeInBytes() uint8 {
 
 func (e TransportSize) Supported_S7_400() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -236,32 +428,71 @@ func (e TransportSize) Supported_S7_400() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
         }
         case 0x07: { /* '0x07' */
-            return true
+            return false
         }
         case 0x08: { /* '0x08' */
-            return true
+            return false
         }
         case 0x09: { /* '0x09' */
+            return false
+        }
+        case 0x0A: { /* '0x0A' */
             return true
         }
         case 0x0B: { /* '0x0B' */
+            return false
+        }
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
+            return false
+        }
+        case 0x0E: { /* '0x0E' */
             return true
         }
         case 0x0F: { /* '0x0F' */
+            return false
+        }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return false
+        }
+        case 0x12: { /* '0x12' */
             return true
         }
         case 0x13: { /* '0x13' */
             return false
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
             return false
         }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return true
+        }
+        case 0x1B: { /* '0x1B' */
+            return true
+        }
         default: {
             return false
         }
@@ -270,9 +501,6 @@ func (e TransportSize) Supported_S7_400() bool {
 
 func (e TransportSize) Supported_S7_1200() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return false
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -286,7 +514,7 @@ func (e TransportSize) Supported_S7_1200() bool {
             return true
         }
         case 0x05: { /* '0x05' */
-            return true
+            return false
         }
         case 0x06: { /* '0x06' */
             return true
@@ -300,29 +528,65 @@ func (e TransportSize) Supported_S7_1200() bool {
         case 0x09: { /* '0x09' */
             return true
         }
+        case 0x0A: { /* '0x0A' */
+            return true
+        }
         case 0x0B: { /* '0x0B' */
             return true
         }
-        case 0x0F: { /* '0x0F' */
+        case 0x0C: { /* '0x0C' */
+            return false
+        }
+        case 0x0D: { /* '0x0D' */
             return false
         }
+        case 0x0E: { /* '0x0E' */
+            return true
+        }
+        case 0x0F: { /* '0x0F' */
+            return true
+        }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return true
+        }
+        case 0x12: { /* '0x12' */
+            return true
+        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
             return true
         }
+        case 0x16: { /* '0x16' */
+            return false
+        }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return false
+        }
+        case 0x1B: { /* '0x1B' */
+            return false
+        }
         default: {
             return false
         }
     }
 }
 
-func (e TransportSize) SizeCode() uint8 {
+func (e TransportSize) ShortName() uint8 {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 'X'
-        }
         case 0x01: { /* '0x01' */
             return 'X'
         }
@@ -330,36 +594,75 @@ func (e TransportSize) SizeCode() uint8 {
             return 'B'
         }
         case 0x03: { /* '0x03' */
-            return 'B'
+            return 'W'
         }
         case 0x04: { /* '0x04' */
-            return 'W'
+            return 'D'
         }
         case 0x05: { /* '0x05' */
-            return 'W'
+            return 'X'
         }
         case 0x06: { /* '0x06' */
-            return 'D'
+            return 'W'
         }
         case 0x07: { /* '0x07' */
-            return 'D'
+            return 'W'
         }
         case 0x08: { /* '0x08' */
-            return 'D'
+            return 'B'
         }
         case 0x09: { /* '0x09' */
-            return 'X'
+            return 'B'
+        }
+        case 0x0A: { /* '0x0A' */
+            return 'D'
         }
         case 0x0B: { /* '0x0B' */
+            return 'D'
+        }
+        case 0x0C: { /* '0x0C' */
+            return 'X'
+        }
+        case 0x0D: { /* '0x0D' */
             return 'X'
         }
+        case 0x0E: { /* '0x0E' */
+            return 'D'
+        }
         case 0x0F: { /* '0x0F' */
             return 'X'
         }
+        case 0x10: { /* '0x10' */
+            return 'B'
+        }
+        case 0x11: { /* '0x11' */
+            return 'X'
+        }
+        case 0x12: { /* '0x12' */
+            return 'X'
+        }
         case 0x13: { /* '0x13' */
             return 'X'
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return 'X'
+        }
+        case 0x16: { /* '0x16' */
+            return 'X'
+        }
+        case 0x17: { /* '0x17' */
+            return 'X'
+        }
+        case 0x18: { /* '0x18' */
+            return 'X'
+        }
+        case 0x19: { /* '0x19' */
+            return 'X'
+        }
+        case 0x1A: { /* '0x1A' */
+            return 'X'
+        }
+        case 0x1B: { /* '0x1B' */
             return 'X'
         }
         default: {
@@ -370,9 +673,6 @@ func (e TransportSize) SizeCode() uint8 {
 
 func (e TransportSize) Supported_S7_1500() bool {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return true
-        }
         case 0x01: { /* '0x01' */
             return true
         }
@@ -400,16 +700,55 @@ func (e TransportSize) Supported_S7_1500() bool {
         case 0x09: { /* '0x09' */
             return true
         }
+        case 0x0A: { /* '0x0A' */
+            return true
+        }
         case 0x0B: { /* '0x0B' */
             return true
         }
+        case 0x0C: { /* '0x0C' */
+            return true
+        }
+        case 0x0D: { /* '0x0D' */
+            return true
+        }
+        case 0x0E: { /* '0x0E' */
+            return true
+        }
         case 0x0F: { /* '0x0F' */
             return true
         }
+        case 0x10: { /* '0x10' */
+            return true
+        }
+        case 0x11: { /* '0x11' */
+            return true
+        }
+        case 0x12: { /* '0x12' */
+            return true
+        }
         case 0x13: { /* '0x13' */
             return true
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return true
+        }
+        case 0x16: { /* '0x16' */
+            return true
+        }
+        case 0x17: { /* '0x17' */
+            return true
+        }
+        case 0x18: { /* '0x18' */
+            return true
+        }
+        case 0x19: { /* '0x19' */
+            return true
+        }
+        case 0x1A: { /* '0x1A' */
+            return true
+        }
+        case 0x1B: { /* '0x1B' */
             return true
         }
         default: {
@@ -420,9 +759,6 @@ func (e TransportSize) Supported_S7_1500() bool {
 
 func (e TransportSize) DataTransportSize() DataTransportSize {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 0
-        }
         case 0x01: { /* '0x01' */
             return DataTransportSize_BIT
         }
@@ -436,10 +772,10 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
             return DataTransportSize_BYTE_WORD_DWORD
         }
         case 0x05: { /* '0x05' */
-            return DataTransportSize_INTEGER
+            return 0
         }
         case 0x06: { /* '0x06' */
-            return DataTransportSize_BYTE_WORD_DWORD
+            return DataTransportSize_INTEGER
         }
         case 0x07: { /* '0x07' */
             return DataTransportSize_INTEGER
@@ -450,16 +786,55 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
         case 0x09: { /* '0x09' */
             return DataTransportSize_BYTE_WORD_DWORD
         }
+        case 0x0A: { /* '0x0A' */
+            return DataTransportSize_INTEGER
+        }
         case 0x0B: { /* '0x0B' */
+            return DataTransportSize_INTEGER
+        }
+        case 0x0C: { /* '0x0C' */
             return 0
         }
+        case 0x0D: { /* '0x0D' */
+            return 0
+        }
+        case 0x0E: { /* '0x0E' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
         case 0x0F: { /* '0x0F' */
             return 0
         }
+        case 0x10: { /* '0x10' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x11: { /* '0x11' */
+            return 0
+        }
+        case 0x12: { /* '0x12' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x30: { /* '0x30' */
+        case 0x14: { /* '0x14' */
+            return 0
+        }
+        case 0x16: { /* '0x16' */
+            return 0
+        }
+        case 0x17: { /* '0x17' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x18: { /* '0x18' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x19: { /* '0x19' */
+            return DataTransportSize_BYTE_WORD_DWORD
+        }
+        case 0x1A: { /* '0x1A' */
+            return 0
+        }
+        case 0x1B: { /* '0x1B' */
             return 0
         }
         default: {
@@ -470,9 +845,6 @@ func (e TransportSize) DataTransportSize() DataTransportSize {
 
 func (e TransportSize) BaseType() TransportSize {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return 0
-        }
         case 0x01: { /* '0x01' */
             return 0
         }
@@ -483,34 +855,73 @@ func (e TransportSize) BaseType() TransportSize {
             return 0
         }
         case 0x04: { /* '0x04' */
-            return 0
+            return TransportSize_WORD
         }
         case 0x05: { /* '0x05' */
             return 0
         }
         case 0x06: { /* '0x06' */
-            return TransportSize_WORD
+            return 0
         }
         case 0x07: { /* '0x07' */
             return TransportSize_INT
         }
         case 0x08: { /* '0x08' */
-            return 0
+            return TransportSize_INT
         }
         case 0x09: { /* '0x09' */
-            return 0
+            return TransportSize_INT
+        }
+        case 0x0A: { /* '0x0A' */
+            return TransportSize_INT
         }
         case 0x0B: { /* '0x0B' */
+            return TransportSize_INT
+        }
+        case 0x0C: { /* '0x0C' */
+            return TransportSize_INT
+        }
+        case 0x0D: { /* '0x0D' */
+            return TransportSize_INT
+        }
+        case 0x0E: { /* '0x0E' */
             return 0
         }
         case 0x0F: { /* '0x0F' */
+            return TransportSize_REAL
+        }
+        case 0x10: { /* '0x10' */
+            return 0
+        }
+        case 0x11: { /* '0x11' */
+            return 0
+        }
+        case 0x12: { /* '0x12' */
             return 0
         }
         case 0x13: { /* '0x13' */
             return 0
         }
-        case 0x30: { /* '0x30' */
-            return TransportSize_REAL
+        case 0x14: { /* '0x14' */
+            return 0
+        }
+        case 0x16: { /* '0x16' */
+            return TransportSize_TIME
+        }
+        case 0x17: { /* '0x17' */
+            return 0
+        }
+        case 0x18: { /* '0x18' */
+            return 0
+        }
+        case 0x19: { /* '0x19' */
+            return 0
+        }
+        case 0x1A: { /* '0x1A' */
+            return 0
+        }
+        case 0x1B: { /* '0x1B' */
+            return 0
         }
         default: {
             return 0
@@ -520,9 +931,6 @@ func (e TransportSize) BaseType() TransportSize {
 
 func (e TransportSize) DataProtocolId() string {
     switch e  {
-        case 0x00: { /* '0x00' */
-            return "IEC61131_LWORD"
-        }
         case 0x01: { /* '0x01' */
             return "IEC61131_BOOL"
         }
@@ -530,37 +938,76 @@ func (e TransportSize) DataProtocolId() string {
             return "IEC61131_BYTE"
         }
         case 0x03: { /* '0x03' */
-            return "IEC61131_CHAR"
+            return "IEC61131_WORD"
         }
         case 0x04: { /* '0x04' */
-            return "IEC61131_WORD"
+            return "IEC61131_DWORD"
         }
         case 0x05: { /* '0x05' */
-            return "IEC61131_INT"
+            return "IEC61131_LWORD"
         }
         case 0x06: { /* '0x06' */
-            return "IEC61131_DWORD"
+            return "IEC61131_INT"
         }
         case 0x07: { /* '0x07' */
-            return "IEC61131_DINT"
+            return "IEC61131_UINT"
         }
         case 0x08: { /* '0x08' */
-            return "IEC61131_REAL"
+            return "IEC61131_SINT"
         }
         case 0x09: { /* '0x09' */
-            return "IEC61131_DATE"
+            return "IEC61131_USINT"
+        }
+        case 0x0A: { /* '0x0A' */
+            return "IEC61131_DINT"
         }
         case 0x0B: { /* '0x0B' */
-            return "IEC61131_TIME"
+            return "IEC61131_UDINT"
+        }
+        case 0x0C: { /* '0x0C' */
+            return "IEC61131_LINT"
+        }
+        case 0x0D: { /* '0x0D' */
+            return "IEC61131_ULINT"
+        }
+        case 0x0E: { /* '0x0E' */
+            return "IEC61131_REAL"
         }
         case 0x0F: { /* '0x0F' */
-            return "IEC61131_DATE_AND_TIME"
+            return "IEC61131_LREAL"
         }
-        case 0x13: { /* '0x13' */
+        case 0x10: { /* '0x10' */
+            return "IEC61131_CHAR"
+        }
+        case 0x11: { /* '0x11' */
             return "IEC61131_WCHAR"
         }
-        case 0x30: { /* '0x30' */
-            return "IEC61131_LREAL"
+        case 0x12: { /* '0x12' */
+            return "IEC61131_STRING"
+        }
+        case 0x13: { /* '0x13' */
+            return "IEC61131_WSTRING"
+        }
+        case 0x14: { /* '0x14' */
+            return "IEC61131_TIME"
+        }
+        case 0x16: { /* '0x16' */
+            return "IEC61131_LTIME"
+        }
+        case 0x17: { /* '0x17' */
+            return "IEC61131_DATE"
+        }
+        case 0x18: { /* '0x18' */
+            return "IEC61131_TIME_OF_DAY"
+        }
+        case 0x19: { /* '0x19' */
+            return "IEC61131_TIME_OF_DAY"
+        }
+        case 0x1A: { /* '0x1A' */
+            return "IEC61131_DATE_AND_TIME"
+        }
+        case 0x1B: { /* '0x1B' */
+            return "IEC61131_DATE_AND_TIME"
         }
         default: {
             return ""
@@ -569,68 +1016,116 @@ func (e TransportSize) DataProtocolId() string {
 }
 func TransportSizeByValue(value int8) TransportSize {
     switch value {
-        case 0x00:
-            return TransportSize_LWORD
         case 0x01:
             return TransportSize_BOOL
         case 0x02:
             return TransportSize_BYTE
         case 0x03:
-            return TransportSize_CHAR
-        case 0x04:
             return TransportSize_WORD
+        case 0x04:
+            return TransportSize_DWORD
         case 0x05:
-            return TransportSize_INT
+            return TransportSize_LWORD
         case 0x06:
-            return TransportSize_DWORD
+            return TransportSize_INT
         case 0x07:
-            return TransportSize_DINT
+            return TransportSize_UINT
         case 0x08:
-            return TransportSize_REAL
+            return TransportSize_SINT
         case 0x09:
-            return TransportSize_DATE
+            return TransportSize_USINT
+        case 0x0A:
+            return TransportSize_DINT
         case 0x0B:
-            return TransportSize_TIME
+            return TransportSize_UDINT
+        case 0x0C:
+            return TransportSize_LINT
+        case 0x0D:
+            return TransportSize_ULINT
+        case 0x0E:
+            return TransportSize_REAL
         case 0x0F:
-            return TransportSize_DATE_AND_TIME
-        case 0x13:
-            return TransportSize_WCHAR
-        case 0x30:
             return TransportSize_LREAL
+        case 0x10:
+            return TransportSize_CHAR
+        case 0x11:
+            return TransportSize_WCHAR
+        case 0x12:
+            return TransportSize_STRING
+        case 0x13:
+            return TransportSize_WSTRING
+        case 0x14:
+            return TransportSize_TIME
+        case 0x16:
+            return TransportSize_LTIME
+        case 0x17:
+            return TransportSize_DATE
+        case 0x18:
+            return TransportSize_TIME_OF_DAY
+        case 0x19:
+            return TransportSize_TOD
+        case 0x1A:
+            return TransportSize_DATE_AND_TIME
+        case 0x1B:
+            return TransportSize_DT
     }
     return 0
 }
 
 func TransportSizeByName(value string) TransportSize {
     switch value {
-    case "LWORD":
-        return TransportSize_LWORD
     case "BOOL":
         return TransportSize_BOOL
     case "BYTE":
         return TransportSize_BYTE
-    case "CHAR":
-        return TransportSize_CHAR
     case "WORD":
         return TransportSize_WORD
-    case "INT":
-        return TransportSize_INT
     case "DWORD":
         return TransportSize_DWORD
+    case "LWORD":
+        return TransportSize_LWORD
+    case "INT":
+        return TransportSize_INT
+    case "UINT":
+        return TransportSize_UINT
+    case "SINT":
+        return TransportSize_SINT
+    case "USINT":
+        return TransportSize_USINT
     case "DINT":
         return TransportSize_DINT
+    case "UDINT":
+        return TransportSize_UDINT
+    case "LINT":
+        return TransportSize_LINT
+    case "ULINT":
+        return TransportSize_ULINT
     case "REAL":
         return TransportSize_REAL
-    case "DATE":
-        return TransportSize_DATE
+    case "LREAL":
+        return TransportSize_LREAL
+    case "CHAR":
+        return TransportSize_CHAR
+    case "WCHAR":
+        return TransportSize_WCHAR
+    case "STRING":
+        return TransportSize_STRING
+    case "WSTRING":
+        return TransportSize_WSTRING
     case "TIME":
         return TransportSize_TIME
+    case "LTIME":
+        return TransportSize_LTIME
+    case "DATE":
+        return TransportSize_DATE
+    case "TIME_OF_DAY":
+        return TransportSize_TIME_OF_DAY
+    case "TOD":
+        return TransportSize_TOD
     case "DATE_AND_TIME":
         return TransportSize_DATE_AND_TIME
-    case "WCHAR":
-        return TransportSize_WCHAR
-    case "LREAL":
-        return TransportSize_LREAL
+    case "DT":
+        return TransportSize_DT
     }
     return 0
 }
@@ -668,34 +1163,58 @@ func (e TransportSize) Serialize(io utils.WriteBuffer) error {
 
 func (e TransportSize) String() string {
     switch e {
-    case TransportSize_LWORD:
-        return "LWORD"
     case TransportSize_BOOL:
         return "BOOL"
     case TransportSize_BYTE:
         return "BYTE"
-    case TransportSize_CHAR:
-        return "CHAR"
     case TransportSize_WORD:
         return "WORD"
-    case TransportSize_INT:
-        return "INT"
     case TransportSize_DWORD:
         return "DWORD"
+    case TransportSize_LWORD:
+        return "LWORD"
+    case TransportSize_INT:
+        return "INT"
+    case TransportSize_UINT:
+        return "UINT"
+    case TransportSize_SINT:
+        return "SINT"
+    case TransportSize_USINT:
+        return "USINT"
     case TransportSize_DINT:
         return "DINT"
+    case TransportSize_UDINT:
+        return "UDINT"
+    case TransportSize_LINT:
+        return "LINT"
+    case TransportSize_ULINT:
+        return "ULINT"
     case TransportSize_REAL:
         return "REAL"
-    case TransportSize_DATE:
-        return "DATE"
+    case TransportSize_LREAL:
+        return "LREAL"
+    case TransportSize_CHAR:
+        return "CHAR"
+    case TransportSize_WCHAR:
+        return "WCHAR"
+    case TransportSize_STRING:
+        return "STRING"
+    case TransportSize_WSTRING:
+        return "WSTRING"
     case TransportSize_TIME:
         return "TIME"
+    case TransportSize_LTIME:
+        return "LTIME"
+    case TransportSize_DATE:
+        return "DATE"
+    case TransportSize_TIME_OF_DAY:
+        return "TIME_OF_DAY"
+    case TransportSize_TOD:
+        return "TOD"
     case TransportSize_DATE_AND_TIME:
         return "DATE_AND_TIME"
-    case TransportSize_WCHAR:
-        return "WCHAR"
-    case TransportSize_LREAL:
-        return "LREAL"
+    case TransportSize_DT:
+        return "DT"
     }
     return ""
 }