You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/03/15 15:38:36 UTC
[incubator-plc4x] 04/05: fixed crc left-overs
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
commit 9a2c27e396d407358904cd38113b4e170cf14b15
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Mar 15 16:36:03 2018 +0100
fixed crc left-overs
---
.../ads/api/serial/AmsSerialAcknowledgeFrame.java | 21 ++-------------------
.../java/ads/api/serial/AmsSerialResetFrame.java | 21 ++-------------------
2 files changed, 4 insertions(+), 38 deletions(-)
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialAcknowledgeFrame.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialAcknowledgeFrame.java
index 812eb1b..98bfd79 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialAcknowledgeFrame.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialAcknowledgeFrame.java
@@ -21,10 +21,7 @@ package org.apache.plc4x.java.ads.api.serial;
import io.netty.buffer.ByteBuf;
import org.apache.plc4x.java.ads.api.serial.types.*;
import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
+import org.apache.plc4x.java.ads.protocol.util.DigestUtil;
/**
* If an AMS serial frame has been received and the frame is OK (magic cookie OK, CRC OK, correct fragment number etc.),
@@ -82,21 +79,7 @@ public class AmsSerialAcknowledgeFrame implements ByteReadable {
this.receiverAddress = receiverAddress;
this.fragmentNumber = fragmentNumber;
this.userDataLength = UserDataLength.of((byte) 0);
- MessageDigest messageDigest;
- try {
- messageDigest = MessageDigest.getInstance("CRC-16");
- } catch (NoSuchAlgorithmException e) {
- throw new PlcRuntimeException(e);
- }
- messageDigest.update(magicCookie.getBytes());
- messageDigest.update(transmitterAddress.getBytes());
- messageDigest.update(receiverAddress.getBytes());
- messageDigest.update(fragmentNumber.getBytes());
- byte[] digest = messageDigest.digest(userDataLength.getBytes());
- if (digest.length > 2) {
- throw new PlcRuntimeException("Digest length too great " + digest.length);
- }
- this.crc = CRC.of(digest[0], digest[1]);
+ this.crc = CRC.of(DigestUtil.calculateCrc16(() -> buildByteBuff(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength)));
}
public static AmsSerialAcknowledgeFrame of(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, CRC crc) {
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialResetFrame.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialResetFrame.java
index b05f023..e337eda 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialResetFrame.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialResetFrame.java
@@ -21,10 +21,7 @@ package org.apache.plc4x.java.ads.api.serial;
import io.netty.buffer.ByteBuf;
import org.apache.plc4x.java.ads.api.serial.types.*;
import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
+import org.apache.plc4x.java.ads.protocol.util.DigestUtil;
/**
* In case the transmitter does not receive a valid acknowledgement after multiple transmission, then a reset frame is
@@ -81,21 +78,7 @@ public class AmsSerialResetFrame implements ByteReadable {
this.receiverAddress = receiverAddress;
this.fragmentNumber = FragmentNumber.of((byte) 0);
this.userDataLength = UserDataLength.of((byte) 0);
- MessageDigest messageDigest;
- try {
- messageDigest = MessageDigest.getInstance("CRC-16");
- } catch (NoSuchAlgorithmException e) {
- throw new PlcRuntimeException(e);
- }
- messageDigest.update(magicCookie.getBytes());
- messageDigest.update(transmitterAddress.getBytes());
- messageDigest.update(receiverAddress.getBytes());
- messageDigest.update(fragmentNumber.getBytes());
- byte[] digest = messageDigest.digest(userDataLength.getBytes());
- if (digest.length > 2) {
- throw new PlcRuntimeException("Digest length too great " + digest.length);
- }
- this.crc = CRC.of(digest[0], digest[1]);
+ this.crc = CRC.of(DigestUtil.calculateCrc16(() -> buildByteBuff(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength)));
}
public static AmsSerialResetFrame of(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, CRC crc) {
--
To stop receiving notification emails like this one, please contact
sruehl@apache.org.