From 079dd60193cf24141544c3e9dc50bd979b5524c4 Mon Sep 17 00:00:00 2001 From: Christofer Dutz Date: Thu, 5 Sep 2024 14:13:17 +0200 Subject: [PATCH] Feature/modbus optimizer (#1744) Implemented a java version of an optimizer for Modbus, that is able to aggregate multiple items into one request, hereby increasing the read speed signifficantly. --- RELEASE_NOTES | 2 + .../include/plc4c/driver_test_static.h | 4 +- .../templates/cs/data-io-template.cs.ftlh | 40 +- .../templates/go/data-io-template.go.ftlh | 10 + .../python/data-io-template.python.ftlh | 10 +- .../knxnetip/readwrite/model/KnxProperty.go | 378 ++--- .../java/knxnetip/readwrite/KnxProperty.java | 201 ++- .../java/modbus/ascii/ModbusAsciiDriver.java | 6 +- .../config/ModbusAsciiConfiguration.java | 30 + .../ascii/context/ModbusAsciiContext.java | 35 + .../modbus/base/context/ModbusContext.java | 55 + .../base/optimizer/ModbusOptimizer.java | 316 ++++ .../base/protocol/ModbusProtocolLogic.java | 43 +- .../base/tag/ModbusTagExtendedRegister.java | 2 +- .../base/tag/ModbusTagHoldingRegister.java | 2 +- .../base/tag/ModbusTagInputRegister.java | 2 +- .../java/modbus/rtu/ModbusRtuDriver.java | 4 +- .../rtu/config/ModbusRtuConfiguration.java | 30 + .../modbus/rtu/context/ModbusRtuContext.java | 35 + .../java/modbus/tcp/ModbusTcpDriver.java | 7 +- .../tcp/config/ModbusTcpConfiguration.java | 30 + .../modbus/tcp/context/ModbusTcpContext.java | 35 + .../modbus/ManualModbusTCPDriverTest.java | 5 +- .../base/optimizer/ModbusOptimizerTest.java | 243 +++ .../java/modbus/tcp/ModbusTcpDriverIT.java | 2 +- plc4j/drivers/s7/pom.xml | 4 - .../s7/readwrite/context/S7DriverContext.java | 1 - .../optimizer/DefaultS7MessageProcessor.java | 288 ---- .../optimizer/S7MessageProcessor.java | 40 - .../s7/readwrite/optimizer/S7Optimizer.java | 11 +- .../java/spi/optimizer/BaseOptimizer.java | 73 +- .../apache/plc4x/test/manual/ManualTest.java | 8 +- plc4net/.gitignore | 1 + .../knxnetip/readwrite/model/KnxDatapoint.cs | 1396 ++++++++--------- .../knxnetip/readwrite/model/KnxProperty.cs | 468 ++---- plc4net/spi/spi/generation/ReadBuffer.cs | 5 + .../spi/spi/model/values/PlcRawByteArray.cs | 50 + .../protocols/modbus/readwrite/DataItem.py | 16 +- .../protocols/simulated/readwrite/DataItem.py | 72 +- .../protocols/knxnetip/knxnetip.mspec | 46 +- .../modbus/tcp/DriverTestsuiteOptimized.xml | 529 +++++++ 41 files changed, 2702 insertions(+), 1833 deletions(-) create mode 100644 plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/context/ModbusAsciiContext.java create mode 100644 plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/context/ModbusContext.java create mode 100644 plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java create mode 100644 plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/context/ModbusRtuContext.java create mode 100644 plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/context/ModbusTcpContext.java create mode 100644 plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizerTest.java delete mode 100644 plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/DefaultS7MessageProcessor.java delete mode 100644 plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7MessageProcessor.java create mode 100644 plc4net/spi/spi/model/values/PlcRawByteArray.cs create mode 100644 protocols/modbus/src/test/resources/protocols/modbus/tcp/DriverTestsuiteOptimized.xml diff --git a/RELEASE_NOTES b/RELEASE_NOTES index c561cf61830..84076ec6c72 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -19,6 +19,8 @@ New Features them back together. It is now possible to read arrays of almost unlimited size. - Added auto-discovery to the EIP and KNXNet/IP Drivers. +- Added an Optimizer to the Modbus driver, that improves read + performance of multi-item read requests by more than 10 times. Incompatible changes -------------------- diff --git a/code-generation/language-c/src/test/resources/integration-test/include/plc4c/driver_test_static.h b/code-generation/language-c/src/test/resources/integration-test/include/plc4c/driver_test_static.h index 03ffe1d3a3b..4c0daa4198c 100644 --- a/code-generation/language-c/src/test/resources/integration-test/include/plc4c/driver_test_static.h +++ b/code-generation/language-c/src/test/resources/integration-test/include/plc4c/driver_test_static.h @@ -27,8 +27,8 @@ int8_t plc4c_test_read_write_crc_int8(); uint8_t plc4c_test_read_write_crc_uint8(); -uint8_t plc4c_test_read_write_read_manual_field(plc4c_spi_read_buffer* readBuffer, uint8_t value); -plc4c_return_code plc4c_test_read_write_write_manual_field(plc4c_spi_write_buffer* writeBuffer, uint8_t value); +uint8_t plc4c_test_read_write_read_a_manual_field(plc4c_spi_read_buffer* readBuffer, uint8_t value); +plc4c_return_code plc4c_test_read_write_write_a_manual_field(plc4c_spi_write_buffer* writeBuffer, uint8_t value); #ifdef __cplusplus } diff --git a/code-generation/language-cs/src/main/resources/templates/cs/data-io-template.cs.ftlh b/code-generation/language-cs/src/main/resources/templates/cs/data-io-template.cs.ftlh index a265094f30b..9184f328ff5 100644 --- a/code-generation/language-cs/src/main/resources/templates/cs/data-io-template.cs.ftlh +++ b/code-generation/language-cs/src/main/resources/templates/cs/data-io-template.cs.ftlh @@ -99,8 +99,11 @@ namespace org.apache.plc4net.drivers.${protocolName?replace("-", "")}.${outputFl <#if arrayField.loopExpression.contains("curPos")> curPos = readBuffer.getPos() - startPos; + <#if elementTypeReference.isByteBased()> + var ${arrayField.name} = readBuffer.ReadByteArray("", ${helper.toParseExpression(arrayField, helper.intTypeReference, arrayField.loopExpression, parserArguments)}); + <#else> <#-- If this is a count array, we can directly initialize an array with the given size --> - <#if field.isCountArrayField()> + <#if field.isCountArrayField()> // Count array List ${arrayField.name}; { @@ -111,40 +114,41 @@ namespace org.apache.plc4net.drivers.${protocolName?replace("-", "")}.${outputFl } } <#-- In all other cases do we have to work with a list, that is later converted to an array --> - <#else> + <#else> <#-- For a length array, we read data till the read position of the buffer reaches a given position --> - <#if arrayField.isLengthArrayField()> + <#if arrayField.isLengthArrayField()> // Length array var _${arrayField.name}Length = ${helper.toParseExpression(arrayField, helper.intTypeReference, arrayField.loopExpression,parserArguments)}; var ${arrayField.name}EndPos = readBuffer.getPos() + _${arrayField.name}Length; var value = new List(); while(readBuffer.getPos() < ${arrayField.name}EndPos) { value.Add( - <#if elementTypeReference.isSimpleTypeReference()> + <#if elementTypeReference.isSimpleTypeReference()> new ${helper.getPlcValueTypeForTypeReference(elementTypeReference)}(${helper.getReadBufferReadMethodCall(elementTypeReference.asSimpleTypeReference().orElseThrow(), "", arrayField)}) - <#else>${elementTypeReference.asNonSimpleTypeReference().orElseThrow().name}IO.StaticParse(readBuffer - <#if elementTypeReference.asNonSimpleTypeReference().orElseThrow().params.isPresent()>, - <#list elementTypeReference.asNonSimpleTypeReference().orElseThrow().params.orElseThrow() as parserArgument> + <#else>${elementTypeReference.asNonSimpleTypeReference().orElseThrow().name}IO.StaticParse(readBuffer + <#if elementTypeReference.asNonSimpleTypeReference().orElseThrow().params.isPresent()>, + <#list elementTypeReference.asNonSimpleTypeReference().orElseThrow().params.orElseThrow() as parserArgument> (${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(elementTypeReference, parserArgument?index))}) (${helper.toParseExpression(arrayField,elementTypeReference, parserArgument,parserArguments)}) - <#sep>, - - + <#sep>, + + ) - + ); } <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false --> - <#elseif arrayField.isTerminatedArrayField()> + <#elseif arrayField.isTerminatedArrayField()> // Terminated array var ${arrayField.name} = new List<${helper.getLanguageTypeNameForField(arrayField)}>(); while(!((boolean) (${helper.toParseExpression(arrayField, helper.boolTypeReference, arrayField.loopExpression,parserArguments)}))) { ${arrayField.name}.Add(<#if elementTypeReference.isSimpleTypeReference()>${helper.getReadBufferReadMethodCall(elementTypeReference.asSimpleTypeReference().orElseThrow(), "", arrayField)}<#else>${elementTypeReference.asNonSimpleTypeReference().orElseThrow().name}IO.StaticParse(readBuffer<#if elementTypeReference.asNonSimpleTypeReference().orElseThrow().params.isPresent()>, <#list elementTypeReference.asNonSimpleTypeReference().orElseThrow().params.orElseThrow() as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(elementTypeReference, parserArgument?index))}) (${helper.toParseExpression(arrayField, elementTypeReference, parserArgument, parserArguments)})<#sep>, )); <#-- After parsing, update the current position, but only if it's needed --> - <#if arrayField.loopExpression.contains("curPos")> + <#if arrayField.loopExpression.contains("curPos")> curPos = readBuffer.getPos() - startPos; - + } + <#if arrayField.name == "value"> @@ -218,8 +222,10 @@ namespace org.apache.plc4net.drivers.${protocolName?replace("-", "")}.${outputFl <#-- In this case we need to wrap each field in a IPlcValue that matches it's natural type --> var _map = new Dictionary(); <#list case.fields as field> - <#if field.isArrayField()> + <#if field.isArrayField() && field.asArrayField().orElseThrow().type.elementTypeReference.isByteBased()> <#assign field=field.asArrayField().orElseThrow()> + _map["${field.name}"] = new PlcRawByteArray(${field.name}); + <#elseif field.isArrayField()> _map["${field.name}"] = new PlcList(${field.name}); <#elseif field.isPropertyField()> <#assign field=field.asPropertyField().orElseThrow()> @@ -321,7 +327,7 @@ namespace org.apache.plc4net.drivers.${protocolName?replace("-", "")}.${outputFl return new Plc${case.name}(value); - }<#sep> else + } <#if !defaultCaseOutput> return null; @@ -422,7 +428,7 @@ namespace org.apache.plc4net.drivers.${protocolName?replace("-", "")}.${outputFl return writeBuffer; - }<#sep> else + } <#if !defaultCaseOutput> return null; diff --git a/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh index 9010ab591e7..33df8eb5ccb 100644 --- a/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh +++ b/code-generation/language-go/src/main/resources/templates/go/data-io-template.go.ftlh @@ -120,6 +120,15 @@ func ${type.name}ParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe <#assign arrayElementType = arrayField.type.elementTypeReference> // Array Field (${arrayField.name}) + <#if arrayElementType.isByteBased()> + <#if !field.isCountArrayField() && !field.isLengthArrayField()> + return nil, errors.Wrap(_${arrayField.name}Err, "Array fields of type byte only support 'count' and 'length' loop-types.")<@emitImport import="github.com/pkg/errors" /> + + ${arrayField.name}, _${arrayField.name}Err := readBuffer.ReadByteArray("${arrayField.name}", int(${helper.toParseExpression(null, null, arrayField.loopExpression, parserArguments)}))<#if arrayField.loopExpression.contains("CEIL")><@emitImport import="math" /> + if _${arrayField.name}Err != nil { + return nil, errors.Wrap(_${arrayField.name}Err, "Error parsing '${arrayField.name}' field")<@emitImport import="github.com/pkg/errors" /> + } + <#else> var ${arrayField.name} []api.PlcValue for i := 0; i < int(${helper.toParseExpression(null, null, arrayField.loopExpression, parserArguments)}); i++ { _item, _itemErr := <#if arrayElementType.isSimpleTypeReference()>${helper.getReadBufferReadMethodCall(arrayField.name, arrayElementType.asSimpleTypeReference().orElseThrow(), arrayField)}<#else>Complex type array in data-io parsing currently not implemented @@ -128,6 +137,7 @@ func ${type.name}ParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffe } ${arrayField.name} = append(${arrayField.name}, ${helper.getPlcValueTypeForTypeReference(arrayElementType)}(_item)) } + <#if arrayField.name == "value"> <#assign valueDefined=true> diff --git a/code-generation/language-python/src/main/resources/templates/python/data-io-template.python.ftlh b/code-generation/language-python/src/main/resources/templates/python/data-io-template.python.ftlh index 38464d206cd..029c4854085 100644 --- a/code-generation/language-python/src/main/resources/templates/python/data-io-template.python.ftlh +++ b/code-generation/language-python/src/main/resources/templates/python/data-io-template.python.ftlh @@ -76,7 +76,7 @@ class ${type.name}: <#if discriminatorType.isEnumTypeReference()> ${helper.getLanguageTypeNameForTypeReference(discriminatorType)}.${helper.toParseExpression(dataIoTypeDefinition.switchField.orElseThrow(), discriminatorType, discriminatorValueTerm, parserArguments)} <#else> - ${helper.camelCaseToSnakeCase(helper.toParseExpression(dataIoTypeDefinition.switchField.orElseThrow(), discriminatorType, discriminatorValueTerm, parserArguments))} + ${helper.toParseExpression(dataIoTypeDefinition.switchField.orElseThrow(), discriminatorType, discriminatorValueTerm, parserArguments)} <#sep> and @@ -131,7 +131,7 @@ class ${type.name}: ) - <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false --> + <#-- A terminated array keeps on reading data as long as the termination expression evaluates to False --> <#elseif arrayField.isTerminatedArrayField()> # Terminated array ${arrayField.name}: ${helper.getNonPrimitiveLanguageTypeNameForField(arrayField)} = new LinkedList<>() @@ -377,8 +377,8 @@ class ${type.name}: for val in values.get_list(): <#if elementTypeReference.isByteBased()> <@emitImport import="from typing import List" /> - value: list[byte] = val.get_raw() - write_buffer.write_byte_array("", value) + value: ${helper.getLanguageTypeNameForField(arrayField)} = val.get_raw() + write_buffer.write_byte_array("", value) <#else> value: ${helper.getLanguageTypeNameForTypeReference(elementTypeReference)} = val.get_${helper.camelCaseToSnakeCase(helper.getLanguageTypeNameForTypeReference(elementTypeReference)?cap_first)}() ${helper.getWriteBufferWriteMethodCall(elementTypeReference.asSimpleTypeReference().orElseThrow(), "(" + arrayField.name + ")", arrayField)} @@ -387,7 +387,7 @@ class ${type.name}: <#if case.name == "BOOL"> while write_buffer.getPos() < len(write_buffer.get_data()): - write_buffer.write_bit(false) + write_buffer.write_bit(False) <#break> <#case "const"> diff --git a/plc4go/protocols/knxnetip/readwrite/model/KnxProperty.go b/plc4go/protocols/knxnetip/readwrite/model/KnxProperty.go index d139666d73d..df68a5063af 100644 --- a/plc4go/protocols/knxnetip/readwrite/model/KnxProperty.go +++ b/plc4go/protocols/knxnetip/readwrite/model/KnxProperty.go @@ -236,31 +236,23 @@ func KnxPropertyParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") return values.NewPlcLREAL(value), nil - case propertyType == KnxPropertyDataType_PDT_CHAR_BLOCK: // List + case propertyType == KnxPropertyDataType_PDT_CHAR_BLOCK: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((10)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((10))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil + return values.NewPlcRawByteArray(value), nil case propertyType == KnxPropertyDataType_PDT_POLL_GROUP_SETTINGS: // Struct // Struct _map := map[string]api.PlcValue{} // Array Field (groupAddress) - var groupAddress []api.PlcValue - for i := 0; i < int((2)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("groupAddress") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - groupAddress = append(groupAddress, values.NewPlcBYTE(_item)) + groupAddress, _groupAddressErr := readBuffer.ReadByteArray("groupAddress", int((2))) + if _groupAddressErr != nil { + return nil, errors.Wrap(_groupAddressErr, "Error parsing 'groupAddress' field") } _ = groupAddress // TODO: temporary till we fix TIME stuff in golang (see above in the template) @@ -286,19 +278,15 @@ func KnxPropertyParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer _ = pollingSoftNr // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") return values.NewPlcStruct(_map), nil - case propertyType == KnxPropertyDataType_PDT_SHORT_CHAR_BLOCK: // List + case propertyType == KnxPropertyDataType_PDT_SHORT_CHAR_BLOCK: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((5)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((5))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil + return values.NewPlcRawByteArray(value), nil case propertyType == KnxPropertyDataType_PDT_DATE_TIME: // Struct // Struct _map := map[string]api.PlcValue{} @@ -457,266 +445,186 @@ func KnxPropertyParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer } readBuffer.CloseContext("KnxProperty") return values.NewPlcStruct(_map), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_01: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_01: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((1)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((1))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_02: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_02: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((2)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((2))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_03: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_03: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((3)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((3))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_04: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_04: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((4)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((4))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_05: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_05: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((5)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((5))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_06: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_06: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((6)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((6))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_07: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_07: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((7)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((7))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_08: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_08: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((8)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((8))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_09: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_09: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((9)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((9))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_10: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_10: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((10)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((10))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_11: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_11: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((11)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((11))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_12: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_12: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((12)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((12))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_13: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_13: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((13)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((13))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_14: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_14: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((14)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((14))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_15: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_15: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((15)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((15))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_16: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_16: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((16)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((16))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_17: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_17: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((17)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((17))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_18: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_18: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((18)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((18))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_19: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_19: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((19)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((19))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil - case propertyType == KnxPropertyDataType_PDT_GENERIC_20: // List + return values.NewPlcRawByteArray(value), nil + case propertyType == KnxPropertyDataType_PDT_GENERIC_20: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int((20)); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int((20))) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil + return values.NewPlcRawByteArray(value), nil case propertyType == KnxPropertyDataType_PDT_VERSION: // Struct // Struct _map := map[string]api.PlcValue{} @@ -899,19 +807,15 @@ func KnxPropertyParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") return values.NewPlcUSINT(value), nil - default: // List + default: // RawByteArray // Array Field (value) - var value []api.PlcValue - for i := 0; i < int(dataLengthInBytes); i++ { - _item, _itemErr := /*TODO: migrate me*/ /*TODO: migrate me*/ readBuffer.ReadByte("value") - if _itemErr != nil { - return nil, errors.Wrap(_itemErr, "Error parsing 'value' field") - } - value = append(value, values.NewPlcBYTE(_item)) + value, _valueErr := readBuffer.ReadByteArray("value", int(dataLengthInBytes)) + if _valueErr != nil { + return nil, errors.Wrap(_valueErr, "Error parsing 'value' field") } _ = value // TODO: temporary till we fix TIME stuff in golang (see above in the template) readBuffer.CloseContext("KnxProperty") - return values.NewPlcList(value), nil + return values.NewPlcRawByteArray(value), nil } // TODO: add more info which type it is actually return nil, errors.New("unsupported type") @@ -1068,7 +972,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. if _err := /*TODO: migrate me*/ writeBuffer.WriteFloat64("value", 64, value.GetFloat64()); _err != nil { return errors.Wrap(_err, "Error serializing 'value' field") } - case propertyType == KnxPropertyDataType_PDT_CHAR_BLOCK: // List + case propertyType == KnxPropertyDataType_PDT_CHAR_BLOCK: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((10)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1100,7 +1004,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. if _err := /*TODO: migrate me*/ writeBuffer.WriteUint8("pollingSoftNr", 4, uint8(value.GetUint8())); _err != nil { return errors.Wrap(_err, "Error serializing 'pollingSoftNr' field") } - case propertyType == KnxPropertyDataType_PDT_SHORT_CHAR_BLOCK: // List + case propertyType == KnxPropertyDataType_PDT_SHORT_CHAR_BLOCK: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((5)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1213,7 +1117,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. if _err := /*TODO: migrate me*/ writeBuffer.WriteUint8("reserved", 7, uint8(uint8(0x00))); _err != nil { return errors.Wrap(_err, "Error serializing reserved field") } - case propertyType == KnxPropertyDataType_PDT_GENERIC_01: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_01: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((1)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1221,7 +1125,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_02: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_02: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((2)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1229,7 +1133,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_03: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_03: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((3)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1237,7 +1141,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_04: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_04: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((4)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1245,7 +1149,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_05: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_05: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((5)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1253,7 +1157,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_06: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_06: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((6)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1261,7 +1165,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_07: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_07: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((7)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1269,7 +1173,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_08: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_08: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((8)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1277,7 +1181,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_09: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_09: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((9)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1285,7 +1189,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_10: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_10: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((10)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1293,7 +1197,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_11: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_11: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((11)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1301,7 +1205,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_12: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_12: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((12)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1309,7 +1213,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_13: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_13: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((13)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1317,7 +1221,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_14: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_14: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((14)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1325,7 +1229,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_15: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_15: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((15)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1333,7 +1237,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_16: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_16: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((16)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1341,7 +1245,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_17: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_17: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((17)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1349,7 +1253,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_18: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_18: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((18)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1357,7 +1261,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_19: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_19: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((19)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1365,7 +1269,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. return errors.Wrap(_itemErr, "Error serializing 'value' field") } } - case propertyType == KnxPropertyDataType_PDT_GENERIC_20: // List + case propertyType == KnxPropertyDataType_PDT_GENERIC_20: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32((20)); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) @@ -1483,7 +1387,7 @@ func KnxPropertySerializeWithWriteBuffer(ctx context.Context, writeBuffer utils. if _err := /*TODO: migrate me*/ writeBuffer.WriteUint8("value", 8, uint8(value.GetUint8())); _err != nil { return errors.Wrap(_err, "Error serializing 'value' field") } - default: // List + default: // RawByteArray // Array Field (value) for i := uint32(0); i < uint32(m.GetDataLengthInBytes()); i++ { _itemErr := /*TODO: migrate me*/ writeBuffer.WriteByte("", value.GetIndex(i).GetByte()) diff --git a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxProperty.java b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxProperty.java index 55e07af5b3c..f8a04c4d556 100644 --- a/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxProperty.java +++ b/plc4j/drivers/knxnetip/src/main/generated/org/apache/plc4x/java/knxnetip/readwrite/KnxProperty.java @@ -128,7 +128,8 @@ public static PlcValue staticParse( } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_DOUBLE)) { // LREAL double value = readSimpleField("value", readDouble(readBuffer, 64)); return new PlcLREAL(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_CHAR_BLOCK)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_CHAR_BLOCK)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(10)); return new PlcRawByteArray(value); } else if (EvaluationHelper.equals( @@ -148,7 +149,7 @@ public static PlcValue staticParse( _map.put("pollingSoftNr", new PlcUSINT(pollingSoftNr)); return new PlcStruct(_map); } else if (EvaluationHelper.equals( - propertyType, KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK)) { // List + propertyType, KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(5)); return new PlcRawByteArray(value); } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_DATE_TIME)) { // Struct @@ -217,64 +218,84 @@ public static PlcValue staticParse( _map.put("standardSummerTime", new PlcBOOL(standardSummerTime)); _map.put("qualityOfClock", new PlcBOOL(qualityOfClock)); return new PlcStruct(_map); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_01)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_01)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(1)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_02)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_02)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(2)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_03)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_03)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(3)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_04)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_04)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(4)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_05)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_05)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(5)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_06)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_06)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(6)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_07)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_07)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(7)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_08)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_08)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(8)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_09)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_09)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(9)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_10)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_10)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(10)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_11)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_11)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(11)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_12)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_12)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(12)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_13)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_13)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(13)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_14)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_14)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(14)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_15)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_15)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(15)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_16)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_16)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(16)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_17)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_17)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(17)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_18)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_18)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(18)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_19)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_19)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(19)); return new PlcRawByteArray(value); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_20)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_20)) { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(20)); return new PlcRawByteArray(value); } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_VERSION)) { // Struct @@ -351,7 +372,7 @@ public static PlcValue staticParse( } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_SCALING)) { // USINT short value = readSimpleField("value", readUnsignedShort(readBuffer, 8)); return new PlcUSINT(value); - } else { // List + } else { // RawByteArray byte[] value = readBuffer.readByteArray("value", Math.toIntExact(dataLengthInBytes)); return new PlcRawByteArray(value); } @@ -441,7 +462,8 @@ public static int getLengthInBits( } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_DOUBLE)) { // LREAL // Simple field (value) lengthInBits += 64; - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_CHAR_BLOCK)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_CHAR_BLOCK)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; @@ -462,7 +484,7 @@ public static int getLengthInBits( // Simple field (pollingSoftNr) lengthInBits += 4; } else if (EvaluationHelper.equals( - propertyType, KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK)) { // List + propertyType, KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; @@ -530,102 +552,122 @@ public static int getLengthInBits( // Reserved Field (reserved) lengthInBits += 7; - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_01)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_01)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_02)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_02)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_03)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_03)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_04)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_04)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_05)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_05)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_06)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_06)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_07)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_07)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_08)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_08)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_09)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_09)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_10)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_10)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_11)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_11)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_12)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_12)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_13)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_13)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_14)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_14)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_15)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_15)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_16)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_16)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_17)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_17)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_18)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_18)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_19)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_19)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; } - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_20)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_20)) { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; @@ -698,7 +740,7 @@ public static int getLengthInBits( } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_SCALING)) { // USINT // Simple field (value) lengthInBits += 8; - } else { // List + } else { // RawByteArray // Array field if (_value != null) { lengthInBits += 8 * _value.getRaw().length; @@ -774,7 +816,8 @@ public static void staticSerialize( } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_DOUBLE)) { // LREAL // Simple Field (value) writeSimpleField("value", (double) _value.getDouble(), writeDouble(writeBuffer, 64)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_CHAR_BLOCK)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_CHAR_BLOCK)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); } else if (EvaluationHelper.equals( @@ -782,70 +825,90 @@ public static void staticSerialize( KnxPropertyDataType .PDT_POLL_GROUP_SETTINGS)) { // Struct // Output something here ... } else if (EvaluationHelper.equals( - propertyType, KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK)) { // List + propertyType, KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); } else if (EvaluationHelper.equals( propertyType, KnxPropertyDataType.PDT_DATE_TIME)) { // Struct // Output something here ... - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_01)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_01)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_02)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_02)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_03)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_03)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_04)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_04)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_05)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_05)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_06)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_06)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_07)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_07)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_08)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_08)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_09)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_09)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_10)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_10)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_11)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_11)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_12)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_12)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_13)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_13)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_14)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_14)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_15)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_15)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_16)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_16)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_17)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_17)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_18)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_18)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_19)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_19)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); - } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_GENERIC_20)) { // List + } else if (EvaluationHelper.equals( + propertyType, KnxPropertyDataType.PDT_GENERIC_20)) { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); } else if (EvaluationHelper.equals( @@ -873,7 +936,7 @@ public static void staticSerialize( } else if (EvaluationHelper.equals(propertyType, KnxPropertyDataType.PDT_SCALING)) { // USINT // Simple Field (value) writeSimpleField("value", (short) _value.getShort(), writeUnsignedShort(writeBuffer, 8)); - } else { // List + } else { // RawByteArray // Array Field (value) writeByteArrayField("value", _value.getRaw(), writeByteArray(writeBuffer, 8)); } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/ModbusAsciiDriver.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/ModbusAsciiDriver.java index d1a1ddde0b6..c698b342ff8 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/ModbusAsciiDriver.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/ModbusAsciiDriver.java @@ -21,6 +21,7 @@ import io.netty.buffer.ByteBuf; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; +import org.apache.plc4x.java.modbus.ascii.context.ModbusAsciiContext; import org.apache.plc4x.java.modbus.readwrite.ModbusADU; import org.apache.plc4x.java.modbus.readwrite.ModbusRtuADU; import org.apache.plc4x.java.spi.configuration.PlcConnectionConfiguration; @@ -135,8 +136,9 @@ protected org.apache.plc4x.java.api.value.PlcValueHandler getValueHandler() { protected ProtocolStackConfigurer getStackConfigurer() { return SingleProtocolStackConfigurer.builder(ModbusAsciiADU.class, new ModbusAsciiInput(), new ModbusAsciiOutput()) .withProtocol(ModbusAsciiProtocolLogic.class) - .withPacketSizeEstimator(ModbusAsciiDriver.ByteLengthEstimator.class) - .withCorruptPacketRemover(ModbusAsciiDriver.CorruptPackageCleaner.class) + .withDriverContext(ModbusAsciiContext.class) + .withPacketSizeEstimator(ByteLengthEstimator.class) + .withCorruptPacketRemover(CorruptPackageCleaner.class) .build(); } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java index 60ddec578a1..3bbd2f17ebf 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java @@ -49,6 +49,18 @@ public class ModbusAsciiConfiguration implements PlcConnectionConfiguration { @Since("0.13.0") private ModbusByteOrder defaultPayloadByteOrder; + @ConfigurationParameter("max-coils-per-request") + @IntDefaultValue(2000) + @Description("Maximum number of coils addressable in one request (Defaults to 2000)") + @Since("0.13.0") + private int maxCoilsPerRequest; + + @ConfigurationParameter("max-registers-per-request") + @IntDefaultValue(125) + @Description("Maximum number of registers addressable in one request (Defaults to 125)") + @Since("0.13.0") + private int maxRegistersPerRequest; + public int getRequestTimeout() { return requestTimeout; } @@ -73,12 +85,30 @@ public void setDefaultPayloadByteOrder(ModbusByteOrder defaultPayloadByteOrder) this.defaultPayloadByteOrder = defaultPayloadByteOrder; } + public int getMaxCoilsPerRequest() { + return maxCoilsPerRequest; + } + + public void setMaxCoilsPerRequest(int maxCoilsPerRequest) { + this.maxCoilsPerRequest = maxCoilsPerRequest; + } + + public int getMaxRegistersPerRequest() { + return maxRegistersPerRequest; + } + + public void setMaxRegistersPerRequest(int maxRegistersPerRequest) { + this.maxRegistersPerRequest = maxRegistersPerRequest; + } + @Override public String toString() { return "ModbusAsciiConfiguration{" + "requestTimeout=" + requestTimeout + ", defaultUnitIdentifier=" + defaultUnitIdentifier + ", defaultPayloadByteOrder=" + defaultPayloadByteOrder + + ", maxCoilsPerRequest=" + maxCoilsPerRequest + + ", maxRegistersPerRequest=" + maxRegistersPerRequest + '}'; } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/context/ModbusAsciiContext.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/context/ModbusAsciiContext.java new file mode 100644 index 00000000000..670fa292c19 --- /dev/null +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/context/ModbusAsciiContext.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.plc4x.java.modbus.ascii.context; + +import org.apache.plc4x.java.modbus.ascii.config.ModbusAsciiConfiguration; +import org.apache.plc4x.java.modbus.base.context.ModbusContext; +import org.apache.plc4x.java.spi.configuration.HasConfiguration; + +public class ModbusAsciiContext extends ModbusContext implements HasConfiguration { + + @Override + public void setConfiguration(ModbusAsciiConfiguration configuration) { + setByteOrder(configuration.getDefaultPayloadByteOrder()); + setMaxCoilsPerRequest(configuration.getMaxCoilsPerRequest()); + setMaxRegistersPerRequest(configuration.getMaxRegistersPerRequest()); + } + +} diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/context/ModbusContext.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/context/ModbusContext.java new file mode 100644 index 00000000000..400b42e1ab4 --- /dev/null +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/context/ModbusContext.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.plc4x.java.modbus.base.context; + +import org.apache.plc4x.java.modbus.types.ModbusByteOrder; +import org.apache.plc4x.java.spi.context.DriverContext; + +public abstract class ModbusContext implements DriverContext { + + private ModbusByteOrder byteOrder; + private int maxCoilsPerRequest; + private int maxRegistersPerRequest; + + public ModbusByteOrder getByteOrder() { + return byteOrder; + } + + public void setByteOrder(ModbusByteOrder byteOrder) { + this.byteOrder = byteOrder; + } + + public int getMaxCoilsPerRequest() { + return maxCoilsPerRequest; + } + + public void setMaxCoilsPerRequest(int maxCoilsPerRequest) { + this.maxCoilsPerRequest = maxCoilsPerRequest; + } + + public int getMaxRegistersPerRequest() { + return maxRegistersPerRequest; + } + + public void setMaxRegistersPerRequest(int maxRegistersPerRequest) { + this.maxRegistersPerRequest = maxRegistersPerRequest; + } + +} diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java new file mode 100644 index 00000000000..8f3b0ebddc3 --- /dev/null +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizer.java @@ -0,0 +1,316 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.plc4x.java.modbus.base.optimizer; + +import org.apache.plc4x.java.api.messages.PlcReadRequest; +import org.apache.plc4x.java.api.messages.PlcReadResponse; +import org.apache.plc4x.java.api.model.PlcTag; +import org.apache.plc4x.java.api.types.PlcResponseCode; +import org.apache.plc4x.java.api.value.PlcValue; +import org.apache.plc4x.java.modbus.base.context.ModbusContext; +import org.apache.plc4x.java.modbus.base.tag.ModbusTag; +import org.apache.plc4x.java.modbus.base.tag.ModbusTagCoil; +import org.apache.plc4x.java.modbus.base.tag.ModbusTagDiscreteInput; +import org.apache.plc4x.java.modbus.base.tag.ModbusTagExtendedRegister; +import org.apache.plc4x.java.modbus.base.tag.ModbusTagHoldingRegister; +import org.apache.plc4x.java.modbus.base.tag.ModbusTagInputRegister; +import org.apache.plc4x.java.modbus.readwrite.DataItem; +import org.apache.plc4x.java.modbus.readwrite.ModbusDataType; +import org.apache.plc4x.java.modbus.types.ModbusByteOrder; +import org.apache.plc4x.java.spi.context.DriverContext; +import org.apache.plc4x.java.spi.generation.ByteOrder; +import org.apache.plc4x.java.spi.generation.ParseException; +import org.apache.plc4x.java.spi.generation.ReadBufferByteBased; +import org.apache.plc4x.java.spi.messages.DefaultPlcReadRequest; +import org.apache.plc4x.java.spi.messages.DefaultPlcReadResponse; +import org.apache.plc4x.java.spi.messages.PlcReader; +import org.apache.plc4x.java.spi.messages.utils.ResponseItem; +import org.apache.plc4x.java.spi.optimizer.SingleTagOptimizer; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeSet; + +/** + * In order to read more data more efficiently, this optimizer for modbus joins together individual items + * and reads larger arrays of data. + */ +public class ModbusOptimizer extends SingleTagOptimizer { + + /** + * Per default the number of registers that can be read are 125 registers. + * The number of coils that can be read in one request are 2000 coils. + * This optimizer will sort all request items, split them up into coils and registers. + * Then it will try to group them together to produce the least amount of traffic + * on the wire by requesting larger chunks of words and serving multiple items + * with one request. The matching processReadResponses will then handle the splitting + * of the results. + * + * @param readRequest the original read request + * @param driverContext the driver context + * @return a list of rewritten sub-requests + */ + @Override + protected List processReadRequest(PlcReadRequest readRequest, DriverContext driverContext) { + ModbusContext modbusContext = (ModbusContext) driverContext; + + // Sort the different types of tags as all need to be requested separately anyway. + TreeSet coils = null; + TreeSet holdingRegisters = null; + TreeSet inputRegisters = null; + TreeSet extendedRegisters = null; + TreeSet discreteInputs = null; + for (PlcTag tag : readRequest.getTags()) { + if (tag instanceof ModbusTagCoil) { + if (coils == null) { + coils = new TreeSet<>(Comparator.comparingInt(ModbusTag::getAddress)); + } + coils.add(((ModbusTagCoil) tag)); + } else if (tag instanceof ModbusTagHoldingRegister) { + if (holdingRegisters == null) { + holdingRegisters = new TreeSet<>(Comparator.comparingInt(ModbusTag::getAddress)); + } + holdingRegisters.add(((ModbusTagHoldingRegister) tag)); + } else if (tag instanceof ModbusTagInputRegister) { + if (inputRegisters == null) { + inputRegisters = new TreeSet<>(Comparator.comparingInt(ModbusTag::getAddress)); + } + inputRegisters.add(((ModbusTagInputRegister) tag)); + } else if (tag instanceof ModbusTagExtendedRegister) { + if (extendedRegisters == null) { + extendedRegisters = new TreeSet<>(Comparator.comparingInt(ModbusTag::getAddress)); + } + extendedRegisters.add(((ModbusTagExtendedRegister) tag)); + } else if (tag instanceof ModbusTagDiscreteInput) { + if (discreteInputs == null) { + discreteInputs = new TreeSet<>(Comparator.comparingInt(ModbusTag::getAddress)); + } + discreteInputs.add(((ModbusTagDiscreteInput) tag)); + } + } + + // Add sub requests for every type of tag in this request. + PlcReader reader = ((DefaultPlcReadRequest) readRequest).getReader(); + List subRequests = new ArrayList<>(); + if (coils != null) { + subRequests.addAll(processCoilRequests(coils, reader, modbusContext)); + } + if (holdingRegisters != null) { + subRequests.addAll(processRegisterRequests(holdingRegisters, reader, (address, count, dataType) -> new ModbusTagHoldingRegister(address, count, dataType, Collections.emptyMap()), modbusContext)); + } + if (inputRegisters != null) { + subRequests.addAll(processRegisterRequests(inputRegisters, reader, (address, count, dataType) -> new ModbusTagInputRegister(address, count, dataType, Collections.emptyMap()), modbusContext)); + } + if (extendedRegisters != null) { + subRequests.addAll(processRegisterRequests(extendedRegisters, reader, (address, count, dataType) -> new ModbusTagExtendedRegister(address, count, dataType, Collections.emptyMap()), modbusContext)); + } + if (discreteInputs != null) { + subRequests.addAll(processRegisterRequests(discreteInputs, reader, (address, count, dataType) -> new ModbusTagDiscreteInput(address, count, dataType, Collections.emptyMap()), modbusContext)); + } + return subRequests; + } + + /** + * When reading large chunks of data, here we need to read the parts that were originally requested. + * + * @param readRequest original read request + * @param readResponses map of the sub-requests that were executed + * @return post processed response reflecting the unmodified user request items + */ + @Override + protected PlcReadResponse processReadResponses(PlcReadRequest readRequest, Map> readResponses, DriverContext driverContext) { + ModbusContext modbusContext = (ModbusContext) driverContext; + + // Build an index of all the data returned by all requests. + // This data should contain all the bits needed to create the response of the original request. + Map> responses = new HashMap<>(); + for (PlcReadRequest optimizedReadRequest : readResponses.keySet()) { + PlcReadResponse optimizedReadResponse = readResponses.get(optimizedReadRequest).getResponse(); + if(optimizedReadResponse == null) { + continue; + } + // Optimized read requests only contain one ModbusTag. + String tagName = optimizedReadRequest.getTagNames().stream().findFirst().orElse(null); + if(tagName == null) { + continue; + } + ModbusTag modbusTag = (ModbusTag) optimizedReadRequest.getTag(tagName); + String tagType = modbusTag.getClass().getSimpleName().substring("ModbusTag".length()); + if(!responses.containsKey(tagType)) { + responses.put(tagType, new ArrayList<>()); + } + responses.get(tagType).add(new Response(modbusTag.getAddress(), optimizedReadResponse.getPlcValue(tagName).getRaw())); + } + + // Now go through the original requests and try to answer them by using the raw data we now have. + Map> values = new HashMap<>(); + for (String tagName : readRequest.getTagNames()) { + ModbusTag modbusTag = (ModbusTag) readRequest.getTag(tagName); + String tagType = modbusTag.getClass().getSimpleName().substring("ModbusTag".length()); + if(!responses.containsKey(tagType)) { + values.put(tagName, new ResponseItem<>(PlcResponseCode.NOT_FOUND, null)); + continue; + } + // Go through all responses till we find one where that contains the current tag's data. + for (Response response : responses.get(tagType)) { + if(response.matches(modbusTag)) { + byte[] responseData = response.getResponseData(modbusTag); + ReadBufferByteBased readBufferByteBased = new ReadBufferByteBased(responseData, + modbusContext.getByteOrder() == ModbusByteOrder.BIG_ENDIAN ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN); + try { + PlcValue plcValue = DataItem.staticParse(readBufferByteBased, modbusTag.getDataType(), + modbusTag.getNumberOfElements(), + modbusContext.getByteOrder() == ModbusByteOrder.BIG_ENDIAN); + values.put(tagName, new ResponseItem<>(PlcResponseCode.OK, plcValue)); + } catch (ParseException e) { + values.put(tagName, new ResponseItem<>(PlcResponseCode.INTERNAL_ERROR, null)); + } + break; + } + } + // If no response was found that contains the data, that's probably something we need to fix. + if(!values.containsKey(tagName)) { + values.put(tagName, new ResponseItem<>(PlcResponseCode.INTERNAL_ERROR, null)); + } + } + + return new DefaultPlcReadResponse(readRequest, values); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Internal + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + protected List processCoilRequests(TreeSet tags, PlcReader reader, ModbusContext modbusContext) { + List subRequests = new ArrayList<>(); + int firstCoil = -1; + int lastCoil = -1; + int maxCoilCurRequest = -1; + for (ModbusTag tag : tags) { + int sizeInCoils = tag.getDataType().getDataTypeSize() * 8; + if (tag.getDataType() == ModbusDataType.BOOL) { + sizeInCoils = 1; + } + // Initialize for the first item. + if (firstCoil == -1) { + firstCoil = tag.getAddress(); + lastCoil = tag.getAddress() + (sizeInCoils * tag.getNumberOfElements()); + // 2000 coils/request is the modbus limit. + maxCoilCurRequest = tag.getAddress() + modbusContext.getMaxCoilsPerRequest(); + } + + // If adding the current coil would exceed the maximum number of coils that can be read by one request, + // finish this one and start a new one. + if (tag.getAddress() + (sizeInCoils * tag.getNumberOfElements()) > maxCoilCurRequest) { + // Finish the current sub-request + LinkedHashMap subTags = new LinkedHashMap<>(); + subTags.put("coils" + subRequests.size(), new ModbusTagCoil(firstCoil, lastCoil - firstCoil, ModbusDataType.BYTE, Collections.emptyMap())); + subRequests.add(new DefaultPlcReadRequest(reader, subTags)); + + // Re-initialize the structures for the next request. + firstCoil = tag.getAddress(); + lastCoil = tag.getAddress() + (sizeInCoils * tag.getNumberOfElements()); + maxCoilCurRequest = tag.getAddress() + modbusContext.getMaxCoilsPerRequest(); + } + // Otherwise update the end-marker for the current block. + else { + lastCoil = tag.getAddress() + tag.getNumberOfElements(); + } + } + + // Finish the last sub-request + LinkedHashMap subTags = new LinkedHashMap<>(); + subTags.put("coils" + subRequests.size(), new ModbusTagCoil(firstCoil, lastCoil - firstCoil, ModbusDataType.BYTE, Collections.emptyMap())); + subRequests.add(new DefaultPlcReadRequest(reader, subTags)); + return subRequests; + } + + protected List processRegisterRequests(TreeSet tags, PlcReader reader, TagFactory tagFactory, ModbusContext modbusContext) { + List subRequests = new ArrayList<>(); + int firstRegister = -1; + int lastRegister = -1; + int maxRegisterCurRequest = -1; + for (ModbusTag tag : tags) { + int sizeInRegisters = (int) Math.ceil((double) tag.getDataType().getDataTypeSize() / 2); + // Initialize for the first item. + if (firstRegister == -1) { + firstRegister = tag.getAddress(); + lastRegister = tag.getAddress() + (sizeInRegisters * tag.getNumberOfElements()); + // 2000 coils/request is the modbus limit. + maxRegisterCurRequest = tag.getAddress() + modbusContext.getMaxRegistersPerRequest(); + } + + // If adding the current coil would exceed the maximum number of coils that can be read by one request, + // finish this one and start a new one. + if ((tag.getAddress() - firstRegister) + (sizeInRegisters * tag.getNumberOfElements()) > maxRegisterCurRequest) { + // Finish the current sub-request + LinkedHashMap subTags = new LinkedHashMap<>(); + subTags.put("registers" + subRequests.size(), tagFactory.createTag(firstRegister, lastRegister - firstRegister, ModbusDataType.WORD)); + subRequests.add(new DefaultPlcReadRequest(reader, subTags)); + + // Re-initialize the structures for the next request. + firstRegister = tag.getAddress(); + lastRegister = tag.getAddress() + (sizeInRegisters * tag.getNumberOfElements()); + maxRegisterCurRequest = tag.getAddress() + modbusContext.getMaxRegistersPerRequest(); + } + // Otherwise update the end-marker for the current block. + else { + lastRegister = tag.getAddress() + (sizeInRegisters * tag.getNumberOfElements()); + } + } + + // Finish the last sub-request + LinkedHashMap subTags = new LinkedHashMap<>(); + subTags.put("registers" + subRequests.size(), tagFactory.createTag(firstRegister, lastRegister - firstRegister, ModbusDataType.WORD)); + subRequests.add(new DefaultPlcReadRequest(reader, subTags)); + return subRequests; + } + + protected static class Response { + private final int startingAddress; + private final byte[] responseData; + + public Response(int startingAddress, byte[] responseData) { + this.startingAddress = startingAddress; + this.responseData = responseData; + } + + public boolean matches(ModbusTag modbusTag) { + //boolean isRegisterTag = !(modbusTag instanceof ModbusTagCoil); + return (modbusTag.getAddress() >= startingAddress) && (((modbusTag.getAddress() - startingAddress) * 2) + modbusTag.getLengthBytes() <= startingAddress + responseData.length); + } + + public byte[] getResponseData(ModbusTag modbusTag) { + byte[] itemData = new byte[modbusTag.getLengthBytes()]; + System.arraycopy(responseData, (modbusTag.getAddress() - startingAddress) * 2, itemData, 0, modbusTag.getLengthBytes()); + return itemData; + } + } + + protected interface TagFactory { + PlcTag createTag(int address, int count, ModbusDataType dataType); + } + +} diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/protocol/ModbusProtocolLogic.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/protocol/ModbusProtocolLogic.java index 461b84014f9..f592b6ad354 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/protocol/ModbusProtocolLogic.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/protocol/ModbusProtocolLogic.java @@ -32,6 +32,7 @@ import org.apache.commons.lang3.ArrayUtils; import org.apache.plc4x.java.spi.values.PlcBOOL; import org.apache.plc4x.java.spi.values.PlcList; +import org.apache.plc4x.java.spi.values.PlcRawByteArray; import java.time.Duration; import java.util.Arrays; @@ -229,67 +230,37 @@ protected PlcValue toPlcValue(ModbusPDU request, ModbusPDU response, ModbusDataT throw new PlcRuntimeException("Unexpected response type. " + "Expected ModbusPDUReadDiscreteInputsResponse, but got " + response.getClass().getName()); } - ModbusPDUReadDiscreteInputsRequest req = (ModbusPDUReadDiscreteInputsRequest) request; ModbusPDUReadDiscreteInputsResponse resp = (ModbusPDUReadDiscreteInputsResponse) response; - return readCoilBooleanList(req.getQuantity(), resp.getValue()); + return new PlcRawByteArray(resp.getValue()); } else if (request instanceof ModbusPDUReadCoilsRequest) { if (!(response instanceof ModbusPDUReadCoilsResponse)) { throw new PlcRuntimeException("Unexpected response type. " + "Expected ModbusPDUReadCoilsResponse, but got " + response.getClass().getName()); } - ModbusPDUReadCoilsRequest req = (ModbusPDUReadCoilsRequest) request; ModbusPDUReadCoilsResponse resp = (ModbusPDUReadCoilsResponse) response; - return readCoilBooleanList(req.getQuantity(), resp.getValue()); + return new PlcRawByteArray(resp.getValue()); } else if (request instanceof ModbusPDUReadInputRegistersRequest) { if (!(response instanceof ModbusPDUReadInputRegistersResponse)) { throw new PlcRuntimeException("Unexpected response type. " + "Expected ModbusPDUReadInputRegistersResponse, but got " + response.getClass().getName()); } - ModbusPDUReadInputRegistersRequest req = (ModbusPDUReadInputRegistersRequest) request; ModbusPDUReadInputRegistersResponse resp = (ModbusPDUReadInputRegistersResponse) response; - ReadBuffer io = getReadBuffer(resp.getValue(), byteOrder); - if (tagDataTypeSize < 2) { - io.readByte(); - } - return DataItem.staticParse(io, dataType, Math.max(Math.round(req.getQuantity() / (tagDataTypeSize / 2.0f)), 1), byteOrder == ModbusByteOrder.BIG_ENDIAN); + return new PlcRawByteArray(resp.getValue()); } else if (request instanceof ModbusPDUReadHoldingRegistersRequest) { if (!(response instanceof ModbusPDUReadHoldingRegistersResponse)) { throw new PlcRuntimeException("Unexpected response type. " + "Expected ModbusPDUReadHoldingRegistersResponse, but got " + response.getClass().getName()); } - ModbusPDUReadHoldingRegistersRequest req = (ModbusPDUReadHoldingRegistersRequest) request; ModbusPDUReadHoldingRegistersResponse resp = (ModbusPDUReadHoldingRegistersResponse) response; - ReadBuffer io = getReadBuffer(resp.getValue(), byteOrder); - if ((dataType != ModbusDataType.STRING) && tagDataTypeSize < 2) { - io.readByte(); - } - return DataItem.staticParse(io, dataType, Math.max(Math.round(req.getQuantity() / (tagDataTypeSize / 2.0f)), 1), byteOrder == ModbusByteOrder.BIG_ENDIAN); + return new PlcRawByteArray(resp.getValue()); } else if (request instanceof ModbusPDUReadFileRecordRequest) { if (!(response instanceof ModbusPDUReadFileRecordResponse)) { throw new PlcRuntimeException("Unexpected response type. " + "Expected ModbusPDUReadFileRecordResponse, but got " + response.getClass().getName()); } - ModbusPDUReadFileRecordRequest req = (ModbusPDUReadFileRecordRequest) request; ModbusPDUReadFileRecordResponse resp = (ModbusPDUReadFileRecordResponse) response; - ReadBuffer io; - short dataLength; - - if (resp.getItems().size() == 2 && resp.getItems().size() == req.getItems().size()) { - //If request was split over file records, two groups in response should be received. - io = getReadBuffer(ArrayUtils.addAll(resp.getItems().get(0).getData(), resp.getItems().get(1).getData()), byteOrder); - dataLength = (short) (resp.getItems().get(0).getLengthInBytes() + resp.getItems().get(1).getLengthInBytes() - (2 * FC_EXTENDED_REGISTERS_GROUP_HEADER_LENGTH)); - } else if (resp.getItems().size() == 1 && resp.getItems().size() == req.getItems().size()) { - //If request was within a single file record, one group should be received. - io = getReadBuffer(resp.getItems().get(0).getData(), byteOrder); - dataLength = (short) (resp.getItems().get(0).getLengthInBytes() - FC_EXTENDED_REGISTERS_GROUP_HEADER_LENGTH); - } else { - throw new PlcRuntimeException("Unexpected number of groups in response. " + - "Expected " + req.getItems().size() + ", but got " + resp.getItems().size()); - } - if (tagDataTypeSize < 2) { - io.readByte(); - } - return DataItem.staticParse(io, dataType, Math.round(Math.max(dataLength / 2.0f, 1) / Math.max(tagDataTypeSize / 2.0f, 1)), byteOrder == ModbusByteOrder.BIG_ENDIAN); + // TODO: This is an over-simplification ... + return new PlcRawByteArray(resp.getItems().get(0).getData()); } return null; } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagExtendedRegister.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagExtendedRegister.java index b515b53c08c..6d2ca1a26ad 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagExtendedRegister.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagExtendedRegister.java @@ -35,7 +35,7 @@ public class ModbusTagExtendedRegister extends ModbusTag { protected static final int REGISTER_MAXADDRESS = 655359999; - protected ModbusTagExtendedRegister(int address, Integer quantity, ModbusDataType dataType, Map config) { + public ModbusTagExtendedRegister(int address, Integer quantity, ModbusDataType dataType, Map config) { super(address, quantity, dataType, config); } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagHoldingRegister.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagHoldingRegister.java index c548d54eb90..0b1d9d725b0 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagHoldingRegister.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagHoldingRegister.java @@ -35,7 +35,7 @@ public class ModbusTagHoldingRegister extends ModbusTag { protected static final int REGISTER_MAXADDRESS = 65535; - protected ModbusTagHoldingRegister(int address, Integer quantity, ModbusDataType dataType, Map config) { + public ModbusTagHoldingRegister(int address, Integer quantity, ModbusDataType dataType, Map config) { super(address, quantity, dataType, config); } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagInputRegister.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagInputRegister.java index 8f027e65665..75304887646 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagInputRegister.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/base/tag/ModbusTagInputRegister.java @@ -35,7 +35,7 @@ public class ModbusTagInputRegister extends ModbusTag { protected static final int REGISTER_MAXADDRESS = 65535; - protected ModbusTagInputRegister(int address, Integer quantity, ModbusDataType dataType, Map config) { + public ModbusTagInputRegister(int address, Integer quantity, ModbusDataType dataType, Map config) { super(address, quantity, dataType, config); } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/ModbusRtuDriver.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/ModbusRtuDriver.java index a3763b6be32..176f6758ae8 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/ModbusRtuDriver.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/ModbusRtuDriver.java @@ -20,6 +20,7 @@ import io.netty.buffer.ByteBuf; import org.apache.plc4x.java.modbus.readwrite.ModbusADU; +import org.apache.plc4x.java.modbus.rtu.context.ModbusRtuContext; import org.apache.plc4x.java.spi.configuration.PlcConnectionConfiguration; import org.apache.plc4x.java.spi.configuration.PlcTransportConfiguration; import org.apache.plc4x.java.modbus.base.tag.ModbusTag; @@ -132,7 +133,8 @@ protected org.apache.plc4x.java.api.value.PlcValueHandler getValueHandler() { protected ProtocolStackConfigurer getStackConfigurer() { return SingleProtocolStackConfigurer.builder(ModbusRtuADU.class, io -> (ModbusRtuADU) ModbusRtuADU.staticParse(io, DriverType.MODBUS_RTU, true)) .withProtocol(ModbusRtuProtocolLogic.class) - .withPacketSizeEstimator(ModbusRtuDriver.ByteLengthEstimator.class) + .withDriverContext(ModbusRtuContext.class) + .withPacketSizeEstimator(ByteLengthEstimator.class) .build(); } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java index 619e294244d..ff9ccfe7d68 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java @@ -50,6 +50,18 @@ public class ModbusRtuConfiguration implements PlcConnectionConfiguration { @Since("0.13.0") private ModbusByteOrder defaultPayloadByteOrder; + @ConfigurationParameter("max-coils-per-request") + @IntDefaultValue(2000) + @Description("Maximum number of coils addressable in one request (Defaults to 2000)") + @Since("0.13.0") + private int maxCoilsPerRequest; + + @ConfigurationParameter("max-registers-per-request") + @IntDefaultValue(125) + @Description("Maximum number of registers addressable in one request (Defaults to 125)") + @Since("0.13.0") + private int maxRegistersPerRequest; + public int getRequestTimeout() { return requestTimeout; } @@ -74,12 +86,30 @@ public void setDefaultPayloadByteOrder(ModbusByteOrder defaultPayloadByteOrder) this.defaultPayloadByteOrder = defaultPayloadByteOrder; } + public int getMaxCoilsPerRequest() { + return maxCoilsPerRequest; + } + + public void setMaxCoilsPerRequest(int maxCoilsPerRequest) { + this.maxCoilsPerRequest = maxCoilsPerRequest; + } + + public int getMaxRegistersPerRequest() { + return maxRegistersPerRequest; + } + + public void setMaxRegistersPerRequest(int maxRegistersPerRequest) { + this.maxRegistersPerRequest = maxRegistersPerRequest; + } + @Override public String toString() { return "ModbusRtuConfiguration{" + "requestTimeout=" + requestTimeout + ", unitIdentifier=" + defaultUnitIdentifier + ", defaultPayloadByteOrder=" + defaultPayloadByteOrder + + ", maxCoilsPerRequest=" + maxCoilsPerRequest + + ", maxRegistersPerRequest=" + maxRegistersPerRequest + '}'; } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/context/ModbusRtuContext.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/context/ModbusRtuContext.java new file mode 100644 index 00000000000..a00f9fdc801 --- /dev/null +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/context/ModbusRtuContext.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.plc4x.java.modbus.rtu.context; + +import org.apache.plc4x.java.modbus.base.context.ModbusContext; +import org.apache.plc4x.java.modbus.rtu.config.ModbusRtuConfiguration; +import org.apache.plc4x.java.spi.configuration.HasConfiguration; + +public class ModbusRtuContext extends ModbusContext implements HasConfiguration { + + @Override + public void setConfiguration(ModbusRtuConfiguration configuration) { + setByteOrder(configuration.getDefaultPayloadByteOrder()); + setMaxCoilsPerRequest(configuration.getMaxCoilsPerRequest()); + setMaxRegistersPerRequest(configuration.getMaxRegistersPerRequest()); + } + +} diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java index 2d4c8fca602..09fff6f3156 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriver.java @@ -19,6 +19,8 @@ package org.apache.plc4x.java.modbus.tcp; import io.netty.buffer.ByteBuf; +import org.apache.plc4x.java.modbus.base.optimizer.ModbusOptimizer; +import org.apache.plc4x.java.modbus.tcp.context.ModbusTcpContext; import org.apache.plc4x.java.spi.configuration.PlcConnectionConfiguration; import org.apache.plc4x.java.spi.configuration.PlcTransportConfiguration; import org.apache.plc4x.java.api.messages.PlcDiscoveryRequest; @@ -31,12 +33,12 @@ import org.apache.plc4x.java.modbus.readwrite.ModbusTcpADU; import org.apache.plc4x.java.modbus.tcp.protocol.ModbusTcpProtocolLogic; import org.apache.plc4x.java.spi.messages.DefaultPlcDiscoveryRequest; +import org.apache.plc4x.java.spi.optimizer.SingleTagOptimizer; import org.apache.plc4x.java.spi.values.PlcValueHandler; import org.apache.plc4x.java.spi.connection.GeneratedDriverBase; import org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer; import org.apache.plc4x.java.spi.connection.SingleProtocolStackConfigurer; import org.apache.plc4x.java.spi.optimizer.BaseOptimizer; -import org.apache.plc4x.java.spi.optimizer.SingleTagOptimizer; import java.util.Collections; import java.util.List; @@ -119,7 +121,7 @@ protected boolean canWrite() { @Override protected BaseOptimizer getOptimizer() { - return new SingleTagOptimizer(); + return new /*SingleTagOptimizer();/*/ModbusOptimizer(); } @Override @@ -136,6 +138,7 @@ protected org.apache.plc4x.java.api.value.PlcValueHandler getValueHandler() { protected ProtocolStackConfigurer getStackConfigurer() { return SingleProtocolStackConfigurer.builder(ModbusTcpADU.class, (io) -> (ModbusTcpADU) ModbusTcpADU.staticParse(io, DriverType.MODBUS_TCP, true)) .withProtocol(ModbusTcpProtocolLogic.class) + .withDriverContext(ModbusTcpContext.class) .withPacketSizeEstimator(ByteLengthEstimator.class) .build(); } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java index fe0214aadcb..ab7a5ef4438 100644 --- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java @@ -54,6 +54,18 @@ public class ModbusTcpConfiguration implements PlcConnectionConfiguration { @Since("0.13.0") private ModbusByteOrder defaultPayloadByteOrder; + @ConfigurationParameter("max-coils-per-request") + @IntDefaultValue(2000) + @Description("Maximum number of coils addressable in one request (Defaults to 2000)") + @Since("0.13.0") + private int maxCoilsPerRequest; + + @ConfigurationParameter("max-registers-per-request") + @IntDefaultValue(125) + @Description("Maximum number of registers addressable in one request (Defaults to 125)") + @Since("0.13.0") + private int maxRegistersPerRequest; + public int getRequestTimeout() { return requestTimeout; } @@ -86,6 +98,22 @@ public void setDefaultPayloadByteOrder(ModbusByteOrder defaultPayloadByteOrder) this.defaultPayloadByteOrder = defaultPayloadByteOrder; } + public int getMaxCoilsPerRequest() { + return maxCoilsPerRequest; + } + + public void setMaxCoilsPerRequest(int maxCoilsPerRequest) { + this.maxCoilsPerRequest = maxCoilsPerRequest; + } + + public int getMaxRegistersPerRequest() { + return maxRegistersPerRequest; + } + + public void setMaxRegistersPerRequest(int maxRegistersPerRequest) { + this.maxRegistersPerRequest = maxRegistersPerRequest; + } + @Override public String toString() { return "ModbusTcpConfiguration{" + @@ -93,6 +121,8 @@ public String toString() { ", unitIdentifier=" + defaultUnitIdentifier + ", pingAddress=" + pingAddress + ", defaultPayloadByteOrder=" + defaultPayloadByteOrder + + ", maxCoilsPerRequest=" + maxCoilsPerRequest + + ", maxRegistersPerRequest=" + maxRegistersPerRequest + '}'; } diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/context/ModbusTcpContext.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/context/ModbusTcpContext.java new file mode 100644 index 00000000000..dd260ffa447 --- /dev/null +++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/context/ModbusTcpContext.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.plc4x.java.modbus.tcp.context; + +import org.apache.plc4x.java.modbus.base.context.ModbusContext; +import org.apache.plc4x.java.modbus.tcp.config.ModbusTcpConfiguration; +import org.apache.plc4x.java.spi.configuration.HasConfiguration; + +public class ModbusTcpContext extends ModbusContext implements HasConfiguration { + + @Override + public void setConfiguration(ModbusTcpConfiguration configuration) { + setByteOrder(configuration.getDefaultPayloadByteOrder()); + setMaxCoilsPerRequest(configuration.getMaxCoilsPerRequest()); + setMaxRegistersPerRequest(configuration.getMaxRegistersPerRequest()); + } + +} diff --git a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualModbusTCPDriverTest.java b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualModbusTCPDriverTest.java index 39e3e0e656c..bbdb7dfb38e 100644 --- a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualModbusTCPDriverTest.java +++ b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ManualModbusTCPDriverTest.java @@ -65,7 +65,7 @@ public class ManualModbusTCPDriverTest extends ManualTest { */ public ManualModbusTCPDriverTest(String connectionString) { - super(connectionString); + super(connectionString/*, true, false, false, 100*/); } public static void main(String[] args) throws Exception { @@ -98,7 +98,10 @@ public static void main(String[] args) throws Exception { //test.addTestCase("holding-register::WCHAR", "w"); //test.addTestCase("holding-register::STRING(10)", "hurz"); //test.addTestCase("holding-register::WSTRING(10)", "wolf"); + long startMillis = System.currentTimeMillis(); test.run(); + long endMillis = System.currentTimeMillis(); + System.out.println("Test executed in " + (endMillis - startMillis) + "ms"); } } diff --git a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizerTest.java b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizerTest.java new file mode 100644 index 00000000000..5c8eadf3912 --- /dev/null +++ b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/base/optimizer/ModbusOptimizerTest.java @@ -0,0 +1,243 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.plc4x.java.modbus.base.optimizer; + +import org.apache.plc4x.java.api.messages.PlcReadRequest; +import org.apache.plc4x.java.api.model.PlcTag; +import org.apache.plc4x.java.modbus.base.context.ModbusContext; +import org.apache.plc4x.java.modbus.base.tag.ModbusTagCoil; +import org.apache.plc4x.java.modbus.base.tag.ModbusTagHoldingRegister; +import org.apache.plc4x.java.modbus.readwrite.ModbusDataType; +import org.apache.plc4x.java.modbus.types.ModbusByteOrder; +import org.apache.plc4x.java.spi.messages.DefaultPlcReadRequest; +import org.apache.plc4x.java.spi.messages.PlcReader; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.mockito.Mockito; +import org.opentest4j.AssertionFailedError; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; + +class ModbusOptimizerTest { + + private static Stream coilInputData() { + return Stream.of( + // Simple one tag coil test + Arguments.of(new PlcTag[]{ + new ModbusTagCoil(0, 1, ModbusDataType.BOOL, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(1, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagCoil.class, firstTag); + ModbusTagCoil coil = (ModbusTagCoil) firstTag; + assertEquals(0, coil.getAddress()); + assertEquals(1, coil.getNumberOfElements()); + assertEquals(ModbusDataType.BYTE, coil.getDataType()); + }), + + // In this test, the two adjacent coils will be joined together to one array. + Arguments.of(new PlcTag[]{ + new ModbusTagCoil(0, 1, ModbusDataType.BOOL, Collections.emptyMap()), + new ModbusTagCoil(1, 1, ModbusDataType.BOOL, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(1, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagCoil.class, firstTag); + ModbusTagCoil coil = (ModbusTagCoil) firstTag; + assertEquals(0, coil.getAddress()); + assertEquals(2, coil.getNumberOfElements()); + assertEquals(ModbusDataType.BYTE, coil.getDataType()); + }), + + // In this test, the two coils with a larger gap will be joined together to one array. + Arguments.of(new PlcTag[]{ + new ModbusTagCoil(0, 1, ModbusDataType.BOOL, Collections.emptyMap()), + new ModbusTagCoil(100, 1, ModbusDataType.BOOL, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(1, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagCoil.class, firstTag); + ModbusTagCoil coil = (ModbusTagCoil) firstTag; + assertEquals(0, coil.getAddress()); + assertEquals(101, coil.getNumberOfElements()); + assertEquals(ModbusDataType.BYTE, coil.getDataType()); + }), + + // In this test, the two coils have a too large gap to be read in one block, therefore the result + // should be a list with two sub-requests. + Arguments.of(new PlcTag[]{ + new ModbusTagCoil(0, 1, ModbusDataType.BOOL, Collections.emptyMap()), + new ModbusTagCoil(2100, 1, ModbusDataType.BOOL, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(2, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagCoil.class, firstTag); + ModbusTagCoil coil = (ModbusTagCoil) firstTag; + assertEquals(0, coil.getAddress()); + assertEquals(1, coil.getNumberOfElements()); + assertEquals(ModbusDataType.BYTE, coil.getDataType()); + PlcReadRequest secondReadRequest = readRequests.get(1); + assertEquals(1, secondReadRequest.getNumberOfTags()); + firstTag = secondReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagCoil.class, firstTag); + coil = (ModbusTagCoil) firstTag; + assertEquals(2100, coil.getAddress()); + assertEquals(1, coil.getNumberOfElements()); + assertEquals(ModbusDataType.BYTE, coil.getDataType()); + }) + ); + } + + @ParameterizedTest + @MethodSource("coilInputData") + void coilTests(PlcTag[] tags, CheckResult check) { + processReadRequest(tags, check); + } + + private static Stream holdingRegisterInputData() { + return Stream.of( + // Simple one tag coil test + Arguments.of(new PlcTag[]{ + new ModbusTagHoldingRegister(0, 1, ModbusDataType.INT, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(1, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagHoldingRegister.class, firstTag); + ModbusTagHoldingRegister holdingRegister = (ModbusTagHoldingRegister) firstTag; + assertEquals(0, holdingRegister.getAddress()); + assertEquals(1, holdingRegister.getNumberOfElements()); + assertEquals(ModbusDataType.WORD, holdingRegister.getDataType()); + }), + + // In this test, the two adjacent coils will be joined together to one array. + Arguments.of(new PlcTag[]{ + new ModbusTagHoldingRegister(0, 1, ModbusDataType.INT, Collections.emptyMap()), + new ModbusTagHoldingRegister(1, 1, ModbusDataType.INT, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(1, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagHoldingRegister.class, firstTag); + ModbusTagHoldingRegister holdingRegister = (ModbusTagHoldingRegister) firstTag; + assertEquals(0, holdingRegister.getAddress()); + assertEquals(2, holdingRegister.getNumberOfElements()); + assertEquals(ModbusDataType.WORD, holdingRegister.getDataType()); + }), + + // In this test, the two coils with a larger gap will be joined together to one array. + Arguments.of(new PlcTag[]{ + new ModbusTagHoldingRegister(0, 1, ModbusDataType.INT, Collections.emptyMap()), + new ModbusTagHoldingRegister(100, 1, ModbusDataType.INT, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(1, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagHoldingRegister.class, firstTag); + ModbusTagHoldingRegister holdingRegister = (ModbusTagHoldingRegister) firstTag; + assertEquals(0, holdingRegister.getAddress()); + assertEquals(101, holdingRegister.getNumberOfElements()); + assertEquals(ModbusDataType.WORD, holdingRegister.getDataType()); + }), + + // In this test, the two coils have a too large gap to be read in one block, therefore the result + // should be a list with two sub-requests. + Arguments.of(new PlcTag[]{ + new ModbusTagHoldingRegister(0, 1, ModbusDataType.INT, Collections.emptyMap()), + new ModbusTagHoldingRegister(2100, 1, ModbusDataType.INT, Collections.emptyMap()) + }, + (CheckResult) readRequests -> { + assertEquals(2, readRequests.size()); + PlcReadRequest firstReadRequest = readRequests.get(0); + assertEquals(1, firstReadRequest.getNumberOfTags()); + PlcTag firstTag = firstReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagHoldingRegister.class, firstTag); + ModbusTagHoldingRegister holdingRegister = (ModbusTagHoldingRegister) firstTag; + assertEquals(0, holdingRegister.getAddress()); + assertEquals(1, holdingRegister.getNumberOfElements()); + assertEquals(ModbusDataType.WORD, holdingRegister.getDataType()); + PlcReadRequest secondReadRequest = readRequests.get(1); + assertEquals(1, secondReadRequest.getNumberOfTags()); + firstTag = secondReadRequest.getTags().get(0); + assertInstanceOf(ModbusTagHoldingRegister.class, firstTag); + holdingRegister = (ModbusTagHoldingRegister) firstTag; + assertEquals(2100, holdingRegister.getAddress()); + assertEquals(1, holdingRegister.getNumberOfElements()); + assertEquals(ModbusDataType.WORD, holdingRegister.getDataType()); + }) + ); + } + + @ParameterizedTest + @MethodSource("holdingRegisterInputData") + void holdingRegisterTests(PlcTag[] tags, CheckResult check) { + processReadRequest(tags, check); + } + + + + + + void processReadRequest(PlcTag[] tags, CheckResult check) { + PlcReader reader = Mockito.mock(PlcReader.class); + ModbusContext driverContext = Mockito.mock(ModbusContext.class); + Mockito.when(driverContext.getByteOrder()).thenReturn(ModbusByteOrder.BIG_ENDIAN); + Mockito.when(driverContext.getMaxCoilsPerRequest()).thenReturn(2000); + Mockito.when(driverContext.getMaxRegistersPerRequest()).thenReturn(125); + LinkedHashMap tagMap = new LinkedHashMap<>(); + int i = 0; + for (PlcTag tag : tags) { + tagMap.put("tag" + i++, tag); + } + ModbusOptimizer sut = new ModbusOptimizer(); + List plcReadRequests = sut.processReadRequest(new DefaultPlcReadRequest(reader, tagMap), driverContext); + check.isValid(plcReadRequests); + } + + @FunctionalInterface + protected interface CheckResult { + void isValid(List readRequests) throws AssertionFailedError; + } + +} \ No newline at end of file diff --git a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriverIT.java b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriverIT.java index 31497a25fef..0213b63cd87 100644 --- a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriverIT.java +++ b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/tcp/ModbusTcpDriverIT.java @@ -23,7 +23,7 @@ public class ModbusTcpDriverIT extends DriverTestsuiteRunner { public ModbusTcpDriverIT() { - super("/protocols/modbus/tcp/DriverTestsuite.xml"); + super("/protocols/modbus/tcp/DriverTestsuiteOptimized.xml"); } } diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml index e33de8a1d5c..a8b7d9964cd 100644 --- a/plc4j/drivers/s7/pom.xml +++ b/plc4j/drivers/s7/pom.xml @@ -134,10 +134,6 @@ io.netty netty-common - - io.vavr - vavr - org.json json diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/context/S7DriverContext.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/context/S7DriverContext.java index 8f29a946ec7..da3643d4b8b 100644 --- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/context/S7DriverContext.java +++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/context/S7DriverContext.java @@ -20,7 +20,6 @@ import org.apache.plc4x.java.s7.readwrite.COTPTpduSize; import org.apache.plc4x.java.s7.readwrite.ControllerType; -import org.apache.plc4x.java.s7.readwrite.DeviceGroup; import org.apache.plc4x.java.s7.readwrite.configuration.S7Configuration; import org.apache.plc4x.java.s7.readwrite.utils.S7TsapIdEncoder; import org.apache.plc4x.java.spi.configuration.HasConfiguration; diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/DefaultS7MessageProcessor.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/DefaultS7MessageProcessor.java deleted file mode 100644 index 5a8483aacc4..00000000000 --- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/DefaultS7MessageProcessor.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.plc4x.java.s7.readwrite.optimizer; - -import io.vavr.control.Either; -import org.apache.plc4x.java.api.exceptions.PlcException; -import org.apache.plc4x.java.api.exceptions.PlcProtocolException; -import org.apache.plc4x.java.s7.readwrite.*; - -import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * While a SetupCommunication message is no problem, when reading or writing data, - * situations could arise that have to be handled. The following situations have to - * be handled: - * - The number of request items is so big, that the resulting PDU would exceed the - * agreed upon PDU size: The request has to be split up into multiple requests. - * - If large blocks of data are requested by request items the result of a request - * could exceed the PDU size: The requests has to be split up into multiple requests - * where each requests response doesn't exceed the PDU size. - *

- * The following optimizations should be implemented: - * - If blocks are read which are in near proximity to each other it could be better - * to replace multiple requests by one that includes multiple blocks. - * - Rearranging the order of request items could reduce the number of needed PDUs. - */ -public class DefaultS7MessageProcessor implements S7MessageProcessor { - - private final AtomicInteger tpduRefGen; - - public static final int EMPTY_READ_REQUEST_SIZE = new S7MessageRequest(0, new S7ParameterReadVarRequest( - Collections.emptyList()), null).getLengthInBytes(); - public static final int EMPTY_READ_RESPONSE_SIZE = new S7MessageResponseData(0, new S7ParameterReadVarResponse( - (short) 0), new S7PayloadReadVarResponse(Collections.emptyList()), (short) 0, (short) 0).getLengthInBytes(); - public static final int EMPTY_WRITE_REQUEST_SIZE = new S7MessageRequest(0, new S7ParameterWriteVarRequest( - Collections.emptyList()), new S7PayloadWriteVarRequest(Collections.emptyList())).getLengthInBytes(); - public static final int EMPTY_WRITE_RESPONSE_SIZE = new S7MessageResponseData(0, new S7ParameterWriteVarResponse( - (short) 0), new S7PayloadWriteVarResponse(Collections.emptyList()), (short) 0, (short) 0).getLengthInBytes(); - - public DefaultS7MessageProcessor(AtomicInteger tpduGenerator) { - this.tpduRefGen = tpduGenerator; - } - - @Override - public Collection processRequest(S7MessageRequest request, int pduSize) throws PlcException { - // The following considerations have to be taken into account: - // - The size of all parameters and payloads of a message cannot exceed the negotiated PDU size - // - When reading data, the size of the returned data cannot exceed the negotiated PDU size - // - // Examples: - // - Size of the request exceeds the maximum - // When having a negotiated max PDU size of 256, the maximum size of individual addresses can be at most 18 - // If more are sent, the S7 will respond with a frame error. - // - Size of the response exceeds the maximum - // When reading two Strings of each 200 bytes length, the size of the request is ok, however the PLC would - // have to send back 400 bytes of String data, which would exceed the PDU size. In this case the first String - // is correctly returned, but for the second item the PLC will return a code of 0x03 = Access Denied - // - A S7 device doesn't seem to accept more than one write item. So if we are doing write operations, we - // have to split that up into one message per written item. This also seems to affect arrays. So if - // an array of values is written, we have to also split up that array into single writes. - - S7Parameter parameter = request.getParameter(); - if (parameter instanceof S7ParameterReadVarRequest) { - return processReadVarParameter(request, pduSize); - } - // If this is a write operation, split up every array item into single value items - // and every item into a separate message. - else if (parameter instanceof S7ParameterWriteVarRequest) { - return processWriteVarParameter(request, pduSize); - } - - return Collections.singletonList(request); - } - - private Collection processReadVarParameter(S7MessageRequest request, int pduSize) { - final S7ParameterReadVarRequest readVarParameter = (S7ParameterReadVarRequest) request.getParameter(); - - List result = new LinkedList<>(); - - // Calculate the maximum size an item can consume. - int maxResponseSize = pduSize - EMPTY_READ_RESPONSE_SIZE; - - // This calculates the size of the header for the request and response. - int curRequestSize = EMPTY_READ_REQUEST_SIZE; - // An empty response has the same size as an empty request. - int curResponseSize = EMPTY_READ_RESPONSE_SIZE; - // List of all items in the current request. - List curRequestItems = new LinkedList<>(); - - for (S7VarRequestParameterItem readVarParameterItem : readVarParameter.getItems()) { - final S7AddressAny address = (S7AddressAny) - ((S7VarRequestParameterItemAddress) readVarParameterItem).getAddress(); - // Calculate the sizes in the request and response adding this item to the current request would add. - int readRequestItemSize = readVarParameterItem.getLengthInBytes(); - // Constant size of the parameter item in the response (0 bytes) + Constant size of the payload item + - // payload data size. - int readResponseItemSize = 4 + (address.getNumberOfElements() * address.getTransportSize().getSizeInBytes()); - // If it's an odd number of bytes, add one to make it even - if (readResponseItemSize % 2 == 1) { - readResponseItemSize++; - } - - // If the item would not fit into a separate message, we have to split it. - if (((curRequestSize + readRequestItemSize) > pduSize) || (curResponseSize + readResponseItemSize > pduSize)) { - // Create a new sub message. - S7MessageRequest subMessage = new S7MessageRequest((short) tpduRefGen.getAndIncrement(), - new S7ParameterReadVarRequest( - curRequestItems), - null); - result.add(subMessage); - - // Reset the counters. - curRequestSize = EMPTY_READ_REQUEST_SIZE; - curResponseSize = EMPTY_READ_RESPONSE_SIZE; - curRequestItems = new LinkedList<>(); - - S7VarRequestParameterItemAddress addressItem = (S7VarRequestParameterItemAddress) readVarParameterItem; - if (addressItem.getAddress() instanceof S7AddressAny) { - S7AddressAny anyAddress = (S7AddressAny) addressItem.getAddress(); - - // Calculate the maximum number of items that would fit in a single request. - int maxNumElements = (int) Math.floor( - (double) maxResponseSize / (double) anyAddress.getTransportSize().getSizeInBytes()); - int sizeMaxNumElementInBytes = maxNumElements * anyAddress.getTransportSize().getSizeInBytes(); - - // Initialize the loop with the total number of elements and the original address. - int remainingNumElements = anyAddress.getNumberOfElements(); - int curByteAddress = anyAddress.getByteAddress(); - - // Keep on adding chunks of the original address until all have been added. - while (remainingNumElements > 0) { - int numCurElements = Math.min(remainingNumElements, maxNumElements); - S7VarRequestParameterItemAddress subVarParameterItem = new S7VarRequestParameterItemAddress( - new S7AddressAny(anyAddress.getTransportSize(), numCurElements, - anyAddress.getDbNumber(), anyAddress.getArea(), curByteAddress, (byte) 0)); - - // Create a new sub message. - subMessage = new S7MessageRequest((short) tpduRefGen.getAndIncrement(), - new S7ParameterReadVarRequest(Collections.singletonList(subVarParameterItem)), - null); - result.add(subMessage); - - remainingNumElements -= maxNumElements; - curByteAddress += sizeMaxNumElementInBytes; - } - } - } - - // If adding the item would not exceed the sizes, add it to the current request. - else { - // Increase the current request sizes. - curRequestSize += readRequestItemSize; - curResponseSize += readResponseItemSize; - // Add the item. - curRequestItems.add(readVarParameterItem); - } - } - - // Add the remaining items to a final sub-request. - if (!curRequestItems.isEmpty()) { - // Create a new sub message. - S7MessageRequest subMessage = new S7MessageRequest((short) tpduRefGen.getAndIncrement(), - new S7ParameterReadVarRequest( - curRequestItems), - null); - result.add(subMessage); - } - - return result; - } - - private Collection processWriteVarParameter(S7MessageRequest request, int pduSize) - throws PlcProtocolException { - // TODO: Really find out the constraints ... do S7 devices all just accept single element write requests? - return Collections.singletonList(request); - } - - @Override - public S7MessageResponseData processResponse(S7MessageRequest originalRequest, - Map> result) { - /*MessageType messageType = null; - short tpduReference = requestMessage.getTpduReference(); - List s7Parameters = new LinkedList<>(); - List s7Payloads = new LinkedList<>(); - - Optional varParameterOptional = requestMessage.getParameter(VarParameter.class); - - // This is neither a read request nor a write request, just merge all parameters together. - if(!varParameterOptional.isPresent()) { - for (S7ResponseMessage response : responses) { - messageType = response.getMessageType(); - s7Parameters.addAll(response.getParameters()); - s7Payloads.addAll(response.getPayloads()); - } - } - - // This is a read or write request, we have to merge all the items in the var parameter. - else { - List parameterItems = new LinkedList<>(); - List payloadItems = new LinkedList<>(); - for (S7ResponseMessage response : responses) { - messageType = response.getMessageType(); - parameterItems.addAll(response.getParameter(VarParameter.class) - .orElseThrow(() -> new PlcRuntimeException( - "Every response of a Read message should have a VarParameter instance")).getItems()); - Optional payload = response.getPayload(VarPayload.class); - payload.ifPresent(varPayload -> payloadItems.addAll(varPayload.getItems())); - } - - List mergedParameterItems = new LinkedList<>(); - List mergedPayloadItems = new LinkedList<>(); - VarParameter varParameter = varParameterOptional.get(); - - int responseOffset = 0; - for(int i = 0; i < varParameter.getItems().size(); i++) { - S7AnyVarParameterItem requestItem = (S7AnyVarParameterItem) varParameter.getItems().get(i); - - // Get the pairs of corresponding parameter and payload items. - S7AnyVarParameterItem responseParameterItem = (S7AnyVarParameterItem) parameterItems.get(0); - VarPayloadItem responsePayloadItem = payloadItems.get(i + responseOffset); - - if(responsePayloadItem.getReturnCode() == DataTransportErrorCode.OK) { - int dataOffset = (responsePayloadItem.getData() != null) ? responsePayloadItem.getData().length : 0; - - // The resulting parameter items is identical to the request parameter item. - mergedParameterItems.add(requestItem); - - // The payload will have to be merged and the return codes will have to be examined. - if (requestItem.getNumElements() != responseParameterItem.getNumElements()) { - int itemSizeInBytes = requestItem.getDataType().getSizeInBytes(); - int totalSizeInBytes = requestItem.getNumElements() * itemSizeInBytes; - - if (varParameter.getType() == ParameterType.READ_VAR) { - byte[] data = new byte[totalSizeInBytes]; - System.arraycopy(responsePayloadItem.getData(), 0, data, 0, responsePayloadItem.getData().length); - - // Now iterate over the succeeding pairs of parameters and payloads till we have - // found the original number of elements. - while (dataOffset < totalSizeInBytes) { - responseOffset++; - - // Get the next payload item in the list. - responsePayloadItem = payloadItems.get(i + responseOffset); - - // Copy the data of this item behind the previous content. - if (varParameter.getType() == ParameterType.READ_VAR) { - System.arraycopy(responsePayloadItem.getData(), 0, data, dataOffset, responsePayloadItem.getData().length); - dataOffset += responsePayloadItem.getData().length; - } - } - - mergedPayloadItems.add(new VarPayloadItem(DataTransportErrorCode.OK, - responsePayloadItem.getDataTransportSize(), data)); - } - } else { - mergedPayloadItems.add(responsePayloadItem); - } - } else { - mergedPayloadItems.add(responsePayloadItem); - } - } - - s7Parameters.add(new VarParameter(varParameter.getType(), mergedParameterItems)); - s7Payloads.add(new VarPayload(varParameter.getType(), mergedPayloadItems)); - } - // TODO: The error codes are wrong - return new S7ResponseMessage(messageType, tpduReference, s7Parameters, s7Payloads, (byte) 0xFF, (byte) 0xFF);*/ - return null; - } - -} diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7MessageProcessor.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7MessageProcessor.java deleted file mode 100644 index 2d1332b8a9e..00000000000 --- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7MessageProcessor.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.plc4x.java.s7.readwrite.optimizer; - -import io.vavr.control.Either; -import org.apache.plc4x.java.api.exceptions.PlcException; -import org.apache.plc4x.java.s7.readwrite.S7MessageRequest; -import org.apache.plc4x.java.s7.readwrite.S7MessageResponseData; - -import java.util.Collection; -import java.util.Map; - -/** - * Some times the messages being sent have to be manipulated before - * being able to send them. For example eventually a request has to - * be split up into multiple ones to respect the maximum PDU size. - */ -public interface S7MessageProcessor { - - Collection processRequest(S7MessageRequest request, int pduSize) throws PlcException; - - S7MessageResponseData processResponse(S7MessageRequest originalRequest, Map> result) throws PlcException; - -} diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java index 3620413efd2..962ec11ba28 100644 --- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java +++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java @@ -18,7 +18,6 @@ */ package org.apache.plc4x.java.s7.readwrite.optimizer; -import io.vavr.control.Either; import org.apache.plc4x.java.api.exceptions.PlcRuntimeException; import org.apache.plc4x.java.api.messages.PlcReadRequest; import org.apache.plc4x.java.api.messages.PlcReadResponse; @@ -170,14 +169,14 @@ else if (EMPTY_READ_RESPONSE_SIZE + readResponseItemSize > s7DriverContext.getPd return processedRequests; } - protected PlcReadResponse processReadResponses(PlcReadRequest readRequest, Map> readResponses) { + protected PlcReadResponse processReadResponses(PlcReadRequest readRequest, Map> readResponses) { Map> tagValues = new HashMap<>(); - for (Map.Entry> requestsEntries : readResponses.entrySet()) { + for (Map.Entry> requestsEntries : readResponses.entrySet()) { PlcReadRequest curRequest = requestsEntries.getKey(); - Either readResponse = requestsEntries.getValue(); + SubResponse readResponse = requestsEntries.getValue(); for (String tagName : curRequest.getTagNames()) { - if (readResponse.isLeft()) { - PlcReadResponse subReadResponse = readResponse.getLeft(); + if (readResponse.isSuccess()) { + PlcReadResponse subReadResponse = readResponse.getResponse(); PlcResponseCode responseCode = subReadResponse.getResponseCode(tagName); PlcValue value = subReadResponse.getAsPlcValue().getValue(tagName); diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java index 86271a90e19..94f70a3f1ea 100644 --- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java +++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/BaseOptimizer.java @@ -18,7 +18,6 @@ */ package org.apache.plc4x.java.spi.optimizer; -import io.vavr.control.Either; import org.apache.plc4x.java.api.messages.*; import org.apache.plc4x.java.api.types.PlcResponseCode; import org.apache.plc4x.java.api.value.PlcValue; @@ -41,14 +40,14 @@ protected List processReadRequest(PlcReadRequest readRequest, Dr return Collections.singletonList(readRequest); } - protected PlcReadResponse processReadResponses(PlcReadRequest readRequest, Map> readResponses) { + protected PlcReadResponse processReadResponses(PlcReadRequest readRequest, Map> readResponses, DriverContext driverContext) { Map> tags = new HashMap<>(); - for (Map.Entry> requestsEntries : readResponses.entrySet()) { + for (Map.Entry> requestsEntries : readResponses.entrySet()) { PlcReadRequest curRequest = requestsEntries.getKey(); - Either readResponse = requestsEntries.getValue(); + SubResponse readResponse = requestsEntries.getValue(); for (String tagName : curRequest.getTagNames()) { - if (readResponse.isLeft()) { - PlcReadResponse subReadResponse = readResponse.getLeft(); + if (readResponse.isSuccess()) { + PlcReadResponse subReadResponse = readResponse.getResponse(); PlcResponseCode responseCode = subReadResponse.getResponseCode(tagName); PlcValue value = subReadResponse.getAsPlcValue().getValue(tagName); tags.put(tagName, new ResponseItem<>(responseCode, value)); @@ -65,14 +64,15 @@ protected List processWriteRequest(PlcWriteRequest writeRequest } protected PlcWriteResponse processWriteResponses(PlcWriteRequest writeRequest, - Map> writeResponses) { + Map> writeResponses, + DriverContext driverContext) { Map tags = new HashMap<>(); - for (Map.Entry> requestsEntries : writeResponses.entrySet()) { + for (Map.Entry> requestsEntries : writeResponses.entrySet()) { PlcWriteRequest subWriteRequest = requestsEntries.getKey(); - Either writeResponse = requestsEntries.getValue(); + SubResponse writeResponse = requestsEntries.getValue(); for (String tagName : subWriteRequest.getTagNames()) { - if (writeResponse.isLeft()) { - PlcWriteResponse subWriteResponse = writeResponse.getLeft(); + if (writeResponse.isSuccess()) { + PlcWriteResponse subWriteResponse = writeResponse.getResponse(); tags.put(tagName, subWriteResponse.getResponseCode(tagName)); } else { tags.put(tagName, PlcResponseCode.INTERNAL_ERROR); @@ -88,7 +88,8 @@ protected List processSubscriptionRequest(PlcSubscriptio } protected PlcSubscriptionResponse processSubscriptionResponses(PlcSubscriptionRequest subscriptionRequest, - Map> subscriptionResponses) { + Map> subscriptionResponses, + DriverContext driverContext) { // TODO: Implement return null; } @@ -99,38 +100,39 @@ protected List processUnsubscriptionRequest(PlcUnsubsc } protected PlcUnsubscriptionResponse processUnsubscriptionResponses(PlcUnsubscriptionRequest unsubscriptionRequest, - Map> unsubscriptionResponses) { + Map> unsubscriptionResponses, + DriverContext driverContext) { // TODO: Implement return null; } public CompletableFuture optimizedRead(PlcReadRequest readRequest, Plc4xProtocolBase reader) { List subRequests = processReadRequest(readRequest, reader.getDriverContext()); - return send(readRequest, subRequests, reader::read, response -> processReadResponses(readRequest, response)); + return send(readRequest, subRequests, reader::read, response -> processReadResponses(readRequest, response, reader.getDriverContext())); } public CompletableFuture optimizedWrite(PlcWriteRequest writeRequest, Plc4xProtocolBase writer) { List subRequests = processWriteRequest(writeRequest, writer.getDriverContext()); - return send(writeRequest, subRequests, writer::write, response -> processWriteResponses(writeRequest, response)); + return send(writeRequest, subRequests, writer::write, response -> processWriteResponses(writeRequest, response, writer.getDriverContext())); } public CompletableFuture optimizedSubscribe( PlcSubscriptionRequest subscriptionRequest, Plc4xProtocolBase subscriber) { List subRequests = processSubscriptionRequest(subscriptionRequest, subscriber.getDriverContext()); - return send(subscriptionRequest, subRequests, subscriber::subscribe, response -> processSubscriptionResponses(subscriptionRequest, response)); + return send(subscriptionRequest, subRequests, subscriber::subscribe, response -> processSubscriptionResponses(subscriptionRequest, response, subscriber.getDriverContext())); } public CompletableFuture optimizedUnsubscribe( PlcUnsubscriptionRequest unsubscriptionRequest, Plc4xProtocolBase subscriber) { List subRequests = processUnsubscriptionRequest(unsubscriptionRequest, subscriber.getDriverContext()); - return send(unsubscriptionRequest, subRequests, subscriber::unsubscribe, response -> processUnsubscriptionResponses(unsubscriptionRequest, response)); + return send(unsubscriptionRequest, subRequests, subscriber::unsubscribe, response -> processUnsubscriptionResponses(unsubscriptionRequest, response, subscriber.getDriverContext())); } private CompletableFuture send( REQ originalRequest, List requests, Function> sender, - Function>, RES> responseProcessor) { + Function>, RES> responseProcessor) { // If this send has only one sub-request and this matches the original one, don't do any special handling // and just forward the request to the normal sending method. if ((requests.size() == 1) && (requests.get(0) == originalRequest)) { @@ -157,18 +159,18 @@ private CompletableFuture if (t != null) { parentFuture.completeExceptionally(t); } - Map> results = new HashMap<>(); + Map> results = new HashMap<>(); for (Map.Entry> subFutureEntry : subFutures.entrySet()) { REQ subRequest = subFutureEntry.getKey(); CompletableFuture subFuture = subFutureEntry.getValue(); try { final RES subResponse = subFuture.get(); - results.put(subRequest, Either.left(subResponse)); + results.put(subRequest, new SubResponse<>(subResponse)); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - results.put(subRequest, Either.right(new Exception("Something went wrong"))); + results.put(subRequest, new SubResponse<>(new Exception("Something went wrong"))); } catch (Exception e) { - results.put(subRequest, Either.right(new Exception("Something went wrong"))); + results.put(subRequest, new SubResponse<>(new Exception("Something went wrong"))); } } RES response = responseProcessor.apply(results); @@ -182,4 +184,31 @@ private CompletableFuture return parentFuture; } + public static class SubResponse { + private final T response; + private final Throwable throwable; + + public SubResponse(T response) { + this.response = response; + this.throwable = null; + } + + public SubResponse(Throwable throwable) { + this.response = null; + this.throwable = throwable; + } + + public T getResponse() { + return response; + } + + public Throwable getThrowable() { + return throwable; + } + + public boolean isSuccess() { + return throwable == null; + } + + } } diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java index 0e46435e512..c8a1c4c583a 100644 --- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java +++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java @@ -79,7 +79,9 @@ public void run() throws Exception { final PlcReadRequest readRequest = plcConnection.readRequestBuilder().addTagAddress(tagName, testCase.address).build(); // Execute the read request + long startTime = System.currentTimeMillis(); final PlcReadResponse readResponse = readRequest.execute().get(); + long endTime = System.currentTimeMillis(); // Check the result Assertions.assertEquals(1, readResponse.getTagNames().size(), tagName); @@ -132,7 +134,9 @@ public void run() throws Exception { PlcWriteRequest writeRequest = plcConnection.writeRequestBuilder().addTagAddress(tagName, testCase.address, plcValue).build(); // Execute the write request + long startTime = System.currentTimeMillis(); PlcWriteResponse writeResponse = writeRequest.execute().get(); + long endTime = System.currentTimeMillis(); // Check the result Assertions.assertEquals(PlcResponseCode.OK, writeResponse.getResponseCode(tagName), String.format("Got status %s for %s", writeResponse.getResponseCode(tagName).name(), testCase.address)); @@ -165,7 +169,9 @@ public void run() throws Exception { final PlcReadRequest readRequest = builder.build(); // Execute the read request + long startTime = System.currentTimeMillis(); final PlcReadResponse readResponse = readRequest.execute().get(); + long endTime = System.currentTimeMillis(); // Check the result Assertions.assertEquals(shuffledTestcases.size(), readResponse.getTagNames().size()); @@ -187,7 +193,7 @@ public void run() throws Exception { "Tag: " + tagName); } } - System.out.println(" - Read OK"); + System.out.println(" - Read OK (" + (endTime - startTime) + " ms)"); } if (testWrite) { diff --git a/plc4net/.gitignore b/plc4net/.gitignore index 48b4ead0e08..d11fa5c98f2 100644 --- a/plc4net/.gitignore +++ b/plc4net/.gitignore @@ -347,3 +347,4 @@ MigrationBackup/ /api/bin/ /spi/bin/ /drivers/knxnetip/bin/ +/.idea/ diff --git a/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxDatapoint.cs b/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxDatapoint.cs index 8b40c5fef86..0adf9ad9a34 100644 --- a/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxDatapoint.cs +++ b/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxDatapoint.cs @@ -50,7 +50,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.BYTE ) { // BYTE + } if( datapointType == KnxDatapointType.BYTE ) { // BYTE // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -64,7 +64,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcBYTE(value); - } else if( datapointType == KnxDatapointType.WORD ) { // WORD + } if( datapointType == KnxDatapointType.WORD ) { // WORD // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -78,7 +78,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcWORD(value); - } else if( datapointType == KnxDatapointType.DWORD ) { // DWORD + } if( datapointType == KnxDatapointType.DWORD ) { // DWORD // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -92,7 +92,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcDWORD(value); - } else if( datapointType == KnxDatapointType.LWORD ) { // LWORD + } if( datapointType == KnxDatapointType.LWORD ) { // LWORD // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -106,7 +106,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUlong("", 64); return new PlcLWORD(value); - } else if( datapointType == KnxDatapointType.USINT ) { // USINT + } if( datapointType == KnxDatapointType.USINT ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -120,7 +120,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.SINT ) { // SINT + } if( datapointType == KnxDatapointType.SINT ) { // SINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -134,7 +134,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadSbyte("", 8); return new PlcSINT(value); - } else if( datapointType == KnxDatapointType.UINT ) { // UINT + } if( datapointType == KnxDatapointType.UINT ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -148,7 +148,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.INT ) { // INT + } if( datapointType == KnxDatapointType.INT ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -162,7 +162,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.UDINT ) { // UDINT + } if( datapointType == KnxDatapointType.UDINT ) { // UDINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -176,7 +176,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( datapointType == KnxDatapointType.DINT ) { // DINT + } if( datapointType == KnxDatapointType.DINT ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -190,7 +190,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.ULINT ) { // ULINT + } if( datapointType == KnxDatapointType.ULINT ) { // ULINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -204,7 +204,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUlong("", 64); return new PlcULINT(value); - } else if( datapointType == KnxDatapointType.LINT ) { // LINT + } if( datapointType == KnxDatapointType.LINT ) { // LINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -218,7 +218,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadLong("", 64); return new PlcLINT(value); - } else if( datapointType == KnxDatapointType.REAL ) { // REAL + } if( datapointType == KnxDatapointType.REAL ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -232,7 +232,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.LREAL ) { // LREAL + } if( datapointType == KnxDatapointType.LREAL ) { // LREAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -246,7 +246,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadDouble("", 64); return new PlcLREAL(value); - } else if( datapointType == KnxDatapointType.CHAR ) { // CHAR + } if( datapointType == KnxDatapointType.CHAR ) { // CHAR // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -260,7 +260,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadString("", 8, System.Text.Encoding.GetEncoding("UTF-8")); return new PlcCHAR(Convert.ToChar(value)); - } else if( datapointType == KnxDatapointType.WCHAR ) { // WCHAR + } if( datapointType == KnxDatapointType.WCHAR ) { // WCHAR // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -274,7 +274,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadString("", 16, System.Text.Encoding.GetEncoding("UTF-16")); return new PlcWCHAR(Convert.ToChar(value)); - } else if( datapointType == KnxDatapointType.TIME ) { // TIME + } if( datapointType == KnxDatapointType.TIME ) { // TIME // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -287,7 +287,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data // Simple Field (milliseconds) var milliseconds = readBuffer.ReadUint("", 32); - } else if( datapointType == KnxDatapointType.LTIME ) { // LTIME + } if( datapointType == KnxDatapointType.LTIME ) { // LTIME // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -300,7 +300,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data // Simple Field (nanoseconds) var nanoseconds = readBuffer.ReadUlong("", 64); - } else if( datapointType == KnxDatapointType.DATE ) { // DATE + } if( datapointType == KnxDatapointType.DATE ) { // DATE // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -313,7 +313,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data // Simple Field (secondsSinceEpoch) var secondsSinceEpoch = readBuffer.ReadUint("", 32); - } else if( datapointType == KnxDatapointType.TIME_OF_DAY ) { // TIME_OF_DAY + } if( datapointType == KnxDatapointType.TIME_OF_DAY ) { // TIME_OF_DAY // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -326,7 +326,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data // Simple Field (millisecondsSinceMidnight) var millisecondsSinceMidnight = readBuffer.ReadUint("", 32); - } else if( datapointType == KnxDatapointType.TOD ) { // TIME_OF_DAY + } if( datapointType == KnxDatapointType.TOD ) { // TIME_OF_DAY // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -339,7 +339,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data // Simple Field (millisecondsSinceMidnight) var millisecondsSinceMidnight = readBuffer.ReadUint("", 32); - } else if( datapointType == KnxDatapointType.DATE_AND_TIME ) { // DATE_AND_TIME + } if( datapointType == KnxDatapointType.DATE_AND_TIME ) { // DATE_AND_TIME // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -375,7 +375,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = new DateTime(year, (month == 0) ? 1 : month, (day == 0) ? 1 : day, hour, minutes, seconds, 0); return new PlcDATE_AND_TIME(value); - } else if( datapointType == KnxDatapointType.DT ) { // DATE_AND_TIME + } if( datapointType == KnxDatapointType.DT ) { // DATE_AND_TIME // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -411,7 +411,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = new DateTime(year, (month == 0) ? 1 : month, (day == 0) ? 1 : day, hour, minutes, seconds, 0); return new PlcDATE_AND_TIME(value); - } else if( datapointType == KnxDatapointType.DPT_Switch ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Switch ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -425,7 +425,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Bool ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Bool ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -439,7 +439,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Enable ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Enable ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -453,7 +453,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Ramp ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Ramp ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -467,7 +467,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Alarm ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Alarm ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -481,7 +481,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_BinaryValue ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_BinaryValue ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -495,7 +495,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Step ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Step ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -509,7 +509,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_UpDown ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_UpDown ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -523,7 +523,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_OpenClose ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_OpenClose ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -537,7 +537,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Start ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Start ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -551,7 +551,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_State ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_State ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -565,7 +565,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Invert ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Invert ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -579,7 +579,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_DimSendStyle ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_DimSendStyle ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -593,7 +593,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_InputSource ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_InputSource ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -607,7 +607,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Reset ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Reset ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -621,7 +621,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Ack ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Ack ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -635,7 +635,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Trigger ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Trigger ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -649,7 +649,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Occupancy ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Occupancy ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -663,7 +663,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Window_Door ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Window_Door ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -677,7 +677,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_LogicalFunction ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_LogicalFunction ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -691,7 +691,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Scene_AB ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Scene_AB ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -705,7 +705,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_ShutterBlinds_Mode ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_ShutterBlinds_Mode ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -719,7 +719,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_DayNight ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_DayNight ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -733,7 +733,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Heat_Cool ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Heat_Cool ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -747,7 +747,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_Switch_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Switch_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -766,7 +766,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Bool_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Bool_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -785,7 +785,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Enable_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Enable_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -804,7 +804,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Ramp_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Ramp_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -823,7 +823,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Alarm_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Alarm_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -842,7 +842,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_BinaryValue_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_BinaryValue_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -861,7 +861,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Step_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Step_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -880,7 +880,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Direction1_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Direction1_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -899,7 +899,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Direction2_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Direction2_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -918,7 +918,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Start_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Start_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -937,7 +937,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_State_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_State_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -956,7 +956,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Invert_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Invert_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -975,7 +975,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Control_Dimming ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Control_Dimming ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -994,7 +994,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Control_Blinds ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Control_Blinds ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1013,7 +1013,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Char_ASCII ) { // STRING + } if( datapointType == KnxDatapointType.DPT_Char_ASCII ) { // STRING // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1027,7 +1027,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadString("", 8, System.Text.Encoding.GetEncoding("ASCII")); return new PlcSTRING(value); - } else if( datapointType == KnxDatapointType.DPT_Char_8859_1 ) { // STRING + } if( datapointType == KnxDatapointType.DPT_Char_8859_1 ) { // STRING // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1041,7 +1041,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadString("", 8, System.Text.Encoding.GetEncoding("ISO-8859-1")); return new PlcSTRING(value); - } else if( datapointType == KnxDatapointType.DPT_Scaling ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Scaling ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1055,7 +1055,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Angle ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Angle ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1069,7 +1069,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Percent_U8 ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Percent_U8 ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1083,7 +1083,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_DecimalFactor ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DecimalFactor ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1097,7 +1097,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Tariff ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Tariff ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1111,7 +1111,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Value_1_Ucount ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Value_1_Ucount ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1125,7 +1125,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_FanStage ) { // USINT + } if( datapointType == KnxDatapointType.DPT_FanStage ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1139,7 +1139,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Percent_V8 ) { // SINT + } if( datapointType == KnxDatapointType.DPT_Percent_V8 ) { // SINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1153,7 +1153,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadSbyte("", 8); return new PlcSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Value_1_Count ) { // SINT + } if( datapointType == KnxDatapointType.DPT_Value_1_Count ) { // SINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1167,7 +1167,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadSbyte("", 8); return new PlcSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Status_Mode3 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Status_Mode3 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1198,7 +1198,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Value_2_Ucount ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Value_2_Ucount ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1212,7 +1212,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_TimePeriodMsec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodMsec ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1226,7 +1226,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_TimePeriod10Msec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriod10Msec ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1240,7 +1240,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_TimePeriod100Msec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriod100Msec ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1254,7 +1254,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_TimePeriodSec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodSec ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1268,7 +1268,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_TimePeriodMin ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodMin ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1282,7 +1282,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_TimePeriodHrs ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodHrs ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1296,7 +1296,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_PropDataType ) { // UINT + } if( datapointType == KnxDatapointType.DPT_PropDataType ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1310,7 +1310,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_Length_mm ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Length_mm ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1324,7 +1324,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_UElCurrentmA ) { // UINT + } if( datapointType == KnxDatapointType.DPT_UElCurrentmA ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1338,7 +1338,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_Brightness ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Brightness ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1352,7 +1352,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_Absolute_Colour_Temperature ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Absolute_Colour_Temperature ) { // UINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1366,7 +1366,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( datapointType == KnxDatapointType.DPT_Value_2_Count ) { // INT + } if( datapointType == KnxDatapointType.DPT_Value_2_Count ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1380,7 +1380,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeMsec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeMsec ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1394,7 +1394,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaTime10Msec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTime10Msec ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1408,7 +1408,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaTime100Msec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTime100Msec ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1422,7 +1422,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeSec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeSec ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1436,7 +1436,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeMin ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeMin ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1450,7 +1450,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeHrs ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeHrs ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1464,7 +1464,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_Percent_V16 ) { // INT + } if( datapointType == KnxDatapointType.DPT_Percent_V16 ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1478,7 +1478,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_Rotation_Angle ) { // INT + } if( datapointType == KnxDatapointType.DPT_Rotation_Angle ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1492,7 +1492,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_Length_m ) { // INT + } if( datapointType == KnxDatapointType.DPT_Length_m ) { // INT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1506,7 +1506,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Temp ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Temp ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1520,7 +1520,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Tempd ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Tempd ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1534,7 +1534,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Tempa ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Tempa ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1548,7 +1548,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Lux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Lux ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1562,7 +1562,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Wsp ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Wsp ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1576,7 +1576,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Pres ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Pres ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1590,7 +1590,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Humidity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Humidity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1604,7 +1604,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_AirQuality ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AirQuality ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1618,7 +1618,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_AirFlow ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AirFlow ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1632,7 +1632,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Time1 ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Time1 ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1646,7 +1646,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Time2 ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Time2 ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1660,7 +1660,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Volt ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volt ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1674,7 +1674,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Curr ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Curr ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1688,7 +1688,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_PowerDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_PowerDensity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1702,7 +1702,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_KelvinPerPercent ) { // REAL + } if( datapointType == KnxDatapointType.DPT_KelvinPerPercent ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1716,7 +1716,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Power ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Power ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1730,7 +1730,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Volume_Flow ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volume_Flow ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1744,7 +1744,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Rain_Amount ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Rain_Amount ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1758,7 +1758,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Temp_F ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Temp_F ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1772,7 +1772,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Wsp_kmh ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Wsp_kmh ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1786,7 +1786,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Absolute_Humidity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Absolute_Humidity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1800,7 +1800,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Concentration_ygm3 ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Concentration_ygm3 ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1814,7 +1814,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Coefficient ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Coefficient ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1828,7 +1828,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_TimeOfDay ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TimeOfDay ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1869,7 +1869,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Date ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Date ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1915,7 +1915,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Value_4_Ucount ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_Value_4_Ucount ) { // UDINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1929,7 +1929,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Sec ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Sec ) { // UDINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1943,7 +1943,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Min ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Min ) { // UDINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1957,7 +1957,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Hrs ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Hrs ) { // UDINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1971,7 +1971,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( datapointType == KnxDatapointType.DPT_VolumeLiquid_Litre ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_VolumeLiquid_Litre ) { // UDINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1985,7 +1985,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( datapointType == KnxDatapointType.DPT_Volume_m_3 ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_Volume_m_3 ) { // UDINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -1999,7 +1999,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( datapointType == KnxDatapointType.DPT_Value_4_Count ) { // DINT + } if( datapointType == KnxDatapointType.DPT_Value_4_Count ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2013,7 +2013,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_FlowRate_m3h ) { // DINT + } if( datapointType == KnxDatapointType.DPT_FlowRate_m3h ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2027,7 +2027,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2041,7 +2041,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_ApparantEnergy ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ApparantEnergy ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2055,7 +2055,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_ReactiveEnergy ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ReactiveEnergy ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2069,7 +2069,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy_kWh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy_kWh ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2083,7 +2083,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_ApparantEnergy_kVAh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ApparantEnergy_kVAh ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2097,7 +2097,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_kVARh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_kVARh ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2111,7 +2111,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy_MWh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy_MWh ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2125,7 +2125,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_LongDeltaTimeSec ) { // DINT + } if( datapointType == KnxDatapointType.DPT_LongDeltaTimeSec ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2139,7 +2139,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaVolumeLiquid_Litre ) { // DINT + } if( datapointType == KnxDatapointType.DPT_DeltaVolumeLiquid_Litre ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2153,7 +2153,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_DeltaVolume_m_3 ) { // DINT + } if( datapointType == KnxDatapointType.DPT_DeltaVolume_m_3 ) { // DINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2167,7 +2167,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Acceleration ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Acceleration ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2181,7 +2181,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Acceleration_Angular ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Acceleration_Angular ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2195,7 +2195,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Activation_Energy ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Activation_Energy ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2209,7 +2209,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Activity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Activity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2223,7 +2223,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Mol ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Mol ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2237,7 +2237,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Amplitude ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Amplitude ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2251,7 +2251,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_AngleRad ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AngleRad ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2265,7 +2265,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_AngleDeg ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AngleDeg ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2279,7 +2279,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Angular_Momentum ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Angular_Momentum ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2293,7 +2293,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Angular_Velocity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Angular_Velocity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2307,7 +2307,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Area ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Area ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2321,7 +2321,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Capacitance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Capacitance ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2335,7 +2335,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Charge_DensitySurface ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Charge_DensitySurface ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2349,7 +2349,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Charge_DensityVolume ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Charge_DensityVolume ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2363,7 +2363,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Compressibility ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Compressibility ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2377,7 +2377,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Conductance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Conductance ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2391,7 +2391,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electrical_Conductivity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electrical_Conductivity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2405,7 +2405,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Density ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Density ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2419,7 +2419,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Charge ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Charge ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2433,7 +2433,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Current ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Current ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2447,7 +2447,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_CurrentDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_CurrentDensity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2461,7 +2461,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_DipoleMoment ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_DipoleMoment ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2475,7 +2475,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Displacement ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Displacement ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2489,7 +2489,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_FieldStrength ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_FieldStrength ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2503,7 +2503,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Flux ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2517,7 +2517,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_FluxDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_FluxDensity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2531,7 +2531,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Polarization ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Polarization ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2545,7 +2545,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Potential ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Potential ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2559,7 +2559,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_PotentialDifference ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_PotentialDifference ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2573,7 +2573,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_ElectromagneticMoment ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_ElectromagneticMoment ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2587,7 +2587,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Electromotive_Force ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electromotive_Force ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2601,7 +2601,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Energy ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Energy ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2615,7 +2615,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Force ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Force ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2629,7 +2629,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Frequency ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Frequency ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2643,7 +2643,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Angular_Frequency ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Angular_Frequency ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2657,7 +2657,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Heat_Capacity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Heat_Capacity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2671,7 +2671,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Heat_FlowRate ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Heat_FlowRate ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2685,7 +2685,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Heat_Quantity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Heat_Quantity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2699,7 +2699,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Impedance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Impedance ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2713,7 +2713,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Length ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Length ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2727,7 +2727,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Light_Quantity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Light_Quantity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2741,7 +2741,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Luminance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Luminance ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2755,7 +2755,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Luminous_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Luminous_Flux ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2769,7 +2769,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Luminous_Intensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Luminous_Intensity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2783,7 +2783,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FieldStrength ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FieldStrength ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2797,7 +2797,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Flux ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2811,7 +2811,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FluxDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FluxDensity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2825,7 +2825,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Moment ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Moment ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2839,7 +2839,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Polarization ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Polarization ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2853,7 +2853,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetization ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetization ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2867,7 +2867,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_MagnetomotiveForce ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_MagnetomotiveForce ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2881,7 +2881,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Mass ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Mass ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2895,7 +2895,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_MassFlux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_MassFlux ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2909,7 +2909,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Momentum ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Momentum ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2923,7 +2923,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleRad ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleRad ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2937,7 +2937,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleDeg ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleDeg ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2951,7 +2951,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Power ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Power ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2965,7 +2965,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Power_Factor ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Power_Factor ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2979,7 +2979,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Pressure ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Pressure ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -2993,7 +2993,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Reactance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Reactance ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3007,7 +3007,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Resistance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Resistance ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3021,7 +3021,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Resistivity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Resistivity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3035,7 +3035,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_SelfInductance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_SelfInductance ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3049,7 +3049,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_SolidAngle ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_SolidAngle ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3063,7 +3063,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Sound_Intensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Sound_Intensity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3077,7 +3077,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Speed ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Speed ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3091,7 +3091,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Stress ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Stress ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3105,7 +3105,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Surface_Tension ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Surface_Tension ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3119,7 +3119,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Common_Temperature ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Common_Temperature ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3133,7 +3133,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Absolute_Temperature ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Absolute_Temperature ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3147,7 +3147,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_TemperatureDifference ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_TemperatureDifference ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3161,7 +3161,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Thermal_Capacity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Thermal_Capacity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3175,7 +3175,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Thermal_Conductivity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Thermal_Conductivity ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3189,7 +3189,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_ThermoelectricPower ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_ThermoelectricPower ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3203,7 +3203,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Time ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Time ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3217,7 +3217,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Torque ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Torque ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3231,7 +3231,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Volume ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volume ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3245,7 +3245,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Volume_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volume_Flux ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3259,7 +3259,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Weight ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Weight ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3273,7 +3273,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_Work ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Work ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3287,7 +3287,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Value_ApparentPower ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_ApparentPower ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3301,7 +3301,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Volume_Flux_Meter ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Volume_Flux_Meter ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3315,7 +3315,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Volume_Flux_ls ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Volume_Flux_ls ) { // REAL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3329,7 +3329,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( datapointType == KnxDatapointType.DPT_Access_Data ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Access_Data ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3375,7 +3375,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_String_ASCII ) { // STRING + } if( datapointType == KnxDatapointType.DPT_String_ASCII ) { // STRING // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3389,7 +3389,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadString("", 112, System.Text.Encoding.GetEncoding("ASCII")); return new PlcSTRING(value); - } else if( datapointType == KnxDatapointType.DPT_String_8859_1 ) { // STRING + } if( datapointType == KnxDatapointType.DPT_String_8859_1 ) { // STRING // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3403,7 +3403,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadString("", 112, System.Text.Encoding.GetEncoding("ISO-8859-1")); return new PlcSTRING(value); - } else if( datapointType == KnxDatapointType.DPT_SceneNumber ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SceneNumber ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3417,7 +3417,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 6); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_SceneControl ) { // Struct + } if( datapointType == KnxDatapointType.DPT_SceneControl ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3444,7 +3444,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_DateTime ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DateTime ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3545,7 +3545,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_SCLOMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SCLOMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3559,7 +3559,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_BuildingMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BuildingMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3573,7 +3573,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_OccMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_OccMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3587,7 +3587,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Priority ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Priority ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3601,7 +3601,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_LightApplicationMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LightApplicationMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3615,7 +3615,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_ApplicationArea ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ApplicationArea ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3629,7 +3629,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_AlarmClassType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_AlarmClassType ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3643,7 +3643,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_PSUMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_PSUMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3657,7 +3657,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_ErrorClass_System ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ErrorClass_System ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3671,7 +3671,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_ErrorClass_HVAC ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ErrorClass_HVAC ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3685,7 +3685,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Time_Delay ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Time_Delay ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3699,7 +3699,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Beaufort_Wind_Force_Scale ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Beaufort_Wind_Force_Scale ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3713,7 +3713,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_SensorSelect ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SensorSelect ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3727,7 +3727,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_ActuatorConnectType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ActuatorConnectType ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3741,7 +3741,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Cloud_Cover ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Cloud_Cover ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3755,7 +3755,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_PowerReturnMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_PowerReturnMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3769,7 +3769,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_FuelType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_FuelType ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3783,7 +3783,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_BurnerType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BurnerType ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3797,7 +3797,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_HVACMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVACMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3811,7 +3811,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_DHWMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DHWMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3825,7 +3825,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_LoadPriority ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LoadPriority ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3839,7 +3839,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_HVACContrMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVACContrMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3853,7 +3853,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_HVACEmergMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVACEmergMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3867,7 +3867,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_ChangeoverMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ChangeoverMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3881,7 +3881,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_ValveMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ValveMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3895,7 +3895,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_DamperMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DamperMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3909,7 +3909,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_HeaterMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HeaterMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3923,7 +3923,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_FanMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_FanMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3937,7 +3937,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_MasterSlaveMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_MasterSlaveMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3951,7 +3951,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_StatusRoomSetp ) { // USINT + } if( datapointType == KnxDatapointType.DPT_StatusRoomSetp ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3965,7 +3965,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Metering_DeviceType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Metering_DeviceType ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3979,7 +3979,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_HumDehumMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HumDehumMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -3993,7 +3993,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_EnableHCStage ) { // USINT + } if( datapointType == KnxDatapointType.DPT_EnableHCStage ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4007,7 +4007,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_ADAType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ADAType ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4021,7 +4021,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_BackupMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BackupMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4035,7 +4035,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_StartSynchronization ) { // USINT + } if( datapointType == KnxDatapointType.DPT_StartSynchronization ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4049,7 +4049,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Behaviour_Lock_Unlock ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Behaviour_Lock_Unlock ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4063,7 +4063,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Behaviour_Bus_Power_Up_Down ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Behaviour_Bus_Power_Up_Down ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4077,7 +4077,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_DALI_Fade_Time ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DALI_Fade_Time ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4091,7 +4091,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_BlinkingMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BlinkingMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4105,7 +4105,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_LightControlMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LightControlMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4119,7 +4119,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_SwitchPBModel ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SwitchPBModel ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4133,7 +4133,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_PBAction ) { // USINT + } if( datapointType == KnxDatapointType.DPT_PBAction ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4147,7 +4147,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_DimmPBModel ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DimmPBModel ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4161,7 +4161,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_SwitchOnMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SwitchOnMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4175,7 +4175,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_LoadTypeSet ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LoadTypeSet ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4189,7 +4189,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_LoadTypeDetected ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LoadTypeDetected ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4203,7 +4203,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Converter_Test_Control ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Converter_Test_Control ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4217,7 +4217,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Converter_Control ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Converter_Control ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4231,7 +4231,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_SABExcept_Behaviour ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SABExcept_Behaviour ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4245,7 +4245,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_SABBehaviour_Lock_Unlock ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SABBehaviour_Lock_Unlock ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4259,7 +4259,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_SSSBMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SSSBMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4273,7 +4273,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_BlindsControlMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BlindsControlMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4287,7 +4287,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_CommMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_CommMode ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4301,7 +4301,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_AddInfoTypes ) { // USINT + } if( datapointType == KnxDatapointType.DPT_AddInfoTypes ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4315,7 +4315,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_RF_ModeSelect ) { // USINT + } if( datapointType == KnxDatapointType.DPT_RF_ModeSelect ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4329,7 +4329,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_RF_FilterSelect ) { // USINT + } if( datapointType == KnxDatapointType.DPT_RF_FilterSelect ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4343,7 +4343,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_StatusGen ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusGen ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4379,7 +4379,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Device_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Device_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4409,7 +4409,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_ForceSign ) { // Struct + } if( datapointType == KnxDatapointType.DPT_ForceSign ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4446,7 +4446,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_ForceSignCool ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_ForceSignCool ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4460,7 +4460,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_StatusRHC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusRHC ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4497,7 +4497,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_StatusSDHWC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusSDHWC ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4527,7 +4527,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_FuelTypeSet ) { // Struct + } if( datapointType == KnxDatapointType.DPT_FuelTypeSet ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4557,7 +4557,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_StatusRCC ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_StatusRCC ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4571,7 +4571,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( datapointType == KnxDatapointType.DPT_StatusAHU ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusAHU ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4604,7 +4604,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTSM ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTSM ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4640,7 +4640,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_LightActuatorErrorInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_LightActuatorErrorInfo ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4682,7 +4682,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_RF_ModeInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_RF_ModeInfo ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4712,7 +4712,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_RF_FilterInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_RF_FilterInfo ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4742,7 +4742,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Channel_Activation_8 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Channel_Activation_8 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4779,7 +4779,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_StatusDHWC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusDHWC ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4824,7 +4824,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_StatusRHCC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusRHCC ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4890,7 +4890,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_CombinedStatus_HVA ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedStatus_HVA ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4938,7 +4938,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTC ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -4986,7 +4986,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Media ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Media ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5035,7 +5035,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Channel_Activation_16 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Channel_Activation_16 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5096,7 +5096,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_OnOffAction ) { // USINT + } if( datapointType == KnxDatapointType.DPT_OnOffAction ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5110,7 +5110,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 2); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_Alarm_Reaction ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Alarm_Reaction ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5124,7 +5124,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 2); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_UpDown_Action ) { // USINT + } if( datapointType == KnxDatapointType.DPT_UpDown_Action ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5138,7 +5138,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 2); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_HVAC_PB_Action ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVAC_PB_Action ) { // USINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5152,7 +5152,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadByte("", 2); return new PlcUSINT(value); - } else if( datapointType == KnxDatapointType.DPT_DoubleNibble ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DoubleNibble ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5171,7 +5171,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_SceneInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_SceneInfo ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5198,7 +5198,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_CombinedInfoOnOff ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedInfoOnOff ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5307,7 +5307,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy_V64 ) { // LINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy_V64 ) { // LINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5321,7 +5321,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadLong("", 64); return new PlcLINT(value); - } else if( datapointType == KnxDatapointType.DPT_ApparantEnergy_V64 ) { // LINT + } if( datapointType == KnxDatapointType.DPT_ApparantEnergy_V64 ) { // LINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5335,7 +5335,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadLong("", 64); return new PlcLINT(value); - } else if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_V64 ) { // LINT + } if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_V64 ) { // LINT // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5349,7 +5349,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadLong("", 64); return new PlcLINT(value); - } else if( datapointType == KnxDatapointType.DPT_Channel_Activation_24 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Channel_Activation_24 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5434,7 +5434,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_HVACModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_HVACModeNext ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5453,7 +5453,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_DHWModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DHWModeNext ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5472,7 +5472,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_OccModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_OccModeNext ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5491,7 +5491,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_BuildingModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_BuildingModeNext ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5510,7 +5510,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_StatusLightingActuator ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusLightingActuator ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5550,7 +5550,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Version ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Version ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5572,7 +5572,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_AlarmInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_AlarmInfo ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5634,7 +5634,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_3 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_3 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5656,7 +5656,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_3 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_3 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5678,7 +5678,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Scaling_Speed ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Scaling_Speed ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5697,7 +5697,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Scaling_Step_Time ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Scaling_Step_Time ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5716,7 +5716,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_MeteringValue ) { // Struct + } if( datapointType == KnxDatapointType.DPT_MeteringValue ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5758,7 +5758,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_MBus_Address ) { // Struct + } if( datapointType == KnxDatapointType.DPT_MBus_Address ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5783,7 +5783,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Colour_RGB ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Colour_RGB ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5805,7 +5805,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_LanguageCodeAlpha2_ASCII ) { // STRING + } if( datapointType == KnxDatapointType.DPT_LanguageCodeAlpha2_ASCII ) { // STRING // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5819,7 +5819,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var value = readBuffer.ReadString("", 16, System.Text.Encoding.GetEncoding("ASCII")); return new PlcSTRING(value); - } else if( datapointType == KnxDatapointType.DPT_Tariff_ActiveEnergy ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Tariff_ActiveEnergy ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5852,7 +5852,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Prioritised_Mode_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Prioritised_Mode_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5874,7 +5874,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_DALI_Control_Gear_Diagnostic ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DALI_Control_Gear_Diagnostic ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5913,7 +5913,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_DALI_Diagnostics ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DALI_Diagnostics ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5935,7 +5935,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_CombinedPosition ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedPosition ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -5968,7 +5968,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_StatusSAB ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusSAB ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6034,7 +6034,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Colour_xyY ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Colour_xyY ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6070,7 +6070,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Converter_Status ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Converter_Status ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6112,7 +6112,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Converter_Test_Result ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Converter_Test_Result ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6165,7 +6165,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Battery_Info ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Battery_Info ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6198,7 +6198,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Transition ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Transition ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6237,7 +6237,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Control ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6292,7 +6292,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Colour_RGBW ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Colour_RGBW ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6345,7 +6345,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Relative_Control_RGBW ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Relative_Control_RGBW ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6434,7 +6434,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_Relative_Control_RGB ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Relative_Control_RGB ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6489,7 +6489,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_GeographicalLocation ) { // Struct + } if( datapointType == KnxDatapointType.DPT_GeographicalLocation ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6508,7 +6508,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_4 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_4 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6533,7 +6533,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_4 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_4 ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -6558,7 +6558,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxDatapointType data var _map = new Dictionary(); return new PlcStruct(_map); - } + } return null; } @@ -6578,7 +6578,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.BYTE ) { // BYTE + } if( datapointType == KnxDatapointType.BYTE ) { // BYTE var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6587,7 +6587,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.WORD ) { // WORD + } if( datapointType == KnxDatapointType.WORD ) { // WORD var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6596,7 +6596,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DWORD ) { // DWORD + } if( datapointType == KnxDatapointType.DWORD ) { // DWORD var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6605,7 +6605,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.LWORD ) { // LWORD + } if( datapointType == KnxDatapointType.LWORD ) { // LWORD var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6614,7 +6614,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ulong) _value.GetUlong(); writeBuffer.WriteUlong("", 64, (ulong) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.USINT ) { // USINT + } if( datapointType == KnxDatapointType.USINT ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6623,7 +6623,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.SINT ) { // SINT + } if( datapointType == KnxDatapointType.SINT ) { // SINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6632,7 +6632,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (sbyte) _value.GetSbyte(); writeBuffer.WriteSbyte("", 8, (sbyte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.UINT ) { // UINT + } if( datapointType == KnxDatapointType.UINT ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6641,7 +6641,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.INT ) { // INT + } if( datapointType == KnxDatapointType.INT ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6650,7 +6650,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.UDINT ) { // UDINT + } if( datapointType == KnxDatapointType.UDINT ) { // UDINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6659,7 +6659,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DINT ) { // DINT + } if( datapointType == KnxDatapointType.DINT ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6668,7 +6668,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.ULINT ) { // ULINT + } if( datapointType == KnxDatapointType.ULINT ) { // ULINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6677,7 +6677,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ulong) _value.GetUlong(); writeBuffer.WriteUlong("", 64, (ulong) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.LINT ) { // LINT + } if( datapointType == KnxDatapointType.LINT ) { // LINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6686,7 +6686,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (long) _value.GetLong(); writeBuffer.WriteLong("", 64, (long) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.REAL ) { // REAL + } if( datapointType == KnxDatapointType.REAL ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6695,7 +6695,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.LREAL ) { // LREAL + } if( datapointType == KnxDatapointType.LREAL ) { // LREAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6704,7 +6704,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (double) _value.GetDouble(); writeBuffer.WriteDouble("", 64,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.CHAR ) { // CHAR + } if( datapointType == KnxDatapointType.CHAR ) { // CHAR var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6713,7 +6713,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (string) _value.GetString(); writeBuffer.WriteString("", 8, "UTF-8", (string) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.WCHAR ) { // WCHAR + } if( datapointType == KnxDatapointType.WCHAR ) { // WCHAR var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6722,7 +6722,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (string) _value.GetString(); writeBuffer.WriteString("", 16, "UTF-16", (string) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.TIME ) { // TIME + } if( datapointType == KnxDatapointType.TIME ) { // TIME var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6731,7 +6731,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var milliseconds = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (milliseconds)); return writeBuffer; - } else if( datapointType == KnxDatapointType.LTIME ) { // LTIME + } if( datapointType == KnxDatapointType.LTIME ) { // LTIME var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6740,7 +6740,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var nanoseconds = (ulong) _value.GetUlong(); writeBuffer.WriteUlong("", 64, (ulong) (nanoseconds)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DATE ) { // DATE + } if( datapointType == KnxDatapointType.DATE ) { // DATE var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6749,7 +6749,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var secondsSinceEpoch = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (secondsSinceEpoch)); return writeBuffer; - } else if( datapointType == KnxDatapointType.TIME_OF_DAY ) { // TIME_OF_DAY + } if( datapointType == KnxDatapointType.TIME_OF_DAY ) { // TIME_OF_DAY var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6758,7 +6758,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var millisecondsSinceMidnight = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (millisecondsSinceMidnight)); return writeBuffer; - } else if( datapointType == KnxDatapointType.TOD ) { // TIME_OF_DAY + } if( datapointType == KnxDatapointType.TOD ) { // TIME_OF_DAY var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6767,7 +6767,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var millisecondsSinceMidnight = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (millisecondsSinceMidnight)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DATE_AND_TIME ) { // DATE_AND_TIME + } if( datapointType == KnxDatapointType.DATE_AND_TIME ) { // DATE_AND_TIME var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6797,7 +6797,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var nanoseconds = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (nanoseconds)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DT ) { // DATE_AND_TIME + } if( datapointType == KnxDatapointType.DT ) { // DATE_AND_TIME var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6827,7 +6827,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var nanoseconds = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (nanoseconds)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Switch ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Switch ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6836,7 +6836,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Bool ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Bool ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6845,7 +6845,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Enable ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Enable ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6854,7 +6854,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Ramp ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Ramp ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6863,7 +6863,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Alarm ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Alarm ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6872,7 +6872,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BinaryValue ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_BinaryValue ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6881,7 +6881,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Step ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Step ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6890,7 +6890,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_UpDown ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_UpDown ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6899,7 +6899,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_OpenClose ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_OpenClose ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6908,7 +6908,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Start ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Start ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6917,7 +6917,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_State ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_State ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6926,7 +6926,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Invert ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Invert ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6935,7 +6935,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DimSendStyle ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_DimSendStyle ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6944,7 +6944,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_InputSource ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_InputSource ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6953,7 +6953,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Reset ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Reset ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6962,7 +6962,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Ack ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Ack ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6971,7 +6971,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Trigger ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Trigger ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6980,7 +6980,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Occupancy ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Occupancy ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6989,7 +6989,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Window_Door ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Window_Door ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -6998,7 +6998,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LogicalFunction ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_LogicalFunction ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7007,7 +7007,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Scene_AB ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Scene_AB ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7016,7 +7016,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ShutterBlinds_Mode ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_ShutterBlinds_Mode ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7025,7 +7025,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DayNight ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_DayNight ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7034,7 +7034,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Heat_Cool ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_Heat_Cool ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7043,7 +7043,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Switch_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Switch_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7055,7 +7055,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var on = (bool) _value.GetStruct()["on"].GetBool(); writeBuffer.WriteBit("", (on)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Bool_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Bool_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7067,7 +7067,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var valueTrue = (bool) _value.GetStruct()["valueTrue"].GetBool(); writeBuffer.WriteBit("", (valueTrue)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Enable_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Enable_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7079,7 +7079,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var enable = (bool) _value.GetStruct()["enable"].GetBool(); writeBuffer.WriteBit("", (enable)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Ramp_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Ramp_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7091,7 +7091,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var ramp = (bool) _value.GetStruct()["ramp"].GetBool(); writeBuffer.WriteBit("", (ramp)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Alarm_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Alarm_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7103,7 +7103,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var alarm = (bool) _value.GetStruct()["alarm"].GetBool(); writeBuffer.WriteBit("", (alarm)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BinaryValue_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_BinaryValue_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7115,7 +7115,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var high = (bool) _value.GetStruct()["high"].GetBool(); writeBuffer.WriteBit("", (high)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Step_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Step_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7127,7 +7127,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var increase = (bool) _value.GetStruct()["increase"].GetBool(); writeBuffer.WriteBit("", (increase)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Direction1_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Direction1_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7139,7 +7139,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var down = (bool) _value.GetStruct()["down"].GetBool(); writeBuffer.WriteBit("", (down)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Direction2_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Direction2_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7151,7 +7151,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var close = (bool) _value.GetStruct()["close"].GetBool(); writeBuffer.WriteBit("", (close)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Start_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Start_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7163,7 +7163,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var start = (bool) _value.GetStruct()["start"].GetBool(); writeBuffer.WriteBit("", (start)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_State_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_State_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7175,7 +7175,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var active = (bool) _value.GetStruct()["active"].GetBool(); writeBuffer.WriteBit("", (active)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Invert_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Invert_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7187,7 +7187,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var inverted = (bool) _value.GetStruct()["inverted"].GetBool(); writeBuffer.WriteBit("", (inverted)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Control_Dimming ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Control_Dimming ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7199,7 +7199,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var stepcode = (byte) _value.GetStruct()["stepcode"].GetByte(); writeBuffer.WriteByte("", 3, (byte) (stepcode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Control_Blinds ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Control_Blinds ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7211,7 +7211,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var stepcode = (byte) _value.GetStruct()["stepcode"].GetByte(); writeBuffer.WriteByte("", 3, (byte) (stepcode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Char_ASCII ) { // STRING + } if( datapointType == KnxDatapointType.DPT_Char_ASCII ) { // STRING var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7220,7 +7220,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (string) _value.GetString(); writeBuffer.WriteString("", 8, "ASCII", (string) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Char_8859_1 ) { // STRING + } if( datapointType == KnxDatapointType.DPT_Char_8859_1 ) { // STRING var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7229,7 +7229,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (string) _value.GetString(); writeBuffer.WriteString("", 8, "ISO-8859-1", (string) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Scaling ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Scaling ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7238,7 +7238,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Angle ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Angle ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7247,7 +7247,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Percent_U8 ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Percent_U8 ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7256,7 +7256,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DecimalFactor ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DecimalFactor ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7265,7 +7265,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Tariff ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Tariff ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7274,7 +7274,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_1_Ucount ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Value_1_Ucount ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7283,7 +7283,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_FanStage ) { // USINT + } if( datapointType == KnxDatapointType.DPT_FanStage ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7292,7 +7292,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Percent_V8 ) { // SINT + } if( datapointType == KnxDatapointType.DPT_Percent_V8 ) { // SINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7301,7 +7301,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (sbyte) _value.GetSbyte(); writeBuffer.WriteSbyte("", 8, (sbyte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_1_Count ) { // SINT + } if( datapointType == KnxDatapointType.DPT_Value_1_Count ) { // SINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7310,7 +7310,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (sbyte) _value.GetSbyte(); writeBuffer.WriteSbyte("", 8, (sbyte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Status_Mode3 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Status_Mode3 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7334,7 +7334,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var mode = (byte) _value.GetStruct()["mode"].GetByte(); writeBuffer.WriteByte("", 3, (byte) (mode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_2_Ucount ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Value_2_Ucount ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7343,7 +7343,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TimePeriodMsec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodMsec ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7352,7 +7352,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TimePeriod10Msec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriod10Msec ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7361,7 +7361,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TimePeriod100Msec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriod100Msec ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7370,7 +7370,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TimePeriodSec ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodSec ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7379,7 +7379,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TimePeriodMin ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodMin ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7388,7 +7388,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TimePeriodHrs ) { // UINT + } if( datapointType == KnxDatapointType.DPT_TimePeriodHrs ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7397,7 +7397,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_PropDataType ) { // UINT + } if( datapointType == KnxDatapointType.DPT_PropDataType ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7406,7 +7406,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Length_mm ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Length_mm ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7415,7 +7415,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_UElCurrentmA ) { // UINT + } if( datapointType == KnxDatapointType.DPT_UElCurrentmA ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7424,7 +7424,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Brightness ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Brightness ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7433,7 +7433,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Absolute_Colour_Temperature ) { // UINT + } if( datapointType == KnxDatapointType.DPT_Absolute_Colour_Temperature ) { // UINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7442,7 +7442,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_2_Count ) { // INT + } if( datapointType == KnxDatapointType.DPT_Value_2_Count ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7451,7 +7451,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeMsec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeMsec ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7460,7 +7460,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaTime10Msec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTime10Msec ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7469,7 +7469,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaTime100Msec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTime100Msec ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7478,7 +7478,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeSec ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeSec ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7487,7 +7487,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeMin ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeMin ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7496,7 +7496,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaTimeHrs ) { // INT + } if( datapointType == KnxDatapointType.DPT_DeltaTimeHrs ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7505,7 +7505,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Percent_V16 ) { // INT + } if( datapointType == KnxDatapointType.DPT_Percent_V16 ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7514,7 +7514,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Rotation_Angle ) { // INT + } if( datapointType == KnxDatapointType.DPT_Rotation_Angle ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7523,7 +7523,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Length_m ) { // INT + } if( datapointType == KnxDatapointType.DPT_Length_m ) { // INT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7532,7 +7532,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Temp ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Temp ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7541,7 +7541,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Tempd ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Tempd ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7550,7 +7550,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Tempa ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Tempa ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7559,7 +7559,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Lux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Lux ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7568,7 +7568,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Wsp ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Wsp ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7577,7 +7577,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Pres ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Pres ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7586,7 +7586,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Humidity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Humidity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7595,7 +7595,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_AirQuality ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AirQuality ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7604,7 +7604,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_AirFlow ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AirFlow ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7613,7 +7613,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Time1 ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Time1 ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7622,7 +7622,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Time2 ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Time2 ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7631,7 +7631,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Volt ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volt ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7640,7 +7640,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Curr ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Curr ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7649,7 +7649,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_PowerDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_PowerDensity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7658,7 +7658,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_KelvinPerPercent ) { // REAL + } if( datapointType == KnxDatapointType.DPT_KelvinPerPercent ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7667,7 +7667,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Power ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Power ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7676,7 +7676,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Volume_Flow ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volume_Flow ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7685,7 +7685,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Rain_Amount ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Rain_Amount ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7694,7 +7694,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Temp_F ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Temp_F ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7703,7 +7703,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Wsp_kmh ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Wsp_kmh ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7712,7 +7712,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Absolute_Humidity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Absolute_Humidity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7721,7 +7721,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Concentration_ygm3 ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Concentration_ygm3 ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7730,7 +7730,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Coefficient ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Coefficient ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7739,7 +7739,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TimeOfDay ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TimeOfDay ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7761,7 +7761,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var seconds = (byte) _value.GetStruct()["seconds"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (seconds)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Date ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Date ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7782,7 +7782,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var year = (byte) _value.GetStruct()["year"].GetByte(); writeBuffer.WriteByte("", 7, (byte) (year)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_4_Ucount ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_Value_4_Ucount ) { // UDINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7791,7 +7791,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Sec ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Sec ) { // UDINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7800,7 +7800,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Min ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Min ) { // UDINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7809,7 +7809,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Hrs ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_LongTimePeriod_Hrs ) { // UDINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7818,7 +7818,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_VolumeLiquid_Litre ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_VolumeLiquid_Litre ) { // UDINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7827,7 +7827,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Volume_m_3 ) { // UDINT + } if( datapointType == KnxDatapointType.DPT_Volume_m_3 ) { // UDINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7836,7 +7836,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_4_Count ) { // DINT + } if( datapointType == KnxDatapointType.DPT_Value_4_Count ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7845,7 +7845,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_FlowRate_m3h ) { // DINT + } if( datapointType == KnxDatapointType.DPT_FlowRate_m3h ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7854,7 +7854,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7863,7 +7863,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ApparantEnergy ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ApparantEnergy ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7872,7 +7872,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ReactiveEnergy ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ReactiveEnergy ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7881,7 +7881,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy_kWh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy_kWh ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7890,7 +7890,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ApparantEnergy_kVAh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ApparantEnergy_kVAh ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7899,7 +7899,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_kVARh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_kVARh ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7908,7 +7908,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy_MWh ) { // DINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy_MWh ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7917,7 +7917,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LongDeltaTimeSec ) { // DINT + } if( datapointType == KnxDatapointType.DPT_LongDeltaTimeSec ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7926,7 +7926,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaVolumeLiquid_Litre ) { // DINT + } if( datapointType == KnxDatapointType.DPT_DeltaVolumeLiquid_Litre ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7935,7 +7935,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DeltaVolume_m_3 ) { // DINT + } if( datapointType == KnxDatapointType.DPT_DeltaVolume_m_3 ) { // DINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7944,7 +7944,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Acceleration ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Acceleration ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7953,7 +7953,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Acceleration_Angular ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Acceleration_Angular ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7962,7 +7962,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Activation_Energy ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Activation_Energy ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7971,7 +7971,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Activity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Activity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7980,7 +7980,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Mol ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Mol ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7989,7 +7989,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Amplitude ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Amplitude ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -7998,7 +7998,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_AngleRad ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AngleRad ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8007,7 +8007,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_AngleDeg ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_AngleDeg ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8016,7 +8016,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Angular_Momentum ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Angular_Momentum ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8025,7 +8025,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Angular_Velocity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Angular_Velocity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8034,7 +8034,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Area ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Area ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8043,7 +8043,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Capacitance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Capacitance ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8052,7 +8052,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Charge_DensitySurface ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Charge_DensitySurface ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8061,7 +8061,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Charge_DensityVolume ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Charge_DensityVolume ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8070,7 +8070,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Compressibility ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Compressibility ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8079,7 +8079,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Conductance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Conductance ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8088,7 +8088,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electrical_Conductivity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electrical_Conductivity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8097,7 +8097,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Density ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Density ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8106,7 +8106,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Charge ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Charge ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8115,7 +8115,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Current ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Current ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8124,7 +8124,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_CurrentDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_CurrentDensity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8133,7 +8133,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_DipoleMoment ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_DipoleMoment ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8142,7 +8142,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Displacement ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Displacement ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8151,7 +8151,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_FieldStrength ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_FieldStrength ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8160,7 +8160,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Flux ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8169,7 +8169,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_FluxDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_FluxDensity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8178,7 +8178,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Polarization ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Polarization ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8187,7 +8187,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_Potential ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_Potential ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8196,7 +8196,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electric_PotentialDifference ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electric_PotentialDifference ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8205,7 +8205,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_ElectromagneticMoment ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_ElectromagneticMoment ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8214,7 +8214,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Electromotive_Force ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Electromotive_Force ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8223,7 +8223,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Energy ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Energy ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8232,7 +8232,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Force ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Force ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8241,7 +8241,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Frequency ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Frequency ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8250,7 +8250,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Angular_Frequency ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Angular_Frequency ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8259,7 +8259,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Heat_Capacity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Heat_Capacity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8268,7 +8268,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Heat_FlowRate ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Heat_FlowRate ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8277,7 +8277,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Heat_Quantity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Heat_Quantity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8286,7 +8286,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Impedance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Impedance ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8295,7 +8295,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Length ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Length ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8304,7 +8304,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Light_Quantity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Light_Quantity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8313,7 +8313,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Luminance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Luminance ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8322,7 +8322,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Luminous_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Luminous_Flux ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8331,7 +8331,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Luminous_Intensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Luminous_Intensity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8340,7 +8340,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FieldStrength ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FieldStrength ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8349,7 +8349,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Flux ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8358,7 +8358,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FluxDensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_FluxDensity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8367,7 +8367,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Moment ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Moment ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8376,7 +8376,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Polarization ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetic_Polarization ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8385,7 +8385,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Magnetization ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Magnetization ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8394,7 +8394,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_MagnetomotiveForce ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_MagnetomotiveForce ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8403,7 +8403,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Mass ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Mass ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8412,7 +8412,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_MassFlux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_MassFlux ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8421,7 +8421,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Momentum ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Momentum ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8430,7 +8430,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleRad ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleRad ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8439,7 +8439,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleDeg ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Phase_AngleDeg ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8448,7 +8448,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Power ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Power ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8457,7 +8457,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Power_Factor ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Power_Factor ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8466,7 +8466,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Pressure ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Pressure ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8475,7 +8475,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Reactance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Reactance ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8484,7 +8484,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Resistance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Resistance ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8493,7 +8493,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Resistivity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Resistivity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8502,7 +8502,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_SelfInductance ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_SelfInductance ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8511,7 +8511,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_SolidAngle ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_SolidAngle ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8520,7 +8520,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Sound_Intensity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Sound_Intensity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8529,7 +8529,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Speed ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Speed ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8538,7 +8538,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Stress ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Stress ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8547,7 +8547,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Surface_Tension ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Surface_Tension ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8556,7 +8556,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Common_Temperature ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Common_Temperature ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8565,7 +8565,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Absolute_Temperature ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Absolute_Temperature ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8574,7 +8574,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_TemperatureDifference ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_TemperatureDifference ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8583,7 +8583,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Thermal_Capacity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Thermal_Capacity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8592,7 +8592,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Thermal_Conductivity ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Thermal_Conductivity ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8601,7 +8601,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_ThermoelectricPower ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_ThermoelectricPower ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8610,7 +8610,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Time ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Time ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8619,7 +8619,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Torque ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Torque ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8628,7 +8628,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Volume ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volume ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8637,7 +8637,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Volume_Flux ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Volume_Flux ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8646,7 +8646,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Weight ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Weight ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8655,7 +8655,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_Work ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_Work ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8664,7 +8664,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Value_ApparentPower ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Value_ApparentPower ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8673,7 +8673,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Volume_Flux_Meter ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Volume_Flux_Meter ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8682,7 +8682,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Volume_Flux_ls ) { // REAL + } if( datapointType == KnxDatapointType.DPT_Volume_Flux_ls ) { // REAL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8691,7 +8691,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Access_Data ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Access_Data ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8730,7 +8730,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var indexOfAccessIdentificationCode = (byte) _value.GetStruct()["indexOfAccessIdentificationCode"].GetByte(); writeBuffer.WriteByte("", 4, (byte) (indexOfAccessIdentificationCode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_String_ASCII ) { // STRING + } if( datapointType == KnxDatapointType.DPT_String_ASCII ) { // STRING var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8739,7 +8739,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (string) _value.GetString(); writeBuffer.WriteString("", 112, "ASCII", (string) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_String_8859_1 ) { // STRING + } if( datapointType == KnxDatapointType.DPT_String_8859_1 ) { // STRING var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8748,7 +8748,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (string) _value.GetString(); writeBuffer.WriteString("", 112, "ISO-8859-1", (string) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SceneNumber ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SceneNumber ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8757,7 +8757,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 6, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SceneControl ) { // Struct + } if( datapointType == KnxDatapointType.DPT_SceneControl ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8771,7 +8771,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var sceneNumber = (byte) _value.GetStruct()["sceneNumber"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (sceneNumber)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DateTime ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DateTime ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8835,7 +8835,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat // Reserved Field writeBuffer.WriteByte("", 7, (byte) 0x00); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SCLOMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SCLOMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8844,7 +8844,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BuildingMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BuildingMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8853,7 +8853,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_OccMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_OccMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8862,7 +8862,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Priority ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Priority ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8871,7 +8871,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LightApplicationMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LightApplicationMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8880,7 +8880,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ApplicationArea ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ApplicationArea ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8889,7 +8889,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_AlarmClassType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_AlarmClassType ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8898,7 +8898,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_PSUMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_PSUMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8907,7 +8907,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ErrorClass_System ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ErrorClass_System ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8916,7 +8916,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ErrorClass_HVAC ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ErrorClass_HVAC ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8925,7 +8925,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Time_Delay ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Time_Delay ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8934,7 +8934,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Beaufort_Wind_Force_Scale ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Beaufort_Wind_Force_Scale ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8943,7 +8943,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SensorSelect ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SensorSelect ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8952,7 +8952,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ActuatorConnectType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ActuatorConnectType ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8961,7 +8961,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Cloud_Cover ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Cloud_Cover ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8970,7 +8970,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_PowerReturnMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_PowerReturnMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8979,7 +8979,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_FuelType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_FuelType ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8988,7 +8988,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BurnerType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BurnerType ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -8997,7 +8997,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_HVACMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVACMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9006,7 +9006,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DHWMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DHWMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9015,7 +9015,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LoadPriority ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LoadPriority ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9024,7 +9024,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_HVACContrMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVACContrMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9033,7 +9033,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_HVACEmergMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVACEmergMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9042,7 +9042,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ChangeoverMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ChangeoverMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9051,7 +9051,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ValveMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ValveMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9060,7 +9060,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DamperMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DamperMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9069,7 +9069,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_HeaterMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HeaterMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9078,7 +9078,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_FanMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_FanMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9087,7 +9087,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_MasterSlaveMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_MasterSlaveMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9096,7 +9096,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusRoomSetp ) { // USINT + } if( datapointType == KnxDatapointType.DPT_StatusRoomSetp ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9105,7 +9105,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Metering_DeviceType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Metering_DeviceType ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9114,7 +9114,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_HumDehumMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HumDehumMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9123,7 +9123,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_EnableHCStage ) { // USINT + } if( datapointType == KnxDatapointType.DPT_EnableHCStage ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9132,7 +9132,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ADAType ) { // USINT + } if( datapointType == KnxDatapointType.DPT_ADAType ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9141,7 +9141,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BackupMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BackupMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9150,7 +9150,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StartSynchronization ) { // USINT + } if( datapointType == KnxDatapointType.DPT_StartSynchronization ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9159,7 +9159,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Behaviour_Lock_Unlock ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Behaviour_Lock_Unlock ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9168,7 +9168,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Behaviour_Bus_Power_Up_Down ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Behaviour_Bus_Power_Up_Down ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9177,7 +9177,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DALI_Fade_Time ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DALI_Fade_Time ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9186,7 +9186,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BlinkingMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BlinkingMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9195,7 +9195,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LightControlMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LightControlMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9204,7 +9204,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SwitchPBModel ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SwitchPBModel ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9213,7 +9213,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_PBAction ) { // USINT + } if( datapointType == KnxDatapointType.DPT_PBAction ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9222,7 +9222,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DimmPBModel ) { // USINT + } if( datapointType == KnxDatapointType.DPT_DimmPBModel ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9231,7 +9231,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SwitchOnMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SwitchOnMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9240,7 +9240,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LoadTypeSet ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LoadTypeSet ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9249,7 +9249,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LoadTypeDetected ) { // USINT + } if( datapointType == KnxDatapointType.DPT_LoadTypeDetected ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9258,7 +9258,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Converter_Test_Control ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Converter_Test_Control ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9267,7 +9267,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Converter_Control ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Converter_Control ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9276,7 +9276,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SABExcept_Behaviour ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SABExcept_Behaviour ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9285,7 +9285,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SABBehaviour_Lock_Unlock ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SABBehaviour_Lock_Unlock ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9294,7 +9294,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SSSBMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_SSSBMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9303,7 +9303,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BlindsControlMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_BlindsControlMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9312,7 +9312,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_CommMode ) { // USINT + } if( datapointType == KnxDatapointType.DPT_CommMode ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9321,7 +9321,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_AddInfoTypes ) { // USINT + } if( datapointType == KnxDatapointType.DPT_AddInfoTypes ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9330,7 +9330,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_RF_ModeSelect ) { // USINT + } if( datapointType == KnxDatapointType.DPT_RF_ModeSelect ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9339,7 +9339,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_RF_FilterSelect ) { // USINT + } if( datapointType == KnxDatapointType.DPT_RF_FilterSelect ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9348,7 +9348,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusGen ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusGen ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9371,7 +9371,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var correspondingDatapointValueIsOutOfService = (bool) _value.GetStruct()["correspondingDatapointValueIsOutOfService"].GetBool(); writeBuffer.WriteBit("", (correspondingDatapointValueIsOutOfService)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Device_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Device_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9388,7 +9388,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var theUserApplicationIsStopped = (bool) _value.GetStruct()["theUserApplicationIsStopped"].GetBool(); writeBuffer.WriteBit("", (theUserApplicationIsStopped)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ForceSign ) { // Struct + } if( datapointType == KnxDatapointType.DPT_ForceSign ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9418,7 +9418,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var forcerequest = (bool) _value.GetStruct()["forcerequest"].GetBool(); writeBuffer.WriteBit("", (forcerequest)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ForceSignCool ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_ForceSignCool ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9427,7 +9427,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusRHC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusRHC ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9457,7 +9457,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var fault = (bool) _value.GetStruct()["fault"].GetBool(); writeBuffer.WriteBit("", (fault)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusSDHWC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusSDHWC ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9474,7 +9474,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var fault = (bool) _value.GetStruct()["fault"].GetBool(); writeBuffer.WriteBit("", (fault)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_FuelTypeSet ) { // Struct + } if( datapointType == KnxDatapointType.DPT_FuelTypeSet ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9491,7 +9491,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var oil = (bool) _value.GetStruct()["oil"].GetBool(); writeBuffer.WriteBit("", (oil)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusRCC ) { // BOOL + } if( datapointType == KnxDatapointType.DPT_StatusRCC ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9500,7 +9500,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusAHU ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusAHU ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9520,7 +9520,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var fault = (bool) _value.GetStruct()["fault"].GetBool(); writeBuffer.WriteBit("", (fault)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTSM ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTSM ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9543,7 +9543,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var effectiveValueOfTheWindowStatus = (bool) _value.GetStruct()["effectiveValueOfTheWindowStatus"].GetBool(); writeBuffer.WriteBit("", (effectiveValueOfTheWindowStatus)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LightActuatorErrorInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_LightActuatorErrorInfo ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9572,7 +9572,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var loaddetectionerror = (bool) _value.GetStruct()["loaddetectionerror"].GetBool(); writeBuffer.WriteBit("", (loaddetectionerror)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_RF_ModeInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_RF_ModeInfo ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9589,7 +9589,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var asynchronous = (bool) _value.GetStruct()["asynchronous"].GetBool(); writeBuffer.WriteBit("", (asynchronous)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_RF_FilterInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_RF_FilterInfo ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9606,7 +9606,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var doaAndKnxSn = (bool) _value.GetStruct()["doaAndKnxSn"].GetBool(); writeBuffer.WriteBit("", (doaAndKnxSn)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Channel_Activation_8 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Channel_Activation_8 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9636,7 +9636,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var activationStateOfChannel8 = (bool) _value.GetStruct()["activationStateOfChannel8"].GetBool(); writeBuffer.WriteBit("", (activationStateOfChannel8)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusDHWC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusDHWC ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9668,7 +9668,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var fault = (bool) _value.GetStruct()["fault"].GetBool(); writeBuffer.WriteBit("", (fault)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusRHCC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusRHCC ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9721,7 +9721,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var fault = (bool) _value.GetStruct()["fault"].GetBool(); writeBuffer.WriteBit("", (fault)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_CombinedStatus_HVA ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedStatus_HVA ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9756,7 +9756,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var currentValvePosition = (bool) _value.GetStruct()["currentValvePosition"].GetBool(); writeBuffer.WriteBit("", (currentValvePosition)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTC ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedStatus_RTC ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9791,7 +9791,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var generalFailureInformation = (bool) _value.GetStruct()["generalFailureInformation"].GetBool(); writeBuffer.WriteBit("", (generalFailureInformation)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Media ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Media ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9815,7 +9815,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat // Reserved Field writeBuffer.WriteByte("", 1, (byte) 0x00); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Channel_Activation_16 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Channel_Activation_16 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9869,7 +9869,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var activationStateOfChannel16 = (bool) _value.GetStruct()["activationStateOfChannel16"].GetBool(); writeBuffer.WriteBit("", (activationStateOfChannel16)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_OnOffAction ) { // USINT + } if( datapointType == KnxDatapointType.DPT_OnOffAction ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9878,7 +9878,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 2, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Alarm_Reaction ) { // USINT + } if( datapointType == KnxDatapointType.DPT_Alarm_Reaction ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9887,7 +9887,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 2, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_UpDown_Action ) { // USINT + } if( datapointType == KnxDatapointType.DPT_UpDown_Action ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9896,7 +9896,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 2, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_HVAC_PB_Action ) { // USINT + } if( datapointType == KnxDatapointType.DPT_HVAC_PB_Action ) { // USINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9905,7 +9905,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 2, (byte) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DoubleNibble ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DoubleNibble ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9917,7 +9917,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var nak = (byte) _value.GetStruct()["nak"].GetByte(); writeBuffer.WriteByte("", 4, (byte) (nak)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_SceneInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_SceneInfo ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -9931,7 +9931,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var scenenumber = (byte) _value.GetStruct()["scenenumber"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (scenenumber)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_CombinedInfoOnOff ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedInfoOnOff ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10033,7 +10033,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var infoOnOffOutput1 = (bool) _value.GetStruct()["infoOnOffOutput1"].GetBool(); writeBuffer.WriteBit("", (infoOnOffOutput1)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ActiveEnergy_V64 ) { // LINT + } if( datapointType == KnxDatapointType.DPT_ActiveEnergy_V64 ) { // LINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10042,7 +10042,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (long) _value.GetLong(); writeBuffer.WriteLong("", 64, (long) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ApparantEnergy_V64 ) { // LINT + } if( datapointType == KnxDatapointType.DPT_ApparantEnergy_V64 ) { // LINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10051,7 +10051,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (long) _value.GetLong(); writeBuffer.WriteLong("", 64, (long) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_V64 ) { // LINT + } if( datapointType == KnxDatapointType.DPT_ReactiveEnergy_V64 ) { // LINT var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10060,7 +10060,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (long) _value.GetLong(); writeBuffer.WriteLong("", 64, (long) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Channel_Activation_24 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Channel_Activation_24 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10138,7 +10138,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var activationStateOfChannel24 = (bool) _value.GetStruct()["activationStateOfChannel24"].GetBool(); writeBuffer.WriteBit("", (activationStateOfChannel24)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_HVACModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_HVACModeNext ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10150,7 +10150,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var hvacMode = (byte) _value.GetStruct()["hvacMode"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (hvacMode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DHWModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DHWModeNext ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10162,7 +10162,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var dhwMode = (byte) _value.GetStruct()["dhwMode"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (dhwMode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_OccModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_OccModeNext ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10174,7 +10174,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var occupancyMode = (byte) _value.GetStruct()["occupancyMode"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (occupancyMode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_BuildingModeNext ) { // Struct + } if( datapointType == KnxDatapointType.DPT_BuildingModeNext ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10186,7 +10186,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var buildingMode = (byte) _value.GetStruct()["buildingMode"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (buildingMode)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusLightingActuator ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusLightingActuator ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10219,7 +10219,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var actualvalue = (byte) _value.GetStruct()["actualvalue"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (actualvalue)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Version ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Version ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10234,7 +10234,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var revisionNumber = (byte) _value.GetStruct()["revisionNumber"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (revisionNumber)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_AlarmInfo ) { // Struct + } if( datapointType == KnxDatapointType.DPT_AlarmInfo ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10277,7 +10277,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var inalarm = (bool) _value.GetStruct()["inalarm"].GetBool(); writeBuffer.WriteBit("", (inalarm)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_3 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_3 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10292,7 +10292,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var tempsetpeco = (float) _value.GetStruct()["tempsetpeco"].GetFloat(); writeBuffer.WriteFloat("", 16,(tempsetpeco)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_3 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_3 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10307,7 +10307,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var tempsetpshifteco = (float) _value.GetStruct()["tempsetpshifteco"].GetFloat(); writeBuffer.WriteFloat("", 16,(tempsetpshifteco)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Scaling_Speed ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Scaling_Speed ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10319,7 +10319,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var percent = (byte) _value.GetStruct()["percent"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (percent)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Scaling_Step_Time ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Scaling_Step_Time ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10331,7 +10331,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var percent = (byte) _value.GetStruct()["percent"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (percent)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_MeteringValue ) { // Struct + } if( datapointType == KnxDatapointType.DPT_MeteringValue ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10360,7 +10360,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var outofservice = (bool) _value.GetStruct()["outofservice"].GetBool(); writeBuffer.WriteBit("", (outofservice)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_MBus_Address ) { // Struct + } if( datapointType == KnxDatapointType.DPT_MBus_Address ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10378,7 +10378,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var medium = (byte) _value.GetStruct()["medium"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (medium)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Colour_RGB ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Colour_RGB ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10393,7 +10393,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var b = (byte) _value.GetStruct()["b"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (b)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_LanguageCodeAlpha2_ASCII ) { // STRING + } if( datapointType == KnxDatapointType.DPT_LanguageCodeAlpha2_ASCII ) { // STRING var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10402,7 +10402,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var value = (string) _value.GetString(); writeBuffer.WriteString("", 16, "ASCII", (string) (value)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Tariff_ActiveEnergy ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Tariff_ActiveEnergy ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10422,7 +10422,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var tariffvalidity = (bool) _value.GetStruct()["tariffvalidity"].GetBool(); writeBuffer.WriteBit("", (tariffvalidity)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Prioritised_Mode_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Prioritised_Mode_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10437,7 +10437,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var modeLevel = (byte) _value.GetStruct()["modeLevel"].GetByte(); writeBuffer.WriteByte("", 4, (byte) (modeLevel)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DALI_Control_Gear_Diagnostic ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DALI_Control_Gear_Diagnostic ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10463,7 +10463,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var daliDeviceAddressOrDaliGroupAddress = (byte) _value.GetStruct()["daliDeviceAddressOrDaliGroupAddress"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (daliDeviceAddressOrDaliGroupAddress)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_DALI_Diagnostics ) { // Struct + } if( datapointType == KnxDatapointType.DPT_DALI_Diagnostics ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10478,7 +10478,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var deviceAddress = (byte) _value.GetStruct()["deviceAddress"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (deviceAddress)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_CombinedPosition ) { // Struct + } if( datapointType == KnxDatapointType.DPT_CombinedPosition ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10498,7 +10498,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var validityHeightPosition = (bool) _value.GetStruct()["validityHeightPosition"].GetBool(); writeBuffer.WriteBit("", (validityHeightPosition)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_StatusSAB ) { // Struct + } if( datapointType == KnxDatapointType.DPT_StatusSAB ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10551,7 +10551,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var validitySlatsPos = (bool) _value.GetStruct()["validitySlatsPos"].GetBool(); writeBuffer.WriteBit("", (validitySlatsPos)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Colour_xyY ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Colour_xyY ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10574,7 +10574,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var validityBrightness = (bool) _value.GetStruct()["validityBrightness"].GetBool(); writeBuffer.WriteBit("", (validityBrightness)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Converter_Status ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Converter_Status ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10603,7 +10603,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var converterFailure = (byte) _value.GetStruct()["converterFailure"].GetByte(); writeBuffer.WriteByte("", 2, (byte) (converterFailure)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Converter_Test_Result ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Converter_Test_Result ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10637,7 +10637,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var lpdtr = (byte) _value.GetStruct()["lpdtr"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (lpdtr)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Battery_Info ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Battery_Info ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10657,7 +10657,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var batteryChargeLevel = (byte) _value.GetStruct()["batteryChargeLevel"].GetByte(); writeBuffer.WriteByte("", 8, (byte) (batteryChargeLevel)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Transition ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Transition ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10683,7 +10683,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var validityOfTheAbsoluteBrightness = (bool) _value.GetStruct()["validityOfTheAbsoluteBrightness"].GetBool(); writeBuffer.WriteBit("", (validityOfTheAbsoluteBrightness)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Control ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Brightness_Colour_Temperature_Control ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10713,7 +10713,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var cbAndStepCodeBrightnessValidity = (bool) _value.GetStruct()["cbAndStepCodeBrightnessValidity"].GetBool(); writeBuffer.WriteBit("", (cbAndStepCodeBrightnessValidity)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Colour_RGBW ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Colour_RGBW ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10747,7 +10747,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var mw = (bool) _value.GetStruct()["mw"].GetBool(); writeBuffer.WriteBit("", (mw)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Relative_Control_RGBW ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Relative_Control_RGBW ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10799,7 +10799,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var stepCodeColourRed = (byte) _value.GetStruct()["stepCodeColourRed"].GetByte(); writeBuffer.WriteByte("", 3, (byte) (stepCodeColourRed)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_Relative_Control_RGB ) { // Struct + } if( datapointType == KnxDatapointType.DPT_Relative_Control_RGB ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10829,7 +10829,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var stepCodeColourRed = (byte) _value.GetStruct()["stepCodeColourRed"].GetByte(); writeBuffer.WriteByte("", 3, (byte) (stepCodeColourRed)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_GeographicalLocation ) { // Struct + } if( datapointType == KnxDatapointType.DPT_GeographicalLocation ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10841,7 +10841,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var latitude = (float) _value.GetStruct()["latitude"].GetFloat(); writeBuffer.WriteFloat("", 32,(latitude)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_4 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetF16_4 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10859,7 +10859,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var roomTemperatureSetpointBuildingProtection = (float) _value.GetStruct()["roomTemperatureSetpointBuildingProtection"].GetFloat(); writeBuffer.WriteFloat("", 16,(roomTemperatureSetpointBuildingProtection)); return writeBuffer; - } else if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_4 ) { // Struct + } if( datapointType == KnxDatapointType.DPT_TempRoomSetpSetShiftF16_4 ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -10877,7 +10877,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxDatapointType dat var roomTemperatureSetpointShiftBuildingProtection = (float) _value.GetStruct()["roomTemperatureSetpointShiftBuildingProtection"].GetFloat(); writeBuffer.WriteFloat("", 16,(roomTemperatureSetpointShiftBuildingProtection)); return writeBuffer; - } + } return null; } } diff --git a/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxProperty.cs b/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxProperty.cs index 644804fa494..702ee476986 100644 --- a/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxProperty.cs +++ b/plc4net/drivers/knxnetip/src/drivers/knxnetip/readwrite/model/KnxProperty.cs @@ -50,43 +50,43 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( propertyType == KnxPropertyDataType.PDT_CHAR ) { // SINT + } if( propertyType == KnxPropertyDataType.PDT_CHAR ) { // SINT // Simple Field (value) var value = readBuffer.ReadSbyte("", 8); return new PlcSINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_CHAR ) { // USINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_CHAR ) { // USINT // Simple Field (value) var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_INT ) { // INT + } if( propertyType == KnxPropertyDataType.PDT_INT ) { // INT // Simple Field (value) var value = readBuffer.ReadShort("", 16); return new PlcINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT && dataLengthInBytes == 4 ) { // UDINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT && dataLengthInBytes == 4 ) { // UDINT // Simple Field (value) var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT ) { // UINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT ) { // UINT // Simple Field (value) var value = readBuffer.ReadUshort("", 16); return new PlcUINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_KNX_FLOAT ) { // REAL + } if( propertyType == KnxPropertyDataType.PDT_KNX_FLOAT ) { // REAL // Simple Field (value) var value = readBuffer.ReadFloat("", 16); return new PlcREAL(value); - } else if( propertyType == KnxPropertyDataType.PDT_DATE ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_DATE ) { // Struct // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -124,7 +124,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var _map = new Dictionary(); return new PlcStruct(_map); - } else if( propertyType == KnxPropertyDataType.PDT_TIME ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_TIME ) { // Struct // Simple Field (day) var day = readBuffer.ReadByte("", 3); @@ -157,54 +157,38 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var _map = new Dictionary(); return new PlcStruct(_map); - } else if( propertyType == KnxPropertyDataType.PDT_LONG ) { // DINT + } if( propertyType == KnxPropertyDataType.PDT_LONG ) { // DINT // Simple Field (value) var value = readBuffer.ReadInt("", 32); return new PlcDINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_LONG ) { // UDINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_LONG ) { // UDINT // Simple Field (value) var value = readBuffer.ReadUint("", 32); return new PlcUDINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_FLOAT ) { // REAL + } if( propertyType == KnxPropertyDataType.PDT_FLOAT ) { // REAL // Simple Field (value) var value = readBuffer.ReadFloat("", 32); return new PlcREAL(value); - } else if( propertyType == KnxPropertyDataType.PDT_DOUBLE ) { // LREAL + } if( propertyType == KnxPropertyDataType.PDT_DOUBLE ) { // LREAL // Simple Field (value) var value = readBuffer.ReadDouble("", 64); return new PlcLREAL(value); - } else if( propertyType == KnxPropertyDataType.PDT_CHAR_BLOCK ) { // List + } if( propertyType == KnxPropertyDataType.PDT_CHAR_BLOCK ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 10; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 10); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_POLL_GROUP_SETTINGS ) { // Struct + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_POLL_GROUP_SETTINGS ) { // Struct // Array field (groupAddress) - // Count array - List groupAddress; - { - var itemCount = 2; - groupAddress = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - groupAddress.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var groupAddress = readBuffer.ReadByteArray("", 2); // Simple Field (disable) var disable = readBuffer.ReadBit(""); @@ -221,23 +205,15 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var pollingSoftNr = readBuffer.ReadByte("", 4); var _map = new Dictionary(); - _map["groupAddress"] = new PlcList(groupAddress); + _map["groupAddress"] = new PlcRawByteArray(groupAddress); return new PlcStruct(_map); - } else if( propertyType == KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK ) { // List + } if( propertyType == KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 5; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 5); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_DATE_TIME ) { // Struct + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_DATE_TIME ) { // Struct // Simple Field (year) var year = readBuffer.ReadByte("", 8); @@ -330,267 +306,107 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var _map = new Dictionary(); return new PlcStruct(_map); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_01 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_01 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 1; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 1); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_02 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_02 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 2; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 2); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_03 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_03 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 3; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 3); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_04 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_04 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 4; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 4); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_05 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_05 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 5; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 5); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_06 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_06 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 6; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 6); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_07 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_07 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 7; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 7); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_08 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_08 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 8; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 8); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_09 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_09 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 9; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 9); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_10 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_10 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 10; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 10); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_11 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_11 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 11; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 11); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_12 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_12 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 12; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 12); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_13 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_13 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 13; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 13); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_14 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_14 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 14; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 14); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_15 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_15 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 15; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 15); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_16 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_16 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 16; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 16); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_17 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_17 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 17; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 17); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_18 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_18 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 18; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 18); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_19 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_19 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 19; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 19); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_20 ) { // List + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_20 ) { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = 20; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", 20); - return new PlcList(value); - } else if( propertyType == KnxPropertyDataType.PDT_VERSION ) { // Struct + return new PlcRawByteArray(value); + } if( propertyType == KnxPropertyDataType.PDT_VERSION ) { // Struct // Simple Field (magicNumber) var magicNumber = readBuffer.ReadByte("", 5); @@ -604,7 +420,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var _map = new Dictionary(); return new PlcStruct(_map); - } else if( propertyType == KnxPropertyDataType.PDT_ALARM_INFO ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_ALARM_INFO ) { // Struct // Simple Field (logNumber) var logNumber = readBuffer.ReadByte("", 8); @@ -658,7 +474,7 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var _map = new Dictionary(); return new PlcStruct(_map); - } else if( propertyType == KnxPropertyDataType.PDT_BINARY_INFORMATION ) { // BOOL + } if( propertyType == KnxPropertyDataType.PDT_BINARY_INFORMATION ) { // BOOL // Reserved Field (Compartmentalized so the "reserved" variable can't leak) { @@ -672,44 +488,36 @@ public static IPlcValue StaticParse(ReadBuffer readBuffer, KnxPropertyDataType p var value = readBuffer.ReadBit(""); return new PlcBOOL(value); - } else if( propertyType == KnxPropertyDataType.PDT_BITSET8 ) { // BYTE + } if( propertyType == KnxPropertyDataType.PDT_BITSET8 ) { // BYTE // Simple Field (value) var value = readBuffer.ReadByte("", 8); return new PlcBYTE(value); - } else if( propertyType == KnxPropertyDataType.PDT_BITSET16 ) { // WORD + } if( propertyType == KnxPropertyDataType.PDT_BITSET16 ) { // WORD // Simple Field (value) var value = readBuffer.ReadUshort("", 16); return new PlcWORD(value); - } else if( propertyType == KnxPropertyDataType.PDT_ENUM8 ) { // USINT + } if( propertyType == KnxPropertyDataType.PDT_ENUM8 ) { // USINT // Simple Field (value) var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else if( propertyType == KnxPropertyDataType.PDT_SCALING ) { // USINT + } if( propertyType == KnxPropertyDataType.PDT_SCALING ) { // USINT // Simple Field (value) var value = readBuffer.ReadByte("", 8); return new PlcUSINT(value); - } else { // List + } { // RawByteArray // Array field (value) - // Count array - List value; - { - var itemCount = dataLengthInBytes; - value = new List(); - for (var curItem = 0; curItem < itemCount; curItem++) { - value.Add(new PlcBYTE(readBuffer.ReadByte("", 8))); - } - } + var value = readBuffer.ReadByteArray("", dataLengthInBytes); - return new PlcList(value); - } + return new PlcRawByteArray(value); + } } public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType propertyType, byte dataLengthInBytes) @@ -728,49 +536,49 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_CHAR ) { // SINT + } if( propertyType == KnxPropertyDataType.PDT_CHAR ) { // SINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (sbyte) _value.GetSbyte(); writeBuffer.WriteSbyte("", 8, (sbyte) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_CHAR ) { // USINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_CHAR ) { // USINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_INT ) { // INT + } if( propertyType == KnxPropertyDataType.PDT_INT ) { // INT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (short) _value.GetShort(); writeBuffer.WriteShort("", 16, (short) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT && dataLengthInBytes == 4 ) { // UDINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT && dataLengthInBytes == 4 ) { // UDINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT ) { // UINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_INT ) { // UINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_KNX_FLOAT ) { // REAL + } if( propertyType == KnxPropertyDataType.PDT_KNX_FLOAT ) { // REAL var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 16,(value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_DATE ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_DATE ) { // Struct var writeBuffer = new WriteBuffer(); // Reserved Field @@ -789,7 +597,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType var year = (byte) _value.GetStruct()["year"].GetByte(); writeBuffer.WriteByte("", 7, (byte) (year)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_TIME ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_TIME ) { // Struct var writeBuffer = new WriteBuffer(); // Simple Field (day) @@ -809,35 +617,35 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType var seconds = (byte) _value.GetStruct()["seconds"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (seconds)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_LONG ) { // DINT + } if( propertyType == KnxPropertyDataType.PDT_LONG ) { // DINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (int) _value.GetInt(); writeBuffer.WriteInt("", 32, (int) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_LONG ) { // UDINT + } if( propertyType == KnxPropertyDataType.PDT_UNSIGNED_LONG ) { // UDINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (uint) _value.GetUint(); writeBuffer.WriteUint("", 32, (uint) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_FLOAT ) { // REAL + } if( propertyType == KnxPropertyDataType.PDT_FLOAT ) { // REAL var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (float) _value.GetFloat(); writeBuffer.WriteFloat("", 32,(value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_DOUBLE ) { // LREAL + } if( propertyType == KnxPropertyDataType.PDT_DOUBLE ) { // LREAL var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (double) _value.GetDouble(); writeBuffer.WriteDouble("", 64,(value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_CHAR_BLOCK ) { // List + } if( propertyType == KnxPropertyDataType.PDT_CHAR_BLOCK ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -848,7 +656,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_POLL_GROUP_SETTINGS ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_POLL_GROUP_SETTINGS ) { // Struct var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -867,7 +675,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType var pollingSoftNr = (byte) _value.GetStruct()["pollingSoftNr"].GetByte(); writeBuffer.WriteByte("", 4, (byte) (pollingSoftNr)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK ) { // List + } if( propertyType == KnxPropertyDataType.PDT_SHORT_CHAR_BLOCK ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -878,7 +686,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_DATE_TIME ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_DATE_TIME ) { // Struct var writeBuffer = new WriteBuffer(); // Simple Field (year) @@ -940,7 +748,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType // Reserved Field writeBuffer.WriteByte("", 7, (byte) 0x00); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_01 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_01 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -951,7 +759,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_02 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_02 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -962,7 +770,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_03 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_03 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -973,7 +781,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_04 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_04 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -984,7 +792,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_05 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_05 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -995,7 +803,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_06 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_06 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1006,7 +814,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_07 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_07 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1017,7 +825,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_08 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_08 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1028,7 +836,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_09 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_09 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1039,7 +847,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_10 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_10 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1050,7 +858,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_11 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_11 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1061,7 +869,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_12 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_12 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1072,7 +880,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_13 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_13 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1083,7 +891,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_14 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_14 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1094,7 +902,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_15 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_15 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1105,7 +913,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_16 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_16 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1116,7 +924,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_17 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_17 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1127,7 +935,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_18 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_18 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1138,7 +946,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_19 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_19 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1149,7 +957,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_GENERIC_20 ) { // List + } if( propertyType == KnxPropertyDataType.PDT_GENERIC_20 ) { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1160,7 +968,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_VERSION ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_VERSION ) { // Struct var writeBuffer = new WriteBuffer(); // Simple Field (magicNumber) @@ -1173,7 +981,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType var revisionNumber = (byte) _value.GetStruct()["revisionNumber"].GetByte(); writeBuffer.WriteByte("", 6, (byte) (revisionNumber)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_ALARM_INFO ) { // Struct + } if( propertyType == KnxPropertyDataType.PDT_ALARM_INFO ) { // Struct var writeBuffer = new WriteBuffer(); // Simple Field (logNumber) @@ -1214,7 +1022,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType var inalarm = (bool) _value.GetStruct()["inalarm"].GetBool(); writeBuffer.WriteBit("", (inalarm)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_BINARY_INFORMATION ) { // BOOL + } if( propertyType == KnxPropertyDataType.PDT_BINARY_INFORMATION ) { // BOOL var writeBuffer = new WriteBuffer(); // Reserved Field @@ -1223,35 +1031,35 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType var value = (bool) _value.GetBool(); writeBuffer.WriteBit("", (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_BITSET8 ) { // BYTE + } if( propertyType == KnxPropertyDataType.PDT_BITSET8 ) { // BYTE var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_BITSET16 ) { // WORD + } if( propertyType == KnxPropertyDataType.PDT_BITSET16 ) { // WORD var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (ushort) _value.GetUshort(); writeBuffer.WriteUshort("", 16, (ushort) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_ENUM8 ) { // USINT + } if( propertyType == KnxPropertyDataType.PDT_ENUM8 ) { // USINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else if( propertyType == KnxPropertyDataType.PDT_SCALING ) { // USINT + } if( propertyType == KnxPropertyDataType.PDT_SCALING ) { // USINT var writeBuffer = new WriteBuffer(); // Simple Field (value) var value = (byte) _value.GetByte(); writeBuffer.WriteByte("", 8, (byte) (value)); return writeBuffer; - } else { // List + } { // RawByteArray var writeBuffer = new WriteBuffer(); PlcList values = (PlcList) _value; @@ -1262,7 +1070,7 @@ public static WriteBuffer StaticSerialize(IPlcValue _value, KnxPropertyDataType } return writeBuffer; - } + } } } diff --git a/plc4net/spi/spi/generation/ReadBuffer.cs b/plc4net/spi/spi/generation/ReadBuffer.cs index 72ee7c09d5b..28140d29020 100644 --- a/plc4net/spi/spi/generation/ReadBuffer.cs +++ b/plc4net/spi/spi/generation/ReadBuffer.cs @@ -197,5 +197,10 @@ public string ReadString(String logicalName, int bitLength, Encoding encoding) throw new NotImplementedException("This encoding is currently not supported"); } + public byte[] ReadByteArray(String logicalName, int bitLength) + { + throw new NotImplementedException("This function is currently not supported"); + } + } } \ No newline at end of file diff --git a/plc4net/spi/spi/model/values/PlcRawByteArray.cs b/plc4net/spi/spi/model/values/PlcRawByteArray.cs new file mode 100644 index 00000000000..3585bfccd7b --- /dev/null +++ b/plc4net/spi/spi/model/values/PlcRawByteArray.cs @@ -0,0 +1,50 @@ +// +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +namespace org.apache.plc4net.spi.model.values +{ + public class PlcRawByteArray : PlcValueAdapter + { + private byte[] value; + + public PlcRawByteArray(byte[] value) + { + this.value = value; + } + + protected bool Equals(PlcRawByteArray other) + { + return value == other.value; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) return false; + if (ReferenceEquals(this, obj)) return true; + if (obj.GetType() != this.GetType()) return false; + return value.Equals(obj as byte[]); + } + + public override int GetHashCode() + { + return value.GetHashCode(); + } + + } +} \ No newline at end of file diff --git a/plc4py/plc4py/protocols/modbus/readwrite/DataItem.py b/plc4py/plc4py/protocols/modbus/readwrite/DataItem.py index 1d2e54494a6..2eec7384365 100644 --- a/plc4py/plc4py/protocols/modbus/readwrite/DataItem.py +++ b/plc4py/plc4py/protocols/modbus/readwrite/DataItem.py @@ -58,7 +58,7 @@ def static_parse( if ( data_type == ModbusDataType.BOOL and number_of_values == int(1) - and big_endian == true + and big_endian == True ): # BOOL # Reserved Field (Compartmentalized so the "reserved" variable can't leak) @@ -79,7 +79,7 @@ def static_parse( if ( data_type == ModbusDataType.BOOL and number_of_values == int(1) - and big_endian == false + and big_endian == False ): # BOOL # Reserved Field (Compartmentalized so the "reserved" variable can't leak) @@ -120,7 +120,7 @@ def static_parse( if ( data_type == ModbusDataType.BYTE and number_of_values == int(1) - and big_endian == true + and big_endian == True ): # BYTE # Reserved Field (Compartmentalized so the "reserved" variable can't leak) @@ -141,7 +141,7 @@ def static_parse( if ( data_type == ModbusDataType.BYTE and number_of_values == int(1) - and big_endian == false + and big_endian == False ): # BYTE # Simple Field (value) @@ -189,7 +189,7 @@ def static_parse( if ( data_type == ModbusDataType.SINT and number_of_values == int(1) - and big_endian == true + and big_endian == True ): # SINT # Reserved Field (Compartmentalized so the "reserved" variable can't leak) @@ -210,7 +210,7 @@ def static_parse( if ( data_type == ModbusDataType.SINT and number_of_values == int(1) - and big_endian == false + and big_endian == False ): # SINT # Simple Field (value) @@ -287,7 +287,7 @@ def static_parse( if ( data_type == ModbusDataType.USINT and number_of_values == int(1) - and big_endian == true + and big_endian == True ): # USINT # Reserved Field (Compartmentalized so the "reserved" variable can't leak) @@ -308,7 +308,7 @@ def static_parse( if ( data_type == ModbusDataType.USINT and number_of_values == int(1) - and big_endian == false + and big_endian == False ): # USINT # Simple Field (value) diff --git a/plc4py/plc4py/protocols/simulated/readwrite/DataItem.py b/plc4py/plc4py/protocols/simulated/readwrite/DataItem.py index e90c85a1c73..f5a2dc2bbf1 100644 --- a/plc4py/plc4py/protocols/simulated/readwrite/DataItem.py +++ b/plc4py/plc4py/protocols/simulated/readwrite/DataItem.py @@ -48,13 +48,13 @@ class DataItem: @staticmethod def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int): - if data_type == "_bool" and number_of_values == int(1): # BOOL + if data_type == "BOOL" and number_of_values == int(1): # BOOL # Simple Field (value) value: bool = read_buffer.read_bit("") return PlcBOOL(value) - if data_type == "_bool": # List + if data_type == "BOOL": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -63,13 +63,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) value.append(PlcBOOL(bool(read_buffer.read_bit("")))) return PlcList(value) - if data_type == "_byte" and number_of_values == int(1): # BYTE + if data_type == "BYTE" and number_of_values == int(1): # BYTE # Simple Field (value) value: int = read_buffer.read_unsigned_short(8, logical_name="") return PlcBYTE(value) - if data_type == "_byte": # List + if data_type == "BYTE": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -80,13 +80,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_word" and number_of_values == int(1): # WORD + if data_type == "WORD" and number_of_values == int(1): # WORD # Simple Field (value) value: int = read_buffer.read_unsigned_int(16, logical_name="") return PlcWORD(value) - if data_type == "_word": # List + if data_type == "WORD": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -97,13 +97,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_dword" and number_of_values == int(1): # DWORD + if data_type == "DWORD" and number_of_values == int(1): # DWORD # Simple Field (value) value: int = read_buffer.read_unsigned_long(32, logical_name="") return PlcDWORD(value) - if data_type == "_dword": # List + if data_type == "DWORD": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -114,13 +114,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_lword" and number_of_values == int(1): # LWORD + if data_type == "LWORD" and number_of_values == int(1): # LWORD # Simple Field (value) value: int = read_buffer.read_unsigned_long(64, logical_name="") return PlcLWORD(value) - if data_type == "_lword": # List + if data_type == "LWORD": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -131,13 +131,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_sint" and number_of_values == int(1): # SINT + if data_type == "SINT" and number_of_values == int(1): # SINT # Simple Field (value) value: int = read_buffer.read_signed_byte(8, logical_name="") return PlcSINT(value) - if data_type == "_sint": # List + if data_type == "SINT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -148,13 +148,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_int" and number_of_values == int(1): # INT + if data_type == "INT" and number_of_values == int(1): # INT # Simple Field (value) value: int = read_buffer.read_short(16, logical_name="") return PlcINT(value) - if data_type == "_int": # List + if data_type == "INT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -163,13 +163,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) value.append(PlcINT(int(read_buffer.read_short(16, logical_name="")))) return PlcList(value) - if data_type == "_dint" and number_of_values == int(1): # DINT + if data_type == "DINT" and number_of_values == int(1): # DINT # Simple Field (value) value: int = read_buffer.read_int(32, logical_name="") return PlcDINT(value) - if data_type == "_dint": # List + if data_type == "DINT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -178,13 +178,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) value.append(PlcDINT(int(read_buffer.read_int(32, logical_name="")))) return PlcList(value) - if data_type == "_lint" and number_of_values == int(1): # LINT + if data_type == "LINT" and number_of_values == int(1): # LINT # Simple Field (value) value: int = read_buffer.read_long(64, logical_name="") return PlcLINT(value) - if data_type == "_lint": # List + if data_type == "LINT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -193,13 +193,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) value.append(PlcLINT(int(read_buffer.read_long(64, logical_name="")))) return PlcList(value) - if data_type == "_usint" and number_of_values == int(1): # USINT + if data_type == "USINT" and number_of_values == int(1): # USINT # Simple Field (value) value: int = read_buffer.read_unsigned_short(8, logical_name="") return PlcUSINT(value) - if data_type == "_usint": # List + if data_type == "USINT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -210,13 +210,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_uint" and number_of_values == int(1): # UINT + if data_type == "UINT" and number_of_values == int(1): # UINT # Simple Field (value) value: int = read_buffer.read_unsigned_int(16, logical_name="") return PlcUINT(value) - if data_type == "_uint": # List + if data_type == "UINT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -227,13 +227,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_udint" and number_of_values == int(1): # UDINT + if data_type == "UDINT" and number_of_values == int(1): # UDINT # Simple Field (value) value: int = read_buffer.read_unsigned_long(32, logical_name="") return PlcUDINT(value) - if data_type == "_udint": # List + if data_type == "UDINT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -244,13 +244,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_ulint" and number_of_values == int(1): # ULINT + if data_type == "ULINT" and number_of_values == int(1): # ULINT # Simple Field (value) value: int = read_buffer.read_unsigned_long(64, logical_name="") return PlcULINT(value) - if data_type == "_ulint": # List + if data_type == "ULINT": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -261,13 +261,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_real" and number_of_values == int(1): # REAL + if data_type == "REAL" and number_of_values == int(1): # REAL # Simple Field (value) value: float = read_buffer.read_float(32, logical_name="") return PlcREAL(value) - if data_type == "_real": # List + if data_type == "REAL": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -278,13 +278,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_lreal" and number_of_values == int(1): # LREAL + if data_type == "LREAL" and number_of_values == int(1): # LREAL # Simple Field (value) value: float = read_buffer.read_double(64, logical_name="") return PlcLREAL(value) - if data_type == "_lreal": # List + if data_type == "LREAL": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -295,13 +295,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_char" and number_of_values == int(1): # CHAR + if data_type == "CHAR" and number_of_values == int(1): # CHAR # Simple Field (value) value: str = read_buffer.read_str(8, logical_name="", encoding="") return PlcCHAR(value) - if data_type == "_char": # List + if data_type == "CHAR": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -314,13 +314,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_wchar" and number_of_values == int(1): # WCHAR + if data_type == "WCHAR" and number_of_values == int(1): # WCHAR # Simple Field (value) value: str = read_buffer.read_str(16, logical_name="", encoding="") return PlcWCHAR(value) - if data_type == "_wchar": # List + if data_type == "WCHAR": # List # Array field (value) # Count array item_count: int = int(number_of_values) @@ -333,13 +333,13 @@ def static_parse(read_buffer: ReadBuffer, data_type: str, number_of_values: int) ) return PlcList(value) - if data_type == "_string": # STRING + if data_type == "STRING": # STRING # Simple Field (value) value: str = read_buffer.read_str(255, logical_name="", encoding="") return PlcSTRING(value) - if data_type == "_wstring": # STRING + if data_type == "WSTRING": # STRING # Simple Field (value) value: str = read_buffer.read_str(255, logical_name="", encoding="") diff --git a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec index a95848621a2..aae7dc38456 100644 --- a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec +++ b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec @@ -865,7 +865,7 @@ ['PDT_DOUBLE' LREAL [simple float 64 value] ] - ['PDT_CHAR_BLOCK' List + ['PDT_CHAR_BLOCK' RawByteArray [array byte value count '10'] ] ['PDT_POLL_GROUP_SETTINGS' Struct @@ -874,7 +874,7 @@ [reserved uint 3 '0x0'] [simple uint 4 pollingSoftNr] ] - ['PDT_SHORT_CHAR_BLOCK' List + ['PDT_SHORT_CHAR_BLOCK' RawByteArray [array byte value count '5'] ] ['PDT_DATE_TIME' Struct @@ -900,64 +900,64 @@ [simple bit qualityOfClock] [reserved uint 7 '0x00'] ] - ['PDT_GENERIC_01' List + ['PDT_GENERIC_01' RawByteArray [array byte value count '1'] ] - ['PDT_GENERIC_02' List + ['PDT_GENERIC_02' RawByteArray [array byte value count '2'] ] - ['PDT_GENERIC_03' List + ['PDT_GENERIC_03' RawByteArray [array byte value count '3'] ] - ['PDT_GENERIC_04' List + ['PDT_GENERIC_04' RawByteArray [array byte value count '4'] ] - ['PDT_GENERIC_05' List + ['PDT_GENERIC_05' RawByteArray [array byte value count '5'] ] - ['PDT_GENERIC_06' List + ['PDT_GENERIC_06' RawByteArray [array byte value count '6'] ] - ['PDT_GENERIC_07' List + ['PDT_GENERIC_07' RawByteArray [array byte value count '7'] ] - ['PDT_GENERIC_08' List + ['PDT_GENERIC_08' RawByteArray [array byte value count '8'] ] - ['PDT_GENERIC_09' List + ['PDT_GENERIC_09' RawByteArray [array byte value count '9'] ] - ['PDT_GENERIC_10' List + ['PDT_GENERIC_10' RawByteArray [array byte value count '10'] ] - ['PDT_GENERIC_11' List + ['PDT_GENERIC_11' RawByteArray [array byte value count '11'] ] - ['PDT_GENERIC_12' List + ['PDT_GENERIC_12' RawByteArray [array byte value count '12'] ] - ['PDT_GENERIC_13' List + ['PDT_GENERIC_13' RawByteArray [array byte value count '13'] ] - ['PDT_GENERIC_14' List + ['PDT_GENERIC_14' RawByteArray [array byte value count '14'] ] - ['PDT_GENERIC_15' List + ['PDT_GENERIC_15' RawByteArray [array byte value count '15'] ] - ['PDT_GENERIC_16' List + ['PDT_GENERIC_16' RawByteArray [array byte value count '16'] ] - ['PDT_GENERIC_17' List + ['PDT_GENERIC_17' RawByteArray [array byte value count '17'] ] - ['PDT_GENERIC_18' List + ['PDT_GENERIC_18' RawByteArray [array byte value count '18'] ] - ['PDT_GENERIC_19' List + ['PDT_GENERIC_19' RawByteArray [array byte value count '19'] ] - ['PDT_GENERIC_20' List + ['PDT_GENERIC_20' RawByteArray [array byte value count '20'] ] // Defaults to PDT_VARIABLE_LENGTH @@ -1012,7 +1012,7 @@ //['PDT_ESCAPE' //] // 'KnxPropertyDataType.PDT_VARIABLE_LENGTH' == Catch all - [ List (uint 8 dataLengthInBytes) + [ RawByteArray (uint 8 dataLengthInBytes) [array byte value count 'dataLengthInBytes'] ] ] diff --git a/protocols/modbus/src/test/resources/protocols/modbus/tcp/DriverTestsuiteOptimized.xml b/protocols/modbus/src/test/resources/protocols/modbus/tcp/DriverTestsuiteOptimized.xml new file mode 100644 index 00000000000..ebd8db39865 --- /dev/null +++ b/protocols/modbus/src/test/resources/protocols/modbus/tcp/DriverTestsuiteOptimized.xml @@ -0,0 +1,529 @@ + + + + + + + Modbus + + modbus + read-write + + modbus-tcp + + + Single element read request + + + + + + hurz +

holding-register:1:REAL
+ + + + + + + MODBUS_TCP + false + + + + 1 + 0 + 6 + 1 + + + false + 3 + + 0 + 2 + + + + + + + + + MODBUS_TCP + true + + + + 1 + 0 + 7 + 1 + + + false + 3 + + 4 + 0x40490fdb + + + + + + + + + + + + + + +
0
+ 1 + REAL +
+
+
+
+
+
+ + + + OK + + 3.1415927410125732 + + + + +
+
+ + + + + Array element read request + + + + + + hurz +
holding-register:1:REAL[2]
+
+
+
+
+ + + MODBUS_TCP + false + + + + 1 + 0 + 6 + 1 + + + false + 3 + + 0 + 4 + + + + + + + + + MODBUS_TCP + true + + + + 1 + 0 + 11 + 1 + + + false + 3 + + 8 + 0x40490fdb40490fdb + + + + + + + + + + + + + + +
0
+ 2 + REAL +
+
+
+
+
+
+ + + + OK + + + 3.1415927410125732 + 3.1415927410125732 + + + + + +
+
+
+
+ + + Multi element read request + + + + + + hurz1 +
holding-register:1:REAL
+
+ + hurz2 +
holding-register:3:REAL
+
+
+
+
+ + + MODBUS_TCP + false + + + + 1 + 0 + 6 + 1 + + + false + 3 + + 0 + 4 + + + + + + + + + MODBUS_TCP + true + + + + 1 + 0 + 11 + 1 + + + false + 3 + + 8 + 0x40490fdb40490fdb + + + + + + + + + + + + + + +
0
+ 1 + REAL +
+
+ + +
2
+ 1 + REAL +
+
+
+
+
+
+ + + + OK + + 3.1415927410125732 + + + + + + OK + + 3.1415927410125732 + + + + +
+
+
+
+ + + Single element write request + + + + + + hurz +
holding-register:1:REAL
+ 3.1415927 +
+
+
+
+ + + MODBUS_TCP + false + + + + 1 + 0 + 11 + 1 + + + false + 16 + + 0 + 2 + 4 + 0x40490fdb + + + + + + + + + MODBUS_TCP + true + + + + 1 + 0 + 6 + 1 + + + false + 16 + + 0 + 2 + + + + + + + + + + + + + + +
0
+ 1 + REAL +
+
+
+
+ + + 3.1415927410125732 + + +
+
+ + + 1 + + +
+
+
+
+ + + Array element write request + + + + + + hurz +
holding-register:1:REAL[2]
+ 3.1415927 + 3.1415927 +
+
+
+
+ + + MODBUS_TCP + false + + + + 1 + 0 + 15 + 1 + + + false + 16 + + 0 + 4 + 8 + 0x40490fdb40490fdb + + + + + + + + + MODBUS_TCP + true + + + + 1 + 0 + 6 + 1 + + + false + 16 + + 0 + 4 + + + + + + + + + + + + + + +
0
+ 2 + REAL +
+
+
+
+ + + + 3.1415927410125732 + 3.1415927410125732 + + + +
+
+ + + 1 + + +
+
+
+
+ +