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 2020/10/26 17:37:23 UTC

[plc4x] branch feature/plc4go updated (8a46474 -> b741a83)

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

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


    from 8a46474  - Updated the Jenkinsfile to match the new constant names for jdks and maven installations
     add 9af17c2  Add an OPC UA Server
     add f4f9bdf  Added requirement to set the security dir Otherwise it will create a security dir in the working dir.
     add 2682f46  Add OPC UA Server to plc4x poms Added a with-opcua-server option. Used the projects dependancy versions. Split out the Plc4x comms logic into it's one files so they aren't mixed up in the OPC UA server logic. Added an outline for the OPC UA Server README file
     add 5a24d98  Played around with specifying the data type. We should be able to use a base data type in opc ua as we do all the conversions already in Plcx. Handling of Arrays could be better by creating a node for each item in the array.
     add f65c2aa  Updated the handling of the passwords Passwords are entered on startup if they don't exist and then saved to the config file. They still need to be encrypted.
     add 9de9e7c  Update README.adoc
     add cc303a2  Merge branch 'Feature/opcua-server' of https://github.com/hutcheb/plc4x into Feature/opcua-server
     add 25df18f  Bumped the OPCUA driver version of Milo. Also went ot he latest stable build 5.1 instead of 5.2-snapshot for the opcua server.
     add b6aa1d0  Merge pull request #194 from hutcheb/Feature/opcua-server
     add 2788dc4  add logo record evolution
     add e3a87b7  Added Record Evolution
     add a3ae0a1  Delete logo_record_evolution_single_dark_bgfont.svg
     add 9d272f8  Add record evolution logo as png
     add 7d5eb73  changed record evolution logo to png
     add bf6ac83  Brief support for AMS/ADS discovery packets.
     add c84aa39  PLC4X-252 Support passing of PlcField in read/write builders.
     add 11d7c4e  Created password config file This will store all the hased passwords for each user instead of in the main config file.
     add 6ee584a  Hashed passwords and additional command line switches.
     add 63db2d0  Updated documentation
     add fcb2063  Fixed issue with password salt being recreated on every startup
     add e738424  Bumped Milo 0.52, Add getNumberOfElements, OPC UA Array handling
     add 79d0047  OPC UA Specific Changes PlcValue add trim when parsing strings. Some logger pom changes for sandbox projects, hopefully it will fix the intermitant build failures. OPC UA server array handling.
     add afeaa9d  Add groovy-test-junit5 dependancy to sandbox pom
     add 6918c72  Merge pull request #196 from hutcheb/opcaua-server
     add 30e82f8  - Updated the Jenkinsfile to match the new constant names for jdks and maven installations
     new b741a83  Merge branch 'develop' of https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go

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


