You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2021/01/24 16:45:08 UTC
[plc4x] 05/07: - Replaced the manually created KnxDatatypes and
DataIo with a fully generated version
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit ad6cc1d28eb87ad65bc6331a28fa29d317cafd21
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Jan 24 12:52:59 2021 +0100
- Replaced the manually created KnxDatatypes and DataIo with a fully generated version
---
.../resources/protocols/knxnetip/knxnetip.mspec | 1446 +++-----------------
protocols/knxnetip/src/main/xslt/knx-types.xsl | 261 +++-
2 files changed, 474 insertions(+), 1233 deletions(-)
diff --git a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
index 5686916..620bc3c 100644
--- a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
+++ b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
@@ -245,7 +245,7 @@
[simple uint 8 'additionalInformationLength']
[array CEMIAdditionalInformation 'additionalInformation' length 'additionalInformationLength']
[simple LDataFrame 'dataFrame']
- [optional uint 8 'crc' 'dataFrame.notAckFrame']
+ //[optional uint 8 'crc' 'dataFrame.notAckFrame']
]
// Page 72ff
@@ -350,68 +350,226 @@
[discriminator bit 'extendedFrame']
[discriminator bit 'polling']
[simple bit 'repeated']
- [discriminator bit 'notAckFrame']
+ [simple bit 'notAckFrame']
[enum CEMIPriority 'priority']
[simple bit 'acknowledgeRequested']
[simple bit 'errorFlag']
- [typeSwitch 'notAckFrame','extendedFrame','polling'
- ['false' LDataFrameAck
- ]
- // Page 28ff
- ['true','false','false' LDataFrameData
+ [typeSwitch 'extendedFrame','polling'
+ // Page 28ff
+ ['false','false' LDataFrameData
[simple KnxAddress 'sourceAddress']
[array int 8 'destinationAddress' count '2']
[simple bit 'groupAddress']
[simple uint 3 'hopCount']
- [simple uint 4 'dataLength']
- // 10_01 Logical Tag Extended v01.02.01 AS.pdf Page 74ff
- [simple bit 'control']
- [simple bit 'numbered']
- [simple uint 4 'counter']
- [optional ControlType 'controlType' 'control']
- [optional APCI 'apci' '!control']
- // The 4 bit of APCI only allow 16 options, in order to extend, if APCI is set to 0xF
- // the following 6 bit allow a bit more room for selection
- [optional ExtendedAPCI 'extendedApci' '!control && apci == APCI.OTHER_PDU']
- // If the extended APCI is used, these 6 bits can't be used for data.
- [optional int 6 'dataFirstByte' '!control && apci != APCI.OTHER_PDU']
- [array int 8 'data' count '(dataLength < 1) ? 0 : dataLength - 1']
+ [simple Apdu 'apdu']
+ ]
+ // Page 29ff
+ ['true','false' LDataFrameDataExt
+ [simple bit 'groupAddress']
+ [simple uint 3 'hopCount']
+ [simple uint 4 'extendedFrameFormat']
+ [simple KnxAddress 'sourceAddress']
+ [array int 8 'destinationAddress' count '2']
+ [simple Apdu 'apdu']
]
// Page 31ff
- ['true','true','true' LDataFramePollingData
+ ['true','true' LDataFramePollingData
[simple KnxAddress 'sourceAddress']
[array int 8 'targetAddress' count '2']
[reserved uint 4 '0x00']
[simple uint 6 'numberExpectedPollData']
]
// Page 31ff
- ['true','false','true' LDataFramePollingData
+ ['false','true' LDataFramePollingData
[simple KnxAddress 'sourceAddress']
[array int 8 'targetAddress' count '2']
[reserved uint 4 '0x00']
[simple uint 6 'numberExpectedPollData']
]
- // Page 29ff
- ['true','true','false' LDataFrameDataExt
- [simple bit 'groupAddress']
- [simple uint 3 'hopCount']
- [simple uint 4 'extendedFrameFormat']
- [simple KnxAddress 'sourceAddress']
- [array int 8 'destinationAddress' count '2']
- [simple uint 8 'dataLength']
- // 10_01 Logical Tag Extended v01.02.01 AS.pdf Page 74ff
- [simple bit 'control']
- [simple bit 'numbered']
- [simple uint 4 'counter']
- [optional ControlType 'controlType' 'control']
- [optional APCI 'apci' '!control']
- // The 4 bit of APCI only allow 16 options, in order to extend, if APCI is set to 0xF
- // the following 6 bit allow a bit more room for selection
- [optional ExtendedAPCI 'extendedApci' '!control && apci == APCI.OTHER_PDU']
- // If the extended APCI is used, these 6 bits can't be used for data.
- [optional int 6 'dataFirstByte' '!control && apci != APCI.OTHER_PDU']
- [array int 8 'data' count '(dataLength < 1) ? 0 : dataLength - 1']
+ ]
+]
+
+[discriminatedType 'Apdu'
+ [simple uint 8 'dataLength']
+ // 10_01 Logical Tag Extended v01.02.01 AS.pdf Page 74ff
+ [discriminator uint 1 'control']
+ [simple bit 'numbered']
+ [simple uint 4 'counter']
+ [typeSwitch 'control'
+ ['1' ApduControlContainer
+ [simple ApduControl 'controlApdu']
+ ]
+ ['0' ApduDataContainer [uint 8 'dataLength']
+ [simple ApduData 'dataApdu' ['dataLength']]
+ ]
+ ]
+]
+
+[discriminatedType 'ApduControl'
+ [discriminator uint 2 'controlType']
+ [typeSwitch 'controlType'
+ ['0x0' ApduControlConnect
+ ]
+ ['0x1' ApduControlDisconnect
+ ]
+ ['0x2' ApduControlAck
+ ]
+ ['0x3' ApduControlNack
+ ]
+ ]
+]
+
+[discriminatedType 'ApduData' [uint 8 'dataLength']
+ [discriminator uint 4 'apciType']
+ // 03_03_07 Application Layer v01.06.02 AS Page 9ff
+ [typeSwitch 'apciType'
+ ['0x0' ApduDataGroupValueRead
+ ]
+ ['0x1' ApduDataGroupValueResponse
+ ]
+ ['0x2' ApduDataGroupValueWrite [uint 8 'dataLength']
+ [simple int 6 'dataFirstByte']
+ [array int 8 'data' count '(dataLength < 1) ? 0 : dataLength - 1']
+ ]
+ ['0x3' ApduDataIndividualAddressWrite
+ ]
+ ['0x4' ApduDataIndividualAddressRead
+ ]
+ ['0x5' ApduDataIndividualAddressResponse
+ ]
+ ['0x6' ApduDataAdcRead
+ ]
+ // In case of this type the following 6 bits contain more detailed information
+ ['0x7' ApduDataAdcResponse
+ ]
+ ['0x8' ApduDataMemoryRead
+ ]
+ ['0x9' ApduDataMemoryResponse
+ ]
+ ['0xA' ApduDataMemoryWrite
+ ]
+ // In case of this type the following 6 bits contain more detailed information
+ ['0xB' ApduDataUserMessage
+ ]
+ ['0xC' ApduDataDeviceDescriptorRead
+ ]
+ ['0xD' ApduDataDeviceDescriptorResponse
+ ]
+ ['0xE' ApduDataRestart
+ ]
+ ['0xF' ApduDataOther [uint 8 'dataLength']
+ [simple ApduDataExt 'extendedApdu' ['dataLength']]
+ ]
+ ]
+]
+
+// 03_03_07 Application Layer v01.06.02 AS Page 9ff
+[discriminatedType 'ApduDataExt' [uint 8 'length']
+ [discriminator uint 8 'extApciType']
+ [typeSwitch 'extApciType'
+ ['0x00' ApduDataExtOpenRoutingTableRequest
+ ]
+ ['0x01' ApduDataExtReadRoutingTableRequest
+ ]
+ ['0x02' ApduDataExtReadRoutingTableResponse
+ ]
+ ['0x03' ApduDataExtWriteRoutingTableRequest
+ ]
+ ['0x08' ApduDataExtReadRouterMemoryRequest
+ ]
+ ['0x09' ApduDataExtReadRouterMemoryResponse
+ ]
+ ['0x0A' ApduDataExtWriteRouterMemoryRequest
+ ]
+ ['0x0D' ApduDataExtReadRouterStatusRequest
+ ]
+ ['0x0E' ApduDataExtReadRouterStatusResponse
+ ]
+ ['0x0F' ApduDataExtWriteRouterStatusRequest
+ ]
+
+ ['0x10' ApduDataExtMemoryBitWrite
+ ]
+
+ ['0x11' ApduDataExtAuthorizeRequest
+ ]
+ ['0x12' ApduDataExtAuthorizeResponse
]
+ ['0x13' ApduDataExtKeyWrite
+ ]
+ ['0x14' ApduDataExtKeyResponse
+ ]
+
+ ['0x15' ApduDataExtPropertyValueRead
+ [simple uint 8 'objectIndex']
+ [simple uint 8 'propertyId']
+ [simple uint 4 'count']
+ [simple uint 12 'index']
+ ]
+ ['0x16' ApduDataExtPropertyValueResponse [uint 8 'length']
+ [simple uint 8 'objectIndex']
+ [simple uint 8 'propertyId']
+ [simple uint 4 'count']
+ [simple uint 12 'index']
+ [array uint 8 'data' count 'length - 5']
+ ]
+ ['0x17' ApduDataExtPropertyValueWrite
+ ]
+ ['0x18' ApduDataExtPropertyDescriptionRead
+ ]
+ ['0x19' ApduDataExtPropertyDescriptionResponse
+ ]
+
+ ['0x1A' ApduDataExtNetworkParameterRead
+ ]
+ ['0x1B' ApduDataExtNetworkParameterResponse
+ ]
+
+ ['0x1C' ApduDataExtIndividualAddressSerialNumberRead
+ ]
+ ['0x1D' ApduDataExtIndividualAddressSerialNumberResponse
+ ]
+ ['0x1E' ApduDataExtIndividualAddressSerialNumberWrite
+ ]
+
+ ['0x20' ApduDataExtDomainAddressWrite
+ ]
+ ['0x21' ApduDataExtDomainAddressRead
+ ]
+ ['0x22' ApduDataExtDomainAddressResponse
+ ]
+ ['0x23' ApduDataExtDomainAddressSelectiveRead
+ ]
+
+ ['0x24' ApduDataExtNetworkParameterWrite
+ ]
+
+ ['0x25' ApduDataExtLinkRead
+ ]
+ ['0x26' ApduDataExtLinkResponse
+ ]
+ ['0x27' ApduDataExtLinkWrite
+ ]
+
+ ['0x28' ApduDataExtGroupPropertyValueRead
+ ]
+ ['0x29' ApduDataExtGroupPropertyValueResponse
+ ]
+ ['0x2A' ApduDataExtGroupPropertyValueWrite
+ ]
+ ['0x2B' ApduDataExtGroupPropertyValueInfoReport
+ ]
+
+ ['0x2C' ApduDataExtDomainAddressSerialNumberRead
+ ]
+ ['0x2D' ApduDataExtDomainAddressSerialNumberResponse
+ ]
+ ['0x2E' ApduDataExtDomainAddressSerialNumberWrite
+ ]
+
+ ['0x30' ApduDataExtFileStreamInfoReport
+ ]
+
]
]
@@ -436,1086 +594,6 @@
]
]
-[dataIo 'KnxDatapoint' [string 'formatName']
- [typeSwitch 'formatName'
- ['B1' BOOL
- [reserved uint 7 '0x0']
- [simple bit 'value']
- ]
- ['B2' Struct
- [reserved uint 6 '0x0']
- [simple bit 'control']
- [simple bit 'value']
- ]
- ['B1U3' Struct
- [reserved uint 4 '0x0']
- [simple bit 'control']
- [simple uint 3 'value']
- ]
- ['A8_ASCII' STRING
- [reserved uint 8 '0x0']
- [simple string 8 'ASCII' 'value']
- ]
- ['A8_8859_1' STRING
- [reserved uint 8 '0x0']
- [simple string 8 'ISO-8859-1' 'value']
- ]
- ['U8' USINT
- [reserved uint 8 '0x0']
- [simple uint 8 'value']
- ]
- ['V8' SINT
- [reserved uint 8 '0x0']
- [simple int 8 'value']
- ]
- // TODO value should actually be an enum ...
- ['B5N3' Struct
- [reserved uint 3 '0x0']
- [simple bit 'a']
- [simple bit 'b']
- [simple bit 'c']
- [simple bit 'd']
- [simple bit 'e']
- [simple int 8 'value']
- ]
- ['U16' UINT
- [reserved uint 8 '0x0']
- [simple uint 16 'value']
- ]
- ['V16' INT
- [reserved uint 8 '0x0']
- [simple int 16 'value']
- ]
- ['F16' REAL
- [reserved uint 8 '0x0']
- [simple float 4.11 'value']
- ]
- // TODO Not sure how to encode the day in this
- ['N3N5r2N6r2N6' TIME_OF_DAY
- [reserved uint 8 '0x0']
- [simple uint 3 'day']
- [simple uint 5 'hour']
- [reserved uint 2 '0x00']
- [simple uint 6 'minutes']
- [reserved uint 2 '0x00']
- [simple uint 6 'seconds']
- ]
- ['r3N5r4N4r1U7' DATE
- [reserved uint 3 '0x00']
- [simple uint 5 'day']
- [reserved uint 4 '0x00']
- [reserved uint 4 '0x00']
- [simple uint 4 'month']
- [reserved uint 1 '0x00']
- [simple uint 7 'year']
- ]
- ['U32' UDINT
- [reserved uint 8 '0x0']
- [simple uint 32 'value']
- ]
- ['V32' DINT
- [reserved uint 8 '0x0']
- [simple int 32 'value']
- ]
- ['F32' REAL
- [reserved uint 8 '0x0']
- [simple float 8.23 'value']
- ]
- ['U4U4U4U4U4U4B4N4' Struct
- [reserved uint 8 '0x0']
- [simple uint 4 'd6']
- [simple uint 4 'd5']
- [simple uint 4 'd4']
- [simple uint 4 'd3']
- [simple uint 4 'd2']
- [simple uint 4 'd1']
- [simple bit 'e']
- [simple bit 'p']
- [simple bit 'd']
- [simple bit 'c']
- [simple uint 4 'index']
- ]
- ['A112_ASCII' STRING
- [reserved uint 8 '0x0']
- [simple string 112 'ASCII' 'value']
- ]
- ['A112_8859_1' STRING
- [reserved uint 8 '0x0']
- [simple string 112 'ISO-8859-1' 'value']
- ]
- ['r2U6' USINT
- [reserved uint 2 '0x00']
- [simple uint 6 'value']
- ]
- ['B1r1U6' Struct
- [reserved uint 8 '0x0']
- [simple bit 'learn']
- [reserved uint 1 '0x00']
- [simple uint 6 'sceneNumber']
- ]
- ['U8r4U4r3U5U3U5r2U6r2U6B16' DATE_AND_TIME
- [reserved uint 8 '0x0']
- [simple uint 8 'year']
- [reserved uint 4 '0x00']
- [simple uint 4 'month']
- [reserved uint 3 '0x00']
- [simple uint 5 'day']
- [simple uint 3 'dayOfWeek']
- [simple uint 5 'hour']
- [reserved uint 2 '0x00']
- [simple uint 6 'minutes']
- [reserved uint 2 '0x00']
- [simple uint 6 'seconds']
- [simple bit 'fault']
- [simple bit 'workingDay']
- [simple bit 'noWorkingDay']
- [simple bit 'noYear']
- [simple bit 'noMonthAndDay']
- [simple bit 'noDayOfWeek']
- [simple bit 'noTime']
- [simple bit 'standardSummerTime']
- [simple bit 'clockWithSyncSignal']
- ]
- // TODO This should actually be enums depending on their type
- ['N8' USINT
- [reserved uint 8 '0x0']
- [simple uint 8 'value']
- ]
- ['B8' BYTE
- [reserved uint 8 '0x0']
- [simple uint 8 'value']
- ]
- ['B16' WORD
- [reserved uint 8 '0x0']
- [simple uint 16 'value']
- ]
- // TODO Probably should be a 2-bit unsigned plc-value
- // TODO value should actually be enums depending on their type
- ['N2' USINT
- [reserved uint 6 '0x00']
- [simple uint 2 'value']
- ]
- ['An_8859_1' STRING
- [reserved uint 8 '0x0']
- // TODO: Implement this field
- //[manual string 8 'ISO-8859-1' 'value' '' '' '']
- ]
- ['U4U4' Struct
- [reserved uint 8 '0x0']
- [simple uint 4 'busy']
- [simple uint 4 'nak']
- ]
- ['r1b1U6' Struct
- [reserved uint 8 '0x0']
- [reserved uint 1 '0x00']
- [simple bit 'sceneActive']
- [simple uint 6 'sceneNumber']
- ]
- ['B32' DWORD
- [reserved uint 8 '0x0']
- [simple uint 32 'value']
- ]
- // TODO UTF-8 chars can be two type values. probably better to do a "manual" element
- ['An_UTF_8' STRING
- [reserved uint 8 '0x0']
- // TODO: Implement this field
- //[manual string 8 'UTF-8' 'value' '' '' '']
- ]
- ['V64' LINT
- [reserved uint 8 '0x0']
- [simple int 64 'value']
- ]
- ['B24' List
- [reserved uint 8 '0x0']
- [array bit 'value' count '24']
- ]
- // TODO Probably should be a 3-bit unsigned plc-value
- // TODO value should actually be enums depending on their type
- ['N3' USINT
- [reserved uint 5 '0x00']
- [simple uint 3 'value']
- ]
- ['B1Z8HeatingOrCoolingZ' Struct
- [reserved uint 7 '0x00']
- [simple bit 'heating']
- [simple uint 8 'statusCommand']
- ]
- ['B1Z8BinaryValueZ' Struct
- [reserved uint 7 '0x00']
- [simple bit 'high']
- [simple uint 8 'statusCommand']
- ]
- ['N8Z8HvacOperatingMode' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'hvacOperatingMode']
- [simple uint 8 'statusCommand']
- ]
- ['N8Z8DhwMode' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'dhwMode']
- [simple uint 8 'statusCommand']
- ]
- ['N8Z8HvacControllingMode' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'hvacControllingMode']
- [simple uint 8 'statusCommand']
- ]
- ['N8Z8EnableHeatingOrCoolingStage' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'enableHeatingOrCoolingStage']
- [simple uint 8 'statusCommand']
- ]
- ['N8Z8BuildingMode' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'buildingMode']
- [simple uint 8 'statusCommand']
- ]
- ['N8Z8OccupancyMode' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'occupancyMode']
- [simple uint 8 'statusCommand']
- ]
- ['N8Z8EmergencyMode' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'hvacEmergencyMode']
- [simple uint 8 'statusCommand']
- ]
- ['U8Z8Rel' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'relValue']
- [simple uint 8 'statusCommand']
- ]
- ['U8Z8Counter' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'counterValue']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8TimePeriod' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'timePeriod']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8FlowRate' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'flowRate']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8Counter' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'counterValue']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8ElectricCurrent' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'electricalCurrent']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8Power' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'power']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8AtmPressure' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'atmPressure']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8PercentValue' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'percentValue']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8HvacAirQuality' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'ppmResolution']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8WindSpeed' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'windSpeed']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8SunIntensity' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'sunIntensity']
- [simple uint 8 'statusCommand']
- ]
- ['U16Z8HvacAirFlow' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'airFlow']
- [simple uint 8 'statusCommand']
- ]
- ['V8Z8RelSignedValue' Struct
- [reserved uint 8 '0x0']
- [simple int 8 'relSignedValue']
- [simple uint 8 'statusCommand']
- ]
- ['V16Z8DeltaTime' Struct
- [reserved uint 8 '0x0']
- [simple int 16 'deltaTime']
- [simple uint 8 'statusCommand']
- ]
- ['V16Z8RelSignedValue' Struct
- [reserved uint 8 '0x0']
- [simple int 16 'relSignedValue']
- [simple uint 8 'statusCommand']
- ]
- ['U16N8HvacModeAndTimeDelay' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'delayTime']
- [simple uint 8 'hvacMode']
- ]
- ['U16N8DhwModeAndTimeDelay' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'delayTime']
- [simple uint 8 'dhwMode']
- ]
- ['U16N8OccupancyModeAndTimeDelay' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'delayTime']
- [simple uint 8 'occupationMode']
- ]
- ['U16N8BuildingModeAndTimeDelay' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'delayTime']
- [simple uint 8 'buildingMode']
- ]
- ['U8B8StatusBurnerController' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'actualRelativePower']
- [reserved uint 4 '0x00']
- [simple bit 'stage2Active']
- [simple bit 'stage1Active']
- [simple bit 'failure']
- [simple bit 'actualRelativePowerValid']
- ]
- ['U8B8LockingSignal' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'requestedPowerReduction']
- [reserved uint 6 '0x00']
- [simple bit 'critical']
- [simple bit 'requestedPowerReductionValid']
- ]
- ['U8B8BoilerControllerDemandSignal' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'relativeDemand']
- [reserved uint 6 '0x00']
- [simple bit 'controlsOperationStage2']
- [simple bit 'controlsOperationStage1']
- ]
- ['U8B8ActuatorPositionDemand' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'actuatorPositionDemand']
- [reserved uint 4 '0x00']
- [simple bit 'emergencyDemand']
- [simple bit 'shiftLoadPriority']
- [simple bit 'absoluteLoadPriority']
- [simple bit 'actuatorPositionDemandValid']
- ]
- ['U8B8ActuatorPositionStatus' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'actualActuatorPosition']
- [reserved uint 3 '0x00']
- [simple bit 'synchronizationMode']
- [simple bit 'valveKick']
- [simple bit 'callibrationMode']
- [simple bit 'positionManuallyOverridden']
- [simple bit 'failure']
- ]
- ['U8B8StatusLightingActuator' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'lightingLevel']
- [simple bit 'failure']
- [simple bit 'localOverride']
- [simple bit 'dimming']
- [simple bit 'staircaseLightingFunction']
- [simple bit 'nightMode']
- [simple bit 'forced']
- [simple bit 'locked']
- [simple bit 'lightingLevelValid']
- ]
- ['V16B8HeatProducerManagerStatus' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'tempFlowProdSegmH']
- [reserved uint 3 '0x00']
- [simple bit 'temporarilyOff']
- [simple bit 'permanentlyOff']
- [simple bit 'switchedOffSummerMode']
- [simple bit 'failure']
- [simple bit 'tempFlowProdSegmHValid']
- ]
- ['V16B8RoomTemperatureDemand' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'roomTemperatureDemand']
- [reserved uint 4 '0x00']
- [simple bit 'emergencyDemand']
- [simple bit 'shiftLoadPriority']
- [simple bit 'absoluteLoadPriority']
- [simple bit 'roomTemperatureDemandValid']
- ]
- ['V16B8ColdWaterProducerManagerStatus' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'flowTemperatureProdSegmC']
- [reserved uint 4 '0x00']
- [simple bit 'temporarilyOff']
- [simple bit 'permanentlyOff']
- [simple bit 'failure']
- [simple bit 'flowTemperatureProdSegmCValid']
- ]
- ['V16B8WaterTemperatureControllerStatus' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'actualTemperature']
- [reserved uint 5 '0x00']
- [simple bit 'controllerWorking']
- [simple bit 'failure']
- [simple bit 'actualTemperatureValid']
- ]
- ['V16B16' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'flowTemperatureDemand']
- [reserved uint 4 '0x00']
- [simple bit 'demandFromDhwWhileLegionellaFunctionIsActive']
- [simple bit 'emergencyDemandForFrostProtection']
- [simple bit 'requestForWaterCirculationInPrimaryDistributionSegment']
- [simple bit 'demandFromAuxillaryHeatOrCoolConsumer']
- [simple bit 'demandFromVentilation']
- [simple bit 'demandForRoomHeatingOrCooling']
- [simple bit 'heatDemandFromDhw']
- [simple bit 'flowTemperatureDemandIsMin']
- [simple bit 'flowTemperatureDemandIsMax']
- [simple bit 'shiftLoadPriority']
- [simple bit 'absoluteLoadPriority']
- [simple bit 'flowTemperatureDemandValid']
- ]
- ['U8N8' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'energyDemand']
- [simple uint 8 'actualControllerMode']
- ]
- ['V16V16V16RoomTemperature' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'temperatureSetpointComfort']
- [simple float 4.11 'temperatureSetpointStandby']
- [simple float 4.11 'temperatureSetpointEco']
- ]
- ['V16V16V16RoomTemperatureShift' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'temperatureSetpointShiftComfort']
- [simple float 4.11 'temperatureSetpointShiftStandby']
- [simple float 4.11 'temperatureSetpointShiftEco']
- ]
- ['V16V16V16V16RoomTemperature' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'temperatureSetpointComfort']
- [simple float 4.11 'temperatureSetpointStandby']
- [simple float 4.11 'temperatureSetpointEco']
- [simple float 4.11 'temperatureSetpointBProt']
- ]
- ['V16V16V16V16DhwtTemperature' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'temperatureSetpointLegioProtect']
- [simple float 4.11 'temperatureSetpointNormal']
- [simple float 4.11 'temperatureSetpointReduced']
- [simple float 4.11 'temperatureSetpointFrostProtect']
- ]
- ['V16V16V16V16RoomTemperatureShift' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'temperatureSetpointShiftComfort']
- [simple float 4.11 'temperatureSetpointShiftStandby']
- [simple float 4.11 'temperatureSetpointShiftEco']
- [simple float 4.11 'temperatureSetpointShiftBProt']
- ]
- ['V16U8B8Heat' Struct
- [reserved uint 8 '0x0']
- [simple int 16 'flowTemperatureDemand']
- [simple uint 8 'relativePower']
- [reserved uint 2 '0x00']
- [simple bit 'boilerEnabled']
- [simple bit 'stage2Forced']
- [simple bit 'stage2Enabled']
- [simple bit 'stage1Forced']
- [simple bit 'stage1Enabled']
- [simple bit 'flowTemperatureDemandValid']
- ]
- ['V16U8B8ChilledWater' Struct
- [reserved uint 8 '0x0']
- [simple int 16 'chilledWaterFlowTemperatureDemand']
- [simple uint 8 'relativePower']
- [reserved uint 5 '0x00']
- [simple bit 'chilledWaterPumpEnabled']
- [simple bit 'relativePowerValid']
- [simple bit 'chilledWaterFlowTemperatureDemandValid']
- ]
- ['V16U8B16Boiler' Struct
- [reserved uint 8 '0x0']
- [simple int 16 'tempBoiler']
- [simple uint 8 'relativePower']
- [reserved uint 4 '0x00']
- [simple bit 'chimneySweepFunctionActive']
- [simple bit 'reducedAvailability']
- [simple bit 'powerLimitBoilerReached']
- [simple bit 'powerLimitStage1Reached']
- [simple bit 'stage2Enabled']
- [simple bit 'stage1Enabled']
- [simple bit 'boilerTemporarilyNotProvidingHeat']
- [simple bit 'permanentlyOff']
- [simple bit 'boilerSwitchedOffWinterSummerMode']
- [simple bit 'boilerFailure']
- [simple bit 'relativePowerValid']
- [simple bit 'tempBoilerValid']
- ]
- ['V16U8B16Chiller' Struct
- [reserved uint 8 '0x0']
- [simple int 16 'tempChiller']
- [simple uint 8 'relativePower']
- [reserved uint 8 '0x00']
- [simple bit 'reducedAvailability']
- [simple bit 'powerLimitChillerReached']
- [simple bit 'powerLimitCurrentStageReached']
- [simple bit 'permanentlyOff']
- [simple bit 'chillerFailure']
- [simple bit 'chillerRunningStatus']
- [simple bit 'relativePowerValid']
- [simple bit 'tempChillerValid']
- ]
- ['U16U8N8B8' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'nominalPower']
- [simple uint 8 'relativePowerLimit']
- [simple int 8 'burnerType']
- [reserved uint 5 '0x00']
- [simple bit 'solidState']
- [simple bit 'gas']
- [simple bit 'oil']
- ]
- ['U5U5U6' Struct
- [reserved uint 8 '0x0']
- [simple uint 5 'magicNumber']
- [simple uint 5 'versionNumber']
- [simple uint 6 'revisionNumber']
- ]
- ['V32Z8VolumeLiter' Struct
- [reserved uint 8 '0x0']
- [simple int 32 'volumeLiter']
- [simple uint 8 'statusCommand']
- ]
- ['V32Z8FlowRate' Struct
- [reserved uint 8 '0x0']
- [simple int 32 'flowRate']
- [simple uint 8 'statusCommand']
- ]
- ['U8N8N8N8B8B8' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'logNumber']
- [simple uint 8 'alarmPriority']
- [simple uint 8 'applicationArea']
- [simple uint 8 'errorClass']
- [reserved uint 4 '0x00']
- [simple bit 'errorCode_Sup']
- [simple bit 'alarmText_Sup']
- [simple bit 'timeStamp_Sup']
- [simple bit 'ack_Sup']
- [reserved uint 5 '0x00']
- [simple bit 'alarmUnAck']
- [simple bit 'locked']
- [simple bit 'inAlarm']
- ]
- ['U16V16' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'delayTime']
- [simple int 16 'temperature']
- ]
- ['N16U32' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'manufacturerCode']
- [simple uint 32 'incrementedNumber']
- ]
- ['F16F16F16' Struct
- [reserved uint 8 '0x0']
- [simple float 4.11 'temperatureSetpointComfort']
- [simple float 4.11 'temperatureSetpointShiftStandby']
- [simple float 4.11 'temperatureSetpointShiftEco']
- ]
- ['V8N8N8' Struct
- [reserved uint 8 '0x0']
- [simple int 8 'energyDemand']
- [simple uint 8 'hvacControllerMode']
- [simple uint 8 'hvacEmergencyMode']
- ]
- ['V16V16N8N8' Struct
- [reserved uint 8 '0x0']
- [simple int 16 'tempSetpointCooling']
- [simple int 16 'tempSetpointHeating']
- [simple uint 8 'hvacControllerMode']
- [simple uint 8 'hvacEmergencyMode']
- ]
- ['U16U8Scaling' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'timePeriod']
- [simple uint 8 'percent']
- ]
- ['U16U8TariffNext' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'delayTime']
- [simple uint 8 'tariff']
- ]
- ['V32N8Z8' Struct
- [reserved uint 8 '0x0']
- [simple int 32 'countVal']
- [simple uint 8 'valInfField']
- [simple uint 8 'statusOrCommand']
- ]
- ['U16U32U8N8' Struct
- [reserved uint 8 '0x0']
- [simple uint 16 'manufacturerId']
- [simple uint 32 'identNumber']
- [simple uint 8 'version']
- [simple uint 8 'medium']
- ]
- ['A8A8A8A8' Struct
- [reserved uint 8 '0x0']
- [simple string 16 'ASCII' 'languageCode']
- [simple string 16 'ASCII' 'regionCode']
- ]
- ['U8U8U8' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'red']
- [simple uint 8 'green']
- [simple uint 8 'blue']
- ]
- ['A8A8Language' Struct
- [reserved uint 8 '0x0']
- [simple string 16 'ASCII' 'languageCode']
- ]
- ['A8A8Region' Struct
- [reserved uint 8 '0x0']
- [simple string 16 'ASCII' 'regionCode']
- ]
- ['V32U8B8' Struct
- [reserved uint 8 '0x0']
- [simple int 32 'activeElectricalEnergy']
- [simple uint 8 'tariff']
- [reserved uint 6 '0x00']
- [simple bit 'noTariff']
- [simple bit 'noActiveElectricalEnergy']
- ]
- ['B1N3N4' Struct
- [reserved uint 8 '0x0']
- [simple bit 'deactivationOfPriority']
- [simple uint 3 'priorityLevel']
- [simple uint 4 'modeLevel']
- ]
- ['B10U6' Struct
- [reserved uint 5 '0x00']
- [simple bit 'convertorError']
- [simple bit 'ballastFailure']
- [simple bit 'lampError']
- [simple bit 'read']
- [simple bit 'groupAddress']
- [simple uint 6 'address']
- ]
- ['B2U6' Struct
- [reserved uint 8 '0x0']
- [simple bit 'sceneActivationInactive']
- [simple bit 'storageFunctionDisable']
- [simple uint 6 'sceneNumber']
- ]
- ['U8r7B1' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'setValue']
- [reserved uint 7 '0x00']
- [simple bit 'channelActivationActive']
- ]
- ['U8U8B8' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'heightPosition']
- [simple uint 8 'slatsPosition']
- [reserved uint 6 '0x00']
- [simple bit 'validSlatsPos']
- [simple bit 'validHeightPos']
- ]
- ['U8U8B16' Struct
- [reserved uint 8 '0x0']
- [simple uint 8 'heightPosition']
- [simple uint 8 'slatsPosition']
- [simple bit 'validSlatsPos']
- [simple bit 'validHeightPos']
- [reserved uint 3 '0x00']
- [simple bit 'failure']
- [simple bit 'localOverride']
- [simple bit 'locked']
- [simple bit 'forced']
- [simple bit 'weatherAlarm']
- [simple bit 'targetSPosRestrict']
- [simple bit 'targetHPosRestrict']
- [simple bit 'driveState']
- [simple bit 'lowerPredefPos']
- [simple bit 'lowerEndPos']
- [simple bit 'upperEndPos']
- ]
- ]
-]
-
-[enum string 'KnxDatapointType' [uint 10 'mainNumber', uint 10 'subNumber', string 'formatName']
- ['DPT_Switch' DPT_Switch ['1', '1', 'B1']]
- ['DPT_Bool' DPT_Bool ['1', '2', 'B1']]
- ['DPT_Enable' DPT_Enable ['1', '3', 'B1']]
- ['DPT_Ramp' DPT_Ramp ['1', '4', 'B1']]
- ['DPT_Alarm' DPT_Alarm ['1', '5', 'B1']]
- ['DPT_BinaryValue' DPT_BinaryValue ['1', '6', 'B1']]
- ['DPT_Step' DPT_Step ['1', '7', 'B1']]
- ['DPT_UpDown' DPT_UpDown ['1', '8', 'B1']]
- ['DPT_OpenClose' DPT_OpenClose ['1', '9', 'B1']]
- ['DPT_Start' DPT_Start ['1', '10', 'B1']]
- ['DPT_State' DPT_State ['1', '11', 'B1']]
- ['DPT_Invert' DPT_Invert ['1', '12', 'B1']]
- ['DPT_DimSendStyle' DPT_DimSendStyle ['1', '13', 'B1']]
- ['DPT_InputSource' DPT_InputSource ['1', '14', 'B1']]
- ['DPT_Reset' DPT_Reset ['1', '15', 'B1']]
- ['DPT_Ack' DPT_Ack ['1', '16', 'B1']]
- ['DPT_Trigger' DPT_Trigger ['1', '17', 'B1']]
- ['DPT_Occupancy' DPT_Occupancy ['1', '18', 'B1']]
- ['DPT_Window_Door' DPT_Window_Door ['1', '19', 'B1']]
- ['DPT_LogicalFunction' DPT_LogicalFunction ['1', '21', 'B1']]
- ['DPT_Scene_AB' DPT_Scene_AB ['1', '22', 'B1']]
- ['DPT_ShutterBlinds_Mode' DPT_ShutterBlinds_Mode ['1', '23', 'B1']]
- ['DPT_Heat_Cool' DPT_Heat_Cool ['1', '100', 'B1']]
- ['DPT_Switch_Control' DPT_Switch_Control ['2', '1', 'B2']]
- ['DPT_Bool_Control' DPT_Bool_Control ['2', '2', 'B2']]
- ['DPT_Enable_Control' DPT_Enable_Control ['2', '3', 'B2']]
- ['DPT_Ramp_Control' DPT_Ramp_Control ['2', '4', 'B2']]
- ['DPT_Alarm_Control' DPT_Alarm_Control ['2', '5', 'B2']]
- ['DPT_BinaryValue_Control' DPT_BinaryValue_Control ['2', '6', 'B2']]
- ['DPT_Step_Control' DPT_Step_Control ['2', '7', 'B2']]
- ['DPT_Direction1_Control' DPT_Direction1_Control ['2', '8', 'B2']]
- ['DPT_Direction2_Control' DPT_Direction2_Control ['2', '9', 'B2']]
- ['DPT_Start_Control' DPT_Start_Control ['2', '10', 'B2']]
- ['DPT_State_Control' DPT_State_Control ['2', '11', 'B2']]
- ['DPT_Invert_Control' DPT_Invert_Control ['2', '12', 'B2']]
- ['DPT_Control_Dimming' DPT_Control_Dimming ['3', '7', 'B1U3']]
- ['DPT_Control_Blinds' DPT_Control_Blinds ['3', '8', 'B1U3']]
- ['DPT_Char_ASCII' DPT_Char_ASCII ['4', '1', 'A8_ASCII']]
- ['DPT_Char_8859_1' DPT_Char_8859_1 ['4', '2', 'A8_8859_1']]
- ['DPT_Scaling' DPT_Scaling ['5', '1', 'U8']]
- ['DPT_Angle' DPT_Angle ['5', '3', 'U8']]
- ['DPT_Percent_U8' DPT_Percent_U8 ['5', '4', 'U8']]
- ['DPT_DecimalFactor' DPT_DecimalFactor ['5', '5', 'U8']]
- ['DPT_Tariff' DPT_Tariff ['5', '6', 'U8']]
- ['DPT_Value_1_Ucount' DPT_Value_1_Ucount ['5', '10', 'U8']]
- ['DPT_Percent_V8' DPT_Percent_V8 ['6', '1', 'V8']]
- ['DPT_Value_1_Count' DPT_Value_1_Count ['6', '10', 'V8']]
- ['DPT_Status_Mode3' DPT_Status_Mode3 ['6', '20', 'B5N3']]
- ['DPT_Value_2_Ucount' DPT_Value_2_Ucount ['7', '1', 'U16']]
- ['DPT_TimePeriodMsec' DPT_TimePeriodMsec ['7', '2', 'U16']]
- ['DPT_TimePeriod10MSec' DPT_TimePeriod10MSec ['7', '3', 'U16']]
- ['DPT_TimePeriod100MSec' DPT_TimePeriod100MSec ['7', '4', 'U16']]
- ['DPT_TimePeriodSec' DPT_TimePeriodSec ['7', '5', 'U16']]
- ['DPT_TimePeriodMin' DPT_TimePeriodMin ['7', '6', 'U16']]
- ['DPT_TimePeriodHrs' DPT_TimePeriodHrs ['7', '7', 'U16']]
- ['DPT_PropDataType' DPT_PropDataType ['7', '10', 'U16']]
- ['DPT_Length_mm' DPT_Length_mm ['7', '11', 'U16']]
- ['DPT_UElCurrentmA' DPT_UElCurrentmA ['7', '12', 'U16']]
- ['DPT_Brightness' DPT_Brightness ['7', '13', 'U16']]
- ['DPT_Value_2_Count' DPT_Value_2_Count ['8', '1', 'V16']]
- ['DPT_DeltaTimeMsec' DPT_DeltaTimeMsec ['8', '2', 'V16']]
- ['DPT_DeltaTime10MSec' DPT_DeltaTime10MSec ['8', '3', 'V16']]
- ['DPT_DeltaTime100MSec' DPT_DeltaTime100MSec ['8', '4', 'V16']]
- ['DPT_DeltaTimeSec' DPT_DeltaTimeSec ['8', '5', 'V16']]
- ['DPT_DeltaTimeMin' DPT_DeltaTimeMin ['8', '6', 'V16']]
- ['DPT_DeltaTimeHrs' DPT_DeltaTimeHrs ['8', '7', 'V16']]
- ['DPT_Percent_V16' DPT_Percent_V16 ['8', '10', 'V16']]
- ['DPT_Rotation_Angle' DPT_Rotation_Angle ['8', '11', 'V16']]
- ['DPT_Value_Temp' DPT_Value_Temp ['9', '1', 'F16']]
- ['DPT_Value_Tempd' DPT_Value_Tempd ['9', '2', 'F16']]
- ['DPT_Value_Tempa' DPT_Value_Tempa ['9', '3', 'F16']]
- ['DPT_Value_Lux' DPT_Value_Lux ['9', '4', 'F16']]
- ['DPT_Value_Wsp' DPT_Value_Wsp ['9', '5', 'F16']]
- ['DPT_Value_Pres' DPT_Value_Pres ['9', '6', 'F16']]
- ['DPT_Value_Humidity' DPT_Value_Humidity ['9', '7', 'F16']]
- ['DPT_Value_AirQuality' DPT_Value_AirQuality ['9', '8', 'F16']]
- ['DPT_Value_Time1' DPT_Value_Time1 ['9', '10', 'F16']]
- ['DPT_Value_Time2' DPT_Value_Time2 ['9', '11', 'F16']]
- ['DPT_Value_Volt' DPT_Value_Volt ['9', '20', 'F16']]
- ['DPT_Value_Curr' DPT_Value_Curr ['9', '21', 'F16']]
- ['DPT_PowerDensity' DPT_PowerDensity ['9', '22', 'F16']]
- ['DPT_KelvinPerPercent' DPT_KelvinPerPercent ['9', '23', 'F16']]
- ['DPT_Power' DPT_Power ['9', '24', 'F16']]
- ['DPT_Value_Volume_Flow' DPT_Value_Volume_Flow ['9', '25', 'F16']]
- ['DPT_Rain_Amount' DPT_Rain_Amount ['9', '26', 'F16']]
- ['DPT_Value_Temp_F' DPT_Value_Temp_F ['9', '27', 'F16']]
- ['DPT_Value_Wsp_kmh' DPT_Value_Wsp_kmh ['9', '28', 'F16']]
- ['DPT_TimeOfDay' DPT_TimeOfDay ['10', '1', 'N3N5r2N6r2N6']]
- ['DPT_Date' DPT_Date ['11', '1', 'r3N5r4N4r1U7']]
- ['DPT_Value_4_Ucount' DPT_Value_4_Ucount ['12', '1', 'U32']]
- ['DPT_Value_4_Count' DPT_Value_4_Count ['13', '1', 'V32']]
- ['DPT_FlowRate_m3h' DPT_FlowRate_m3h ['13', '2', 'V32']]
- ['DPT_ActiveEnergy' DPT_ActiveEnergy ['13', '10', 'V32']]
- ['DPT_ApparantEnergy' DPT_ApparantEnergy ['13', '11', 'V32']]
- ['DPT_ReactiveEnergy' DPT_ReactiveEnergy ['13', '12', 'V32']]
- ['DPT_ActiveEnergy_kWh' DPT_ActiveEnergy_kWh ['13', '13', 'V32']]
- ['DPT_ApparantEnergy_kVAh' DPT_ApparantEnergy_kVAh ['13', '14', 'V32']]
- ['DPT_ReactiveEnergy_kVARh' DPT_ReactiveEnergy_kVARh ['13', '15', 'V32']]
- ['DPT_LongDeltaTimeSec' DPT_LongDeltaTimeSec ['13', '100', 'V32']]
- ['DPT_Value_Acceleration' DPT_Value_Acceleration ['14', '0', 'F32']]
- ['DPT_Value_Acceleration_Angular' DPT_Value_Acceleration_Angular ['14', '1', 'F32']]
- ['DPT_Value_Activation_Energy' DPT_Value_Activation_Energy ['14', '2', 'F32']]
- ['DPT_Value_Activity' DPT_Value_Activity ['14', '3', 'F32']]
- ['DPT_Value_Mol' DPT_Value_Mol ['14', '4', 'F32']]
- ['DPT_Value_Amplitude' DPT_Value_Amplitude ['14', '5', 'F32']]
- ['DPT_Value_AngleRad' DPT_Value_AngleRad ['14', '6', 'F32']]
- ['DPT_Value_AngleDeg' DPT_Value_AngleDeg ['14', '7', 'F32']]
- ['DPT_Value_Angular_Momentum' DPT_Value_Angular_Momentum ['14', '8', 'F32']]
- ['DPT_Value_Angular_Velocity' DPT_Value_Angular_Velocity ['14', '9', 'F32']]
- ['DPT_Value_Area' DPT_Value_Area ['14', '10', 'F32']]
- ['DPT_Value_Capacitance' DPT_Value_Capacitance ['14', '11', 'F32']]
- ['DPT_Value_Charge_DensitySurface' DPT_Value_Charge_DensitySurface ['14', '12', 'F32']]
- ['DPT_Value_Charge_DensityVolume' DPT_Value_Charge_DensityVolume ['14', '13', 'F32']]
- ['DPT_Value_Compressibility' DPT_Value_Compressibility ['14', '14', 'F32']]
- ['DPT_Value_Conductance' DPT_Value_Conductance ['14', '15', 'F32']]
- ['DPT_Value_Electrical_Conductivity' DPT_Value_Electrical_Conductivity ['14', '16', 'F32']]
- ['DPT_Value_Density' DPT_Value_Density ['14', '17', 'F32']]
- ['DPT_Value_Electric_Charge' DPT_Value_Electric_Charge ['14', '18', 'F32']]
- ['DPT_Value_Electric_Current' DPT_Value_Electric_Current ['14', '19', 'F32']]
- ['DPT_Value_Electric_CurrentDensity' DPT_Value_Electric_CurrentDensity ['14', '20', 'F32']]
- ['DPT_Value_Electric_DipoleMoment' DPT_Value_Electric_DipoleMoment ['14', '21', 'F32']]
- ['DPT_Value_Electric_Displacement' DPT_Value_Electric_Displacement ['14', '22', 'F32']]
- ['DPT_Value_Electric_FieldStrength' DPT_Value_Electric_FieldStrength ['14', '23', 'F32']]
- ['DPT_Value_Electric_Flux' DPT_Value_Electric_Flux ['14', '24', 'F32']]
- ['DPT_Value_Electric_FluxDensity' DPT_Value_Electric_FluxDensity ['14', '25', 'F32']]
- ['DPT_Value_Electric_Polarization' DPT_Value_Electric_Polarization ['14', '26', 'F32']]
- ['DPT_Value_Electric_Potential' DPT_Value_Electric_Potential ['14', '27', 'F32']]
- ['DPT_Value_Electric_PotentialDifference' DPT_Value_Electric_PotentialDifference ['14', '28', 'F32']]
- ['DPT_Value_ElectromagneticMoment' DPT_Value_ElectromagneticMoment ['14', '29', 'F32']]
- ['DPT_Value_Electromotive_Force' DPT_Value_Electromotive_Force ['14', '30', 'F32']]
- ['DPT_Value_Energy' DPT_Value_Energy ['14', '31', 'F32']]
- ['DPT_Value_Force' DPT_Value_Force ['14', '32', 'F32']]
- ['DPT_Value_Frequency' DPT_Value_Frequency ['14', '33', 'F32']]
- ['DPT_Value_Angular_Frequency' DPT_Value_Angular_Frequency ['14', '34', 'F32']]
- ['DPT_Value_Heat_Capacity' DPT_Value_Heat_Capacity ['14', '35', 'F32']]
- ['DPT_Value_Heat_FlowRate' DPT_Value_Heat_FlowRate ['14', '36', 'F32']]
- ['DPT_Value_Heat_Quantity' DPT_Value_Heat_Quantity ['14', '37', 'F32']]
- ['DPT_Value_Impedance' DPT_Value_Impedance ['14', '38', 'F32']]
- ['DPT_Value_Length' DPT_Value_Length ['14', '39', 'F32']]
- ['DPT_Value_Light_Quantity' DPT_Value_Light_Quantity ['14', '40', 'F32']]
- ['DPT_Value_Luminance' DPT_Value_Luminance ['14', '41', 'F32']]
- ['DPT_Value_Luminous_Flux' DPT_Value_Luminous_Flux ['14', '42', 'F32']]
- ['DPT_Value_Luminous_Intensity' DPT_Value_Luminous_Intensity ['14', '43', 'F32']]
- ['DPT_Value_Magnetic_FieldStrength' DPT_Value_Magnetic_FieldStrength ['14', '44', 'F32']]
- ['DPT_Value_Magnetic_Flux' DPT_Value_Magnetic_Flux ['14', '45', 'F32']]
- ['DPT_Value_Magnetic_FluxDensity' DPT_Value_Magnetic_FluxDensity ['14', '46', 'F32']]
- ['DPT_Value_Magnetic_Moment' DPT_Value_Magnetic_Moment ['14', '47', 'F32']]
- ['DPT_Value_Magnetic_Polarization' DPT_Value_Magnetic_Polarization ['14', '48', 'F32']]
- ['DPT_Value_Magnetization' DPT_Value_Magnetization ['14', '49', 'F32']]
- ['DPT_Value_MagnetomotiveForce' DPT_Value_MagnetomotiveForce ['14', '50', 'F32']]
- ['DPT_Value_Mass' DPT_Value_Mass ['14', '51', 'F32']]
- ['DPT_Value_MassFlux' DPT_Value_MassFlux ['14', '52', 'F32']]
- ['DPT_Value_Momentum' DPT_Value_Momentum ['14', '53', 'F32']]
- ['DPT_Value_Phase_AngleRad' DPT_Value_Phase_AngleRad ['14', '54', 'F32']]
- ['DPT_Value_Phase_AngleDeg' DPT_Value_Phase_AngleDeg ['14', '55', 'F32']]
- ['DPT_Value_Power' DPT_Value_Power ['14', '56', 'F32']]
- ['DPT_Value_Power_Factor' DPT_Value_Power_Factor ['14', '57', 'F32']]
- ['DPT_Value_Pressure' DPT_Value_Pressure ['14', '58', 'F32']]
- ['DPT_Value_Reactance' DPT_Value_Reactance ['14', '59', 'F32']]
- ['DPT_Value_Resistance' DPT_Value_Resistance ['14', '60', 'F32']]
- ['DPT_Value_Resistivity' DPT_Value_Resistivity ['14', '61', 'F32']]
- ['DPT_Value_SelfInductance' DPT_Value_SelfInductance ['14', '62', 'F32']]
- ['DPT_Value_SolidAngle' DPT_Value_SolidAngle ['14', '63', 'F32']]
- ['DPT_Value_Sound_Intensity' DPT_Value_Sound_Intensity ['14', '64', 'F32']]
- ['DPT_Value_Speed' DPT_Value_Speed ['14', '65', 'F32']]
- ['DPT_Value_Stress' DPT_Value_Stress ['14', '66', 'F32']]
- ['DPT_Value_Surface_Tension' DPT_Value_Surface_Tension ['14', '67', 'F32']]
- ['DPT_Value_Common_Temperature' DPT_Value_Common_Temperature ['14', '68', 'F32']]
- ['DPT_Value_Absolute_Temperature' DPT_Value_Absolute_Temperature ['14', '69', 'F32']]
- ['DPT_Value_TemperatureDifference' DPT_Value_TemperatureDifference ['14', '70', 'F32']]
- ['DPT_Value_Thermal_Capacity' DPT_Value_Thermal_Capacity ['14', '71', 'F32']]
- ['DPT_Value_Thermal_Conductivity' DPT_Value_Thermal_Conductivity ['14', '72', 'F32']]
- ['DPT_Value_ThermoelectricPower' DPT_Value_ThermoelectricPower ['14', '73', 'F32']]
- ['DPT_Value_Time' DPT_Value_Time ['14', '74', 'F32']]
- ['DPT_Value_Torque' DPT_Value_Torque ['14', '75', 'F32']]
- ['DPT_Value_Volume' DPT_Value_Volume ['14', '76', 'F32']]
- ['DPT_Value_Volume_Flux' DPT_Value_Volume_Flux ['14', '77', 'F32']]
- ['DPT_Value_Weight' DPT_Value_Weight ['14', '78', 'F32']]
- ['DPT_Value_Work' DPT_Value_Work ['14', '79', 'F32']]
- ['DPT_Access_Data' DPT_Access_Data ['15', '0', 'U4U4U4U4U4U4B4N4']]
- ['DPT_String_ASCII' DPT_String_ASCII ['16', '0', 'A112_ASCII']]
- ['DPT_String_8859_1' DPT_String_8859_1 ['16', '1', 'A112_8859_1']]
- ['DPT_SceneNumber' DPT_SceneNumber ['17', '1', 'r2U6']]
- ['DPT_SceneControl' DPT_SceneControl ['18', '1', 'B1r1U6']]
- ['DPT_DateTime' DPT_DateTime ['19', '1', 'U8r4U4r3U5U3U5r2U6r2U6B16']]
- ['DPT_SCLOMode' DPT_SCLOMode ['20', '1', 'N8']]
- ['DPT_BuildingMode' DPT_BuildingMode ['20', '2', 'N8']]
- ['DPT_OccMode' DPT_OccMode ['20', '3', 'N8']]
- ['DPT_Priority' DPT_Priority ['20', '4', 'N8']]
- ['DPT_LightApplicationMode' DPT_LightApplicationMode ['20', '5', 'N8']]
- ['DPT_ApplicationArea' DPT_ApplicationArea ['20', '6', 'N8']]
- ['DPT_AlarmClassType' DPT_AlarmClassType ['20', '7', 'N8']]
- ['DPT_PSUMode' DPT_PSUMode ['20', '8', 'N8']]
- ['DPT_ErrorClass_System' DPT_ErrorClass_System ['20', '11', 'N8']]
- ['DPT_ErrorClass_HVAC' DPT_ErrorClass_HVAC ['20', '12', 'N8']]
- ['DPT_Time_Delay' DPT_Time_Delay ['20', '13', 'N8']]
- ['DPT_Beaufort_Wind_Force_Scale' DPT_Beaufort_Wind_Force_Scale ['20', '14', 'N8']]
- ['DPT_SensorSelect' DPT_SensorSelect ['20', '17', 'N8']]
- ['DPT_ActuatorConnectType' DPT_ActuatorConnectType ['20', '20', 'N8']]
- ['DPT_FuelType' DPT_FuelType ['20', '100', 'N8']]
- ['DPT_BurnerType' DPT_BurnerType ['20', '101', 'N8']]
- ['DPT_HVACMode' DPT_HVACMode ['20', '102', 'N8']]
- ['DPT_DHWMode' DPT_DHWMode ['20', '103', 'N8']]
- ['DPT_LoadPriority' DPT_LoadPriority ['20', '104', 'N8']]
- ['DPT_HVACContrMode' DPT_HVACContrMode ['20', '105', 'N8']]
- ['DPT_HVACEmergMode' DPT_HVACEmergMode ['20', '106', 'N8']]
- ['DPT_ChangeoverMode' DPT_ChangeoverMode ['20', '107', 'N8']]
- ['DPT_ValveMode' DPT_ValveMode ['20', '108', 'N8']]
- ['DPT_DamperMode' DPT_DamperMode ['20', '109', 'N8']]
- ['DPT_HeaterMode' DPT_HeaterMode ['20', '110', 'N8']]
- ['DPT_FanMode' DPT_FanMode ['20', '111', 'N8']]
- ['DPT_MasterSlaveMode' DPT_MasterSlaveMode ['20', '112', 'N8']]
- ['DPT_StatusRoomSetp' DPT_StatusRoomSetp ['20', '113', 'N8']]
- ['DPT_ADAType' DPT_ADAType ['20', '120', 'N8']]
- ['DPT_BackupMode' DPT_BackupMode ['20', '121', 'N8']]
- ['DPT_StartSynchronization' DPT_StartSynchronization ['20', '122', 'N8']]
- ['DPT_Behaviour_Lock_Unlock' DPT_Behaviour_Lock_Unlock ['20', '600', 'N8']]
- ['DPT_Behaviour_Bus_Power_Up_Down' DPT_Behaviour_Bus_Power_Up_Down ['20', '601', 'N8']]
- ['DPT_DALI_Fade_Time' DPT_DALI_Fade_Time ['20', '602', 'N8']]
- ['DPT_BlinkingMode' DPT_BlinkingMode ['20', '603', 'N8']]
- ['DPT_LightControlMode' DPT_LightControlMode ['20', '604', 'N8']]
- ['DPT_SwitchPBModel' DPT_SwitchPBModel ['20', '605', 'N8']]
- ['DPT_PBAction' DPT_PBAction ['20', '606', 'N8']]
- ['DPT_DimmPBModel' DPT_DimmPBModel ['20', '607', 'N8']]
- ['DPT_SwitchOnMode' DPT_SwitchOnMode ['20', '608', 'N8']]
- ['DPT_LoadTypeSet' DPT_LoadTypeSet ['20', '609', 'N8']]
- ['DPT_LoadTypeDetected' DPT_LoadTypeDetected ['20', '610', 'N8']]
- ['DPT_SABExceptBehaviour' DPT_SABExceptBehaviour ['20', '801', 'N8']]
- ['DPT_SABBehaviour_Lock_Unlock' DPT_SABBehaviour_Lock_Unlock ['20', '802', 'N8']]
- ['DPT_SSSBMode' DPT_SSSBMode ['20', '803', 'N8']]
- ['DPT_BlindsControlMode' DPT_BlindsControlMode ['20', '804', 'N8']]
- ['DPT_CommMode' DPT_CommMode ['20', '1000', 'N8']]
- ['DPT_AddInfoTypes' DPT_AddInfoTypes ['20', '1001', 'N8']]
- ['DPT_RF_ModeSelect' DPT_RF_ModeSelect ['20', '1002', 'N8']]
- ['DPT_RF_FilterSelect' DPT_RF_FilterSelect ['20', '1003', 'N8']]
- ['DPT_StatusGen' DPT_StatusGen ['21', '1', 'B8']]
- ['DPT_Device_Control' DPT_Device_Control ['21', '2', 'B8']]
- ['DPT_ForceSign' DPT_ForceSign ['21', '100', 'B8']]
- ['DPT_ForceSignCool' DPT_ForceSignCool ['21', '101', 'B8']]
- ['DPT_StatusRHC' DPT_StatusRHC ['21', '102', 'B8']]
- ['DPT_StatusSDHWC' DPT_StatusSDHWC ['21', '103', 'B8']]
- ['DPT_FuelTypeSet' DPT_FuelTypeSet ['21', '104', 'B8']]
- ['DPT_StatusRCC' DPT_StatusRCC ['21', '105', 'B8']]
- ['DPT_StatusAHU' DPT_StatusAHU ['21', '106', 'B8']]
- ['DPT_LightActuatorErrorInfo' DPT_LightActuatorErrorInfo ['21', '601', 'B8']]
- ['DPT_RF_ModeInfo' DPT_RF_ModeInfo ['21', '1000', 'B8']]
- ['DPT_RF_FilterInfo' DPT_RF_FilterInfo ['21', '1001', 'B8']]
- ['DPT_Channel_Activation_8' DPT_Channel_Activation_8 ['21', '1010', 'B8']]
- ['DPT_StatusDHWC' DPT_StatusDHWC ['22', '100', 'B16']]
- ['DPT_StatusRHCC' DPT_StatusRHCC ['22', '101', 'B16']]
- ['DPT_Media' DPT_Media ['22', '1000', 'B16']]
- ['DPT_Channel_Activation_16' DPT_Channel_Activation_16 ['22', '1010', 'B16']]
- ['DPT_OnOff_Action' DPT_OnOff_Action ['23', '1', 'N2']]
- ['DPT_Alarm_Reaction' DPT_Alarm_Reaction ['23', '2', 'N2']]
- ['DPT_UpDown_Action' DPT_UpDown_Action ['23', '3', 'N2']]
- ['DPT_HVAC_PB_Action' DPT_HVAC_PB_Action ['23', '102', 'N2']]
- ['DPT_VarString_8859_1' DPT_VarString_8859_1 ['24', '1', 'An_8859_1']]
- ['DPT_DoubleNibble' DPT_DoubleNibble ['25', '1000', 'U4U4']]
- ['DPT_SceneInfo' DPT_SceneInfo ['26', '1', 'r1b1U6']]
- ['DPT_CombinedInfoOnOff' DPT_CombinedInfoOnOff ['27', '1', 'B32']]
- ['DPT_UTF_8' DPT_UTF_8 ['28', '1', 'An_UTF_8']]
- ['DPT_ActiveEnergy_V64' DPT_ActiveEnergy_V64 ['29', '10', 'V64']]
- ['DPT_ApparantEnergy_V64' DPT_ApparantEnergy_V64 ['29', '11', 'V64']]
- ['DPT_ReactiveEnergy_V64' DPT_ReactiveEnergy_V64 ['29', '12', 'V64']]
- ['DPT_Channel_Activation_24' DPT_Channel_Activation_24 ['30', '1010', 'B24']]
- ['DPT_PB_Action_HVAC_Extended' DPT_PB_Action_HVAC_Extended ['31', '101', 'N3']]
- ['DPT_Heat_Cool_Z' DPT_Heat_Cool_Z ['200', '100', 'B1Z8HeatingOrCoolingZ']]
- ['DPT_BinaryValue_Z' DPT_BinaryValue_Z ['200', '101', 'B1Z8BinaryValueZ']]
- ['DPT_HVACMode_Z' DPT_HVACMode_Z ['201', '100', 'N8Z8HvacOperatingMode']]
- ['DPT_DHWMode_Z' DPT_DHWMode_Z ['201', '102', 'N8Z8DhwMode']]
- ['DPT_HVACContrMode_Z' DPT_HVACContrMode_Z ['201', '104', 'N8Z8HvacControllingMode']]
- ['DPT_EnablH_Cstage_Z_DPT_EnablH_CStage' DPT_EnablH_Cstage_Z_DPT_EnablH_CStage ['201', '105', 'N8Z8EnableHeatingOrCoolingStage']]
- ['DPT_BuildingMode_Z' DPT_BuildingMode_Z ['201', '107', 'N8Z8BuildingMode']]
- ['DPT_OccMode_Z' DPT_OccMode_Z ['201', '108', 'N8Z8OccupancyMode']]
- ['DPT_HVACEmergMode_Z' DPT_HVACEmergMode_Z ['201', '109', 'N8Z8EmergencyMode']]
- ['DPT_RelValue_Z' DPT_RelValue_Z ['202', '1', 'U8Z8Rel']]
- ['DPT_UCountValue8_Z' DPT_UCountValue8_Z ['202', '2', 'U8Z8Counter']]
- ['DPT_TimePeriodMsec_Z' DPT_TimePeriodMsec_Z ['203', '2', 'U16Z8TimePeriod']]
- ['DPT_TimePeriod10Msec_Z' DPT_TimePeriod10Msec_Z ['203', '3', 'U16Z8TimePeriod']]
- ['DPT_TimePeriod100Msec_Z' DPT_TimePeriod100Msec_Z ['203', '4', 'U16Z8TimePeriod']]
- ['DPT_TimePeriodSec_Z' DPT_TimePeriodSec_Z ['203', '5', 'U16Z8TimePeriod']]
- ['DPT_TimePeriodMin_Z' DPT_TimePeriodMin_Z ['203', '6', 'U16Z8TimePeriod']]
- ['DPT_TimePeriodHrs_Z' DPT_TimePeriodHrs_Z ['203', '7', 'U16Z8TimePeriod']]
- ['DPT_UFlowRateLiter_h_Z' DPT_UFlowRateLiter_h_Z ['203', '11', 'U16Z8FlowRate']]
- ['DPT_UCountValue16_Z' DPT_UCountValue16_Z ['203', '12', 'U16Z8Counter']]
- ['DPT_UElCurrentyA_Z' DPT_UElCurrentyA_Z ['203', '13', 'U16Z8ElectricCurrent']]
- ['DPT_PowerKW_Z' DPT_PowerKW_Z ['203', '14', 'U16Z8Power']]
- ['DPT_AtmPressureAbs_Z' DPT_AtmPressureAbs_Z ['203', '15', 'U16Z8AtmPressure']]
- ['DPT_PercentU16_Z' DPT_PercentU16_Z ['203', '17', 'U16Z8PercentValue']]
- ['DPT_HVACAirQual_Z' DPT_HVACAirQual_Z ['203', '100', 'U16Z8HvacAirQuality']]
- ['DPT_WindSpeed_Z_DPT_WindSpeed' DPT_WindSpeed_Z_DPT_WindSpeed ['203', '101', 'U16Z8WindSpeed']]
- ['DPT_SunIntensity_Z' DPT_SunIntensity_Z ['203', '102', 'U16Z8SunIntensity']]
- ['DPT_HVACAirFlowAbs_Z' DPT_HVACAirFlowAbs_Z ['203', '104', 'U16Z8HvacAirFlow']]
- ['DPT_RelSignedValue_Z' DPT_RelSignedValue_Z ['204', '1', 'V8Z8RelSignedValue']]
- ['DPT_DeltaTimeMsec_Z' DPT_DeltaTimeMsec_Z ['205', '2', 'V16Z8DeltaTime']]
- ['DPT_DeltaTime10Msec_Z' DPT_DeltaTime10Msec_Z ['205', '3', 'V16Z8DeltaTime']]
- ['DPT_DeltaTime100Msec_Z' DPT_DeltaTime100Msec_Z ['205', '4', 'V16Z8DeltaTime']]
- ['DPT_DeltaTimeSec_Z' DPT_DeltaTimeSec_Z ['205', '5', 'V16Z8DeltaTime']]
- ['DPT_DeltaTimeMin_Z' DPT_DeltaTimeMin_Z ['205', '6', 'V16Z8DeltaTime']]
- ['DPT_DeltaTimeHrs_Z' DPT_DeltaTimeHrs_Z ['205', '7', 'V16Z8DeltaTime']]
- ['DPT_Percent_V16_Z' DPT_Percent_V16_Z ['205', '17', 'V16Z8RelSignedValue']]
- ['DPT_TempHVACAbs_Z' DPT_TempHVACAbs_Z ['205', '100', 'V16Z8RelSignedValue']]
- ['DPT_TempHVACRel_Z' DPT_TempHVACRel_Z ['205', '101', 'V16Z8RelSignedValue']]
- ['DPT_HVACAirFlowRel_Z' DPT_HVACAirFlowRel_Z ['205', '102', 'V16Z8RelSignedValue']]
- ['DPT_HVACModeNext' DPT_HVACModeNext ['206', '100', 'U16N8HvacModeAndTimeDelay']]
- ['DPT_DHWModeNext' DPT_DHWModeNext ['206', '102', 'U16N8DhwModeAndTimeDelay']]
- ['DPT_OccModeNext' DPT_OccModeNext ['206', '104', 'U16N8OccupancyModeAndTimeDelay']]
- ['DPT_BuildingModeNext' DPT_BuildingModeNext ['206', '105', 'U16N8BuildingModeAndTimeDelay']]
- ['DPT_StatusBUC' DPT_StatusBUC ['207', '100', 'U8B8StatusBurnerController']]
- ['DPT_LockSign' DPT_LockSign ['207', '101', 'U8B8LockingSignal']]
- ['DPT_ValueDemBOC' DPT_ValueDemBOC ['207', '102', 'U8B8BoilerControllerDemandSignal']]
- ['DPT_ActPosDemAbs' DPT_ActPosDemAbs ['207', '104', 'U8B8ActuatorPositionDemand']]
- ['DPT_StatusAct' DPT_StatusAct ['207', '105', 'U8B8ActuatorPositionStatus']]
- ['DPT_StatusLightingActuator' DPT_StatusLightingActuator ['207', '600', 'U8B8StatusLightingActuator']]
- ['DPT_StatusHPM' DPT_StatusHPM ['209', '100', 'V16B8HeatProducerManagerStatus']]
- ['DPT_TempRoomDemAbs' DPT_TempRoomDemAbs ['209', '101', 'V16B8RoomTemperatureDemand']]
- ['DPT_StatusCPM' DPT_StatusCPM ['209', '102', 'V16B8ColdWaterProducerManagerStatus']]
- ['DPT_StatusWTC' DPT_StatusWTC ['209', '103', 'V16B8WaterTemperatureControllerStatus']]
- ['DPT_TempFlowWaterDemAbs' DPT_TempFlowWaterDemAbs ['210', '100', 'V16B16']]
- ['DPT_EnergyDemWater' DPT_EnergyDemWater ['211', '100', 'U8N8']]
- ['DPT_TempRoomSetpSetShift3' DPT_TempRoomSetpSetShift3 ['212', '100', 'V16V16V16RoomTemperatureShift']]
- ['DPT_TempRoomSetpSet3' DPT_TempRoomSetpSet3 ['212', '101', 'V16V16V16RoomTemperature']]
- ['DPT_TempRoomSetpSet4' DPT_TempRoomSetpSet4 ['213', '100', 'V16V16V16V16RoomTemperature']]
- ['DPT_TempDHWSetpSet4' DPT_TempDHWSetpSet4 ['213', '101', 'V16V16V16V16DhwtTemperature']]
- ['DPT_TempRoomSetpSetShift4' DPT_TempRoomSetpSetShift4 ['213', '102', 'V16V16V16V16RoomTemperatureShift']]
- ['DPT_PowerFlowWaterDemHPM' DPT_PowerFlowWaterDemHPM ['214', '100', 'V16U8B8Heat']]
- ['DPT_PowerFlowWaterDemCPM' DPT_PowerFlowWaterDemCPM ['214', '101', 'V16U8B8ChilledWater']]
- ['DPT_StatusBOC' DPT_StatusBOC ['215', '100', 'V16U8B16Boiler']]
- ['DPT_StatusCC' DPT_StatusCC ['215', '101', 'V16U8B16Chiller']]
- ['DPT_SpecHeatProd' DPT_SpecHeatProd ['216', '100', 'U16U8N8B8']]
- ['DPT_Version' DPT_Version ['217', '1', 'U5U5U6']]
- ['DPT_VolumeLiter_Z' DPT_VolumeLiter_Z ['218', '1', 'V32Z8VolumeLiter']]
- ['DPT_FlowRate_m3h_Z' DPT_FlowRate_m3h_Z ['218', '2', 'V32Z8FlowRate']]
- ['DPT_AlarmInfo' DPT_AlarmInfo ['219', '1', 'U8N8N8N8B8B8']]
- ['DPT_TempHVACAbsNext' DPT_TempHVACAbsNext ['220', '100', 'U16V16']]
- ['DPT_SerNum' DPT_SerNum ['221', '1', 'N16U32']]
- ['DPT_TempRoomSetpSetF163' DPT_TempRoomSetpSetF163 ['222', '100', 'F16F16F16']]
- ['DPT_TempRoomSetpSetShiftF163' DPT_TempRoomSetpSetShiftF163 ['222', '101', 'F16F16F16']]
- ['DPT_EnergyDemAir' DPT_EnergyDemAir ['223', '100', 'V8N8N8']]
- ['DPT_TempSupply_AirSetpSet' DPT_TempSupply_AirSetpSet ['224', '100', 'V16V16N8N8']]
- ['DPT_ScalingSpeed' DPT_ScalingSpeed ['225', '1', 'U16U8Scaling']]
- ['DPT_Scaling_Step_Time' DPT_Scaling_Step_Time ['225', '2', 'U16U8Scaling']]
- ['DPT_TariffNext' DPT_TariffNext ['225', '3', 'U16U8TariffNext']]
- ['DPT_MeteringValue' DPT_MeteringValue ['229', '1', 'V32N8Z8']]
- ['DPT_MBus_Address' DPT_MBus_Address ['230', '1000', 'U16U32U8N8']]
- ['DPT_Locale_ASCII' DPT_Locale_ASCII ['231', '1', 'A8A8A8A8']]
- ['DPT_Colour_RGB' DPT_Colour_RGB ['232', '600', 'U8U8U8']]
- ['DPT_LanguageCodeAlpha2_ASCII' DPT_LanguageCodeAlpha2_ASCII ['234', '1', 'A8A8Language']]
- ['DPT_RegionCodeAlpha2_ASCII' DPT_RegionCodeAlpha2_ASCII ['234', '2', 'A8A8Region']]
- ['DPT_Tariff_ActiveEnergy' DPT_Tariff_ActiveEnergy ['235', '1', 'V32U8B8']]
- ['DPT_Prioritised_Mode_Control' DPT_Prioritised_Mode_Control ['236', '1', 'B1N3N4']]
- ['DPT_DALI_Control_Gear_Diagnostic' DPT_DALI_Control_Gear_Diagnostic ['237', '600', 'B10U6']]
- ['DPT_SceneConfig' DPT_SceneConfig ['238', '1', 'B2U6']]
- ['DPT_DALI_Diagnostics' DPT_DALI_Diagnostics ['238', '600', 'B2U6']]
- ['DPT_FlaggedScaling' DPT_FlaggedScaling ['239', '1', 'U8r7B1']]
- ['DPT_CombinedPosition' DPT_CombinedPosition ['240', '800', 'U8U8B8']]
- ['DPT_StatusSAB' DPT_StatusSAB ['241', '800', 'U8U8B16']]
-]
-
[enum uint 2 'CEMIPriority'
['0x0' SYSTEM]
['0x1' NORMAL]
@@ -1523,13 +601,6 @@
['0x3' LOW]
]
-[enum uint 2 'ControlType'
- ['0x0' CONNECT]
- ['0x1' DISCONNECT]
- ['0x2' ACK]
- ['0x3' NACK]
-]
-
[enum uint 8 'Status'
['0x00' NO_ERROR]
['0x01' PROTOCOL_TYPE_NOT_SUPPORTED]
@@ -1575,84 +646,6 @@
['0x20' MEDIUM_KNX_IP]
]
-// 03_03_07 Application Layer v01.06.02 AS Page 9ff
-[enum uint 4 'APCI'
- ['0x0' GROUP_VALUE_READ_PDU]
- ['0x1' GROUP_VALUE_RESPONSE_PDU]
- ['0x2' GROUP_VALUE_WRITE_PDU]
- ['0x3' INDIVIDUAL_ADDRESS_WRITE_PDU]
- ['0x4' INDIVIDUAL_ADDRESS_READ_PDU]
- ['0x5' INDIVIDUAL_ADDRESS_RESPONSE_PDU]
- ['0x6' ADC_READ_PDU]
- // In case of this type the following 6 bits contain more detailed information
- ['0x7' ADC_RESPONSE_PDU]
- ['0x8' MEMORY_READ_PDU]
- ['0x9' MEMORY_RESPONSE_PDU]
- ['0xA' MEMORY_WRITE_PDU]
- // In case of this type the following 6 bits contain more detailed information
- ['0xB' USER_MESSAGE_PDU]
- ['0xC' DEVICE_DESCRIPTOR_READ_PDU]
- ['0xD' DEVICE_DESCRIPTOR_RESPONSE_PDU]
- ['0xE' RESTART_PDU]
- ['0xF' OTHER_PDU]
-]
-
-// 03_03_07 Application Layer v01.06.02 AS Page 9ff
-[enum uint 6 'ExtendedAPCI'
- ['0x00' OPEN_ROUTING_TABLE_REQUEST_PDU]
- ['0x01' READ_ROUTING_TABLE_REQUEST_PDU]
- ['0x02' READ_ROUTING_TABLE_RESPONSE_PDU]
- ['0x03' WRITE_ROUTING_TABLE_REQUEST_PDU]
- ['0x08' READ_ROUTER_MEMORY_REQUEST_PDU]
- ['0x09' READ_ROUTER_MEMORY_RESPONSE_PDU]
- ['0x0A' WRITE_ROUTER_MEMORY_REQUEST_PDU]
- ['0x0D' READ_ROUTER_STATUS_REQUEST_PDU]
- ['0x0E' READ_ROUTER_STATUS_RESPONSE_PDU]
- ['0x0F' WRITE_ROUTER_STATUS_REQUEST_PDU]
-
- ['0x10' MEMORY_BIT_WRITE_PDU]
-
- ['0x11' AUTHORIZE_REQUEST_PDU]
- ['0x12' AUTHORIZE_RESPONSE_PDU]
- ['0x13' KEY_WRITE_PDU]
- ['0x14' KEY_RESPONSE_PDU]
-
- ['0x15' PROPERTY_VALUE_READ_PDU]
- ['0x16' PROPERTY_VALUE_RESPONSE_PDU]
- ['0x17' PROPERTY_VALUE_WRITE_PDU]
- ['0x18' PROPERTY_DESCRIPTION_READ_PDU]
- ['0x19' PROPERTY_DESCRIPTION_RESPONSE_PDU]
-
- ['0x1A' NETWORK_PARAMETER_READ_PDU]
- ['0x1B' NETWORK_PARAMETER_RESPONSE_PDU]
-
- ['0x1C' INDIVIDUAL_ADDRESS_SERIAL_NUMBER_READ_PDU]
- ['0x1D' INDIVIDUAL_ADDRESS_SERIAL_NUMBER_RESPONSE_PDU]
- ['0x1E' INDIVIDUAL_ADDRESS_SERIAL_NUMBER_WRITE_PDU]
-
- ['0x20' DOMAIN_ADDRESS_WRITE]
- ['0x21' DOMAIN_ADDRESS_READ]
- ['0x22' DOMAIN_ADDRESS_RESPONSE]
- ['0x23' DOMAIN_ADDRESS_SELECTIVE_READ]
-
- ['0x24' NETWORK_PARAMETER_WRITE]
-
- ['0x25' LINK_READ]
- ['0x26' LINK_RESPONSE]
- ['0x27' LINK_WRITE]
-
- ['0x28' GROUP_PROPERTY_VALUE_READ]
- ['0x29' GROUP_PROPERTY_VALUE_RESPONSE]
- ['0x2A' GROUP_PROPERTY_VALUE_WRITE]
- ['0x2B' GROUP_PROPERTY_VALUE_INFO_REPORT]
-
- ['0x2C' DOMAIN_ADDRESS_SERIAL_NUMBER_READ]
- ['0x2D' DOMAIN_ADDRESS_SERIAL_NUMBER_RESPONSE]
- ['0x2E' DOMAIN_ADDRESS_SERIAL_NUMBER_WRITE]
-
- ['0x30' FILE_STREAM_INFO_REPORT]
-]
-
[enum uint 8 'SupportedPhysicalMedia' [string 'description', bit 'knxSupport']
['0x00' OTHER ['used_for_undefined_physical_medium', 'true']]
['0x01' OIL_METER ['measures_volume_of_oil', 'true']]
@@ -1679,7 +672,7 @@
// The definition of the constants for medium type in the device descriptor differs from that of the other parts
// 03_05_01 Resources v01.09.03 AS.pdf Page 22
-[enum uint 4 DeviceDescriptorMediumType
+[enum uint 4 'DeviceDescriptorMediumType'
['0x0' TP1 ]
['0x1' PL110 ]
['0x2' RF ]
@@ -1689,20 +682,20 @@
]
// 03_05_01 Resources v01.09.03 AS.pdf Page 22
-[enum uint 8 FirmwareType
- ['0xAF' NONE ]
- ['0x00' BCU_1 ]
- ['0x01' BCU_1_SYSTEM_1 ]
- ['0x02' BCU_2_SYSTEM_2 ]
- ['0x70' BIM_M112 ]
- ['0x7B' SYSTEM_B ]
- ['0x81' IR_DECODER ]
- ['0x90' MEDIA_COUPLER_PL_TP ]
- ['0x91' COUPLER ]
- ['0x20' RF_BI_DIRECTIONAL_DEVICES ]
- ['0x21' RF_UNI_DIRECTIONAL_DEVICES]
- ['0x' SYSTEM_300 ]
- ['0x' SYSTEM_7 ]
+[enum uint 4 'FirmwareType' [uint 8 'code']
+ ['0x1' NONE ['0xAF']]
+ ['0x2' BCU_1 ['0x00']]
+ ['0x3' BCU_1_SYSTEM_1 ['0x01']]
+ ['0x4' BCU_2_SYSTEM_2 ['0x02']]
+ ['0x5' BIM_M112 ['0x70']]
+ ['0x6' SYSTEM_B ['0x7B']]
+ ['0x7' IR_DECODER ['0x81']]
+ ['0x8' MEDIA_COUPLER_PL_TP ['0x90']]
+ ['0x9' COUPLER ['0x91']]
+ ['0xA' RF_BI_DIRECTIONAL_DEVICES ['0x01']]
+ ['0xB' RF_UNI_DIRECTIONAL_DEVICES['0x11']]
+ ['0xC' SYSTEM_300 ['0x30']]
+ ['0xD' SYSTEM_7 ['0x70']]
]
// Helper enum that binds the combinations of medium type and firmware
@@ -1735,12 +728,9 @@
['0x1900' PL110_MEDIA_COUPLER_PL_TP ['DeviceDescriptorMediumType.PL110', 'FirmwareType.MEDIA_COUPLER_PL_TP' ]]
['0x2010' RF_BI_DIRECTIONAL_DEVICES ['DeviceDescriptorMediumType.RF', 'FirmwareType.RF_BI_DIRECTIONAL_DEVICES' ]]
['0x2110' RF_UNI_DIRECTIONAL_DEVICES['DeviceDescriptorMediumType.RF', 'FirmwareType.RF_UNI_DIRECTIONAL_DEVICES']]
- // This should actually be BCU_1 and not BCU_1_SYSTEM_1, unfortunately the code seems to be different in this case
- ['0x3012' TP0_BCU_1 ['DeviceDescriptorMediumType.TP0', 'FirmwareType.BCU_1_SYSTEM_1' ]]
- // This should actually be BCU_1 and not BCU_1_SYSTEM_1, unfortunately the code seems to be different in this case
- ['0x4012' PL132_BCU_1 ['DeviceDescriptorMediumType.PL132', 'FirmwareType.BCU_1_SYSTEM_1' ]]
- // This should actually be SYSTEM7 and not BIM_M112, unfortunately the code seems to be the same in this case
- ['0x5705' KNX_IP_SYSTEM7 ['DeviceDescriptorMediumType.KNX_IP', 'FirmwareType.BIM_M112' ]]
+ ['0x3012' TP0_BCU_1 ['DeviceDescriptorMediumType.TP0', 'FirmwareType.BCU_1' ]]
+ ['0x4012' PL132_BCU_1 ['DeviceDescriptorMediumType.PL132', 'FirmwareType.BCU_1' ]]
+ ['0x5705' KNX_IP_SYSTEM7 ['DeviceDescriptorMediumType.KNX_IP', 'FirmwareType.SYSTEM_7' ]]
]
// 03_05_01 Resources v01.09.03 AS.pdf Page 23ff
diff --git a/protocols/knxnetip/src/main/xslt/knx-types.xsl b/protocols/knxnetip/src/main/xslt/knx-types.xsl
index 65a43f4..f3877a5 100644
--- a/protocols/knxnetip/src/main/xslt/knx-types.xsl
+++ b/protocols/knxnetip/src/main/xslt/knx-types.xsl
@@ -47,13 +47,13 @@
// specific language governing permissions and limitations
// under the License.
//
-[enum uint 16 'KnxDatapointType' [uint 16 'number', uint 8 'sizeInBits', string 'name']
+[enum uint 16 'KnxDatapointMainType' [uint 16 'number', uint 8 'sizeInBits', string 'name']
['0' DPT_UNKNOWN ['0', '0', '"Unknown Datapoint Type"']]
<xsl:apply-templates select="knx:KNX/knx:MasterData/knx:DatapointTypes/knx:DatapointType"/>
]
-[enum uint 32 'KnxDatapointSubtype' [uint 16 'number', KnxDatapointType 'datapointType', string 'name']
- ['0' DPST_UNKNOWN ['0', 'KnxDatapointType.DPT_UNKNOWN', '"Unknown Datapoint Subtype"']]
+[enum uint 32 'KnxDatapointType' [uint 16 'number', KnxDatapointType 'datapointType', string 'name']
+ ['0' DPT_UNKNOWN ['0', 'KnxDatapointType.DPT_UNKNOWN', '"Unknown Datapoint Subtype"']]
<xsl:apply-templates select="knx:KNX/knx:MasterData/knx:DatapointTypes/knx:DatapointType/knx:DatapointSubtypes/knx:DatapointSubtype"/>
]
@@ -77,6 +77,16 @@
['0' M_UNKNOWN ['0', '"Unknown Manufacturer"']]
<xsl:apply-templates select="knx:KNX/knx:MasterData/knx:Manufacturers/knx:Manufacturer"/>
]
+
+[dataIo 'KnxDatapoint' [KnxDatapointType 'datapointType']
+ [typeSwitch 'datapointType'
+ <xsl:for-each select="knx:KNX/knx:MasterData/knx:DatapointTypes/knx:DatapointType/knx:DatapointSubtypes/knx:DatapointSubtype">
+ <xsl:call-template name="generateDataIoEntry">
+ <xsl:with-param name="datapointSubtype" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ ]
+]
</xsl:template>
<xsl:template match="knx:DatapointType">
@@ -90,8 +100,8 @@
<xsl:template match="knx:DatapointSubtype">
<xsl:variable name="datapointSubtypeId">
<xsl:choose>
- <xsl:when test="fn:starts-with(@Name, 'DPT')">DPST_<xsl:value-of select="fn:substring-after(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(@Name, '\[', '_'), '\]', ''), '³', '_3'), 'µ', 'y'), '/', ''), '-', '_'), 'DPT_')"/></xsl:when>
- <xsl:otherwise>DPST_<xsl:for-each select="tokenize(@Name, ' ')"><xsl:value-of select="concat(upper-case(substring(.,1,1)), substring(., 2))"/><xsl:if test="position()!=last()">_</xsl:if></xsl:for-each></xsl:otherwise>
+ <xsl:when test="fn:starts-with(@Name, 'DPT')">DPT_<xsl:value-of select="fn:substring-after(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(@Name, '\[', '_'), '\]', ''), '³', '_3'), 'µ', 'y'), '/', ''), '-', '_'), 'DPT_')"/></xsl:when>
+ <xsl:otherwise>DPT_<xsl:for-each select="tokenize(@Name, ' ')"><xsl:value-of select="concat(upper-case(substring(.,1,1)), substring(., 2))"/><xsl:if test="position()!=last()">_</xsl:if></xsl:for-each></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="datapointTypeId">
@@ -185,4 +195,245 @@
<xsl:value-of select="fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(normalize-space($cleanedText2),' ', '_'), '&', 'AND'), '-', '_'), ' ', '_'), '\.', '_'), ',', '_'), '\+', 'Plus'), '/', '_'), 'Ä', 'AE'), 'Ö', 'OE'), 'Ü', 'UE'), 'ß', 'SS'), ':', '_')"/>
</xsl:template>
+ <xsl:template name="generateDataIoEntry">
+ <xsl:param name="datapointSubtype"/>
+ <xsl:variable name="datapointSubtypeId">
+ <xsl:choose>
+ <xsl:when test="fn:starts-with(@Name, 'DPT')">DPT_<xsl:value-of select="fn:substring-after(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(fn:replace(@Name, '\[', '_'), '\]', ''), '³', '_3'), 'µ', 'y'), '/', ''), '-', '_'), 'DPT_')"/></xsl:when>
+ <xsl:otherwise>DPT_<xsl:for-each select="tokenize(@Name, ' ')"><xsl:value-of select="concat(upper-case(substring(.,1,1)), substring(., 2))"/><xsl:if test="position()!=last()">_</xsl:if></xsl:for-each></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="datapointValueType">
+ <xsl:choose>
+ <xsl:when test="count($datapointSubtype/knx:Format/knx:Bit|$datapointSubtype/knx:Format/knx:String|$datapointSubtype/knx:Format/knx:UnsignedInteger|$datapointSubtype/knx:Format/knx:SignedInteger|$datapointSubtype/knx:Format/knx:Float|$datapointSubtype/knx:Format/knx:Enumeration|$datapointSubtype/knx:Format/knx:RefType) > 1">Struct</xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:Bit">BOOL</xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:String">STRING</xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:UnsignedInteger">
+ <xsl:choose>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:UnsignedInteger/@Width) <= 8">USINT</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:UnsignedInteger/@Width) <= 16">UINT</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:UnsignedInteger/@Width) <= 32">UDINT</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:UnsignedInteger/@Width) <= 64">ULINT</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:SignedInteger">
+ <xsl:choose>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:SignedInteger/@Width) <= 8">SINT</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:SignedInteger/@Width) <= 16">INT</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:SignedInteger/@Width) <= 32">DINT</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:SignedInteger/@Width) <= 64">LINT</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:Float">
+ <xsl:choose>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:Float/@Width) <= 16">REAL</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:Float/@Width) <= 32">REAL</xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:Float/@Width) <= 64">LREAL</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:Enumeration">STRING</xsl:when>
+ <xsl:otherwise>Hurz:<xsl:value-of select="name($datapointSubtype/*)"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ ['KnxDatapointType.<xsl:value-of select="$datapointSubtypeId"/>' <xsl:value-of select="$datapointValueType"/>
+ <xsl:choose>
+ <xsl:when test="count($datapointSubtype/knx:Format/knx:Bit|$datapointSubtype/knx:Format/knx:String|$datapointSubtype/knx:Format/knx:UnsignedInteger|$datapointSubtype/knx:Format/knx:SignedInteger|$datapointSubtype/knx:Format/knx:Float|$datapointSubtype/knx:Format/knx:Enumeration|$datapointSubtype/knx:Format/knx:RefType) > 1">
+ <xsl:variable name="resolvedFields">
+ <xsl:call-template name="resolveTypeReferences">
+ <xsl:with-param name="fields" select="$datapointSubtype/knx:Format/*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="size">
+ <xsl:call-template name="fieldsSize">
+ <xsl:with-param name="fields" select="$resolvedFields/*"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="(($size mod 8) != 0) and (($size mod 8) <= 6)">
+ [reserved uint <xsl:value-of select="8 - ($size mod 8)"/> '0x00']
+ </xsl:when>
+ <xsl:when test="(($size mod 8) = 0) and (name($resolvedFields/*[1]) = 'Reserved') and (number($resolvedFields/*[1]/@Width) > 2)"></xsl:when>
+ <xsl:otherwise>
+ [reserved uint 8 '0x00']
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:for-each select="$resolvedFields/*">
+ <xsl:variable name="fieldType">
+ <xsl:choose>
+ <xsl:when test="name() = 'Reserved'">reserved</xsl:when>
+ <xsl:otherwise>simple</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="fieldName">
+ <xsl:choose>
+ <xsl:when test="name() = 'Reserved'">0x00</xsl:when>
+ <xsl:when test="@Name">
+ <xsl:call-template name="getFieldName">
+ <xsl:with-param name="fieldName" select="@Name"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@Set">
+ <xsl:call-template name="getFieldName">
+ <xsl:with-param name="fieldName" select="@Set"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@Unit">
+ <xsl:call-template name="getFieldName">
+ <xsl:with-param name="fieldName" select="@Unit"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Special case for one enum -->
+ <xsl:when test="@Id = 'DPST-6-20_F-6'">Mode</xsl:when>
+ <xsl:when test="@Id = 'DPST-15-0_F-1'">Value1</xsl:when>
+ <xsl:when test="@Id = 'DPST-15-0_F-1'">Value2</xsl:when>
+ <xsl:when test="@Id = 'DPST-15-0_F-1'">Value3</xsl:when>
+ <xsl:when test="@Id = 'DPST-15-0_F-1'">Value4</xsl:when>
+ <xsl:when test="@Id = 'DPST-15-0_F-1'">Value5</xsl:when>
+ <xsl:when test="@Id = 'DPST-15-0_F-1'">Value6</xsl:when>
+ <xsl:otherwise>Hurz</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="dataType">
+ <xsl:call-template name="getMspecType">
+ <xsl:with-param name="field" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ [<xsl:value-of select="$fieldType"/><xsl:text disable-output-escaping="yes"> </xsl:text><xsl:value-of select="$dataType"/> '<xsl:value-of select="$fieldName"/>']
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:Bit">
+ [reserved uint 7 '0x00']
+ [simple bit 'value']
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:String">
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:String/@Encoding = 'us-ascii'">ASCII</xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:String/@Encoding = 'iso-8859-1'">ISO-8859-1</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ [reserved uint 8 '0x0']
+ [simple string <xsl:value-of select="$datapointSubtype/knx:Format/knx:String/@Width"/> '<xsl:value-of select="$encoding"/>' 'value']
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:UnsignedInteger">
+ <xsl:choose>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:UnsignedInteger/@Width) > 6">
+ [reserved uint 8 '0x00']
+ </xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:UnsignedInteger/@Width) < 6">
+ [reserved uint <xsl:value-of select="6 - fn:number($datapointSubtype/knx:Format/knx:UnsignedInteger/@Width)"/> '0x00']
+ </xsl:when>
+ </xsl:choose>
+ [simple uint <xsl:value-of select="$datapointSubtype/knx:Format/knx:UnsignedInteger/@Width"/> 'value']
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:SignedInteger">
+ <xsl:choose>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:SignedInteger/@Width) > 6">
+ [reserved uint 8 '0x00']
+ </xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:SignedInteger/@Width) < 6">
+ [reserved uint <xsl:value-of select="6 - fn:number($datapointSubtype/knx:Format/knx:SignedInteger/@Width)"/> '0x00']
+ </xsl:when>
+ </xsl:choose>
+ [simple int <xsl:value-of select="$datapointSubtype/knx:Format/knx:SignedInteger/@Width"/> 'value']
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:Float">
+ [reserved uint 8 '0x00']
+ <xsl:choose>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:Float/@Width) = 16">
+ [simple float 4.11 'value']
+ </xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:Float/@Width) = 32">
+ [simple float 8.23 'value']
+ </xsl:when>
+ <xsl:when test="fn:number($datapointSubtype/knx:Format/knx:Float/@Width) = 64">
+ [simple float 11.52 'value']
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$datapointSubtype/knx:Format/knx:Enumeration"></xsl:when>
+ </xsl:choose>
+ ]
+ </xsl:template>
+
+ <xsl:template name="resolveTypeReferences">
+ <xsl:param name="fields"/>
+ <xsl:for-each select="$fields">
+ <xsl:choose>
+ <xsl:when test="name(.) = 'RefType'">
+ <xsl:variable name="curNode" select="."/>
+ <xsl:copy-of select="//*[@Id = $curNode/@RefId]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="getMspecType">
+ <xsl:param name="field"/>
+ <xsl:choose>
+ <xsl:when test="name($field) = 'Bit'">bit</xsl:when>
+ <xsl:when test="name($field) = 'String'">
+ <xsl:variable name="encoding">
+ <xsl:choose>
+ <xsl:when test="$field/@Encoding = 'us-ascii'">ASCII</xsl:when>
+ <xsl:when test="$field/@Encoding = 'iso-8859-1'">ISO-8859-1</xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ string <xsl:value-of select="$field/@Width"/> '<xsl:value-of select="$encoding"/>'</xsl:when>
+ <xsl:when test="name($field) = 'UnsignedInteger'">uint <xsl:value-of select="$field/@Width"/></xsl:when>
+ <xsl:when test="name($field) = 'SignedInteger'">int <xsl:value-of select="$field/@Width"/></xsl:when>
+ <xsl:when test="name($field) = 'Float'">
+ <xsl:choose>
+ <xsl:when test="$field/@Width = 16">float 4.11</xsl:when>
+ <xsl:when test="$field/@Width = 32">float 8.23</xsl:when>
+ <xsl:when test="$field/@Width = 64">float 11.52</xsl:when>
+ <xsl:otherwise>hurz</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="name($field) = 'Enumeration'">uint <xsl:value-of select="$field/@Width"/></xsl:when>
+ <xsl:when test="name($field) = 'Reserved'">uint <xsl:value-of select="$field/@Width"/></xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="getFieldName">
+ <xsl:param name="fieldName"/>
+ <xsl:variable name="cleanedName" select="fn:replace(fn:replace($fieldName, '%', 'Percent'), '[^a-zA-Z0-9]', ' ')"/>
+ <xsl:for-each select="fn:tokenize($cleanedName, ' ')">
+ <xsl:choose>
+ <xsl:when test="fn:string-length(.) = 1"><xsl:value-of select="fn:upper-case(.)"/></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="firstLetter" select="fn:upper-case(fn:substring(., 1, 1))"/>
+ <xsl:variable name="rest" select="fn:lower-case(fn:substring(., 2))"/>
+ <xsl:value-of select="fn:concat($firstLetter, $rest)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="fieldsSize">
+ <xsl:param name="fields"/>
+ <xsl:choose>
+ <xsl:when test="count($fields) > 1">
+ <xsl:variable name="restSize">
+ <xsl:call-template name="fieldsSize">
+ <xsl:with-param name="fields" select="$fields[position() > 1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="name($fields[1]) = 'Bit'"><xsl:value-of select="1 + $restSize"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="number($fields[1]/@Width) + $restSize"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="name($fields[1]) = 'Bit'"><xsl:value-of select="1"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="number($fields[1]/@Width)"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
</xsl:stylesheet>
\ No newline at end of file