You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2023/06/15 15:26:42 UTC

[plc4x] branch develop updated (e6f661eab5 -> 824bfdfec9)

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 e6f661eab5 fix(plc4go): fix concurrency issues
     add 18d0514287 chore(plc4j/profinet): Tried adjusting the code to provide more help in error messages and started working on handling the "ping" messages.
     add 69c923f35a chore(plc4j/profinet): Created a new version of the Profinet driver that uses a much simpler approach.
     add 554b260827 chore(plc4j/profinet): Created a new version of the Profinet driver that uses a much simpler approach.
     add 324bdbcfd8 chore(plc4j/profinet): Refactored the code to be a little more cleaned up.
     add 488b2afcb3 chore(plc4j/profinet): Refactored the code to be a little more cleaned up.
     add 255ddc3394 docs(plc4go/bacnet): Added some comments
     add 23eee0a89c refactor(plc4j/udp-transport): Made it generally possible to open a UDP transport with a fixed local port
     add 3bf83a20a4 refactor(plc4j/profinet): Added some comments and made the tests use the classloader to load the test-data instead of a fixed file-reference.
     add 5d6bcae534 chore(plc4j/profinet-ng):  - Implemented the types needed to read "RealIdentifictionData" from the Device.  - Updated the connection process to use the information from that instead of the I&M0 data.  - Implemented the browse functionality.  - Documented the things I found out.
     add 75da2b9e59 chore(plc4j/profinet):  - Added some more comments
     add f47b9e6c3e chore(plc4j/profinet-ng):  - Changed the ProfinetDriverContext to no longer contain the raw device profile data, but pre-processed structures based on slot and subslot.  - Simplified the browse logic  - Started implementing the subscription logic  - Added an empty dummy for PnIoCm_Block_ReqPluginAlarmApplicationReady as it seems that this is sent from the remote devices
     add d28866a399 chore(plc4j/profinet-ng):  - Added some more documentation in the code comments.
     add 1173e09315 chore(plc4j/profinet-ng):  - Minor work on the subscriptions
     add bef8ca7247 bug(plc4j/opc-ua): Trying to fix the blocking test issue on Windows.
     add fe7d321ef3 bug(plc4j/test-utils): Added support for detecting parallels VMs on ARM systems.
     add 76344a73e0 bug(plc4j/opcua): Reduced the log level to info.
     add 5caf4f42b6 bug(plc4j/opcua): Fixed a timeout in one of the tests.
     add 35795c014d chore(plc4j): Told the compiler to not log warnings in compile code.
     add 5d2e2b6ebf bug(plc4j/opcua): Added some comments that will hopefully help me not start investigating this issue again if Parallels change their product string again ;-/
     add 824bfdfec9 chore(plc4j/profinet): Removed unneeded code

No new revisions were added by this update.