Summary of changes:
 .../plc4x/java/api/messages/PlcReadRequest.java    |   3 +
 .../plc4x/java/api/messages/PlcWriteRequest.java   |  16 +
 .../org/apache/plc4x/java/api/model/PlcField.java  |  13 +
 .../org/apache/plc4x/java/api/value/PlcBOOL.java   |   4 +-
 .../org/apache/plc4x/java/api/value/PlcBYTE.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcCHAR.java   |   7 +-
 .../org/apache/plc4x/java/api/value/PlcDINT.java   |  16 +-
 .../org/apache/plc4x/java/api/value/PlcDWORD.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcINT.java    |   2 +-
 .../org/apache/plc4x/java/api/value/PlcLINT.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcLREAL.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcLWORD.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcREAL.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcSINT.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcUDINT.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcUINT.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcULINT.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcUSINT.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcWCHAR.java  |   7 +-
 .../org/apache/plc4x/java/api/value/PlcWORD.java   |   2 +-
 plc4j/drivers/ads/pom.xml                          |  14 +-
 .../org/apache/plc4x/java/ads/field/AdsField.java  |   2 -
 .../plc4x/java/ads/field/DirectAdsField.java       |   1 +
 .../plc4x/java/ads/field/SymbolicAdsField.java     |   1 +
 ....java => AdsDiscoverySerializerParserTest.java} |   6 +-
 .../readwrite/context/FirmataDriverContext.java    |  12 +-
 .../java/firmata/readwrite/field/FirmataField.java |   2 +-
 .../readwrite/field/FirmataFieldDigital.java       |   2 +-
 .../readwrite/protocol/FirmataProtocolLogic.java   |   6 +-
 .../plc4x/java/modbus/field/ModbusField.java       |   2 +-
 .../java/modbus/protocol/ModbusProtocolLogic.java  |  17 +-
 .../plc4x/java/modbus/ModbusFieldDataTypeTest.java |  10 +-
 .../apache/plc4x/java/modbus/ModbusFieldTest.java  |  10 +-
 plc4j/drivers/opcua/pom.xml                        |   4 -
 .../opcua/connection/OpcuaTcpPlcConnection.java    |   2 +-
 .../plc4x/java/s7/readwrite/field/S7Field.java     |   2 +-
 .../java/s7/readwrite/optimizer/S7Optimizer.java   |   4 +-
 .../s7/readwrite/protocol/S7ProtocolLogic.java     |   6 +-
 .../plc4x/java/s7/readwrite/field/S7FieldTest.java |   2 +-
 .../plc4x/java/simulated/field/SimulatedField.java |   2 +-
 .../java/simulated/field/SimulatedFieldTest.java   |   2 +-
 .../java/spi/messages/DefaultPlcReadRequest.java   |  17 +-
 .../java/spi/messages/DefaultPlcWriteRequest.java  |  94 ++++-
 pom.xml                                            |  39 ++-
 ...{ADSProtocol.java => ADSDiscoveryProtocol.java} |   9 +-
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |   3 +-
 .../resources/protocols/ads/ads-discovery.mspec    |  89 +++--
 .../protocols/ads/AdsDiscoverySerializerTest.xml   | 377 +++++++++++++++++++++
 .../resources/protocols/ads/DriverTestsuite.xml    |   8 +-
 .../resources/protocols/s7/DriverTestsuite.xml     |   6 +-
 sandbox/code-gen/pom.xml                           |  28 +-
 sandbox/opcua-server/README.adoc                   | 121 +++++++
 sandbox/opcua-server/pom.xml                       | 244 +++++++++++++
 .../java/opcuaserver/AttributeLoggingFilter.java   |  73 ++++
 .../plc4x/java/opcuaserver/Configuration.java      |  82 +++++
 .../java/opcuaserver/DeviceConfiguration.java      |  35 +-
 .../plc4x/java/opcuaserver/KeyStoreLoader.java     | 170 ++++++++++
 .../apache/plc4x/java/opcuaserver/OPCUAServer.java | 357 +++++++++++++++++++
 .../java/opcuaserver/PasswordConfiguration.java    |  92 +++++
 .../java/opcuaserver/RestrictedAccessFilter.java   |  55 +++
 .../org/apache/plc4x/java/opcuaserver/Tag.java     |  28 +-
 .../org/apache/plc4x/java/opcuaserver/User.java    | 104 ++++++
 .../opcuaserver/backend/Plc4xCommunication.java    | 254 ++++++++++++++
 .../java/opcuaserver/backend/Plc4xNamespace.java   | 258 ++++++++++++++
 sandbox/opcua-server/src/main/resources/config.yml |  43 +++
 .../src/main/resources/logback.xml                 |   4 +-
 .../org/apache/plc4x/java/opcuaserver/AppTest.java |  21 +-
 sandbox/pom.xml                                    |  29 +-
 sandbox/test-java-df1-driver/pom.xml               |  19 +-
 src/site/asciidoc/users/adopters.adoc              |   3 +
 .../logo_record_evolution_single_dark_bgfont.png   | Bin 0 -> 10498 bytes
 71 files changed, 2695 insertions(+), 168 deletions(-)
 copy plc4j/drivers/ads/src/test/java/org/apache/plc4x/protocol/ads/{AdsSerializerParserTest.java => AdsDiscoverySerializerParserTest.java} (82%)
 copy protocols/ads/src/main/java/org/apache/plc4x/protocol/ads/{ADSProtocol.java => ADSDiscoveryProtocol.java} (84%)
 create mode 100644 protocols/ads/src/test/resources/protocols/ads/AdsDiscoverySerializerTest.xml
 create mode 100644 sandbox/opcua-server/README.adoc
 create mode 100644 sandbox/opcua-server/pom.xml
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/AttributeLoggingFilter.java
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/Configuration.java
 copy plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionResponseTest.java => sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/DeviceConfiguration.java (62%)
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/KeyStoreLoader.java
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/OPCUAServer.java
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/PasswordConfiguration.java
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/RestrictedAccessFilter.java
 copy plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/config/JobConfiguration.java => sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/Tag.java (70%)
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/User.java
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xCommunication.java
 create mode 100644 sandbox/opcua-server/src/main/java/org/apache/plc4x/java/opcuaserver/backend/Plc4xNamespace.java
 create mode 100644 sandbox/opcua-server/src/main/resources/config.yml
 copy sandbox/{hello-influx-data-collection => opcua-server}/src/main/resources/logback.xml (97%)
 copy plc4j/api/src/test/java/org/apache/plc4x/java/api/exceptions/PlcFieldRangeExceptionTest.java => sandbox/opcua-server/src/test/java/org/apache/plc4x/java/opcuaserver/AppTest.java (77%)
 create mode 100644 src/site/resources/images/users/companies/logo_record_evolution_single_dark_bgfont.png


