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/01/16 08:44:29 UTC

[plc4x] branch develop updated (b0c5263 -> 1e6df75)

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

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


    from b0c5263  [maven-release-plugin] prepare for next development iteration
     add 8321e91  - Removed all old protocol modules (at least from the build)
     add ff91b05  - Continued porting the S7 driver to fully generated drivers.
     add 0f668bb  Introduced Complex Types
     add 8d5dccf  Added getKeys Method
     add 563c418  [plc4j-api] change values to package private
     add 6aff309  Refactored License Header; Improved PlcValues
     add 5c56151  [plc4j-api] added basic test for plc values
     add dcd2108  Refactored Interface out of Plc4XProtocol
     add 9abbf6c  Further Refactoring
     add 3993a3e  - Extracted the static functions of the generated code to a StaticHelper class - Refactored the GeneratedDriverByteToMessageCodec to handle the size calculation in case of multiple packets being received - Fixed the size calculation for sub-byte payloads in S7
     add df0d7cb  - Made the example terminate after finishing the requests.
     add 67a86d4  Removed ChannelHandler
     add dab9308  fixed retrieval of lists
     add 90dc156  Created plc4j-spi and moved driver-protocol-base classes there.
     add fbd3c80  Fixed Dependency Issues
     add 4e01a2a  Moved Transports, added AB ETH
     add e1e7d6b  Refactored PLC4J-Transports (and TCP)
     add 42506b8  Imported all Transports
     add 0650584  Added Utils
     add e949204  readded ads after refactoring
     add 1f6c52f  readded opcua after refactoring
     add 1f3763f  Added Modbus
     add 3e1d215  readded ethernet-ip after refactoring
     add 4877747  readded benchmarks after refactoring
     add 51d8382  - Updated the build after the moving of packages
     add 5b11e35  - Updated the build after the moving of packages
     add 8dbed5c  - Updated the build after the moving of packages
     add f5d9ab9  added send context to conversation context
     add 726f3a4  - Enabled and fixed the integration modules
     add 596265a  implemented DefaultSendRequestContext
     add 1214920  implemented DefaultSendRequestContext test
     add c1f0571  Implement first Version with Automatic response
     add 164e9ab  Fixed tests
     add cfc21ba  Added Request Response pattern with new API for S7 Driver
     add 2257702  Improved Logging of Handler Regisgtrations
     add 877285f  cleanup
     add f82e263  cleanup 2
     add de8c857  migrated read var
     add e40563b  make decode optional as you can handle the response in the send now
     add e733915  Added only method
     add 9385756  - Made the examples work again.
     add 62ca452  use new unwrap convenient method
     add 481ca9d  make onTimeoutConsumer optional by falling back to a NOOP consumer
     add 852522e  Implemented Response time
     add 92fb5fb  - Made the examples work again.
     add f9c67e3  potential fix for mixed lists
     add 44ed0bd  Fixed PlcList implementation
     add d53a642  Minor Refactorings
     add 5ffb700  finetuned Plc4xProtocolBase.java
     add e1223ff  Added Experimental Annotation. - Implemented default methods for read, write, subscribe, ... - Direct communication from connection to protocol
     add d04359b  Introduced generic configuration
     add a55a9ec  Minor refactorings
     add d57f65f  - Continued working on the new S7 driver: -- Moved the manual encoding/decoding of elements into a second mspec generated parser - General refactoring: -- renamed "deserialization" into "parse" in the mspec context -- renamed "serialization" into "serialize" in the mspec context -- made the "manual" fields actually work - Fixed a broken SPI test
     add bc88ec7  - Continued working on the new S7 driver: -- Finished porting the code for reading and writing data via S7
     add f8ec041  - Cleaned up a bit in the new driver.
     add 4d34052  - Continued working on the drivers ...
     add e7064e7  - Fixed a bug in the floating point parsing.
     add 32e023b  Refactoring towards Generic Connections: - Merged "Generation" Classes from Module 'plc4j-utils-driver-base-java' to 'plc4j-spi' into 'org.apache.plc4x.java.spi.generation' (was 'org.apache.plc4x.java.utils' before) - Introduced new Class GenericNettyPlcConnection where new Drivers can be based on (contains ChannelHandler already and should be used in the Future, then NettyPlcConnection will be deprecated) - Removed module  'plc4j-utils-driver-base-java' everywhere - Cha [...]
     add 512e93b  Refactoring towards Generic Connections Part 2: - Added Another Method to ChannelFactory interface. Ported S7-NG and KNX to the new ChannelFactory Method. - Extended Connection Parser to read all Parts of the Connection String and use it in KNX and S7-NG.
     add 3b9bc91  Refactoring towards Generic Connections Part 3: - Moved Common Code from TCP and UDP to abstract NettyChannelFactory. - Removed unnecessary dependencies from both Transport Modules (they are more focused on their specifics of the Transport now)
     add 74ef223  Refactoring towards Generic Connections Part 4: - S7Driver is now subclassing the new Generic Driver which contains only getters for important Properties - Introduced new Stack Configurer to automatically generate the "xxxMessage" Classes (using Reflection) - Allowed Transport Layer to get Access to Connection String Properties - Removed the "PlcByteToMessageCodec" Interface and implemented ByteToMessageCodec directly on all classes to avoid confusion with interfaces (th [...]
     add 3a132d1  Refactoring towards Generic Connections Part 5: - Extended ConnectionParser to support most of the generic types (boolean, String, int, double). - Introduced InstanceFactory to instantiate Classes (and Auto Inject Configuration Classes from Query Parameters, if existing) - Migrated Everything to InstanceFactory, e.g. many Classes now take a Class Object and no Instance - Migrated all existing Stuff to keep compatibility
     add 00e948f  Minor fixes which came up with knx testing.
     add d6ec2e0  Minor fixes which came up with knx testing (2).
     add ab0d3df  Added Initialize Method for ChannelFactory and Implemented Datagram Unpacking for UDP.
     add e281828  Added Close Handling for Connections.
     add 3152f51  - Added support for "dataIo" types in MSpec - Made the code generator be a little more verbose - Added support for temporal fields - Added support for string fields
     add 08f29fb  - Extended the PlcValue types and added some missing ones for temporal types. - Minor cleanups - Added support for reading and writing string data into the Read and WriteBuffers
     add cd39911  - Merged the data-specs and the protocol specs - Updated the specs to use the new string type reference
     add 1b665db  - Bumped some dependency versions (initially to support Java 13 in some of them)
     add 2c7c80a  - Make additional count array data available (Helping making the padding in s7 more correct)
     add 4b8fa7d  - Cleanup in the knx driver
     add 4e3ea4d  - Cleaning up in the KNX ETS code
     add 250e860  - Continued implementing the new S7 driver
     add e214f5b  - Major refactoring FieldItems -> PlcValue
     add bc867e5  - Made sure super.eventTriggered is not executed in case of ConnectEvent and DisconnectEvent
     add f76e9e1  - Enabled the code for writing data
     add 60e8904  - Updated the modules activated by the "with-proxies" profile.next-gen-core - Generally renamed "fieldValue" with "plcValue"
     add d609ee1  - Addressing some SonarCloud bugs
     add 7649ccb  - Addressing some SonarCloud bugs
     add c088940  - Addressing some SonarCloud bugs
     add 8a3576b  Implemented Generic RequestTransactionManager and implemented it in S7 Protocol Logic.
     add 0cbf247  - Fixed an issue in the S7 protocol initializing the transaction manager with the initial values and not the negotiated ones. - Added some documentation to the driver.
     add 3838e0d  - Made the RequestTransactionManager handle changes of the numberOfConcurrentRequests.
     add af91066  Merge branches 'develop' and 'next-gen-core' of https://gitbox.apache.org/repos/asf/plc4x into next-gen-core
     add 54a4b90  - First steps in porting the S7MessageProcessor to the new generation S7 driver.
     add aa76159  - Continued working on the futures for handling the responses.
     add d58ffcb  Did a bit of refactoring of the read method to read and read0
     add 75ffd12  - renamed the read0 into readInternal
     add 2f98890  Merge branches 'develop' and 'next-gen-core' of https://gitbox.apache.org/repos/asf/plc4x into next-gen-core
     add e991c9c  Mostly formatting and replacing "paket" with "packet" ;-)
     add 94bba6c  PLC4X-163 - Netty OutOfDirectMemoryError - Fixed two bugs in the detection if more bytes are available and in the way the number of elements in primitive arrays are detected.
     add 17c3c12  Made the template generate a JSon annotation not only for abstract types.
     add 093337a  Huge refactoring and cleanup.
     add fbf5aed  - Make the S7 driver actually work ...
     add 478da6c  - Get UDP working
     add 4f78772  - Make the KNXnet/IP driver actually work ...
     add baf44d9  - Made the "endianess" configurable - Inverted the way "big-endian"/"little-endian" was treated in the ReadBuffer and WriteBuffer - Fixed things this inversion broke
     add 664bda1  - Migrated the Ab-Eth protocol to the new structure ...
     add 3c15b7c  - Woked on the pcap transport an the integration of that in the bacnetip protocol implementation.
     add 96912f4  - Split up utils into utils (Stuff used intenally) and tools (Stuff intended for both internal and external usage)
     add a22d52f  - Bumped the verions to 0.7.0-SNAPSHOT - Enhanced the build check script to detect Docker and if it's running - Fixed some pom-related issues after updating the versions and commenting out of a lot of modules (Old drivers were referenced all over the place)
     add 7e01b5d  - Renamed the s7ng back to s7
     new e96f5f9  Merge branches 'develop' and 'next-gen-core-2' of https://gitbox.apache.org/repos/asf/plc4x into develop
     new 1e6df75  Updated the prerequisiteCheck to only do the docker-check if the "with-docker" profile is enabled.

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


