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 2023/10/23 21:14:15 UTC
[plc4x] 01/01: feat: Moved the code-generation into a separate profile in preparation to supporting reproducible builds
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/code-generation-in-profile
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit f6708c21035f4a0fff0b7b9ff287946ee95c81f9
Author: Christofer Dutz <cd...@apache.org>
AuthorDate: Mon Oct 23 23:14:05 2023 +0200
feat: Moved the code-generation into a separate profile in preparation to supporting reproducible builds
---
plc4c/pom.xml | 225 +-
plc4go/pom.xml | 365 +-
plc4j/drivers/ab-eth/pom.xml | 48 +-
plc4j/drivers/ads/pom.xml | 74 +-
plc4j/drivers/bacnet/pom.xml | 61 +-
plc4j/drivers/c-bus/pom.xml | 58 +-
plc4j/drivers/can/pom.xml | 148 +-
plc4j/drivers/canopen/pom.xml | 169 +-
plc4j/drivers/eip/pom.xml | 54 +-
plc4j/drivers/firmata/pom.xml | 48 +-
plc4j/drivers/iec-60870/pom.xml | 48 +-
plc4j/drivers/knxnetip/pom.xml | 48 +-
plc4j/drivers/modbus/pom.xml | 48 +-
plc4j/drivers/opcua/pom.xml | 48 +-
plc4j/drivers/open-protocol/pom.xml | 48 +-
plc4j/drivers/plc4x/pom.xml | 50 +-
plc4j/drivers/profinet-ng/pom.xml | 58 +-
plc4j/drivers/profinet/pom.xml | 58 +-
plc4j/drivers/s7/pom.xml | 48 +-
plc4j/drivers/simulated/pom.xml | 54 +-
plc4j/tools/plc4x-server/pom.xml | 50 +-
plc4j/transports/socketcan/pom.xml | 86 +-
plc4net/pom.xml | 52 +-
pom.xml | 12 +-
protocols/bacnetip/pom.xml | 167 +-
.../bacnetip/bacnet-bit-strings-tagged.mspec | 152 +
.../protocols/bacnetip/bacnet-enums-tagged.mspec | 842 +
.../bacnetip/bacnet-private-enums-tagged.mspec | 568 +
.../protocols/bacnetip/bacnet-vendorids.mspec | 1492 ++
.../bacnetip/src/main/script/getVendorIds.groovy | 8 +-
.../src/main/script/produceTaggedBitStrings.groovy | 8 +-
.../src/main/script/produceTaggedEnums.groovy | 6 +-
.../main/script/produceTaggedPrivateEnums.groovy | 6 +-
protocols/knxnetip/pom.xml | 156 +-
.../protocols/knxnetip/knx-master-data.mspec | 4700 ++++
protocols/knxnetip/src/main/xslt/knx-types.xsl | 3 +
protocols/opcua/pom.xml | 320 +-
.../generated/protocols/opcua/opc-manual.mspec | 3224 +++
.../generated/protocols/opcua/opc-services.mspec | 21209 +++++++++++++++++++
.../generated/protocols/opcua/opc-status.mspec | 290 +
.../main/generated/protocols/opcua/opc-types.mspec | 23 +
protocols/opcua/src/main/xslt/opc-manual.xsl | 21 +
protocols/opcua/src/main/xslt/opc-services.xsl | 20 +
protocols/opcua/src/main/xslt/opc-status.xsl | 20 +
protocols/opcua/src/main/xslt/opc-types.xsl | 22 +-
.../plc4py/protocols/modbus/readwrite/DataItem.py | 778 +-
.../protocols/modbus/readwrite/DriverType.py | 7 +-
.../plc4py/protocols/modbus/readwrite/ModbusADU.py | 66 +-
.../protocols/modbus/readwrite/ModbusAsciiADU.py | 63 +-
.../protocols/modbus/readwrite/ModbusConstants.py | 28 +-
.../protocols/modbus/readwrite/ModbusDataType.py | 62 +-
.../ModbusDeviceInformationConformityLevel.py | 7 +-
.../readwrite/ModbusDeviceInformationLevel.py | 7 +-
.../ModbusDeviceInformationMoreFollows.py | 7 +-
.../readwrite/ModbusDeviceInformationObject.py | 27 +-
.../protocols/modbus/readwrite/ModbusErrorCode.py | 7 +-
.../plc4py/protocols/modbus/readwrite/ModbusPDU.py | 486 +-
.../modbus/readwrite/ModbusPDUDiagnosticRequest.py | 37 +-
.../readwrite/ModbusPDUDiagnosticResponse.py | 37 +-
.../protocols/modbus/readwrite/ModbusPDUError.py | 41 +-
.../ModbusPDUGetComEventCounterRequest.py | 25 +-
.../ModbusPDUGetComEventCounterResponse.py | 41 +-
.../readwrite/ModbusPDUGetComEventLogRequest.py | 25 +-
.../readwrite/ModbusPDUGetComEventLogResponse.py | 56 +-
.../ModbusPDUMaskWriteHoldingRegisterRequest.py | 52 +-
.../ModbusPDUMaskWriteHoldingRegisterResponse.py | 52 +-
.../modbus/readwrite/ModbusPDUReadCoilsRequest.py | 41 +-
.../modbus/readwrite/ModbusPDUReadCoilsResponse.py | 29 +-
.../ModbusPDUReadDeviceIdentificationRequest.py | 64 +-
.../ModbusPDUReadDeviceIdentificationResponse.py | 166 +-
.../ModbusPDUReadDiscreteInputsRequest.py | 41 +-
.../ModbusPDUReadDiscreteInputsResponse.py | 33 +-
.../ModbusPDUReadExceptionStatusRequest.py | 29 +-
.../ModbusPDUReadExceptionStatusResponse.py | 32 +-
.../readwrite/ModbusPDUReadFifoQueueRequest.py | 40 +-
.../readwrite/ModbusPDUReadFifoQueueResponse.py | 39 +-
.../readwrite/ModbusPDUReadFileRecordRequest.py | 43 +-
.../ModbusPDUReadFileRecordRequestItem.py | 50 +-
.../readwrite/ModbusPDUReadFileRecordResponse.py | 43 +-
.../ModbusPDUReadFileRecordResponseItem.py | 43 +-
.../ModbusPDUReadHoldingRegistersRequest.py | 45 +-
.../ModbusPDUReadHoldingRegistersResponse.py | 33 +-
.../ModbusPDUReadInputRegistersRequest.py | 41 +-
.../ModbusPDUReadInputRegistersResponse.py | 33 +-
...sPDUReadWriteMultipleHoldingRegistersRequest.py | 81 +-
...PDUReadWriteMultipleHoldingRegistersResponse.py | 33 +-
.../readwrite/ModbusPDUReportServerIdRequest.py | 25 +-
.../readwrite/ModbusPDUReportServerIdResponse.py | 29 +-
.../readwrite/ModbusPDUWriteFileRecordRequest.py | 43 +-
.../ModbusPDUWriteFileRecordRequestItem.py | 55 +-
.../readwrite/ModbusPDUWriteFileRecordResponse.py | 43 +-
.../ModbusPDUWriteFileRecordResponseItem.py | 55 +-
.../ModbusPDUWriteMultipleCoilsRequest.py | 49 +-
.../ModbusPDUWriteMultipleCoilsResponse.py | 45 +-
...odbusPDUWriteMultipleHoldingRegistersRequest.py | 51 +-
...dbusPDUWriteMultipleHoldingRegistersResponse.py | 47 +-
.../readwrite/ModbusPDUWriteSingleCoilRequest.py | 37 +-
.../readwrite/ModbusPDUWriteSingleCoilResponse.py | 37 +-
.../ModbusPDUWriteSingleRegisterRequest.py | 41 +-
.../ModbusPDUWriteSingleRegisterResponse.py | 41 +-
.../protocols/modbus/readwrite/ModbusRtuADU.py | 60 +-
.../protocols/modbus/readwrite/ModbusTcpADU.py | 91 +-
.../protocols/simulated/readwrite/DataItem.py | 745 +-
.../plc4py/protocols/simulated/readwrite/Dummy.py | 24 +-
.../simulated/readwrite/SimulatedDataTypeSizes.py | 62 +-
sandbox/plc4py/pom.xml | 76 +-
sandbox/test-java-df1-driver/pom.xml | 57 +-
107 files changed, 35929 insertions(+), 3869 deletions(-)
diff --git a/plc4c/pom.xml b/plc4c/pom.xml
index 5104d8ed7c..cb725c77ff 100644
--- a/plc4c/pom.xml
+++ b/plc4c/pom.xml
@@ -42,66 +42,6 @@
<option.with-proxies>OFF</option.with-proxies>
</properties>
- <profiles>
- <!-- When running on jenkins, download the sonar build-wrapper, so we can do a code analysis -->
- <profile>
- <id>jenkins-build</id>
- <!-- This is needed by the groovy hack script -->
- <properties>
- <cmake.root>${project.build.directory}/dependency/cmake/bin</cmake.root>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>com.googlecode.maven-download-plugin</groupId>
- <artifactId>download-maven-plugin</artifactId>
- <executions>
- <!-- Get the build-wrapper from our sonarcloud server -->
- <execution>
- <id>get-build-wrapper</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <skipCache>true</skipCache>
- <url>https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip</url>
- <unpack>true</unpack>
- <outputDirectory>${project.build.directory}</outputDirectory>
- <skipCache>true</skipCache>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.gmaven</groupId>
- <artifactId>groovy-maven-plugin</artifactId>
- <executions>
- <!-- rename the cmake binary and generate a script that adds the sonar build-wrapper -->
- <execution>
- <id>modify-cmake</id>
- <phase>process-test-sources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <source>${project.basedir}/SonarcloudBuildWrapperHack.groovy</source>
- </configuration>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>org.apache.groovy</groupId>
- <artifactId>groovy</artifactId>
- <version>${groovy.version}</version>
- </dependency>
- </dependencies>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
<build>
<plugins>
<plugin>
@@ -140,55 +80,6 @@
</execution-->
</executions>
</plugin>
- <!--
- Generate the driver code.
- -->
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver-modbus</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>modbus</protocolName>
- <languageName>c</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/generated-sources</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-plc4x</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>plc4x</protocolName>
- <protocolVersion>0</protocolVersion>
- <languageName>c</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/generated-sources</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-s7</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>s7</protocolName>
- <languageName>c</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/generated-sources</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<!-- Transform the ParserSerializer tests into c code -->
<plugin>
@@ -412,4 +303,120 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <!--
+ Generate the driver code.
+ -->
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver-modbus</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>modbus</protocolName>
+ <languageName>c</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/generated-sources</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-plc4x</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>plc4x</protocolName>
+ <protocolVersion>0</protocolVersion>
+ <languageName>c</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/generated-sources</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-s7</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>s7</protocolName>
+ <languageName>c</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/generated-sources</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <!-- When running on jenkins, download the sonar build-wrapper, so we can do a code analysis -->
+ <profile>
+ <id>jenkins-build</id>
+ <!-- This is needed by the groovy hack script -->
+ <properties>
+ <cmake.root>${project.build.directory}/dependency/cmake/bin</cmake.root>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.googlecode.maven-download-plugin</groupId>
+ <artifactId>download-maven-plugin</artifactId>
+ <executions>
+ <!-- Get the build-wrapper from our sonarcloud server -->
+ <execution>
+ <id>get-build-wrapper</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <skipCache>true</skipCache>
+ <url>https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip</url>
+ <unpack>true</unpack>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ <skipCache>true</skipCache>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>groovy-maven-plugin</artifactId>
+ <executions>
+ <!-- rename the cmake binary and generate a script that adds the sonar build-wrapper -->
+ <execution>
+ <id>modify-cmake</id>
+ <phase>process-test-sources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/SonarcloudBuildWrapperHack.groovy</source>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.groovy</groupId>
+ <artifactId>groovy</artifactId>
+ <version>${groovy.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
\ No newline at end of file
diff --git a/plc4go/pom.xml b/plc4go/pom.xml
index fcd6970613..3ca00ae4fb 100644
--- a/plc4go/pom.xml
+++ b/plc4go/pom.xml
@@ -192,185 +192,6 @@
</executions>
</plugin>
- <!--
- Generate the driver code.
- -->
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver-ab-eth</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>ab-eth</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-ads</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>ads</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-ads-discovery</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>ads.discovery</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-bacnetip</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>bacnetip</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-c-bus</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>c-bus</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-df1</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>df1</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-eip</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>eip</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-firmata</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>firmata</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-knxnetip</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>knxnetip</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-modbus</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>modbus</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-opcua</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>opcua</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-s7</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>s7</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-driver-simulated</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>simulated</protocolName>
- <languageName>go</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/protocols</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
<plugin>
<groupId>com.igormaznitsa</groupId>
<artifactId>mvn-golang-wrapper</artifactId>
@@ -730,6 +551,192 @@
<go.cover.flag>-v</go.cover.flag>
</properties>
</profile>
+
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <!--
+ Generate the driver code.
+ -->
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver-ab-eth</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>ab-eth</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-ads</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>ads</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-ads-discovery</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>ads.discovery</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-bacnetip</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>bacnetip</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-c-bus</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>c-bus</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-df1</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>df1</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-eip</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>eip</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-firmata</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>firmata</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-knxnetip</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>knxnetip</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-modbus</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>modbus</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-opcua</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>opcua</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-s7</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>s7</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-driver-simulated</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>simulated</protocolName>
+ <languageName>go</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/protocols</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
\ No newline at end of file
diff --git a/plc4j/drivers/ab-eth/pom.xml b/plc4j/drivers/ab-eth/pom.xml
index 787c3980b2..1b97773cfa 100644
--- a/plc4j/drivers/ab-eth/pom.xml
+++ b/plc4j/drivers/ab-eth/pom.xml
@@ -32,25 +32,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>test</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>ab-eth</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -169,4 +150,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>test</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>ab-eth</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/ads/pom.xml b/plc4j/drivers/ads/pom.xml
index 01d59903ba..3a7f74cee5 100644
--- a/plc4j/drivers/ads/pom.xml
+++ b/plc4j/drivers/ads/pom.xml
@@ -32,38 +32,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-ams-structs</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>ads</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- <execution>
- <id>generate-ams-discovery-structs</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>ads.discovery</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -205,4 +173,46 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-ams-structs</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>ads</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-ams-discovery-structs</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>ads.discovery</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/bacnet/pom.xml b/plc4j/drivers/bacnet/pom.xml
index 6d195b426d..7b679a4b58 100644
--- a/plc4j/drivers/bacnet/pom.xml
+++ b/plc4j/drivers/bacnet/pom.xml
@@ -30,35 +30,6 @@
<name>PLC4J: Driver: BACNet/IP Driver</name>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-bacnet-structs</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>bacnetip</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- <options>
- <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
- <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
- <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
- </options>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
<dependencies>
<dependency>
<groupId>org.apache.plc4x</groupId>
@@ -188,6 +159,38 @@
</plugins>
</build>
</profile>
+
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-bacnet-structs</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>bacnetip</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ <options>
+ <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+ <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+ <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+ </options>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
diff --git a/plc4j/drivers/c-bus/pom.xml b/plc4j/drivers/c-bus/pom.xml
index f95fe4b95c..e3440aa105 100644
--- a/plc4j/drivers/c-bus/pom.xml
+++ b/plc4j/drivers/c-bus/pom.xml
@@ -33,30 +33,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>test</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>c-bus</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- <options>
- <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
- <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
- <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
- </options>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -180,4 +156,38 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>test</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>c-bus</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ <options>
+ <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+ <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+ <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+ </options>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/can/pom.xml b/plc4j/drivers/can/pom.xml
index 5c483c6efd..61d8e59824 100644
--- a/plc4j/drivers/can/pom.xml
+++ b/plc4j/drivers/can/pom.xml
@@ -32,6 +32,57 @@
<packaging>bundle</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.tooling</groupId>
+ <artifactId>karaf-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-feature-xml</id>
+ <phase>compile</phase>
+ <goals>
+ <!-- Generate the feature.xml -->
+ <goal>features-generate-descriptor</goal>
+ <!-- Check the feature.xml -->
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <enableGeneration>true</enableGeneration>
+ <aggregateFeatures>true</aggregateFeatures>
+ </configuration>
+ </execution>
+ <execution>
+ <id>build-kar</id>
+ <phase>package</phase>
+ <goals>
+ <!--
+ Build a kar archive (Jar containing the feature.xml
+ as well as the module content and it's dependencies.
+ -->
+ <goal>kar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+ <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
+ <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.can.CANPlcDriver</Export-Service>
+ <Import-Package>
+ *
+ </Import-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
<dependencies>
<dependency>
<groupId>org.apache.plc4x</groupId>
@@ -104,74 +155,33 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>canopen</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>genericcan</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.karaf.tooling</groupId>
- <artifactId>karaf-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-feature-xml</id>
- <phase>compile</phase>
- <goals>
- <!-- Generate the feature.xml -->
- <goal>features-generate-descriptor</goal>
- <!-- Check the feature.xml -->
- <goal>verify</goal>
- </goals>
- <configuration>
- <enableGeneration>true</enableGeneration>
- <aggregateFeatures>true</aggregateFeatures>
- </configuration>
- </execution>
- <execution>
- <id>build-kar</id>
- <phase>package</phase>
- <goals>
- <!--
- Build a kar archive (Jar containing the feature.xml
- as well as the module content and it's dependencies.
- -->
- <goal>kar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
- <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
- <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.can.CANPlcDriver</Export-Service>
- <Import-Package>
- *
- </Import-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>canopen</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>genericcan</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git a/plc4j/drivers/canopen/pom.xml b/plc4j/drivers/canopen/pom.xml
index d43beb2f27..2ce989666e 100644
--- a/plc4j/drivers/canopen/pom.xml
+++ b/plc4j/drivers/canopen/pom.xml
@@ -32,6 +32,67 @@
<packaging>bundle</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.tooling</groupId>
+ <artifactId>karaf-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-feature-xml</id>
+ <phase>compile</phase>
+ <goals>
+ <!-- Generate the feature.xml -->
+ <goal>features-generate-descriptor</goal>
+ <!-- Check the feature.xml -->
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <enableGeneration>true</enableGeneration>
+ <aggregateFeatures>true</aggregateFeatures>
+ </configuration>
+ </execution>
+ <execution>
+ <id>build-kar</id>
+ <phase>package</phase>
+ <goals>
+ <!--
+ Build a kar archive (Jar containing the feature.xml
+ as well as the module content and it's dependencies.
+ -->
+ <goal>kar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+ <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
+ <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.canopen.CANOpenPlcDriver</Export-Service>
+ <Import-Package>
+ *
+ </Import-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <usedDependencies combine.children="append">
+ <usedDependency>org.apache.plc4x:plc4x-code-generation-language-java</usedDependency>
+ <usedDependency>org.apache.plc4x:plc4x-protocols-canopen</usedDependency>
+ </usedDependencies>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
<dependencies>
<dependency>
<groupId>org.apache.plc4x</groupId>
@@ -117,85 +178,33 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>canopen</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>canopen</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.apache.karaf.tooling</groupId>
- <artifactId>karaf-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-feature-xml</id>
- <phase>compile</phase>
- <goals>
- <!-- Generate the feature.xml -->
- <goal>features-generate-descriptor</goal>
- <!-- Check the feature.xml -->
- <goal>verify</goal>
- </goals>
- <configuration>
- <enableGeneration>true</enableGeneration>
- <aggregateFeatures>true</aggregateFeatures>
- </configuration>
- </execution>
- <execution>
- <id>build-kar</id>
- <phase>package</phase>
- <goals>
- <!--
- Build a kar archive (Jar containing the feature.xml
- as well as the module content and it's dependencies.
- -->
- <goal>kar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
- <Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
- <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.canopen.CANOpenPlcDriver</Export-Service>
- <Import-Package>
- *
- </Import-Package>
- </instructions>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <configuration>
- <usedDependencies combine.children="append">
- <usedDependency>org.apache.plc4x:plc4x-code-generation-language-java</usedDependency>
- <usedDependency>org.apache.plc4x:plc4x-protocols-canopen</usedDependency>
- </usedDependencies>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>canopen</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>canopen</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git a/plc4j/drivers/eip/pom.xml b/plc4j/drivers/eip/pom.xml
index 4be52cc0b5..f8049ab1f0 100644
--- a/plc4j/drivers/eip/pom.xml
+++ b/plc4j/drivers/eip/pom.xml
@@ -33,28 +33,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>test</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>eip</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- <!--options>
- <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
- </options-->
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -185,4 +163,36 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>test</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>eip</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ <!--options>
+ <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+ </options-->
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/firmata/pom.xml b/plc4j/drivers/firmata/pom.xml
index b08ea01161..11bda29dea 100644
--- a/plc4j/drivers/firmata/pom.xml
+++ b/plc4j/drivers/firmata/pom.xml
@@ -31,25 +31,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>test</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>firmata</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -174,4 +155,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>test</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>firmata</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/iec-60870/pom.xml b/plc4j/drivers/iec-60870/pom.xml
index f63993b963..813f12e158 100644
--- a/plc4j/drivers/iec-60870/pom.xml
+++ b/plc4j/drivers/iec-60870/pom.xml
@@ -32,25 +32,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>iec-60870-5-104</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -178,4 +159,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>iec-60870-5-104</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/knxnetip/pom.xml b/plc4j/drivers/knxnetip/pom.xml
index 1a8693d75c..54f7e70214 100644
--- a/plc4j/drivers/knxnetip/pom.xml
+++ b/plc4j/drivers/knxnetip/pom.xml
@@ -31,25 +31,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>knxnetip</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -205,4 +186,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>knxnetip</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/modbus/pom.xml b/plc4j/drivers/modbus/pom.xml
index 216908e72b..77154e2022 100644
--- a/plc4j/drivers/modbus/pom.xml
+++ b/plc4j/drivers/modbus/pom.xml
@@ -32,25 +32,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>modbus</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -194,4 +175,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>modbus</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/opcua/pom.xml b/plc4j/drivers/opcua/pom.xml
index 314a759b78..52a25087d1 100644
--- a/plc4j/drivers/opcua/pom.xml
+++ b/plc4j/drivers/opcua/pom.xml
@@ -33,25 +33,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>opcua</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -250,4 +231,33 @@
</dependencies>
</dependencyManagement>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>opcua</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/open-protocol/pom.xml b/plc4j/drivers/open-protocol/pom.xml
index feecd03404..411314372b 100644
--- a/plc4j/drivers/open-protocol/pom.xml
+++ b/plc4j/drivers/open-protocol/pom.xml
@@ -32,25 +32,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>open-protocol</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -171,4 +152,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>open-protocol</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/plc4x/pom.xml b/plc4j/drivers/plc4x/pom.xml
index 129e5637a2..ea86536de9 100644
--- a/plc4j/drivers/plc4x/pom.xml
+++ b/plc4j/drivers/plc4x/pom.xml
@@ -33,26 +33,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>plc4x</protocolName>
- <protocolVersion>0</protocolVersion>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -189,4 +169,34 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>plc4x</protocolName>
+ <protocolVersion>0</protocolVersion>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/profinet-ng/pom.xml b/plc4j/drivers/profinet-ng/pom.xml
index b7a8e8fa92..c0ed06830e 100644
--- a/plc4j/drivers/profinet-ng/pom.xml
+++ b/plc4j/drivers/profinet-ng/pom.xml
@@ -32,30 +32,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>profinet</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- <options>
- <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
- <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
- <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
- </options>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -217,4 +193,38 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>profinet</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ <options>
+ <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+ <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+ <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+ </options>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/profinet/pom.xml b/plc4j/drivers/profinet/pom.xml
index 09c1045554..eb38e4cb42 100644
--- a/plc4j/drivers/profinet/pom.xml
+++ b/plc4j/drivers/profinet/pom.xml
@@ -32,30 +32,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>profinet</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- <options>
- <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
- <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
- <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
- </options>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -217,4 +193,38 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>profinet</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ <options>
+ <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
+ <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
+ <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
+ </options>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index beaed99889..b45a5e4c4d 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -33,25 +33,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>s7</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -222,4 +203,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>s7</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/drivers/simulated/pom.xml b/plc4j/drivers/simulated/pom.xml
index 2480dd40fe..97095f0d23 100644
--- a/plc4j/drivers/simulated/pom.xml
+++ b/plc4j/drivers/simulated/pom.xml
@@ -17,7 +17,8 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -33,25 +34,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>simulated</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
@@ -91,7 +73,8 @@
<instructions>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Bundle-Activator>org.apache.plc4x.java.osgi.DriverActivator</Bundle-Activator>
- <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.simulated.SimulatedDriver</Export-Service>
+ <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.simulated.SimulatedDriver
+ </Export-Service>
</instructions>
</configuration>
</plugin>
@@ -150,4 +133,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>simulated</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/plc4j/tools/plc4x-server/pom.xml b/plc4j/tools/plc4x-server/pom.xml
index ab38fc7f63..d6810b78bf 100644
--- a/plc4j/tools/plc4x-server/pom.xml
+++ b/plc4j/tools/plc4x-server/pom.xml
@@ -34,26 +34,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>plc4x</protocolName>
- <protocolVersion>0</protocolVersion>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
<!-- Build a fat jar containing all dependencies -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -190,4 +170,34 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>plc4x</protocolName>
+ <protocolVersion>0</protocolVersion>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
\ No newline at end of file
diff --git a/plc4j/transports/socketcan/pom.xml b/plc4j/transports/socketcan/pom.xml
index 6d582e95a7..c5e9b8975d 100644
--- a/plc4j/transports/socketcan/pom.xml
+++ b/plc4j/transports/socketcan/pom.xml
@@ -31,6 +31,26 @@
<name>PLC4J: Transports: SocketCAN</name>
<description>Base classes needed to implement plc4x drivers based on SocketCAN connections. Powered by javacan library.</description>
+ <build>
+ <plugins>
+ <!--
+ Generate an OSGI compatible MANIFEST file.
+ -->
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+ <Bundle-Activator>org.apache.plc4x.java.osgi.TransportActivator</Bundle-Activator>
+ <Export-Service>org.apache.plc4x.java.spi.transport.Transport,org.apache.plc4x.java.transport.socketcan.SocketCANTransport</Export-Service>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
<dependencies>
<dependency>
<groupId>org.apache.plc4x</groupId>
@@ -75,43 +95,33 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>socketcan</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>socketcan</protocolName>
- <languageName>java</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>src/main/generated</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!--
- Generate an OSGI compatible MANIFEST file.
- -->
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
- <Bundle-Activator>org.apache.plc4x.java.osgi.TransportActivator</Bundle-Activator>
- <Export-Service>org.apache.plc4x.java.spi.transport.Transport,org.apache.plc4x.java.transport.socketcan.SocketCANTransport</Export-Service>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>socketcan</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>socketcan</protocolName>
+ <languageName>java</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>src/main/generated</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git a/plc4net/pom.xml b/plc4net/pom.xml
index 2be19ede18..9fe1f3d49d 100644
--- a/plc4net/pom.xml
+++ b/plc4net/pom.xml
@@ -68,29 +68,6 @@
</executions>
</plugin>
- <!--
- Generate the driver code.
- -->
- <plugin>
- <groupId>org.apache.plc4x.plugins</groupId>
- <artifactId>plc4x-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-driver-knxnetip</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>generate-driver</goal>
- </goals>
- <configuration>
- <protocolName>knxnetip</protocolName>
- <languageName>C#</languageName>
- <outputFlavor>read-write</outputFlavor>
- <outputDir>${project.basedir}/drivers/knxnetip/src</outputDir>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
<!-- Build the project -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -137,4 +114,33 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.plc4x.plugins</groupId>
+ <artifactId>plc4x-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-driver-knxnetip</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate-driver</goal>
+ </goals>
+ <configuration>
+ <protocolName>knxnetip</protocolName>
+ <languageName>C#</languageName>
+ <outputFlavor>read-write</outputFlavor>
+ <outputDir>${project.basedir}/drivers/knxnetip/src</outputDir>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index c9f574a1ec..9bdd1a4c9b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,8 +166,6 @@
</properties>
<modules>
- <module>code-generation</module>
-
<!-- Definition of the protocol message formats -->
<module>protocols</module>
@@ -1053,9 +1051,6 @@
<groupId>org.apache.plc4x.plugins</groupId>
<artifactId>plc4x-maven-plugin</artifactId>
<version>${plc4x-code-generation.version}</version>
- <configuration>
- <skip>${skip-code-generation}</skip>
- </configuration>
</plugin>
<plugin>
@@ -1503,6 +1498,13 @@
</pluginRepositories>
<profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <modules>
+ <module>code-generation</module>
+ </modules>
+ </profile>
+
<!-- Allows skipping of the pre-flight-check as needed when deploying on jenkins -->
<profile>
<id>skip-prerequisite-check</id>
diff --git a/protocols/bacnetip/pom.xml b/protocols/bacnetip/pom.xml
index 8360deca6d..702d0fba24 100644
--- a/protocols/bacnetip/pom.xml
+++ b/protocols/bacnetip/pom.xml
@@ -32,6 +32,17 @@
<name>Protocols: BACNet/IP</name>
<description>Base protocol specifications for the BACNet/IP protocol</description>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/generated</directory>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ </build>
+
<dependencies>
<dependency>
<groupId>org.apache.plc4x</groupId>
@@ -46,83 +57,89 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <!-- Fetch the vendor ids which will be used to translate venmdor ids to readable names -->
- <!--
- We're intentionally not using the download plugin as this would either download only once
- and not get any updates or it would try downloading for every build. This however might result
- in getting banned on the bacnet server.
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <!-- Fetch the vendor ids which will be used to translate venmdor ids to readable names -->
+ <!--
+ We're intentionally not using the download plugin as this would either download only once
+ and not get any updates or it would try downloading for every build. This however might result
+ in getting banned on the bacnet server.
- So this script makes sure the bacnet-vendorid.mspec is updated at most every 24h
- -->
- <plugin>
- <groupId>org.codehaus.gmaven</groupId>
- <artifactId>groovy-maven-plugin</artifactId>
- <version>2.1.1</version>
- <executions>
- <!-- Do some pre-build checks and report any findings to the user -->
- <execution>
- <id>fetch-bacnet-vendor-ids</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <source>${project.basedir}/src/main/script/getVendorIds.groovy</source>
- </configuration>
- </execution>
- <execution>
- <id>generate-tagged-enums</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <source>${project.basedir}/src/main/script/produceTaggedEnums.groovy</source>
- </configuration>
- </execution>
- <execution>
- <id>generate-tagged-private-enums</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <source>${project.basedir}/src/main/script/produceTaggedPrivateEnums.groovy</source>
- </configuration>
- </execution>
- <execution>
- <id>generate-tagged-bit-strings</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
+ So this script makes sure the bacnet-vendorid.mspec is updated at most every 24h
+ -->
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>groovy-maven-plugin</artifactId>
+ <version>2.1.1</version>
+ <executions>
+ <!-- Do some pre-build checks and report any findings to the user -->
+ <execution>
+ <id>fetch-bacnet-vendor-ids</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/src/main/script/getVendorIds.groovy</source>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-tagged-enums</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/src/main/script/produceTaggedEnums.groovy</source>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-tagged-private-enums</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/src/main/script/produceTaggedPrivateEnums.groovy</source>
+ </configuration>
+ </execution>
+ <execution>
+ <id>generate-tagged-bit-strings</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/src/main/script/produceTaggedBitStrings.groovy</source>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.groovy</groupId>
+ <artifactId>groovy</artifactId>
+ <version>${groovy.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jsoup</groupId>
+ <artifactId>jsoup</artifactId>
+ <version>1.16.2</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
<configuration>
- <source>${project.basedir}/src/main/script/produceTaggedBitStrings.groovy</source>
+ <excludedGroups>just-output</excludedGroups>
</configuration>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>org.apache.groovy</groupId>
- <artifactId>groovy</artifactId>
- <version>${groovy.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jsoup</groupId>
- <artifactId>jsoup</artifactId>
- <version>1.16.2</version>
- </dependency>
- </dependencies>
- </plugin>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <excludedGroups>just-output</excludedGroups>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
\ No newline at end of file
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-bit-strings-tagged.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-bit-strings-tagged.mspec
new file mode 100644
index 0000000000..3e85b0e57b
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-bit-strings-tagged.mspec
@@ -0,0 +1,152 @@
+
+/*
+ * 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.
+ */
+
+ // Code generated by code-generation. DO NOT EDIT.
+
+[type BACnetDaysOfWeekTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit monday '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit tuesday '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+ [virtual bit wednesday '(COUNT(payload.data)>2)?payload.data[2]:false' ]
+ [virtual bit thursday '(COUNT(payload.data)>3)?payload.data[3]:false' ]
+ [virtual bit friday '(COUNT(payload.data)>4)?payload.data[4]:false' ]
+ [virtual bit saturday '(COUNT(payload.data)>5)?payload.data[5]:false' ]
+ [virtual bit sunday '(COUNT(payload.data)>6)?payload.data[6]:false' ]
+
+]
+
+[type BACnetEventTransitionBitsTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit toOffnormal '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit toFault '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+ [virtual bit toNormal '(COUNT(payload.data)>2)?payload.data[2]:false' ]
+
+]
+
+[type BACnetLimitEnableTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit lowLimitEnable '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit highLimitEnable '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+
+]
+
+[type BACnetLogStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit logDisabled '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit bufferPurged '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+ [virtual bit logInterrupted '(COUNT(payload.data)>2)?payload.data[2]:false' ]
+
+]
+
+[type BACnetObjectTypesSupportedTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit timeValue '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit notificationForwarder '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+ [virtual bit alertEnrollment '(COUNT(payload.data)>2)?payload.data[2]:false' ]
+ [virtual bit channel '(COUNT(payload.data)>3)?payload.data[3]:false' ]
+ [virtual bit lightingOutput '(COUNT(payload.data)>4)?payload.data[4]:false' ]
+ [virtual bit binaryLightingOutput '(COUNT(payload.data)>5)?payload.data[5]:false' ]
+ [virtual bit networkPort '(COUNT(payload.data)>6)?payload.data[6]:false' ]
+ [virtual bit elevatorGroup '(COUNT(payload.data)>7)?payload.data[7]:false' ]
+ [virtual bit escalator '(COUNT(payload.data)>8)?payload.data[8]:false' ]
+ [virtual bit lift '(COUNT(payload.data)>9)?payload.data[9]:false' ]
+
+]
+
+[type BACnetResultFlagsTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit firstItem '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit lastItem '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+ [virtual bit moreItems '(COUNT(payload.data)>2)?payload.data[2]:false' ]
+
+]
+
+[type BACnetServicesSupportedTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit writeGroup '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit subscribeCovPropertyMultiple '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+ [virtual bit confirmedCovNotificationMultiple '(COUNT(payload.data)>2)?payload.data[2]:false' ]
+ [virtual bit unconfirmedCovNotificationMultiple '(COUNT(payload.data)>3)?payload.data[3]:false' ]
+ [virtual bit whoIs '(COUNT(payload.data)>4)?payload.data[4]:false' ]
+ [virtual bit readRange '(COUNT(payload.data)>5)?payload.data[5]:false' ]
+ [virtual bit utcTimeSynchronization '(COUNT(payload.data)>6)?payload.data[6]:false' ]
+ [virtual bit lifeSafetyOperation '(COUNT(payload.data)>7)?payload.data[7]:false' ]
+ [virtual bit subscribeCovProperty '(COUNT(payload.data)>8)?payload.data[8]:false' ]
+ [virtual bit getEventInformation '(COUNT(payload.data)>9)?payload.data[9]:false' ]
+
+]
+
+[type BACnetStatusFlagsTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [simple BACnetTagPayloadBitString('header.actualLength')
+ payload ]
+ [virtual bit inAlarm '(COUNT(payload.data)>0)?payload.data[0]:false' ]
+ [virtual bit fault '(COUNT(payload.data)>1)?payload.data[1]:false' ]
+ [virtual bit overridden '(COUNT(payload.data)>2)?payload.data[2]:false' ]
+ [virtual bit outOfService '(COUNT(payload.data)>3)?payload.data[3]:false' ]
+
+]
+
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-enums-tagged.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-enums-tagged.mspec
new file mode 100644
index 0000000000..f95ce76289
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-enums-tagged.mspec
@@ -0,0 +1,842 @@
+
+/*
+ * 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.
+ */
+
+ // Code generated by code-generation. DO NOT EDIT.
+
+[type ErrorClassTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual ErrorClass
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, ErrorClass.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == ErrorClass.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type ErrorCodeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual ErrorCode
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, ErrorCode.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == ErrorCode.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAccessAuthenticationFactorDisableTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessAuthenticationFactorDisable
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessAuthenticationFactorDisable.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAccessAuthenticationFactorDisable.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAccessCredentialDisableTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessCredentialDisable
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessCredentialDisable.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAccessCredentialDisable.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAccessCredentialDisableReasonTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessCredentialDisableReason
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessCredentialDisableReason.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAccessCredentialDisableReason.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAccessEventTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessEvent
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessEvent.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAccessEvent.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAccessUserTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessUserType
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessUserType.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAccessUserType.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAccessZoneOccupancyStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessZoneOccupancyState
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAccessZoneOccupancyState.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAccessZoneOccupancyState.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAuthorizationExemptionTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAuthorizationExemption
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAuthorizationExemption.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAuthorizationExemption.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetAuthorizationModeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAuthorizationMode
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetAuthorizationMode.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetAuthorizationMode.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetBinaryLightingPVTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetBinaryLightingPV
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetBinaryLightingPV.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetBinaryLightingPV.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetDeviceStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetDeviceStatus
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetDeviceStatus.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetDeviceStatus.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetDoorAlarmStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetDoorAlarmState
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetDoorAlarmState.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetDoorAlarmState.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetDoorStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetDoorStatus
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetDoorStatus.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetDoorStatus.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetEngineeringUnitsTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetEngineeringUnits
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEngineeringUnits.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetEngineeringUnits.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetEscalatorFaultTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetEscalatorFault
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEscalatorFault.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetEscalatorFault.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetEscalatorModeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetEscalatorMode
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEscalatorMode.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetEscalatorMode.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetEscalatorOperationDirectionTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetEscalatorOperationDirection
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEscalatorOperationDirection.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetEscalatorOperationDirection.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetEventStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetEventState
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEventState.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetEventState.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetEventTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetEventType
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetEventType.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetEventType.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLifeSafetyModeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLifeSafetyMode
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLifeSafetyMode.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLifeSafetyMode.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLifeSafetyOperationTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLifeSafetyOperation
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLifeSafetyOperation.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLifeSafetyOperation.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLifeSafetyStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLifeSafetyState
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLifeSafetyState.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLifeSafetyState.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLiftCarDirectionTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLiftCarDirection
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftCarDirection.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLiftCarDirection.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLiftCarDriveStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLiftCarDriveStatus
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftCarDriveStatus.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLiftCarDriveStatus.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLiftCarModeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLiftCarMode
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftCarMode.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLiftCarMode.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLiftFaultTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLiftFault
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLiftFault.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLiftFault.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLightingOperationTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLightingOperation
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLightingOperation.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLightingOperation.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLightingTransitionTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLightingTransition
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLightingTransition.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLightingTransition.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetLoggingTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLoggingType
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetLoggingType.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetLoggingType.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetMaintenanceTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetMaintenance
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetMaintenance.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetMaintenance.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetNetworkPortCommandTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetNetworkPortCommand
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetNetworkPortCommand.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetNetworkPortCommand.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetNetworkTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetNetworkType
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetNetworkType.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetNetworkType.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetObjectTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetObjectType
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetObjectType.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetObjectType.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetProgramErrorTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetProgramError
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetProgramError.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetProgramError.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetPropertyIdentifierTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetPropertyIdentifier
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetPropertyIdentifier.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetPropertyIdentifier.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetRelationshipTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetRelationship
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetRelationship.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetRelationship.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetReliabilityTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetReliability
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetReliability.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetReliability.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetRestartReasonTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetRestartReason
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetRestartReason.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetRestartReason.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetSilencedStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetSilencedState
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetSilencedState.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetSilencedState.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
+[type BACnetVTClassTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetVTClass
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetVTClass.VENDOR_PROPRIETARY_VALUE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isProprietary?0:(header.actualLength * 8)' ]
+ [virtual bit isProprietary
+ 'value == BACnetVTClass.VENDOR_PROPRIETARY_VALUE' ]
+ [manual uint 32
+ proprietaryValue
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isProprietary)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, proprietaryValue, isProprietary)'
+ '_value.isProprietary?(header.actualLength * 8):0' ]
+]
+
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-private-enums-tagged.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-private-enums-tagged.mspec
new file mode 100644
index 0000000000..83d801968b
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-private-enums-tagged.mspec
@@ -0,0 +1,568 @@
+
+/*
+ * 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.
+ */
+
+ // Code generated by code-generation. DO NOT EDIT.
+
+[type BACnetActionTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAction
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAction.DIRECT)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetAccessPassbackModeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessPassbackMode
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccessPassbackMode.PASSBACK_OFF)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetAccessRuleLocationSpecifierTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessRuleLocationSpecifier
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccessRuleLocationSpecifier.SPECIFIED)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetAccessRuleTimeRangeSpecifierTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccessRuleTimeRangeSpecifier
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccessRuleTimeRangeSpecifier.SPECIFIED)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetAccumulatorRecordAccumulatorStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAccumulatorRecordAccumulatorStatus
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAccumulatorRecordAccumulatorStatus.NORMAL)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetAuthenticationFactorTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAuthenticationFactorType
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAuthenticationFactorType.UNDEFINED)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetAuthenticationStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetAuthenticationStatus
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetAuthenticationStatus.NOT_READY)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetBackupStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetBackupState
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetBackupState.IDLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetBinaryPVTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetBinaryPV
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetBinaryPV.INACTIVE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriorityTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestConfirmedTextMessageMessagePriority.NORMAL)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisableTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestDeviceCommunicationControlEnableDisable.ENABLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilterTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilter
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestGetEnrollmentSummaryAcknowledgementFilter.ALL)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilterTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilter
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestGetEnrollmentSummaryEventStateFilter.OFFNORMAL)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDeviceTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetConfirmedServiceRequestReinitializeDeviceReinitializedStateOfDevice.COLDSTART)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetDoorSecuredStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetDoorSecuredStatus
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetDoorSecuredStatus.SECURED)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetDoorValueTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetDoorValue
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetDoorValue.LOCK)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetFaultTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetFaultType
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetFaultType.NONE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetFileAccessMethodTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetFileAccessMethod
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetFileAccessMethod.RECORD_ACCESS)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetIPModeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetIPMode
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetIPMode.NORMAL)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetLiftCarDoorCommandTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLiftCarDoorCommand
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLiftCarDoorCommand.NONE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetLiftGroupModeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLiftGroupMode
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLiftGroupMode.UNKNOWN)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetLightingInProgressTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLightingInProgress
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLightingInProgress.IDLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetLockStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetLockStatus
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetLockStatus.LOCKED)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetNetworkNumberQualityTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetNetworkNumberQuality
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetNetworkNumberQuality.UNKNOWN)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetNodeTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetNodeType
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetNodeType.UNKNOWN)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetNotifyTypeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetNotifyType
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetNotifyType.ALARM)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetPolarityTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetPolarity
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetPolarity.NORMAL)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetProgramRequestTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetProgramRequest
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetProgramRequest.READY)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetProgramStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetProgramState
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetProgramState.IDLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetProtocolLevelTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetProtocolLevel
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetProtocolLevel.PHYSICAL)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetRouterEntryStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetRouterEntryStatus
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetRouterEntryStatus.AVAILABLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetSecurityLevelTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetSecurityLevel
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetSecurityLevel.INCAPABLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetSecurityPolicyTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetSecurityPolicy
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetSecurityPolicy.PLAIN_NON_TRUSTED)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetSegmentationTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetSegmentation
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetSegmentation.SEGMENTED_BOTH)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetShedStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetShedState
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetShedState.SHED_INACTIVE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetTimerStateTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetTimerState
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetTimerState.IDLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetTimerTransitionTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetTimerTransition
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetTimerTransition.NONE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetUnconfirmedServiceChoiceTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetUnconfirmedServiceChoice
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetUnconfirmedServiceChoice.I_AM)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BACnetWriteStatusTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetWriteStatus
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BACnetWriteStatus.IDLE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type BVLCResultCodeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BVLCResultCode
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, BVLCResultCode.SUCCESSFUL_COMPLETION)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type NPDUNetworkPriorityTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual NPDUNetworkPriority
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, NPDUNetworkPriority.LIFE_SAVETY_MESSAGE)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
+[type SecurityResponseCodeTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual SecurityResponseCode
+ value
+ 'STATIC_CALL("readEnumGenericFailing", readBuffer, header.actualLength, SecurityResponseCode.SUCCESS)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ 'header.actualLength * 8' ]
+]
+
diff --git a/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec
new file mode 100644
index 0000000000..931ea40961
--- /dev/null
+++ b/protocols/bacnetip/src/main/generated/protocols/bacnetip/bacnet-vendorids.mspec
@@ -0,0 +1,1492 @@
+
+/*
+ * 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.
+ */
+
+ // Code generated by code-generation. DO NOT EDIT.
+
+[enum uint 16 BACnetVendorId(uint 16 vendorId, string 8 vendorName)
+ ['0' ASHRAE ['0', '"ASHRAE"']]
+ ['1' NIST ['1', '"NIST"']]
+ ['2' THE_TRANE_COMPANY ['2', '"The Trane Company"']]
+ ['3' DAIKIN_APPLIED_AMERICAS ['3', '"Daikin Applied Americas"']]
+ ['4' POLAR_SOFT ['4', '"PolarSoft"']]
+ ['5' JOHNSON_CONTROLS_INC ['5', '"Johnson Controls, Inc."']]
+ ['6' ABB_FORMERLY_AMERICAN_AUTO_MATRIX ['6', '"ABB (Formerly American Auto-Matrix)"']]
+ ['7' SIEMENS_SCHWEIZAG_FORMERLY_LANDIS_STAEFA_DIVISION_EUROPE ['7', '"Siemens Schweiz AG (Formerly: Landis & Staefa Division Europe)"']]
+ ['8' DELTA_CONTROLS ['8', '"Delta Controls"']]
+ ['9' SIEMENS_SCHWEIZAG ['9', '"Siemens Schweiz AG"']]
+ ['10' SCHNEIDER_ELECTRIC ['10', '"Schneider Electric"']]
+ ['11' TAC ['11', '"TAC"']]
+ ['12' ORION_ANALYSIS_CORPORATION ['12', '"Orion Analysis Corporation"']]
+ ['13' TELETROL_SYSTEMS_INC ['13', '"Teletrol Systems Inc."']]
+ ['14' CIMETRICS_TECHNOLOGY ['14', '"Cimetrics Technology"']]
+ ['15' CORNELL_UNIVERSITY ['15', '"Cornell University"']]
+ ['16' UNITED_TECHNOLOGIES_CARRIER ['16', '"United Technologies Carrier"']]
+ ['17' HONEYWELL_INC ['17', '"Honeywell Inc."']]
+ ['18' ALERTON_HONEYWELL ['18', '"Alerton / Honeywell"']]
+ ['19' TACAB ['19', '"TAC AB"']]
+ ['20' HEWLETT_PACKARD_COMPANY ['20', '"Hewlett-Packard Company"']]
+ ['21' DORSETTES_INC ['21', '"Dorsette’s Inc."']]
+ ['22' SIEMENS_SCHWEIZAG_FORMERLY_CERBERUSAG ['22', '"Siemens Schweiz AG (Formerly: Cerberus AG)"']]
+ ['23' YORK_CONTROLS_GROUP ['23', '"York Controls Group"']]
+ ['24' AUTOMATED_LOGIC_CORPORATION ['24', '"Automated Logic Corporation"']]
+ ['25' CSI_CONTROL_SYSTEMS_INTERNATIONAL ['25', '"CSI Control Systems International"']]
+ ['26' PHOENIX_CONTROLS_CORPORATION ['26', '"Phoenix Controls Corporation"']]
+ ['27' INNOVEX_TECHNOLOGIES_INC ['27', '"Innovex Technologies, Inc."']]
+ ['28' KMC_CONTROLS_INC ['28', '"KMC Controls, Inc."']]
+ ['29' XN_TECHNOLOGIES_INC ['29', '"Xn Technologies, Inc."']]
+ ['30' HYUNDAI_INFORMATION_TECHNOLOGY_CO_LTD ['30', '"Hyundai Information Technology Co., Ltd."']]
+ ['31' TOKIMEC_INC ['31', '"Tokimec Inc."']]
+ ['32' SIMPLEX ['32', '"Simplex"']]
+ ['33' NORTH_BUILDING_TECHNOLOGIES_LIMITED ['33', '"North Building Technologies Limited"']]
+ ['34' NOTIFIER ['34', '"Notifier"']]
+ ['35' RELIABLE_CONTROLS_CORPORATION ['35', '"Reliable Controls Corporation"']]
+ ['36' TRIDIUM_INC ['36', '"Tridium Inc."']]
+ ['37' MSA_SAFETY ['37', '"MSA Safety"']]
+ ['38' SILICON_ENERGY ['38', '"Silicon Energy"']]
+ ['39' KIEBACK_PETER_GMBH_COKG ['39', '"Kieback & Peter GmbH & Co KG"']]
+ ['40' ANACON_SYSTEMS_INC ['40', '"Anacon Systems, Inc."']]
+ ['41' SYSTEMS_CONTROLS_INSTRUMENTSLLC ['41', '"Systems Controls & Instruments, LLC"']]
+ ['42' ACUITY_BRANDS_LIGHTING_INC ['42', '"Acuity Brands Lighting, Inc."']]
+ ['43' MICROPOWER_MANUFACTURING ['43', '"Micropower Manufacturing"']]
+ ['44' MATRIX_CONTROLS ['44', '"Matrix Controls"']]
+ ['45' METALAIRE ['45', '"METALAIRE"']]
+ ['46' ESS_ENGINEERING ['46', '"ESS Engineering"']]
+ ['47' SPHERE_SYSTEMS_PTY_LTD ['47', '"Sphere Systems Pty Ltd."']]
+ ['48' WALKER_TECHNOLOGIES_CORPORATION ['48', '"Walker Technologies Corporation"']]
+ ['49' HI_SOLUTIONS_INC ['49', '"H I Solutions, Inc."']]
+ ['50' MBS_GMBH ['50', '"MBS GmbH"']]
+ ['51' SAMSONAG ['51', '"SAMSON AG"']]
+ ['52' BADGER_METER_INC ['52', '"Badger Meter Inc."']]
+ ['53' DAIKIN_INDUSTRIES_LTD ['53', '"DAIKIN Industries Ltd."']]
+ ['54' NARA_CONTROLS_INC ['54', '"NARA Controls Inc."']]
+ ['55' MAMMOTH_INC ['55', '"Mammoth Inc."']]
+ ['56' LIEBERT_CORPORATION ['56', '"Liebert Corporation"']]
+ ['57' SEMCO_INCORPORATED ['57', '"SEMCO Incorporated"']]
+ ['58' AIR_MONITOR_CORPORATION ['58', '"Air Monitor Corporation"']]
+ ['59' TRIATEKLLC ['59', '"TRIATEK, LLC"']]
+ ['60' NEX_LIGHT ['60', '"NexLight"']]
+ ['61' MULTISTACK ['61', '"Multistack"']]
+ ['62' TSI_INCORPORATED ['62', '"TSI Incorporated"']]
+ ['63' WEATHER_RITE_INC ['63', '"Weather-Rite, Inc."']]
+ ['64' DUNHAM_BUSH ['64', '"Dunham-Bush"']]
+ ['65' RELIANCE_ELECTRIC ['65', '"Reliance Electric"']]
+ ['66' LCS_INC ['66', '"LCS Inc."']]
+ ['67' REGULATOR_AUSTRALIAPTY_LTD ['67', '"Regulator Australia PTY Ltd."']]
+ ['68' TOUCH_PLATE_LIGHTING_CONTROLS ['68', '"Touch-Plate Lighting Controls"']]
+ ['69' AMANN_GMBH ['69', '"Amann GmbH"']]
+ ['70' RLE_TECHNOLOGIES ['70', '"RLE Technologies"']]
+ ['71' CARDKEY_SYSTEMS ['71', '"Cardkey Systems"']]
+ ['72' SECOM_CO_LTD ['72', '"SECOM Co., Ltd."']]
+ ['73' ABB_GEBUDETECHNIKAG_BEREICH_NET_SERV ['73', '"ABB Gebäudetechnik AG Bereich NetServ"']]
+ ['74' KNX_ASSOCIATIONCVBA ['74', '"KNX Association cvba"']]
+ ['75' INSTITUTEOF_ELECTRICAL_INSTALLATION_ENGINEERSOF_JAPANIEIEJ ['75', '"Institute of Electrical Installation Engineers of Japan (IEIEJ)"']]
+ ['76' NOHMI_BOSAI_LTD ['76', '"Nohmi Bosai, Ltd."']]
+ ['77' CAREL_INDUSTRIES_SPA ['77', '"Carel Industries S.p.A."']]
+ ['78' UTC_FIRE_SECURITY_ESPAASL ['78', '"UTC Fire & Security España, S.L."']]
+ ['79' HOCHIKI_CORPORATION ['79', '"Hochiki Corporation"']]
+ ['80' FR_SAUTERAG ['80', '"Fr. Sauter AG"']]
+ ['81' MATSUSHITA_ELECTRIC_WORKS_LTD ['81', '"Matsushita Electric Works, Ltd."']]
+ ['82' MITSUBISHI_ELECTRIC_CORPORATION_INAZAWA_WORKS ['82', '"Mitsubishi Electric Corporation, Inazawa Works"']]
+ ['83' MITSUBISHI_HEAVY_INDUSTRIES_LTD ['83', '"Mitsubishi Heavy Industries, Ltd."']]
+ ['84' XYLEM_INC ['84', '"Xylem, Inc."']]
+ ['85' YAMATAKE_BUILDING_SYSTEMS_CO_LTD ['85', '"Yamatake Building Systems Co., Ltd."']]
+ ['86' THE_WATT_STOPPER_INC ['86', '"The Watt Stopper, Inc."']]
+ ['87' AICHI_TOKEI_DENKI_CO_LTD ['87', '"Aichi Tokei Denki Co., Ltd."']]
+ ['88' ACTIVATION_TECHNOLOGIESLLC ['88', '"Activation Technologies, LLC"']]
+ ['89' SAIA_BURGESS_CONTROLS_LTD ['89', '"Saia-Burgess Controls, Ltd."']]
+ ['90' HITACHI_LTD ['90', '"Hitachi, Ltd."']]
+ ['91' NOVAR_CORP_TREND_CONTROL_SYSTEMS_LTD ['91', '"Novar Corp./Trend Control Systems Ltd."']]
+ ['92' MITSUBISHI_ELECTRIC_LIGHTING_CORPORATION ['92', '"Mitsubishi Electric Lighting Corporation"']]
+ ['93' ARGUS_CONTROL_SYSTEMS_LTD ['93', '"Argus Control Systems, Ltd."']]
+ ['94' KYUKI_CORPORATION ['94', '"Kyuki Corporation"']]
+ ['95' RICHARDS_ZETA_BUILDING_INTELLIGENCE_INC ['95', '"Richards-Zeta Building Intelligence, Inc."']]
+ ['96' SCIENTECHRD_INC ['96', '"Scientech R&D, Inc."']]
+ ['97' VCI_CONTROLS_INC ['97', '"VCI Controls, Inc."']]
+ ['98' TOSHIBA_CORPORATION ['98', '"Toshiba Corporation"']]
+ ['99' MITSUBISHI_ELECTRIC_CORPORATION_AIR_CONDITIONING_REFRIGERATION_SYSTEMS_WORKS ['99', '"Mitsubishi Electric Corporation Air Conditioning & Refrigeration Systems Works"']]
+ ['100' CUSTOM_MECHANICAL_EQUIPMENTLLC ['100', '"Custom Mechanical Equipment, LLC"']]
+ ['101' CLIMATE_MASTER ['101', '"ClimateMaster"']]
+ ['102' ICP_PANEL_TEC_INC ['102', '"ICP Panel-Tec, Inc."']]
+ ['103' D_TEK_CONTROLS ['103', '"D-Tek Controls"']]
+ ['104' NEC_ENGINEERING_LTD ['104', '"NEC Engineering, Ltd."']]
+ ['105' PRIVABV ['105', '"PRIVA BV"']]
+ ['106' MEIDENSHA_CORPORATION ['106', '"Meidensha Corporation"']]
+ ['107' JCI_SYSTEMS_INTEGRATION_SERVICES ['107', '"JCI Systems Integration Services"']]
+ ['108' FREEDOM_CORPORATION ['108', '"Freedom Corporation"']]
+ ['109' NEUBERGER_GEBUDEAUTOMATION_GMBH ['109', '"Neuberger Gebäudeautomation GmbH"']]
+ ['110' E_ZI_CONTROLS ['110', '"eZi Controls"']]
+ ['111' LEVITON_MANUFACTURING ['111', '"Leviton Manufacturing"']]
+ ['112' FUJITSU_LIMITED ['112', '"Fujitsu Limited"']]
+ ['113' VERTIV_FORMERLY_EMERSON_NETWORK_POWER ['113', '"Vertiv (Formerly Emerson Network Power)"']]
+ ['114' SA_ARMSTRONG_LTD ['114', '"S. A. Armstrong, Ltd."']]
+ ['115' VISONETAG ['115', '"Visonet AG"']]
+ ['116' MM_SYSTEMS_INC ['116', '"M&M Systems, Inc."']]
+ ['117' CUSTOM_SOFTWARE_ENGINEERING ['117', '"Custom Software Engineering"']]
+ ['118' NITTAN_COMPANY_LIMITED ['118', '"Nittan Company, Limited"']]
+ ['119' ELUTIONS_INC_WIZCON_SYSTEMSSAS ['119', '"Elutions Inc. (Wizcon Systems SAS)"']]
+ ['120' PACOM_SYSTEMS_PTY_LTD ['120', '"Pacom Systems Pty., Ltd."']]
+ ['121' UNICO_INC ['121', '"Unico, Inc."']]
+ ['122' EBTRON_INC ['122', '"Ebtron, Inc."']]
+ ['123' SCADA_ENGINE ['123', '"Scada Engine"']]
+ ['124' LENZE_AMERICAS_FORMERLYAC_TECHNOLOGY_CORPORATION ['124', '"Lenze Americas (Formerly: AC Technology Corporation)"']]
+ ['125' EAGLE_TECHNOLOGY ['125', '"Eagle Technology"']]
+ ['126' DATA_AIRE_INC ['126', '"Data Aire, Inc."']]
+ ['127' ABB_INC ['127', '"ABB, Inc."']]
+ ['128' TRANSBIT_SPZOO ['128', '"Transbit Sp. z o. o."']]
+ ['129' TOSHIBA_CARRIER_CORPORATION ['129', '"Toshiba Carrier Corporation"']]
+ ['130' SHENZHEN_JUNZHI_HI_TECH_CO_LTD ['130', '"Shenzhen Junzhi Hi-Tech Co., Ltd."']]
+ ['131' TOKAI_SOFT ['131', '"Tokai Soft"']]
+ ['132' BLUE_RIDGE_TECHNOLOGIES ['132', '"Blue Ridge Technologies"']]
+ ['133' VERIS_INDUSTRIES ['133', '"Veris Industries"']]
+ ['134' CENTAURUS_PRIME ['134', '"Centaurus Prime"']]
+ ['135' SAND_NETWORK_SYSTEMS ['135', '"Sand Network Systems"']]
+ ['136' REGULVAR_INC ['136', '"Regulvar, Inc."']]
+ ['137' AF_DTEK_DIVISIONOF_FASTEK_INTERNATIONAL_INC ['137', '"AFDtek Division of Fastek International Inc."']]
+ ['138' POWER_COLD_COMFORT_AIR_SOLUTIONS_INC ['138', '"PowerCold Comfort Air Solutions, Inc."']]
+ ['139' I_CONTROLS ['139', '"I Controls"']]
+ ['140' VICONICS_ELECTRONICS_INC ['140', '"Viconics Electronics, Inc."']]
+ ['141' YASKAWA_AMERICA_INC ['141', '"Yaskawa America, Inc."']]
+ ['142' DEO_SCONTROLSYSTEMS_GMBH ['142', '"DEOS control systems GmbH"']]
+ ['143' DIGITALE_MESSUND_STEUERSYSTEMEAG ['143', '"Digitale Mess- und Steuersysteme AG"']]
+ ['144' FUJITSU_GENERAL_LIMITED ['144', '"Fujitsu General Limited"']]
+ ['145' PROJECT_ENGINEERING_SRL ['145', '"Project Engineering S.r.l."']]
+ ['146' SANYO_ELECTRIC_CO_LTD ['146', '"Sanyo Electric Co., Ltd."']]
+ ['147' INTEGRATED_INFORMATION_SYSTEMS_INC ['147', '"Integrated Information Systems, Inc."']]
+ ['148' TEMCO_CONTROLS_LTD ['148', '"Temco Controls, Ltd."']]
+ ['149' AIRTEK_INTERNATIONAL_INC ['149', '"Airtek International Inc."']]
+ ['150' ADVANTECH_CORPORATION ['150', '"Advantech Corporation"']]
+ ['151' TITAN_PRODUCTS_LTD ['151', '"Titan Products, Ltd."']]
+ ['152' REGEL_PARTNERS ['152', '"Regel Partners"']]
+ ['153' NATIONAL_ENVIRONMENTAL_PRODUCT ['153', '"National Environmental Product"']]
+ ['154' UNITEC_CORPORATION ['154', '"Unitec Corporation"']]
+ ['155' KANDEN_ENGINEERING_COMPANY ['155', '"Kanden Engineering Company"']]
+ ['156' MESSNER_GEBUDETECHNIK_GMBH ['156', '"Messner Gebäudetechnik GmbH"']]
+ ['157' INTEGRATEDCH ['157', '"Integrated.CH"']]
+ ['158' PRICE_INDUSTRIES ['158', '"Price Industries"']]
+ ['159' SE_ELEKTRONIC_GMBH ['159', '"SE-Elektronic GmbH"']]
+ ['160' ROCKWELL_AUTOMATION ['160', '"Rockwell Automation"']]
+ ['161' ENFLEX_CORP ['161', '"Enflex Corp."']]
+ ['162' ASI_CONTROLS ['162', '"ASI Controls"']]
+ ['163' SYS_MIK_GMBH_DRESDEN ['163', '"SysMik GmbH Dresden"']]
+ ['164' HSC_REGELUNGSTECHNIK_GMBH ['164', '"HSC Regelungstechnik GmbH"']]
+ ['165' SMART_TEMP_AUSTRALIA_PTY_LTD ['165', '"Smart Temp Australia Pty. Ltd."']]
+ ['166' COOPER_CONTROLS ['166', '"Cooper Controls"']]
+ ['167' DUKSAN_MECASYS_CO_LTD ['167', '"Duksan Mecasys Co., Ltd."']]
+ ['168' FUJIIT_CO_LTD ['168', '"Fuji IT Co., Ltd."']]
+ ['169' VACON_PLC ['169', '"Vacon Plc"']]
+ ['170' LEADER_CONTROLS ['170', '"Leader Controls"']]
+ ['171' ABB_FORMERLY_CYLON_CONTROLS_LTD ['171', '"ABB (Formerly Cylon Controls, Ltd)"']]
+ ['172' COMPAS ['172', '"Compas"']]
+ ['173' MITSUBISHI_ELECTRIC_BUILDING_TECHNO_SERVICE_CO_LTD ['173', '"Mitsubishi Electric Building Techno-Service Co., Ltd."']]
+ ['174' BUILDING_CONTROL_INTEGRATORS ['174', '"Building Control Integrators"']]
+ ['175' ITG_WORLDWIDEM_SDN_BHD ['175', '"ITG Worldwide (M) Sdn Bhd"']]
+ ['176' LUTRON_ELECTRONICS_CO_INC ['176', '"Lutron Electronics Co., Inc."']]
+ ['177' COOPER_ATKINS_CORPORATION ['177', '"Cooper-Atkins Corporation"']]
+ ['178' LOYTEC_ELECTRONICS_GMBH ['178', '"LOYTEC Electronics GmbH"']]
+ ['179' PRO_LON ['179', '"ProLon"']]
+ ['180' MEGA_CONTROLS_LIMITED ['180', '"Mega Controls Limited"']]
+ ['181' MICRO_CONTROL_SYSTEMS_INC ['181', '"Micro Control Systems, Inc."']]
+ ['182' KIYON_INC ['182', '"Kiyon, Inc."']]
+ ['183' DUST_NETWORKS ['183', '"Dust Networks"']]
+ ['184' ADVANCED_BUILDING_AUTOMATION_SYSTEMS ['184', '"Advanced Building Automation Systems"']]
+ ['185' HERMOSAG ['185', '"Hermos AG"']]
+ ['186' CEZIM ['186', '"CEZIM"']]
+ ['187' SOFTING ['187', '"Softing"']]
+ ['188' LYNXSPRING_INC ['188', '"Lynxspring, Inc."']]
+ ['189' SCHNEIDER_TOSHIBA_INVERTER_EUROPE ['189', '"Schneider Toshiba Inverter Europe"']]
+ ['190' DANFOSS_DRIVESAS ['190', '"Danfoss Drives A/S"']]
+ ['191' EATON_CORPORATION ['191', '"Eaton Corporation"']]
+ ['192' MATYCASA ['192', '"Matyca S.A."']]
+ ['193' BOTECHAB ['193', '"Botech AB"']]
+ ['194' NOVEO_INC ['194', '"Noveo, Inc."']]
+ ['195' AMEV ['195', '"AMEV"']]
+ ['196' YOKOGAWA_ELECTRIC_CORPORATION ['196', '"Yokogawa Electric Corporation"']]
+ ['197' BOSCH_BUILDING_AUTOMATION_GMBH ['197', '"Bosch Building Automation GmbH"']]
+ ['198' EXACT_LOGIC ['198', '"Exact Logic"']]
+ ['199' MASS_ELECTRONICS_PTY_LTDDBA_INNOTECH_CONTROL_SYSTEMS_AUSTRALIA ['199', '"Mass Electronics Pty Ltd dba Innotech Control Systems Australia"']]
+ ['200' KANDENKO_CO_LTD ['200', '"Kandenko Co., Ltd."']]
+ ['201' DTF_DATEN_TECHNIK_FRIES ['201', '"DTF, Daten-Technik Fries"']]
+ ['202' KLIMASOFT_LTD ['202', '"Klimasoft, Ltd."']]
+ ['203' TOSHIBA_SCHNEIDER_INVERTER_CORPORATION ['203', '"Toshiba Schneider Inverter Corporation"']]
+ ['204' CONTROL_APPLICATIONS_LTD ['204', '"Control Applications, Ltd."']]
+ ['205' CIMONCO_LTD ['205', '"CIMON CO., Ltd."']]
+ ['206' ONICON_INCORPORATED ['206', '"Onicon Incorporated"']]
+ ['207' AUTOMATION_DISPLAYS_INC ['207', '"Automation Displays, Inc."']]
+ ['208' CONTROL_SOLUTIONS_INC ['208', '"Control Solutions, Inc."']]
+ ['209' REMSDAQ_LIMITED ['209', '"Remsdaq Limited"']]
+ ['210' NTT_FACILITIES_INC ['210', '"NTT Facilities, Inc."']]
+ ['211' VIPA_GMBH ['211', '"VIPA GmbH"']]
+ ['212' TSC1_ASSOCIATIONOF_JAPAN ['212', '"TSC21 Association of Japan"']]
+ ['213' STRATO_AUTOMATION ['213', '"Strato Automation"']]
+ ['214' HRW_LIMITED ['214', '"HRW Limited"']]
+ ['215' LIGHTING_CONTROL_DESIGN_INC ['215', '"Lighting Control & Design, Inc."']]
+ ['216' MERCY_ELECTRONICAND_ELECTRICAL_INDUSTRIES ['216', '"Mercy Electronic and Electrical Industries"']]
+ ['217' SAMSUNGSDS_CO_LTD ['217', '"Samsung SDS Co., Ltd"']]
+ ['218' IMPACT_FACILITY_SOLUTIONS_INC ['218', '"Impact Facility Solutions, Inc."']]
+ ['219' AIRCUITY ['219', '"Aircuity"']]
+ ['220' CONTROL_TECHNIQUES_LTD ['220', '"Control Techniques, Ltd."']]
+ ['221' OPEN_GENERAL_PTY_LTD ['221', '"OpenGeneral Pty., Ltd."']]
+ ['222' WAGO_KONTAKTTECHNIK_GMBH_COKG ['222', '"WAGO Kontakttechnik GmbH & Co. KG"']]
+ ['223' FRANKLIN_ELECTRIC ['223', '"Franklin Electric"']]
+ ['224' CHLORIDE_POWER_PROTECTION_COMPANY ['224', '"Chloride Power Protection Company"']]
+ ['225' COMPUTROLS_INC ['225', '"Computrols, Inc."']]
+ ['226' PHOENIX_CONTACT_GMBH_COKG ['226', '"Phoenix Contact GmbH & Co. KG"']]
+ ['227' GRUNDFOS_MANAGEMENTAS ['227', '"Grundfos Management A/S"']]
+ ['228' RIDDER_DRIVE_SYSTEMS ['228', '"Ridder Drive Systems"']]
+ ['229' SOFT_DEVICESDNBHD ['229', '"Soft Device SDN BHD"']]
+ ['230' INTEGRATED_CONTROL_TECHNOLOGY_LIMITED ['230', '"Integrated Control Technology Limited"']]
+ ['231' AI_RXPERT_SYSTEMS_INC ['231', '"AIRxpert Systems, Inc."']]
+ ['232' MICROTROL_LIMITED ['232', '"Microtrol Limited"']]
+ ['233' RED_LION_CONTROLS ['233', '"Red Lion Controls"']]
+ ['234' DIGITAL_ELECTRONICS_CORPORATION ['234', '"Digital Electronics Corporation"']]
+ ['235' ENNOVATIS_GMBH ['235', '"Ennovatis GmbH"']]
+ ['236' SEROTONIN_SOFTWARE_TECHNOLOGIES_INC ['236', '"Serotonin Software Technologies, Inc."']]
+ ['237' LS_INDUSTRIAL_SYSTEMS_CO_LTD ['237', '"LS Industrial Systems Co., Ltd."']]
+ ['238' SQUARED_COMPANY ['238', '"Square D Company"']]
+ ['239' S_SQUARED_INNOVATIONS_INC ['239', '"S Squared Innovations, Inc."']]
+ ['240' ARICENT_LTD ['240', '"Aricent Ltd."']]
+ ['241' ETHER_METRICSLLC ['241', '"EtherMetrics, LLC"']]
+ ['242' INDUSTRIAL_CONTROL_COMMUNICATIONS_INC ['242', '"Industrial Control Communications, Inc."']]
+ ['243' PARAGON_CONTROLS_INC ['243', '"Paragon Controls, Inc."']]
+ ['244' AO_SMITH_CORPORATION ['244', '"A. O. Smith Corporation"']]
+ ['245' CONTEMPORARY_CONTROL_SYSTEMS_INC ['245', '"Contemporary Control Systems, Inc."']]
+ ['246' HMS_INDUSTRIAL_NETWORKSSLU ['246', '"HMS Industrial Networks SLU"']]
+ ['247' INGENIEURGESELLSCHAFTN_HARTLEBMBH ['247', '"Ingenieurgesellschaft N. Hartleb mbH"']]
+ ['248' HEAT_TIMER_CORPORATION ['248', '"Heat-Timer Corporation"']]
+ ['249' INGRASYS_TECHNOLOGY_INC ['249', '"Ingrasys Technology, Inc."']]
+ ['250' COSTERM_BUILDING_AUTOMATION ['250', '"Costerm Building Automation"']]
+ ['251' WILOSE ['251', '"WILO SE"']]
+ ['252' EMBEDIA_TECHNOLOGIES_CORP ['252', '"Embedia Technologies Corp."']]
+ ['253' TECHNILOG ['253', '"Technilog"']]
+ ['254' HR_CONTROLS_LTD_COKG ['254', '"HR Controls Ltd. & Co. KG"']]
+ ['255' LENNOX_INTERNATIONAL_INC ['255', '"Lennox International, Inc."']]
+ ['256' RK_TEC_RAUCHKLAPPEN_STEUERUNGSSYSTEME_GMBH_COKG ['256', '"RK-Tec Rauchklappen-Steuerungssysteme GmbH & Co. KG"']]
+ ['257' THERMOMAX_LTD ['257', '"Thermomax, Ltd."']]
+ ['258' ELCON_ELECTRONIC_CONTROL_LTD ['258', '"ELCON Electronic Control, Ltd."']]
+ ['259' LARMIA_CONTROLAB ['259', '"Larmia Control AB"']]
+ ['260' BA_CNET_STACKAT_SOURCE_FORGE ['260', '"BACnet Stack at SourceForge"']]
+ ['261' GS_SECURITY_SERVICESAS ['261', '"G4S Security Services A/S"']]
+ ['262' EXOR_INTERNATIONAL_SPA ['262', '"Exor International S.p.A."']]
+ ['263' CRISTAL_CONTROLES ['263', '"Cristal Controles"']]
+ ['264' REGINAB ['264', '"Regin AB"']]
+ ['265' DIMENSION_SOFTWARE_INC ['265', '"Dimension Software, Inc."']]
+ ['266' SYNAP_SENSE_CORPORATION ['266', '"SynapSense Corporation"']]
+ ['267' BEIJING_NANTREE_ELECTRONIC_CO_LTD ['267', '"Beijing Nantree Electronic Co., Ltd."']]
+ ['268' CAMUS_HYDRONICS_LTD ['268', '"Camus Hydronics Ltd."']]
+ ['269' KAWASAKI_HEAVY_INDUSTRIES_LTD ['269', '"Kawasaki Heavy Industries, Ltd."']]
+ ['270' CRITICAL_ENVIRONMENT_TECHNOLOGIES ['270', '"Critical Environment Technologies"']]
+ ['271' ILSHINIBS_CO_LTD ['271', '"ILSHIN IBS Co., Ltd."']]
+ ['272' ELESTA_ENERGY_CONTROLAG ['272', '"ELESTA Energy Control AG"']]
+ ['273' KROPMAN_INSTALLATIETECHNIEK ['273', '"KROPMAN Installatietechniek"']]
+ ['274' BALDOR_ELECTRIC_COMPANY ['274', '"Baldor Electric Company"']]
+ ['275' ING_AMBH ['275', '"INGA mbH"']]
+ ['276' GE_CONSUMER_INDUSTRIAL ['276', '"GE Consumer & Industrial"']]
+ ['277' FUNCTIONAL_DEVICES_INC ['277', '"Functional Devices, Inc."']]
+ ['278' STUDIOSC ['278', '"StudioSC"']]
+ ['279' M_SYSTEM_CO_LTD ['279', '"M-System Co., Ltd."']]
+ ['280' YOKOTA_CO_LTD ['280', '"Yokota Co., Ltd."']]
+ ['281' HITRANSE_TECHNOLOGY_COLTD ['281', '"Hitranse Technology Co., LTD"']]
+ ['282' VIGILENT_CORPORATION ['282', '"Vigilent Corporation"']]
+ ['283' KELE_INC ['283', '"Kele, Inc."']]
+ ['284' BELIMO_AUTOMATIONAG ['284', '"BELIMO Automation AG"']]
+ ['285' GENTEC ['285', '"Gentec"']]
+ ['286' EMBEDDED_SCIENCE_LABSLLC ['286', '"Embedded Science Labs, LLC"']]
+ ['287' PARKER_HANNIFIN_CORPORATION ['287', '"Parker Hannifin Corporation"']]
+ ['288' MA_CAPS_INTERNATIONAL_LIMITED ['288', '"MaCaPS International Limited"']]
+ ['289' LINK_CORPORATION ['289', '"Link4 Corporation"']]
+ ['290' ROMUTEC_STEUERU_REGELSYSTEME_GMBH ['290', '"Romutec Steuer-u. Regelsysteme GmbH"']]
+ ['291' PRIBUSIN_INC ['291', '"Pribusin, Inc."']]
+ ['292' ADVANTAGE_CONTROLS ['292', '"Advantage Controls"']]
+ ['293' CRITICAL_ROOM_CONTROL ['293', '"Critical Room Control"']]
+ ['294' LEGRAND ['294', '"LEGRAND"']]
+ ['295' TONGDY_CONTROL_TECHNOLOGY_CO_LTD ['295', '"Tongdy Control Technology Co., Ltd."']]
+ ['296' ISSARO_INTEGRIERTE_SYSTEMTECHNIK ['296', '"ISSARO Integrierte Systemtechnik"']]
+ ['297' PRO_DEV_INDUSTRIES ['297', '"Pro-Dev Industries"']]
+ ['298' DRISTEEM ['298', '"DRI-STEEM"']]
+ ['299' CREATIVE_ELECTRONIC_GMBH ['299', '"Creative Electronic GmbH"']]
+ ['300' SWEGONAB ['300', '"Swegon AB"']]
+ ['301' FIRVEN_ASRO ['301', '"FIRVENA s.r.o."']]
+ ['302' HITACHI_APPLIANCES_INC ['302', '"Hitachi Appliances, Inc."']]
+ ['303' REAL_TIME_AUTOMATION_INC ['303', '"Real Time Automation, Inc."']]
+ ['304' ITEC_HANKYU_HANSHIN_CO ['304', '"ITEC Hankyu-Hanshin Co."']]
+ ['305' CYRUSEM_ENGINEERING_CO_LTD ['305', '"Cyrus E&M Engineering Co., Ltd."']]
+ ['306' BADGER_METER ['306', '"Badger Meter"']]
+ ['307' CIRRASCALE_CORPORATION ['307', '"Cirrascale Corporation"']]
+ ['308' ELESTA_GMBH_BUILDING_AUTOMATION ['308', '"Elesta GmbH Building Automation"']]
+ ['309' SECURITON ['309', '"Securiton"']]
+ ['310' O_SLSOFT_INC ['310', '"OSlsoft, Inc."']]
+ ['311' HANAZEDER_ELECTRONIC_GMBH ['311', '"Hanazeder Electronic GmbH"']]
+ ['312' HONEYWELL_SECURITY_DEUTSCHLAND_NOVAR_GMBH ['312', '"Honeywell Security Deutschland, Novar GmbH"']]
+ ['313' SIEMENS_INDUSTRY_INC ['313', '"Siemens Industry, Inc."']]
+ ['314' ETM_PROFESSIONAL_CONTROL_GMBH ['314', '"ETM Professional Control GmbH"']]
+ ['315' MEITAVTEC_LTD ['315', '"Meitav-tec, Ltd."']]
+ ['316' JANITZA_ELECTRONICS_GMBH ['316', '"Janitza Electronics GmbH"']]
+ ['317' MKS_NORDHAUSEN ['317', '"MKS Nordhausen"']]
+ ['318' DE_GIER_DRIVE_SYSTEMSBV ['318', '"De Gier Drive Systems B.V."']]
+ ['319' CYPRESS_ENVIROSYSTEMS ['319', '"Cypress Envirosystems"']]
+ ['320' SMAR_TRONSRO ['320', '"SMARTron s.r.o."']]
+ ['321' VERARI_SYSTEMS_INC ['321', '"Verari Systems, Inc."']]
+ ['322' KW_ELECTRONIC_SERVICE_INC ['322', '"K-W Electronic Service, Inc."']]
+ ['323' ALFASMART_ENERGY_MANAGEMENT ['323', '"ALFA-SMART Energy Management"']]
+ ['324' TELKONET_INC ['324', '"Telkonet, Inc."']]
+ ['325' SECURITON_GMBH ['325', '"Securiton GmbH"']]
+ ['326' CEMTREX_INC ['326', '"Cemtrex, Inc."']]
+ ['327' PERFORMANCE_TECHNOLOGIES_INC ['327', '"Performance Technologies, Inc."']]
+ ['328' XTRALIS_AUST_PTY_LTD ['328', '"Xtralis (Aust) Pty Ltd"']]
+ ['329' TROX_GMBH ['329', '"TROX GmbH"']]
+ ['330' BEIJING_HYSINE_TECHNOLOGY_CO_LTD ['330', '"Beijing Hysine Technology Co., Ltd"']]
+ ['331' RCK_CONTROLS_INC ['331', '"RCK Controls, Inc."']]
+ ['332' DISTECH_CONTROLSSAS ['332', '"Distech Controls SAS"']]
+ ['333' NOVAR_HONEYWELL ['333', '"Novar/Honeywell"']]
+ ['334' S_INTEGRATION_SOLUTIONS ['334', '"S4 Integration Solutions"']]
+ ['335' SCHNEIDER_ELECTRIC1 ['335', '"Schneider Electric"']]
+ ['336' LHA_SYSTEMS ['336', '"LHA Systems"']]
+ ['337' GH_MENGINEERING_GROUP_INC ['337', '"GHM engineering Group, Inc."']]
+ ['338' CLLIMALUXSA ['338', '"Cllimalux S.A."']]
+ ['339' VAISALA_OYJ ['339', '"VAISALA Oyj"']]
+ ['340' COMPLEX_BEIJING_TECHNOLOGY_COLTD ['340', '"COMPLEX (Beijing) Technology, Co., LTD."']]
+ ['341' SCAD_AMETRICS ['341', '"SCADAmetrics"']]
+ ['342' POWERPEGNSI_LIMITED ['342', '"POWERPEG NSI Limited"']]
+ ['343' BA_CNET_INTEROPERABILITY_TESTING_SERVICES_INC ['343', '"BACnet Interoperability Testing Services, Inc."']]
+ ['344' TECOAS ['344', '"Teco a.s."']]
+ ['345' PLEXUS_TECHNOLOGY_INC ['345', '"Plexus Technology, Inc."']]
+ ['346' ENERGY_FOCUS_INC ['346', '"Energy Focus, Inc."']]
+ ['347' POWERSMITHS_INTERNATIONAL_CORP ['347', '"Powersmiths International Corp."']]
+ ['348' NICHIBEI_CO_LTD ['348', '"Nichibei Co., Ltd."']]
+ ['349' HKC_TECHNOLOGY_LTD ['349', '"HKC Technology Ltd."']]
+ ['350' OVATION_NETWORKS_INC ['350', '"Ovation Networks, Inc."']]
+ ['351' SETRA_SYSTEMS ['351', '"Setra Systems"']]
+ ['352' AVG_AUTOMATION ['352', '"AVG Automation"']]
+ ['353' ZXC_LTD ['353', '"ZXC Ltd."']]
+ ['354' BYTE_SPHERE ['354', '"Byte Sphere"']]
+ ['355' GENERITON_CO_LTD ['355', '"Generiton Co., Ltd."']]
+ ['356' HOLTER_REGELARMATUREN_GMBH_COKG ['356', '"Holter Regelarmaturen GmbH & Co. KG"']]
+ ['357' BEDFORD_INSTRUMENTSLLC ['357', '"Bedford Instruments, LLC"']]
+ ['358' STANDAIR_INC ['358', '"Standair Inc."']]
+ ['359' WEG_AUTOMATIONRD ['359', '"WEG Automation – R&D"']]
+ ['360' PROLON_CONTROL_SYSTEMS_APS ['360', '"Prolon Control Systems ApS"']]
+ ['361' INNEASOFT ['361', '"Inneasoft"']]
+ ['362' CONNEX_SOFT_GMBH ['362', '"ConneXSoft GmbH"']]
+ ['363' CEAG_NOTLICHTSYSTEME_GMBH ['363', '"CEAG Notlichtsysteme GmbH"']]
+ ['364' DISTECH_CONTROLS_INC ['364', '"Distech Controls Inc."']]
+ ['365' INDUSTRIAL_TECHNOLOGY_RESEARCH_INSTITUTE ['365', '"Industrial Technology Research Institute"']]
+ ['366' ICONICS_INC ['366', '"ICONICS, Inc."']]
+ ['367' IQ_CONTROLSSC ['367', '"IQ Controls s.c."']]
+ ['368' OJ_ELECTRONICSAS ['368', '"OJ Electronics A/S"']]
+ ['369' ROLBIT_LTD ['369', '"Rolbit Ltd."']]
+ ['370' SYNAPSYS_SOLUTIONS_LTD ['370', '"Synapsys Solutions Ltd."']]
+ ['371' ACME_ENGINEERING_PROD_LTD ['371', '"ACME Engineering Prod. Ltd."']]
+ ['372' ZENER_ELECTRIC_PTY_LTD ['372', '"Zener Electric Pty, Ltd."']]
+ ['373' SELECTRONIX_INC ['373', '"Selectronix, Inc."']]
+ ['374' GORBET_BANERJEELLC ['374', '"Gorbet & Banerjee, LLC."']]
+ ['375' IME ['375', '"IME"']]
+ ['376' STEPHENH_DAWSON_COMPUTER_SERVICE ['376', '"Stephen H. Dawson Computer Service"']]
+ ['377' ACCUTROLLLC ['377', '"Accutrol, LLC"']]
+ ['378' SCHNEIDER_ELEKTRONIK_GMBH ['378', '"Schneider Elektronik GmbH"']]
+ ['379' ALPHA_INNO_TEC_GMBH ['379', '"Alpha-Inno Tec GmbH"']]
+ ['380' ADM_MICRO_INC ['380', '"ADMMicro, Inc."']]
+ ['381' GREYSTONE_ENERGY_SYSTEMS_INC ['381', '"Greystone Energy Systems, Inc."']]
+ ['382' CAP_TECHNOLOGIE ['382', '"CAP Technologie"']]
+ ['383' KE_RO_SYSTEMS ['383', '"KeRo Systems"']]
+ ['384' DOMAT_CONTROL_SYSTEMSRO ['384', '"Domat Control System s.r.o."']]
+ ['385' EFEKTRONICS_PTY_LTD ['385', '"Efektronics Pty. Ltd."']]
+ ['386' HEKATRON_VERTRIEBS_GMBH ['386', '"Hekatron Vertriebs GmbH"']]
+ ['387' SECURITONAG ['387', '"Securiton AG"']]
+ ['388' CARLO_GAVAZZI_CONTROLS_SPA ['388', '"Carlo Gavazzi Controls SpA"']]
+ ['389' CHIPKIN_AUTOMATION_SYSTEMS ['389', '"Chipkin Automation Systems"']]
+ ['390' SAVANT_SYSTEMSLLC ['390', '"Savant Systems, LLC"']]
+ ['391' SIMMTRONIC_LIGHTING_CONTROLS ['391', '"Simmtronic Lighting Controls"']]
+ ['392' ABELKO_INNOVATIONAB ['392', '"Abelko Innovation AB"']]
+ ['393' SERESCO_TECHNOLOGIES_INC ['393', '"Seresco Technologies Inc."']]
+ ['394' IT_WATCHDOGS ['394', '"IT Watchdogs"']]
+ ['395' AUTOMATION_ASSIST_JAPAN_CORP ['395', '"Automation Assist Japan Corp."']]
+ ['396' THERMOKON_SENSORTECHNIK_GMBH ['396', '"Thermokon Sensortechnik GmbH"']]
+ ['397' E_GAUGE_SYSTEMSLLC ['397', '"EGauge Systems, LLC"']]
+ ['398' QUANTUM_AUTOMATIONASIAPTE_LTD ['398', '"Quantum Automation (ASIA) PTE, Ltd."']]
+ ['399' TOSHIBA_LIGHTING_TECHNOLOGY_CORP ['399', '"Toshiba Lighting & Technology Corp."']]
+ ['400' SPIN_ENGENHARIADE_AUTOMAO_LTDA ['400', '"SPIN Engenharia de Automação Ltda."']]
+ ['401' LOGISTICS_SYSTEMS_SOFTWARE_SERVICES_INDIAPVT_LTD ['401', '"Logistics Systems & Software Services India PVT. Ltd."']]
+ ['402' DELTA_CONTROLS_INTEGRATION_PRODUCTS ['402', '"Delta Controls Integration Products"']]
+ ['403' FOCUS_MEDIA ['403', '"Focus Media"']]
+ ['404' LUM_ENERGI_INC ['404', '"LUMEnergi Inc."']]
+ ['405' KARA_SYSTEMS ['405', '"Kara Systems"']]
+ ['406' RF_CODE_INC ['406', '"RF Code, Inc."']]
+ ['407' FATEK_AUTOMATION_CORP ['407', '"Fatek Automation Corp."']]
+ ['408' JANDA_SOFTWARE_COMPANYLLC ['408', '"JANDA Software Company, LLC"']]
+ ['409' OPEN_SYSTEM_SOLUTIONS_LIMITED ['409', '"Open System Solutions Limited"']]
+ ['410' INTELEC_SYSTEMSPTY_LTD ['410', '"Intelec Systems PTY Ltd."']]
+ ['411' ECOLODGIXLLC ['411', '"Ecolodgix, LLC"']]
+ ['412' DOUGLAS_LIGHTING_CONTROLS ['412', '"Douglas Lighting Controls"']]
+ ['413' IS_ATECH_GMBH ['413', '"iSAtech GmbH"']]
+ ['414' AREAL ['414', '"AREAL"']]
+ ['415' BECKHOFF_AUTOMATION ['415', '"Beckhoff Automation"']]
+ ['416' IPAS_GMBH ['416', '"IPAS GmbH"']]
+ ['417' KE_THERM_SOLUTIONS ['417', '"KE2 Therm Solutions"']]
+ ['418' BASE_PRODUCTS ['418', '"Base2Products"']]
+ ['419' DTL_CONTROLSLLC ['419', '"DTL Controls, LLC"']]
+ ['420' INNCOM_INTERNATIONAL_INC ['420', '"INNCOM International, Inc."']]
+ ['421' METZCONNECT_GMBH ['421', '"METZ CONNECT GmbH"']]
+ ['422' GREENTROL_AUTOMATION_INC ['422', '"Greentrol Automation, Inc"']]
+ ['423' BELIMO_AUTOMATIONAG1 ['423', '"BELIMO Automation AG"']]
+ ['424' SAMSUNG_HEAVY_INDUSTRIES_CO_LTD ['424', '"Samsung Heavy Industries Co, Ltd"']]
+ ['425' TRIACTA_POWER_TECHNOLOGIES_INC ['425', '"Triacta Power Technologies, Inc."']]
+ ['426' GLOBESTAR_SYSTEMS ['426', '"Globestar Systems"']]
+ ['427' MLB_ADVANCED_MEDIALP ['427', '"MLB Advanced Media, LP"']]
+ ['428' SWG_STUCKMANN_WIRTSCHAFTLICHE_GEBUDESYSTEME_GMBH ['428', '"SWG Stuckmann Wirtschaftliche Gebäudesysteme GmbH"']]
+ ['429' SENSOR_SWITCH ['429', '"SensorSwitch"']]
+ ['430' MULTITEK_POWER_LIMITED ['430', '"Multitek Power Limited"']]
+ ['431' AQUAMETROAG ['431', '"Aquametro AG"']]
+ ['432' LG_ELECTRONICS_INC ['432', '"LG Electronics Inc."']]
+ ['433' ELECTRONIC_THEATRE_CONTROLS_INC ['433', '"Electronic Theatre Controls, Inc."']]
+ ['434' MITSUBISHI_ELECTRIC_CORPORATION_NAGOYA_WORKS ['434', '"Mitsubishi Electric Corporation Nagoya Works"']]
+ ['435' DELTA_ELECTRONICS_INC ['435', '"Delta Electronics, Inc."']]
+ ['436' ELMA_KURTALJ_LTD ['436', '"Elma Kurtalj, Ltd."']]
+ ['437' TYCO_FIRE_SECURITY_GMBH ['437', '"Tyco Fire & Security GmbH"']]
+ ['438' NEDAP_SECURITY_MANAGEMENT ['438', '"Nedap Security Management"']]
+ ['439' ESC_AUTOMATION_INC ['439', '"ESC Automation Inc."']]
+ ['440' DSPYOU_LTD ['440', '"DSP4YOU Ltd."']]
+ ['441' GE_SENSINGAND_INSPECTION_TECHNOLOGIES ['441', '"GE Sensing and Inspection Technologies"']]
+ ['442' EMBEDDED_SYSTEMSSIA ['442', '"Embedded Systems SIA"']]
+ ['443' BEFEGA_GMBH ['443', '"BEFEGA GmbH"']]
+ ['444' BASELINE_INC ['444', '"Baseline Inc."']]
+ ['445' KEY_ACT ['445', '"Key2Act"']]
+ ['446' OEM_CTRL ['446', '"OEMCtrl"']]
+ ['447' CLARKSON_CONTROLS_LIMITED ['447', '"Clarkson Controls Limited"']]
+ ['448' ROGERWELL_CONTROL_SYSTEM_LIMITED ['448', '"Rogerwell Control System Limited"']]
+ ['449' SCL_ELEMENTS ['449', '"SCL Elements"']]
+ ['450' HITACHI_LTD1 ['450', '"Hitachi Ltd."']]
+ ['451' NEWRON_SYSTEMSA ['451', '"Newron System SA"']]
+ ['452' BEVECO_GEBOUWAUTOMATISERINGBV ['452', '"BEVECO Gebouwautomatisering BV"']]
+ ['453' STREAMSIDE_SOLUTIONS ['453', '"Streamside Solutions"']]
+ ['454' YELLOWSTONE_SOFT ['454', '"Yellowstone Soft"']]
+ ['455' OZTECH_INTELLIGENT_SYSTEMS_PTY_LTD ['455', '"Oztech Intelligent Systems Pty Ltd."']]
+ ['456' NOVELAN_GMBH ['456', '"Novelan GmbH"']]
+ ['457' FLEXIM_AMERICAS_CORPORATION ['457', '"Flexim Americas Corporation"']]
+ ['458' ICPDAS_CO_LTD ['458', '"ICP DAS Co., Ltd."']]
+ ['459' CARMA_INDUSTRIES_INC ['459', '"CARMA Industries Inc."']]
+ ['460' LOG_ONE_LTD ['460', '"Log-One Ltd."']]
+ ['461' TECO_ELECTRIC_MACHINERY_CO_LTD ['461', '"TECO Electric & Machinery Co., Ltd."']]
+ ['462' CONNECT_EX_INC ['462', '"ConnectEx, Inc."']]
+ ['463' TURBODDC_SDWEST ['463', '"Turbo DDC Südwest"']]
+ ['464' QUATROSENSE_ENVIRONMENTAL_LTD ['464', '"Quatrosense Environmental Ltd."']]
+ ['465' FIFTH_LIGHT_TECHNOLOGY_LTD ['465', '"Fifth Light Technology Ltd."']]
+ ['466' SCIENTIFIC_SOLUTIONS_LTD ['466', '"Scientific Solutions, Ltd."']]
+ ['467' CONTROLLER_AREA_NETWORK_SOLUTIONSM_SDN_BHD ['467', '"Controller Area Network Solutions (M) Sdn Bhd"']]
+ ['468' RESOL_ELEKTRONISCHE_REGELUNGEN_GMBH ['468', '"RESOL – Elektronische Regelungen GmbH"']]
+ ['469' RPBUSLLC ['469', '"RPBUS LLC"']]
+ ['470' BRS_SISTEMAS_ELETRONICOS ['470', '"BRS Sistemas Eletronicos"']]
+ ['471' WINDOW_MASTERAS ['471', '"WindowMaster A/S"']]
+ ['472' SUNLUX_TECHNOLOGIES_LTD ['472', '"Sunlux Technologies Ltd."']]
+ ['473' MEASURLOGIC ['473', '"Measurlogic"']]
+ ['474' FRIMAT_GMBH ['474', '"Frimat GmbH"']]
+ ['475' SPIRAX_SARCO ['475', '"Spirax Sarco"']]
+ ['476' LUXTRON ['476', '"Luxtron"']]
+ ['477' RAYPAK_INC ['477', '"Raypak Inc"']]
+ ['478' AIR_MONITOR_CORPORATION1 ['478', '"Air Monitor Corporation"']]
+ ['479' REGLER_OCH_WEBBTEKNIK_SVERIGEROWS ['479', '"Regler Och Webbteknik Sverige (ROWS)"']]
+ ['480' INTELLIGENT_LIGHTING_CONTROLS_INC ['480', '"Intelligent Lighting Controls Inc."']]
+ ['481' SANYO_ELECTRIC_INDUSTRY_CO_LTD ['481', '"Sanyo Electric Industry Co., Ltd"']]
+ ['482' E_MON_ENERGY_MONITORING_PRODUCTS ['482', '"E-Mon Energy Monitoring Products"']]
+ ['483' DIGITAL_CONTROL_SYSTEMS ['483', '"Digital Control Systems"']]
+ ['484' ATI_AIRTEST_TECHNOLOGIES_INC ['484', '"ATI Airtest Technologies, Inc."']]
+ ['485' SCSSA ['485', '"SCS SA"']]
+ ['486' HMS_INDUSTRIAL_NETWORKSAB ['486', '"HMS Industrial Networks AB"']]
+ ['487' SHENZHEN_UNIVERSAL_INTELLISYS_CO_LTD ['487', '"Shenzhen Universal Intellisys Co Ltd"']]
+ ['488' EK_INTELLISYS_SDN_BHD ['488', '"EK Intellisys Sdn Bhd"']]
+ ['489' SYS_COM ['489', '"SysCom"']]
+ ['490' FIRECOM_INC ['490', '"Firecom, Inc."']]
+ ['491' ESA_ELEKTROSCHALTANLAGEN_GRIMMA_GMBH ['491', '"ESA Elektroschaltanlagen Grimma GmbH"']]
+ ['492' KUMAHIRA_CO_LTD ['492', '"Kumahira Co Ltd"']]
+ ['493' HOTRACO ['493', '"Hotraco"']]
+ ['494' SABO_ELEKTRONIK_GMBH ['494', '"SABO Elektronik GmbH"']]
+ ['495' EQUIP_TRANS ['495', '"Equip’Trans"']]
+ ['496' TEMPERATURE_CONTROL_SPECIALITIES_CO_INCTCS ['496', '"Temperature Control Specialities Co., Inc (TCS)"']]
+ ['497' FLOW_CON_INTERNATIONALAS ['497', '"FlowCon International A/S"']]
+ ['498' THYSSEN_KRUPP_ELEVATOR_AMERICAS ['498', '"ThyssenKrupp Elevator Americas"']]
+ ['499' ABATEMENT_TECHNOLOGIES ['499', '"Abatement Technologies"']]
+ ['500' CONTINENTAL_CONTROL_SYSTEMSLLC ['500', '"Continental Control Systems, LLC"']]
+ ['501' WISAG_AUTOMATISIERUNGSTECHNIK_GMBH_COKG ['501', '"WISAG Automatisierungstechnik GmbH & Co KG"']]
+ ['502' EASYIO ['502', '"EasyIO"']]
+ ['503' EAP_ELECTRIC_GMBH ['503', '"EAP-Electric GmbH"']]
+ ['504' HARDMEIER ['504', '"Hardmeier"']]
+ ['505' MIRCOM_GROUPOF_COMPANIES ['505', '"Mircom Group of Companies"']]
+ ['506' QUEST_CONTROLS ['506', '"Quest Controls"']]
+ ['507' MESTEK_INC ['507', '"Mestek, Inc"']]
+ ['508' PULSE_ENERGY ['508', '"Pulse Energy"']]
+ ['509' TACHIKAWA_CORPORATION ['509', '"Tachikawa Corporation"']]
+ ['510' UNIVERSITYOF_NEBRASKA_LINCOLN ['510', '"University of Nebraska-Lincoln"']]
+ ['511' REDWOOD_SYSTEMS ['511', '"Redwood Systems"']]
+ ['512' PAS_STEC_INDUSTRIE_ELEKTRONIK_GMBH ['512', '"PASStec Industrie-Elektronik GmbH"']]
+ ['513' NGEK_INC ['513', '"NgEK, Inc."']]
+ ['514' TMAC_TECHNOLOGIES ['514', '"t-mac Technologies"']]
+ ['515' JIREH_ENERGY_TECH_CO_LTD ['515', '"Jireh Energy Tech Co., Ltd."']]
+ ['516' ENLIGHTED_INC ['516', '"Enlighted Inc."']]
+ ['517' EL_PIAST_SP_ZOO ['517', '"El-Piast Sp. Z o.o"']]
+ ['518' NETX_AUTOMATION_SOFTWARE_GMBH ['518', '"NetxAutomation Software GmbH"']]
+ ['519' INVERTEK_DRIVES ['519', '"Invertek Drives"']]
+ ['520' DEUTSCHMANN_AUTOMATION_GMBH_COKG ['520', '"Deutschmann Automation GmbH & Co. KG"']]
+ ['521' EMU_ELECTRONICAG ['521', '"EMU Electronic AG"']]
+ ['522' PHAEDRUS_LIMITED ['522', '"Phaedrus Limited"']]
+ ['523' SIGMATEK_GMBH_COKG ['523', '"Sigmatek GmbH & Co KG"']]
+ ['524' MARLIN_CONTROLS ['524', '"Marlin Controls"']]
+ ['525' CIRCUTORSA ['525', '"Circutor, SA"']]
+ ['526' UTC_FIRE_SECURITY ['526', '"UTC Fire & Security"']]
+ ['527' DENT_INSTRUMENTS_INC ['527', '"DENT Instruments, Inc."']]
+ ['528' FHP_MANUFACTURING_COMPANY_BOSCH_GROUP ['528', '"FHP Manufacturing Company – Bosch Group"']]
+ ['529' GE_INTELLIGENT_PLATFORMS ['529', '"GE Intelligent Platforms"']]
+ ['530' INNER_RANGE_PTY_LTD ['530', '"Inner Range Pty Ltd"']]
+ ['531' GLAS_ENERGY_TECHNOLOGY ['531', '"GLAS Energy Technology"']]
+ ['532' MSR_ELECTRONIC_GMBH ['532', '"MSR-Electronic-GmbH"']]
+ ['533' ENERGY_CONTROL_SYSTEMS_INC ['533', '"Energy Control Systems, Inc."']]
+ ['534' EMT_CONTROLS ['534', '"EMT Controls"']]
+ ['535' DAINTREE ['535', '"Daintree"']]
+ ['536' EUROIC_CDOO ['536', '"EURO ICC d.o.o"']]
+ ['537' TE_CONNECTIVITY_ENERGY ['537', '"TE Connectivity Energy"']]
+ ['538' GEZE_GMBH ['538', '"GEZE GmbH"']]
+ ['539' NEC_CORPORATION ['539', '"NEC Corporation"']]
+ ['540' HO_CHEUNG_INTERNATIONAL_COMPANY_LIMITED ['540', '"Ho Cheung International Company Limited"']]
+ ['541' SHARP_MANUFACTURING_SYSTEMS_CORPORATION ['541', '"Sharp Manufacturing Systems Corporation"']]
+ ['542' DOTCONTROL_SAS ['542', '"DOT CONTROLS a.s."']]
+ ['543' BEACON_MEDS ['543', '"BeaconMedæs"']]
+ ['544' MIDEA_COMMERCIAL_AIRCON ['544', '"Midea Commercial Aircon"']]
+ ['545' WATT_MASTER_CONTROLS ['545', '"WattMaster Controls"']]
+ ['546' KAMSTRUPAS ['546', '"Kamstrup A/S"']]
+ ['547' CA_COMPUTER_AUTOMATION_GMBH ['547', '"CA Computer Automation GmbH"']]
+ ['548' LAARS_HEATING_SYSTEMS_COMPANY ['548', '"Laars Heating Systems Company"']]
+ ['549' HITACHI_SYSTEMS_LTD ['549', '"Hitachi Systems, Ltd."']]
+ ['550' FUSHANAKE_ELECTRONIC_ENGINEERING_CO_LTD ['550', '"Fushan AKE Electronic Engineering Co., Ltd."']]
+ ['551' TOSHIBA_INTERNATIONAL_CORPORATION ['551', '"Toshiba International Corporation"']]
+ ['552' STARMAN_SYSTEMSLLC ['552', '"Starman Systems, LLC"']]
+ ['553' SAMSUNG_TECHWIN_CO_LTD ['553', '"Samsung Techwin Co., Ltd."']]
+ ['554' ISAS_INTEGRATED_SWITCHGEARAND_SYSTEMSPL ['554', '"ISAS-Integrated Switchgear and Systems P/L"']]
+ ['556' OBVIUS ['556', '"Obvius"']]
+ ['557' MAREK_GUZIK ['557', '"Marek Guzik"']]
+ ['558' VORTEK_INSTRUMENTSLLC ['558', '"Vortek Instruments, LLC"']]
+ ['559' UNIVERSAL_LIGHTING_TECHNOLOGIES ['559', '"Universal Lighting Technologies"']]
+ ['560' MYERS_POWER_PRODUCTS_INC ['560', '"Myers Power Products, Inc."']]
+ ['561' VECTOR_CONTROLS_GMBH ['561', '"Vector Controls GmbH"']]
+ ['562' CRESTRON_ELECTRONICS_INC ['562', '"Crestron Electronics, Inc."']]
+ ['563' AE_CONTROLS_LIMITED ['563', '"A&E Controls Limited"']]
+ ['564' PROJEKTOMONTAZAAD ['564', '"Projektomontaza A.D."']]
+ ['565' FREEAIRE_REFRIGERATION ['565', '"Freeaire Refrigeration"']]
+ ['566' AQUA_COOLER_PTY_LIMITED ['566', '"Aqua Cooler Pty Limited"']]
+ ['567' BASIC_CONTROLS ['567', '"Basic Controls"']]
+ ['568' GE_MEASUREMENTAND_CONTROL_SOLUTIONS_ADVANCED_SENSORS ['568', '"GE Measurement and Control Solutions Advanced Sensors"']]
+ ['569' EQUAL_NETWORKS ['569', '"EQUAL Networks"']]
+ ['570' MILLENNIAL_NET ['570', '"Millennial Net"']]
+ ['571' APLI_LTD ['571', '"APLI Ltd"']]
+ ['572' ELECTRO_INDUSTRIES_GAUGE_TECH ['572', '"Electro Industries/GaugeTech"']]
+ ['573' SANG_MYUNG_UNIVERSITY ['573', '"SangMyung University"']]
+ ['574' COPPERTREE_ANALYTICS_INC ['574', '"Coppertree Analytics, Inc."']]
+ ['575' CORE_NETIX_GMBH ['575', '"CoreNetiX GmbH"']]
+ ['576' ACUTHERM ['576', '"Acutherm"']]
+ ['577' DR_RIEDEL_AUTOMATISIERUNGSTECHNIK_GMBH ['577', '"Dr. Riedel Automatisierungstechnik GmbH"']]
+ ['578' SHINA_SYSTEM_CO_LTD ['578', '"Shina System Co., Ltd"']]
+ ['579' IQAPERTUS ['579', '"Iqapertus"']]
+ ['580' PSE_TECHNOLOGY ['580', '"PSE Technology"']]
+ ['581' BA_SYSTEMS ['581', '"BA Systems"']]
+ ['582' BTICINO ['582', '"BTICINO"']]
+ ['583' MONICO_INC ['583', '"Monico, Inc."']]
+ ['584' I_CUE ['584', '"iCue"']]
+ ['585' TEKMAR_CONTROL_SYSTEMS_LTD ['585', '"tekmar Control Systems Ltd."']]
+ ['586' CONTROL_TECHNOLOGY_CORPORATION ['586', '"Control Technology Corporation"']]
+ ['587' GFAE_GMBH ['587', '"GFAE GmbH"']]
+ ['588' BE_KA_SOFTWARE_GMBH ['588', '"BeKa Software GmbH"']]
+ ['589' ISOIL_INDUSTRIA_SPA ['589', '"Isoil Industria SpA"']]
+ ['590' HOME_SYSTEMS_CONSULTING_SPA ['590', '"Home Systems Consulting SpA"']]
+ ['591' SOCOMEC ['591', '"Socomec"']]
+ ['592' EVEREX_COMMUNICATIONS_INC ['592', '"Everex Communications, Inc."']]
+ ['593' CEIEC_ELECTRIC_TECHNOLOGY ['593', '"Ceiec Electric Technology"']]
+ ['594' ATRILA_GMBH ['594', '"Atrila GmbH"']]
+ ['595' WING_TECHS ['595', '"WingTechs"']]
+ ['596' SHENZHEN_MEK_INTELLISYS_PTE_LTD ['596', '"Shenzhen Mek Intellisys Pte Ltd."']]
+ ['597' NESTFIELD_CO_LTD ['597', '"Nestfield Co., Ltd."']]
+ ['598' SWISSPHONE_TELECOMAG ['598', '"Swissphone Telecom AG"']]
+ ['599' PNTECHJSC ['599', '"PNTECH JSC"']]
+ ['600' HORNERAPGLLC ['600', '"Horner APG, LLC"']]
+ ['601' PVI_INDUSTRIESLLC ['601', '"PVI Industries, LLC"']]
+ ['602' ELACOMPIL ['602', '"Ela-compil"']]
+ ['603' PEGASUS_AUTOMATION_INTERNATIONALLLC ['603', '"Pegasus Automation International LLC"']]
+ ['604' WIGHT_ELECTRONIC_SERVICES_LTD ['604', '"Wight Electronic Services Ltd."']]
+ ['605' MARCOM ['605', '"Marcom"']]
+ ['606' EXHAUSTOAS ['606', '"Exhausto A/S"']]
+ ['607' DWYER_INSTRUMENTS_INC ['607', '"Dwyer Instruments, Inc."']]
+ ['608' LINK_GMBH ['608', '"Link GmbH"']]
+ ['609' OPPERMANN_REGELGERATE_GMBH ['609', '"Oppermann Regelgerate GmbH"']]
+ ['610' NU_AIRE_INC ['610', '"NuAire, Inc."']]
+ ['611' NORTEC_HUMIDITY_INC ['611', '"Nortec Humidity, Inc."']]
+ ['612' BIGWOOD_SYSTEMS_INC ['612', '"Bigwood Systems, Inc."']]
+ ['613' ENBALA_POWER_NETWORKS ['613', '"Enbala Power Networks"']]
+ ['614' INTER_ENERGY_CO_LTD ['614', '"Inter Energy Co., Ltd."']]
+ ['615' ETC ['615', '"ETC"']]
+ ['616' COMELECSARL ['616', '"COMELEC S.A.R.L"']]
+ ['617' PYTHIA_TECHNOLOGIES ['617', '"Pythia Technologies"']]
+ ['618' TREND_POINT_SYSTEMS_INC ['618', '"TrendPoint Systems, Inc."']]
+ ['619' AWEX ['619', '"AWEX"']]
+ ['620' EUREVIA ['620', '"Eurevia"']]
+ ['621' KONGSBERGELONAS ['621', '"Kongsberg E-lon AS"']]
+ ['622' FLAKT_WOODS ['622', '"FlaktWoods"']]
+ ['623' EE_ELEKTRONIKGESMBH ['623', '"E + E Elektronik GES M.B.H."']]
+ ['624' ARC_INFORMATIQUE ['624', '"ARC Informatique"']]
+ ['625' SKIDATAAG ['625', '"SKIDATA AG"']]
+ ['626' WSW_SOLUTIONS ['626', '"WSW Solutions"']]
+ ['627' TREFON_ELECTRONIC_GMBH ['627', '"Trefon Electronic GmbH"']]
+ ['628' DONGSEO_SYSTEM ['628', '"Dongseo System"']]
+ ['629' KANONTEC_INTELLIGENCE_TECHNOLOGY_CO_LTD ['629', '"Kanontec Intelligence Technology Co., Ltd."']]
+ ['630' EVCO_SPA ['630', '"EVCO S.p.A."']]
+ ['631' ACCUENERGY_CANADA_INC ['631', '"Accuenergy (Canada) Inc."']]
+ ['632' SOFTDEL ['632', '"SoftDEL"']]
+ ['633' ORION_ENERGY_SYSTEMS_INC ['633', '"Orion Energy Systems, Inc."']]
+ ['634' ROBOTICSWARE ['634', '"Roboticsware"']]
+ ['635' DOMIQ_SPZOO ['635', '"DOMIQ Sp. z o.o."']]
+ ['636' SOLIDYNE ['636', '"Solidyne"']]
+ ['637' ELECSYS_CORPORATION ['637', '"Elecsys Corporation"']]
+ ['638' CONDITIONAIRE_INTERNATIONAL_PTY_LIMITED ['638', '"Conditionaire International Pty. Limited"']]
+ ['639' QUEBEC_INC ['639', '"Quebec, Inc."']]
+ ['640' HOMERUN_HOLDINGS ['640', '"Homerun Holdings"']]
+ ['641' MURATA_AMERICAS ['641', '"Murata Americas"']]
+ ['642' COMPTEK ['642', '"Comptek"']]
+ ['643' WESTCO_SYSTEMS_INC ['643', '"Westco Systems, Inc."']]
+ ['644' ADVANCIS_SOFTWARE_SERVICES_GMBH ['644', '"Advancis Software & Services GmbH"']]
+ ['645' INTERGRIDLLC ['645', '"Intergrid, LLC"']]
+ ['646' MARKERR_CONTROLS_INC ['646', '"Markerr Controls, Inc."']]
+ ['647' TOSHIBA_ELEVATORAND_BUILDING_SYSTEMS_CORPORATION ['647', '"Toshiba Elevator and Building Systems Corporation"']]
+ ['648' SPECTRUM_CONTROLS_INC ['648', '"Spectrum Controls, Inc."']]
+ ['649' MKSERVICE ['649', '"Mkservice"']]
+ ['650' FOX_THERMAL_INSTRUMENTS ['650', '"Fox Thermal Instruments"']]
+ ['651' SYXTH_SENSE_LTD ['651', '"SyxthSense Ltd"']]
+ ['652' DUHA_SYSTEMSRO ['652', '"DUHA System S R.O."']]
+ ['653' NIBE ['653', '"NIBE"']]
+ ['654' MELINK_CORPORATION ['654', '"Melink Corporation"']]
+ ['655' FRITZ_HABER_INSTITUT ['655', '"Fritz-Haber-Institut"']]
+ ['656' MTU_ONSITE_ENERGY_GMBH_GAS_POWER_SYSTEMS ['656', '"MTU Onsite Energy GmbH, Gas Power Systems"']]
+ ['657' OMEGA_ENGINEERING_INC ['657', '"Omega Engineering, Inc."']]
+ ['658' AVELON ['658', '"Avelon"']]
+ ['659' YWIRE_TECHNOLOGIES_INC ['659', '"Ywire Technologies, Inc."']]
+ ['660' MR_ENGINEERING_CO_LTD ['660', '"M.R. Engineering Co., Ltd."']]
+ ['661' LOCHINVARLLC ['661', '"Lochinvar, LLC"']]
+ ['662' SONTAY_LIMITED ['662', '"Sontay Limited"']]
+ ['663' GRUPA_SLAWOMIR_CHELMINSKI ['663', '"GRUPA Slawomir Chelminski"']]
+ ['664' ARCH_METER_CORPORATION ['664', '"Arch Meter Corporation"']]
+ ['665' SENVA_INC ['665', '"Senva, Inc."']]
+ ['667' FM_TEC ['667', '"FM-Tec"']]
+ ['668' SYSTEMS_SPECIALISTS_INC ['668', '"Systems Specialists, Inc."']]
+ ['669' SENSE_AIR ['669', '"SenseAir"']]
+ ['670' AB_INDUSTRIE_TECHNIK_SRL ['670', '"AB IndustrieTechnik Srl"']]
+ ['671' CORTLAND_RESEARCHLLC ['671', '"Cortland Research, LLC"']]
+ ['672' MEDIA_VIEW ['672', '"MediaView"']]
+ ['673' VDA_ELETTRONICA ['673', '"VDA Elettronica"']]
+ ['674' CSS_INC ['674', '"CSS, Inc."']]
+ ['675' TEK_AIR_SYSTEMS_INC ['675', '"Tek-Air Systems, Inc."']]
+ ['676' ICDT ['676', '"ICDT"']]
+ ['677' THE_ARMSTRONG_MONITORING_CORPORATION ['677', '"The Armstrong Monitoring Corporation"']]
+ ['678' DIXELL_SRL ['678', '"DIXELL S.r.l"']]
+ ['679' LEAD_SYSTEM_INC ['679', '"Lead System, Inc."']]
+ ['680' ISM_EURO_CENTERSA ['680', '"ISM EuroCenter S.A."']]
+ ['681' TDIS ['681', '"TDIS"']]
+ ['682' TRADEFIDES ['682', '"Trade FIDES"']]
+ ['683' KNRR_GMBH_EMERSON_NETWORK_POWER ['683', '"Knürr GmbH (Emerson Network Power)"']]
+ ['684' RESOURCE_DATA_MANAGEMENT ['684', '"Resource Data Management"']]
+ ['685' ABIES_TECHNOLOGY_INC ['685', '"Abies Technology, Inc."']]
+ ['686' UAB_KOMFOVENT ['686', '"UAB Komfovent"']]
+ ['687' MIRAE_ELECTRICAL_MFG_CO_LTD ['687', '"MIRAE Electrical Mfg. Co., Ltd."']]
+ ['688' HUNTER_DOUGLAS_ARCHITECTURAL_PROJECTS_SCANDINAVIA_APS ['688', '"HunterDouglas Architectural Projects Scandinavia ApS"']]
+ ['689' RUNPAQ_GROUP_CO_LTD ['689', '"RUNPAQ Group Co., Ltd"']]
+ ['690' UNICARDSA ['690', '"Unicard SA"']]
+ ['691' IE_TECHNOLOGIES ['691', '"IE Technologies"']]
+ ['692' RUSKIN_MANUFACTURING ['692', '"Ruskin Manufacturing"']]
+ ['693' CALON_ASSOCIATES_LIMITED ['693', '"Calon Associates Limited"']]
+ ['694' CONTEC_CO_LTD ['694', '"Contec Co., Ltd."']]
+ ['695' IT_GMBH ['695', '"iT GmbH"']]
+ ['696' AUTANI_CORPORATION ['696', '"Autani Corporation"']]
+ ['697' CHRISTIAN_FORTIN ['697', '"Christian Fortin"']]
+ ['698' HDL ['698', '"HDL"']]
+ ['699' IPID_SPZOO_LIMITED ['699', '"IPID Sp. Z.O.O Limited"']]
+ ['700' FUJI_ELECTRIC_CO_LTD ['700', '"Fuji Electric Co., Ltd"']]
+ ['701' VIEW_INC ['701', '"View, Inc."']]
+ ['702' SAMSUNGS1_CORPORATION ['702', '"Samsung S1 Corporation"']]
+ ['703' NEW_LIFT ['703', '"New Lift"']]
+ ['704' VRT_SYSTEMS ['704', '"VRT Systems"']]
+ ['705' MOTION_CONTROL_ENGINEERING_INC ['705', '"Motion Control Engineering, Inc."']]
+ ['706' WEISS_KLIMATECHNIK_GMBH ['706', '"Weiss Klimatechnik GmbH"']]
+ ['707' ELKON ['707', '"Elkon"']]
+ ['708' ELIWELL_CONTROLS_SRL ['708', '"Eliwell Controls S.r.l."']]
+ ['709' JAPAN_COMPUTER_TECHNOS_CORP ['709', '"Japan Computer Technos Corp"']]
+ ['710' RATIONAL_NETWORKEHF ['710', '"Rational Network ehf"']]
+ ['711' MAGNUM_ENERGY_SOLUTIONSLLC ['711', '"Magnum Energy Solutions, LLC"']]
+ ['712' MEL_ROK ['712', '"MelRok"']]
+ ['713' VAE_GROUP ['713', '"VAE Group"']]
+ ['714' LGCNS ['714', '"LGCNS"']]
+ ['715' BERGHOF_AUTOMATIONSTECHNIK_GMBH ['715', '"Berghof Automationstechnik GmbH"']]
+ ['716' QUARK_COMMUNICATIONS_INC ['716', '"Quark Communications, Inc."']]
+ ['717' SONTEX ['717', '"Sontex"']]
+ ['718' MIVUNEAG ['718', '"mivune AG"']]
+ ['719' PANDUIT ['719', '"Panduit"']]
+ ['720' SMART_CONTROLSLLC ['720', '"Smart Controls, LLC"']]
+ ['721' COMPU_AIRE_INC ['721', '"Compu-Aire, Inc."']]
+ ['722' SIERRA ['722', '"Sierra"']]
+ ['723' PROTO_SENSE_TECHNOLOGIES ['723', '"ProtoSense Technologies"']]
+ ['724' ELTRAC_TECHNOLOGIES_PVT_LTD ['724', '"Eltrac Technologies Pvt Ltd"']]
+ ['725' BEKTAS_INVISIBLE_CONTROLS_GMBH ['725', '"Bektas Invisible Controls GmbH"']]
+ ['726' ENTELEC ['726', '"Entelec"']]
+ ['727' INNEXIV ['727', '"INNEXIV"']]
+ ['728' COVENANT ['728', '"Covenant"']]
+ ['729' DAVITORAB ['729', '"Davitor AB"']]
+ ['730' TONG_FANG_TECHNOVATOR ['730', '"TongFang Technovator"']]
+ ['731' BUILDING_ROBOTICS_INC ['731', '"Building Robotics, Inc."']]
+ ['732' HSSMSRUG ['732', '"HSS-MSR UG"']]
+ ['733' FRAM_TACKLLC ['733', '"FramTack LLC"']]
+ ['734' BL_ACOUSTICS_LTD ['734', '"B. L. Acoustics, Ltd."']]
+ ['735' TRAXXON_ROCK_DRILLS_LTD ['735', '"Traxxon Rock Drills, Ltd"']]
+ ['736' FRANKE ['736', '"Franke"']]
+ ['737' WURM_GMBH_CO ['737', '"Wurm GmbH & Co"']]
+ ['738' ADDENERGIE ['738', '"AddENERGIE"']]
+ ['739' MIRLE_AUTOMATION_CORPORATION ['739', '"Mirle Automation Corporation"']]
+ ['740' IBIS_NETWORKS ['740', '"Ibis Networks"']]
+ ['741' IDKART_ASRO ['741', '"ID-KARTA s.r.o."']]
+ ['742' ANAREN_INC ['742', '"Anaren, Inc."']]
+ ['743' SPAN_INCORPORATED ['743', '"Span, Incorporated"']]
+ ['744' BOSCH_THERMOTECHNOLOGY_CORP ['744', '"Bosch Thermotechnology Corp"']]
+ ['745' DRC_TECHNOLOGYSA ['745', '"DRC Technology S.A."']]
+ ['746' SHANGHAI_ENERGY_BUILDING_TECHNOLOGY_CO_LTD ['746', '"Shanghai Energy Building Technology Co, Ltd"']]
+ ['747' FRAPORTAG ['747', '"Fraport AG"']]
+ ['748' FLOWGROUP ['748', '"Flowgroup"']]
+ ['749' SKYTRON_ENERGY_GMBH ['749', '"Skytron Energy, GmbH"']]
+ ['750' ALTEL_WICHA_GOLDA_SPJ ['750', '"ALTEL Wicha, Golda Sp. J."']]
+ ['751' DRUPAL ['751', '"Drupal"']]
+ ['752' AXIOMATIC_TECHNOLOGY_LTD ['752', '"Axiomatic Technology, Ltd"']]
+ ['753' BOHNKE_PARTNER ['753', '"Bohnke + Partner"']]
+ ['754' FUNCTION1 ['754', '"Function1"']]
+ ['755' OPTERGY_PTY_LTD ['755', '"Optergy Pty, Ltd"']]
+ ['756' LSI_VIRTICUS ['756', '"LSI Virticus"']]
+ ['757' KONZEPTPARK_GMBH ['757', '"Konzeptpark GmbH"']]
+ ['758' NX_LIGHTING_CONTROLS ['758', '"NX Lighting Controls"']]
+ ['759' E_CURV_INC ['759', '"eCurv, Inc."']]
+ ['760' AGNOSYS_GMBH ['760', '"Agnosys GmbH"']]
+ ['761' SHANGHAI_SUNFULL_AUTOMATION_COLTD ['761', '"Shanghai Sunfull Automation Co., LTD"']]
+ ['762' KURZ_INSTRUMENTS_INC ['762', '"Kurz Instruments, Inc."']]
+ ['763' CIAS_ELETTRONICA_SRL ['763', '"Cias Elettronica S.r.l."']]
+ ['764' MULTIAQUA_INC ['764', '"Multiaqua, Inc."']]
+ ['765' BLUE_BOX ['765', '"BlueBox"']]
+ ['766' SENSIDYNE ['766', '"Sensidyne"']]
+ ['767' VIESSMANN_ELEKTRONIK_GMBH ['767', '"Viessmann Elektronik GmbH"']]
+ ['768' AD_FWEBCOMSRL ['768', '"ADFweb.com srl"']]
+ ['769' GAYLORD_INDUSTRIES ['769', '"Gaylord Industries"']]
+ ['770' MAJUR_LTD ['770', '"Majur Ltd."']]
+ ['771' SHANGHAI_HUILIN_TECHNOLOGY_CO_LTD ['771', '"Shanghai Huilin Technology Co., Ltd."']]
+ ['772' EXOTRONIC ['772', '"Exotronic"']]
+ ['773' SAFECONTRO_LSRO ['773', '"SAFECONTROL s.r.o."']]
+ ['774' AMATIS ['774', '"Amatis"']]
+ ['775' UNIVERSAL_ELECTRIC_CORPORATION ['775', '"Universal Electric Corporation"']]
+ ['776' IBA_CNET ['776', '"iBACnet"']]
+ ['778' SMARTRISE_ENGINEERING_INC ['778', '"Smartrise Engineering, Inc."']]
+ ['779' MIRATRON_INC ['779', '"Miratron, Inc."']]
+ ['780' SMART_EDGE ['780', '"SmartEdge"']]
+ ['781' MITSUBISHI_ELECTRIC_AUSTRALIA_PTY_LTD ['781', '"Mitsubishi Electric Australia Pty Ltd"']]
+ ['782' TRIANGLE_RESEARCH_INTERNATIONAL_PTD_LTD ['782', '"Triangle Research International Ptd Ltd"']]
+ ['783' PRODUAL_OY ['783', '"Produal Oy"']]
+ ['784' MILESTONE_SYSTEMSAS ['784', '"Milestone Systems A/S"']]
+ ['785' TRUSTBRIDGE ['785', '"Trustbridge"']]
+ ['786' FEEDBACK_SOLUTIONS ['786', '"Feedback Solutions"']]
+ ['787' IES ['787', '"IES"']]
+ ['788' ABB_POWER_PROTECTIONSA ['788', '"ABB Power Protection SA"']]
+ ['789' RIPTIDEIO ['789', '"Riptide IO"']]
+ ['790' MESSERSCHMITT_SYSTEMSAG ['790', '"Messerschmitt Systems AG"']]
+ ['791' DEZEM_ENERGY_CONTROLLING ['791', '"Dezem Energy Controlling"']]
+ ['792' MECHO_SYSTEMS ['792', '"MechoSystems"']]
+ ['793' EVON_GMBH ['793', '"evon GmbH"']]
+ ['794' CS_LAB_GMBH ['794', '"CS Lab GmbH"']]
+ ['795' N_0_ENTERPRISES_INC ['795', '"8760 Enterprises, Inc."']]
+ ['796' TOUCHE_CONTROLS ['796', '"Touche Controls"']]
+ ['797' ONTROL_TEKNIK_MALZEME_SANVE_TICAS ['797', '"Ontrol Teknik Malzeme San. ve Tic. A.S."']]
+ ['798' UNI_CONTROL_SYSTEM_SP_ZOO ['798', '"Uni Control System Sp. Z o.o."']]
+ ['799' WEIHAI_PLOUMETER_CO_LTD ['799', '"Weihai Ploumeter Co., Ltd"']]
+ ['800' ELCOM_INTERNATIONAL_PVT_LTD ['800', '"Elcom International Pvt. Ltd"']]
+ ['801' SIGNIFY ['801', '"Signify"']]
+ ['802' AUTOMATION_DIRECT ['802', '"AutomationDirect"']]
+ ['803' PARAGON_ROBOTICS ['803', '"Paragon Robotics"']]
+ ['804' SMT_SYSTEM_MODULES_TECHNOLOGYAG ['804', '"SMT System & Modules Technology AG"']]
+ ['805' RADIX_IOTLLC ['805', '"Radix IoT LLC"']]
+ ['806' CMR_CONTROLS_LTD ['806', '"CMR Controls Ltd"']]
+ ['807' INNOVARI_INC ['807', '"Innovari, Inc."']]
+ ['808' ABB_CONTROL_PRODUCTS ['808', '"ABB Control Products"']]
+ ['809' GESELLSCHAFTFUR_GEBUDEAUTOMATIONMBH ['809', '"Gesellschaft fur Gebäudeautomation mbH"']]
+ ['810' RODI_SYSTEMS_CORP ['810', '"RODI Systems Corp."']]
+ ['811' NEXTEK_POWER_SYSTEMS ['811', '"Nextek Power Systems"']]
+ ['812' CREATIVE_LIGHTING ['812', '"Creative Lighting"']]
+ ['813' WATER_FURNACE_INTERNATIONAL ['813', '"WaterFurnace International"']]
+ ['814' MERCURY_SECURITY ['814', '"Mercury Security"']]
+ ['815' HISENSE_SHANDONG_AIR_CONDITIONING_CO_LTD ['815', '"Hisense (Shandong) Air-Conditioning Co., Ltd."']]
+ ['816' LAYERED_SOLUTIONS_INC ['816', '"Layered Solutions, Inc."']]
+ ['817' LEEGOOD_AUTOMATIC_SYSTEM_INC ['817', '"Leegood Automatic System, Inc."']]
+ ['818' SHANGHAI_RESTAR_TECHNOLOGY_CO_LTD ['818', '"Shanghai Restar Technology Co., Ltd."']]
+ ['819' REIMANN_INGENIEURBRO ['819', '"Reimann Ingenieurbüro"']]
+ ['820' LYN_TEC ['820', '"LynTec"']]
+ ['821' HTP ['821', '"HTP"']]
+ ['822' ELKOR_TECHNOLOGIES_INC ['822', '"Elkor Technologies, Inc."']]
+ ['823' BENTROL_PTY_LTD ['823', '"Bentrol Pty Ltd"']]
+ ['824' TEAM_CONTROL_OY ['824', '"Team-Control Oy"']]
+ ['825' NEXT_DEVICELLC ['825', '"NextDevice, LLC"']]
+ ['826' ISMACONTROLLI_SPA ['826', '"iSMA CONTROLLI S.p.a."']]
+ ['827' KINGI_ELECTRONICS_CO_LTD ['827', '"King I Electronics Co., Ltd"']]
+ ['828' SAMDAV ['828', '"SAMDAV"']]
+ ['829' NEXT_GEN_INDUSTRIES_PVT_LTD ['829', '"Next Gen Industries Pvt. Ltd."']]
+ ['830' ENTICLLC ['830', '"Entic LLC"']]
+ ['831' ETAP ['831', '"ETAP"']]
+ ['832' MORALLE_ELECTRONICS_LIMITED ['832', '"Moralle Electronics Limited"']]
+ ['833' LEICOMAG ['833', '"Leicom AG"']]
+ ['834' WATTS_REGULATOR_COMPANY ['834', '"Watts Regulator Company"']]
+ ['835' SC_ORBTRONICSSRL ['835', '"S.C. Orbtronics S.R.L."']]
+ ['836' GAUSSAN_TECHNOLOGIES ['836', '"Gaussan Technologies"']]
+ ['837' WE_BFACTORY_GMBH ['837', '"WEBfactory GmbH"']]
+ ['838' OCEAN_CONTROLS ['838', '"Ocean Controls"']]
+ ['839' MESSANA_AIR_RAY_CONDITIONINGSRL ['839', '"Messana Air-Ray Conditioning s.r.l."']]
+ ['840' HANGZHOUBATOWN_TECHNOLOGY_CO_LTD ['840', '"Hangzhou BATOWN Technology Co. Ltd."']]
+ ['841' REASONABLE_CONTROLS ['841', '"Reasonable Controls"']]
+ ['842' SERVISYS_INC ['842', '"Servisys, Inc."']]
+ ['843' HALSTRUPWALCHER_GMBH ['843', '"halstrup-walcher GmbH"']]
+ ['844' SWG_AUTOMATION_FUZHOU_LIMITED ['844', '"SWG Automation Fuzhou Limited"']]
+ ['845' KSB_AKTIENGESELLSCHAFT ['845', '"KSB Aktiengesellschaft"']]
+ ['846' HYBRYD_SPZOO ['846', '"Hybryd Sp. z o.o."']]
+ ['847' HELVATRONAG ['847', '"Helvatron AG"']]
+ ['848' ODERON_SPZOO ['848', '"Oderon Sp. Z.O.O."']]
+ ['849' MIKOLAB ['849', '"mikolab"']]
+ ['850' EXODRAFT ['850', '"Exodraft"']]
+ ['851' HOCHHUTH_GMBH ['851', '"Hochhuth GmbH"']]
+ ['852' INTEGRATED_SYSTEM_TECHNOLOGIES_LTD ['852', '"Integrated System Technologies Ltd."']]
+ ['853' SHANGHAI_CELLCONS_CONTROLS_CO_LTD ['853', '"Shanghai Cellcons Controls Co., Ltd"']]
+ ['854' EMME_CONTROLSLLC ['854', '"Emme Controls, LLC"']]
+ ['855' FIELD_DIAGNOSTIC_SERVICES_INC ['855', '"Field Diagnostic Services, Inc."']]
+ ['856' GES_TEKNIKAS ['856', '"Ges Teknik A.S."']]
+ ['857' GLOBAL_POWER_PRODUCTS_INC ['857', '"Global Power Products, Inc."']]
+ ['858' OPTIONNV ['858', '"Option NV"']]
+ ['859' BV_CONTROLAG ['859', '"BV-Control AG"']]
+ ['860' SIGREN_ENGINEERINGAG ['860', '"Sigren Engineering AG"']]
+ ['861' SHANGHAI_JALTONE_TECHNOLOGY_CO_LTD ['861', '"Shanghai Jaltone Technology Co., Ltd."']]
+ ['862' MAX_LINE_SOLUTIONS_LTD ['862', '"MaxLine Solutions Ltd"']]
+ ['863' KRON_INSTRUMENTOS_ELTRICOS_LTDA ['863', '"Kron Instrumentos Elétricos Ltda"']]
+ ['864' THERMO_MATRIX ['864', '"Thermo Matrix"']]
+ ['865' INFINITE_AUTOMATION_SYSTEMS_INC ['865', '"Infinite Automation Systems, Inc."']]
+ ['866' VANTAGE ['866', '"Vantage"']]
+ ['867' ELECON_MEASUREMENTS_PVT_LTD ['867', '"Elecon Measurements Pvt Ltd"']]
+ ['868' TBA ['868', '"TBA"']]
+ ['869' CARNES_COMPANY ['869', '"Carnes Company"']]
+ ['870' HARMAN_PROFESSIONAL ['870', '"Harman Professional"']]
+ ['871' NENUTEC_ASIA_PACIFIC_PTE_LTD ['871', '"Nenutec Asia Pacific Pte Ltd"']]
+ ['872' GIANV ['872', '"Gia NV"']]
+ ['873' KEPWARE_TEHNOLOGIES ['873', '"Kepware Tehnologies"']]
+ ['874' TEMPERATURE_ELECTRONICS_LTD ['874', '"Temperature Electronics Ltd"']]
+ ['875' PACKET_POWER ['875', '"Packet Power"']]
+ ['876' PROJECT_HAYSTACK_CORPORATION ['876', '"Project Haystack Corporation"']]
+ ['877' DEOS_CONTROLS_AMERICAS_INC ['877', '"DEOS Controls Americas Inc."']]
+ ['878' SENSEWARE_INC ['878', '"Senseware Inc"']]
+ ['879' MST_SYSTEMTECHNIKAG ['879', '"MST Systemtechnik AG"']]
+ ['880' LONIX_LTD ['880', '"Lonix Ltd"']]
+ ['881' GOSSEN_METRAWATT_GMBH ['881', '"Gossen Metrawatt GmbH"']]
+ ['882' AVIOSYS_INTERNATIONAL_INC ['882', '"Aviosys International Inc."']]
+ ['883' EFFICIENT_BUILDING_AUTOMATION_CORP ['883', '"Efficient Building Automation Corp."']]
+ ['884' ACCUTRON_INSTRUMENTS_INC ['884', '"Accutron Instruments Inc."']]
+ ['885' VERMONT_ENERGY_CONTROL_SYSTEMSLLC ['885', '"Vermont Energy Control Systems LLC"']]
+ ['886' DCC_DYNAMICS ['886', '"DCC Dynamics"']]
+ ['887' BEG_BRCK_ELECTRONIC_GMBH ['887', '"B.E.G. Brück Electronic GmbH"']]
+ ['889' NGBS_HUNGARY_LTD ['889', '"NGBS Hungary Ltd."']]
+ ['890' ILLUM_TECHNOLOGYLLC ['890', '"ILLUM Technology, LLC"']]
+ ['891' DELTA_CONTROLS_GERMANY_LIMITED ['891', '"Delta Controls Germany Limited"']]
+ ['892' ST_SERVICE_TECHNIQUESA ['892', '"S+T Service & Technique S.A."']]
+ ['893' SIMPLE_SOFT ['893', '"SimpleSoft"']]
+ ['894' ALTAIR_ENGINEERING ['894', '"Altair Engineering"']]
+ ['895' EZEN_SOLUTION_INC ['895', '"EZEN Solution Inc."']]
+ ['896' FUJITEC_CO_LTD ['896', '"Fujitec Co. Ltd."']]
+ ['897' TERRALUX ['897', '"Terralux"']]
+ ['898' ANNICOM ['898', '"Annicom"']]
+ ['899' BIHL_WIEDEMANN_GMBH ['899', '"Bihl+Wiedemann GmbH"']]
+ ['900' DRAPER_INC ['900', '"Draper, Inc."']]
+ ['901' SCHCO_INTERNATIONALKG ['901', '"Schüco International KG"']]
+ ['902' OTIS_ELEVATOR_COMPANY ['902', '"Otis Elevator Company"']]
+ ['903' FIDELIX_OY ['903', '"Fidelix Oy"']]
+ ['904' RAM_GMBH_MESSUND_REGELTECHNIK ['904', '"RAM GmbH Mess- und Regeltechnik"']]
+ ['905' WEMS ['905', '"WEMS"']]
+ ['906' RAVEL_ELECTRONICS_PVT_LTD ['906', '"Ravel Electronics Pvt Ltd"']]
+ ['907' OMNI_MAGNI ['907', '"OmniMagni"']]
+ ['908' ECHELON ['908', '"Echelon"']]
+ ['909' INTELLIMETER_CANADA_INC ['909', '"Intellimeter Canada, Inc."']]
+ ['910' BITHOUSE_OY ['910', '"Bithouse Oy"']]
+ ['912' BUILD_PULSE ['912', '"BuildPulse"']]
+ ['913' SHENZHEN1000_BUILDING_AUTOMATION_CO_LTD ['913', '"Shenzhen 1000 Building Automation Co. Ltd"']]
+ ['914' AED_ENGINEERING_GMBH ['914', '"AED Engineering GmbH"']]
+ ['915' GNTNER_GMBH_COKG ['915', '"Güntner GmbH & Co. KG"']]
+ ['916' KN_XLOGIC ['916', '"KNXlogic"']]
+ ['917' CIM_ENVIRONMENTAL_GROUP ['917', '"CIM Environmental Group"']]
+ ['918' FLOW_CONTROL ['918', '"Flow Control"']]
+ ['919' LUMEN_CACHE_INC ['919', '"Lumen Cache, Inc."']]
+ ['920' ECOSYSTEM ['920', '"Ecosystem"']]
+ ['921' POTTER_ELECTRIC_SIGNAL_COMPANYLLC ['921', '"Potter Electric Signal Company, LLC"']]
+ ['922' TYCO_FIRE_SECURITY_SPA ['922', '"Tyco Fire & Security S.p.A."']]
+ ['923' WATANABE_ELECTRIC_INDUSTRY_CO_LTD ['923', '"Watanabe Electric Industry Co., Ltd."']]
+ ['924' CAUSAM_ENERGY ['924', '"Causam Energy"']]
+ ['925' WTECAG ['925', '"W-tec AG"']]
+ ['926' IMI_HYDRONIC_ENGINEERING_INTERNATIONALSA ['926', '"IMI Hydronic Engineering International SA"']]
+ ['927' ARIGO_SOFTWARE ['927', '"ARIGO Software"']]
+ ['928' MSA_SAFETY1 ['928', '"MSA Safety"']]
+ ['929' SMART_SOLUCOES_LTDAMERCATO ['929', '"Smart Solucoes Ltda – MERCATO"']]
+ ['930' PIATRA_ENGINEERING ['930', '"PIATRA Engineering"']]
+ ['931' ODIN_AUTOMATION_SYSTEMSLLC ['931', '"ODIN Automation Systems, LLC"']]
+ ['932' BELPARTSNV ['932', '"Belparts NV"']]
+ ['933' UABSALDA ['933', '"UAB, SALDA"']]
+ ['934' ALREIT_REGELTECHNIK_GMBH ['934', '"Alre-IT Regeltechnik GmbH"']]
+ ['935' INGENIEURBROH_LERTES_GMBH_COKG ['935', '"Ingenieurbüro H. Lertes GmbH & Co. KG"']]
+ ['936' BREATHING_BUILDINGS ['936', '"Breathing Buildings"']]
+ ['937' EWONSA ['937', '"eWON SA"']]
+ ['938' CAV_UFF_GIACOMO_CIMBERIO_SPA ['938', '"Cav. Uff. Giacomo Cimberio S.p.A"']]
+ ['939' PKE_ELECTRONICSAG ['939', '"PKE Electronics AG"']]
+ ['940' ALLEN ['940', '"Allen"']]
+ ['941' KASTLE_SYSTEMS ['941', '"Kastle Systems"']]
+ ['942' LOGICAL_ELECTRO_MECHANICALEM_SYSTEMS_INC ['942', '"Logical Electro-Mechanical (EM) Systems, Inc."']]
+ ['943' PP_KINETICS_INSTRUMENTSLLC ['943', '"ppKinetics Instruments, LLC"']]
+ ['944' CATHEXIS_TECHNOLOGIES ['944', '"Cathexis Technologies"']]
+ ['945' SYLOPSP_ZOOSPK ['945', '"Sylop sp. Z o.o. sp.k"']]
+ ['946' BRAUNS_CONTROL_GMBH ['946', '"Brauns Control GmbH"']]
+ ['947' OMRONSOCIALSOLUTIONSCOLTD ['947', '"OMRON SOCIAL SOLUTIONS CO., LTD."']]
+ ['948' WILDEBOER_BAUTEILE_GMBH ['948', '"Wildeboer Bauteile Gmbh"']]
+ ['949' SHANGHAI_BIENS_TECHNOLOGIES_LTD ['949', '"Shanghai Biens Technologies Ltd"']]
+ ['950' BEIJINGHZHY_TECHNOLOGY_CO_LTD ['950', '"Beijing HZHY Technology Co., Ltd"']]
+ ['951' BUILDING_CLOUDS ['951', '"Building Clouds"']]
+ ['952' THE_UNIVERSITYOF_SHEFFIELD_DEPARTMENTOF_ELECTRONICAND_ELECTRICAL_ENGINEERING ['952', '"The University of Sheffield-Department of Electronic and Electrical Engineering"']]
+ ['953' FABTRONICS_AUSTRALIA_PTY_LTD ['953', '"Fabtronics Australia Pty Ltd"']]
+ ['954' SLAT ['954', '"SLAT"']]
+ ['955' SOFTWARE_MOTOR_CORPORATION ['955', '"Software Motor Corporation"']]
+ ['956' ARMSTRONG_INTERNATIONAL_INC ['956', '"Armstrong International Inc."']]
+ ['957' STERIL_AIRE_INC ['957', '"Steril-Aire, Inc."']]
+ ['958' INFINIQUE ['958', '"Infinique"']]
+ ['959' ARCOM ['959', '"Arcom"']]
+ ['960' ARGO_PERFORMANCE_LTD ['960', '"Argo Performance, Ltd"']]
+ ['961' DIALIGHT ['961', '"Dialight"']]
+ ['962' IDEAL_TECHNICAL_SOLUTIONS ['962', '"Ideal Technical Solutions"']]
+ ['963' NEUROBATAG ['963', '"Neurobat AG"']]
+ ['964' NEYER_SOFTWARE_CONSULTINGLLC ['964', '"Neyer Software Consulting LLC"']]
+ ['965' SCADA_TECHNOLOGY_DEVELOPMENT_CO_LTD ['965', '"SCADA Technology Development Co., Ltd."']]
+ ['966' DEMAND_LOGIC_LIMITED ['966', '"Demand Logic Limited"']]
+ ['967' GWA_GROUP_LIMITED ['967', '"GWA Group Limited"']]
+ ['968' OCCITALINE ['968', '"Occitaline"']]
+ ['969' NAO_DIGITAL_CO_LTD ['969', '"NAO Digital Co., Ltd."']]
+ ['970' SHENZHEN_CHANSLINK_NETWORK_TECHNOLOGY_CO_LTD ['970', '"Shenzhen Chanslink Network Technology Co., Ltd."']]
+ ['971' SAMSUNG_ELECTRONICS_CO_LTD ['971', '"Samsung Electronics Co., Ltd."']]
+ ['972' MESA_LABORATORIES_INC ['972', '"Mesa Laboratories, Inc."']]
+ ['973' FISCHER ['973', '"Fischer"']]
+ ['974' OP_SYS_SOLUTIONS_LTD ['974', '"OpSys Solutions Ltd."']]
+ ['975' ADVANCED_DEVICES_LIMITED ['975', '"Advanced Devices Limited"']]
+ ['976' CONDAIR ['976', '"Condair"']]
+ ['977' INELCOM_INGENIERIA_ELECTRONICA_COMERCIALSA ['977', '"INELCOM Ingenieria Electronica Comercial S.A."']]
+ ['978' GRID_POINT_INC ['978', '"GridPoint, Inc."']]
+ ['979' ADF_TECHNOLOGIES_SDN_BHD ['979', '"ADF Technologies Sdn Bhd"']]
+ ['980' EPM_INC ['980', '"EPM, Inc."']]
+ ['981' LIGHTING_CONTROLS_LTD ['981', '"Lighting Controls Ltd"']]
+ ['982' PERIX_CONTROLS_LTD ['982', '"Perix Controls Ltd."']]
+ ['983' AERCO_INTERNATIONAL_INC ['983', '"AERCO International, Inc."']]
+ ['984' KONE_INC ['984', '"KONE Inc."']]
+ ['985' ZIEHL_ABEGGSE ['985', '"Ziehl-Abegg SE"']]
+ ['986' ROBOTSA ['986', '"Robot, S.A."']]
+ ['987' OPTIGO_NETWORKS_INC ['987', '"Optigo Networks, Inc."']]
+ ['988' OPENMOTICSBVBA ['988', '"Openmotics BVBA"']]
+ ['989' METROPOLITAN_INDUSTRIES_INC ['989', '"Metropolitan Industries, Inc."']]
+ ['990' HUAWEI_TECHNOLOGIES_CO_LTD ['990', '"Huawei Technologies Co., Ltd."']]
+ ['991' DIGITAL_LUMENS_INC ['991', '"Digital Lumens, Inc."']]
+ ['992' VANTI ['992', '"Vanti"']]
+ ['993' CREE_LIGHTING ['993', '"Cree Lighting"']]
+ ['994' RICHMOND_HEIGHTSSDNBHD ['994', '"Richmond Heights SDN BHD"']]
+ ['995' PAYNE_SPARKMAN_LIGHTING_MANGEMENT ['995', '"Payne-Sparkman Lighting Mangement"']]
+ ['996' ASHCROFT ['996', '"Ashcroft"']]
+ ['997' JET_CONTROLS_CORP ['997', '"Jet Controls Corp"']]
+ ['998' ZUMTOBEL_LIGHTING_GMBH ['998', '"Zumtobel Lighting GmbH"']]
+ ['1000' EKON_GMBH ['1000', '"Ekon GmbH"']]
+ ['1001' MOLEX ['1001', '"Molex"']]
+ ['1002' MACO_LIGHTING_PTY_LTD ['1002', '"Maco Lighting Pty Ltd."']]
+ ['1003' AXECON_CORP ['1003', '"Axecon Corp."']]
+ ['1004' TENSORPLC ['1004', '"Tensor plc"']]
+ ['1005' KASEMAN_ENVIRONMENTAL_CONTROL_EQUIPMENT_SHANGHAI_LIMITED ['1005', '"Kaseman Environmental Control Equipment (Shanghai) Limited"']]
+ ['1006' AB_AXIS_INDUSTRIES ['1006', '"AB Axis Industries"']]
+ ['1007' NETIX_CONTROLS ['1007', '"Netix Controls"']]
+ ['1008' ELDRIDGE_PRODUCTS_INC ['1008', '"Eldridge Products, Inc."']]
+ ['1009' MICRONICS ['1009', '"Micronics"']]
+ ['1010' FORTECHO_SOLUTIONS_LTD ['1010', '"Fortecho Solutions Ltd"']]
+ ['1011' SELLERS_MANUFACTURING_COMPANY ['1011', '"Sellers Manufacturing Company"']]
+ ['1012' RITE_HITE_DOORS_INC ['1012', '"Rite-Hite Doors, Inc."']]
+ ['1013' VIOLET_DEFENSELLC ['1013', '"Violet Defense LLC"']]
+ ['1014' SIMNA ['1014', '"Simna"']]
+ ['1015' MULTINERGIE_BEST_INC ['1015', '"Multi-Énergie Best Inc."']]
+ ['1016' MEGA_SYSTEM_TECHNOLOGIES_INC ['1016', '"Mega System Technologies, Inc."']]
+ ['1017' RHEEM ['1017', '"Rheem"']]
+ ['1018' ING_PUNZENBERGERCOPADATA_GMBH ['1018', '"Ing. Punzenberger COPA-DATA GmbH"']]
+ ['1019' MEC_ELECTRONICS_GMBH ['1019', '"MEC Electronics GmbH"']]
+ ['1020' TACO_COMFORT_SOLUTIONS ['1020', '"Taco Comfort Solutions"']]
+ ['1021' ALEXANDER_MAIER_GMBH ['1021', '"Alexander Maier GmbH"']]
+ ['1022' ECORITHM_INC ['1022', '"Ecorithm, Inc."']]
+ ['1023' ACCURRO_LTD ['1023', '"Accurro Ltd"']]
+ ['1024' ROMTECK_AUSTRALIA_PTY_LTD ['1024', '"ROMTECK Australia Pty Ltd"']]
+ ['1025' SPLASH_MONITORING_LIMITED ['1025', '"Splash Monitoring Limited"']]
+ ['1026' LIGHT_APPLICATION ['1026', '"Light Application"']]
+ ['1027' LOGICAL_BUILDING_AUTOMATION ['1027', '"Logical Building Automation"']]
+ ['1028' EXILIGHT_OY ['1028', '"Exilight Oy"']]
+ ['1029' HAGER_ELECTROSAS ['1029', '"Hager Electro SAS"']]
+ ['1030' KLIF_COLTD ['1030', '"KLIF Co., LTD"']]
+ ['1031' HYGRO_MATIK ['1031', '"HygroMatik"']]
+ ['1032' DANIEL_MOUSSEAU_PROGRAMMATION_ELECTRONIQUE ['1032', '"Daniel Mousseau Programmation & Electronique"']]
+ ['1033' AERIONICS_INC ['1033', '"Aerionics Inc."']]
+ ['1034' MS_ELECTRONIQUE_LTEE ['1034', '"M2S Electronique Ltee"']]
+ ['1035' AUTOMATION_COMPONENTS_INC ['1035', '"Automation Components, Inc."']]
+ ['1036' NIOBRARA_RESEARCH_DEVELOPMENT_CORPORATION ['1036', '"Niobrara Research & Development Corporation"']]
+ ['1037' NETCOM_SICHERHEITSTECHNIK_GMBH ['1037', '"Netcom Sicherheitstechnik GmbH"']]
+ ['1038' LUMELSA ['1038', '"Lumel S.A."']]
+ ['1039' GREAT_PLAINS_INDUSTRIES_INC ['1039', '"Great Plains Industries, Inc."']]
+ ['1040' DOMOTICA_LABSSRL ['1040', '"Domotica Labs S.R.L"']]
+ ['1041' ENERGY_CLOUD_INC ['1041', '"Energy Cloud, Inc."']]
+ ['1042' VOMATEC ['1042', '"Vomatec"']]
+ ['1043' DEMMA_COMPANIES ['1043', '"Demma Companies"']]
+ ['1044' VALSENA ['1044', '"Valsena"']]
+ ['1045' COMSYS_BRTSCHAG ['1045', '"Comsys Bärtsch AG"']]
+ ['1046' B_GRID ['1046', '"bGrid"']]
+ ['1047' MDJ_SOFTWARE_PTY_LTD ['1047', '"MDJ Software Pty Ltd"']]
+ ['1048' DIMONOFF_INC ['1048', '"Dimonoff, Inc."']]
+ ['1049' EDOMO_SYSTEMS_GMBH ['1049', '"Edomo Systems, GmbH"']]
+ ['1050' EFFEKTIVLLC ['1050', '"Effektiv, LLC"']]
+ ['1051' STEAMO_VAP ['1051', '"SteamOVap"']]
+ ['1052' GRANDCENTRIX_GMBH ['1052', '"grandcentrix GmbH"']]
+ ['1053' WEINTEK_LABS_INC ['1053', '"Weintek Labs, Inc."']]
+ ['1054' INTEFOX_GMBH ['1054', '"Intefox GmbH"']]
+ ['1055' RADIUS_AUTOMATION_COMPANY ['1055', '"Radius22 Automation Company"']]
+ ['1056' RINGDALE_INC ['1056', '"Ringdale, Inc."']]
+ ['1057' IWAKI_AMERICA ['1057', '"Iwaki America"']]
+ ['1058' BRACTLET ['1058', '"Bractlet"']]
+ ['1059' STULZ_AIR_TECHNOLOGY_SYSTEMS_INC ['1059', '"STULZ Air Technology Systems, Inc."']]
+ ['1060' CLIMATE_READY_ENGINEERING_PTY_LTD ['1060', '"Climate Ready Engineering Pty Ltd"']]
+ ['1061' GENEA_ENERGY_PARTNERS ['1061', '"Genea Energy Partners"']]
+ ['1062' IO_TALL_CHILE ['1062', '"IoTall Chile"']]
+ ['1063' IKS_CO_LTD ['1063', '"IKS Co., Ltd."']]
+ ['1064' YODIWOAB ['1064', '"Yodiwo AB"']]
+ ['1065' TITA_NELECTRONIC_GMBH ['1065', '"TITAN electronic GmbH"']]
+ ['1066' IDEC_CORPORATION ['1066', '"IDEC Corporation"']]
+ ['1067' SIFRISL ['1067', '"SIFRI SL"']]
+ ['1068' THERMAL_GAS_SYSTEMS_INC ['1068', '"Thermal Gas Systems Inc."']]
+ ['1069' BUILDING_AUTOMATION_PRODUCTS_INC ['1069', '"Building Automation Products, Inc."']]
+ ['1070' ASSET_MAPPING ['1070', '"Asset Mapping"']]
+ ['1071' SMARTEH_COMPANY ['1071', '"Smarteh Company"']]
+ ['1072' DATAPOD_AUSTRALIA_PTY_LTD ['1072', '"Datapod (Australia) Pty Ltd."']]
+ ['1073' BUILDINGS_ALIVE_PTY_LTD ['1073', '"Buildings Alive Pty Ltd"']]
+ ['1074' DIGITAL_ELEKTRONIK ['1074', '"Digital Elektronik"']]
+ ['1075' TALENT_AUTOMAOE_TECNOLOGIA_LTDA ['1075', '"Talent Automação e Tecnologia Ltda"']]
+ ['1076' NORPOSH_LIMITED ['1076', '"Norposh Limited"']]
+ ['1077' MERKUR_FUNKSYSTEMEAG ['1077', '"Merkur Funksysteme AG"']]
+ ['1078' FASTERC_ZSPOL_SRO ['1078', '"Faster CZ spol. S.r.o"']]
+ ['1079' ECO_ADAPT ['1079', '"Eco-Adapt"']]
+ ['1080' ENERGOCENTRUM_PLUSSRO ['1080', '"Energocentrum Plus, s.r.o"']]
+ ['1081' AMBXUK_LTD ['1081', '"amBX UK Ltd"']]
+ ['1082' WESTERN_RESERVE_CONTROLS_INC ['1082', '"Western Reserve Controls, Inc."']]
+ ['1083' LAYER_ZERO_POWER_SYSTEMS_INC ['1083', '"LayerZero Power Systems, Inc."']]
+ ['1084' CIC_JAN_HEBECSRO ['1084', '"CIC Jan Hřebec s.r.o."']]
+ ['1085' SIGROVBV ['1085', '"Sigrov BV"']]
+ ['1086' ISYS_INTELLIGENT_SYSTEMS ['1086', '"ISYS-Intelligent Systems"']]
+ ['1087' GAS_DETECTION_AUSTRALIA_PTY_LTD ['1087', '"Gas Detection (Australia) Pty Ltd"']]
+ ['1088' KINCO_AUTOMATION_SHANGHAI_LTD ['1088', '"Kinco Automation (Shanghai) Ltd."']]
+ ['1089' LARS_ENERGYLLC ['1089', '"Lars Energy, LLC"']]
+ ['1090' FLAMEFASTUK_LTD ['1090', '"Flamefast (UK) Ltd."']]
+ ['1091' ROYAL_SERVICE_AIR_CONDITIONING ['1091', '"Royal Service Air Conditioning"']]
+ ['1092' AMPIO_SP_ZOO ['1092', '"Ampio Sp. Z o.o."']]
+ ['1093' INOVONICS_WIRELESS_CORPORATION ['1093', '"Inovonics Wireless Corporation"']]
+ ['1094' NVENT_THERMAL_MANAGEMENT ['1094', '"Nvent Thermal Management"']]
+ ['1095' SINOWELL_CONTROL_SYSTEM_LTD ['1095', '"Sinowell Control System Ltd"']]
+ ['1096' MOXA_INC ['1096', '"Moxa Inc."']]
+ ['1097' MATRIXI_CONTROLSDNBHD ['1097', '"Matrix iControl SDN BHD"']]
+ ['1098' PURPLE_SWIFT ['1098', '"PurpleSwift"']]
+ ['1099' OTIM_TECHNOLOGIES ['1099', '"OTIM Technologies"']]
+ ['1100' FLOW_MATE_LIMITED ['1100', '"FlowMate Limited"']]
+ ['1101' DEGREE_CONTROLS_INC ['1101', '"Degree Controls, Inc."']]
+ ['1102' FEI_XING_SHANGHAI_SOFTWARE_TECHNOLOGIES_CO_LTD ['1102', '"Fei Xing (Shanghai) Software Technologies Co., Ltd."']]
+ ['1103' BERG_GMBH ['1103', '"Berg GmbH"']]
+ ['1104' ARENZIT ['1104', '"ARENZ.IT"']]
+ ['1105' EDELSTROM_ELECTRONIC_DEVICES_DESIGNINGLLC ['1105', '"Edelstrom Electronic Devices & Designing LLC"']]
+ ['1106' DRIVE_CONNECTLLC ['1106', '"Drive Connect, LLC"']]
+ ['1107' DEVELOP_NOW ['1107', '"DevelopNow"']]
+ ['1108' POORT ['1108', '"Poort"']]
+ ['1109' VMEIL_INFORMATION_SHANGHAI_LTD ['1109', '"VMEIL Information (Shanghai) Ltd"']]
+ ['1110' RAYLEIGH_INSTRUMENTS ['1110', '"Rayleigh Instruments"']]
+ ['1112' CODESYS_DEVELOPMENT ['1112', '"CODESYS Development"']]
+ ['1113' SMARTWARE_TECHNOLOGIES_GROUPLLC ['1113', '"Smartware Technologies Group, LLC"']]
+ ['1114' POLAR_BEAR_SOLUTIONS ['1114', '"Polar Bear Solutions"']]
+ ['1115' CODRA ['1115', '"Codra"']]
+ ['1116' PHAROS_ARCHITECTURAL_CONTROLS_LTD ['1116', '"Pharos Architectural Controls Ltd"']]
+ ['1117' ENGI_NEAR_LTD ['1117', '"EngiNear Ltd."']]
+ ['1118' AD_HOC_ELECTRONICS ['1118', '"Ad Hoc Electronics"']]
+ ['1119' UNIFIED_MICROSYSTEMS ['1119', '"Unified Microsystems"']]
+ ['1120' INDUSTRIEELEKTRONIK_BRANDENBURG_GMBH ['1120', '"Industrieelektronik Brandenburg GmbH"']]
+ ['1121' HARTMANN_GMBH ['1121', '"Hartmann GmbH"']]
+ ['1122' PISCADA ['1122', '"Piscada"']]
+ ['1123' KM_BSYSTEMSSRO ['1123', '"KMB systems, s.r.o."']]
+ ['1124' POWER_TECH_ENGINEERINGAS ['1124', '"PowerTech Engineering AS"']]
+ ['1125' TELEFONBAU_ARTHUR_SCHWABE_GMBH_COKG ['1125', '"Telefonbau Arthur Schwabe GmbH & Co. KG"']]
+ ['1126' WUXI_FISTWELOVE_TECHNOLOGY_CO_LTD ['1126', '"Wuxi Fistwelove Technology Co., Ltd."']]
+ ['1127' PRYSM ['1127', '"Prysm"']]
+ ['1128' STEINEL_GMBH ['1128', '"STEINEL GmbH"']]
+ ['1129' GEORG_FISCHERJRGAG ['1129', '"Georg Fischer JRG AG"']]
+ ['1130' MAKE_DEVELOPSL ['1130', '"Make Develop SL"']]
+ ['1131' MONNIT_CORPORATION ['1131', '"Monnit Corporation"']]
+ ['1132' MIRROR_LIFE_CORPORATION ['1132', '"Mirror Life Corporation"']]
+ ['1133' SECURE_METERS_LIMITED ['1133', '"Secure Meters Limited"']]
+ ['1134' PECO ['1134', '"PECO"']]
+ ['1135' CCTECH_INC ['1135', '".CCTECH, Inc."']]
+ ['1136' LIGHT_FI_LIMITED ['1136', '"LightFi Limited"']]
+ ['1137' NICE_SPA ['1137', '"Nice Spa"']]
+ ['1138' FIBER_SEN_SYS_INC ['1138', '"Fiber SenSys, Inc."']]
+ ['1139' BD_BUCHTAUND_DEGEORGI ['1139', '"B&D Buchta und Degeorgi"']]
+ ['1140' VENTACITY_SYSTEMS_INC ['1140', '"Ventacity Systems, Inc."']]
+ ['1141' HITACHI_JOHNSON_CONTROLS_AIR_CONDITIONING_INC ['1141', '"Hitachi-Johnson Controls Air Conditioning, Inc."']]
+ ['1142' SAGE_METERING_INC ['1142', '"Sage Metering, Inc."']]
+ ['1143' ANDEL_LIMITED ['1143', '"Andel Limited"']]
+ ['1144' ECO_SMART_TECHNOLOGIES ['1144', '"ECOSmart Technologies"']]
+ ['1145' SET ['1145', '"S.E.T."']]
+ ['1146' PROTEC_FIRE_DETECTION_SPAINSL ['1146', '"Protec Fire Detection Spain SL"']]
+ ['1147' AGRAMERUG ['1147', '"AGRAMER UG"']]
+ ['1148' ANYLINK_ELECTRONIC_GMBH ['1148', '"Anylink Electronic GmbH"']]
+ ['1149' SCHINDLER_LTD ['1149', '"Schindler, Ltd"']]
+ ['1150' JIBREEL_ABDEEN_EST ['1150', '"Jibreel Abdeen Est."']]
+ ['1151' FLUIDYNE_CONTROL_SYSTEMS_PVT_LTD ['1151', '"Fluidyne Control Systems Pvt. Ltd"']]
+ ['1152' PRISM_SYSTEMS_INC ['1152', '"Prism Systems, Inc."']]
+ ['1153' ENERTIV ['1153', '"Enertiv"']]
+ ['1154' MIRASOFT_GMBH_COKG ['1154', '"Mirasoft GmbH & Co. KG"']]
+ ['1155' DUALTECHIT ['1155', '"DUALTECH IT"']]
+ ['1156' COUNTLOGICLLC ['1156', '"Countlogic, LLC"']]
+ ['1157' KOHLER ['1157', '"Kohler"']]
+ ['1158' CHEN_SEN_CONTROLS_CO_LTD ['1158', '"Chen Sen Controls Co., Ltd."']]
+ ['1159' GREENHECK ['1159', '"Greenheck"']]
+ ['1160' INTWINE_CONNECTLLC ['1160', '"Intwine Connect, LLC"']]
+ ['1161' KARLBORGS_ELKONTROLL ['1161', '"Karlborgs Elkontroll"']]
+ ['1162' DATAKOM ['1162', '"Datakom"']]
+ ['1163' HOGA_CONTROLAS ['1163', '"Hoga Control AS"']]
+ ['1164' COOL_AUTOMATION ['1164', '"Cool Automation"']]
+ ['1165' INTER_SEARCH_CO_LTD ['1165', '"Inter Search Co., Ltd"']]
+ ['1166' DABBEL_AUTOMATION_INTELLIGENCE_GMBH ['1166', '"DABBEL-Automation Intelligence GmbH"']]
+ ['1167' GADGEON_ENGINEERING_SMARTNESS ['1167', '"Gadgeon Engineering Smartness"']]
+ ['1168' COSTER_GROUP_SRL ['1168', '"Coster Group S.r.l."']]
+ ['1169' WALTER_MLLERAG ['1169', '"Walter Müller AG"']]
+ ['1170' FLUKE ['1170', '"Fluke"']]
+ ['1171' QUINTEX_SYSTEMS_LTD ['1171', '"Quintex Systems Ltd"']]
+ ['1172' SENFFICIENTSDNBHD ['1172', '"Senfficient SDN BHD"']]
+ ['1173' NUBEIO_OPERATIONS_PTY_LTD ['1173', '"Nube iO Operations Pty Ltd"']]
+ ['1174' DAS_INTEGRATOR_PTE_LTD ['1174', '"DAS Integrator Pte Ltd"']]
+ ['1175' CREVIS_CO_LTD ['1175', '"CREVIS Co., Ltd"']]
+ ['1176' I_SQUAREDSOFTWAREINC ['1176', '"iSquared software inc."']]
+ ['1177' KTG_GMBH ['1177', '"KTG GmbH"']]
+ ['1178' POK_GROUP_OY ['1178', '"POK Group Oy"']]
+ ['1179' ADISCOM ['1179', '"Adiscom"']]
+ ['1180' INCUSENSE ['1180', '"Incusense"']]
+ ['1181' F ['1181', '"75F"']]
+ ['1182' ANORD_MARDIX_INC ['1182', '"Anord Mardix, Inc."']]
+ ['1183' HOSCH_GEBUDEAUTOMATION_NEUE_PRODUKTE_GMBH ['1183', '"HOSCH Gebäudeautomation Neue Produkte GmbH"']]
+ ['1184' BOSCHIO_GMBH ['1184', '"Bosch.IO GmbH"']]
+ ['1185' ROYAL_BOON_EDAM_INTERNATIONALBV ['1185', '"Royal Boon Edam International B.V."']]
+ ['1186' CLACK_CORPORATION ['1186', '"Clack Corporation"']]
+ ['1187' UNITEX_CONTROLSLLC ['1187', '"Unitex Controls LLC"']]
+ ['1188' KTC_GTEBORGAB ['1188', '"KTC Göteborg AB"']]
+ ['1189' INTERZONAB ['1189', '"Interzon AB"']]
+ ['1190' ISDEINGSL ['1190', '"ISDE ING SL"']]
+ ['1191' AB_MAUTOMATIONBUILDINGMESSAGING_GMBH ['1191', '"ABM automation building messaging GmbH"']]
+ ['1192' KENTEC_ELECTRONICS_LTD ['1192', '"Kentec Electronics Ltd"']]
+ ['1193' EMERSON_COMMERCIALAND_RESIDENTIAL_SOLUTIONS ['1193', '"Emerson Commercial and Residential Solutions"']]
+ ['1194' POWERSIDE ['1194', '"Powerside"']]
+ ['1195' SMC_GROUP ['1195', '"SMC Group"']]
+ ['1196' EOS_WEATHER_INSTRUMENTS ['1196', '"EOS Weather Instruments"']]
+ ['1197' ZONEX_SYSTEMS ['1197', '"Zonex Systems"']]
+ ['1198' GENEREX_SYSTEMS_COMPUTERVERTRIEBSGESELLSCHAFTMBH ['1198', '"Generex Systems Computervertriebsgesellschaft mbH"']]
+ ['1199' ENERGY_WALLLLC ['1199', '"Energy Wall LLC"']]
+ ['1200' THERMOFIN ['1200', '"Thermofin"']]
+ ['1201' SDATAWAYSA ['1201', '"SDATAWAY SA"']]
+ ['1202' BIDDLE_AIR_SYSTEMS_LIMITED ['1202', '"Biddle Air Systems Limited"']]
+ ['1203' KESSLER_ELLIS_PRODUCTS ['1203', '"Kessler Ellis Products"']]
+ ['1204' THERMOSCREENS ['1204', '"Thermoscreens"']]
+ ['1205' MODIO ['1205', '"Modio"']]
+ ['1206' NEWRON_SOLUTIONS ['1206', '"Newron Solutions"']]
+ ['1207' UNITRONICS ['1207', '"Unitronics"']]
+ ['1208' TRILUX_GMBH_COKG ['1208', '"TRILUX GmbH & Co. KG"']]
+ ['1209' KOLLMORGEN_STEUERUNGSTECHNIK_GMBH ['1209', '"Kollmorgen Steuerungstechnik GmbH"']]
+ ['1210' BOSCH_REXROTHAG ['1210', '"Bosch Rexroth AG"']]
+ ['1211' ALARKO_CARRIER ['1211', '"Alarko Carrier"']]
+ ['1212' VERDIGRIS_TECHNOLOGIES ['1212', '"Verdigris Technologies"']]
+ ['1213' SHANGHAISIIC_LONGCHUANG_SMARTECH_SO_LTD ['1213', '"Shanghai SIIC-Longchuang Smartech So., Ltd."']]
+ ['1214' QUINDA_CO ['1214', '"Quinda Co."']]
+ ['1215' GRUNERAG ['1215', '"GRUNER AG"']]
+ ['1216' BACMOVE ['1216', '"BACMOVE"']]
+ ['1217' PSIDACAB ['1217', '"PSIDAC AB"']]
+ ['1218' ISICON_CONTROL_AUTOMATION ['1218', '"ISICON-Control Automation"']]
+ ['1219' BIG_ASS_FANS ['1219', '"Big Ass Fans"']]
+ ['1220' DIN_DIETMAR_NOCKER_FACILITY_MANAGEMENT_GMBH ['1220', '"din – Dietmar Nocker Facility Management GmbH"']]
+ ['1221' TELDIO ['1221', '"Teldio"']]
+ ['1222' MIKROKLIM_ASRO ['1222', '"MIKROKLIMA s.r.o."']]
+ ['1223' DENSITY ['1223', '"Density"']]
+ ['1224' ICONAG_LEITTECHNIK_GMBH ['1224', '"ICONAG-Leittechnik GmbH"']]
+ ['1225' AWAIR ['1225', '"Awair"']]
+ ['1226' TD_ENGINEERING_LTD ['1226', '"T&D Engineering, Ltd"']]
+ ['1227' SISTEMAS_DIGITALES ['1227', '"Sistemas Digitales"']]
+ ['1228' LOXONE_ELECTRONICS_GMBH ['1228', '"Loxone Electronics GmbH"']]
+ ['1229' ACTRON_AIR ['1229', '"ActronAir"']]
+ ['1230' INDUCTIVE_AUTOMATION ['1230', '"Inductive Automation"']]
+ ['1231' THOR_ENGINEERING_GMBH ['1231', '"Thor Engineering GmbH"']]
+ ['1232' BERNER_INTERNATIONALLLC ['1232', '"Berner International, LLC"']]
+ ['1233' POTSDAM_SENSORSLLC ['1233', '"Potsdam Sensors LLC"']]
+ ['1234' KOHLER_MIRA_LTD ['1234', '"Kohler Mira Ltd"']]
+ ['1235' TECOMON_GMBH ['1235', '"Tecomon GmbH"']]
+ ['1236' TWO_DIMENSIONAL_INSTRUMENTSLLC ['1236', '"Two Dimensional Instruments, LLC"']]
+ ['1237' LEFA_TECHNOLOGIES_PTE_LTD ['1237', '"LEFA Technologies Pte. Ltd."']]
+ ['1238' EATONCEAG_NOTLICHTSYSTEME_GMBH ['1238', '"EATON CEAG Notlichtsysteme GmbH"']]
+ ['1239' COMMBOX_TECNOLOGIA ['1239', '"Commbox Tecnologia"']]
+ ['1240' IP_VIDEO_CORPORATION ['1240', '"IPVideo Corporation"']]
+ ['1241' BENDER_GMBH_COKG ['1241', '"Bender GmbH & Co. KG"']]
+ ['1242' RHYMEBUS_CORPORATION ['1242', '"Rhymebus Corporation"']]
+ ['1243' AXON_SYSTEMS_LTD ['1243', '"Axon Systems Ltd"']]
+ ['1244' ENGINEERED_AIR ['1244', '"Engineered Air"']]
+ ['1245' ELIPSE_SOFTWARE_LTDA ['1245', '"Elipse Software Ltda"']]
+ ['1246' SIMATIX_BUILDING_TECHNOLOGIES_PVT_LTD ['1246', '"Simatix Building Technologies Pvt. Ltd."']]
+ ['1247' WA_BENJAMIN_ELECTRIC_CO ['1247', '"W.A. Benjamin Electric Co."']]
+ ['1248' TROX_AIR_CONDITIONING_COMPONENTS_SUZHOU_CO_LTD ['1248', '"TROX Air Conditioning Components (Suzhou) Co. Ltd."']]
+ ['1249' SC_MEDICAL_PTY_LTD ['1249', '"SC Medical Pty Ltd."']]
+ ['1250' ELCANICAS ['1250', '"Elcanic A/S"']]
+ ['1251' OBEOAS ['1251', '"Obeo AS"']]
+ ['1252' TAPA_INC ['1252', '"Tapa, Inc."']]
+ ['1253' ASE_SMART_ENERGY_INC ['1253', '"ASE Smart Energy, Inc."']]
+ ['1254' PERFORMANCE_SERVICES_INC ['1254', '"Performance Services, Inc."']]
+ ['1255' VERIDIFY_SECURITY ['1255', '"Veridify Security"']]
+ ['1256' CD_INNOVATIONLTD ['1256', '"CD Innovation LTD"']]
+ ['1257' BEN_PEOPLES_INDUSTRIESLLC ['1257', '"Ben Peoples Industries, LLC"']]
+ ['1258' UNICOMM_SPZOO ['1258', '"UNICOMM Sp. z o.o"']]
+ ['1259' THING_TECHNOLOGIES_GMBH ['1259', '"Thing Technologies GmbH"']]
+ ['1260' BEIJING_HAILIN_CONTROL_TECHNOLOGY_INC ['1260', '"Beijing Hailin Control Technology, Inc."']]
+ ['1261' DIGITAL_REALTY ['1261', '"Digital Realty"']]
+ ['1262' AGROWTEK_INC ['1262', '"Agrowtek Inc."']]
+ ['1263' DSP_INNOVATIONBV ['1263', '"DSP Innovation BV"']]
+ ['1264' STV_ELECTRONIC_GMBH ['1264', '"STV Electronic GmbH"']]
+ ['1265' ELMEASURE_INDIA_PVT_LTD ['1265', '"Elmeasure India Pvt Ltd."']]
+ ['1266' PINESHORE_ENERGYLLC ['1266', '"Pineshore Energy LLC"']]
+ ['1267' BRASCH_ENVIRONMENTAL_TECHNOLOGIESLLC ['1267', '"Brasch Environmental Technologies, LLC"']]
+ ['1268' LION_CONTROLS_COLTD ['1268', '"Lion Controls Co., LTD"']]
+ ['1269' SINUX ['1269', '"Sinux"']]
+ ['1270' AVNET_INC ['1270', '"Avnet Inc."']]
+ ['1271' SOMFY_ACTIVITESSA ['1271', '"Somfy Activites SA"']]
+ ['1272' AMICO ['1272', '"Amico"']]
+ ['1273' SAGE_GLASS ['1273', '"SageGlass"']]
+ ['1274' AU_VERTE ['1274', '"AuVerte"']]
+ ['1275' AGILE_CONNECTS_PVT_LTD ['1275', '"Agile Connects Pvt. Ltd."']]
+ ['1276' LOCIMATION_PTY_LTD ['1276', '"Locimation Pty Ltd"']]
+ ['1277' ENVIO_SYSTEMS_GMBH ['1277', '"Envio Systems GmbH"']]
+ ['1278' VOYTECH_SYSTEMS_LIMITED ['1278', '"Voytech Systems Limited"']]
+ ['1279' DAVIDSMEYERUND_PAUL_GMBH ['1279', '"Davidsmeyer und Paul GmbH"']]
+ ['1280' LUSHER_ENGINEERING_SERVICES ['1280', '"Lusher Engineering Services"']]
+ ['1281' CHNT_NANJING_TECHSEL_INTELLIGENT_COMPANYLTD ['1281', '"CHNT Nanjing Techsel Intelligent Company LTD"']]
+ ['1282' THREETRONICS_PTY_LTD ['1282', '"Threetronics Pty Ltd"']]
+ ['1283' SKY_FOUNDRYLLC ['1283', '"SkyFoundry, LLC"']]
+ ['1284' HANIL_PRO_TECH ['1284', '"HanilProTech"']]
+ ['1285' SENSORSCALL ['1285', '"Sensorscall"']]
+ ['1286' SHANGHAI_JINGPU_INFORMATION_TECHNOLOGY_CO_LTD ['1286', '"Shanghai Jingpu Information Technology, Co., Ltd."']]
+ ['1287' LICHTMANUFAKTUR_BERLIN_GMBH ['1287', '"Lichtmanufaktur Berlin GmbH"']]
+ ['1288' ECO_PARKING_TECHNOLOGIES ['1288', '"Eco Parking Technologies"']]
+ ['1289' ENVISION_DIGITAL_INTERNATIONAL_PTE_LTD ['1289', '"Envision Digital International Pte Ltd"']]
+ ['1290' ANTONY_DEVELOPPEMENT_ELECTRONIQUE ['1290', '"Antony Developpement Electronique"']]
+ ['1291' ISYSTEMS ['1291', '"i2systems"']]
+ ['1292' THUREON_INTERNATIONAL_LIMITED ['1292', '"Thureon International Limited"']]
+ ['1293' PULSAFEEDER ['1293', '"Pulsafeeder"']]
+ ['1294' MEGA_CHIPS_CORPORATION ['1294', '"MegaChips Corporation"']]
+ ['1295' TES_CONTROLS ['1295', '"TES Controls"']]
+ ['1296' CERMATE ['1296', '"Cermate"']]
+ ['1297' GRAND_VALLEY_STATE_UNIVERSITY ['1297', '"Grand Valley State University"']]
+ ['1298' SYMCON_GMBH ['1298', '"Symcon Gmbh"']]
+ ['1299' THE_CHICAGO_FAUCET_COMPANY ['1299', '"The Chicago Faucet Company"']]
+ ['1300' GEBERITAG ['1300', '"Geberit AG"']]
+ ['1301' REX_CONTROLS ['1301', '"Rex Controls"']]
+ ['1302' IVMS_GMBH ['1302', '"IVMS GmbH"']]
+ ['1303' MNPP_SATURN_LTD ['1303', '"MNPP Saturn Ltd."']]
+ ['1304' REGAL_BELOIT ['1304', '"Regal Beloit"']]
+ ['1305' ACS_AIR_CONDITIONING_SOLUTIONS ['1305', '"ACS-Air Conditioning Solutions"']]
+ ['1306' GBX_TECHNOLOGYLLC ['1306', '"GBX Technology, LLC"']]
+ ['1307' KAITERRA ['1307', '"Kaiterra"']]
+ ['1308' THIN_KUANLOT_TECHNOLOGY_SHANGHAI_CO_LTD ['1308', '"ThinKuan loT Technology (Shanghai) Co., Ltd"']]
+ ['1309' HO_CO_STOBV ['1309', '"HoCoSto B.V."']]
+ ['1310' SHENZHENASAI_TECHNOLOGY_CO_LTD ['1310', '"Shenzhen AS-AI Technology Co., Ltd."']]
+ ['1311' RPS_SPA ['1311', '"RPS S.p.a."']]
+ ['1312' ESMSOLUTIONS ['1312', '"Esmé solutions"']]
+ ['1313' IO_TECH_SYSTEMS_LIMITED ['1313', '"IOTech Systems Limited"']]
+ ['1314' I_AUTO_LOGIC_CO_LTD ['1314', '"i-AutoLogic Co., Ltd."']]
+ ['1315' NEW_AGE_MICROLLC ['1315', '"New Age Micro, LLC"']]
+ ['1316' GUARDIAN_GLASS ['1316', '"Guardian Glass"']]
+ ['1317' GUANGZHOU_ZHAOYU_INFORMATION_TECHNOLOGY ['1317', '"Guangzhou Zhaoyu Information Technology"']]
+ ['1318' ACE_IOT_SOLUTIONSLLC ['1318', '"ACE IoT Solutions LLC"']]
+ ['1319' PORIS_ELECTRONICS_CO_LTD ['1319', '"Poris Electronics Co., Ltd."']]
+ ['1320' TERMINUS_TECHNOLOGIES_GROUP ['1320', '"Terminus Technologies Group"']]
+ ['1321' INTECH1_INC ['1321', '"Intech 21, Inc."']]
+ ['1322' ACCURATE_ELECTRONICS ['1322', '"Accurate Electronics"']]
+ ['1323' FLUENCE_BIOENGINEERING ['1323', '"Fluence Bioengineering"']]
+ ['1324' MUN_HEAN_SINGAPORE_PTE_LTD ['1324', '"Mun Hean Singapore Pte Ltd"']]
+ ['1325' KATRONICAG_COKG ['1325', '"Katronic AG & Co. KG"']]
+ ['1326' SUZHOU_XIN_AO_INFORMATION_TECHNOLOGY_CO_LTD ['1326', '"Suzhou XinAo Information Technology Co. Ltd"']]
+ ['1327' LINKTEKK_TECHNOLOGYJSC ['1327', '"Linktekk Technology, JSC."']]
+ ['1328' STIRLING_ULTRACOLD ['1328', '"Stirling Ultracold"']]
+ ['1329' UV_PARTNERS_INC ['1329', '"UV Partners, Inc."']]
+ ['1330' PRO_MINENT_GMBH ['1330', '"ProMinent GmbH"']]
+ ['1331' MULTI_TECH_SYSTEMS_INC ['1331', '"Multi-Tech Systems, Inc."']]
+ ['1332' JUMO_GMBH_COKG ['1332', '"JUMO GmbH & Co. KG"']]
+ ['1333' QINGDAO_HUARUI_TECHNOLOGY_CO_LTD ['1333', '"Qingdao Huarui Technology Co. Ltd.,"']]
+ ['1334' CAIRN_SYSTEMES ['1334', '"Cairn Systemes"']]
+ ['1335' NEURO_LOGIC_RESEARCH_CORP ['1335', '"NeuroLogic Research Corp."']]
+ ['1336' TRANSITION_TECHNOLOGIES_ADVANCED_SOLUTIONS_SPZOO ['1336', '"Transition Technologies Advanced Solutions Sp. z o.o"']]
+ ['1337' XXTERBV ['1337', '"Xxter bv"']]
+ ['1338' PASSIVE_LOGIC ['1338', '"PassiveLogic"']]
+ ['1339' EN_SMART_CONTROLS ['1339', '"EnSmart Controls"']]
+ ['1340' WATTS_HEATINGAND_HOT_WATER_SOLUTIONSDBA_LYNC ['1340', '"Watts Heating and Hot Water Solutions, dba Lync"']]
+ ['1341' TROPOSPHAIRA_TECHNOLOGIESLLP ['1341', '"Troposphaira Technologies LLP"']]
+ ['1342' NETWORK_THERMOSTAT ['1342', '"Network Thermostat"']]
+ ['1343' TITANIUM_INTELLIGENT_SOLUTIONSLLC ['1343', '"Titanium Intelligent Solutions, LLC"']]
+ ['1344' NUMA_PRODUCTSLLC ['1344', '"Numa Products, LLC"']]
+ ['1345' WAREMA_RENKHOFFSE ['1345', '"WAREMA Renkhoff SE"']]
+ ['1346' FRESEAS ['1346', '"Frese A/S"']]
+ ['1347' MAPPED ['1347', '"Mapped"']]
+ ['1348' ELEKTRODESIG_NVENTILATORYSRO ['1348', '"ELEKTRODESIGN ventilatory s.r.o"']]
+ ['1349' AIR_CARE_AUTOMATION_INC ['1349', '"AirCare Automation, Inc."']]
+ ['1350' ANTRUM ['1350', '"Antrum"']]
+ ['1351' BAO_LINH_CONNECT_TECHNOLOGY ['1351', '"Bao Linh Connect Technology"']]
+ ['1352' VIRGINIA_CONTROLSLLC ['1352', '"Virginia Controls, LLC"']]
+ ['1353' DUOSYSSDNBHD ['1353', '"Duosys SDN BHD"']]
+ ['1354' ONSENSAS ['1354', '"Onsen SAS"']]
+ ['1355' VAUGHN_THERMAL_CORPORATION ['1355', '"Vaughn Thermal Corporation"']]
+ ['1356' THERMOPLASTIC_ENGINEERING_LTDTPE ['1356', '"Thermoplastic Engineering Ltd (TPE)"']]
+ ['1357' WIRTH_RESEARCH_LTD ['1357', '"Wirth Research Ltd."']]
+ ['1358' SST_AUTOMATION ['1358', '"SST Automation"']]
+ ['1359' SHANGHAI_BENCOL_ELECTRONIC_TECHNOLOGY_CO_LTD ['1359', '"Shanghai Bencol Electronic Technology Co., Ltd"']]
+ ['1360' AIWAA_SYSTEMS_PRIVATE_LIMITED ['1360', '"AIWAA Systems Private Limited"']]
+ ['1361' ENLESS_WIRELESS ['1361', '"Enless Wireless"']]
+ ['1362' OZUNO_ENGINEERING_PTY_LTD ['1362', '"Ozuno Engineering Pty Ltd"']]
+ ['1363' HUBBELL_THE_ELECTRIC_HEATER_COMPANY ['1363', '"Hubbell, The Electric Heater Company"']]
+ ['1364' INDUSTRIAL_TURNAROUND_CORPORATIONITAC ['1364', '"Industrial Turnaround Corporation (ITAC)"']]
+ ['1365' WADSWORTH_CONTROL_SYSTEMS ['1365', '"Wadsworth Control Systems"']]
+ ['1366' SERVICES_HILO_INC ['1366', '"Services Hilo Inc."']]
+ ['1367' IDM_ENERGIESYSTEME_GMBH ['1367', '"iDM Energiesysteme GmbH"']]
+ ['1368' BE_NEXTBV ['1368', '"BeNext B.V."']]
+ ['1369' CLEAN_AIRAI_CORPORATION ['1369', '"CleanAir.ai Corporation"']]
+ ['1370' REVOLUTION_MICROELECTRONICS_AMERICA_INC ['1370', '"Revolution Microelectronics (America) Inc."']]
+ ['1371' REAL_TIME_SYSTEMS_GMBH ['1371', '"Real-Time Systems GmbH"']]
+ ['1372' ZED_BEE_TECHNOLOGIES_PVT_LTD ['1372', '"ZedBee Technologies Pvt Ltd"']]
+ ['1373' WINMATE_TECHNOLOGY_SOLUTIONS_PVT_LTD ['1373', '"Winmate Technology Solutions Pvt. Ltd."']]
+ ['1374' SENTICON_LTD ['1374', '"Senticon Ltd."']]
+ ['1375' ROSSAKERAB ['1375', '"Rossaker AB"']]
+ ['1376' OPIT_SOLUTIONS_LTD ['1376', '"OPIT Solutions Ltd"']]
+ ['1377' HOTOWELL_INTERNATIONAL_CO_LIMITED ['1377', '"Hotowell International Co., Limited"']]
+ ['1378' INIM_ELECTRONICSSRL_UNIPERSONALE ['1378', '"Inim Electronics S.R.L. Unipersonale"']]
+ ['1379' AIRTHINGSASA ['1379', '"Airthings ASA"']]
+ ['1380' ANALOG_DEVICES_INC ['1380', '"Analog Devices, Inc."']]
+ ['1381' AI_DIRECTIONSDMCC ['1381', '"AIDirections DMCC"']]
+ ['1382' PRIMA_ELECTRO_SPA ['1382', '"Prima Electro S.p.A."']]
+ ['1383' KLT_CONTROL_SYSTEM_LTD ['1383', '"KLT Control System Ltd."']]
+ ['1384' EVOLUTION_CONTROLS_INC ['1384', '"Evolution Controls Inc."']]
+ ['1385' BEVER_INNOVATIONS ['1385', '"Bever Innovations"']]
+ ['1386' PELICAN_WIRELESS_SYSTEMS ['1386', '"Pelican Wireless Systems"']]
+ ['1387' CONTROL_CONCEPTS_INC ['1387', '"Control Concepts Inc."']]
+ ['1388' AUGMATIC_TECHNOLOGIES_PVT_LTD ['1388', '"Augmatic Technologies Pvt. Ltd."']]
+ ['1389' XIAMEN_MILESIGHTLOT_CO_LTD ['1389', '"Xiamen Milesight loT Co., Ltd"']]
+ ['1390' TIANJIN_ANJIELOT_SCHIENCEAND_TECHNOLOGY_CO_LTD ['1390', '"Tianjin Anjie loT Schience and Technology Co., Ltd"']]
+ ['1391' GUANGZHOUS_ENERGY_ELECTRONICS_TECHNOLOGY_CO_LTD ['1391', '"Guangzhou S. Energy Electronics Technology Co. Ltd."']]
+ ['1392' AKVO_ATMOSPHERIC_WATER_SYSTEMS_PVT_LTD ['1392', '"AKVO Atmospheric Water Systems Pvt. Ltd."']]
+ ['1393' EM_FIRST_CO_LTD ['1393', '"EmFirst Co. Ltd."']]
+ ['1394' IION_SYSTEMS_APS ['1394', '"Iion Systems ApS"']]
+ ['1396' SAF_TEHNIKAJSC ['1396', '"SAF Tehnika JSC"']]
+ ['1397' KOMFORTIQ_INC ['1397', '"Komfort IQ, Inc."']]
+ ['1398' COOL_TERA_LIMITED ['1398', '"CoolTera Limited"']]
+ ['1399' HADRON_SOLUTIONS_SRLS ['1399', '"Hadron Solutions S.r.l.s"']]
+ ['1401' BITPOOL ['1401', '"Bitpool"']]
+ ['1402' SONICULLC ['1402', '"Sonicu, LLC"']]
+ ['1403' RISHABH_INSTRUMENTS_LIMITED ['1403', '"Rishabh Instruments Limited"']]
+ ['1404' THING_WAREHOUSELLC ['1404', '"Thing Warehouse LLC"']]
+ ['1405' INNOFRIENDS_GMBH ['1405', '"Innofriends GmbH"']]
+ ['1406' METRONICAKP_SPJ ['1406', '"Metronic AKP Sp. J."']]
+ ['1407' TECHKNAVE ['1407', '"Techknave"']]
+ ['1408' ELSNER_ELEKTRONIK ['1408', '"Elsner Elektronik"']]
+ ['1409' LEFOO_INDUSTRIAL_HANGZHOU_CO_LTD ['1409', '"LEFOO Industrial (Hangzhou) Co., Ltd."']]
+ ['1410' CALIBRATION_TECHNOLOGIES_INC ['1410', '"Calibration Technologies, Inc."']]
+ ['1411' ALLORADO ['1411', '"Allorado"']]
+ ['1412' VERKADA ['1412', '"Verkada"']]
+ ['1413' WATTSENSE ['1413', '"Wattsense"']]
+ ['1414' EMERSON_AUTOMATION_SOLUTIONS ['1414', '"Emerson Automation Solutions"']]
+ ['1415' GROWLINK ['1415', '"Growlink"']]
+ ['1416' OLYMPIA_ELECTRONICS ['1416', '"Olympia Electronics"']]
+ ['1417' NORMAL_SOFTWARE_INC ['1417', '"Normal Software, Inc."']]
+ ['1418' ST_ENGINEERING_SOLUTIONJSC ['1418', '"ST Engineering Solution JSC"']]
+ ['1419' INDUSTRIAL_FLOW_SOLUTIONS ['1419', '"Industrial Flow Solutions"']]
+ ['1420' UBIQISENSE_APS ['1420', '"Ubiqisense ApS"']]
+ ['1421' TIGER_SOFT ['1421', '"Tiger-Soft"']]
+ ['1422' ECODOM_SRL ['1422', '"Ecodom Srl"']]
+ ['1423' BILGIPRO_IOT_SYSTEMS ['1423', '"Bilgipro IoT Systems"']]
+ ['1424' PLANSPURNETDESIGN_GMBH ['1424', '"planspur netdesign GmbH"']]
+ ['1425' DOLPHIN_SOLUTIONS_LTD ['1425', '"Dolphin Solutions Ltd"']]
+ ['1426' MITSUBISHI_ELECTRIC_CORPORATION_KOBE_WORKS ['1426', '"Mitsubishi Electric Corporation, Kobe Works"']]
+ ['1427' ECOVENA ['1427', '"Ecovena"']]
+ ['1428' GREE_ELECTRIC_APPLIANCES_INCOF_ZHUHAI ['1428', '"Gree Electric Appliances Inc of Zhuhai"']]
+ ['1429' CONSPEC_CONTROLS ['1429', '"Conspec Controls"']]
+ ['1430' HANGZHOU_HIKVISION_DIGITAL_TECHNOLOGY_CO_LTD ['1430', '"Hangzhou Hikvision Digital Technology Co., Ltd."']]
+ ['1431' CRYSTAL_PEAK_SECURITY ['1431', '"Crystal Peak Security"']]
+ ['1432' PERM_ALERT ['1432', '"PermAlert"']]
+ ['1433' ZHEJIANG_MISILIN_TECHNOLOGY_CO_LTD ['1433', '"Zhejiang Misilin Technology Co., Ltd."']]
+ ['1434' DEKKER_VACUUM_TECHNOLOGIES ['1434', '"Dekker Vacuum Technologies"']]
+ ['1435' EDWARDS_LIMITED ['1435', '"Edwards Limited"']]
+ ['1436' LEYBOLD_GMBH ['1436', '"Leybold GmbH"']]
+ ['1437' INTERNATIONAL_GAS_DETECTORS ['1437', '"International Gas Detectors"']]
+ ['1438' ATLAS_COPCO_AIRPOWERNV ['1438', '"Atlas Copco Airpower NV"']]
+ ['1439' AIR_SENTRY_LIMITED ['1439', '"Air Sentry Limited"']]
+ ['1440' AELSYS ['1440', '"Aelsys"']]
+ ['1441' GRANBY_CONSULTINGLLC ['1441', '"Granby Consulting LLC"']]
+ ['1442' CLEVER_RELAY ['1442', '"Clever Relay"']]
+ ['1443' MONICO_MONITORING_INC ['1443', '"Monico Monitoring, Inc."']]
+ ['1444' OQDO ['1444', '"Oqdo"']]
+ ['1445' MATRIX_COMSEC_PRIVATE_LIMITED ['1445', '"Matrix Comsec Private Limited"']]
+ ['1446' RESOURCE_SOLUTIONS ['1446', '"Resource Solutions"']]
+ ['1447' AMERICAN_GAS_SAFETYLLC ['1447', '"American Gas Safety, LLC"']]
+ ['1448' SS_NORTHERN_LTD ['1448', '"S&S Northern Ltd."']]
+ ['1449' ULBIOS_TECHSENS ['1449', '"Ulbios Techsens"']]
+ ['1450' BOWERY_FARMING_INC ['1450', '"Bowery Farming, Inc."']]
+ ['1451' RYOBI_LIMITED ['1451', '"Ryobi Limited"']]
+ ['1452' EKKO_SENSE_LTD ['1452', '"EkkoSense Ltd"']]
+ ['1453' CLIMA_COOL ['1453', '"ClimaCool"']]
+
+ ['0xFFFF' UNKNOWN_VENDOR ['0xFFFF', '"Unknown"']]
+]
+
+[type BACnetVendorIdTagged(uint 8 tagNumber, TagClass tagClass)
+ [simple BACnetTagHeader
+ header ]
+ [validation 'header.tagClass == tagClass' "tag class doesn't match" ]
+ [validation '(header.tagClass == TagClass.APPLICATION_TAGS && header.actualTagNumber == 2) || (header.actualTagNumber == tagNumber)'
+ "tagnumber doesn't match" shouldFail=false ]
+ [manual BACnetVendorId
+ value
+ 'STATIC_CALL("readEnumGeneric", readBuffer, header.actualLength, BACnetVendorId.UNKNOWN_VENDOR)'
+ 'STATIC_CALL("writeEnumGeneric", writeBuffer, value)'
+ '_value.isUnknownId?0:(header.actualLength * 8)' ]
+ [virtual bit isUnknownId
+ 'value == BACnetVendorId.UNKNOWN_VENDOR' ]
+ //TODO: change to uint32 once cast is inserted
+ [manual uint 32
+ unknownId
+ 'STATIC_CALL("readProprietaryEnumGeneric", readBuffer, header.actualLength, isUnknownId)'
+ 'STATIC_CALL("writeProprietaryEnumGeneric", writeBuffer, unknownId, isUnknownId)'
+ '_value.isUnknownId?(header.actualLength * 8):0' ]
+]
diff --git a/protocols/bacnetip/src/main/script/getVendorIds.groovy b/protocols/bacnetip/src/main/script/getVendorIds.groovy
index 0bf9e636b5..3b64e0a943 100644
--- a/protocols/bacnetip/src/main/script/getVendorIds.groovy
+++ b/protocols/bacnetip/src/main/script/getVendorIds.groovy
@@ -122,6 +122,9 @@ mspecTemplate = """
* specific language governing permissions and limitations
* under the License.
*/
+
+ // Code generated by code-generation. DO NOT EDIT.
+
[enum uint 16 BACnetVendorId(uint 16 vendorId, string 8 vendorName)
<% for (item in values) { %> ['<%= item.vendorId %>' <%= item.organizationSanitized %> ['<%= item.vendorId %>', '"<%= item.organization %>"']]\\n <% } %>
['0xFFFF' UNKNOWN_VENDOR ['0xFFFF', '"Unknown"']]
@@ -151,10 +154,13 @@ mspecTemplate = """
SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
def template = templateEngine.createTemplate(mspecTemplate).make([values: vendors])
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
if (!mspecTargetDir.exists()) {
mspecTargetDir.mkdirs()
}
def vendorIdMspec = new File(mspecTargetDir, "bacnet-vendorids.mspec")
+if(vendorIdMspec.exists()) {
+ vendorIdMspec.delete()
+}
template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy b/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy
index ab92555d4b..920e8a5cec 100644
--- a/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy
+++ b/protocols/bacnetip/src/main/script/produceTaggedBitStrings.groovy
@@ -66,7 +66,8 @@ taggedEnumsTemplate = """
* specific language governing permissions and limitations
* under the License.
*/
-
+
+ // Code generated by code-generation. DO NOT EDIT.
<% for (item in values) { %>
[type <%= item.name %>Tagged(uint 8 tagNumber, TagClass tagClass)
[simple BACnetTagHeader
@@ -83,10 +84,13 @@ taggedEnumsTemplate = """
SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
def template = templateEngine.createTemplate(taggedEnumsTemplate).make([values: foundEnums])
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
if (!mspecTargetDir.exists()) {
mspecTargetDir.mkdirs()
}
def vendorIdMspec = new File(mspecTargetDir, "bacnet-bit-strings-tagged.mspec")
+if(vendorIdMspec.exists()) {
+ vendorIdMspec.delete()
+}
template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy b/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy
index acdff6bc96..9c3d0a41ca 100644
--- a/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy
+++ b/protocols/bacnetip/src/main/script/produceTaggedEnums.groovy
@@ -60,6 +60,7 @@ taggedEnumsTemplate = """
* under the License.
*/
+ // Code generated by code-generation. DO NOT EDIT.
<% for (item in values) { %>
[type <%= item.name %>Tagged(uint 8 tagNumber, TagClass tagClass)
[simple BACnetTagHeader
@@ -85,10 +86,13 @@ taggedEnumsTemplate = """
SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
def template = templateEngine.createTemplate(taggedEnumsTemplate).make([values: foundEnums])
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
if (!mspecTargetDir.exists()) {
mspecTargetDir.mkdirs()
}
def vendorIdMspec = new File(mspecTargetDir, "bacnet-enums-tagged.mspec")
+if(vendorIdMspec.exists()) {
+ vendorIdMspec.delete()
+}
template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy b/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy
index 9096a97b35..a509a236db 100644
--- a/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy
+++ b/protocols/bacnetip/src/main/script/produceTaggedPrivateEnums.groovy
@@ -54,6 +54,7 @@ taggedEnumsTemplate = """
* under the License.
*/
+ // Code generated by code-generation. DO NOT EDIT.
<% for (item in values) { %>
[type <%= item.name %>Tagged(uint 8 tagNumber, TagClass tagClass)
[simple BACnetTagHeader
@@ -72,10 +73,13 @@ taggedEnumsTemplate = """
SimpleTemplateEngine templateEngine = new SimpleTemplateEngine()
def template = templateEngine.createTemplate(taggedEnumsTemplate).make([values: foundEnums])
-def mspecTargetDir = new File(project.build.getOutputDirectory(), "/protocols/bacnetip")
+def mspecTargetDir = new File(project.getBasedir(), "src/main/generated/protocols/bacnetip")
if (!mspecTargetDir.exists()) {
mspecTargetDir.mkdirs()
}
def vendorIdMspec = new File(mspecTargetDir, "bacnet-private-enums-tagged.mspec")
+if(vendorIdMspec.exists()) {
+ vendorIdMspec.delete()
+}
template.writeTo(vendorIdMspec.newWriter())
diff --git a/protocols/knxnetip/pom.xml b/protocols/knxnetip/pom.xml
index 6c891b238b..85da343a73 100644
--- a/protocols/knxnetip/pom.xml
+++ b/protocols/knxnetip/pom.xml
@@ -33,76 +33,14 @@
<description>Base protocol specifications for the KNXNet/IP protocol</description>
<build>
- <plugins>
- <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
- <!--
- We're intentionally not using the download plugin as this would either download only once
- and not get any updates or it would try downloading for every build. This however might result
- in getting banned on the KNX server.
-
- So this script makes sure the knx-master-data.xml is updated at most every 24h
- -->
- <plugin>
- <groupId>org.codehaus.gmaven</groupId>
- <artifactId>groovy-maven-plugin</artifactId>
- <version>2.1.1</version>
- <executions>
- <!-- Do some pre-build checks and report any findings to the user -->
- <execution>
- <id>fetch-knx-manufacturer-data</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <source>${project.basedir}/src/main/script/getKnxMasterData.groovy</source>
- </configuration>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>org.apache.groovy</groupId>
- <artifactId>groovy</artifactId>
- <version>${groovy.version}</version>
- </dependency>
- </dependencies>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>xml-maven-plugin</artifactId>
- <version>1.1.0</version>
- <executions>
- <execution>
- <phase>process-resources</phase>
- <goals>
- <goal>transform</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <transformationSets>
- <transformationSet>
- <dir>${project.build.directory}/downloads</dir>
- <includes>*.xml</includes>
- <stylesheet>src/main/xslt/knx-types.xsl</stylesheet>
- <outputDir>${project.build.outputDirectory}/protocols/knxnetip</outputDir>
- <fileMappers>
- <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
- <targetExtension>.mspec</targetExtension>
- </fileMapper>
- </fileMappers>
- </transformationSet>
- </transformationSets>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>Saxon-HE</artifactId>
- <version>12.3</version>
- </dependency>
- </dependencies>
- </plugin>
- </plugins>
+ <resources>
+ <resource>
+ <directory>src/main/generated</directory>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
</build>
<dependencies>
@@ -143,4 +81,82 @@
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>update-generated-code</id>
+ <build>
+ <plugins>
+ <!-- Fetch the master-data which will be used to translate manufacturer ids to readable names -->
+ <!--
+ We're intentionally not using the download plugin as this would either download only once
+ and not get any updates or it would try downloading for every build. This however might result
+ in getting banned on the KNX server.
+
+ So this script makes sure the knx-master-data.xml is updated at most every 24h
+ -->
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>groovy-maven-plugin</artifactId>
+ <version>2.1.1</version>
+ <executions>
+ <!-- Do some pre-build checks and report any findings to the user -->
+ <execution>
+ <id>fetch-knx-manufacturer-data</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <source>${project.basedir}/src/main/script/getKnxMasterData.groovy</source>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.groovy</groupId>
+ <artifactId>groovy</artifactId>
+ <version>${groovy.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>xml-maven-plugin</artifactId>
+ <version>1.1.0</version>
+ <executions>
+ <execution>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>transform</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <transformationSets>
+ <transformationSet>
+ <dir>${project.build.directory}/downloads</dir>
+ <includes>*.xml</includes>
+ <stylesheet>src/main/xslt/knx-types.xsl</stylesheet>
+ <outputDir>${project.basedir}/src/main/generated/protocols/knxnetip</outputDir>
+ <fileMappers>
+ <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
+ <targetExtension>.mspec</targetExtension>
+ </fileMapper>
+ </fileMappers>
+ </transformationSet>
+ </transformationSets>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>net.sf.saxon</groupId>
+ <artifactId>Saxon-HE</artifactId>
+ <version>12.3</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
\ No newline at end of file
diff --git a/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
new file mode 100644
index 0000000000..2d3e63cbd9
--- /dev/null
+++ b/protocols/knxnetip/src/main/generated/protocols/knxnetip/knx-master-data.mspec
@@ -0,0 +1,4700 @@
+
+/*
+ * 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.
+ */
+
+// Code generated by code-generation. DO NOT EDIT.
+
+[enum uint 16 KnxDatapointMainType(uint 16 number, uint 8 sizeInBits, string 8 name)
+ ['0' DPT_UNKNOWN ['0', '0', '"Unknown Datapoint Type"']]
+ // Begin: Some typed needed to support all IEC types on KNX (Which the standard generally doesn't support)
+ ['1' DPT_64_BIT_SET ['0', '64', '"Unknown Datapoint Type"']]
+ ['2' DPT_8_BYTE_UNSIGNED_VALUE ['0', '64', '"Unknown Datapoint Type"']]
+ ['3' DPT_8_BYTE_SIGNED_VALUE ['0', '64', '"Unknown Datapoint Type"']]
+ ['4' DPT_12_BYTE_SIGNED_VALUE ['0', '96', '"Unknown Datapoint Type"']]
+ ['5' DPT_8_BYTE_FLOAT_VALUE ['0', '64', '"Unknown Datapoint Type"']]
+ // End: Custom types
+ ['6' DPT_1_BIT ['1', '1', '"1-bit"']]
+ ['7' DPT_1_BIT_CONTROLLED ['2', '2', '"1-bit controlled"']]
+ ['8' DPT_3_BIT_CONTROLLED ['3', '4', '"3-bit controlled"']]
+ ['9' DPT_CHARACTER ['4', '8', '"character"']]
+ ['10' DPT_8_BIT_UNSIGNED_VALUE ['5', '8', '"8-bit unsigned value"']]
+ ['11' DPT_8_BIT_SIGNED_VALUE ['6', '8', '"8-bit signed value"']]
+ ['12' DPT_2_BYTE_UNSIGNED_VALUE ['7', '16', '"2-byte unsigned value"']]
+ ['13' DPT_2_BYTE_SIGNED_VALUE ['8', '16', '"2-byte signed value"']]
+ ['14' DPT_2_BYTE_FLOAT_VALUE ['9', '16', '"2-byte float value"']]
+ ['15' DPT_TIME ['10', '24', '"time"']]
+ ['16' DPT_DATE ['11', '24', '"date"']]
+ ['17' DPT_4_BYTE_UNSIGNED_VALUE ['12', '32', '"4-byte unsigned value"']]
+ ['18' DPT_4_BYTE_SIGNED_VALUE ['13', '32', '"4-byte signed value"']]
+ ['19' DPT_4_BYTE_FLOAT_VALUE ['14', '32', '"4-byte float value"']]
+ ['20' DPT_ENTRANCE_ACCESS ['15', '32', '"entrance access"']]
+ ['21' DPT_CHARACTER_STRING ['16', '112', '"character string"']]
+ ['22' DPT_SCENE_NUMBER ['17', '8', '"scene number"']]
+ ['23' DPT_SCENE_CONTROL ['18', '8', '"scene control"']]
+ ['24' DPT_DATE_TIME ['19', '64', '"Date Time"']]
+ ['25' DPT_1_BYTE ['20', '8', '"1-byte"']]
+ ['26' DPT_8_BIT_SET ['21', '8', '"8-bit set"']]
+ ['27' DPT_16_BIT_SET ['22', '16', '"16-bit set"']]
+ ['28' DPT_2_BIT_SET ['23', '2', '"2-bit set"']]
+ ['29' DPT_2_NIBBLE_SET ['25', '8', '"2-nibble set"']]
+ ['30' DPT_8_BIT_SET_2 ['26', '8', '"8-bit set"']]
+ ['31' DPT_32_BIT_SET ['27', '32', '"32-bit set"']]
+ ['32' DPT_ELECTRICAL_ENERGY ['29', '64', '"electrical energy"']]
+ ['33' DPT_24_TIMES_CHANNEL_ACTIVATION ['30', '24', '"24 times channel activation"']]
+ ['34' DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM ['206', '24', '"16-bit unsigned value & 8-bit enum"']]
+ ['35' DPT_8_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM ['207', '16', '"8-bit unsigned value & 8-bit enum"']]
+ ['36' DPT_DATAPOINT_TYPE_VERSION ['217', '16', '"datapoint type version"']]
+ ['37' DPT_ALARM_INFO ['219', '48', '"alarm info"']]
+ ['38' DPT_3X_2_BYTE_FLOAT_VALUE ['222', '48', '"3x 2-byte float value"']]
+ ['39' DPT_SCALING_SPEED ['225', '24', '"scaling speed"']]
+ ['40' DPT_4_1_1_BYTE_COMBINED_INFORMATION ['229', '48', '"4-1-1 byte combined information"']]
+ ['41' DPT_MBUS_ADDRESS ['230', '64', '"MBus address"']]
+ ['42' DPT_3_BYTE_COLOUR_RGB ['232', '24', '"3-byte colour RGB"']]
+ ['43' DPT_LANGUAGE_CODE_ISO_639_1 ['234', '16', '"language code ISO 639-1"']]
+ ['44' DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY ['235', '48', '"Signed value with classification and validity"']]
+ ['45' DPT_PRIORITISED_MODE_CONTROL ['236', '8', '"Prioritised Mode Control"']]
+ ['46' DPT_CONFIGURATION_DIAGNOSTICS_16_BIT ['237', '16', '"configuration/ diagnostics"']]
+ ['47' DPT_CONFIGURATION_DIAGNOSTICS_8_BIT ['238', '8', '"configuration/ diagnostics"']]
+ ['48' DPT_POSITIONS ['240', '24', '"positions"']]
+ ['49' DPT_STATUS_32_BIT ['241', '32', '"status"']]
+ ['50' DPT_STATUS_48_BIT ['242', '48', '"status"']]
+ ['51' DPT_CONVERTER_STATUS ['244', '16', '"Converter Status"']]
+ ['52' DPT_CONVERTER_TEST_RESULT ['245', '48', '"Converter test result"']]
+ ['53' DPT_BATTERY_INFORMATION ['246', '16', '"Battery Information"']]
+ ['54' DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION ['249', '48', '"brightness colour temperature transition"']]
+ ['55' DPT_STATUS_24_BIT ['250', '24', '"status"']]
+ ['56' DPT_COLOUR_RGBW ['251', '48', '"Colour RGBW"']]
+ ['57' DPT_RELATIVE_CONTROL_RGBW ['252', '40', '"Relative Control RGBW"']]
+ ['58' DPT_RELATIVE_CONTROL_RGB ['254', '24', '"Relative Control RGB"']]
+ ['59' DPT_F32F32 ['255', '64', '"F32F32"']]
+ ['60' DPT_F16F16F16F16 ['275', '64', '"F16F16F16F16"']]
+
+]
+
+[enum uint 32 KnxDatapointType(uint 16 number, KnxDatapointMainType datapointMainType, string 8 name)
+ ['0' DPT_UNKNOWN ['0', 'DPT_UNKNOWN', '"Unknown Datapoint Subtype"']]
+ // Begin: Some typed needed to support all IEC types on KNX (Which the standard generally doesn't support)
+ ['1' BOOL ['0', 'DPT_1_BIT', '"BOOL"']]
+ ['2' BYTE ['0', 'DPT_8_BIT_SET', '"BYTE"']]
+ ['3' WORD ['0', 'DPT_16_BIT_SET', '"WORD"']]
+ ['4' DWORD ['0', 'DPT_32_BIT_SET', '"DWORD"']]
+ ['5' LWORD ['0', 'DPT_64_BIT_SET', '"LWORD"']]
+ ['6' USINT ['0', 'DPT_8_BIT_UNSIGNED_VALUE', '"USINT"']]
+ ['7' SINT ['0', 'DPT_8_BIT_SIGNED_VALUE', '"SINT"']]
+ ['8' UINT ['0', 'DPT_2_BYTE_UNSIGNED_VALUE', '"UINT"']]
+ ['9' INT ['0', 'DPT_2_BYTE_SIGNED_VALUE', '"INT"']]
+ ['10' UDINT ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"UDINT"']]
+ ['11' DINT ['0', 'DPT_4_BYTE_SIGNED_VALUE', '"DINT"']]
+ ['12' ULINT ['0', 'DPT_8_BYTE_UNSIGNED_VALUE', '"ULINT"']]
+ ['13' LINT ['0', 'DPT_8_BYTE_SIGNED_VALUE', '"LINT"']]
+ ['14' REAL ['0', 'DPT_4_BYTE_FLOAT_VALUE', '"REAL"']]
+ ['15' LREAL ['0', 'DPT_8_BYTE_FLOAT_VALUE', '"LREAL"']]
+ ['16' CHAR ['0', 'DPT_CHARACTER', '"CHAR"']]
+ ['17' WCHAR ['0', 'DPT_2_BYTE_UNSIGNED_VALUE', '"WCHAR"']]
+ ['18' STRING ['0', 'DPT_UNKNOWN', '"STRING"']]
+ ['19' WSTRING ['0', 'DPT_UNKNOWN', '"WSTRING"']]
+ ['20' TIME ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"TIME"']]
+ ['21' LTIME ['0', 'DPT_8_BYTE_UNSIGNED_VALUE', '"LTIME"']]
+ ['22' DATE ['0', 'DPT_2_BYTE_UNSIGNED_VALUE', '"DATE"']]
+ ['23' TIME_OF_DAY ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"TIME_OF_DAY"']]
+ ['24' TOD ['0', 'DPT_4_BYTE_UNSIGNED_VALUE', '"TOD"']]
+ ['25' DATE_AND_TIME ['0', 'DPT_12_BYTE_SIGNED_VALUE', '"DATE_AND_TIME"']]
+ ['26' DT ['0', 'DPT_12_BYTE_SIGNED_VALUE', '"DT"']]
+ // End: Custom types
+ ['27' DPT_Switch ['1', 'DPT_1_BIT', '"switch"']]
+ ['28' DPT_Bool ['2', 'DPT_1_BIT', '"boolean"']]
+ ['29' DPT_Enable ['3', 'DPT_1_BIT', '"enable"']]
+ ['30' DPT_Ramp ['4', 'DPT_1_BIT', '"ramp"']]
+ ['31' DPT_Alarm ['5', 'DPT_1_BIT', '"alarm"']]
+ ['32' DPT_BinaryValue ['6', 'DPT_1_BIT', '"binary value"']]
+ ['33' DPT_Step ['7', 'DPT_1_BIT', '"step"']]
+ ['34' DPT_UpDown ['8', 'DPT_1_BIT', '"up/down"']]
+ ['35' DPT_OpenClose ['9', 'DPT_1_BIT', '"open/close"']]
+ ['36' DPT_Start ['10', 'DPT_1_BIT', '"start/stop"']]
+ ['37' DPT_State ['11', 'DPT_1_BIT', '"state"']]
+ ['38' DPT_Invert ['12', 'DPT_1_BIT', '"invert"']]
+ ['39' DPT_DimSendStyle ['13', 'DPT_1_BIT', '"dim send style"']]
+ ['40' DPT_InputSource ['14', 'DPT_1_BIT', '"input source"']]
+ ['41' DPT_Reset ['15', 'DPT_1_BIT', '"reset"']]
+ ['42' DPT_Ack ['16', 'DPT_1_BIT', '"acknowledge"']]
+ ['43' DPT_Trigger ['17', 'DPT_1_BIT', '"trigger"']]
+ ['44' DPT_Occupancy ['18', 'DPT_1_BIT', '"occupancy"']]
+ ['45' DPT_Window_Door ['19', 'DPT_1_BIT', '"window/door"']]
+ ['46' DPT_LogicalFunction ['21', 'DPT_1_BIT', '"logical function"']]
+ ['47' DPT_Scene_AB ['22', 'DPT_1_BIT', '"scene"']]
+ ['48' DPT_ShutterBlinds_Mode ['23', 'DPT_1_BIT', '"shutter/blinds mode"']]
+ ['49' DPT_DayNight ['24', 'DPT_1_BIT', '"day/night"']]
+ ['50' DPT_Heat_Cool ['100', 'DPT_1_BIT', '"cooling/heating"']]
+ ['51' DPT_Switch_Control ['1', 'DPT_1_BIT_CONTROLLED', '"switch control"']]
+ ['52' DPT_Bool_Control ['2', 'DPT_1_BIT_CONTROLLED', '"boolean control"']]
+ ['53' DPT_Enable_Control ['3', 'DPT_1_BIT_CONTROLLED', '"enable control"']]
+ ['54' DPT_Ramp_Control ['4', 'DPT_1_BIT_CONTROLLED', '"ramp control"']]
+ ['55' DPT_Alarm_Control ['5', 'DPT_1_BIT_CONTROLLED', '"alarm control"']]
+ ['56' DPT_BinaryValue_Control ['6', 'DPT_1_BIT_CONTROLLED', '"binary value control"']]
+ ['57' DPT_Step_Control ['7', 'DPT_1_BIT_CONTROLLED', '"step control"']]
+ ['58' DPT_Direction1_Control ['8', 'DPT_1_BIT_CONTROLLED', '"direction control 1"']]
+ ['59' DPT_Direction2_Control ['9', 'DPT_1_BIT_CONTROLLED', '"direction control 2"']]
+ ['60' DPT_Start_Control ['10', 'DPT_1_BIT_CONTROLLED', '"start control"']]
+ ['61' DPT_State_Control ['11', 'DPT_1_BIT_CONTROLLED', '"state control"']]
+ ['62' DPT_Invert_Control ['12', 'DPT_1_BIT_CONTROLLED', '"invert control"']]
+ ['63' DPT_Control_Dimming ['7', 'DPT_3_BIT_CONTROLLED', '"dimming control"']]
+ ['64' DPT_Control_Blinds ['8', 'DPT_3_BIT_CONTROLLED', '"blind control"']]
+ ['65' DPT_Char_ASCII ['1', 'DPT_CHARACTER', '"character (ASCII)"']]
+ ['66' DPT_Char_8859_1 ['2', 'DPT_CHARACTER', '"character (ISO 8859-1)"']]
+ ['67' DPT_Scaling ['1', 'DPT_8_BIT_UNSIGNED_VALUE', '"percentage (0..100%)"']]
+ ['68' DPT_Angle ['3', 'DPT_8_BIT_UNSIGNED_VALUE', '"angle (degrees)"']]
+ ['69' DPT_Percent_U8 ['4', 'DPT_8_BIT_UNSIGNED_VALUE', '"percentage (0..255%)"']]
+ ['70' DPT_DecimalFactor ['5', 'DPT_8_BIT_UNSIGNED_VALUE', '"ratio (0..255)"']]
+ ['71' DPT_Tariff ['6', 'DPT_8_BIT_UNSIGNED_VALUE', '"tariff (0..255)"']]
+ ['72' DPT_Value_1_Ucount ['10', 'DPT_8_BIT_UNSIGNED_VALUE', '"counter pulses (0..255)"']]
+ ['73' DPT_FanStage ['100', 'DPT_8_BIT_UNSIGNED_VALUE', '"fan stage (0..255)"']]
+ ['74' DPT_Percent_V8 ['1', 'DPT_8_BIT_SIGNED_VALUE', '"percentage (-128..127%)"']]
+ ['75' DPT_Value_1_Count ['10', 'DPT_8_BIT_SIGNED_VALUE', '"counter pulses (-128..127)"']]
+ ['76' DPT_Status_Mode3 ['20', 'DPT_8_BIT_SIGNED_VALUE', '"status with mode"']]
+ ['77' DPT_Value_2_Ucount ['1', 'DPT_2_BYTE_UNSIGNED_VALUE', '"pulses"']]
+ ['78' DPT_TimePeriodMsec ['2', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (ms)"']]
+ ['79' DPT_TimePeriod10Msec ['3', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (10 ms)"']]
+ ['80' DPT_TimePeriod100Msec ['4', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (100 ms)"']]
+ ['81' DPT_TimePeriodSec ['5', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (s)"']]
+ ['82' DPT_TimePeriodMin ['6', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (min)"']]
+ ['83' DPT_TimePeriodHrs ['7', 'DPT_2_BYTE_UNSIGNED_VALUE', '"time (h)"']]
+ ['84' DPT_PropDataType ['10', 'DPT_2_BYTE_UNSIGNED_VALUE', '"property data type"']]
+ ['85' DPT_Length_mm ['11', 'DPT_2_BYTE_UNSIGNED_VALUE', '"length (mm)"']]
+ ['86' DPT_UElCurrentmA ['12', 'DPT_2_BYTE_UNSIGNED_VALUE', '"current (mA)"']]
+ ['87' DPT_Brightness ['13', 'DPT_2_BYTE_UNSIGNED_VALUE', '"brightness (lux)"']]
+ ['88' DPT_Absolute_Colour_Temperature ['600', 'DPT_2_BYTE_UNSIGNED_VALUE', '"absolute colour temperature (K)"']]
+ ['89' DPT_Value_2_Count ['1', 'DPT_2_BYTE_SIGNED_VALUE', '"pulses difference"']]
+ ['90' DPT_DeltaTimeMsec ['2', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (ms)"']]
+ ['91' DPT_DeltaTime10Msec ['3', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag(10 ms)"']]
+ ['92' DPT_DeltaTime100Msec ['4', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (100 ms)"']]
+ ['93' DPT_DeltaTimeSec ['5', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (s)"']]
+ ['94' DPT_DeltaTimeMin ['6', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (min)"']]
+ ['95' DPT_DeltaTimeHrs ['7', 'DPT_2_BYTE_SIGNED_VALUE', '"time lag (h)"']]
+ ['96' DPT_Percent_V16 ['10', 'DPT_2_BYTE_SIGNED_VALUE', '"percentage difference (%)"']]
+ ['97' DPT_Rotation_Angle ['11', 'DPT_2_BYTE_SIGNED_VALUE', '"rotation angle (°)"']]
+ ['98' DPT_Length_m ['12', 'DPT_2_BYTE_SIGNED_VALUE', '"length (m)"']]
+ ['99' DPT_Value_Temp ['1', 'DPT_2_BYTE_FLOAT_VALUE', '"temperature (°C)"']]
+ ['100' DPT_Value_Tempd ['2', 'DPT_2_BYTE_FLOAT_VALUE', '"temperature difference (K)"']]
+ ['101' DPT_Value_Tempa ['3', 'DPT_2_BYTE_FLOAT_VALUE', '"kelvin/hour (K/h)"']]
+ ['102' DPT_Value_Lux ['4', 'DPT_2_BYTE_FLOAT_VALUE', '"lux (Lux)"']]
+ ['103' DPT_Value_Wsp ['5', 'DPT_2_BYTE_FLOAT_VALUE', '"speed (m/s)"']]
+ ['104' DPT_Value_Pres ['6', 'DPT_2_BYTE_FLOAT_VALUE', '"pressure (Pa)"']]
+ ['105' DPT_Value_Humidity ['7', 'DPT_2_BYTE_FLOAT_VALUE', '"humidity (%)"']]
+ ['106' DPT_Value_AirQuality ['8', 'DPT_2_BYTE_FLOAT_VALUE', '"parts/million (ppm)"']]
+ ['107' DPT_Value_AirFlow ['9', 'DPT_2_BYTE_FLOAT_VALUE', '"air flow (m³/h)"']]
+ ['108' DPT_Value_Time1 ['10', 'DPT_2_BYTE_FLOAT_VALUE', '"time (s)"']]
+ ['109' DPT_Value_Time2 ['11', 'DPT_2_BYTE_FLOAT_VALUE', '"time (ms)"']]
+ ['110' DPT_Value_Volt ['20', 'DPT_2_BYTE_FLOAT_VALUE', '"voltage (mV)"']]
+ ['111' DPT_Value_Curr ['21', 'DPT_2_BYTE_FLOAT_VALUE', '"current (mA)"']]
+ ['112' DPT_PowerDensity ['22', 'DPT_2_BYTE_FLOAT_VALUE', '"power density (W/m²)"']]
+ ['113' DPT_KelvinPerPercent ['23', 'DPT_2_BYTE_FLOAT_VALUE', '"kelvin/percent (K/%)"']]
+ ['114' DPT_Power ['24', 'DPT_2_BYTE_FLOAT_VALUE', '"power (kW)"']]
+ ['115' DPT_Value_Volume_Flow ['25', 'DPT_2_BYTE_FLOAT_VALUE', '"volume flow (l/h)"']]
+ ['116' DPT_Rain_Amount ['26', 'DPT_2_BYTE_FLOAT_VALUE', '"rain amount (l/m²)"']]
+ ['117' DPT_Value_Temp_F ['27', 'DPT_2_BYTE_FLOAT_VALUE', '"temperature (°F)"']]
+ ['118' DPT_Value_Wsp_kmh ['28', 'DPT_2_BYTE_FLOAT_VALUE', '"wind speed (km/h)"']]
+ ['119' DPT_Value_Absolute_Humidity ['29', 'DPT_2_BYTE_FLOAT_VALUE', '"absolute humidity (g/m³)"']]
+ ['120' DPT_Concentration_ygm3 ['30', 'DPT_2_BYTE_FLOAT_VALUE', '"concentration (µg/m³)"']]
+ ['121' DPT_Coefficient ['31', 'DPT_2_BYTE_FLOAT_VALUE', '"coefficient"']]
+ ['122' DPT_TimeOfDay ['1', 'DPT_TIME', '"time of day"']]
+ ['123' DPT_Date ['1', 'DPT_DATE', '"date"']]
+ ['124' DPT_Value_4_Ucount ['1', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter pulses (unsigned)"']]
+ ['125' DPT_LongTimePeriod_Sec ['100', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter timesec (s)"']]
+ ['126' DPT_LongTimePeriod_Min ['101', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter timemin (min)"']]
+ ['127' DPT_LongTimePeriod_Hrs ['102', 'DPT_4_BYTE_UNSIGNED_VALUE', '"counter timehrs (h)"']]
+ ['128' DPT_VolumeLiquid_Litre ['1200', 'DPT_4_BYTE_UNSIGNED_VALUE', '"volume liquid (l)"']]
+ ['129' DPT_Volume_m_3 ['1201', 'DPT_4_BYTE_UNSIGNED_VALUE', '"volume (m³)"']]
+ ['130' DPT_Value_4_Count ['1', 'DPT_4_BYTE_SIGNED_VALUE', '"counter pulses (signed)"']]
+ ['131' DPT_FlowRate_m3h ['2', 'DPT_4_BYTE_SIGNED_VALUE', '"flow rate (m³/h)"']]
+ ['132' DPT_ActiveEnergy ['10', 'DPT_4_BYTE_SIGNED_VALUE', '"active energy (Wh)"']]
+ ['133' DPT_ApparantEnergy ['11', 'DPT_4_BYTE_SIGNED_VALUE', '"apparant energy (VAh)"']]
+ ['134' DPT_ReactiveEnergy ['12', 'DPT_4_BYTE_SIGNED_VALUE', '"reactive energy (VARh)"']]
+ ['135' DPT_ActiveEnergy_kWh ['13', 'DPT_4_BYTE_SIGNED_VALUE', '"active energy (kWh)"']]
+ ['136' DPT_ApparantEnergy_kVAh ['14', 'DPT_4_BYTE_SIGNED_VALUE', '"apparant energy (kVAh)"']]
+ ['137' DPT_ReactiveEnergy_kVARh ['15', 'DPT_4_BYTE_SIGNED_VALUE', '"reactive energy (kVARh)"']]
+ ['138' DPT_ActiveEnergy_MWh ['16', 'DPT_4_BYTE_SIGNED_VALUE', '"active energy (MWh)"']]
+ ['139' DPT_LongDeltaTimeSec ['100', 'DPT_4_BYTE_SIGNED_VALUE', '"time lag (s)"']]
+ ['140' DPT_DeltaVolumeLiquid_Litre ['1200', 'DPT_4_BYTE_SIGNED_VALUE', '"delta volume liquid (l)"']]
+ ['141' DPT_DeltaVolume_m_3 ['1201', 'DPT_4_BYTE_SIGNED_VALUE', '"delta volume (m³)"']]
+ ['142' DPT_Value_Acceleration ['0', 'DPT_4_BYTE_FLOAT_VALUE', '"acceleration (m/s²)"']]
+ ['143' DPT_Value_Acceleration_Angular ['1', 'DPT_4_BYTE_FLOAT_VALUE', '"angular acceleration (rad/s²)"']]
+ ['144' DPT_Value_Activation_Energy ['2', 'DPT_4_BYTE_FLOAT_VALUE', '"activation energy (J/mol)"']]
+ ['145' DPT_Value_Activity ['3', 'DPT_4_BYTE_FLOAT_VALUE', '"radioactive activity (1/s)"']]
+ ['146' DPT_Value_Mol ['4', 'DPT_4_BYTE_FLOAT_VALUE', '"amount of substance (mol)"']]
+ ['147' DPT_Value_Amplitude ['5', 'DPT_4_BYTE_FLOAT_VALUE', '"amplitude"']]
+ ['148' DPT_Value_AngleRad ['6', 'DPT_4_BYTE_FLOAT_VALUE', '"angle (radiant)"']]
+ ['149' DPT_Value_AngleDeg ['7', 'DPT_4_BYTE_FLOAT_VALUE', '"angle (degree)"']]
+ ['150' DPT_Value_Angular_Momentum ['8', 'DPT_4_BYTE_FLOAT_VALUE', '"angular momentum (Js)"']]
+ ['151' DPT_Value_Angular_Velocity ['9', 'DPT_4_BYTE_FLOAT_VALUE', '"angular velocity (rad/s)"']]
+ ['152' DPT_Value_Area ['10', 'DPT_4_BYTE_FLOAT_VALUE', '"area (m*m)"']]
+ ['153' DPT_Value_Capacitance ['11', 'DPT_4_BYTE_FLOAT_VALUE', '"capacitance (F)"']]
+ ['154' DPT_Value_Charge_DensitySurface ['12', 'DPT_4_BYTE_FLOAT_VALUE', '"flux density (C/m²)"']]
+ ['155' DPT_Value_Charge_DensityVolume ['13', 'DPT_4_BYTE_FLOAT_VALUE', '"charge density (C/m³)"']]
+ ['156' DPT_Value_Compressibility ['14', 'DPT_4_BYTE_FLOAT_VALUE', '"compressibility (m²/N)"']]
+ ['157' DPT_Value_Conductance ['15', 'DPT_4_BYTE_FLOAT_VALUE', '"conductance (S)"']]
+ ['158' DPT_Value_Electrical_Conductivity ['16', 'DPT_4_BYTE_FLOAT_VALUE', '"conductivity (S/m)"']]
+ ['159' DPT_Value_Density ['17', 'DPT_4_BYTE_FLOAT_VALUE', '"density (kg/m³)"']]
+ ['160' DPT_Value_Electric_Charge ['18', 'DPT_4_BYTE_FLOAT_VALUE', '"electric charge (C)"']]
+ ['161' DPT_Value_Electric_Current ['19', 'DPT_4_BYTE_FLOAT_VALUE', '"electric current (A)"']]
+ ['162' DPT_Value_Electric_CurrentDensity ['20', 'DPT_4_BYTE_FLOAT_VALUE', '"electric current density (A/m²)"']]
+ ['163' DPT_Value_Electric_DipoleMoment ['21', 'DPT_4_BYTE_FLOAT_VALUE', '"electric dipole moment (Cm)"']]
+ ['164' DPT_Value_Electric_Displacement ['22', 'DPT_4_BYTE_FLOAT_VALUE', '"electric displacement (C/m²)"']]
+ ['165' DPT_Value_Electric_FieldStrength ['23', 'DPT_4_BYTE_FLOAT_VALUE', '"electric field strength (V/m)"']]
+ ['166' DPT_Value_Electric_Flux ['24', 'DPT_4_BYTE_FLOAT_VALUE', '"electric flux (C)"']]
+ ['167' DPT_Value_Electric_FluxDensity ['25', 'DPT_4_BYTE_FLOAT_VALUE', '"electric flux density (C/m²)"']]
+ ['168' DPT_Value_Electric_Polarization ['26', 'DPT_4_BYTE_FLOAT_VALUE', '"electric polarization (C/m²)"']]
+ ['169' DPT_Value_Electric_Potential ['27', 'DPT_4_BYTE_FLOAT_VALUE', '"electric potential (V)"']]
+ ['170' DPT_Value_Electric_PotentialDifference ['28', 'DPT_4_BYTE_FLOAT_VALUE', '"electric potential difference (V)"']]
+ ['171' DPT_Value_ElectromagneticMoment ['29', 'DPT_4_BYTE_FLOAT_VALUE', '"electromagnetic moment (Am²)"']]
+ ['172' DPT_Value_Electromotive_Force ['30', 'DPT_4_BYTE_FLOAT_VALUE', '"electromotive force (V)"']]
+ ['173' DPT_Value_Energy ['31', 'DPT_4_BYTE_FLOAT_VALUE', '"energy (J)"']]
+ ['174' DPT_Value_Force ['32', 'DPT_4_BYTE_FLOAT_VALUE', '"force (N)"']]
+ ['175' DPT_Value_Frequency ['33', 'DPT_4_BYTE_FLOAT_VALUE', '"frequency (Hz)"']]
+ ['176' DPT_Value_Angular_Frequency ['34', 'DPT_4_BYTE_FLOAT_VALUE', '"angular frequency (rad/s)"']]
+ ['177' DPT_Value_Heat_Capacity ['35', 'DPT_4_BYTE_FLOAT_VALUE', '"heat capacity (J/K)"']]
+ ['178' DPT_Value_Heat_FlowRate ['36', 'DPT_4_BYTE_FLOAT_VALUE', '"heat flow rate (W)"']]
+ ['179' DPT_Value_Heat_Quantity ['37', 'DPT_4_BYTE_FLOAT_VALUE', '"heat quantity"']]
+ ['180' DPT_Value_Impedance ['38', 'DPT_4_BYTE_FLOAT_VALUE', '"impedance (Ω)"']]
+ ['181' DPT_Value_Length ['39', 'DPT_4_BYTE_FLOAT_VALUE', '"length (m)"']]
+ ['182' DPT_Value_Light_Quantity ['40', 'DPT_4_BYTE_FLOAT_VALUE', '"light quantity (J)"']]
+ ['183' DPT_Value_Luminance ['41', 'DPT_4_BYTE_FLOAT_VALUE', '"luminance (cd/m²)"']]
+ ['184' DPT_Value_Luminous_Flux ['42', 'DPT_4_BYTE_FLOAT_VALUE', '"luminous flux (lm)"']]
+ ['185' DPT_Value_Luminous_Intensity ['43', 'DPT_4_BYTE_FLOAT_VALUE', '"luminous intensity (cd)"']]
+ ['186' DPT_Value_Magnetic_FieldStrength ['44', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic field strength (A/m)"']]
+ ['187' DPT_Value_Magnetic_Flux ['45', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic flux (Wb)"']]
+ ['188' DPT_Value_Magnetic_FluxDensity ['46', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic flux density (T)"']]
+ ['189' DPT_Value_Magnetic_Moment ['47', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic moment (Am²)"']]
+ ['190' DPT_Value_Magnetic_Polarization ['48', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetic polarization (T)"']]
+ ['191' DPT_Value_Magnetization ['49', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetization (A/m)"']]
+ ['192' DPT_Value_MagnetomotiveForce ['50', 'DPT_4_BYTE_FLOAT_VALUE', '"magnetomotive force (A)"']]
+ ['193' DPT_Value_Mass ['51', 'DPT_4_BYTE_FLOAT_VALUE', '"mass (kg)"']]
+ ['194' DPT_Value_MassFlux ['52', 'DPT_4_BYTE_FLOAT_VALUE', '"mass flux (kg/s)"']]
+ ['195' DPT_Value_Momentum ['53', 'DPT_4_BYTE_FLOAT_VALUE', '"momentum (N/s)"']]
+ ['196' DPT_Value_Phase_AngleRad ['54', 'DPT_4_BYTE_FLOAT_VALUE', '"phase angle (rad)"']]
+ ['197' DPT_Value_Phase_AngleDeg ['55', 'DPT_4_BYTE_FLOAT_VALUE', '"phase angle (°)"']]
+ ['198' DPT_Value_Power ['56', 'DPT_4_BYTE_FLOAT_VALUE', '"power (W)"']]
+ ['199' DPT_Value_Power_Factor ['57', 'DPT_4_BYTE_FLOAT_VALUE', '"power factor (cos Φ)"']]
+ ['200' DPT_Value_Pressure ['58', 'DPT_4_BYTE_FLOAT_VALUE', '"pressure (Pa)"']]
+ ['201' DPT_Value_Reactance ['59', 'DPT_4_BYTE_FLOAT_VALUE', '"reactance (Ω)"']]
+ ['202' DPT_Value_Resistance ['60', 'DPT_4_BYTE_FLOAT_VALUE', '"resistance (Ω)"']]
+ ['203' DPT_Value_Resistivity ['61', 'DPT_4_BYTE_FLOAT_VALUE', '"resistivity (Ωm)"']]
+ ['204' DPT_Value_SelfInductance ['62', 'DPT_4_BYTE_FLOAT_VALUE', '"self inductance (H)"']]
+ ['205' DPT_Value_SolidAngle ['63', 'DPT_4_BYTE_FLOAT_VALUE', '"solid angle (sr)"']]
+ ['206' DPT_Value_Sound_Intensity ['64', 'DPT_4_BYTE_FLOAT_VALUE', '"sound intensity (W/m²)"']]
+ ['207' DPT_Value_Speed ['65', 'DPT_4_BYTE_FLOAT_VALUE', '"speed (m/s)"']]
+ ['208' DPT_Value_Stress ['66', 'DPT_4_BYTE_FLOAT_VALUE', '"stress (Pa)"']]
+ ['209' DPT_Value_Surface_Tension ['67', 'DPT_4_BYTE_FLOAT_VALUE', '"surface tension (N/m)"']]
+ ['210' DPT_Value_Common_Temperature ['68', 'DPT_4_BYTE_FLOAT_VALUE', '"temperature (°C)"']]
+ ['211' DPT_Value_Absolute_Temperature ['69', 'DPT_4_BYTE_FLOAT_VALUE', '"temperature absolute (K)"']]
+ ['212' DPT_Value_TemperatureDifference ['70', 'DPT_4_BYTE_FLOAT_VALUE', '"temperature difference (K)"']]
+ ['213' DPT_Value_Thermal_Capacity ['71', 'DPT_4_BYTE_FLOAT_VALUE', '"thermal capacity (J/K)"']]
+ ['214' DPT_Value_Thermal_Conductivity ['72', 'DPT_4_BYTE_FLOAT_VALUE', '"thermal conductivity (W/mK)"']]
+ ['215' DPT_Value_ThermoelectricPower ['73', 'DPT_4_BYTE_FLOAT_VALUE', '"thermoelectric power (V/K)"']]
+ ['216' DPT_Value_Time ['74', 'DPT_4_BYTE_FLOAT_VALUE', '"time (s)"']]
+ ['217' DPT_Value_Torque ['75', 'DPT_4_BYTE_FLOAT_VALUE', '"torque (Nm)"']]
+ ['218' DPT_Value_Volume ['76', 'DPT_4_BYTE_FLOAT_VALUE', '"volume (m³)"']]
+ ['219' DPT_Value_Volume_Flux ['77', 'DPT_4_BYTE_FLOAT_VALUE', '"volume flux (m³/s)"']]
+ ['220' DPT_Value_Weight ['78', 'DPT_4_BYTE_FLOAT_VALUE', '"weight (N)"']]
+ ['221' DPT_Value_Work ['79', 'DPT_4_BYTE_FLOAT_VALUE', '"work (J)"']]
+ ['222' DPT_Value_ApparentPower ['80', 'DPT_4_BYTE_FLOAT_VALUE', '"apparent power (VA)"']]
+ ['223' DPT_Volume_Flux_Meter ['1200', 'DPT_4_BYTE_FLOAT_VALUE', '"volume flux for meters (m³/h)"']]
+ ['224' DPT_Volume_Flux_ls ['1201', 'DPT_4_BYTE_FLOAT_VALUE', '"volume flux for meters (1/ls)"']]
+ ['225' DPT_Access_Data ['0', 'DPT_ENTRANCE_ACCESS', '"entrance access"']]
+ ['226' DPT_String_ASCII ['0', 'DPT_CHARACTER_STRING', '"Character String (ASCII)"']]
+ ['227' DPT_String_8859_1 ['1', 'DPT_CHARACTER_STRING', '"Character String (ISO 8859-1)"']]
+ ['228' DPT_SceneNumber ['1', 'DPT_SCENE_NUMBER', '"scene number"']]
+ ['229' DPT_SceneControl ['1', 'DPT_SCENE_CONTROL', '"scene control"']]
+ ['230' DPT_DateTime ['1', 'DPT_DATE_TIME', '"date time"']]
+ ['231' DPT_SCLOMode ['1', 'DPT_1_BYTE', '"SCLO mode"']]
+ ['232' DPT_BuildingMode ['2', 'DPT_1_BYTE', '"building mode"']]
+ ['233' DPT_OccMode ['3', 'DPT_1_BYTE', '"occupied"']]
+ ['234' DPT_Priority ['4', 'DPT_1_BYTE', '"priority"']]
+ ['235' DPT_LightApplicationMode ['5', 'DPT_1_BYTE', '"light application mode"']]
+ ['236' DPT_ApplicationArea ['6', 'DPT_1_BYTE', '"light application area"']]
+ ['237' DPT_AlarmClassType ['7', 'DPT_1_BYTE', '"alarm class"']]
+ ['238' DPT_PSUMode ['8', 'DPT_1_BYTE', '"PSU mode"']]
+ ['239' DPT_ErrorClass_System ['11', 'DPT_1_BYTE', '"system error class"']]
+ ['240' DPT_ErrorClass_HVAC ['12', 'DPT_1_BYTE', '"HVAC error class"']]
+ ['241' DPT_Time_Delay ['13', 'DPT_1_BYTE', '"time delay"']]
+ ['242' DPT_Beaufort_Wind_Force_Scale ['14', 'DPT_1_BYTE', '"wind force scale (0..12)"']]
+ ['243' DPT_SensorSelect ['17', 'DPT_1_BYTE', '"sensor mode"']]
+ ['244' DPT_ActuatorConnectType ['20', 'DPT_1_BYTE', '"actuator connect type"']]
+ ['245' DPT_Cloud_Cover ['21', 'DPT_1_BYTE', '"cloud cover"']]
+ ['246' DPT_PowerReturnMode ['22', 'DPT_1_BYTE', '"power return mode"']]
+ ['247' DPT_FuelType ['100', 'DPT_1_BYTE', '"fuel type"']]
+ ['248' DPT_BurnerType ['101', 'DPT_1_BYTE', '"burner type"']]
+ ['249' DPT_HVACMode ['102', 'DPT_1_BYTE', '"HVAC mode"']]
+ ['250' DPT_DHWMode ['103', 'DPT_1_BYTE', '"DHW mode"']]
+ ['251' DPT_LoadPriority ['104', 'DPT_1_BYTE', '"load priority"']]
+ ['252' DPT_HVACContrMode ['105', 'DPT_1_BYTE', '"HVAC control mode"']]
+ ['253' DPT_HVACEmergMode ['106', 'DPT_1_BYTE', '"HVAC emergency mode"']]
+ ['254' DPT_ChangeoverMode ['107', 'DPT_1_BYTE', '"changeover mode"']]
+ ['255' DPT_ValveMode ['108', 'DPT_1_BYTE', '"valve mode"']]
+ ['256' DPT_DamperMode ['109', 'DPT_1_BYTE', '"damper mode"']]
+ ['257' DPT_HeaterMode ['110', 'DPT_1_BYTE', '"heater mode"']]
+ ['258' DPT_FanMode ['111', 'DPT_1_BYTE', '"fan mode"']]
+ ['259' DPT_MasterSlaveMode ['112', 'DPT_1_BYTE', '"master/slave mode"']]
+ ['260' DPT_StatusRoomSetp ['113', 'DPT_1_BYTE', '"status room setpoint"']]
+ ['261' DPT_Metering_DeviceType ['114', 'DPT_1_BYTE', '"metering device type"']]
+ ['262' DPT_HumDehumMode ['115', 'DPT_1_BYTE', '"hum dehum mode"']]
+ ['263' DPT_EnableHCStage ['116', 'DPT_1_BYTE', '"enable H/C stage"']]
+ ['264' DPT_ADAType ['120', 'DPT_1_BYTE', '"ADA type"']]
+ ['265' DPT_BackupMode ['121', 'DPT_1_BYTE', '"backup mode"']]
+ ['266' DPT_StartSynchronization ['122', 'DPT_1_BYTE', '"start syncronization type"']]
+ ['267' DPT_Behaviour_Lock_Unlock ['600', 'DPT_1_BYTE', '"behavior lock/unlock"']]
+ ['268' DPT_Behaviour_Bus_Power_Up_Down ['601', 'DPT_1_BYTE', '"behavior bus power up/down"']]
+ ['269' DPT_DALI_Fade_Time ['602', 'DPT_1_BYTE', '"dali fade time"']]
+ ['270' DPT_BlinkingMode ['603', 'DPT_1_BYTE', '"blink mode"']]
+ ['271' DPT_LightControlMode ['604', 'DPT_1_BYTE', '"light control mode"']]
+ ['272' DPT_SwitchPBModel ['605', 'DPT_1_BYTE', '"PB switch mode"']]
+ ['273' DPT_PBAction ['606', 'DPT_1_BYTE', '"PB action mode"']]
+ ['274' DPT_DimmPBModel ['607', 'DPT_1_BYTE', '"PB dimm mode"']]
+ ['275' DPT_SwitchOnMode ['608', 'DPT_1_BYTE', '"switch on mode"']]
+ ['276' DPT_LoadTypeSet ['609', 'DPT_1_BYTE', '"load type"']]
+ ['277' DPT_LoadTypeDetected ['610', 'DPT_1_BYTE', '"load type detection"']]
+ ['278' DPT_Converter_Test_Control ['611', 'DPT_1_BYTE', '"converter test control"']]
+ ['279' DPT_SABExcept_Behaviour ['801', 'DPT_1_BYTE', '"SAB except behavior"']]
+ ['280' DPT_SABBehaviour_Lock_Unlock ['802', 'DPT_1_BYTE', '"SAB behavior on lock/unlock"']]
+ ['281' DPT_SSSBMode ['803', 'DPT_1_BYTE', '"SSSB mode"']]
+ ['282' DPT_BlindsControlMode ['804', 'DPT_1_BYTE', '"blinds control mode"']]
+ ['283' DPT_CommMode ['1000', 'DPT_1_BYTE', '"communication mode"']]
+ ['284' DPT_AddInfoTypes ['1001', 'DPT_1_BYTE', '"additional information type"']]
+ ['285' DPT_RF_ModeSelect ['1002', 'DPT_1_BYTE', '"RF mode selection"']]
+ ['286' DPT_RF_FilterSelect ['1003', 'DPT_1_BYTE', '"RF filter mode selection"']]
+ ['287' DPT_StatusGen ['1', 'DPT_8_BIT_SET', '"general status"']]
+ ['288' DPT_Device_Control ['2', 'DPT_8_BIT_SET', '"device control"']]
+ ['289' DPT_ForceSign ['100', 'DPT_8_BIT_SET', '"forcing signal"']]
+ ['290' DPT_ForceSignCool ['101', 'DPT_8_BIT_SET', '"forcing signal cool"']]
+ ['291' DPT_StatusRHC ['102', 'DPT_8_BIT_SET', '"room heating controller status"']]
+ ['292' DPT_StatusSDHWC ['103', 'DPT_8_BIT_SET', '"solar DHW controller status"']]
+ ['293' DPT_FuelTypeSet ['104', 'DPT_8_BIT_SET', '"fuel type set"']]
+ ['294' DPT_StatusRCC ['105', 'DPT_8_BIT_SET', '"room cooling controller status"']]
+ ['295' DPT_StatusAHU ['106', 'DPT_8_BIT_SET', '"ventilation controller status"']]
+ ['296' DPT_CombinedStatus_RTSM ['107', 'DPT_8_BIT_SET', '"combined status RTSM"']]
+ ['297' DPT_LightActuatorErrorInfo ['601', 'DPT_8_BIT_SET', '"lighting actuator error information"']]
+ ['298' DPT_RF_ModeInfo ['1000', 'DPT_8_BIT_SET', '"RF communication mode info"']]
+ ['299' DPT_RF_FilterInfo ['1001', 'DPT_8_BIT_SET', '"cEMI server supported RF filtering modes"']]
+ ['300' DPT_Channel_Activation_8 ['1010', 'DPT_8_BIT_SET', '"channel activation for 8 channels"']]
+ ['301' DPT_StatusDHWC ['100', 'DPT_16_BIT_SET', '"DHW controller status"']]
+ ['302' DPT_StatusRHCC ['101', 'DPT_16_BIT_SET', '"RHCC status"']]
+ ['303' DPT_CombinedStatus_HVA ['102', 'DPT_16_BIT_SET', '"combined status HVA"']]
+ ['304' DPT_CombinedStatus_RTC ['103', 'DPT_16_BIT_SET', '"combined status RTC"']]
+ ['305' DPT_Media ['1000', 'DPT_16_BIT_SET', '"media"']]
+ ['306' DPT_Channel_Activation_16 ['1010', 'DPT_16_BIT_SET', '"channel activation for 16 channels"']]
+ ['307' DPT_OnOffAction ['1', 'DPT_2_BIT_SET', '"on/off action"']]
+ ['308' DPT_Alarm_Reaction ['2', 'DPT_2_BIT_SET', '"alarm reaction"']]
+ ['309' DPT_UpDown_Action ['3', 'DPT_2_BIT_SET', '"up/down action"']]
+ ['310' DPT_HVAC_PB_Action ['102', 'DPT_2_BIT_SET', '"HVAC push button action"']]
+ ['311' DPT_DoubleNibble ['1000', 'DPT_2_NIBBLE_SET', '"busy/nak repetitions"']]
+ ['312' DPT_SceneInfo ['1', 'DPT_8_BIT_SET_2', '"scene information"']]
+ ['313' DPT_CombinedInfoOnOff ['1', 'DPT_32_BIT_SET', '"bit-combined info on/off"']]
+ ['314' DPT_ActiveEnergy_V64 ['10', 'DPT_ELECTRICAL_ENERGY', '"active energy (Wh)"']]
+ ['315' DPT_ApparantEnergy_V64 ['11', 'DPT_ELECTRICAL_ENERGY', '"apparant energy (VAh)"']]
+ ['316' DPT_ReactiveEnergy_V64 ['12', 'DPT_ELECTRICAL_ENERGY', '"reactive energy (VARh)"']]
+ ['317' DPT_Channel_Activation_24 ['1010', 'DPT_24_TIMES_CHANNEL_ACTIVATION', '"activation state 0..23"']]
+ ['318' DPT_HVACModeNext ['100', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & HVAC mode"']]
+ ['319' DPT_DHWModeNext ['102', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & DHW mode"']]
+ ['320' DPT_OccModeNext ['104', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & occupancy mode"']]
+ ['321' DPT_BuildingModeNext ['105', 'DPT_16_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"time delay & building mode"']]
+ ['322' DPT_StatusLightingActuator ['600', 'DPT_8_BIT_UNSIGNED_VALUE_AND_8_BIT_ENUM', '"Status Lighting Actuator"']]
+ ['323' DPT_Version ['1', 'DPT_DATAPOINT_TYPE_VERSION', '"DPT version"']]
+ ['324' DPT_AlarmInfo ['1', 'DPT_ALARM_INFO', '"alarm info"']]
+ ['325' DPT_TempRoomSetpSetF16_3 ['100', 'DPT_3X_2_BYTE_FLOAT_VALUE', '"room temperature setpoint"']]
+ ['326' DPT_TempRoomSetpSetShiftF16_3 ['101', 'DPT_3X_2_BYTE_FLOAT_VALUE', '"room temperature setpoint shift"']]
+ ['327' DPT_Scaling_Speed ['1', 'DPT_SCALING_SPEED', '"scaling speed"']]
+ ['328' DPT_Scaling_Step_Time ['2', 'DPT_SCALING_SPEED', '"scaling step time"']]
+ ['329' DPT_MeteringValue ['1', 'DPT_4_1_1_BYTE_COMBINED_INFORMATION', '"metering value (value,encoding,cmd)"']]
+ ['330' DPT_MBus_Address ['1000', 'DPT_MBUS_ADDRESS', '"MBus address"']]
+ ['331' DPT_Colour_RGB ['600', 'DPT_3_BYTE_COLOUR_RGB', '"RGB value 3x(0..255)"']]
+ ['332' DPT_LanguageCodeAlpha2_ASCII ['1', 'DPT_LANGUAGE_CODE_ISO_639_1', '"language code (ASCII)"']]
+ ['333' DPT_Tariff_ActiveEnergy ['1', 'DPT_SIGNED_VALUE_WITH_CLASSIFICATION_AND_VALIDITY', '"electrical energy with tariff"']]
+ ['334' DPT_Prioritised_Mode_Control ['1', 'DPT_PRIORITISED_MODE_CONTROL', '"priority control"']]
+ ['335' DPT_DALI_Control_Gear_Diagnostic ['600', 'DPT_CONFIGURATION_DIAGNOSTICS_16_BIT', '"diagnostic value"']]
+ ['336' DPT_DALI_Diagnostics ['600', 'DPT_CONFIGURATION_DIAGNOSTICS_8_BIT', '"diagnostic value"']]
+ ['337' DPT_CombinedPosition ['800', 'DPT_POSITIONS', '"combined position"']]
+ ['338' DPT_StatusSAB ['800', 'DPT_STATUS_32_BIT', '"status sunblind & shutter actuator"']]
+ ['339' DPT_Colour_xyY ['600', 'DPT_STATUS_48_BIT', '"colour xyY"']]
+ ['340' DPT_Converter_Status ['600', 'DPT_CONVERTER_STATUS', '"DALI converter status"']]
+ ['341' DPT_Converter_Test_Result ['600', 'DPT_CONVERTER_TEST_RESULT', '"DALI converter test result"']]
+ ['342' DPT_Battery_Info ['600', 'DPT_BATTERY_INFORMATION', '"Battery Information"']]
+ ['343' DPT_Brightness_Colour_Temperature_Transition ['600', 'DPT_BRIGHTNESS_COLOUR_TEMPERATURE_TRANSITION', '"brightness colour temperature transition"']]
+ ['344' DPT_Brightness_Colour_Temperature_Control ['600', 'DPT_STATUS_24_BIT', '"brightness colour temperature control"']]
+ ['345' DPT_Colour_RGBW ['600', 'DPT_COLOUR_RGBW', '"RGBW value 4x(0..100%)"']]
+ ['346' DPT_Relative_Control_RGBW ['600', 'DPT_RELATIVE_CONTROL_RGBW', '"RGBW relative control"']]
+ ['347' DPT_Relative_Control_RGB ['600', 'DPT_RELATIVE_CONTROL_RGB', '"RGB relative control"']]
+ ['348' DPT_GeographicalLocation ['1', 'DPT_F32F32', '"geographical location (longitude and latitude) expressed in degrees"']]
+ ['349' DPT_TempRoomSetpSetF16_4 ['100', 'DPT_F16F16F16F16', '"Temperature setpoint setting for 4 HVAC Modes"']]
+ ['350' DPT_TempRoomSetpSetShiftF16_4 ['101', 'DPT_F16F16F16F16', '"Temperature setpoint shift setting for 4 HVAC Modes"']]
+
+]
+
+[enum uint 16 KnxInterfaceObjectType(string 8 code, string 8 name)
+ ['0' OT_UNKNOWN ['U', '"Unknown Interface Object Type"']]
+ ['1' OT_GENERAL ['G', '"General Interface Object Type"']]
+ ['2' OT_DEVICE ['0', '"Device Object"']]
+ ['3' OT_ADDRESS_TABLE ['1', '"Addresstable Object"']]
+ ['4' OT_ASSOCIATION_TABLE ['2', '"Associationtable Object"']]
+ ['5' OT_APPLICATION_PROGRAM ['3', '"Applicationprogram Object"']]
+ ['6' OT_INTERACE_PROGRAM ['4', '"Interfaceprogram Object"']]
+ ['7' OT_EIBOBJECT_ASSOCIATATION_TABLE ['5', '"KNX-Object Associationtable Object"']]
+ ['8' OT_ROUTER ['6', '"Router Object"']]
+ ['9' OT_LTE_ADDRESS_ROUTING_TABLE ['7', '"LTE Address Routing Table Object"']]
+ ['10' OT_CEMI_SERVER ['8', '"cEMI Server Object"']]
+ ['11' OT_GROUP_OBJECT_TABLE ['9', '"Group Object Table Object"']]
+ ['12' OT_POLLING_MASTER ['10', '"Polling Master"']]
+ ['13' OT_KNXIP_PARAMETER ['11', '"KNXnet/IP Parameter Object"']]
+ ['14' OT_FILE_SERVER ['13', '"File Server Object"']]
+ ['15' OT_SECURITY ['17', '"Security Object"']]
+ ['16' OT_RF_MEDIUM ['19', '"RF Medium Object"']]
+ ['17' OT_INDOOR_BRIGHTNESS_SENSOR ['409', '"Indoor Brightness Sensor"']]
+ ['18' OT_INDOOR_LUMINANCE_SENSOR ['410', '"Indoor Luminance Sensor"']]
+ ['19' OT_LIGHT_SWITCHING_ACTUATOR_BASIC ['417', '"Light Switching Actuator Basic"']]
+ ['20' OT_DIMMING_ACTUATOR_BASIC ['418', '"Dimming Actuator Basic"']]
+ ['21' OT_DIMMING_SENSOR_BASIC ['420', '"Dimming Sensor Basic"']]
+ ['22' OT_SWITCHING_SENSOR_BASIC ['421', '"Switching Sensor Basic"']]
+ ['23' OT_SUNBLIND_ACTUATOR_BASIC ['800', '"Sunblind Actuator Basic"']]
+ ['24' OT_SUNBLIND_SENSOR_BASIC ['801', '"Sunblind Sensor Basic"']]
+
+]
+
+[enum uint 32 KnxInterfaceObjectProperty(uint 8 propertyId, KnxInterfaceObjectType objectType, KnxPropertyDataType propertyDataType, string 8 name)
+ ['0' PID_UNKNOWN ['0', 'OT_UNKNOWN', 'PDT_UNKNOWN', '"Unknown Interface Object Property"']]
+ ['1' PID_GENERAL_OBJECT_TYPE ['1', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Interface Object Type"']]
+ ['2' PID_GENERAL_OBJECT_NAME ['2', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Interface Object Name"']]
+ ['3' PID_GENERAL_SEMAPHOR ['3', 'OT_GENERAL', 'PDT_UNKNOWN', '"Semaphor"']]
+ ['4' PID_GENERAL_GROUP_OBJECT_REFERENCE ['4', 'OT_GENERAL', 'PDT_UNKNOWN', '"Group Object Reference"']]
+ ['5' PID_GENERAL_LOAD_STATE_CONTROL ['5', 'OT_GENERAL', 'PDT_CONTROL', '"Load Control"']]
+ ['6' PID_GENERAL_RUN_STATE_CONTROL ['6', 'OT_GENERAL', 'PDT_CONTROL', '"Run Control"']]
+ ['7' PID_GENERAL_TABLE_REFERENCE ['7', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Table Reference"']]
+ ['8' PID_GENERAL_SERVICE_CONTROL ['8', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Service Control"']]
+ ['9' PID_GENERAL_FIRMWARE_REVISION ['9', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Firmware Revision"']]
+ ['10' PID_GENERAL_SERVICES_SUPPORTED ['10', 'OT_GENERAL', 'PDT_UNKNOWN', '"Services Supported"']]
+ ['11' PID_GENERAL_SERIAL_NUMBER ['11', 'OT_GENERAL', 'PDT_GENERIC_06', '"KNX Serial Number"']]
+ ['12' PID_GENERAL_MANUFACTURER_ID ['12', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Manufacturer Identifier"']]
+ ['13' PID_GENERAL_PROGRAM_VERSION ['13', 'OT_GENERAL', 'PDT_GENERIC_05', '"Application Version"']]
+ ['14' PID_GENERAL_DEVICE_CONTROL ['14', 'OT_GENERAL', 'PDT_BITSET8', '"Device Control"']]
+ ['15' PID_GENERAL_ORDER_INFO ['15', 'OT_GENERAL', 'PDT_GENERIC_10', '"Order Info"']]
+ ['16' PID_GENERAL_PEI_TYPE ['16', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"PEI Type"']]
+ ['17' PID_GENERAL_PORT_CONFIGURATION ['17', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"PortADDR"']]
+ ['18' PID_GENERAL_POLL_GROUP_SETTINGS ['18', 'OT_GENERAL', 'PDT_POLL_GROUP_SETTINGS', '"Polling Group Settings"']]
+ ['19' PID_GENERAL_MANUFACTURER_DATA ['19', 'OT_GENERAL', 'PDT_GENERIC_04', '"Manufacturer Data"']]
+ ['20' PID_GENERAL_ENABLE ['20', 'OT_GENERAL', 'PDT_UNKNOWN', '""']]
+ ['21' PID_GENERAL_DESCRIPTION ['21', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Description"']]
+ ['22' PID_GENERAL_FILE ['22', 'OT_GENERAL', 'PDT_UNKNOWN', '""']]
+ ['23' PID_GENERAL_TABLE ['23', 'OT_GENERAL', 'PDT_UNSIGNED_INT', '"Table"']]
+ ['24' PID_GENERAL_ENROL ['24', 'OT_GENERAL', 'PDT_FUNCTION', '"Interface Object Link"']]
+ ['25' PID_GENERAL_VERSION ['25', 'OT_GENERAL', 'PDT_VERSION', '"Version"']]
+ ['26' PID_GENERAL_GROUP_OBJECT_LINK ['26', 'OT_GENERAL', 'PDT_FUNCTION', '"Group Address Assignment"']]
+ ['27' PID_GENERAL_MCB_TABLE ['27', 'OT_GENERAL', 'PDT_GENERIC_08', '"Memory Control Table"']]
+ ['28' PID_GENERAL_ERROR_CODE ['28', 'OT_GENERAL', 'PDT_GENERIC_01', '"Error Code"']]
+ ['29' PID_GENERAL_OBJECT_INDEX ['29', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Object Index"']]
+ ['30' PID_GENERAL_DOWNLOAD_COUNTER ['30', 'OT_GENERAL', 'PDT_UNSIGNED_CHAR', '"Download Counter"']]
+ ['31' PID_DEVICE_ROUTING_COUNT ['51', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Routing Count"']]
+ ['32' PID_DEVICE_MAX_RETRY_COUNT ['52', 'OT_DEVICE', 'PDT_GENERIC_01', '"Maximum Retry Count"']]
+ ['33' PID_DEVICE_ERROR_FLAGS ['53', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Error Flags"']]
+ ['34' PID_DEVICE_PROGMODE ['54', 'OT_DEVICE', 'PDT_BITSET8', '"Programming Mode"']]
+ ['35' PID_DEVICE_PRODUCT_ID ['55', 'OT_DEVICE', 'PDT_GENERIC_10', '"Product Identification"']]
+ ['36' PID_DEVICE_MAX_APDULENGTH ['56', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '"Max. APDU-Length"']]
+ ['37' PID_DEVICE_SUBNET_ADDR ['57', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Subnetwork Address"']]
+ ['38' PID_DEVICE_DEVICE_ADDR ['58', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '"Device Address"']]
+ ['39' PID_DEVICE_PB_CONFIG ['59', 'OT_DEVICE', 'PDT_GENERIC_04', '"Config Link"']]
+ ['40' PID_DEVICE_ADDR_REPORT ['60', 'OT_DEVICE', 'PDT_GENERIC_06', '""']]
+ ['41' PID_DEVICE_ADDR_CHECK ['61', 'OT_DEVICE', 'PDT_GENERIC_01', '""']]
+ ['42' PID_DEVICE_OBJECT_VALUE ['62', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+ ['43' PID_DEVICE_OBJECTLINK ['63', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+ ['44' PID_DEVICE_APPLICATION ['64', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+ ['45' PID_DEVICE_PARAMETER ['65', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+ ['46' PID_DEVICE_OBJECTADDRESS ['66', 'OT_DEVICE', 'PDT_FUNCTION', '""']]
+ ['47' PID_DEVICE_PSU_TYPE ['67', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+ ['48' PID_DEVICE_PSU_STATUS ['68', 'OT_DEVICE', 'PDT_BINARY_INFORMATION', '""']]
+ ['49' PID_DEVICE_PSU_ENABLE ['69', 'OT_DEVICE', 'PDT_ENUM8', '""']]
+ ['50' PID_DEVICE_DOMAIN_ADDRESS ['70', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '"Domain Address"']]
+ ['51' PID_DEVICE_IO_LIST ['71', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+ ['52' PID_DEVICE_MGT_DESCRIPTOR_01 ['72', 'OT_DEVICE', 'PDT_GENERIC_10', '"Management Descriptor 1"']]
+ ['53' PID_DEVICE_PL110_PARAM ['73', 'OT_DEVICE', 'PDT_GENERIC_01', '"PL110 Parameters"']]
+ ['54' PID_DEVICE_RF_REPEAT_COUNTER ['74', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+ ['55' PID_DEVICE_RECEIVE_BLOCK_TABLE ['75', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+ ['56' PID_DEVICE_RANDOM_PAUSE_TABLE ['76', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+ ['57' PID_DEVICE_RECEIVE_BLOCK_NR ['77', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+ ['58' PID_DEVICE_HARDWARE_TYPE ['78', 'OT_DEVICE', 'PDT_GENERIC_06', '"Hardware Type"']]
+ ['59' PID_DEVICE_RETRANSMITTER_NUMBER ['79', 'OT_DEVICE', 'PDT_UNSIGNED_CHAR', '""']]
+ ['60' PID_DEVICE_SERIAL_NR_TABLE ['80', 'OT_DEVICE', 'PDT_GENERIC_06', '""']]
+ ['61' PID_DEVICE_BIBATMASTER_ADDRESS ['81', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+ ['62' PID_DEVICE_RF_DOMAIN_ADDRESS ['82', 'OT_DEVICE', 'PDT_GENERIC_06', '"RF Domain Address"']]
+ ['63' PID_DEVICE_DEVICE_DESCRIPTOR ['83', 'OT_DEVICE', 'PDT_GENERIC_02', '""']]
+ ['64' PID_DEVICE_METERING_FILTER_TABLE ['84', 'OT_DEVICE', 'PDT_GENERIC_08', '""']]
+ ['65' PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_TIME_BASE ['85', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+ ['66' PID_DEVICE_GROUP_TELEGR_RATE_LIMIT_NO_OF_TELEGR ['86', 'OT_DEVICE', 'PDT_UNSIGNED_INT', '""']]
+ ['67' PID_GROUP_OBJECT_TABLE_GRPOBJTABLE ['51', 'OT_GROUP_OBJECT_TABLE', 'PDT_GENERIC_06', '""']]
+ ['68' PID_GROUP_OBJECT_TABLE_EXT_GRPOBJREFERENCE ['52', 'OT_GROUP_OBJECT_TABLE', 'PDT_GENERIC_08', '""']]
+ ['69' PID_ROUTER_LINE_STATUS ['51', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+ ['70' PID_ROUTER_MAIN_LCCONFIG ['52', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+ ['71' PID_ROUTER_SUB_LCCONFIG ['53', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+ ['72' PID_ROUTER_MAIN_LCGRPCONFIG ['54', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+ ['73' PID_ROUTER_SUB_LCGRPCONFIG ['55', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+ ['74' PID_ROUTER_ROUTETABLE_CONTROL ['56', 'OT_ROUTER', 'PDT_FUNCTION', '""']]
+ ['75' PID_ROUTER_COUPL_SERV_CONTROL ['57', 'OT_ROUTER', 'PDT_GENERIC_01', '""']]
+ ['76' PID_ROUTER_MAX_ROUTER_APDU_LENGTH ['58', 'OT_ROUTER', 'PDT_UNSIGNED_INT', '""']]
+ ['77' PID_ROUTER_MEDIUM ['63', 'OT_ROUTER', 'PDT_ENUM8', '""']]
+ ['78' PID_ROUTER_FILTER_TABLE_USE ['67', 'OT_ROUTER', 'PDT_BINARY_INFORMATION', '""']]
+ ['79' PID_ROUTER_RF_ENABLE_SBC ['112', 'OT_ROUTER', 'PDT_FUNCTION', '""']]
+ ['80' PID_KNXIP_PARAMETER_PROJECT_INSTALLATION_ID ['51', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '"Project Installation Identification"']]
+ ['81' PID_KNXIP_PARAMETER_KNX_INDIVIDUAL_ADDRESS ['52', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '"KNX Individual Address"']]
+ ['82' PID_KNXIP_PARAMETER_ADDITIONAL_INDIVIDUAL_ADDRESSES ['53', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '"Additional Individual Addresses"']]
+ ['83' PID_KNXIP_PARAMETER_CURRENT_IP_ASSIGNMENT_METHOD ['54', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+ ['84' PID_KNXIP_PARAMETER_IP_ASSIGNMENT_METHOD ['55', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+ ['85' PID_KNXIP_PARAMETER_IP_CAPABILITIES ['56', 'OT_KNXIP_PARAMETER', 'PDT_BITSET8', '""']]
+ ['86' PID_KNXIP_PARAMETER_CURRENT_IP_ADDRESS ['57', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['87' PID_KNXIP_PARAMETER_CURRENT_SUBNET_MASK ['58', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['88' PID_KNXIP_PARAMETER_CURRENT_DEFAULT_GATEWAY ['59', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['89' PID_KNXIP_PARAMETER_IP_ADDRESS ['60', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['90' PID_KNXIP_PARAMETER_SUBNET_MASK ['61', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['91' PID_KNXIP_PARAMETER_DEFAULT_GATEWAY ['62', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['92' PID_KNXIP_PARAMETER_DHCP_BOOTP_SERVER ['63', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['93' PID_KNXIP_PARAMETER_MAC_ADDRESS ['64', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_06', '""']]
+ ['94' PID_KNXIP_PARAMETER_SYSTEM_SETUP_MULTICAST_ADDRESS ['65', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['95' PID_KNXIP_PARAMETER_ROUTING_MULTICAST_ADDRESS ['66', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['96' PID_KNXIP_PARAMETER_TTL ['67', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+ ['97' PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_CAPABILITIES ['68', 'OT_KNXIP_PARAMETER', 'PDT_BITSET16', '""']]
+ ['98' PID_KNXIP_PARAMETER_KNXNETIP_DEVICE_STATE ['69', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+ ['99' PID_KNXIP_PARAMETER_KNXNETIP_ROUTING_CAPABILITIES ['70', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+ ['100' PID_KNXIP_PARAMETER_PRIORITY_FIFO_ENABLED ['71', 'OT_KNXIP_PARAMETER', 'PDT_BINARY_INFORMATION', '""']]
+ ['101' PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_IP ['72', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '""']]
+ ['102' PID_KNXIP_PARAMETER_QUEUE_OVERFLOW_TO_KNX ['73', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '""']]
+ ['103' PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_IP ['74', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['104' PID_KNXIP_PARAMETER_MSG_TRANSMIT_TO_KNX ['75', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_LONG', '""']]
+ ['105' PID_KNXIP_PARAMETER_FRIENDLY_NAME ['76', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_CHAR', '""']]
+ ['106' PID_KNXIP_PARAMETER_BACKBONE_KEY ['91', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_16', '""']]
+ ['107' PID_KNXIP_PARAMETER_DEVICE_AUTHENTICATION_CODE ['92', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_16', '""']]
+ ['108' PID_KNXIP_PARAMETER_PASSWORD_HASHES ['93', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_16', '""']]
+ ['109' PID_KNXIP_PARAMETER_SECURED_SERVICE_FAMILIES ['94', 'OT_KNXIP_PARAMETER', 'PDT_FUNCTION', '""']]
+ ['110' PID_KNXIP_PARAMETER_MULTICAST_LATENCY_TOLERANCE ['95', 'OT_KNXIP_PARAMETER', 'PDT_UNSIGNED_INT', '""']]
+ ['111' PID_KNXIP_PARAMETER_SYNC_LATENCY_FRACTION ['96', 'OT_KNXIP_PARAMETER', 'PDT_SCALING', '""']]
+ ['112' PID_KNXIP_PARAMETER_TUNNELLING_USERS ['97', 'OT_KNXIP_PARAMETER', 'PDT_GENERIC_02', '""']]
+ ['113' PID_SECURITY_SECURITY_MODE ['51', 'OT_SECURITY', 'PDT_FUNCTION', '""']]
+ ['114' PID_SECURITY_P2P_KEY_TABLE ['52', 'OT_SECURITY', 'PDT_GENERIC_18', '""']]
+ ['115' PID_SECURITY_GRP_KEY_TABLE ['53', 'OT_SECURITY', 'PDT_GENERIC_18', '""']]
+ ['116' PID_SECURITY_SECURITY_INDIVIDUAL_ADDRESS_TABLE ['54', 'OT_SECURITY', 'PDT_GENERIC_08', '""']]
+ ['117' PID_SECURITY_SECURITY_FAILURES_LOG ['55', 'OT_SECURITY', 'PDT_FUNCTION', '""']]
+ ['118' PID_SECURITY_SKI_TOOL ['56', 'OT_SECURITY', 'PDT_GENERIC_16', '""']]
+ ['119' PID_SECURITY_SECURITY_REPORT ['57', 'OT_SECURITY', 'PDT_BITSET8', '""']]
+ ['120' PID_SECURITY_SECURITY_REPORT_CONTROL ['58', 'OT_SECURITY', 'PDT_BINARY_INFORMATION', '""']]
+ ['121' PID_SECURITY_SEQUENCE_NUMBER_SENDING ['59', 'OT_SECURITY', 'PDT_GENERIC_06', '""']]
+ ['122' PID_SECURITY_ZONE_KEYS_TABLE ['60', 'OT_SECURITY', 'PDT_GENERIC_19', '""']]
+ ['123' PID_SECURITY_GO_SECURITY_FLAGS ['61', 'OT_SECURITY', 'PDT_GENERIC_01', '""']]
+ ['124' PID_RF_MEDIUM_RF_MULTI_TYPE ['51', 'OT_RF_MEDIUM', 'PDT_GENERIC_01', '""']]
+ ['125' PID_RF_MEDIUM_RF_DOMAIN_ADDRESS ['56', 'OT_RF_MEDIUM', 'PDT_GENERIC_06', '""']]
+ ['126' PID_RF_MEDIUM_RF_RETRANSMITTER ['57', 'OT_RF_MEDIUM', 'PDT_BINARY_INFORMATION', '""']]
+ ['127' PID_RF_MEDIUM_SECURITY_REPORT_CONTROL ['58', 'OT_RF_MEDIUM', 'PDT_BINARY_INFORMATION', '""']]
+ ['128' PID_RF_MEDIUM_RF_FILTERING_MODE_SELECT ['59', 'OT_RF_MEDIUM', 'PDT_BITSET8', '""']]
+ ['129' PID_RF_MEDIUM_RF_BIDIR_TIMEOUT ['60', 'OT_RF_MEDIUM', 'PDT_FUNCTION', '""']]
+ ['130' PID_RF_MEDIUM_RF_DIAG_SA_FILTER_TABLE ['61', 'OT_RF_MEDIUM', 'PDT_GENERIC_03', '""']]
+ ['131' PID_RF_MEDIUM_RF_DIAG_QUALITY_TABLE ['62', 'OT_RF_MEDIUM', 'PDT_GENERIC_04', '""']]
+ ['132' PID_RF_MEDIUM_RF_DIAG_PROBE ['63', 'OT_RF_MEDIUM', 'PDT_FUNCTION', '""']]
+ ['133' PID_INDOOR_BRIGHTNESS_SENSOR_CHANGE_OF_VALUE ['110', 'OT_INDOOR_BRIGHTNESS_SENSOR', 'PDT_UNKNOWN', '""']]
+ ['134' PID_INDOOR_BRIGHTNESS_SENSOR_REPETITION_TIME ['111', 'OT_INDOOR_BRIGHTNESS_SENSOR', 'PDT_UNKNOWN', '""']]
+ ['135' PID_INDOOR_LUMINANCE_SENSOR_CHANGE_OF_VALUE ['110', 'OT_INDOOR_LUMINANCE_SENSOR', 'PDT_UNKNOWN', '""']]
+ ['136' PID_INDOOR_LUMINANCE_SENSOR_REPETITION_TIME ['111', 'OT_INDOOR_LUMINANCE_SENSOR', 'PDT_UNKNOWN', '""']]
+ ['137' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_ON_DELAY ['101', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['138' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_OFF_DELAY ['102', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['139' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_DURATION ['103', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['140' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_PREWARNING_DURATION ['104', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['141' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME ['105', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['142' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY ['106', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['143' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING ['107', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['144' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING ['108', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['145' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP ['109', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['146' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN ['110', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['147' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_OUTPUT_STATE ['111', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['148' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION ['112', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['149' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE ['113', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['150' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE ['114', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['151' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_LOCK_STATE ['115', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['152' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_UNLOCK_STATE ['116', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['153' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STATE_FOR_SCENE_NUMBER ['117', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['154' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE ['118', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['155' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BUS_POWER_UP_STATE ['119', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['156' PID_LIGHT_SWITCHING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_2 ['120', 'OT_LIGHT_SWITCHING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['157' PID_DIMMING_ACTUATOR_BASIC_ON_DELAY ['101', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['158' PID_DIMMING_ACTUATOR_BASIC_OFF_DELAY ['102', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['159' PID_DIMMING_ACTUATOR_BASIC_SWITCH_OFF_BRIGHTNESS_DELAY_TIME ['103', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['160' PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_DURATION ['104', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['161' PID_DIMMING_ACTUATOR_BASIC_PREWARNING_DURATION ['105', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['162' PID_DIMMING_ACTUATOR_BASIC_TRANSMISSION_CYCLE_TIME ['106', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['163' PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_UP_MESSAGE_DELAY ['107', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['164' PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED ['108', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['165' PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME ['109', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['166' PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_ON_SET_VALUE ['110', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['167' PID_DIMMING_ACTUATOR_BASIC_DIMMING_SPEED_FOR_SWITCH_OFF ['111', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['168' PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_ON_SET_VALUE ['112', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['169' PID_DIMMING_ACTUATOR_BASIC_DIMMING_STEP_TIME_FOR_SWITCH_OFF ['113', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['170' PID_DIMMING_ACTUATOR_BASIC_SWITCFH_OFF_BRIGHTNESS ['114', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['171' PID_DIMMING_ACTUATOR_BASIC_MINIMUM_SET_VALUE ['115', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['172' PID_DIMMING_ACTUATOR_BASIC_MAXIMUM_SET_VALUE ['116', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['173' PID_DIMMING_ACTUATOR_BASIC_SWITCH_ON_SET_VALUE ['117', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['174' PID_DIMMING_ACTUATOR_BASIC_DIMM_MODE_SELECTION ['118', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['175' PID_DIMMING_ACTUATOR_BASIC_RELATIV_OFF_ENABLE ['119', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['176' PID_DIMMING_ACTUATOR_BASIC_MEMORY_FUNCTION ['120', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['177' PID_DIMMING_ACTUATOR_BASIC_TIMED_ON_RETRIGGER_FUNCTION ['121', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['178' PID_DIMMING_ACTUATOR_BASIC_MANUAL_OFF_ENABLE ['122', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['179' PID_DIMMING_ACTUATOR_BASIC_INVERT_LOCK_DEVICE ['123', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['180' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_LOCKING ['124', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['181' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_AT_UNLOCKING ['125', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['182' PID_DIMMING_ACTUATOR_BASIC_LOCK_SETVALUE ['126', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['183' PID_DIMMING_ACTUATOR_BASIC_UNLOCK_SETVALUE ['127', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['184' PID_DIMMING_ACTUATOR_BASIC_BIGHTNESS_FOR_SCENE ['128', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['185' PID_DIMMING_ACTUATOR_BASIC_STORAGE_FUNCTION_FOR_SCENE ['129', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['186' PID_DIMMING_ACTUATOR_BASIC_DELTA_DIMMING_VALUE ['130', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['187' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP ['131', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['188' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_UP_SET_VALUE ['132', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['189' PID_DIMMING_ACTUATOR_BASIC_BEHAVIOUR_BUS_POWER_DOWN ['133', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['190' PID_DIMMING_ACTUATOR_BASIC_BUS_POWER_DOWN_SET_VALUE ['134', 'OT_DIMMING_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['191' PID_DIMMING_SENSOR_BASIC_ON_OFF_ACTION ['51', 'OT_DIMMING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['192' PID_DIMMING_SENSOR_BASIC_ENABLE_TOGGLE_MODE ['52', 'OT_DIMMING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['193' PID_DIMMING_SENSOR_BASIC_ABSOLUTE_SETVALUE ['53', 'OT_DIMMING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['194' PID_SWITCHING_SENSOR_BASIC_ON_OFF_ACTION ['51', 'OT_SWITCHING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['195' PID_SWITCHING_SENSOR_BASIC_ENABLE_TOGGLE_MODE ['52', 'OT_SWITCHING_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['196' PID_SUNBLIND_ACTUATOR_BASIC_REVERSION_PAUSE_TIME ['51', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['197' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_UP_DOWN_TIME ['52', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['198' PID_SUNBLIND_ACTUATOR_BASIC_SLAT_STEP_TIME ['53', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['199' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_PRESET_POSITION_TIME ['54', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['200' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_IN_PERCENT ['55', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['201' PID_SUNBLIND_ACTUATOR_BASIC_MOVE_TO_PRESET_POSITION_LENGTH ['57', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['202' PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_PERCENT ['58', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['203' PID_SUNBLIND_ACTUATOR_BASIC_PRESET_SLAT_POSITION_ANGLE ['60', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['204' PID_SUNBLIND_ACTUATOR_BASIC_REACTION_WIND_ALARM ['61', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['205' PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_WIND_ALARM ['62', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['206' PID_SUNBLIND_ACTUATOR_BASIC_REACTION_ON_RAIN_ALARM ['63', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['207' PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_RAIN_ALARM ['64', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['208' PID_SUNBLIND_ACTUATOR_BASIC_REACTION_FROST_ALARM ['65', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['209' PID_SUNBLIND_ACTUATOR_BASIC_HEARTBEAT_FROST_ALARM ['66', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['210' PID_SUNBLIND_ACTUATOR_BASIC_MAX_SLAT_MOVE_TIME ['67', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['211' PID_SUNBLIND_ACTUATOR_BASIC_ENABLE_BLINDS_MODE ['68', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['212' PID_SUNBLIND_ACTUATOR_BASIC_STORAGE_FUNCTIONS_FOR_SCENE ['69', 'OT_SUNBLIND_ACTUATOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['213' PID_SUNBLIND_SENSOR_BASIC_ENABLE_BLINDS_MODE ['51', 'OT_SUNBLIND_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['214' PID_SUNBLIND_SENSOR_BASIC_UP_DOWN_ACTION ['52', 'OT_SUNBLIND_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+ ['215' PID_SUNBLIND_SENSOR_BASIC_ENABLE_TOGGLE_MODE ['53', 'OT_SUNBLIND_SENSOR_BASIC', 'PDT_UNKNOWN', '""']]
+
+]
+
+[enum uint 8 KnxPropertyDataType(uint 8 number, uint 8 sizeInBytes, string 8 name)
+ ['0' PDT_UNKNOWN ['0', '0', '"Unknown Property Data Type"']]
+ ['1' PDT_CONTROL ['0', '10', '"PDT_CONTROL"']]
+ ['2' PDT_CHAR ['1', '1', '"PDT_CHAR"']]
+ ['3' PDT_UNSIGNED_CHAR ['2', '1', '"PDT_UNSIGNED_CHAR"']]
+ ['4' PDT_INT ['3', '2', '"PDT_INT"']]
+ ['5' PDT_UNSIGNED_INT ['4', '2', '"PDT_UNSIGNED_INT"']]
+ ['6' PDT_KNX_FLOAT ['5', '2', '"PDT_KNX_FLOAT"']]
+ ['7' PDT_DATE ['6', '3', '"PDT_DATE"']]
+ ['8' PDT_TIME ['7', '3', '"PDT_TIME"']]
+ ['9' PDT_LONG ['8', '4', '"PDT_LONG"']]
+ ['10' PDT_UNSIGNED_LONG ['9', '4', '"PDT_UNSIGNED_LONG"']]
+ ['11' PDT_FLOAT ['10', '4', '"PDT_FLOAT"']]
+ ['12' PDT_DOUBLE ['11', '8', '"PDT_DOUBLE"']]
+ ['13' PDT_CHAR_BLOCK ['12', '10', '"PDT_CHAR_BLOCK"']]
+ ['14' PDT_POLL_GROUP_SETTINGS ['13', '3', '"PDT_POLL_GROUP_SETTINGS"']]
+ ['15' PDT_SHORT_CHAR_BLOCK ['14', '5', '"PDT_SHORT_CHAR_BLOCK"']]
+ ['16' PDT_DATE_TIME ['15', '8', '"PDT_DATE_TIME"']]
+ ['17' PDT_VARIABLE_LENGTH ['16', '0', '"PDT_VARIABLE_LENGTH"']]
+ ['18' PDT_GENERIC_01 ['17', '1', '"PDT_GENERIC_01"']]
+ ['19' PDT_GENERIC_02 ['18', '2', '"PDT_GENERIC_02"']]
+ ['20' PDT_GENERIC_03 ['19', '3', '"PDT_GENERIC_03"']]
+ ['21' PDT_GENERIC_04 ['20', '4', '"PDT_GENERIC_04"']]
+ ['22' PDT_GENERIC_05 ['21', '5', '"PDT_GENERIC_05"']]
+ ['23' PDT_GENERIC_06 ['22', '6', '"PDT_GENERIC_06"']]
+ ['24' PDT_GENERIC_07 ['23', '7', '"PDT_GENERIC_07"']]
+ ['25' PDT_GENERIC_08 ['24', '8', '"PDT_GENERIC_08"']]
+ ['26' PDT_GENERIC_09 ['25', '9', '"PDT_GENERIC_09"']]
+ ['27' PDT_GENERIC_10 ['26', '10', '"PDT_GENERIC_10"']]
+ ['28' PDT_GENERIC_11 ['27', '11', '"PDT_GENERIC_11"']]
+ ['29' PDT_GENERIC_12 ['28', '12', '"PDT_GENERIC_12"']]
+ ['30' PDT_GENERIC_13 ['29', '13', '"PDT_GENERIC_13"']]
+ ['31' PDT_GENERIC_14 ['30', '14', '"PDT_GENERIC_14"']]
+ ['32' PDT_GENERIC_15 ['31', '15', '"PDT_GENERIC_15"']]
+ ['33' PDT_GENERIC_16 ['32', '16', '"PDT_GENERIC_16"']]
+ ['34' PDT_GENERIC_17 ['33', '17', '"PDT_GENERIC_17"']]
+ ['35' PDT_GENERIC_18 ['34', '18', '"PDT_GENERIC_18"']]
+ ['36' PDT_GENERIC_19 ['35', '19', '"PDT_GENERIC_19"']]
+ ['37' PDT_GENERIC_20 ['36', '20', '"PDT_GENERIC_20"']]
+ ['38' PDT_UTF_8 ['47', '0', '"PDT_UTF-8"']]
+ ['39' PDT_VERSION ['48', '2', '"PDT_VERSION"']]
+ ['40' PDT_ALARM_INFO ['49', '6', '"PDT_ALARM_INFO"']]
+ ['41' PDT_BINARY_INFORMATION ['50', '1', '"PDT_BINARY_INFORMATION"']]
+ ['42' PDT_BITSET8 ['51', '1', '"PDT_BITSET8"']]
+ ['43' PDT_BITSET16 ['52', '2', '"PDT_BITSET16"']]
+ ['44' PDT_ENUM8 ['53', '1', '"PDT_ENUM8"']]
+ ['45' PDT_SCALING ['54', '1', '"PDT_SCALING"']]
+ ['46' PDT_NE_VL ['60', '0', '"PDT_NE_VL"']]
+ ['47' PDT_NE_FL ['61', '0', '"PDT_NE_FL"']]
+ ['48' PDT_FUNCTION ['62', '0', '"PDT_FUNCTION"']]
+ ['49' PDT_ESCAPE ['63', '0', '"PDT_ESCAPE"']]
+
+]
+
+[enum uint 16 KnxManufacturer(uint 16 number, string 8 name)
+ ['0' M_UNKNOWN ['0', '"Unknown Manufacturer"']]
+ ['1' M_SIEMENS ['1', '"Siemens"']]
+ ['2' M_ABB ['2', '"ABB"']]
+ ['3' M_ALBRECHT_JUNG ['4', '"Albrecht Jung"']]
+ ['4' M_BTICINO ['5', '"Bticino"']]
+ ['5' M_BERKER ['6', '"Berker"']]
+ ['6' M_BUSCH_JAEGER_ELEKTRO ['7', '"Busch-Jaeger Elektro"']]
+ ['7' M_GIRA_GIERSIEPEN ['8', '"GIRA Giersiepen"']]
+ ['8' M_HAGER_ELECTRO ['9', '"Hager Electro"']]
+ ['9' M_INSTA_GMBH ['10', '"Insta GmbH"']]
+ ['10' M_LEGRAND_APPAREILLAGE_ELECTRIQUE ['11', '"LEGRAND Appareillage électrique"']]
+ ['11' M_MERTEN ['12', '"Merten"']]
+ ['12' M_ABB_SPA_SACE_DIVISION ['14', '"ABB SpA-SACE Division"']]
+ ['13' M_SIEDLE_AND_SOEHNE ['22', '"Siedle & Söhne"']]
+ ['14' M_EBERLE ['24', '"Eberle"']]
+ ['15' M_GEWISS ['25', '"GEWISS"']]
+ ['16' M_ALBERT_ACKERMANN ['27', '"Albert Ackermann"']]
+ ['17' M_SCHUPA_GMBH ['28', '"Schupa GmbH"']]
+ ['18' M_ABB_SCHWEIZ ['29', '"ABB SCHWEIZ"']]
+ ['19' M_FELLER ['30', '"Feller"']]
+ ['20' M_GLAMOX_AS ['31', '"Glamox AS"']]
+ ['21' M_DEHN_AND_SOEHNE ['32', '"DEHN & SÖHNE"']]
+ ['22' M_CRABTREE ['33', '"CRABTREE"']]
+ ['23' M_EVOKNX ['34', '"eVoKNX"']]
+ ['24' M_PAUL_HOCHKOEPPER ['36', '"Paul Hochköpper"']]
+ ['25' M_ALTENBURGER_ELECTRONIC ['37', '"Altenburger Electronic"']]
+ ['26' M_GRAESSLIN ['41', '"Grässlin"']]
+ ['27' M_SIMON_42 ['42', '"Simon"']]
+ ['28' M_VIMAR ['44', '"VIMAR"']]
+ ['29' M_MOELLER_GEBAEUDEAUTOMATION_KG ['45', '"Moeller Gebäudeautomation KG"']]
+ ['30' M_ELTAKO ['46', '"Eltako"']]
+ ['31' M_BOSCH_SIEMENS_HAUSHALTSGERAETE ['49', '"Bosch-Siemens Haushaltsgeräte"']]
+ ['32' M_RITTO_GMBHANDCO_KG ['52', '"RITTO GmbH&Co.KG"']]
+ ['33' M_POWER_CONTROLS ['53', '"Power Controls"']]
+ ['34' M_ZUMTOBEL ['55', '"ZUMTOBEL"']]
+ ['35' M_HOLEC_SYSTEMEN ['56', '"HOLEC Systemen"']]
+ ['36' M_PHOENIX_CONTACT ['57', '"Phoenix Contact"']]
+ ['37' M_WAGO_KONTAKTTECHNIK ['61', '"WAGO Kontakttechnik"']]
+ ['38' M_KNXPRESSO ['62', '"knXpresso"']]
+ ['39' M_WIELAND_ELECTRIC ['66', '"Wieland Electric"']]
+ ['40' M_HERMANN_KLEINHUIS ['67', '"Hermann Kleinhuis"']]
+ ['41' M_STIEBEL_ELTRON ['69', '"Stiebel Eltron"']]
+ ['42' M_TEHALIT ['71', '"Tehalit"']]
+ ['43' M_THEBEN_AG ['72', '"Theben AG"']]
+ ['44' M_WILHELM_RUTENBECK ['73', '"Wilhelm Rutenbeck"']]
+ ['45' M_WINKHAUS ['75', '"Winkhaus"']]
+ ['46' M_ROBERT_BOSCH ['76', '"Robert Bosch"']]
+ ['47' M_SOMFY ['78', '"Somfy"']]
+ ['48' M_WOERTZ ['80', '"Woertz"']]
+ ['49' M_VIESSMANN_WERKE ['81', '"Viessmann Werke"']]
+ ['50' M_IMI_HYDRONIC_ENGINEERING ['82', '"IMI Hydronic Engineering"']]
+ ['51' M_JOH__VAILLANT ['83', '"Joh. Vaillant"']]
+ ['52' M_AMP_DEUTSCHLAND ['85', '"AMP Deutschland"']]
+ ['53' M_BOSCH_THERMOTECHNIK_GMBH ['89', '"Bosch Thermotechnik GmbH"']]
+ ['54' M_SEF___ECOTEC ['90', '"SEF - ECOTEC"']]
+ ['55' M_DORMA_GMBH_Plus_CO__KG ['92', '"DORMA GmbH + Co. KG"']]
+ ['56' M_WINDOWMASTER_AS ['93', '"WindowMaster A/S"']]
+ ['57' M_WALTHER_WERKE ['94', '"Walther Werke"']]
+ ['58' M_ORAS ['95', '"ORAS"']]
+ ['59' M_DAETWYLER ['97', '"Dätwyler"']]
+ ['60' M_ELECTRAK ['98', '"Electrak"']]
+ ['61' M_TECHEM ['99', '"Techem"']]
+ ['62' M_SCHNEIDER_ELECTRIC_INDUSTRIES_SAS ['100', '"Schneider Electric Industries SAS"']]
+ ['63' M_WHD_WILHELM_HUBER_Plus_SOEHNE ['101', '"WHD Wilhelm Huber + Söhne"']]
+ ['64' M_BISCHOFF_ELEKTRONIK ['102', '"Bischoff Elektronik"']]
+ ['65' M_JEPAZ ['104', '"JEPAZ"']]
+ ['66' M_RTS_AUTOMATION ['105', '"RTS Automation"']]
+ ['67' M_EIBMARKT_GMBH ['106', '"EIBMARKT GmbH"']]
+ ['68' M_WAREMA_RENKHOFF_SE ['107', '"WAREMA Renkhoff SE"']]
+ ['69' M_EELECTRON ['108', '"Eelectron"']]
+ ['70' M_BELDEN_WIRE_AND_CABLE_B_V_ ['109', '"Belden Wire & Cable B.V."']]
+ ['71' M_BECKER_ANTRIEBE_GMBH ['110', '"Becker-Antriebe GmbH"']]
+ ['72' M_J_STEHLEPlusSOEHNE_GMBH ['111', '"J.Stehle+Söhne GmbH"']]
+ ['73' M_AGFEO ['112', '"AGFEO"']]
+ ['74' M_ZENNIO ['113', '"Zennio"']]
+ ['75' M_TAPKO_TECHNOLOGIES ['114', '"TAPKO Technologies"']]
+ ['76' M_HDL ['115', '"HDL"']]
+ ['77' M_UPONOR ['116', '"Uponor"']]
+ ['78' M_SE_LIGHTMANAGEMENT_AG ['117', '"se Lightmanagement AG"']]
+ ['79' M_ARCUS_EDS ['118', '"Arcus-eds"']]
+ ['80' M_INTESIS ['119', '"Intesis"']]
+ ['81' M_HERHOLDT_CONTROLS_SRL ['120', '"Herholdt Controls srl"']]
+ ['82' M_NIKO_ZUBLIN ['121', '"Niko-Zublin"']]
+ ['83' M_DURABLE_TECHNOLOGIES ['122', '"Durable Technologies"']]
+ ['84' M_INNOTEAM ['123', '"Innoteam"']]
+ ['85' M_ISE_GMBH ['124', '"ise GmbH"']]
+ ['86' M_TEAM_FOR_TRONICS ['125', '"TEAM FOR TRONICS"']]
+ ['87' M_CIAT ['126', '"CIAT"']]
+ ['88' M_REMEHA_BV ['127', '"Remeha BV"']]
+ ['89' M_ESYLUX ['128', '"ESYLUX"']]
+ ['90' M_BASALTE ['129', '"BASALTE"']]
+ ['91' M_VESTAMATIC ['130', '"Vestamatic"']]
+ ['92' M_MDT_TECHNOLOGIES ['131', '"MDT technologies"']]
+ ['93' M_WARENDORFER_KUECHEN_GMBH ['132', '"Warendorfer Küchen GmbH"']]
+ ['94' M_VIDEO_STAR ['133', '"Video-Star"']]
+ ['95' M_SITEK ['134', '"Sitek"']]
+ ['96' M_CONTROLTRONIC ['135', '"CONTROLtronic"']]
+ ['97' M_FUNCTION_TECHNOLOGY ['136', '"function Technology"']]
+ ['98' M_AMX ['137', '"AMX"']]
+ ['99' M_ELDAT ['138', '"ELDAT"']]
+ ['100' M_PANASONIC ['139', '"Panasonic"']]
+ ['101' M_PULSE_TECHNOLOGIES ['140', '"Pulse Technologies"']]
+ ['102' M_CRESTRON ['141', '"Crestron"']]
+ ['103' M_STEINEL_PROFESSIONAL ['142', '"STEINEL professional"']]
+ ['104' M_BILTON_LED_LIGHTING ['143', '"BILTON LED Lighting"']]
+ ['105' M_DENRO_AG ['144', '"denro AG"']]
+ ['106' M_GEPRO ['145', '"GePro"']]
+ ['107' M_PREUSSEN_AUTOMATION ['146', '"preussen automation"']]
+ ['108' M_ZOPPAS_INDUSTRIES ['147', '"Zoppas Industries"']]
+ ['109' M_MACTECH ['148', '"MACTECH"']]
+ ['110' M_TECHNO_TREND ['149', '"TECHNO-TREND"']]
+ ['111' M_FS_CABLES ['150', '"FS Cables"']]
+ ['112' M_DELTA_DORE ['151', '"Delta Dore"']]
+ ['113' M_EISSOUND ['152', '"Eissound"']]
+ ['114' M_CISCO ['153', '"Cisco"']]
+ ['115' M_DINUY ['154', '"Dinuy"']]
+ ['116' M_IKNIX ['155', '"iKNiX"']]
+ ['117' M_RADEMACHER_GERAETE_ELEKTRONIK_GMBH ['156', '"Rademacher Geräte-Elektronik GmbH"']]
+ ['118' M_EGI_ELECTROACUSTICA_GENERAL_IBERICA ['157', '"EGi Electroacustica General Iberica"']]
+ ['119' M_BES___INGENIUM ['158', '"Bes – Ingenium"']]
+ ['120' M_ELABNET ['159', '"ElabNET"']]
+ ['121' M_BLUMOTIX ['160', '"Blumotix"']]
+ ['122' M_HUNTER_DOUGLAS ['161', '"Hunter Douglas"']]
+ ['123' M_APRICUM ['162', '"APRICUM"']]
+ ['124' M_TIANSU_AUTOMATION ['163', '"TIANSU Automation"']]
+ ['125' M_BUBENDORFF ['164', '"Bubendorff"']]
+ ['126' M_MBS_GMBH ['165', '"MBS GmbH"']]
+ ['127' M_ENERTEX_BAYERN_GMBH ['166', '"Enertex Bayern GmbH"']]
+ ['128' M_BMS ['167', '"BMS"']]
+ ['129' M_SINAPSI ['168', '"Sinapsi"']]
+ ['130' M_EMBEDDED_SYSTEMS_SIA ['169', '"Embedded Systems SIA"']]
+ ['131' M_KNX1 ['170', '"KNX1"']]
+ ['132' M_TOKKA ['171', '"Tokka"']]
+ ['133' M_NANOSENSE ['172', '"NanoSense"']]
+ ['134' M_PEAR_AUTOMATION_GMBH ['173', '"PEAR Automation GmbH"']]
+ ['135' M_DGA ['174', '"DGA"']]
+ ['136' M_LUTRON ['175', '"Lutron"']]
+ ['137' M_AIRZONE___ALTRA ['176', '"AIRZONE – ALTRA"']]
+ ['138' M_LITHOSS_DESIGN_SWITCHES ['177', '"Lithoss Design Switches"']]
+ ['139' M_THREEATEL ['178', '"3ATEL"']]
+ ['140' M_PHILIPS_CONTROLS ['179', '"Philips Controls"']]
+ ['141' M_VELUX_AS ['180', '"VELUX A/S"']]
+ ['142' M_LOYTEC ['181', '"LOYTEC"']]
+ ['143' M_EKINEX_S_P_A_ ['182', '"Ekinex S.p.A."']]
+ ['144' M_SIRLAN_TECHNOLOGIES ['183', '"SIRLAN Technologies"']]
+ ['145' M_PROKNX_SAS ['184', '"ProKNX SAS"']]
+ ['146' M_IT_GMBH ['185', '"IT GmbH"']]
+ ['147' M_RENSON ['186', '"RENSON"']]
+ ['148' M_HEP_GROUP ['187', '"HEP Group"']]
+ ['149' M_BALMART ['188', '"Balmart"']]
+ ['150' M_GFS_GMBH ['189', '"GFS GmbH"']]
+ ['151' M_SCHENKER_STOREN_AG ['190', '"Schenker Storen AG"']]
+ ['152' M_ALGODUE_ELETTRONICA_S_R_L_ ['191', '"Algodue Elettronica S.r.L."']]
+ ['153' M_ABB_FRANCE ['192', '"ABB France"']]
+ ['154' M_MAINTRONIC ['193', '"maintronic"']]
+ ['155' M_VANTAGE ['194', '"Vantage"']]
+ ['156' M_FORESIS ['195', '"Foresis"']]
+ ['157' M_RESEARCH_AND_PRODUCTION_ASSOCIATION_SEM ['196', '"Research & Production Association SEM"']]
+ ['158' M_WEINZIERL_ENGINEERING_GMBH ['197', '"Weinzierl Engineering GmbH"']]
+ ['159' M_MOEHLENHOFF_WAERMETECHNIK_GMBH ['198', '"Möhlenhoff Wärmetechnik GmbH"']]
+ ['160' M_PKC_GROUP_OYJ ['199', '"PKC-GROUP Oyj"']]
+ ['161' M_B_E_G_ ['200', '"B.E.G."']]
+ ['162' M_ELSNER_ELEKTRONIK_GMBH ['201', '"Elsner Elektronik GmbH"']]
+ ['163' M_SIEMENS_BUILDING_TECHNOLOGIES_HKCHINA_LTD_ ['202', '"Siemens Building Technologies (HK/China) Ltd."']]
+ ['164' M_EUTRAC ['204', '"Eutrac"']]
+ ['165' M_GUSTAV_HENSEL_GMBH_AND_CO__KG ['205', '"Gustav Hensel GmbH & Co. KG"']]
+ ['166' M_GARO_AB ['206', '"GARO AB"']]
+ ['167' M_WALDMANN_LICHTTECHNIK ['207', '"Waldmann Lichttechnik"']]
+ ['168' M_SCHUECO ['208', '"SCHÜCO"']]
+ ['169' M_EMU ['209', '"EMU"']]
+ ['170' M_JNET_SYSTEMS_AG ['210', '"JNet Systems AG"']]
+ ['171' M_TOTAL_SOLUTION_GMBH ['211', '"Total Solution GmbH"']]
+ ['172' M_O_Y_L__ELECTRONICS ['214', '"O.Y.L. Electronics"']]
+ ['173' M_GALAX_SYSTEM ['215', '"Galax System"']]
+ ['174' M_DISCH ['216', '"Disch"']]
+ ['175' M_AUCOTEAM ['217', '"Aucoteam"']]
+ ['176' M_LUXMATE_CONTROLS ['218', '"Luxmate Controls"']]
+ ['177' M_DANFOSS ['219', '"Danfoss"']]
+ ['178' M_AST_GMBH ['220', '"AST GmbH"']]
+ ['179' M_WILA_LEUCHTEN ['222', '"WILA Leuchten"']]
+ ['180' M_BPlusB_AUTOMATIONS__UND_STEUERUNGSTECHNIK ['223', '"b+b Automations- und Steuerungstechnik"']]
+ ['181' M_LINGG_AND_JANKE ['225', '"Lingg & Janke"']]
+ ['182' M_SAUTER ['227', '"Sauter"']]
+ ['183' M_SIMU ['228', '"SIMU"']]
+ ['184' M_THEBEN_HTS_AG ['232', '"Theben HTS AG"']]
+ ['185' M_AMANN_GMBH ['233', '"Amann GmbH"']]
+ ['186' M_BERG_ENERGIEKONTROLLSYSTEME_GMBH ['234', '"BERG Energiekontrollsysteme GmbH"']]
+ ['187' M_HUEPPE_FORM_SONNENSCHUTZSYSTEME_GMBH ['235', '"Hüppe Form Sonnenschutzsysteme GmbH"']]
+ ['188' M_OVENTROP_KG ['237', '"Oventrop KG"']]
+ ['189' M_GRIESSER_AG ['238', '"Griesser AG"']]
+ ['190' M_IPAS_GMBH ['239', '"IPAS GmbH"']]
+ ['191' M_ELERO_GMBH ['240', '"elero GmbH"']]
+ ['192' M_ARDAN_PRODUCTION_AND_INDUSTRIAL_CONTROLS_LTD_ ['241', '"Ardan Production and Industrial Controls Ltd."']]
+ ['193' M_METEC_MESSTECHNIK_GMBH ['242', '"Metec Meßtechnik GmbH"']]
+ ['194' M_BUERK_MOBATIME ['243', '"BÜRK MOBATIME"']]
+ ['195' M_ELKA_ELEKTRONIK_GMBH ['244', '"ELKA-Elektronik GmbH"']]
+ ['196' M_ELEKTROANLAGEN_D__NAGEL ['245', '"ELEKTROANLAGEN D. NAGEL"']]
+ ['197' M_TRIDONIC_BAUELEMENTE_GMBH ['246', '"Tridonic Bauelemente GmbH"']]
+ ['198' M_STENGLER_GESELLSCHAFT ['248', '"Stengler Gesellschaft"']]
+ ['199' M_SCHNEIDER_ELECTRIC_MG ['249', '"Schneider Electric (MG)"']]
+ ['200' M_KNX_ASSOCIATION ['250', '"KNX Association"']]
+ ['201' M_VIVO ['251', '"VIVO"']]
+ ['202' M_HUGO_MUELLER_GMBH_AND_CO_KG ['252', '"Hugo Müller GmbH & Co KG"']]
+ ['203' M_SIEMENS_HVAC ['253', '"Siemens HVAC"']]
+ ['204' M_APT ['254', '"APT"']]
+ ['205' M_HIGHDOM ['256', '"HighDom"']]
+ ['206' M_TOP_SERVICES ['257', '"Top Services"']]
+ ['207' M_AMBIHOME ['258', '"ambiHome"']]
+ ['208' M_DATEC_ELECTRONIC_AG ['259', '"DATEC electronic AG"']]
+ ['209' M_ABUS_SECURITY_CENTER ['260', '"ABUS Security-Center"']]
+ ['210' M_LITE_PUTER ['261', '"Lite-Puter"']]
+ ['211' M_TANTRON_ELECTRONIC ['262', '"Tantron Electronic"']]
+ ['212' M_INTERRA ['263', '"Interra"']]
+ ['213' M_DKX_TECH ['264', '"DKX Tech"']]
+ ['214' M_VIATRON ['265', '"Viatron"']]
+ ['215' M_NAUTIBUS ['266', '"Nautibus"']]
+ ['216' M_ON_SEMICONDUCTOR ['267', '"ON Semiconductor"']]
+ ['217' M_LONGCHUANG ['268', '"Longchuang"']]
+ ['218' M_AIR_ON_AG ['269', '"Air-On AG"']]
+ ['219' M_IB_COMPANY_GMBH ['270', '"ib-company GmbH"']]
+ ['220' M_SATION_FACTORY ['271', '"Sation Factory"']]
+ ['221' M_AGENTILO_GMBH ['272', '"Agentilo GmbH"']]
+ ['222' M_MAKEL_ELEKTRIK ['273', '"Makel Elektrik"']]
+ ['223' M_HELIOS_VENTILATOREN ['274', '"Helios Ventilatoren"']]
+ ['224' M_OTTO_SOLUTIONS_PTE_LTD ['275', '"Otto Solutions Pte Ltd"']]
+ ['225' M_AIRMASTER ['276', '"Airmaster"']]
+ ['226' M_VALLOX_GMBH ['277', '"Vallox GmbH"']]
+ ['227' M_DALITEK ['278', '"Dalitek"']]
+ ['228' M_ASIN ['279', '"ASIN"']]
+ ['229' M_BRIDGES_INTELLIGENCE_TECHNOLOGY_INC_ ['280', '"Bridges Intelligence Technology Inc."']]
+ ['230' M_ARBONIA ['281', '"ARBONIA"']]
+ ['231' M_KERMI ['282', '"KERMI"']]
+ ['232' M_PROLUX ['283', '"PROLUX"']]
+ ['233' M_CLICHOME ['284', '"ClicHome"']]
+ ['234' M_COMMAX ['285', '"COMMAX"']]
+ ['235' M_EAE ['286', '"EAE"']]
+ ['236' M_TENSE ['287', '"Tense"']]
+ ['237' M_SEYOUNG_ELECTRONICS ['288', '"Seyoung Electronics"']]
+ ['238' M_LIFEDOMUS ['289', '"Lifedomus"']]
+ ['239' M_EUROTRONIC_TECHNOLOGY_GMBH ['290', '"EUROtronic Technology GmbH"']]
+ ['240' M_TCI ['291', '"tci"']]
+ ['241' M_RISHUN_ELECTRONIC ['292', '"Rishun Electronic"']]
+ ['242' M_ZIPATO ['293', '"Zipato"']]
+ ['243' M_CM_SECURITY_GMBH_AND_CO_KG ['294', '"cm-security GmbH & Co KG"']]
+ ['244' M_QING_CABLES ['295', '"Qing Cables"']]
+ ['245' M_WOLF ['296', '"WOLF"']]
+ ['246' M_COSTER_TECNOLOGIE_ELETTRONICHE_S_P_A_ ['297', '"Coster Tecnologie Elettroniche S.p.A."']]
+ ['247' M_E_G_E ['298', '"E.G.E"']]
+ ['248' M_NETXAUTOMATION ['299', '"NETxAutomation"']]
+ ['249' M_TECALOR ['300', '"tecalor"']]
+ ['250' M_URMET_ELECTRONICS_HUIZHOU_LTD_ ['301', '"Urmet Electronics (Huizhou) Ltd."']]
+ ['251' M_PEIYING_BUILDING_CONTROL ['302', '"Peiying Building Control"']]
+ ['252' M_BPT_S_P_A__A_SOCIO_UNICO ['303', '"BPT S.p.A. a Socio Unico"']]
+ ['253' M_KANONTEC___KANONBUS ['304', '"Kanontec - KanonBUS"']]
+ ['254' M_ISER_TECH ['305', '"ISER Tech"']]
+ ['255' M_FINELINE ['306', '"Fineline"']]
+ ['256' M_CP_ELECTRONICS_LTD ['307', '"CP Electronics Ltd"']]
+ ['257' M_NIKO_SERVODAN_AS ['308', '"Niko-Servodan A/S"']]
+ ['258' M_SIMON_309 ['309', '"Simon"']]
+ ['259' M_GM_MODULAR_PVT__LTD_ ['310', '"GM modular pvt. Ltd."']]
+ ['260' M_FU_CHENG_INTELLIGENCE ['311', '"FU CHENG Intelligence"']]
+ ['261' M_NEXKON ['312', '"NexKon"']]
+ ['262' M_FEEL_S_R_L ['313', '"FEEL s.r.l"']]
+ ['263' M_NOT_ASSIGNED_314 ['314', '"Not Assigned"']]
+ ['264' M_SHENZHEN_FANHAI_SANJIANG_ELECTRONICS_CO___LTD_ ['315', '"Shenzhen Fanhai Sanjiang Electronics Co., Ltd."']]
+ ['265' M_JIUZHOU_GREEBLE ['316', '"Jiuzhou Greeble"']]
+ ['266' M_AUMUELLER_AUMATIC_GMBH ['317', '"Aumüller Aumatic GmbH"']]
+ ['267' M_ETMAN_ELECTRIC ['318', '"Etman Electric"']]
+ ['268' M_BLACK_NOVA ['319', '"Black Nova"']]
+ ['269' M_ZIDATECH_AG ['320', '"ZidaTech AG"']]
+ ['270' M_IDGS_BVBA ['321', '"IDGS bvba"']]
+ ['271' M_DAKANIMO ['322', '"dakanimo"']]
+ ['272' M_TREBOR_AUTOMATION_AB ['323', '"Trebor Automation AB"']]
+ ['273' M_SATEL_SP__Z_O_O_ ['324', '"Satel sp. z o.o."']]
+ ['274' M_RUSSOUND__INC_ ['325', '"Russound, Inc."']]
+ ['275' M_MIDEA_HEATING_AND_VENTILATING_EQUIPMENT_CO_LTD ['326', '"Midea Heating & Ventilating Equipment CO LTD"']]
+ ['276' M_CONSORZIO_TERRANUOVA ['327', '"Consorzio Terranuova"']]
+ ['277' M_WOLF_HEIZTECHNIK_GMBH ['328', '"Wolf Heiztechnik GmbH"']]
+ ['278' M_SONTEC ['329', '"SONTEC"']]
+ ['279' M_BELCOM_CABLES_LTD_ ['330', '"Belcom Cables Ltd."']]
+ ['280' M_GUANGZHOU_SEAWIN_ELECTRICAL_TECHNOLOGIES_CO___LTD_ ['331', '"Guangzhou SeaWin Electrical Technologies Co., Ltd."']]
+ ['281' M_ACREL ['332', '"Acrel"']]
+ ['282' M_KWC_AQUAROTTER_GMBH ['333', '"KWC Aquarotter GmbH"']]
+ ['283' M_ORION_SYSTEMS ['334', '"Orion Systems"']]
+ ['284' M_SCHRACK_TECHNIK_GMBH ['335', '"Schrack Technik GmbH"']]
+ ['285' M_INSPRID ['336', '"INSPRID"']]
+ ['286' M_SUNRICHER ['337', '"Sunricher"']]
+ ['287' M_MENRED_AUTOMATION_SYSTEMSHANGHAI_CO__LTD_ ['338', '"Menred automation system(shanghai) Co.,Ltd."']]
+ ['288' M_AUREX ['339', '"Aurex"']]
+ ['289' M_JOSEF_BARTHELME_GMBH_AND_CO__KG ['340', '"Josef Barthelme GmbH & Co. KG"']]
+ ['290' M_ARCHITECTURE_NUMERIQUE ['341', '"Architecture Numerique"']]
+ ['291' M_UP_GROUP ['342', '"UP GROUP"']]
+ ['292' M_TEKNOS_AVINNO ['343', '"Teknos-Avinno"']]
+ ['293' M_NINGBO_DOOYA_MECHANIC_AND_ELECTRONIC_TECHNOLOGY ['344', '"Ningbo Dooya Mechanic & Electronic Technology"']]
+ ['294' M_THERMOKON_SENSORTECHNIK_GMBH ['345', '"Thermokon Sensortechnik GmbH"']]
+ ['295' M_BELIMO_AUTOMATION_AG ['346', '"BELIMO Automation AG"']]
+ ['296' M_ZEHNDER_GROUP_INTERNATIONAL_AG ['347', '"Zehnder Group International AG"']]
+ ['297' M_SKS_KINKEL_ELEKTRONIK ['348', '"sks Kinkel Elektronik"']]
+ ['298' M_ECE_WURMITZER_GMBH ['349', '"ECE Wurmitzer GmbH"']]
+ ['299' M_LARS ['350', '"LARS"']]
+ ['300' M_URC ['351', '"URC"']]
+ ['301' M_LIGHTCONTROL ['352', '"LightControl"']]
+ ['302' M_SHENZHEN_YM ['353', '"ShenZhen YM"']]
+ ['303' M_MEAN_WELL_ENTERPRISES_CO__LTD_ ['354', '"MEAN WELL Enterprises Co. Ltd."']]
+ ['304' M_OSIX ['355', '"OSix"']]
+ ['305' M_AYPRO_TECHNOLOGY ['356', '"AYPRO Technology"']]
+ ['306' M_HEFEI_ECOLITE_SOFTWARE ['357', '"Hefei Ecolite Software"']]
+ ['307' M_ENNO ['358', '"Enno"']]
+ ['308' M_OHOSURE ['359', '"OHOSURE"']]
+ ['309' M_GAREFOWL ['360', '"Garefowl"']]
+ ['310' M_GEZE ['361', '"GEZE"']]
+ ['311' M_LG_ELECTRONICS_INC_ ['362', '"LG Electronics Inc."']]
+ ['312' M_SMC_INTERIORS ['363', '"SMC interiors"']]
+ ['313' M_NOT_ASSIGNED_364 ['364', '"Not Assigned"']]
+ ['314' M_SCS_CABLE ['365', '"SCS Cable"']]
+ ['315' M_HOVAL ['366', '"Hoval"']]
+ ['316' M_CANST ['367', '"CANST"']]
+ ['317' M_HANGZHOU_BERLIN ['368', '"HangZhou Berlin"']]
+ ['318' M_EVN_LICHTTECHNIK ['369', '"EVN-Lichttechnik"']]
+ ['319' M_RUTEC ['370', '"rutec"']]
+ ['320' M_FINDER ['371', '"Finder"']]
+ ['321' M_FUJITSU_GENERAL_LIMITED ['372', '"Fujitsu General Limited"']]
+ ['322' M_ZF_FRIEDRICHSHAFEN_AG ['373', '"ZF Friedrichshafen AG"']]
+ ['323' M_CREALED ['374', '"Crealed"']]
+ ['324' M_MILES_MAGIC_AUTOMATION_PRIVATE_LIMITED ['375', '"Miles Magic Automation Private Limited"']]
+ ['325' M_EPlus ['376', '"E+"']]
+ ['326' M_ITALCOND ['377', '"Italcond"']]
+ ['327' M_SATION ['378', '"SATION"']]
+ ['328' M_NEWBEST ['379', '"NewBest"']]
+ ['329' M_GDS_DIGITAL_SYSTEMS ['380', '"GDS DIGITAL SYSTEMS"']]
+ ['330' M_IDDERO ['381', '"Iddero"']]
+ ['331' M_MBNLED ['382', '"MBNLED"']]
+ ['332' M_VITRUM ['383', '"VITRUM"']]
+ ['333' M_EKEY_BIOMETRIC_SYSTEMS_GMBH ['384', '"ekey biometric systems GmbH"']]
+ ['334' M_AMC ['385', '"AMC"']]
+ ['335' M_TRILUX_GMBH_AND_CO__KG ['386', '"TRILUX GmbH & Co. KG"']]
+ ['336' M_WEXCEDO ['387', '"WExcedo"']]
+ ['337' M_VEMER_SPA ['388', '"VEMER SPA"']]
+ ['338' M_ALEXANDER_BUERKLE_GMBH_AND_CO_KG ['389', '"Alexander Bürkle GmbH & Co KG"']]
+ ['339' M_CITRON ['390', '"Citron"']]
+ ['340' M_SHENZHEN_HEGUANG ['391', '"Shenzhen HeGuang"']]
+ ['341' M_NOT_ASSIGNED_392 ['392', '"Not Assigned"']]
+ ['342' M_TRANE_B_V_B_A ['393', '"TRANE B.V.B.A"']]
+ ['343' M_CAREL ['394', '"CAREL"']]
+ ['344' M_PROLITE_CONTROLS ['395', '"Prolite Controls"']]
+ ['345' M_BOSMER ['396', '"BOSMER"']]
+ ['346' M_EUCHIPS ['397', '"EUCHIPS"']]
+ ['347' M_CONNECT_THINKA_CONNECT ['398', '"connect (Thinka connect)"']]
+ ['348' M_PEAKNX_A_DOGAWIST_COMPANY ['399', '"PEAKnx a DOGAWIST company"']]
+ ['349' M_ACEMATIC ['400', '"ACEMATIC"']]
+ ['350' M_ELAUSYS ['401', '"ELAUSYS"']]
+ ['351' M_ITK_ENGINEERING_AG ['402', '"ITK Engineering AG"']]
+ ['352' M_INTEGRA_METERING_AG ['403', '"INTEGRA METERING AG"']]
+ ['353' M_FMS_HOSPITALITY_PTE_LTD ['404', '"FMS Hospitality Pte Ltd"']]
+ ['354' M_NUVO ['405', '"Nuvo"']]
+ ['355' M_U__LUX_GMBH ['406', '"u::Lux GmbH"']]
+ ['356' M_BRUMBERG_LEUCHTEN ['407', '"Brumberg Leuchten"']]
+ ['357' M_LIME ['408', '"Lime"']]
+ ['358' M_GREAT_EMPIRE_INTERNATIONAL_GROUP_CO___LTD_ ['409', '"Great Empire International Group Co., Ltd."']]
+ ['359' M_KAVOSHPISHRO_ASIA ['410', '"Kavoshpishro Asia"']]
+ ['360' M_V2_SPA ['411', '"V2 SpA"']]
+ ['361' M_JOHNSON_CONTROLS ['412', '"Johnson Controls"']]
+ ['362' M_ARKUD ['413', '"Arkud"']]
+ ['363' M_IRIDIUM_LTD_ ['414', '"Iridium Ltd."']]
+ ['364' M_BSMART ['415', '"bsmart"']]
+ ['365' M_BAB_TECHNOLOGIE_GMBH ['416', '"BAB TECHNOLOGIE GmbH"']]
+ ['366' M_NICE_SPA ['417', '"NICE Spa"']]
+ ['367' M_REDFISH_GROUP_PTY_LTD ['418', '"Redfish Group Pty Ltd"']]
+ ['368' M_SABIANA_SPA ['419', '"SABIANA spa"']]
+ ['369' M_UBEE_INTERACTIVE_EUROPE ['420', '"Ubee Interactive Europe"']]
+ ['370' M_REXEL ['421', '"Rexel"']]
+ ['371' M_GES_TEKNIK_A_S_ ['422', '"Ges Teknik A.S."']]
+ ['372' M_AVE_S_P_A_ ['423', '"Ave S.p.A."']]
+ ['373' M_ZHUHAI_LTECH_TECHNOLOGY_CO___LTD_ ['424', '"Zhuhai Ltech Technology Co., Ltd."']]
+ ['374' M_ARCOM ['425', '"ARCOM"']]
+ ['375' M_VIA_TECHNOLOGIES__INC_ ['426', '"VIA Technologies, Inc."']]
+ ['376' M_FEELSMART_ ['427', '"FEELSMART."']]
+ ['377' M_SUPCON ['428', '"SUPCON"']]
+ ['378' M_MANIC ['429', '"MANIC"']]
+ ['379' M_TDE_GMBH ['430', '"TDE GmbH"']]
+ ['380' M_NANJING_SHUFAN_INFORMATION_TECHNOLOGY_CO__LTD_ ['431', '"Nanjing Shufan Information technology Co.,Ltd."']]
+ ['381' M_EWTECH ['432', '"EWTech"']]
+ ['382' M_KLUGER_AUTOMATION_GMBH ['433', '"Kluger Automation GmbH"']]
+ ['383' M_JOONGANG_CONTROL ['434', '"JoongAng Control"']]
+ ['384' M_GREENCONTROLS_TECHNOLOGY_SDN__BHD_ ['435', '"GreenControls Technology Sdn. Bhd."']]
+ ['385' M_IME_S_P_A_ ['436', '"IME S.p.a."']]
+ ['386' M_SICHUAN_HAODING ['437', '"SiChuan HaoDing"']]
+ ['387' M_MINDJAGA_LTD_ ['438', '"Mindjaga Ltd."']]
+ ['388' M_RUILI_SMART_CONTROL ['439', '"RuiLi Smart Control"']]
+ ['389' M_CODESYS_GMBH ['440', '"CODESYS GmbH"']]
+ ['390' M_MOORGEN_DEUTSCHLAND_GMBH ['441', '"Moorgen Deutschland GmbH"']]
+ ['391' M_CULLMANN_TECH ['442', '"CULLMANN TECH"']]
+ ['392' M_EYRISE_B_V ['443', '"eyrise B.V"']]
+ ['393' M_ABEGO ['444', '"ABEGO"']]
+ ['394' M_MYGEKKO ['445', '"myGEKKO"']]
+ ['395' M_ERGO3_SARL ['446', '"Ergo3 Sarl"']]
+ ['396' M_STMICROELECTRONICS_INTERNATIONAL_N_V_ ['447', '"STmicroelectronics International N.V."']]
+ ['397' M_CJC_SYSTEMS ['448', '"cjc systems"']]
+ ['398' M_SUDOKU ['449', '"Sudoku"']]
+ ['399' M_AZ_E_LITE_PTE_LTD ['451', '"AZ e-lite Pte Ltd"']]
+ ['400' M_ARLIGHT ['452', '"Arlight"']]
+ ['401' M_GRUENBECK_WASSERAUFBEREITUNG_GMBH ['453', '"Grünbeck Wasseraufbereitung GmbH"']]
+ ['402' M_MODULE_ELECTRONIC ['454', '"Module Electronic"']]
+ ['403' M_KOPLAT ['455', '"KOPLAT"']]
+ ['404' M_GUANGZHOU_LETOUR_LIFE_TECHNOLOGY_CO___LTD ['456', '"Guangzhou Letour Life Technology Co., Ltd"']]
+ ['405' M_ILEVIA ['457', '"ILEVIA"']]
+ ['406' M_LN_SYSTEMTEQ ['458', '"LN SYSTEMTEQ"']]
+ ['407' M_HISENSE_SMARTHOME ['459', '"Hisense SmartHome"']]
+ ['408' M_FLINK_AUTOMATION_SYSTEM ['460', '"Flink Automation System"']]
+ ['409' M_XXTER_BV ['461', '"xxter bv"']]
+ ['410' M_LYNXUS_TECHNOLOGY ['462', '"lynxus technology"']]
+ ['411' M_ROBOT_S_A_ ['463', '"ROBOT S.A."']]
+ ['412' M_SHENZHEN_ATTE_SMART_LIFE_CO__LTD_ ['464', '"Shenzhen Atte Smart Life Co.,Ltd."']]
+ ['413' M_NOBLESSE ['465', '"Noblesse"']]
+ ['414' M_ADVANCED_DEVICES ['466', '"Advanced Devices"']]
+ ['415' M_ATRINA_BUILDING_AUTOMATION_CO__LTD ['467', '"Atrina Building Automation Co. Ltd"']]
+ ['416' M_GUANGDONG_DAMING_LAFFEY_ELECTRIC_CO___LTD_ ['468', '"Guangdong Daming Laffey electric Co., Ltd."']]
+ ['417' M_WESTERSTRAND_URFABRIK_AB ['469', '"Westerstrand Urfabrik AB"']]
+ ['418' M_CONTROL4_CORPORATE ['470', '"Control4 Corporate"']]
+ ['419' M_ONTROL ['471', '"Ontrol"']]
+ ['420' M_STARNET ['472', '"Starnet"']]
+ ['421' M_BETA_CAVI ['473', '"BETA CAVI"']]
+ ['422' M_EASEMORE ['474', '"EaseMore"']]
+ ['423' M_VIVALDI_SRL ['475', '"Vivaldi srl"']]
+ ['424' M_GREE_ELECTRIC_APPLIANCES_INC__OF_ZHUHAI ['476', '"Gree Electric Appliances,Inc. of Zhuhai"']]
+ ['425' M_HWISCON ['477', '"HWISCON"']]
+ ['426' M_SHANGHAI_ELECON_INTELLIGENT_TECHNOLOGY_CO___LTD_ ['478', '"Shanghai ELECON Intelligent Technology Co., Ltd."']]
+ ['427' M_KAMPMANN ['479', '"Kampmann"']]
+ ['428' M_IMPOLUX_GMBH_LEDIMAX ['480', '"Impolux GmbH / LEDIMAX"']]
+ ['429' M_EVAUX ['481', '"Evaux"']]
+ ['430' M_WEBRO_CABLES_AND_CONNECTORS_LIMITED ['482', '"Webro Cables & Connectors Limited"']]
+ ['431' M_SHANGHAI_E_TECH_SOLUTION ['483', '"Shanghai E-tech Solution"']]
+ ['432' M_GUANGZHOU_HOKO_ELECTRIC_CO__LTD_ ['484', '"Guangzhou HOKO Electric Co.,Ltd."']]
+ ['433' M_LAMMIN_HIGH_TECH_CO__LTD ['485', '"LAMMIN HIGH TECH CO.,LTD"']]
+ ['434' M_SHENZHEN_MERRYTEK_TECHNOLOGY_CO___LTD ['486', '"Shenzhen Merrytek Technology Co., Ltd"']]
+ ['435' M_I_LUXUS ['487', '"I-Luxus"']]
+ ['436' M_ELMOS_SEMICONDUCTOR_AG ['488', '"Elmos Semiconductor AG"']]
+ ['437' M_EMCOM_TECHNOLOGY_INC ['489', '"EmCom Technology Inc"']]
+ ['438' M_PROJECT_INNOVATIONS_GMBH ['490', '"project innovations GmbH"']]
+ ['439' M_ITC ['491', '"Itc"']]
+ ['440' M_ABB_LV_INSTALLATION_MATERIALS_COMPANY_LTD__BEIJING ['492', '"ABB LV Installation Materials Company Ltd, Beijing"']]
+ ['441' M_MAICO ['493', '"Maico"']]
+ ['442' M_ELAN_SRL ['495', '"ELAN SRL"']]
+ ['443' M_MINHHA_TECHNOLOGY_CO__LTD ['496', '"MinhHa Technology co.,Ltd"']]
+ ['444' M_ZHEJIANG_TIANJIE_INDUSTRIAL_CORP_ ['497', '"Zhejiang Tianjie Industrial CORP."']]
+ ['445' M_IAUTOMATION_PTY_LIMITED ['498', '"iAutomation Pty Limited"']]
+ ['446' M_EXTRON ['499', '"Extron"']]
+ ['447' M_FREEDOMPRO ['500', '"Freedompro"']]
+ ['448' M_ONEHOME ['501', '"1Home"']]
+ ['449' M_EOS_SAUNATECHNIK_GMBH ['502', '"EOS Saunatechnik GmbH"']]
+ ['450' M_KUSATEK_GMBH ['503', '"KUSATEK GmbH"']]
+ ['451' M_EISBAER_SCADA ['504', '"EisBär Scada"']]
+ ['452' M_AUTOMATISMI_BENINCA_S_P_A_ ['505', '"AUTOMATISMI BENINCA S.P.A."']]
+ ['453' M_BLENDOM ['506', '"Blendom"']]
+ ['454' M_MADEL_AIR_TECHNICAL_DIFFUSION ['507', '"Madel Air Technical diffusion"']]
+ ['455' M_NIKO ['508', '"NIKO"']]
+ ['456' M_BOSCH_REXROTH_AG ['509', '"Bosch Rexroth AG"']]
+ ['457' M_CANDM_PRODUCTS ['512', '"C&M Products"']]
+ ['458' M_HOERMANN_KG_VERKAUFSGESELLSCHAFT ['513', '"Hörmann KG Verkaufsgesellschaft"']]
+ ['459' M_SHANGHAI_RAJAYASA_CO__LTD ['514', '"Shanghai Rajayasa co.,LTD"']]
+ ['460' M_SUZUKI ['515', '"SUZUKI"']]
+ ['461' M_SILENT_GLISS_INTERNATIONAL_LTD_ ['516', '"Silent Gliss International Ltd."']]
+ ['462' M_BEE_CONTROLS_ADGSC_GROUP ['517', '"BEE Controls (ADGSC Group)"']]
+ ['463' M_XDTECGMBH ['518', '"xDTecGmbH"']]
+ ['464' M_OSRAM ['519', '"OSRAM"']]
+ ['465' M_LEBENOR ['520', '"Lebenor"']]
+ ['466' M_AUTOMANENG ['521', '"automaneng"']]
+ ['467' M_HONEYWELL_AUTOMATION_SOLUTION_CONTROLCHINA ['522', '"Honeywell Automation Solution control(China)"']]
+ ['468' M_HANGZHOU_BINTHEN_INTELLIGENCE_TECHNOLOGY_CO__LTD ['523', '"Hangzhou binthen Intelligence Technology Co.,Ltd"']]
+ ['469' M_ETA_HEIZTECHNIK ['524', '"ETA Heiztechnik"']]
+ ['470' M_DIVUS_GMBH ['525', '"DIVUS GmbH"']]
+ ['471' M_NANJING_TAIJIESAI_INTELLIGENT_TECHNOLOGY_CO__LTD_ ['526', '"Nanjing Taijiesai Intelligent Technology Co. Ltd."']]
+ ['472' M_LUNATONE ['527', '"Lunatone"']]
+ ['473' M_ZHEJIANG_SCTECH_BUILDING_INTELLIGENT ['528', '"ZHEJIANG SCTECH BUILDING INTELLIGENT"']]
+ ['474' M_FOSHAN_QITE_TECHNOLOGY_CO___LTD_ ['529', '"Foshan Qite Technology Co., Ltd."']]
+ ['475' M_NOKE ['530', '"NOKE"']]
+ ['476' M_LANDCOM ['531', '"LANDCOM"']]
+ ['477' M_STORK_AS ['532', '"Stork AS"']]
+ ['478' M_HANGZHOU_SHENDU_TECHNOLOGY_CO___LTD_ ['533', '"Hangzhou Shendu Technology Co., Ltd."']]
+ ['479' M_COOLAUTOMATION ['534', '"CoolAutomation"']]
+ ['480' M_APRSTERN ['535', '"Aprstern"']]
+ ['481' M_SONNEN ['536', '"sonnen"']]
+ ['482' M_DNAKE ['537', '"DNAKE"']]
+ ['483' M_NEUBERGER_GEBAEUDEAUTOMATION_GMBH ['538', '"Neuberger Gebäudeautomation GmbH"']]
+ ['484' M_STILIGER ['539', '"Stiliger"']]
+ ['485' M_BERGHOF_AUTOMATION_GMBH ['540', '"Berghof Automation GmbH"']]
+ ['486' M_TOTAL_AUTOMATION_AND_CONTROLS_GMBH ['541', '"Total Automation and controls GmbH"']]
+ ['487' M_DOVIT ['542', '"dovit"']]
+ ['488' M_INSTALIGHTING_GMBH ['543', '"Instalighting GmbH"']]
+ ['489' M_UNI_TEC ['544', '"UNI-TEC"']]
+ ['490' M_CASATUNES ['545', '"CasaTunes"']]
+ ['491' M_EMT ['546', '"EMT"']]
+ ['492' M_SENFFICIENT ['547', '"Senfficient"']]
+ ['493' M_AUROLITE_ELECTRICAL_PANYU_GUANGZHOU_LIMITED ['548', '"Aurolite electrical panyu guangzhou limited"']]
+ ['494' M_ABB_XIAMEN_SMART_TECHNOLOGY_CO___LTD_ ['549', '"ABB Xiamen Smart Technology Co., Ltd."']]
+ ['495' M_SAMSON_ELECTRIC_WIRE ['550', '"Samson Electric Wire"']]
+ ['496' M_T_TOUCHING ['551', '"T-Touching"']]
+ ['497' M_CORE_SMART_HOME ['552', '"Core Smart Home"']]
+ ['498' M_GREENCONNECT_SOLUTIONS_SA ['553', '"GreenConnect Solutions SA"']]
+ ['499' M_ELETTRONICA_CONDUTTORI ['554', '"ELETTRONICA CONDUTTORI"']]
+ ['500' M_MKFC ['555', '"MKFC"']]
+ ['501' M_AUTOMATIONPlus ['556', '"Automation+"']]
+ ['502' M_BLUE_AND_RED ['557', '"blue and red"']]
+ ['503' M_FROGBLUE ['558', '"frogblue"']]
+ ['504' M_SAVESOR ['559', '"SAVESOR"']]
+ ['505' M_APP_TECH ['560', '"App Tech"']]
+ ['506' M_SENSORTEC_AG ['561', '"sensortec AG"']]
+ ['507' M_NYSA_TECHNOLOGY_AND_SOLUTIONS ['562', '"nysa technology & solutions"']]
+ ['508' M_FARADITE ['563', '"FARADITE"']]
+ ['509' M_OPTIMUS ['564', '"Optimus"']]
+ ['510' M_KTS_S_R_L_ ['565', '"KTS s.r.l."']]
+ ['511' M_RAMCRO_SPA ['566', '"Ramcro SPA"']]
+ ['512' M_WUHAN_WISECREATE_UNIVERSE_TECHNOLOGY_CO___LTD ['567', '"Wuhan WiseCreate Universe Technology Co., Ltd"']]
+ ['513' M_BEMI_SMART_HOME_LTD ['568', '"BEMI Smart Home Ltd"']]
+ ['514' M_ARDOMUS ['569', '"Ardomus"']]
+ ['515' M_CHANGXING ['570', '"ChangXing"']]
+ ['516' M_E_CONTROLS ['571', '"E-Controls"']]
+ ['517' M_AIB_TECHNOLOGY ['572', '"AIB Technology"']]
+ ['518' M_NVC ['573', '"NVC"']]
+ ['519' M_KBOX ['574', '"Kbox"']]
+ ['520' M_CNS ['575', '"CNS"']]
+ ['521' M_TYBA ['576', '"Tyba"']]
+ ['522' M_ATREL ['577', '"Atrel"']]
+ ['523' M_SIMON_ELECTRIC_CHINA_CO___LTD ['578', '"Simon Electric (China) Co., LTD"']]
+ ['524' M_KORDZ_GROUP ['579', '"Kordz Group"']]
+ ['525' M_ND_ELECTRIC ['580', '"ND Electric"']]
+ ['526' M_CONTROLIUM ['581', '"Controlium"']]
+ ['527' M_FAMO_GMBH_AND_CO__KG ['582', '"FAMO GmbH & Co. KG"']]
+ ['528' M_CDN_SMART ['583', '"CDN Smart"']]
+ ['529' M_HESTON ['584', '"Heston"']]
+ ['530' M_ESLA_CONEXIONES_S_L_ ['585', '"ESLA CONEXIONES S.L."']]
+ ['531' M_WEISHAUPT ['586', '"Weishaupt"']]
+ ['532' M_ASTRUM_TECHNOLOGY ['587', '"ASTRUM TECHNOLOGY"']]
+ ['533' M_WUERTH_ELEKTRONIK_STELVIO_KONTEK_S_P_A_ ['588', '"WUERTH ELEKTRONIK STELVIO KONTEK S.p.A."']]
+ ['534' M_NANOTECO_CORPORATION ['589', '"NANOTECO corporation"']]
+ ['535' M_NIETIAN ['590', '"Nietian"']]
+ ['536' M_SUMSIR ['591', '"Sumsir"']]
+ ['537' M_ORBIS_TECNOLOGIA_ELECTRICA_SA ['592', '"ORBIS TECNOLOGIA ELECTRICA SA"']]
+ ['538' M_NANJING_ZHONGYI_IOT_TECHNOLOGY_CO___LTD_ ['593', '"Nanjing Zhongyi IoT Technology Co., Ltd."']]
+ ['539' M_ANLIPS ['594', '"Anlips"']]
+ ['540' M_GUANGDONG_PAK_CORPORATION_CO___LTD ['595', '"GUANGDONG PAK CORPORATION CO., LTD"']]
+ ['541' M_BVK_TECHNOLOGY ['596', '"BVK Technology"']]
+ ['542' M_SOLOMIO_SRL ['597', '"Solomio srl"']]
+ ['543' M_DOMOTICA_LABS ['598', '"Domotica Labs"']]
+ ['544' M_NVC_INTERNATIONAL ['599', '"NVC International"']]
+ ['545' M_BA ['600', '"BA"']]
+ ['546' M_IRIS_CERAMICA_GROUP ['601', '"Iris Ceramica Group"']]
+ ['547' M_WIREEO ['602', '"Wireeo"']]
+ ['548' M_NVCLIGHTING ['603', '"nvclighting"']]
+ ['549' M_JINAN_TIAN_DA_SHENG_INFORMATION_TECHNOLOGY_CO_ ['604', '"Jinan Tian Da Sheng Information Technology Co."']]
+ ['550' M_ARMITI_TRADING ['605', '"Armiti trading"']]
+ ['551' M_ELEK ['606', '"ELEK"']]
+ ['552' M_ACCORDIA_SA ['607', '"Accordia sa"']]
+ ['553' M_OURICAN ['608', '"OURICAN"']]
+ ['554' M_INLIWOSE ['609', '"INLIWOSE"']]
+ ['555' M_BOSCH_SHANGHAI_SMART_LIFE_TECHNOLOGY_LTD_ ['610', '"Bosch (Shanghai) Smart Life Technology Ltd."']]
+ ['556' M_SHK_KNX ['611', '"SHK KNX"']]
+ ['557' M_AMPIO ['612', '"Ampio"']]
+ ['558' M_MINGXING_WISDOM ['613', '"Mingxing Wisdom"']]
+ ['559' M_ALTEN_SW_GMBH ['614', '"ALTEN SW GmbH"']]
+ ['560' M_V_Y_C_SRL ['615', '"V.Y.C.srl"']]
+ ['561' M_TERMINUS_GROUP ['616', '"TERMINUS GROUP"']]
+ ['562' M_WONDERFUL_CITY_TECHNOLOGY ['617', '"Wonderful City Technology"']]
+ ['563' M_QBICTECHNOLOGY ['618', '"QbicTechnology"']]
+ ['564' M_EMBEDDED_AUTOMATION_EQUIPMENT_SHANGHAI_LIMITED ['619', '"Embedded Automation Equipment (Shanghai) Limited"']]
+ ['565' M_ONEWORK ['620', '"onework"']]
+ ['566' M_PL_LINK ['621', '"PL LINK"']]
+ ['567' M_FASEL_GMBH_ELEKTRONIK ['622', '"Fasel GmbH Elektronik"']]
+ ['568' M_GOLDENHOME_SMART ['623', '"GoldenHome Smart"']]
+ ['569' M_GOLDMEDAL ['624', '"Goldmedal"']]
+ ['570' M_CannX ['625', '"Can'nX"']]
+ ['571' M_EGI___EARTH_GOODNESS ['627', '"EGI - Earth Goodness"']]
+ ['572' M_VIEGA_GMBH_AND_CO__KG ['628', '"Viega GmbH & Co. KG"']]
+ ['573' M_FREDON_DIGITAL_BUILDINGS ['629', '"Fredon Digital Buildings"']]
+ ['574' M_HELUKABEL_THAILAND_CO__LTD_ ['630', '"Helukabel (Thailand) Co.,Ltd."']]
+ ['575' M_ACE_TECHNOLOGY ['631', '"ACE Technology"']]
+ ['576' M_MEX_ELECTRIC_TECHNOLOGY_SHANGHAI_CO___LTD ['632', '"MEX Electric Technology (Shanghai) Co., Ltd"']]
+ ['577' M_SUMAMO ['633', '"SUMAMO"']]
+ ['578' M_SVIT ['634', '"SVIT"']]
+ ['579' M_TECGET ['635', '"tecget"']]
+ ['580' M_XEROPOINT ['636', '"Xeropoint"']]
+ ['581' M_HONEYWELL_BUILDING_TECHNOLOGIES ['637', '"Honeywell Building Technologies"']]
+ ['582' M_COMFORTCLICK ['638', '"ComfortClick"']]
+ ['583' M_DORBAS_ELECTRIC ['639', '"DORBAS ELECTRIC"']]
+ ['584' M_REMKO_GMBH_AND_CO__KG ['640', '"REMKO GmbH & Co. KG"']]
+ ['585' M_SHENZHEN_CONGXUN_INTELLIGENT_TECHNOLOGY_CO___LTD ['641', '"Shenzhen Congxun Intelligent Technology Co., LTD"']]
+ ['586' M_ANDAS ['642', '"ANDAS"']]
+ ['587' M_HEFEI_CHUANG_YUE_INTELLIGENT_TECHNOLOGY_CO__LTD ['643', '"Hefei Chuang Yue Intelligent Technology Co.,LTD"']]
+ ['588' M_LARFE ['644', '"Larfe"']]
+ ['589' M_DONGGUAN_MUHCCI_ELECTRICAL ['645', '"Dongguan Muhcci Electrical"']]
+ ['590' M_STEC ['646', '"STEC"']]
+ ['591' M_ARIGO_SOFTWARE_GMBH ['647', '"ARIGO Software GmbH"']]
+ ['592' M_FEISHELEC ['648', '"Feishelec"']]
+ ['593' M_GORDIC ['649', '"GORDIC"']]
+ ['594' M_DELTA_ELECTRONICS ['650', '"Delta Electronics"']]
+ ['595' M_SHANGHAI_LEWIN_INTELLIGENT_TECHNOLOGY_CO__LTD_ ['651', '"Shanghai Lewin Intelligent Technology Co.,Ltd."']]
+ ['596' M_KG_POWER ['652', '"KG-POWER"']]
+ ['597' M_ZHEJIANG_MOORGEN_GROUP_CO__LTD ['653', '"Zhejiang Moorgen Group Co.,Ltd"']]
+ ['598' M_GUANGDONG_KANWAY ['654', '"Guangdong Kanway"']]
+ ['599' M_RAMIREZ_ENGINEERING_GMBH ['656', '"RAMIREZ Engineering GmbH"']]
+ ['600' M_ZHONGSHAN_TAIYANG_IMPANDEXP__CO_LTD ['657', '"Zhongshan Taiyang IMP&EXP. CO LTD"']]
+ ['601' M_VIHAN_ELECTRIC_PVT_LTD ['658', '"Vihan electric pvt ltd"']]
+ ['602' M_SPLENDID_MINDS_GMBH ['659', '"Splendid Minds GmbH"']]
+ ['603' M_ESTADA ['660', '"Estada"']]
+ ['604' M_ZHONGYUNXINZHIKONGGUJITUANYOUXIANGONGSI ['661', '"zhongyunxinzhikonggujituanyouxiangongsi"']]
+ ['605' M_STUHL_REGELSYSTEME_GMBH ['662', '"Stuhl Regelsysteme GmbH"']]
+ ['606' M_SHENZHEN_GLUCK_TECHNOLOGY_CO___LTD ['663', '"Shenzhen Gluck Technology Co., LTD"']]
+ ['607' M_GAIMEX ['664', '"Gaimex"']]
+ ['608' M_B3_INTERNATIONAL_S_R_L ['665', '"B3 International S.R.L"']]
+ ['609' M_MM_ELECTRO ['666', '"MM Electro"']]
+ ['610' M_CASCODA ['667', '"CASCODA"']]
+ ['611' M_XIAMEN_INTRETECH_INC_ ['668', '"Xiamen Intretech Inc."']]
+ ['612' M_KILOELEC_TECHNOLOGY ['669', '"KiloElec Technology"']]
+ ['613' M_INYX ['670', '"Inyx"']]
+ ['614' M_SMART_BUILDING_SERVICES_GMBH ['671', '"Smart Building Services GmbH"']]
+ ['615' M_BSS_GMBH ['672', '"BSS GmbH"']]
+ ['616' M_LUMI_ELECTRONICS ['673', '"Lumi Electronics"']]
+ ['617' M_OJEAELECTRONICS ['674', '"OjeaElectronics"']]
+ ['618' M_SMART_NODE ['675', '"Smart Node"']]
+ ['619' M_NEXHOME ['676', '"NEXhome"']]
+ ['620' M_HUOTENG_WULIAN_JIANGSU_CO___LTD ['677', '"Huoteng Wulian (Jiangsu) Co., Ltd"']]
+ ['621' M_RAYLOGIC_CONTROL_SYSTEMS_PVT_LTD ['678', '"Raylogic Control Systems Pvt Ltd"']]
+ ['622' M_BITS_AND_BYTES ['679', '"Bits & Bytes"']]
+ ['623' M_KFV_SIEGENIA_GRUPPE ['680', '"KFV (SIEGENIA GRUPPE)"']]
+ ['624' M_SYMCON ['681', '"Symcon"']]
+ ['625' M_I_TRUST ['682', '"I.Trust"']]
+ ['626' M_DRD_TECHNICS ['683', '"DRD-Technics"']]
+ ['627' M_LENGEN ['684', '"LENGEN"']]
+ ['628' M_SHENZHEN_EXC_LED_TECHNOLOGY_CO__LTD ['685', '"Shenzhen EXC-LED Technology Co.,LTD"']]
+ ['629' M_VIBROXX_FZCO ['686', '"Vibroxx-FZCO"']]
+ ['630' M_SUZHOU_HONGYUN_INTELLIGENT_TECHNOLOGYCO___LTD ['687', '"Suzhou Hongyun Intelligent TechnologyCo., Ltd"']]
+ ['631' M_PASSIV_ENERGIE_GMBH ['688', '"Passiv Energie GmbH"']]
+ ['632' M_PAYNE_TECHNOLOGIES_LTD ['689', '"Payne Technologies Ltd"']]
+ ['633' M_GUANGDONG_YOZEWIT_INTELLIGENT_TECHNOLOGY_CO__LTD_ ['690', '"Guangdong Yozewit Intelligent Technology Co.,Ltd."']]
+ ['634' M_SEXANKA ['691', '"SEXANKA"']]
+ ['635' M_SECURI_FLEX_LTD ['692', '"Securi-Flex Ltd"']]
+ ['636' M_BOKE ['693', '"BOKE"']]
+ ['637' M_SBR_SYSTEM_TECHNICAL ['695', '"SBR System Technical"']]
+ ['638' M_SHENZHEN_EASTKAME_TECHNOLOGY_CO___LTD_ ['696', '"Shenzhen EastKame Technology Co., Ltd."']]
+ ['639' M_BOLATU ['697', '"BOLATU"']]
+ ['640' M_RECBER_KABLO_A_S_ ['698', '"RECBER KABLO A.S."']]
+ ['641' M_ILITE_KNX ['699', '"ILite-Knx"']]
+ ['642' M_LAZZEN ['700', '"LAZZEN"']]
+ ['643' M_MOX_CONTROL_IT_CHINA_LIMITED ['701', '"MOX CONTROL IT (CHINA) LIMITED"']]
+ ['644' M_CLOWIRE ['702', '"CLOWIRE"']]
+ ['645' M_NINGBO_QIYUAN_LIGHTING_TECH_CO__LTD ['703', '"NINGBO QIYUAN LIGHTING TECH CO.,LTD"']]
+ ['646' M_NS_TOUCH ['704', '"NS Touch"']]
+ ['647' M_ROOMIO ['705', '"ROOMIO"']]
+ ['648' M_ABB___RESERVED ['43954', '"ABB - reserved"']]
+ ['649' M_BUSCH_JAEGER_ELEKTRO___RESERVED ['43959', '"Busch-Jaeger Elektro - reserved"']]
+
+]
+
+[dataIo KnxDatapoint(KnxDatapointType datapointType)
+ [typeSwitch datapointType
+ ['BOOL' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value]
+ ]
+ ['BYTE' BYTE
+ [reserved uint 8 '0x00']
+ [simple uint 8 value ]
+ ]
+ ['WORD' WORD
+ [reserved uint 8 '0x00']
+ [simple uint 16 value]
+ ]
+ ['DWORD' DWORD
+ [reserved uint 8 '0x00']
+ [simple uint 32 value]
+ ]
+ ['LWORD' LWORD
+ [reserved uint 8 '0x00']
+ [simple uint 64 value]
+ ]
+ ['USINT' USINT
+ [reserved uint 8 '0x00']
+ [simple uint 8 value]
+ ]
+ ['SINT' SINT
+ [reserved uint 8 '0x00']
+ [simple int 8 value]
+ ]
+ ['UINT' UINT
+ [reserved uint 8 '0x00']
+ [simple uint 16 value]
+ ]
+ ['INT' INT
+ [reserved uint 8 '0x00']
+ [simple int 16 value]
+ ]
+ ['UDINT' UDINT
+ [reserved uint 8 '0x00']
+ [simple uint 32 value]
+ ]
+ ['DINT' DINT
+ [reserved uint 8 '0x00']
+ [simple int 32 value]
+ ]
+ ['ULINT' ULINT
+ [reserved uint 8 '0x00']
+ [simple uint 64 value]
+ ]
+ ['LINT' LINT
+ [reserved uint 8 '0x00']
+ [simple int 64 value]
+ ]
+ ['REAL' REAL
+ [reserved uint 8 '0x00']
+ [simple float 32 value]
+ ]
+ ['LREAL' LREAL
+ [reserved uint 8 '0x00']
+ [simple float 64 value ]
+ ]
+ ['CHAR' CHAR
+ [reserved uint 8 '0x00']
+ [simple string 8 value encoding='"UTF-8"']
+ ]
+ ['WCHAR' WCHAR
+ [reserved uint 8 '0x00']
+ [simple string 16 value encoding='"UTF-16"']
+ ]
+ //['STRING' STRING
+ //]
+ //['WSTRING' WSTRING
+ //]
+ ['TIME' TIME
+ [reserved uint 8 '0x00' ]
+ // TODO: Check if this is correct ...
+ [simple uint 32 milliseconds]
+ ]
+ ['LTIME' LTIME
+ [reserved uint 8 '0x00' ]
+ // TODO: Check if this is correct ...
+ [simple uint 64 nanoseconds]
+ ]
+ ['DATE' DATE
+ [reserved uint 8 '0x00' ]
+ // TODO: Check if this is correct ...
+ [simple uint 32 secondsSinceEpoch]
+ ]
+ ['TIME_OF_DAY' TIME_OF_DAY
+ [reserved uint 8 '0x00' ]
+ // TODO: Check if this is correct ...
+ [simple uint 32 millisecondsSinceMidnight]
+ ]
+ ['TOD' TIME_OF_DAY
+ [reserved uint 8 '0x00' ]
+ // TODO: Check if this is correct ...
+ [simple uint 32 millisecondsSinceMidnight]
+ ]
+ ['DATE_AND_TIME' DATE_AND_TIME
+ [reserved uint 8 '0x00' ]
+ [simple uint 16 year ]
+ [simple uint 8 month ]
+ [simple uint 8 day ]
+ [simple uint 8 dayOfWeek ]
+ [simple uint 8 hour ]
+ [simple uint 8 minutes ]
+ [simple uint 8 seconds ]
+ [simple uint 32 nanoseconds]
+ ]
+ ['DT' DATE_AND_TIME
+ [reserved uint 8 '0x00' ]
+ [simple uint 16 year ]
+ [simple uint 8 month ]
+ [simple uint 8 day ]
+ [simple uint 8 dayOfWeek ]
+ [simple uint 8 hour ]
+ [simple uint 8 minutes ]
+ [simple uint 8 seconds ]
+ [simple uint 32 nanoseconds]
+ ]
+
+
+ ['DPT_Switch' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Bool' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Enable' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Ramp' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Alarm' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_BinaryValue' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Step' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_UpDown' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_OpenClose' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Start' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_State' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Invert' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_DimSendStyle' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_InputSource' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Reset' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Ack' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Trigger' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Occupancy' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Window_Door' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_LogicalFunction' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Scene_AB' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_ShutterBlinds_Mode' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_DayNight' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Heat_Cool' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_Switch_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit on]
+
+ ]
+
+ ['DPT_Bool_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit valueTrue]
+
+ ]
+
+ ['DPT_Enable_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit enable]
+
+ ]
+
+ ['DPT_Ramp_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit ramp]
+
+ ]
+
+ ['DPT_Alarm_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit alarm]
+
+ ]
+
+ ['DPT_BinaryValue_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit high]
+
+ ]
+
+ ['DPT_Step_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit increase]
+
+ ]
+
+ ['DPT_Direction1_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit down]
+
+ ]
+
+ ['DPT_Direction2_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit close]
+
+ ]
+
+ ['DPT_Start_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit start]
+
+ ]
+
+ ['DPT_State_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit active]
+
+ ]
+
+ ['DPT_Invert_Control' Struct
+ // Field Size 2
+ [reserved uint 6 '0x00']
+
+
+ [simple bit control]
+
+ [simple bit inverted]
+
+ ]
+
+ ['DPT_Control_Dimming' Struct
+ // Field Size 4
+ [reserved uint 4 '0x00']
+
+
+ [simple bit increase]
+
+ [simple uint 3 stepcode]
+
+ ]
+
+ ['DPT_Control_Blinds' Struct
+ // Field Size 4
+ [reserved uint 4 '0x00']
+
+
+ [simple bit down]
+
+ [simple uint 3 stepcode]
+
+ ]
+
+ ['DPT_Char_ASCII' STRING
+ [reserved uint 8 '0x00']
+ [simple string 8 value encoding='"ASCII"']
+
+ ]
+
+ ['DPT_Char_8859_1' STRING
+ [reserved uint 8 '0x00']
+ [simple string 8 value encoding='"ISO-8859-1"']
+
+ ]
+
+ ['DPT_Scaling' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Angle' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Percent_U8' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_DecimalFactor' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Tariff' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Value_1_Ucount' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_FanStage' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Percent_V8' SINT
+ [reserved uint 8 '0x00']
+
+ [simple int 8 value]
+
+ ]
+
+ ['DPT_Value_1_Count' SINT
+ [reserved uint 8 '0x00']
+
+ [simple int 8 value]
+
+ ]
+
+ ['DPT_Status_Mode3' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [simple bit statusA]
+
+ [simple bit statusB]
+
+ [simple bit statusC]
+
+ [simple bit statusD]
+
+ [simple bit statusE]
+
+ [simple uint 3 mode]
+
+ ]
+
+ ['DPT_Value_2_Ucount' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_TimePeriodMsec' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_TimePeriod10Msec' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_TimePeriod100Msec' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_TimePeriodSec' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_TimePeriodMin' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_TimePeriodHrs' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_PropDataType' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_Length_mm' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_UElCurrentmA' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_Brightness' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_Absolute_Colour_Temperature' UINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 16 value]
+
+ ]
+
+ ['DPT_Value_2_Count' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_DeltaTimeMsec' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_DeltaTime10Msec' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_DeltaTime100Msec' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_DeltaTimeSec' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_DeltaTimeMin' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_DeltaTimeHrs' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_Percent_V16' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_Rotation_Angle' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_Length_m' INT
+ [reserved uint 8 '0x00']
+
+ [simple int 16 value]
+
+ ]
+
+ ['DPT_Value_Temp' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Tempd' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Tempa' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Lux' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Wsp' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Pres' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Humidity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_AirQuality' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_AirFlow' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Time1' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Time2' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Volt' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Curr' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_PowerDensity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_KelvinPerPercent' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Power' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Volume_Flow' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Rain_Amount' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Temp_F' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Wsp_kmh' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Value_Absolute_Humidity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Concentration_ygm3' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Coefficient' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_TimeOfDay' Struct
+ // Field Size 24
+ [reserved uint 8 '0x00']
+
+
+ [simple uint 3 day]
+
+ [simple uint 5 hour]
+
+ [reserved uint 2 '0x00']
+
+ [simple uint 6 minutes]
+
+ [reserved uint 2 '0x00']
+
+ [simple uint 6 seconds]
+
+ ]
+
+ ['DPT_Date' Struct
+ // Field Size 24
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 3 '0x00']
+
+ [simple uint 5 dayOfMonth]
+
+ [reserved uint 4 '0x00']
+
+ [simple uint 4 month]
+
+ [reserved uint 1 '0x00']
+
+ [simple uint 7 year]
+
+ ]
+
+ ['DPT_Value_4_Ucount' UDINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 32 value]
+
+ ]
+
+ ['DPT_LongTimePeriod_Sec' UDINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 32 value]
+
+ ]
+
+ ['DPT_LongTimePeriod_Min' UDINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 32 value]
+
+ ]
+
+ ['DPT_LongTimePeriod_Hrs' UDINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 32 value]
+
+ ]
+
+ ['DPT_VolumeLiquid_Litre' UDINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 32 value]
+
+ ]
+
+ ['DPT_Volume_m_3' UDINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 32 value]
+
+ ]
+
+ ['DPT_Value_4_Count' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_FlowRate_m3h' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_ActiveEnergy' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_ApparantEnergy' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_ReactiveEnergy' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_ActiveEnergy_kWh' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_ApparantEnergy_kVAh' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_ReactiveEnergy_kVARh' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_ActiveEnergy_MWh' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_LongDeltaTimeSec' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_DeltaVolumeLiquid_Litre ' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_DeltaVolume_m_3' DINT
+ [reserved uint 8 '0x00']
+
+ [simple int 32 value]
+
+ ]
+
+ ['DPT_Value_Acceleration' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Acceleration_Angular' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Activation_Energy' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Activity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Mol' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Amplitude' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_AngleRad' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_AngleDeg' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Angular_Momentum' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Angular_Velocity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Area' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Capacitance' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Charge_DensitySurface' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Charge_DensityVolume' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Compressibility' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Conductance' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electrical_Conductivity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Density' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_Charge' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_Current' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_CurrentDensity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_DipoleMoment' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_Displacement' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_FieldStrength' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_Flux' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_FluxDensity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_Polarization' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_Potential' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electric_PotentialDifference' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_ElectromagneticMoment' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Electromotive_Force' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Energy' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Force' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Frequency' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Angular_Frequency' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Heat_Capacity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Heat_FlowRate' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Heat_Quantity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Impedance' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Length' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Light_Quantity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Luminance' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Luminous_Flux' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Luminous_Intensity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Magnetic_FieldStrength' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Magnetic_Flux' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Magnetic_FluxDensity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Magnetic_Moment' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Magnetic_Polarization' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Magnetization' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_MagnetomotiveForce' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Mass' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_MassFlux' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Momentum' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Phase_AngleRad' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Phase_AngleDeg' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Power' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Power_Factor' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Pressure' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Reactance' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Resistance' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Resistivity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_SelfInductance' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_SolidAngle' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Sound_Intensity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Speed' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Stress' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Surface_Tension' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Common_Temperature' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Absolute_Temperature' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_TemperatureDifference' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Thermal_Capacity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Thermal_Conductivity' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_ThermoelectricPower' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Time' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Torque' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Volume' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Volume_Flux' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Weight' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_Work' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Value_ApparentPower' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 32 value]
+
+ ]
+
+ ['DPT_Volume_Flux_Meter' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Volume_Flux_ls' REAL
+ [reserved uint 8 '0x00']
+
+ [simple float 16 value]
+
+ ]
+
+ ['DPT_Access_Data' Struct
+ // Field Size 32
+ [reserved uint 8 '0x00']
+
+
+ [simple uint 4 hurz]
+
+ [simple uint 4 value1]
+
+ [simple uint 4 value2]
+
+ [simple uint 4 value3]
+
+ [simple uint 4 value4]
+
+ [simple uint 4 value5]
+
+ [simple bit detectionError]
+
+ [simple bit permission]
+
+ [simple bit readDirection]
+
+ [simple bit encryptionOfAccessInformation]
+
+ [simple uint 4 indexOfAccessIdentificationCode]
+
+ ]
+
+ ['DPT_String_ASCII' STRING
+ [reserved uint 8 '0x00']
+ [simple string 112 value encoding='"ASCII"']
+
+ ]
+
+ ['DPT_String_8859_1' STRING
+ [reserved uint 8 '0x00']
+ [simple string 112 value encoding='"ISO-8859-1"']
+
+ ]
+
+ ['DPT_SceneNumber' USINT
+ [reserved uint 2 '0x00']
+
+ [simple uint 6 value]
+
+ ]
+
+ ['DPT_SceneControl' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [simple bit learnTheSceneCorrespondingToTheFieldSceneNumber]
+
+ [reserved uint 1 '0x00']
+
+ [simple uint 6 sceneNumber]
+
+ ]
+
+ ['DPT_DateTime' Struct
+ // Field Size 64
+ [reserved uint 8 '0x00']
+
+
+ [simple uint 8 year]
+
+ [reserved uint 4 '0x00']
+
+ [simple uint 4 month]
+
+ [reserved uint 3 '0x00']
+
+ [simple uint 5 dayofmonth]
+
+ [simple uint 3 dayofweek]
+
+ [simple uint 5 hourofday]
+
+ [reserved uint 2 '0x00']
+
+ [simple uint 6 minutes]
+
+ [reserved uint 2 '0x00']
+
+ [simple uint 6 seconds]
+
+ [simple bit fault]
+
+ [simple bit workingDay]
+
+ [simple bit noWd]
+
+ [simple bit noYear]
+
+ [simple bit noDate]
+
+ [simple bit noDayOfWeek]
+
+ [simple bit noTime]
+
+ [simple bit standardSummerTime]
+
+ [simple bit qualityOfClock]
+
+ [reserved uint 7 '0x00']
+
+ ]
+
+ ['DPT_SCLOMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_BuildingMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_OccMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Priority' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_LightApplicationMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_ApplicationArea' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_AlarmClassType' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_PSUMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_ErrorClass_System' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_ErrorClass_HVAC' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Time_Delay' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Beaufort_Wind_Force_Scale' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_SensorSelect' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_ActuatorConnectType' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Cloud_Cover' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_PowerReturnMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_FuelType' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_BurnerType' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_HVACMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_DHWMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_LoadPriority' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_HVACContrMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_HVACEmergMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_ChangeoverMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_ValveMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_DamperMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_HeaterMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_FanMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_MasterSlaveMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_StatusRoomSetp' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Metering_DeviceType' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_HumDehumMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_EnableHCStage' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_ADAType' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_BackupMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_StartSynchronization' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Behaviour_Lock_Unlock' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Behaviour_Bus_Power_Up_Down' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_DALI_Fade_Time' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_BlinkingMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_LightControlMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_SwitchPBModel' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_PBAction' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_DimmPBModel' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_SwitchOnMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_LoadTypeSet' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_LoadTypeDetected' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_Converter_Test_Control' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_SABExcept_Behaviour' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_SABBehaviour_Lock_Unlock' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_SSSBMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_BlindsControlMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_CommMode' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_AddInfoTypes' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_RF_ModeSelect' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_RF_FilterSelect' USINT
+ [reserved uint 8 '0x00']
+
+ [simple uint 8 value]
+
+ ]
+
+ ['DPT_StatusGen' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 3 '0x00']
+
+ [simple bit alarmStatusOfCorrespondingDatapointIsNotAcknowledged]
+
+ [simple bit correspondingDatapointIsInAlarm]
+
+ [simple bit correspondingDatapointMainValueIsOverridden]
+
+ [simple bit correspondingDatapointMainValueIsCorruptedDueToFailure]
+
+ [simple bit correspondingDatapointValueIsOutOfService]
+
+ ]
+
+ ['DPT_Device_Control' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 5 '0x00']
+
+ [simple bit verifyModeIsOn]
+
+ [simple bit aDatagramWithTheOwnIndividualAddressAsSourceAddressHasBeenReceived]
+
+ [simple bit theUserApplicationIsStopped]
+
+ ]
+
+ ['DPT_ForceSign' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [simple bit roomhmax]
+
+ [simple bit roomhconf]
+
+ [simple bit dhwlegio]
+
+ [simple bit dhwnorm]
+
+ [simple bit overrun]
+
+ [simple bit oversupply]
+
+ [simple bit protection]
+
+ [simple bit forcerequest]
+
+ ]
+
+ ['DPT_ForceSignCool' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_StatusRHC' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [simple bit summermode]
+
+ [simple bit statusstopoptim]
+
+ [simple bit statusstartoptim]
+
+ [simple bit statusmorningboost]
+
+ [simple bit tempreturnlimit]
+
+ [simple bit tempflowlimit]
+
+ [simple bit satuseco]
+
+ [simple bit fault]
+
+ ]
+
+ ['DPT_StatusSDHWC' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 5 '0x00']
+
+ [simple bit solarloadsufficient]
+
+ [simple bit sdhwloadactive]
+
+ [simple bit fault]
+
+ ]
+
+ ['DPT_FuelTypeSet' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 5 '0x00']
+
+ [simple bit solidstate]
+
+ [simple bit gas]
+
+ [simple bit oil]
+
+ ]
+
+ ['DPT_StatusRCC' BOOL
+ [reserved uint 7 '0x00']
+ [simple bit value ]
+
+ ]
+
+ ['DPT_StatusAHU' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 4 '0x00']
+
+ [simple bit cool]
+
+ [simple bit heat]
+
+ [simple bit fanactive]
+
+ [simple bit fault]
+
+ ]
+
+ ['DPT_CombinedStatus_RTSM' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 3 '0x00']
+
+ [simple bit statusOfHvacModeUser]
+
+ [simple bit statusOfComfortProlongationUser]
+
+ [simple bit effectiveValueOfTheComfortPushButton]
+
+ [simple bit effectiveValueOfThePresenceStatus]
+
+ [simple bit effectiveValueOfTheWindowStatus]
+
+ ]
+
+ ['DPT_LightActuatorErrorInfo' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 1 '0x00']
+
+ [simple bit overheat]
+
+ [simple bit lampfailure]
+
+ [simple bit defectiveload]
+
+ [simple bit underload]
+
+ [simple bit overcurrent]
+
+ [simple bit undervoltage]
+
+ [simple bit loaddetectionerror]
+
+ ]
+
+ ['DPT_RF_ModeInfo' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 5 '0x00']
+
+ [simple bit bibatSlave]
+
+ [simple bit bibatMaster]
+
+ [simple bit asynchronous]
+
+ ]
+
+ ['DPT_RF_FilterInfo' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 5 '0x00']
+
+ [simple bit doa]
+
+ [simple bit knxSn]
+
+ [simple bit doaAndKnxSn]
+
+ ]
+
+ ['DPT_Channel_Activation_8' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [simple bit activationStateOfChannel1]
+
+ [simple bit activationStateOfChannel2]
+
+ [simple bit activationStateOfChannel3]
+
+ [simple bit activationStateOfChannel4]
+
+ [simple bit activationStateOfChannel5]
+
+ [simple bit activationStateOfChannel6]
+
+ [simple bit activationStateOfChannel7]
+
+ [simple bit activationStateOfChannel8]
+
+ ]
+
+ ['DPT_StatusDHWC' Struct
+ // Field Size 16
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 8 '0x00']
+
+ [simple bit tempoptimshiftactive]
+
+ [simple bit solarenergysupport]
+
+ [simple bit solarenergyonly]
+
+ [simple bit otherenergysourceactive]
+
+ [simple bit dhwpushactive]
+
+ [simple bit legioprotactive]
+
+ [simple bit dhwloadactive]
+
+ [simple bit fault]
+
+ ]
+
+ ['DPT_StatusRHCC' Struct
+ // Field Size 16
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 1 '0x00']
+
+ [simple bit overheatalarm]
+
+ [simple bit frostalarm]
+
+ [simple bit dewpointstatus]
+
+ [simple bit coolingdisabled]
+
+ [simple bit statusprecool]
+
+ [simple bit statusecoc]
+
+ [simple bit heatcoolmode]
+
+ [simple bit heatingdiabled]
+
+ [simple bit statusstopoptim]
+
+ [simple bit statusstartoptim]
+
+ [simple bit statusmorningboosth]
+
+ [simple bit tempflowreturnlimit]
+
+ [simple bit tempflowlimit]
+
+ [simple bit statusecoh]
+
+ [simple bit fault]
+
+ ]
+
+ ['DPT_CombinedStatus_HVA' Struct
+ // Field Size 16
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 7 '0x00']
+
+ [simple bit calibrationMode]
+
+ [simple bit lockedPosition]
+
+ [simple bit forcedPosition]
+
+ [simple bit manuaOperationOverridden]
+
+ [simple bit serviceMode]
+
+ [simple bit valveKick]
+
+ [simple bit overload]
+
+ [simple bit shortCircuit]
+
+ [simple bit currentValvePosition]
+
+ ]
+
+ ['DPT_CombinedStatus_RTC' Struct
+ // Field Size 16
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 7 '0x00']
+
+ [simple bit coolingModeEnabled]
+
+ [simple bit heatingModeEnabled]
+
+ [simple bit additionalHeatingCoolingStage2Stage]
+
+ [simple bit controllerInactive]
+
+ [simple bit overheatAlarm]
+
+ [simple bit frostAlarm]
+
+ [simple bit dewPointStatus]
+
+ [simple bit activeMode]
+
+ [simple bit generalFailureInformation]
+
+ ]
+
+ ['DPT_Media' Struct
+ // Field Size 16
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 10 '0x00']
+
+ [simple bit knxIp]
+
+ [simple bit rf]
+
+ [reserved uint 1 '0x00']
+
+ [simple bit pl110]
+
+ [simple bit tp1]
+
+ [reserved uint 1 '0x00']
+
+ ]
+
+ ['DPT_Channel_Activation_16' Struct
+ // Field Size 16
+ [reserved uint 8 '0x00']
+
+
+ [simple bit activationStateOfChannel1]
+
+ [simple bit activationStateOfChannel2]
+
+ [simple bit activationStateOfChannel3]
+
+ [simple bit activationStateOfChannel4]
+
+ [simple bit activationStateOfChannel5]
+
+ [simple bit activationStateOfChannel6]
+
+ [simple bit activationStateOfChannel7]
+
+ [simple bit activationStateOfChannel8]
+
+ [simple bit activationStateOfChannel9]
+
+ [simple bit activationStateOfChannel10]
+
+ [simple bit activationStateOfChannel11]
+
+ [simple bit activationStateOfChannel12]
+
+ [simple bit activationStateOfChannel13]
+
+ [simple bit activationStateOfChannel14]
+
+ [simple bit activationStateOfChannel15]
+
+ [simple bit activationStateOfChannel16]
+
+ ]
+
+ ['DPT_OnOffAction' USINT
+ [reserved uint 6 '0x00']
+
+ [simple uint 2 value]
+
+ ]
+
+ ['DPT_Alarm_Reaction' USINT
+ [reserved uint 6 '0x00']
+
+ [simple uint 2 value]
+
+ ]
+
+ ['DPT_UpDown_Action' USINT
+ [reserved uint 6 '0x00']
+
+ [simple uint 2 value]
+
+ ]
+
+ ['DPT_HVAC_PB_Action' USINT
+ [reserved uint 6 '0x00']
+
+ [simple uint 2 value]
+
+ ]
+
+ ['DPT_DoubleNibble' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [simple uint 4 busy]
+
+ [simple uint 4 nak]
+
+ ]
+
+ ['DPT_SceneInfo' Struct
+ // Field Size 8
+ [reserved uint 8 '0x00']
+
+
+ [reserved uint 1 '0x00']
+
+ [simple bit sceneIsInactive]
+
+ [simple uint 6 scenenumber]
+
+ ]
+
+ ['DPT_CombinedInfoOnOff' Struct
... 34537 lines suppressed ...