This is an automated email from the ASF dual-hosted git repository. ldywicki pushed a change to branch issues/1234 in repository https://gitbox.apache.org/repos/asf/plc4x.git
discard 9632684e25 feat(plc4x/modbus): Add support for unit-id option for modbus tags. add 750f3d6f69 chore: Cleaned up in the sandbox add 610ff5a2f2 fix(plc4py): type extensions module added to setup.py add 5ce7d69a00 fix(plc4py): Move out of sandbox add 45ffc58d84 chore(sandbox): Remove the Sandbox Directory add 57a0f62353 chore(plc4px): Remove manual test add 1b7943762a feat(plc4x/modbus): Add support for unit-id option for modbus tags. This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (9632684e25) \ N -- N -- N refs/heads/issues/1234 (1b7943762a) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. No new revisions were added by this update. Summary of changes: .dockerignore | 12 +- .github/workflows/python-platform.yml | 10 +- .gitignore | 4 - .idea/sonarlint/issuestore/index.pb | 2 - .idea/sonarlint/securityhotspotstore/index.pb | 2 - Jenkinsfile | 8 +- README.md | 6 +- build-reproducible.sh | 2 +- docker-compose.yaml | 2 +- plc4j/examples/hello-docker/Dockerfile | 4 +- {sandbox/plc4py => plc4py}/.gitignore | 0 {sandbox/plc4py => plc4py}/.pre-commit-config.yaml | 0 .../plc4py => plc4py}/plc4py/PlcDriverManager.py | 0 {sandbox/plc4py => plc4py}/plc4py/__init__.py | 0 .../plc4py => plc4py}/plc4py/api/PlcConnection.py | 0 {sandbox/plc4py => plc4py}/plc4py/api/PlcDriver.py | 0 {sandbox/plc4py => plc4py}/plc4py/api/__init__.py | 0 .../plc4py/api/authentication/PlcAuthentication.py | 0 .../plc4py/api/authentication/__init__.py | 0 .../plc4py/api/exceptions/__init__.py | 0 .../plc4py/api/exceptions/exceptions.py | 0 .../plc4py/api/listener/__init__.py | 0 .../plc4py/api/messages/PlcDiscovery.py | 0 .../plc4py/api/messages/PlcField.py | 0 .../plc4py/api/messages/PlcMessage.py | 0 .../plc4py/api/messages/PlcRequest.py | 0 .../plc4py/api/messages/PlcResponse.py | 0 .../plc4py/api/messages/__init__.py | 0 .../plc4py => plc4py}/plc4py/api/value/PlcValue.py | 0 .../plc4py => plc4py}/plc4py/api/value/__init__.py | 0 .../plc4py/drivers/PlcDriverLoader.py | 0 .../plc4py => plc4py}/plc4py/drivers/__init__.py | 0 .../plc4py/drivers/mock/MockConnection.py | 0 .../plc4py/drivers/mock/MockReadRequestBuilder.py | 0 .../plc4py/drivers/mock/MockTag.py | 0 .../plc4py/drivers/mock/__init__.py | 0 .../plc4py/drivers/modbus/ModbusConfiguration.py | 0 .../plc4py/drivers/modbus/ModbusConnection.py | 0 .../plc4py/drivers/modbus/ModbusDevice.py | 0 .../plc4py/drivers/modbus/ModbusProtocol.py | 0 .../plc4py/drivers/modbus/ModbusTag.py | 0 .../plc4py/drivers/modbus/__init__.py | 0 .../plc4py/drivers/umas/UmasConfiguration.py | 0 .../plc4py/drivers/umas/UmasConnection.py | 0 .../plc4py/drivers/umas/UmasDevice.py | 0 .../plc4py/drivers/umas/UmasProtocol.py | 0 .../plc4py/drivers/umas/UmasTag.py | 0 .../plc4py/drivers/umas/UmasVariables.py | 0 .../plc4py/drivers/umas/__init__.py | 0 .../plc4py => plc4py}/plc4py/protocols/__init__.py | 0 .../plc4py/protocols/modbus/StaticHelper.py | 0 .../plc4py/protocols/modbus/__init__.py | 0 .../plc4py/protocols/modbus/readwrite/DataItem.py | 0 .../protocols/modbus/readwrite/DriverType.py | 0 .../plc4py/protocols/modbus/readwrite/ModbusADU.py | 0 .../protocols/modbus/readwrite/ModbusAsciiADU.py | 0 .../protocols/modbus/readwrite/ModbusConstants.py | 0 .../protocols/modbus/readwrite/ModbusDataType.py | 0 .../ModbusDeviceInformationConformityLevel.py | 0 .../readwrite/ModbusDeviceInformationLevel.py | 0 .../ModbusDeviceInformationMoreFollows.py | 0 .../readwrite/ModbusDeviceInformationObject.py | 0 .../protocols/modbus/readwrite/ModbusErrorCode.py | 0 .../plc4py/protocols/modbus/readwrite/ModbusPDU.py | 0 .../modbus/readwrite/ModbusPDUDiagnosticRequest.py | 0 .../readwrite/ModbusPDUDiagnosticResponse.py | 0 .../protocols/modbus/readwrite/ModbusPDUError.py | 0 .../ModbusPDUGetComEventCounterRequest.py | 0 .../ModbusPDUGetComEventCounterResponse.py | 0 .../readwrite/ModbusPDUGetComEventLogRequest.py | 0 .../readwrite/ModbusPDUGetComEventLogResponse.py | 0 .../ModbusPDUMaskWriteHoldingRegisterRequest.py | 0 .../ModbusPDUMaskWriteHoldingRegisterResponse.py | 0 .../modbus/readwrite/ModbusPDUReadCoilsRequest.py | 0 .../modbus/readwrite/ModbusPDUReadCoilsResponse.py | 0 .../ModbusPDUReadDeviceIdentificationRequest.py | 0 .../ModbusPDUReadDeviceIdentificationResponse.py | 0 .../ModbusPDUReadDiscreteInputsRequest.py | 0 .../ModbusPDUReadDiscreteInputsResponse.py | 0 .../ModbusPDUReadExceptionStatusRequest.py | 0 .../ModbusPDUReadExceptionStatusResponse.py | 0 .../readwrite/ModbusPDUReadFifoQueueRequest.py | 0 .../readwrite/ModbusPDUReadFifoQueueResponse.py | 0 .../readwrite/ModbusPDUReadFileRecordRequest.py | 0 .../ModbusPDUReadFileRecordRequestItem.py | 0 .../readwrite/ModbusPDUReadFileRecordResponse.py | 0 .../ModbusPDUReadFileRecordResponseItem.py | 0 .../ModbusPDUReadHoldingRegistersRequest.py | 0 .../ModbusPDUReadHoldingRegistersResponse.py | 0 .../ModbusPDUReadInputRegistersRequest.py | 0 .../ModbusPDUReadInputRegistersResponse.py | 0 ...sPDUReadWriteMultipleHoldingRegistersRequest.py | 0 ...PDUReadWriteMultipleHoldingRegistersResponse.py | 0 .../readwrite/ModbusPDUReportServerIdRequest.py | 0 .../readwrite/ModbusPDUReportServerIdResponse.py | 0 .../readwrite/ModbusPDUWriteFileRecordRequest.py | 0 .../ModbusPDUWriteFileRecordRequestItem.py | 0 .../readwrite/ModbusPDUWriteFileRecordResponse.py | 0 .../ModbusPDUWriteFileRecordResponseItem.py | 0 .../ModbusPDUWriteMultipleCoilsRequest.py | 0 .../ModbusPDUWriteMultipleCoilsResponse.py | 0 ...odbusPDUWriteMultipleHoldingRegistersRequest.py | 0 ...dbusPDUWriteMultipleHoldingRegistersResponse.py | 0 .../readwrite/ModbusPDUWriteSingleCoilRequest.py | 0 .../readwrite/ModbusPDUWriteSingleCoilResponse.py | 0 .../ModbusPDUWriteSingleRegisterRequest.py | 0 .../ModbusPDUWriteSingleRegisterResponse.py | 0 .../protocols/modbus/readwrite/ModbusRtuADU.py | 0 .../protocols/modbus/readwrite/ModbusTcpADU.py | 0 .../plc4py/protocols/modbus/readwrite/__init__.py | 0 .../protocols/simulated/readwrite/DataItem.py | 0 .../plc4py/protocols/simulated/readwrite/Dummy.py | 0 .../simulated/readwrite/SimulatedDataTypeSizes.py | 0 .../plc4py/protocols/umas/StaticHelper.py | 0 .../plc4py/protocols/umas/__init__.py | 0 .../plc4py/protocols/umas/readwrite/DataItem.py | 0 .../protocols/umas/readwrite/ModbusErrorCode.py | 0 .../plc4py/protocols/umas/readwrite/ModbusPDU.py | 0 .../protocols/umas/readwrite/ModbusPDUError.py | 0 .../protocols/umas/readwrite/ModbusTcpADU.py | 0 .../umas/readwrite/PlcMemoryBlockIdent.py | 0 .../protocols/umas/readwrite/UmasConstants.py | 0 .../protocols/umas/readwrite/UmasDataType.py | 0 .../umas/readwrite/UmasDatatypeReference.py | 0 .../UmasDeviceInformationConformityLevel.py | 0 .../umas/readwrite/UmasDeviceInformationLevel.py | 0 .../readwrite/UmasDeviceInformationMoreFollows.py | 0 .../umas/readwrite/UmasInitCommsRequest.py | 0 .../umas/readwrite/UmasInitCommsResponse.py | 0 .../protocols/umas/readwrite/UmasMemoryBlock.py | 0 .../umas/readwrite/UmasMemoryBlockBasicInfo.py | 0 .../plc4py/protocols/umas/readwrite/UmasPDU.py | 0 .../plc4py/protocols/umas/readwrite/UmasPDUItem.py | 0 .../umas/readwrite/UmasPDUPlcIdentRequest.py | 0 .../umas/readwrite/UmasPDUPlcIdentResponse.py | 0 .../umas/readwrite/UmasPDUPlcStatusRequest.py | 0 .../umas/readwrite/UmasPDUPlcStatusResponse.py | 0 .../umas/readwrite/UmasPDUProjectInfoRequest.py | 0 .../readwrite/UmasPDUReadDatatypeNamesResponse.py | 0 .../readwrite/UmasPDUReadMemoryBlockRequest.py | 0 .../readwrite/UmasPDUReadMemoryBlockResponse.py | 0 .../UmasPDUReadUmasUDTDefinitionResponse.py | 0 .../readwrite/UmasPDUReadUnlocatedVariableNames.py | 0 .../UmasPDUReadUnlocatedVariableNamesRequest.py | 0 .../UmasPDUReadUnlocatedVariableNamesResponse.py | 0 .../UmasPDUReadUnlocatedVariableResponse.py | 0 .../umas/readwrite/UmasPDUReadVariableRequest.py | 0 .../umas/readwrite/UmasPDUReadVariableResponse.py | 0 .../protocols/umas/readwrite/UmasUDTDefinition.py | 0 .../readwrite/UmasUnlocatedVariableReference.py | 0 .../protocols/umas/readwrite/UmasVariableBlock.py | 0 .../umas/readwrite/VariableRequestReference.py | 0 .../plc4py/protocols/umas/readwrite/__init__.py | 0 .../plc4py/spi/Plc4xBaseProtocol.py | 0 .../plc4py/spi/PlcDriverClassLoader.py | 0 {sandbox/plc4py => plc4py}/plc4py/spi/__init__.py | 0 .../plc4py/spi/configuration/PlcConfiguration.py | 0 .../plc4py/spi/configuration/__init__.py | 0 .../plc4py/spi/connection/ProtocolStack.py | 0 .../plc4py/spi/connection/__init__.py | 0 .../plc4py/spi/context/DriverContext.py | 0 .../plc4py/spi/context/__init__.py | 0 .../plc4py/spi/generation/ReadBuffer.py | 0 .../plc4py/spi/generation/WriteBuffer.py | 0 .../plc4py/spi/generation/__init__.py | 0 .../plc4py/spi/messages/ChannelMessage.py | 0 .../plc4py/spi/messages/PlcReader.py | 0 .../plc4py/spi/messages/PlcRequest.py | 0 .../plc4py/spi/messages/PlcWriter.py | 0 .../plc4py/spi/messages/__init__.py | 0 .../plc4py/spi/messages/utils/ResponseItem.py | 0 .../plc4py/spi/messages/utils/__init__.py | 0 .../plc4py/spi/transport/Plc4xBaseTransport.py | 0 .../plc4py/spi/transport/TCPTransport.py | 0 .../plc4py/spi/transport/__init__.py | 0 .../plc4py => plc4py}/plc4py/spi/values/Common.py | 0 .../plc4py/spi/values/PlcValues.py | 0 .../plc4py/spi/values/__init__.py | 0 .../plc4py/utils/ConnectionStringHandling.py | 0 .../plc4py => plc4py}/plc4py/utils/GenericTypes.py | 0 .../plc4py => plc4py}/plc4py/utils/__init__.py | 0 {sandbox/plc4py => plc4py}/pom.xml | 6 +- {sandbox/plc4py => plc4py}/pytest.ini | 0 {sandbox/plc4py => plc4py}/requirements.txt | 0 {sandbox/plc4py => plc4py}/setup.cfg | 0 {sandbox/plc4py => plc4py}/setup.py | 1 + {sandbox/plc4py => plc4py}/tests/__init__.py | 0 {sandbox/plc4py => plc4py}/tests/test_plc4py.py | 0 {sandbox/plc4py => plc4py}/tests/unit/__init__.py | 0 .../tests/unit/plc4py/__init__.py | 0 .../tests/unit/plc4py/api/__init__.py | 0 .../tests/unit/plc4py/api/test_PlcRequest.py | 0 .../tests/unit/plc4py/drivers/__init__.py | 0 .../tests/unit/plc4py/drivers/modbus/__init__.py | 0 .../plc4py/drivers/modbus/test_modbus_codegen.py | 0 .../drivers/modbus/test_modbus_connection.py | 4 +- .../tests/unit/plc4py/drivers/umas/__init__.py | 0 .../plc4py/drivers/umas/test_umas_connection.py | 0 .../tests/unit/plc4py/spi/__init__.py | 0 .../unit/plc4py/spi/configuration/__init__.py | 0 .../plc4py/spi/configuration/test_configuration.py | 0 .../tests/unit/plc4py/spi/tcp/__init__.py | 0 .../tests/unit/plc4py/spi/tcp/server.py | 0 .../tests/unit/plc4py/spi/test_protocol.py | 0 .../tests/unit/plc4py/spi/test_read_buffer.py | 0 .../tests/unit/plc4py/spi/test_transport.py | 0 .../tests/unit/plc4py/spi/test_write_buffer.py | 0 pom.xml | 6 +- reactors/all-drivers/pom.xml | 4 +- sandbox/.gitignore | 1 - sandbox/discovery/pom.xml | 52 ---- .../plc4x/java/discovery/DiscoveryConnection.java | 186 -------------- .../plc4x/java/discovery/DiscoveryDriver.java | 52 ---- .../plc4x/java/discovery/DiscoveryTagHandler.java | 39 --- .../services/org.apache.plc4x.java.api.PlcDriver | 19 -- sandbox/pom.xml | 78 ------ sandbox/test-java-df1-driver/README.adoc | 35 --- sandbox/test-java-df1-driver/pom.xml | 180 -------------- .../plc4x/java/df1/readwrite/DF1Command.java | 181 -------------- .../apache/plc4x/java/df1/readwrite/DF1Symbol.java | 182 -------------- .../java/df1/readwrite/DF1SymbolMessageFrame.java | 269 --------------------- .../df1/readwrite/DF1SymbolMessageFrameACK.java | 120 --------- .../df1/readwrite/DF1SymbolMessageFrameNAK.java | 120 --------- .../df1/readwrite/DF1UnprotectedReadRequest.java | 159 ------------ .../df1/readwrite/DF1UnprotectedReadResponse.java | 156 ------------ .../org/apache/plc4x/java/df1/DF1PlcDriver.java | 79 ------ .../java/df1/configuration/Df1Configuration.java | 48 ---- .../org/apache/plc4x/java/df1/field/Df1Tag.java | 82 ------- .../apache/plc4x/java/df1/field/Df1TagHandler.java | 38 --- .../plc4x/java/df1/protocol/Df1Protocol.java | 157 ------------ .../plc4x/java/df1/protocol/Df1ProtocolLogic.java | 43 ---- .../plc4x/java/df1/protocol/Plc4XDf1Protocol.java | 172 ------------- .../java/df1/readwrite/utils/StaticHelper.java | 95 -------- .../org/apache/plc4x/java/df1/types/DataType.java | 52 ---- .../services/org.apache.plc4x.java.api.PlcDriver | 19 -- .../plc4x/protocol/df1/BenchmarkGeneratedDf1.java | 75 ------ .../plc4x/protocol/df1/BenchmarkManualDf1.java | 238 ------------------ .../protocol/df1/Df1ParserSerializerTest.java | 31 --- .../apache/plc4x/protocol/df1/EndToEndTest.java | 50 ---- .../src/test/resources/logback-test.xml | 36 --- src/main/script/prerequisiteCheck.groovy | 3 - src/site/asciidoc/developers/building.adoc | 11 +- src/site/asciidoc/developers/release/release.adoc | 18 +- .../asciidoc/developers/release/validation.adoc | 1 - .../asciidoc/users/getting-started/plc4py.adoc | 2 +- tools/docker-compose.yaml | 2 +- tools/release-0-update-generated-code.sh | 2 +- tools/release-1-create-branch.sh | 2 +- tools/release-2-prepare-release.sh | 2 +- tools/release-abort.sh | 2 +- 250 files changed, 51 insertions(+), 3111 deletions(-) rename {sandbox/plc4py => plc4py}/.gitignore (100%) rename {sandbox/plc4py => plc4py}/.pre-commit-config.yaml (100%) rename {sandbox/plc4py => plc4py}/plc4py/PlcDriverManager.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/PlcConnection.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/PlcDriver.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/authentication/PlcAuthentication.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/authentication/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/exceptions/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/exceptions/exceptions.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/listener/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/messages/PlcDiscovery.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/messages/PlcField.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/messages/PlcMessage.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/messages/PlcRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/messages/PlcResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/messages/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/value/PlcValue.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/api/value/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/PlcDriverLoader.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/mock/MockConnection.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/mock/MockReadRequestBuilder.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/mock/MockTag.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/mock/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/modbus/ModbusConfiguration.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/modbus/ModbusConnection.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/modbus/ModbusDevice.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/modbus/ModbusProtocol.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/modbus/ModbusTag.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/modbus/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/umas/UmasConfiguration.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/umas/UmasConnection.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/umas/UmasDevice.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/umas/UmasProtocol.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/umas/UmasTag.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/umas/UmasVariables.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/drivers/umas/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/StaticHelper.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/DataItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/DriverType.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusADU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusAsciiADU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusConstants.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusDataType.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusDeviceInformationConformityLevel.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusDeviceInformationLevel.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusDeviceInformationMoreFollows.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusDeviceInformationObject.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusErrorCode.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUDiagnosticRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUDiagnosticResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUError.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUGetComEventCounterRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUGetComEventCounterResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUGetComEventLogRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUGetComEventLogResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUMaskWriteHoldingRegisterResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadCoilsRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadCoilsResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadDeviceIdentificationRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadDeviceIdentificationResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadDiscreteInputsRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadDiscreteInputsResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadExceptionStatusRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadExceptionStatusResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadFifoQueueRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadFifoQueueResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadFileRecordRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadFileRecordRequestItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadFileRecordResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadFileRecordResponseItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadHoldingRegistersRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadHoldingRegistersResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadInputRegistersRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadInputRegistersResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReadWriteMultipleHoldingRegistersResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReportServerIdRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUReportServerIdResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteFileRecordRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteFileRecordRequestItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteFileRecordResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteFileRecordResponseItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteMultipleCoilsRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteMultipleCoilsResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteMultipleHoldingRegistersResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteSingleCoilRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteSingleCoilResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteSingleRegisterRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusPDUWriteSingleRegisterResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusRtuADU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/ModbusTcpADU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/modbus/readwrite/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/simulated/readwrite/DataItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/simulated/readwrite/Dummy.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/simulated/readwrite/SimulatedDataTypeSizes.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/StaticHelper.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/DataItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/ModbusErrorCode.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/ModbusPDU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/ModbusPDUError.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/ModbusTcpADU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/PlcMemoryBlockIdent.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasConstants.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasDataType.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasDatatypeReference.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasDeviceInformationConformityLevel.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasDeviceInformationLevel.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasDeviceInformationMoreFollows.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasInitCommsRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasInitCommsResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasMemoryBlock.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasMemoryBlockBasicInfo.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDU.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUPlcIdentRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUPlcIdentResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUPlcStatusRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUPlcStatusResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUProjectInfoRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadDatatypeNamesResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadMemoryBlockRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadMemoryBlockResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadUmasUDTDefinitionResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadUnlocatedVariableNames.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadUnlocatedVariableNamesRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadUnlocatedVariableNamesResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadUnlocatedVariableResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadVariableRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasPDUReadVariableResponse.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasUDTDefinition.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasUnlocatedVariableReference.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/UmasVariableBlock.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/VariableRequestReference.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/protocols/umas/readwrite/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/Plc4xBaseProtocol.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/PlcDriverClassLoader.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/configuration/PlcConfiguration.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/configuration/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/connection/ProtocolStack.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/connection/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/context/DriverContext.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/context/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/generation/ReadBuffer.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/generation/WriteBuffer.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/generation/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/messages/ChannelMessage.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/messages/PlcReader.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/messages/PlcRequest.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/messages/PlcWriter.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/messages/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/messages/utils/ResponseItem.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/messages/utils/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/transport/Plc4xBaseTransport.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/transport/TCPTransport.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/transport/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/values/Common.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/values/PlcValues.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/spi/values/__init__.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/utils/ConnectionStringHandling.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/utils/GenericTypes.py (100%) rename {sandbox/plc4py => plc4py}/plc4py/utils/__init__.py (100%) rename {sandbox/plc4py => plc4py}/pom.xml (98%) rename {sandbox/plc4py => plc4py}/pytest.ini (100%) rename {sandbox/plc4py => plc4py}/requirements.txt (100%) rename {sandbox/plc4py => plc4py}/setup.cfg (100%) rename {sandbox/plc4py => plc4py}/setup.py (98%) rename {sandbox/plc4py => plc4py}/tests/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/test_plc4py.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/api/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/api/test_PlcRequest.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/drivers/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/drivers/modbus/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/drivers/modbus/test_modbus_codegen.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/drivers/modbus/test_modbus_connection.py (94%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/drivers/umas/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/drivers/umas/test_umas_connection.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/configuration/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/configuration/test_configuration.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/tcp/__init__.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/tcp/server.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/test_protocol.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/test_read_buffer.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/test_transport.py (100%) rename {sandbox/plc4py => plc4py}/tests/unit/plc4py/spi/test_write_buffer.py (100%) delete mode 100644 sandbox/.gitignore delete mode 100644 sandbox/discovery/pom.xml delete mode 100644 sandbox/discovery/src/main/java/org/apache/plc4x/java/discovery/DiscoveryConnection.java delete mode 100644 sandbox/discovery/src/main/java/org/apache/plc4x/java/discovery/DiscoveryDriver.java delete mode 100644 sandbox/discovery/src/main/java/org/apache/plc4x/java/discovery/DiscoveryTagHandler.java delete mode 100644 sandbox/discovery/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver delete mode 100644 sandbox/pom.xml delete mode 100644 sandbox/test-java-df1-driver/README.adoc delete mode 100644 sandbox/test-java-df1-driver/pom.xml delete mode 100644 sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Command.java delete mode 100644 sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Symbol.java delete mode 100644 sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrame.java delete mode 100644 sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameACK.java delete mode 100644 sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameNAK.java delete mode 100644 sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadRequest.java delete mode 100644 sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadResponse.java delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/DF1PlcDriver.java delete 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/field/Df1Tag.java delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/field/Df1TagHandler.java delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/protocol/Df1Protocol.java delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/protocol/Df1ProtocolLogic.java delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/protocol/Plc4XDf1Protocol.java delete mode 100644 sandbox/test-java-df1-driver/src/main/java/org/apache/plc4x/java/df1/readwrite/utils/StaticHelper.java delete 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/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver delete mode 100644 sandbox/test-java-df1-driver/src/test/java/org/apache/plc4x/protocol/df1/BenchmarkGeneratedDf1.java delete mode 100644 sandbox/test-java-df1-driver/src/test/java/org/apache/plc4x/protocol/df1/BenchmarkManualDf1.java delete mode 100644 sandbox/test-java-df1-driver/src/test/java/org/apache/plc4x/protocol/df1/Df1ParserSerializerTest.java delete mode 100644 sandbox/test-java-df1-driver/src/test/java/org/apache/plc4x/protocol/df1/EndToEndTest.java delete mode 100644 sandbox/test-java-df1-driver/src/test/resources/logback-test.xml