[plc4x] 01/01: Merge branch 'develop' of https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go

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

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

commit b741a8369a61d815aed60802723a342816a9d4ee
Merge: 8a46474 30e82f8
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Oct 26 18:01:50 2020 +0100

    Merge branch 'develop' of https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go
    
     Conflicts:
    	plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
    	plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
    	sandbox/test-java-df1-driver/pom.xml

 .../plc4x/java/api/messages/PlcReadRequest.java    |   3 +
 .../plc4x/java/api/messages/PlcWriteRequest.java   |  16 +
 .../org/apache/plc4x/java/api/model/PlcField.java  |  13 +
 .../org/apache/plc4x/java/api/value/PlcBOOL.java   |   4 +-
 .../org/apache/plc4x/java/api/value/PlcBYTE.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcCHAR.java   |   7 +-
 .../org/apache/plc4x/java/api/value/PlcDINT.java   |  16 +-
 .../org/apache/plc4x/java/api/value/PlcDWORD.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcINT.java    |   2 +-
 .../org/apache/plc4x/java/api/value/PlcLINT.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcLREAL.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcLWORD.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcREAL.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcSINT.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcUDINT.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcUINT.java   |   2 +-
 .../org/apache/plc4x/java/api/value/PlcULINT.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcUSINT.java  |   2 +-
 .../org/apache/plc4x/java/api/value/PlcWCHAR.java  |   7 +-
 .../org/apache/plc4x/java/api/value/PlcWORD.java   |   2 +-
 plc4j/drivers/ads/pom.xml                          |  14 +-
 .../org/apache/plc4x/java/ads/field/AdsField.java  |   2 -
 .../plc4x/java/ads/field/DirectAdsField.java       |   1 +
 .../plc4x/java/ads/field/SymbolicAdsField.java     |   1 +
 .../ads/AdsDiscoverySerializerParserTest.java      |  30 ++
 .../readwrite/context/FirmataDriverContext.java    |  12 +-
 .../java/firmata/readwrite/field/FirmataField.java |   2 +-
 .../readwrite/field/FirmataFieldDigital.java       |   2 +-
 .../readwrite/protocol/FirmataProtocolLogic.java   |   6 +-
 .../plc4x/java/modbus/field/ModbusField.java       |   2 +-
 .../java/modbus/protocol/ModbusProtocolLogic.java  |  17 +-
 .../plc4x/java/modbus/ModbusFieldDataTypeTest.java |  10 +-
 .../apache/plc4x/java/modbus/ModbusFieldTest.java  |  10 +-
 plc4j/drivers/opcua/pom.xml                        |   4 -
 .../opcua/connection/OpcuaTcpPlcConnection.java    |   2 +-
 .../plc4x/java/s7/readwrite/field/S7Field.java     |   2 +-
 .../java/s7/readwrite/optimizer/S7Optimizer.java   |   4 +-
 .../s7/readwrite/protocol/S7ProtocolLogic.java     |   6 +-
 .../plc4x/java/s7/readwrite/field/S7FieldTest.java |   2 +-
 .../plc4x/java/simulated/field/SimulatedField.java |   2 +-
 .../java/simulated/field/SimulatedFieldTest.java   |   2 +-
 .../java/spi/messages/DefaultPlcReadRequest.java   |  17 +-
 .../java/spi/messages/DefaultPlcWriteRequest.java  |  94 ++++-
 pom.xml                                            |  39 ++-
 .../plc4x/protocol/ads/ADSDiscoveryProtocol.java   |  49 +++
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |   3 +-
 .../resources/protocols/ads/ads-discovery.mspec    |  89 +++--
 .../protocols/ads/AdsDiscoverySerializerTest.xml   | 377 +++++++++++++++++++++
 .../resources/protocols/ads/DriverTestsuite.xml    |   8 +-
 .../resources/protocols/s7/DriverTestsuite.xml     |   6 +-
 sandbox/code-gen/pom.xml                           |  28 +-
 sandbox/opcua-server/README.adoc                   | 121 +++++++
 sandbox/opcua-server/pom.xml                       | 244 +++++++++++++
 .../java/opcuaserver/AttributeLoggingFilter.java   |  73 ++++
 .../plc4x/java/opcuaserver/Configuration.java      |  82 +++++
 .../java/opcuaserver/DeviceConfiguration.java      |  35 +-
 .../plc4x/java/opcuaserver/KeyStoreLoader.java     | 170 ++++++++++
 .../apache/plc4x/java/opcuaserver/OPCUAServer.java | 357 +++++++++++++++++++
 .../java/opcuaserver/PasswordConfiguration.java    |  92 +++++
 .../java/opcuaserver/RestrictedAccessFilter.java   |  55 +++
 .../org/apache/plc4x/java/opcuaserver/Tag.java     |  28 +-
 .../org/apache/plc4x/java/opcuaserver/User.java    | 104 ++++++
 .../opcuaserver/backend/Plc4xCommunication.java    | 254 ++++++++++++++
 .../java/opcuaserver/backend/Plc4xNamespace.java   | 258 ++++++++++++++
 sandbox/opcua-server/src/main/resources/config.yml |  43 +++
 .../opcua-server/src/main/resources/logback.xml    |  34 ++
 .../org/apache/plc4x/java/opcuaserver/AppTest.java |  33 +-
 sandbox/pom.xml                                    |  29 +-
 sandbox/test-java-df1-driver/pom.xml               |  19 +-
 src/site/asciidoc/users/adopters.adoc              |   3 +
 .../logo_record_evolution_single_dark_bgfont.png   | Bin 0 -> 10498 bytes
 71 files changed, 2797 insertions(+), 172 deletions(-)

