You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by ld...@apache.org on 2020/10/21 08:43:10 UTC

[plc4x] 10/21: Update service list for canopen.

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

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

commit d31f30dd4309fc0b7418e7cdfb1d95dcb96324d2
Author: Ɓukasz Dywicki <lu...@code-house.org>
AuthorDate: Tue Sep 1 11:42:00 2020 +0200

    Update service list for canopen.
---
 .../can/src/main/resources/protocols/can/canopen.mspec     |  9 +++++++++
 .../plc4x/java/can/protocol/CANOpenProtocolLogic.java      |  4 ++++
 .../test/resources/testsuite/CANOpenPayloadTestSuite.xml   | 14 ++++++++++++++
 3 files changed, 27 insertions(+)

diff --git a/protocols/can/src/main/resources/protocols/can/canopen.mspec b/protocols/can/src/main/resources/protocols/can/canopen.mspec
index d5160c6..0c4f175 100644
--- a/protocols/can/src/main/resources/protocols/can/canopen.mspec
+++ b/protocols/can/src/main/resources/protocols/can/canopen.mspec
@@ -19,9 +19,18 @@
 
 [enum uint 4 'CANOpenService'
     ['0b0000' BROADCAST   ]
+    ['0b0001' SYNC        ]
     ['0b1110' NMT         ]
     ['0b1100' SDO_REQUEST ]
     ['0b1011' SDO_RESPONSE]
+    ['0b0011' TPDO_1]
+    ['0b0100' RPDO_1]
+    ['0b0101' TPDO_2]
+    ['0b0110' RPDO_2]
+    ['0b0111' TPDO_3]
+    ['0b1000' RPDO_3]
+    ['0b1001' TPDO_4]
+    ['0b1010' RPDO_4]
 ]
 
 [enum uint 8 'NMTStateRequest'
diff --git a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java
index 9cc2fdb..0090e0e 100644
--- a/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java
+++ b/sandbox/test-java-can-driver/src/main/java/org/apache/plc4x/java/can/protocol/CANOpenProtocolLogic.java
@@ -114,4 +114,8 @@ public class CANOpenProtocolLogic extends Plc4xProtocolBase<SocketCANFrame> impl
             (service.getValue() << 16 ) & 0x00ff0000;
     }
 
+    private CANOpenService serviceId(int nodeId) {
+        // form 32 bit socketcan identifier
+        return CANOpenService.valueOf((byte) (nodeId >> 7));
+    }
 }
diff --git a/sandbox/test-java-can-driver/src/test/resources/testsuite/CANOpenPayloadTestSuite.xml b/sandbox/test-java-can-driver/src/test/resources/testsuite/CANOpenPayloadTestSuite.xml
index d7c1a33..ecf224b 100644
--- a/sandbox/test-java-can-driver/src/test/resources/testsuite/CANOpenPayloadTestSuite.xml
+++ b/sandbox/test-java-can-driver/src/test/resources/testsuite/CANOpenPayloadTestSuite.xml
@@ -50,6 +50,20 @@
   </testcase>
 
   <testcase>
+    <name>Network heartbeat, payload: 05</name>
+    <raw>05</raw>
+    <root-type>CANOpenPayload</root-type>
+    <parser-arguments>
+      <arg1>NMT</arg1>
+    </parser-arguments>
+    <xml>
+      <CANOpenNetworkPayload className="org.apache.plc4x.java.canopen.readwrite.CANOpenNetworkPayload">
+        <state>OPERATIONAL</state>
+      </CANOpenNetworkPayload>
+    </xml>
+  </testcase>
+
+  <testcase>
     <name>SDO request, payload: 4317100000000000</name>
     <raw>4317100000000000</raw>
     <root-type>CANOpenPayload</root-type>