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
|
|
|
}
|