Summary of changes:
 plc4go/internal/bacnetip/Driver.go                 |   2 +
 .../plc4x/java/opcua/context/SecureChannel.java    |   2 +-
 .../protocol/OpcuaSubscriptionHandleTest.java      |  56 +-
 .../opcua/src/test/resources/logback-test.xml      |   2 +-
 plc4j/drivers/pom.xml                              |   1 +
 plc4j/drivers/profinet-ng/README.md                | 117 +++++
 plc4j/drivers/profinet-ng/pom.xml                  | 220 ++++++++
 .../java/profinet/readwrite/CharacterEncoding.java |   0
 .../plc4x/java/profinet/readwrite/CheckPeers.java  |   0
 .../plc4x/java/profinet/readwrite/DataItem.java    |   0
 .../profinet/readwrite/DceRpc_ActivityUuid.java    |   0
 .../profinet/readwrite/DceRpc_InterfaceUuid.java   |   0
 .../DceRpc_InterfaceUuid_ControllerInterface.java  |   0
 .../DceRpc_InterfaceUuid_DeviceInterface.java      |   0
 .../DceRpc_InterfaceUuid_ParameterInterface.java   |   0
 .../DceRpc_InterfaceUuid_SupervisorInterface.java  |   0
 .../java/profinet/readwrite/DceRpc_ObjectUuid.java |   0
 .../java/profinet/readwrite/DceRpc_Operation.java  |   0
 .../java/profinet/readwrite/DceRpc_Packet.java     |  26 +-
 .../java/profinet/readwrite/DceRpc_PacketType.java |   0
 .../plc4x/java/profinet/readwrite/EndOfLldp.java   |   0
 .../java/profinet/readwrite/Ethernet_Frame.java    |   0
 .../profinet/readwrite/Ethernet_FramePayload.java  |   0
 .../readwrite/Ethernet_FramePayload_IPv4.java      |   0
 .../readwrite/Ethernet_FramePayload_LLDP.java      |   0
 .../readwrite/Ethernet_FramePayload_PnDcp.java     |   0
 .../Ethernet_FramePayload_VirtualLan.java          |   0
 .../profinet/readwrite/FloatingPointEncoding.java  |   0
 .../profinet/readwrite/IODReadRequestHeader.java}  | 119 ++---
 .../profinet/readwrite/IODReadResponseHeader.java} | 145 +++---
 .../profinet/readwrite/IODWriteRequestHeader.java  |  19 +-
 .../profinet/readwrite/IODWriteResponseHeader.java |   2 +-
 .../java/profinet/readwrite/IntegerEncoding.java   |   0
 .../plc4x/java/profinet/readwrite/IpAddress.java   |   0
 .../plc4x/java/profinet/readwrite/LldpUnit.java    |   0
 .../plc4x/java/profinet/readwrite/Lldp_Pdu.java    |   0
 .../plc4x/java/profinet/readwrite/MacAddress.java  |   0
 .../readwrite/ManagementAddressSubType.java        |   0
 .../MultipleInterfaceModeNameOfDevice.java         |   0
 .../java/profinet/readwrite/PDInterfaceAdjust.java |   0
 .../java/profinet/readwrite/PDPortDataCheck.java   |   0
 .../java/profinet/readwrite/PascalString.java      |   0
 .../readwrite/PascalString16BitLength.java         |   0
 .../java/profinet/readwrite/PcDcp_GetSet_Pdu.java  |   0
 .../profinet/readwrite/PcDcp_Pdu_DelayReq.java     |   0
 .../plc4x/java/profinet/readwrite/PnDcp_Block.java |   0
 .../profinet/readwrite/PnDcp_BlockOptions.java     |   0
 .../readwrite/PnDcp_Block_ALLSelector.java         |   0
 .../PnDcp_Block_ControlOptionFactoryReset.java     |   0
 .../PnDcp_Block_ControlOptionResetToFactory.java   |   0
 .../PnDcp_Block_ControlOptionResponse.java         |   0
 .../readwrite/PnDcp_Block_ControlOptionSignal.java |   0
 .../readwrite/PnDcp_Block_ControlOptionStart.java  |   0
 .../readwrite/PnDcp_Block_ControlOptionStop.java   |   0
 .../PnDcp_Block_DeviceInitiativeOption.java        |   0
 .../PnDcp_Block_DevicePropertiesAliasName.java     |   0
 .../PnDcp_Block_DevicePropertiesDeviceId.java      |   0
 ...PnDcp_Block_DevicePropertiesDeviceInstance.java |   0
 .../PnDcp_Block_DevicePropertiesDeviceOptions.java |   0
 .../PnDcp_Block_DevicePropertiesDeviceRole.java    |   0
 .../PnDcp_Block_DevicePropertiesDeviceVendor.java  |   0
 .../PnDcp_Block_DevicePropertiesNameOfStation.java |   0
 .../PnDcp_Block_DevicePropertiesOemDeviceId.java   |   0
 ...nDcp_Block_DevicePropertiesStandardGateway.java |   0
 .../PnDcp_Block_DhcpOptionClassIdentifier.java     |   0
 ...PnDcp_Block_DhcpOptionDhcpClientIdentifier.java |   0
 ...p_Block_DhcpOptionFullyQualifiedDomainName.java |   0
 .../readwrite/PnDcp_Block_DhcpOptionHostName.java  |   0
 ...PnDcp_Block_DhcpOptionParameterRequestList.java |   0
 .../PnDcp_Block_DhcpOptionServerIdentifier.java    |   0
 .../PnDcp_Block_DhcpOptionUuidBasedClient.java     |   0
 ..._Block_DhcpOptionVendorSpecificInformation.java |   0
 .../readwrite/PnDcp_Block_FullIpSuite.java         |   0
 .../readwrite/PnDcp_Block_IpMacAddress.java        |   0
 .../readwrite/PnDcp_Block_IpParameter.java         |   0
 .../java/profinet/readwrite/PnDcp_FrameId.java     |   0
 .../plc4x/java/profinet/readwrite/PnDcp_Pdu.java   |   0
 .../profinet/readwrite/PnDcp_Pdu_AlarmLow.java     |   0
 .../profinet/readwrite/PnDcp_Pdu_IdentifyReq.java  |   0
 .../profinet/readwrite/PnDcp_Pdu_IdentifyRes.java  |   0
 .../readwrite/PnDcp_Pdu_IdentifyRes_Payload.java   |   0
 .../readwrite/PnDcp_Pdu_RealTimeCyclic.java        |   0
 .../java/profinet/readwrite/PnDcp_ServiceId.java   |   0
 .../java/profinet/readwrite/PnDcp_ServiceType.java |   0
 .../readwrite/PnDcp_SupportedDeviceOption.java     |   0
 .../profinet/readwrite/PnIoCM_Block_Request.java}  |  38 +-
 .../readwrite/PnIoCM_Block_ResponseConnect.java}   |  39 +-
 .../java/profinet/readwrite/PnIoCm_AddInfo.java    |   0
 .../profinet/readwrite/PnIoCm_AlarmCrType.java     |   0
 .../java/profinet/readwrite/PnIoCm_ArInfo.java     |   0
 .../java/profinet/readwrite/PnIoCm_ArType.java     |   0
 .../java/profinet/readwrite/PnIoCm_Block.java      |  37 +-
 .../java/profinet/readwrite/PnIoCm_BlockType.java  | 138 +++++
 .../readwrite/PnIoCm_Block_AlarmCrReq.java         |   0
 .../readwrite/PnIoCm_Block_AlarmCrRes.java         |   0
 .../profinet/readwrite/PnIoCm_Block_ArReq.java     |   0
 .../profinet/readwrite/PnIoCm_Block_ArRes.java     |   0
 .../profinet/readwrite/PnIoCm_Block_ArServer.java  |   0
 .../PnIoCm_Block_ExpectedSubmoduleReq.java         |   0
 .../profinet/readwrite/PnIoCm_Block_IAndM0.java    | 532 +++++++++++++++++++
 .../profinet/readwrite/PnIoCm_Block_IAndM1.java}   | 123 ++---
 .../profinet/readwrite/PnIoCm_Block_IAndM2.java}   | 101 ++--
 .../profinet/readwrite/PnIoCm_Block_IAndM3.java}   | 100 ++--
 .../profinet/readwrite/PnIoCm_Block_IAndM4.java}   | 100 ++--
 .../profinet/readwrite/PnIoCm_Block_IoCrReq.java   |   0
 .../profinet/readwrite/PnIoCm_Block_IoCrRes.java   |   0
 .../readwrite/PnIoCm_Block_ModuleDiff.java         |  18 +-
 .../PnIoCm_Block_RealIdentificationData.java}      |  69 +--
 ...nIoCm_Block_ReqPluginAlarmApplicationReady.java | 123 +++++
 .../profinet/readwrite/PnIoCm_CompanionArType.java |   0
 .../readwrite/PnIoCm_Control_Request.java}         |  40 +-
 .../readwrite/PnIoCm_Control_ResponseConnect.java} |  40 +-
 .../readwrite/PnIoCm_DataUnitDataObject.java       |   0
 .../profinet/readwrite/PnIoCm_DataUnitIoCs.java    |   0
 .../profinet/readwrite/PnIoCm_DescriptionType.java |   0
 .../PnIoCm_ExpectedSubmoduleBlockReqApi.java       |   0
 .../java/profinet/readwrite/PnIoCm_IdentInfo.java  |   0
 .../profinet/readwrite/PnIoCm_IoCrBlockReqApi.java |   0
 .../java/profinet/readwrite/PnIoCm_IoCrType.java   |   0
 .../plc4x/java/profinet/readwrite/PnIoCm_IoCs.java |   0
 .../profinet/readwrite/PnIoCm_IoDataObject.java    |   0
 .../readwrite/PnIoCm_ModuleDiffBlockApi.java       |   0
 .../PnIoCm_ModuleDiffBlockApi_Module.java          |   0
 .../PnIoCm_ModuleDiffBlockApi_Submodule.java       |   0
 .../profinet/readwrite/PnIoCm_ModuleState.java     |   0
 .../java/profinet/readwrite/PnIoCm_Packet.java     |   2 +
 .../profinet/readwrite/PnIoCm_Packet_Fault.java    |   0
 .../profinet/readwrite/PnIoCm_Packet_NoCall.java   |   0
 .../profinet/readwrite/PnIoCm_Packet_Ping.java     |   0
 .../java/profinet/readwrite/PnIoCm_Packet_Rej.java |   0
 .../java/profinet/readwrite/PnIoCm_Packet_Req.java |   0
 .../java/profinet/readwrite/PnIoCm_Packet_Res.java |   0
 .../profinet/readwrite/PnIoCm_Packet_Working.java  | 122 +++++
 .../readwrite/PnIoCm_RealIdentificationApi.java    | 183 +++++++
 .../PnIoCm_RealIdentificationApi_Slot.java         | 208 ++++++++
 .../PnIoCm_RealIdentificationApi_Subslot.java      | 161 ++++++
 .../java/profinet/readwrite/PnIoCm_RtClass.java    |   0
 .../java/profinet/readwrite/PnIoCm_State.java      |   0
 .../java/profinet/readwrite/PnIoCm_Submodule.java  |   0
 .../profinet/readwrite/PnIoCm_SubmoduleType.java   |   0
 .../PnIoCm_Submodule_InputAndOutputData.java       |   0
 .../readwrite/PnIoCm_Submodule_InputData.java      |   0
 .../PnIoCm_Submodule_NoInputNoOutputData.java      |   0
 .../readwrite/PnIoCm_Submodule_OutputData.java     |   0
 .../readwrite/PnIo_CyclicServiceDataUnit.java      |   0
 .../java/profinet/readwrite/ProfinetDataType.java  |   0
 .../profinet/readwrite/ProfinetDeviceState.java    |   0
 .../java/profinet/readwrite/TlvChassisId.java      |   0
 .../java/profinet/readwrite/TlvIEEESubType.java    |   0
 .../readwrite/TlvIeee8023MacPhyConfigStatus.java   |   0
 .../readwrite/TlvIeee8023MaxFrameSize.java         |   0
 .../profinet/readwrite/TlvManagementAddress.java   |   0
 .../profinet/readwrite/TlvOrgSpecificIeee8023.java |   0
 .../readwrite/TlvOrgSpecificIeee8023Unit.java      |   0
 .../profinet/readwrite/TlvOrgSpecificProfibus.java |   0
 .../readwrite/TlvOrgSpecificProfibusUnit.java      |   0
 .../readwrite/TlvOrganizationSpecific.java         |   0
 .../readwrite/TlvOrganizationSpecificUnit.java     |   0
 .../profinet/readwrite/TlvPortDescription.java     |   0
 .../plc4x/java/profinet/readwrite/TlvPortId.java   |   0
 .../profinet/readwrite/TlvProfibusSubType.java     |   0
 .../readwrite/TlvProfibusSubTypeChassisMac.java    |   0
 .../readwrite/TlvProfibusSubTypeMeasuredDelay.java |   0
 .../readwrite/TlvProfibusSubTypeMrpPortStatus.java |   0
 .../readwrite/TlvProfibusSubTypePortStatus.java    |   0
 .../profinet/readwrite/TlvSystemCapabilities.java  |   0
 .../profinet/readwrite/TlvSystemDescription.java   |   0
 .../java/profinet/readwrite/TlvSystemName.java     |   0
 .../java/profinet/readwrite/TlvTimeToLive.java     |   0
 .../plc4x/java/profinet/readwrite/TlvType.java     |   0
 .../plc4x/java/profinet/readwrite/UserData.java    |   0
 .../apache/plc4x/java/profinet/readwrite/Uuid.java |   0
 .../profinet/readwrite/VirtualLanPriority.java     |   0
 .../apache/plc4x/java/profinet/ProfinetDriver.java | 164 ++++++
 .../java/profinet/channel/ProfinetChannel.java     | 250 +++++++++
 .../profinet/config/ProfinetConfiguration.java     | 111 ++++
 .../profinet/context/ProfinetDriverContext.java    | 191 +++++++
 .../profinet/discovery/ProfinetDiscoverer.java     | 251 +++++++++
 .../profinet/gsdml/ProfinetApplicationProcess.java |  66 +++
 .../gsdml/ProfinetApplicationRelations.java}       |  24 +-
 .../java/profinet/gsdml/ProfinetBitDataItem.java}  |  25 +-
 .../profinet/gsdml/ProfinetCertificationInfo.java} |  39 +-
 .../java/profinet/gsdml/ProfinetDataItem.java}     |  47 +-
 .../gsdml/ProfinetDeviceAccessPointItem.java       | 188 +++++++
 .../profinet/gsdml/ProfinetDeviceFunction.java}    |  17 +-
 .../profinet/gsdml/ProfinetDeviceIdentity.java}    |  41 +-
 .../java/profinet/gsdml/ProfinetDeviceItem.java}   |  21 +-
 .../profinet/gsdml/ProfinetErrorCode2Value.java}   |  19 +-
 .../profinet/gsdml/ProfinetExternalTextList.java   |   5 +-
 .../plc4x/java/profinet/gsdml/ProfinetFamily.java} |  24 +-
 .../java/profinet/gsdml/ProfinetGraphicItem.java}  |  24 +-
 .../java/profinet/gsdml/ProfinetGraphics.java}     |  17 +-
 .../profinet/gsdml/ProfinetGraphicsItemRef.java}   |  24 +-
 .../java/profinet/gsdml/ProfinetIOConfigData.java} |  24 +-
 .../profinet/gsdml/ProfinetISO15745Profile.java}   |  26 +-
 .../profinet/gsdml/ProfinetISO15745Reference.java} |  33 +-
 .../gsdml/ProfinetInterfaceSubmoduleItem.java      | 100 ++++
 .../plc4x/java/profinet/gsdml/ProfinetIoData.java} |  37 +-
 .../java/profinet/gsdml/ProfinetIoDataInput.java   |   5 +-
 .../java/profinet/gsdml/ProfinetIoDataOutput.java  |   5 +-
 .../profinet/gsdml/ProfinetLogBookEntryItem.java}  |  26 +-
 .../java/profinet/gsdml/ProfinetModuleInfo.java}   |  54 +-
 .../java/profinet/gsdml/ProfinetModuleItem.java    |   5 +-
 .../profinet/gsdml/ProfinetModuleItemRef.java}     |  24 +-
 .../gsdml/ProfinetParameterRecordDataItem.java     |   4 +-
 .../profinet/gsdml/ProfinetPortSubmoduleItem.java} |  54 +-
 .../profinet/gsdml/ProfinetPrimaryLanguage.java}   |  15 +-
 .../java/profinet/gsdml/ProfinetProfileBody.java}  |  33 +-
 .../java/profinet/gsdml/ProfinetProfileHeader.java |  71 +++
 .../plc4x/java/profinet/gsdml/ProfinetRef.java     |  78 +++
 .../gsdml/ProfinetSystemDefinedSubmoduleList.java  |   3 +-
 .../plc4x/java/profinet/gsdml/ProfinetTextId.java} |  17 +-
 .../java/profinet/gsdml/ProfinetTextIdValue.java}  |  24 +-
 .../profinet/gsdml/ProfinetTimingProperties.java}  |  24 +-
 .../plc4x/java/profinet/gsdml/ProfinetValue.java}  |  17 +-
 .../gsdml/ProfinetVirtualSubmoduleItem.java        |   4 +-
 .../java/profinet/packets/PnDcpPacketFactory.java  | 241 +++++++++
 .../profinet/protocol/ProfinetProtocolLogic.java   | 562 +++++++++++++++++++++
 .../profinet/readwrite/utils/StaticHelper.java     |   6 +
 .../plc4x/java/profinet/tag/ProfinetTag.java       | 108 ++++
 .../java/profinet/tag/ProfinetTagHandler.java}     |  18 +-
 .../profinet/utils/ProfinetDataTypeMapper.java     | 129 +++++
 .../services/org.apache.plc4x.java.api.PlcDriver   |   0
 .../plc4x/java/profinet/ManualParserTest.java}     |  17 +-
 .../profinet/ManualProfinetIoDiscoveryTest.java    |   5 +-
 .../plc4x/java/profinet/ManualProfinetIoTest.java  |  49 ++
 .../profinet/gsdml/ProfinetGSDMLParseTest.java     |   5 +-
 .../src/test/resources/gsdml.xml                   |   0
 .../src/test/resources/logback-test.xml            |   0
 .../java/profinet/readwrite/DceRpc_Packet.java     |  26 +-
 ...equestHeader.java => IODReadRequestHeader.java} | 119 ++---
 ...questHeader.java => IODReadResponseHeader.java} | 145 +++---
 .../profinet/readwrite/IODWriteRequestHeader.java  |  19 +-
 .../profinet/readwrite/IODWriteResponseHeader.java |   2 +-
 .../profinet/readwrite/PnIoCM_Block_Request.java   |   2 +-
 ...onse.java => PnIoCM_Block_ResponseConnect.java} |  39 +-
 .../java/profinet/readwrite/PnIoCm_Block.java      |  37 +-
 .../java/profinet/readwrite/PnIoCm_BlockType.java  |  81 ++-
 .../profinet/readwrite/PnIoCm_Block_IAndM0.java    | 532 +++++++++++++++++++
 ...ck_ModuleDiff.java => PnIoCm_Block_IAndM1.java} | 123 ++---
 ...ck_ModuleDiff.java => PnIoCm_Block_IAndM2.java} | 101 ++--
 ...ck_ModuleDiff.java => PnIoCm_Block_IAndM3.java} | 100 ++--
 ...ck_ModuleDiff.java => PnIoCm_Block_IAndM4.java} | 100 ++--
 .../readwrite/PnIoCm_Block_ModuleDiff.java         |  18 +-
 ...va => PnIoCm_Block_RealIdentificationData.java} |  69 +--
 ...nIoCm_Block_ReqPluginAlarmApplicationReady.java | 123 +++++
 .../profinet/readwrite/PnIoCm_Control_Request.java |   2 +-
 ...st.java => PnIoCm_Control_ResponseConnect.java} |  40 +-
 .../java/profinet/readwrite/PnIoCm_Packet.java     |   2 +
 .../profinet/readwrite/PnIoCm_Packet_Working.java  | 122 +++++
 .../readwrite/PnIoCm_RealIdentificationApi.java    | 183 +++++++
 .../PnIoCm_RealIdentificationApi_Slot.java         | 208 ++++++++
 .../PnIoCm_RealIdentificationApi_Subslot.java      | 161 ++++++
 .../profinet/context/ProfinetDeviceContext.java    |   9 +-
 .../LocalNetworkDevice.java}                       |  38 +-
 .../java/profinet/device/ProfinetChannel.java      |  31 +-
 .../plc4x/java/profinet/device/ProfinetDevice.java |  33 +-
 .../java/profinet/device/ProfinetModuleImpl.java   |   2 +
 .../profinet/discovery/ProfinetPlcDiscoverer.java  |   1 +
 .../profinet/gsdml/ProfinetExternalTextList.java   |   3 -
 .../java/profinet/gsdml/ProfinetIoDataInput.java   |   1 -
 .../java/profinet/gsdml/ProfinetIoDataOutput.java  |   1 -
 .../java/profinet/gsdml/ProfinetModuleItem.java    |   3 +-
 .../gsdml/ProfinetParameterRecordDataItem.java     |   2 -
 .../gsdml/ProfinetSystemDefinedSubmoduleList.java  |   1 -
 .../gsdml/ProfinetVirtualSubmoduleItem.java        |   2 -
 .../profinet/protocol/ProfinetProtocolLogic.java   |  13 +-
 .../profinet/readwrite/utils/StaticHelper.java     |   7 +
 .../profinet/ManualProfinetIoDiscoveryTest.java    |   5 +-
 .../plc4x/java/profinet/ManualProfinetIoTest.java  |  21 +-
 .../plc4x/java/profinet/ProfinetCheckSumTests.java |   1 +
 .../profinet/gsdml/ProfinetConfigurationTests.java |  15 +-
 .../profinet/gsdml/ProfinetGSDMLParseTest.java     |   7 +-
 plc4j/pom.xml                                      |   2 +
 .../org/apache/plc4x/java/spi/TimeoutManager.java  |   2 +-
 .../java/spi/connection/NettyChannelFactory.java   |  20 +-
 .../spi/netty/NettyHashTimerTimeoutManager.java    |  16 +-
 plc4j/transports/raw-socket/pom.xml                |   4 +
 .../transport/rawsocket/RawSocketTransport.java    |  34 +-
 .../java/transport/udp/UdpChannelFactory.java      |   8 +-
 .../plc4x/java/transport/udp/UdpTransport.java     |  15 +-
 .../transport/udp/UdpTransportConfiguration.java   |   9 +
 .../utils/rawsockets/netty/RawSocketChannel.java   |  12 +-
 .../netty/address/RawSocketAddress.java}           |  19 +-
 .../utils/rawsockets/netty/utils/ArpUtils.java     |  25 +-
 .../utils/rawsockets/netty/ManualArpTest.java}     |  26 +-
 .../test/DisableOnParallelsVmFlagCondition.java    |   7 +-
 .../knxnetip/readwrite/model/KnxManufacturer.cs    |  40 +-
 .../main/resources/protocols/profinet/dcerpc.mspec |   3 +-
 .../main/resources/protocols/profinet/pnio.mspec   | 274 ++++++++--
 .../s7/src/main/resources/protocols/s7/s7.mspec    |   2 +-
 src/site/asciidoc/developers/architecture.adoc     | 162 ++++++
 292 files changed, 7909 insertions(+), 1577 deletions(-)
 create mode 100644 plc4j/drivers/profinet-ng/README.md
 create mode 100644 plc4j/drivers/profinet-ng/pom.xml
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/CharacterEncoding.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/CheckPeers.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DataItem.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_ActivityUuid.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_InterfaceUuid.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_InterfaceUuid_ControllerInterface.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_InterfaceUuid_DeviceInterface.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_InterfaceUuid_ParameterInterface.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_InterfaceUuid_SupervisorInterface.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_ObjectUuid.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_Operation.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_Packet.java (98%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/DceRpc_PacketType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/EndOfLldp.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Ethernet_Frame.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Ethernet_FramePayload.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Ethernet_FramePayload_IPv4.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Ethernet_FramePayload_LLDP.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Ethernet_FramePayload_PnDcp.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Ethernet_FramePayload_VirtualLan.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/FloatingPointEncoding.java (100%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IODWriteRequestHeader.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IODReadRequestHeader.java} (82%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IODWriteRequestHeader.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IODReadResponseHeader.java} (81%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IODWriteRequestHeader.java (94%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IODWriteResponseHeader.java (99%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IntegerEncoding.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/IpAddress.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/LldpUnit.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Lldp_Pdu.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/MacAddress.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/ManagementAddressSubType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/MultipleInterfaceModeNameOfDevice.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PDInterfaceAdjust.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PDPortDataCheck.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PascalString.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PascalString16BitLength.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PcDcp_GetSet_Pdu.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PcDcp_Pdu_DelayReq.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_BlockOptions.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_ALLSelector.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_ControlOptionFactoryReset.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_ControlOptionResetToFactory.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_ControlOptionResponse.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_ControlOptionSignal.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_ControlOptionStart.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_ControlOptionStop.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DeviceInitiativeOption.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesAliasName.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesDeviceId.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesDeviceInstance.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesDeviceOptions.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesDeviceRole.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesDeviceVendor.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesOemDeviceId.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesStandardGateway.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionClassIdentifier.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionDhcpClientIdentifier.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionFullyQualifiedDomainName.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionHostName.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionParameterRequestList.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionServerIdentifier.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionUuidBasedClient.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DhcpOptionVendorSpecificInformation.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_FullIpSuite.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_IpMacAddress.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_IpParameter.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_FrameId.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_AlarmLow.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_IdentifyReq.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_IdentifyRes.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_IdentifyRes_Payload.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_ServiceId.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_ServiceType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_SupportedDeviceOption.java (100%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCM_Block_Response.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCM_Block_Request.java} (91%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCM_Block_Response.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCM_Block_ResponseConnect.java} (90%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_AddInfo.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_AlarmCrType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_ArInfo.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_ArType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block.java (80%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_BlockType.java
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java (100%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IAndM0.java
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IAndM1.java} (67%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IAndM2.java} (66%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IAndM3.java} (66%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IAndM4.java} (66%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java (95%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_RealIdentificationData.java} (77%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ReqPluginAlarmApplicationReady.java
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_CompanionArType.java (100%)
 rename plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Control_Response.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Control_Request.java} (90%)
 copy plc4j/drivers/{profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Control_Request.java => profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Control_ResponseConnect.java} (89%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_DataUnitDataObject.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_DataUnitIoCs.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_DescriptionType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_ExpectedSubmoduleBlockReqApi.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_IdentInfo.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_IoCrBlockReqApi.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_IoCrType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_IoCs.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_IoDataObject.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_ModuleDiffBlockApi.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_ModuleDiffBlockApi_Module.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_ModuleDiffBlockApi_Submodule.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_ModuleState.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet.java (97%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_Fault.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_NoCall.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_Ping.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_Rej.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_Req.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_Res.java (100%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_Working.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_RealIdentificationApi.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_RealIdentificationApi_Slot.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_RealIdentificationApi_Subslot.java
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_RtClass.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_State.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Submodule.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_SubmoduleType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Submodule_InputAndOutputData.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Submodule_InputData.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Submodule_NoInputNoOutputData.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Submodule_OutputData.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIo_CyclicServiceDataUnit.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/ProfinetDataType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/ProfinetDeviceState.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvChassisId.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvIEEESubType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvIeee8023MacPhyConfigStatus.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvIeee8023MaxFrameSize.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvManagementAddress.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvOrgSpecificIeee8023.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvOrgSpecificIeee8023Unit.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvOrgSpecificProfibus.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvOrgSpecificProfibusUnit.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvOrganizationSpecific.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvOrganizationSpecificUnit.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvPortDescription.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvPortId.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvProfibusSubType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvProfibusSubTypeChassisMac.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvProfibusSubTypeMeasuredDelay.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvProfibusSubTypeMrpPortStatus.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvProfibusSubTypePortStatus.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvSystemCapabilities.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvSystemDescription.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvSystemName.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvTimeToLive.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/TlvType.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/UserData.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/Uuid.java (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/generated/org/apache/plc4x/java/profinet/readwrite/VirtualLanPriority.java (100%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/ProfinetDriver.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/channel/ProfinetChannel.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/config/ProfinetConfiguration.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/context/ProfinetDriverContext.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/discovery/ProfinetDiscoverer.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetApplicationProcess.java
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetApplicationRelations.java} (64%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetBitDataItem.java} (68%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetParameterRecordDataItem.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetCertificationInfo.java} (60%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetParameterRecordDataItem.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetDataItem.java} (54%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetDeviceAccessPointItem.java
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetDeviceFunction.java} (71%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetParameterRecordDataItem.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetDeviceIdentity.java} (59%)
 copy plc4j/{transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpTransportConfiguration.java => drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetDeviceItem.java} (65%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetErrorCode2Value.java} (72%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java (88%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetFamily.java} (66%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetGraphicItem.java} (68%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetGraphics.java} (71%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetGraphicsItemRef.java} (66%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetIOConfigData.java} (65%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetISO15745Profile.java} (62%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetISO15745Reference.java} (58%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetInterfaceSubmoduleItem.java
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetSystemDefinedSubmoduleList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetIoData.java} (54%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetIoDataInput.java (89%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetIoDataOutput.java (89%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetLogBookEntryItem.java} (65%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetParameterRecordDataItem.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetModuleInfo.java} (55%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetModuleItem.java (96%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetModuleItemRef.java} (65%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetParameterRecordDataItem.java (95%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetVirtualSubmoduleItem.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetPortSubmoduleItem.java} (56%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetPrimaryLanguage.java} (74%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetProfileBody.java} (51%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetProfileHeader.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetRef.java
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetSystemDefinedSubmoduleList.java (96%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetTextId.java} (71%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetTextIdValue.java} (68%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetTimingProperties.java} (66%)
 copy plc4j/drivers/{profinet/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetExternalTextList.java => profinet-ng/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetValue.java} (71%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/gsdml/ProfinetVirtualSubmoduleItem.java (94%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/packets/PnDcpPacketFactory.java
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/protocol/ProfinetProtocolLogic.java
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/java/org/apache/plc4x/java/profinet/readwrite/utils/StaticHelper.java (97%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/tag/ProfinetTag.java
 copy plc4j/{transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpTransportConfiguration.java => drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/tag/ProfinetTagHandler.java} (63%)
 create mode 100644 plc4j/drivers/profinet-ng/src/main/java/org/apache/plc4x/java/profinet/utils/ProfinetDataTypeMapper.java
 copy plc4j/drivers/{profinet => profinet-ng}/src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver (100%)
 copy plc4j/drivers/{profinet/src/test/java/org/apache/plc4x/java/profinet/ManualProfinetIoDiscoveryTest.java => profinet-ng/src/test/java/org/apache/plc4x/java/profinet/ManualParserTest.java} (54%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/test/java/org/apache/plc4x/java/profinet/ManualProfinetIoDiscoveryTest.java (84%)
 create mode 100644 plc4j/drivers/profinet-ng/src/test/java/org/apache/plc4x/java/profinet/ManualProfinetIoTest.java
 copy plc4j/drivers/{profinet => profinet-ng}/src/test/java/org/apache/plc4x/java/profinet/gsdml/ProfinetGSDMLParseTest.java (89%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/test/resources/gsdml.xml (100%)
 copy plc4j/drivers/{profinet => profinet-ng}/src/test/resources/logback-test.xml (100%)
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{IODWriteRequestHeader.java => IODReadRequestHeader.java} (82%)
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{IODWriteRequestHeader.java => IODReadResponseHeader.java} (81%)
 rename plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{PnIoCM_Block_Response.java => PnIoCM_Block_ResponseConnect.java} (90%)
 create mode 100644 plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IAndM0.java
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{PnIoCm_Block_ModuleDiff.java => PnIoCm_Block_IAndM1.java} (67%)
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{PnIoCm_Block_ModuleDiff.java => PnIoCm_Block_IAndM2.java} (66%)
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{PnIoCm_Block_ModuleDiff.java => PnIoCm_Block_IAndM3.java} (66%)
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{PnIoCm_Block_ModuleDiff.java => PnIoCm_Block_IAndM4.java} (66%)
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{PnIoCm_Block_ModuleDiff.java => PnIoCm_Block_RealIdentificationData.java} (77%)
 create mode 100644 plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ReqPluginAlarmApplicationReady.java
 copy plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/{PnIoCm_Control_Request.java => PnIoCm_Control_ResponseConnect.java} (89%)
 create mode 100644 plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Packet_Working.java
 create mode 100644 plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_RealIdentificationApi.java
 create mode 100644 plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_RealIdentificationApi_Slot.java
 create mode 100644 plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_RealIdentificationApi_Subslot.java
 copy plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/{gsdml/ProfinetIoDataOutput.java => device/LocalNetworkDevice.java} (52%)
 copy plc4j/{transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpTransportConfiguration.java => utils/raw-sockets/src/main/java/org/apache/plc4x/java/utils/rawsockets/netty/address/RawSocketAddress.java} (66%)
 copy plc4j/{drivers/profinet/src/test/java/org/apache/plc4x/java/profinet/ManualProfinetIoDiscoveryTest.java => utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/netty/ManualArpTest.java} (50%)
 create mode 100644 src/site/asciidoc/developers/architecture.adoc