Summary of changes:
 .../freemarker/FreemarkerLanguageOutput.java       |   41 +-
 .../plc4x/language/java/JavaLanguageOutput.java    |   12 +-
 .../language/java/JavaLanguageTemplateHelper.java  |  139 ++-
 .../resources/templates/java/data-io-template.ftlh |  278 ++++++
 .../resources/templates/java/enum-template.ftlh    |  115 +--
 .../main/resources/templates/java/io-template.ftlh |   91 +-
 .../resources/templates/java/pojo-template.ftlh    |   16 +-
 .../plugins/codegenerator/language/mspec/MSpec.g4  |   20 +-
 .../definitions/DefaultDataIoTypeDefinition.java   |   38 +
 .../model/fields/DefaultManualArrayField.java      |   14 +-
 .../mspec/model/fields/DefaultManualField.java     |   14 +-
 .../references/DefaultStringTypeReference.java     |   38 +
 .../references/DefaultTemporalTypeReference.java   |   30 +
 .../mspec/parser/MessageFormatListener.java        |   89 +-
 .../src/test/resources/mspec.example               |    4 +-
 .../src/main/resources/protocols/test/test.mspec   |    2 +-
 jenkins.pom                                        |    2 +-
 plc4j/api/pom.xml                                  |   40 +-
 .../org/apache/plc4x/java/PlcDriverManager.java    |   50 +-
 .../org/apache/plc4x/java/api/Experimental.java    |   26 +
 .../org/apache/plc4x/java/api/PlcConnection.java   |   35 +-
 .../plc4x/java/api/PlcConnectionExtension.java     |   82 ++
 .../java/org/apache/plc4x/java/api/PlcDriver.java  |   60 ++
 .../java/api/authentication/PlcAuthentication.java |   34 +-
 .../PlcUsernamePasswordAuthentication.java         |   34 +-
 .../api/exceptions/PlcConnectionException.java     |   34 +-
 .../plc4x/java/api/exceptions/PlcException.java    |   34 +-
 .../api/exceptions/PlcFieldRangeException.java     |   32 +-
 .../PlcIncompatibleDatatypeException.java          |   39 +-
 .../api/exceptions/PlcInvalidFieldException.java   |   32 +-
 .../plc4x/java/api/exceptions/PlcIoException.java  |   34 +-
 .../api/exceptions/PlcNotImplementedException.java |   32 +-
 .../java/api/exceptions/PlcProtocolException.java  |   34 +-
 .../PlcProtocolPayloadTooBigException.java         |   34 +-
 .../exceptions/PlcProtocolTimeoutException.java    |   39 +
 .../java/api/exceptions/PlcRuntimeException.java   |   34 +-
 .../java/api/exceptions/PlcTimeoutException.java   |   32 +-
 .../PlcUnsupportedDataTypeException.java           |   32 +-
 .../PlcUnsupportedOperationException.java          |   34 +-
 .../PlcUnsupportedProtocolException.java           |   32 +-
 .../plc4x/java/api/messages/PlcFieldRequest.java   |   34 +-
 .../plc4x/java/api/messages/PlcFieldResponse.java  |   34 +-
 .../apache/plc4x/java/api/messages/PlcMessage.java |   34 +-
 .../plc4x/java/api/messages/PlcReadRequest.java    |   34 +-
 .../plc4x/java/api/messages/PlcReadResponse.java   |   50 +-
 .../apache/plc4x/java/api/messages/PlcRequest.java |   34 +-
 .../plc4x/java/api/messages/PlcRequestBuilder.java |   34 +-
 .../plc4x/java/api/messages/PlcResponse.java       |   34 +-
 .../java/api/messages/PlcSubscriptionEvent.java    |   34 +-
 .../java/api/messages/PlcSubscriptionRequest.java  |   34 +-
 .../java/api/messages/PlcSubscriptionResponse.java |   34 +-
 .../api/messages/PlcUnsubscriptionRequest.java     |   34 +-
 .../api/messages/PlcUnsubscriptionResponse.java    |   34 +-
 .../plc4x/java/api/messages/PlcWriteRequest.java   |   38 +-
 .../plc4x/java/api/messages/PlcWriteResponse.java  |   34 +-
 .../java/api/metadata/PlcConnectionMetadata.java   |   34 +-
 .../java/api/model/PlcConsumerRegistration.java    |   32 +-
 .../org/apache/plc4x/java/api/model/PlcField.java  |   34 +-
 .../java/api/model/PlcSubscriptionHandle.java      |   34 +-
 .../plc4x/java/api/types/PlcClientDatatype.java    |   34 +-
 .../plc4x/java/api/types/PlcResponseCode.java      |   34 +-
 .../plc4x/java/api/types/PlcSubscriptionType.java  |   34 +-
 .../apache/plc4x/java/api/value/PlcBigDecimal.java |  136 +++
 .../apache/plc4x/java/api/value/PlcBigInteger.java |  136 +++
 .../apache/plc4x/java/api/value/PlcBoolean.java    |  130 +++
 .../org/apache/plc4x/java/api/value/PlcDate.java   |   55 +
 .../apache/plc4x/java/api/value/PlcDateTime.java   |   77 ++
 .../org/apache/plc4x/java/api/value/PlcDouble.java |  140 +++
 .../org/apache/plc4x/java/api/value/PlcFloat.java  |  140 +++
 .../apache/plc4x/java/api/value/PlcInteger.java    |  156 +++
 .../org/apache/plc4x/java/api/value/PlcList.java   |   72 ++
 .../org/apache/plc4x/java/api/value/PlcLong.java   |  140 +++
 .../plc4x/java/api/value/PlcSimpleValue.java       |   57 ++
 .../org/apache/plc4x/java/api/value/PlcString.java |   68 ++
 .../org/apache/plc4x/java/api/value/PlcStruct.java |   70 ++
 .../org/apache/plc4x/java/api/value/PlcTime.java   |   55 +
 .../org/apache/plc4x/java/api/value/PlcValue.java  |  142 +++
 .../plc4x/java/api/value/PlcValueAdapter.java      |  248 +++++
 .../org/apache/plc4x/java/api/value/PlcValues.java |  379 +++++++
 .../java/org/apache/plc4x/java/spi/PlcDriver.java  |   61 --
 .../apache/plc4x/java/PlcDriverManagerTest.java    |   47 +-
 .../PlcUsernamePasswordAuthenticationTest.java     |   39 +-
 .../plc4x/java/api/connection/PlcReaderTest.java   |   32 +-
 .../plc4x/java/api/connection/PlcWriterTest.java   |   32 +-
 .../api/exceptions/PlcConnectionExceptionTest.java |   32 +-
 .../java/api/exceptions/PlcExceptionTest.java      |   32 +-
 .../api/exceptions/PlcFieldRangeExceptionTest.java |   32 +-
 .../PlcIncompatibleDatatypeExceptionTest.java      |   32 +-
 .../exceptions/PlcInvalidFieldExceptionTest.java   |   32 +-
 .../java/api/exceptions/PlcIoExceptionTest.java    |   32 +-
 .../exceptions/PlcNotImplementedExceptionTest.java |   32 +-
 .../api/exceptions/PlcProtocolExceptionTest.java   |   32 +-
 .../PlcProtocolPayloadTooBigExceptionTest.java     |   32 +-
 .../api/exceptions/PlcRuntimeExceptionTest.java    |   32 +-
 .../api/exceptions/PlcTimeoutExceptionTest.java    |   32 +-
 .../PlcUnsupportedDataTypeExceptionTest.java       |   32 +-
 .../PlcUnsupportedOperationExceptionTest.java      |   32 +-
 .../plc4x/java/api/messages/APIMessageTests.java   |   34 +-
 .../api/messages/PlcProprietaryRequestTest.java    |   32 +-
 .../api/messages/PlcProprietaryResponseTest.java   |   32 +-
 .../java/api/messages/PlcReadRequestTest.java      |   32 +-
 .../java/api/messages/PlcReadResponseTest.java     |   32 +-
 .../plc4x/java/api/messages/PlcRequestTest.java    |   32 +-
 .../plc4x/java/api/messages/PlcResponseTest.java   |   32 +-
 .../api/messages/PlcSubscriptionEventTest.java     |   32 +-
 .../api/messages/PlcSubscriptionRequestTest.java   |   32 +-
 .../api/messages/PlcSubscriptionResponseTest.java  |   32 +-
 .../api/messages/PlcUnsubscriptionRequestTest.java |   32 +-
 .../messages/PlcUnsubscriptionResponseTest.java    |   32 +-
 .../java/api/messages/PlcWriteRequestTest.java     |   32 +-
 .../java/api/messages/PlcWriteResponseTest.java    |   32 +-
 .../plc4x/java/api/messages/mock/MockField.java    |   34 +-
 .../specific/TypeSafePlcReadRequestTest.java       |   32 +-
 .../specific/TypeSafePlcReadResponseTest.java      |   32 +-
 .../specific/TypeSafePlcWriteRequestTest.java      |   32 +-
 .../specific/TypeSafePlcWriteResponseTest.java     |   32 +-
 .../java/api/types/PlcClientDatatypeTest.java      |   32 +-
 .../plc4x/java/api/types/PlcResponseCodeTest.java  |   32 +-
 .../java/api/types/PlcSubscriptionTypeTest.java    |   32 +-
 .../apache/plc4x/java/api/types/PlcValueTest.java  |   53 +
 .../apache/plc4x/java/api/value/PlcValuesTest.java |   52 +
 .../org/apache/plc4x/java/mock/ApiMockDriver.java  |   55 +
 .../plc4x/java/mock/DuplicateMockDriver.java       |   34 +-
 .../org/apache/plc4x/java/mock/MockDriver.java     |   55 -
 .../apache/plc4x/java/mock/MockPlcConnection.java  |   32 +-
 .../services/org.apache.plc4x.java.api.PlcDriver   |   38 +
 .../services/org.apache.plc4x.java.api.PlcDriver   |   38 +
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   19 -
 plc4j/drivers/ab-eth/pom.xml                       |   24 +-
 .../org/apache/plc4x/java/abeth/AbEthDriver.java   |   60 +-
 .../abeth/configuration/AbEthConfiguration.java    |   44 +
 .../java/abeth/connection/AbEthFieldHandler.java   |   36 -
 .../java/abeth/connection/AbEthPlcConnection.java  |  159 ---
 .../apache/plc4x/java/abeth/field/AbEthField.java  |  105 ++
 .../plc4x/java/abeth/field/AbEthFieldHandler.java  |   35 +
 .../apache/plc4x/java/abeth/model/AbEthField.java  |  105 --
 .../plc4x/java/abeth/model/types/FileType.java     |   65 --
 .../plc4x/java/abeth/protocol/AbEthProtocol.java   |   61 --
 .../java/abeth/protocol/AbEthProtocolLogic.java    |  221 +++++
 .../java/abeth/protocol/Plc4xAbEthProtocol.java    |   51 +-
 .../apache/plc4x/java/abeth/types/FileType.java    |   65 ++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../org/apache/plc4x/protocol/abeth/AbEthTest.java |    2 +-
 .../test/resources/testsuite/AbEthTestsuite.xml    |    2 +-
 plc4j/drivers/ads/pom.xml                          |   15 +-
 .../org/apache/plc4x/java/ads/AdsPlcDriver.java    |    2 +-
 .../ads/connection/AdsAbstractPlcConnection.java   |   39 +-
 .../ads/connection/AdsSerialPlcConnection.java     |    4 +-
 .../java/ads/connection/AdsTcpPlcConnection.java   |   23 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/ads/adslib/AmsRequest.java   |    4 +-
 .../apache/plc4x/java/ads/adslib/AmsRouter.java    |    4 +-
 .../connection/AdsAbstractPlcConnectionTest.java   |   16 +-
 .../ads/connection/AdsConnectionFactoryTest.java   |    6 +-
 .../ads/connection/AdsSerialPlcConnectionTest.java |    6 +-
 .../ads/connection/AdsTcpPlcConnectionTests.java   |    6 +-
 plc4j/drivers/ethernet-ip/pom.xml                  |    9 +-
 .../plc4x/java/ethernetip/EtherNetIpPlcDriver.java |    2 +-
 .../connection/BaseEtherNetIpPlcConnection.java    |    6 +-
 .../connection/EtherNetIpTcpPlcConnection.java     |    9 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/drivers/mock/pom.xml                         |   74 ++
 .../org/apache/plc4x/java/mock/MockDriver.java     |   63 ++
 .../plc4x/java/mock/connection/MockConnection.java |  207 ++++
 .../plc4x/java/mock/connection/MockDevice.java     |   51 +
 .../java/mock/connection/tcp/TcpHexDumper.java     |    0
 .../apache/plc4x/java/mock/field/MockField.java    |   62 ++
 .../plc4x/java/mock/field/MockFieldHandler.java    |   98 ++
 .../apache/plc4x/java/mock/field/MockPlcValue.java |   36 +
 .../mock/protocol/Plc4XSupportedDataTypes.java     |    0
 .../org/apache/plc4x/java/mock/util/Assert.java    |    0
 .../org/apache/plc4x/java/mock/util/HexUtil.java   |    0
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 plc4j/drivers/modbus/pom.xml                       |   17 +-
 .../apache/plc4x/java/modbus/ModbusPlcDriver.java  |    2 +-
 .../modbus/connection/BaseModbusPlcConnection.java |   14 +-
 .../connection/ModbusSerialPlcConnection.java      |    2 +-
 .../modbus/connection/ModbusTcpPlcConnection.java  |    7 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../connection/BaseModbusPlcConnectionTest.java    |    6 +-
 .../connection/ModbusConnectionFactoryTest.java    |    6 +-
 .../connection/ModbusSerialPlcConnectionTest.java  |    6 +-
 plc4j/drivers/opcua/pom.xml                        |    6 +-
 .../apache/plc4x/java/opcua/OpcuaPlcDriver.java    |    2 +-
 .../opcua/connection/BaseOpcuaPlcConnection.java   |    4 +-
 .../opcua/connection/OpcuaTcpPlcConnection.java    |   52 +-
 .../java/opcua/protocol/OpcuaPlcFieldHandler.java  |   94 +-
 .../opcua/protocol/OpcuaSubsriptionHandle.java     |   12 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/opcua/ManualPLC4XOpcua.java  |    4 +-
 plc4j/drivers/pom.xml                              |    9 +-
 plc4j/drivers/s7/pom.xml                           |   19 +-
 .../java/org/apache/plc4x/java/s7/S7PlcDriver.java |    2 +-
 .../plc4x/java/s7/connection/S7PlcConnection.java  |   33 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../java/org/apache/plc4x/java/s7/BenchmarkS7.java |    5 +-
 .../java/s7/connection/S7PlcTestConnection.java    |    2 +-
 plc4j/drivers/simulated/pom.xml                    |   12 +-
 .../plc4x/java/simulated/SimulatedDriver.java      |   65 ++
 .../plc4x/java/simulated/SimulatedPlcDriver.java   |   65 --
 .../simulated/connection/SimulatedConnection.java  |  254 +++++
 .../java/simulated/connection/SimulatedDevice.java |  194 ++++
 .../connection/SimulatedPlcConnection.java         |  219 ----
 .../java/simulated/connection/TestDevice.java      |  199 ----
 .../plc4x/java/simulated/connection/TestField.java |  128 ---
 .../simulated/connection/TestFieldHandler.java     |  174 ----
 .../java/simulated/connection/TestFieldItem.java   |   35 -
 .../plc4x/java/simulated/connection/TestType.java  |   28 -
 .../plc4x/java/simulated/field/SimulatedField.java |  129 +++
 .../simulated/field/SimulatedFieldHandler.java     |  214 ++++
 .../java/simulated/types/SimulatedFieldType.java   |   28 +
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   38 -
 .../plc4x/java/simulated/SimulatedDriverTest.java  |   58 ++
 .../java/simulated/SimulatedPlcDriverTest.java     |   57 --
 .../connection/SimulatedConnectionTest.java        |  245 +++++
 .../simulated/connection/SimulatedDeviceTest.java  |   57 ++
 .../connection/SimulatedPlcConnectionTest.java     |  245 -----
 .../java/simulated/connection/TestDeviceTest.java  |   56 --
 .../simulated/connection/TestFieldHandlerTest.java |  133 ---
 .../simulated/connection/TestFieldItemTest.java    |   31 -
 .../java/simulated/connection/TestFieldTest.java   |   61 --
 .../simulated/field/SimularedFieldHandlerTest.java |  128 +++
 .../java/simulated/field/SimulatedFieldTest.java   |   62 ++
 plc4j/examples/dummy-driver/pom.xml                |    5 +-
 .../java/examples/dummydriver/DummyDriver.java     |    2 +-
 .../dummydriver/connection/DummyConnection.java    |   14 +-
 .../examples/dummydriver/netty/DummyProtocol.java  |    2 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/examples/hello-cloud-azure/pom.xml           |    8 +-
 plc4j/examples/hello-cloud-google/pom.xml          |    8 +-
 plc4j/examples/hello-connectivity-kafka/pom.xml    |    8 +-
 plc4j/examples/hello-connectivity-mqtt/pom.xml     |    8 +-
 plc4j/examples/hello-integration-edgent/pom.xml    |    8 +-
 plc4j/examples/hello-integration-iotdb/pom.xml     |    8 +-
 .../java/examples/integration/iotdb/PlcLogger.java |    2 +-
 plc4j/examples/hello-opm/pom.xml                   |    8 +-
 plc4j/examples/hello-storage-elasticsearch/pom.xml |    8 +-
 plc4j/examples/hello-webapp/service/pom.xml        |    8 +-
 plc4j/examples/hello-world-plc4x/pom.xml           |   15 +-
 .../plc4x/java/examples/helloplc4x/HelloPlc4x.java |   13 +-
 .../src/main/resources/logback.xml                 |    2 +-
 plc4j/examples/pom.xml                             |    2 +-
 plc4j/integrations/apache-calcite/pom.xml          |    1 -
 .../java/org/apache/plc4x/DriverManagerTest.java   |    1 -
 .../java/org/apache/plc4x/Plc4XBaseTableTest.java  |    2 +-
 .../apache-calcite/src/test/resources/example.yml  |    4 +-
 plc4j/integrations/apache-camel/pom.xml            |    6 +-
 .../java/org/apache/plc4x/camel/MockDriver.java    |   15 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/integrations/apache-edgent/pom.xml           |   19 +-
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |    4 +-
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |  551 ++++++++++
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  144 +++
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |  552 -----------
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  144 ---
 .../apache/plc4x/edgent/mock/MockConnection.java   |  155 ---
 .../org/apache/plc4x/edgent/mock/MockDriver.java   |   48 -
 .../org/apache/plc4x/edgent/mock/MockField.java    |   62 --
 .../apache/plc4x/edgent/mock/MockFieldHandler.java |  104 --
 .../apache/plc4x/edgent/mock/MockFieldItem.java    |   34 -
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   19 -
 plc4j/integrations/apache-kafka/README.md          |    2 +-
 plc4j/integrations/apache-kafka/pom.xml            |    8 +-
 .../apache-nifi/nifi-plc4x-nar/pom.xml             |    8 +-
 plc4j/integrations/logstash-plugin/pom.xml         |    8 +-
 plc4j/karaf-features/pom.xml                       |    4 +-
 .../karaf-features/s7/src/main/feature/feature.xml |    5 +-
 plc4j/pom.xml                                      |    9 +-
 plc4j/protocols/ads/pom.xml                        |    9 +-
 .../plc4x/java/ads/api/serial/AmsSerialFrame.java  |    2 +-
 .../plc4x/java/ads/model/AdsPlcFieldHandler.java   |  168 ++--
 .../java/ads/model/AdsSubscriptionHandle.java      |    4 +-
 .../plc4x/java/ads/protocol/Plc4x2AdsProtocol.java |   29 +-
 .../ads/protocol/util/LittleEndianDecoder.java     |  206 +++-
 .../protocol/util/SingleMessageRateLimiter.java    |    2 +-
 .../protocol/util/LittleEndianDecoderSpec.groovy   |   99 --
 .../util/LittleEndianDecoderSpecHurz.groovy        |   99 ++
 .../protocol/util/LittleEndianEncoderSpec.groovy   |   53 -
 .../util/LittleEndianEncoderSpecHurz.groovy        |   53 +
 .../java/ads/model/AdsPlcFieldHandlerTest.java     |    5 +-
 ...load2SerialProtocolExampleConversationTest.java |    8 +-
 .../java/ads/protocol/Plc4x2AdsProtocolTest.java   |    4 +-
 .../java/ads/protocol/util/DigestUtilTest.java     |    5 +-
 plc4j/protocols/driver-bases/base/pom.xml          |  101 --
 .../base/GeneratedDriverByteToMessageCodec.java    |   79 --
 .../plc4x/java/base/PlcByteToMessageCodec.java     |   59 --
 .../plc4x/java/base/PlcMessageToMessageCodec.java  |   60 --
 .../base/connection/AbstractPlcConnection.java     |  105 --
 .../plc4x/java/base/connection/ChannelFactory.java |   33 -
 .../base/connection/DefaultPlcFieldHandler.java    |  101 --
 .../java/base/connection/NettyPlcConnection.java   |  132 ---
 .../java/base/connection/PlcFieldHandler.java      |   60 --
 .../plc4x/java/base/events/ConnectEvent.java       |   22 -
 .../plc4x/java/base/events/ConnectedEvent.java     |   22 -
 .../plc4x/java/base/events/DisconnectEvent.java    |   39 -
 .../plc4x/java/base/events/DisconnectedEvent.java  |   22 -
 .../messages/DefaultPlcProprietaryRequest.java     |   43 -
 .../messages/DefaultPlcProprietaryResponse.java    |   42 -
 .../java/base/messages/DefaultPlcReadRequest.java  |  113 ---
 .../java/base/messages/DefaultPlcReadResponse.java |  583 -----------
 .../base/messages/DefaultPlcSubscriptionEvent.java |   55 -
 .../messages/DefaultPlcSubscriptionRequest.java    |  168 ----
 .../messages/DefaultPlcSubscriptionResponse.java   |   90 --
 .../messages/DefaultPlcUnsubscriptionRequest.java  |   90 --
 .../messages/DefaultPlcUnsubscriptionResponse.java |   36 -
 .../java/base/messages/DefaultPlcWriteRequest.java |  275 -----
 .../base/messages/DefaultPlcWriteResponse.java     |   62 --
 .../base/messages/InternalPlcFieldRequest.java     |   31 -
 .../base/messages/InternalPlcFieldResponse.java    |   26 -
 .../java/base/messages/InternalPlcMessage.java     |   23 -
 .../messages/InternalPlcProprietaryRequest.java    |   22 -
 .../messages/InternalPlcProprietaryResponse.java   |   22 -
 .../java/base/messages/InternalPlcReadRequest.java |   26 -
 .../base/messages/InternalPlcReadResponse.java     |   31 -
 .../java/base/messages/InternalPlcRequest.java     |   24 -
 .../java/base/messages/InternalPlcResponse.java    |   25 -
 .../messages/InternalPlcSubscriptionEvent.java     |   25 -
 .../messages/InternalPlcSubscriptionRequest.java   |   36 -
 .../messages/InternalPlcSubscriptionResponse.java  |   30 -
 .../messages/InternalPlcUnsubscriptionRequest.java |   29 -
 .../InternalPlcUnsubscriptionResponse.java         |   25 -
 .../base/messages/InternalPlcWriteRequest.java     |   36 -
 .../base/messages/InternalPlcWriteResponse.java    |   28 -
 .../java/base/messages/PlcProprietaryRequest.java  |   25 -
 .../java/base/messages/PlcProprietaryResponse.java |   25 -
 .../java/base/messages/PlcProprietarySender.java   |   25 -
 .../java/base/messages/PlcProtocolMessage.java     |   25 -
 .../plc4x/java/base/messages/PlcRawMessage.java    |   46 -
 .../apache/plc4x/java/base/messages/PlcReader.java |   40 -
 .../java/base/messages/PlcRequestContainer.java    |   85 --
 .../plc4x/java/base/messages/PlcSubscriber.java    |   63 --
 .../apache/plc4x/java/base/messages/PlcWriter.java |   40 -
 .../base/messages/items/BaseDefaultFieldItem.java  |  193 ----
 .../messages/items/DefaultBigDecimalFieldItem.java |  171 ----
 .../messages/items/DefaultBigIntegerFieldItem.java |  171 ----
 .../messages/items/DefaultBooleanFieldItem.java    |  184 ----
 .../messages/items/DefaultByteArrayFieldItem.java  |   58 --
 .../base/messages/items/DefaultByteFieldItem.java  |  151 ---
 .../messages/items/DefaultDoubleFieldItem.java     |  158 ---
 .../base/messages/items/DefaultFloatFieldItem.java |  156 ---
 .../messages/items/DefaultIntegerFieldItem.java    |  153 ---
 .../messages/items/DefaultLocalDateFieldItem.java  |   50 -
 .../items/DefaultLocalDateTimeFieldItem.java       |   78 --
 .../messages/items/DefaultLocalTimeFieldItem.java  |   50 -
 .../base/messages/items/DefaultLongFieldItem.java  |  154 ---
 .../base/messages/items/DefaultShortFieldItem.java |  151 ---
 .../messages/items/DefaultStringFieldItem.java     |   48 -
 .../base/model/DefaultPlcConsumerRegistration.java |   85 --
 .../base/model/DefaultPlcSubscriptionHandle.java   |   62 --
 .../model/InternalPlcConsumerRegistration.java     |   32 -
 .../base/model/InternalPlcSubscriptionHandle.java  |   25 -
 .../java/base/model/SubscriptionPlcField.java      |   55 -
 .../SingleItemToSingleRequestProtocol.java         |  647 ------------
 .../messages/DefaultPlcReadResponseSpec.groovy     |   86 --
 .../base/messages/items/DefaultItemsSpec.groovy    |  217 ----
 .../base/connection/AbstractPlcConnectionTest.java |  101 --
 .../base/connection/NettyPlcConnectionTest.java    |   92 --
 .../messages/DefaultPlcProprietaryRequestTest.java |   48 -
 .../DefaultPlcProprietaryResponseTest.java         |   50 -
 .../base/messages/DefaultPlcReadRequestTest.java   |  116 ---
 .../base/messages/DefaultPlcReadResponseTest.java  |  120 ---
 .../messages/DefaultPlcSubscriptionEventTest.java  |   68 --
 .../DefaultPlcSubscriptionRequestTest.java         |  157 ---
 .../DefaultPlcSubscriptionResponseTest.java        |  124 ---
 .../DefaultPlcUnsubscriptionRequestTest.java       |   91 --
 .../DefaultPlcUnsubscriptionResponseTest.java      |   48 -
 .../base/messages/DefaultPlcWriteRequestTest.java  |   70 --
 .../base/messages/DefaultPlcWriteResponseTest.java |   91 --
 .../java/base/messages/PlcRawMessageTest.java      |   57 --
 .../base/messages/PlcRequestContainerTest.java     |   82 --
 .../messages/items/DefaultLongFieldItemTest.java   |  114 ---
 .../model/DefaultPlcConsumerRegistrationTest.java  |   88 --
 .../model/DefaultPlcSubscriptionHandleTest.java    |   73 --
 .../java/base/model/SubscriptionPlcFieldTest.java  |   68 --
 .../SingleItemToSingleRequestProtocolTest.java     |  729 --------------
 ...spockframework.report.IReportCreator.properties |   66 --
 plc4j/protocols/driver-bases/pcap-socket/pom.xml   |   67 --
 .../java/base/connection/PcapChannelFactory.java   |  101 --
 plc4j/protocols/driver-bases/pom.xml               |   46 -
 plc4j/protocols/driver-bases/raw-socket/pom.xml    |   67 --
 .../base/connection/RawSocketChannelFactory.java   |  110 --
 plc4j/protocols/driver-bases/serial/pom.xml        |   81 --
 .../connection/connection/SerialChannel.java       |  635 ------------
 .../connection/SerialChannelFactory.java           |   83 --
 .../connection/SerialChannelHandler.java           |  172 ----
 .../connection/SerialPollingSelector.java          |  176 ----
 .../connection/connection/SerialSelectionKey.java  |   80 --
 .../connection/SerialSelectorProvider.java         |   68 --
 .../connection/connection/SerialSocketAddress.java |   47 -
 .../connection/connection/SerialSocketChannel.java |  158 ---
 .../base/connection/SerialChannelFactoryTest.java  |  111 ---
 plc4j/protocols/driver-bases/tcp/pom.xml           |   62 --
 .../tcp/connection/TcpSocketChannelFactory.java    |  112 ---
 plc4j/protocols/driver-bases/test/pom.xml          |   97 --
 .../org/apache/plc4x/java/mock/MockDevice.java     |   50 -
 .../java/org/apache/plc4x/java/mock/MockField.java |   49 -
 .../apache/plc4x/java/mock/MockFieldHandler.java   |  103 --
 .../org/apache/plc4x/java/mock/MockFieldItem.java  |   34 -
 .../apache/plc4x/java/mock/PlcMockConnection.java  |  193 ----
 .../org/apache/plc4x/java/mock/PlcMockDriver.java  |   62 --
 .../plc4x/java/mock/connection/MockConnection.java |   41 -
 .../java/mock/connection/TestChannelFactory.java   |   45 -
 .../plc4x/java/mock/MockFieldHandlerTest.java      |  111 ---
 .../apache/plc4x/java/mock/MockFieldItemTest.java  |   31 -
 .../org/apache/plc4x/java/mock/MockFieldTest.java  |   48 -
 .../plc4x/java/mock/PlcMockConnectionTest.java     |  164 ---
 .../apache/plc4x/java/mock/PlcMockDriverTest.java  |   96 --
 plc4j/protocols/driver-bases/udp/pom.xml           |   70 --
 .../base/connection/UdpSocketChannelFactory.java   |  110 --
 .../protocol/DatagramUnpackingHandler.java         |   39 -
 plc4j/protocols/ethernet-ip/pom.xml                |    2 +-
 .../ethernetip/netty/Plc4XEtherNetIpProtocol.java  |   16 +-
 .../ethernetip/netty/util/EnipPlcFieldHandler.java |   28 +-
 plc4j/protocols/iso-on-tcp/pom.xml                 |    6 +-
 .../java/isoontcp/protocol/IsoOnTcpProtocol.java   |    4 +-
 .../isoontcp/protocol/model/IsoOnTcpMessage.java   |    2 +-
 plc4j/protocols/iso-tp/pom.xml                     |    3 +-
 .../plc4x/java/isotp/protocol/IsoTPProtocol.java   |    4 +-
 .../java/isotp/protocol/model/IsoTPMessage.java    |    2 +-
 .../java/isotp/protocol/model/tpdus/DataTpdu.java  |    2 +-
 .../java/isotp/protocol/model/tpdus/Tpdu.java      |    4 +-
 plc4j/protocols/modbus/pom.xml                     |    9 +-
 .../items/DefaultModbusByteArrayFieldItem.java     |  258 -----
 .../items/DefaultModbusByteArrayPlcList.java       |  218 ++++
 .../java/modbus/netty/Plc4XModbusProtocol.java     |   82 +-
 .../java/modbus/util/ModbusPlcFieldHandler.java    |   33 +-
 .../plc4x/java/modbus/ManualPlc4XModbusTest.java   |    6 +-
 .../items/DefaultModbusByteArrayFieldItemTest.java |  170 ----
 .../items/DefaultModbusByteArrayPlcValueTest.java  |  170 ++++
 .../java/modbus/netty/Plc4XModbusProtocolTest.java |   57 +-
 plc4j/protocols/pom.xml                            |    5 +-
 plc4j/protocols/s7/pom.xml                         |    3 +-
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |  337 ++++---
 .../java/s7/netty/model/messages/S7Message.java    |    4 +-
 .../s7/netty/model/messages/S7RequestMessage.java  |    2 +-
 .../messages/SetupCommunicationRequestMessage.java |    2 +-
 .../strategies/DefaultS7MessageProcessor.java      |    2 +-
 .../java/s7/netty/util/S7PlcFieldHandler.java      |  142 +--
 .../plc4x/java/s7/netty/Plc4XS7ProtocolSpec.groovy |   14 +-
 .../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java   |    2 +-
 .../java/s7/netty/util/S7PlcFieldHandlerTest.java  |   44 +-
 plc4j/spi/pom.xml                                  |   86 ++
 .../github/jinahya/bit/io/MyDefaultBitInput.java   |    0
 .../apache/plc4x/java/spi/ConversationContext.java |   86 ++
 .../spi/GeneratedDriverByteToMessageCodec.java     |   90 ++
 .../apache/plc4x/java/spi/Plc4xNettyWrapper.java   |  204 ++++
 .../apache/plc4x/java/spi/Plc4xProtocolBase.java   |   80 ++
 .../plc4x/java/spi/PlcMessageToMessageCodec.java   |   60 ++
 .../java/spi/configuration/Configuration.java      |   23 +
 .../spi/configuration/ConfigurationFactory.java    |  241 +++++
 .../java/spi/configuration/HasConfiguration.java   |   38 +
 .../annotations/ConfigurationParameter.java        |   33 +
 .../spi/configuration/annotations/Required.java    |   30 +
 .../annotations/defaults/BooleanDefaultValue.java  |   33 +
 .../annotations/defaults/DoubleDefaultValue.java   |   33 +
 .../annotations/defaults/IntDefaultValue.java      |   33 +
 .../annotations/defaults/StringDefaultValue.java   |   33 +
 .../java/spi/connection/AbstractPlcConnection.java |  193 ++++
 .../plc4x/java/spi/connection/ChannelFactory.java  |   37 +
 .../spi/connection/DefaultNettyPlcConnection.java  |  187 ++++
 .../spi/connection/DefaultPlcFieldHandler.java     |   97 ++
 .../java/spi/connection/GeneratedDriverBase.java   |  131 +++
 .../connection/GeneratedProtocolMessageCodec.java  |   72 ++
 .../java/spi/connection/NettyChannelFactory.java   |  157 +++
 .../apache/plc4x/java/spi/connection/Parser.java   |   29 +
 .../plc4x/java/spi/connection/PlcFieldHandler.java |   58 ++
 .../spi/connection/ProtocolStackConfigurer.java    |   31 +
 .../java/spi/connection/ReflectionBasedIo.java     |   67 ++
 .../plc4x/java/spi/connection/Serializer.java      |   29 +
 .../connection/SingleProtocolStackConfigurer.java  |  136 +++
 .../java/spi/events/CloseConnectionEvent.java      |   23 +
 .../apache/plc4x/java/spi/events/ConnectEvent.java |   22 +
 .../plc4x/java/spi/events/ConnectedEvent.java      |   22 +
 .../plc4x/java/spi/events/DisconnectEvent.java     |   39 +
 .../plc4x/java/spi/events/DisconnectedEvent.java   |   22 +
 .../exceptions/InternalPlcRuntimeException.java    |   41 +
 .../java/spi/generation/EvaluationHelper.java      |   58 ++
 .../apache/plc4x/java/spi/generation/Message.java  |   26 +
 .../plc4x/java/spi/generation/MessageIO.java       |   23 +
 .../plc4x/java/spi/generation/MessageInput.java    |   25 +
 .../plc4x/java/spi/generation/MessageOutput.java   |   25 +
 .../plc4x/java/spi/generation/ParseException.java  |   32 +
 .../plc4x/java/spi/generation/ReadBuffer.java      |  265 +++++
 .../plc4x/java/spi/generation/StaticHelper.java    |   79 ++
 .../plc4x/java/spi/generation/WriteBuffer.java     |  212 ++++
 .../spi/internal/DefaultSendRequestContext.java    |  138 +++
 .../java/spi/internal/HandlerRegistration.java     |   86 ++
 .../spi/messages/DefaultPlcProprietaryRequest.java |   43 +
 .../messages/DefaultPlcProprietaryResponse.java    |   42 +
 .../java/spi/messages/DefaultPlcReadRequest.java   |  118 +++
 .../java/spi/messages/DefaultPlcReadResponse.java  |  616 ++++++++++++
 .../spi/messages/DefaultPlcSubscriptionEvent.java  |   55 +
 .../messages/DefaultPlcSubscriptionRequest.java    |  173 ++++
 .../messages/DefaultPlcSubscriptionResponse.java   |   90 ++
 .../messages/DefaultPlcUnsubscriptionRequest.java  |   90 ++
 .../messages/DefaultPlcUnsubscriptionResponse.java |   36 +
 .../java/spi/messages/DefaultPlcWriteRequest.java  |  276 ++++++
 .../java/spi/messages/DefaultPlcWriteResponse.java |   62 ++
 .../java/spi/messages/InternalPlcFieldRequest.java |   31 +
 .../spi/messages/InternalPlcFieldResponse.java     |   26 +
 .../java/spi/messages/InternalPlcMessage.java      |   23 +
 .../messages/InternalPlcProprietaryRequest.java    |   22 +
 .../messages/InternalPlcProprietaryResponse.java   |   22 +
 .../java/spi/messages/InternalPlcReadRequest.java  |   26 +
 .../java/spi/messages/InternalPlcReadResponse.java |   32 +
 .../java/spi/messages/InternalPlcRequest.java      |   24 +
 .../java/spi/messages/InternalPlcResponse.java     |   25 +
 .../spi/messages/InternalPlcSubscriptionEvent.java |   25 +
 .../messages/InternalPlcSubscriptionRequest.java   |   36 +
 .../messages/InternalPlcSubscriptionResponse.java  |   30 +
 .../messages/InternalPlcUnsubscriptionRequest.java |   29 +
 .../InternalPlcUnsubscriptionResponse.java         |   25 +
 .../java/spi/messages/InternalPlcWriteRequest.java |   36 +
 .../spi/messages/InternalPlcWriteResponse.java     |   28 +
 .../java/spi/messages/PlcProprietaryRequest.java   |   25 +
 .../java/spi/messages/PlcProprietaryResponse.java  |   25 +
 .../java/spi/messages/PlcProprietarySender.java    |   25 +
 .../java/spi/messages/PlcProtocolMessage.java      |   25 +
 .../plc4x/java/spi/messages/PlcRawMessage.java     |   46 +
 .../apache/plc4x/java/spi/messages/PlcReader.java  |   40 +
 .../java/spi/messages/PlcRequestContainer.java     |   85 ++
 .../plc4x/java/spi/messages/PlcSubscriber.java     |   63 ++
 .../apache/plc4x/java/spi/messages/PlcWriter.java  |   40 +
 .../spi/model/DefaultPlcConsumerRegistration.java  |   85 ++
 .../spi/model/DefaultPlcSubscriptionHandle.java    |   62 ++
 .../spi/model/InternalPlcConsumerRegistration.java |   32 +
 .../spi/model/InternalPlcSubscriptionHandle.java   |   25 +
 .../plc4x/java/spi/model/SubscriptionPlcField.java |   55 +
 .../spi/optimizer/RequestTransactionManager.java   |  194 ++++
 .../SingleItemToSingleRequestProtocol.java         |  668 +++++++++++++
 .../apache/plc4x/java/spi/request/PlcRequest.java  |   28 +
 .../apache/plc4x/java/spi/transport/Transport.java |   32 +
 .../java/spi/transport/TransportConfiguration.java |   25 +
 .../org/apache/plc4x/java/spi/types/FieldType.java |   47 +
 .../internal/DefaultSendRequestContextTest.java    |  116 +++
 .../optimizer/RequestTransactionManagerTest.java   |  170 ++++
 .../java/spi/parser/ConnectionParserTest.java      |   72 ++
 plc4j/tools/connection-pool/pom.xml                |   52 +
 .../plc4x/java/utils/connectionpool/PoolKey.java   |    0
 .../java/utils/connectionpool/PoolKeyFactory.java  |    0
 .../connectionpool/PooledPlcConnectionFactory.java |    0
 .../connectionpool/PooledPlcDriverManager.java     |    0
 .../utils/connectionpool/PoolKeyFactoryTest.java   |    0
 .../utils/connectionpool/PooledDummyDriver.java    |   52 +
 .../connectionpool/PooledPlcDriverManagerTest.java |  367 +++++++
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 .../connection-pool/src/test/resources/logback.xml |    0
 plc4j/tools/interop/pom.xml                        |  217 ++++
 .../interop/src/assembly/assembly.xml              |    0
 .../java/org/apache/plc4x/interop/impl/Client.java |    0
 .../org/apache/plc4x/interop/impl/Handler.java     |  163 +++
 .../java/org/apache/plc4x/interop/impl/Server.java |   97 ++
 plc4j/tools/opm/pom.xml                            |   94 ++
 .../org/apache/plc4x/java/opm/AliasRegistry.java   |    0
 .../org/apache/plc4x/java/opm/OPMException.java    |    0
 .../java/org/apache/plc4x/java/opm/OpmUtils.java   |    0
 .../java/org/apache/plc4x/java/opm/PlcEntity.java  |    0
 .../plc4x/java/opm/PlcEntityInterceptor.java       |  565 +++++++++++
 .../apache/plc4x/java/opm/PlcEntityManager.java    |    0
 .../java/org/apache/plc4x/java/opm/PlcField.java   |    0
 .../apache/plc4x/java/opm/SimpleAliasRegistry.java |    0
 .../opm/src/site/asciidoc/opm/using-opm.adoc       |    0
 plc4j/{utils => tools}/opm/src/site/site.xml       |    0
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |  119 +++
 .../apache/plc4x/java/opm/OPMExceptionTest.java    |    0
 .../org/apache/plc4x/java/opm/OpmUtilsTest.java    |    0
 .../plc4x/java/opm/PlcEntityInterceptorTest.java   |  233 +++++
 .../java/opm/PlcEntityManagerComplexTest.java      |  470 +++++++++
 .../plc4x/java/opm/PlcEntityManagerTest.java       |  318 ++++++
 .../plc4x/java/opm/SimpleAliasRegistryTest.java    |    0
 .../opm/src/test/resources/logback.xml             |    0
 plc4j/tools/pom.xml                                |   52 +
 plc4j/{utils => tools}/scraper/README.md           |    0
 plc4j/tools/scraper/pom.xml                        |  133 +++
 .../apache/plc4x/java/scraper/ResultHandler.java   |    0
 .../org/apache/plc4x/java/scraper/ScrapeJob.java   |    0
 .../apache/plc4x/java/scraper/ScrapeJobImpl.java   |    0
 .../org/apache/plc4x/java/scraper/Scraper.java     |    0
 .../org/apache/plc4x/java/scraper/ScraperImpl.java |    0
 .../org/apache/plc4x/java/scraper/ScraperTask.java |    0
 .../apache/plc4x/java/scraper/ScraperTaskImpl.java |    0
 .../java/scraper/config/JobConfiguration.java      |    0
 .../config/JobConfigurationClassicImpl.java        |    0
 .../config/JobConfigurationClassicImplBuilder.java |    0
 .../java/scraper/config/JobConfigurationImpl.java  |    0
 .../java/scraper/config/ScraperConfiguration.java  |    0
 .../config/ScraperConfigurationClassicImpl.java    |    0
 .../ScraperConfigurationClassicImplBuilder.java    |    0
 .../JobConfigurationTriggeredImpl.java             |    0
 .../JobConfigurationTriggeredImplBuilder.java      |    0
 .../ScraperConfigurationTriggeredImpl.java         |    0
 .../ScraperConfigurationTriggeredImplBuilder.java  |    0
 .../exception/ScraperConfigurationException.java   |    0
 .../java/scraper/exception/ScraperException.java   |    0
 .../triggeredscraper/TriggeredScrapeJobImpl.java   |    0
 .../triggeredscraper/TriggeredScraperImpl.java     |  366 +++++++
 .../triggeredscraper/TriggeredScraperMBean.java    |    0
 .../triggeredscraper/TriggeredScraperTask.java     |    0
 .../TriggeredScraperTaskMBean.java                 |    0
 .../triggerhandler/TriggerConfiguration.java       |  722 ++++++++++++++
 .../triggerhandler/TriggerHandler.java             |    0
 .../triggerhandler/TriggerHandlerImpl.java         |    0
 .../triggerhandler/collector/TriggerCollector.java |    0
 .../collector/TriggerCollectorImpl.java            |    0
 .../scraper/util/PercentageAboveThreshold.java     |    0
 .../apache/plc4x/java/s7/ManualS7PlcDriverMT.java  |    0
 .../java/scraper/ScraperConfigurationTest.java     |    0
 .../apache/plc4x/java/scraper/ScraperRunner.java   |    0
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |  113 +++
 .../org/apache/plc4x/java/scraper/ScraperTest.java |  175 ++++
 .../plc4x/java/scraper/TriggeredScraperRunner.java |    0
 .../java/scraper/TriggeredScraperRunnerModbus.java |   62 ++
 .../config/ScraperConfigurationBuilderTest.java    |    0
 .../triggeredscraper/TriggeredScraperImplTest.java |  118 +++
 .../triggerhandler/TriggerConfigurationTest.java   |  150 +++
 .../scraper/src/test/resources/config.json         |    0
 .../scraper/src/test/resources/config.yml          |    0
 .../scraper/src/test/resources/example.yml         |    0
 .../test/resources/example_triggered_scraper.yml   |    0
 .../resources/example_triggered_scraper_modbus.yml |    0
 .../src/test/resources/example_with_strings.yml    |    0
 .../scraper/src/test/resources/logback-test.xml    |    0
 .../scraper/src/test/resources/logback.xml         |    0
 .../src/test/resources/mock-scraper-config.yml     |    0
 plc4j/transports/pcap-socket/pom.xml               |   63 ++
 .../java/transport/pcap/PcapChannelFactory.java    |   68 ++
 .../plc4x/java/transport/pcap/PcapTransport.java   |   50 +
 .../transport/pcap/PcapTransportConfiguration.java |   34 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/pom.xml                           |   45 +
 plc4j/transports/raw-socket/pom.xml                |   58 ++
 .../rawsocket/RawSocketChannelFactory.java         |   57 ++
 .../transport/rawsocket/RawSocketTransport.java    |   43 +
 .../rawsocket/RawSocketTransportConfiguration.java |   27 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/serial/pom.xml                    |   83 ++
 .../plc4x/java/transport/serial/SerialChannel.java |  636 ++++++++++++
 .../transport/serial/SerialChannelFactory.java     |   65 ++
 .../transport/serial/SerialChannelHandler.java     |  181 ++++
 .../transport/serial/SerialPollingSelector.java    |  176 ++++
 .../java/transport/serial/SerialSelectionKey.java  |   86 ++
 .../transport/serial/SerialSelectorProvider.java   |   68 ++
 .../java/transport/serial/SerialSocketAddress.java |   50 +
 .../java/transport/serial/SerialSocketChannel.java |  158 +++
 .../java/transport/serial/SerialTransport.java     |   42 +
 .../serial/SerialTransportConfiguration.java       |   25 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 .../base/connection/SerialChannelFactoryTest.java  |  116 +++
 plc4j/transports/tcp/pom.xml                       |   58 ++
 .../java/transport/tcp/TcpChannelFactory.java      |   62 ++
 .../plc4x/java/transport/tcp/TcpTransport.java     |   81 ++
 .../transport/tcp/TcpTransportConfiguration.java   |   49 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/test/pom.xml                      |   84 ++
 .../java/transport/test/TestChannelFactory.java    |   58 ++
 .../java/transport/test/TestSocketAddress.java     |   29 +
 .../plc4x/java/transport/test/TestTransport.java   |   42 +
 .../transport/test/TestTransportConfiguration.java |   25 +
 ...spockframework.report.IReportCreator.properties |    0
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/udp/pom.xml                       |   66 ++
 .../java/transport/udp/UdpChannelFactory.java      |   65 ++
 .../plc4x/java/transport/udp/UdpTransport.java     |   81 ++
 .../transport/udp/UdpTransportConfiguration.java   |   31 +
 .../udp/protocol/DatagramUnpackingHandler.java     |   39 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/utils/connection-pool/pom.xml                |   51 -
 .../utils/connectionpool/PooledDummyDriver.java    |   52 -
 .../connectionpool/PooledPlcDriverManagerTest.java |  367 -------
 plc4j/utils/driver-base-java/pom.xml               |   42 -
 .../apache/plc4x/java/utils/EvaluationHelper.java  |   58 --
 .../java/org/apache/plc4x/java/utils/Message.java  |   26 -
 .../org/apache/plc4x/java/utils/MessageIO.java     |   23 -
 .../org/apache/plc4x/java/utils/MessageInput.java  |   25 -
 .../org/apache/plc4x/java/utils/MessageOutput.java |   25 -
 .../apache/plc4x/java/utils/ParseException.java    |   32 -
 .../org/apache/plc4x/java/utils/ReadBuffer.java    |  254 -----
 .../org/apache/plc4x/java/utils/WriteBuffer.java   |  208 ----
 plc4j/utils/interop/pom.xml                        |  216 ----
 .../org/apache/plc4x/interop/impl/Handler.java     |  160 ---
 .../java/org/apache/plc4x/interop/impl/Server.java |   91 --
 plc4j/utils/opm/pom.xml                            |  103 --
 .../plc4x/java/opm/PlcEntityInterceptor.java       |  569 -----------
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |  119 ---
 .../plc4x/java/opm/PlcEntityInterceptorTest.java   |  214 ----
 .../java/opm/PlcEntityManagerComplexTest.java      |  460 ---------
 .../plc4x/java/opm/PlcEntityManagerTest.java       |  318 ------
 .../utils/pcapsockets/netty/PacketHandler.java     |   27 -
 .../utils/pcapsockets/netty/PcapSocketAddress.java |   21 +-
 .../utils/pcapsockets/netty/PcapSocketChannel.java |   20 +-
 .../pcapsockets/netty/PcapSocketChannelConfig.java |   47 +-
 .../pcapsockets/netty/PcapSocketChannelOption.java |   21 +-
 .../pcapsockets/netty/TcpIpPacketHandler.java      |   41 -
 .../pcapsockets/netty/UdpIpPacketHandler.java      |   41 -
 .../pcapsockets/netty/handlers/PacketHandler.java  |   27 +
 .../netty/handlers/TcpIpPacketHandler.java         |   41 +
 .../netty/handlers/UdpIpPacketHandler.java         |   41 +
 plc4j/utils/pom.xml                                |   20 +-
 plc4j/utils/protocol-test-utils/pom.xml            |   72 --
 .../protocol/test/ProtocolTestsuiteRunner.java     |  175 ----
 .../exceptions/ProtocolTestsuiteException.java     |   32 -
 .../protocol/test/model/ProtocolTestsuite.java     |   48 -
 .../apache/plc4x/protocol/test/model/Testcase.java |   61 --
 .../utils/rawsockets/netty/RawSocketAddress.java   |    1 +
 .../utils/rawsockets/netty/RawSocketChannel.java   |    3 +-
 plc4j/utils/scraper/pom.xml                        |  145 ---
 .../triggeredscraper/TriggeredScraperImpl.java     |  367 -------
 .../triggerhandler/TriggerConfiguration.java       |  722 --------------
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |  113 ---
 .../org/apache/plc4x/java/scraper/ScraperTest.java |  175 ----
 .../java/scraper/TriggeredScraperRunnerModbus.java |   69 --
 .../triggeredscraper/TriggeredScraperImplTest.java |  118 ---
 .../triggerhandler/TriggerConfigurationTest.java   |  151 ---
 plc4j/utils/test-utils/pom.xml                     |   37 +-
 .../test/protocol/ProtocolTestsuiteRunner.java     |  179 ++++
 .../exceptions/ProtocolTestsuiteException.java     |   32 +
 .../test/protocol/model/ProtocolTestsuite.java     |   48 +
 .../apache/plc4x/test/protocol/model/Testcase.java |   60 ++
 .../src/main/resources/schemas/testsuite.xsd       |    0
 pom.xml                                            |   16 +-
 .../main/resources/protocols/amsads/amsads.mspec   |    4 +-
 .../apache/plc4x/protocol/knxnetip/Ets5Types.java  |   46 -
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |    1 -
 .../main/resources/protocols/knxnetip/ets5.mspec   |  172 ----
 .../resources/protocols/knxnetip/knxnetip.mspec    |  154 +++
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |    2 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |  208 +++-
 .../plc4x/codegen/ast/AssignementExpression.java   |    6 +-
 .../apache/plc4x/codegen/ast/BinaryExpression.java |    6 +-
 .../java/org/apache/plc4x/codegen/ast/Block.java   |    6 +-
 .../apache/plc4x/codegen/ast/CallExpression.java   |    6 +-
 .../apache/plc4x/codegen/ast/ClassDeclaration.java |    6 +-
 .../plc4x/codegen/ast/ConstantExpression.java      |    6 +-
 .../plc4x/codegen/ast/ConstructorDeclaration.java  |    6 +-
 .../plc4x/codegen/ast/DeclarationStatement.java    |    6 +-
 .../apache/plc4x/codegen/ast/FieldDeclaration.java |    6 +-
 .../apache/plc4x/codegen/ast/FieldReference.java   |    6 +-
 .../org/apache/plc4x/codegen/ast/FileNode.java     |    6 +-
 .../org/apache/plc4x/codegen/ast/IfStatement.java  |    6 +-
 .../apache/plc4x/codegen/ast/JavaGenerator.java    |   69 +-
 .../org/apache/plc4x/codegen/ast/LineComment.java  |    6 +-
 .../java/org/apache/plc4x/codegen/ast/Method.java  |    6 +-
 .../apache/plc4x/codegen/ast/MethodDefinition.java |    6 +-
 .../apache/plc4x/codegen/ast/NewExpression.java    |    6 +-
 .../plc4x/codegen/ast/ParameterExpression.java     |    6 +-
 .../org/apache/plc4x/codegen/ast/Primitive.java    |    6 +-
 .../apache/plc4x/codegen/ast/PythonGenerator.java  |   69 +-
 .../apache/plc4x/codegen/ast/ReturnStatement.java  |    6 +-
 .../apache/plc4x/codegen/ast/TypeDefinition.java   |    6 +-
 .../plc4x/codegen/python/AbstractNodeVisitor.java  |   96 +-
 .../org/apache/plc4x/codegen/python/AddNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/AliasNode.java |    3 +-
 .../plc4x/codegen/python/AnnAssignerNode.java      |    3 +-
 .../org/apache/plc4x/codegen/python/ArgNode.java   |    3 +-
 .../apache/plc4x/codegen/python/ArgumentsNode.java |    3 +-
 .../apache/plc4x/codegen/python/AssignNode.java    |    3 +-
 .../apache/plc4x/codegen/python/AttributeNode.java |    3 +-
 .../apache/plc4x/codegen/python/AugAssignNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/BinOpNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/CallNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ClassDefNode.java  |    3 +-
 .../apache/plc4x/codegen/python/CompareNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/EqNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/ExprNode.java  |    3 +-
 .../plc4x/codegen/python/FunctionDefNode.java      |    3 +-
 .../org/apache/plc4x/codegen/python/IfNode.java    |    3 +-
 .../plc4x/codegen/python/ImportFromNode.java       |    3 +-
 .../apache/plc4x/codegen/python/KeywordNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/ListNode.java  |    3 +-
 .../org/apache/plc4x/codegen/python/LoadNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ModuleNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/MultNode.java  |    3 +-
 .../plc4x/codegen/python/NameConstantNode.java     |    3 +-
 .../org/apache/plc4x/codegen/python/NameNode.java  |    3 +-
 .../org/apache/plc4x/codegen/python/NotEqNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/NumNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/PassNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ReturnNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/StoreNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/StrNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/TupleNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/WhileNode.java |    3 +-
 .../org/apache/plc4x/codegen/ModuleNodeTest.java   |   33 +-
 sandbox/plc-simulator/pom.xml                      |   16 +-
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  137 +++
 .../server/s7/protocol/S7Step7Protocol.java        |   12 +-
 .../server/s7/protocol/S7Step7ServerProtocol.java  |    2 +-
 sandbox/pom.xml                                    |    9 +-
 sandbox/test-java-amsads-driver/pom.xml            |   28 +-
 .../apache/plc4x/java/amsads/AMSADSPlcDriver.java  |   84 +-
 .../amsads/configuration/AdsConfiguration.java     |   74 ++
 .../connection/AdsAbstractPlcConnection.java       |   21 +-
 .../amsads/connection/AdsConnectionFactory.java    |    1 +
 .../amsads/connection/AdsSerialPlcConnection.java  |   45 +-
 .../amsads/connection/AdsTcpPlcConnection.java     |   73 +-
 .../apache/plc4x/java/amsads/field/AdsField.java   |   27 +
 .../plc4x/java/amsads/field/AdsFieldHandler.java   | 1047 ++++++++++++++++++++
 .../plc4x/java/amsads/field/DirectAdsField.java    |  142 +++
 .../plc4x/java/amsads/field/SymbolicAdsField.java  |  106 ++
 .../plc4x/java/amsads/model/AdsDataType.java       |  577 -----------
 .../apache/plc4x/java/amsads/model/AdsField.java   |   26 -
 .../java/amsads/model/AdsPlcFieldHandler.java      | 1015 -------------------
 .../java/amsads/model/AdsSubscriptionHandle.java   |    5 +-
 .../plc4x/java/amsads/model/DirectAdsField.java    |  141 ---
 .../plc4x/java/amsads/model/SymbolicAdsField.java  |  105 --
 .../plc4x/java/amsads/model/package-info.java      |   22 -
 .../java/amsads/protocol/Ads2PayloadProtocol.java  |    7 +-
 .../java/amsads/protocol/AdsProtocolLogic.java     |   41 +
 .../amsads/protocol/Payload2SerialProtocol.java    |   15 +-
 .../java/amsads/protocol/Payload2TcpProtocol.java  |    7 +-
 .../java/amsads/protocol/Plc4x2AdsProtocol.java    |   35 +-
 .../amsads/protocol/util/LittleEndianDecoder.java  |  204 +++-
 .../amsads/protocol/util/LittleEndianEncoder.java  |    2 +-
 .../protocol/util/SingleMessageRateLimiter.java    |    2 +-
 .../plc4x/java/amsads/types/AdsDataType.java       |  577 +++++++++++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../protocol/amsads/BenchmarkGeneratedDf1.java     |    4 -
 .../org/apache/plc4x/protocol/amsads/Df1Test.java  |    3 +-
 .../org/apache/plc4x/protocol/amsads/IOTest.java   |    6 -
 sandbox/test-java-bacnetip-driver/pom.xml          |   22 +-
 .../plc4x/java/bacnetip/PassiveBacNetIpDriver.java |   89 +-
 .../PassiveBacNetIpConfiguration.java              |   61 ++
 .../bacnetip/connection/BacNetIpFieldHandler.java  |   36 -
 .../connection/PassiveBacNetIpPlcConnection.java   |  118 ---
 .../plc4x/java/bacnetip/field/BacNetIpField.java   |   47 +
 .../java/bacnetip/field/BacNetIpFieldHandler.java  |   35 +
 .../plc4x/java/bacnetip/model/BacNetIpField.java   |   47 -
 .../java/bacnetip/protocol/BacNetIpProtocol.java   |   62 --
 .../java/bacnetip/protocol/HelloWorldProtocol.java |   72 --
 .../protocol/PassiveBacNetIpProtocolLogic.java     |   47 +
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../plc4x/java/bacnetip/ManualBacNetDecoder.java   |    2 +-
 .../java/bacnetip/PassiveBacNetIpDriverManual.java |   17 +-
 sandbox/test-java-df1-driver/pom.xml               |   25 +-
 .../org/apache/plc4x/java/df1/DF1PlcDriver.java    |   59 +-
 .../java/org/apache/plc4x/java/df1/Df1Field.java   |   62 --
 .../java/df1/configuration/Df1Configuration.java   |   33 +
 .../java/df1/connection/BaseDf1Connection.java     |   34 -
 .../java/df1/connection/SerialDf1Connection.java   |  148 ---
 .../org/apache/plc4x/java/df1/field/Df1Field.java  |   61 ++
 .../plc4x/java/df1/field/Df1FieldHandler.java      |   39 +
 .../org/apache/plc4x/java/df1/fields/DataType.java |   44 -
 .../plc4x/java/df1/protocol/Df1Protocol.java       |   14 +-
 .../plc4x/java/df1/protocol/Df1ProtocolLogic.java  |   43 +
 .../plc4x/java/df1/protocol/Plc4XDf1Protocol.java  |   23 +-
 .../org/apache/plc4x/java/df1/types/DataType.java  |   44 +
 .../org/apache/plc4x/java/df1/util/DF1Utils.java   |   14 +-
 .../plc4x/java/df1/util/Df1FieldHandler.java       |   39 -
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/df1/DF1PlcDriverTest.java    |   44 -
 .../plc4x/protocol/df1/BenchmarkGeneratedDf1.java  |    5 -
 .../org/apache/plc4x/protocol/df1/Df1Test.java     |    2 +-
 .../java/org/apache/plc4x/protocol/df1/IOTest.java |    2 +-
 .../src/test/resources/testsuite/Df1Testsuite.xml  |    8 +-
 sandbox/test-java-knxnetip-driver-passive/pom.xml  |   15 +-
 .../passive/knxnetip/PassiveKnxNetIpDriver.java    |    2 +-
 .../knxnetip/connection/KnxNetIpFieldHandler.java  |    2 +-
 .../connection/PassiveKnxNetIpPlcConnection.java   |   16 +-
 .../knxnetip/protocol/HelloWorldProtocol.java      |    4 +-
 .../knxnetip/protocol/KnxNetIpProtocol.java        |   59 --
 .../knxnetip/protocol/KnxNetIpProtocolMessage.java |   59 ++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../org/apache/plc4x/java/knxnetip/IOTest.java     |    7 +-
 sandbox/test-java-knxnetip-driver/pom.xml          |   32 +-
 .../apache/plc4x/java/knxnetip/KnxNetIpDriver.java |   93 +-
 .../configuration/KnxNetIpConfiguration.java       |   65 ++
 .../knxnetip/connection/KnxNetIpConnection.java    |  137 ---
 .../knxnetip/connection/KnxNetIpFieldHandler.java  |   36 -
 .../java/knxnetip/events/KnxGatewayFoundEvent.java |   22 -
 .../plc4x/java/knxnetip/field/KnxNetIpField.java   |   86 ++
 .../java/knxnetip/field/KnxNetIpFieldHandler.java  |   35 +
 .../plc4x/java/knxnetip/model/KnxNetIpField.java   |   44 -
 .../knxnetip/protocol/KnxNetIpPlc4xProtocol.java   |   61 --
 .../knxnetip/protocol/KnxNetIpProtocolLogic.java   |  328 ++++--
 .../knxnetip/protocol/KnxNetIpProtocolPackets.java |   59 --
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../org/apache/plc4x/java/knxnetip/IOTest.java     |    8 +-
 .../apache/plc4x/java/knxnetip/KNXNetIpTest.java   |    2 +-
 .../apache/plc4x/java/knxnetip/ManualKnxNetIp.java |    2 +-
 .../java/knxnetip/ManualKnxNetIpWithEts5.java      |   18 +-
 .../src/test}/resources/logback.xml                |    0
 .../test/resources/testsuite/KNXNetIPTestsuite.xml |    2 +-
 sandbox/test-java-knxnetip-shared/pom.xml          |   41 +-
 .../plc4x/java/knxnetip/ets5/Ets5Parser.java       |   18 +-
 .../plc4x/java/knxnetip/ets5/model/Ets5Model.java  |   41 +-
 .../java/knxnetip/ets5/model/GroupAddress.java     |    9 +-
 sandbox/test-java-s7-driver-passive/pom.xml        |    5 +-
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  136 +++
 .../plc4x/javapassive/s7/PassiveS7PlcDriver.java   |    2 +-
 .../s7/connection/PassiveS7PlcConnection.java      |   16 +-
 .../s7/protocol/HelloWorldProtocol.java            |    4 +-
 .../javapassive/s7/protocol/PassiveS7Protocol.java |    8 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../src/test/java/BenchmarkGeneratedPassiveS7.java |    4 +-
 sandbox/test-java-s7-driver/pom.xml                |   38 +-
 .../apache/plc4x/java/s7/readwrite/S7Driver.java   |  106 ++
 .../readwrite/configuration/S7Configuration.java   |  148 +++
 .../plc4x/java/s7/readwrite/field/S7Field.java     |  265 +++++
 .../java/s7/readwrite/field/S7PlcFieldHandler.java |  584 +++++++++++
 .../optimizer/DefaultS7MessageProcessor.java       |  290 ++++++
 .../s7/readwrite/optimizer/S7MessageProcessor.java |   40 +
 .../s7/readwrite/protocol/S7ProtocolLogic.java     |  693 +++++++++++++
 .../java/s7/readwrite/types/S7ControllerType.java  |   30 +
 .../java/s7/readwrite/utils/S7TsapIdEncoder.java   |   48 +
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  138 +++
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../src/main/resources/logback.xml                 |    0
 .../src/test/java/BenchmarkGeneratedS7.java        |    8 +-
 .../java/s7/readwrite/ManualS7DriverTest.java      |   33 +
 sandbox/test-streampipes-plc4x-adapters/pom.xml    |   16 +-
 .../adapters/source/bacnetip/BacNetIpAdapter.java  |   23 +-
 .../adapters/source/knxnetip/KnxNetIpAdapter.java  |   20 +-
 sandbox/test-streampipes-plc4x-processors/pom.xml  |   12 +-
 .../enrich/knxnetip/ets5/Ets5DataEnrichment.java   |   38 +-
 .../ets5/Ets5DataEnrichmentController.java         |    3 +-
 src/main/script/prerequisiteCheck.groovy           |   38 +
 src/site/asciidoc/users/testing.adoc               |   12 +-
 tools/thrift/pom.xml                               |   12 +
 920 files changed, 32477 insertions(+), 28469 deletions(-)
 create mode 100644 build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh
 create mode 100644 build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/definitions/DefaultDataIoTypeDefinition.java
 create mode 100644 build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/references/DefaultStringTypeReference.java
 create mode 100644 build-utils/protocol-base-mspec/src/main/java/org/apache/plc4x/plugins/codegenerator/language/mspec/model/references/DefaultTemporalTypeReference.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/Experimental.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/PlcConnectionExtension.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/PlcDriver.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcProtocolTimeoutException.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcBigDecimal.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcBigInteger.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcBoolean.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcDate.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcDateTime.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcDouble.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcFloat.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcInteger.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcList.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcLong.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcSimpleValue.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcString.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcStruct.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcTime.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValue.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValueAdapter.java
 create mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValues.java
 delete mode 100644 plc4j/api/src/main/java/org/apache/plc4x/java/spi/PlcDriver.java
 create mode 100644 plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcValueTest.java
 create mode 100644 plc4j/api/src/test/java/org/apache/plc4x/java/api/value/PlcValuesTest.java
 create mode 100644 plc4j/api/src/test/java/org/apache/plc4x/java/mock/ApiMockDriver.java
 delete mode 100644 plc4j/api/src/test/java/org/apache/plc4x/java/mock/MockDriver.java
 create mode 100644 plc4j/api/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
 create mode 100644 plc4j/api/src/test/resources/test/META-INF/services/org.apache.plc4x.java.api.PlcDriver
 delete mode 100644 plc4j/api/src/test/resources/test/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
 create mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthConfiguration.java
 delete mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/connection/AbEthFieldHandler.java
 delete mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/connection/AbEthPlcConnection.java
 create mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/field/AbEthField.java
 create mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/field/AbEthFieldHandler.java
 delete mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/model/AbEthField.java
 delete mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/model/types/FileType.java
 delete mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/protocol/AbEthProtocol.java
 create mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/protocol/AbEthProtocolLogic.java
 create mode 100644 plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/types/FileType.java
 rename plc4j/drivers/ab-eth/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 rename plc4j/drivers/ads/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 rename plc4j/drivers/ethernet-ip/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 create mode 100644 plc4j/drivers/mock/pom.xml
 create mode 100644 plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/MockDriver.java
 create mode 100644 plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/connection/MockConnection.java
 create mode 100644 plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/connection/MockDevice.java
 rename plc4j/{protocols/driver-bases/test => drivers/mock}/src/main/java/org/apache/plc4x/java/mock/connection/tcp/TcpHexDumper.java (100%)
 create mode 100644 plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/field/MockField.java
 create mode 100644 plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/field/MockFieldHandler.java
 create mode 100644 plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/field/MockPlcValue.java
 rename plc4j/{protocols/driver-bases/test => drivers/mock}/src/main/java/org/apache/plc4x/java/mock/protocol/Plc4XSupportedDataTypes.java (100%)
 rename plc4j/{protocols/driver-bases/test => drivers/mock}/src/main/java/org/apache/plc4x/java/mock/util/Assert.java (100%)
 rename plc4j/{protocols/driver-bases/test => drivers/mock}/src/main/java/org/apache/plc4x/java/mock/util/HexUtil.java (100%)
 rename plc4j/{api/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver => drivers/mock/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver} (100%)
 rename plc4j/drivers/modbus/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 rename plc4j/drivers/opcua/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 rename plc4j/drivers/s7/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 create mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/SimulatedDriver.java
 delete mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/SimulatedPlcDriver.java
 create mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/SimulatedConnection.java
 create mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/SimulatedDevice.java
 delete mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/SimulatedPlcConnection.java
 delete mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestDevice.java
 delete mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestField.java
 delete mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestFieldHandler.java
 delete mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestFieldItem.java
 delete mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestType.java
 create mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/field/SimulatedField.java
 create mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/field/SimulatedFieldHandler.java
 create mode 100644 plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/types/SimulatedFieldType.java
 create mode 100644 plc4j/drivers/simulated/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
 delete mode 100644 plc4j/drivers/simulated/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
 create mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/SimulatedDriverTest.java
 delete mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/SimulatedPlcDriverTest.java
 create mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/SimulatedConnectionTest.java
 create mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/SimulatedDeviceTest.java
 delete mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/SimulatedPlcConnectionTest.java
 delete mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestDeviceTest.java
 delete mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestFieldHandlerTest.java
 delete mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestFieldItemTest.java
 delete mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestFieldTest.java
 create mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/field/SimularedFieldHandlerTest.java
 create mode 100644 plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/field/SimulatedFieldTest.java
 rename plc4j/examples/dummy-driver/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 rename plc4j/integrations/apache-camel/src/test/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 create mode 100644 plc4j/integrations/apache-edgent/src/test/java.sav/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
 create mode 100644 plc4j/integrations/apache-edgent/src/test/java.sav/org/apache/plc4x/edgent/PlcFunctionsTest.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcFunctionsTest.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockDriver.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
 delete mode 100644 plc4j/integrations/apache-edgent/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver
 delete mode 100644 plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderSpec.groovy
 create mode 100644 plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderSpecHurz.groovy
 delete mode 100644 plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianEncoderSpec.groovy
 create mode 100644 plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianEncoderSpecHurz.groovy
 delete mode 100644 plc4j/protocols/driver-bases/base/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/GeneratedDriverByteToMessageCodec.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/PlcByteToMessageCodec.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/PlcMessageToMessageCodec.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/AbstractPlcConnection.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/ChannelFactory.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/DefaultPlcFieldHandler.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/NettyPlcConnection.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/connection/PlcFieldHandler.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/events/ConnectEvent.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/events/ConnectedEvent.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/events/DisconnectEvent.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/events/DisconnectedEvent.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcProprietaryRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcProprietaryResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionEvent.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcUnsubscriptionRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcUnsubscriptionResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcFieldRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcFieldResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcMessage.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcProprietaryRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcProprietaryResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcReadRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcReadResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcSubscriptionEvent.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcSubscriptionRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcSubscriptionResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcUnsubscriptionRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcUnsubscriptionResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcWriteRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/InternalPlcWriteResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcProprietaryRequest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcProprietaryResponse.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcProprietarySender.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcProtocolMessage.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcRawMessage.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcReader.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcRequestContainer.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcSubscriber.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/PlcWriter.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/BaseDefaultFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigDecimalFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBigIntegerFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultBooleanFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteArrayFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultByteFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultDoubleFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultFloatFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultIntegerFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalDateTimeFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLocalTimeFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultLongFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultShortFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/messages/items/DefaultStringFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/model/DefaultPlcConsumerRegistration.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/model/DefaultPlcSubscriptionHandle.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/model/InternalPlcConsumerRegistration.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/model/InternalPlcSubscriptionHandle.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/model/SubscriptionPlcField.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/main/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocol.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/groovy/org/apache/plc4x/java/base/messages/DefaultPlcReadResponseSpec.groovy
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/groovy/org/apache/plc4x/java/base/messages/items/DefaultItemsSpec.groovy
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/connection/AbstractPlcConnectionTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/connection/NettyPlcConnectionTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcProprietaryRequestTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcProprietaryResponseTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcReadRequestTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcReadResponseTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionEventTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionRequestTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcSubscriptionResponseTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcUnsubscriptionRequestTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcUnsubscriptionResponseTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteRequestTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/DefaultPlcWriteResponseTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/PlcRawMessageTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/PlcRequestContainerTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/messages/items/DefaultLongFieldItemTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/model/DefaultPlcConsumerRegistrationTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/model/DefaultPlcSubscriptionHandleTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/model/SubscriptionPlcFieldTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/java/org/apache/plc4x/java/base/protocol/SingleItemToSingleRequestProtocolTest.java
 delete mode 100644 plc4j/protocols/driver-bases/base/src/test/resources/META-INF/services/com.athaydes.spockframework.report.IReportCreator.properties
 delete mode 100644 plc4j/protocols/driver-bases/pcap-socket/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/pcap-socket/src/main/java/org/apache/plc4x/java/base/connection/PcapChannelFactory.java
 delete mode 100644 plc4j/protocols/driver-bases/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/raw-socket/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/raw-socket/src/main/java/org/apache/plc4x/java/base/connection/RawSocketChannelFactory.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialChannel.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialChannelFactory.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialChannelHandler.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialPollingSelector.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialSelectionKey.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialSelectorProvider.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialSocketAddress.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/main/java/org/apache/plc4x/java/serial/connection/connection/SerialSocketChannel.java
 delete mode 100644 plc4j/protocols/driver-bases/serial/src/test/java/org/apache/plc4x/java/base/connection/SerialChannelFactoryTest.java
 delete mode 100644 plc4j/protocols/driver-bases/tcp/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/tcp/src/main/java/org/apache/plc4x/java/tcp/connection/TcpSocketChannelFactory.java
 delete mode 100644 plc4j/protocols/driver-bases/test/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockDevice.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockField.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockFieldHandler.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/MockFieldItem.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockConnection.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/PlcMockDriver.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/connection/MockConnection.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/main/java/org/apache/plc4x/java/mock/connection/TestChannelFactory.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/test/java/org/apache/plc4x/java/mock/MockFieldHandlerTest.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/test/java/org/apache/plc4x/java/mock/MockFieldItemTest.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/test/java/org/apache/plc4x/java/mock/MockFieldTest.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/test/java/org/apache/plc4x/java/mock/PlcMockConnectionTest.java
 delete mode 100644 plc4j/protocols/driver-bases/test/src/test/java/org/apache/plc4x/java/mock/PlcMockDriverTest.java
 delete mode 100644 plc4j/protocols/driver-bases/udp/pom.xml
 delete mode 100644 plc4j/protocols/driver-bases/udp/src/main/java/org/apache/plc4x/java/base/connection/UdpSocketChannelFactory.java
 delete mode 100644 plc4j/protocols/driver-bases/udp/src/main/java/org/apache/plc4x/java/base/connection/protocol/DatagramUnpackingHandler.java
 delete mode 100644 plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItem.java
 create mode 100644 plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcList.java
 delete mode 100644 plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java
 create mode 100644 plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcValueTest.java
 create mode 100644 plc4j/spi/pom.xml
 rename plc4j/{utils/driver-base-java => spi}/src/main/java/com/github/jinahya/bit/io/MyDefaultBitInput.java (100%)
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/ConversationContext.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/Plc4xNettyWrapper.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/Plc4xProtocolBase.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/PlcMessageToMessageCodec.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/Configuration.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/HasConfiguration.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/ConfigurationParameter.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/Required.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/defaults/BooleanDefaultValue.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/defaults/DoubleDefaultValue.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/defaults/IntDefaultValue.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/annotations/defaults/StringDefaultValue.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/AbstractPlcConnection.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/ChannelFactory.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultNettyPlcConnection.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultPlcFieldHandler.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/GeneratedDriverBase.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/GeneratedProtocolMessageCodec.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/NettyChannelFactory.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/Parser.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/PlcFieldHandler.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/ProtocolStackConfigurer.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/ReflectionBasedIo.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/Serializer.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/SingleProtocolStackConfigurer.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/events/CloseConnectionEvent.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/events/ConnectEvent.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/events/ConnectedEvent.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/events/DisconnectEvent.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/events/DisconnectedEvent.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/exceptions/InternalPlcRuntimeException.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/EvaluationHelper.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/Message.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/MessageIO.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/MessageInput.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/MessageOutput.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ParseException.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/ReadBuffer.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/StaticHelper.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/generation/WriteBuffer.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/internal/DefaultSendRequestContext.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/internal/HandlerRegistration.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcProprietaryRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcProprietaryResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcReadRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcReadResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcSubscriptionEvent.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcSubscriptionRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcSubscriptionResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcUnsubscriptionRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcUnsubscriptionResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcFieldRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcFieldResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcMessage.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcProprietaryRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcProprietaryResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcReadRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcReadResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcSubscriptionEvent.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcSubscriptionRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcSubscriptionResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcUnsubscriptionRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcUnsubscriptionResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcWriteRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcWriteResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcProprietaryRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcProprietaryResponse.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcProprietarySender.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcProtocolMessage.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcRawMessage.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcReader.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcRequestContainer.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcSubscriber.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/PlcWriter.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/model/DefaultPlcConsumerRegistration.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/model/DefaultPlcSubscriptionHandle.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/model/InternalPlcConsumerRegistration.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/model/InternalPlcSubscriptionHandle.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/model/SubscriptionPlcField.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManager.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/protocol/SingleItemToSingleRequestProtocol.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/request/PlcRequest.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/transport/Transport.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/transport/TransportConfiguration.java
 create mode 100644 plc4j/spi/src/main/java/org/apache/plc4x/java/spi/types/FieldType.java
 create mode 100644 plc4j/spi/src/test/java/org/apache/plc4x/java/spi/internal/DefaultSendRequestContextTest.java
 create mode 100644 plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java
 create mode 100644 plc4j/spi/src/test/java/org/apache/plc4x/java/spi/parser/ConnectionParserTest.java
 create mode 100644 plc4j/tools/connection-pool/pom.xml
 rename plc4j/{utils => tools}/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PoolKey.java (100%)
 rename plc4j/{utils => tools}/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PoolKeyFactory.java (100%)
 rename plc4j/{utils => tools}/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcConnectionFactory.java (100%)
 rename plc4j/{utils => tools}/connection-pool/src/main/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManager.java (100%)
 rename plc4j/{utils => tools}/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PoolKeyFactoryTest.java (100%)
 create mode 100644 plc4j/tools/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledDummyDriver.java
 create mode 100644 plc4j/tools/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManagerTest.java
 rename plc4j/{utils/connection-pool/src/test/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver => tools/connection-pool/src/test/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver} (100%)
 rename plc4j/{utils => tools}/connection-pool/src/test/resources/logback.xml (100%)
 create mode 100644 plc4j/tools/interop/pom.xml
 rename plc4j/{utils => tools}/interop/src/assembly/assembly.xml (100%)
 rename plc4j/{utils => tools}/interop/src/main/java/org/apache/plc4x/interop/impl/Client.java (100%)
 create mode 100644 plc4j/tools/interop/src/main/java/org/apache/plc4x/interop/impl/Handler.java
 create mode 100644 plc4j/tools/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
 create mode 100644 plc4j/tools/opm/pom.xml
 rename plc4j/{utils => tools}/opm/src/main/java/org/apache/plc4x/java/opm/AliasRegistry.java (100%)
 rename plc4j/{utils => tools}/opm/src/main/java/org/apache/plc4x/java/opm/OPMException.java (100%)
 rename plc4j/{utils => tools}/opm/src/main/java/org/apache/plc4x/java/opm/OpmUtils.java (100%)
 rename plc4j/{utils => tools}/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntity.java (100%)
 create mode 100644 plc4j/tools/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityInterceptor.java
 rename plc4j/{utils => tools}/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java (100%)
 rename plc4j/{utils => tools}/opm/src/main/java/org/apache/plc4x/java/opm/PlcField.java (100%)
 rename plc4j/{utils => tools}/opm/src/main/java/org/apache/plc4x/java/opm/SimpleAliasRegistry.java (100%)
 rename plc4j/{utils => tools}/opm/src/site/asciidoc/opm/using-opm.adoc (100%)
 rename plc4j/{utils => tools}/opm/src/site/site.xml (100%)
 create mode 100644 plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
 rename plc4j/{utils => tools}/opm/src/test/java/org/apache/plc4x/java/opm/OPMExceptionTest.java (100%)
 rename plc4j/{utils => tools}/opm/src/test/java/org/apache/plc4x/java/opm/OpmUtilsTest.java (100%)
 create mode 100644 plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityInterceptorTest.java
 create mode 100644 plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerComplexTest.java
 create mode 100644 plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
 rename plc4j/{utils => tools}/opm/src/test/java/org/apache/plc4x/java/opm/SimpleAliasRegistryTest.java (100%)
 rename plc4j/{utils => tools}/opm/src/test/resources/logback.xml (100%)
 create mode 100644 plc4j/tools/pom.xml
 rename plc4j/{utils => tools}/scraper/README.md (100%)
 create mode 100644 plc4j/tools/scraper/pom.xml
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/ResultHandler.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/ScrapeJob.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/ScrapeJobImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperTask.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperTaskImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/JobConfiguration.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/JobConfigurationClassicImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/JobConfigurationClassicImplBuilder.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/JobConfigurationImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/ScraperConfiguration.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/ScraperConfigurationClassicImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/ScraperConfigurationClassicImplBuilder.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/triggeredscraper/JobConfigurationTriggeredImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/triggeredscraper/JobConfigurationTriggeredImplBuilder.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/triggeredscraper/ScraperConfigurationTriggeredImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/config/triggeredscraper/ScraperConfigurationTriggeredImplBuilder.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/exception/ScraperConfigurationException.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/exception/ScraperException.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScrapeJobImpl.java (100%)
 create mode 100644 plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperMBean.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperTask.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperTaskMBean.java (100%)
 create mode 100644 plc4j/tools/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfiguration.java
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerHandler.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerHandlerImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/collector/TriggerCollector.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/collector/TriggerCollectorImpl.java (100%)
 rename plc4j/{utils => tools}/scraper/src/main/java/org/apache/plc4x/java/scraper/util/PercentageAboveThreshold.java (100%)
 rename plc4j/{utils => tools}/scraper/src/test/java/org/apache/plc4x/java/s7/ManualS7PlcDriverMT.java (100%)
 rename plc4j/{utils => tools}/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperConfigurationTest.java (100%)
 rename plc4j/{utils => tools}/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java (100%)
 create mode 100644 plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
 create mode 100644 plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
 rename plc4j/{utils => tools}/scraper/src/test/java/org/apache/plc4x/java/scraper/TriggeredScraperRunner.java (100%)
 create mode 100644 plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/TriggeredScraperRunnerModbus.java
 rename plc4j/{utils => tools}/scraper/src/test/java/org/apache/plc4x/java/scraper/config/ScraperConfigurationBuilderTest.java (100%)
 create mode 100644 plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
 create mode 100644 plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfigurationTest.java
 rename plc4j/{utils => tools}/scraper/src/test/resources/config.json (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/config.yml (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/example.yml (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/example_triggered_scraper.yml (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/example_triggered_scraper_modbus.yml (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/example_with_strings.yml (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/logback-test.xml (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/logback.xml (100%)
 rename plc4j/{utils => tools}/scraper/src/test/resources/mock-scraper-config.yml (100%)
 create mode 100644 plc4j/transports/pcap-socket/pom.xml
 create mode 100644 plc4j/transports/pcap-socket/src/main/java/org/apache/plc4x/java/transport/pcap/PcapChannelFactory.java
 create mode 100644 plc4j/transports/pcap-socket/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransport.java
 create mode 100644 plc4j/transports/pcap-socket/src/main/java/org/apache/plc4x/java/transport/pcap/PcapTransportConfiguration.java
 create mode 100644 plc4j/transports/pcap-socket/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.transport.Transport
 create mode 100644 plc4j/transports/pom.xml
 create mode 100644 plc4j/transports/raw-socket/pom.xml
 create mode 100644 plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketChannelFactory.java
 create mode 100644 plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransport.java
 create mode 100644 plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/RawSocketTransportConfiguration.java
 create mode 100644 plc4j/transports/raw-socket/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.transport.Transport
 create mode 100644 plc4j/transports/serial/pom.xml
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialChannel.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialChannelFactory.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialChannelHandler.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialPollingSelector.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialSelectionKey.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialSelectorProvider.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialSocketAddress.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialSocketChannel.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialTransport.java
 create mode 100644 plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/SerialTransportConfiguration.java
 create mode 100644 plc4j/transports/serial/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.transport.Transport
 create mode 100644 plc4j/transports/serial/src/test/java/org/apache/plc4x/java/base/connection/SerialChannelFactoryTest.java
 create mode 100644 plc4j/transports/tcp/pom.xml
 create mode 100644 plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpChannelFactory.java
 create mode 100644 plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransport.java
 create mode 100644 plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/TcpTransportConfiguration.java
 create mode 100644 plc4j/transports/tcp/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.transport.Transport
 create mode 100644 plc4j/transports/test/pom.xml
 create mode 100644 plc4j/transports/test/src/main/java/org/apache/plc4x/java/transport/test/TestChannelFactory.java
 create mode 100644 plc4j/transports/test/src/main/java/org/apache/plc4x/java/transport/test/TestSocketAddress.java
 create mode 100644 plc4j/transports/test/src/main/java/org/apache/plc4x/java/transport/test/TestTransport.java
 create mode 100644 plc4j/transports/test/src/main/java/org/apache/plc4x/java/transport/test/TestTransportConfiguration.java
 rename plc4j/{protocols/driver-bases => transports}/test/src/main/resources/META-INF/services/com.athaydes.spockframework.report.IReportCreator.properties (100%)
 rename plc4j/{protocols/driver-bases/test/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.PlcDriver => transports/test/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver} (100%)
 create mode 100644 plc4j/transports/test/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.transport.Transport
 create mode 100644 plc4j/transports/udp/pom.xml
 create mode 100644 plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpChannelFactory.java
 create mode 100644 plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpTransport.java
 create mode 100644 plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpTransportConfiguration.java
 create mode 100644 plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/protocol/DatagramUnpackingHandler.java
 create mode 100644 plc4j/transports/udp/src/main/resources/META-INF/services/org.apache.plc4x.java.spi.transport.Transport
 delete mode 100644 plc4j/utils/connection-pool/pom.xml
 delete mode 100644 plc4j/utils/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledDummyDriver.java
 delete mode 100644 plc4j/utils/connection-pool/src/test/java/org/apache/plc4x/java/utils/connectionpool/PooledPlcDriverManagerTest.java
 delete mode 100644 plc4j/utils/driver-base-java/pom.xml
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/EvaluationHelper.java
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/Message.java
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/MessageIO.java
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/MessageInput.java
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/MessageOutput.java
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/ParseException.java
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/ReadBuffer.java
 delete mode 100644 plc4j/utils/driver-base-java/src/main/java/org/apache/plc4x/java/utils/WriteBuffer.java
 delete mode 100644 plc4j/utils/interop/pom.xml
 delete mode 100644 plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Handler.java
 delete mode 100644 plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
 delete mode 100644 plc4j/utils/opm/pom.xml
 delete mode 100644 plc4j/utils/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityInterceptor.java
 delete mode 100644 plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
 delete mode 100644 plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityInterceptorTest.java
 delete mode 100644 plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerComplexTest.java
 delete mode 100644 plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
 delete mode 100644 plc4j/utils/pcap-sockets/src/main/java/org/apache/plc4x/java/utils/pcapsockets/netty/PacketHandler.java
 delete mode 100644 plc4j/utils/pcap-sockets/src/main/java/org/apache/plc4x/java/utils/pcapsockets/netty/TcpIpPacketHandler.java
 delete mode 100644 plc4j/utils/pcap-sockets/src/main/java/org/apache/plc4x/java/utils/pcapsockets/netty/UdpIpPacketHandler.java
 create mode 100644 plc4j/utils/pcap-sockets/src/main/java/org/apache/plc4x/java/utils/pcapsockets/netty/handlers/PacketHandler.java
 create mode 100644 plc4j/utils/pcap-sockets/src/main/java/org/apache/plc4x/java/utils/pcapsockets/netty/handlers/TcpIpPacketHandler.java
 create mode 100644 plc4j/utils/pcap-sockets/src/main/java/org/apache/plc4x/java/utils/pcapsockets/netty/handlers/UdpIpPacketHandler.java
 delete mode 100644 plc4j/utils/protocol-test-utils/pom.xml
 delete mode 100644 plc4j/utils/protocol-test-utils/src/main/java/org/apache/plc4x/protocol/test/ProtocolTestsuiteRunner.java
 delete mode 100644 plc4j/utils/protocol-test-utils/src/main/java/org/apache/plc4x/protocol/test/exceptions/ProtocolTestsuiteException.java
 delete mode 100644 plc4j/utils/protocol-test-utils/src/main/java/org/apache/plc4x/protocol/test/model/ProtocolTestsuite.java
 delete mode 100644 plc4j/utils/protocol-test-utils/src/main/java/org/apache/plc4x/protocol/test/model/Testcase.java
 delete mode 100644 plc4j/utils/scraper/pom.xml
 delete mode 100644 plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImpl.java
 delete mode 100644 plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfiguration.java
 delete mode 100644 plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
 delete mode 100644 plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
 delete mode 100644 plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/TriggeredScraperRunnerModbus.java
 delete mode 100644 plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
 delete mode 100644 plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfigurationTest.java
 create mode 100644 plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/protocol/ProtocolTestsuiteRunner.java
 create mode 100644 plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/protocol/exceptions/ProtocolTestsuiteException.java
 create mode 100644 plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/protocol/model/ProtocolTestsuite.java
 create mode 100644 plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/protocol/model/Testcase.java
 rename plc4j/utils/{protocol-test-utils => test-utils}/src/main/resources/schemas/testsuite.xsd (100%)
 delete mode 100644 protocols/knxnetip/src/main/java/org/apache/plc4x/protocol/knxnetip/Ets5Types.java
 delete mode 100644 protocols/knxnetip/src/main/resources/protocols/knxnetip/ets5.mspec
 create mode 100644 sandbox/plc-simulator/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
 create mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/configuration/AdsConfiguration.java
 create mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/field/AdsField.java
 create mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/field/AdsFieldHandler.java
 create mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/field/DirectAdsField.java
 create mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/field/SymbolicAdsField.java
 delete mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/model/AdsDataType.java
 delete mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/model/AdsField.java
 delete mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/model/AdsPlcFieldHandler.java
 delete mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/model/DirectAdsField.java
 delete mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/model/SymbolicAdsField.java
 delete mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/model/package-info.java
 create mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/protocol/AdsProtocolLogic.java
 create mode 100644 sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/types/AdsDataType.java
 rename sandbox/test-java-amsads-driver/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 create mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/configuration/PassiveBacNetIpConfiguration.java
 delete mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/connection/BacNetIpFieldHandler.java
 delete mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/connection/PassiveBacNetIpPlcConnection.java
 create mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/field/BacNetIpField.java
 create mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/field/BacNetIpFieldHandler.java
 delete mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/model/BacNetIpField.java
 delete mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/protocol/BacNetIpProtocol.java
 delete mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/protocol/HelloWorldProtocol.java
 create mode 100644 sandbox/test-java-bacnetip-driver/src/main/java/org/apache/plc4x/java/bacnetip/protocol/PassiveBacNetIpProtocolLogic.java
 rename sandbox/test-java-bacnetip-driver/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/Df1Field.java
 create mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/configuration/Df1Configuration.java
 delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/connection/BaseDf1Connection.java
 delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/connection/SerialDf1Connection.java
 create mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/field/Df1Field.java
 create mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/field/Df1FieldHandler.java
 delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/fields/DataType.java
 create mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/protocol/Df1ProtocolLogic.java
 create mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/types/DataType.java
 delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/util/Df1FieldHandler.java
 rename sandbox/test-java-df1-driver/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 delete mode 100644 sandbox/test-java-df1-driver/src/test/java/org/apache/plc4x/java/df1/DF1PlcDriverTest.java
 delete mode 100644 sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/KnxNetIpProtocol.java
 create mode 100644 sandbox/test-java-knxnetip-driver-passive/src/main/java/org/apache/plc4x/java/passive/knxnetip/protocol/KnxNetIpProtocolMessage.java
 rename sandbox/test-java-knxnetip-driver-passive/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 create mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java
 delete mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/connection/KnxNetIpConnection.java
 delete mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/connection/KnxNetIpFieldHandler.java
 delete mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/events/KnxGatewayFoundEvent.java
 create mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/field/KnxNetIpField.java
 create mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/field/KnxNetIpFieldHandler.java
 delete mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/model/KnxNetIpField.java
 delete mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/protocol/KnxNetIpPlc4xProtocol.java
 delete mode 100644 sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/protocol/KnxNetIpProtocolPackets.java
 rename sandbox/test-java-knxnetip-driver/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 copy sandbox/{plc-simulator/src/main => test-java-knxnetip-driver/src/test}/resources/logback.xml (100%)
 create mode 100644 sandbox/test-java-s7-driver-passive/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
 rename sandbox/test-java-s7-driver-passive/src/main/resources/META-INF/services/{org.apache.plc4x.java.spi.PlcDriver => org.apache.plc4x.java.api.PlcDriver} (100%)
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/S7Driver.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/configuration/S7Configuration.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/field/S7Field.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/field/S7PlcFieldHandler.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/DefaultS7MessageProcessor.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7MessageProcessor.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/types/S7ControllerType.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/utils/S7TsapIdEncoder.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/utils/StaticHelper.java
 create mode 100644 sandbox/test-java-s7-driver/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver
 copy {plc4j/utils/test-utils => sandbox/test-java-s7-driver}/src/main/resources/logback.xml (100%)
 create mode 100644 sandbox/test-java-s7-driver/src/test/java/org/apache/plc4x/java/s7/readwrite/ManualS7DriverTest.java


[plc4x] 02/02: Updated the prerequisiteCheck to only do the docker-check if the "with-docker" profile is enabled.

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

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

commit 1e6df7563ad909d365d1402729699b61c70019bd
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Jan 16 09:34:05 2020 +0100

    Updated the prerequisiteCheck to only do the docker-check if the "with-docker" profile is enabled.
---
 src/main/script/prerequisiteCheck.groovy | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/main/script/prerequisiteCheck.groovy b/src/main/script/prerequisiteCheck.groovy
index 484013f..4bc7266 100644
--- a/src/main/script/prerequisiteCheck.groovy
+++ b/src/main/script/prerequisiteCheck.groovy
@@ -293,6 +293,7 @@ println "Detected Arch: " + arch
 println "Enabled profiles:"
 def boostEnabled = false
 def cppEnabled = false
+def dockerEnabled = false;
 def dotnetEnabled = false
 def javaEnabled = true
 def pythonEnabled = false
@@ -306,6 +307,9 @@ for (def activeProfile : activeProfiles) {
     } else if(activeProfile == "with-cpp") {
         cppEnabled = true
         println "cpp"
+    } else if(activeProfile == "with-docker") {
+        dockerEnabled = true
+        println "docker"
     } else if(activeProfile == "with-dotnet") {
         dotnetEnabled = true
         println "dotnet"
@@ -382,7 +386,7 @@ if(!boostEnabled && cppEnabled) {
     checkBoost()
 }
 
-if(sandboxEnabled) {
+if(sandboxEnabled && dockerEnabled) {
     checkDocker()
 }
 


[plc4x] 01/02: Merge branches 'develop' and 'next-gen-core-2' of https://gitbox.apache.org/repos/asf/plc4x into develop

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

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

commit e96f5f9f3537bcd7a7d67a5e42f66a3b9be2a9d4
Merge: b0c5263 7e01b5d
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Jan 16 09:22:49 2020 +0100

    Merge branches 'develop' and 'next-gen-core-2' of https://gitbox.apache.org/repos/asf/plc4x into develop
    
     Conflicts:
    	plc4j/api/pom.xml
    	plc4j/drivers/ab-eth/pom.xml
    	plc4j/drivers/ads/pom.xml
    	plc4j/drivers/ethernet-ip/pom.xml
    	plc4j/drivers/modbus/pom.xml
    	plc4j/drivers/opcua/pom.xml
    	plc4j/drivers/s7/pom.xml
    	plc4j/drivers/simulated/pom.xml
    	plc4j/examples/dummy-driver/pom.xml
    	plc4j/examples/hello-world-plc4x/pom.xml
    	plc4j/integrations/apache-camel/pom.xml
    	plc4j/integrations/apache-edgent/pom.xml
    	plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
    	plc4j/protocols/ads/pom.xml
    	plc4j/protocols/driver-bases/base/pom.xml
    	plc4j/protocols/ethernet-ip/pom.xml
    	plc4j/protocols/iso-on-tcp/pom.xml
    	plc4j/protocols/iso-tp/pom.xml
    	plc4j/protocols/modbus/pom.xml
    	plc4j/protocols/s7/pom.xml
    	plc4j/tools/connection-pool/pom.xml
    	plc4j/tools/interop/pom.xml
    	plc4j/tools/opm/pom.xml
    	plc4j/tools/scraper/pom.xml
    	plc4j/transports/pcap-socket/pom.xml
    	plc4j/transports/pom.xml
    	plc4j/transports/raw-socket/pom.xml
    	plc4j/transports/serial/pom.xml
    	plc4j/transports/tcp/pom.xml
    	plc4j/transports/test/pom.xml
    	plc4j/transports/udp/pom.xml
    	plc4j/utils/driver-base-java/pom.xml
    	plc4j/utils/protocol-test-utils/pom.xml
    	sandbox/plc-simulator/pom.xml
    	sandbox/test-java-amsads-driver/pom.xml
    	sandbox/test-java-bacnetip-driver/pom.xml
    	sandbox/test-java-df1-driver/pom.xml
    	sandbox/test-java-knxnetip-driver-passive/pom.xml
    	sandbox/test-java-knxnetip-driver/pom.xml
    	sandbox/test-java-knxnetip-shared/pom.xml
    	sandbox/test-java-s7-driver-passive/pom.xml
    	sandbox/test-java-s7-driver/pom.xml
    	sandbox/test-streampipes-plc4x-adapters/pom.xml
    	sandbox/test-streampipes-plc4x-processors/pom.xml

 .../freemarker/FreemarkerLanguageOutput.java       |   41 +-
 .../plc4x/language/java/JavaLanguageOutput.java    |   12 +-
 .../language/java/JavaLanguageTemplateHelper.java  |  139 ++-
 .../resources/templates/java/data-io-template.ftlh |  278 ++++++
 .../resources/templates/java/enum-template.ftlh    |  115 +--
 .../main/resources/templates/java/io-template.ftlh |   91 +-
 .../resources/templates/java/pojo-template.ftlh    |   16 +-
 .../plugins/codegenerator/language/mspec/MSpec.g4  |   20 +-
 .../definitions/DefaultDataIoTypeDefinition.java   |   38 +
 .../model/fields/DefaultManualArrayField.java      |   14 +-
 .../mspec/model/fields/DefaultManualField.java     |   14 +-
 .../references/DefaultStringTypeReference.java     |   38 +
 .../references/DefaultTemporalTypeReference.java   |   30 +
 .../mspec/parser/MessageFormatListener.java        |   89 +-
 .../src/test/resources/mspec.example               |    4 +-
 .../src/main/resources/protocols/test/test.mspec   |    2 +-
 jenkins.pom                                        |    2 +-
 plc4j/api/pom.xml                                  |   40 +-
 .../org/apache/plc4x/java/PlcDriverManager.java    |   50 +-
 .../org/apache/plc4x/java/api/Experimental.java    |   26 +
 .../org/apache/plc4x/java/api/PlcConnection.java   |   35 +-
 .../plc4x/java/api/PlcConnectionExtension.java     |   82 ++
 .../java/org/apache/plc4x/java/api/PlcDriver.java  |   60 ++
 .../java/api/authentication/PlcAuthentication.java |   34 +-
 .../PlcUsernamePasswordAuthentication.java         |   34 +-
 .../api/exceptions/PlcConnectionException.java     |   34 +-
 .../plc4x/java/api/exceptions/PlcException.java    |   34 +-
 .../api/exceptions/PlcFieldRangeException.java     |   32 +-
 .../PlcIncompatibleDatatypeException.java          |   39 +-
 .../api/exceptions/PlcInvalidFieldException.java   |   32 +-
 .../plc4x/java/api/exceptions/PlcIoException.java  |   34 +-
 .../api/exceptions/PlcNotImplementedException.java |   32 +-
 .../java/api/exceptions/PlcProtocolException.java  |   34 +-
 .../PlcProtocolPayloadTooBigException.java         |   34 +-
 .../exceptions/PlcProtocolTimeoutException.java    |   39 +
 .../java/api/exceptions/PlcRuntimeException.java   |   34 +-
 .../java/api/exceptions/PlcTimeoutException.java   |   32 +-
 .../PlcUnsupportedDataTypeException.java           |   32 +-
 .../PlcUnsupportedOperationException.java          |   34 +-
 .../PlcUnsupportedProtocolException.java           |   32 +-
 .../plc4x/java/api/messages/PlcFieldRequest.java   |   34 +-
 .../plc4x/java/api/messages/PlcFieldResponse.java  |   34 +-
 .../apache/plc4x/java/api/messages/PlcMessage.java |   34 +-
 .../plc4x/java/api/messages/PlcReadRequest.java    |   34 +-
 .../plc4x/java/api/messages/PlcReadResponse.java   |   50 +-
 .../apache/plc4x/java/api/messages/PlcRequest.java |   34 +-
 .../plc4x/java/api/messages/PlcRequestBuilder.java |   34 +-
 .../plc4x/java/api/messages/PlcResponse.java       |   34 +-
 .../java/api/messages/PlcSubscriptionEvent.java    |   34 +-
 .../java/api/messages/PlcSubscriptionRequest.java  |   34 +-
 .../java/api/messages/PlcSubscriptionResponse.java |   34 +-
 .../api/messages/PlcUnsubscriptionRequest.java     |   34 +-
 .../api/messages/PlcUnsubscriptionResponse.java    |   34 +-
 .../plc4x/java/api/messages/PlcWriteRequest.java   |   38 +-
 .../plc4x/java/api/messages/PlcWriteResponse.java  |   34 +-
 .../java/api/metadata/PlcConnectionMetadata.java   |   34 +-
 .../java/api/model/PlcConsumerRegistration.java    |   32 +-
 .../org/apache/plc4x/java/api/model/PlcField.java  |   34 +-
 .../java/api/model/PlcSubscriptionHandle.java      |   34 +-
 .../plc4x/java/api/types/PlcClientDatatype.java    |   34 +-
 .../plc4x/java/api/types/PlcResponseCode.java      |   34 +-
 .../plc4x/java/api/types/PlcSubscriptionType.java  |   34 +-
 .../apache/plc4x/java/api/value/PlcBigDecimal.java |  136 +++
 .../apache/plc4x/java/api/value/PlcBigInteger.java |  136 +++
 .../apache/plc4x/java/api/value/PlcBoolean.java    |  130 +++
 .../org/apache/plc4x/java/api/value/PlcDate.java   |   55 +
 .../apache/plc4x/java/api/value/PlcDateTime.java   |   77 ++
 .../org/apache/plc4x/java/api/value/PlcDouble.java |  140 +++
 .../org/apache/plc4x/java/api/value/PlcFloat.java  |  140 +++
 .../apache/plc4x/java/api/value/PlcInteger.java    |  156 +++
 .../org/apache/plc4x/java/api/value/PlcList.java   |   72 ++
 .../org/apache/plc4x/java/api/value/PlcLong.java   |  140 +++
 .../plc4x/java/api/value/PlcSimpleValue.java       |   57 ++
 .../org/apache/plc4x/java/api/value/PlcString.java |   68 ++
 .../org/apache/plc4x/java/api/value/PlcStruct.java |   70 ++
 .../org/apache/plc4x/java/api/value/PlcTime.java   |   55 +
 .../org/apache/plc4x/java/api/value/PlcValue.java  |  142 +++
 .../plc4x/java/api/value/PlcValueAdapter.java      |  248 +++++
 .../org/apache/plc4x/java/api/value/PlcValues.java |  379 +++++++
 .../java/org/apache/plc4x/java/spi/PlcDriver.java  |   61 --
 .../apache/plc4x/java/PlcDriverManagerTest.java    |   47 +-
 .../PlcUsernamePasswordAuthenticationTest.java     |   39 +-
 .../plc4x/java/api/connection/PlcReaderTest.java   |   32 +-
 .../plc4x/java/api/connection/PlcWriterTest.java   |   32 +-
 .../api/exceptions/PlcConnectionExceptionTest.java |   32 +-
 .../java/api/exceptions/PlcExceptionTest.java      |   32 +-
 .../api/exceptions/PlcFieldRangeExceptionTest.java |   32 +-
 .../PlcIncompatibleDatatypeExceptionTest.java      |   32 +-
 .../exceptions/PlcInvalidFieldExceptionTest.java   |   32 +-
 .../java/api/exceptions/PlcIoExceptionTest.java    |   32 +-
 .../exceptions/PlcNotImplementedExceptionTest.java |   32 +-
 .../api/exceptions/PlcProtocolExceptionTest.java   |   32 +-
 .../PlcProtocolPayloadTooBigExceptionTest.java     |   32 +-
 .../api/exceptions/PlcRuntimeExceptionTest.java    |   32 +-
 .../api/exceptions/PlcTimeoutExceptionTest.java    |   32 +-
 .../PlcUnsupportedDataTypeExceptionTest.java       |   32 +-
 .../PlcUnsupportedOperationExceptionTest.java      |   32 +-
 .../plc4x/java/api/messages/APIMessageTests.java   |   34 +-
 .../api/messages/PlcProprietaryRequestTest.java    |   32 +-
 .../api/messages/PlcProprietaryResponseTest.java   |   32 +-
 .../java/api/messages/PlcReadRequestTest.java      |   32 +-
 .../java/api/messages/PlcReadResponseTest.java     |   32 +-
 .../plc4x/java/api/messages/PlcRequestTest.java    |   32 +-
 .../plc4x/java/api/messages/PlcResponseTest.java   |   32 +-
 .../api/messages/PlcSubscriptionEventTest.java     |   32 +-
 .../api/messages/PlcSubscriptionRequestTest.java   |   32 +-
 .../api/messages/PlcSubscriptionResponseTest.java  |   32 +-
 .../api/messages/PlcUnsubscriptionRequestTest.java |   32 +-
 .../messages/PlcUnsubscriptionResponseTest.java    |   32 +-
 .../java/api/messages/PlcWriteRequestTest.java     |   32 +-
 .../java/api/messages/PlcWriteResponseTest.java    |   32 +-
 .../plc4x/java/api/messages/mock/MockField.java    |   34 +-
 .../specific/TypeSafePlcReadRequestTest.java       |   32 +-
 .../specific/TypeSafePlcReadResponseTest.java      |   32 +-
 .../specific/TypeSafePlcWriteRequestTest.java      |   32 +-
 .../specific/TypeSafePlcWriteResponseTest.java     |   32 +-
 .../java/api/types/PlcClientDatatypeTest.java      |   32 +-
 .../plc4x/java/api/types/PlcResponseCodeTest.java  |   32 +-
 .../java/api/types/PlcSubscriptionTypeTest.java    |   32 +-
 .../apache/plc4x/java/api/types/PlcValueTest.java  |   53 +
 .../apache/plc4x/java/api/value/PlcValuesTest.java |   52 +
 .../org/apache/plc4x/java/mock/ApiMockDriver.java  |   55 +
 .../plc4x/java/mock/DuplicateMockDriver.java       |   34 +-
 .../org/apache/plc4x/java/mock/MockDriver.java     |   55 -
 .../apache/plc4x/java/mock/MockPlcConnection.java  |   32 +-
 .../services/org.apache.plc4x.java.api.PlcDriver   |   38 +
 .../services/org.apache.plc4x.java.api.PlcDriver   |   38 +
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   19 -
 plc4j/drivers/ab-eth/pom.xml                       |   24 +-
 .../org/apache/plc4x/java/abeth/AbEthDriver.java   |   60 +-
 .../abeth/configuration/AbEthConfiguration.java    |   44 +
 .../java/abeth/connection/AbEthFieldHandler.java   |   36 -
 .../java/abeth/connection/AbEthPlcConnection.java  |  159 ---
 .../apache/plc4x/java/abeth/field/AbEthField.java  |  105 ++
 .../plc4x/java/abeth/field/AbEthFieldHandler.java  |   35 +
 .../apache/plc4x/java/abeth/model/AbEthField.java  |  105 --
 .../plc4x/java/abeth/model/types/FileType.java     |   65 --
 .../plc4x/java/abeth/protocol/AbEthProtocol.java   |   61 --
 .../java/abeth/protocol/AbEthProtocolLogic.java    |  221 +++++
 .../java/abeth/protocol/Plc4xAbEthProtocol.java    |   51 +-
 .../apache/plc4x/java/abeth/types/FileType.java    |   65 ++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../org/apache/plc4x/protocol/abeth/AbEthTest.java |    2 +-
 .../test/resources/testsuite/AbEthTestsuite.xml    |    2 +-
 plc4j/drivers/ads/pom.xml                          |   15 +-
 .../org/apache/plc4x/java/ads/AdsPlcDriver.java    |    2 +-
 .../ads/connection/AdsAbstractPlcConnection.java   |   39 +-
 .../ads/connection/AdsSerialPlcConnection.java     |    4 +-
 .../java/ads/connection/AdsTcpPlcConnection.java   |   23 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/ads/adslib/AmsRequest.java   |    4 +-
 .../apache/plc4x/java/ads/adslib/AmsRouter.java    |    4 +-
 .../connection/AdsAbstractPlcConnectionTest.java   |   16 +-
 .../ads/connection/AdsConnectionFactoryTest.java   |    6 +-
 .../ads/connection/AdsSerialPlcConnectionTest.java |    6 +-
 .../ads/connection/AdsTcpPlcConnectionTests.java   |    6 +-
 plc4j/drivers/ethernet-ip/pom.xml                  |    9 +-
 .../plc4x/java/ethernetip/EtherNetIpPlcDriver.java |    2 +-
 .../connection/BaseEtherNetIpPlcConnection.java    |    6 +-
 .../connection/EtherNetIpTcpPlcConnection.java     |    9 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/drivers/mock/pom.xml                         |   74 ++
 .../org/apache/plc4x/java/mock/MockDriver.java     |   63 ++
 .../plc4x/java/mock/connection/MockConnection.java |  207 ++++
 .../plc4x/java/mock/connection/MockDevice.java     |   51 +
 .../java/mock/connection/tcp/TcpHexDumper.java     |    0
 .../apache/plc4x/java/mock/field/MockField.java    |   62 ++
 .../plc4x/java/mock/field/MockFieldHandler.java    |   98 ++
 .../apache/plc4x/java/mock/field/MockPlcValue.java |   36 +
 .../mock/protocol/Plc4XSupportedDataTypes.java     |    0
 .../org/apache/plc4x/java/mock/util/Assert.java    |    0
 .../org/apache/plc4x/java/mock/util/HexUtil.java   |    0
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 plc4j/drivers/modbus/pom.xml                       |   17 +-
 .../apache/plc4x/java/modbus/ModbusPlcDriver.java  |    2 +-
 .../modbus/connection/BaseModbusPlcConnection.java |   14 +-
 .../connection/ModbusSerialPlcConnection.java      |    2 +-
 .../modbus/connection/ModbusTcpPlcConnection.java  |    7 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../connection/BaseModbusPlcConnectionTest.java    |    6 +-
 .../connection/ModbusConnectionFactoryTest.java    |    6 +-
 .../connection/ModbusSerialPlcConnectionTest.java  |    6 +-
 plc4j/drivers/opcua/pom.xml                        |    6 +-
 .../apache/plc4x/java/opcua/OpcuaPlcDriver.java    |    2 +-
 .../opcua/connection/BaseOpcuaPlcConnection.java   |    4 +-
 .../opcua/connection/OpcuaTcpPlcConnection.java    |   52 +-
 .../java/opcua/protocol/OpcuaPlcFieldHandler.java  |   94 +-
 .../opcua/protocol/OpcuaSubsriptionHandle.java     |   12 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/opcua/ManualPLC4XOpcua.java  |    4 +-
 plc4j/drivers/pom.xml                              |    9 +-
 plc4j/drivers/s7/pom.xml                           |   19 +-
 .../java/org/apache/plc4x/java/s7/S7PlcDriver.java |    2 +-
 .../plc4x/java/s7/connection/S7PlcConnection.java  |   33 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../java/org/apache/plc4x/java/s7/BenchmarkS7.java |    5 +-
 .../java/s7/connection/S7PlcTestConnection.java    |    2 +-
 plc4j/drivers/simulated/pom.xml                    |   12 +-
 .../plc4x/java/simulated/SimulatedDriver.java      |   65 ++
 .../plc4x/java/simulated/SimulatedPlcDriver.java   |   65 --
 .../simulated/connection/SimulatedConnection.java  |  254 +++++
 .../java/simulated/connection/SimulatedDevice.java |  194 ++++
 .../connection/SimulatedPlcConnection.java         |  219 ----
 .../java/simulated/connection/TestDevice.java      |  199 ----
 .../plc4x/java/simulated/connection/TestField.java |  128 ---
 .../simulated/connection/TestFieldHandler.java     |  174 ----
 .../java/simulated/connection/TestFieldItem.java   |   35 -
 .../plc4x/java/simulated/connection/TestType.java  |   28 -
 .../plc4x/java/simulated/field/SimulatedField.java |  129 +++
 .../simulated/field/SimulatedFieldHandler.java     |  214 ++++
 .../java/simulated/types/SimulatedFieldType.java   |   28 +
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   38 -
 .../plc4x/java/simulated/SimulatedDriverTest.java  |   58 ++
 .../java/simulated/SimulatedPlcDriverTest.java     |   57 --
 .../connection/SimulatedConnectionTest.java        |  245 +++++
 .../simulated/connection/SimulatedDeviceTest.java  |   57 ++
 .../connection/SimulatedPlcConnectionTest.java     |  245 -----
 .../java/simulated/connection/TestDeviceTest.java  |   56 --
 .../simulated/connection/TestFieldHandlerTest.java |  133 ---
 .../simulated/connection/TestFieldItemTest.java    |   31 -
 .../java/simulated/connection/TestFieldTest.java   |   61 --
 .../simulated/field/SimularedFieldHandlerTest.java |  128 +++
 .../java/simulated/field/SimulatedFieldTest.java   |   62 ++
 plc4j/examples/dummy-driver/pom.xml                |    5 +-
 .../java/examples/dummydriver/DummyDriver.java     |    2 +-
 .../dummydriver/connection/DummyConnection.java    |   14 +-
 .../examples/dummydriver/netty/DummyProtocol.java  |    2 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/examples/hello-cloud-azure/pom.xml           |    8 +-
 plc4j/examples/hello-cloud-google/pom.xml          |    8 +-
 plc4j/examples/hello-connectivity-kafka/pom.xml    |    8 +-
 plc4j/examples/hello-connectivity-mqtt/pom.xml     |    8 +-
 plc4j/examples/hello-integration-edgent/pom.xml    |    8 +-
 plc4j/examples/hello-integration-iotdb/pom.xml     |    8 +-
 .../java/examples/integration/iotdb/PlcLogger.java |    2 +-
 plc4j/examples/hello-opm/pom.xml                   |    8 +-
 plc4j/examples/hello-storage-elasticsearch/pom.xml |    8 +-
 plc4j/examples/hello-webapp/service/pom.xml        |    8 +-
 plc4j/examples/hello-world-plc4x/pom.xml           |   15 +-
 .../plc4x/java/examples/helloplc4x/HelloPlc4x.java |   13 +-
 .../src/main/resources/logback.xml                 |    2 +-
 plc4j/examples/pom.xml                             |    2 +-
 plc4j/integrations/apache-calcite/pom.xml          |    1 -
 .../java/org/apache/plc4x/DriverManagerTest.java   |    1 -
 .../java/org/apache/plc4x/Plc4XBaseTableTest.java  |    2 +-
 .../apache-calcite/src/test/resources/example.yml  |    4 +-
 plc4j/integrations/apache-camel/pom.xml            |    6 +-
 .../java/org/apache/plc4x/camel/MockDriver.java    |   15 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 plc4j/integrations/apache-edgent/pom.xml           |   19 +-
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |    4 +-
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |  551 ++++++++++
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  144 +++
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |  552 -----------
 .../org/apache/plc4x/edgent/PlcFunctionsTest.java  |  144 ---
 .../apache/plc4x/edgent/mock/MockConnection.java   |  155 ---
 .../org/apache/plc4x/edgent/mock/MockDriver.java   |   48 -
 .../org/apache/plc4x/edgent/mock/MockField.java    |   62 --
 .../apache/plc4x/edgent/mock/MockFieldHandler.java |  104 --
 .../apache/plc4x/edgent/mock/MockFieldItem.java    |   34 -
 .../services/org.apache.plc4x.java.spi.PlcDriver   |   19 -
 plc4j/integrations/apache-kafka/README.md          |    2 +-
 plc4j/integrations/apache-kafka/pom.xml            |    8 +-
 .../apache-nifi/nifi-plc4x-nar/pom.xml             |    8 +-
 plc4j/integrations/logstash-plugin/pom.xml         |    8 +-
 plc4j/karaf-features/pom.xml                       |    4 +-
 .../karaf-features/s7/src/main/feature/feature.xml |    5 +-
 plc4j/pom.xml                                      |    9 +-
 plc4j/protocols/ads/pom.xml                        |    9 +-
 .../plc4x/java/ads/api/serial/AmsSerialFrame.java  |    2 +-
 .../plc4x/java/ads/model/AdsPlcFieldHandler.java   |  168 ++--
 .../java/ads/model/AdsSubscriptionHandle.java      |    4 +-
 .../plc4x/java/ads/protocol/Plc4x2AdsProtocol.java |   29 +-
 .../ads/protocol/util/LittleEndianDecoder.java     |  206 +++-
 .../protocol/util/SingleMessageRateLimiter.java    |    2 +-
 .../protocol/util/LittleEndianDecoderSpec.groovy   |   99 --
 .../util/LittleEndianDecoderSpecHurz.groovy        |   99 ++
 .../protocol/util/LittleEndianEncoderSpec.groovy   |   53 -
 .../util/LittleEndianEncoderSpecHurz.groovy        |   53 +
 .../java/ads/model/AdsPlcFieldHandlerTest.java     |    5 +-
 ...load2SerialProtocolExampleConversationTest.java |    8 +-
 .../java/ads/protocol/Plc4x2AdsProtocolTest.java   |    4 +-
 .../java/ads/protocol/util/DigestUtilTest.java     |    5 +-
 plc4j/protocols/driver-bases/base/pom.xml          |  101 --
 .../base/GeneratedDriverByteToMessageCodec.java    |   79 --
 .../plc4x/java/base/PlcByteToMessageCodec.java     |   59 --
 .../plc4x/java/base/PlcMessageToMessageCodec.java  |   60 --
 .../base/connection/AbstractPlcConnection.java     |  105 --
 .../plc4x/java/base/connection/ChannelFactory.java |   33 -
 .../base/connection/DefaultPlcFieldHandler.java    |  101 --
 .../java/base/connection/NettyPlcConnection.java   |  132 ---
 .../java/base/connection/PlcFieldHandler.java      |   60 --
 .../plc4x/java/base/events/ConnectEvent.java       |   22 -
 .../plc4x/java/base/events/ConnectedEvent.java     |   22 -
 .../plc4x/java/base/events/DisconnectEvent.java    |   39 -
 .../plc4x/java/base/events/DisconnectedEvent.java  |   22 -
 .../messages/DefaultPlcProprietaryRequest.java     |   43 -
 .../messages/DefaultPlcProprietaryResponse.java    |   42 -
 .../java/base/messages/DefaultPlcReadRequest.java  |  113 ---
 .../java/base/messages/DefaultPlcReadResponse.java |  583 -----------
 .../base/messages/DefaultPlcSubscriptionEvent.java |   55 -
 .../messages/DefaultPlcSubscriptionRequest.java    |  168 ----
 .../messages/DefaultPlcSubscriptionResponse.java   |   90 --
 .../messages/DefaultPlcUnsubscriptionRequest.java  |   90 --
 .../messages/DefaultPlcUnsubscriptionResponse.java |   36 -
 .../java/base/messages/DefaultPlcWriteRequest.java |  275 -----
 .../base/messages/DefaultPlcWriteResponse.java     |   62 --
 .../base/messages/InternalPlcFieldRequest.java     |   31 -
 .../base/messages/InternalPlcFieldResponse.java    |   26 -
 .../java/base/messages/InternalPlcMessage.java     |   23 -
 .../messages/InternalPlcProprietaryRequest.java    |   22 -
 .../messages/InternalPlcProprietaryResponse.java   |   22 -
 .../java/base/messages/InternalPlcReadRequest.java |   26 -
 .../base/messages/InternalPlcReadResponse.java     |   31 -
 .../java/base/messages/InternalPlcRequest.java     |   24 -
 .../java/base/messages/InternalPlcResponse.java    |   25 -
 .../messages/InternalPlcSubscriptionEvent.java     |   25 -
 .../messages/InternalPlcSubscriptionRequest.java   |   36 -
 .../messages/InternalPlcSubscriptionResponse.java  |   30 -
 .../messages/InternalPlcUnsubscriptionRequest.java |   29 -
 .../InternalPlcUnsubscriptionResponse.java         |   25 -
 .../base/messages/InternalPlcWriteRequest.java     |   36 -
 .../base/messages/InternalPlcWriteResponse.java    |   28 -
 .../java/base/messages/PlcProprietaryRequest.java  |   25 -
 .../java/base/messages/PlcProprietaryResponse.java |   25 -
 .../java/base/messages/PlcProprietarySender.java   |   25 -
 .../java/base/messages/PlcProtocolMessage.java     |   25 -
 .../plc4x/java/base/messages/PlcRawMessage.java    |   46 -
 .../apache/plc4x/java/base/messages/PlcReader.java |   40 -
 .../java/base/messages/PlcRequestContainer.java    |   85 --
 .../plc4x/java/base/messages/PlcSubscriber.java    |   63 --
 .../apache/plc4x/java/base/messages/PlcWriter.java |   40 -
 .../base/messages/items/BaseDefaultFieldItem.java  |  193 ----
 .../messages/items/DefaultBigDecimalFieldItem.java |  171 ----
 .../messages/items/DefaultBigIntegerFieldItem.java |  171 ----
 .../messages/items/DefaultBooleanFieldItem.java    |  184 ----
 .../messages/items/DefaultByteArrayFieldItem.java  |   58 --
 .../base/messages/items/DefaultByteFieldItem.java  |  151 ---
 .../messages/items/DefaultDoubleFieldItem.java     |  158 ---
 .../base/messages/items/DefaultFloatFieldItem.java |  156 ---
 .../messages/items/DefaultIntegerFieldItem.java    |  153 ---
 .../messages/items/DefaultLocalDateFieldItem.java  |   50 -
 .../items/DefaultLocalDateTimeFieldItem.java       |   78 --
 .../messages/items/DefaultLocalTimeFieldItem.java  |   50 -
 .../base/messages/items/DefaultLongFieldItem.java  |  154 ---
 .../base/messages/items/DefaultShortFieldItem.java |  151 ---
 .../messages/items/DefaultStringFieldItem.java     |   48 -
 .../base/model/DefaultPlcConsumerRegistration.java |   85 --
 .../base/model/DefaultPlcSubscriptionHandle.java   |   62 --
 .../model/InternalPlcConsumerRegistration.java     |   32 -
 .../base/model/InternalPlcSubscriptionHandle.java  |   25 -
 .../java/base/model/SubscriptionPlcField.java      |   55 -
 .../SingleItemToSingleRequestProtocol.java         |  647 ------------
 .../messages/DefaultPlcReadResponseSpec.groovy     |   86 --
 .../base/messages/items/DefaultItemsSpec.groovy    |  217 ----
 .../base/connection/AbstractPlcConnectionTest.java |  101 --
 .../base/connection/NettyPlcConnectionTest.java    |   92 --
 .../messages/DefaultPlcProprietaryRequestTest.java |   48 -
 .../DefaultPlcProprietaryResponseTest.java         |   50 -
 .../base/messages/DefaultPlcReadRequestTest.java   |  116 ---
 .../base/messages/DefaultPlcReadResponseTest.java  |  120 ---
 .../messages/DefaultPlcSubscriptionEventTest.java  |   68 --
 .../DefaultPlcSubscriptionRequestTest.java         |  157 ---
 .../DefaultPlcSubscriptionResponseTest.java        |  124 ---
 .../DefaultPlcUnsubscriptionRequestTest.java       |   91 --
 .../DefaultPlcUnsubscriptionResponseTest.java      |   48 -
 .../base/messages/DefaultPlcWriteRequestTest.java  |   70 --
 .../base/messages/DefaultPlcWriteResponseTest.java |   91 --
 .../java/base/messages/PlcRawMessageTest.java      |   57 --
 .../base/messages/PlcRequestContainerTest.java     |   82 --
 .../messages/items/DefaultLongFieldItemTest.java   |  114 ---
 .../model/DefaultPlcConsumerRegistrationTest.java  |   88 --
 .../model/DefaultPlcSubscriptionHandleTest.java    |   73 --
 .../java/base/model/SubscriptionPlcFieldTest.java  |   68 --
 .../SingleItemToSingleRequestProtocolTest.java     |  729 --------------
 ...spockframework.report.IReportCreator.properties |   66 --
 plc4j/protocols/driver-bases/pcap-socket/pom.xml   |   67 --
 .../java/base/connection/PcapChannelFactory.java   |  101 --
 plc4j/protocols/driver-bases/pom.xml               |   46 -
 plc4j/protocols/driver-bases/raw-socket/pom.xml    |   67 --
 .../base/connection/RawSocketChannelFactory.java   |  110 --
 plc4j/protocols/driver-bases/serial/pom.xml        |   81 --
 .../connection/connection/SerialChannel.java       |  635 ------------
 .../connection/SerialChannelFactory.java           |   83 --
 .../connection/SerialChannelHandler.java           |  172 ----
 .../connection/SerialPollingSelector.java          |  176 ----
 .../connection/connection/SerialSelectionKey.java  |   80 --
 .../connection/SerialSelectorProvider.java         |   68 --
 .../connection/connection/SerialSocketAddress.java |   47 -
 .../connection/connection/SerialSocketChannel.java |  158 ---
 .../base/connection/SerialChannelFactoryTest.java  |  111 ---
 plc4j/protocols/driver-bases/tcp/pom.xml           |   62 --
 .../tcp/connection/TcpSocketChannelFactory.java    |  112 ---
 plc4j/protocols/driver-bases/test/pom.xml          |   97 --
 .../org/apache/plc4x/java/mock/MockDevice.java     |   50 -
 .../java/org/apache/plc4x/java/mock/MockField.java |   49 -
 .../apache/plc4x/java/mock/MockFieldHandler.java   |  103 --
 .../org/apache/plc4x/java/mock/MockFieldItem.java  |   34 -
 .../apache/plc4x/java/mock/PlcMockConnection.java  |  193 ----
 .../org/apache/plc4x/java/mock/PlcMockDriver.java  |   62 --
 .../plc4x/java/mock/connection/MockConnection.java |   41 -
 .../java/mock/connection/TestChannelFactory.java   |   45 -
 .../plc4x/java/mock/MockFieldHandlerTest.java      |  111 ---
 .../apache/plc4x/java/mock/MockFieldItemTest.java  |   31 -
 .../org/apache/plc4x/java/mock/MockFieldTest.java  |   48 -
 .../plc4x/java/mock/PlcMockConnectionTest.java     |  164 ---
 .../apache/plc4x/java/mock/PlcMockDriverTest.java  |   96 --
 plc4j/protocols/driver-bases/udp/pom.xml           |   70 --
 .../base/connection/UdpSocketChannelFactory.java   |  110 --
 .../protocol/DatagramUnpackingHandler.java         |   39 -
 plc4j/protocols/ethernet-ip/pom.xml                |    2 +-
 .../ethernetip/netty/Plc4XEtherNetIpProtocol.java  |   16 +-
 .../ethernetip/netty/util/EnipPlcFieldHandler.java |   28 +-
 plc4j/protocols/iso-on-tcp/pom.xml                 |    6 +-
 .../java/isoontcp/protocol/IsoOnTcpProtocol.java   |    4 +-
 .../isoontcp/protocol/model/IsoOnTcpMessage.java   |    2 +-
 plc4j/protocols/iso-tp/pom.xml                     |    3 +-
 .../plc4x/java/isotp/protocol/IsoTPProtocol.java   |    4 +-
 .../java/isotp/protocol/model/IsoTPMessage.java    |    2 +-
 .../java/isotp/protocol/model/tpdus/DataTpdu.java  |    2 +-
 .../java/isotp/protocol/model/tpdus/Tpdu.java      |    4 +-
 plc4j/protocols/modbus/pom.xml                     |    9 +-
 .../items/DefaultModbusByteArrayFieldItem.java     |  258 -----
 .../items/DefaultModbusByteArrayPlcList.java       |  218 ++++
 .../java/modbus/netty/Plc4XModbusProtocol.java     |   82 +-
 .../java/modbus/util/ModbusPlcFieldHandler.java    |   33 +-
 .../plc4x/java/modbus/ManualPlc4XModbusTest.java   |    6 +-
 .../items/DefaultModbusByteArrayFieldItemTest.java |  170 ----
 .../items/DefaultModbusByteArrayPlcValueTest.java  |  170 ++++
 .../java/modbus/netty/Plc4XModbusProtocolTest.java |   57 +-
 plc4j/protocols/pom.xml                            |    5 +-
 plc4j/protocols/s7/pom.xml                         |    3 +-
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       |  337 ++++---
 .../java/s7/netty/model/messages/S7Message.java    |    4 +-
 .../s7/netty/model/messages/S7RequestMessage.java  |    2 +-
 .../messages/SetupCommunicationRequestMessage.java |    2 +-
 .../strategies/DefaultS7MessageProcessor.java      |    2 +-
 .../java/s7/netty/util/S7PlcFieldHandler.java      |  142 +--
 .../plc4x/java/s7/netty/Plc4XS7ProtocolSpec.groovy |   14 +-
 .../plc4x/java/s7/netty/Plc4XS7ProtocolTest.java   |    2 +-
 .../java/s7/netty/util/S7PlcFieldHandlerTest.java  |   44 +-
 plc4j/spi/pom.xml                                  |   86 ++
 .../github/jinahya/bit/io/MyDefaultBitInput.java   |    0
 .../apache/plc4x/java/spi/ConversationContext.java |   86 ++
 .../spi/GeneratedDriverByteToMessageCodec.java     |   90 ++
 .../apache/plc4x/java/spi/Plc4xNettyWrapper.java   |  204 ++++
 .../apache/plc4x/java/spi/Plc4xProtocolBase.java   |   80 ++
 .../plc4x/java/spi/PlcMessageToMessageCodec.java   |   60 ++
 .../java/spi/configuration/Configuration.java      |   23 +
 .../spi/configuration/ConfigurationFactory.java    |  241 +++++
 .../java/spi/configuration/HasConfiguration.java   |   38 +
 .../annotations/ConfigurationParameter.java        |   33 +
 .../spi/configuration/annotations/Required.java    |   30 +
 .../annotations/defaults/BooleanDefaultValue.java  |   33 +
 .../annotations/defaults/DoubleDefaultValue.java   |   33 +
 .../annotations/defaults/IntDefaultValue.java      |   33 +
 .../annotations/defaults/StringDefaultValue.java   |   33 +
 .../java/spi/connection/AbstractPlcConnection.java |  193 ++++
 .../plc4x/java/spi/connection/ChannelFactory.java  |   37 +
 .../spi/connection/DefaultNettyPlcConnection.java  |  187 ++++
 .../spi/connection/DefaultPlcFieldHandler.java     |   97 ++
 .../java/spi/connection/GeneratedDriverBase.java   |  131 +++
 .../connection/GeneratedProtocolMessageCodec.java  |   72 ++
 .../java/spi/connection/NettyChannelFactory.java   |  157 +++
 .../apache/plc4x/java/spi/connection/Parser.java   |   29 +
 .../plc4x/java/spi/connection/PlcFieldHandler.java |   58 ++
 .../spi/connection/ProtocolStackConfigurer.java    |   31 +
 .../java/spi/connection/ReflectionBasedIo.java     |   67 ++
 .../plc4x/java/spi/connection/Serializer.java      |   29 +
 .../connection/SingleProtocolStackConfigurer.java  |  136 +++
 .../java/spi/events/CloseConnectionEvent.java      |   23 +
 .../apache/plc4x/java/spi/events/ConnectEvent.java |   22 +
 .../plc4x/java/spi/events/ConnectedEvent.java      |   22 +
 .../plc4x/java/spi/events/DisconnectEvent.java     |   39 +
 .../plc4x/java/spi/events/DisconnectedEvent.java   |   22 +
 .../exceptions/InternalPlcRuntimeException.java    |   41 +
 .../java/spi/generation/EvaluationHelper.java      |   58 ++
 .../apache/plc4x/java/spi/generation/Message.java  |   26 +
 .../plc4x/java/spi/generation/MessageIO.java       |   23 +
 .../plc4x/java/spi/generation/MessageInput.java    |   25 +
 .../plc4x/java/spi/generation/MessageOutput.java   |   25 +
 .../plc4x/java/spi/generation/ParseException.java  |   32 +
 .../plc4x/java/spi/generation/ReadBuffer.java      |  265 +++++
 .../plc4x/java/spi/generation/StaticHelper.java    |   79 ++
 .../plc4x/java/spi/generation/WriteBuffer.java     |  212 ++++
 .../spi/internal/DefaultSendRequestContext.java    |  138 +++
 .../java/spi/internal/HandlerRegistration.java     |   86 ++
 .../spi/messages/DefaultPlcProprietaryRequest.java |   43 +
 .../messages/DefaultPlcProprietaryResponse.java    |   42 +
 .../java/spi/messages/DefaultPlcReadRequest.java   |  118 +++
 .../java/spi/messages/DefaultPlcReadResponse.java  |  616 ++++++++++++
 .../spi/messages/DefaultPlcSubscriptionEvent.java  |   55 +
 .../messages/DefaultPlcSubscriptionRequest.java    |  173 ++++
 .../messages/DefaultPlcSubscriptionResponse.java   |   90 ++
 .../messages/DefaultPlcUnsubscriptionRequest.java  |   90 ++
 .../messages/DefaultPlcUnsubscriptionResponse.java |   36 +
 .../java/spi/messages/DefaultPlcWriteRequest.java  |  276 ++++++
 .../java/spi/messages/DefaultPlcWriteResponse.java |   62 ++
 .../java/spi/messages/InternalPlcFieldRequest.java |   31 +
 .../spi/messages/InternalPlcFieldResponse.java     |   26 +
 .../java/spi/messages/InternalPlcMessage.java      |   23 +
 .../messages/InternalPlcProprietaryRequest.java    |   22 +
 .../messages/InternalPlcProprietaryResponse.java   |   22 +
 .../java/spi/messages/InternalPlcReadRequest.java  |   26 +
 .../java/spi/messages/InternalPlcReadResponse.java |   32 +
 .../java/spi/messages/InternalPlcRequest.java      |   24 +
 .../java/spi/messages/InternalPlcResponse.java     |   25 +
 .../spi/messages/InternalPlcSubscriptionEvent.java |   25 +
 .../messages/InternalPlcSubscriptionRequest.java   |   36 +
 .../messages/InternalPlcSubscriptionResponse.java  |   30 +
 .../messages/InternalPlcUnsubscriptionRequest.java |   29 +
 .../InternalPlcUnsubscriptionResponse.java         |   25 +
 .../java/spi/messages/InternalPlcWriteRequest.java |   36 +
 .../spi/messages/InternalPlcWriteResponse.java     |   28 +
 .../java/spi/messages/PlcProprietaryRequest.java   |   25 +
 .../java/spi/messages/PlcProprietaryResponse.java  |   25 +
 .../java/spi/messages/PlcProprietarySender.java    |   25 +
 .../java/spi/messages/PlcProtocolMessage.java      |   25 +
 .../plc4x/java/spi/messages/PlcRawMessage.java     |   46 +
 .../apache/plc4x/java/spi/messages/PlcReader.java  |   40 +
 .../java/spi/messages/PlcRequestContainer.java     |   85 ++
 .../plc4x/java/spi/messages/PlcSubscriber.java     |   63 ++
 .../apache/plc4x/java/spi/messages/PlcWriter.java  |   40 +
 .../spi/model/DefaultPlcConsumerRegistration.java  |   85 ++
 .../spi/model/DefaultPlcSubscriptionHandle.java    |   62 ++
 .../spi/model/InternalPlcConsumerRegistration.java |   32 +
 .../spi/model/InternalPlcSubscriptionHandle.java   |   25 +
 .../plc4x/java/spi/model/SubscriptionPlcField.java |   55 +
 .../spi/optimizer/RequestTransactionManager.java   |  194 ++++
 .../SingleItemToSingleRequestProtocol.java         |  668 +++++++++++++
 .../apache/plc4x/java/spi/request/PlcRequest.java  |   28 +
 .../apache/plc4x/java/spi/transport/Transport.java |   32 +
 .../java/spi/transport/TransportConfiguration.java |   25 +
 .../org/apache/plc4x/java/spi/types/FieldType.java |   47 +
 .../internal/DefaultSendRequestContextTest.java    |  116 +++
 .../optimizer/RequestTransactionManagerTest.java   |  170 ++++
 .../java/spi/parser/ConnectionParserTest.java      |   72 ++
 plc4j/tools/connection-pool/pom.xml                |   52 +
 .../plc4x/java/utils/connectionpool/PoolKey.java   |    0
 .../java/utils/connectionpool/PoolKeyFactory.java  |    0
 .../connectionpool/PooledPlcConnectionFactory.java |    0
 .../connectionpool/PooledPlcDriverManager.java     |    0
 .../utils/connectionpool/PoolKeyFactoryTest.java   |    0
 .../utils/connectionpool/PooledDummyDriver.java    |   52 +
 .../connectionpool/PooledPlcDriverManagerTest.java |  367 +++++++
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 .../connection-pool/src/test/resources/logback.xml |    0
 plc4j/tools/interop/pom.xml                        |  217 ++++
 .../interop/src/assembly/assembly.xml              |    0
 .../java/org/apache/plc4x/interop/impl/Client.java |    0
 .../org/apache/plc4x/interop/impl/Handler.java     |  163 +++
 .../java/org/apache/plc4x/interop/impl/Server.java |   97 ++
 plc4j/tools/opm/pom.xml                            |   94 ++
 .../org/apache/plc4x/java/opm/AliasRegistry.java   |    0
 .../org/apache/plc4x/java/opm/OPMException.java    |    0
 .../java/org/apache/plc4x/java/opm/OpmUtils.java   |    0
 .../java/org/apache/plc4x/java/opm/PlcEntity.java  |    0
 .../plc4x/java/opm/PlcEntityInterceptor.java       |  565 +++++++++++
 .../apache/plc4x/java/opm/PlcEntityManager.java    |    0
 .../java/org/apache/plc4x/java/opm/PlcField.java   |    0
 .../apache/plc4x/java/opm/SimpleAliasRegistry.java |    0
 .../opm/src/site/asciidoc/opm/using-opm.adoc       |    0
 plc4j/{utils => tools}/opm/src/site/site.xml       |    0
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |  119 +++
 .../apache/plc4x/java/opm/OPMExceptionTest.java    |    0
 .../org/apache/plc4x/java/opm/OpmUtilsTest.java    |    0
 .../plc4x/java/opm/PlcEntityInterceptorTest.java   |  233 +++++
 .../java/opm/PlcEntityManagerComplexTest.java      |  470 +++++++++
 .../plc4x/java/opm/PlcEntityManagerTest.java       |  318 ++++++
 .../plc4x/java/opm/SimpleAliasRegistryTest.java    |    0
 .../opm/src/test/resources/logback.xml             |    0
 plc4j/tools/pom.xml                                |   52 +
 plc4j/{utils => tools}/scraper/README.md           |    0
 plc4j/tools/scraper/pom.xml                        |  133 +++
 .../apache/plc4x/java/scraper/ResultHandler.java   |    0
 .../org/apache/plc4x/java/scraper/ScrapeJob.java   |    0
 .../apache/plc4x/java/scraper/ScrapeJobImpl.java   |    0
 .../org/apache/plc4x/java/scraper/Scraper.java     |    0
 .../org/apache/plc4x/java/scraper/ScraperImpl.java |    0
 .../org/apache/plc4x/java/scraper/ScraperTask.java |    0
 .../apache/plc4x/java/scraper/ScraperTaskImpl.java |    0
 .../java/scraper/config/JobConfiguration.java      |    0
 .../config/JobConfigurationClassicImpl.java        |    0
 .../config/JobConfigurationClassicImplBuilder.java |    0
 .../java/scraper/config/JobConfigurationImpl.java  |    0
 .../java/scraper/config/ScraperConfiguration.java  |    0
 .../config/ScraperConfigurationClassicImpl.java    |    0
 .../ScraperConfigurationClassicImplBuilder.java    |    0
 .../JobConfigurationTriggeredImpl.java             |    0
 .../JobConfigurationTriggeredImplBuilder.java      |    0
 .../ScraperConfigurationTriggeredImpl.java         |    0
 .../ScraperConfigurationTriggeredImplBuilder.java  |    0
 .../exception/ScraperConfigurationException.java   |    0
 .../java/scraper/exception/ScraperException.java   |    0
 .../triggeredscraper/TriggeredScrapeJobImpl.java   |    0
 .../triggeredscraper/TriggeredScraperImpl.java     |  366 +++++++
 .../triggeredscraper/TriggeredScraperMBean.java    |    0
 .../triggeredscraper/TriggeredScraperTask.java     |    0
 .../TriggeredScraperTaskMBean.java                 |    0
 .../triggerhandler/TriggerConfiguration.java       |  722 ++++++++++++++
 .../triggerhandler/TriggerHandler.java             |    0
 .../triggerhandler/TriggerHandlerImpl.java         |    0
 .../triggerhandler/collector/TriggerCollector.java |    0
 .../collector/TriggerCollectorImpl.java            |    0
 .../scraper/util/PercentageAboveThreshold.java     |    0
 .../apache/plc4x/java/s7/ManualS7PlcDriverMT.java  |    0
 .../java/scraper/ScraperConfigurationTest.java     |    0
 .../apache/plc4x/java/scraper/ScraperRunner.java   |    0
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |  113 +++
 .../org/apache/plc4x/java/scraper/ScraperTest.java |  175 ++++
 .../plc4x/java/scraper/TriggeredScraperRunner.java |    0
 .../java/scraper/TriggeredScraperRunnerModbus.java |   62 ++
 .../config/ScraperConfigurationBuilderTest.java    |    0
 .../triggeredscraper/TriggeredScraperImplTest.java |  118 +++
 .../triggerhandler/TriggerConfigurationTest.java   |  150 +++
 .../scraper/src/test/resources/config.json         |    0
 .../scraper/src/test/resources/config.yml          |    0
 .../scraper/src/test/resources/example.yml         |    0
 .../test/resources/example_triggered_scraper.yml   |    0
 .../resources/example_triggered_scraper_modbus.yml |    0
 .../src/test/resources/example_with_strings.yml    |    0
 .../scraper/src/test/resources/logback-test.xml    |    0
 .../scraper/src/test/resources/logback.xml         |    0
 .../src/test/resources/mock-scraper-config.yml     |    0
 plc4j/transports/pcap-socket/pom.xml               |   63 ++
 .../java/transport/pcap/PcapChannelFactory.java    |   68 ++
 .../plc4x/java/transport/pcap/PcapTransport.java   |   50 +
 .../transport/pcap/PcapTransportConfiguration.java |   34 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/pom.xml                           |   45 +
 plc4j/transports/raw-socket/pom.xml                |   58 ++
 .../rawsocket/RawSocketChannelFactory.java         |   57 ++
 .../transport/rawsocket/RawSocketTransport.java    |   43 +
 .../rawsocket/RawSocketTransportConfiguration.java |   27 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/serial/pom.xml                    |   83 ++
 .../plc4x/java/transport/serial/SerialChannel.java |  636 ++++++++++++
 .../transport/serial/SerialChannelFactory.java     |   65 ++
 .../transport/serial/SerialChannelHandler.java     |  181 ++++
 .../transport/serial/SerialPollingSelector.java    |  176 ++++
 .../java/transport/serial/SerialSelectionKey.java  |   86 ++
 .../transport/serial/SerialSelectorProvider.java   |   68 ++
 .../java/transport/serial/SerialSocketAddress.java |   50 +
 .../java/transport/serial/SerialSocketChannel.java |  158 +++
 .../java/transport/serial/SerialTransport.java     |   42 +
 .../serial/SerialTransportConfiguration.java       |   25 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 .../base/connection/SerialChannelFactoryTest.java  |  116 +++
 plc4j/transports/tcp/pom.xml                       |   58 ++
 .../java/transport/tcp/TcpChannelFactory.java      |   62 ++
 .../plc4x/java/transport/tcp/TcpTransport.java     |   81 ++
 .../transport/tcp/TcpTransportConfiguration.java   |   49 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/test/pom.xml                      |   84 ++
 .../java/transport/test/TestChannelFactory.java    |   58 ++
 .../java/transport/test/TestSocketAddress.java     |   29 +
 .../plc4x/java/transport/test/TestTransport.java   |   42 +
 .../transport/test/TestTransportConfiguration.java |   25 +
 ...spockframework.report.IReportCreator.properties |    0
 .../services/org.apache.plc4x.java.api.PlcDriver}  |    0
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/transports/udp/pom.xml                       |   66 ++
 .../java/transport/udp/UdpChannelFactory.java      |   65 ++
 .../plc4x/java/transport/udp/UdpTransport.java     |   81 ++
 .../transport/udp/UdpTransportConfiguration.java   |   31 +
 .../udp/protocol/DatagramUnpackingHandler.java     |   39 +
 .../org.apache.plc4x.java.spi.transport.Transport  |   20 +
 plc4j/utils/connection-pool/pom.xml                |   51 -
 .../utils/connectionpool/PooledDummyDriver.java    |   52 -
 .../connectionpool/PooledPlcDriverManagerTest.java |  367 -------
 plc4j/utils/driver-base-java/pom.xml               |   42 -
 .../apache/plc4x/java/utils/EvaluationHelper.java  |   58 --
 .../java/org/apache/plc4x/java/utils/Message.java  |   26 -
 .../org/apache/plc4x/java/utils/MessageIO.java     |   23 -
 .../org/apache/plc4x/java/utils/MessageInput.java  |   25 -
 .../org/apache/plc4x/java/utils/MessageOutput.java |   25 -
 .../apache/plc4x/java/utils/ParseException.java    |   32 -
 .../org/apache/plc4x/java/utils/ReadBuffer.java    |  254 -----
 .../org/apache/plc4x/java/utils/WriteBuffer.java   |  208 ----
 plc4j/utils/interop/pom.xml                        |  216 ----
 .../org/apache/plc4x/interop/impl/Handler.java     |  160 ---
 .../java/org/apache/plc4x/interop/impl/Server.java |   91 --
 plc4j/utils/opm/pom.xml                            |  103 --
 .../plc4x/java/opm/PlcEntityInterceptor.java       |  569 -----------
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |  119 ---
 .../plc4x/java/opm/PlcEntityInterceptorTest.java   |  214 ----
 .../java/opm/PlcEntityManagerComplexTest.java      |  460 ---------
 .../plc4x/java/opm/PlcEntityManagerTest.java       |  318 ------
 .../utils/pcapsockets/netty/PacketHandler.java     |   27 -
 .../utils/pcapsockets/netty/PcapSocketAddress.java |   21 +-
 .../utils/pcapsockets/netty/PcapSocketChannel.java |   20 +-
 .../pcapsockets/netty/PcapSocketChannelConfig.java |   47 +-
 .../pcapsockets/netty/PcapSocketChannelOption.java |   21 +-
 .../pcapsockets/netty/TcpIpPacketHandler.java      |   41 -
 .../pcapsockets/netty/UdpIpPacketHandler.java      |   41 -
 .../pcapsockets/netty/handlers/PacketHandler.java  |   27 +
 .../netty/handlers/TcpIpPacketHandler.java         |   41 +
 .../netty/handlers/UdpIpPacketHandler.java         |   41 +
 plc4j/utils/pom.xml                                |   20 +-
 plc4j/utils/protocol-test-utils/pom.xml            |   72 --
 .../protocol/test/ProtocolTestsuiteRunner.java     |  175 ----
 .../exceptions/ProtocolTestsuiteException.java     |   32 -
 .../protocol/test/model/ProtocolTestsuite.java     |   48 -
 .../apache/plc4x/protocol/test/model/Testcase.java |   61 --
 .../utils/rawsockets/netty/RawSocketAddress.java   |    1 +
 .../utils/rawsockets/netty/RawSocketChannel.java   |    3 +-
 plc4j/utils/scraper/pom.xml                        |  145 ---
 .../triggeredscraper/TriggeredScraperImpl.java     |  367 -------
 .../triggerhandler/TriggerConfiguration.java       |  722 --------------
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |  113 ---
 .../org/apache/plc4x/java/scraper/ScraperTest.java |  175 ----
 .../java/scraper/TriggeredScraperRunnerModbus.java |   69 --
 .../triggeredscraper/TriggeredScraperImplTest.java |  118 ---
 .../triggerhandler/TriggerConfigurationTest.java   |  151 ---
 plc4j/utils/test-utils/pom.xml                     |   37 +-
 .../test/protocol/ProtocolTestsuiteRunner.java     |  179 ++++
 .../exceptions/ProtocolTestsuiteException.java     |   32 +
 .../test/protocol/model/ProtocolTestsuite.java     |   48 +
 .../apache/plc4x/test/protocol/model/Testcase.java |   60 ++
 .../src/main/resources/schemas/testsuite.xsd       |    0
 pom.xml                                            |   16 +-
 .../main/resources/protocols/amsads/amsads.mspec   |    4 +-
 .../apache/plc4x/protocol/knxnetip/Ets5Types.java  |   46 -
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |    1 -
 .../main/resources/protocols/knxnetip/ets5.mspec   |  172 ----
 .../resources/protocols/knxnetip/knxnetip.mspec    |  154 +++
 ...e.plc4x.plugins.codegenerator.protocol.Protocol |    2 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |  208 +++-
 .../plc4x/codegen/ast/AssignementExpression.java   |    6 +-
 .../apache/plc4x/codegen/ast/BinaryExpression.java |    6 +-
 .../java/org/apache/plc4x/codegen/ast/Block.java   |    6 +-
 .../apache/plc4x/codegen/ast/CallExpression.java   |    6 +-
 .../apache/plc4x/codegen/ast/ClassDeclaration.java |    6 +-
 .../plc4x/codegen/ast/ConstantExpression.java      |    6 +-
 .../plc4x/codegen/ast/ConstructorDeclaration.java  |    6 +-
 .../plc4x/codegen/ast/DeclarationStatement.java    |    6 +-
 .../apache/plc4x/codegen/ast/FieldDeclaration.java |    6 +-
 .../apache/plc4x/codegen/ast/FieldReference.java   |    6 +-
 .../org/apache/plc4x/codegen/ast/FileNode.java     |    6 +-
 .../org/apache/plc4x/codegen/ast/IfStatement.java  |    6 +-
 .../apache/plc4x/codegen/ast/JavaGenerator.java    |   69 +-
 .../org/apache/plc4x/codegen/ast/LineComment.java  |    6 +-
 .../java/org/apache/plc4x/codegen/ast/Method.java  |    6 +-
 .../apache/plc4x/codegen/ast/MethodDefinition.java |    6 +-
 .../apache/plc4x/codegen/ast/NewExpression.java    |    6 +-
 .../plc4x/codegen/ast/ParameterExpression.java     |    6 +-
 .../org/apache/plc4x/codegen/ast/Primitive.java    |    6 +-
 .../apache/plc4x/codegen/ast/PythonGenerator.java  |   69 +-
 .../apache/plc4x/codegen/ast/ReturnStatement.java  |    6 +-
 .../apache/plc4x/codegen/ast/TypeDefinition.java   |    6 +-
 .../plc4x/codegen/python/AbstractNodeVisitor.java  |   96 +-
 .../org/apache/plc4x/codegen/python/AddNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/AliasNode.java |    3 +-
 .../plc4x/codegen/python/AnnAssignerNode.java      |    3 +-
 .../org/apache/plc4x/codegen/python/ArgNode.java   |    3 +-
 .../apache/plc4x/codegen/python/ArgumentsNode.java |    3 +-
 .../apache/plc4x/codegen/python/AssignNode.java    |    3 +-
 .../apache/plc4x/codegen/python/AttributeNode.java |    3 +-
 .../apache/plc4x/codegen/python/AugAssignNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/BinOpNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/CallNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ClassDefNode.java  |    3 +-
 .../apache/plc4x/codegen/python/CompareNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/EqNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/ExprNode.java  |    3 +-
 .../plc4x/codegen/python/FunctionDefNode.java      |    3 +-
 .../org/apache/plc4x/codegen/python/IfNode.java    |    3 +-
 .../plc4x/codegen/python/ImportFromNode.java       |    3 +-
 .../apache/plc4x/codegen/python/KeywordNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/ListNode.java  |    3 +-
 .../org/apache/plc4x/codegen/python/LoadNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ModuleNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/MultNode.java  |    3 +-
 .../plc4x/codegen/python/NameConstantNode.java     |    3 +-
 .../org/apache/plc4x/codegen/python/NameNode.java  |    3 +-
 .../org/apache/plc4x/codegen/python/NotEqNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/NumNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/PassNode.java  |    3 +-
 .../apache/plc4x/codegen/python/ReturnNode.java    |    3 +-
 .../org/apache/plc4x/codegen/python/StoreNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/StrNode.java   |    3 +-
 .../org/apache/plc4x/codegen/python/TupleNode.java |    3 +-
 .../org/apache/plc4x/codegen/python/WhileNode.java |    3 +-
 .../org/apache/plc4x/codegen/ModuleNodeTest.java   |   33 +-
 sandbox/plc-simulator/pom.xml                      |   16 +-
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  137 +++
 .../server/s7/protocol/S7Step7Protocol.java        |   12 +-
 .../server/s7/protocol/S7Step7ServerProtocol.java  |    2 +-
 sandbox/pom.xml                                    |    9 +-
 sandbox/test-java-amsads-driver/pom.xml            |   28 +-
 .../apache/plc4x/java/amsads/AMSADSPlcDriver.java  |   84 +-
 .../amsads/configuration/AdsConfiguration.java     |   74 ++
 .../connection/AdsAbstractPlcConnection.java       |   21 +-
 .../amsads/connection/AdsConnectionFactory.java    |    1 +
 .../amsads/connection/AdsSerialPlcConnection.java  |   45 +-
 .../amsads/connection/AdsTcpPlcConnection.java     |   73 +-
 .../apache/plc4x/java/amsads/field/AdsField.java   |   27 +
 .../plc4x/java/amsads/field/AdsFieldHandler.java   | 1047 ++++++++++++++++++++
 .../plc4x/java/amsads/field/DirectAdsField.java    |  142 +++
 .../plc4x/java/amsads/field/SymbolicAdsField.java  |  106 ++
 .../plc4x/java/amsads/model/AdsDataType.java       |  577 -----------
 .../apache/plc4x/java/amsads/model/AdsField.java   |   26 -
 .../java/amsads/model/AdsPlcFieldHandler.java      | 1015 -------------------
 .../java/amsads/model/AdsSubscriptionHandle.java   |    5 +-
 .../plc4x/java/amsads/model/DirectAdsField.java    |  141 ---
 .../plc4x/java/amsads/model/SymbolicAdsField.java  |  105 --
 .../plc4x/java/amsads/model/package-info.java      |   22 -
 .../java/amsads/protocol/Ads2PayloadProtocol.java  |    7 +-
 .../java/amsads/protocol/AdsProtocolLogic.java     |   41 +
 .../amsads/protocol/Payload2SerialProtocol.java    |   15 +-
 .../java/amsads/protocol/Payload2TcpProtocol.java  |    7 +-
 .../java/amsads/protocol/Plc4x2AdsProtocol.java    |   35 +-
 .../amsads/protocol/util/LittleEndianDecoder.java  |  204 +++-
 .../amsads/protocol/util/LittleEndianEncoder.java  |    2 +-
 .../protocol/util/SingleMessageRateLimiter.java    |    2 +-
 .../plc4x/java/amsads/types/AdsDataType.java       |  577 +++++++++++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../protocol/amsads/BenchmarkGeneratedDf1.java     |    4 -
 .../org/apache/plc4x/protocol/amsads/Df1Test.java  |    3 +-
 .../org/apache/plc4x/protocol/amsads/IOTest.java   |    6 -
 sandbox/test-java-bacnetip-driver/pom.xml          |   22 +-
 .../plc4x/java/bacnetip/PassiveBacNetIpDriver.java |   89 +-
 .../PassiveBacNetIpConfiguration.java              |   61 ++
 .../bacnetip/connection/BacNetIpFieldHandler.java  |   36 -
 .../connection/PassiveBacNetIpPlcConnection.java   |  118 ---
 .../plc4x/java/bacnetip/field/BacNetIpField.java   |   47 +
 .../java/bacnetip/field/BacNetIpFieldHandler.java  |   35 +
 .../plc4x/java/bacnetip/model/BacNetIpField.java   |   47 -
 .../java/bacnetip/protocol/BacNetIpProtocol.java   |   62 --
 .../java/bacnetip/protocol/HelloWorldProtocol.java |   72 --
 .../protocol/PassiveBacNetIpProtocolLogic.java     |   47 +
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../plc4x/java/bacnetip/ManualBacNetDecoder.java   |    2 +-
 .../java/bacnetip/PassiveBacNetIpDriverManual.java |   17 +-
 sandbox/test-java-df1-driver/pom.xml               |   25 +-
 .../org/apache/plc4x/java/df1/DF1PlcDriver.java    |   59 +-
 .../java/org/apache/plc4x/java/df1/Df1Field.java   |   62 --
 .../java/df1/configuration/Df1Configuration.java   |   33 +
 .../java/df1/connection/BaseDf1Connection.java     |   34 -
 .../java/df1/connection/SerialDf1Connection.java   |  148 ---
 .../org/apache/plc4x/java/df1/field/Df1Field.java  |   61 ++
 .../plc4x/java/df1/field/Df1FieldHandler.java      |   39 +
 .../org/apache/plc4x/java/df1/fields/DataType.java |   44 -
 .../plc4x/java/df1/protocol/Df1Protocol.java       |   14 +-
 .../plc4x/java/df1/protocol/Df1ProtocolLogic.java  |   43 +
 .../plc4x/java/df1/protocol/Plc4XDf1Protocol.java  |   23 +-
 .../org/apache/plc4x/java/df1/types/DataType.java  |   44 +
 .../org/apache/plc4x/java/df1/util/DF1Utils.java   |   14 +-
 .../plc4x/java/df1/util/Df1FieldHandler.java       |   39 -
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../apache/plc4x/java/df1/DF1PlcDriverTest.java    |   44 -
 .../plc4x/protocol/df1/BenchmarkGeneratedDf1.java  |    5 -
 .../org/apache/plc4x/protocol/df1/Df1Test.java     |    2 +-
 .../java/org/apache/plc4x/protocol/df1/IOTest.java |    2 +-
 .../src/test/resources/testsuite/Df1Testsuite.xml  |    8 +-
 sandbox/test-java-knxnetip-driver-passive/pom.xml  |   15 +-
 .../passive/knxnetip/PassiveKnxNetIpDriver.java    |    2 +-
 .../knxnetip/connection/KnxNetIpFieldHandler.java  |    2 +-
 .../connection/PassiveKnxNetIpPlcConnection.java   |   16 +-
 .../knxnetip/protocol/HelloWorldProtocol.java      |    4 +-
 .../knxnetip/protocol/KnxNetIpProtocol.java        |   59 --
 .../knxnetip/protocol/KnxNetIpProtocolMessage.java |   59 ++
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../org/apache/plc4x/java/knxnetip/IOTest.java     |    7 +-
 sandbox/test-java-knxnetip-driver/pom.xml          |   32 +-
 .../apache/plc4x/java/knxnetip/KnxNetIpDriver.java |   93 +-
 .../configuration/KnxNetIpConfiguration.java       |   65 ++
 .../knxnetip/connection/KnxNetIpConnection.java    |  137 ---
 .../knxnetip/connection/KnxNetIpFieldHandler.java  |   36 -
 .../java/knxnetip/events/KnxGatewayFoundEvent.java |   22 -
 .../plc4x/java/knxnetip/field/KnxNetIpField.java   |   86 ++
 .../java/knxnetip/field/KnxNetIpFieldHandler.java  |   35 +
 .../plc4x/java/knxnetip/model/KnxNetIpField.java   |   44 -
 .../knxnetip/protocol/KnxNetIpPlc4xProtocol.java   |   61 --
 .../knxnetip/protocol/KnxNetIpProtocolLogic.java   |  328 ++++--
 .../knxnetip/protocol/KnxNetIpProtocolPackets.java |   59 --
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../org/apache/plc4x/java/knxnetip/IOTest.java     |    8 +-
 .../apache/plc4x/java/knxnetip/KNXNetIpTest.java   |    2 +-
 .../apache/plc4x/java/knxnetip/ManualKnxNetIp.java |    2 +-
 .../java/knxnetip/ManualKnxNetIpWithEts5.java      |   18 +-
 .../src/test}/resources/logback.xml                |    0
 .../test/resources/testsuite/KNXNetIPTestsuite.xml |    2 +-
 sandbox/test-java-knxnetip-shared/pom.xml          |   41 +-
 .../plc4x/java/knxnetip/ets5/Ets5Parser.java       |   18 +-
 .../plc4x/java/knxnetip/ets5/model/Ets5Model.java  |   41 +-
 .../java/knxnetip/ets5/model/GroupAddress.java     |    9 +-
 sandbox/test-java-s7-driver-passive/pom.xml        |    5 +-
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  136 +++
 .../plc4x/javapassive/s7/PassiveS7PlcDriver.java   |    2 +-
 .../s7/connection/PassiveS7PlcConnection.java      |   16 +-
 .../s7/protocol/HelloWorldProtocol.java            |    4 +-
 .../javapassive/s7/protocol/PassiveS7Protocol.java |    8 +-
 ...cDriver => org.apache.plc4x.java.api.PlcDriver} |    0
 .../src/test/java/BenchmarkGeneratedPassiveS7.java |    4 +-
 sandbox/test-java-s7-driver/pom.xml                |   38 +-
 .../apache/plc4x/java/s7/readwrite/S7Driver.java   |  106 ++
 .../readwrite/configuration/S7Configuration.java   |  148 +++
 .../plc4x/java/s7/readwrite/field/S7Field.java     |  265 +++++
 .../java/s7/readwrite/field/S7PlcFieldHandler.java |  584 +++++++++++
 .../optimizer/DefaultS7MessageProcessor.java       |  290 ++++++
 .../s7/readwrite/optimizer/S7MessageProcessor.java |   40 +
 .../s7/readwrite/protocol/S7ProtocolLogic.java     |  693 +++++++++++++
 .../java/s7/readwrite/types/S7ControllerType.java  |   30 +
 .../java/s7/readwrite/utils/S7TsapIdEncoder.java   |   48 +
 .../apache/plc4x/java/s7/utils/StaticHelper.java   |  138 +++
 .../services/org.apache.plc4x.java.api.PlcDriver   |   19 +
 .../src/main/resources/logback.xml                 |   36 +
 .../src/test/java/BenchmarkGeneratedS7.java        |    8 +-
 .../java/s7/readwrite/ManualS7DriverTest.java      |   33 +
 sandbox/test-streampipes-plc4x-adapters/pom.xml    |   16 +-
 .../adapters/source/bacnetip/BacNetIpAdapter.java  |   23 +-
 .../adapters/source/knxnetip/KnxNetIpAdapter.java  |   20 +-
 sandbox/test-streampipes-plc4x-processors/pom.xml  |   12 +-
 .../enrich/knxnetip/ets5/Ets5DataEnrichment.java   |   38 +-
 .../ets5/Ets5DataEnrichmentController.java         |    3 +-
 src/main/script/prerequisiteCheck.groovy           |   34 +
 src/site/asciidoc/users/testing.adoc               |   12 +-
 tools/thrift/pom.xml                               |   12 +
 920 files changed, 32509 insertions(+), 28469 deletions(-)