diff --cc plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
index 3580c04,202fdff..45ad0c9
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
@@@ -278,10 -275,9 +279,10 @@@ public class ModbusProtocolLogic extend
      private ModbusPDU getWriteRequestPdu(PlcField field, PlcValue plcValue) {
          if(field instanceof ModbusFieldCoil) {
              ModbusFieldCoil coil = (ModbusFieldCoil) field;
 -            ModbusPDUWriteMultipleCoilsRequest request = new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getNumberOfElements(),
 +            ModbusPDUWriteMultipleCoilsRequest request =
-                 new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getQuantity(),
++                new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getNumberOfElements(),
                  fromPlcValue(field, plcValue));
-             if (request.getQuantity() == coil.getQuantity()) {
+             if (request.getQuantity() == coil.getNumberOfElements()) {
                  return request;
              } else {
                  throw new PlcRuntimeException("Number of requested bytes (" + request.getQuantity() +
@@@ -300,21 -295,17 +301,20 @@@
              }
          } else if(field instanceof ModbusExtendedRegister) {
              ModbusExtendedRegister extendedRegister = (ModbusExtendedRegister) field;
 -            int group1_address = extendedRegister.getAddress() % FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH;
 -            int group2_address = 0;
 -            int group1_quantity, group2_quantity;
 +            int group1Address = extendedRegister.getAddress() % FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH;
 +            int group2Address = 0;
 +            int group1Quantity;
 +            int group2Quantity;
              byte[] plcValue1, plcValue2;
 -            short group1_file_number = (short) (Math.floor(extendedRegister.getAddress() / FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) + 1);
 -            short group2_file_number;
 +            short group1FileNumber = (short)
 +                (Math.floor(extendedRegister.getAddress() / FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) + 1);
 +            short group2FileNumber;
              ModbusPDUWriteFileRecordRequestItem[] itemArray;
- 
 -            if ((group1_address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
 +            if ((group1Address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
                //If request doesn't span file records, use a single group
 -              group1_quantity = extendedRegister.getLengthWords();
 -              ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem((short) 6, group1_file_number, group1_address, fromPlcValue(field, plcValue));
 +              group1Quantity = extendedRegister.getLengthWords();
 +              ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem(
 +                  (short) 6, group1FileNumber, group1Address, fromPlcValue(field, plcValue));
                itemArray = new ModbusPDUWriteFileRecordRequestItem[] {group1};
              } else {
                //If it doesn span a file record. e.g. 609998[10] request 2 words in first group and 8 in second.
diff --cc plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
index 125b0c4,09f049b..51e61d1
--- a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
+++ b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusFieldDataTypeTest.java
@@@ -36,8 -36,8 +36,8 @@@ public class ModbusFieldDataTypeTest 
                                  {"REAL","2"}};
          for(int i = 0; i< datatypes.length; i++){
              ModbusFieldHoldingRegister holdingregister = ModbusFieldHoldingRegister.of("holding-register:1:" + datatypes[i][0]);
 -            Assertions.assertEquals(datatypes[i][0], holdingregister.getDataType());
 +            Assertions.assertEquals("IEC61131_" + datatypes[i][0], holdingregister.getDataType());
-             Assertions.assertEquals(1, holdingregister.getQuantity());
+             Assertions.assertEquals(1, holdingregister.getNumberOfElements());
              Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, holdingregister.getLengthBytes());
              Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), holdingregister.getLengthWords());
          }
@@@ -51,8 -51,8 +51,8 @@@
                                  {"REAL","2"}};
          for(int i = 0; i< datatypes.length; i++){
              ModbusFieldInputRegister inputregister = ModbusFieldInputRegister.of("input-register:1:" + datatypes[i][0]);
 -            Assertions.assertEquals(datatypes[i][0], inputregister.getDataType());
 +            Assertions.assertEquals("IEC61131_" + datatypes[i][0], inputregister.getDataType());
-             Assertions.assertEquals(1, inputregister.getQuantity());
+             Assertions.assertEquals(1, inputregister.getNumberOfElements());
              Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, inputregister.getLengthBytes());
              Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), inputregister.getLengthWords());
          }
