UartBus source documentation
ParsedUartBusPacket.java
1 package eu.javaexperience.electronic.uartbus.rpc.client;
2 
3 import java.util.Arrays;
4 
7 
8 public class ParsedUartBusPacket
9 {
10  public final byte[] rawPacket;
11  public final int from;
12  public final int to;
13  public final byte[] payload;
14 
15  protected Byte crc8;
16  protected Byte validCrc8;
17 
18  /**
19  * payload without the crc8
20  * */
21  public ParsedUartBusPacket(byte[] data)
22  {
23  this.rawPacket = data;
24 
25  int[] read = new int[1];
26  int ep = 0;
27  this.to = UartbusTools.unpackValue(true, data, ep, read).intValue();
28  ep += read[0];
29  this.from = UartbusTools.unpackValue(true, data, ep, read).intValue();
30  ep += read[0];
31 
32  payload = Arrays.copyOfRange(data, ep, data.length);
33  }
34 
35  public static ParsedUartBusPacket fromRawPacketWithCrc(byte[] data)
36  {
37  byte[] raw = Arrays.copyOf(data, data.length-1);
39  ret.setCrc8(data[data.length-1]);
40 
41  return ret;
42  }
43 
44  public Byte getCrc8()
45  {
46  return crc8;
47  }
48 
49  public void setCrc8(Byte b)
50  {
51  this.crc8 = b;
52  }
53 
54  public PacketReader readPayload()
55  {
56  return new PacketReader(payload);
57  }
58 
59  public byte getPacketValidCrc8Value()
60  {
61  if(null == validCrc8)
62  {
63  validCrc8 = UartbusTools.crc8(rawPacket);
64  }
65  return validCrc8;
66  }
67 
68  public boolean isValid()
69  {
70  if(null == crc8)
71  {
72  return true;
73  }
74 
75  return getPacketValidCrc8Value() == crc8;
76  }
77 
78  public String toShortUserText()
79  {
80  StringBuilder sb = new StringBuilder();
81 
82  sb.append("From: ");
83  sb.append(from);
84  sb.append(", To: ");
85  sb.append(to);
86  sb.append(", payload: ");
87  sb.append(UartbusTools.formatColonData(payload));
88  if(null != crc8)
89  {
90  sb.append(", crc8: ");
91  sb.append(crc8 & 0xff);
92 
93  if(!isValid())
94  {
95  sb.append(" != ");
96  sb.append(validCrc8 & 0xff);
97  }
98  }
99  return sb.toString();
100  }
101 }