You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by hu...@apache.org on 2023/02/06 18:28:35 UTC

[plc4x] branch develop updated (abbe70d865 -> 33dc434a4a)

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

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


    from abbe70d865 build(deps): bump maven-enforcer-plugin from 3.1.0 to 3.2.1 (#777)
     new ef74a156bc fix(plc4j/profinet): Fixed issue with subslot and ident numbers.
     new 6203dc6b07 fix(plc4j/profinet): Fixed issue with Write Parameter Size
     new 33dc434a4a fix(plc4j/profinet): Error in IEE8023 Tlv for LLDP broadcast.

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


Summary of changes:
 .../java/profinet/device/ProfinetChannel.java      |  2 +-
 .../plc4x/java/profinet/device/ProfinetDevice.java | 32 +++++++++++++---------
 .../java/profinet/device/ProfinetModuleImpl.java   |  6 ++--
 .../profinet/discovery/ProfinetPlcDiscoverer.java  |  6 ++--
 .../resources/protocols/profinet/profinet.mspec    | 16 +++++------
 5 files changed, 35 insertions(+), 27 deletions(-)


[plc4x] 03/03: fix(plc4j/profinet): Error in IEE8023 Tlv for LLDP broadcast.

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

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

commit 33dc434a4a0316c7af5b8393b38682e11669b0f0
Author: Ben Hutcheson <be...@gmail.com>
AuthorDate: Mon Feb 6 19:25:03 2023 +0100

    fix(plc4j/profinet): Error in IEE8023 Tlv for LLDP broadcast.
---
 .../apache/plc4x/java/profinet/discovery/ProfinetPlcDiscoverer.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/discovery/ProfinetPlcDiscoverer.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/discovery/ProfinetPlcDiscoverer.java
index d31bf6ec8b..8416356345 100644
--- a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/discovery/ProfinetPlcDiscoverer.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/discovery/ProfinetPlcDiscoverer.java
@@ -355,11 +355,11 @@ public class ProfinetPlcDiscoverer implements PlcDiscoverer {
                         new TlvProfibusSubTypeChassisMac(macAddress)
                     );
 
-                    TlvIeee8023MacPhyConfigStatus ieee = new TlvIeee8023MacPhyConfigStatus(
+                    TlvOrgSpecificIeee8023 ieee = new TlvOrgSpecificIeee8023(new TlvIeee8023MacPhyConfigStatus(
                         (short) 0x03,
                         0x0020,
                         0x0010
-                    );
+                    ));
 
                     Ethernet_Frame identificationRequest = null;
                     try {
@@ -390,7 +390,7 @@ public class ProfinetPlcDiscoverer implements PlcDiscoverer {
                                         ),
                                         new TlvOrganizationSpecific(
                                             ieee.getLengthInBytes(),
-                                            new TlvOrgSpecificIeee8023(ieee)
+                                            ieee
                                         ),
                                         new TlvManagementAddress(
                                             12,


[plc4x] 01/03: fix(plc4j/profinet): Fixed issue with subslot and ident numbers.

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

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

commit ef74a156bc34be4f216bfd71a79821d63eb2f505
Author: Ben Hutcheson <be...@gmail.com>
AuthorDate: Mon Feb 6 15:07:23 2023 +0100

    fix(plc4j/profinet): Fixed issue with subslot and ident numbers.
---
 .../plc4x/java/profinet/device/ProfinetModuleImpl.java   |  6 ++++--
 .../src/main/resources/protocols/profinet/profinet.mspec | 16 ++++++++--------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetModuleImpl.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetModuleImpl.java
index 9c6a7f2fe6..5063a2fc23 100644
--- a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetModuleImpl.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetModuleImpl.java
@@ -84,6 +84,7 @@ public class ProfinetModuleImpl implements ProfinetModule {
         if (module.getSystemDefinedSubmoduleList() != null) {
             for (ProfinetInterfaceSubmoduleItem interfaceItem : module.getSystemDefinedSubmoduleList().getInterfaceSubmodules()) {
                 Integer identNumber = Integer.decode(interfaceItem.getSubmoduleIdentNumber());
+                Integer subSlotNumber = interfaceItem.getSubslotNumber();
                 inputIoPsApiBlocks.add(new PnIoCm_IoDataObject(
                     slot,
                     interfaceItem.getSubslotNumber(),
@@ -93,7 +94,7 @@ public class ProfinetModuleImpl implements ProfinetModule {
                     interfaceItem.getSubslotNumber(),
                     outputIoCsOffset));
                 expectedSubModuleApiBlocks.add(new PnIoCm_Submodule_NoInputNoOutputData(
-                    identNumber,
+                    subSlotNumber,
                     identNumber,
                     false,
                     false,
@@ -105,6 +106,7 @@ public class ProfinetModuleImpl implements ProfinetModule {
             for (
                 ProfinetPortSubmoduleItem portItem : module.getSystemDefinedSubmoduleList().getPortSubmodules()) {
                 Integer identNumber = Integer.decode(portItem.getSubmoduleIdentNumber());
+                Integer subSlotNumber = portItem.getSubslotNumber();
                 inputIoPsApiBlocks.add(new PnIoCm_IoDataObject(
                     0,
                     portItem.getSubslotNumber(),
@@ -114,7 +116,7 @@ public class ProfinetModuleImpl implements ProfinetModule {
                     portItem.getSubslotNumber(),
                     outputIoCsOffset));
                 expectedSubModuleApiBlocks.add(new PnIoCm_Submodule_NoInputNoOutputData(
-                    identNumber,
+                    subSlotNumber,
                     identNumber,
                     false,
                     false,
diff --git a/protocols/profinet/src/main/resources/protocols/profinet/profinet.mspec b/protocols/profinet/src/main/resources/protocols/profinet/profinet.mspec
index d4b9c74814..6cd2a87f18 100644
--- a/protocols/profinet/src/main/resources/protocols/profinet/profinet.mspec
+++ b/protocols/profinet/src/main/resources/protocols/profinet/profinet.mspec
@@ -101,24 +101,24 @@
         ['END_OF_LLDP'  EndOfLldp
         ]
         ['CHASSIS_ID'   TlvChassisId(uint 9 tlvIdLength)
-            [simple     uint 8                        chassisIdSubType               ]
-            [simple     vstring     '(tlvIdLength - 1) * 8' chassisId                      ]
+            [simple     uint 8                        chassisIdSubType              ]
+            [simple     vstring     '(tlvIdLength - 1) * 8' chassisId               ]
         ]
         ['PORT_ID'   TlvPortId(uint 9 tlvIdLength)
-            [simple     uint 8          portIdSubType                              ]
-            [simple     vstring     '(tlvIdLength - 1) * 8' portId                           ]
+            [simple     uint 8          portIdSubType                               ]
+            [simple     vstring     '(tlvIdLength - 1) * 8' portId                  ]
         ]
         ['TIME_TO_LIVE'   TlvTimeToLive
-            [simple     uint 16         tlvTimeToLiveUnit                          ]
+            [simple     uint 16         tlvTimeToLiveUnit                           ]
         ]
         ['PORT_DESCRIPTION'   TlvPortDescription(uint 9 tlvIdLength)
-            [simple     vstring     '(tlvIdLength) * 8' chassisId                      ]
+            [simple     vstring     '(tlvIdLength) * 8' chassisId                   ]
         ]
         ['SYSTEM_NAME'   TlvSystemName(uint 9 tlvIdLength)
-            [simple     vstring     '(tlvIdLength) * 8' chassisId                      ]
+            [simple     vstring     '(tlvIdLength) * 8' chassisId                   ]
         ]
         ['SYSTEM_DESCRIPTION'   TlvSystemDescription(uint 9 tlvIdLength)
-            [simple     vstring     '(tlvIdLength) * 8' chassisId                      ]
+            [simple     vstring     '(tlvIdLength) * 8' chassisId                   ]
         ]
         ['SYSTEM_CAPABILITIES'   TlvSystemCapabilities
             [reserved   uint 8                          '0x00'                      ]


[plc4x] 02/03: fix(plc4j/profinet): Fixed issue with Write Parameter Size

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

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

commit 6203dc6b07861169d2971855cfd92bde92070a64
Author: Ben Hutcheson <be...@gmail.com>
AuthorDate: Mon Feb 6 19:12:24 2023 +0100

    fix(plc4j/profinet): Fixed issue with Write Parameter Size
---
 .../java/profinet/device/ProfinetChannel.java      |  2 +-
 .../plc4x/java/profinet/device/ProfinetDevice.java | 32 +++++++++++++---------
 2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetChannel.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetChannel.java
index d3bcaf716b..deb608c1e0 100644
--- a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetChannel.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetChannel.java
@@ -103,7 +103,7 @@ public class ProfinetChannel {
                     } else if (ethernetPacket.getHeader().getType() == EtherType.IPV4 && ethernetPacket.getPayload().getPayload() instanceof UdpPacket) {
                         UdpPacket payload = (UdpPacket) ethernetPacket.getPayload().getPayload();
                         // Check if it's a PROFINET packet
-                        if (payload.getHeader().getDstPort().value() == -30572 || payload.getHeader().getSrcPort().value() == -30572) {
+                        if (payload.getHeader().getDstPort().value() == -30572 || payload.getHeader().getDstPort().value() == -15536) {
                             isPnPacket = true;
                         }
                     }
diff --git a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java
index fc1c6c8a3e..769c217c8a 100644
--- a/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java
+++ b/plc4j/drivers/profinet/src/main/java/org/apache/plc4x/java/profinet/device/ProfinetDevice.java
@@ -605,20 +605,9 @@ public class ProfinetDevice implements PlcSubscriber{
 
             int seqNumber = 0;
             List<PnIoCm_Block> requests = new ArrayList<>();
-            requests.add(
-                new IODWriteRequestHeader(
-                    (short) 1,
-                    (short) 0,
-                    seqNumber,
-                    ProfinetDeviceContext.ARUUID,
-                    0x00000000,
-                    0x0000,
-                    0x0000,
-                    0xe040,
-                    180,
-                    null
 
-                ));
+            // This will be filled in later
+            requests.add(null);
             seqNumber += 1;
             for (ProfinetInterfaceSubmoduleItem interfaceModule : deviceContext.getInterfaceSubModules()) {
                 requests.add(
@@ -674,7 +663,24 @@ public class ProfinetDevice implements PlcSubscriber{
                 }
                 index += 1;
             }
+            long multiWriteRecordLength = 0;
+            // The first record isn't included in the overall length
+            for (int i = 1; i < requests.size(); i++) {
+                multiWriteRecordLength += requests.get(i).getLengthInBytes();
+            }
 
+            requests.set(0, new IODWriteRequestHeader(
+                (short) 1,
+                (short) 0,
+                seqNumber,
+                ProfinetDeviceContext.ARUUID,
+                0x00000000,
+                0x0000,
+                0x0000,
+                0xe040,
+                multiWriteRecordLength,
+                null
+            ));
             return new DceRpc_Packet(
                 DceRpc_PacketType.REQUEST, true, false, false,
                 IntegerEncoding.BIG_ENDIAN, CharacterEncoding.ASCII, FloatingPointEncoding.IEEE,