can-log-tools/src/main/java/com/rusefi/can/CANPacket.java

52 lines
1.2 KiB
Java
Raw Normal View History

2022-02-02 16:48:51 -08:00
package com.rusefi.can;
2022-02-14 21:45:27 -08:00
import java.util.Arrays;
import static com.rusefi.can.Utils.bytesToHex;
import static com.rusefi.can.Utils.bytesToHexWithSpaces;
2022-02-02 16:48:51 -08:00
public class CANPacket {
private final double timeStamp;
private final int id;
private final byte[] data;
public CANPacket(double timeStamp, int id, byte[] data) {
this.timeStamp = timeStamp;
this.id = id;
this.data = data;
}
2022-02-02 21:03:56 -08:00
public int getTwoBytes(int index) {
return getUnsigned(index + 1) * 256 + getUnsigned(index);
}
2022-02-02 16:48:51 -08:00
public double getTimeStamp() {
return timeStamp;
}
public int getId() {
return id;
}
public byte[] getData() {
return data;
}
2022-02-02 21:03:56 -08:00
public int getUnsigned(int i) {
return Byte.toUnsignedInt(data[i]);
}
2022-02-14 21:45:27 -08:00
public void assertThat(String msg, PackerAssertion assertion) {
if (!assertion.test(this))
throw new IllegalStateException("Not " + msg + " " + bytesToHexWithSpaces(data));
}
public int getUnsignedInt(int index) {
return Byte.toUnsignedInt(data[index]);
}
public interface PackerAssertion {
boolean test(CANPacket packet);
}
2022-02-02 16:48:51 -08:00
}