Packet.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package chProtocol;
  2. import common.Payload;
  3. public class Packet {
  4. public static final byte MESSAGE_STX = (byte) 0xFE;
  5. public final int len;
  6. public int type;
  7. public Payload payload;
  8. public int fcs;
  9. public Packet(int payloadLength) {
  10. len = payloadLength;
  11. payload = new Payload(payloadLength);
  12. }
  13. public boolean payloadIsFilled() {
  14. return payload.size() >= len;
  15. }
  16. public byte generateCRC() {
  17. byte result = (byte)type;
  18. payload.resetIndex();
  19. final int payloadSize = payload.size();
  20. for (int i = 0; i < payloadSize; i++) {
  21. result += payload.getByte();
  22. }
  23. fcs = result;
  24. return result;
  25. }
  26. public void toBytes(byte[] bytes) {
  27. bytes[0] = (byte) 0xfe;
  28. bytes[1] = (byte) (len + 1);
  29. bytes[2] = (byte) type;
  30. payload.resetIndex();
  31. final int payloadSize = payload.size();
  32. for (int i = 0; i < payloadSize; i++) {
  33. bytes[i + 3] = payload.getByte();
  34. }
  35. bytes[payloadSize + 3] = (byte) fcs;
  36. }
  37. }