RLPark 1.0.0
Reinforcement Learning Framework in Java

ChecksumNode.java

Go to the documentation of this file.
00001 package rlpark.plugin.irobot.internal.descriptors;
00002 
00003 import java.util.List;
00004 
00005 
00006 public class ChecksumNode implements SerialLinkNode {
00007   private final List<SerialLinkNode> checksumeds;
00008   private int checksum = 0;
00009 
00010   public ChecksumNode(List<SerialLinkNode> serialLinkNodes) {
00011     checksumeds = serialLinkNodes;
00012   }
00013 
00014   @Override
00015   public void start() {
00016   }
00017 
00018   @Override
00019   public void step(Byte b) {
00020     checksum = 0x00ff & b;
00021   }
00022 
00023   @Override
00024   public boolean isDone() {
00025     return true;
00026   }
00027 
00028   public boolean isPacketValid() {
00029     int sum = checksum;
00030     for (SerialLinkNode checksumed : checksumeds)
00031       sum += checksumed.sum();
00032     if (sum % 256 != 0)
00033       System.err.println(String.format("Warning: checksum error (%d->%d)", sum, sum % 256));
00034     return sum % 256 == 0;
00035   }
00036 
00037   public void reset() {
00038     checksum = (byte) 1;
00039   }
00040 
00041   public static int sum(byte[] data) {
00042     int result = 0;
00043     for (byte b : data)
00044       result += b & 0x00ff;
00045     return result;
00046   }
00047 
00048   @Override
00049   public int sum() {
00050     return checksum;
00051   }
00052 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark