From 1b18eff3dbe5f4ecd8255ea97d9d886ac6f4a60a Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Fri, 21 Apr 2017 17:36:18 +1200 Subject: [PATCH] Added CRC to Encoder - Added CRC to Message Encoder #story[778] --- .../seng302/Networking/BinaryMesageEncoder.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/seng302/Networking/BinaryMesageEncoder.java b/src/main/java/seng302/Networking/BinaryMesageEncoder.java index bed18590..ce688279 100644 --- a/src/main/java/seng302/Networking/BinaryMesageEncoder.java +++ b/src/main/java/seng302/Networking/BinaryMesageEncoder.java @@ -1,8 +1,10 @@ package seng302.Networking; + import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Arrays; +import java.util.zip.CRC32; /** * Created by hba56 on 21/04/17. @@ -11,7 +13,7 @@ public class BinaryMesageEncoder { private byte[] fullMessage; private byte[] header; private byte[] message; - private byte[] crc; + //private byte[] crc; private byte headerSync1 = (byte)0x47; private byte headerSync2 = (byte)0x83; @@ -46,8 +48,15 @@ public class BinaryMesageEncoder { tempMessageByteBuffer.put(this.header); tempMessageByteBuffer.put(this.message); - //todo fix crc, currently just some int - tempMessageByteBuffer.put(intToBytes(1)); + CRC32 crc = new CRC32(); + crc.reset(); + byte[] messageAndHeader = new byte[this.header.length + this.message.length]; + System.arraycopy(this.header, 0, messageAndHeader, 0, this.header.length); + System.arraycopy(this.message, 0, messageAndHeader, this.header.length, this.message.length); + crc.update(messageAndHeader); + //System.out.println(Arrays.toString(messageAndHeader)); + + tempMessageByteBuffer.put(intToBytes((int) crc.getValue())); this.fullMessage = tempMessageByteBuffer.array();