@@@ -67,8 -67,8 +67,8 @@@
                                  {"REAL","2"}};
          for(int i = 0; i< datatypes.length; i++){
              ModbusExtendedRegister extendedregister = ModbusExtendedRegister.of("extended-register:1:" + datatypes[i][0]);
 -            Assertions.assertEquals(datatypes[i][0], extendedregister.getDataType());
 +            Assertions.assertEquals("IEC61131_" + datatypes[i][0], extendedregister.getDataType());
-             Assertions.assertEquals(1, extendedregister.getQuantity());
+             Assertions.assertEquals(1, extendedregister.getNumberOfElements());
              Assertions.assertEquals(Integer.parseInt(datatypes[i][1]) * 2, extendedregister.getLengthBytes());
              Assertions.assertEquals(Integer.parseInt(datatypes[i][1]), extendedregister.getLengthWords());
          }
@@@ -80,8 -80,8 +80,8 @@@
          String[][] datatypes = {{"BOOL","1"}};
          for(int i = 0; i< datatypes.length; i++){
              ModbusFieldCoil coil = ModbusFieldCoil.of("coil:1:" + datatypes[i][0]);
 -            Assertions.assertEquals(datatypes[i][0], coil.getDataType());
 +            Assertions.assertEquals("IEC61131_" + datatypes[i][0], coil.getDataType());
-             Assertions.assertEquals(1, coil.getQuantity());
+             Assertions.assertEquals(1, coil.getNumberOfElements());
          }
      }
  
