You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by hu...@apache.org on 2021/03/16 10:42:31 UTC

[plc4x] branch feature/string_enum_mspec updated (1431989 -> 409d940)

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

hutcheb pushed a change to branch feature/string_enum_mspec
in repository https://gitbox.apache.org/repos/asf/plc4x.git.


    from 1431989  Updated Enum Discriinator fields for C and Java.
     add 9b326b3  - Implemented active Group Address reads - Greatly refactored how the group-address reading works
     add 62aa81c  - Introduced a "BlockingClose" for usage with defer statements
     add 5b8708f  - Introduced a "BlockingClose" for usage with defer statements
     add e35880b  - Fixed the output of the example
     add 7110f8f  - Removed an unneeded log output.
     add e296ad4  - Updated examples to register the drivers in a way that works outside the project.
     add 42c3491  - Implemented Device Authentication - Implemented reading of Property Descriptions - Started implementing the code for reading of Com Object Tables
     add 5838127  - Finetuned the go code generation.
     add 89ad4b3  - Fixed a nasty bug in the sending of messages (related to an overflow in the counters) - Finished implementing the decoding of the Com Object Table for System B devices
     add d09a029  - Implemented a tool to fetch all available KNX definitions from the KNX Foundations Servers - Added definitions for the System7 type com-object-table data - Refactored the API for Browse in PLC4Go - Refactored the API for Read/Write/Subscribe to allow adding of "field" object and renamed "addItem" to "addQuery"
     add 5dfa12f  - Finished Go KNX Auto-discovery
     add 274f639  - Removed a duplicated type
     add 95376fb  Updated connection cache pom based on Cesar's comments.
     add 6010dcd  - Fixed a minor bug in the knx master-data mspec generation.
     add 197183f  - Fixed a bug only returning results for only one group address for a given com object in System7 devices
     add ae74837  - Added an example for subscriptions in KNX - Fixed the code in KNX subscriptions to work if no datatype was provided
     add b47a1b9  - Made the driver replace the "field" in case of a subscription event to replace the original field, which can contain patterns, with a concrete version with no patterns. So we can know where an event came from.
     add 281d5d1  - Added a "RawPlcValue" type which allows lazy decoding of the payload if the type-information is not known at the time it's processed by the driver.
     add 5764bf8  Updated some wording on the Kafka connector page
     add ac37371  - Added a RawReset function to the RawPlcValue to allow multiple parser runs of the same raw value.
     add 0841bff  - Changed the PlcValueAdapter.go to support the list functions on all plc value types, by treating single item plc-values as one-element lists.
     add 36a36d4  - Major cleanup of the KnxNetIpConnection type - Made the drivers automatically register their default transports
     add 06fbedd  - Updated the knx codec to check expectations for expirations, even if no message was received - Added a dedicated TimeoutError type to allow easy detection of timeout errors
     add d4194ab  - Clean up the read-memory function and the updating of the max pdu size, if a mem-read returns less than expected.
     add 8a7548e  - Clean up the read-memory function and the updating of the max pdu size, if a mem-read returns less than expected.
     add 3142a57  - Worked on detecting bad connections.
     add 591fd57  - Fixed the Firmata driver (The analog part now works again)
     add 70041b7  - Removed unneeded import.
     add 21350b3  - Removed unneeded import.
     add 3dd2fc2  - Tried to resolve a strange problem only causing problems when compiling using gccgo
     add 79363ba  lebbing logo
     add c9cb169  adding Lebbing Automation
     add 5c0f1c5  golang type generator big.Int and big.Float support + initial ads generation
     add 548104b  remove debug statements from golang readbuffer
     add b1dc1be  - Added an execution of go fmt in the build - Fixed a bug in the error handling of generated XML code
     add 64ea6de  plc4go: add Makefile to wrap maven calls for non maven aware devs
     add 5a3b74b  plc4go: enabled test run with maven and reformatted missing code
     add 74a1b00  plc4j: removed L from spec literal and added detection for long literals to java gernerator
     add cb61dd8  plc4j: removed L from spec literal and added detection for long literals to java gernerator Part2 now with spec
     add 4b679e8  plc4go: add WIP test files for ads and s7
     add 6bba1b85 - Adjusted the execution times of the go maven plugin tools - Removed obsolete test-code (That actually wasn't test code)
     add f011bd1  plc4go: severall fixes regarding code generation + math/big import will only be rendered when required + generated code will now contain a comment which will be interpreted by the IDE + reformated code with tabs again. We need to adjust code generation here somehow + added prober .editorconfig for .go
     add e3f93c8  - Fixed the code generation issues for the new protocols
     add 6681ae1  plc4go: added parameter parsing to DriverTestRunner.go
     add 3fb3e19  plc4go: initial work on ads driver + introduced zerolog github.com/rs/zerolog + introduced errors github.com/pkg/errors + Added some logging to DriverTestRunner + Fixed bug where delay lead to panic
     add c518f11  plc4go: Switch to zerolog + Fixed issues with tabs by adding tabs to golang ftlh templates + Fixed issue where generated header was missing + Fixed issue where fmt wasn proberly executed during maven cycle + added indent_style for ftlh
     add 099073d  plc4go: Enabled xunit report xml for jenkins
     add 7220685  plc4go: Disable console logger as it wrecks the report.xml
     add e37973f  - Tried to make the KNX protocol always update the xml-masterdata.xml
     add f74cab7  plc4go: Make build on test fail
     add efdf83b  plc4go: Only fail test after report was generated
     add d0f4754  plc4go: Partial test fix + un/marshal uses hex base output now + DriverTestsuite.xml still contains base64
     add 545aa26  plc4x: convert missing base64 to hex
     add 3c8f681  plc4j: added deserializer to TestSuiteMappingModule.java
     add 74609ac  - Removed the setting to re-download the xml-masterdata.xml on every build as in case of multiple builds a day you tend to get banned.
     add 4bd6dc0  - Updated the ads and can protocol modules to use hex-string encoded test-data
     add 3bef3dd  - Updated the s7 and can protocol modules to use hex-string encoded test-data
     add 783526d  - Updated the testsuite data in the go module
     add 4b41850  - Deleted some super-old legacy test
     new 5857e91  Merge branch 'develop' into feature/string_enum_mspec
     new 409d940  Integration test is working in Go, sorting through some failed tests.

The 2 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:
 .editorconfig                                      |     6 +
 .../BaseFreemarkerLanguageTemplateHelper.java      |     1 -
 .../plc4x/language/c/CLanguageTemplateHelper.java  |     5 +-
 .../resources/templates/c/data-io-template-c.ftlh  |     2 +-
 .../resources/templates/c/enum-template-c.ftlh     |     2 +-
 .../resources/templates/c/pojo-template-c.ftlh     |    14 +-
 build-utils/language-go/pom.xml                    |     2 +
 .../language/go/GoLanguageTemplateHelper.java      |    71 +-
 .../resources/templates/go/data-io-template.ftlh   |   312 +-
 .../main/resources/templates/go/enum-template.ftlh |   118 +-
 .../resources/templates/go/model-template.ftlh     |  1812 +-
 .../templates/go/parser-factory-template.ftlh      |    47 +-
 .../templates/go/xml-parser-factory-template.ftlh  |    33 +-
 .../language-go/src/test/resources/plc4go}/go.mod  |     4 +-
 .../resources/{integration-test => plc4go}/pom.xml |    63 +-
 .../language/java/JavaLanguageTemplateHelper.java  |   147 +-
 .../resources/templates/java/enum-template.ftlh    |     2 +-
 .../main/resources/templates/java/io-template.ftlh |     4 +-
 .../resources/templates/java/pojo-template.ftlh    |     8 +-
 .../src/main/resources/protocols/test/test.mspec   |    20 +-
 plc4go/Makefile                                    |    95 +
 .../protocols/ads/AdsDiscoverySerializerTest.xml   |     0
 .../testing}/protocols/ads/DriverTestsuite.xml     |    14 +-
 .../protocols/ads/ParserSerializerTestsuite.xml    |     0
 .../testing/protocols/modbus/DriverTestsuite.xml   |     8 +-
 .../testing/protocols/s7/DriverTestsuite.xml       |     8 +-
 plc4go/cmd/main/drivers/knxnetip_test.go           |   525 -
 plc4go/cmd/main/drivers/modbus_test.go             |   213 -
 .../{modbus_driver_test.go => ads_driver_test.go}  |    13 +-
 ...lizer_test.go => ads_parser_serializer_test.go} |    11 +-
 .../cmd/main/drivers/tests/knx_discovery_test.go   |   613 -
 .../cmd/main/drivers/tests/modbus_driver_test.go   |    10 +-
 .../drivers/tests/modbus_parser_serializer_test.go |     8 +-
 .../{modbus_driver_test.go => s7_driver_test.go}   |    13 +-
 ...alizer_test.go => s7_parser_serializer_test.go} |    11 +-
 .../discovery/hello_world_plc4go_knx_discovery.go  |    99 -
 .../discovery/hello_world_plc4go_knx_discovery.go  |   165 +
 .../hello_world_plc4go_knx_read_group_address.go}  |    35 +-
 .../hello_world_plc4go_knx_subscription.go         |   114 +
 plc4go/examples/read/hello_world_plc4go_read.go    |    10 +-
 plc4go/examples/write/hello_world_plc4go_write.go  |    10 +-
 plc4go/go.mod                                      |     4 +-
 plc4go/go.sum                                      |    21 +-
 .../plc4go/ads/AdsDriver.go}                       |    28 +-
 .../plc4go/ads/AdsFieldHandler.go}                 |    22 +-
 .../internal/plc4go/ads/readwrite/ParserHelper.go  |    67 +
 .../plc4go/ads/readwrite/XmlParserHelper.go        |   113 +
 .../model/AdsAddDeviceNotificationRequest.go       |   335 +
 .../model/AdsAddDeviceNotificationResponse.go      |   195 +
 .../internal/plc4go/ads/readwrite/model/AdsData.go |   448 +
 .../plc4go/ads/readwrite/model/AdsDataType.go      |   702 +
 .../model/AdsDeleteDeviceNotificationRequest.go    |   168 +
 .../model/AdsDeleteDeviceNotificationResponse.go   |   167 +
 .../model/AdsDeviceNotificationRequest.go          |   242 +
 .../model/AdsDeviceNotificationResponse.go         |   139 +
 .../readwrite/model/AdsInvalidRequest.go}          |    91 +-
 .../ads/readwrite/model/AdsInvalidResponse.go      |   139 +
 .../ads/readwrite/model/AdsMultiRequestItem.go     |   209 +
 .../ads/readwrite/model/AdsMultiRequestItemRead.go |   220 +
 .../model/AdsMultiRequestItemReadWrite.go          |   248 +
 .../readwrite/model/AdsMultiRequestItemWrite.go    |   220 +
 .../ads/readwrite/model/AdsNotificationSample.go   |   213 +
 .../readwrite/model/AdsReadDeviceInfoRequest.go    |   139 +
 .../readwrite/model/AdsReadDeviceInfoResponse.go   |   298 +
 .../plc4go/ads/readwrite/model/AdsReadRequest.go   |   224 +
 .../plc4go/ads/readwrite/model/AdsReadResponse.go  |   230 +
 .../ads/readwrite/model/AdsReadStateRequest.go     |   139 +
 .../ads/readwrite/model/AdsReadStateResponse.go    |   223 +
 .../ads/readwrite/model/AdsReadWriteRequest.go     |   335 +
 .../ads/readwrite/model/AdsReadWriteResponse.go    |   230 +
 .../plc4go/ads/readwrite/model/AdsStampHeader.go   |   212 +
 .../plc4go/ads/readwrite/model/AdsStaticHelper.go} |    14 +-
 .../ads/readwrite/model/AdsWriteControlRequest.go  |   259 +
 .../ads/readwrite/model/AdsWriteControlResponse.go |   167 +
 .../plc4go/ads/readwrite/model/AdsWriteRequest.go  |   259 +
 .../readwrite/model/AdsWriteResponse.go}           |    97 +-
 .../plc4go/ads/readwrite/model/AmsNetId.go         |   272 +
 .../plc4go/ads/readwrite/model/AmsPacket.go        |   361 +
 .../readwrite/model/AmsSerialAcknowledgeFrame.go   |   272 +
 .../plc4go/ads/readwrite/model/AmsSerialFrame.go   |   297 +
 .../ads/readwrite/model/AmsSerialResetFrame.go     |   272 +
 .../plc4go/ads/readwrite/model/AmsTCPPacket.go     |   183 +
 .../plc4go/ads/readwrite/model/CommandId.go        |   153 +
 .../plc4go/ads/readwrite/model/DataItem.go         |   339 +
 .../ads/readwrite/model/ReservedIndexGroups.go     |   293 +
 .../plc4go/ads/readwrite/model/ReturnCode.go       |   937 +
 .../internal/plc4go/ads/readwrite/model/State.go   |   376 +
 .../plc4go/bacnetip/readwrite/ParserHelper.go      |   105 +-
 .../plc4go/bacnetip/readwrite/XmlParserHelper.go   |   185 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |   438 +-
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |   350 +-
 .../bacnetip/readwrite/model/APDUComplexAck.go     |   546 +-
 .../readwrite/model/APDUConfirmedRequest.go        |   708 +-
 .../plc4go/bacnetip/readwrite/model/APDUError.go   |   294 +-
 .../plc4go/bacnetip/readwrite/model/APDUReject.go  |   296 +-
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |   458 +-
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |   296 +-
 .../readwrite/model/APDUUnconfirmedRequest.go      |   240 +-
 .../bacnetip/readwrite/model/ApplicationTag.go     |   240 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      |   243 +-
 .../readwrite/model/BACnetConfirmedServiceACK.go   |   606 +-
 .../BACnetConfirmedServiceACKAtomicReadFile.go     |   132 +-
 .../BACnetConfirmedServiceACKAtomicWriteFile.go    |   132 +-
 ...tConfirmedServiceACKConfirmedPrivateTransfer.go |   132 +-
 .../model/BACnetConfirmedServiceACKCreateObject.go |   132 +-
 .../BACnetConfirmedServiceACKGetAlarmSummary.go    |   132 +-
 ...ACnetConfirmedServiceACKGetEnrollmentSummary.go |   132 +-
 ...BACnetConfirmedServiceACKGetEventInformation.go |   132 +-
 .../model/BACnetConfirmedServiceACKReadProperty.go |   132 +-
 ...ACnetConfirmedServiceACKReadPropertyMultiple.go |   132 +-
 .../model/BACnetConfirmedServiceACKReadRange.go    |   132 +-
 ...BACnetConfirmedServiceACKRemovedAuthenticate.go |   132 +-
 ...rmedServiceACKRemovedReadPropertyConditional.go |   132 +-
 .../model/BACnetConfirmedServiceACKVTData.go       |   132 +-
 .../model/BACnetConfirmedServiceACKVTOpen.go       |   132 +-
 .../model/BACnetConfirmedServiceRequest.go         |  1082 +-
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   132 +-
 .../BACnetConfirmedServiceRequestAddListElement.go |   132 +-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   132 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   132 +-
 ...firmedServiceRequestConfirmedCOVNotification.go |   853 +-
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   132 +-
 ...rmedServiceRequestConfirmedEventNotification.go |   132 +-
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   132 +-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   132 +-
 .../BACnetConfirmedServiceRequestCreateObject.go   |   132 +-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   132 +-
 ...rmedServiceRequestDeviceCommunicationControl.go |   132 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   132 +-
 ...etConfirmedServiceRequestGetEventInformation.go |   132 +-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   132 +-
 .../BACnetConfirmedServiceRequestReadProperty.go   |   461 +-
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   132 +-
 .../BACnetConfirmedServiceRequestReadRange.go      |   132 +-
 ...netConfirmedServiceRequestReinitializeDevice.go |   132 +-
 ...CnetConfirmedServiceRequestRemoveListElement.go |   132 +-
 ...etConfirmedServiceRequestRemovedAuthenticate.go |   132 +-
 ...ServiceRequestRemovedReadPropertyConditional.go |   132 +-
 ...CnetConfirmedServiceRequestRemovedRequestKey.go |   132 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |   671 +-
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   132 +-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   132 +-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   132 +-
 .../model/BACnetConfirmedServiceRequestVTData.go   |   132 +-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   132 +-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |   661 +-
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   132 +-
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |   606 +-
 .../readwrite/model/BACnetErrorAtomicReadFile.go   |   132 +-
 .../readwrite/model/BACnetErrorAtomicWriteFile.go  |   132 +-
 .../model/BACnetErrorConfirmedPrivateTransfer.go   |   132 +-
 .../readwrite/model/BACnetErrorCreateObject.go     |   132 +-
 .../readwrite/model/BACnetErrorGetAlarmSummary.go  |   132 +-
 .../model/BACnetErrorGetEnrollmentSummary.go       |   132 +-
 .../model/BACnetErrorGetEventInformation.go        |   132 +-
 .../readwrite/model/BACnetErrorReadProperty.go     |   495 +-
 .../model/BACnetErrorReadPropertyMultiple.go       |   132 +-
 .../readwrite/model/BACnetErrorReadRange.go        |   132 +-
 .../model/BACnetErrorRemovedAuthenticate.go        |   132 +-
 .../BACnetErrorRemovedReadPropertyConditional.go   |   132 +-
 .../bacnetip/readwrite/model/BACnetErrorVTData.go  |   132 +-
 .../bacnetip/readwrite/model/BACnetErrorVTOpen.go  |   132 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |   212 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |   366 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |   100 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |   884 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   606 +-
 .../model/BACnetServiceAckAtomicReadFile.go        |   132 +-
 .../model/BACnetServiceAckAtomicWriteFile.go       |   132 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   132 +-
 .../model/BACnetServiceAckCreateObject.go          |   132 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |   132 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   132 +-
 .../model/BACnetServiceAckGetEventInformation.go   |   132 +-
 .../model/BACnetServiceAckReadProperty.go          |   581 +-
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   132 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |   132 +-
 .../model/BACnetServiceAckRemovedAuthenticate.go   |   132 +-
 ...CnetServiceAckRemovedReadPropertyConditional.go |   132 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |   132 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   132 +-
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |   850 +-
 .../model/BACnetTagApplicationBitString.go         |   293 +-
 .../readwrite/model/BACnetTagApplicationBoolean.go |   140 +-
 .../model/BACnetTagApplicationCharacterString.go   |   140 +-
 .../readwrite/model/BACnetTagApplicationDate.go    |   140 +-
 .../readwrite/model/BACnetTagApplicationDouble.go  |   198 +-
 .../model/BACnetTagApplicationEnumerated.go        |   239 +-
 .../readwrite/model/BACnetTagApplicationNull.go    |   140 +-
 .../model/BACnetTagApplicationObjectIdentifier.go  |   140 +-
 .../model/BACnetTagApplicationOctetString.go       |   140 +-
 .../readwrite/model/BACnetTagApplicationReal.go    |   198 +-
 .../model/BACnetTagApplicationSignedInteger.go     |   239 +-
 .../readwrite/model/BACnetTagApplicationTime.go    |   140 +-
 .../model/BACnetTagApplicationUnsignedInteger.go   |   239 +-
 .../bacnetip/readwrite/model/BACnetTagContext.go   |   239 +-
 .../readwrite/model/BACnetTagWithContent.go        |   601 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |   550 +-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |   637 +-
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   132 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   132 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   132 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   132 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   132 +-
 ...edServiceRequestUnconfirmedEventNotification.go |   132 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |   479 +-
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   132 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |   529 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |   495 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   132 +-
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |   652 +-
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   132 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |   132 +-
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |   330 +-
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |   186 +-
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |   186 +-
 .../model/BVLCReadBroadcastDistributionTable.go    |   132 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |   132 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   132 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |   132 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   132 +-
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |   132 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   132 +-
 .../model/BVLCWideBroadcastDistributionTable.go    |   132 +-
 .../plc4go/bacnetip/readwrite/model/NLM.go         |   346 +-
 .../readwrite/model/NLMIAmRouterToNetwork.go       |   228 +-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |   228 +-
 .../plc4go/bacnetip/readwrite/model/NPDU.go        |  1149 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpBrowser.go |   365 +-
 .../internal/plc4go/knxnetip/KnxNetIpConnection.go |  2131 +-
 .../internal/plc4go/knxnetip/KnxNetIpDiscoverer.go |     4 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpField.go   |   562 +-
 .../plc4go/knxnetip/KnxNetIpFieldHandler.go        |   203 +-
 .../plc4go/knxnetip/KnxNetIpMessageCodec.go        |    48 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpReader.go  |   506 +-
 .../internal/plc4go/knxnetip/KnxNetIpSubscriber.go |   179 +-
 .../plc4go/knxnetip/KnxNetIpValueDecoder.go}       |    33 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpWriter.go  |     4 +-
 plc4go/internal/plc4go/knxnetip/Utils.go           |    56 +-
 .../plc4go/knxnetip/readwrite/ParserHelper.go      |   186 +-
 .../plc4go/knxnetip/readwrite/XmlParserHelper.go   |   465 +-
 .../plc4go/knxnetip/readwrite/model/AccessLevel.go |   177 +
 .../plc4go/knxnetip/readwrite/model/Apdu.go        |   362 +-
 .../plc4go/knxnetip/readwrite/model/ApduControl.go |   330 +-
 .../knxnetip/readwrite/model/ApduControlAck.go     |   132 +-
 .../knxnetip/readwrite/model/ApduControlConnect.go |   132 +-
 .../readwrite/model/ApduControlContainer.go        |   188 +-
 .../readwrite/model/ApduControlDisconnect.go       |   132 +-
 .../knxnetip/readwrite/model/ApduControlNack.go    |   132 +-
 .../plc4go/knxnetip/readwrite/model/ApduData.go    |   662 +-
 .../knxnetip/readwrite/model/ApduDataAdcRead.go    |   132 +-
 .../readwrite/model/ApduDataAdcResponse.go         |   132 +-
 .../knxnetip/readwrite/model/ApduDataContainer.go  |   188 +-
 .../model/ApduDataDeviceDescriptorRead.go          |   192 +-
 .../model/ApduDataDeviceDescriptorResponse.go      |   283 +-
 .../plc4go/knxnetip/readwrite/model/ApduDataExt.go |  1362 +-
 .../readwrite/model/ApduDataExtAuthorizeRequest.go |   209 +-
 .../model/ApduDataExtAuthorizeResponse.go          |   165 +-
 .../model/ApduDataExtDomainAddressRead.go          |   132 +-
 .../model/ApduDataExtDomainAddressResponse.go      |   132 +-
 .../model/ApduDataExtDomainAddressSelectiveRead.go |   132 +-
 .../ApduDataExtDomainAddressSerialNumberRead.go    |   132 +-
 ...ApduDataExtDomainAddressSerialNumberResponse.go |   132 +-
 .../ApduDataExtDomainAddressSerialNumberWrite.go   |   132 +-
 .../model/ApduDataExtDomainAddressWrite.go         |   132 +-
 .../model/ApduDataExtFileStreamInfoReport.go       |   132 +-
 .../ApduDataExtGroupPropertyValueInfoReport.go     |   132 +-
 .../model/ApduDataExtGroupPropertyValueRead.go     |   132 +-
 .../model/ApduDataExtGroupPropertyValueResponse.go |   132 +-
 .../model/ApduDataExtGroupPropertyValueWrite.go    |   132 +-
 ...ApduDataExtIndividualAddressSerialNumberRead.go |   132 +-
 ...DataExtIndividualAddressSerialNumberResponse.go |   132 +-
 ...pduDataExtIndividualAddressSerialNumberWrite.go |   132 +-
 .../readwrite/model/ApduDataExtKeyResponse.go      |   132 +-
 .../readwrite/model/ApduDataExtKeyWrite.go         |   132 +-
 .../readwrite/model/ApduDataExtLinkRead.go         |   132 +-
 .../readwrite/model/ApduDataExtLinkResponse.go     |   132 +-
 .../readwrite/model/ApduDataExtLinkWrite.go        |   132 +-
 .../readwrite/model/ApduDataExtMemoryBitWrite.go   |   132 +-
 .../model/ApduDataExtNetworkParameterRead.go       |   132 +-
 .../model/ApduDataExtNetworkParameterResponse.go   |   132 +-
 .../model/ApduDataExtNetworkParameterWrite.go      |   132 +-
 .../model/ApduDataExtOpenRoutingTableRequest.go    |   132 +-
 .../model/ApduDataExtPropertyDescriptionRead.go    |   221 +-
 .../ApduDataExtPropertyDescriptionResponse.go      |   407 +-
 .../model/ApduDataExtPropertyValueRead.go          |   354 +-
 .../model/ApduDataExtPropertyValueResponse.go      |   440 +-
 .../model/ApduDataExtPropertyValueWrite.go         |   293 +-
 .../model/ApduDataExtReadRouterMemoryRequest.go    |   132 +-
 .../model/ApduDataExtReadRouterMemoryResponse.go   |   132 +-
 .../model/ApduDataExtReadRouterStatusRequest.go    |   132 +-
 .../model/ApduDataExtReadRouterStatusResponse.go   |   132 +-
 .../model/ApduDataExtReadRoutingTableRequest.go    |   132 +-
 .../model/ApduDataExtReadRoutingTableResponse.go   |   132 +-
 .../model/ApduDataExtWriteRouterMemoryRequest.go   |   132 +-
 .../model/ApduDataExtWriteRouterStatusRequest.go   |   132 +-
 .../model/ApduDataExtWriteRoutingTableRequest.go   |   132 +-
 .../readwrite/model/ApduDataGroupValueRead.go      |   161 +-
 .../readwrite/model/ApduDataGroupValueResponse.go  |   216 +-
 .../readwrite/model/ApduDataGroupValueWrite.go     |   283 +-
 .../model/ApduDataIndividualAddressRead.go         |   132 +-
 .../model/ApduDataIndividualAddressResponse.go     |   132 +-
 .../model/ApduDataIndividualAddressWrite.go        |   132 +-
 .../knxnetip/readwrite/model/ApduDataMemoryRead.go |   246 +-
 .../readwrite/model/ApduDataMemoryResponse.go      |   308 +-
 .../readwrite/model/ApduDataMemoryWrite.go         |   132 +-
 .../knxnetip/readwrite/model/ApduDataOther.go      |   186 +-
 .../knxnetip/readwrite/model/ApduDataRestart.go    |   132 +-
 .../readwrite/model/ApduDataUserMessage.go         |   132 +-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |   858 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |   274 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |   498 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |   226 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |   114 +-
 .../knxnetip/readwrite/model/ChannelInformation.go |   207 +-
 .../knxnetip/readwrite/model/ComObjectTable.go     |   209 +
 .../readwrite/model/ComObjectTableAddresses.go     | 18858 ++++++++++++++++
 .../model/ComObjectTableRealisationType1.go        |   238 +
 .../model/ComObjectTableRealisationType2.go        |   238 +
 .../model/ComObjectTableRealisationType6.go        |   163 +
 .../knxnetip/readwrite/model/ComObjectValueType.go |   257 +
 .../knxnetip/readwrite/model/ConnectionRequest.go  |   294 +-
 .../model/ConnectionRequestInformation.go          |   308 +-
 ...ConnectionRequestInformationDeviceManagement.go |   132 +-
 ...ConnectionRequestInformationTunnelConnection.go |   240 +-
 .../knxnetip/readwrite/model/ConnectionResponse.go |   370 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |   308 +-
 .../ConnectionResponseDataBlockDeviceManagement.go |   132 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |   186 +-
 .../readwrite/model/ConnectionStateRequest.go      |   294 +-
 .../readwrite/model/ConnectionStateResponse.go     |   244 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |   650 +-
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |   285 +-
 .../knxnetip/readwrite/model/DescriptionRequest.go |   186 +-
 .../readwrite/model/DescriptionResponse.go         |   242 +-
 .../readwrite/model/DeviceConfigurationAck.go      |   186 +-
 .../model/DeviceConfigurationAckDataBlock.go       |   289 +-
 .../readwrite/model/DeviceConfigurationRequest.go  |   242 +-
 .../model/DeviceConfigurationRequestDataBlock.go   |   291 +-
 .../knxnetip/readwrite/model/DeviceDescriptor.go   |   537 +
 .../readwrite/model/DeviceDescriptorMediumType.go  |   142 +-
 .../readwrite/model/DeviceDescriptorType0.go       |   476 -
 .../readwrite/model/DeviceDescriptorType2.go       |   603 +-
 .../knxnetip/readwrite/model/DeviceStatus.go       |   211 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |   294 +-
 .../knxnetip/readwrite/model/DisconnectResponse.go |   244 +-
 .../knxnetip/readwrite/model/FirmwareType.go       |   313 +-
 .../model/GroupObjectDescriptorRealisationType1.go |   348 +
 .../model/GroupObjectDescriptorRealisationType2.go |   348 +
 .../model/GroupObjectDescriptorRealisationType6.go |   115 +
 .../model/GroupObjectDescriptorRealisationType7.go |   348 +
 .../model/GroupObjectDescriptorRealisationTypeB.go |   322 +
 .../readwrite/model/HPAIControlEndpoint.go         |   287 +-
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |   287 +-
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |   287 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |    86 +-
 .../plc4go/knxnetip/readwrite/model/IPAddress.go   |   198 +-
 .../plc4go/knxnetip/readwrite/model/KnxAddress.go  |   261 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       | 22389 +++++++++----------
 .../readwrite/model/KnxDatapointMainType.go        |  2183 +-
 .../knxnetip/readwrite/model/KnxDatapointType.go   | 12278 +++++-----
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |   273 +-
 .../readwrite/model/KnxGroupAddress2Level.go       |   246 +-
 .../readwrite/model/KnxGroupAddress3Level.go       |   300 +-
 .../readwrite/model/KnxGroupAddressFreeLevel.go    |   192 +-
 .../readwrite/model/KnxInterfaceObjectProperty.go  |  9183 ++++----
 .../readwrite/model/KnxInterfaceObjectType.go      |   785 +-
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |   100 +-
 .../knxnetip/readwrite/model/KnxManufacturer.go    | 15149 +++++++------
 .../plc4go/knxnetip/readwrite/model/KnxMedium.go   |   142 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |   192 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |   192 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |   766 +-
 .../knxnetip/readwrite/model/KnxNetIpRouting.go    |     2 +
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |   192 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |   192 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |   192 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |   192 +-
 .../plc4go/knxnetip/readwrite/model/KnxProperty.go |  2787 +--
 .../readwrite/model/KnxPropertyDataType.go         |  1848 +-
 .../plc4go/knxnetip/readwrite/model/LBusmonInd.go  |   396 +-
 .../plc4go/knxnetip/readwrite/model/LDataCon.go    |   342 +-
 .../knxnetip/readwrite/model/LDataExtended.go      |   535 +-
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |   589 +-
 .../knxnetip/readwrite/model/LDataFrameACK.go      |   144 +-
 .../plc4go/knxnetip/readwrite/model/LDataInd.go    |   342 +-
 .../plc4go/knxnetip/readwrite/model/LDataReq.go    |   342 +-
 .../plc4go/knxnetip/readwrite/model/LPollData.go   |   395 +-
 .../knxnetip/readwrite/model/LPollDataCon.go       |   132 +-
 .../knxnetip/readwrite/model/LPollDataReq.go       |   132 +-
 .../plc4go/knxnetip/readwrite/model/LRawCon.go     |   132 +-
 .../plc4go/knxnetip/readwrite/model/LRawInd.go     |   132 +-
 .../plc4go/knxnetip/readwrite/model/LRawReq.go     |   132 +-
 .../plc4go/knxnetip/readwrite/model/MACAddress.go  |   198 +-
 .../readwrite/model/MFuncPropCommandReq.go         |   132 +-
 .../knxnetip/readwrite/model/MFuncPropCon.go       |   132 +-
 .../readwrite/model/MFuncPropStateReadReq.go       |   132 +-
 .../knxnetip/readwrite/model/MPropInfoInd.go       |   132 +-
 .../knxnetip/readwrite/model/MPropReadCon.go       |   462 +-
 .../knxnetip/readwrite/model/MPropReadReq.go       |   408 +-
 .../knxnetip/readwrite/model/MPropWriteCon.go      |   132 +-
 .../knxnetip/readwrite/model/MPropWriteReq.go      |   132 +-
 .../plc4go/knxnetip/readwrite/model/MResetInd.go   |   132 +-
 .../plc4go/knxnetip/readwrite/model/MResetReq.go   |   132 +-
 .../model/ProjectInstallationIdentifier.go         |   207 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |   157 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |   132 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |   186 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |   294 +-
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |     7 +-
 .../plc4go/knxnetip/readwrite/model/Status.go      |   226 +-
 .../readwrite/model/SupportedPhysicalMedia.go      |   673 +-
 .../knxnetip/readwrite/model/TDataConnectedInd.go  |   132 +-
 .../knxnetip/readwrite/model/TDataConnectedReq.go  |   132 +-
 .../knxnetip/readwrite/model/TDataIndividualInd.go |   132 +-
 .../knxnetip/readwrite/model/TDataIndividualReq.go |   132 +-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |   242 +-
 .../readwrite/model/TunnelingRequestDataBlock.go   |   291 +-
 .../knxnetip/readwrite/model/TunnelingResponse.go  |   186 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |   289 +-
 .../knxnetip/readwrite/model/UnknownMessage.go     |   229 +-
 plc4go/internal/plc4go/modbus/ModbusConnection.go  |    10 +
 plc4go/internal/plc4go/modbus/ModbusField.go       |    17 +
 .../plc4go/modbus/readwrite/ParserHelper.go        |    73 +-
 .../plc4go/modbus/readwrite/XmlParserHelper.go     |   129 +-
 .../plc4go/modbus/readwrite/model/DataItem.go      |   138 +-
 .../modbus/readwrite/model/ModbusConstants.go      |   145 +-
 .../modbus/readwrite/model/ModbusDataType.go       |     2 +
 .../modbus/readwrite/model/ModbusErrorCode.go      |   198 +-
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |  1337 +-
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |   250 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |   250 +-
 .../modbus/readwrite/model/ModbusPDUError.go       |   196 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |   136 +-
 .../model/ModbusPDUGetComEventCounterResponse.go   |   250 +-
 .../model/ModbusPDUGetComEventLogRequest.go        |   136 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |   425 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |   304 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |   304 +-
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |   250 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |   263 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   136 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   136 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |   250 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |   263 +-
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   136 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |   196 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |   196 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |   288 +-
 .../model/ModbusPDUReadFileRecordRequest.go        |   280 +-
 .../model/ModbusPDUReadFileRecordRequestItem.go    |   311 +-
 .../model/ModbusPDUReadFileRecordResponse.go       |   280 +-
 .../model/ModbusPDUReadFileRecordResponseItem.go   |   282 +-
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |   250 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |   263 +-
 .../model/ModbusPDUReadInputRegistersRequest.go    |   250 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |   263 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |   479 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |   263 +-
 .../model/ModbusPDUReportServerIdRequest.go        |   136 +-
 .../model/ModbusPDUReportServerIdResponse.go       |   263 +-
 .../model/ModbusPDUWriteFileRecordRequest.go       |   280 +-
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |   382 +-
 .../model/ModbusPDUWriteFileRecordResponse.go      |   280 +-
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |   382 +-
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |   371 +-
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |   250 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |   371 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |   250 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |   250 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |   250 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |   250 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |   250 +-
 .../modbus/readwrite/model/ModbusSerialADU.go      |   359 +-
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |   325 +-
 .../internal/plc4go/s7/readwrite/ParserHelper.go   |   123 +-
 .../plc4go/s7/readwrite/XmlParserHelper.go         |   213 +-
 .../plc4go/s7/readwrite/model/COTPPacket.go        |   594 +-
 .../readwrite/model/COTPPacketConnectionRequest.go |   302 +-
 .../model/COTPPacketConnectionResponse.go          |   302 +-
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |   248 +-
 .../readwrite/model/COTPPacketDisconnectRequest.go |   302 +-
 .../model/COTPPacketDisconnectResponse.go          |   248 +-
 .../s7/readwrite/model/COTPPacketTpduError.go      |   248 +-
 .../plc4go/s7/readwrite/model/COTPParameter.go     |   380 +-
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |   192 +-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |   192 +-
 .../s7/readwrite/model/COTPParameterChecksum.go    |   192 +-
 ...COTPParameterDisconnectAdditionalInformation.go |   224 +-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |   192 +-
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |   128 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |   219 +-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |   943 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |   142 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |   219 +-
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |   100 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |   261 +-
 .../plc4go/s7/readwrite/model/S7Address.go         |   246 +-
 .../plc4go/s7/readwrite/model/S7AddressAny.go      |   512 +-
 .../plc4go/s7/readwrite/model/S7Message.go         |   666 +-
 .../plc4go/s7/readwrite/model/S7MessageRequest.go  |   138 +-
 .../plc4go/s7/readwrite/model/S7MessageResponse.go |   250 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |   250 +-
 .../plc4go/s7/readwrite/model/S7MessageUserData.go |   138 +-
 .../plc4go/s7/readwrite/model/S7Parameter.go       |   384 +-
 .../readwrite/model/S7ParameterReadVarRequest.go   |   264 +-
 .../readwrite/model/S7ParameterReadVarResponse.go  |   194 +-
 .../model/S7ParameterSetupCommunication.go         |   352 +-
 .../s7/readwrite/model/S7ParameterUserData.go      |   264 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |   246 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |   654 +-
 .../readwrite/model/S7ParameterWriteVarRequest.go  |   264 +-
 .../readwrite/model/S7ParameterWriteVarResponse.go |   194 +-
 .../plc4go/s7/readwrite/model/S7Payload.go         |   303 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |   240 +-
 .../plc4go/s7/readwrite/model/S7PayloadUserData.go |   234 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |   475 +-
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   140 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |   300 +-
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |   240 +-
 .../readwrite/model/S7PayloadWriteVarResponse.go   |   230 +-
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |   368 +-
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |   157 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |   246 +-
 .../model/S7VarRequestParameterItemAddress.go      |   220 +-
 .../plc4go/s7/readwrite/model/SzlDataTreeItem.go   |   378 +-
 plc4go/internal/plc4go/s7/readwrite/model/SzlId.go |   261 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |   114 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |   324 +-
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |   275 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  2568 ++-
 .../plc4go/spi/errors/TimeoutError.go}             |    14 +-
 .../plc4go/spi/model/DefaultPlcReadRequest.go      |    13 +-
 .../spi/model/DefaultPlcSubscriptionRequest.go     |    29 +-
 .../plc4go/spi/model/DefaultPlcWriteRequest.go     |    25 +-
 .../plc4go/spi/testutils/DriverTestRunner.go       |   125 +-
 plc4go/internal/plc4go/spi/testutils/TestUtils.go  |    10 +-
 plc4go/internal/plc4go/spi/utils/CastUtils.go      |    25 +
 plc4go/internal/plc4go/spi/utils/ReadBuffer.go     |    53 +-
 plc4go/internal/plc4go/spi/utils/WriteBuffer.go    |     5 +
 plc4go/internal/plc4go/spi/values/BINT.go          |   145 +
 plc4go/internal/plc4go/spi/values/BREAL.go         |   173 +
 plc4go/internal/plc4go/spi/values/PlcBitString.go  |     9 +-
 plc4go/internal/plc4go/spi/values/PlcList.go       |     2 +-
 plc4go/internal/plc4go/spi/values/PlcStruct.go     |     2 +-
 .../internal/plc4go/spi/values/PlcValueAdapter.go  |     9 +-
 plc4go/internal/plc4go/spi/values/RawPlcValue.go   |    91 +
 plc4go/pkg/plc4go/connection.go                    |     2 +
 plc4go/pkg/plc4go/drivers/drivers.go               |     9 +
 plc4go/pkg/plc4go/model/plc_browse.go              |     6 +-
 plc4go/pkg/plc4go/model/plc_field.go               |     1 +
 plc4go/pkg/plc4go/model/plc_read.go                |     3 +-
 plc4go/pkg/plc4go/model/plc_response_code.go       |     3 +-
 plc4go/pkg/plc4go/model/plc_subscription.go        |     9 +-
 plc4go/pkg/plc4go/model/plc_write.go               |     3 +-
 plc4go/pkg/plc4go/values/plc_value.go              |    15 +
 plc4go/pom.xml                                     |   136 +-
 .../readwrite/context/FirmataDriverContext.java    |    11 +-
 .../readwrite/protocol/FirmataProtocolLogic.java   |     5 +-
 .../hello-world-plc4x-subscription/pom.xml         |     5 -
 .../subscription/HelloPlc4xSubscription.java       |    13 +-
 plc4j/tools/connection-cache/pom.xml               |     6 +-
 .../plc4x/test/mapper/TestSuiteMappingModule.java  |    44 +-
 pom.xml                                            |     3 -
 .../ads/src/main/resources/protocols/ads/ads.mspec |   124 +-
 .../resources/protocols/ads/DriverTestsuite.xml    |    14 +-
 .../protocols/canopen/CANOpenDriverSDOIT.xml       |    16 +-
 protocols/knxnetip/pom.xml                         |    19 +
 .../plc4x/protocol/knxnetip/KnxNetIpProtocol.java  |    10 +-
 .../resources/protocols/knxnetip/device-info.mspec |  1745 ++
 .../resources/protocols/knxnetip/knxnetip.mspec    |   284 +-
 protocols/knxnetip/src/main/xslt/knx-types.xsl     |    79 +-
 .../protocol/knxnetip/KnxDefinitionsGenerator.java |   141 +
 .../knxnetip/KnxSpecificationStoreUpdater.java     |   184 +
 .../knxnetip/handlers/ManufacturerIdsHandler.java  |    57 +
 .../handlers/ProductDescriptionHandler.java        |    64 +
 .../resources/protocols/modbus/DriverTestsuite.xml |     8 +-
 protocols/plc4x/pom.xml                            |    43 +
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |     0
 .../src/main/resources/protocols/plc4x/plc4x.mspec |    37 +-
 protocols/pom.xml                                  |     1 +
 .../s7/src/main/resources/protocols/s7/s7.mspec    |    52 +-
 .../resources/protocols/s7/DriverTestsuite.xml     |     8 +-
 .../plc4c/generated-sources/modbus/src/data_item.c |     2 +-
 .../modbus/src/modbus_constants.c                  |     1 -
 .../generated-sources/modbus/src/modbus_pdu.c      |    12 +-
 .../generated-sources/modbus/src/modbus_tcp_adu.c  |     1 -
 .../plc4c/generated-sources/s7/src/cotp_packet.c   |     6 +-
 .../generated-sources/s7/src/cotp_parameter.c      |     6 +-
 sandbox/plc4c/generated-sources/s7/src/data_item.c |     2 +-
 .../plc4c/generated-sources/s7/src/s7_address.c    |     6 +-
 .../plc4c/generated-sources/s7/src/s7_message.c    |     7 +-
 .../plc4c/generated-sources/s7/src/s7_parameter.c  |     6 +-
 .../s7/src/s7_parameter_user_data_item.c           |     6 +-
 .../s7/src/s7_payload_user_data_item.c             |     1 -
 .../s7/src/s7_var_request_parameter_item.c         |     6 +-
 .../plc4c/generated-sources/s7/src/tpkt_packet.c   |     1 -
 src/site/asciidoc/users/adopters.adoc              |     2 +
 .../asciidoc/users/integrations/apache-kafka.adoc  |     4 +-
 .../companies/logo-lebbing-automation-drives.png   |   Bin 0 -> 13626 bytes
 600 files changed, 126396 insertions(+), 88758 deletions(-)
 copy {plc4go => build-utils/language-go/src/test/resources/plc4go}/go.mod (89%)
 rename build-utils/language-go/src/test/resources/{integration-test => plc4go}/pom.xml (81%)
 create mode 100644 plc4go/Makefile
 copy {protocols/ads/src/test/resources => plc4go/assets/testing}/protocols/ads/AdsDiscoverySerializerTest.xml (100%)
 copy {protocols/ads/src/test/resources => plc4go/assets/testing}/protocols/ads/DriverTestsuite.xml (99%)
 copy {protocols/ads/src/test/resources => plc4go/assets/testing}/protocols/ads/ParserSerializerTestsuite.xml (100%)
 delete mode 100644 plc4go/cmd/main/drivers/knxnetip_test.go
 delete mode 100644 plc4go/cmd/main/drivers/modbus_test.go
 copy plc4go/cmd/main/drivers/tests/{modbus_driver_test.go => ads_driver_test.go} (73%)
 copy plc4go/cmd/main/drivers/tests/{modbus_parser_serializer_test.go => ads_parser_serializer_test.go} (76%)
 delete mode 100644 plc4go/cmd/main/drivers/tests/knx_discovery_test.go
 copy plc4go/cmd/main/drivers/tests/{modbus_driver_test.go => s7_driver_test.go} (73%)
 copy plc4go/cmd/main/drivers/tests/{modbus_parser_serializer_test.go => s7_parser_serializer_test.go} (76%)
 delete mode 100644 plc4go/examples/discovery/hello_world_plc4go_knx_discovery.go
 create mode 100644 plc4go/examples/knx/discovery/hello_world_plc4go_knx_discovery.go
 copy plc4go/examples/{read/hello_world_plc4go_read.go => knx/groupAddressRead/hello_world_plc4go_knx_read_group_address.go} (63%)
 create mode 100644 plc4go/examples/knx/subscribe/hello_world_plc4go_knx_subscription.go
 copy plc4go/{pkg/plc4go/drivers/drivers.go => internal/plc4go/ads/AdsDriver.go} (66%)
 copy plc4go/{cmd/main/drivers/tests/modbus_driver_test.go => internal/plc4go/ads/AdsFieldHandler.go} (66%)
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/ParserHelper.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/XmlParserHelper.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsDataType.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
 copy plc4go/internal/plc4go/{knxnetip/readwrite/model/KnxNetIpRouting.go => ads/readwrite/model/AdsInvalidRequest.go} (50%)
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItem.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemRead.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemReadWrite.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsMultiRequestItemWrite.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsNotificationSample.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsStampHeader.go
 copy plc4go/{pkg/plc4go/model/plc_field.go => internal/plc4go/ads/readwrite/model/AdsStaticHelper.go} (67%)
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
 copy plc4go/internal/plc4go/{knxnetip/readwrite/model/KnxNetIpRouting.go => ads/readwrite/model/AdsWriteResponse.go} (51%)
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AmsNetId.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AmsPacket.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AmsSerialAcknowledgeFrame.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AmsSerialFrame.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AmsSerialResetFrame.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/AmsTCPPacket.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/CommandId.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/DataItem.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/ReservedIndexGroups.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/ReturnCode.go
 create mode 100644 plc4go/internal/plc4go/ads/readwrite/model/State.go
 rename plc4go/{cmd/main/drivers/bacnetip_test.go => internal/plc4go/knxnetip/KnxNetIpValueDecoder.go} (62%)
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/AccessLevel.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableAddresses.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectValueType.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
 delete mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptorType0.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType1.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType2.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType6.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationType7.go
 create mode 100644 plc4go/internal/plc4go/knxnetip/readwrite/model/GroupObjectDescriptorRealisationTypeB.go
 copy plc4go/{pkg/plc4go/model/plc_field.go => internal/plc4go/spi/errors/TimeoutError.go} (82%)
 create mode 100644 plc4go/internal/plc4go/spi/values/BINT.go
 create mode 100644 plc4go/internal/plc4go/spi/values/BREAL.go
 create mode 100644 plc4go/internal/plc4go/spi/values/RawPlcValue.go
 create mode 100644 protocols/knxnetip/src/main/resources/protocols/knxnetip/device-info.mspec
 create mode 100644 protocols/knxnetip/src/test/java/org/apache/plc4x/protocol/knxnetip/KnxDefinitionsGenerator.java
 create mode 100644 protocols/knxnetip/src/test/java/org/apache/plc4x/protocol/knxnetip/KnxSpecificationStoreUpdater.java
 create mode 100644 protocols/knxnetip/src/test/java/org/apache/plc4x/protocol/knxnetip/handlers/ManufacturerIdsHandler.java
 create mode 100644 protocols/knxnetip/src/test/java/org/apache/plc4x/protocol/knxnetip/handlers/ProductDescriptionHandler.java
 create mode 100644 protocols/plc4x/pom.xml
 copy protocols/{s7 => plc4x}/src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol (100%)
 copy plc4go/pkg/plc4go/drivers/drivers.go => protocols/plc4x/src/main/resources/protocols/plc4x/plc4x.mspec (55%)
 create mode 100644 src/site/resources/images/users/companies/logo-lebbing-automation-drives.png


[plc4x] 01/02: Merge branch 'develop' into feature/string_enum_mspec

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hutcheb pushed a commit to branch feature/string_enum_mspec
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 5857e91b2d2d09002c128b2429378ec5a7c8000e
Merge: 1431989 4b41850
Author: hutcheb <be...@gmail.com>
AuthorDate: Mon Mar 15 05:29:37 2021 -0400

    Merge branch 'develop' into feature/string_enum_mspec

 .editorconfig                                      |     6 +
 .../BaseFreemarkerLanguageTemplateHelper.java      |     1 -
 .../resources/templates/c/data-io-template-c.ftlh  |     2 +-
 .../resources/templates/c/pojo-template-c.ftlh     |    14 +-
 .../language/go/GoLanguageTemplateHelper.java      |    65 +-
 .../resources/templates/go/data-io-template.ftlh   |   312 +-
 .../main/resources/templates/go/enum-template.ftlh |   118 +-
 .../resources/templates/go/model-template.ftlh     |  1149 +-
 .../templates/go/parser-factory-template.ftlh      |    47 +-
 .../templates/go/xml-parser-factory-template.ftlh  |    33 +-
 .../language/java/JavaLanguageTemplateHelper.java  |   146 +-
 .../resources/templates/java/pojo-template.ftlh    |     4 +
 plc4go/Makefile                                    |    95 +
 .../protocols/ads/AdsDiscoverySerializerTest.xml   |   377 +
 .../testing}/protocols/ads/DriverTestsuite.xml     |    14 +-
 .../protocols/ads/ParserSerializerTestsuite.xml    |   414 +
 .../testing/protocols/modbus/DriverTestsuite.xml   |     8 +-
 .../testing/protocols/s7/DriverTestsuite.xml       |     8 +-
 plc4go/cmd/main/drivers/knxnetip_test.go           |   525 -
 plc4go/cmd/main/drivers/modbus_test.go             |   213 -
 .../{modbus_driver_test.go => ads_driver_test.go}  |    13 +-
 ...lizer_test.go => ads_parser_serializer_test.go} |    11 +-
 .../cmd/main/drivers/tests/knx_discovery_test.go   |   613 -
 .../cmd/main/drivers/tests/modbus_driver_test.go   |    10 +-
 .../drivers/tests/modbus_parser_serializer_test.go |     8 +-
 .../{modbus_driver_test.go => s7_driver_test.go}   |    13 +-
 ...alizer_test.go => s7_parser_serializer_test.go} |    11 +-
 .../discovery/hello_world_plc4go_knx_discovery.go  |    99 -
 .../discovery/hello_world_plc4go_knx_discovery.go  |   165 +
 .../hello_world_plc4go_knx_read_group_address.go}  |    35 +-
 .../hello_world_plc4go_knx_subscription.go         |   114 +
 plc4go/examples/read/hello_world_plc4go_read.go    |    10 +-
 plc4go/examples/write/hello_world_plc4go_write.go  |    10 +-
 plc4go/go.mod                                      |     4 +-
 plc4go/go.sum                                      |    21 +-
 .../plc4go/ads/AdsDriver.go}                       |    28 +-
 .../plc4go/ads/AdsFieldHandler.go}                 |    22 +-
 .../internal/plc4go/ads/readwrite/ParserHelper.go  |    67 +
 .../plc4go/ads/readwrite/XmlParserHelper.go        |   113 +
 .../model/AdsAddDeviceNotificationRequest.go       |   335 +
 .../model/AdsAddDeviceNotificationResponse.go      |   195 +
 .../internal/plc4go/ads/readwrite/model/AdsData.go |   448 +
 .../plc4go/ads/readwrite/model/AdsDataType.go      |   702 +
 .../model/AdsDeleteDeviceNotificationRequest.go    |   168 +
 .../model/AdsDeleteDeviceNotificationResponse.go   |   167 +
 .../model/AdsDeviceNotificationRequest.go          |   242 +
 .../model/AdsDeviceNotificationResponse.go         |   139 +
 .../readwrite/model/AdsInvalidRequest.go}          |    91 +-
 .../ads/readwrite/model/AdsInvalidResponse.go      |   139 +
 .../ads/readwrite/model/AdsMultiRequestItem.go     |   209 +
 .../ads/readwrite/model/AdsMultiRequestItemRead.go |   220 +
 .../model/AdsMultiRequestItemReadWrite.go          |   248 +
 .../readwrite/model/AdsMultiRequestItemWrite.go    |   220 +
 .../ads/readwrite/model/AdsNotificationSample.go   |   213 +
 .../readwrite/model/AdsReadDeviceInfoRequest.go    |   139 +
 .../readwrite/model/AdsReadDeviceInfoResponse.go   |   298 +
 .../plc4go/ads/readwrite/model/AdsReadRequest.go   |   224 +
 .../plc4go/ads/readwrite/model/AdsReadResponse.go  |   230 +
 .../ads/readwrite/model/AdsReadStateRequest.go     |   139 +
 .../ads/readwrite/model/AdsReadStateResponse.go    |   223 +
 .../ads/readwrite/model/AdsReadWriteRequest.go     |   335 +
 .../ads/readwrite/model/AdsReadWriteResponse.go    |   230 +
 .../plc4go/ads/readwrite/model/AdsStampHeader.go   |   212 +
 .../plc4go/ads/readwrite/model/AdsStaticHelper.go} |    14 +-
 .../ads/readwrite/model/AdsWriteControlRequest.go  |   259 +
 .../ads/readwrite/model/AdsWriteControlResponse.go |   167 +
 .../plc4go/ads/readwrite/model/AdsWriteRequest.go  |   259 +
 .../readwrite/model/AdsWriteResponse.go}           |    97 +-
 .../plc4go/ads/readwrite/model/AmsNetId.go         |   272 +
 .../plc4go/ads/readwrite/model/AmsPacket.go        |   361 +
 .../readwrite/model/AmsSerialAcknowledgeFrame.go   |   272 +
 .../plc4go/ads/readwrite/model/AmsSerialFrame.go   |   297 +
 .../ads/readwrite/model/AmsSerialResetFrame.go     |   272 +
 .../plc4go/ads/readwrite/model/AmsTCPPacket.go     |   183 +
 .../plc4go/ads/readwrite/model/CommandId.go        |   153 +
 .../plc4go/ads/readwrite/model/DataItem.go         |   339 +
 .../ads/readwrite/model/ReservedIndexGroups.go     |   293 +
 .../plc4go/ads/readwrite/model/ReturnCode.go       |   937 +
 .../internal/plc4go/ads/readwrite/model/State.go   |   376 +
 .../plc4go/bacnetip/readwrite/ParserHelper.go      |   105 +-
 .../plc4go/bacnetip/readwrite/XmlParserHelper.go   |   185 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |   437 +-
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |   350 +-
 .../bacnetip/readwrite/model/APDUComplexAck.go     |   546 +-
 .../readwrite/model/APDUConfirmedRequest.go        |   708 +-
 .../plc4go/bacnetip/readwrite/model/APDUError.go   |   294 +-
 .../plc4go/bacnetip/readwrite/model/APDUReject.go  |   296 +-
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |   458 +-
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |   296 +-
 .../readwrite/model/APDUUnconfirmedRequest.go      |   240 +-
 .../bacnetip/readwrite/model/ApplicationTag.go     |   240 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      |   243 +-
 .../readwrite/model/BACnetConfirmedServiceACK.go   |   605 +-
 .../BACnetConfirmedServiceACKAtomicReadFile.go     |   132 +-
 .../BACnetConfirmedServiceACKAtomicWriteFile.go    |   132 +-
 ...tConfirmedServiceACKConfirmedPrivateTransfer.go |   132 +-
 .../model/BACnetConfirmedServiceACKCreateObject.go |   132 +-
 .../BACnetConfirmedServiceACKGetAlarmSummary.go    |   132 +-
 ...ACnetConfirmedServiceACKGetEnrollmentSummary.go |   132 +-
 ...BACnetConfirmedServiceACKGetEventInformation.go |   132 +-
 .../model/BACnetConfirmedServiceACKReadProperty.go |   132 +-
 ...ACnetConfirmedServiceACKReadPropertyMultiple.go |   132 +-
 .../model/BACnetConfirmedServiceACKReadRange.go    |   132 +-
 ...BACnetConfirmedServiceACKRemovedAuthenticate.go |   132 +-
 ...rmedServiceACKRemovedReadPropertyConditional.go |   132 +-
 .../model/BACnetConfirmedServiceACKVTData.go       |   132 +-
 .../model/BACnetConfirmedServiceACKVTOpen.go       |   132 +-
 .../model/BACnetConfirmedServiceRequest.go         |  1081 +-
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   132 +-
 .../BACnetConfirmedServiceRequestAddListElement.go |   132 +-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   132 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   132 +-
 ...firmedServiceRequestConfirmedCOVNotification.go |   853 +-
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   132 +-
 ...rmedServiceRequestConfirmedEventNotification.go |   132 +-
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   132 +-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   132 +-
 .../BACnetConfirmedServiceRequestCreateObject.go   |   132 +-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   132 +-
 ...rmedServiceRequestDeviceCommunicationControl.go |   132 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   132 +-
 ...etConfirmedServiceRequestGetEventInformation.go |   132 +-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   132 +-
 .../BACnetConfirmedServiceRequestReadProperty.go   |   461 +-
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   132 +-
 .../BACnetConfirmedServiceRequestReadRange.go      |   132 +-
 ...netConfirmedServiceRequestReinitializeDevice.go |   132 +-
 ...CnetConfirmedServiceRequestRemoveListElement.go |   132 +-
 ...etConfirmedServiceRequestRemovedAuthenticate.go |   132 +-
 ...ServiceRequestRemovedReadPropertyConditional.go |   132 +-
 ...CnetConfirmedServiceRequestRemovedRequestKey.go |   132 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |   671 +-
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   132 +-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   132 +-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   132 +-
 .../model/BACnetConfirmedServiceRequestVTData.go   |   132 +-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   132 +-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |   661 +-
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   132 +-
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |   605 +-
 .../readwrite/model/BACnetErrorAtomicReadFile.go   |   132 +-
 .../readwrite/model/BACnetErrorAtomicWriteFile.go  |   132 +-
 .../model/BACnetErrorConfirmedPrivateTransfer.go   |   132 +-
 .../readwrite/model/BACnetErrorCreateObject.go     |   132 +-
 .../readwrite/model/BACnetErrorGetAlarmSummary.go  |   132 +-
 .../model/BACnetErrorGetEnrollmentSummary.go       |   132 +-
 .../model/BACnetErrorGetEventInformation.go        |   132 +-
 .../readwrite/model/BACnetErrorReadProperty.go     |   495 +-
 .../model/BACnetErrorReadPropertyMultiple.go       |   132 +-
 .../readwrite/model/BACnetErrorReadRange.go        |   132 +-
 .../model/BACnetErrorRemovedAuthenticate.go        |   132 +-
 .../BACnetErrorRemovedReadPropertyConditional.go   |   132 +-
 .../bacnetip/readwrite/model/BACnetErrorVTData.go  |   132 +-
 .../bacnetip/readwrite/model/BACnetErrorVTOpen.go  |   132 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |   212 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |   366 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |   100 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |   884 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   605 +-
 .../model/BACnetServiceAckAtomicReadFile.go        |   132 +-
 .../model/BACnetServiceAckAtomicWriteFile.go       |   132 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   132 +-
 .../model/BACnetServiceAckCreateObject.go          |   132 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |   132 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   132 +-
 .../model/BACnetServiceAckGetEventInformation.go   |   132 +-
 .../model/BACnetServiceAckReadProperty.go          |   581 +-
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   132 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |   132 +-
 .../model/BACnetServiceAckRemovedAuthenticate.go   |   132 +-
 ...CnetServiceAckRemovedReadPropertyConditional.go |   132 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |   132 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   132 +-
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |   849 +-
 .../model/BACnetTagApplicationBitString.go         |   293 +-
 .../readwrite/model/BACnetTagApplicationBoolean.go |   140 +-
 .../model/BACnetTagApplicationCharacterString.go   |   140 +-
 .../readwrite/model/BACnetTagApplicationDate.go    |   140 +-
 .../readwrite/model/BACnetTagApplicationDouble.go  |   198 +-
 .../model/BACnetTagApplicationEnumerated.go        |   239 +-
 .../readwrite/model/BACnetTagApplicationNull.go    |   140 +-
 .../model/BACnetTagApplicationObjectIdentifier.go  |   140 +-
 .../model/BACnetTagApplicationOctetString.go       |   140 +-
 .../readwrite/model/BACnetTagApplicationReal.go    |   198 +-
 .../model/BACnetTagApplicationSignedInteger.go     |   239 +-
 .../readwrite/model/BACnetTagApplicationTime.go    |   140 +-
 .../model/BACnetTagApplicationUnsignedInteger.go   |   239 +-
 .../bacnetip/readwrite/model/BACnetTagContext.go   |   239 +-
 .../readwrite/model/BACnetTagWithContent.go        |   601 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |   549 +-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |   637 +-
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   132 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   132 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   132 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   132 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   132 +-
 ...edServiceRequestUnconfirmedEventNotification.go |   132 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |   479 +-
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   132 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |   529 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |   495 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   132 +-
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |   651 +-
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   132 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |   132 +-
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |   330 +-
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |   186 +-
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |   186 +-
 .../model/BVLCReadBroadcastDistributionTable.go    |   132 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |   132 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   132 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |   132 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   132 +-
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |   132 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   132 +-
 .../model/BVLCWideBroadcastDistributionTable.go    |   132 +-
 .../plc4go/bacnetip/readwrite/model/NLM.go         |   345 +-
 .../readwrite/model/NLMIAmRouterToNetwork.go       |   228 +-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |   228 +-
 .../plc4go/bacnetip/readwrite/model/NPDU.go        |  1149 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpBrowser.go |   365 +-
 .../internal/plc4go/knxnetip/KnxNetIpConnection.go |  2131 +-
 .../internal/plc4go/knxnetip/KnxNetIpDiscoverer.go |     4 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpField.go   |   562 +-
 .../plc4go/knxnetip/KnxNetIpFieldHandler.go        |   203 +-
 .../plc4go/knxnetip/KnxNetIpMessageCodec.go        |    48 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpReader.go  |   506 +-
 .../internal/plc4go/knxnetip/KnxNetIpSubscriber.go |   179 +-
 .../plc4go/knxnetip/KnxNetIpValueDecoder.go}       |    33 +-
 plc4go/internal/plc4go/knxnetip/KnxNetIpWriter.go  |     4 +-
 plc4go/internal/plc4go/knxnetip/Utils.go           |    56 +-
 .../plc4go/knxnetip/readwrite/ParserHelper.go      |   186 +-
 .../plc4go/knxnetip/readwrite/XmlParserHelper.go   |   465 +-
 .../plc4go/knxnetip/readwrite/model/AccessLevel.go |   177 +
 .../plc4go/knxnetip/readwrite/model/Apdu.go        |   361 +-
 .../plc4go/knxnetip/readwrite/model/ApduControl.go |   329 +-
 .../knxnetip/readwrite/model/ApduControlAck.go     |   132 +-
 .../knxnetip/readwrite/model/ApduControlConnect.go |   132 +-
 .../readwrite/model/ApduControlContainer.go        |   188 +-
 .../readwrite/model/ApduControlDisconnect.go       |   132 +-
 .../knxnetip/readwrite/model/ApduControlNack.go    |   132 +-
 .../plc4go/knxnetip/readwrite/model/ApduData.go    |   661 +-
 .../knxnetip/readwrite/model/ApduDataAdcRead.go    |   132 +-
 .../readwrite/model/ApduDataAdcResponse.go         |   132 +-
 .../knxnetip/readwrite/model/ApduDataContainer.go  |   188 +-
 .../model/ApduDataDeviceDescriptorRead.go          |   192 +-
 .../model/ApduDataDeviceDescriptorResponse.go      |   283 +-
 .../plc4go/knxnetip/readwrite/model/ApduDataExt.go |  1361 +-
 .../readwrite/model/ApduDataExtAuthorizeRequest.go |   209 +-
 .../model/ApduDataExtAuthorizeResponse.go          |   165 +-
 .../model/ApduDataExtDomainAddressRead.go          |   132 +-
 .../model/ApduDataExtDomainAddressResponse.go      |   132 +-
 .../model/ApduDataExtDomainAddressSelectiveRead.go |   132 +-
 .../ApduDataExtDomainAddressSerialNumberRead.go    |   132 +-
 ...ApduDataExtDomainAddressSerialNumberResponse.go |   132 +-
 .../ApduDataExtDomainAddressSerialNumberWrite.go   |   132 +-
 .../model/ApduDataExtDomainAddressWrite.go         |   132 +-
 .../model/ApduDataExtFileStreamInfoReport.go       |   132 +-
 .../ApduDataExtGroupPropertyValueInfoReport.go     |   132 +-
 .../model/ApduDataExtGroupPropertyValueRead.go     |   132 +-
 .../model/ApduDataExtGroupPropertyValueResponse.go |   132 +-
 .../model/ApduDataExtGroupPropertyValueWrite.go    |   132 +-
 ...ApduDataExtIndividualAddressSerialNumberRead.go |   132 +-
 ...DataExtIndividualAddressSerialNumberResponse.go |   132 +-
 ...pduDataExtIndividualAddressSerialNumberWrite.go |   132 +-
 .../readwrite/model/ApduDataExtKeyResponse.go      |   132 +-
 .../readwrite/model/ApduDataExtKeyWrite.go         |   132 +-
 .../readwrite/model/ApduDataExtLinkRead.go         |   132 +-
 .../readwrite/model/ApduDataExtLinkResponse.go     |   132 +-
 .../readwrite/model/ApduDataExtLinkWrite.go        |   132 +-
 .../readwrite/model/ApduDataExtMemoryBitWrite.go   |   132 +-
 .../model/ApduDataExtNetworkParameterRead.go       |   132 +-
 .../model/ApduDataExtNetworkParameterResponse.go   |   132 +-
 .../model/ApduDataExtNetworkParameterWrite.go      |   132 +-
 .../model/ApduDataExtOpenRoutingTableRequest.go    |   132 +-
 .../model/ApduDataExtPropertyDescriptionRead.go    |   221 +-
 .../ApduDataExtPropertyDescriptionResponse.go      |   407 +-
 .../model/ApduDataExtPropertyValueRead.go          |   354 +-
 .../model/ApduDataExtPropertyValueResponse.go      |   440 +-
 .../model/ApduDataExtPropertyValueWrite.go         |   293 +-
 .../model/ApduDataExtReadRouterMemoryRequest.go    |   132 +-
 .../model/ApduDataExtReadRouterMemoryResponse.go   |   132 +-
 .../model/ApduDataExtReadRouterStatusRequest.go    |   132 +-
 .../model/ApduDataExtReadRouterStatusResponse.go   |   132 +-
 .../model/ApduDataExtReadRoutingTableRequest.go    |   132 +-
 .../model/ApduDataExtReadRoutingTableResponse.go   |   132 +-
 .../model/ApduDataExtWriteRouterMemoryRequest.go   |   132 +-
 .../model/ApduDataExtWriteRouterStatusRequest.go   |   132 +-
 .../model/ApduDataExtWriteRoutingTableRequest.go   |   132 +-
 .../readwrite/model/ApduDataGroupValueRead.go      |   161 +-
 .../readwrite/model/ApduDataGroupValueResponse.go  |   216 +-
 .../readwrite/model/ApduDataGroupValueWrite.go     |   283 +-
 .../model/ApduDataIndividualAddressRead.go         |   132 +-
 .../model/ApduDataIndividualAddressResponse.go     |   132 +-
 .../model/ApduDataIndividualAddressWrite.go        |   132 +-
 .../knxnetip/readwrite/model/ApduDataMemoryRead.go |   246 +-
 .../readwrite/model/ApduDataMemoryResponse.go      |   308 +-
 .../readwrite/model/ApduDataMemoryWrite.go         |   132 +-
 .../knxnetip/readwrite/model/ApduDataOther.go      |   186 +-
 .../knxnetip/readwrite/model/ApduDataRestart.go    |   132 +-
 .../readwrite/model/ApduDataUserMessage.go         |   132 +-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |   857 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |   273 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |   498 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |   226 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |   114 +-
 .../knxnetip/readwrite/model/ChannelInformation.go |   207 +-
 .../knxnetip/readwrite/model/ComObjectTable.go     |   209 +
 .../readwrite/model/ComObjectTableAddresses.go     | 18858 ++++++++++++++++
 .../model/ComObjectTableRealisationType1.go        |   238 +
 .../model/ComObjectTableRealisationType2.go        |   238 +
 .../model/ComObjectTableRealisationType6.go        |   163 +
 .../knxnetip/readwrite/model/ComObjectValueType.go |   257 +
 .../knxnetip/readwrite/model/ConnectionRequest.go  |   294 +-
 .../model/ConnectionRequestInformation.go          |   307 +-
 ...ConnectionRequestInformationDeviceManagement.go |   132 +-
 ...ConnectionRequestInformationTunnelConnection.go |   240 +-
 .../knxnetip/readwrite/model/ConnectionResponse.go |   370 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |   307 +-
 .../ConnectionResponseDataBlockDeviceManagement.go |   132 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |   186 +-
 .../readwrite/model/ConnectionStateRequest.go      |   294 +-
 .../readwrite/model/ConnectionStateResponse.go     |   244 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |   650 +-
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |   285 +-
 .../knxnetip/readwrite/model/DescriptionRequest.go |   186 +-
 .../readwrite/model/DescriptionResponse.go         |   242 +-
 .../readwrite/model/DeviceConfigurationAck.go      |   186 +-
 .../model/DeviceConfigurationAckDataBlock.go       |   289 +-
 .../readwrite/model/DeviceConfigurationRequest.go  |   242 +-
 .../model/DeviceConfigurationRequestDataBlock.go   |   291 +-
 .../knxnetip/readwrite/model/DeviceDescriptor.go   |   537 +
 .../readwrite/model/DeviceDescriptorMediumType.go  |   142 +-
 .../readwrite/model/DeviceDescriptorType0.go       |   476 -
 .../readwrite/model/DeviceDescriptorType2.go       |   603 +-
 .../knxnetip/readwrite/model/DeviceStatus.go       |   211 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |   294 +-
 .../knxnetip/readwrite/model/DisconnectResponse.go |   244 +-
 .../knxnetip/readwrite/model/FirmwareType.go       |   313 +-
 .../model/GroupObjectDescriptorRealisationType1.go |   348 +
 .../model/GroupObjectDescriptorRealisationType2.go |   348 +
 .../model/GroupObjectDescriptorRealisationType6.go |   115 +
 .../model/GroupObjectDescriptorRealisationType7.go |   348 +
 .../model/GroupObjectDescriptorRealisationTypeB.go |   322 +
 .../readwrite/model/HPAIControlEndpoint.go         |   287 +-
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |   287 +-
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |   287 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |    86 +-
 .../plc4go/knxnetip/readwrite/model/IPAddress.go   |   198 +-
 .../plc4go/knxnetip/readwrite/model/KnxAddress.go  |   261 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       | 22389 +++++++++----------
 .../readwrite/model/KnxDatapointMainType.go        |  2183 +-
 .../knxnetip/readwrite/model/KnxDatapointType.go   | 12278 +++++-----
 .../knxnetip/readwrite/model/KnxGroupAddress.go    |   273 +-
 .../readwrite/model/KnxGroupAddress2Level.go       |   246 +-
 .../readwrite/model/KnxGroupAddress3Level.go       |   300 +-
 .../readwrite/model/KnxGroupAddressFreeLevel.go    |   192 +-
 .../readwrite/model/KnxInterfaceObjectProperty.go  |  9183 ++++----
 .../readwrite/model/KnxInterfaceObjectType.go      |   785 +-
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |   100 +-
 .../knxnetip/readwrite/model/KnxManufacturer.go    | 15254 +++++++------
 .../plc4go/knxnetip/readwrite/model/KnxMedium.go   |   142 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |   192 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |   192 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |   765 +-
 .../knxnetip/readwrite/model/KnxNetIpRouting.go    |     2 +
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |   192 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |   192 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |   192 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |   192 +-
 .../plc4go/knxnetip/readwrite/model/KnxProperty.go |  2787 +--
 .../readwrite/model/KnxPropertyDataType.go         |  1848 +-
 .../plc4go/knxnetip/readwrite/model/LBusmonInd.go  |   396 +-
 .../plc4go/knxnetip/readwrite/model/LDataCon.go    |   342 +-
 .../knxnetip/readwrite/model/LDataExtended.go      |   535 +-
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |   587 +-
 .../knxnetip/readwrite/model/LDataFrameACK.go      |   144 +-
 .../plc4go/knxnetip/readwrite/model/LDataInd.go    |   342 +-
 .../plc4go/knxnetip/readwrite/model/LDataReq.go    |   342 +-
 .../plc4go/knxnetip/readwrite/model/LPollData.go   |   395 +-
 .../knxnetip/readwrite/model/LPollDataCon.go       |   132 +-
 .../knxnetip/readwrite/model/LPollDataReq.go       |   132 +-
 .../plc4go/knxnetip/readwrite/model/LRawCon.go     |   132 +-
 .../plc4go/knxnetip/readwrite/model/LRawInd.go     |   132 +-
 .../plc4go/knxnetip/readwrite/model/LRawReq.go     |   132 +-
 .../plc4go/knxnetip/readwrite/model/MACAddress.go  |   198 +-
 .../readwrite/model/MFuncPropCommandReq.go         |   132 +-
 .../knxnetip/readwrite/model/MFuncPropCon.go       |   132 +-
 .../readwrite/model/MFuncPropStateReadReq.go       |   132 +-
 .../knxnetip/readwrite/model/MPropInfoInd.go       |   132 +-
 .../knxnetip/readwrite/model/MPropReadCon.go       |   462 +-
 .../knxnetip/readwrite/model/MPropReadReq.go       |   408 +-
 .../knxnetip/readwrite/model/MPropWriteCon.go      |   132 +-
 .../knxnetip/readwrite/model/MPropWriteReq.go      |   132 +-
 .../plc4go/knxnetip/readwrite/model/MResetInd.go   |   132 +-
 .../plc4go/knxnetip/readwrite/model/MResetReq.go   |   132 +-
 .../model/ProjectInstallationIdentifier.go         |   207 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |   157 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |   132 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |   186 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |   294 +-
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |     6 +-
 .../plc4go/knxnetip/readwrite/model/Status.go      |   226 +-
 .../readwrite/model/SupportedPhysicalMedia.go      |   673 +-
 .../knxnetip/readwrite/model/TDataConnectedInd.go  |   132 +-
 .../knxnetip/readwrite/model/TDataConnectedReq.go  |   132 +-
 .../knxnetip/readwrite/model/TDataIndividualInd.go |   132 +-
 .../knxnetip/readwrite/model/TDataIndividualReq.go |   132 +-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |   242 +-
 .../readwrite/model/TunnelingRequestDataBlock.go   |   291 +-
 .../knxnetip/readwrite/model/TunnelingResponse.go  |   186 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |   289 +-
 .../knxnetip/readwrite/model/UnknownMessage.go     |   229 +-
 plc4go/internal/plc4go/modbus/ModbusConnection.go  |    10 +
 plc4go/internal/plc4go/modbus/ModbusField.go       |    17 +
 .../plc4go/modbus/readwrite/ParserHelper.go        |    73 +-
 .../plc4go/modbus/readwrite/XmlParserHelper.go     |   129 +-
 .../plc4go/modbus/readwrite/model/DataItem.go      |     2 +
 .../modbus/readwrite/model/ModbusConstants.go      |   145 +-
 .../modbus/readwrite/model/ModbusDataType.go       |     2 +
 .../modbus/readwrite/model/ModbusErrorCode.go      |   198 +-
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |  1335 +-
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |   250 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |   250 +-
 .../modbus/readwrite/model/ModbusPDUError.go       |   196 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |   136 +-
 .../model/ModbusPDUGetComEventCounterResponse.go   |   250 +-
 .../model/ModbusPDUGetComEventLogRequest.go        |   136 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |   425 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |   304 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |   304 +-
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |   250 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |   263 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   136 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   136 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |   250 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |   263 +-
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   136 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |   196 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |   196 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |   288 +-
 .../model/ModbusPDUReadFileRecordRequest.go        |   280 +-
 .../model/ModbusPDUReadFileRecordRequestItem.go    |   311 +-
 .../model/ModbusPDUReadFileRecordResponse.go       |   280 +-
 .../model/ModbusPDUReadFileRecordResponseItem.go   |   282 +-
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |   250 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |   263 +-
 .../model/ModbusPDUReadInputRegistersRequest.go    |   250 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |   263 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |   479 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |   263 +-
 .../model/ModbusPDUReportServerIdRequest.go        |   136 +-
 .../model/ModbusPDUReportServerIdResponse.go       |   263 +-
 .../model/ModbusPDUWriteFileRecordRequest.go       |   280 +-
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |   382 +-
 .../model/ModbusPDUWriteFileRecordResponse.go      |   280 +-
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |   382 +-
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |   371 +-
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |   250 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |   371 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |   250 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |   250 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |   250 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |   250 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |   250 +-
 .../modbus/readwrite/model/ModbusSerialADU.go      |   359 +-
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |   325 +-
 .../internal/plc4go/s7/readwrite/ParserHelper.go   |   123 +-
 .../plc4go/s7/readwrite/XmlParserHelper.go         |   213 +-
 .../plc4go/s7/readwrite/model/COTPPacket.go        |   593 +-
 .../readwrite/model/COTPPacketConnectionRequest.go |   302 +-
 .../model/COTPPacketConnectionResponse.go          |   302 +-
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |   248 +-
 .../readwrite/model/COTPPacketDisconnectRequest.go |   302 +-
 .../model/COTPPacketDisconnectResponse.go          |   248 +-
 .../s7/readwrite/model/COTPPacketTpduError.go      |   248 +-
 .../plc4go/s7/readwrite/model/COTPParameter.go     |   379 +-
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |   192 +-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |   192 +-
 .../s7/readwrite/model/COTPParameterChecksum.go    |   192 +-
 ...COTPParameterDisconnectAdditionalInformation.go |   224 +-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |   192 +-
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |   128 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |   219 +-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |   943 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |   142 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |   219 +-
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |   100 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |   261 +-
 .../plc4go/s7/readwrite/model/S7Address.go         |   245 +-
 .../plc4go/s7/readwrite/model/S7AddressAny.go      |   512 +-
 .../plc4go/s7/readwrite/model/S7Message.go         |   665 +-
 .../plc4go/s7/readwrite/model/S7MessageRequest.go  |   138 +-
 .../plc4go/s7/readwrite/model/S7MessageResponse.go |   250 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |   250 +-
 .../plc4go/s7/readwrite/model/S7MessageUserData.go |   138 +-
 .../plc4go/s7/readwrite/model/S7Parameter.go       |   383 +-
 .../readwrite/model/S7ParameterReadVarRequest.go   |   264 +-
 .../readwrite/model/S7ParameterReadVarResponse.go  |   194 +-
 .../model/S7ParameterSetupCommunication.go         |   352 +-
 .../s7/readwrite/model/S7ParameterUserData.go      |   264 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |   245 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |   654 +-
 .../readwrite/model/S7ParameterWriteVarRequest.go  |   264 +-
 .../readwrite/model/S7ParameterWriteVarResponse.go |   194 +-
 .../plc4go/s7/readwrite/model/S7Payload.go         |   303 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |   240 +-
 .../plc4go/s7/readwrite/model/S7PayloadUserData.go |   234 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |   475 +-
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   140 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |   300 +-
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |   240 +-
 .../readwrite/model/S7PayloadWriteVarResponse.go   |   230 +-
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |   368 +-
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |   157 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |   245 +-
 .../model/S7VarRequestParameterItemAddress.go      |   220 +-
 .../plc4go/s7/readwrite/model/SzlDataTreeItem.go   |   378 +-
 plc4go/internal/plc4go/s7/readwrite/model/SzlId.go |   261 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |   114 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |   324 +-
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |   275 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  2568 ++-
 .../plc4go/spi/errors/TimeoutError.go}             |    14 +-
 .../plc4go/spi/model/DefaultPlcReadRequest.go      |    13 +-
 .../spi/model/DefaultPlcSubscriptionRequest.go     |    29 +-
 .../plc4go/spi/model/DefaultPlcWriteRequest.go     |    25 +-
 .../plc4go/spi/testutils/DriverTestRunner.go       |   125 +-
 plc4go/internal/plc4go/spi/testutils/TestUtils.go  |    10 +-
 plc4go/internal/plc4go/spi/utils/CastUtils.go      |    25 +
 plc4go/internal/plc4go/spi/utils/ReadBuffer.go     |    53 +-
 plc4go/internal/plc4go/spi/utils/WriteBuffer.go    |     5 +
 plc4go/internal/plc4go/spi/values/BINT.go          |   145 +
 plc4go/internal/plc4go/spi/values/BREAL.go         |   173 +
 plc4go/internal/plc4go/spi/values/PlcBitString.go  |     9 +-
 plc4go/internal/plc4go/spi/values/PlcList.go       |     2 +-
 plc4go/internal/plc4go/spi/values/PlcStruct.go     |     2 +-
 .../internal/plc4go/spi/values/PlcValueAdapter.go  |     9 +-
 plc4go/internal/plc4go/spi/values/RawPlcValue.go   |    91 +
 plc4go/pkg/plc4go/connection.go                    |     2 +
 plc4go/pkg/plc4go/drivers/drivers.go               |     9 +
 plc4go/pkg/plc4go/model/plc_browse.go              |     6 +-
 plc4go/pkg/plc4go/model/plc_field.go               |     1 +
 plc4go/pkg/plc4go/model/plc_read.go                |     3 +-
 plc4go/pkg/plc4go/model/plc_response_code.go       |     3 +-
 plc4go/pkg/plc4go/model/plc_subscription.go        |     9 +-
 plc4go/pkg/plc4go/model/plc_write.go               |     3 +-
 plc4go/pkg/plc4go/values/plc_value.go              |    15 +
 plc4go/pom.xml                                     |   136 +-
 .../readwrite/context/FirmataDriverContext.java    |    11 +-
 .../readwrite/protocol/FirmataProtocolLogic.java   |     5 +-
 .../hello-world-plc4x-subscription/pom.xml         |     5 -
 .../subscription/HelloPlc4xSubscription.java       |    13 +-
 plc4j/tools/connection-cache/pom.xml               |     6 +-
 .../plc4x/test/mapper/TestSuiteMappingModule.java  |    44 +-
 .../ads/src/main/resources/protocols/ads/ads.mspec |   122 +-
 .../resources/protocols/ads/DriverTestsuite.xml    |    14 +-
 .../protocols/canopen/CANOpenDriverSDOIT.xml       |    16 +-
 protocols/knxnetip/pom.xml                         |    19 +
 .../plc4x/protocol/knxnetip/KnxNetIpProtocol.java  |    10 +-
 .../resources/protocols/knxnetip/device-info.mspec |  1745 ++
 .../resources/protocols/knxnetip/knxnetip.mspec    |   254 +-
 protocols/knxnetip/src/main/xslt/knx-types.xsl     |    22 +-
 .../protocol/knxnetip/KnxDefinitionsGenerator.java |   141 +
 .../knxnetip/KnxSpecificationStoreUpdater.java     |   184 +
 .../knxnetip/handlers/ManufacturerIdsHandler.java  |    57 +
 .../handlers/ProductDescriptionHandler.java        |    64 +
 .../resources/protocols/modbus/DriverTestsuite.xml |     8 +-
 protocols/plc4x/pom.xml                            |    43 +
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |    19 +
 .../src/main/resources/protocols/plc4x/plc4x.mspec |    37 +-
 protocols/pom.xml                                  |     1 +
 .../resources/protocols/s7/DriverTestsuite.xml     |     8 +-
 src/site/asciidoc/users/adopters.adoc              |     2 +
 .../asciidoc/users/integrations/apache-kafka.adoc  |     4 +-
 .../companies/logo-lebbing-automation-drives.png   |   Bin 0 -> 13626 bytes
 576 files changed, 127081 insertions(+), 87839 deletions(-)

diff --cc build-utils/language-c/src/main/resources/templates/c/data-io-template-c.ftlh
index 04d5907,60236c8..0f30365
--- 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
@@@ -67,7 -67,7 +67,7 @@@
  #include <plc4c/data.h>
  #include <plc4c/utils/list.h>
  #include <plc4c/spi/evaluation_helper.h>
- //#include <plc4c/driver_${helper.getProtocolName()}.h>
 -#include <plc4c/driver_${helper.getProtocolName()}.h>
++
  #include "${helper.camelCaseToSnakeCase(type.name)}.h"
  
  // Parse function.
diff --cc build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
index 7eab226,43ac99a..8abf2ab
--- 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
@@@ -482,27 -457,16 +482,19 @@@ plc4c_return_code ${helper.getCTypeName
          <#case "const">
              <#assign constField = field>
              <#assign simpleTypeReference = constField.type>
--
  <#if indentContent>    </#if>  // Const Field (${constField.name})
  <#if indentContent>    </#if>  ${helper.getWriteBufferWriteMethodCall(constField.type, helper.getCTypeName(baseType.name)?upper_case + "_" + helper.camelCaseToSnakeCase(constField.name)?upper_case + "()")};
              <#break>
          <#case "discriminator">
              <#assign discriminatorField = field>
-         <#if helper.isSimpleField(field)>
-             <#assign simpleTypeReference = discriminatorField.type>
- <#if indentContent>    </#if>  // Discriminator Field (${discriminatorField.name})
- <#if indentContent>    </#if>  ${helper.getWriteBufferWriteMethodCall(discriminatorField.type, helper.getCTypeName(baseType.name) + "_get_discriminator(_message->_type)." + discriminatorField.name)};
-         <#elseif helper.isEnumField(field)>
++        <#if helper.isEnumField(field)>
 +<#if indentContent>    </#if>  // Enumerated Discriminator Field (${discriminatorField.name})
 +<#if indentContent>    </#if>  ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(discriminatorField.type), helper.getCTypeName(baseType.name) + "_get_discriminator(_message->_type)." + discriminatorField.name)};
 +        <#else>
- <#if indentContent>    </#if>  // Enumerated Discriminator Field (${discriminatorField.name})
-             // ${discriminatorField}
-             // ${discriminatorField.type}
-             // ${discriminatorField.name}
-             // ${helper.getCTypeName(baseType.name)}
+             <#assign simpleTypeReference = discriminatorField.type>
 -
+ <#if indentContent>    </#if>  // Discriminator Field (${discriminatorField.name})
  <#if indentContent>    </#if>  ${helper.getWriteBufferWriteMethodCall(discriminatorField.type, helper.getCTypeName(baseType.name) + "_get_discriminator(_message->_type)." + discriminatorField.name)};
 +        </#if>
              <#break>
          <#case "enum">
              <#assign enumField = field>
diff --cc build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
index d750b4a,213d1c3..2070da3
--- a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
@@@ -203,141 -206,131 +206,269 @@@ func (m *${type.name}) GetTypeName() st
  }
  
  func (m *${type.name}) LengthInBits() uint16 {
++<<<<<<< HEAD
 +    lengthInBits := uint16(0)
 +    <#list type.fields as field>
 +        <#switch field.typeName>
 +            <#case "array">
 +                <#assign arrayField = field>
 +
 +    // Array field
 +    if len(m.${arrayField.name?cap_first}) > 0 {
 +                <#if helper.isSimpleTypeReference(arrayField.type)>
 +                    <#assign simpleTypeReference = arrayField.type>
 +        lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name?cap_first}))
 +                <#else>
 +        for _, element := range m.${arrayField.name?cap_first} {
 +            lengthInBits += element.LengthInBits()
 +        }
 +                </#if>
 +    }
 +                <#break>
 +            <#case "checksum">
 +                <#assign checksumField = field>
 +                <#assign simpleTypeReference = checksumField.type>
 +
 +    // Checksum Field (checksum)
 +    lengthInBits += ${simpleTypeReference.sizeInBits}
 +                <#break>
 +            <#case "const">
 +                <#assign constField = field>
 +                <#assign simpleTypeReference = constField.type>
 +
 +    // Const Field (${constField.name})
 +    lengthInBits += ${simpleTypeReference.sizeInBits}
 +                <#break>
 +            <#case "discriminator">
 +                <#assign discriminatorField = field>
 +                <#assign simpleTypeReference = discriminatorField.type>
 +
 +    // Discriminator Field (${discriminatorField.name})
 +                <#if helper.isSimpleTypeReference(simpleTypeReference)>
 +                    <#if helper.getLanguageTypeNameForTypeReference(discriminatorField.type) = "String">
 +    lengthInBits += ${simpleTypeReference.getLength()};
 +                    <#else>
 +    lengthInBits += ${simpleTypeReference.sizeInBits};
 +                    </#if>
 +                <#elseif helper.isEnumField(discriminatorField)>
 +    lengthInBits += ${helper.getEnumBaseTypeReference(discriminatorField.type).sizeInBits};
 +                <#else>
 +    lengthInBits += ${discriminatorField.name}.getLengthInBits();
 +                </#if>
 +                <#break>
 +            <#case "enum">
 +                <#assign enumField = field>
 +
 +    // Enum Field (${enumField.name})
 +    lengthInBits += ${helper.getEnumBaseTypeReference(enumField.type).sizeInBits}
 +                <#break>
 +            <#case "implicit">
 +                <#assign implicitField = field>
 +                <#assign simpleTypeReference = implicitField.type>
 +
 +    // Implicit Field (${implicitField.name})
 +    lengthInBits += ${simpleTypeReference.sizeInBits}
 +                <#break>
 +            <#case "manualArray">
 +                <#assign manualArrayField = field>
 +
 +    // Manual Array Field (${manualArrayField.name})
 +    lengthInBits += ${helper.toParseExpression(manualArrayField, manualArrayField.lengthExpression, type.parserArguments)} * 8
 +                <#break>
 +            <#case "manual">
 +                <#assign manualField = field>
 +
 +    // Manual Field (${manualField.name})
 +    lengthInBits += ${helper.toParseExpression(manualField, manualField.lengthExpression, type.parserArguments)} * 8
 +                <#break>
 +            <#case "optional">
 +                <#assign optionalField = field>
 +
 +    // Optional Field (${optionalField.name})
 +    if m.${optionalField.name?cap_first} != nil {
 +                <#if helper.isSimpleTypeReference(optionalField.type)>
 +                    <#assign simpleTypeReference = optionalField.type>
 +        lengthInBits += ${simpleTypeReference.sizeInBits}
 +                <#elseif helper.isEnumField(field)>
 +        lengthInBits += ${helper.getEnumBaseTypeReference(optionalField.type).sizeInBits}
 +                <#else>
 +        lengthInBits += (*m.${optionalField.name?cap_first}).LengthInBits()
 +                </#if>
 +    }
 +                <#break>
 +            <#case "padding">
 +                <#assign paddingField = field>
 +                <#assign simpleTypeReference = paddingField.type>
 +
 +    // Padding Field (padding)
 +            <#-- We're replacing the "lastItem" with 'false' here as the item itself can't know if it is the last -->
 +    _timesPadding := uint8(${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)?replace("lastItem", "false")})
 +    for ;_timesPadding > 0; _timesPadding-- {
 +        lengthInBits += ${simpleTypeReference.sizeInBits}
 +    }
 +                <#break>
 +            <#case "reserved">
 +                <#assign reservedField = field>
 +                <#assign simpleTypeReference = reservedField.type>
 +
 +    // Reserved Field (reserved)
 +    lengthInBits += ${simpleTypeReference.sizeInBits}
 +                <#break>
 +            <#case "simple">
 +                <#assign simpleField = field>
 +
 +    // Simple field (${simpleField.name})
 +                <#if helper.isSimpleTypeReference(simpleField.type)>
 +                    <#assign simpleTypeReference = simpleField.type>
 +    lengthInBits += ${simpleTypeReference.sizeInBits}
 +                <#elseif helper.isEnumField(field)>
 +    lengthInBits += ${helper.getEnumBaseTypeReference(simpleField.type).sizeInBits}
 +                <#else>
 +    lengthInBits += m.${simpleField.name?cap_first}.LengthInBits()
 +                </#if>
 +                <#break>
 +            <#case "switch">
 +                <#assign switchField = field>
 +
 +    // Length of sub-type elements will be added by sub-type...
 +    lengthInBits += m.Child.LengthInBits()
 +                <#break>
 +            <#case "virtual">
 +                <#assign virtualField = field>
 +
 +    // A virtual field doesn't have any in- or output.
 +                <#break>
 +        </#switch>
 +    </#list>
 +
 +    return lengthInBits
++=======
+ 	lengthInBits := uint16(0)
+ 	<#list type.fields as field>
+ 		<#switch field.typeName>
+ 			<#case "array">
+ 				<#assign arrayField = field>
+ 
+ 	// Array field
+ 	if len(m.${arrayField.name?cap_first}) > 0 {
+ 				<#if helper.isSimpleTypeReference(arrayField.type)>
+ 					<#assign simpleTypeReference = arrayField.type>
+ 		lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name?cap_first}))
+ 				<#else>
+ 		for _, element := range m.${arrayField.name?cap_first} {
+ 			lengthInBits += element.LengthInBits()
+ 		}
+ 				</#if>
+ 	}
+ 				<#break>
+ 			<#case "checksum">
+ 				<#assign checksumField = field>
+ 				<#assign simpleTypeReference = checksumField.type>
+ 
+ 	// Checksum Field (checksum)
+ 	lengthInBits += ${simpleTypeReference.sizeInBits}
+ 				<#break>
+ 			<#case "const">
+ 				<#assign constField = field>
+ 				<#assign simpleTypeReference = constField.type>
+ 
+ 	// Const Field (${constField.name})
+ 	lengthInBits += ${simpleTypeReference.sizeInBits}
+ 				<#break>
+ 			<#case "discriminator">
+ 				<#assign discriminatorField = field>
+ 				<#assign simpleTypeReference = discriminatorField.type>
+ 
+ 	// Discriminator Field (${discriminatorField.name})
+ 	lengthInBits += ${simpleTypeReference.sizeInBits}
+ 				<#break>
+ 			<#case "enum">
+ 				<#assign enumField = field>
+ 
+ 	// Enum Field (${enumField.name})
+ 	lengthInBits += ${helper.getEnumBaseTypeReference(enumField.type).sizeInBits}
+ 				<#break>
+ 			<#case "implicit">
+ 				<#assign implicitField = field>
+ 				<#assign simpleTypeReference = implicitField.type>
+ 
+ 	// Implicit Field (${implicitField.name})
+ 	lengthInBits += ${simpleTypeReference.sizeInBits}
+ 				<#break>
+ 			<#case "manualArray">
+ 				<#assign manualArrayField = field>
+ 
+ 	// Manual Array Field (${manualArrayField.name})
+ 	lengthInBits += ${helper.toParseExpression(manualArrayField, manualArrayField.lengthExpression, type.parserArguments)} * 8
+ 				<#break>
+ 			<#case "manual">
+ 				<#assign manualField = field>
+ 
+ 	// Manual Field (${manualField.name})
+ 	lengthInBits += ${helper.toParseExpression(manualField, manualField.lengthExpression, type.parserArguments)} * 8
+ 				<#break>
+ 			<#case "optional">
+ 				<#assign optionalField = field>
+ 
+ 	// Optional Field (${optionalField.name})
+ 	if m.${optionalField.name?cap_first} != nil {
+ 				<#if helper.isSimpleTypeReference(optionalField.type)>
+ 					<#assign simpleTypeReference = optionalField.type>
+ 		lengthInBits += ${simpleTypeReference.sizeInBits}
+ 				<#elseif helper.isEnumField(field)>
+ 		lengthInBits += ${helper.getEnumBaseTypeReference(optionalField.type).sizeInBits}
+ 				<#else>
+ 		lengthInBits += (*m.${optionalField.name?cap_first}).LengthInBits()
+ 				</#if>
+ 	}
+ 				<#break>
+ 			<#case "padding">
+ 				<#assign paddingField = field>
+ 				<#assign simpleTypeReference = paddingField.type>
+ 
+ 	// Padding Field (padding)
+ 			<#-- We're replacing the "lastItem" with 'false' here as the item itself can't know if it is the last -->
+ 	_timesPadding := uint8(${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)?replace("lastItem", "false")})
+ 	for ;_timesPadding > 0; _timesPadding-- {
+ 		lengthInBits += ${simpleTypeReference.sizeInBits}
+ 	}
+ 				<#break>
+ 			<#case "reserved">
+ 				<#assign reservedField = field>
+ 				<#assign simpleTypeReference = reservedField.type>
+ 
+ 	// Reserved Field (reserved)
+ 	lengthInBits += ${simpleTypeReference.sizeInBits}
+ 				<#break>
+ 			<#case "simple">
+ 				<#assign simpleField = field>
+ 
+ 	// Simple field (${simpleField.name})
+ 				<#if helper.isSimpleTypeReference(simpleField.type)>
+ 					<#assign simpleTypeReference = simpleField.type>
+ 	lengthInBits += ${simpleTypeReference.sizeInBits}
+ 				<#elseif helper.isEnumField(field)>
+ 	lengthInBits += ${helper.getEnumBaseTypeReference(simpleField.type).sizeInBits}
+ 				<#else>
+ 	lengthInBits += m.${simpleField.name?cap_first}.LengthInBits()
+ 				</#if>
+ 				<#break>
+ 			<#case "switch">
+ 				<#assign switchField = field>
+ 
+ 	// Length of sub-type elements will be added by sub-type...
+ 	lengthInBits += m.Child.LengthInBits()
+ 				<#break>
+ 			<#case "virtual">
+ 				<#assign virtualField = field>
+ 
+ 	// A virtual field doesn't have any in- or output.
+ 				<#break>
+ 		</#switch>
+ 	</#list>
+ 
+ 	return lengthInBits
++>>>>>>> develop
  }
  
  func (m *${type.name}) LengthInBytes() uint16 {
@@@ -345,331 -338,327 +476,655 @@@
  }
  
  func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type)>*</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (*<#if type.parentType?has_content>${type.parentType.name}<#else>${type.name}</#if>, error) {
++<<<<<<< HEAD
 +    <#if helper.requiresStartPosAndCurPos()>
 +    var startPos = io.GetPos()
 +    var curPos uint16
 +    </#if>
 +    <#list type.fields as field>
 +        <#switch field.typeName>
 +            <#case "array">
 +                <#assign arrayField = field>
 +
 +    // Array field (${arrayField.name})
 +            <#-- Only update curPos if the length expression uses it -->
 +                <#if arrayField.loopExpression.contains("curPos")>
 +    curPos = io.GetPos() - startPos
 +                </#if>
 +            <#-- If this is a count array, we can directly initialize an array with the given size -->
 +                <#if helper.isCountArrayField(field)>
 +    // Count array
 +    ${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, ${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)})
 +    for curItem := uint16(0); curItem < uint16(${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)}); curItem++ {
 +                    <#if (!helper.isSimpleTypeReference(arrayField.type)) && helper.requiresVariable(arrayField, "lastItem")>
 +        lastItem := curItem == uint16(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)} - 1)
 +                    </#if>
 +        _item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list> [...]
 +        if _err != nil {
 +            return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
 +        }
 +        ${arrayField.name}[curItem] = _item
 +    }
 +                <#-- In all other cases do we have to work with a list, that is later converted to an array -->
 +                <#elseif helper.isLengthArrayField(field)>
 +                <#-- For a length array, we read data till the read position of the buffer reaches a given position -->
 +    // Length array
 +    ${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, 0)
 +    _${arrayField.name}Length := ${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)}
 +    _${arrayField.name}EndPos := io.GetPos() + uint16(_${arrayField.name}Length)
 +    for ;io.GetPos() < _${arrayField.name}EndPos; {
 +        _item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list> [...]
 +        if _err != nil {
 +            return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
 +        }
 +        ${arrayField.name} = append(${arrayField.name}, _item)
 +                    <#-- After parsing, update the current position, but only if it's needed -->
 +                    <#if arrayField.loopExpression.contains("curPos")>
 +        curPos = io.GetPos() - startPos
 +                    </#if>
 +    }
 +                    <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
 +                <#elseif helper.isTerminatedArrayField(field)>
 +    // Terminated array
 +    ${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, 0)
 +    for ;!bool(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}); {
 +        _item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list> [...]
 +        if _err != nil {
 +            return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
 +        }
 +        ${arrayField.name} = append(${arrayField.name}, _item)
 +
 +                    <#-- After parsing, update the current position, but only if it's needed -->
 +                    <#if arrayField.loopExpression.contains("curPos")>
 +        curPos = io.GetPos() - startPos
 +                    </#if>
 +    }
 +                </#if>
 +                <#break>
 +            <#case "checksum">
 +                <#assign checksumField = field>
 +                <#assign simpleTypeReference = checksumField.type>
 +
 +    // Checksum Field (checksum)
 +    {
 +        checksum = ${helper.getNullValueForTypeReference(checksumField.type)}
 +        // Create an array of all the bytes read in this message element so far.
 +        checksumRawData := io.getBytes(startPos, io.GetPos())
 +        checksumRef, _checksumRefErr := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
 +        if _checksumRefErr != nil {
 +            return nil, errors.New("Error parsing 'checksum' field " + _checksumRefErr.Error())
 +        }
 +        checksum, _checksumErr = ${helper.toParseExpression(checksumField, checksumField.checksumExpression, type.parserArguments)}
 +        if _checksumErr != nil {
 +            return nil, errors.New("Error parsing 'checksum' field " + _checksumErr.Error())
 +        }
 +        if checksum != checksumRef {
 +            return nil, errors.New("Checksum verification failed. Expected " + (checksumRef & 0xFFFF) + " but got " + (checksum & 0xFFFF)")
 +        }
 +    }
 +                <#break>
 +            <#case "const">
 +                <#assign constField = field>
 +                <#assign simpleTypeReference = constField.type>
 +
 +    // Const Field (${constField.name})
 +    ${constField.name}, _${constField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
 +    if _${constField.name}Err != nil {
 +        return nil, errors.New("Error parsing '${constField.name}' field " + _${constField.name}Err.Error())
 +    }
 +    if ${constField.name} != ${type.name}_${constField.name?upper_case} {
 +        return nil, errors.New("Expected constant value " + strconv.Itoa(int(${type.name}_${constField.name?upper_case})) + " but got " + strconv.Itoa(int(${constField.name})))
 +    }
 +                <#break>
 +            <#case "discriminator">
 +                <#assign discriminatorField = field>
 +                <#assign simpleTypeReference = discriminatorField.type>
 +
 +    // Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
 +            <#if helper.isEnumField(field)>
 +    ${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(discriminatorField.type))}
 +            <#else>
 +    ${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
 +            </#if>
 +    if _${discriminatorField.name}Err != nil {
 +        return nil, errors.New("Error parsing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "enum">
 +                <#assign enumField = field>
 +
 +    // Enum field (${enumField.name})
 +    ${enumField.name}, _${enumField.name}Err := ${helper.getLanguageTypeNameForField(field)}Parse(io)
 +    if _${enumField.name}Err != nil {
 +        return nil, errors.New("Error parsing '${enumField.name}' field " + _${enumField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "implicit">
 +                <#assign implicitField = field>
 +                <#assign simpleTypeReference = implicitField.type>
 +
 +    // Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 +    ${helper.getVariableName(field)}, _${implicitField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
 +    if _${implicitField.name}Err != nil {
 +        return nil, errors.New("Error parsing '${implicitField.name}' field " + _${implicitField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "manualArray">
 +                <#assign manualArrayField = field>
 +
 +    // Manual Array Field (${manualArrayField.name})
 +            <#-- Only update curPos if the length expression uses it -->
 +                <#if manualArrayField.loopExpression.contains("curPos")>
 +    curPos = io.GetPos() - startPos
 +                </#if>
 +            <#-- If this is a count array, we can directly initialize an array with the given size -->
 +                <#if helper.isCountArrayField(field)>
 +    // Count array
 +    _${manualArrayField.name}Count := ${helper.toParseExpression(manualArrayField, manualArrayField.loopExpression, type.parserArguments)}
 +    ${helper.getLanguageTypeNameForField(field)}[] ${manualArrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[_${manualArrayField.name}Count]
 +    for i := 0; i < _${manualArrayField.name}Count; i++ {
 +        ${manualArrayField.name}[i] = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)})
 +    }
 +                <#-- 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 -->
 +                    <#if helper.isLengthArrayField(field)>
 +    // Length array
 +    _${manualArrayField.name}Length := ${helper.toIntegerParseExpression(16, manualArrayField.loopExpression, type.parserArguments)}
 +    List<${helper.getLanguageTypeNameForField(manualArrayField)}> _${manualArrayField.name}List = new LinkedList<>()
 +    ${manualArrayField.name}EndPos := io.GetPos() + _${manualArrayField.name}Length
 +    for ;io.GetPos() < ${manualArrayField.name}EndPos; {
 +        _${manualArrayField.name}List.add((${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)}))
 +                    <#-- After parsing, update the current position, but only if it's needed -->
 +                        <#if manualArrayField.loopExpression.contains("curPos")>
 +        curPos = io.GetPos() - startPos
 +                        </#if>
 +    }
 +                    <#-- 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(manualArrayField)}> _${manualArrayField.name}List = new LinkedList<>()
 +    for ;!((boolean) (${helper.toParseExpression(manualArrayField, manualArrayField.loopExpression, type.parserArguments)})); {
 +        _${manualArrayField.name}List.add((${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)}))
 +
 +                    <#-- After parsing, update the current position, but only if it's needed -->
 +                        <#if manualArrayField.loopExpression.contains("curPos")>
 +        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)}[] ${manualArrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[_${manualArrayField.name}List.size()]
 +    for i := 0; i < _${manualArrayField.name}List.size(); i++ {
 +        ${manualArrayField.name}[i] = (${helper.getLanguageTypeNameForField(field)}) _${manualArrayField.name}List.get(i)
 +    }
 +                    <#else>
 +    ${helper.getLanguageTypeNameForField(field)}[] ${manualArrayField.name} = _${manualArrayField.name}List.toArray(new ${helper.getLanguageTypeNameForField(manualArrayField)}[0])
 +                    </#if>
 +                </#if>
 +                <#break>
 +            <#case "manual">
 +                <#assign manualField = field>
 +
 +    // Manual Field (${manualField.name})
 +    ${manualField.name}, _${manualField.name}Err = ${helper.toParseExpression(manualField, manualField.parseExpression, type.parserArguments)}
 +    if _${implicitField.name}Err != nil {
 +        return nil, errors.New("Error parsing '${manualField.name}' field " + _${manualField.name}Err.Error())
 +    }
 +            <#break>
 +            <#case "optional">
 +                <#assign optionalField = field>
 +
 +    // Optional Field (${optionalField.name}) (Can be skipped, if a given expression evaluates to false)
 +                <#if optionalField.conditionExpression.contains("curPos")>
 +    curPos = io.GetPos() - startPos
 +                </#if>
 +    var ${optionalField.name} *${helper.getLanguageTypeNameForField(field)} = nil
 +    if ${helper.toBooleanParseExpression(optionalField.conditionExpression, type.parserArguments)} {
 +            <#if helper.isSimpleTypeReference(optionalField.type)>
 +        _val, _err := ${helper.getReadBufferReadMethodCall(optionalField.type)}
 +        if _err != nil {
 +            return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
 +        }
 +        ${optionalField.name} = &_val
 +            <#elseif helper.isEnumField(field)>
 +        _val, _err := ${helper.getLanguageTypeNameForField(field)}Parse(io)
 +        if _err != nil {
 +            return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
 +        }
 +        ${optionalField.name} = &_val
 +            <#else>
 +        _val, _err := ${helper.getLanguageTypeNameForField(field)}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${helper.toTypedParseExpression(helper.getArgumentType(optionalField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list></#if>)
 +        if _err != nil {
 +            return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
 +        }
 +        ${optionalField.name} = _val
 +            </#if>
 +    }
 +                <#break>
 +            <#case "padding">
 +                <#assign paddingField = field>
 +                <#assign simpleTypeReference = paddingField.type>
 +
 +    // Padding Field (padding)
 +    {
 +        _timesPadding := (${helper.toParseExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
 +        for ;(io.HasMore(${helper.getNumBits(simpleTypeReference)})) && (_timesPadding > 0);_timesPadding-- {
 +            // Just read the padding data and ignore it
 +            _, _err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
 +            if _err != nil {
 +                return nil, errors.New("Error parsing 'padding' field " + _err.Error())
 +            }
 +        }
 +    }
 +                <#break>
 +            <#case "reserved">
 +                <#assign reservedField = field>
 +                <#assign simpleTypeReference = reservedField.type>
 +
 +    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
 +    {
 +        reserved, _err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
 +        if _err != nil {
 +            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
 +        }
 +        if reserved != ${helper.getReservedValue(reservedField)} {
 +            log.WithFields(log.Fields{
 +                "expected value": ${helper.getReservedValue(reservedField)},
 +                "got value": reserved,
 +            }).Info("Got unexpected response.")
 +        }
 +    }
 +                <#break>
 +            <#case "simple">
 +                <#assign simpleField = field>
 +
 +    // Simple Field (${simpleField.name})
 +    ${simpleField.name}, _${simpleField.name}Err := <#if helper.isSimpleTypeReference(simpleField.type)>${helper.getReadBufferReadMethodCall(simpleField.type)}<#else>${simpleField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(simpleField.type, parserArgument?index), parserArgument, type.parserA [...]
 +    if _${simpleField.name}Err != nil {
 +            <#if helper.isEnumField(field)>
 +        return nil, errors.New("Error parsing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
 +            <#else>
 +        return nil, errors.New("Error parsing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
 +            </#if>
 +    }
 +                <#break>
 +
 +            <#case "switch">
 +                <#assign switchField = field>
 +
 +    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
 +    var _parent *${type.name}
 +    var typeSwitchError error
 +    switch {
 +                <#list switchField.cases as case>
 +    <#if case.discriminatorValues?has_content>case <#list case.discriminatorValues as discriminatorValue>${helper.toParseExpression(null, switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == ${discriminatorValue}<#sep> && </#sep></#list></#if>:
 +        _parent, typeSwitchError = ${case.name}Parse(io<#if case.parserArguments?has_content>, <#list case.parserArguments as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${parserArgument.name}<#sep>, </#sep></#list></#if>)
 +                </#list>
 +    }
 +    if typeSwitchError != nil {
 +        return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
 +    }
 +                <#break>
 +
 +            <#case "virtual">
 +                <#assign virtualField = field>
 +
 +    // Virtual field (Just declare a local variable so we can access it in the parser)
 +    ${virtualField.name}, _${virtualField.name}Err := ${helper.toParseExpression(virtualField, virtualField.valueExpression, type.parserArguments)}
 +    if _${virtualField.name}Err != nil {
 +        return nil, errors.New("Error parsing '${virtualField.name}' field " + _${virtualField.name}Err.Error())
 +    }
 +                <#break>
 +        </#switch>
 +    </#list>
 +
 +    <#if helper.isDiscriminatedParentTypeDefinition()>
 +    // Finish initializing
 +    _parent.Child.InitializeParent(_parent<#if type.propertyFields?has_content>, <#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list></#if>)
 +    return _parent, nil
 +    <#elseif type.parentType?has_content>
 +    // Create a partially initialized instance
 +    _child := &${type.name}{
 +        <#list type.propertyFields as field>
 +        ${field.name?cap_first}: ${field.name},
 +        </#list>
 +        Parent: &${type.parentType.name}{},
 +    }
 +    _child.Parent.Child = _child
 +    return _child.Parent, nil
 +    <#else>
 +    // Create the instance
 +    return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>), nil
 +    </#if>
++=======
+ 	<#if helper.requiresStartPosAndCurPos()>
+ 	var startPos = io.GetPos()
+ 	var curPos uint16
+ 	</#if>
+ 	<#list type.fields as field>
+ 		<#switch field.typeName>
+ 			<#case "array">
+ 				<#assign arrayField = field>
+ 
+ 	// Array field (${arrayField.name})
+ 			<#-- Only update curPos if the length expression uses it -->
+ 				<#if arrayField.loopExpression.contains("curPos")>
+ 	curPos = io.GetPos() - startPos
+ 				</#if>
+ 			<#-- If this is a count array, we can directly initialize an array with the given size -->
+ 				<#if helper.isCountArrayField(field)>
+ 	// Count array
+ 	${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, ${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)})
+ 	for curItem := uint16(0); curItem < uint16(${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)}); curItem++ {
+ 					<#if (!helper.isSimpleTypeReference(arrayField.type)) && helper.requiresVariable(arrayField, "lastItem")>
+ 		lastItem := curItem == uint16(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)} - 1)
+ 					</#if>
+ 		_item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list></#if>)</#if>
+ 		if _err != nil {
+ 			return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
+ 		}
+ 		${arrayField.name}[curItem] = _item
+ 	}
+ 				<#-- In all other cases do we have to work with a list, that is later converted to an array -->
+ 				<#elseif helper.isLengthArrayField(field)>
+ 				<#-- For a length array, we read data till the read position of the buffer reaches a given position -->
+ 	// Length array
+ 	${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, 0)
+ 	_${arrayField.name}Length := ${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)}
+ 	_${arrayField.name}EndPos := io.GetPos() + uint16(_${arrayField.name}Length)
+ 	for ;io.GetPos() < _${arrayField.name}EndPos; {
+ 		_item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list></#if>)</#if>
+ 		if _err != nil {
+ 			return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
+ 		}
+ 		${arrayField.name} = append(${arrayField.name}, _item)
+ 					<#-- After parsing, update the current position, but only if it's needed -->
+ 					<#if arrayField.loopExpression.contains("curPos")>
+ 		curPos = io.GetPos() - startPos
+ 					</#if>
+ 	}
+ 					<#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
+ 				<#elseif helper.isTerminatedArrayField(field)>
+ 	// Terminated array
+ 	${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, 0)
+ 	for ;!bool(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}); {
+ 		_item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list></#if>)</#if>
+ 		if _err != nil {
+ 			return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
+ 		}
+ 		${arrayField.name} = append(${arrayField.name}, _item)
+ 
+ 					<#-- After parsing, update the current position, but only if it's needed -->
+ 					<#if arrayField.loopExpression.contains("curPos")>
+ 		curPos = io.GetPos() - startPos
+ 					</#if>
+ 	}
+ 				</#if>
+ 				<#break>
+ 			<#case "checksum">
+ 				<#assign checksumField = field>
+ 				<#assign simpleTypeReference = checksumField.type>
+ 
+ 	// Checksum Field (checksum)
+ 	{
+ 		checksum = ${helper.getNullValueForTypeReference(checksumField.type)}
+ 		// Create an array of all the bytes read in this message element so far.
+ 		checksumRawData := io.getBytes(startPos, io.GetPos())
+ 		checksumRef, _checksumRefErr := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
+ 		if _checksumRefErr != nil {
+ 			return nil, errors.New("Error parsing 'checksum' field " + _checksumRefErr.Error())
+ 		}
+ 		checksum, _checksumErr = ${helper.toParseExpression(checksumField, checksumField.checksumExpression, type.parserArguments)}
+ 		if _checksumErr != nil {
+ 			return nil, errors.New("Error parsing 'checksum' field " + _checksumErr.Error())
+ 		}
+ 		if checksum != checksumRef {
+ 			return nil, errors.New("Checksum verification failed. Expected " + (checksumRef & 0xFFFF) + " but got " + (checksum & 0xFFFF)")
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "const">
+ 				<#assign constField = field>
+ 				<#assign simpleTypeReference = constField.type>
+ 
+ 	// Const Field (${constField.name})
+ 	${constField.name}, _${constField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
+ 	if _${constField.name}Err != nil {
+ 		return nil, errors.New("Error parsing '${constField.name}' field " + _${constField.name}Err.Error())
+ 	}
+ 	if ${constField.name} != ${type.name}_${constField.name?upper_case} {
+ 		return nil, errors.New("Expected constant value " + strconv.Itoa(int(${type.name}_${constField.name?upper_case})) + " but got " + strconv.Itoa(int(${constField.name})))
+ 	}
+ 				<#break>
+ 			<#case "discriminator">
+ 				<#assign discriminatorField = field>
+ 				<#assign simpleTypeReference = discriminatorField.type>
+ 
+ 	// Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
+ 	${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
+ 	if _${discriminatorField.name}Err != nil {
+ 		return nil, errors.New("Error parsing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "enum">
+ 				<#assign enumField = field>
+ 
+ 	// Enum field (${enumField.name})
+ 	${enumField.name}, _${enumField.name}Err := ${helper.getLanguageTypeNameForField(field)}Parse(io)
+ 	if _${enumField.name}Err != nil {
+ 		return nil, errors.New("Error parsing '${enumField.name}' field " + _${enumField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "implicit">
+ 				<#assign implicitField = field>
+ 				<#assign simpleTypeReference = implicitField.type>
+ 
+ 	// Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ 	${helper.getVariableName(field)}, _${implicitField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
+ 	if _${implicitField.name}Err != nil {
+ 		return nil, errors.New("Error parsing '${implicitField.name}' field " + _${implicitField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "manualArray">
+ 				<#assign manualArrayField = field>
+ 
+ 	// Manual Array Field (${manualArrayField.name})
+ 			<#-- Only update curPos if the length expression uses it -->
+ 				<#if manualArrayField.loopExpression.contains("curPos")>
+ 	curPos = io.GetPos() - startPos
+ 				</#if>
+ 			<#-- If this is a count array, we can directly initialize an array with the given size -->
+ 				<#if helper.isCountArrayField(field)>
+ 	// Count array
+ 	_${manualArrayField.name}Count := ${helper.toParseExpression(manualArrayField, manualArrayField.loopExpression, type.parserArguments)}
+ 	${helper.getLanguageTypeNameForField(field)}[] ${manualArrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[_${manualArrayField.name}Count]
+ 	for i := 0; i < _${manualArrayField.name}Count; i++ {
+ 		${manualArrayField.name}[i] = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)})
+ 	}
+ 				<#-- 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 -->
+ 					<#if helper.isLengthArrayField(field)>
+ 	// Length array
+ 	_${manualArrayField.name}Length := ${helper.toIntegerParseExpression(16, manualArrayField.loopExpression, type.parserArguments)}
+ 	List<${helper.getLanguageTypeNameForField(manualArrayField)}> _${manualArrayField.name}List = new LinkedList<>()
+ 	${manualArrayField.name}EndPos := io.GetPos() + _${manualArrayField.name}Length
+ 	for ;io.GetPos() < ${manualArrayField.name}EndPos; {
+ 		_${manualArrayField.name}List.add((${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)}))
+ 					<#-- After parsing, update the current position, but only if it's needed -->
+ 						<#if manualArrayField.loopExpression.contains("curPos")>
+ 		curPos = io.GetPos() - startPos
+ 						</#if>
+ 	}
+ 					<#-- 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(manualArrayField)}> _${manualArrayField.name}List = new LinkedList<>()
+ 	for ;!((boolean) (${helper.toParseExpression(manualArrayField, manualArrayField.loopExpression, type.parserArguments)})); {
+ 		_${manualArrayField.name}List.add((${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)}))
+ 
+ 					<#-- After parsing, update the current position, but only if it's needed -->
+ 						<#if manualArrayField.loopExpression.contains("curPos")>
+ 		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)}[] ${manualArrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[_${manualArrayField.name}List.size()]
+ 	for i := 0; i < _${manualArrayField.name}List.size(); i++ {
+ 		${manualArrayField.name}[i] = (${helper.getLanguageTypeNameForField(field)}) _${manualArrayField.name}List.get(i)
+ 	}
+ 					<#else>
+ 	${helper.getLanguageTypeNameForField(field)}[] ${manualArrayField.name} = _${manualArrayField.name}List.toArray(new ${helper.getLanguageTypeNameForField(manualArrayField)}[0])
+ 					</#if>
+ 				</#if>
+ 				<#break>
+ 			<#case "manual">
+ 				<#assign manualField = field>
+ 
+ 	// Manual Field (${manualField.name})
+ 	${manualField.name}, _${manualField.name}Err = ${helper.toParseExpression(manualField, manualField.parseExpression, type.parserArguments)}
+ 	if _${implicitField.name}Err != nil {
+ 		return nil, errors.New("Error parsing '${manualField.name}' field " + _${manualField.name}Err.Error())
+ 	}
+ 			<#break>
+ 			<#case "optional">
+ 				<#assign optionalField = field>
+ 
+ 	// Optional Field (${optionalField.name}) (Can be skipped, if a given expression evaluates to false)
+ 				<#if optionalField.conditionExpression.contains("curPos")>
+ 	curPos = io.GetPos() - startPos
+ 				</#if>
+ 	var ${optionalField.name} *${helper.getLanguageTypeNameForField(field)} = nil
+ 	if ${helper.toBooleanParseExpression(optionalField.conditionExpression, type.parserArguments)} {
+ 			<#if helper.isSimpleTypeReference(optionalField.type)>
+ 		_val, _err := ${helper.getReadBufferReadMethodCall(optionalField.type)}
+ 		if _err != nil {
+ 			return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
+ 		}
+ 		${optionalField.name} = &_val
+ 			<#elseif helper.isEnumField(field)>
+ 		_val, _err := ${helper.getLanguageTypeNameForField(field)}Parse(io)
+ 		if _err != nil {
+ 			return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
+ 		}
+ 		${optionalField.name} = &_val
+ 			<#else>
+ 		_val, _err := ${helper.getLanguageTypeNameForField(field)}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${helper.toTypedParseExpression(helper.getArgumentType(optionalField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list></#if>)
+ 		if _err != nil {
+ 			return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
+ 		}
+ 		${optionalField.name} = _val
+ 			</#if>
+ 	}
+ 				<#break>
+ 			<#case "padding">
+ 				<#assign paddingField = field>
+ 				<#assign simpleTypeReference = paddingField.type>
+ 
+ 	// Padding Field (padding)
+ 	{
+ 		_timesPadding := (${helper.toParseExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
+ 		for ;(io.HasMore(${helper.getNumBits(simpleTypeReference)})) && (_timesPadding > 0);_timesPadding-- {
+ 			// Just read the padding data and ignore it
+ 			_, _err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
+ 			if _err != nil {
+ 				return nil, errors.New("Error parsing 'padding' field " + _err.Error())
+ 			}
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "reserved">
+ 				<#assign reservedField = field>
+ 				<#assign simpleTypeReference = reservedField.type>
+ 
+ 	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+ 	{
+ 		reserved, _err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
+ 		if _err != nil {
+ 			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+ 		}
+ 		if ${helper.toTypeSafeCompare(reservedField)} {
+ 			log.Info().Fields(map[string]interface{}{
+ 				"expected value": ${helper.getReservedValue(reservedField)},
+ 				"got value": reserved,
+ 			}).Msg("Got unexpected response.")
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "simple">
+ 				<#assign simpleField = field>
+ 
+ 	// Simple Field (${simpleField.name})
+ 	${simpleField.name}, _${simpleField.name}Err := <#if helper.isSimpleTypeReference(simpleField.type)>${helper.getReadBufferReadMethodCall(simpleField.type)}<#else>${simpleField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*<#elseif helper.needsReferenceForParserArgument(parserArgument.name, helper.getArgumentType(simpleField.type, parserArgument?index))> [...]
+ 	if _${simpleField.name}Err != nil {
+ 			<#if helper.isEnumField(field)>
+ 		return nil, errors.New("Error parsing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
+ 			<#else>
+ 		return nil, errors.New("Error parsing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
+ 			</#if>
+ 	}
+ 				<#break>
+ 
+ 			<#case "switch">
+ 				<#assign switchField = field>
+ 
+ 	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+ 	var _parent *${type.name}
+ 	var typeSwitchError error
+ 	switch {
+ 				<#list switchField.cases as case>
+ 	<#if case.discriminatorValues?has_content>case <#list case.discriminatorValues as discriminatorValue><#if helper.isEnumExpression(discriminatorValue)>*</#if>${helper.toParseExpression(null, switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == <#if helper.isEnumExpression(discriminatorValue)>${helper.getEnumExpression(discriminatorValue)}<#else>${discriminatorValue}</#if><#sep> && </#sep></#list></#if>:
+ 		_parent, typeSwitchError = ${case.name}Parse(io<#if case.parserArguments?has_content>, <#list case.parserArguments as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${parserArgument.name}<#sep>, </#sep></#list></#if>)
+ 				</#list>
+ 	}
+ 	if typeSwitchError != nil {
+ 		return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
+ 	}
+ 				<#break>
+ 
+ 			<#case "virtual">
+ 				<#assign virtualField = field>
+ 
+ 	// Virtual field (Just declare a local variable so we can access it in the parser)
+ 	${virtualField.name}, _${virtualField.name}Err := ${helper.toParseExpression(virtualField, virtualField.valueExpression, type.parserArguments)}
+ 	if _${virtualField.name}Err != nil {
+ 		return nil, errors.New("Error parsing '${virtualField.name}' field " + _${virtualField.name}Err.Error())
+ 	}
+ 				<#break>
+ 		</#switch>
+ 	</#list>
+ 
+ 	<#if helper.isDiscriminatedParentTypeDefinition()>
+ 	// Finish initializing
+ 	_parent.Child.InitializeParent(_parent<#if type.propertyFields?has_content>, <#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list></#if>)
+ 	return _parent, nil
+ 	<#elseif type.parentType?has_content>
+ 	// Create a partially initialized instance
+ 	_child := &${type.name}{
+ 		<#list type.propertyFields as field>
+ 		${field.name?cap_first}: ${field.name},
+ 		</#list>
+ 		Parent: &${type.parentType.name}{},
+ 	}
+ 	_child.Parent.Child = _child
+ 	return _child.Parent, nil
+ 	<#else>
+ 	// Create the instance
+ 	return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>), nil
+ 	</#if>
++>>>>>>> develop
  }
  
  <#if helper.isDiscriminatedParentTypeDefinition()>
@@@ -681,217 -670,213 +1136,427 @@@ func (m *${type.name}) SerializeParent(
  <#else>
  func (m *${type.name}) Serialize(io utils.WriteBuffer<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
  </#if>
++<<<<<<< HEAD
 +    <#assign arraySizeInBytesHelpers=helper.requiresHelperFunctions("ARRAY_SIZE_IN_BYTES")>
 +    <#if arraySizeInBytesHelpers?has_content>
 +        <#list arraySizeInBytesHelpers?keys as key>
 +            <#assign typeName=arraySizeInBytesHelpers[key]>
 +    ${key}ArraySizeInBytes := func(items []*${typeName}) uint32 {
 +        var sizeInBytes uint32 = 0
 +        for _, v := range items {
 +            sizeInBytes += uint32(v.LengthInBytes())
 +        }
 +        return sizeInBytes
 +    }
 +        </#list>
 +    </#if>
 +    <#if helper.isDiscriminatedChildTypeDefinition()>
 +    ser := func() error {
 +    </#if>
 +    <#list type.fields as field>
 +        <#switch field.typeName>
 +            <#case "array">
 +                <#assign arrayField = field>
 +                <#assign simpleTypeReference = arrayField.type>
 +
 +    // Array Field (${arrayField.name})
 +    if m.${arrayField.name?cap_first} != nil {
 +                <#if helper.isComplexTypeReference(arrayField.type) && (helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true))>
 +        itemCount := uint16(len(m.${arrayField.name?cap_first}))
 +        var curItem uint16 = 0
 +                </#if>
 +        for _, _element := range m.${arrayField.name?cap_first} {
 +                <#if helper.isSimpleTypeReference(arrayField.type)>
 +                    <#assign simpleTypeReference = arrayField.type>
 +            _elementErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "_element")}
 +                <#else>
 +                    <#assign complexTypeReference = arrayField.type>
 +                    <#if helper.needsVariable(arrayField, "lastItem", true)>
 +            var lastItem bool = curItem == (itemCount - 1)
 +                    </#if>
 +            _elementErr := _element.Serialize(io<#if helper.getSerializerTerms(field.params)?has_content>, <#list helper.getSerializerTerms(field.params) as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
 +                </#if>
 +            if _elementErr != nil {
 +                return errors.New("Error serializing '${arrayField.name}' field " + _elementErr.Error())
 +            }
 +                <#if helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true)>
 +            curItem++
 +                </#if>
 +        }
 +    }
 +                <#break>
 +            <#case "checksum">
 +                <#assign checksumField = field>
 +                <#assign simpleTypeReference = checksumField.type>
 +
 +    // Checksum Field (checksum) (Calculated)
 +    {
 +        _checksum := ${helper.getLanguageTypeNameForField(field)}(${helper.getNullValueForTypeReference(checksumField.type)})
 +        // Create an array of all the bytes written in this message element so far.
 +        checksumRawData []uint8 = io.getBytes(startPos, io.GetPos())
 +        _checksum = ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(checksumField, checksumField.checksumExpression, type.parserArguments)})
 +        _checksumErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_checksum)")}
 +        if _elementErr != nil {
 +            return errors.New("Error serializing 'checksum' field " + _elementErr.Error())
 +        }
 +    }
 +                <#break>
 +            <#case "const">
 +                <#assign constField = field>
 +                <#assign simpleTypeReference = constField.type>
 +
 +    // Const Field (${constField.name})
 +    _${constField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)}
 +    if _${constField.name}Err != nil {
 +        return errors.New("Error serializing '${constField.name}' field " + _${constField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "discriminator">
 +                <#assign discriminatorField = field>
 +                <#assign simpleTypeReference = discriminatorField.type>
 +
 +    // Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
 +    ${discriminatorField.name} := ${helper.getLanguageTypeNameForField(field)}(child.${discriminatorField.name?cap_first}())
 +             <#if helper.isEnumField(field)>
 +     _${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(discriminatorField.type), "(" + discriminatorField.name + ")")}
 +            <#else>
 +    _${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
 +            </#if>
 +    if _${discriminatorField.name}Err != nil {
 +        return errors.New("Error serializing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "enum">
 +                <#assign enumField = field>
 +
 +    // Enum field (${enumField.name})
 +    ${enumField.name} := Cast${helper.getLanguageTypeNameForField(field)}(m.${enumField.name?cap_first})
 +    _${enumField.name}Err := ${enumField.name}.Serialize(io)
 +    if _${enumField.name}Err != nil {
 +        return errors.New("Error serializing '${enumField.name}' field " + _${enumField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "implicit">
 +                <#assign implicitField = field>
 +                <#assign simpleTypeReference = implicitField.type>
 +
 +    // Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 +    ${implicitField.name} := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(implicitField, implicitField.serializeExpression, type.parserArguments)})
 +    _${implicitField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + implicitField.name + ")")}
 +    if _${implicitField.name}Err != nil {
 +        return errors.New("Error serializing '${implicitField.name}' field " + _${implicitField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "manualArray">
 +                <#assign manualArrayField = field>
 +
 +    // Manual Array Field (${manualArrayField.name})
 +    if m.${manualArrayField.name?cap_first} != nil {
 +        for(${helper.getLanguageTypeNameForField(field)} element : m.${manualArrayField.name?cap_first}) {
 +            ${helper.toSerializationExpression(manualArrayField, manualArrayField.serializeExpression, type.parserArguments)}
 +        }
 +    }
 +                <#break>
 +            <#case "manual">
 +                <#assign manualField = field>
 +
 +    // Manual Field (${manualField.name})
 +    ${helper.toSerializationExpression(manualField, manualField.serializeExpression, type.parserArguments)}
 +                <#break>
 +            <#case "optional">
 +                <#assign optionalField = field>
 +
 +    // Optional Field (${optionalField.name}) (Can be skipped, if the value is null)
 +    var ${optionalField.name} *${helper.getLanguageTypeNameForField(field)} = nil
 +    if m.${optionalField.name?cap_first} != nil {
 +                <#if helper.isSimpleTypeReference(optionalField.type)>
 +                    <#assign simpleTypeReference = optionalField.type>
 +        ${optionalField.name} = m.${optionalField.name?cap_first}
 +        _${optionalField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "*(" + optionalField.name + ")")}
 +                <#else>
 +                    <#assign complexTypeReference = optionalField.type>
 +        ${optionalField.name} = m.${optionalField.name?cap_first}
 +        _${optionalField.name}Err := ${optionalField.name}.Serialize(io)
 +                </#if>
 +        if _${optionalField.name}Err != nil {
 +            return errors.New("Error serializing '${optionalField.name}' field " + _${optionalField.name}Err.Error())
 +        }
 +    }
 +                <#break>
 +            <#case "padding">
 +                <#assign paddingField = field>
 +                <#assign simpleTypeReference = paddingField.type>
 +
 +    // Padding Field (padding)
 +    {
 +        _timesPadding := uint8(${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
 +        for ;_timesPadding > 0; _timesPadding-- {
 +            _paddingValue := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(paddingField, paddingField.paddingValue, type.parserArguments)})
 +            _paddingErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_paddingValue)")}
 +            if _paddingErr != nil {
 +                return errors.New("Error serializing 'padding' field " + _paddingErr.Error())
 +            }
 +        }
 +    }
 +                <#break>
 +            <#case "reserved">
 +                <#assign reservedField = field>
 +                <#assign simpleTypeReference = reservedField.type>
 +
 +    // Reserved Field (reserved)
 +    {
 +        _err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, helper.getReservedValue(field))}
 +        if _err != nil {
 +            return errors.New("Error serializing 'reserved' field " + _err.Error())
 +        }
 +    }
 +                <#break>
 +            <#case "simple">
 +                <#assign simpleField = field>
 +
 +    // Simple Field (${simpleField.name})
 +                <#if helper.isSimpleTypeReference(simpleField.type)>
 +                    <#assign simpleTypeReference = simpleField.type>
 +    ${simpleField.name} := ${helper.getLanguageTypeNameForField(field)}(m.${simpleField.name?cap_first})
 +    _${simpleField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + simpleField.name + ")")}
 +                <#else>
 +                    <#assign complexTypeReference = simpleField.type>
 +    _${simpleField.name}Err := m.${simpleField.name?cap_first}.Serialize(io)
 +                </#if>
 +    if _${simpleField.name}Err != nil {
 +        return errors.New("Error serializing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
 +    }
 +                <#break>
 +            <#case "switch">
 +                <#assign switchField = field>
 +
 +    // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
 +    _typeSwitchErr := serializeChildFunction()
 +    if _typeSwitchErr != nil {
 +        return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
 +    }
 +                <#break>
 +            <#case "virtual">
 +                <#break>
 +        </#switch>
 +    </#list>
 +
 +    <#if helper.isDiscriminatedChildTypeDefinition()>
 +        return nil
 +    }
 +    return m.Parent.SerializeParent(io, m, ser)
 +    <#else>
 +    return nil
 +    </#if>
++=======
+ 	<#assign arraySizeInBytesHelpers=helper.requiresHelperFunctions("ARRAY_SIZE_IN_BYTES")>
+ 	<#if arraySizeInBytesHelpers?has_content>
+ 		<#list arraySizeInBytesHelpers?keys as key>
+ 			<#assign typeName=arraySizeInBytesHelpers[key]>
+ 	${key}ArraySizeInBytes := func(items []*${typeName}) uint32 {
+ 		var sizeInBytes uint32 = 0
+ 		for _, v := range items {
+ 			sizeInBytes += uint32(v.LengthInBytes())
+ 		}
+ 		return sizeInBytes
+ 	}
+ 		</#list>
+ 	</#if>
+ 	<#if helper.isDiscriminatedChildTypeDefinition()>
+ 	ser := func() error {
+ 	</#if>
+ 	<#list type.fields as field>
+ 		<#switch field.typeName>
+ 			<#case "array">
+ 				<#assign arrayField = field>
+ 				<#assign simpleTypeReference = arrayField.type>
+ 
+ 	// Array Field (${arrayField.name})
+ 	if m.${arrayField.name?cap_first} != nil {
+ 				<#if helper.isComplexTypeReference(arrayField.type) && (helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true))>
+ 		itemCount := uint16(len(m.${arrayField.name?cap_first}))
+ 		var curItem uint16 = 0
+ 				</#if>
+ 		for _, _element := range m.${arrayField.name?cap_first} {
+ 				<#if helper.isSimpleTypeReference(arrayField.type)>
+ 					<#assign simpleTypeReference = arrayField.type>
+ 			_elementErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "_element")}
+ 				<#else>
+ 					<#assign complexTypeReference = arrayField.type>
+ 					<#if helper.needsVariable(arrayField, "lastItem", true)>
+ 			var lastItem bool = curItem == (itemCount - 1)
+ 					</#if>
+ 			_elementErr := _element.Serialize(io<#if helper.getSerializerTerms(field.params)?has_content>, <#list helper.getSerializerTerms(field.params) as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
+ 				</#if>
+ 			if _elementErr != nil {
+ 				return errors.New("Error serializing '${arrayField.name}' field " + _elementErr.Error())
+ 			}
+ 				<#if helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true)>
+ 			curItem++
+ 				</#if>
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "checksum">
+ 				<#assign checksumField = field>
+ 				<#assign simpleTypeReference = checksumField.type>
+ 
+ 	// Checksum Field (checksum) (Calculated)
+ 	{
+ 		_checksum := ${helper.getLanguageTypeNameForField(field)}(${helper.getNullValueForTypeReference(checksumField.type)})
+ 		// Create an array of all the bytes written in this message element so far.
+ 		checksumRawData []uint8 = io.getBytes(startPos, io.GetPos())
+ 		_checksum = ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(checksumField, checksumField.checksumExpression, type.parserArguments)})
+ 		_checksumErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_checksum)")}
+ 		if _elementErr != nil {
+ 			return errors.New("Error serializing 'checksum' field " + _elementErr.Error())
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "const">
+ 				<#assign constField = field>
+ 				<#assign simpleTypeReference = constField.type>
+ 
+ 	// Const Field (${constField.name})
+ 	_${constField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)}
+ 	if _${constField.name}Err != nil {
+ 		return errors.New("Error serializing '${constField.name}' field " + _${constField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "discriminator">
+ 				<#assign discriminatorField = field>
+ 				<#assign simpleTypeReference = discriminatorField.type>
+ 
+ 	// Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
+ 	${discriminatorField.name} := ${helper.getLanguageTypeNameForField(field)}(child.${discriminatorField.name?cap_first}())
+ 	_${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
+ 	if _${discriminatorField.name}Err != nil {
+ 		return errors.New("Error serializing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "enum">
+ 				<#assign enumField = field>
+ 
+ 	// Enum field (${enumField.name})
+ 	${enumField.name} := Cast${helper.getLanguageTypeNameForField(field)}(m.${enumField.name?cap_first})
+ 	_${enumField.name}Err := ${enumField.name}.Serialize(io)
+ 	if _${enumField.name}Err != nil {
+ 		return errors.New("Error serializing '${enumField.name}' field " + _${enumField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "implicit">
+ 				<#assign implicitField = field>
+ 				<#assign simpleTypeReference = implicitField.type>
+ 
+ 	// Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
+ 	${implicitField.name} := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(implicitField, implicitField.serializeExpression, type.parserArguments)})
+ 	_${implicitField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + implicitField.name + ")")}
+ 	if _${implicitField.name}Err != nil {
+ 		return errors.New("Error serializing '${implicitField.name}' field " + _${implicitField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "manualArray">
+ 				<#assign manualArrayField = field>
+ 
+ 	// Manual Array Field (${manualArrayField.name})
+ 	if m.${manualArrayField.name?cap_first} != nil {
+ 		for(${helper.getLanguageTypeNameForField(field)} element : m.${manualArrayField.name?cap_first}) {
+ 			${helper.toSerializationExpression(manualArrayField, manualArrayField.serializeExpression, type.parserArguments)}
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "manual">
+ 				<#assign manualField = field>
+ 
+ 	// Manual Field (${manualField.name})
+ 	${helper.toSerializationExpression(manualField, manualField.serializeExpression, type.parserArguments)}
+ 				<#break>
+ 			<#case "optional">
+ 				<#assign optionalField = field>
+ 
+ 	// Optional Field (${optionalField.name}) (Can be skipped, if the value is null)
+ 	var ${optionalField.name} *${helper.getLanguageTypeNameForField(field)} = nil
+ 	if m.${optionalField.name?cap_first} != nil {
+ 				<#if helper.isSimpleTypeReference(optionalField.type)>
+ 					<#assign simpleTypeReference = optionalField.type>
+ 		${optionalField.name} = m.${optionalField.name?cap_first}
+ 		_${optionalField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "*(" + optionalField.name + ")")}
+ 				<#else>
+ 					<#assign complexTypeReference = optionalField.type>
+ 		${optionalField.name} = m.${optionalField.name?cap_first}
+ 		_${optionalField.name}Err := ${optionalField.name}.Serialize(io)
+ 				</#if>
+ 		if _${optionalField.name}Err != nil {
+ 			return errors.New("Error serializing '${optionalField.name}' field " + _${optionalField.name}Err.Error())
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "padding">
+ 				<#assign paddingField = field>
+ 				<#assign simpleTypeReference = paddingField.type>
+ 
+ 	// Padding Field (padding)
+ 	{
+ 		_timesPadding := uint8(${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
+ 		for ;_timesPadding > 0; _timesPadding-- {
+ 			_paddingValue := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(paddingField, paddingField.paddingValue, type.parserArguments)})
+ 			_paddingErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_paddingValue)")}
+ 			if _paddingErr != nil {
+ 				return errors.New("Error serializing 'padding' field " + _paddingErr.Error())
+ 			}
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "reserved">
+ 				<#assign reservedField = field>
+ 				<#assign simpleTypeReference = reservedField.type>
+ 
+ 	// Reserved Field (reserved)
+ 	{
+ 		_err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, helper.getReservedValue(field))}
+ 		if _err != nil {
+ 			return errors.New("Error serializing 'reserved' field " + _err.Error())
+ 		}
+ 	}
+ 				<#break>
+ 			<#case "simple">
+ 				<#assign simpleField = field>
+ 
+ 	// Simple Field (${simpleField.name})
+ 				<#if helper.isSimpleTypeReference(simpleField.type)>
+ 					<#assign simpleTypeReference = simpleField.type>
+ 	${simpleField.name} := ${helper.getLanguageTypeNameForField(field)}(m.${simpleField.name?cap_first})
+ 	_${simpleField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + simpleField.name + ")")}
+ 				<#else>
+ 					<#assign complexTypeReference = simpleField.type>
+ 	_${simpleField.name}Err := m.${simpleField.name?cap_first}.Serialize(io)
+ 				</#if>
+ 	if _${simpleField.name}Err != nil {
+ 		return errors.New("Error serializing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
+ 	}
+ 				<#break>
+ 			<#case "switch">
+ 				<#assign switchField = field>
+ 
+ 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+ 	_typeSwitchErr := serializeChildFunction()
+ 	if _typeSwitchErr != nil {
+ 		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+ 	}
+ 				<#break>
+ 			<#case "virtual">
+ 				<#break>
+ 		</#switch>
+ 	</#list>
+ 
+ 	<#if helper.isDiscriminatedChildTypeDefinition()>
+ 		return nil
+ 	}
+ 	return m.Parent.SerializeParent(io, m, ser)
+ 	<#else>
+ 	return nil
+ 	</#if>
++>>>>>>> develop
  }
  
  func (m *${type.name}) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
diff --cc build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index 188e568,4a538c4..a3b3df7
--- a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@@ -26,10 -26,8 +26,10 @@@ import org.apache.plc4x.plugins.codegen
  import org.apache.plc4x.plugins.codegenerator.types.fields.*;
  import org.apache.plc4x.plugins.codegenerator.types.references.*;
  import org.apache.plc4x.plugins.codegenerator.types.terms.*;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
  
- import java.util.*;
+ import java.util.Map;
  import java.util.function.Function;
  
  @SuppressWarnings({"unused", "WeakerAccess"})
@@@ -77,10 -73,18 +77,24 @@@ public class JavaLanguageTemplateHelpe
          return getLanguageTypeNameForTypeReference(typeReference, false);
      }
  
+     public String adjustLiterals(String javaType, String value) {
+         switch (javaType) {
+             case "long":
+             case "Long":
+                 return value + "L";
+             default:
+                 return value;
+         }
+     }
+ 
      public String getLanguageTypeNameForTypeReference(TypeReference typeReference, boolean allowPrimitive) {
++<<<<<<< HEAD
 +        logger.debug("Getting name of Java class for given type reference");
 +        logger.debug("{}", typeReference.toString());
 +        if(typeReference instanceof SimpleTypeReference) {
++=======
+         if (typeReference instanceof SimpleTypeReference) {
++>>>>>>> develop
              SimpleTypeReference simpleTypeReference = (SimpleTypeReference) typeReference;
              switch (simpleTypeReference.getBaseType()) {
                  case BIT: {
diff --cc build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
index 184d99d,5df52aa..8bc6001
--- a/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
@@@ -95,12 -95,7 +95,16 @@@ public<#if helper.isDiscriminatedParent
          <#if !helper.isNonDiscriminatorField(discriminatorName)>
      @JsonIgnore
      public ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])} get${discriminatorName?cap_first}() {
++<<<<<<< HEAD
 +            <#if !helper.isComplexTypeReference(helper.getDiscriminatorTypes()[discriminatorName])>
 +                return <#if helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]) = "String"><#if discriminatorValue??>"${discriminatorValue}"<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if><#else><#if discriminatorValue??>${discriminatorValue}<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if></#if>;
 +            <#else>
 +                return <#if helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]) = "String"><#if discriminatorValue??>"${discriminatorValue}"<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if><#else><#if discriminatorValue??>${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}.${discriminatorValue}<#else>${helper.getLanguageTypeNameForTypeReference(help [...]
 +            </#if>
 +
++=======
+         return <#if discriminatorValue??>${helper.adjustLiterals(helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]),discriminatorValue)}<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if>;
++>>>>>>> develop
      }
          </#if>
      </#list>
diff --cc protocols/ads/src/main/resources/protocols/ads/ads.mspec
index a89a279,99b4e24..fdffedc
--- a/protocols/ads/src/main/resources/protocols/ads/ads.mspec
+++ b/protocols/ads/src/main/resources/protocols/ads/ads.mspec
@@@ -192,13 -192,13 +192,13 @@@
  
  [discriminatedType 'AdsData' [CommandId 'commandId', bit 'response']
      [typeSwitch 'commandId', 'response'
 -        ['CommandId.INVALID', 'false' AdsInvalidRequest]
 -        ['CommandId.INVALID', 'true' AdsInvalidResponse]
 +        ['INVALID', 'false' AdsInvalidRequest]
 +        ['INVALID', 'true' AdsInvalidResponse]
  
 -        ['CommandId.ADS_READ_DEVICE_INFO', 'false' AdsReadDeviceInfoRequest]
 -        ['CommandId.ADS_READ_DEVICE_INFO', 'true' AdsReadDeviceInfoResponse
 +        ['ADS_READ_DEVICE_INFO', 'false' AdsReadDeviceInfoRequest]
 +        ['ADS_READ_DEVICE_INFO', 'true' AdsReadDeviceInfoResponse
              // 4 bytes	ADS error number.
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
              // Version	1 byte	Major version number
              [simple uint 8  'majorVersion']
              // Version	1 byte	Minor version number
@@@ -217,9 -217,9 +217,9 @@@
              // 4 bytes	Length of the data (in bytes) which should be read.
              [simple uint 32 'length']
          ]
 -        ['CommandId.ADS_READ', 'true' AdsReadResponse
 +        ['ADS_READ', 'true' AdsReadResponse
              // 4 bytes	ADS error number
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
              // 4 bytes	Length of data which are supplied back.
              [implicit uint 32 'length' 'COUNT(data)']
              // n bytes	Data which are supplied back.
@@@ -236,15 -236,15 +236,15 @@@
              // n bytes	Data which are written in the ADS device.
              [array int 8 'data' count 'length']
          ]
 -        ['CommandId.ADS_WRITE', 'true' AdsWriteResponse
 +        ['ADS_WRITE', 'true' AdsWriteResponse
              // 4 bytes	ADS error number
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
          ]
  
 -        ['CommandId.ADS_READ_STATE', 'false' AdsReadStateRequest]
 -        ['CommandId.ADS_READ_STATE', 'true' AdsReadStateResponse
 +        ['ADS_READ_STATE', 'false' AdsReadStateRequest]
 +        ['ADS_READ_STATE', 'true' AdsReadStateResponse
              // 4 bytes	ADS error number
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
              // 2 bytes	New ADS status (see data type ADSSTATE of the ADS-DLL).
              [simple uint 16 'adsState']
              // 2 bytes	New device status.
@@@ -261,12 -261,12 +261,12 @@@
              // n bytes	Additional data which are sent to the ADS device
              [array int 8 'data' count 'length']
          ]
 -        ['CommandId.ADS_WRITE_CONTROL', 'true' AdsWriteControlResponse
 +        ['ADS_WRITE_CONTROL', 'true' AdsWriteControlResponse
              // 4 bytes	ADS error number
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
          ]
  
 -        ['CommandId.ADS_ADD_DEVICE_NOTIFICATION', 'false' AdsAddDeviceNotificationRequest
 +        ['ADS_ADD_DEVICE_NOTIFICATION', 'false' AdsAddDeviceNotificationRequest
              // 4 bytes	Index Group of the data, which should be sent per notification.
              [simple uint 32 'indexGroup']
              // 4 bytes	Index Offset of the data, which should be sent per notification.
@@@ -283,9 -283,9 +283,9 @@@
              // 16bytes	Must be set to 0
              [reserved   uint       128       '0x0000' ]
          ]
 -        ['CommandId.ADS_ADD_DEVICE_NOTIFICATION', 'true' AdsAddDeviceNotificationResponse
 +        ['ADS_ADD_DEVICE_NOTIFICATION', 'true' AdsAddDeviceNotificationResponse
              // 4 bytes	ADS error number
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
              // 4 bytes	Handle of notification
              [simple uint 32 'notificationHandle']
          ]
@@@ -294,12 -294,12 +294,12 @@@
              // 4 bytes	Handle of notification
              [simple uint 32 'notificationHandle']
          ]
 -        ['CommandId.ADS_DELETE_DEVICE_NOTIFICATION', 'true' AdsDeleteDeviceNotificationResponse
 +        ['ADS_DELETE_DEVICE_NOTIFICATION', 'true' AdsDeleteDeviceNotificationResponse
              // 4 bytes	ADS error number
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
          ]
  
 -        ['CommandId.ADS_DEVICE_NOTIFICATION', 'false' AdsDeviceNotificationRequest
 +        ['ADS_DEVICE_NOTIFICATION', 'false' AdsDeviceNotificationRequest
              // 4 bytes	Size of data in byte.
              [simple uint 32 'length']
              // 4 bytes	Number of elements of type AdsStampHeader.
@@@ -323,9 -323,9 +323,9 @@@
              // n bytes	Data which are written in the ADS device.
              [array int 8 'data' count 'writeLength - (COUNT(items) * 12)']
          ]
 -        ['CommandId.ADS_READ_WRITE', 'true' AdsReadWriteResponse
 +        ['ADS_READ_WRITE', 'true' AdsReadWriteResponse
              // 4 bytes	ADS error number
-             [enum ReturnCode 'result']
+             [simple ReturnCode 'result']
              // 4 bytes	Length of data in byte.
              [implicit uint 32 'length'  'COUNT(data)']
              // n bytes Additional data which are sent to the ADS device
@@@ -496,10 -497,10 +497,17 @@@
      ]
  ]
  
++<<<<<<< HEAD
 +[enum 'AdsDataType' [uint 8 'numBytes', string '-1' 'dataFormatName']
 +    [BOOL       ['1', 'IEC61131_BOOL']]
 +    [BIT        ['1', 'IEC61131_BOOL']]
 +    [BIT8       ['1', 'IEC61131_BOOL']]
++=======
+ [enum int 8 'AdsDataType' [uint 16 'numBytes', string 'dataFormatName']
+     ['0x01' BOOL       ['1', 'IEC61131_BOOL']]
+     ['0x02' BIT        ['1', 'IEC61131_BOOL']]
+     ['0x03' BIT8       ['1', 'IEC61131_BOOL']]
++>>>>>>> develop
      // -----------------------------------------
      // Bit-strings
      // -----------------------------------------
diff --cc protocols/knxnetip/src/main/xslt/knx-types.xsl
index b9c2ff5,088f016..32a1047
--- a/protocols/knxnetip/src/main/xslt/knx-types.xsl
+++ b/protocols/knxnetip/src/main/xslt/knx-types.xsl
@@@ -103,7 -103,7 +103,11 @@@
      <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:InterfaceObjectProperties/knx:InterfaceObjectProperty"/>
  ]
  
++<<<<<<< HEAD
 +[enum uint 8 'KnxPropertyDataType' [uint 8 'number', uint 8 'sizeInBytes', string '-1' 'name']
++=======
+ [enum uint 6 'KnxPropertyDataType' [uint 8 'number', uint 8 'sizeInBytes', string 'name']
++>>>>>>> develop
      ['0' PDT_UNKNOWN    ['0', '0',  '"Unknown Property Data Type"']]
      <xsl:apply-templates select="knx:KNX/knx:MasterData/knx:PropertyDataTypes/knx:PropertyDataType"/>
  ]
@@@ -445,8 -445,7 +449,12 @@@
                          <xsl:when test="$datapointSubtype/knx:Format/knx:String/@Encoding = 'iso-8859-1'">ISO-8859-1</xsl:when>
                      </xsl:choose>
                  </xsl:variable>
++<<<<<<< HEAD
 +            [reserved uint 8   '0x0']
 +            [simple   string '<xsl:value-of select="$datapointSubtype/knx:Format/knx:String/@Width"/>' '<xsl:value-of select="$encoding"/>' 'value']
++=======
+             [simple   string <xsl:value-of select="$datapointSubtype/knx:Format/knx:String/@Width"/> '<xsl:value-of select="$encoding"/>' 'value']
++>>>>>>> develop
              </xsl:when>
              <xsl:when test="$datapointSubtype/knx:Format/knx:UnsignedInteger">
                  <xsl:choose>


[plc4x] 02/02: Integration test is working in Go, sorting through some failed tests.

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hutcheb pushed a commit to branch feature/string_enum_mspec
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 409d940c194c8293378f84b6ca15e8d6c30e062d
Author: hutcheb <be...@gmail.com>
AuthorDate: Tue Mar 16 06:41:45 2021 -0400

    Integration test is working in Go, sorting through some failed tests.
---
 .../plc4x/language/c/CLanguageTemplateHelper.java  |    5 +-
 .../resources/templates/c/enum-template-c.ftlh     |    2 +-
 build-utils/language-go/pom.xml                    |    2 +
 .../language/go/GoLanguageTemplateHelper.java      |    6 +-
 .../resources/templates/go/model-template.ftlh     |  747 +----------
 .../language-go/src/test/resources/plc4go/go.mod   |   30 +
 .../resources/{integration-test => plc4go}/pom.xml |   63 +-
 .../language/java/JavaLanguageTemplateHelper.java  |    7 -
 .../resources/templates/java/enum-template.ftlh    |    2 +-
 .../main/resources/templates/java/io-template.ftlh |    4 +-
 .../resources/templates/java/pojo-template.ftlh    |   12 +-
 .../src/main/resources/protocols/test/test.mspec   |   20 +-
 .../model/AdsAddDeviceNotificationRequest.go       |    2 +-
 .../model/AdsAddDeviceNotificationResponse.go      |    2 +-
 .../internal/plc4go/ads/readwrite/model/AdsData.go |   40 +-
 .../model/AdsDeleteDeviceNotificationRequest.go    |    2 +-
 .../model/AdsDeleteDeviceNotificationResponse.go   |    2 +-
 .../model/AdsDeviceNotificationRequest.go          |    2 +-
 .../model/AdsDeviceNotificationResponse.go         |    2 +-
 .../ads/readwrite/model/AdsInvalidRequest.go       |    2 +-
 .../ads/readwrite/model/AdsInvalidResponse.go      |    2 +-
 .../readwrite/model/AdsReadDeviceInfoRequest.go    |    2 +-
 .../readwrite/model/AdsReadDeviceInfoResponse.go   |    2 +-
 .../plc4go/ads/readwrite/model/AdsReadRequest.go   |    2 +-
 .../plc4go/ads/readwrite/model/AdsReadResponse.go  |    2 +-
 .../ads/readwrite/model/AdsReadStateRequest.go     |    2 +-
 .../ads/readwrite/model/AdsReadStateResponse.go    |    2 +-
 .../ads/readwrite/model/AdsReadWriteRequest.go     |    2 +-
 .../ads/readwrite/model/AdsReadWriteResponse.go    |    2 +-
 .../ads/readwrite/model/AdsWriteControlRequest.go  |    2 +-
 .../ads/readwrite/model/AdsWriteControlResponse.go |    2 +-
 .../plc4go/ads/readwrite/model/AdsWriteRequest.go  |    2 +-
 .../plc4go/ads/readwrite/model/AdsWriteResponse.go |    2 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |    1 -
 .../readwrite/model/BACnetConfirmedServiceACK.go   |    1 -
 .../model/BACnetConfirmedServiceRequest.go         |    1 -
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |    1 -
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |    1 -
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |    1 -
 .../model/BACnetUnconfirmedServiceRequest.go       |    1 -
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |    1 -
 .../plc4go/bacnetip/readwrite/model/NLM.go         |    1 -
 .../plc4go/knxnetip/readwrite/model/Apdu.go        |    1 -
 .../plc4go/knxnetip/readwrite/model/ApduControl.go |    1 -
 .../plc4go/knxnetip/readwrite/model/ApduData.go    |    1 -
 .../plc4go/knxnetip/readwrite/model/ApduDataExt.go |    1 -
 .../ApduDataExtPropertyDescriptionResponse.go      |    2 +-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |    1 -
 .../readwrite/model/CEMIAdditionalInformation.go   |    1 -
 .../knxnetip/readwrite/model/ComObjectTable.go     |    6 +-
 .../model/ComObjectTableRealisationType1.go        |    2 +-
 .../model/ComObjectTableRealisationType2.go        |    2 +-
 .../model/ComObjectTableRealisationType6.go        |    2 +-
 .../model/ConnectionRequestInformation.go          |    1 -
 .../readwrite/model/ConnectionResponseDataBlock.go |    1 -
 .../knxnetip/readwrite/model/DeviceDescriptor.go   |  116 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       | 1400 ++++++++++----------
 .../knxnetip/readwrite/model/KnxDatapointType.go   |  698 +++++-----
 .../readwrite/model/KnxInterfaceObjectProperty.go  |  864 ++++++------
 .../knxnetip/readwrite/model/KnxManufacturer.go    |  129 +-
 .../knxnetip/readwrite/model/KnxNetIpMessage.go    |    1 -
 .../plc4go/knxnetip/readwrite/model/KnxProperty.go |  176 +--
 .../readwrite/model/KnxPropertyDataType.go         |    6 +-
 .../plc4go/knxnetip/readwrite/model/LDataFrame.go  |    2 -
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |    1 -
 .../plc4go/modbus/readwrite/model/DataItem.go      |  136 +-
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |    2 -
 .../plc4go/s7/readwrite/model/COTPPacket.go        |    1 -
 .../plc4go/s7/readwrite/model/COTPParameter.go     |    1 -
 .../plc4go/s7/readwrite/model/S7Address.go         |    1 -
 .../plc4go/s7/readwrite/model/S7Message.go         |    1 -
 .../plc4go/s7/readwrite/model/S7Parameter.go       |    1 -
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |    1 -
 .../readwrite/model/S7VarRequestParameterItem.go   |    1 -
 .../plc4go/s7/readwrite/model/TransportSize.go     |   52 +-
 pom.xml                                            |    3 -
 .../ads/src/main/resources/protocols/ads/ads.mspec |   10 +-
 .../resources/protocols/knxnetip/knxnetip.mspec    |   68 +-
 protocols/knxnetip/src/main/xslt/knx-types.xsl     |   73 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |   52 +-
 .../plc4c/generated-sources/modbus/src/data_item.c |    2 +-
 .../modbus/src/modbus_constants.c                  |    1 -
 .../generated-sources/modbus/src/modbus_pdu.c      |   12 +-
 .../generated-sources/modbus/src/modbus_tcp_adu.c  |    1 -
 .../plc4c/generated-sources/s7/src/cotp_packet.c   |    6 +-
 .../generated-sources/s7/src/cotp_parameter.c      |    6 +-
 sandbox/plc4c/generated-sources/s7/src/data_item.c |    2 +-
 .../plc4c/generated-sources/s7/src/s7_address.c    |    6 +-
 .../plc4c/generated-sources/s7/src/s7_message.c    |    7 +-
 .../plc4c/generated-sources/s7/src/s7_parameter.c  |    6 +-
 .../s7/src/s7_parameter_user_data_item.c           |    6 +-
 .../s7/src/s7_payload_user_data_item.c             |    1 -
 .../s7/src/s7_var_request_parameter_item.c         |    6 +-
 .../plc4c/generated-sources/s7/src/tpkt_packet.c   |    1 -
 94 files changed, 2052 insertions(+), 2818 deletions(-)

diff --git a/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java b/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
index 4ff4d60..33e3d01 100644
--- a/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
+++ b/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
@@ -338,9 +338,8 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
             if ("null".equals(valueString)) {
                 return "-1";
             }
-            String typeName = valueString.substring(0, valueString.indexOf('.'));
-            String constantName = valueString.substring(valueString.indexOf('.') + 1);
-            return getCTypeName(typeName) + "_" + constantName;
+            String typeName = getLanguageTypeNameForTypeReference(typeReference);
+            return typeName + "_" + valueString;
         } else {
             return escapeValue(typeReference, valueString);
         }
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 2328390..dd4b265 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
@@ -92,7 +92,7 @@ ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))
   switch(value) {
         <#list helper.getUniqueEnumValues(type.enumValues) as enumValue>
     case ${helper.getCTypeName(type.name)}_${enumValue.name}: { /* '${enumValue.value}' */
-      return ${helper.escapeEnumValue(type.getConstantType(constantName), enumValue.getConstant(constantName))?no_esc};
+      return <#if helper.escapeValue(type.getConstantType(constantName), enumValue.getConstant(constantName)) == '-1'>-1<#elseif helper.isComplexTypeReference(type.getConstantType(constantName))><#if helper.isEnumTypeReference(type.getConstantType(constantName))>${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))}_${helper.escapeValue(type.getConstantType(constantName), enumValue.getConstant(constantName))}<#else>${helper.escapeEnumValue(type.getConstantType( [...]
     }<#sep>
     </#sep></#list>
 
diff --git a/build-utils/language-go/pom.xml b/build-utils/language-go/pom.xml
index f9c00d0..21558ac 100644
--- a/build-utils/language-go/pom.xml
+++ b/build-utils/language-go/pom.xml
@@ -57,6 +57,7 @@
 
   <build>
     <plugins>
+
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-invoker-plugin</artifactId>
@@ -65,6 +66,7 @@
           <debug>true</debug>
           <projectsDirectory>src/test/resources</projectsDirectory>
           <cloneProjectsTo>${project.build.directory}/integration-tests</cloneProjectsTo>
+
           <!-- Removed so that a local version of the build-tools could be used. Need to add it back in -->
           <!-- localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath -->
           <settingsFile>src/test/resources/settings.xml</settingsFile>
diff --git a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index ab96f7f..5e5bd32 100644
--- a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -309,7 +309,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             }
             case STRING: {
                 StringTypeReference stringTypeReference = (StringTypeReference) simpleTypeReference;
-                return "io.ReadString(" + stringTypeReference.getSizeInBits() + ")";
+                return "io.ReadString(" + stringTypeReference.getLength() + ")";
             }
         }
         return "Hurz";
@@ -368,7 +368,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
                 StringTypeReference stringTypeReference = (StringTypeReference) simpleTypeReference;
                 String encoding = ((stringTypeReference.getEncoding() != null) && (stringTypeReference.getEncoding().length() > 2)) ?
                     stringTypeReference.getEncoding().substring(1, stringTypeReference.getEncoding().length() - 1) : "UTF-8";
-                return "io.WriteString(" + stringTypeReference.getSizeInBits() + ", \"" +
+                return "io.WriteString(" + stringTypeReference.getLength() + ", \"" +
                     encoding + "\", " + fieldName + ")";
             }
         }
@@ -836,7 +836,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
         if (complexTypeDefinition.getFields().stream().anyMatch(field ->
             (field instanceof ConstField))/* || complexTypeDefinition.getAllPropertyFields().stream().anyMatch(
                 propertyField -> isSimpleField(propertyField))*/) {
-            imports.add("\"strconv\"");
+            imports.add("\"fmt\"");
         }
 
         if (isDiscriminatedParentTypeDefinition()) {
diff --git a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
index 2070da3..20adc88 100644
--- a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
@@ -206,143 +206,6 @@ func (m *${type.name}) GetTypeName() string {
 }
 
 func (m *${type.name}) LengthInBits() uint16 {
-<<<<<<< HEAD
-    lengthInBits := uint16(0)
-    <#list type.fields as field>
-        <#switch field.typeName>
-            <#case "array">
-                <#assign arrayField = field>
-
-    // Array field
-    if len(m.${arrayField.name?cap_first}) > 0 {
-                <#if helper.isSimpleTypeReference(arrayField.type)>
-                    <#assign simpleTypeReference = arrayField.type>
-        lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name?cap_first}))
-                <#else>
-        for _, element := range m.${arrayField.name?cap_first} {
-            lengthInBits += element.LengthInBits()
-        }
-                </#if>
-    }
-                <#break>
-            <#case "checksum">
-                <#assign checksumField = field>
-                <#assign simpleTypeReference = checksumField.type>
-
-    // Checksum Field (checksum)
-    lengthInBits += ${simpleTypeReference.sizeInBits}
-                <#break>
-            <#case "const">
-                <#assign constField = field>
-                <#assign simpleTypeReference = constField.type>
-
-    // Const Field (${constField.name})
-    lengthInBits += ${simpleTypeReference.sizeInBits}
-                <#break>
-            <#case "discriminator">
-                <#assign discriminatorField = field>
-                <#assign simpleTypeReference = discriminatorField.type>
-
-    // Discriminator Field (${discriminatorField.name})
-                <#if helper.isSimpleTypeReference(simpleTypeReference)>
-                    <#if helper.getLanguageTypeNameForTypeReference(discriminatorField.type) = "String">
-    lengthInBits += ${simpleTypeReference.getLength()};
-                    <#else>
-    lengthInBits += ${simpleTypeReference.sizeInBits};
-                    </#if>
-                <#elseif helper.isEnumField(discriminatorField)>
-    lengthInBits += ${helper.getEnumBaseTypeReference(discriminatorField.type).sizeInBits};
-                <#else>
-    lengthInBits += ${discriminatorField.name}.getLengthInBits();
-                </#if>
-                <#break>
-            <#case "enum">
-                <#assign enumField = field>
-
-    // Enum Field (${enumField.name})
-    lengthInBits += ${helper.getEnumBaseTypeReference(enumField.type).sizeInBits}
-                <#break>
-            <#case "implicit">
-                <#assign implicitField = field>
-                <#assign simpleTypeReference = implicitField.type>
-
-    // Implicit Field (${implicitField.name})
-    lengthInBits += ${simpleTypeReference.sizeInBits}
-                <#break>
-            <#case "manualArray">
-                <#assign manualArrayField = field>
-
-    // Manual Array Field (${manualArrayField.name})
-    lengthInBits += ${helper.toParseExpression(manualArrayField, manualArrayField.lengthExpression, type.parserArguments)} * 8
-                <#break>
-            <#case "manual">
-                <#assign manualField = field>
-
-    // Manual Field (${manualField.name})
-    lengthInBits += ${helper.toParseExpression(manualField, manualField.lengthExpression, type.parserArguments)} * 8
-                <#break>
-            <#case "optional">
-                <#assign optionalField = field>
-
-    // Optional Field (${optionalField.name})
-    if m.${optionalField.name?cap_first} != nil {
-                <#if helper.isSimpleTypeReference(optionalField.type)>
-                    <#assign simpleTypeReference = optionalField.type>
-        lengthInBits += ${simpleTypeReference.sizeInBits}
-                <#elseif helper.isEnumField(field)>
-        lengthInBits += ${helper.getEnumBaseTypeReference(optionalField.type).sizeInBits}
-                <#else>
-        lengthInBits += (*m.${optionalField.name?cap_first}).LengthInBits()
-                </#if>
-    }
-                <#break>
-            <#case "padding">
-                <#assign paddingField = field>
-                <#assign simpleTypeReference = paddingField.type>
-
-    // Padding Field (padding)
-            <#-- We're replacing the "lastItem" with 'false' here as the item itself can't know if it is the last -->
-    _timesPadding := uint8(${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)?replace("lastItem", "false")})
-    for ;_timesPadding > 0; _timesPadding-- {
-        lengthInBits += ${simpleTypeReference.sizeInBits}
-    }
-                <#break>
-            <#case "reserved">
-                <#assign reservedField = field>
-                <#assign simpleTypeReference = reservedField.type>
-
-    // Reserved Field (reserved)
-    lengthInBits += ${simpleTypeReference.sizeInBits}
-                <#break>
-            <#case "simple">
-                <#assign simpleField = field>
-
-    // Simple field (${simpleField.name})
-                <#if helper.isSimpleTypeReference(simpleField.type)>
-                    <#assign simpleTypeReference = simpleField.type>
-    lengthInBits += ${simpleTypeReference.sizeInBits}
-                <#elseif helper.isEnumField(field)>
-    lengthInBits += ${helper.getEnumBaseTypeReference(simpleField.type).sizeInBits}
-                <#else>
-    lengthInBits += m.${simpleField.name?cap_first}.LengthInBits()
-                </#if>
-                <#break>
-            <#case "switch">
-                <#assign switchField = field>
-
-    // Length of sub-type elements will be added by sub-type...
-    lengthInBits += m.Child.LengthInBits()
-                <#break>
-            <#case "virtual">
-                <#assign virtualField = field>
-
-    // A virtual field doesn't have any in- or output.
-                <#break>
-        </#switch>
-    </#list>
-
-    return lengthInBits
-=======
 	lengthInBits := uint16(0)
 	<#list type.fields as field>
 		<#switch field.typeName>
@@ -351,14 +214,17 @@ func (m *${type.name}) LengthInBits() uint16 {
 
 	// Array field
 	if len(m.${arrayField.name?cap_first}) > 0 {
-				<#if helper.isSimpleTypeReference(arrayField.type)>
-					<#assign simpleTypeReference = arrayField.type>
-		lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name?cap_first}))
-				<#else>
+            <#if helper.getLanguageTypeNameForTypeReference(arrayField.type) = "string">
+                <#assign simpleTypeReference = arrayField.type>
+        lengthInBits += ${simpleTypeReference.getLength()} * uint16(len(m.${arrayField.name?cap_first}))
+            <#elseif helper.isSimpleTypeReference(arrayField.type)>
+                <#assign simpleTypeReference = arrayField.type>
+        lengthInBits += ${simpleTypeReference.sizeInBits} * uint16(len(m.${arrayField.name?cap_first}))
+            <#else>
 		for _, element := range m.${arrayField.name?cap_first} {
 			lengthInBits += element.LengthInBits()
 		}
-				</#if>
+            </#if>
 	}
 				<#break>
 			<#case "checksum">
@@ -373,14 +239,27 @@ func (m *${type.name}) LengthInBits() uint16 {
 				<#assign simpleTypeReference = constField.type>
 
 	// Const Field (${constField.name})
-	lengthInBits += ${simpleTypeReference.sizeInBits}
+            <#if helper.getLanguageTypeNameForTypeReference(constField.type) = "string">
+    lengthInBits += ${simpleTypeReference.getLength()}
+            <#else>
+    lengthInBits += ${simpleTypeReference.sizeInBits}
+            </#if>
 				<#break>
 			<#case "discriminator">
 				<#assign discriminatorField = field>
 				<#assign simpleTypeReference = discriminatorField.type>
-
-	// Discriminator Field (${discriminatorField.name})
-	lengthInBits += ${simpleTypeReference.sizeInBits}
+    // Discriminator Field (${discriminatorField.name})
+    <#if helper.isSimpleTypeReference(simpleTypeReference)>
+        <#if helper.getLanguageTypeNameForTypeReference(discriminatorField.type) = "String">
+            lengthInBits += ${simpleTypeReference.getLength()};
+        <#else>
+            lengthInBits += ${simpleTypeReference.sizeInBits};
+        </#if>
+    <#elseif helper.isEnumField(discriminatorField)>
+        lengthInBits += ${helper.getEnumBaseTypeReference(discriminatorField.type).sizeInBits};
+    <#else>
+        lengthInBits += ${discriminatorField.name}.getLengthInBits();
+    </#if>
 				<#break>
 			<#case "enum">
 				<#assign enumField = field>
@@ -468,7 +347,6 @@ func (m *${type.name}) LengthInBits() uint16 {
 	</#list>
 
 	return lengthInBits
->>>>>>> develop
 }
 
 func (m *${type.name}) LengthInBytes() uint16 {
@@ -476,333 +354,6 @@ func (m *${type.name}) LengthInBytes() uint16 {
 }
 
 func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type)>*</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (*<#if type.parentType?has_content>${type.parentType.name}<#else>${type.name}</#if>, error) {
-<<<<<<< HEAD
-    <#if helper.requiresStartPosAndCurPos()>
-    var startPos = io.GetPos()
-    var curPos uint16
-    </#if>
-    <#list type.fields as field>
-        <#switch field.typeName>
-            <#case "array">
-                <#assign arrayField = field>
-
-    // Array field (${arrayField.name})
-            <#-- Only update curPos if the length expression uses it -->
-                <#if arrayField.loopExpression.contains("curPos")>
-    curPos = io.GetPos() - startPos
-                </#if>
-            <#-- If this is a count array, we can directly initialize an array with the given size -->
-                <#if helper.isCountArrayField(field)>
-    // Count array
-    ${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, ${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)})
-    for curItem := uint16(0); curItem < uint16(${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)}); curItem++ {
-                    <#if (!helper.isSimpleTypeReference(arrayField.type)) && helper.requiresVariable(arrayField, "lastItem")>
-        lastItem := curItem == uint16(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)} - 1)
-                    </#if>
-        _item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list>< [...]
-        if _err != nil {
-            return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
-        }
-        ${arrayField.name}[curItem] = _item
-    }
-                <#-- In all other cases do we have to work with a list, that is later converted to an array -->
-                <#elseif helper.isLengthArrayField(field)>
-                <#-- For a length array, we read data till the read position of the buffer reaches a given position -->
-    // Length array
-    ${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, 0)
-    _${arrayField.name}Length := ${helper.toIntegerParseExpression(16, arrayField.loopExpression, type.parserArguments)}
-    _${arrayField.name}EndPos := io.GetPos() + uint16(_${arrayField.name}Length)
-    for ;io.GetPos() < _${arrayField.name}EndPos; {
-        _item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list>< [...]
-        if _err != nil {
-            return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
-        }
-        ${arrayField.name} = append(${arrayField.name}, _item)
-                    <#-- After parsing, update the current position, but only if it's needed -->
-                    <#if arrayField.loopExpression.contains("curPos")>
-        curPos = io.GetPos() - startPos
-                    </#if>
-    }
-                    <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
-                <#elseif helper.isTerminatedArrayField(field)>
-    // Terminated array
-    ${arrayField.name} := make([]<#if helper.isComplexTypeReference(arrayField.type)>*</#if>${helper.getLanguageTypeNameForField(field)}, 0)
-    for ;!bool(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)}); {
-        _item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list>< [...]
-        if _err != nil {
-            return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
-        }
-        ${arrayField.name} = append(${arrayField.name}, _item)
-
-                    <#-- After parsing, update the current position, but only if it's needed -->
-                    <#if arrayField.loopExpression.contains("curPos")>
-        curPos = io.GetPos() - startPos
-                    </#if>
-    }
-                </#if>
-                <#break>
-            <#case "checksum">
-                <#assign checksumField = field>
-                <#assign simpleTypeReference = checksumField.type>
-
-    // Checksum Field (checksum)
-    {
-        checksum = ${helper.getNullValueForTypeReference(checksumField.type)}
-        // Create an array of all the bytes read in this message element so far.
-        checksumRawData := io.getBytes(startPos, io.GetPos())
-        checksumRef, _checksumRefErr := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
-        if _checksumRefErr != nil {
-            return nil, errors.New("Error parsing 'checksum' field " + _checksumRefErr.Error())
-        }
-        checksum, _checksumErr = ${helper.toParseExpression(checksumField, checksumField.checksumExpression, type.parserArguments)}
-        if _checksumErr != nil {
-            return nil, errors.New("Error parsing 'checksum' field " + _checksumErr.Error())
-        }
-        if checksum != checksumRef {
-            return nil, errors.New("Checksum verification failed. Expected " + (checksumRef & 0xFFFF) + " but got " + (checksum & 0xFFFF)")
-        }
-    }
-                <#break>
-            <#case "const">
-                <#assign constField = field>
-                <#assign simpleTypeReference = constField.type>
-
-    // Const Field (${constField.name})
-    ${constField.name}, _${constField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
-    if _${constField.name}Err != nil {
-        return nil, errors.New("Error parsing '${constField.name}' field " + _${constField.name}Err.Error())
-    }
-    if ${constField.name} != ${type.name}_${constField.name?upper_case} {
-        return nil, errors.New("Expected constant value " + strconv.Itoa(int(${type.name}_${constField.name?upper_case})) + " but got " + strconv.Itoa(int(${constField.name})))
-    }
-                <#break>
-            <#case "discriminator">
-                <#assign discriminatorField = field>
-                <#assign simpleTypeReference = discriminatorField.type>
-
-    // Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
-            <#if helper.isEnumField(field)>
-    ${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(discriminatorField.type))}
-            <#else>
-    ${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
-            </#if>
-    if _${discriminatorField.name}Err != nil {
-        return nil, errors.New("Error parsing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
-    }
-                <#break>
-            <#case "enum">
-                <#assign enumField = field>
-
-    // Enum field (${enumField.name})
-    ${enumField.name}, _${enumField.name}Err := ${helper.getLanguageTypeNameForField(field)}Parse(io)
-    if _${enumField.name}Err != nil {
-        return nil, errors.New("Error parsing '${enumField.name}' field " + _${enumField.name}Err.Error())
-    }
-                <#break>
-            <#case "implicit">
-                <#assign implicitField = field>
-                <#assign simpleTypeReference = implicitField.type>
-
-    // Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-    ${helper.getVariableName(field)}, _${implicitField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
-    if _${implicitField.name}Err != nil {
-        return nil, errors.New("Error parsing '${implicitField.name}' field " + _${implicitField.name}Err.Error())
-    }
-                <#break>
-            <#case "manualArray">
-                <#assign manualArrayField = field>
-
-    // Manual Array Field (${manualArrayField.name})
-            <#-- Only update curPos if the length expression uses it -->
-                <#if manualArrayField.loopExpression.contains("curPos")>
-    curPos = io.GetPos() - startPos
-                </#if>
-            <#-- If this is a count array, we can directly initialize an array with the given size -->
-                <#if helper.isCountArrayField(field)>
-    // Count array
-    _${manualArrayField.name}Count := ${helper.toParseExpression(manualArrayField, manualArrayField.loopExpression, type.parserArguments)}
-    ${helper.getLanguageTypeNameForField(field)}[] ${manualArrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[_${manualArrayField.name}Count]
-    for i := 0; i < _${manualArrayField.name}Count; i++ {
-        ${manualArrayField.name}[i] = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)})
-    }
-                <#-- 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 -->
-                    <#if helper.isLengthArrayField(field)>
-    // Length array
-    _${manualArrayField.name}Length := ${helper.toIntegerParseExpression(16, manualArrayField.loopExpression, type.parserArguments)}
-    List<${helper.getLanguageTypeNameForField(manualArrayField)}> _${manualArrayField.name}List = new LinkedList<>()
-    ${manualArrayField.name}EndPos := io.GetPos() + _${manualArrayField.name}Length
-    for ;io.GetPos() < ${manualArrayField.name}EndPos; {
-        _${manualArrayField.name}List.add((${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)}))
-                    <#-- After parsing, update the current position, but only if it's needed -->
-                        <#if manualArrayField.loopExpression.contains("curPos")>
-        curPos = io.GetPos() - startPos
-                        </#if>
-    }
-                    <#-- 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(manualArrayField)}> _${manualArrayField.name}List = new LinkedList<>()
-    for ;!((boolean) (${helper.toParseExpression(manualArrayField, manualArrayField.loopExpression, type.parserArguments)})); {
-        _${manualArrayField.name}List.add((${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(manualArrayField, manualArrayField.parseExpression, type.parserArguments)}))
-
-                    <#-- After parsing, update the current position, but only if it's needed -->
-                        <#if manualArrayField.loopExpression.contains("curPos")>
-        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)}[] ${manualArrayField.name} = new ${helper.getLanguageTypeNameForField(field)}[_${manualArrayField.name}List.size()]
-    for i := 0; i < _${manualArrayField.name}List.size(); i++ {
-        ${manualArrayField.name}[i] = (${helper.getLanguageTypeNameForField(field)}) _${manualArrayField.name}List.get(i)
-    }
-                    <#else>
-    ${helper.getLanguageTypeNameForField(field)}[] ${manualArrayField.name} = _${manualArrayField.name}List.toArray(new ${helper.getLanguageTypeNameForField(manualArrayField)}[0])
-                    </#if>
-                </#if>
-                <#break>
-            <#case "manual">
-                <#assign manualField = field>
-
-    // Manual Field (${manualField.name})
-    ${manualField.name}, _${manualField.name}Err = ${helper.toParseExpression(manualField, manualField.parseExpression, type.parserArguments)}
-    if _${implicitField.name}Err != nil {
-        return nil, errors.New("Error parsing '${manualField.name}' field " + _${manualField.name}Err.Error())
-    }
-            <#break>
-            <#case "optional">
-                <#assign optionalField = field>
-
-    // Optional Field (${optionalField.name}) (Can be skipped, if a given expression evaluates to false)
-                <#if optionalField.conditionExpression.contains("curPos")>
-    curPos = io.GetPos() - startPos
-                </#if>
-    var ${optionalField.name} *${helper.getLanguageTypeNameForField(field)} = nil
-    if ${helper.toBooleanParseExpression(optionalField.conditionExpression, type.parserArguments)} {
-            <#if helper.isSimpleTypeReference(optionalField.type)>
-        _val, _err := ${helper.getReadBufferReadMethodCall(optionalField.type)}
-        if _err != nil {
-            return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
-        }
-        ${optionalField.name} = &_val
-            <#elseif helper.isEnumField(field)>
-        _val, _err := ${helper.getLanguageTypeNameForField(field)}Parse(io)
-        if _err != nil {
-            return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
-        }
-        ${optionalField.name} = &_val
-            <#else>
-        _val, _err := ${helper.getLanguageTypeNameForField(field)}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${helper.toTypedParseExpression(helper.getArgumentType(optionalField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list></#if>)
-        if _err != nil {
-            return nil, errors.New("Error parsing '${optionalField.name}' field " + _err.Error())
-        }
-        ${optionalField.name} = _val
-            </#if>
-    }
-                <#break>
-            <#case "padding">
-                <#assign paddingField = field>
-                <#assign simpleTypeReference = paddingField.type>
-
-    // Padding Field (padding)
-    {
-        _timesPadding := (${helper.toParseExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
-        for ;(io.HasMore(${helper.getNumBits(simpleTypeReference)})) && (_timesPadding > 0);_timesPadding-- {
-            // Just read the padding data and ignore it
-            _, _err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
-            if _err != nil {
-                return nil, errors.New("Error parsing 'padding' field " + _err.Error())
-            }
-        }
-    }
-                <#break>
-            <#case "reserved">
-                <#assign reservedField = field>
-                <#assign simpleTypeReference = reservedField.type>
-
-    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-    {
-        reserved, _err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
-        if _err != nil {
-            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-        }
-        if reserved != ${helper.getReservedValue(reservedField)} {
-            log.WithFields(log.Fields{
-                "expected value": ${helper.getReservedValue(reservedField)},
-                "got value": reserved,
-            }).Info("Got unexpected response.")
-        }
-    }
-                <#break>
-            <#case "simple">
-                <#assign simpleField = field>
-
-    // Simple Field (${simpleField.name})
-    ${simpleField.name}, _${simpleField.name}Err := <#if helper.isSimpleTypeReference(simpleField.type)>${helper.getReadBufferReadMethodCall(simpleField.type)}<#else>${simpleField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(simpleField.type, parserArgument?index), parserArgument, type.parserAr [...]
-    if _${simpleField.name}Err != nil {
-            <#if helper.isEnumField(field)>
-        return nil, errors.New("Error parsing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
-            <#else>
-        return nil, errors.New("Error parsing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
-            </#if>
-    }
-                <#break>
-
-            <#case "switch">
-                <#assign switchField = field>
-
-    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-    var _parent *${type.name}
-    var typeSwitchError error
-    switch {
-                <#list switchField.cases as case>
-    <#if case.discriminatorValues?has_content>case <#list case.discriminatorValues as discriminatorValue>${helper.toParseExpression(null, switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == ${discriminatorValue}<#sep> && </#sep></#list></#if>:
-        _parent, typeSwitchError = ${case.name}Parse(io<#if case.parserArguments?has_content>, <#list case.parserArguments as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${parserArgument.name}<#sep>, </#sep></#list></#if>)
-                </#list>
-    }
-    if typeSwitchError != nil {
-        return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
-    }
-                <#break>
-
-            <#case "virtual">
-                <#assign virtualField = field>
-
-    // Virtual field (Just declare a local variable so we can access it in the parser)
-    ${virtualField.name}, _${virtualField.name}Err := ${helper.toParseExpression(virtualField, virtualField.valueExpression, type.parserArguments)}
-    if _${virtualField.name}Err != nil {
-        return nil, errors.New("Error parsing '${virtualField.name}' field " + _${virtualField.name}Err.Error())
-    }
-                <#break>
-        </#switch>
-    </#list>
-
-    <#if helper.isDiscriminatedParentTypeDefinition()>
-    // Finish initializing
-    _parent.Child.InitializeParent(_parent<#if type.propertyFields?has_content>, <#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list></#if>)
-    return _parent, nil
-    <#elseif type.parentType?has_content>
-    // Create a partially initialized instance
-    _child := &${type.name}{
-        <#list type.propertyFields as field>
-        ${field.name?cap_first}: ${field.name},
-        </#list>
-        Parent: &${type.parentType.name}{},
-    }
-    _child.Parent.Child = _child
-    return _child.Parent, nil
-    <#else>
-    // Create the instance
-    return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>), nil
-    </#if>
-=======
 	<#if helper.requiresStartPosAndCurPos()>
 	var startPos = io.GetPos()
 	var curPos uint16
@@ -825,6 +376,7 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
 					<#if (!helper.isSimpleTypeReference(arrayField.type)) && helper.requiresVariable(arrayField, "lastItem")>
 		lastItem := curItem == uint16(${helper.toParseExpression(arrayField, arrayField.loopExpression, type.parserArguments)} - 1)
 					</#if>
+
 		_item, _err := <#if helper.isSimpleTypeReference(arrayField.type)>${helper.getReadBufferReadMethodCall(arrayField.type)}<#else>${arrayField.type.name}Parse(io<#if field.params?has_content>, <#list field.params as parserArgument><#if helper.isOptionalField(helper.getFieldForNameFromCurrentOrParent(parserArgument.name))>*</#if>${helper.toTypedParseExpression(helper.getArgumentType(arrayField.type, parserArgument?index), parserArgument, type.parserArguments)}<#sep>, </#sep></#list></#if>)</#if>
 		if _err != nil {
 			return nil, errors.New("Error parsing '${arrayField.name}' field " + _err.Error())
@@ -899,18 +451,22 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
 		return nil, errors.New("Error parsing '${constField.name}' field " + _${constField.name}Err.Error())
 	}
 	if ${constField.name} != ${type.name}_${constField.name?upper_case} {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(${type.name}_${constField.name?upper_case})) + " but got " + strconv.Itoa(int(${constField.name})))
+		return nil, errors.New("Expected constant value " + fmt.Sprintf("%d", ${type.name}_${constField.name?upper_case}) + " but got " + fmt.Sprintf("%d", ${constField.name}))
 	}
 				<#break>
 			<#case "discriminator">
 				<#assign discriminatorField = field>
 				<#assign simpleTypeReference = discriminatorField.type>
 
-	// Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
-	${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
-	if _${discriminatorField.name}Err != nil {
-		return nil, errors.New("Error parsing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
-	}
+    // Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
+    <#if helper.isEnumField(field)>
+        ${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(discriminatorField.type))}
+    <#else>
+        ${helper.getVariableName(field)}, _${discriminatorField.name}Err := ${helper.getReadBufferReadMethodCall(simpleTypeReference)}
+    </#if>
+    if _${discriminatorField.name}Err != nil {
+    return nil, errors.New("Error parsing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
+    }
 				<#break>
 			<#case "enum">
 				<#assign enumField = field>
@@ -1124,7 +680,6 @@ func ${type.name}Parse(io *utils.ReadBuffer<#if type.parserArguments?has_content
 	// Create the instance
 	return New${type.name}(<#list type.propertyFields as field>${field.name}<#sep>, </#sep></#list>), nil
 	</#if>
->>>>>>> develop
 }
 
 <#if helper.isDiscriminatedParentTypeDefinition()>
@@ -1136,219 +691,6 @@ func (m *${type.name}) SerializeParent(io utils.WriteBuffer, child I${type.name}
 <#else>
 func (m *${type.name}) Serialize(io utils.WriteBuffer<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
 </#if>
-<<<<<<< HEAD
-    <#assign arraySizeInBytesHelpers=helper.requiresHelperFunctions("ARRAY_SIZE_IN_BYTES")>
-    <#if arraySizeInBytesHelpers?has_content>
-        <#list arraySizeInBytesHelpers?keys as key>
-            <#assign typeName=arraySizeInBytesHelpers[key]>
-    ${key}ArraySizeInBytes := func(items []*${typeName}) uint32 {
-        var sizeInBytes uint32 = 0
-        for _, v := range items {
-            sizeInBytes += uint32(v.LengthInBytes())
-        }
-        return sizeInBytes
-    }
-        </#list>
-    </#if>
-    <#if helper.isDiscriminatedChildTypeDefinition()>
-    ser := func() error {
-    </#if>
-    <#list type.fields as field>
-        <#switch field.typeName>
-            <#case "array">
-                <#assign arrayField = field>
-                <#assign simpleTypeReference = arrayField.type>
-
-    // Array Field (${arrayField.name})
-    if m.${arrayField.name?cap_first} != nil {
-                <#if helper.isComplexTypeReference(arrayField.type) && (helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true))>
-        itemCount := uint16(len(m.${arrayField.name?cap_first}))
-        var curItem uint16 = 0
-                </#if>
-        for _, _element := range m.${arrayField.name?cap_first} {
-                <#if helper.isSimpleTypeReference(arrayField.type)>
-                    <#assign simpleTypeReference = arrayField.type>
-            _elementErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "_element")}
-                <#else>
-                    <#assign complexTypeReference = arrayField.type>
-                    <#if helper.needsVariable(arrayField, "lastItem", true)>
-            var lastItem bool = curItem == (itemCount - 1)
-                    </#if>
-            _elementErr := _element.Serialize(io<#if helper.getSerializerTerms(field.params)?has_content>, <#list helper.getSerializerTerms(field.params) as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
-                </#if>
-            if _elementErr != nil {
-                return errors.New("Error serializing '${arrayField.name}' field " + _elementErr.Error())
-            }
-                <#if helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true)>
-            curItem++
-                </#if>
-        }
-    }
-                <#break>
-            <#case "checksum">
-                <#assign checksumField = field>
-                <#assign simpleTypeReference = checksumField.type>
-
-    // Checksum Field (checksum) (Calculated)
-    {
-        _checksum := ${helper.getLanguageTypeNameForField(field)}(${helper.getNullValueForTypeReference(checksumField.type)})
-        // Create an array of all the bytes written in this message element so far.
-        checksumRawData []uint8 = io.getBytes(startPos, io.GetPos())
-        _checksum = ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(checksumField, checksumField.checksumExpression, type.parserArguments)})
-        _checksumErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_checksum)")}
-        if _elementErr != nil {
-            return errors.New("Error serializing 'checksum' field " + _elementErr.Error())
-        }
-    }
-                <#break>
-            <#case "const">
-                <#assign constField = field>
-                <#assign simpleTypeReference = constField.type>
-
-    // Const Field (${constField.name})
-    _${constField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)}
-    if _${constField.name}Err != nil {
-        return errors.New("Error serializing '${constField.name}' field " + _${constField.name}Err.Error())
-    }
-                <#break>
-            <#case "discriminator">
-                <#assign discriminatorField = field>
-                <#assign simpleTypeReference = discriminatorField.type>
-
-    // Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
-    ${discriminatorField.name} := ${helper.getLanguageTypeNameForField(field)}(child.${discriminatorField.name?cap_first}())
-             <#if helper.isEnumField(field)>
-     _${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(discriminatorField.type), "(" + discriminatorField.name + ")")}
-            <#else>
-    _${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
-            </#if>
-    if _${discriminatorField.name}Err != nil {
-        return errors.New("Error serializing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
-    }
-                <#break>
-            <#case "enum">
-                <#assign enumField = field>
-
-    // Enum field (${enumField.name})
-    ${enumField.name} := Cast${helper.getLanguageTypeNameForField(field)}(m.${enumField.name?cap_first})
-    _${enumField.name}Err := ${enumField.name}.Serialize(io)
-    if _${enumField.name}Err != nil {
-        return errors.New("Error serializing '${enumField.name}' field " + _${enumField.name}Err.Error())
-    }
-                <#break>
-            <#case "implicit">
-                <#assign implicitField = field>
-                <#assign simpleTypeReference = implicitField.type>
-
-    // Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-    ${implicitField.name} := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(implicitField, implicitField.serializeExpression, type.parserArguments)})
-    _${implicitField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + implicitField.name + ")")}
-    if _${implicitField.name}Err != nil {
-        return errors.New("Error serializing '${implicitField.name}' field " + _${implicitField.name}Err.Error())
-    }
-                <#break>
-            <#case "manualArray">
-                <#assign manualArrayField = field>
-
-    // Manual Array Field (${manualArrayField.name})
-    if m.${manualArrayField.name?cap_first} != nil {
-        for(${helper.getLanguageTypeNameForField(field)} element : m.${manualArrayField.name?cap_first}) {
-            ${helper.toSerializationExpression(manualArrayField, manualArrayField.serializeExpression, type.parserArguments)}
-        }
-    }
-                <#break>
-            <#case "manual">
-                <#assign manualField = field>
-
-    // Manual Field (${manualField.name})
-    ${helper.toSerializationExpression(manualField, manualField.serializeExpression, type.parserArguments)}
-                <#break>
-            <#case "optional">
-                <#assign optionalField = field>
-
-    // Optional Field (${optionalField.name}) (Can be skipped, if the value is null)
-    var ${optionalField.name} *${helper.getLanguageTypeNameForField(field)} = nil
-    if m.${optionalField.name?cap_first} != nil {
-                <#if helper.isSimpleTypeReference(optionalField.type)>
-                    <#assign simpleTypeReference = optionalField.type>
-        ${optionalField.name} = m.${optionalField.name?cap_first}
-        _${optionalField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "*(" + optionalField.name + ")")}
-                <#else>
-                    <#assign complexTypeReference = optionalField.type>
-        ${optionalField.name} = m.${optionalField.name?cap_first}
-        _${optionalField.name}Err := ${optionalField.name}.Serialize(io)
-                </#if>
-        if _${optionalField.name}Err != nil {
-            return errors.New("Error serializing '${optionalField.name}' field " + _${optionalField.name}Err.Error())
-        }
-    }
-                <#break>
-            <#case "padding">
-                <#assign paddingField = field>
-                <#assign simpleTypeReference = paddingField.type>
-
-    // Padding Field (padding)
-    {
-        _timesPadding := uint8(${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
-        for ;_timesPadding > 0; _timesPadding-- {
-            _paddingValue := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(paddingField, paddingField.paddingValue, type.parserArguments)})
-            _paddingErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_paddingValue)")}
-            if _paddingErr != nil {
-                return errors.New("Error serializing 'padding' field " + _paddingErr.Error())
-            }
-        }
-    }
-                <#break>
-            <#case "reserved">
-                <#assign reservedField = field>
-                <#assign simpleTypeReference = reservedField.type>
-
-    // Reserved Field (reserved)
-    {
-        _err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, helper.getReservedValue(field))}
-        if _err != nil {
-            return errors.New("Error serializing 'reserved' field " + _err.Error())
-        }
-    }
-                <#break>
-            <#case "simple">
-                <#assign simpleField = field>
-
-    // Simple Field (${simpleField.name})
-                <#if helper.isSimpleTypeReference(simpleField.type)>
-                    <#assign simpleTypeReference = simpleField.type>
-    ${simpleField.name} := ${helper.getLanguageTypeNameForField(field)}(m.${simpleField.name?cap_first})
-    _${simpleField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + simpleField.name + ")")}
-                <#else>
-                    <#assign complexTypeReference = simpleField.type>
-    _${simpleField.name}Err := m.${simpleField.name?cap_first}.Serialize(io)
-                </#if>
-    if _${simpleField.name}Err != nil {
-        return errors.New("Error serializing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
-    }
-                <#break>
-            <#case "switch">
-                <#assign switchField = field>
-
-    // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-    _typeSwitchErr := serializeChildFunction()
-    if _typeSwitchErr != nil {
-        return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
-    }
-                <#break>
-            <#case "virtual">
-                <#break>
-        </#switch>
-    </#list>
-
-    <#if helper.isDiscriminatedChildTypeDefinition()>
-        return nil
-    }
-    return m.Parent.SerializeParent(io, m, ser)
-    <#else>
-    return nil
-    </#if>
-=======
 	<#assign arraySizeInBytesHelpers=helper.requiresHelperFunctions("ARRAY_SIZE_IN_BYTES")>
 	<#if arraySizeInBytesHelpers?has_content>
 		<#list arraySizeInBytesHelpers?keys as key>
@@ -1427,12 +769,16 @@ func (m *${type.name}) Serialize(io utils.WriteBuffer<#if helper.getSerializerAr
 				<#assign discriminatorField = field>
 				<#assign simpleTypeReference = discriminatorField.type>
 
-	// Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
-	${discriminatorField.name} := ${helper.getLanguageTypeNameForField(field)}(child.${discriminatorField.name?cap_first}())
-	_${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
-	if _${discriminatorField.name}Err != nil {
-		return errors.New("Error serializing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
-	}
+    // Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
+    ${discriminatorField.name} := ${helper.getLanguageTypeNameForField(field)}(child.${discriminatorField.name?cap_first}())
+    <#if helper.isEnumField(field)>
+        _${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(discriminatorField.type), "(" + discriminatorField.name + ")")}
+    <#else>
+        _${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
+    </#if>
+    if _${discriminatorField.name}Err != nil {
+    return errors.New("Error serializing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
+    }
 				<#break>
 			<#case "enum">
 				<#assign enumField = field>
@@ -1556,7 +902,6 @@ func (m *${type.name}) Serialize(io utils.WriteBuffer<#if helper.getSerializerAr
 	<#else>
 	return nil
 	</#if>
->>>>>>> develop
 }
 
 func (m *${type.name}) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
diff --git a/build-utils/language-go/src/test/resources/plc4go/go.mod b/build-utils/language-go/src/test/resources/plc4go/go.mod
new file mode 100644
index 0000000..15e7197
--- /dev/null
+++ b/build-utils/language-go/src/test/resources/plc4go/go.mod
@@ -0,0 +1,30 @@
+//
+// 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.
+//
+module github.com/apache/plc4x/plc4go
+
+go 1.15
+
+require (
+	github.com/ajankovic/xdiff v0.0.1
+	github.com/icza/bitio v1.0.0
+	github.com/pkg/errors v0.8.1
+	github.com/rs/zerolog v1.20.0
+	github.com/subchen/go-xmldom v1.1.2
+	github.com/tebeka/go2xunit v1.4.10 // indirect
+)
diff --git a/build-utils/language-go/src/test/resources/integration-test/pom.xml b/build-utils/language-go/src/test/resources/plc4go/pom.xml
similarity index 81%
rename from build-utils/language-go/src/test/resources/integration-test/pom.xml
rename to build-utils/language-go/src/test/resources/plc4go/pom.xml
index 5602a2b..7fc883c 100644
--- a/build-utils/language-go/src/test/resources/integration-test/pom.xml
+++ b/build-utils/language-go/src/test/resources/plc4go/pom.xml
@@ -45,9 +45,65 @@
 
 </properties>
 
-
 <build>
   <plugins>
+
+    <plugin>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-resources-plugin</artifactId>
+      <version>2.5</version>
+      <executions>
+        <execution>
+          <id>go-pkg</id>
+          <phase>generate-sources</phase>
+          <goals>
+            <goal>copy-resources</goal>
+          </goals>
+          <configuration>
+            <outputDirectory>./pkg</outputDirectory>
+            <resources>
+              <resource>
+                <targetPath>.</targetPath>
+                <directory>../../../../../plc4go/pkg</directory>
+                <filtering>false</filtering>
+              </resource>
+            </resources>
+            <encoding>UTF-8</encoding>
+          </configuration>
+        </execution>
+      </executions>
+    </plugin>
+
+    <plugin>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-resources-plugin</artifactId>
+      <version>2.5</version>
+      <executions>
+        <execution>
+          <id>go-spi</id>
+          <phase>generate-sources</phase>
+          <goals>
+            <goal>copy-resources</goal>
+          </goals>
+          <configuration>
+            <outputDirectory>./internal/plc4go/spi</outputDirectory>
+            <resources>
+              <resource>
+                <targetPath>.</targetPath>
+                <directory>../../../../../plc4go/internal/plc4go/spi</directory>
+                <excludes>
+                  <exclude>testutils/**</exclude>
+                </excludes>
+                <filtering>true</filtering>
+              </resource>
+            </resources>
+            <encoding>UTF-8</encoding>
+          </configuration>
+        </execution>
+      </executions>
+    </plugin>
+
+
     <plugin>
       <groupId>org.apache.plc4x.plugins</groupId>
       <artifactId>plc4x-maven-plugin</artifactId>
@@ -160,12 +216,13 @@
       </executions>
       <configuration>
         <packages>
-          <package>github.com/apache/plc4x/plc4go/cmd/main</package>
+          <!-- We want to format every package here so we don't get dirty commits -->
+          <package>./internal/...</package>
         </packages>
-        <sources>${project.basedir}</sources>
       </configuration>
     </plugin>
 
+
     <!--
         Make the failsafe execute all integration-tests
       -->
diff --git a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index a3b3df7..a67a18f 100644
--- a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -88,13 +88,7 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
     }
 
     public String getLanguageTypeNameForTypeReference(TypeReference typeReference, boolean allowPrimitive) {
-<<<<<<< HEAD
-        logger.debug("Getting name of Java class for given type reference");
-        logger.debug("{}", typeReference.toString());
-        if(typeReference instanceof SimpleTypeReference) {
-=======
         if (typeReference instanceof SimpleTypeReference) {
->>>>>>> develop
             SimpleTypeReference simpleTypeReference = (SimpleTypeReference) typeReference;
             switch (simpleTypeReference.getBaseType()) {
                 case BIT: {
@@ -421,7 +415,6 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
             case FLOAT:
             case UFLOAT: {
                 FloatTypeReference floatTypeReference = (FloatTypeReference) simpleTypeReference;
-
                 if (floatTypeReference.getSizeInBits() <= 32) {
                     return "io.writeFloat(" + fieldName + "," + floatTypeReference.getExponent() + "," + floatTypeReference.getMantissa() + ")";
                 } else if (floatTypeReference.getSizeInBits() <= 64) {
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 bdc44b3..f3cac8b 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
@@ -59,7 +59,7 @@ import java.util.Map;
 public enum ${type.name} {
 
 <#list type.enumValues as enumValue>
-    ${enumValue.name}(<#if type.type?has_content>(${helper.getLanguageTypeNameForTypeReference(type.type, true)}) <#if helper.isStringTypeReference(type.type)>"${enumValue.value}"<#else>${enumValue.value}</#if></#if><#if type.constantNames?has_content><#if type.type?has_content>, </#if><#list type.constantNames as constantName>(${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName), true)}) ${helper.escapeValue(type.getConstantType(constantName), enumValue.getCon [...]
+    ${enumValue.name}(<#if type.type?has_content>(${helper.getLanguageTypeNameForTypeReference(type.type, true)}) <#if helper.isStringTypeReference(type.type)>"${enumValue.value}"<#else>${enumValue.value}</#if></#if><#if type.constantNames?has_content><#if type.type?has_content>, </#if><#list type.constantNames as constantName><#if helper.isComplexTypeReference(type.getConstantType(constantName))><#if helper.escapeValue(type.getConstantType(constantName), enumValue.getConstant(constantNa [...]
 </#sep></#list>;
 
 <#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 9e0f02a..fc4b481 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
@@ -465,7 +465,9 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
         <#assign simpleTypeReference = constField.type>
 
         // Const Field (${constField.name})
-        ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)};
+        <#if helper.getLanguageTypeNameForField(field) = 'float'>${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue + "f")};
+        <#else>${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)};
+        </#if>
         <#break>
     <#case "discriminator">
         <#assign discriminatorField = field>
diff --git a/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
index 8bc6001..710fd25 100644
--- a/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
@@ -95,16 +95,11 @@ public<#if helper.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${
         <#if !helper.isNonDiscriminatorField(discriminatorName)>
     @JsonIgnore
     public ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])} get${discriminatorName?cap_first}() {
-<<<<<<< HEAD
             <#if !helper.isComplexTypeReference(helper.getDiscriminatorTypes()[discriminatorName])>
-                return <#if helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]) = "String"><#if discriminatorValue??>"${discriminatorValue}"<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if><#else><#if discriminatorValue??>${discriminatorValue}<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if></#if>;
+                return <#if helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]) = "String"><#if discriminatorValue??>"${discriminatorValue}"<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if><#else><#if discriminatorValue??>${helper.adjustLiterals(helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]),discriminatorValue)}<#else>${helper.getNullValueForTypeRe [...]
             <#else>
                 return <#if helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]) = "String"><#if discriminatorValue??>"${discriminatorValue}"<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if><#else><#if discriminatorValue??>${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}.${discriminatorValue}<#else>${helper.getLanguageTypeNameForTypeReference(helpe [...]
             </#if>
-
-=======
-        return <#if discriminatorValue??>${helper.adjustLiterals(helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName]),discriminatorValue)}<#else>${helper.getNullValueForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])}</#if>;
->>>>>>> develop
     }
         </#if>
     </#list>
@@ -129,7 +124,10 @@ public<#if helper.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${
 
     // Constant values.
 <#list type.constFields as field>
-    public static final ${helper.getLanguageTypeNameForField(field)} ${field.name?upper_case} = ${field.referenceValue};
+    // ${field.referenceValue}
+    // ${helper.getLanguageTypeNameForField(field)}
+    // ${field.typeName}
+    public static final ${helper.getLanguageTypeNameForField(field)} ${field.name?upper_case} = <#if helper.getLanguageTypeNameForField(field) = 'float'>${field.referenceValue}f<#else>${field.referenceValue}</#if>;
 </#list>
 </#if>
 <#-- Prpoerty fields are fields that require a property in the pojo -->
diff --git a/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec b/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec
index 7bd30b2..94b643d 100644
--- a/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec
+++ b/build-utils/protocol-test/src/main/resources/protocols/test/test.mspec
@@ -72,14 +72,16 @@
     [simple string '8' 'UTF-8' 'stringField']
 ]
 
-[type 'AbstractTypeTest'
-    [abstract bit 'bitField']
-    [abstract int 8 'intField']
-    [abstract uint 8 'uintField']
-    [abstract float 8.23 'floatField']
-    [abstract float 11.52 'doubleField']
-    [abstract string '8' 'UTF-8' 'stringField']
-]
+
+//Abstract fields don't require the errors module in Go, this causes an unused import error.
+//[type 'AbstractTypeTest'
+//    [abstract bit 'bitField']
+//    [abstract int 8 'intField']
+//    [abstract uint 8 'uintField']
+//    [abstract float 8.23 'floatField']
+//    [abstract float 11.52 'doubleField']
+//    [abstract string '8' 'UTF-8' 'stringField']
+//]
 
 [type 'ArrayTypeTest'
     [array bit 'bitField' count      '5']
@@ -107,7 +109,7 @@
     [const bit 'bitField' true]
     [const int 8 'intField' '100']
     [const uint 8 'uintField' '100']
-    [const float 8.23 'floatField' '100.0f']
+    [const float 8.23 'floatField' '100.0']
     [const float 11.52 'doubleField' '100.0']
     [const string '8' 'UTF-8' 'stringField' '"HELLO TODDY"']
 ]
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
index e1605b5..19b33df 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationRequest.go
@@ -53,7 +53,7 @@ type IAdsAddDeviceNotificationRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsAddDeviceNotificationRequest) CommandId() CommandId {
-	return CommandId_ADS_ADD_DEVICE_NOTIFICATION
+	return ADS_ADD_DEVICE_NOTIFICATION
 }
 
 func (m *AdsAddDeviceNotificationRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
index 5a68488..5655d50 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsAddDeviceNotificationResponse.go
@@ -47,7 +47,7 @@ type IAdsAddDeviceNotificationResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsAddDeviceNotificationResponse) CommandId() CommandId {
-	return CommandId_ADS_ADD_DEVICE_NOTIFICATION
+	return ADS_ADD_DEVICE_NOTIFICATION
 }
 
 func (m *AdsAddDeviceNotificationResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
index 41cfaa4..2b6ce4b 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsData.go
@@ -98,45 +98,45 @@ func AdsDataParse(io *utils.ReadBuffer, commandId *CommandId, response bool) (*A
 	var _parent *AdsData
 	var typeSwitchError error
 	switch {
-	case *commandId == CommandId_INVALID && response == false:
+	case commandId == INVALID && response == false:
 		_parent, typeSwitchError = AdsInvalidRequestParse(io)
-	case *commandId == CommandId_INVALID && response == true:
+	case commandId == INVALID && response == true:
 		_parent, typeSwitchError = AdsInvalidResponseParse(io)
-	case *commandId == CommandId_ADS_READ_DEVICE_INFO && response == false:
+	case commandId == ADS_READ_DEVICE_INFO && response == false:
 		_parent, typeSwitchError = AdsReadDeviceInfoRequestParse(io)
-	case *commandId == CommandId_ADS_READ_DEVICE_INFO && response == true:
+	case commandId == ADS_READ_DEVICE_INFO && response == true:
 		_parent, typeSwitchError = AdsReadDeviceInfoResponseParse(io)
-	case *commandId == CommandId_ADS_READ && response == false:
+	case commandId == ADS_READ && response == false:
 		_parent, typeSwitchError = AdsReadRequestParse(io)
-	case *commandId == CommandId_ADS_READ && response == true:
+	case commandId == ADS_READ && response == true:
 		_parent, typeSwitchError = AdsReadResponseParse(io)
-	case *commandId == CommandId_ADS_WRITE && response == false:
+	case commandId == ADS_WRITE && response == false:
 		_parent, typeSwitchError = AdsWriteRequestParse(io)
-	case *commandId == CommandId_ADS_WRITE && response == true:
+	case commandId == ADS_WRITE && response == true:
 		_parent, typeSwitchError = AdsWriteResponseParse(io)
-	case *commandId == CommandId_ADS_READ_STATE && response == false:
+	case commandId == ADS_READ_STATE && response == false:
 		_parent, typeSwitchError = AdsReadStateRequestParse(io)
-	case *commandId == CommandId_ADS_READ_STATE && response == true:
+	case commandId == ADS_READ_STATE && response == true:
 		_parent, typeSwitchError = AdsReadStateResponseParse(io)
-	case *commandId == CommandId_ADS_WRITE_CONTROL && response == false:
+	case commandId == ADS_WRITE_CONTROL && response == false:
 		_parent, typeSwitchError = AdsWriteControlRequestParse(io)
-	case *commandId == CommandId_ADS_WRITE_CONTROL && response == true:
+	case commandId == ADS_WRITE_CONTROL && response == true:
 		_parent, typeSwitchError = AdsWriteControlResponseParse(io)
-	case *commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == false:
+	case commandId == ADS_ADD_DEVICE_NOTIFICATION && response == false:
 		_parent, typeSwitchError = AdsAddDeviceNotificationRequestParse(io)
-	case *commandId == CommandId_ADS_ADD_DEVICE_NOTIFICATION && response == true:
+	case commandId == ADS_ADD_DEVICE_NOTIFICATION && response == true:
 		_parent, typeSwitchError = AdsAddDeviceNotificationResponseParse(io)
-	case *commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == false:
+	case commandId == ADS_DELETE_DEVICE_NOTIFICATION && response == false:
 		_parent, typeSwitchError = AdsDeleteDeviceNotificationRequestParse(io)
-	case *commandId == CommandId_ADS_DELETE_DEVICE_NOTIFICATION && response == true:
+	case commandId == ADS_DELETE_DEVICE_NOTIFICATION && response == true:
 		_parent, typeSwitchError = AdsDeleteDeviceNotificationResponseParse(io)
-	case *commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == false:
+	case commandId == ADS_DEVICE_NOTIFICATION && response == false:
 		_parent, typeSwitchError = AdsDeviceNotificationRequestParse(io)
-	case *commandId == CommandId_ADS_DEVICE_NOTIFICATION && response == true:
+	case commandId == ADS_DEVICE_NOTIFICATION && response == true:
 		_parent, typeSwitchError = AdsDeviceNotificationResponseParse(io)
-	case *commandId == CommandId_ADS_READ_WRITE && response == false:
+	case commandId == ADS_READ_WRITE && response == false:
 		_parent, typeSwitchError = AdsReadWriteRequestParse(io)
-	case *commandId == CommandId_ADS_READ_WRITE && response == true:
+	case commandId == ADS_READ_WRITE && response == true:
 		_parent, typeSwitchError = AdsReadWriteResponseParse(io)
 	}
 	if typeSwitchError != nil {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
index 114f21b..5d2ad9d 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go
@@ -46,7 +46,7 @@ type IAdsDeleteDeviceNotificationRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsDeleteDeviceNotificationRequest) CommandId() CommandId {
-	return CommandId_ADS_DELETE_DEVICE_NOTIFICATION
+	return ADS_DELETE_DEVICE_NOTIFICATION
 }
 
 func (m *AdsDeleteDeviceNotificationRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
index 15dfba7..6a12b45 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go
@@ -46,7 +46,7 @@ type IAdsDeleteDeviceNotificationResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsDeleteDeviceNotificationResponse) CommandId() CommandId {
-	return CommandId_ADS_DELETE_DEVICE_NOTIFICATION
+	return ADS_DELETE_DEVICE_NOTIFICATION
 }
 
 func (m *AdsDeleteDeviceNotificationResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
index 486d096..19627cd 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationRequest.go
@@ -48,7 +48,7 @@ type IAdsDeviceNotificationRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsDeviceNotificationRequest) CommandId() CommandId {
-	return CommandId_ADS_DEVICE_NOTIFICATION
+	return ADS_DEVICE_NOTIFICATION
 }
 
 func (m *AdsDeviceNotificationRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
index e7a0ba0..754427c 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsDeviceNotificationResponse.go
@@ -44,7 +44,7 @@ type IAdsDeviceNotificationResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsDeviceNotificationResponse) CommandId() CommandId {
-	return CommandId_ADS_DEVICE_NOTIFICATION
+	return ADS_DEVICE_NOTIFICATION
 }
 
 func (m *AdsDeviceNotificationResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
index 04aa2b2..151ad73 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidRequest.go
@@ -44,7 +44,7 @@ type IAdsInvalidRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsInvalidRequest) CommandId() CommandId {
-	return CommandId_INVALID
+	return INVALID
 }
 
 func (m *AdsInvalidRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
index d06fae0..bf88f55 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsInvalidResponse.go
@@ -44,7 +44,7 @@ type IAdsInvalidResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsInvalidResponse) CommandId() CommandId {
-	return CommandId_INVALID
+	return INVALID
 }
 
 func (m *AdsInvalidResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
index 2108ab1..4d24a0a 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoRequest.go
@@ -44,7 +44,7 @@ type IAdsReadDeviceInfoRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadDeviceInfoRequest) CommandId() CommandId {
-	return CommandId_ADS_READ_DEVICE_INFO
+	return ADS_READ_DEVICE_INFO
 }
 
 func (m *AdsReadDeviceInfoRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
index b7a1e93..07cdc15 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadDeviceInfoResponse.go
@@ -52,7 +52,7 @@ type IAdsReadDeviceInfoResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadDeviceInfoResponse) CommandId() CommandId {
-	return CommandId_ADS_READ_DEVICE_INFO
+	return ADS_READ_DEVICE_INFO
 }
 
 func (m *AdsReadDeviceInfoResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
index 9a553a8..6012010 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadRequest.go
@@ -48,7 +48,7 @@ type IAdsReadRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadRequest) CommandId() CommandId {
-	return CommandId_ADS_READ
+	return ADS_READ
 }
 
 func (m *AdsReadRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
index 08794d6..7d4a433 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadResponse.go
@@ -49,7 +49,7 @@ type IAdsReadResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadResponse) CommandId() CommandId {
-	return CommandId_ADS_READ
+	return ADS_READ
 }
 
 func (m *AdsReadResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
index be9d43c..9c0b37a 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateRequest.go
@@ -44,7 +44,7 @@ type IAdsReadStateRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadStateRequest) CommandId() CommandId {
-	return CommandId_ADS_READ_STATE
+	return ADS_READ_STATE
 }
 
 func (m *AdsReadStateRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
index 608a9b8..cfef6c8 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadStateResponse.go
@@ -48,7 +48,7 @@ type IAdsReadStateResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadStateResponse) CommandId() CommandId {
-	return CommandId_ADS_READ_STATE
+	return ADS_READ_STATE
 }
 
 func (m *AdsReadStateResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
index 99430dd..95a5139 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteRequest.go
@@ -52,7 +52,7 @@ type IAdsReadWriteRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadWriteRequest) CommandId() CommandId {
-	return CommandId_ADS_READ_WRITE
+	return ADS_READ_WRITE
 }
 
 func (m *AdsReadWriteRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
index cf1694e..7688a46 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsReadWriteResponse.go
@@ -49,7 +49,7 @@ type IAdsReadWriteResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsReadWriteResponse) CommandId() CommandId {
-	return CommandId_ADS_READ_WRITE
+	return ADS_READ_WRITE
 }
 
 func (m *AdsReadWriteResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
index 6c49033..eee56ef 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlRequest.go
@@ -50,7 +50,7 @@ type IAdsWriteControlRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsWriteControlRequest) CommandId() CommandId {
-	return CommandId_ADS_WRITE_CONTROL
+	return ADS_WRITE_CONTROL
 }
 
 func (m *AdsWriteControlRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
index cd4625b..8ebeed7 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteControlResponse.go
@@ -46,7 +46,7 @@ type IAdsWriteControlResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsWriteControlResponse) CommandId() CommandId {
-	return CommandId_ADS_WRITE_CONTROL
+	return ADS_WRITE_CONTROL
 }
 
 func (m *AdsWriteControlResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
index 45d7a01..e87faa6 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteRequest.go
@@ -50,7 +50,7 @@ type IAdsWriteRequest interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsWriteRequest) CommandId() CommandId {
-	return CommandId_ADS_WRITE
+	return ADS_WRITE
 }
 
 func (m *AdsWriteRequest) Response() bool {
diff --git a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
index 1ae284f..3986f11 100644
--- a/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
+++ b/plc4go/internal/plc4go/ads/readwrite/model/AdsWriteResponse.go
@@ -46,7 +46,7 @@ type IAdsWriteResponse interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *AdsWriteResponse) CommandId() CommandId {
-	return CommandId_ADS_WRITE
+	return ADS_WRITE
 }
 
 func (m *AdsWriteResponse) Response() bool {
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index 214d957..9de34ac 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -80,7 +80,6 @@ func (m *APDU) GetTypeName() string {
 
 func (m *APDU) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (apduType)
 	lengthInBits += 4
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
index 995bc28..4be66fb 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -80,7 +80,6 @@ func (m *BACnetConfirmedServiceACK) GetTypeName() string {
 
 func (m *BACnetConfirmedServiceACK) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (serviceChoice)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index 2cea233..3feafaa 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -80,7 +80,6 @@ func (m *BACnetConfirmedServiceRequest) GetTypeName() string {
 
 func (m *BACnetConfirmedServiceRequest) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (serviceChoice)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
index 29c761e..c89876d 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
@@ -80,7 +80,6 @@ func (m *BACnetError) GetTypeName() string {
 
 func (m *BACnetError) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (serviceChoice)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
index 61e7f83..ce74768 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -80,7 +80,6 @@ func (m *BACnetServiceAck) GetTypeName() string {
 
 func (m *BACnetServiceAck) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (serviceChoice)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
index ec08bcf..1c6f5bf 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
@@ -87,7 +87,6 @@ func (m *BACnetTag) LengthInBits() uint16 {
 
 	// Simple field (typeOrTagNumber)
 	lengthInBits += 4
-
 	// Discriminator Field (contextSpecificTag)
 	lengthInBits += 1
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index 63eb36f..f12a534 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -80,7 +80,6 @@ func (m *BACnetUnconfirmedServiceRequest) GetTypeName() string {
 
 func (m *BACnetUnconfirmedServiceRequest) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (serviceChoice)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index 16b9654..91e5734 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -87,7 +87,6 @@ func (m *BVLC) LengthInBits() uint16 {
 
 	// Const Field (bacnetType)
 	lengthInBits += 8
-
 	// Discriminator Field (bvlcFunction)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
index 950b24b..234f4cf 100644
--- a/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
+++ b/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
@@ -81,7 +81,6 @@ func (m *NLM) GetTypeName() string {
 
 func (m *NLM) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (messageType)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
index d5d115a..89c1db3 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/Apdu.go
@@ -82,7 +82,6 @@ func (m *Apdu) GetTypeName() string {
 
 func (m *Apdu) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (control)
 	lengthInBits += 1
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
index 8b4edd9..74cdaec 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduControl.go
@@ -80,7 +80,6 @@ func (m *ApduControl) GetTypeName() string {
 
 func (m *ApduControl) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (controlType)
 	lengthInBits += 2
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
index 58e0aad..b2a26b0 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduData.go
@@ -80,7 +80,6 @@ func (m *ApduData) GetTypeName() string {
 
 func (m *ApduData) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (apciType)
 	lengthInBits += 4
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
index 74f1efc..229653d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExt.go
@@ -80,7 +80,6 @@ func (m *ApduDataExt) GetTypeName() string {
 
 func (m *ApduDataExt) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (extApciType)
 	lengthInBits += 6
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
index c8b5299..8214bb5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ApduDataExtPropertyDescriptionResponse.go
@@ -118,7 +118,7 @@ func (m *ApduDataExtPropertyDescriptionResponse) LengthInBits() uint16 {
 	lengthInBits += 1
 
 	// Simple field (propertyDataType)
-	lengthInBits += 6
+	lengthInBits += 8
 
 	// Reserved Field (reserved)
 	lengthInBits += 4
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
index 2dc115a..3bbdf82 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
@@ -80,7 +80,6 @@ func (m *CEMI) GetTypeName() string {
 
 func (m *CEMI) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (messageCode)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index 0ac9e34..0a44d0c 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -80,7 +80,6 @@ func (m *CEMIAdditionalInformation) GetTypeName() string {
 
 func (m *CEMIAdditionalInformation) LengthInBits() uint16 {
 	lengthInBits := uint16(0)
-
 	// Discriminator Field (additionalInformationType)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
index 9c3ca71..aa2945e 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTable.go
@@ -97,11 +97,11 @@ func ComObjectTableParse(io *utils.ReadBuffer, firmwareType *FirmwareType) (*Com
 	var _parent *ComObjectTable
 	var typeSwitchError error
 	switch {
-	case *firmwareType == FirmwareType_SYSTEM_1:
+	case firmwareType == SYSTEM_1:
 		_parent, typeSwitchError = ComObjectTableRealisationType1Parse(io)
-	case *firmwareType == FirmwareType_SYSTEM_2:
+	case firmwareType == SYSTEM_2:
 		_parent, typeSwitchError = ComObjectTableRealisationType2Parse(io)
-	case *firmwareType == FirmwareType_SYSTEM_300:
+	case firmwareType == SYSTEM_300:
 		_parent, typeSwitchError = ComObjectTableRealisationType6Parse(io)
 	}
 	if typeSwitchError != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
index e83f5cb..3ef3359 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType1.go
@@ -48,7 +48,7 @@ type IComObjectTableRealisationType1 interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *ComObjectTableRealisationType1) FirmwareType() FirmwareType {
-	return FirmwareType_SYSTEM_1
+	return SYSTEM_1
 }
 
 func (m *ComObjectTableRealisationType1) InitializeParent(parent *ComObjectTable) {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
index e4d0a9b..9da9a73 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType2.go
@@ -48,7 +48,7 @@ type IComObjectTableRealisationType2 interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *ComObjectTableRealisationType2) FirmwareType() FirmwareType {
-	return FirmwareType_SYSTEM_2
+	return SYSTEM_2
 }
 
 func (m *ComObjectTableRealisationType2) InitializeParent(parent *ComObjectTable) {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go
index 1828181..66a8ab9 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ComObjectTableRealisationType6.go
@@ -46,7 +46,7 @@ type IComObjectTableRealisationType6 interface {
 // Accessors for discriminator values.
 ///////////////////////////////////////////////////////////
 func (m *ComObjectTableRealisationType6) FirmwareType() FirmwareType {
-	return FirmwareType_SYSTEM_300
+	return SYSTEM_300
 }
 
 func (m *ComObjectTableRealisationType6) InitializeParent(parent *ComObjectTable) {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
index 9a8dd4c..4a047c1 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -83,7 +83,6 @@ func (m *ConnectionRequestInformation) LengthInBits() uint16 {
 
 	// Implicit Field (structureLength)
 	lengthInBits += 8
-
 	// Discriminator Field (connectionType)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index bfbc4a9..47b7048 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -83,7 +83,6 @@ func (m *ConnectionResponseDataBlock) LengthInBits() uint16 {
 
 	// Implicit Field (structureLength)
 	lengthInBits += 8
-
 	// Discriminator Field (connectionType)
 	lengthInBits += 8
 
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
index cb99d63..25bd82d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceDescriptor.go
@@ -68,119 +68,119 @@ func (e DeviceDescriptor) FirmwareType() FirmwareType {
 	switch e {
 	case 0x0010:
 		{ /* '0x0010' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x0011:
 		{ /* '0x0011' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x0012:
 		{ /* '0x0012' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x0013:
 		{ /* '0x0013' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x0020:
 		{ /* '0x0020' */
-			return FirmwareType_SYSTEM_2
+			return SYSTEM_2
 		}
 	case 0x0021:
 		{ /* '0x0021' */
-			return FirmwareType_SYSTEM_2
+			return SYSTEM_2
 		}
 	case 0x0025:
 		{ /* '0x0025' */
-			return FirmwareType_SYSTEM_2
+			return SYSTEM_2
 		}
 	case 0x0300:
 		{ /* '0x0300' */
-			return FirmwareType_SYSTEM_300
+			return SYSTEM_300
 		}
 	case 0x0700:
 		{ /* '0x0700' */
-			return FirmwareType_SYSTEM_7
+			return SYSTEM_7
 		}
 	case 0x0701:
 		{ /* '0x0701' */
-			return FirmwareType_SYSTEM_7
+			return SYSTEM_7
 		}
 	case 0x0705:
 		{ /* '0x0705' */
-			return FirmwareType_SYSTEM_7
+			return SYSTEM_7
 		}
 	case 0x07B0:
 		{ /* '0x07B0' */
-			return FirmwareType_SYSTEM_B
+			return SYSTEM_B
 		}
 	case 0x0810:
 		{ /* '0x0810' */
-			return FirmwareType_IR_DECODER
+			return IR_DECODER
 		}
 	case 0x0811:
 		{ /* '0x0811' */
-			return FirmwareType_IR_DECODER
+			return IR_DECODER
 		}
 	case 0x0910:
 		{ /* '0x0910' */
-			return FirmwareType_COUPLER
+			return COUPLER
 		}
 	case 0x0911:
 		{ /* '0x0911' */
-			return FirmwareType_COUPLER
+			return COUPLER
 		}
 	case 0x0912:
 		{ /* '0x0912' */
-			return FirmwareType_COUPLER
+			return COUPLER
 		}
 	case 0x091A:
 		{ /* '0x091A' */
-			return FirmwareType_COUPLER
+			return COUPLER
 		}
 	case 0x0AFD:
 		{ /* '0x0AFD' */
-			return FirmwareType_NONE
+			return NONE
 		}
 	case 0x0AFE:
 		{ /* '0x0AFE' */
-			return FirmwareType_NONE
+			return NONE
 		}
 	case 0x1012:
 		{ /* '0x1012' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x1013:
 		{ /* '0x1013' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x17B0:
 		{ /* '0x17B0' */
-			return FirmwareType_SYSTEM_B
+			return SYSTEM_B
 		}
 	case 0x1900:
 		{ /* '0x1900' */
-			return FirmwareType_MEDIA_COUPLER_PL_TP
+			return MEDIA_COUPLER_PL_TP
 		}
 	case 0x2010:
 		{ /* '0x2010' */
-			return FirmwareType_RF_BI_DIRECTIONAL_DEVICES
+			return RF_BI_DIRECTIONAL_DEVICES
 		}
 	case 0x2110:
 		{ /* '0x2110' */
-			return FirmwareType_RF_UNI_DIRECTIONAL_DEVICES
+			return RF_UNI_DIRECTIONAL_DEVICES
 		}
 	case 0x3012:
 		{ /* '0x3012' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x4012:
 		{ /* '0x4012' */
-			return FirmwareType_SYSTEM_1
+			return SYSTEM_1
 		}
 	case 0x5705:
 		{ /* '0x5705' */
-			return FirmwareType_SYSTEM_7
+			return SYSTEM_7
 		}
 	default:
 		{
@@ -193,119 +193,119 @@ func (e DeviceDescriptor) MediumType() DeviceDescriptorMediumType {
 	switch e {
 	case 0x0010:
 		{ /* '0x0010' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0011:
 		{ /* '0x0011' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0012:
 		{ /* '0x0012' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0013:
 		{ /* '0x0013' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0020:
 		{ /* '0x0020' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0021:
 		{ /* '0x0021' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0025:
 		{ /* '0x0025' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0300:
 		{ /* '0x0300' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0700:
 		{ /* '0x0700' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0701:
 		{ /* '0x0701' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0705:
 		{ /* '0x0705' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x07B0:
 		{ /* '0x07B0' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0810:
 		{ /* '0x0810' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0811:
 		{ /* '0x0811' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0910:
 		{ /* '0x0910' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0911:
 		{ /* '0x0911' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0912:
 		{ /* '0x0912' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x091A:
 		{ /* '0x091A' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0AFD:
 		{ /* '0x0AFD' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x0AFE:
 		{ /* '0x0AFE' */
-			return DeviceDescriptorMediumType_TP1
+			return TP1
 		}
 	case 0x1012:
 		{ /* '0x1012' */
-			return DeviceDescriptorMediumType_PL110
+			return PL110
 		}
 	case 0x1013:
 		{ /* '0x1013' */
-			return DeviceDescriptorMediumType_PL110
+			return PL110
 		}
 	case 0x17B0:
 		{ /* '0x17B0' */
-			return DeviceDescriptorMediumType_PL110
+			return PL110
 		}
 	case 0x1900:
 		{ /* '0x1900' */
-			return DeviceDescriptorMediumType_PL110
+			return PL110
 		}
 	case 0x2010:
 		{ /* '0x2010' */
-			return DeviceDescriptorMediumType_RF
+			return RF
 		}
 	case 0x2110:
 		{ /* '0x2110' */
-			return DeviceDescriptorMediumType_RF
+			return RF
 		}
 	case 0x3012:
 		{ /* '0x3012' */
-			return DeviceDescriptorMediumType_TP0
+			return TP0
 		}
 	case 0x4012:
 		{ /* '0x4012' */
-			return DeviceDescriptorMediumType_PL132
+			return PL132
 		}
 	case 0x5705:
 		{ /* '0x5705' */
-			return DeviceDescriptorMediumType_KNX_IP
+			return KNX_IP
 		}
 	default:
 		{
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
index 54441ac..5d240e5 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
@@ -30,7 +30,7 @@ import (
 
 func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (api.PlcValue, error) {
 	switch {
-	case datapointType == KnxDatapointType_BOOL: // BOOL
+	case datapointType == BOOL: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -43,7 +43,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_BYTE: // BYTE
+	case datapointType == BYTE: // BYTE
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -51,7 +51,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBYTE(value), nil
-	case datapointType == KnxDatapointType_WORD: // WORD
+	case datapointType == WORD: // WORD
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -59,7 +59,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcWORD(value), nil
-	case datapointType == KnxDatapointType_DWORD: // DWORD
+	case datapointType == DWORD: // DWORD
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -67,7 +67,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDWORD(value), nil
-	case datapointType == KnxDatapointType_LWORD: // LWORD
+	case datapointType == LWORD: // LWORD
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint64(64)
@@ -75,7 +75,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcLWORD(value), nil
-	case datapointType == KnxDatapointType_USINT: // USINT
+	case datapointType == USINT: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -83,7 +83,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_SINT: // SINT
+	case datapointType == SINT: // SINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt8(8)
@@ -91,7 +91,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSINT(value), nil
-	case datapointType == KnxDatapointType_UINT: // UINT
+	case datapointType == UINT: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -99,7 +99,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_INT: // INT
+	case datapointType == INT: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -107,7 +107,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_UDINT: // UDINT
+	case datapointType == UDINT: // UDINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -115,7 +115,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUDINT(value), nil
-	case datapointType == KnxDatapointType_DINT: // DINT
+	case datapointType == DINT: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -123,7 +123,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_ULINT: // ULINT
+	case datapointType == ULINT: // ULINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint64(64)
@@ -131,7 +131,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcULINT(value), nil
-	case datapointType == KnxDatapointType_LINT: // LINT
+	case datapointType == LINT: // LINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt64(64)
@@ -139,7 +139,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcLINT(value), nil
-	case datapointType == KnxDatapointType_REAL: // REAL
+	case datapointType == REAL: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -147,7 +147,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_LREAL: // LREAL
+	case datapointType == LREAL: // LREAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat64(true, 11, 52)
@@ -155,7 +155,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcLREAL(value), nil
-	case datapointType == KnxDatapointType_CHAR: // CHAR
+	case datapointType == CHAR: // CHAR
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -163,7 +163,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcCHAR(value), nil
-	case datapointType == KnxDatapointType_WCHAR: // WCHAR
+	case datapointType == WCHAR: // WCHAR
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -171,7 +171,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcWCHAR(value), nil
-	case datapointType == KnxDatapointType_TIME: // TIME
+	case datapointType == TIME: // TIME
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -179,7 +179,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcTIME(value), nil
-	case datapointType == KnxDatapointType_LTIME: // LTIME
+	case datapointType == LTIME: // LTIME
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint64(64)
@@ -187,7 +187,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcLTIME(value), nil
-	case datapointType == KnxDatapointType_DATE: // DATE
+	case datapointType == DATE: // DATE
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -195,7 +195,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDATE(value), nil
-	case datapointType == KnxDatapointType_TIME_OF_DAY: // TIME_OF_DAY
+	case datapointType == TIME_OF_DAY: // TIME_OF_DAY
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -203,7 +203,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcTIME_OF_DAY(value), nil
-	case datapointType == KnxDatapointType_TOD: // TIME_OF_DAY
+	case datapointType == TOD: // TIME_OF_DAY
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -211,7 +211,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcTIME_OF_DAY(value), nil
-	case datapointType == KnxDatapointType_DATE_AND_TIME: // DATE_AND_TIME
+	case datapointType == DATE_AND_TIME: // DATE_AND_TIME
 
 		// Simple Field (year)
 		year, _yearErr := io.ReadUint16(16)
@@ -262,7 +262,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		value := time.Date(int(year), time.Month(month), int(day), int(hour), int(minutes), int(seconds), 0, nil)
 		return values.NewPlcDATE_AND_TIME(value), nil
-	case datapointType == KnxDatapointType_DT: // DATE_AND_TIME
+	case datapointType == DT: // DATE_AND_TIME
 
 		// Simple Field (year)
 		year, _yearErr := io.ReadUint16(16)
@@ -313,7 +313,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		value := time.Date(int(year), time.Month(month), int(day), int(hour), int(minutes), int(seconds), 0, nil)
 		return values.NewPlcDATE_AND_TIME(value), nil
-	case datapointType == KnxDatapointType_DPT_Switch: // BOOL
+	case datapointType == DPT_Switch: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -326,7 +326,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Bool: // BOOL
+	case datapointType == DPT_Bool: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -339,7 +339,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Enable: // BOOL
+	case datapointType == DPT_Enable: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -352,7 +352,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Ramp: // BOOL
+	case datapointType == DPT_Ramp: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -365,7 +365,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Alarm: // BOOL
+	case datapointType == DPT_Alarm: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -378,7 +378,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_BinaryValue: // BOOL
+	case datapointType == DPT_BinaryValue: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -391,7 +391,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Step: // BOOL
+	case datapointType == DPT_Step: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -404,7 +404,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_UpDown: // BOOL
+	case datapointType == DPT_UpDown: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -417,7 +417,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_OpenClose: // BOOL
+	case datapointType == DPT_OpenClose: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -430,7 +430,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Start: // BOOL
+	case datapointType == DPT_Start: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -443,7 +443,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_State: // BOOL
+	case datapointType == DPT_State: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -456,7 +456,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Invert: // BOOL
+	case datapointType == DPT_Invert: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -469,7 +469,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_DimSendStyle: // BOOL
+	case datapointType == DPT_DimSendStyle: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -482,7 +482,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_InputSource: // BOOL
+	case datapointType == DPT_InputSource: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -495,7 +495,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Reset: // BOOL
+	case datapointType == DPT_Reset: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -508,7 +508,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Ack: // BOOL
+	case datapointType == DPT_Ack: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -521,7 +521,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Trigger: // BOOL
+	case datapointType == DPT_Trigger: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -534,7 +534,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Occupancy: // BOOL
+	case datapointType == DPT_Occupancy: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -547,7 +547,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Window_Door: // BOOL
+	case datapointType == DPT_Window_Door: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -560,7 +560,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_LogicalFunction: // BOOL
+	case datapointType == DPT_LogicalFunction: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -573,7 +573,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Scene_AB: // BOOL
+	case datapointType == DPT_Scene_AB: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -586,7 +586,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_ShutterBlinds_Mode: // BOOL
+	case datapointType == DPT_ShutterBlinds_Mode: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -599,7 +599,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_DayNight: // BOOL
+	case datapointType == DPT_DayNight: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -612,7 +612,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Heat_Cool: // BOOL
+	case datapointType == DPT_Heat_Cool: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -625,7 +625,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_Switch_Control: // Struct
+	case datapointType == DPT_Switch_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -647,7 +647,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(on)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Bool_Control: // Struct
+	case datapointType == DPT_Bool_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -669,7 +669,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(valueTrue)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Enable_Control: // Struct
+	case datapointType == DPT_Enable_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -691,7 +691,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(enable)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Ramp_Control: // Struct
+	case datapointType == DPT_Ramp_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -713,7 +713,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(ramp)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Alarm_Control: // Struct
+	case datapointType == DPT_Alarm_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -735,7 +735,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(alarm)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_BinaryValue_Control: // Struct
+	case datapointType == DPT_BinaryValue_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -757,7 +757,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(high)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Step_Control: // Struct
+	case datapointType == DPT_Step_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -779,7 +779,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(increase)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Direction1_Control: // Struct
+	case datapointType == DPT_Direction1_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -801,7 +801,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(down)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Direction2_Control: // Struct
+	case datapointType == DPT_Direction2_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -823,7 +823,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(close)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Start_Control: // Struct
+	case datapointType == DPT_Start_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -845,7 +845,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(start)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_State_Control: // Struct
+	case datapointType == DPT_State_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -867,7 +867,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(active)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Invert_Control: // Struct
+	case datapointType == DPT_Invert_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -889,7 +889,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(inverted)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Control_Dimming: // Struct
+	case datapointType == DPT_Control_Dimming: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -911,7 +911,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(stepcode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Control_Blinds: // Struct
+	case datapointType == DPT_Control_Blinds: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -933,23 +933,23 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(stepcode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Char_ASCII: // STRING
+	case datapointType == DPT_Char_ASCII: // STRING
 
 		// Simple Field (value)
-		value, _valueErr := io.ReadString(8)
+		value, _valueErr := io.ReadString(-1)
 		if _valueErr != nil {
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSTRING(value), nil
-	case datapointType == KnxDatapointType_DPT_Char_8859_1: // STRING
+	case datapointType == DPT_Char_8859_1: // STRING
 
 		// Simple Field (value)
-		value, _valueErr := io.ReadString(8)
+		value, _valueErr := io.ReadString(-1)
 		if _valueErr != nil {
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSTRING(value), nil
-	case datapointType == KnxDatapointType_DPT_Scaling: // USINT
+	case datapointType == DPT_Scaling: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -957,7 +957,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Angle: // USINT
+	case datapointType == DPT_Angle: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -965,7 +965,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Percent_U8: // USINT
+	case datapointType == DPT_Percent_U8: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -973,7 +973,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DecimalFactor: // USINT
+	case datapointType == DPT_DecimalFactor: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -981,7 +981,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Tariff: // USINT
+	case datapointType == DPT_Tariff: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -989,7 +989,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_1_Ucount: // USINT
+	case datapointType == DPT_Value_1_Ucount: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -997,7 +997,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_FanStage: // USINT
+	case datapointType == DPT_FanStage: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -1005,7 +1005,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Percent_V8: // SINT
+	case datapointType == DPT_Percent_V8: // SINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt8(8)
@@ -1013,7 +1013,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_1_Count: // SINT
+	case datapointType == DPT_Value_1_Count: // SINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt8(8)
@@ -1021,7 +1021,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Status_Mode3: // Struct
+	case datapointType == DPT_Status_Mode3: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (statusA)
@@ -1066,7 +1066,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(mode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Value_2_Ucount: // UINT
+	case datapointType == DPT_Value_2_Ucount: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1074,7 +1074,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_TimePeriodMsec: // UINT
+	case datapointType == DPT_TimePeriodMsec: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1082,7 +1082,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_TimePeriod10Msec: // UINT
+	case datapointType == DPT_TimePeriod10Msec: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1090,7 +1090,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_TimePeriod100Msec: // UINT
+	case datapointType == DPT_TimePeriod100Msec: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1098,7 +1098,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_TimePeriodSec: // UINT
+	case datapointType == DPT_TimePeriodSec: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1106,7 +1106,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_TimePeriodMin: // UINT
+	case datapointType == DPT_TimePeriodMin: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1114,7 +1114,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_TimePeriodHrs: // UINT
+	case datapointType == DPT_TimePeriodHrs: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1122,7 +1122,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_PropDataType: // UINT
+	case datapointType == DPT_PropDataType: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1130,7 +1130,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Length_mm: // UINT
+	case datapointType == DPT_Length_mm: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1138,7 +1138,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_UElCurrentmA: // UINT
+	case datapointType == DPT_UElCurrentmA: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1146,7 +1146,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Brightness: // UINT
+	case datapointType == DPT_Brightness: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1154,7 +1154,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Absolute_Colour_Temperature: // UINT
+	case datapointType == DPT_Absolute_Colour_Temperature: // UINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint16(16)
@@ -1162,7 +1162,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_2_Count: // INT
+	case datapointType == DPT_Value_2_Count: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1170,7 +1170,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaTimeMsec: // INT
+	case datapointType == DPT_DeltaTimeMsec: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1178,7 +1178,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaTime10Msec: // INT
+	case datapointType == DPT_DeltaTime10Msec: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1186,7 +1186,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaTime100Msec: // INT
+	case datapointType == DPT_DeltaTime100Msec: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1194,7 +1194,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaTimeSec: // INT
+	case datapointType == DPT_DeltaTimeSec: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1202,7 +1202,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaTimeMin: // INT
+	case datapointType == DPT_DeltaTimeMin: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1210,7 +1210,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaTimeHrs: // INT
+	case datapointType == DPT_DeltaTimeHrs: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1218,7 +1218,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Percent_V16: // INT
+	case datapointType == DPT_Percent_V16: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1226,7 +1226,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Rotation_Angle: // INT
+	case datapointType == DPT_Rotation_Angle: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1234,7 +1234,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Length_m: // INT
+	case datapointType == DPT_Length_m: // INT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt16(16)
@@ -1242,7 +1242,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Temp: // REAL
+	case datapointType == DPT_Value_Temp: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1250,7 +1250,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Tempd: // REAL
+	case datapointType == DPT_Value_Tempd: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1258,7 +1258,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Tempa: // REAL
+	case datapointType == DPT_Value_Tempa: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1266,7 +1266,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Lux: // REAL
+	case datapointType == DPT_Value_Lux: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1274,7 +1274,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Wsp: // REAL
+	case datapointType == DPT_Value_Wsp: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1282,7 +1282,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Pres: // REAL
+	case datapointType == DPT_Value_Pres: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1290,7 +1290,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Humidity: // REAL
+	case datapointType == DPT_Value_Humidity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1298,7 +1298,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_AirQuality: // REAL
+	case datapointType == DPT_Value_AirQuality: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1306,7 +1306,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_AirFlow: // REAL
+	case datapointType == DPT_Value_AirFlow: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1314,7 +1314,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Time1: // REAL
+	case datapointType == DPT_Value_Time1: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1322,7 +1322,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Time2: // REAL
+	case datapointType == DPT_Value_Time2: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1330,7 +1330,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Volt: // REAL
+	case datapointType == DPT_Value_Volt: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1338,7 +1338,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Curr: // REAL
+	case datapointType == DPT_Value_Curr: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1346,7 +1346,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_PowerDensity: // REAL
+	case datapointType == DPT_PowerDensity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1354,7 +1354,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_KelvinPerPercent: // REAL
+	case datapointType == DPT_KelvinPerPercent: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1362,7 +1362,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Power: // REAL
+	case datapointType == DPT_Power: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1370,7 +1370,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Volume_Flow: // REAL
+	case datapointType == DPT_Value_Volume_Flow: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1378,7 +1378,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Rain_Amount: // REAL
+	case datapointType == DPT_Rain_Amount: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1386,7 +1386,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Temp_F: // REAL
+	case datapointType == DPT_Value_Temp_F: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1394,7 +1394,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Wsp_kmh: // REAL
+	case datapointType == DPT_Value_Wsp_kmh: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1402,7 +1402,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Absolute_Humidity: // REAL
+	case datapointType == DPT_Value_Absolute_Humidity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1410,7 +1410,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Concentration_ygm3: // REAL
+	case datapointType == DPT_Concentration_ygm3: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -1418,7 +1418,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_TimeOfDay: // Struct
+	case datapointType == DPT_TimeOfDay: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (day)
@@ -1459,7 +1459,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(seconds)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Date: // Struct
+	case datapointType == DPT_Date: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -1498,7 +1498,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(year)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Value_4_Ucount: // UDINT
+	case datapointType == DPT_Value_4_Ucount: // UDINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -1506,7 +1506,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LongTimePeriod_Sec: // UDINT
+	case datapointType == DPT_LongTimePeriod_Sec: // UDINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -1514,7 +1514,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LongTimePeriod_Min: // UDINT
+	case datapointType == DPT_LongTimePeriod_Min: // UDINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -1522,7 +1522,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LongTimePeriod_Hrs: // UDINT
+	case datapointType == DPT_LongTimePeriod_Hrs: // UDINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -1530,7 +1530,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_VolumeLiquid_Litre: // UDINT
+	case datapointType == DPT_VolumeLiquid_Litre: // UDINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -1538,7 +1538,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Volume_m_3: // UDINT
+	case datapointType == DPT_Volume_m_3: // UDINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint32(32)
@@ -1546,7 +1546,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_4_Count: // DINT
+	case datapointType == DPT_Value_4_Count: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1554,7 +1554,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_FlowRate_m3h: // DINT
+	case datapointType == DPT_FlowRate_m3h: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1562,7 +1562,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy: // DINT
+	case datapointType == DPT_ActiveEnergy: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1570,7 +1570,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ApparantEnergy: // DINT
+	case datapointType == DPT_ApparantEnergy: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1578,7 +1578,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ReactiveEnergy: // DINT
+	case datapointType == DPT_ReactiveEnergy: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1586,7 +1586,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy_kWh: // DINT
+	case datapointType == DPT_ActiveEnergy_kWh: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1594,7 +1594,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ApparantEnergy_kVAh: // DINT
+	case datapointType == DPT_ApparantEnergy_kVAh: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1602,7 +1602,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ReactiveEnergy_kVARh: // DINT
+	case datapointType == DPT_ReactiveEnergy_kVARh: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1610,7 +1610,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy_MWh: // DINT
+	case datapointType == DPT_ActiveEnergy_MWh: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1618,7 +1618,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LongDeltaTimeSec: // DINT
+	case datapointType == DPT_LongDeltaTimeSec: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1626,7 +1626,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaVolumeLiquid_Litre: // DINT
+	case datapointType == DPT_DeltaVolumeLiquid_Litre: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1634,7 +1634,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DeltaVolume_m_3: // DINT
+	case datapointType == DPT_DeltaVolume_m_3: // DINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt32(32)
@@ -1642,7 +1642,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcDINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Acceleration: // REAL
+	case datapointType == DPT_Value_Acceleration: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1650,7 +1650,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Acceleration_Angular: // REAL
+	case datapointType == DPT_Value_Acceleration_Angular: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1658,7 +1658,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Activation_Energy: // REAL
+	case datapointType == DPT_Value_Activation_Energy: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1666,7 +1666,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Activity: // REAL
+	case datapointType == DPT_Value_Activity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1674,7 +1674,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Mol: // REAL
+	case datapointType == DPT_Value_Mol: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1682,7 +1682,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Amplitude: // REAL
+	case datapointType == DPT_Value_Amplitude: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1690,7 +1690,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_AngleRad: // REAL
+	case datapointType == DPT_Value_AngleRad: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1698,7 +1698,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_AngleDeg: // REAL
+	case datapointType == DPT_Value_AngleDeg: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1706,7 +1706,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Angular_Momentum: // REAL
+	case datapointType == DPT_Value_Angular_Momentum: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1714,7 +1714,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Angular_Velocity: // REAL
+	case datapointType == DPT_Value_Angular_Velocity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1722,7 +1722,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Area: // REAL
+	case datapointType == DPT_Value_Area: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1730,7 +1730,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Capacitance: // REAL
+	case datapointType == DPT_Value_Capacitance: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1738,7 +1738,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Charge_DensitySurface: // REAL
+	case datapointType == DPT_Value_Charge_DensitySurface: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1746,7 +1746,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Charge_DensityVolume: // REAL
+	case datapointType == DPT_Value_Charge_DensityVolume: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1754,7 +1754,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Compressibility: // REAL
+	case datapointType == DPT_Value_Compressibility: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1762,7 +1762,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Conductance: // REAL
+	case datapointType == DPT_Value_Conductance: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1770,7 +1770,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electrical_Conductivity: // REAL
+	case datapointType == DPT_Value_Electrical_Conductivity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1778,7 +1778,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Density: // REAL
+	case datapointType == DPT_Value_Density: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1786,7 +1786,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Charge: // REAL
+	case datapointType == DPT_Value_Electric_Charge: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1794,7 +1794,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Current: // REAL
+	case datapointType == DPT_Value_Electric_Current: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1802,7 +1802,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_CurrentDensity: // REAL
+	case datapointType == DPT_Value_Electric_CurrentDensity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1810,7 +1810,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_DipoleMoment: // REAL
+	case datapointType == DPT_Value_Electric_DipoleMoment: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1818,7 +1818,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Displacement: // REAL
+	case datapointType == DPT_Value_Electric_Displacement: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1826,7 +1826,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_FieldStrength: // REAL
+	case datapointType == DPT_Value_Electric_FieldStrength: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1834,7 +1834,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Flux: // REAL
+	case datapointType == DPT_Value_Electric_Flux: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1842,7 +1842,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_FluxDensity: // REAL
+	case datapointType == DPT_Value_Electric_FluxDensity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1850,7 +1850,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Polarization: // REAL
+	case datapointType == DPT_Value_Electric_Polarization: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1858,7 +1858,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Potential: // REAL
+	case datapointType == DPT_Value_Electric_Potential: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1866,7 +1866,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electric_PotentialDifference: // REAL
+	case datapointType == DPT_Value_Electric_PotentialDifference: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1874,7 +1874,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_ElectromagneticMoment: // REAL
+	case datapointType == DPT_Value_ElectromagneticMoment: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1882,7 +1882,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Electromotive_Force: // REAL
+	case datapointType == DPT_Value_Electromotive_Force: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1890,7 +1890,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Energy: // REAL
+	case datapointType == DPT_Value_Energy: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1898,7 +1898,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Force: // REAL
+	case datapointType == DPT_Value_Force: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1906,7 +1906,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Frequency: // REAL
+	case datapointType == DPT_Value_Frequency: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1914,7 +1914,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Angular_Frequency: // REAL
+	case datapointType == DPT_Value_Angular_Frequency: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1922,7 +1922,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Heat_Capacity: // REAL
+	case datapointType == DPT_Value_Heat_Capacity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1930,7 +1930,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Heat_FlowRate: // REAL
+	case datapointType == DPT_Value_Heat_FlowRate: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1938,7 +1938,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Heat_Quantity: // REAL
+	case datapointType == DPT_Value_Heat_Quantity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1946,7 +1946,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Impedance: // REAL
+	case datapointType == DPT_Value_Impedance: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1954,7 +1954,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Length: // REAL
+	case datapointType == DPT_Value_Length: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1962,7 +1962,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Light_Quantity: // REAL
+	case datapointType == DPT_Value_Light_Quantity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1970,7 +1970,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Luminance: // REAL
+	case datapointType == DPT_Value_Luminance: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1978,7 +1978,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Luminous_Flux: // REAL
+	case datapointType == DPT_Value_Luminous_Flux: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1986,7 +1986,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Luminous_Intensity: // REAL
+	case datapointType == DPT_Value_Luminous_Intensity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -1994,7 +1994,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_FieldStrength: // REAL
+	case datapointType == DPT_Value_Magnetic_FieldStrength: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2002,7 +2002,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_Flux: // REAL
+	case datapointType == DPT_Value_Magnetic_Flux: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2010,7 +2010,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_FluxDensity: // REAL
+	case datapointType == DPT_Value_Magnetic_FluxDensity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2018,7 +2018,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_Moment: // REAL
+	case datapointType == DPT_Value_Magnetic_Moment: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2026,7 +2026,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_Polarization: // REAL
+	case datapointType == DPT_Value_Magnetic_Polarization: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2034,7 +2034,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Magnetization: // REAL
+	case datapointType == DPT_Value_Magnetization: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2042,7 +2042,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_MagnetomotiveForce: // REAL
+	case datapointType == DPT_Value_MagnetomotiveForce: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2050,7 +2050,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Mass: // REAL
+	case datapointType == DPT_Value_Mass: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2058,7 +2058,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_MassFlux: // REAL
+	case datapointType == DPT_Value_MassFlux: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2066,7 +2066,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Momentum: // REAL
+	case datapointType == DPT_Value_Momentum: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2074,7 +2074,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Phase_AngleRad: // REAL
+	case datapointType == DPT_Value_Phase_AngleRad: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2082,7 +2082,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Phase_AngleDeg: // REAL
+	case datapointType == DPT_Value_Phase_AngleDeg: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2090,7 +2090,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Power: // REAL
+	case datapointType == DPT_Value_Power: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2098,7 +2098,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Power_Factor: // REAL
+	case datapointType == DPT_Value_Power_Factor: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2106,7 +2106,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Pressure: // REAL
+	case datapointType == DPT_Value_Pressure: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2114,7 +2114,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Reactance: // REAL
+	case datapointType == DPT_Value_Reactance: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2122,7 +2122,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Resistance: // REAL
+	case datapointType == DPT_Value_Resistance: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2130,7 +2130,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Resistivity: // REAL
+	case datapointType == DPT_Value_Resistivity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2138,7 +2138,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_SelfInductance: // REAL
+	case datapointType == DPT_Value_SelfInductance: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2146,7 +2146,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_SolidAngle: // REAL
+	case datapointType == DPT_Value_SolidAngle: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2154,7 +2154,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Sound_Intensity: // REAL
+	case datapointType == DPT_Value_Sound_Intensity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2162,7 +2162,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Speed: // REAL
+	case datapointType == DPT_Value_Speed: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2170,7 +2170,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Stress: // REAL
+	case datapointType == DPT_Value_Stress: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2178,7 +2178,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Surface_Tension: // REAL
+	case datapointType == DPT_Value_Surface_Tension: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2186,7 +2186,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Common_Temperature: // REAL
+	case datapointType == DPT_Value_Common_Temperature: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2194,7 +2194,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Absolute_Temperature: // REAL
+	case datapointType == DPT_Value_Absolute_Temperature: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2202,7 +2202,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_TemperatureDifference: // REAL
+	case datapointType == DPT_Value_TemperatureDifference: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2210,7 +2210,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Thermal_Capacity: // REAL
+	case datapointType == DPT_Value_Thermal_Capacity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2218,7 +2218,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Thermal_Conductivity: // REAL
+	case datapointType == DPT_Value_Thermal_Conductivity: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2226,7 +2226,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_ThermoelectricPower: // REAL
+	case datapointType == DPT_Value_ThermoelectricPower: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2234,7 +2234,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Time: // REAL
+	case datapointType == DPT_Value_Time: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2242,7 +2242,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Torque: // REAL
+	case datapointType == DPT_Value_Torque: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2250,7 +2250,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Volume: // REAL
+	case datapointType == DPT_Value_Volume: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2258,7 +2258,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Volume_Flux: // REAL
+	case datapointType == DPT_Value_Volume_Flux: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2266,7 +2266,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Weight: // REAL
+	case datapointType == DPT_Value_Weight: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2274,7 +2274,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Value_Work: // REAL
+	case datapointType == DPT_Value_Work: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 8, 23)
@@ -2282,7 +2282,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Volume_Flux_Meter: // REAL
+	case datapointType == DPT_Volume_Flux_Meter: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -2290,7 +2290,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Volume_Flux_ls: // REAL
+	case datapointType == DPT_Volume_Flux_ls: // REAL
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadFloat32(true, 4, 11)
@@ -2298,7 +2298,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcREAL(value), nil
-	case datapointType == KnxDatapointType_DPT_Access_Data: // Struct
+	case datapointType == DPT_Access_Data: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (hurz)
@@ -2378,23 +2378,23 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(indexOfAccessIdentificationCode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_String_ASCII: // STRING
+	case datapointType == DPT_String_ASCII: // STRING
 
 		// Simple Field (value)
-		value, _valueErr := io.ReadString(112)
+		value, _valueErr := io.ReadString(-1)
 		if _valueErr != nil {
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSTRING(value), nil
-	case datapointType == KnxDatapointType_DPT_String_8859_1: // STRING
+	case datapointType == DPT_String_8859_1: // STRING
 
 		// Simple Field (value)
-		value, _valueErr := io.ReadString(112)
+		value, _valueErr := io.ReadString(-1)
 		if _valueErr != nil {
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSTRING(value), nil
-	case datapointType == KnxDatapointType_DPT_SceneNumber: // USINT
+	case datapointType == DPT_SceneNumber: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(6)
@@ -2402,7 +2402,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_SceneControl: // Struct
+	case datapointType == DPT_SceneControl: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (learnTheSceneCorrespondingToTheFieldSceneNumber)
@@ -2424,7 +2424,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(sceneNumber)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_DateTime: // Struct
+	case datapointType == DPT_DateTime: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (year)
@@ -2564,7 +2564,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing reserved field " + _err.Error())
 		}
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_SCLOMode: // USINT
+	case datapointType == DPT_SCLOMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2572,7 +2572,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_BuildingMode: // USINT
+	case datapointType == DPT_BuildingMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2580,7 +2580,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_OccMode: // USINT
+	case datapointType == DPT_OccMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2588,7 +2588,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Priority: // USINT
+	case datapointType == DPT_Priority: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2596,7 +2596,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LightApplicationMode: // USINT
+	case datapointType == DPT_LightApplicationMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2604,7 +2604,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ApplicationArea: // USINT
+	case datapointType == DPT_ApplicationArea: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2612,7 +2612,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_AlarmClassType: // USINT
+	case datapointType == DPT_AlarmClassType: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2620,7 +2620,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_PSUMode: // USINT
+	case datapointType == DPT_PSUMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2628,7 +2628,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ErrorClass_System: // USINT
+	case datapointType == DPT_ErrorClass_System: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2636,7 +2636,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ErrorClass_HVAC: // USINT
+	case datapointType == DPT_ErrorClass_HVAC: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2644,7 +2644,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Time_Delay: // USINT
+	case datapointType == DPT_Time_Delay: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2652,7 +2652,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Beaufort_Wind_Force_Scale: // USINT
+	case datapointType == DPT_Beaufort_Wind_Force_Scale: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2660,7 +2660,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_SensorSelect: // USINT
+	case datapointType == DPT_SensorSelect: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2668,7 +2668,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ActuatorConnectType: // USINT
+	case datapointType == DPT_ActuatorConnectType: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2676,7 +2676,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Cloud_Cover: // USINT
+	case datapointType == DPT_Cloud_Cover: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2684,7 +2684,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_PowerReturnMode: // USINT
+	case datapointType == DPT_PowerReturnMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2692,7 +2692,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_FuelType: // USINT
+	case datapointType == DPT_FuelType: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2700,7 +2700,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_BurnerType: // USINT
+	case datapointType == DPT_BurnerType: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2708,7 +2708,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_HVACMode: // USINT
+	case datapointType == DPT_HVACMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2716,7 +2716,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DHWMode: // USINT
+	case datapointType == DPT_DHWMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2724,7 +2724,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LoadPriority: // USINT
+	case datapointType == DPT_LoadPriority: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2732,7 +2732,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_HVACContrMode: // USINT
+	case datapointType == DPT_HVACContrMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2740,7 +2740,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_HVACEmergMode: // USINT
+	case datapointType == DPT_HVACEmergMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2748,7 +2748,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ChangeoverMode: // USINT
+	case datapointType == DPT_ChangeoverMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2756,7 +2756,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ValveMode: // USINT
+	case datapointType == DPT_ValveMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2764,7 +2764,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DamperMode: // USINT
+	case datapointType == DPT_DamperMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2772,7 +2772,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_HeaterMode: // USINT
+	case datapointType == DPT_HeaterMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2780,7 +2780,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_FanMode: // USINT
+	case datapointType == DPT_FanMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2788,7 +2788,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_MasterSlaveMode: // USINT
+	case datapointType == DPT_MasterSlaveMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2796,7 +2796,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_StatusRoomSetp: // USINT
+	case datapointType == DPT_StatusRoomSetp: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2804,7 +2804,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Metering_DeviceType: // USINT
+	case datapointType == DPT_Metering_DeviceType: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2812,7 +2812,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_HumDehumMode: // USINT
+	case datapointType == DPT_HumDehumMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2820,7 +2820,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_EnableHCStage: // USINT
+	case datapointType == DPT_EnableHCStage: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2828,7 +2828,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ADAType: // USINT
+	case datapointType == DPT_ADAType: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2836,7 +2836,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_BackupMode: // USINT
+	case datapointType == DPT_BackupMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2844,7 +2844,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_StartSynchronization: // USINT
+	case datapointType == DPT_StartSynchronization: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2852,7 +2852,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Behaviour_Lock_Unlock: // USINT
+	case datapointType == DPT_Behaviour_Lock_Unlock: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2860,7 +2860,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down: // USINT
+	case datapointType == DPT_Behaviour_Bus_Power_Up_Down: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2868,7 +2868,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DALI_Fade_Time: // USINT
+	case datapointType == DPT_DALI_Fade_Time: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2876,7 +2876,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_BlinkingMode: // USINT
+	case datapointType == DPT_BlinkingMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2884,7 +2884,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LightControlMode: // USINT
+	case datapointType == DPT_LightControlMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2892,7 +2892,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_SwitchPBModel: // USINT
+	case datapointType == DPT_SwitchPBModel: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2900,7 +2900,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_PBAction: // USINT
+	case datapointType == DPT_PBAction: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2908,7 +2908,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DimmPBModel: // USINT
+	case datapointType == DPT_DimmPBModel: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2916,7 +2916,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_SwitchOnMode: // USINT
+	case datapointType == DPT_SwitchOnMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2924,7 +2924,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LoadTypeSet: // USINT
+	case datapointType == DPT_LoadTypeSet: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2932,7 +2932,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_LoadTypeDetected: // USINT
+	case datapointType == DPT_LoadTypeDetected: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2940,7 +2940,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Converter_Test_Control: // USINT
+	case datapointType == DPT_Converter_Test_Control: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2948,7 +2948,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_SABExcept_Behaviour: // USINT
+	case datapointType == DPT_SABExcept_Behaviour: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2956,7 +2956,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_SABBehaviour_Lock_Unlock: // USINT
+	case datapointType == DPT_SABBehaviour_Lock_Unlock: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2964,7 +2964,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_SSSBMode: // USINT
+	case datapointType == DPT_SSSBMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2972,7 +2972,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_BlindsControlMode: // USINT
+	case datapointType == DPT_BlindsControlMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2980,7 +2980,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_CommMode: // USINT
+	case datapointType == DPT_CommMode: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2988,7 +2988,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_AddInfoTypes: // USINT
+	case datapointType == DPT_AddInfoTypes: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -2996,7 +2996,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_RF_ModeSelect: // USINT
+	case datapointType == DPT_RF_ModeSelect: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -3004,7 +3004,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_RF_FilterSelect: // USINT
+	case datapointType == DPT_RF_FilterSelect: // USINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadUint8(8)
@@ -3012,7 +3012,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_StatusGen: // Struct
+	case datapointType == DPT_StatusGen: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3055,7 +3055,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(correspondingDatapointValueIsOutOfService)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Device_Control: // Struct
+	case datapointType == DPT_Device_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3084,7 +3084,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(theUserApplicationIsStopped)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_ForceSign: // Struct
+	case datapointType == DPT_ForceSign: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (roomhmax)
@@ -3143,7 +3143,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(forcerequest)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_ForceSignCool: // BOOL
+	case datapointType == DPT_ForceSignCool: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -3156,7 +3156,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_StatusRHC: // Struct
+	case datapointType == DPT_StatusRHC: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (summermode)
@@ -3215,7 +3215,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(fault)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_StatusSDHWC: // Struct
+	case datapointType == DPT_StatusSDHWC: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3244,7 +3244,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(fault)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_FuelTypeSet: // Struct
+	case datapointType == DPT_FuelTypeSet: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3273,7 +3273,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(oil)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_StatusRCC: // BOOL
+	case datapointType == DPT_StatusRCC: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(7); _err != nil {
@@ -3286,7 +3286,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcBOOL(value), nil
-	case datapointType == KnxDatapointType_DPT_StatusAHU: // Struct
+	case datapointType == DPT_StatusAHU: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3322,7 +3322,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(fault)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_CombinedStatus_RTSM: // Struct
+	case datapointType == DPT_CombinedStatus_RTSM: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3365,7 +3365,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(effectiveValueOfTheWindowStatus)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_LightActuatorErrorInfo: // Struct
+	case datapointType == DPT_LightActuatorErrorInfo: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3422,7 +3422,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(loaddetectionerror)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_RF_ModeInfo: // Struct
+	case datapointType == DPT_RF_ModeInfo: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3451,7 +3451,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(asynchronous)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_RF_FilterInfo: // Struct
+	case datapointType == DPT_RF_FilterInfo: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3480,7 +3480,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(doaAndKnxSn)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Channel_Activation_8: // Struct
+	case datapointType == DPT_Channel_Activation_8: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (activationStateOfChannel1)
@@ -3539,7 +3539,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(activationStateOfChannel8)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_StatusDHWC: // Struct
+	case datapointType == DPT_StatusDHWC: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3603,7 +3603,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(fault)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_StatusRHCC: // Struct
+	case datapointType == DPT_StatusRHCC: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3716,7 +3716,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(fault)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_CombinedStatus_HVA: // Struct
+	case datapointType == DPT_CombinedStatus_HVA: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3787,7 +3787,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(currentValvePosition)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_CombinedStatus_RTC: // Struct
+	case datapointType == DPT_CombinedStatus_RTC: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3858,7 +3858,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(generalFailureInformation)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Media: // Struct
+	case datapointType == DPT_Media: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -3904,7 +3904,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing reserved field " + _err.Error())
 		}
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Channel_Activation_16: // Struct
+	case datapointType == DPT_Channel_Activation_16: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (activationStateOfChannel1)
@@ -4019,7 +4019,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(activationStateOfChannel16)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_OnOffAction: // USINT
+	case datapointType == DPT_OnOffAction: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(6); _err != nil {
@@ -4032,7 +4032,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Alarm_Reaction: // USINT
+	case datapointType == DPT_Alarm_Reaction: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(6); _err != nil {
@@ -4045,7 +4045,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_UpDown_Action: // USINT
+	case datapointType == DPT_UpDown_Action: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(6); _err != nil {
@@ -4058,7 +4058,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_HVAC_PB_Action: // USINT
+	case datapointType == DPT_HVAC_PB_Action: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _, _err := io.ReadUint8(6); _err != nil {
@@ -4071,7 +4071,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcUSINT(value), nil
-	case datapointType == KnxDatapointType_DPT_DoubleNibble: // Struct
+	case datapointType == DPT_DoubleNibble: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (busy)
@@ -4088,7 +4088,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(nak)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_SceneInfo: // Struct
+	case datapointType == DPT_SceneInfo: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -4110,7 +4110,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(scenenumber)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_CombinedInfoOnOff: // Struct
+	case datapointType == DPT_CombinedInfoOnOff: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (maskBitInfoOnOffOutput16)
@@ -4337,7 +4337,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(infoOnOffOutput1)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy_V64: // LINT
+	case datapointType == DPT_ActiveEnergy_V64: // LINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt64(64)
@@ -4345,7 +4345,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcLINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ApparantEnergy_V64: // LINT
+	case datapointType == DPT_ApparantEnergy_V64: // LINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt64(64)
@@ -4353,7 +4353,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcLINT(value), nil
-	case datapointType == KnxDatapointType_DPT_ReactiveEnergy_V64: // LINT
+	case datapointType == DPT_ReactiveEnergy_V64: // LINT
 
 		// Simple Field (value)
 		value, _valueErr := io.ReadInt64(64)
@@ -4361,7 +4361,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcLINT(value), nil
-	case datapointType == KnxDatapointType_DPT_Channel_Activation_24: // Struct
+	case datapointType == DPT_Channel_Activation_24: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (activationStateOfChannel1)
@@ -4532,7 +4532,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(activationStateOfChannel24)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_HVACModeNext: // Struct
+	case datapointType == DPT_HVACModeNext: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (delayTimeMin)
@@ -4549,7 +4549,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(hvacMode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_DHWModeNext: // Struct
+	case datapointType == DPT_DHWModeNext: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (delayTimeMin)
@@ -4566,7 +4566,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(dhwMode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_OccModeNext: // Struct
+	case datapointType == DPT_OccModeNext: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (delayTimeMin)
@@ -4583,7 +4583,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(occupancyMode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_BuildingModeNext: // Struct
+	case datapointType == DPT_BuildingModeNext: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (delayTimeMin)
@@ -4600,7 +4600,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(buildingMode)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Version: // Struct
+	case datapointType == DPT_Version: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (magicNumber)
@@ -4624,7 +4624,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(revisionNumber)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_AlarmInfo: // Struct
+	case datapointType == DPT_AlarmInfo: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (logNumber)
@@ -4714,7 +4714,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(inalarm)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetF16_3: // Struct
+	case datapointType == DPT_TempRoomSetpSetF16_3: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (tempsetpcomf)
@@ -4738,7 +4738,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcREAL(tempsetpeco)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3: // Struct
+	case datapointType == DPT_TempRoomSetpSetShiftF16_3: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (tempsetpshiftcomf)
@@ -4762,7 +4762,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcREAL(tempsetpshifteco)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Scaling_Speed: // Struct
+	case datapointType == DPT_Scaling_Speed: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (timePeriod)
@@ -4779,7 +4779,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(percent)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Scaling_Step_Time: // Struct
+	case datapointType == DPT_Scaling_Step_Time: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (timePeriod)
@@ -4796,7 +4796,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(percent)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_MeteringValue: // Struct
+	case datapointType == DPT_MeteringValue: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (countval)
@@ -4853,7 +4853,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(outofservice)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_MBus_Address: // Struct
+	case datapointType == DPT_MBus_Address: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (manufactid)
@@ -4884,7 +4884,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(medium)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Colour_RGB: // Struct
+	case datapointType == DPT_Colour_RGB: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (r)
@@ -4908,15 +4908,15 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(b)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII: // STRING
+	case datapointType == DPT_LanguageCodeAlpha2_ASCII: // STRING
 
 		// Simple Field (value)
-		value, _valueErr := io.ReadString(16)
+		value, _valueErr := io.ReadString(-1)
 		if _valueErr != nil {
 			return nil, errors.New("Error parsing 'value' field " + _valueErr.Error())
 		}
 		return values.NewPlcSTRING(value), nil
-	case datapointType == KnxDatapointType_DPT_Tariff_ActiveEnergy: // Struct
+	case datapointType == DPT_Tariff_ActiveEnergy: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (activeelectricalenergy)
@@ -4952,7 +4952,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(tariffvalidity)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Prioritised_Mode_Control: // Struct
+	case datapointType == DPT_Prioritised_Mode_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (deactivationOfPriority)
@@ -4976,7 +4976,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(modeLevel)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic: // Struct
+	case datapointType == DPT_DALI_Control_Gear_Diagnostic: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -5026,7 +5026,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(daliDeviceAddressOrDaliGroupAddress)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_DALI_Diagnostics: // Struct
+	case datapointType == DPT_DALI_Diagnostics: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (ballastFailure)
@@ -5050,7 +5050,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(deviceAddress)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_CombinedPosition: // Struct
+	case datapointType == DPT_CombinedPosition: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (heightPosition)
@@ -5086,7 +5086,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(validitySlatsPosition)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_StatusSAB: // Struct
+	case datapointType == DPT_StatusSAB: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (heightPosition)
@@ -5199,7 +5199,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(validitySlatsPos)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Colour_xyY: // Struct
+	case datapointType == DPT_Colour_xyY: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (xAxis)
@@ -5242,7 +5242,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(validityBrightness)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Converter_Status: // Struct
+	case datapointType == DPT_Converter_Status: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (converterModeAccordingToTheDaliConverterStateMachine)
@@ -5299,7 +5299,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(converterFailure)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Converter_Test_Result: // Struct
+	case datapointType == DPT_Converter_Test_Result: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (ltrf)
@@ -5368,7 +5368,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(lpdtr)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Battery_Info: // Struct
+	case datapointType == DPT_Battery_Info: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -5404,7 +5404,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcUSINT(batteryChargeLevel)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition: // Struct
+	case datapointType == DPT_Brightness_Colour_Temperature_Transition: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (ms)
@@ -5454,7 +5454,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(validityOfTheAbsoluteBrightness)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Brightness_Colour_Temperature_Control: // Struct
+	case datapointType == DPT_Brightness_Colour_Temperature_Control: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Reserved Field (Just skip the bytes)
@@ -5514,7 +5514,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(cbAndStepCodeBrightnessValidity)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Colour_RGBW: // Struct
+	case datapointType == DPT_Colour_RGBW: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (colourLevelRed)
@@ -5583,7 +5583,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcBOOL(mw)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Relative_Control_RGBW: // Struct
+	case datapointType == DPT_Relative_Control_RGBW: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (maskcw)
@@ -5695,7 +5695,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing reserved field " + _err.Error())
 		}
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_Relative_Control_RGB: // Struct
+	case datapointType == DPT_Relative_Control_RGB: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (cb)
@@ -5755,7 +5755,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 			return nil, errors.New("Error parsing reserved field " + _err.Error())
 		}
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_GeographicalLocation: // Struct
+	case datapointType == DPT_GeographicalLocation: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (longitude)
@@ -5772,7 +5772,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcREAL(latitude)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetF16_4: // Struct
+	case datapointType == DPT_TempRoomSetpSetF16_4: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (roomTemperatureSetpointComfort)
@@ -5803,7 +5803,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 		}
 		_map["Struct"] = values.NewPlcREAL(roomTemperatureSetpointBuildingProtection)
 		return values.NewPlcStruct(_map), nil
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4: // Struct
+	case datapointType == DPT_TempRoomSetpSetShiftF16_4: // Struct
 		_map := map[string]api.PlcValue{}
 
 		// Simple Field (roomTemperatureSetpointShiftComfort)
@@ -5840,7 +5840,7 @@ func KnxDatapointParse(io *utils.ReadBuffer, datapointType KnxDatapointType) (ap
 
 func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointType KnxDatapointType) error {
 	switch {
-	case datapointType == KnxDatapointType_BOOL: // BOOL
+	case datapointType == BOOL: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -5851,133 +5851,133 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_BYTE: // BYTE
+	case datapointType == BYTE: // BYTE
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_WORD: // WORD
+	case datapointType == WORD: // WORD
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DWORD: // DWORD
+	case datapointType == DWORD: // DWORD
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_LWORD: // LWORD
+	case datapointType == LWORD: // LWORD
 
 		// Simple Field (value)
 		if _err := io.WriteUint64(64, value.GetUint64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_USINT: // USINT
+	case datapointType == USINT: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_SINT: // SINT
+	case datapointType == SINT: // SINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_UINT: // UINT
+	case datapointType == UINT: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_INT: // INT
+	case datapointType == INT: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_UDINT: // UDINT
+	case datapointType == UDINT: // UDINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DINT: // DINT
+	case datapointType == DINT: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_ULINT: // ULINT
+	case datapointType == ULINT: // ULINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint64(64, value.GetUint64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_LINT: // LINT
+	case datapointType == LINT: // LINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt64(64, value.GetInt64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_REAL: // REAL
+	case datapointType == REAL: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_LREAL: // LREAL
+	case datapointType == LREAL: // LREAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat64(64, value.GetFloat64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_CHAR: // CHAR
+	case datapointType == CHAR: // CHAR
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_WCHAR: // WCHAR
+	case datapointType == WCHAR: // WCHAR
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_TIME: // TIME
+	case datapointType == TIME: // TIME
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_LTIME: // LTIME
+	case datapointType == LTIME: // LTIME
 
 		// Simple Field (value)
 		if _err := io.WriteUint64(64, value.GetUint64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DATE: // DATE
+	case datapointType == DATE: // DATE
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_TIME_OF_DAY: // TIME_OF_DAY
+	case datapointType == TIME_OF_DAY: // TIME_OF_DAY
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_TOD: // TIME_OF_DAY
+	case datapointType == TOD: // TIME_OF_DAY
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DATE_AND_TIME: // DATE_AND_TIME
+	case datapointType == DATE_AND_TIME: // DATE_AND_TIME
 
 		// Simple Field (year)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -6018,7 +6018,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'nanos' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DT: // DATE_AND_TIME
+	case datapointType == DT: // DATE_AND_TIME
 
 		// Simple Field (year)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -6059,7 +6059,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'nanos' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Switch: // BOOL
+	case datapointType == DPT_Switch: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6070,7 +6070,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Bool: // BOOL
+	case datapointType == DPT_Bool: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6081,7 +6081,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Enable: // BOOL
+	case datapointType == DPT_Enable: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6092,7 +6092,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Ramp: // BOOL
+	case datapointType == DPT_Ramp: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6103,7 +6103,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Alarm: // BOOL
+	case datapointType == DPT_Alarm: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6114,7 +6114,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BinaryValue: // BOOL
+	case datapointType == DPT_BinaryValue: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6125,7 +6125,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Step: // BOOL
+	case datapointType == DPT_Step: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6136,7 +6136,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_UpDown: // BOOL
+	case datapointType == DPT_UpDown: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6147,7 +6147,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_OpenClose: // BOOL
+	case datapointType == DPT_OpenClose: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6158,7 +6158,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Start: // BOOL
+	case datapointType == DPT_Start: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6169,7 +6169,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_State: // BOOL
+	case datapointType == DPT_State: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6180,7 +6180,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Invert: // BOOL
+	case datapointType == DPT_Invert: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6191,7 +6191,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DimSendStyle: // BOOL
+	case datapointType == DPT_DimSendStyle: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6202,7 +6202,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_InputSource: // BOOL
+	case datapointType == DPT_InputSource: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6213,7 +6213,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Reset: // BOOL
+	case datapointType == DPT_Reset: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6224,7 +6224,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Ack: // BOOL
+	case datapointType == DPT_Ack: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6235,7 +6235,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Trigger: // BOOL
+	case datapointType == DPT_Trigger: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6246,7 +6246,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Occupancy: // BOOL
+	case datapointType == DPT_Occupancy: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6257,7 +6257,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Window_Door: // BOOL
+	case datapointType == DPT_Window_Door: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6268,7 +6268,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LogicalFunction: // BOOL
+	case datapointType == DPT_LogicalFunction: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6279,7 +6279,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Scene_AB: // BOOL
+	case datapointType == DPT_Scene_AB: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6290,7 +6290,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ShutterBlinds_Mode: // BOOL
+	case datapointType == DPT_ShutterBlinds_Mode: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6301,7 +6301,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DayNight: // BOOL
+	case datapointType == DPT_DayNight: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6312,7 +6312,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Heat_Cool: // BOOL
+	case datapointType == DPT_Heat_Cool: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -6323,7 +6323,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Switch_Control: // Struct
+	case datapointType == DPT_Switch_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6339,7 +6339,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'on' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Bool_Control: // Struct
+	case datapointType == DPT_Bool_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6355,7 +6355,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'valueTrue' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Enable_Control: // Struct
+	case datapointType == DPT_Enable_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6371,7 +6371,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'enable' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Ramp_Control: // Struct
+	case datapointType == DPT_Ramp_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6387,7 +6387,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'ramp' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Alarm_Control: // Struct
+	case datapointType == DPT_Alarm_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6403,7 +6403,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'alarm' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BinaryValue_Control: // Struct
+	case datapointType == DPT_BinaryValue_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6419,7 +6419,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'high' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Step_Control: // Struct
+	case datapointType == DPT_Step_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6435,7 +6435,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'increase' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Direction1_Control: // Struct
+	case datapointType == DPT_Direction1_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6451,7 +6451,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'down' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Direction2_Control: // Struct
+	case datapointType == DPT_Direction2_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6467,7 +6467,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'close' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Start_Control: // Struct
+	case datapointType == DPT_Start_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6483,7 +6483,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'start' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_State_Control: // Struct
+	case datapointType == DPT_State_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6499,7 +6499,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'active' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Invert_Control: // Struct
+	case datapointType == DPT_Invert_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -6515,7 +6515,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'inverted' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Control_Dimming: // Struct
+	case datapointType == DPT_Control_Dimming: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
@@ -6531,7 +6531,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'stepcode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Control_Blinds: // Struct
+	case datapointType == DPT_Control_Blinds: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
@@ -6547,73 +6547,73 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'stepcode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Char_ASCII: // STRING
+	case datapointType == DPT_Char_ASCII: // STRING
 
 		// Simple Field (value)
-		if _err := io.WriteString(8, "ASCII", value.GetString()); _err != nil {
+		if _err := io.WriteString(-1, "ASCII", value.GetString()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Char_8859_1: // STRING
+	case datapointType == DPT_Char_8859_1: // STRING
 
 		// Simple Field (value)
-		if _err := io.WriteString(8, "ISO-8859-1", value.GetString()); _err != nil {
+		if _err := io.WriteString(-1, "ISO-8859-1", value.GetString()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Scaling: // USINT
+	case datapointType == DPT_Scaling: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Angle: // USINT
+	case datapointType == DPT_Angle: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Percent_U8: // USINT
+	case datapointType == DPT_Percent_U8: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DecimalFactor: // USINT
+	case datapointType == DPT_DecimalFactor: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Tariff: // USINT
+	case datapointType == DPT_Tariff: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_1_Ucount: // USINT
+	case datapointType == DPT_Value_1_Ucount: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_FanStage: // USINT
+	case datapointType == DPT_FanStage: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Percent_V8: // SINT
+	case datapointType == DPT_Percent_V8: // SINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_1_Count: // SINT
+	case datapointType == DPT_Value_1_Count: // SINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt8(8, value.GetInt8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Status_Mode3: // Struct
+	case datapointType == DPT_Status_Mode3: // Struct
 
 		// Simple Field (statusA)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -6644,271 +6644,271 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'mode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_2_Ucount: // UINT
+	case datapointType == DPT_Value_2_Ucount: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TimePeriodMsec: // UINT
+	case datapointType == DPT_TimePeriodMsec: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TimePeriod10Msec: // UINT
+	case datapointType == DPT_TimePeriod10Msec: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TimePeriod100Msec: // UINT
+	case datapointType == DPT_TimePeriod100Msec: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TimePeriodSec: // UINT
+	case datapointType == DPT_TimePeriodSec: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TimePeriodMin: // UINT
+	case datapointType == DPT_TimePeriodMin: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TimePeriodHrs: // UINT
+	case datapointType == DPT_TimePeriodHrs: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_PropDataType: // UINT
+	case datapointType == DPT_PropDataType: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Length_mm: // UINT
+	case datapointType == DPT_Length_mm: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_UElCurrentmA: // UINT
+	case datapointType == DPT_UElCurrentmA: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Brightness: // UINT
+	case datapointType == DPT_Brightness: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Absolute_Colour_Temperature: // UINT
+	case datapointType == DPT_Absolute_Colour_Temperature: // UINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_2_Count: // INT
+	case datapointType == DPT_Value_2_Count: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaTimeMsec: // INT
+	case datapointType == DPT_DeltaTimeMsec: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaTime10Msec: // INT
+	case datapointType == DPT_DeltaTime10Msec: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaTime100Msec: // INT
+	case datapointType == DPT_DeltaTime100Msec: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaTimeSec: // INT
+	case datapointType == DPT_DeltaTimeSec: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaTimeMin: // INT
+	case datapointType == DPT_DeltaTimeMin: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaTimeHrs: // INT
+	case datapointType == DPT_DeltaTimeHrs: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Percent_V16: // INT
+	case datapointType == DPT_Percent_V16: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Rotation_Angle: // INT
+	case datapointType == DPT_Rotation_Angle: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Length_m: // INT
+	case datapointType == DPT_Length_m: // INT
 
 		// Simple Field (value)
 		if _err := io.WriteInt16(16, value.GetInt16()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Temp: // REAL
+	case datapointType == DPT_Value_Temp: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Tempd: // REAL
+	case datapointType == DPT_Value_Tempd: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Tempa: // REAL
+	case datapointType == DPT_Value_Tempa: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Lux: // REAL
+	case datapointType == DPT_Value_Lux: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Wsp: // REAL
+	case datapointType == DPT_Value_Wsp: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Pres: // REAL
+	case datapointType == DPT_Value_Pres: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Humidity: // REAL
+	case datapointType == DPT_Value_Humidity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_AirQuality: // REAL
+	case datapointType == DPT_Value_AirQuality: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_AirFlow: // REAL
+	case datapointType == DPT_Value_AirFlow: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Time1: // REAL
+	case datapointType == DPT_Value_Time1: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Time2: // REAL
+	case datapointType == DPT_Value_Time2: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Volt: // REAL
+	case datapointType == DPT_Value_Volt: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Curr: // REAL
+	case datapointType == DPT_Value_Curr: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_PowerDensity: // REAL
+	case datapointType == DPT_PowerDensity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_KelvinPerPercent: // REAL
+	case datapointType == DPT_KelvinPerPercent: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Power: // REAL
+	case datapointType == DPT_Power: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Volume_Flow: // REAL
+	case datapointType == DPT_Value_Volume_Flow: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Rain_Amount: // REAL
+	case datapointType == DPT_Rain_Amount: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Temp_F: // REAL
+	case datapointType == DPT_Value_Temp_F: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Wsp_kmh: // REAL
+	case datapointType == DPT_Value_Wsp_kmh: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Absolute_Humidity: // REAL
+	case datapointType == DPT_Value_Absolute_Humidity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Concentration_ygm3: // REAL
+	case datapointType == DPT_Concentration_ygm3: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TimeOfDay: // Struct
+	case datapointType == DPT_TimeOfDay: // Struct
 
 		// Simple Field (day)
 		if _err := io.WriteUint8(3, value.GetUint8()); _err != nil {
@@ -6939,7 +6939,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'seconds' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Date: // Struct
+	case datapointType == DPT_Date: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
@@ -6970,607 +6970,607 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(7, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'year' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_4_Ucount: // UDINT
+	case datapointType == DPT_Value_4_Ucount: // UDINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LongTimePeriod_Sec: // UDINT
+	case datapointType == DPT_LongTimePeriod_Sec: // UDINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LongTimePeriod_Min: // UDINT
+	case datapointType == DPT_LongTimePeriod_Min: // UDINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LongTimePeriod_Hrs: // UDINT
+	case datapointType == DPT_LongTimePeriod_Hrs: // UDINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_VolumeLiquid_Litre: // UDINT
+	case datapointType == DPT_VolumeLiquid_Litre: // UDINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Volume_m_3: // UDINT
+	case datapointType == DPT_Volume_m_3: // UDINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint32(32, value.GetUint32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_4_Count: // DINT
+	case datapointType == DPT_Value_4_Count: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_FlowRate_m3h: // DINT
+	case datapointType == DPT_FlowRate_m3h: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy: // DINT
+	case datapointType == DPT_ActiveEnergy: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ApparantEnergy: // DINT
+	case datapointType == DPT_ApparantEnergy: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ReactiveEnergy: // DINT
+	case datapointType == DPT_ReactiveEnergy: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy_kWh: // DINT
+	case datapointType == DPT_ActiveEnergy_kWh: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ApparantEnergy_kVAh: // DINT
+	case datapointType == DPT_ApparantEnergy_kVAh: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ReactiveEnergy_kVARh: // DINT
+	case datapointType == DPT_ReactiveEnergy_kVARh: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy_MWh: // DINT
+	case datapointType == DPT_ActiveEnergy_MWh: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LongDeltaTimeSec: // DINT
+	case datapointType == DPT_LongDeltaTimeSec: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaVolumeLiquid_Litre: // DINT
+	case datapointType == DPT_DeltaVolumeLiquid_Litre: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DeltaVolume_m_3: // DINT
+	case datapointType == DPT_DeltaVolume_m_3: // DINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Acceleration: // REAL
+	case datapointType == DPT_Value_Acceleration: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Acceleration_Angular: // REAL
+	case datapointType == DPT_Value_Acceleration_Angular: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Activation_Energy: // REAL
+	case datapointType == DPT_Value_Activation_Energy: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Activity: // REAL
+	case datapointType == DPT_Value_Activity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Mol: // REAL
+	case datapointType == DPT_Value_Mol: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Amplitude: // REAL
+	case datapointType == DPT_Value_Amplitude: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_AngleRad: // REAL
+	case datapointType == DPT_Value_AngleRad: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_AngleDeg: // REAL
+	case datapointType == DPT_Value_AngleDeg: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Angular_Momentum: // REAL
+	case datapointType == DPT_Value_Angular_Momentum: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Angular_Velocity: // REAL
+	case datapointType == DPT_Value_Angular_Velocity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Area: // REAL
+	case datapointType == DPT_Value_Area: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Capacitance: // REAL
+	case datapointType == DPT_Value_Capacitance: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Charge_DensitySurface: // REAL
+	case datapointType == DPT_Value_Charge_DensitySurface: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Charge_DensityVolume: // REAL
+	case datapointType == DPT_Value_Charge_DensityVolume: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Compressibility: // REAL
+	case datapointType == DPT_Value_Compressibility: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Conductance: // REAL
+	case datapointType == DPT_Value_Conductance: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electrical_Conductivity: // REAL
+	case datapointType == DPT_Value_Electrical_Conductivity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Density: // REAL
+	case datapointType == DPT_Value_Density: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Charge: // REAL
+	case datapointType == DPT_Value_Electric_Charge: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Current: // REAL
+	case datapointType == DPT_Value_Electric_Current: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_CurrentDensity: // REAL
+	case datapointType == DPT_Value_Electric_CurrentDensity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_DipoleMoment: // REAL
+	case datapointType == DPT_Value_Electric_DipoleMoment: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Displacement: // REAL
+	case datapointType == DPT_Value_Electric_Displacement: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_FieldStrength: // REAL
+	case datapointType == DPT_Value_Electric_FieldStrength: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Flux: // REAL
+	case datapointType == DPT_Value_Electric_Flux: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_FluxDensity: // REAL
+	case datapointType == DPT_Value_Electric_FluxDensity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Polarization: // REAL
+	case datapointType == DPT_Value_Electric_Polarization: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_Potential: // REAL
+	case datapointType == DPT_Value_Electric_Potential: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electric_PotentialDifference: // REAL
+	case datapointType == DPT_Value_Electric_PotentialDifference: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_ElectromagneticMoment: // REAL
+	case datapointType == DPT_Value_ElectromagneticMoment: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Electromotive_Force: // REAL
+	case datapointType == DPT_Value_Electromotive_Force: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Energy: // REAL
+	case datapointType == DPT_Value_Energy: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Force: // REAL
+	case datapointType == DPT_Value_Force: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Frequency: // REAL
+	case datapointType == DPT_Value_Frequency: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Angular_Frequency: // REAL
+	case datapointType == DPT_Value_Angular_Frequency: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Heat_Capacity: // REAL
+	case datapointType == DPT_Value_Heat_Capacity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Heat_FlowRate: // REAL
+	case datapointType == DPT_Value_Heat_FlowRate: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Heat_Quantity: // REAL
+	case datapointType == DPT_Value_Heat_Quantity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Impedance: // REAL
+	case datapointType == DPT_Value_Impedance: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Length: // REAL
+	case datapointType == DPT_Value_Length: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Light_Quantity: // REAL
+	case datapointType == DPT_Value_Light_Quantity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Luminance: // REAL
+	case datapointType == DPT_Value_Luminance: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Luminous_Flux: // REAL
+	case datapointType == DPT_Value_Luminous_Flux: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Luminous_Intensity: // REAL
+	case datapointType == DPT_Value_Luminous_Intensity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_FieldStrength: // REAL
+	case datapointType == DPT_Value_Magnetic_FieldStrength: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_Flux: // REAL
+	case datapointType == DPT_Value_Magnetic_Flux: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_FluxDensity: // REAL
+	case datapointType == DPT_Value_Magnetic_FluxDensity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_Moment: // REAL
+	case datapointType == DPT_Value_Magnetic_Moment: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Magnetic_Polarization: // REAL
+	case datapointType == DPT_Value_Magnetic_Polarization: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Magnetization: // REAL
+	case datapointType == DPT_Value_Magnetization: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_MagnetomotiveForce: // REAL
+	case datapointType == DPT_Value_MagnetomotiveForce: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Mass: // REAL
+	case datapointType == DPT_Value_Mass: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_MassFlux: // REAL
+	case datapointType == DPT_Value_MassFlux: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Momentum: // REAL
+	case datapointType == DPT_Value_Momentum: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Phase_AngleRad: // REAL
+	case datapointType == DPT_Value_Phase_AngleRad: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Phase_AngleDeg: // REAL
+	case datapointType == DPT_Value_Phase_AngleDeg: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Power: // REAL
+	case datapointType == DPT_Value_Power: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Power_Factor: // REAL
+	case datapointType == DPT_Value_Power_Factor: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Pressure: // REAL
+	case datapointType == DPT_Value_Pressure: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Reactance: // REAL
+	case datapointType == DPT_Value_Reactance: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Resistance: // REAL
+	case datapointType == DPT_Value_Resistance: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Resistivity: // REAL
+	case datapointType == DPT_Value_Resistivity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_SelfInductance: // REAL
+	case datapointType == DPT_Value_SelfInductance: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_SolidAngle: // REAL
+	case datapointType == DPT_Value_SolidAngle: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Sound_Intensity: // REAL
+	case datapointType == DPT_Value_Sound_Intensity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Speed: // REAL
+	case datapointType == DPT_Value_Speed: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Stress: // REAL
+	case datapointType == DPT_Value_Stress: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Surface_Tension: // REAL
+	case datapointType == DPT_Value_Surface_Tension: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Common_Temperature: // REAL
+	case datapointType == DPT_Value_Common_Temperature: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Absolute_Temperature: // REAL
+	case datapointType == DPT_Value_Absolute_Temperature: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_TemperatureDifference: // REAL
+	case datapointType == DPT_Value_TemperatureDifference: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Thermal_Capacity: // REAL
+	case datapointType == DPT_Value_Thermal_Capacity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Thermal_Conductivity: // REAL
+	case datapointType == DPT_Value_Thermal_Conductivity: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_ThermoelectricPower: // REAL
+	case datapointType == DPT_Value_ThermoelectricPower: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Time: // REAL
+	case datapointType == DPT_Value_Time: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Torque: // REAL
+	case datapointType == DPT_Value_Torque: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Volume: // REAL
+	case datapointType == DPT_Value_Volume: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Volume_Flux: // REAL
+	case datapointType == DPT_Value_Volume_Flux: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Weight: // REAL
+	case datapointType == DPT_Value_Weight: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Value_Work: // REAL
+	case datapointType == DPT_Value_Work: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Volume_Flux_Meter: // REAL
+	case datapointType == DPT_Volume_Flux_Meter: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Volume_Flux_ls: // REAL
+	case datapointType == DPT_Volume_Flux_ls: // REAL
 
 		// Simple Field (value)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Access_Data: // Struct
+	case datapointType == DPT_Access_Data: // Struct
 
 		// Simple Field (hurz)
 		if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
@@ -7626,25 +7626,25 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'indexOfAccessIdentificationCode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_String_ASCII: // STRING
+	case datapointType == DPT_String_ASCII: // STRING
 
 		// Simple Field (value)
-		if _err := io.WriteString(112, "ASCII", value.GetString()); _err != nil {
+		if _err := io.WriteString(-1, "ASCII", value.GetString()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_String_8859_1: // STRING
+	case datapointType == DPT_String_8859_1: // STRING
 
 		// Simple Field (value)
-		if _err := io.WriteString(112, "ISO-8859-1", value.GetString()); _err != nil {
+		if _err := io.WriteString(-1, "ISO-8859-1", value.GetString()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SceneNumber: // USINT
+	case datapointType == DPT_SceneNumber: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SceneControl: // Struct
+	case datapointType == DPT_SceneControl: // Struct
 
 		// Simple Field (learnTheSceneCorrespondingToTheFieldSceneNumber)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -7660,7 +7660,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'sceneNumber' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DateTime: // Struct
+	case datapointType == DPT_DateTime: // Struct
 
 		// Simple Field (year)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
@@ -7766,343 +7766,343 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
 			return errors.New("Error serializing reserved field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SCLOMode: // USINT
+	case datapointType == DPT_SCLOMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BuildingMode: // USINT
+	case datapointType == DPT_BuildingMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_OccMode: // USINT
+	case datapointType == DPT_OccMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Priority: // USINT
+	case datapointType == DPT_Priority: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LightApplicationMode: // USINT
+	case datapointType == DPT_LightApplicationMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ApplicationArea: // USINT
+	case datapointType == DPT_ApplicationArea: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_AlarmClassType: // USINT
+	case datapointType == DPT_AlarmClassType: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_PSUMode: // USINT
+	case datapointType == DPT_PSUMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ErrorClass_System: // USINT
+	case datapointType == DPT_ErrorClass_System: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ErrorClass_HVAC: // USINT
+	case datapointType == DPT_ErrorClass_HVAC: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Time_Delay: // USINT
+	case datapointType == DPT_Time_Delay: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Beaufort_Wind_Force_Scale: // USINT
+	case datapointType == DPT_Beaufort_Wind_Force_Scale: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SensorSelect: // USINT
+	case datapointType == DPT_SensorSelect: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ActuatorConnectType: // USINT
+	case datapointType == DPT_ActuatorConnectType: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Cloud_Cover: // USINT
+	case datapointType == DPT_Cloud_Cover: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_PowerReturnMode: // USINT
+	case datapointType == DPT_PowerReturnMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_FuelType: // USINT
+	case datapointType == DPT_FuelType: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BurnerType: // USINT
+	case datapointType == DPT_BurnerType: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_HVACMode: // USINT
+	case datapointType == DPT_HVACMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DHWMode: // USINT
+	case datapointType == DPT_DHWMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LoadPriority: // USINT
+	case datapointType == DPT_LoadPriority: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_HVACContrMode: // USINT
+	case datapointType == DPT_HVACContrMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_HVACEmergMode: // USINT
+	case datapointType == DPT_HVACEmergMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ChangeoverMode: // USINT
+	case datapointType == DPT_ChangeoverMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ValveMode: // USINT
+	case datapointType == DPT_ValveMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DamperMode: // USINT
+	case datapointType == DPT_DamperMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_HeaterMode: // USINT
+	case datapointType == DPT_HeaterMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_FanMode: // USINT
+	case datapointType == DPT_FanMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_MasterSlaveMode: // USINT
+	case datapointType == DPT_MasterSlaveMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusRoomSetp: // USINT
+	case datapointType == DPT_StatusRoomSetp: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Metering_DeviceType: // USINT
+	case datapointType == DPT_Metering_DeviceType: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_HumDehumMode: // USINT
+	case datapointType == DPT_HumDehumMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_EnableHCStage: // USINT
+	case datapointType == DPT_EnableHCStage: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ADAType: // USINT
+	case datapointType == DPT_ADAType: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BackupMode: // USINT
+	case datapointType == DPT_BackupMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StartSynchronization: // USINT
+	case datapointType == DPT_StartSynchronization: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Behaviour_Lock_Unlock: // USINT
+	case datapointType == DPT_Behaviour_Lock_Unlock: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Behaviour_Bus_Power_Up_Down: // USINT
+	case datapointType == DPT_Behaviour_Bus_Power_Up_Down: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DALI_Fade_Time: // USINT
+	case datapointType == DPT_DALI_Fade_Time: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BlinkingMode: // USINT
+	case datapointType == DPT_BlinkingMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LightControlMode: // USINT
+	case datapointType == DPT_LightControlMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SwitchPBModel: // USINT
+	case datapointType == DPT_SwitchPBModel: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_PBAction: // USINT
+	case datapointType == DPT_PBAction: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DimmPBModel: // USINT
+	case datapointType == DPT_DimmPBModel: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SwitchOnMode: // USINT
+	case datapointType == DPT_SwitchOnMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LoadTypeSet: // USINT
+	case datapointType == DPT_LoadTypeSet: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LoadTypeDetected: // USINT
+	case datapointType == DPT_LoadTypeDetected: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Converter_Test_Control: // USINT
+	case datapointType == DPT_Converter_Test_Control: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SABExcept_Behaviour: // USINT
+	case datapointType == DPT_SABExcept_Behaviour: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SABBehaviour_Lock_Unlock: // USINT
+	case datapointType == DPT_SABBehaviour_Lock_Unlock: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SSSBMode: // USINT
+	case datapointType == DPT_SSSBMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BlindsControlMode: // USINT
+	case datapointType == DPT_BlindsControlMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_CommMode: // USINT
+	case datapointType == DPT_CommMode: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_AddInfoTypes: // USINT
+	case datapointType == DPT_AddInfoTypes: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_RF_ModeSelect: // USINT
+	case datapointType == DPT_RF_ModeSelect: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_RF_FilterSelect: // USINT
+	case datapointType == DPT_RF_FilterSelect: // USINT
 
 		// Simple Field (value)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusGen: // Struct
+	case datapointType == DPT_StatusGen: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
@@ -8133,7 +8133,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'correspondingDatapointValueIsOutOfService' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Device_Control: // Struct
+	case datapointType == DPT_Device_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
@@ -8154,7 +8154,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'theUserApplicationIsStopped' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ForceSign: // Struct
+	case datapointType == DPT_ForceSign: // Struct
 
 		// Simple Field (roomhmax)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -8195,7 +8195,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'forcerequest' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ForceSignCool: // BOOL
+	case datapointType == DPT_ForceSignCool: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -8206,7 +8206,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusRHC: // Struct
+	case datapointType == DPT_StatusRHC: // Struct
 
 		// Simple Field (summermode)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -8247,7 +8247,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'fault' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusSDHWC: // Struct
+	case datapointType == DPT_StatusSDHWC: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
@@ -8268,7 +8268,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'fault' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_FuelTypeSet: // Struct
+	case datapointType == DPT_FuelTypeSet: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
@@ -8289,7 +8289,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'oil' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusRCC: // BOOL
+	case datapointType == DPT_StatusRCC: // BOOL
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -8300,7 +8300,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusAHU: // Struct
+	case datapointType == DPT_StatusAHU: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
@@ -8326,7 +8326,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'fault' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_CombinedStatus_RTSM: // Struct
+	case datapointType == DPT_CombinedStatus_RTSM: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(3, uint8(0x00)); _err != nil {
@@ -8357,7 +8357,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'effectiveValueOfTheWindowStatus' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LightActuatorErrorInfo: // Struct
+	case datapointType == DPT_LightActuatorErrorInfo: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(1, uint8(0x00)); _err != nil {
@@ -8398,7 +8398,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'loaddetectionerror' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_RF_ModeInfo: // Struct
+	case datapointType == DPT_RF_ModeInfo: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
@@ -8419,7 +8419,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'asynchronous' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_RF_FilterInfo: // Struct
+	case datapointType == DPT_RF_FilterInfo: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
@@ -8440,7 +8440,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'doaAndKnxSn' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Channel_Activation_8: // Struct
+	case datapointType == DPT_Channel_Activation_8: // Struct
 
 		// Simple Field (activationStateOfChannel1)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -8481,7 +8481,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'activationStateOfChannel8' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusDHWC: // Struct
+	case datapointType == DPT_StatusDHWC: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(8, uint8(0x00)); _err != nil {
@@ -8527,7 +8527,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'fault' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusRHCC: // Struct
+	case datapointType == DPT_StatusRHCC: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(1, uint8(0x00)); _err != nil {
@@ -8608,7 +8608,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'fault' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_CombinedStatus_HVA: // Struct
+	case datapointType == DPT_CombinedStatus_HVA: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -8659,7 +8659,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'currentValvePosition' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_CombinedStatus_RTC: // Struct
+	case datapointType == DPT_CombinedStatus_RTC: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(7, uint8(0x00)); _err != nil {
@@ -8710,7 +8710,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'generalFailureInformation' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Media: // Struct
+	case datapointType == DPT_Media: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint16(10, uint16(0x00)); _err != nil {
@@ -8746,7 +8746,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(1, uint8(0x00)); _err != nil {
 			return errors.New("Error serializing reserved field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Channel_Activation_16: // Struct
+	case datapointType == DPT_Channel_Activation_16: // Struct
 
 		// Simple Field (activationStateOfChannel1)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -8827,7 +8827,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'activationStateOfChannel16' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_OnOffAction: // USINT
+	case datapointType == DPT_OnOffAction: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -8838,7 +8838,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(2, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Alarm_Reaction: // USINT
+	case datapointType == DPT_Alarm_Reaction: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -8849,7 +8849,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(2, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_UpDown_Action: // USINT
+	case datapointType == DPT_UpDown_Action: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -8860,7 +8860,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(2, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_HVAC_PB_Action: // USINT
+	case datapointType == DPT_HVAC_PB_Action: // USINT
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(6, uint8(0x00)); _err != nil {
@@ -8871,7 +8871,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(2, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DoubleNibble: // Struct
+	case datapointType == DPT_DoubleNibble: // Struct
 
 		// Simple Field (busy)
 		if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
@@ -8882,7 +8882,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'nak' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_SceneInfo: // Struct
+	case datapointType == DPT_SceneInfo: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(1, uint8(0x00)); _err != nil {
@@ -8898,7 +8898,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'scenenumber' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_CombinedInfoOnOff: // Struct
+	case datapointType == DPT_CombinedInfoOnOff: // Struct
 
 		// Simple Field (maskBitInfoOnOffOutput16)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -9059,25 +9059,25 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'infoOnOffOutput1' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ActiveEnergy_V64: // LINT
+	case datapointType == DPT_ActiveEnergy_V64: // LINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt64(64, value.GetInt64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ApparantEnergy_V64: // LINT
+	case datapointType == DPT_ApparantEnergy_V64: // LINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt64(64, value.GetInt64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_ReactiveEnergy_V64: // LINT
+	case datapointType == DPT_ReactiveEnergy_V64: // LINT
 
 		// Simple Field (value)
 		if _err := io.WriteInt64(64, value.GetInt64()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Channel_Activation_24: // Struct
+	case datapointType == DPT_Channel_Activation_24: // Struct
 
 		// Simple Field (activationStateOfChannel1)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -9198,7 +9198,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'activationStateOfChannel24' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_HVACModeNext: // Struct
+	case datapointType == DPT_HVACModeNext: // Struct
 
 		// Simple Field (delayTimeMin)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9209,7 +9209,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'hvacMode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DHWModeNext: // Struct
+	case datapointType == DPT_DHWModeNext: // Struct
 
 		// Simple Field (delayTimeMin)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9220,7 +9220,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'dhwMode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_OccModeNext: // Struct
+	case datapointType == DPT_OccModeNext: // Struct
 
 		// Simple Field (delayTimeMin)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9231,7 +9231,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'occupancyMode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_BuildingModeNext: // Struct
+	case datapointType == DPT_BuildingModeNext: // Struct
 
 		// Simple Field (delayTimeMin)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9242,7 +9242,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'buildingMode' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Version: // Struct
+	case datapointType == DPT_Version: // Struct
 
 		// Simple Field (magicNumber)
 		if _err := io.WriteUint8(5, value.GetUint8()); _err != nil {
@@ -9258,7 +9258,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'revisionNumber' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_AlarmInfo: // Struct
+	case datapointType == DPT_AlarmInfo: // Struct
 
 		// Simple Field (logNumber)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
@@ -9324,7 +9324,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'inalarm' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetF16_3: // Struct
+	case datapointType == DPT_TempRoomSetpSetF16_3: // Struct
 
 		// Simple Field (tempsetpcomf)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
@@ -9340,7 +9340,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'tempsetpeco' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetShiftF16_3: // Struct
+	case datapointType == DPT_TempRoomSetpSetShiftF16_3: // Struct
 
 		// Simple Field (tempsetpshiftcomf)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
@@ -9356,7 +9356,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'tempsetpshifteco' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Scaling_Speed: // Struct
+	case datapointType == DPT_Scaling_Speed: // Struct
 
 		// Simple Field (timePeriod)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9367,7 +9367,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'percent' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Scaling_Step_Time: // Struct
+	case datapointType == DPT_Scaling_Step_Time: // Struct
 
 		// Simple Field (timePeriod)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9378,7 +9378,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'percent' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_MeteringValue: // Struct
+	case datapointType == DPT_MeteringValue: // Struct
 
 		// Simple Field (countval)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
@@ -9419,7 +9419,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'outofservice' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_MBus_Address: // Struct
+	case datapointType == DPT_MBus_Address: // Struct
 
 		// Simple Field (manufactid)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9440,7 +9440,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'medium' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Colour_RGB: // Struct
+	case datapointType == DPT_Colour_RGB: // Struct
 
 		// Simple Field (r)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
@@ -9456,13 +9456,13 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'b' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_LanguageCodeAlpha2_ASCII: // STRING
+	case datapointType == DPT_LanguageCodeAlpha2_ASCII: // STRING
 
 		// Simple Field (value)
-		if _err := io.WriteString(16, "ASCII", value.GetString()); _err != nil {
+		if _err := io.WriteString(-1, "ASCII", value.GetString()); _err != nil {
 			return errors.New("Error serializing 'value' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Tariff_ActiveEnergy: // Struct
+	case datapointType == DPT_Tariff_ActiveEnergy: // Struct
 
 		// Simple Field (activeelectricalenergy)
 		if _err := io.WriteInt32(32, value.GetInt32()); _err != nil {
@@ -9488,7 +9488,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'tariffvalidity' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Prioritised_Mode_Control: // Struct
+	case datapointType == DPT_Prioritised_Mode_Control: // Struct
 
 		// Simple Field (deactivationOfPriority)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -9504,7 +9504,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'modeLevel' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DALI_Control_Gear_Diagnostic: // Struct
+	case datapointType == DPT_DALI_Control_Gear_Diagnostic: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
@@ -9540,7 +9540,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'daliDeviceAddressOrDaliGroupAddress' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_DALI_Diagnostics: // Struct
+	case datapointType == DPT_DALI_Diagnostics: // Struct
 
 		// Simple Field (ballastFailure)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -9556,7 +9556,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(6, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'deviceAddress' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_CombinedPosition: // Struct
+	case datapointType == DPT_CombinedPosition: // Struct
 
 		// Simple Field (heightPosition)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
@@ -9582,7 +9582,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'validitySlatsPosition' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_StatusSAB: // Struct
+	case datapointType == DPT_StatusSAB: // Struct
 
 		// Simple Field (heightPosition)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
@@ -9663,7 +9663,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'validitySlatsPos' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Colour_xyY: // Struct
+	case datapointType == DPT_Colour_xyY: // Struct
 
 		// Simple Field (xAxis)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9694,7 +9694,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'validityBrightness' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Converter_Status: // Struct
+	case datapointType == DPT_Converter_Status: // Struct
 
 		// Simple Field (converterModeAccordingToTheDaliConverterStateMachine)
 		if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
@@ -9735,7 +9735,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(2, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'converterFailure' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Converter_Test_Result: // Struct
+	case datapointType == DPT_Converter_Test_Result: // Struct
 
 		// Simple Field (ltrf)
 		if _err := io.WriteUint8(4, value.GetUint8()); _err != nil {
@@ -9786,7 +9786,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'lpdtr' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Battery_Info: // Struct
+	case datapointType == DPT_Battery_Info: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(5, uint8(0x00)); _err != nil {
@@ -9812,7 +9812,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
 			return errors.New("Error serializing 'batteryChargeLevel' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Brightness_Colour_Temperature_Transition: // Struct
+	case datapointType == DPT_Brightness_Colour_Temperature_Transition: // Struct
 
 		// Simple Field (ms)
 		if _err := io.WriteUint16(16, value.GetUint16()); _err != nil {
@@ -9848,7 +9848,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'validityOfTheAbsoluteBrightness' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Brightness_Colour_Temperature_Control: // Struct
+	case datapointType == DPT_Brightness_Colour_Temperature_Control: // Struct
 
 		// Reserved Field (Just skip the bytes)
 		if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
@@ -9894,7 +9894,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'cbAndStepCodeBrightnessValidity' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Colour_RGBW: // Struct
+	case datapointType == DPT_Colour_RGBW: // Struct
 
 		// Simple Field (colourLevelRed)
 		if _err := io.WriteUint8(8, value.GetUint8()); _err != nil {
@@ -9945,7 +9945,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
 			return errors.New("Error serializing 'mw' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Relative_Control_RGBW: // Struct
+	case datapointType == DPT_Relative_Control_RGBW: // Struct
 
 		// Simple Field (maskcw)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -10031,7 +10031,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
 			return errors.New("Error serializing reserved field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_Relative_Control_RGB: // Struct
+	case datapointType == DPT_Relative_Control_RGB: // Struct
 
 		// Simple Field (cb)
 		if _err := io.WriteBit(value.GetBool()); _err != nil {
@@ -10077,7 +10077,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteUint8(4, uint8(0x00)); _err != nil {
 			return errors.New("Error serializing reserved field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_GeographicalLocation: // Struct
+	case datapointType == DPT_GeographicalLocation: // Struct
 
 		// Simple Field (longitude)
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
@@ -10088,7 +10088,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteFloat32(32, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'latitude' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetF16_4: // Struct
+	case datapointType == DPT_TempRoomSetpSetF16_4: // Struct
 
 		// Simple Field (roomTemperatureSetpointComfort)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
@@ -10109,7 +10109,7 @@ func KnxDatapointSerialize(io *utils.WriteBuffer, value api.PlcValue, datapointT
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
 			return errors.New("Error serializing 'roomTemperatureSetpointBuildingProtection' field " + _err.Error())
 		}
-	case datapointType == KnxDatapointType_DPT_TempRoomSetpSetShiftF16_4: // Struct
+	case datapointType == DPT_TempRoomSetpSetShiftF16_4: // Struct
 
 		// Simple Field (roomTemperatureSetpointShiftComfort)
 		if _err := io.WriteFloat32(16, value.GetFloat32()); _err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
index fa64b39..11ff91d 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapointType.go
@@ -1853,7 +1853,7 @@ func (e KnxDatapointType) Name() string {
 		}
 	case 112:
 		{ /* '112' */
-			return "power density (W/m²)"
+			return "power denisity (W/m²)"
 		}
 	case 113:
 		{ /* '113' */
@@ -3190,1395 +3190,1395 @@ func (e KnxDatapointType) DatapointMainType() KnxDatapointMainType {
 	switch e {
 	case 0:
 		{ /* '0' */
-			return KnxDatapointMainType_DPT_UNKNOWN
+			return DPT_UNKNOWN
 		}
 	case 1:
 		{ /* '1' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 10:
 		{ /* '10' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 100:
 		{ /* '100' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 101:
 		{ /* '101' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 102:
 		{ /* '102' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 103:
 		{ /* '103' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 104:
 		{ /* '104' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 105:
 		{ /* '105' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 106:
 		{ /* '106' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 107:
 		{ /* '107' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 108:
 		{ /* '108' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 109:
 		{ /* '109' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 11:
 		{ /* '11' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 110:
 		{ /* '110' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 111:
 		{ /* '111' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 112:
 		{ /* '112' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 113:
 		{ /* '113' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 114:
 		{ /* '114' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 115:
 		{ /* '115' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 116:
 		{ /* '116' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 117:
 		{ /* '117' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 118:
 		{ /* '118' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 119:
 		{ /* '119' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 12:
 		{ /* '12' */
-			return KnxDatapointMainType_DPT_8_BYTE_UNSIGNED_VALUE
+			return DPT_8_BYTE_UNSIGNED_VALUE
 		}
 	case 120:
 		{ /* '120' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	case 121:
 		{ /* '121' */
-			return KnxDatapointMainType_DPT_TIME
+			return DPT_TIME
 		}
 	case 122:
 		{ /* '122' */
-			return KnxDatapointMainType_DPT_DATE
+			return DPT_DATE
 		}
 	case 123:
 		{ /* '123' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 124:
 		{ /* '124' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 125:
 		{ /* '125' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 126:
 		{ /* '126' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 127:
 		{ /* '127' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 128:
 		{ /* '128' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 129:
 		{ /* '129' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 13:
 		{ /* '13' */
-			return KnxDatapointMainType_DPT_8_BYTE_SIGNED_VALUE
+			return DPT_8_BYTE_SIGNED_VALUE
 		}
 	case 130:
 		{ /* '130' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 131:
 		{ /* '131' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 132:
 		{ /* '132' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 133:
 		{ /* '133' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 134:
 		{ /* '134' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 135:
 		{ /* '135' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 136:
 		{ /* '136' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 137:
 		{ /* '137' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 138:
 		{ /* '138' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 139:
 		{ /* '139' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 14:
 		{ /* '14' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 140:
 		{ /* '140' */
-			return KnxDatapointMainType_DPT_4_BYTE_SIGNED_VALUE
+			return DPT_4_BYTE_SIGNED_VALUE
 		}
 	case 141:
 		{ /* '141' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 142:
 		{ /* '142' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 143:
 		{ /* '143' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 144:
 		{ /* '144' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 145:
 		{ /* '145' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 146:
 		{ /* '146' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 147:
 		{ /* '147' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 148:
 		{ /* '148' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 149:
 		{ /* '149' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 15:
 		{ /* '15' */
-			return KnxDatapointMainType_DPT_8_BYTE_FLOAT_VALUE
+			return DPT_8_BYTE_FLOAT_VALUE
 		}
 	case 150:
 		{ /* '150' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 151:
 		{ /* '151' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 152:
 		{ /* '152' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 153:
 		{ /* '153' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 154:
 		{ /* '154' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 155:
 		{ /* '155' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 156:
 		{ /* '156' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 157:
 		{ /* '157' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 158:
 		{ /* '158' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 159:
 		{ /* '159' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 16:
 		{ /* '16' */
-			return KnxDatapointMainType_DPT_CHARACTER
+			return DPT_CHARACTER
 		}
 	case 160:
 		{ /* '160' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 161:
 		{ /* '161' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 162:
 		{ /* '162' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 163:
 		{ /* '163' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 164:
 		{ /* '164' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 165:
 		{ /* '165' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 166:
 		{ /* '166' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 167:
 		{ /* '167' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 168:
 		{ /* '168' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 169:
 		{ /* '169' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 17:
 		{ /* '17' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 170:
 		{ /* '170' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 171:
 		{ /* '171' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 172:
 		{ /* '172' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 173:
 		{ /* '173' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 174:
 		{ /* '174' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 175:
 		{ /* '175' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 176:
 		{ /* '176' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 177:
 		{ /* '177' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 178:
 		{ /* '178' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 179:
 		{ /* '179' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 18:
 		{ /* '18' */
-			return KnxDatapointMainType_DPT_UNKNOWN
+			return DPT_UNKNOWN
 		}
 	case 180:
 		{ /* '180' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 181:
 		{ /* '181' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 182:
 		{ /* '182' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 183:
 		{ /* '183' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 184:
 		{ /* '184' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 185:
 		{ /* '185' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 186:
 		{ /* '186' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 187:
 		{ /* '187' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 188:
 		{ /* '188' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 189:
 		{ /* '189' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 19:
 		{ /* '19' */
-			return KnxDatapointMainType_DPT_UNKNOWN
+			return DPT_UNKNOWN
 		}
 	case 190:
 		{ /* '190' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 191:
 		{ /* '191' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 192:
 		{ /* '192' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 193:
 		{ /* '193' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 194:
 		{ /* '194' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 195:
 		{ /* '195' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 196:
 		{ /* '196' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 197:
 		{ /* '197' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 198:
 		{ /* '198' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 199:
 		{ /* '199' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 2:
 		{ /* '2' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 20:
 		{ /* '20' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 200:
 		{ /* '200' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 201:
 		{ /* '201' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 202:
 		{ /* '202' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 203:
 		{ /* '203' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 204:
 		{ /* '204' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 205:
 		{ /* '205' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 206:
 		{ /* '206' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 207:
 		{ /* '207' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 208:
 		{ /* '208' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 209:
 		{ /* '209' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 21:
 		{ /* '21' */
-			return KnxDatapointMainType_DPT_8_BYTE_UNSIGNED_VALUE
+			return DPT_8_BYTE_UNSIGNED_VALUE
 		}
 	case 210:
 		{ /* '210' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 211:
 		{ /* '211' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 212:
 		{ /* '212' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 213:
 		{ /* '213' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 214:
 		{ /* '214' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 215:
 		{ /* '215' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 216:
 		{ /* '216' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 217:
 		{ /* '217' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 218:
 		{ /* '218' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 219:
 		{ /* '219' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 22:
 		{ /* '22' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 220:
 		{ /* '220' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 221:
 		{ /* '221' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 222:
 		{ /* '222' */
-			return KnxDatapointMainType_DPT_4_BYTE_FLOAT_VALUE
+			return DPT_4_BYTE_FLOAT_VALUE
 		}
 	case 223:
 		{ /* '223' */
-			return KnxDatapointMainType_DPT_ENTRANCE_ACCESS
+			return DPT_ENTRANCE_ACCESS
 		}
 	case 224:
 		{ /* '224' */
-			return KnxDatapointMainType_DPT_CHARACTER_STRING
+			return DPT_CHARACTER_STRING
 		}
 	case 225:
 		{ /* '225' */
-			return KnxDatapointMainType_DPT_CHARACTER_STRING
+			return DPT_CHARACTER_STRING
 		}
 	case 226:
 		{ /* '226' */
-			return KnxDatapointMainType_DPT_SCENE_NUMBER
+			return DPT_SCENE_NUMBER
 		}
 	case 227:
 		{ /* '227' */
-			return KnxDatapointMainType_DPT_SCENE_CONTROL
+			return DPT_SCENE_CONTROL
 		}
 	case 228:
 		{ /* '228' */
-			return KnxDatapointMainType_DPT_DATE_TIME
+			return DPT_DATE_TIME
 		}
 	case 229:
 		{ /* '229' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 23:
 		{ /* '23' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 230:
 		{ /* '230' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 231:
 		{ /* '231' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 232:
 		{ /* '232' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 233:
 		{ /* '233' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 234:
 		{ /* '234' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 235:
 		{ /* '235' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 236:
 		{ /* '236' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 237:
 		{ /* '237' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 238:
 		{ /* '238' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 239:
 		{ /* '239' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 24:
 		{ /* '24' */
-			return KnxDatapointMainType_DPT_4_BYTE_UNSIGNED_VALUE
+			return DPT_4_BYTE_UNSIGNED_VALUE
 		}
 	case 240:
 		{ /* '240' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 241:
 		{ /* '241' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 242:
 		{ /* '242' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 243:
 		{ /* '243' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 244:
 		{ /* '244' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 245:
 		{ /* '245' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 246:
 		{ /* '246' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 247:
 		{ /* '247' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 248:
 		{ /* '248' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 249:
 		{ /* '249' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 25:
 		{ /* '25' */
-			return KnxDatapointMainType_DPT_12_BYTE_SIGNED_VALUE
+			return DPT_12_BYTE_SIGNED_VALUE
 		}
 	case 250:
 		{ /* '250' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 251:
 		{ /* '251' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 252:
 		{ /* '252' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 253:
 		{ /* '253' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 254:
 		{ /* '254' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 255:
 		{ /* '255' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 256:
 		{ /* '256' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 257:
 		{ /* '257' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 258:
 		{ /* '258' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 259:
 		{ /* '259' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 26:
 		{ /* '26' */
-			return KnxDatapointMainType_DPT_12_BYTE_SIGNED_VALUE
+			return DPT_12_BYTE_SIGNED_VALUE
 		}
 	case 260:
 		{ /* '260' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 261:
 		{ /* '261' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 262:
 		{ /* '262' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 263:
 		{ /* '263' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 264:
 		{ /* '264' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 265:
 		{ /* '265' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 266:
 		{ /* '266' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 267:
 		{ /* '267' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 268:
 		{ /* '268' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 269:
 		{ /* '269' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 27:
 		{ /* '27' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 270:
 		{ /* '270' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 271:
 		{ /* '271' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 272:
 		{ /* '272' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 273:
 		{ /* '273' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 274:
 		{ /* '274' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 275:
 		{ /* '275' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 276:
 		{ /* '276' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 277:
 		{ /* '277' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 278:
 		{ /* '278' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 279:
 		{ /* '279' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 28:
 		{ /* '28' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 280:
 		{ /* '280' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 281:
 		{ /* '281' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 282:
 		{ /* '282' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 283:
 		{ /* '283' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 284:
 		{ /* '284' */
-			return KnxDatapointMainType_DPT_1_BYTE
+			return DPT_1_BYTE
 		}
 	case 285:
 		{ /* '285' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 286:
 		{ /* '286' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 287:
 		{ /* '287' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 288:
 		{ /* '288' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 289:
 		{ /* '289' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 29:
 		{ /* '29' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 290:
 		{ /* '290' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 291:
 		{ /* '291' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 292:
 		{ /* '292' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 293:
 		{ /* '293' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 294:
 		{ /* '294' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 295:
 		{ /* '295' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 296:
 		{ /* '296' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 297:
 		{ /* '297' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 298:
 		{ /* '298' */
-			return KnxDatapointMainType_DPT_8_BIT_SET
+			return DPT_8_BIT_SET
 		}
 	case 299:
 		{ /* '299' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return DPT_16_BIT_SET
 		}
 	case 3:
 		{ /* '3' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return DPT_16_BIT_SET
 		}
 	case 30:
 		{ /* '30' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 300:
 		{ /* '300' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return DPT_16_BIT_SET
 		}
 	case 301:
 		{ /* '301' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return DPT_16_BIT_SET
 		}
 	case 302:
 		{ /* '302' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return DPT_16_BIT_SET
 		}
 	case 303:
 		{ /* '303' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return DPT_16_BIT_SET
 		}
 	case 304:
 		{ /* '304' */
-			return KnxDatapointMainType_DPT_16_BIT_SET
+			return DPT_16_BIT_SET
 		}
 	case 305:
 		{ /* '305' */
-			return KnxDatapointMainType_DPT_2_BIT_SET
+			return DPT_2_BIT_SET
 		}
 	case 306:
 		{ /* '306' */
-			return KnxDatapointMainType_DPT_2_BIT_SET
+			return DPT_2_BIT_SET
 		}
 	case 307:
 		{ /* '307' */
-			return KnxDatapointMainType_DPT_2_BIT_SET
+			return DPT_2_BIT_SET
 		}
 	case 308:
 		{ /* '308' */
-			return KnxDatapointMainType_DPT_2_BIT_SET
+			return DPT_2_BIT_SET
 		}
 	case 309:
 		{ /* '309' */
-			return KnxDatapointMainType_DPT_2_NIBBLE_SET
+			return DPT_2_NIBBLE_SET
 		}
 	case 31:
 		{ /* '31' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 310:
 		{ /* '310' */
-			return KnxDatapointMainType_DPT_8_BIT_SET_2
+			return DPT_8_BIT_SET_2
 		}
 	case 311:
 		{ /* '311' */
-			return KnxDatapointMainType_DPT_32_BIT_SET
+			return DPT_32_BIT_SET
 		}
 	case 312:
 		{ /* '312' */
-			return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
+			return DPT_ELECTRICAL_ENERGY
 		}
 	case 313:
 		{ /* '313' */
-			return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
+			return DPT_ELECTRICAL_ENERGY
 		}
 	case 314:
 		{ /* '314' */
-			return KnxDatapointMainType_DPT_ELECTRICAL_ENERGY
+			return DPT_ELECTRICAL_ENERGY
 		}
 	case 315:
 		{ /* '315' */
-			return KnxDatapointMainType_DPT_24_TIMES_CHANNEL_ACTIVATION
+			return DPT_24_TIMES_CHANNEL_ACTIVATION
 		}
 	case 316:
 		{ /* '316' */
-			return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+			return DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
 		}
 	case 317:
 		{ /* '317' */
-			return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+			return DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
 		}
 	case 318:
 		{ /* '318' */
-			return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+			return DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
 		}
 	case 319:
 		{ /* '319' */
-			return KnxDatapointMainType_DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
+			return DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM
 		}
 	case 32:
 		{ /* '32' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 320:
 		{ /* '320' */
-			return KnxDatapointMainType_DPT_DATAPOINT_TYPE_VERSION
+			return DPT_DATAPOINT_TYPE_VERSION
 		}
 	case 321:
 		{ /* '321' */
-			return KnxDatapointMainType_DPT_ALARM_INFO
+			return DPT_ALARM_INFO
 		}
 	case 322:
 		{ /* '322' */
-			return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
+			return DPT_3X_2_BYTE_FLOAT_VALUE
 		}
 	case 323:
 		{ /* '323' */
-			return KnxDatapointMainType_DPT_3X_2_BYTE_FLOAT_VALUE
+			return DPT_3X_2_BYTE_FLOAT_VALUE
 		}
 	case 324:
 		{ /* '324' */
-			return KnxDatapointMainType_DPT_SCALING_SPEED
+			return DPT_SCALING_SPEED
 		}
 	case 325:
 		{ /* '325' */
-			return KnxDatapointMainType_DPT_SCALING_SPEED
+			return DPT_SCALING_SPEED
 		}
 	case 326:
 		{ /* '326' */
-			return KnxDatapointMainType_DPT_4_1_1_BYTE_COMBINED_INFORMATION
+			return DPT_4_1_1_BYTE_COMBINED_INFORMATION
 		}
 	case 327:
 		{ /* '327' */
-			return KnxDatapointMainType_DPT_MBUS_ADDRESS
+			return DPT_MBUS_ADDRESS
 		}
 	case 328:
 		{ /* '328' */
-			return KnxDatapointMainType_DPT_3_BYTE_COLOUR_RGB
+			return DPT_3_BYTE_COLOUR_RGB
 		}
 	case 329:
 		{ /* '329' */
-			return KnxDatapointMainType_DPT_LANGUAGE_CODE_ISO_639_1
+			return DPT_LANGUAGE_CODE_ISO_639_1
 		}
 	case 33:
 		{ /* '33' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 330:
 		{ /* '330' */
-			return KnxDatapointMainType_DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
+			return DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY
 		}
 	case 331:
 		{ /* '331' */
-			return KnxDatapointMainType_DPT_PRIORITISED_MODE_CONTROL
+			return DPT_PRIORITISED_MODE_CONTROL
 		}
 	case 332:
 		{ /* '332' */
-			return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
+			return DPT_CONFIGURATION_DIAGNOSTICS_16_BIT
 		}
 	case 333:
 		{ /* '333' */
-			return KnxDatapointMainType_DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
+			return DPT_CONFIGURATION_DIAGNOSTICS_8_BIT
 		}
 	case 334:
 		{ /* '334' */
-			return KnxDatapointMainType_DPT_POSITIONS
+			return DPT_POSITIONS
 		}
 	case 335:
 		{ /* '335' */
-			return KnxDatapointMainType_DPT_STATUS_32_BIT
+			return DPT_STATUS_32_BIT
 		}
 	case 336:
 		{ /* '336' */
-			return KnxDatapointMainType_DPT_STATUS_48_BIT
+			return DPT_STATUS_48_BIT
 		}
 	case 337:
 		{ /* '337' */
-			return KnxDatapointMainType_DPT_CONVERTER_STATUS
+			return DPT_CONVERTER_STATUS
 		}
 	case 338:
 		{ /* '338' */
-			return KnxDatapointMainType_DPT_CONVERTER_TEST_RESULT
+			return DPT_CONVERTER_TEST_RESULT
 		}
 	case 339:
 		{ /* '339' */
-			return KnxDatapointMainType_DPT_BATTERY_INFORMATION
+			return DPT_BATTERY_INFORMATION
 		}
 	case 34:
 		{ /* '34' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 340:
 		{ /* '340' */
-			return KnxDatapointMainType_DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
+			return DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION
 		}
 	case 341:
 		{ /* '341' */
-			return KnxDatapointMainType_DPT_STATUS_24_BIT
+			return DPT_STATUS_24_BIT
 		}
 	case 342:
 		{ /* '342' */
-			return KnxDatapointMainType_DPT_COLOUR_RGBW
+			return DPT_COLOUR_RGBW
 		}
 	case 343:
 		{ /* '343' */
-			return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGBW
+			return DPT_RELATIVE_CONTROL_RGBW
 		}
 	case 344:
 		{ /* '344' */
-			return KnxDatapointMainType_DPT_RELATIVE_CONTROL_RGB
+			return DPT_RELATIVE_CONTROL_RGB
 		}
 	case 345:
 		{ /* '345' */
-			return KnxDatapointMainType_DPT_F32F32
+			return DPT_F32F32
 		}
 	case 346:
 		{ /* '346' */
-			return KnxDatapointMainType_DPT_F16F16F16F16
+			return DPT_F16F16F16F16
 		}
 	case 347:
 		{ /* '347' */
-			return KnxDatapointMainType_DPT_F16F16F16F16
+			return DPT_F16F16F16F16
 		}
 	case 35:
 		{ /* '35' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 36:
 		{ /* '36' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 37:
 		{ /* '37' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 38:
 		{ /* '38' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 39:
 		{ /* '39' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 4:
 		{ /* '4' */
-			return KnxDatapointMainType_DPT_32_BIT_SET
+			return DPT_32_BIT_SET
 		}
 	case 40:
 		{ /* '40' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 41:
 		{ /* '41' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 42:
 		{ /* '42' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 43:
 		{ /* '43' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 44:
 		{ /* '44' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 45:
 		{ /* '45' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 46:
 		{ /* '46' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 47:
 		{ /* '47' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 48:
 		{ /* '48' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 49:
 		{ /* '49' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 5:
 		{ /* '5' */
-			return KnxDatapointMainType_DPT_64_BIT_SET
+			return DPT_64_BIT_SET
 		}
 	case 50:
 		{ /* '50' */
-			return KnxDatapointMainType_DPT_1_BIT
+			return DPT_1_BIT
 		}
 	case 51:
 		{ /* '51' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 52:
 		{ /* '52' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 53:
 		{ /* '53' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 54:
 		{ /* '54' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 55:
 		{ /* '55' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 56:
 		{ /* '56' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 57:
 		{ /* '57' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 58:
 		{ /* '58' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 59:
 		{ /* '59' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 6:
 		{ /* '6' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 60:
 		{ /* '60' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 61:
 		{ /* '61' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 62:
 		{ /* '62' */
-			return KnxDatapointMainType_DPT_1_BIT_CONTROLLED
+			return DPT_1_BIT_CONTROLLED
 		}
 	case 63:
 		{ /* '63' */
-			return KnxDatapointMainType_DPT_3_BIT_CONTROLLED
+			return DPT_3_BIT_CONTROLLED
 		}
 	case 64:
 		{ /* '64' */
-			return KnxDatapointMainType_DPT_3_BIT_CONTROLLED
+			return DPT_3_BIT_CONTROLLED
 		}
 	case 65:
 		{ /* '65' */
-			return KnxDatapointMainType_DPT_CHARACTER
+			return DPT_CHARACTER
 		}
 	case 66:
 		{ /* '66' */
-			return KnxDatapointMainType_DPT_CHARACTER
+			return DPT_CHARACTER
 		}
 	case 67:
 		{ /* '67' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 68:
 		{ /* '68' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 69:
 		{ /* '69' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 7:
 		{ /* '7' */
-			return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
+			return DPT_8_BIT_SIGNED_VALUE
 		}
 	case 70:
 		{ /* '70' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 71:
 		{ /* '71' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 72:
 		{ /* '72' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 73:
 		{ /* '73' */
-			return KnxDatapointMainType_DPT_8_BIT_UNSIGNED_VALUE
+			return DPT_8_BIT_UNSIGNED_VALUE
 		}
 	case 74:
 		{ /* '74' */
-			return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
+			return DPT_8_BIT_SIGNED_VALUE
 		}
 	case 75:
 		{ /* '75' */
-			return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
+			return DPT_8_BIT_SIGNED_VALUE
 		}
 	case 76:
 		{ /* '76' */
-			return KnxDatapointMainType_DPT_8_BIT_SIGNED_VALUE
+			return DPT_8_BIT_SIGNED_VALUE
 		}
 	case 77:
 		{ /* '77' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 78:
 		{ /* '78' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 79:
 		{ /* '79' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 8:
 		{ /* '8' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 80:
 		{ /* '80' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 81:
 		{ /* '81' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 82:
 		{ /* '82' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 83:
 		{ /* '83' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 84:
 		{ /* '84' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 85:
 		{ /* '85' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 86:
 		{ /* '86' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 87:
 		{ /* '87' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 88:
 		{ /* '88' */
-			return KnxDatapointMainType_DPT_2_BYTE_UNSIGNED_VALUE
+			return DPT_2_BYTE_UNSIGNED_VALUE
 		}
 	case 89:
 		{ /* '89' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 9:
 		{ /* '9' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 90:
 		{ /* '90' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 91:
 		{ /* '91' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 92:
 		{ /* '92' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 93:
 		{ /* '93' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 94:
 		{ /* '94' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 95:
 		{ /* '95' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 96:
 		{ /* '96' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 97:
 		{ /* '97' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 98:
 		{ /* '98' */
-			return KnxDatapointMainType_DPT_2_BYTE_SIGNED_VALUE
+			return DPT_2_BYTE_SIGNED_VALUE
 		}
 	case 99:
 		{ /* '99' */
-			return KnxDatapointMainType_DPT_2_BYTE_FLOAT_VALUE
+			return DPT_2_BYTE_FLOAT_VALUE
 		}
 	default:
 		{
diff --git a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
index 5107e01..9963767 100644
--- a/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
+++ b/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxInterfaceObjectProperty.go
@@ -257,867 +257,867 @@ func (e KnxInterfaceObjectProperty) PropertyDataType() KnxPropertyDataType {
 	switch e {
 	case 0:
 		{ /* '0' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 1:
 		{ /* '1' */
-			return KnxPropertyDataType_PDT_UNSIGNED_INT
+			return PDT_UNSIGNED_INT
 		}
 	case 10:
 		{ /* '10' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 100:
 		{ /* '100' */
-			return KnxPropertyDataType_PDT_BINARY_INFORMATION
+			return PDT_BINARY_INFORMATION
 		}
 	case 101:
 		{ /* '101' */
-			return KnxPropertyDataType_PDT_UNSIGNED_INT
+			return PDT_UNSIGNED_INT
 		}
 	case 102:
 		{ /* '102' */
-			return KnxPropertyDataType_PDT_UNSIGNED_INT
+			return PDT_UNSIGNED_INT
 		}
 	case 103:
 		{ /* '103' */
-			return KnxPropertyDataType_PDT_UNSIGNED_LONG
+			return PDT_UNSIGNED_LONG
 		}
 	case 104:
 		{ /* '104' */
-			return KnxPropertyDataType_PDT_UNSIGNED_LONG
+			return PDT_UNSIGNED_LONG
 		}
 	case 105:
 		{ /* '105' */
-			return KnxPropertyDataType_PDT_UNSIGNED_CHAR
+			return PDT_UNSIGNED_CHAR
 		}
 	case 106:
 		{ /* '106' */
-			return KnxPropertyDataType_PDT_GENERIC_16
+			return PDT_GENERIC_16
 		}
 	case 107:
 		{ /* '107' */
-			return KnxPropertyDataType_PDT_GENERIC_16
+			return PDT_GENERIC_16
 		}
 	case 108:
 		{ /* '108' */
-			return KnxPropertyDataType_PDT_GENERIC_16
+			return PDT_GENERIC_16
 		}
 	case 109:
 		{ /* '109' */
-			return KnxPropertyDataType_PDT_FUNCTION
+			return PDT_FUNCTION
 		}
 	case 11:
 		{ /* '11' */
-			return KnxPropertyDataType_PDT_GENERIC_06
+			return PDT_GENERIC_06
 		}
 	case 110:
 		{ /* '110' */
-			return KnxPropertyDataType_PDT_UNSIGNED_INT
+			return PDT_UNSIGNED_INT
 		}
 	case 111:
 		{ /* '111' */
-			return KnxPropertyDataType_PDT_SCALING
+			return PDT_SCALING
 		}
 	case 112:
 		{ /* '112' */
-			return KnxPropertyDataType_PDT_GENERIC_02
+			return PDT_GENERIC_02
 		}
 	case 113:
 		{ /* '113' */
-			return KnxPropertyDataType_PDT_FUNCTION
+			return PDT_FUNCTION
 		}
 	case 114:
 		{ /* '114' */
-			return KnxPropertyDataType_PDT_GENERIC_18
+			return PDT_GENERIC_18
 		}
 	case 115:
 		{ /* '115' */
-			return KnxPropertyDataType_PDT_GENERIC_18
+			return PDT_GENERIC_18
 		}
 	case 116:
 		{ /* '116' */
-			return KnxPropertyDataType_PDT_GENERIC_08
+			return PDT_GENERIC_08
 		}
 	case 117:
 		{ /* '117' */
-			return KnxPropertyDataType_PDT_FUNCTION
+			return PDT_FUNCTION
 		}
 	case 118:
 		{ /* '118' */
-			return KnxPropertyDataType_PDT_GENERIC_16
+			return PDT_GENERIC_16
 		}
 	case 119:
 		{ /* '119' */
-			return KnxPropertyDataType_PDT_BITSET8
+			return PDT_BITSET8
 		}
 	case 12:
 		{ /* '12' */
-			return KnxPropertyDataType_PDT_UNSIGNED_INT
+			return PDT_UNSIGNED_INT
 		}
 	case 120:
 		{ /* '120' */
-			return KnxPropertyDataType_PDT_BINARY_INFORMATION
+			return PDT_BINARY_INFORMATION
 		}
 	case 121:
 		{ /* '121' */
-			return KnxPropertyDataType_PDT_GENERIC_06
+			return PDT_GENERIC_06
 		}
 	case 122:
 		{ /* '122' */
-			return KnxPropertyDataType_PDT_GENERIC_19
+			return PDT_GENERIC_19
 		}
 	case 123:
 		{ /* '123' */
-			return KnxPropertyDataType_PDT_GENERIC_01
+			return PDT_GENERIC_01
 		}
 	case 124:
 		{ /* '124' */
-			return KnxPropertyDataType_PDT_GENERIC_01
+			return PDT_GENERIC_01
 		}
 	case 125:
 		{ /* '125' */
-			return KnxPropertyDataType_PDT_GENERIC_06
+			return PDT_GENERIC_06
 		}
 	case 126:
 		{ /* '126' */
-			return KnxPropertyDataType_PDT_BINARY_INFORMATION
+			return PDT_BINARY_INFORMATION
 		}
 	case 127:
 		{ /* '127' */
-			return KnxPropertyDataType_PDT_BINARY_INFORMATION
+			return PDT_BINARY_INFORMATION
 		}
 	case 128:
 		{ /* '128' */
-			return KnxPropertyDataType_PDT_BITSET8
+			return PDT_BITSET8
 		}
 	case 129:
 		{ /* '129' */
-			return KnxPropertyDataType_PDT_FUNCTION
+			return PDT_FUNCTION
 		}
 	case 13:
 		{ /* '13' */
-			return KnxPropertyDataType_PDT_GENERIC_05
+			return PDT_GENERIC_05
 		}
 	case 130:
 		{ /* '130' */
-			return KnxPropertyDataType_PDT_GENERIC_03
+			return PDT_GENERIC_03
 		}
 	case 131:
 		{ /* '131' */
-			return KnxPropertyDataType_PDT_GENERIC_04
+			return PDT_GENERIC_04
 		}
 	case 132:
 		{ /* '132' */
-			return KnxPropertyDataType_PDT_FUNCTION
+			return PDT_FUNCTION
 		}
 	case 133:
 		{ /* '133' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 134:
 		{ /* '134' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 135:
 		{ /* '135' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 136:
 		{ /* '136' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 137:
 		{ /* '137' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 138:
 		{ /* '138' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 139:
 		{ /* '139' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 14:
 		{ /* '14' */
-			return KnxPropertyDataType_PDT_BITSET8
+			return PDT_BITSET8
 		}
 	case 140:
 		{ /* '140' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 141:
 		{ /* '141' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 142:
 		{ /* '142' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 143:
 		{ /* '143' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 144:
 		{ /* '144' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 145:
 		{ /* '145' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 146:
 		{ /* '146' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 147:
 		{ /* '147' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 148:
 		{ /* '148' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 149:
 		{ /* '149' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 15:
 		{ /* '15' */
-			return KnxPropertyDataType_PDT_GENERIC_10
+			return PDT_GENERIC_10
 		}
 	case 150:
 		{ /* '150' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 151:
 		{ /* '151' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 152:
 		{ /* '152' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
 		}
 	case 153:
 		{ /* '153' */
-			return KnxPropertyDataType_PDT_UNKNOWN
+			return PDT_UNKNOWN
... 4324 lines suppressed ...