@@@ -91,8 -91,8 +91,8 @@@
          String[][] datatypes = {{"BOOL","1"}};
          for(int i = 0; i< datatypes.length; i++){
              ModbusFieldDiscreteInput discrete = ModbusFieldDiscreteInput.of("discrete-input:1:" + datatypes[i][0]);
 -            Assertions.assertEquals(datatypes[i][0], discrete.getDataType());
 +            Assertions.assertEquals("IEC61131_" + datatypes[i][0], discrete.getDataType());
-             Assertions.assertEquals(1, discrete.getQuantity());
+             Assertions.assertEquals(1, discrete.getNumberOfElements());
          }
      }
  }
diff --cc protocols/ads/src/test/resources/protocols/ads/AdsDiscoverySerializerTest.xml
index 0000000,7cde0e7..7cde0e7
mode 000000,100644..100644
--- a/protocols/ads/src/test/resources/protocols/ads/AdsDiscoverySerializerTest.xml
+++ b/protocols/ads/src/test/resources/protocols/ads/AdsDiscoverySerializerTest.xml
diff --cc sandbox/test-java-df1-driver/pom.xml
index 28c60db,f965298..f632529
--- a/sandbox/test-java-df1-driver/pom.xml
+++ b/sandbox/test-java-df1-driver/pom.xml
@@@ -132,29 -146,20 +131,45 @@@
        <artifactId>jackson-dataformat-xml</artifactId>
        <scope>test</scope>
      </dependency>
+ <!-- Testing Dependencies -->
+     <dependency>
+       <groupId>org.junit.jupiter</groupId>
+       <artifactId>junit-jupiter</artifactId>
+       <scope>test</scope>
+     </dependency>
+     <dependency>
+       <groupId>org.junit.jupiter</groupId>
+       <artifactId>junit-jupiter-api</artifactId>
+       <scope>test</scope>
+     </dependency>
+     <dependency>
+       <groupId>org.codehaus.groovy</groupId>
 -      <artifactId>groovy-test-junit5</artifactId>      
++      <artifactId>groovy-test-junit5</artifactId>
++      <scope>test</scope>
++    </dependency>
 +
 +    <dependency>
 +      <groupId>org.apache.plc4x</groupId>
 +      <artifactId>plc4x-build-utils-language-java</artifactId>
 +      <version>0.8.0-SNAPSHOT</version>
 +      <!-- Scope is 'provided' as this way it's not shipped with the driver -->
 +      <scope>provided</scope>
 +    </dependency>
 +
 +    <dependency>
 +      <groupId>org.apache.plc4x</groupId>
 +      <artifactId>plc4x-protocols-df1</artifactId>
 +      <version>0.8.0-SNAPSHOT</version>
 +      <!-- Scope is 'provided' as this way it's not shipped with the driver -->
 +      <scope>provided</scope>
 +    </dependency>
 +
 +    <dependency>
 +      <groupId>org.apache.plc4x</groupId>
 +      <artifactId>plc4x-protocols-df1</artifactId>
 +      <version>0.8.0-SNAPSHOT</version>
 +      <classifier>tests</classifier>
 +      <type>test-jar</type>
        <scope>test</scope>
      </dependency>
    </dependencies>